@needle-tools/engine 5.1.0-next.1780579670.dramatic-pierogi.b8fa941 → 5.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/CHANGELOG.md +119 -0
  2. package/components.needle.json +1 -1
  3. package/dist/gltf-progressive-BGQ-cjly.umd.cjs +10 -0
  4. package/dist/gltf-progressive-BvQHrERj.min.js +10 -0
  5. package/dist/{gltf-progressive-CH7aqHHr.js → gltf-progressive-CtYnVfLc.js} +420 -351
  6. package/dist/{materialx-B85WjP7E.min.js → materialx-B5gKeM65.min.js} +1 -1
  7. package/dist/{materialx-B47Bz-xs.umd.cjs → materialx-CFRcCYWy.umd.cjs} +1 -1
  8. package/dist/{materialx-jkHmVPez.js → materialx-DqGmteNO.js} +1 -1
  9. package/dist/{needle-engine.bundle-BSPk6RkD.min.js → needle-engine.bundle-BUT4ua7U.min.js} +162 -150
  10. package/dist/{needle-engine.bundle-DCPHDPAd.umd.cjs → needle-engine.bundle-Cb39lTJn.umd.cjs} +158 -146
  11. package/dist/{needle-engine.bundle-WQeWxmZD.js → needle-engine.bundle-Dv-p5m4z.js} +6956 -6782
  12. package/dist/needle-engine.d.ts +111 -43
  13. package/dist/needle-engine.js +611 -609
  14. package/dist/needle-engine.min.js +1 -1
  15. package/dist/needle-engine.umd.cjs +1 -1
  16. package/dist/three.js +3 -0
  17. package/dist/three.min.js +22 -22
  18. package/dist/three.umd.cjs +24 -24
  19. package/dist/{vendor-BQ2Vuntm.min.js → vendor-2--bD1c9.min.js} +19 -19
  20. package/dist/{vendor-BslSKZPo.js → vendor-BNtcIZkv.js} +1141 -1138
  21. package/dist/{vendor-1UvpPPSB.umd.cjs → vendor-vbe9sv1t.umd.cjs} +20 -20
  22. package/lib/engine/api.d.ts +1 -1
  23. package/lib/engine/api.js +1 -1
  24. package/lib/engine/api.js.map +1 -1
  25. package/lib/engine/engine_context.js +16 -3
  26. package/lib/engine/engine_context.js.map +1 -1
  27. package/lib/engine/engine_init.js +2 -2
  28. package/lib/engine/engine_init.js.map +1 -1
  29. package/lib/engine/engine_license.d.ts +7 -7
  30. package/lib/engine/engine_license.js +72 -72
  31. package/lib/engine/engine_license.js.map +1 -1
  32. package/lib/engine/engine_networking_blob.js +3 -3
  33. package/lib/engine/engine_networking_blob.js.map +1 -1
  34. package/lib/engine/engine_networking_peer.js +19 -13
  35. package/lib/engine/engine_networking_peer.js.map +1 -1
  36. package/lib/engine/engine_utils_qrcode.js +2 -2
  37. package/lib/engine/engine_utils_qrcode.js.map +1 -1
  38. package/lib/engine/postprocessing/postprocessing.d.ts +2 -1
  39. package/lib/engine/postprocessing/postprocessing.js +3 -2
  40. package/lib/engine/postprocessing/postprocessing.js.map +1 -1
  41. package/lib/engine/webcomponents/WebXRButtons.js +5 -6
  42. package/lib/engine/webcomponents/WebXRButtons.js.map +1 -1
  43. package/lib/engine/webcomponents/needle menu/needle-menu-spatial.js +2 -2
  44. package/lib/engine/webcomponents/needle menu/needle-menu-spatial.js.map +1 -1
  45. package/lib/engine/webcomponents/needle menu/needle-menu.d.ts +2 -2
  46. package/lib/engine/webcomponents/needle menu/needle-menu.js +9 -9
  47. package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
  48. package/lib/engine/webcomponents/needle-engine.js +2 -2
  49. package/lib/engine/webcomponents/needle-engine.js.map +1 -1
  50. package/lib/engine/webcomponents/needle-engine.loading.js +2 -2
  51. package/lib/engine/webcomponents/needle-engine.loading.js.map +1 -1
  52. package/lib/engine/xr/NeedleXRSession.d.ts +30 -0
  53. package/lib/engine/xr/NeedleXRSession.js +121 -17
  54. package/lib/engine/xr/NeedleXRSession.js.map +1 -1
  55. package/lib/engine/xr/TempXRContext.js +2 -2
  56. package/lib/engine/xr/TempXRContext.js.map +1 -1
  57. package/lib/engine/xr/init.js +2 -3
  58. package/lib/engine/xr/init.js.map +1 -1
  59. package/lib/engine-components/Component.js +14 -1
  60. package/lib/engine-components/Component.js.map +1 -1
  61. package/lib/engine-components/ContactShadows.d.ts +7 -2
  62. package/lib/engine-components/ContactShadows.js +65 -45
  63. package/lib/engine-components/ContactShadows.js.map +1 -1
  64. package/lib/engine-components/GroundProjection.d.ts +6 -0
  65. package/lib/engine-components/GroundProjection.js +69 -7
  66. package/lib/engine-components/GroundProjection.js.map +1 -1
  67. package/lib/engine-components/NeedleMenu.d.ts +1 -1
  68. package/lib/engine-components/NeedleMenu.js +5 -2
  69. package/lib/engine-components/NeedleMenu.js.map +1 -1
  70. package/lib/engine-components/SceneSwitcher.d.ts +2 -0
  71. package/lib/engine-components/SceneSwitcher.js +26 -14
  72. package/lib/engine-components/SceneSwitcher.js.map +1 -1
  73. package/lib/engine-components/SeeThrough.d.ts +39 -0
  74. package/lib/engine-components/SeeThrough.js +69 -1
  75. package/lib/engine-components/SeeThrough.js.map +1 -1
  76. package/lib/engine-components/Skybox.js +9 -0
  77. package/lib/engine-components/Skybox.js.map +1 -1
  78. package/lib/engine-components/api.d.ts +1 -0
  79. package/lib/engine-components/api.js +1 -0
  80. package/lib/engine-components/api.js.map +1 -1
  81. package/lib/engine-components/export/usdz/USDZExporter.js +4 -4
  82. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.js +9 -5
  83. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.js.map +1 -1
  84. package/lib/engine-components/particlesystem/ParticleSystem.js +4 -0
  85. package/lib/engine-components/particlesystem/ParticleSystem.js.map +1 -1
  86. package/lib/engine-components/postprocessing/Volume.d.ts +1 -9
  87. package/lib/engine-components/postprocessing/Volume.js +2 -14
  88. package/lib/engine-components/postprocessing/Volume.js.map +1 -1
  89. package/lib/engine-components/webxr/WebXR.js +25 -14
  90. package/lib/engine-components/webxr/WebXR.js.map +1 -1
  91. package/lib/engine-components/webxr/WebXRImageTracking.js +3 -0
  92. package/lib/engine-components/webxr/WebXRImageTracking.js.map +1 -1
  93. package/package.json +4 -4
  94. package/plugins/common/license.js +4 -4
  95. package/plugins/types/userconfig.d.ts +10 -0
  96. package/plugins/vite/build-pipeline.d.ts +19 -0
  97. package/plugins/vite/build-pipeline.js +67 -5
  98. package/plugins/vite/license.js +4 -4
  99. package/src/engine/api.ts +1 -1
  100. package/src/engine/engine_context.ts +15 -2
  101. package/src/engine/engine_gameobject.ts +1 -1
  102. package/src/engine/engine_init.ts +2 -2
  103. package/src/engine/engine_license.ts +69 -69
  104. package/src/engine/engine_networking_blob.ts +3 -3
  105. package/src/engine/engine_networking_peer.ts +12 -13
  106. package/src/engine/engine_utils_qrcode.ts +2 -2
  107. package/src/engine/postprocessing/postprocessing.ts +3 -2
  108. package/src/engine/webcomponents/WebXRButtons.ts +5 -6
  109. package/src/engine/webcomponents/needle menu/needle-menu-spatial.ts +2 -2
  110. package/src/engine/webcomponents/needle menu/needle-menu.ts +10 -10
  111. package/src/engine/webcomponents/needle-engine.loading.ts +6 -6
  112. package/src/engine/webcomponents/needle-engine.ts +2 -2
  113. package/src/engine/xr/NeedleXRSession.ts +124 -20
  114. package/src/engine/xr/TempXRContext.ts +2 -2
  115. package/src/engine/xr/init.ts +2 -3
  116. package/src/engine-components/Component.ts +13 -1
  117. package/src/engine-components/ContactShadows.ts +75 -49
  118. package/src/engine-components/GroundProjection.ts +71 -7
  119. package/src/engine-components/NeedleMenu.ts +6 -3
  120. package/src/engine-components/SceneSwitcher.ts +23 -13
  121. package/src/engine-components/SeeThrough.ts +75 -1
  122. package/src/engine-components/Skybox.ts +8 -0
  123. package/src/engine-components/api.ts +1 -0
  124. package/src/engine-components/export/usdz/USDZExporter.ts +4 -4
  125. package/src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts +12 -5
  126. package/src/engine-components/particlesystem/ParticleSystem.ts +4 -0
  127. package/src/engine-components/postprocessing/Volume.ts +2 -13
  128. package/src/engine-components/webxr/WebXR.ts +23 -15
  129. package/src/engine-components/webxr/WebXRImageTracking.ts +1 -0
  130. package/dist/gltf-progressive-9tlS5iCx.umd.cjs +0 -10
  131. package/dist/gltf-progressive-CVg80COO.min.js +0 -10
@@ -1,4 +1,4 @@
1
- "use strict";const A=require("./three.umd.cjs"),ml=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function yl(r){return typeof r=="string"&&ml.test(r)}const Le=[];for(let r=0;r<256;++r)Le.push((r+256).toString(16).slice(1));function gl(r,e=0){return Le[r[e+0]]+Le[r[e+1]]+Le[r[e+2]]+Le[r[e+3]]+"-"+Le[r[e+4]]+Le[r[e+5]]+"-"+Le[r[e+6]]+Le[r[e+7]]+"-"+Le[r[e+8]]+Le[r[e+9]]+"-"+Le[r[e+10]]+Le[r[e+11]]+Le[r[e+12]]+Le[r[e+13]]+Le[r[e+14]]+Le[r[e+15]]}function vl(r){if(!yl(r))throw TypeError("Invalid UUID");let e;const t=new Uint8Array(16);return t[0]=(e=parseInt(r.slice(0,8),16))>>>24,t[1]=e>>>16&255,t[2]=e>>>8&255,t[3]=e&255,t[4]=(e=parseInt(r.slice(9,13),16))>>>8,t[5]=e&255,t[6]=(e=parseInt(r.slice(14,18),16))>>>8,t[7]=e&255,t[8]=(e=parseInt(r.slice(19,23),16))>>>8,t[9]=e&255,t[10]=(e=parseInt(r.slice(24,36),16))/1099511627776&255,t[11]=e/4294967296&255,t[12]=e>>>24&255,t[13]=e>>>16&255,t[14]=e>>>8&255,t[15]=e&255,t}function Sl(r){r=unescape(encodeURIComponent(r));const e=[];for(let t=0;t<r.length;++t)e.push(r.charCodeAt(t));return e}const xl="6ba7b810-9dad-11d1-80b4-00c04fd430c8",_l="6ba7b811-9dad-11d1-80b4-00c04fd430c8";function bl(r,e,t){function n(i,s,a,o){var c;if(typeof i=="string"&&(i=Sl(i)),typeof s=="string"&&(s=vl(s)),((c=s)===null||c===void 0?void 0:c.length)!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let l=new Uint8Array(16+i.length);if(l.set(s),l.set(i,s.length),l=t(l),l[6]=l[6]&15|e,l[8]=l[8]&63|128,a){o=o||0;for(let h=0;h<16;++h)a[o+h]=l[h];return a}return gl(l)}try{n.name=r}catch{}return n.DNS=xl,n.URL=_l,n}function Tl(r,e,t,n){switch(r){case 0:return e&t^~e&n;case 1:return e^t^n;case 2:return e&t^e&n^t&n;case 3:return e^t^n}}function os(r,e){return r<<e|r>>>32-e}function Ml(r){const e=[1518500249,1859775393,2400959708,3395469782],t=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof r=="string"){const a=unescape(encodeURIComponent(r));r=[];for(let o=0;o<a.length;++o)r.push(a.charCodeAt(o))}else Array.isArray(r)||(r=Array.prototype.slice.call(r));r.push(128);const n=r.length/4+2,i=Math.ceil(n/16),s=new Array(i);for(let a=0;a<i;++a){const o=new Uint32Array(16);for(let c=0;c<16;++c)o[c]=r[a*64+c*4]<<24|r[a*64+c*4+1]<<16|r[a*64+c*4+2]<<8|r[a*64+c*4+3];s[a]=o}s[i-1][14]=(r.length-1)*8/Math.pow(2,32),s[i-1][14]=Math.floor(s[i-1][14]),s[i-1][15]=(r.length-1)*8&4294967295;for(let a=0;a<i;++a){const o=new Uint32Array(80);for(let p=0;p<16;++p)o[p]=s[a][p];for(let p=16;p<80;++p)o[p]=os(o[p-3]^o[p-8]^o[p-14]^o[p-16],1);let c=t[0],l=t[1],h=t[2],d=t[3],m=t[4];for(let p=0;p<80;++p){const b=Math.floor(p/20),T=os(c,5)+Tl(b,l,h,d)+m+e[b]+o[p]>>>0;m=d,d=h,h=os(l,30)>>>0,l=c,c=T}t[0]=t[0]+c>>>0,t[1]=t[1]+l>>>0,t[2]=t[2]+h>>>0,t[3]=t[3]+d>>>0,t[4]=t[4]+m>>>0}return[t[0]>>24&255,t[0]>>16&255,t[0]>>8&255,t[0]&255,t[1]>>24&255,t[1]>>16&255,t[1]>>8&255,t[1]&255,t[2]>>24&255,t[2]>>16&255,t[2]>>8&255,t[2]&255,t[3]>>24&255,t[3]>>16&255,t[3]>>8&255,t[3]&255,t[4]>>24&255,t[4]>>16&255,t[4]>>8&255,t[4]&255]}const Cl=bl("v5",80,Ml),as=2,zt=4,Wt=4,Ga=4,en=new Int32Array(2),Fo=new Float32Array(en.buffer),Vo=new Float64Array(en.buffer),Ki=new Uint16Array(new Uint8Array([1,0]).buffer)[0]===1;class Ht{constructor(e,t){this.low=e|0,this.high=t|0}static create(e,t){return e==0&&t==0?Ht.ZERO:new Ht(e,t)}toFloat64(){return(this.low>>>0)+this.high*4294967296}equals(e){return this.low==e.low&&this.high==e.high}}Ht.ZERO=new Ht(0,0);var zs;(function(r){r[r.UTF8_BYTES=1]="UTF8_BYTES",r[r.UTF16_STRING=2]="UTF16_STRING"})(zs||(zs={}));class li{constructor(e){this.bytes_=e,this.position_=0}static allocate(e){return new li(new Uint8Array(e))}clear(){this.position_=0}bytes(){return this.bytes_}position(){return this.position_}setPosition(e){this.position_=e}capacity(){return this.bytes_.length}readInt8(e){return this.readUint8(e)<<24>>24}readUint8(e){return this.bytes_[e]}readInt16(e){return this.readUint16(e)<<16>>16}readUint16(e){return this.bytes_[e]|this.bytes_[e+1]<<8}readInt32(e){return this.bytes_[e]|this.bytes_[e+1]<<8|this.bytes_[e+2]<<16|this.bytes_[e+3]<<24}readUint32(e){return this.readInt32(e)>>>0}readInt64(e){return new Ht(this.readInt32(e),this.readInt32(e+4))}readUint64(e){return new Ht(this.readUint32(e),this.readUint32(e+4))}readFloat32(e){return en[0]=this.readInt32(e),Fo[0]}readFloat64(e){return en[Ki?0:1]=this.readInt32(e),en[Ki?1:0]=this.readInt32(e+4),Vo[0]}writeInt8(e,t){this.bytes_[e]=t}writeUint8(e,t){this.bytes_[e]=t}writeInt16(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8}writeUint16(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8}writeInt32(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8,this.bytes_[e+2]=t>>16,this.bytes_[e+3]=t>>24}writeUint32(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8,this.bytes_[e+2]=t>>16,this.bytes_[e+3]=t>>24}writeInt64(e,t){this.writeInt32(e,t.low),this.writeInt32(e+4,t.high)}writeUint64(e,t){this.writeUint32(e,t.low),this.writeUint32(e+4,t.high)}writeFloat32(e,t){Fo[0]=t,this.writeInt32(e,en[0])}writeFloat64(e,t){Vo[0]=t,this.writeInt32(e,en[Ki?0:1]),this.writeInt32(e+4,en[Ki?1:0])}getBufferIdentifier(){if(this.bytes_.length<this.position_+zt+Wt)throw new Error("FlatBuffers: ByteBuffer is too short to contain an identifier.");let e="";for(let t=0;t<Wt;t++)e+=String.fromCharCode(this.readInt8(this.position_+zt+t));return e}__offset(e,t){const n=e-this.readInt32(e);return t<this.readInt16(n)?this.readInt16(n+t):0}__union(e,t){return e.bb_pos=t+this.readInt32(t),e.bb=this,e}__string(e,t){e+=this.readInt32(e);const n=this.readInt32(e);let i="",s=0;if(e+=zt,t===zs.UTF8_BYTES)return this.bytes_.subarray(e,e+n);for(;s<n;){let a;const o=this.readUint8(e+s++);if(o<192)a=o;else{const c=this.readUint8(e+s++);if(o<224)a=(o&31)<<6|c&63;else{const l=this.readUint8(e+s++);if(o<240)a=(o&15)<<12|(c&63)<<6|l&63;else{const h=this.readUint8(e+s++);a=(o&7)<<18|(c&63)<<12|(l&63)<<6|h&63}}}a<65536?i+=String.fromCharCode(a):(a-=65536,i+=String.fromCharCode((a>>10)+55296,(a&1023)+56320))}return i}__union_with_string(e,t){return typeof e=="string"?this.__string(t):this.__union(e,t)}__indirect(e){return e+this.readInt32(e)}__vector(e){return e+this.readInt32(e)+zt}__vector_len(e){return this.readInt32(e+this.readInt32(e))}__has_identifier(e){if(e.length!=Wt)throw new Error("FlatBuffers: file identifier must be length "+Wt);for(let t=0;t<Wt;t++)if(e.charCodeAt(t)!=this.readInt8(this.position()+zt+t))return!1;return!0}createLong(e,t){return Ht.create(e,t)}createScalarList(e,t){const n=[];for(let i=0;i<t;++i)e(i)!==null&&n.push(e(i));return n}createObjList(e,t){const n=[];for(let i=0;i<t;++i){const s=e(i);s!==null&&n.push(s.unpack())}return n}}class no{constructor(e){this.minalign=1,this.vtable=null,this.vtable_in_use=0,this.isNested=!1,this.object_start=0,this.vtables=[],this.vector_num_elems=0,this.force_defaults=!1,this.string_maps=null;let t;e?t=e:t=1024,this.bb=li.allocate(t),this.space=t}clear(){this.bb.clear(),this.space=this.bb.capacity(),this.minalign=1,this.vtable=null,this.vtable_in_use=0,this.isNested=!1,this.object_start=0,this.vtables=[],this.vector_num_elems=0,this.force_defaults=!1,this.string_maps=null}forceDefaults(e){this.force_defaults=e}dataBuffer(){return this.bb}asUint8Array(){return this.bb.bytes().subarray(this.bb.position(),this.bb.position()+this.offset())}prep(e,t){e>this.minalign&&(this.minalign=e);const n=~(this.bb.capacity()-this.space+t)+1&e-1;for(;this.space<n+e+t;){const i=this.bb.capacity();this.bb=no.growByteBuffer(this.bb),this.space+=this.bb.capacity()-i}this.pad(n)}pad(e){for(let t=0;t<e;t++)this.bb.writeInt8(--this.space,0)}writeInt8(e){this.bb.writeInt8(this.space-=1,e)}writeInt16(e){this.bb.writeInt16(this.space-=2,e)}writeInt32(e){this.bb.writeInt32(this.space-=4,e)}writeInt64(e){this.bb.writeInt64(this.space-=8,e)}writeFloat32(e){this.bb.writeFloat32(this.space-=4,e)}writeFloat64(e){this.bb.writeFloat64(this.space-=8,e)}addInt8(e){this.prep(1,0),this.writeInt8(e)}addInt16(e){this.prep(2,0),this.writeInt16(e)}addInt32(e){this.prep(4,0),this.writeInt32(e)}addInt64(e){this.prep(8,0),this.writeInt64(e)}addFloat32(e){this.prep(4,0),this.writeFloat32(e)}addFloat64(e){this.prep(8,0),this.writeFloat64(e)}addFieldInt8(e,t,n){(this.force_defaults||t!=n)&&(this.addInt8(t),this.slot(e))}addFieldInt16(e,t,n){(this.force_defaults||t!=n)&&(this.addInt16(t),this.slot(e))}addFieldInt32(e,t,n){(this.force_defaults||t!=n)&&(this.addInt32(t),this.slot(e))}addFieldInt64(e,t,n){(this.force_defaults||!t.equals(n))&&(this.addInt64(t),this.slot(e))}addFieldFloat32(e,t,n){(this.force_defaults||t!=n)&&(this.addFloat32(t),this.slot(e))}addFieldFloat64(e,t,n){(this.force_defaults||t!=n)&&(this.addFloat64(t),this.slot(e))}addFieldOffset(e,t,n){(this.force_defaults||t!=n)&&(this.addOffset(t),this.slot(e))}addFieldStruct(e,t,n){t!=n&&(this.nested(t),this.slot(e))}nested(e){if(e!=this.offset())throw new Error("FlatBuffers: struct must be serialized inline.")}notNested(){if(this.isNested)throw new Error("FlatBuffers: object serialization must not be nested.")}slot(e){this.vtable!==null&&(this.vtable[e]=this.offset())}offset(){return this.bb.capacity()-this.space}static growByteBuffer(e){const t=e.capacity();if(t&3221225472)throw new Error("FlatBuffers: cannot grow buffer beyond 2 gigabytes.");const n=t<<1,i=li.allocate(n);return i.setPosition(n-t),i.bytes().set(e.bytes(),n-t),i}addOffset(e){this.prep(zt,0),this.writeInt32(this.offset()-e+zt)}startObject(e){this.notNested(),this.vtable==null&&(this.vtable=[]),this.vtable_in_use=e;for(let t=0;t<e;t++)this.vtable[t]=0;this.isNested=!0,this.object_start=this.offset()}endObject(){if(this.vtable==null||!this.isNested)throw new Error("FlatBuffers: endObject called without startObject");this.addInt32(0);const e=this.offset();let t=this.vtable_in_use-1;for(;t>=0&&this.vtable[t]==0;t--);const n=t+1;for(;t>=0;t--)this.addInt16(this.vtable[t]!=0?e-this.vtable[t]:0);const i=2;this.addInt16(e-this.object_start);const s=(n+i)*as;this.addInt16(s);let a=0;const o=this.space;e:for(t=0;t<this.vtables.length;t++){const c=this.bb.capacity()-this.vtables[t];if(s==this.bb.readInt16(c)){for(let l=as;l<s;l+=as)if(this.bb.readInt16(o+l)!=this.bb.readInt16(c+l))continue e;a=this.vtables[t];break}}return a?(this.space=this.bb.capacity()-e,this.bb.writeInt32(this.space,a-e)):(this.vtables.push(this.offset()),this.bb.writeInt32(this.bb.capacity()-e,this.offset()-e)),this.isNested=!1,e}finish(e,t,n){const i=n?Ga:0;if(t){const s=t;if(this.prep(this.minalign,zt+Wt+i),s.length!=Wt)throw new Error("FlatBuffers: file identifier must be length "+Wt);for(let a=Wt-1;a>=0;a--)this.writeInt8(s.charCodeAt(a))}this.prep(this.minalign,zt+i),this.addOffset(e),i&&this.addInt32(this.bb.capacity()-this.space),this.bb.setPosition(this.space)}finishSizePrefixed(e,t){this.finish(e,t,!0)}requiredField(e,t){const n=this.bb.capacity()-e,i=n-this.bb.readInt32(n);if(!(this.bb.readInt16(i+t)!=0))throw new Error("FlatBuffers: field "+t+" must be set")}startVector(e,t,n){this.notNested(),this.vector_num_elems=t,this.prep(zt,e*t),this.prep(n,e*t)}endVector(){return this.writeInt32(this.vector_num_elems),this.offset()}createSharedString(e){if(!e)return 0;if(this.string_maps||(this.string_maps=new Map),this.string_maps.has(e))return this.string_maps.get(e);const t=this.createString(e);return this.string_maps.set(e,t),t}createString(e){if(!e)return 0;let t;if(e instanceof Uint8Array)t=e;else{t=[];let n=0;for(;n<e.length;){let i;const s=e.charCodeAt(n++);if(s<55296||s>=56320)i=s;else{const a=e.charCodeAt(n++);i=(s<<10)+a+-56613888}i<128?t.push(i):(i<2048?t.push(i>>6&31|192):(i<65536?t.push(i>>12&15|224):t.push(i>>18&7|240,i>>12&63|128),t.push(i>>6&63|128)),t.push(i&63|128))}}this.addInt8(0),this.startVector(1,t.length,1),this.bb.setPosition(this.space-=t.length);for(let n=0,i=this.space,s=this.bb.bytes();n<t.length;n++)s[i++]=t[n];return this.endVector()}createLong(e,t){return Ht.create(e,t)}createObjectOffset(e){return e===null?0:typeof e=="string"?this.createString(e):e.pack(this)}createObjectOffsetList(e){const t=[];for(let n=0;n<e.length;++n){const i=e[n];if(i!==null)t.push(this.createObjectOffset(i));else throw new Error("FlatBuffers: Argument for createObjectOffsetList cannot contain null.")}return t}createStructOffsetList(e,t){return t(this,e.length),this.createObjectOffsetList(e),this.endVector()}}const ze={ComponentState:Object.freeze({DEFAULT:"default",TOUCHED:"touched",PRESSED:"pressed"}),ComponentProperty:Object.freeze({BUTTON:"button",X_AXIS:"xAxis",Y_AXIS:"yAxis",STATE:"state"}),ButtonTouchThreshold:.05,AxisTouchThreshold:.1,VisualResponseProperty:Object.freeze({TRANSFORM:"transform",VISIBILITY:"visibility"})};async function Wa(r){const e=await fetch(r);if(e.ok)return e.json();throw new Error(e.statusText)}async function wl(r){return await Wa(`${r}/profilesList.json`)}async function Pl(r,e,t=null,n=!0){if(!r)throw new Error("No xrInputSource supplied");const i=await wl(e);let s;if(r.profiles.some(c=>{const l=i[c];return l&&(s={profileId:c,profilePath:`${e}/${l.path}`,deprecated:!!l.deprecated}),!!s}),!s){if(!t)throw new Error("No matching profile name found");const c=i[t];if(!c)throw new Error(`No matching profile name found and default profile "${t}" missing.`);s={profileId:t,profilePath:`${e}/${c.path}`,deprecated:!!c.deprecated}}const a=await Wa(s.profilePath);let o;if(n){let c;if(r.handedness==="any"?c=a.layouts[Object.keys(a.layouts)[0]]:c=a.layouts[r.handedness],!c)throw new Error(`No matching handedness, ${r.handedness}, in profile ${s.profileId}`);c.assetPath&&(o=s.profilePath.replace("profile.json",c.assetPath))}return{profile:a,assetPath:o}}const El={xAxis:0,yAxis:0,button:0,state:ze.ComponentState.DEFAULT};function kl(r=0,e=0){let t=r,n=e;if(Math.sqrt(r*r+e*e)>1){const a=Math.atan2(e,r);t=Math.cos(a),n=Math.sin(a)}return{normalizedXAxis:t*.5+.5,normalizedYAxis:n*.5+.5}}class Rl{constructor(e){this.componentProperty=e.componentProperty,this.states=e.states,this.valueNodeName=e.valueNodeName,this.valueNodeProperty=e.valueNodeProperty,this.valueNodeProperty===ze.VisualResponseProperty.TRANSFORM&&(this.minNodeName=e.minNodeName,this.maxNodeName=e.maxNodeName),this.value=0,this.updateFromComponent(El)}updateFromComponent({xAxis:e,yAxis:t,button:n,state:i}){const{normalizedXAxis:s,normalizedYAxis:a}=kl(e,t);switch(this.componentProperty){case ze.ComponentProperty.X_AXIS:this.value=this.states.includes(i)?s:.5;break;case ze.ComponentProperty.Y_AXIS:this.value=this.states.includes(i)?a:.5;break;case ze.ComponentProperty.BUTTON:this.value=this.states.includes(i)?n:0;break;case ze.ComponentProperty.STATE:this.valueNodeProperty===ze.VisualResponseProperty.VISIBILITY?this.value=this.states.includes(i):this.value=this.states.includes(i)?1:0;break;default:throw new Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`)}}}class Al{constructor(e,t){if(!e||!t||!t.visualResponses||!t.gamepadIndices||Object.keys(t.gamepadIndices).length===0)throw new Error("Invalid arguments supplied");this.id=e,this.type=t.type,this.rootNodeName=t.rootNodeName,this.touchPointNodeName=t.touchPointNodeName,this.visualResponses={},Object.keys(t.visualResponses).forEach(n=>{const i=new Rl(t.visualResponses[n]);this.visualResponses[n]=i}),this.gamepadIndices=Object.assign({},t.gamepadIndices),this.values={state:ze.ComponentState.DEFAULT,button:this.gamepadIndices.button!==void 0?0:void 0,xAxis:this.gamepadIndices.xAxis!==void 0?0:void 0,yAxis:this.gamepadIndices.yAxis!==void 0?0:void 0}}get data(){return{id:this.id,...this.values}}updateFromGamepad(e){if(this.values.state=ze.ComponentState.DEFAULT,this.gamepadIndices.button!==void 0&&e.buttons.length>this.gamepadIndices.button){const t=e.buttons[this.gamepadIndices.button];this.values.button=t.value,this.values.button=this.values.button<0?0:this.values.button,this.values.button=this.values.button>1?1:this.values.button,t.pressed||this.values.button===1?this.values.state=ze.ComponentState.PRESSED:(t.touched||this.values.button>ze.ButtonTouchThreshold)&&(this.values.state=ze.ComponentState.TOUCHED)}this.gamepadIndices.xAxis!==void 0&&e.axes.length>this.gamepadIndices.xAxis&&(this.values.xAxis=e.axes[this.gamepadIndices.xAxis],this.values.xAxis=this.values.xAxis<-1?-1:this.values.xAxis,this.values.xAxis=this.values.xAxis>1?1:this.values.xAxis,this.values.state===ze.ComponentState.DEFAULT&&Math.abs(this.values.xAxis)>ze.AxisTouchThreshold&&(this.values.state=ze.ComponentState.TOUCHED)),this.gamepadIndices.yAxis!==void 0&&e.axes.length>this.gamepadIndices.yAxis&&(this.values.yAxis=e.axes[this.gamepadIndices.yAxis],this.values.yAxis=this.values.yAxis<-1?-1:this.values.yAxis,this.values.yAxis=this.values.yAxis>1?1:this.values.yAxis,this.values.state===ze.ComponentState.DEFAULT&&Math.abs(this.values.yAxis)>ze.AxisTouchThreshold&&(this.values.state=ze.ComponentState.TOUCHED)),Object.values(this.visualResponses).forEach(t=>{t.updateFromComponent(this.values)})}}class Ol{constructor(e,t,n){if(!e)throw new Error("No xrInputSource supplied");if(!t)throw new Error("No profile supplied");this.xrInputSource=e,this.assetUrl=n,this.id=t.profileId,this.layoutDescription=t.layouts[e.handedness],this.components={},Object.keys(this.layoutDescription.components).forEach(i=>{const s=this.layoutDescription.components[i];this.components[i]=new Al(i,s)}),this.updateFromGamepad()}get gripSpace(){return this.xrInputSource.gripSpace}get targetRaySpace(){return this.xrInputSource.targetRaySpace}get data(){const e=[];return Object.values(this.components).forEach(t=>{e.push(t.data)}),e}updateFromGamepad(){Object.values(this.components).forEach(e=>{e.updateFromGamepad(this.xrInputSource.gamepad)})}}const Ge=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];let Jo=1234567;const $a=Math.PI/180,Ha=180/Math.PI;function zl(){const r=Math.random()*4294967295|0,e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,n=Math.random()*4294967295|0;return(Ge[r&255]+Ge[r>>8&255]+Ge[r>>16&255]+Ge[r>>24&255]+"-"+Ge[e&255]+Ge[e>>8&255]+"-"+Ge[e>>16&15|64]+Ge[e>>24&255]+"-"+Ge[t&63|128]+Ge[t>>8&255]+"-"+Ge[t>>16&255]+Ge[t>>24&255]+Ge[n&255]+Ge[n>>8&255]+Ge[n>>16&255]+Ge[n>>24&255]).toLowerCase()}function Ot(r,e,t){return Math.max(e,Math.min(t,r))}function qa(r,e){return(r%e+e)%e}function Il(r,e,t,n,i){return n+(r-e)*(i-n)/(t-e)}function Bl(r,e,t){return r!==e?(t-r)/(e-r):0}function Xa(r,e,t){return(1-t)*r+t*e}function Nl(r,e,t,n){return Xa(r,e,1-Math.exp(-t*n))}function Ul(r,e=1){return e-Math.abs(qa(r,e*2)-e)}function Dl(r,e,t){return r<=e?0:r>=t?1:(r=(r-e)/(t-e),r*r*(3-2*r))}function Ll(r,e,t){return r<=e?0:r>=t?1:(r=(r-e)/(t-e),r*r*r*(r*(r*6-15)+10))}function Fl(r,e){return r+Math.floor(Math.random()*(e-r+1))}function Vl(r,e){return r+Math.random()*(e-r)}function Jl(r){return r*(.5-Math.random())}function jl(r){r!==void 0&&(Jo=r);let e=Jo+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function Gl(r){return r*$a}function Wl(r){return r*Ha}function $l(r){return(r&r-1)===0&&r!==0}function Hl(r){return Math.pow(2,Math.ceil(Math.log(r)/Math.LN2))}function ql(r){return Math.pow(2,Math.floor(Math.log(r)/Math.LN2))}function Xl(r,e,t,n,i){const s=Math.cos,a=Math.sin,o=s(t/2),c=a(t/2),l=s((e+n)/2),h=a((e+n)/2),d=s((e-n)/2),m=a((e-n)/2),p=s((n-e)/2),b=a((n-e)/2);switch(i){case"XYX":r.set(o*h,c*d,c*m,o*l);break;case"YZY":r.set(c*m,o*h,c*d,o*l);break;case"ZXZ":r.set(c*d,c*m,o*h,o*l);break;case"XZX":r.set(o*h,c*b,c*p,o*l);break;case"YXY":r.set(c*p,o*h,c*b,o*l);break;case"ZYZ":r.set(c*b,c*p,o*h,o*l);break;default:console.warn("../math.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+i)}}function Yl(r,e){switch(e.constructor){case Float32Array:return r;case Uint32Array:return r/4294967295;case Uint16Array:return r/65535;case Uint8Array:return r/255;case Int32Array:return Math.max(r/2147483647,-1);case Int16Array:return Math.max(r/32767,-1);case Int8Array:return Math.max(r/127,-1);default:throw new Error("Invalid component type.")}}function Zl(r,e){switch(e.constructor){case Float32Array:return r;case Uint32Array:return Math.round(r*4294967295);case Uint16Array:return Math.round(r*65535);case Uint8Array:return Math.round(r*255);case Int32Array:return Math.round(r*2147483647);case Int16Array:return Math.round(r*32767);case Int8Array:return Math.round(r*127);default:throw new Error("Invalid component type.")}}const Jn={DEG2RAD:$a,RAD2DEG:Ha,generateUUID:zl,clamp:Ot,euclideanModulo:qa,mapLinear:Il,inverseLerp:Bl,lerp:Xa,damp:Nl,pingpong:Ul,smoothstep:Dl,smootherstep:Ll,randInt:Fl,randFloat:Vl,randFloatSpread:Jl,seededRandom:jl,degToRad:Gl,radToDeg:Wl,isPowerOfTwo:$l,ceilPowerOfTwo:Hl,floorPowerOfTwo:ql,setQuaternionFromProperEuler:Xl,normalize:Zl,denormalize:Yl};class ie{constructor(e=0,t=0,n=0,i=1){this.isQuaternion=!0,this._x=e,this._y=t,this._z=n,this._w=i}static slerpFlat(e,t,n,i,s,a,o){let c=n[i+0],l=n[i+1],h=n[i+2],d=n[i+3];const m=s[a+0],p=s[a+1],b=s[a+2],T=s[a+3];if(o===0){e[t+0]=c,e[t+1]=l,e[t+2]=h,e[t+3]=d;return}if(o===1){e[t+0]=m,e[t+1]=p,e[t+2]=b,e[t+3]=T;return}if(d!==T||c!==m||l!==p||h!==b){let g=1-o;const v=c*m+l*p+h*b+d*T,x=v>=0?1:-1,_=1-v*v;if(_>Number.EPSILON){const C=Math.sqrt(_),P=Math.atan2(C,v*x);g=Math.sin(g*P)/C,o=Math.sin(o*P)/C}const M=o*x;if(c=c*g+m*M,l=l*g+p*M,h=h*g+b*M,d=d*g+T*M,g===1-o){const C=1/Math.sqrt(c*c+l*l+h*h+d*d);c*=C,l*=C,h*=C,d*=C}}e[t]=c,e[t+1]=l,e[t+2]=h,e[t+3]=d}static multiplyQuaternionsFlat(e,t,n,i,s,a){const o=n[i],c=n[i+1],l=n[i+2],h=n[i+3],d=s[a],m=s[a+1],p=s[a+2],b=s[a+3];return e[t]=o*b+h*d+c*p-l*m,e[t+1]=c*b+h*m+l*d-o*p,e[t+2]=l*b+h*p+o*m-c*d,e[t+3]=h*b-o*d-c*m-l*p,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,n,i){return this._x=e,this._y=t,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new ie(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t=!0){const n=e._x,i=e._y,s=e._z,a=e._order,o=Math.cos,c=Math.sin,l=o(n/2),h=o(i/2),d=o(s/2),m=c(n/2),p=c(i/2),b=c(s/2);switch(a){case"XYZ":this._x=m*h*d+l*p*b,this._y=l*p*d-m*h*b,this._z=l*h*b+m*p*d,this._w=l*h*d-m*p*b;break;case"YXZ":this._x=m*h*d+l*p*b,this._y=l*p*d-m*h*b,this._z=l*h*b-m*p*d,this._w=l*h*d+m*p*b;break;case"ZXY":this._x=m*h*d-l*p*b,this._y=l*p*d+m*h*b,this._z=l*h*b+m*p*d,this._w=l*h*d-m*p*b;break;case"ZYX":this._x=m*h*d-l*p*b,this._y=l*p*d+m*h*b,this._z=l*h*b-m*p*d,this._w=l*h*d+m*p*b;break;case"YZX":this._x=m*h*d+l*p*b,this._y=l*p*d+m*h*b,this._z=l*h*b-m*p*d,this._w=l*h*d-m*p*b;break;case"XZY":this._x=m*h*d-l*p*b,this._y=l*p*d-m*h*b,this._z=l*h*b+m*p*d,this._w=l*h*d+m*p*b;break;default:console.warn("../math.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const n=t/2,i=Math.sin(n);return this._x=e.x*i,this._y=e.y*i,this._z=e.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,n=t[0],i=t[4],s=t[8],a=t[1],o=t[5],c=t[9],l=t[2],h=t[6],d=t[10],m=n+o+d;if(m>0){const p=.5/Math.sqrt(m+1);this._w=.25/p,this._x=(h-c)*p,this._y=(s-l)*p,this._z=(a-i)*p}else if(n>o&&n>d){const p=2*Math.sqrt(1+n-o-d);this._w=(h-c)/p,this._x=.25*p,this._y=(i+a)/p,this._z=(s+l)/p}else if(o>d){const p=2*Math.sqrt(1+o-n-d);this._w=(s-l)/p,this._x=(i+a)/p,this._y=.25*p,this._z=(c+h)/p}else{const p=2*Math.sqrt(1+d-n-o);this._w=(a-i)/p,this._x=(s+l)/p,this._y=(c+h)/p,this._z=.25*p}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return n<Number.EPSILON?(n=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=n):(this._x=0,this._y=-e.z,this._z=e.y,this._w=n)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=n),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Ot(this.dot(e),-1,1)))}rotateTowards(e,t){const n=this.angleTo(e);if(n===0)return this;const i=Math.min(1,t/n);return this.slerp(e,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const n=e._x,i=e._y,s=e._z,a=e._w,o=t._x,c=t._y,l=t._z,h=t._w;return this._x=n*h+a*o+i*l-s*c,this._y=i*h+a*c+s*o-n*l,this._z=s*h+a*l+n*c-i*o,this._w=a*h-n*o-i*c-s*l,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);const n=this._x,i=this._y,s=this._z,a=this._w;let o=a*e._w+n*e._x+i*e._y+s*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=a,this._x=n,this._y=i,this._z=s,this;const c=1-o*o;if(c<=Number.EPSILON){const p=1-t;return this._w=p*a+t*this._w,this._x=p*n+t*this._x,this._y=p*i+t*this._y,this._z=p*s+t*this._z,this.normalize(),this}const l=Math.sqrt(c),h=Math.atan2(l,o),d=Math.sin((1-t)*h)/l,m=Math.sin(t*h)/l;return this._w=a*d+this._w*m,this._x=n*d+this._x*m,this._y=i*d+this._y*m,this._z=s*d+this._z*m,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){const e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),i=Math.sqrt(1-n),s=Math.sqrt(n);return this.set(i*Math.sin(e),i*Math.cos(e),s*Math.sin(t),s*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class G{constructor(e=0,t=0,n=0){this.isVector3=!0,G.prototype.isVector3=!0,this.x=e,this.y=t,this.z=n}set(e,t,n){return n===void 0&&(n=this.z),this.x=e,this.y=t,this.z=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new G(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(jo.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(jo.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,n=this.y,i=this.z,s=e.elements;return this.x=s[0]*t+s[3]*n+s[6]*i,this.y=s[1]*t+s[4]*n+s[7]*i,this.z=s[2]*t+s[5]*n+s[8]*i,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,n=this.y,i=this.z,s=e.elements,a=1/(s[3]*t+s[7]*n+s[11]*i+s[15]);return this.x=(s[0]*t+s[4]*n+s[8]*i+s[12])*a,this.y=(s[1]*t+s[5]*n+s[9]*i+s[13])*a,this.z=(s[2]*t+s[6]*n+s[10]*i+s[14])*a,this}applyQuaternion(e){const t=this.x,n=this.y,i=this.z,s=e.x,a=e.y,o=e.z,c=e.w,l=2*(a*i-o*n),h=2*(o*t-s*i),d=2*(s*n-a*t);return this.x=t+c*l+a*d-o*h,this.y=n+c*h+o*l-s*d,this.z=i+c*d+s*h-a*l,this}transformDirection(e){const t=this.x,n=this.y,i=this.z,s=e.elements;return this.x=s[0]*t+s[4]*n+s[8]*i,this.y=s[1]*t+s[5]*n+s[9]*i,this.z=s[2]*t+s[6]*n+s[10]*i,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const n=e.x,i=e.y,s=e.z,a=t.x,o=t.y,c=t.z;return this.x=i*c-s*o,this.y=s*a-n*c,this.z=n*o-i*a,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return cs.copy(this).projectOnVector(e),this.sub(cs)}reflect(e){return this.sub(cs.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Ot(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y,i=this.z-e.z;return t*t+n*n+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSphericalCoords(e,t,n){const i=Math.sin(t)*e;return this.x=i*Math.sin(n),this.y=Math.cos(t)*e,this.z=i*Math.cos(n),this}setFromCylindricalCoords(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),i=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=i,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=Math.random()*Math.PI*2,t=Math.random()*2-1,n=Math.sqrt(1-t*t);return this.x=n*Math.cos(e),this.y=t,this.z=n*Math.sin(e),this}abs(){return this.x=Math.abs(this.x),this.y=Math.abs(this.y),this.z=Math.abs(this.z),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const cs=new G,jo=new ie,Qi=2e3,Go=2001;class Et{constructor(e,t,n,i,s,a,o,c,l,h,d,m,p,b,T,g){this.isMatrix4=!0,Et.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,t,n,i,s,a,o,c,l,h,d,m,p,b,T,g)}extractPosition(e){return console.warn("THREE.Matrix4: .extractPosition() has been renamed to .copyPosition()."),this.copyPosition(e)}multiplyToArray(e,t,n){return console.error("THREE.Matrix4: .multiplyToArray() has been removed."),this}setRotationFromQuaternion(e){return this.makeRotationFromQuaternion(e)}set(e,t,n,i,s,a,o,c,l,h,d,m,p,b,T,g){const v=this.elements;return v[0]=e,v[4]=t,v[8]=n,v[12]=i,v[1]=s,v[5]=a,v[9]=o,v[13]=c,v[2]=l,v[6]=h,v[10]=d,v[14]=m,v[3]=p,v[7]=b,v[11]=T,v[15]=g,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new Et().fromArray(this.elements)}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(e){const t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,n=e.elements,i=1/wn.setFromMatrixColumn(e,0).length(),s=1/wn.setFromMatrixColumn(e,1).length(),a=1/wn.setFromMatrixColumn(e,2).length();return t[0]=n[0]*i,t[1]=n[1]*i,t[2]=n[2]*i,t[3]=0,t[4]=n[4]*s,t[5]=n[5]*s,t[6]=n[6]*s,t[7]=0,t[8]=n[8]*a,t[9]=n[9]*a,t[10]=n[10]*a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,n=e.x,i=e.y,s=e.z,a=Math.cos(n),o=Math.sin(n),c=Math.cos(i),l=Math.sin(i),h=Math.cos(s),d=Math.sin(s);if(e.order==="XYZ"){const m=a*h,p=a*d,b=o*h,T=o*d;t[0]=c*h,t[4]=-c*d,t[8]=l,t[1]=p+b*l,t[5]=m-T*l,t[9]=-o*c,t[2]=T-m*l,t[6]=b+p*l,t[10]=a*c}else if(e.order==="YXZ"){const m=c*h,p=c*d,b=l*h,T=l*d;t[0]=m+T*o,t[4]=b*o-p,t[8]=a*l,t[1]=a*d,t[5]=a*h,t[9]=-o,t[2]=p*o-b,t[6]=T+m*o,t[10]=a*c}else if(e.order==="ZXY"){const m=c*h,p=c*d,b=l*h,T=l*d;t[0]=m-T*o,t[4]=-a*d,t[8]=b+p*o,t[1]=p+b*o,t[5]=a*h,t[9]=T-m*o,t[2]=-a*l,t[6]=o,t[10]=a*c}else if(e.order==="ZYX"){const m=a*h,p=a*d,b=o*h,T=o*d;t[0]=c*h,t[4]=b*l-p,t[8]=m*l+T,t[1]=c*d,t[5]=T*l+m,t[9]=p*l-b,t[2]=-l,t[6]=o*c,t[10]=a*c}else if(e.order==="YZX"){const m=a*c,p=a*l,b=o*c,T=o*l;t[0]=c*h,t[4]=T-m*d,t[8]=b*d+p,t[1]=d,t[5]=a*h,t[9]=-o*h,t[2]=-l*h,t[6]=p*d+b,t[10]=m-T*d}else if(e.order==="XZY"){const m=a*c,p=a*l,b=o*c,T=o*l;t[0]=c*h,t[4]=-d,t[8]=l*h,t[1]=m*d+T,t[5]=a*h,t[9]=p*d-b,t[2]=b*d-p,t[6]=o*h,t[10]=T*d+m}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(Kl,e,Ql)}lookAt(e,t,n){const i=this.elements;return lt.subVectors(e,t),lt.lengthSq()===0&&(lt.z=1),lt.normalize(),Yt.crossVectors(n,lt),Yt.lengthSq()===0&&(Math.abs(n.z)===1?lt.x+=1e-4:lt.z+=1e-4,lt.normalize(),Yt.crossVectors(n,lt)),Yt.normalize(),er.crossVectors(lt,Yt),i[0]=Yt.x,i[4]=er.x,i[8]=lt.x,i[1]=Yt.y,i[5]=er.y,i[9]=lt.y,i[2]=Yt.z,i[6]=er.z,i[10]=lt.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,i=t.elements,s=this.elements,a=n[0],o=n[4],c=n[8],l=n[12],h=n[1],d=n[5],m=n[9],p=n[13],b=n[2],T=n[6],g=n[10],v=n[14],x=n[3],_=n[7],M=n[11],C=n[15],P=i[0],E=i[4],z=i[8],I=i[12],R=i[1],N=i[5],O=i[9],U=i[13],F=i[2],J=i[6],$=i[10],K=i[14],W=i[3],me=i[7],ne=i[11],ue=i[15];return s[0]=a*P+o*R+c*F+l*W,s[4]=a*E+o*N+c*J+l*me,s[8]=a*z+o*O+c*$+l*ne,s[12]=a*I+o*U+c*K+l*ue,s[1]=h*P+d*R+m*F+p*W,s[5]=h*E+d*N+m*J+p*me,s[9]=h*z+d*O+m*$+p*ne,s[13]=h*I+d*U+m*K+p*ue,s[2]=b*P+T*R+g*F+v*W,s[6]=b*E+T*N+g*J+v*me,s[10]=b*z+T*O+g*$+v*ne,s[14]=b*I+T*U+g*K+v*ue,s[3]=x*P+_*R+M*F+C*W,s[7]=x*E+_*N+M*J+C*me,s[11]=x*z+_*O+M*$+C*ne,s[15]=x*I+_*U+M*K+C*ue,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[4],i=e[8],s=e[12],a=e[1],o=e[5],c=e[9],l=e[13],h=e[2],d=e[6],m=e[10],p=e[14],b=e[3],T=e[7],g=e[11],v=e[15];return b*(+s*c*d-i*l*d-s*o*m+n*l*m+i*o*p-n*c*p)+T*(+t*c*p-t*l*m+s*a*m-i*a*p+i*l*h-s*c*h)+g*(+t*l*d-t*o*p-s*a*d+n*a*p+s*o*h-n*l*h)+v*(-i*o*h-t*c*d+t*o*m+i*a*d-n*a*m+n*c*h)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,n){const i=this.elements;return e.isVector3?(i[12]=e.x,i[13]=e.y,i[14]=e.z):(i[12]=e,i[13]=t,i[14]=n),this}invert(){const e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],c=e[6],l=e[7],h=e[8],d=e[9],m=e[10],p=e[11],b=e[12],T=e[13],g=e[14],v=e[15],x=d*g*l-T*m*l+T*c*p-o*g*p-d*c*v+o*m*v,_=b*m*l-h*g*l-b*c*p+a*g*p+h*c*v-a*m*v,M=h*T*l-b*d*l+b*o*p-a*T*p-h*o*v+a*d*v,C=b*d*c-h*T*c-b*o*m+a*T*m+h*o*g-a*d*g,P=t*x+n*_+i*M+s*C;if(P===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const E=1/P;return e[0]=x*E,e[1]=(T*m*s-d*g*s-T*i*p+n*g*p+d*i*v-n*m*v)*E,e[2]=(o*g*s-T*c*s+T*i*l-n*g*l-o*i*v+n*c*v)*E,e[3]=(d*c*s-o*m*s-d*i*l+n*m*l+o*i*p-n*c*p)*E,e[4]=_*E,e[5]=(h*g*s-b*m*s+b*i*p-t*g*p-h*i*v+t*m*v)*E,e[6]=(b*c*s-a*g*s-b*i*l+t*g*l+a*i*v-t*c*v)*E,e[7]=(a*m*s-h*c*s+h*i*l-t*m*l-a*i*p+t*c*p)*E,e[8]=M*E,e[9]=(b*d*s-h*T*s-b*n*p+t*T*p+h*n*v-t*d*v)*E,e[10]=(a*T*s-b*o*s+b*n*l-t*T*l-a*n*v+t*o*v)*E,e[11]=(h*o*s-a*d*s-h*n*l+t*d*l+a*n*p-t*o*p)*E,e[12]=C*E,e[13]=(h*T*i-b*d*i+b*n*m-t*T*m-h*n*g+t*d*g)*E,e[14]=(b*o*i-a*T*i-b*n*c+t*T*c+a*n*g-t*o*g)*E,e[15]=(a*d*i-h*o*i+h*n*c-t*d*c-a*n*m+t*o*m)*E,this}scale(e){const t=this.elements,n=e.x,i=e.y,s=e.z;return t[0]*=n,t[4]*=i,t[8]*=s,t[1]*=n,t[5]*=i,t[9]*=s,t[2]*=n,t[6]*=i,t[10]*=s,t[3]*=n,t[7]*=i,t[11]*=s,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],i=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,n,i))}makeTranslation(e,t,n){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const n=Math.cos(t),i=Math.sin(t),s=1-n,a=e.x,o=e.y,c=e.z,l=s*a,h=s*o;return this.set(l*a+n,l*o-i*c,l*c+i*o,0,l*o+i*c,h*o+n,h*c-i*a,0,l*c-i*o,h*c+i*a,s*c*c+n,0,0,0,0,1),this}makeScale(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(e,t,n,i,s,a){return this.set(1,n,s,0,e,1,a,0,t,i,1,0,0,0,0,1),this}compose(e,t,n){const i=this.elements,s=t._x,a=t._y,o=t._z,c=t._w,l=s+s,h=a+a,d=o+o,m=s*l,p=s*h,b=s*d,T=a*h,g=a*d,v=o*d,x=c*l,_=c*h,M=c*d,C=n.x,P=n.y,E=n.z;return i[0]=(1-(T+v))*C,i[1]=(p+M)*C,i[2]=(b-_)*C,i[3]=0,i[4]=(p-M)*P,i[5]=(1-(m+v))*P,i[6]=(g+x)*P,i[7]=0,i[8]=(b+_)*E,i[9]=(g-x)*E,i[10]=(1-(m+T))*E,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,this}decompose(e,t,n){const i=this.elements;let s=wn.set(i[0],i[1],i[2]).length();const a=wn.set(i[4],i[5],i[6]).length(),o=wn.set(i[8],i[9],i[10]).length();this.determinant()<0&&(s=-s),e.x=i[12],e.y=i[13],e.z=i[14],Ct.copy(this);const l=1/s,h=1/a,d=1/o;return Ct.elements[0]*=l,Ct.elements[1]*=l,Ct.elements[2]*=l,Ct.elements[4]*=h,Ct.elements[5]*=h,Ct.elements[6]*=h,Ct.elements[8]*=d,Ct.elements[9]*=d,Ct.elements[10]*=d,t.setFromRotationMatrix(Ct),n.x=s,n.y=a,n.z=o,this}makePerspective(e,t,n,i,s,a,o=Qi){const c=this.elements,l=2*s/(t-e),h=2*s/(n-i),d=(t+e)/(t-e),m=(n+i)/(n-i);let p,b;if(o===Qi)p=-(a+s)/(a-s),b=-2*a*s/(a-s);else if(o===Go)p=-a/(a-s),b=-a*s/(a-s);else throw new Error("Matrix4.makePerspective(): Invalid coordinate system: "+o);return c[0]=l,c[4]=0,c[8]=d,c[12]=0,c[1]=0,c[5]=h,c[9]=m,c[13]=0,c[2]=0,c[6]=0,c[10]=p,c[14]=b,c[3]=0,c[7]=0,c[11]=-1,c[15]=0,this}makeOrthographic(e,t,n,i,s,a,o=Qi){const c=this.elements,l=1/(t-e),h=1/(n-i),d=1/(a-s),m=(t+e)*l,p=(n+i)*h;let b,T;if(o===Qi)b=(a+s)*d,T=-2*d;else if(o===Go)b=s*d,T=-1*d;else throw new Error("../math.Matrix4.makeOrthographic(): Invalid coordinate system: "+o);return c[0]=2*l,c[4]=0,c[8]=0,c[12]=-m,c[1]=0,c[5]=2*h,c[9]=0,c[13]=-p,c[2]=0,c[6]=0,c[10]=T,c[14]=-b,c[3]=0,c[7]=0,c[11]=0,c[15]=1,this}equals(e){const t=this.elements,n=e.elements;for(let i=0;i<16;i++)if(t[i]!==n[i])return!1;return!0}fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}}const wn=new G,Ct=new Et,Kl=new G(0,0,0),Ql=new G(1,1,1),Yt=new G,er=new G,lt=new G,Wo=new Et,$o=new ie;class ui{constructor(e=0,t=0,n=0,i=ui.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=n,this._order=i}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,n,i=this._order){return this._x=e,this._y=t,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new ui(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,n=!0){const i=e.elements,s=i[0],a=i[4],o=i[8],c=i[1],l=i[5],h=i[9],d=i[2],m=i[6],p=i[10];switch(t){case"XYZ":this._y=Math.asin(Ot(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-h,p),this._z=Math.atan2(-a,s)):(this._x=Math.atan2(m,l),this._z=0);break;case"YXZ":this._x=Math.asin(-Ot(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(o,p),this._z=Math.atan2(c,l)):(this._y=Math.atan2(-d,s),this._z=0);break;case"ZXY":this._x=Math.asin(Ot(m,-1,1)),Math.abs(m)<.9999999?(this._y=Math.atan2(-d,p),this._z=Math.atan2(-a,l)):(this._y=0,this._z=Math.atan2(c,s));break;case"ZYX":this._y=Math.asin(-Ot(d,-1,1)),Math.abs(d)<.9999999?(this._x=Math.atan2(m,p),this._z=Math.atan2(c,s)):(this._x=0,this._z=Math.atan2(-a,l));break;case"YZX":this._z=Math.asin(Ot(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(-h,l),this._y=Math.atan2(-d,s)):(this._x=0,this._y=Math.atan2(o,p));break;case"XZY":this._z=Math.asin(-Ot(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(m,l),this._y=Math.atan2(o,s)):(this._x=Math.atan2(-h,p),this._y=0);break;default:console.warn("../math.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return Wo.makeRotationFromQuaternion(e),this.setFromRotationMatrix(Wo,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return $o.setFromEuler(this),this.setFromQuaternion($o,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(e){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}ui.DEFAULT_ORDER="XYZ";class Dn{constructor(e=0,t=0){this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new Dn(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,n=this.y,i=e.elements;return this.x=i[0]*t+i[3]*n+i[6],this.y=i[1]*t+i[4]*n+i[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Ot(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}rotateAround(e,t){const n=Math.cos(t),i=Math.sin(t),s=this.x-e.x,a=this.y-e.y;return this.x=s*n-a*i+e.x,this.y=s*i+a*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}Dn.isVector2=!0;class at{constructor(e=0,t=0,n=0,i=1){at.prototype.isVector4=!0,this.x=e,this.y=t,this.z=n,this.w=i}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,i){return this.x=e,this.y=t,this.z=n,this.w=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new at(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,n=this.y,i=this.z,s=this.w,a=e.elements;return this.x=a[0]*t+a[4]*n+a[8]*i+a[12]*s,this.y=a[1]*t+a[5]*n+a[9]*i+a[13]*s,this.z=a[2]*t+a[6]*n+a[10]*i+a[14]*s,this.w=a[3]*t+a[7]*n+a[11]*i+a[15]*s,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,n,i,s;const c=e.elements,l=c[0],h=c[4],d=c[8],m=c[1],p=c[5],b=c[9],T=c[2],g=c[6],v=c[10];if(Math.abs(h-m)<.01&&Math.abs(d-T)<.01&&Math.abs(b-g)<.01){if(Math.abs(h+m)<.1&&Math.abs(d+T)<.1&&Math.abs(b+g)<.1&&Math.abs(l+p+v-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const _=(l+1)/2,M=(p+1)/2,C=(v+1)/2,P=(h+m)/4,E=(d+T)/4,z=(b+g)/4;return _>M&&_>C?_<.01?(n=0,i=.707106781,s=.707106781):(n=Math.sqrt(_),i=P/n,s=E/n):M>C?M<.01?(n=.707106781,i=0,s=.707106781):(i=Math.sqrt(M),n=P/i,s=z/i):C<.01?(n=.707106781,i=.707106781,s=0):(s=Math.sqrt(C),n=E/s,i=z/s),this.set(n,i,s,t),this}let x=Math.sqrt((g-b)*(g-b)+(d-T)*(d-T)+(m-h)*(m-h));return Math.abs(x)<.001&&(x=1),this.x=(g-b)/x,this.y=(d-T)/x,this.z=(m-h)/x,this.w=Math.acos((l+p+v-1)/2),this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this.w=Math.max(e,Math.min(t,this.w)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class It{constructor(e,t,n,i,s,a,o,c,l){It.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,n,i,s,a,o,c,l)}set(e,t,n,i,s,a,o,c,l){const h=this.elements;return h[0]=e,h[1]=i,h[2]=o,h[3]=t,h[4]=s,h[5]=c,h[6]=n,h[7]=a,h[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,i=t.elements,s=this.elements,a=n[0],o=n[3],c=n[6],l=n[1],h=n[4],d=n[7],m=n[2],p=n[5],b=n[8],T=i[0],g=i[3],v=i[6],x=i[1],_=i[4],M=i[7],C=i[2],P=i[5],E=i[8];return s[0]=a*T+o*x+c*C,s[3]=a*g+o*_+c*P,s[6]=a*v+o*M+c*E,s[1]=l*T+h*x+d*C,s[4]=l*g+h*_+d*P,s[7]=l*v+h*M+d*E,s[2]=m*T+p*x+b*C,s[5]=m*g+p*_+b*P,s[8]=m*v+p*M+b*E,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],c=e[6],l=e[7],h=e[8];return t*a*h-t*o*l-n*s*h+n*o*c+i*s*l-i*a*c}invert(){const e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],c=e[6],l=e[7],h=e[8],d=h*a-o*l,m=o*c-h*s,p=l*s-a*c,b=t*d+n*m+i*p;if(b===0)return this.set(0,0,0,0,0,0,0,0,0);const T=1/b;return e[0]=d*T,e[1]=(i*l-h*n)*T,e[2]=(o*n-i*a)*T,e[3]=m*T,e[4]=(h*t-i*c)*T,e[5]=(i*s-o*t)*T,e[6]=p*T,e[7]=(n*c-l*t)*T,e[8]=(a*t-n*s)*T,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,i,s,a,o){const c=Math.cos(s),l=Math.sin(s);return this.set(n*c,n*l,-n*(c*a+l*o)+a+e,-i*l,i*c,-i*(-l*a+c*o)+o+t,0,0,1),this}scale(e,t){return this.premultiply(ls.makeScale(e,t)),this}rotate(e){return this.premultiply(ls.makeRotation(-e)),this}translate(e,t){return this.premultiply(ls.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,n=e.elements;for(let i=0;i<9;i++)if(t[i]!==n[i])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new It().fromArray(this.elements)}}const ls=new It;var et;(function(r){r[r.Random=0]="Random",r[r.Loop=1]="Loop",r[r.PingPong=2]="PingPong",r[r.Burst=3]="Burst"})(et||(et={}));function ji(r,e,t,n){let i;switch(et.Random===r?e=Math.random():et.Burst===r&&n.isBursting&&(e=n.burstParticleIndex/n.burstParticleCount),t>0?i=Math.floor(e/t)*t:i=e,r){case et.Loop:i=i%1;break;case et.PingPong:i=Math.abs(i%2-1);break}return i}class yn{constructor(e,t,n,i){this.p=[e,t,n,i]}genValue(e){const t=e*e,n=e*e*e,i=1-e,s=i*i,a=s*i;return this.p[0]*a+this.p[1]*s*e*3+this.p[2]*i*t*3+this.p[3]*n}derivativeCoefficients(e){const t=[];for(let n=e,i=n.length-1;i>0;i--){const s=[];for(let a=0;a<i;a++){const o=i*(n[a+1]-n[a]);s.push(o)}t.push(s),n=s}return t}getSlope(e){const t=this.derivativeCoefficients(this.p)[0],n=1-e,i=n*n,s=n*e*2,a=e*e;return i*t[0]+s*t[1]+a*t[2]}controlCurve(e,t){this.p[1]=e/3+this.p[0],this.p[2]=this.p[3]-t/3}hull(e){let t=this.p,n=[],i,s=0,a=0,o=0;const c=[];for(c[s++]=t[0],c[s++]=t[1],c[s++]=t[2],c[s++]=t[3];t.length>1;){for(n=[],a=0,o=t.length-1;a<o;a++)i=e*t[a]+(1-e)*t[a+1],c[s++]=i,n.push(i);t=n}return c}split(e){const t=this.hull(e);return{left:new yn(t[0],t[4],t[7],t[9]),right:new yn(t[9],t[8],t[6],t[3]),span:t}}clone(){return new yn(this.p[0],this.p[1],this.p[2],this.p[3])}toJSON(){return{p0:this.p[0],p1:this.p[1],p2:this.p[2],p3:this.p[3]}}static fromJSON(e){return new yn(e.p0,e.p1,e.p2,e.p3)}}const hi=r=>({r:r.x,g:r.y,b:r.z,a:r.w}),fi=r=>new at(r.r,r.g,r.b,r.a),eu=(r,e)=>{switch(e){case"Vector3":return new G(r.x,r.y,r.z);case"Vector4":return new at(r.x,r.y,r.z,r.w);case"Color":return new G(r.r,r.g,r.b);case"Number":return r;default:return r}},tu=(r,e)=>{switch(e){case"Vector3":return{x:r.x,y:r.y,z:r.z};case"Vector4":return{x:r.x,y:r.y,z:r.z,w:r.w};case"Color":return{r:r.x,g:r.y,b:r.z};case"Number":return r;default:return r}};class Ar{constructor(e,t){this.a=e,this.b=t,this.type="value"}startGen(e){}genColor(e,t){const n=Math.random();return t.copy(this.a).lerp(this.b,n)}toJSON(){return{type:"RandomColor",a:hi(this.a),b:hi(this.b)}}static fromJSON(e){return new Ar(fi(e.a),fi(e.b))}clone(){return new Ar(this.a.clone(),this.b.clone())}}class Ln{constructor(e,t){this.a=e,this.b=t,this.indexCount=-1,this.type="value"}startGen(e){this.indexCount=e.length,e.push(Math.random())}genColor(e,t){return this.indexCount===-1&&this.startGen(e),t.copy(this.a).lerp(this.b,e[this.indexCount])}toJSON(){return{type:"ColorRange",a:hi(this.a),b:hi(this.b)}}static fromJSON(e){return new Ln(fi(e.a),fi(e.b))}clone(){return new Ln(this.a.clone(),this.b.clone())}}class nn{constructor(e,t){this.subType=t,this.type="function",this.keys=e}findKey(e){let t=0,n=0,i=this.keys.length-1;for(;n+1<i;)if(t=Math.floor((n+i)/2),e<this.getStartX(t))i=t-1;else if(e>this.getEndX(t))n=t+1;else return t;for(let s=n;s<=i;s++)if(e>=this.getStartX(s)&&e<=this.getEndX(s))return s;return-1}getStartX(e){return this.keys[e][1]}getEndX(e){return e+1<this.keys.length?this.keys[e+1][1]:1}genValue(e,t){const n=this.findKey(t);return this.subType==="Number"?n===-1?this.keys[0][0]:n+1>=this.keys.length?this.keys[this.keys.length-1][0]:(this.keys[n+1][0]-this.keys[n][0])*((t-this.getStartX(n))/(this.getEndX(n)-this.getStartX(n)))+this.keys[n][0]:n===-1?e.copy(this.keys[0][0]):n+1>=this.keys.length?e.copy(this.keys[this.keys.length-1][0]):e.copy(this.keys[n][0]).lerp(this.keys[n+1][0],(t-this.getStartX(n))/(this.getEndX(n)-this.getStartX(n)))}toJSON(){return this.keys[0][0].constructor.name,{type:"CLinearFunction",subType:this.subType,keys:this.keys.map(([e,t])=>({value:tu(e,this.subType),pos:t}))}}static fromJSON(e){return new nn(e.keys.map(t=>[eu(t.value,e.subType),t.pos]),e.subType)}clone(){return this.subType==="Number"?new nn(this.keys.map(([e,t])=>[e,t]),this.subType):new nn(this.keys.map(([e,t])=>[e.clone(),t]),this.subType)}}const tr=new G;class gn{constructor(e=[[new G(0,0,0),0],[new G(1,1,1),0]],t=[[1,0],[1,1]]){this.type="function",this.color=new nn(e,"Color"),this.alpha=new nn(t,"Number")}genColor(e,t,n){return this.color.genValue(tr,n),t.set(tr.x,tr.y,tr.z,this.alpha.genValue(1,n))}toJSON(){return{type:"Gradient",color:this.color.toJSON(),alpha:this.alpha.toJSON()}}static fromJSON(e){if(e.functions){const t=e.functions.map(n=>[Ln.fromJSON(n.function).a,n.start]);return e.functions.length>0&&t.push([Ln.fromJSON(e.functions[e.functions.length-1].function).b,1]),new gn(t.map(n=>[new G(n[0].x,n[0].y,n[0].z),n[1]]),t.map(n=>[n[0].w,n[1]]))}else{const t=new gn;return t.alpha=nn.fromJSON(e.alpha),t.color=nn.fromJSON(e.color),t}}clone(){const e=new gn;return e.alpha=this.alpha.clone(),e.color=this.color.clone(),e}startGen(e){}}const us=new at;class Or{constructor(e,t){this.indexCount=0,this.type="function",this.gradient1=e,this.gradient2=t}startGen(e){this.indexCount=e.length,e.push(Math.random())}genColor(e,t,n){return this.gradient1.genColor(e,t,n),this.gradient2.genColor(e,us,n),e&&e[this.indexCount]!==void 0?t.lerp(us,e[this.indexCount]):t.lerp(us,Math.random()),t}toJSON(){return{type:"RandomColorBetweenGradient",gradient1:this.gradient1.toJSON(),gradient2:this.gradient2.toJSON()}}static fromJSON(e){return new Or(gn.fromJSON(e.gradient1),gn.fromJSON(e.gradient2))}clone(){return new Or(this.gradient1.clone(),this.gradient2.clone())}}class vn{constructor(e){this.color=e,this.type="value"}startGen(e){}genColor(e,t){return t.copy(this.color)}toJSON(){return{type:"ConstantColor",color:hi(this.color)}}static fromJSON(e){return new vn(fi(e.color))}clone(){return new vn(this.color.clone())}}function io(r){switch(r.type){case"ConstantColor":return vn.fromJSON(r);case"ColorRange":return Ln.fromJSON(r);case"RandomColor":return Ar.fromJSON(r);case"Gradient":return gn.fromJSON(r);case"RandomColorBetweenGradient":return Or.fromJSON(r);default:return new vn(new at(1,1,1,1))}}class ee{constructor(e){this.value=e,this.type="value"}startGen(e){}genValue(e){return this.value}toJSON(){return{type:"ConstantValue",value:this.value}}static fromJSON(e){return new ee(e.value)}clone(){return new ee(this.value)}}class Sn{constructor(e,t){this.a=e,this.b=t,this.indexCount=-1,this.type="value"}startGen(e){this.indexCount=e.length,e.push(Math.random())}genValue(e){return this.indexCount===-1&&this.startGen(e),Jn.lerp(this.a,this.b,e[this.indexCount])}toJSON(){return{type:"IntervalValue",a:this.a,b:this.b}}static fromJSON(e){return new Sn(e.a,e.b)}clone(){return new Sn(this.a,this.b)}}class nu{constructor(){this.functions=new Array}findFunction(e){let t=0,n=0,i=this.functions.length-1;for(;n+1<i;)if(t=Math.floor((n+i)/2),e<this.getStartX(t))i=t-1;else if(e>this.getEndX(t))n=t+1;else return t;for(let s=n;s<=i;s++)if(e>=this.functions[s][1]&&e<=this.getEndX(s))return s;return-1}getStartX(e){return this.functions[e][1]}setStartX(e,t){e>0&&(this.functions[e][1]=t)}getEndX(e){return e+1<this.functions.length?this.functions[e+1][1]:1}setEndX(e,t){e+1<this.functions.length&&(this.functions[e+1][1]=t)}insertFunction(e,t){const n=this.findFunction(e);this.functions.splice(n+1,0,[t,e])}removeFunction(e){return this.functions.splice(e,1)[0][0]}getFunction(e){return this.functions[e][0]}setFunction(e,t){this.functions[e][0]=t}get numOfFunctions(){return this.functions.length}}class di extends nu{constructor(e=[[new yn(0,1/3,1/3*2,1),0]]){super(),this.type="function",this.functions=e}genValue(e,t=0){const n=this.findFunction(t);return n===-1?0:this.functions[n][0].genValue((t-this.getStartX(n))/(this.getEndX(n)-this.getStartX(n)))}toSVG(e,t){if(t<1)return"";let n=["M",0,this.functions[0][0].p[0]].join(" ");for(let i=1/t;i<=1;i+=1/t)n=[n,"L",i*e,this.genValue(void 0,i)].join(" ");return n}toJSON(){return{type:"PiecewiseBezier",functions:this.functions.map(([e,t])=>({function:e.toJSON(),start:t}))}}static fromJSON(e){return new di(e.functions.map(t=>[yn.fromJSON(t.function),t.start]))}clone(){return new di(this.functions.map(([e,t])=>[e.clone(),t]))}startGen(e){}}function Z(r){switch(r.type){case"ConstantValue":return ee.fromJSON(r);case"IntervalValue":return Sn.fromJSON(r);case"PiecewiseBezier":return di.fromJSON(r);default:return new ee(0)}}class pi{constructor(){this.indexCount=0,this.type="rotation"}startGen(e){this.indexCount=e.length,e.push(new ie);let t,n,i,s,a,o;do t=Math.random()*2-1,n=Math.random()*2-1,i=t*t+n*n;while(i>1);do s=Math.random()*2-1,a=Math.random()*2-1,o=s*s+a*a;while(o>1);const c=Math.sqrt((1-i)/o);e[this.indexCount].set(t,n,c*s,c*a)}genValue(e,t,n,i){return this.indexCount===-1&&this.startGen(e),t.copy(e[this.indexCount]),t}toJSON(){return{type:"RandomQuat"}}static fromJSON(e){return new pi}clone(){return new pi}}class mi{constructor(e,t){this.axis=e,this.angle=t,this.type="rotation"}startGen(e){this.angle.startGen(e)}genValue(e,t,n,i){return t.setFromAxisAngle(this.axis,this.angle.genValue(e,i)*n)}toJSON(){return{type:"AxisAngle",axis:{x:this.axis.x,y:this.axis.y,z:this.axis.z},angle:this.angle.toJSON()}}static fromJSON(e){return new mi(new G(e.axis.x,e.axis.y,e.axis.z),Z(e.angle))}clone(){return new mi(this.axis.clone(),this.angle.clone())}}class zr{constructor(e,t,n,i){this.angleX=e,this.angleY=t,this.angleZ=n,this.type="rotation",this.eular=new ui(0,0,0,i)}startGen(e){this.angleX.startGen(e),this.angleY.startGen(e),this.angleZ.startGen(e)}genValue(e,t,n,i){return this.eular.set(this.angleX.genValue(e,i)*n,this.angleY.genValue(e,i)*n,this.angleZ.genValue(e,i)*n),t.setFromEuler(this.eular)}toJSON(){return{type:"Euler",angleX:this.angleX.toJSON(),angleY:this.angleY.toJSON(),angleZ:this.angleZ.toJSON(),eulerOrder:this.eular.order}}static fromJSON(e){return new zr(Z(e.angleX),Z(e.angleY),Z(e.angleZ),e.eulerOrder)}clone(){return new zr(this.angleX,this.angleY,this.angleZ,this.eular.order)}}function Ya(r){switch(r.type){case"AxisAngle":return mi.fromJSON(r);case"Euler":return zr.fromJSON(r);case"RandomQuat":return pi.fromJSON(r);default:return new pi}}class xn{constructor(e,t,n){this.x=e,this.y=t,this.z=n,this.type="vec3function"}startGen(e){this.x.startGen(e),this.y.startGen(e),this.z.startGen(e)}genValue(e,t,n){return t.set(this.x.genValue(e,n),this.y.genValue(e,n),this.z.genValue(e,n))}toJSON(){return{type:"Vector3Function",x:this.x.toJSON(),y:this.y.toJSON(),z:this.z.toJSON()}}static fromJSON(e){return new xn(Z(e.x),Z(e.y),Z(e.z))}clone(){return new xn(this.x,this.y,this.z)}}function iu(r){return r.type==="Vector3Function"?xn.fromJSON(r):new xn(new ee(0),new ee(0),new ee(0))}function Ir(r){switch(r.type){case"ConstantValue":case"IntervalValue":case"PiecewiseBezier":return Z(r);case"AxisAngle":case"RandomQuat":case"Euler":return Ya(r);case"Vector3Function":return iu(r);default:return new ee(0)}}class yi{constructor(e={}){var t,n,i,s,a,o,c;this.type="cone",this.currentValue=0,this.radius=(t=e.radius)!==null&&t!==void 0?t:10,this.arc=(n=e.arc)!==null&&n!==void 0?n:2*Math.PI,this.thickness=(i=e.thickness)!==null&&i!==void 0?i:1,this.angle=(s=e.angle)!==null&&s!==void 0?s:Math.PI/6,this.mode=(a=e.mode)!==null&&a!==void 0?a:et.Random,this.spread=(o=e.spread)!==null&&o!==void 0?o:0,this.speed=(c=e.speed)!==null&&c!==void 0?c:new ee(1),this.memory=[]}update(e,t){et.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){const n=ji(this.mode,this.currentValue,this.spread,t),i=Jn.lerp(1-this.thickness,1,Math.random()),s=n*this.arc,a=Math.sqrt(i),o=Math.sin(s),c=Math.cos(s);e.position.x=a*c,e.position.y=a*o,e.position.z=0;const l=this.angle*a;e.velocity.set(0,0,Math.cos(l)).addScaledVector(e.position,Math.sin(l)).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius)}toJSON(){return{type:"cone",radius:this.radius,arc:this.arc,thickness:this.thickness,angle:this.angle,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(e){return new yi({radius:e.radius,arc:e.arc,thickness:e.thickness,angle:e.angle,mode:e.mode,speed:e.speed?Z(e.speed):void 0,spread:e.spread})}clone(){return new yi({radius:this.radius,arc:this.arc,thickness:this.thickness,angle:this.angle,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}class gi{constructor(e={}){var t,n,i,s,a,o;this.type="circle",this.currentValue=0,this.radius=(t=e.radius)!==null&&t!==void 0?t:10,this.arc=(n=e.arc)!==null&&n!==void 0?n:2*Math.PI,this.thickness=(i=e.thickness)!==null&&i!==void 0?i:1,this.mode=(s=e.mode)!==null&&s!==void 0?s:et.Random,this.spread=(a=e.spread)!==null&&a!==void 0?a:0,this.speed=(o=e.speed)!==null&&o!==void 0?o:new ee(1),this.memory=[]}update(e,t){this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t}initialize(e,t){const n=ji(this.mode,this.currentValue,this.spread,t),i=Jn.lerp(1-this.thickness,1,Math.random()),s=n*this.arc;e.position.x=Math.cos(s),e.position.y=Math.sin(s),e.position.z=0,e.velocity.copy(e.position).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius*i)}toJSON(){return{type:"circle",radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(e){return new gi({radius:e.radius,arc:e.arc,thickness:e.thickness,mode:e.mode,speed:e.speed?Z(e.speed):void 0,spread:e.spread})}clone(){return new gi({radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}function nr(r,e){return Math.floor(Math.random()*(e-r))+r}const Vr=new G(0,1,0),Jr=new G(0,0,0),ru=new G(1,1,1),Ho=new G(0,0,1);class vi{constructor(e={}){var t,n,i,s,a,o,c;this.type="donut",this.currentValue=0,this.radius=(t=e.radius)!==null&&t!==void 0?t:10,this.arc=(n=e.arc)!==null&&n!==void 0?n:2*Math.PI,this.thickness=(i=e.thickness)!==null&&i!==void 0?i:1,this.donutRadius=(s=e.donutRadius)!==null&&s!==void 0?s:this.radius*.2,this.mode=(a=e.mode)!==null&&a!==void 0?a:et.Random,this.spread=(o=e.spread)!==null&&o!==void 0?o:0,this.speed=(c=e.speed)!==null&&c!==void 0?c:new ee(1),this.memory=[],this._m1=new Et}update(e,t){et.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){const n=ji(this.mode,this.currentValue,this.spread,t),i=Math.random(),s=Jn.lerp(1-this.thickness,1,Math.random()),a=n*this.arc,o=i*Math.PI*2,c=Math.sin(a),l=Math.cos(a);e.position.x=this.radius*l,e.position.y=this.radius*c,e.position.z=0,e.velocity.z=this.donutRadius*s*Math.sin(o),e.velocity.x=this.donutRadius*s*Math.cos(o)*l,e.velocity.y=this.donutRadius*s*Math.cos(o)*c,e.position.add(e.velocity),e.velocity.normalize().multiplyScalar(e.startSpeed),e.rotation instanceof ie&&(this._m1.lookAt(Jr,e.velocity,Vr),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:"donut",radius:this.radius,arc:this.arc,thickness:this.thickness,donutRadius:this.donutRadius,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(e){return new vi({radius:e.radius,arc:e.arc,thickness:e.thickness,donutRadius:e.donutRadius,mode:e.mode,speed:e.speed?Z(e.speed):void 0,spread:e.spread})}clone(){return new vi({radius:this.radius,arc:this.arc,thickness:this.thickness,donutRadius:this.donutRadius,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}class Si{constructor(){this.type="point",this._m1=new Et}update(e,t){}initialize(e){const t=Math.random(),n=Math.random(),i=t*Math.PI*2,s=Math.acos(2*n-1),a=Math.cbrt(Math.random()),o=Math.sin(i),c=Math.cos(i),l=Math.sin(s),h=Math.cos(s);e.velocity.x=a*l*c,e.velocity.y=a*l*o,e.velocity.z=a*h,e.velocity.multiplyScalar(e.startSpeed),e.position.setScalar(0),e.rotation instanceof ie&&(this._m1.lookAt(Jr,e.position,Vr),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:"point"}}static fromJSON(e){return new Si}clone(){return new Si}}class Fn{constructor(e={}){var t,n,i,s,a,o;this.type="sphere",this.currentValue=0,this.radius=(t=e.radius)!==null&&t!==void 0?t:10,this.arc=(n=e.arc)!==null&&n!==void 0?n:2*Math.PI,this.thickness=(i=e.thickness)!==null&&i!==void 0?i:1,this.mode=(s=e.mode)!==null&&s!==void 0?s:et.Random,this.spread=(a=e.spread)!==null&&a!==void 0?a:0,this.speed=(o=e.speed)!==null&&o!==void 0?o:new ee(1),this.memory=[],this._m1=new Et}update(e,t){et.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){const n=ji(this.mode,this.currentValue,this.spread,t),i=Math.random(),s=Jn.lerp(1-this.thickness,1,Math.random()),a=n*this.arc,o=Math.acos(2*i-1),c=Math.sin(a),l=Math.cos(a),h=Math.sin(o),d=Math.cos(o);e.position.x=h*l,e.position.y=h*c,e.position.z=d,e.velocity.copy(e.position).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius*s),e.rotation instanceof ie&&(this._m1.lookAt(Jr,e.position,Vr),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:"sphere",radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(e){return new Fn({radius:e.radius,arc:e.arc,thickness:e.thickness,mode:e.mode,speed:e.speed?Z(e.speed):void 0,spread:e.spread})}clone(){return new Fn({radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}class xi{constructor(e={}){var t,n,i,s,a,o;this.type="sphere",this.currentValue=0,this.radius=(t=e.radius)!==null&&t!==void 0?t:10,this.arc=(n=e.arc)!==null&&n!==void 0?n:2*Math.PI,this.thickness=(i=e.thickness)!==null&&i!==void 0?i:1,this.mode=(s=e.mode)!==null&&s!==void 0?s:et.Random,this.spread=(a=e.spread)!==null&&a!==void 0?a:0,this.speed=(o=e.speed)!==null&&o!==void 0?o:new ee(1),this.memory=[],this._m1=new Et}update(e,t){et.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){const n=ji(this.mode,this.currentValue,this.spread,t),i=Math.random(),s=Jn.lerp(1-this.thickness,1,Math.random()),a=n*this.arc,o=Math.acos(i),c=Math.sin(a),l=Math.cos(a),h=Math.sin(o),d=Math.cos(o);e.position.x=h*l,e.position.y=h*c,e.position.z=d,e.velocity.copy(e.position).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius*s),e.rotation instanceof ie&&(this._m1.lookAt(Jr,e.position,Vr),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:"hemisphere",radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(e){return new xi({radius:e.radius,arc:e.arc,thickness:e.thickness,mode:e.mode,speed:e.speed?Z(e.speed):void 0,spread:e.spread})}clone(){return new xi({radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}class _i{constructor(e={}){var t,n,i,s;this.type="grid",this.width=(t=e.width)!==null&&t!==void 0?t:1,this.height=(n=e.height)!==null&&n!==void 0?n:1,this.column=(i=e.column)!==null&&i!==void 0?i:10,this.row=(s=e.row)!==null&&s!==void 0?s:10}initialize(e){const t=Math.floor(Math.random()*this.row),n=Math.floor(Math.random()*this.column);e.position.x=n*this.width/this.column-this.width/2,e.position.y=t*this.height/this.row-this.height/2,e.position.z=0,e.velocity.set(0,0,e.startSpeed)}toJSON(){return{type:"grid",width:this.width,height:this.height,column:this.column,row:this.row}}static fromJSON(e){return new _i(e)}clone(){return new _i({width:this.width,height:this.height,column:this.column,row:this.row})}update(e,t){}}const Is={circle:{type:"circle",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:gi,loadJSON:gi.fromJSON},cone:{type:"cone",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["angle",["radian"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:yi,loadJSON:yi.fromJSON},donut:{type:"donut",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["donutRadius",["number"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:vi,loadJSON:vi.fromJSON},point:{type:"point",params:[],constructor:Si,loadJSON:Si.fromJSON},sphere:{type:"sphere",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["angle",["radian"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:Fn,loadJSON:Fn.fromJSON},hemisphere:{type:"hemisphere",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["angle",["radian"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:xi,loadJSON:xi.fromJSON},grid:{type:"grid",params:[["width",["number"]],["height",["number"]],["rows",["number"]],["column",["number"]]],constructor:_i,loadJSON:_i.fromJSON}};function su(r,e){return Is[r.type].loadJSON(r,e)}class bi{constructor(e){this.color=e,this.type="ColorOverLife"}initialize(e){this.color.startGen(e.memory)}update(e,t){this.color.genColor(e.memory,e.color,e.age/e.life),e.color.x*=e.startColor.x,e.color.y*=e.startColor.y,e.color.z*=e.startColor.z,e.color.w*=e.startColor.w}frameUpdate(e){}toJSON(){return{type:this.type,color:this.color.toJSON()}}static fromJSON(e){return new bi(io(e.color))}clone(){return new bi(this.color.clone())}reset(){}}class Ti{constructor(e){this.angularVelocity=e,this.type="RotationOverLife"}initialize(e){typeof e.rotation=="number"&&this.angularVelocity.startGen(e.memory)}update(e,t){typeof e.rotation=="number"&&(e.rotation+=t*this.angularVelocity.genValue(e.memory,e.age/e.life))}toJSON(){return{type:this.type,angularVelocity:this.angularVelocity.toJSON()}}static fromJSON(e){return new Ti(Z(e.angularVelocity))}frameUpdate(e){}clone(){return new Ti(this.angularVelocity.clone())}reset(){}}class Mi{constructor(e){this.angularVelocity=e,this.type="Rotation3DOverLife",this.tempQuat=new ie,this.tempQuat2=new ie}initialize(e){e.rotation instanceof ie&&(e.angularVelocity=new ie,this.angularVelocity.startGen(e.memory))}update(e,t){e.rotation instanceof ie&&(this.angularVelocity.genValue(e.memory,this.tempQuat,t,e.age/e.life),e.rotation.multiply(this.tempQuat))}toJSON(){return{type:this.type,angularVelocity:this.angularVelocity.toJSON()}}static fromJSON(e){return new Mi(Ya(e.angularVelocity))}frameUpdate(e){}clone(){return new Mi(this.angularVelocity.clone())}reset(){}}class Ci{initialize(e,t){this.ps=t,this.x.startGen(e.memory),this.y.startGen(e.memory),this.z.startGen(e.memory)}constructor(e,t,n){this.x=e,this.y=t,this.z=n,this.type="ForceOverLife",this._temp=new G,this._tempScale=new G,this._tempQ=new ie}update(e,t){this._temp.set(this.x.genValue(e.memory,e.age/e.life),this.y.genValue(e.memory,e.age/e.life),this.z.genValue(e.memory,e.age/e.life)),this.ps.worldSpace?e.velocity.addScaledVector(this._temp,t):(this._temp.multiply(this._tempScale).applyQuaternion(this._tempQ),e.velocity.addScaledVector(this._temp,t))}toJSON(){return{type:this.type,x:this.x.toJSON(),y:this.y.toJSON(),z:this.z.toJSON()}}static fromJSON(e){return new Ci(Z(e.x),Z(e.y),Z(e.z))}frameUpdate(e){if(this.ps&&!this.ps.worldSpace){const t=this._temp,n=this._tempQ,i=this._tempScale;this.ps.emitter.matrixWorld.decompose(t,n,i),n.invert(),i.set(1/i.x,1/i.y,1/i.z)}}clone(){return new Ci(this.x.clone(),this.y.clone(),this.z.clone())}reset(){}}class wi{initialize(e){this.size.startGen(e.memory)}constructor(e){this.size=e,this.type="SizeOverLife"}update(e){this.size instanceof xn?this.size.genValue(e.memory,e.size,e.age/e.life).multiply(e.startSize):e.size.copy(e.startSize).multiplyScalar(this.size.genValue(e.memory,e.age/e.life))}toJSON(){return{type:this.type,size:this.size.toJSON()}}static fromJSON(e){return new wi(Ir(e.size))}frameUpdate(e){}clone(){return new wi(this.size.clone())}reset(){}}class Pi{initialize(e){this.speed.startGen(e.memory)}constructor(e){this.speed=e,this.type="SpeedOverLife"}update(e){e.speedModifier=this.speed.genValue(e.memory,e.age/e.life)}toJSON(){return{type:this.type,speed:this.speed.toJSON()}}static fromJSON(e){return new Pi(Z(e.speed))}frameUpdate(e){}clone(){return new Pi(this.speed.clone())}reset(){}}class Ei{constructor(e){this.frame=e,this.type="FrameOverLife"}initialize(e){this.frame.startGen(e.memory)}update(e,t){this.frame instanceof di&&(e.uvTile=this.frame.genValue(e.memory,e.age/e.life))}frameUpdate(e){}toJSON(){return{type:this.type,frame:this.frame.toJSON()}}static fromJSON(e){return new Ei(Z(e.frame))}clone(){return new Ei(this.frame.clone())}reset(){}}class ki{constructor(e,t=new G(0,1,0)){this.orbitSpeed=e,this.axis=t,this.type="OrbitOverLife",this.temp=new G,this.rotation=new ie}initialize(e){this.orbitSpeed.startGen(e.memory)}update(e,t){this.temp.copy(e.position).projectOnVector(this.axis),this.rotation.setFromAxisAngle(this.axis,this.orbitSpeed.genValue(e.memory,e.age/e.life)*t),e.position.sub(this.temp),e.position.applyQuaternion(this.rotation),e.position.add(this.temp)}frameUpdate(e){}toJSON(){return{type:this.type,orbitSpeed:this.orbitSpeed.toJSON(),axis:[this.axis.x,this.axis.y,this.axis.z]}}static fromJSON(e){return new ki(Z(e.orbitSpeed),e.axis?new G(e.axis[0],e.axis[1],e.axis[2]):void 0)}clone(){return new ki(this.orbitSpeed.clone())}reset(){}}class hs{constructor(e){this.data=e,this.next=null,this.prev=null}hasPrev(){return this.prev!==null}hasNext(){return this.next!==null}}class ou{constructor(){this.length=0,this.head=this.tail=null}isEmpty(){return this.head===null}clear(){this.length=0,this.head=this.tail=null}front(){return this.head===null?null:this.head.data}back(){return this.tail===null?null:this.tail.data}dequeue(){if(this.head){const e=this.head.data;return this.head=this.head.next,this.head?this.head.prev=null:this.tail=null,this.length--,e}}pop(){if(this.tail){const e=this.tail.data;return this.tail=this.tail.prev,this.tail?this.tail.next=null:this.head=null,this.length--,e}}queue(e){const t=new hs(e);this.tail||(this.tail=t),this.head&&(this.head.prev=t,t.next=this.head),this.head=t,this.length++}push(e){const t=new hs(e);this.head||(this.head=t),this.tail&&(this.tail.next=t,t.prev=this.tail),this.tail=t,this.length++}insertBefore(e,t){const n=new hs(t);n.next=e,n.prev=e.prev,n.prev!==null&&(n.prev.next=n),n.next.prev=n,e==this.head&&(this.head=n),this.length++}remove(e){if(this.head===null||this.tail===null)return;let t=this.head;for(e===this.head.data&&(this.head=this.head.next),e===this.tail.data&&(this.tail=this.tail.prev);t.next!==null&&t.data!==e;)t=t.next;t.data===e&&(t.prev!==null&&(t.prev.next=t.next),t.next!==null&&(t.next.prev=t.prev),this.length--)}*values(){let e=this.head;for(;e!==null;)yield e.data,e=e.next}}class au{constructor(){this.startSpeed=0,this.startColor=new at,this.startSize=new G(1,1,1),this.position=new G,this.velocity=new G,this.age=0,this.life=1,this.size=new G(1,1,1),this.speedModifier=1,this.rotation=0,this.color=new at,this.uvTile=0,this.memory=[]}get died(){return this.age>=this.life}reset(){this.memory.length=0}}class cu{constructor(e,t,n){this.position=e,this.size=t,this.color=n}}class Br{constructor(){this.startSpeed=0,this.startColor=new at,this.startSize=new G(1,1,1),this.position=new G,this.velocity=new G,this.age=0,this.life=1,this.size=new G(1,1,1),this.length=100,this.speedModifier=1,this.color=new at,this.previous=new ou,this.uvTile=0,this.memory=[]}update(){for(this.age<=this.life?this.previous.push(new cu(this.position.clone(),this.size.x,this.color.clone())):this.previous.length>0&&this.previous.dequeue();this.previous.length>this.length;)this.previous.dequeue()}get died(){return this.age>=this.life}reset(){this.memory.length=0,this.previous.clear()}}class Ri{initialize(e){this.width.startGen(e.memory)}constructor(e){this.width=e,this.type="WidthOverLength"}update(e){if(e instanceof Br){const t=e.previous.values();for(let n=0;n<e.previous.length;n++){const i=t.next();i.value.size=this.width.genValue(e.memory,(e.previous.length-n)/e.length)}}}frameUpdate(e){}toJSON(){return{type:this.type,width:this.width.toJSON()}}static fromJSON(e){return new Ri(Z(e.width))}clone(){return new Ri(this.width.clone())}reset(){}}class Ai{constructor(e,t){this.direction=e,this.magnitude=t,this.type="ApplyForce",this.memory={data:[],dataCount:0},this.magnitudeValue=this.magnitude.genValue(this.memory)}initialize(e){}update(e,t){e.velocity.addScaledVector(this.direction,this.magnitudeValue*t)}frameUpdate(e){this.magnitudeValue=this.magnitude.genValue(this.memory)}toJSON(){return{type:this.type,direction:[this.direction.x,this.direction.y,this.direction.z],magnitude:this.magnitude.toJSON()}}static fromJSON(e){var t;return new Ai(new G(e.direction[0],e.direction[1],e.direction[2]),Z((t=e.magnitude)!==null&&t!==void 0?t:e.force))}clone(){return new Ai(this.direction.clone(),this.magnitude.clone())}reset(){}}class Oi{constructor(e,t){this.center=e,this.magnitude=t,this.type="GravityForce",this.temp=new G}initialize(e){}update(e,t){this.temp.copy(this.center).sub(e.position).normalize(),e.velocity.addScaledVector(this.temp,this.magnitude/e.position.distanceToSquared(this.center)*t)}frameUpdate(e){}toJSON(){return{type:this.type,center:[this.center.x,this.center.y,this.center.z],magnitude:this.magnitude}}static fromJSON(e){return new Oi(new G(e.center[0],e.center[1],e.center[2]),e.magnitude)}clone(){return new Oi(this.center.clone(),this.magnitude)}reset(){}}class zi{constructor(e){this.angle=e,this.type="ChangeEmitDirection",this._temp=new G,this._q=new ie,this.memory={data:[],dataCount:0}}initialize(e){const t=e.velocity.length();t!=0&&(e.velocity.normalize(),e.velocity.x===0&&e.velocity.y===0?this._temp.set(0,e.velocity.z,0):this._temp.set(-e.velocity.y,e.velocity.x,0),this.angle.startGen(this.memory),this._q.setFromAxisAngle(this._temp.normalize(),this.angle.genValue(this.memory)),this._temp.copy(e.velocity),e.velocity.applyQuaternion(this._q),this._q.setFromAxisAngle(this._temp,Math.random()*Math.PI*2),e.velocity.applyQuaternion(this._q),e.velocity.setLength(t))}update(e,t){}frameUpdate(e){}toJSON(){return{type:this.type,angle:this.angle.toJSON()}}static fromJSON(e){return new zi(Z(e.angle))}clone(){return new zi(this.angle)}reset(){}}var Nn;(function(r){r[r.Death=0]="Death",r[r.Birth=1]="Birth",r[r.Frame=2]="Frame"})(Nn||(Nn={}));class Ii{constructor(e,t,n,i=Nn.Frame,s=1){this.particleSystem=e,this.useVelocityAsBasis=t,this.subParticleSystem=n,this.mode=i,this.emitProbability=s,this.type="EmitSubParticleSystem",this.q_=new ie,this.v_=new G,this.v2_=new G,this.subEmissions=new Array,this.subParticleSystem&&this.subParticleSystem.system&&(this.subParticleSystem.system.onlyUsedByOther=!0)}initialize(e){}update(e,t){this.mode===Nn.Frame?this.emit(e,t):this.mode===Nn.Birth&&e.age===0?this.emit(e,t):this.mode===Nn.Death&&e.age+t>=e.life&&this.emit(e,t)}emit(e,t){if(!this.subParticleSystem||Math.random()>this.emitProbability)return;const n=new Et;this.setMatrixFromParticle(n,e),this.subEmissions.push({burstParticleCount:0,burstParticleIndex:0,isBursting:!1,burstIndex:0,burstWaveIndex:0,time:0,waitEmiting:0,matrix:n,travelDistance:0,particle:e})}frameUpdate(e){if(this.subParticleSystem)for(let t=0;t<this.subEmissions.length;t++)if(this.subEmissions[t].time>=this.subParticleSystem.system.duration)this.subEmissions[t]=this.subEmissions[this.subEmissions.length-1],this.subEmissions.length=this.subEmissions.length-1,t--;else{const n=this.subEmissions[t];n.particle&&n.particle.age<n.particle.life?this.setMatrixFromParticle(n.matrix,n.particle):n.particle=void 0,this.subParticleSystem.system.emit(e,n,n.matrix)}}toJSON(){return{type:this.type,subParticleSystem:this.subParticleSystem?this.subParticleSystem.uuid:"",useVelocityAsBasis:this.useVelocityAsBasis,mode:this.mode,emitProbability:this.emitProbability}}static fromJSON(e,t){return new Ii(t,e.useVelocityAsBasis,e.subParticleSystem,e.mode,e.emitProbability)}clone(){return new Ii(this.particleSystem,this.useVelocityAsBasis,this.subParticleSystem,this.mode,this.emitProbability)}reset(){}setMatrixFromParticle(e,t){let n;if(t.rotation===void 0||this.useVelocityAsBasis)if(t.velocity.x===0&&t.velocity.y===0&&(t.velocity.z===1||t.velocity.z===0))e.set(1,0,0,t.position.x,0,1,0,t.position.y,0,0,1,t.position.z,0,0,0,1);else{this.v_.copy(Ho).cross(t.velocity),this.v2_.copy(t.velocity).cross(this.v_);const i=this.v_.length(),s=this.v2_.length();e.set(this.v_.x/i,this.v2_.x/s,t.velocity.x,t.position.x,this.v_.y/i,this.v2_.y/s,t.velocity.y,t.position.y,this.v_.z/i,this.v2_.z/s,t.velocity.z,t.position.z,0,0,0,1)}else t.rotation instanceof ie?n=t.rotation:(this.q_.setFromAxisAngle(Ho,t.rotation),n=this.q_),e.compose(t.position,n,ru);this.particleSystem.worldSpace||e.multiplyMatrices(this.particleSystem.emitter.matrixWorld,e)}}const lu=.5*(Math.sqrt(3)-1),$n=(3-Math.sqrt(3))/6,uu=1/3,Rt=1/6,hu=(Math.sqrt(5)-1)/4,Ne=(5-Math.sqrt(5))/20,Oe=new Float32Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]),Me=new Float32Array([0,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,1,0,1,1,1,0,1,-1,1,0,-1,1,1,0,-1,-1,-1,0,1,1,-1,0,1,-1,-1,0,-1,1,-1,0,-1,-1,1,1,0,1,1,1,0,-1,1,-1,0,1,1,-1,0,-1,-1,1,0,1,-1,1,0,-1,-1,-1,0,1,-1,-1,0,-1,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,0]);class Za{constructor(e=Math.random){const t=typeof e=="function"?e:du(e);this.p=fu(t),this.perm=new Uint8Array(512),this.permMod12=new Uint8Array(512);for(let n=0;n<512;n++)this.perm[n]=this.p[n&255],this.permMod12[n]=this.perm[n]%12}noise2D(e,t){const n=this.permMod12,i=this.perm;let s=0,a=0,o=0;const c=(e+t)*lu,l=Math.floor(e+c),h=Math.floor(t+c),d=(l+h)*$n,m=l-d,p=h-d,b=e-m,T=t-p;let g,v;b>T?(g=1,v=0):(g=0,v=1);const x=b-g+$n,_=T-v+$n,M=b-1+2*$n,C=T-1+2*$n,P=l&255,E=h&255;let z=.5-b*b-T*T;if(z>=0){const N=n[P+i[E]]*3;z*=z,s=z*z*(Oe[N]*b+Oe[N+1]*T)}let I=.5-x*x-_*_;if(I>=0){const N=n[P+g+i[E+v]]*3;I*=I,a=I*I*(Oe[N]*x+Oe[N+1]*_)}let R=.5-M*M-C*C;if(R>=0){const N=n[P+1+i[E+1]]*3;R*=R,o=R*R*(Oe[N]*M+Oe[N+1]*C)}return 70*(s+a+o)}noise3D(e,t,n){const i=this.permMod12,s=this.perm;let a,o,c,l;const h=(e+t+n)*uu,d=Math.floor(e+h),m=Math.floor(t+h),p=Math.floor(n+h),b=(d+m+p)*Rt,T=d-b,g=m-b,v=p-b,x=e-T,_=t-g,M=n-v;let C,P,E,z,I,R;x>=_?_>=M?(C=1,P=0,E=0,z=1,I=1,R=0):x>=M?(C=1,P=0,E=0,z=1,I=0,R=1):(C=0,P=0,E=1,z=1,I=0,R=1):_<M?(C=0,P=0,E=1,z=0,I=1,R=1):x<M?(C=0,P=1,E=0,z=0,I=1,R=1):(C=0,P=1,E=0,z=1,I=1,R=0);const N=x-C+Rt,O=_-P+Rt,U=M-E+Rt,F=x-z+2*Rt,J=_-I+2*Rt,$=M-R+2*Rt,K=x-1+3*Rt,W=_-1+3*Rt,me=M-1+3*Rt,ne=d&255,ue=m&255,re=p&255;let ge=.6-x*x-_*_-M*M;if(ge<0)a=0;else{const oe=i[ne+s[ue+s[re]]]*3;ge*=ge,a=ge*ge*(Oe[oe]*x+Oe[oe+1]*_+Oe[oe+2]*M)}let be=.6-N*N-O*O-U*U;if(be<0)o=0;else{const oe=i[ne+C+s[ue+P+s[re+E]]]*3;be*=be,o=be*be*(Oe[oe]*N+Oe[oe+1]*O+Oe[oe+2]*U)}let se=.6-F*F-J*J-$*$;if(se<0)c=0;else{const oe=i[ne+z+s[ue+I+s[re+R]]]*3;se*=se,c=se*se*(Oe[oe]*F+Oe[oe+1]*J+Oe[oe+2]*$)}let he=.6-K*K-W*W-me*me;if(he<0)l=0;else{const oe=i[ne+1+s[ue+1+s[re+1]]]*3;he*=he,l=he*he*(Oe[oe]*K+Oe[oe+1]*W+Oe[oe+2]*me)}return 32*(a+o+c+l)}noise4D(e,t,n,i){const s=this.perm;let a,o,c,l,h;const d=(e+t+n+i)*hu,m=Math.floor(e+d),p=Math.floor(t+d),b=Math.floor(n+d),T=Math.floor(i+d),g=(m+p+b+T)*Ne,v=m-g,x=p-g,_=b-g,M=T-g,C=e-v,P=t-x,E=n-_,z=i-M;let I=0,R=0,N=0,O=0;C>P?I++:R++,C>E?I++:N++,C>z?I++:O++,P>E?R++:N++,P>z?R++:O++,E>z?N++:O++;const U=I>=3?1:0,F=R>=3?1:0,J=N>=3?1:0,$=O>=3?1:0,K=I>=2?1:0,W=R>=2?1:0,me=N>=2?1:0,ne=O>=2?1:0,ue=I>=1?1:0,re=R>=1?1:0,ge=N>=1?1:0,be=O>=1?1:0,se=C-U+Ne,he=P-F+Ne,oe=E-J+Ne,Xe=z-$+Ne,Ve=C-K+2*Ne,Je=P-W+2*Ne,Ye=E-me+2*Ne,xe=z-ne+2*Ne,ye=C-ue+3*Ne,ae=P-re+3*Ne,ut=E-ge+3*Ne,ke=z-be+3*Ne,fe=C-1+4*Ne,it=P-1+4*Ne,vt=E-1+4*Ne,St=z-1+4*Ne,rt=m&255,xt=p&255,ht=b&255,ft=T&255;let _t=.6-C*C-P*P-E*E-z*z;if(_t<0)a=0;else{const Q=s[rt+s[xt+s[ht+s[ft]]]]%32*4;_t*=_t,a=_t*_t*(Me[Q]*C+Me[Q+1]*P+Me[Q+2]*E+Me[Q+3]*z)}let Re=.6-se*se-he*he-oe*oe-Xe*Xe;if(Re<0)o=0;else{const Q=s[rt+U+s[xt+F+s[ht+J+s[ft+$]]]]%32*4;Re*=Re,o=Re*Re*(Me[Q]*se+Me[Q+1]*he+Me[Q+2]*oe+Me[Q+3]*Xe)}let Ze=.6-Ve*Ve-Je*Je-Ye*Ye-xe*xe;if(Ze<0)c=0;else{const Q=s[rt+K+s[xt+W+s[ht+me+s[ft+ne]]]]%32*4;Ze*=Ze,c=Ze*Ze*(Me[Q]*Ve+Me[Q+1]*Je+Me[Q+2]*Ye+Me[Q+3]*xe)}let ct=.6-ye*ye-ae*ae-ut*ut-ke*ke;if(ct<0)l=0;else{const Q=s[rt+ue+s[xt+re+s[ht+ge+s[ft+be]]]]%32*4;ct*=ct,l=ct*ct*(Me[Q]*ye+Me[Q+1]*ae+Me[Q+2]*ut+Me[Q+3]*ke)}let Ke=.6-fe*fe-it*it-vt*vt-St*St;if(Ke<0)h=0;else{const Q=s[rt+1+s[xt+1+s[ht+1+s[ft+1]]]]%32*4;Ke*=Ke,h=Ke*Ke*(Me[Q]*fe+Me[Q+1]*it+Me[Q+2]*vt+Me[Q+3]*St)}return 27*(a+o+c+l+h)}}function fu(r){const e=new Uint8Array(256);for(let t=0;t<256;t++)e[t]=t;for(let t=0;t<255;t++){const n=t+~~(r()*(256-t)),i=e[t];e[t]=e[n],e[n]=i}return e}function du(r){let e=0,t=0,n=0,i=1;const s=pu();return e=s(" "),t=s(" "),n=s(" "),e-=s(r),e<0&&(e+=1),t-=s(r),t<0&&(t+=1),n-=s(r),n<0&&(n+=1),function(){const a=2091639*e+i*23283064365386963e-26;return e=t,t=n,n=a-(i=a|0)}}function pu(){let r=4022871197;return function(e){e=e.toString();for(let t=0;t<e.length;t++){r+=e.charCodeAt(t);let n=.02519603282416938*r;r=n>>>0,n-=r,n*=r,r=n>>>0,n-=r,r+=n*4294967296}return(r>>>0)*23283064365386963e-26}}class Bi{constructor(e,t,n,i){this.scale=e,this.octaves=t,this.velocityMultiplier=n,this.timeScale=i,this.type="TurbulenceField",this.generator=new Za,this.timeOffset=new G,this.temp=new G,this.temp2=new G,this.timeOffset.x=Math.random()/this.scale.x*this.timeScale.x,this.timeOffset.y=Math.random()/this.scale.y*this.timeScale.y,this.timeOffset.z=Math.random()/this.scale.z*this.timeScale.z}initialize(e){}update(e,t){const n=e.position.x/this.scale.x,i=e.position.y/this.scale.y,s=e.position.z/this.scale.z;this.temp.set(0,0,0);let a=1;for(let o=0;o<this.octaves;o++)this.temp2.set(this.generator.noise4D(n*a,i*a,s*a,this.timeOffset.x*a)/a,this.generator.noise4D(n*a,i*a,s*a,this.timeOffset.y*a)/a,this.generator.noise4D(n*a,i*a,s*a,this.timeOffset.z*a)/a),this.temp.add(this.temp2),a*=2;this.temp.multiply(this.velocityMultiplier),e.velocity.addScaledVector(this.temp,t)}toJSON(){return{type:this.type,scale:[this.scale.x,this.scale.y,this.scale.z],octaves:this.octaves,velocityMultiplier:[this.velocityMultiplier.x,this.velocityMultiplier.y,this.velocityMultiplier.z],timeScale:[this.timeScale.x,this.timeScale.y,this.timeScale.z]}}frameUpdate(e){this.timeOffset.x+=e*this.timeScale.x,this.timeOffset.y+=e*this.timeScale.y,this.timeOffset.z+=e*this.timeScale.z}static fromJSON(e){return new Bi(new G(e.scale[0],e.scale[1],e.scale[2]),e.octaves,new G(e.velocityMultiplier[0],e.velocityMultiplier[1],e.velocityMultiplier[2]),new G(e.timeScale[0],e.timeScale[1],e.timeScale[2]))}clone(){return new Bi(this.scale.clone(),this.octaves,this.velocityMultiplier.clone(),this.timeScale.clone())}reset(){}}const At=[],fs=new G,ds=new ie;class Ni{constructor(e,t,n=new ee(1),i=new ee(0)){if(this.frequency=e,this.power=t,this.positionAmount=n,this.rotationAmount=i,this.type="Noise",this.duration=0,At.length===0)for(let s=0;s<100;s++)At.push(new Za)}initialize(e){e.lastPosNoise=new G,typeof e.rotation=="number"?e.lastRotNoise=0:e.lastRotNoise=new ie,e.generatorIndex=[nr(0,100),nr(0,100),nr(0,100),nr(0,100)],this.positionAmount.startGen(e.memory),this.rotationAmount.startGen(e.memory),this.frequency.startGen(e.memory),this.power.startGen(e.memory)}update(e,t){let n=this.frequency.genValue(e.memory,e.age/e.life),i=this.power.genValue(e.memory,e.age/e.life),s=this.positionAmount.genValue(e.memory,e.age/e.life),a=this.rotationAmount.genValue(e.memory,e.age/e.life);s>0&&e.lastPosNoise!==void 0&&(e.position.sub(e.lastPosNoise),fs.set(At[e.generatorIndex[0]].noise2D(0,e.age*n)*i*s,At[e.generatorIndex[1]].noise2D(0,e.age*n)*i*s,At[e.generatorIndex[2]].noise2D(0,e.age*n)*i*s),e.position.add(fs),e.lastPosNoise.copy(fs)),a>0&&e.lastRotNoise!==void 0&&(typeof e.rotation=="number"?(e.rotation-=e.lastRotNoise,e.rotation+=At[e.generatorIndex[3]].noise2D(0,e.age*n)*Math.PI*i*a):(e.lastRotNoise.invert(),e.rotation.multiply(e.lastRotNoise),ds.set(At[e.generatorIndex[0]].noise2D(0,e.age*n)*i*a,At[e.generatorIndex[1]].noise2D(0,e.age*n)*i*a,At[e.generatorIndex[2]].noise2D(0,e.age*n)*i*a,At[e.generatorIndex[3]].noise2D(0,e.age*n)*i*a).normalize(),e.rotation.multiply(ds),e.lastRotNoise.copy(ds)))}toJSON(){return{type:this.type,frequency:this.frequency.toJSON(),power:this.power.toJSON(),positionAmount:this.positionAmount.toJSON(),rotationAmount:this.rotationAmount.toJSON()}}frameUpdate(e){this.duration+=e}static fromJSON(e){return new Ni(Z(e.frequency),Z(e.power),Z(e.positionAmount),Z(e.rotationAmount))}clone(){return new Ni(this.frequency.clone(),this.power.clone(),this.positionAmount.clone(),this.rotationAmount.clone())}reset(){}}class Ui{constructor(e,t){this.color=e,this.speedRange=t,this.type="ColorBySpeed"}initialize(e){this.color.startGen(e.memory)}update(e,t){const n=(e.startSpeed-this.speedRange.a)/(this.speedRange.b-this.speedRange.a);this.color.genColor(e.memory,e.color,n),e.color.x*=e.startColor.x,e.color.y*=e.startColor.y,e.color.z*=e.startColor.z,e.color.w*=e.startColor.w}frameUpdate(e){}toJSON(){return{type:this.type,color:this.color.toJSON(),speedRange:this.speedRange.toJSON()}}static fromJSON(e){return new Ui(io(e.color),Sn.fromJSON(e.speedRange))}clone(){return new Ui(this.color.clone(),this.speedRange.clone())}reset(){}}class Di{initialize(e){this.size.startGen(e.memory)}constructor(e,t){this.size=e,this.speedRange=t,this.type="SizeBySpeed"}update(e){const t=(e.startSpeed-this.speedRange.a)/(this.speedRange.b-this.speedRange.a);this.size instanceof xn?this.size.genValue(e.memory,e.size,t).multiply(e.startSize):e.size.copy(e.startSize).multiplyScalar(this.size.genValue(e.memory,t))}toJSON(){return{type:this.type,size:this.size.toJSON(),speedRange:this.speedRange.toJSON()}}static fromJSON(e){return new Di(Ir(e.size),Sn.fromJSON(e.speedRange))}frameUpdate(e){}clone(){return new Di(this.size.clone(),this.speedRange.clone())}reset(){}}class Li{constructor(e,t){this.angularVelocity=e,this.speedRange=t,this.type="RotationBySpeed",this.tempQuat=new ie}initialize(e){typeof e.rotation=="number"&&this.angularVelocity.startGen(e.memory)}update(e,t){if(typeof e.rotation=="number"){const n=(e.startSpeed-this.speedRange.a)/(this.speedRange.b-this.speedRange.a);e.rotation+=t*this.angularVelocity.genValue(e.memory,n)}}toJSON(){return{type:this.type,angularVelocity:this.angularVelocity.toJSON(),speedRange:this.speedRange.toJSON()}}static fromJSON(e){return new Li(Z(e.angularVelocity),Sn.fromJSON(e.speedRange))}frameUpdate(e){}clone(){return new Li(this.angularVelocity.clone(),this.speedRange.clone())}reset(){}}class Fi{initialize(e){this.speed.startGen(e.memory)}constructor(e,t){this.speed=e,this.dampen=t,this.type="LimitSpeedOverLife"}update(e,t){let n=e.velocity.length(),i=this.speed.genValue(e.memory,e.age/e.life);if(n>i){const s=(n-i)/n;e.velocity.multiplyScalar(1-s*this.dampen*t*20)}}toJSON(){return{type:this.type,speed:this.speed.toJSON(),dampen:this.dampen}}static fromJSON(e){return new Fi(Z(e.speed),e.dampen)}frameUpdate(e){}clone(){return new Fi(this.speed.clone(),this.dampen)}reset(){}}const Nr={ApplyForce:{type:"ApplyForce",constructor:Ai,params:[["direction",["vec3"]],["magnitude",["value"]]],loadJSON:Ai.fromJSON},Noise:{type:"Noise",constructor:Ni,params:[["frequency",["value"]],["power",["value"]],["positionAmount",["value"]],["rotationAmount",["value"]]],loadJSON:Ni.fromJSON},TurbulenceField:{type:"TurbulenceField",constructor:Bi,params:[["scale",["vec3"]],["octaves",["number"]],["velocityMultiplier",["vec3"]],["timeScale",["vec3"]]],loadJSON:Bi.fromJSON},GravityForce:{type:"GravityForce",constructor:Oi,params:[["center",["vec3"]],["magnitude",["number"]]],loadJSON:Oi.fromJSON},ColorOverLife:{type:"ColorOverLife",constructor:bi,params:[["color",["colorFunc"]]],loadJSON:bi.fromJSON},RotationOverLife:{type:"RotationOverLife",constructor:Ti,params:[["angularVelocity",["value","valueFunc"]]],loadJSON:Ti.fromJSON},Rotation3DOverLife:{type:"Rotation3DOverLife",constructor:Mi,params:[["angularVelocity",["rotationFunc"]]],loadJSON:Mi.fromJSON},SizeOverLife:{type:"SizeOverLife",constructor:wi,params:[["size",["value","valueFunc","vec3Func"]]],loadJSON:wi.fromJSON},ColorBySpeed:{type:"ColorBySpeed",constructor:Ui,params:[["color",["colorFunc"]],["speedRange",["range"]]],loadJSON:Ui.fromJSON},RotationBySpeed:{type:"RotationBySpeed",constructor:Li,params:[["angularVelocity",["value","valueFunc"]],["speedRange",["range"]]],loadJSON:Li.fromJSON},SizeBySpeed:{type:"SizeBySpeed",constructor:Di,params:[["size",["value","valueFunc","vec3Func"]],["speedRange",["range"]]],loadJSON:Di.fromJSON},SpeedOverLife:{type:"SpeedOverLife",constructor:Pi,params:[["speed",["value","valueFunc"]]],loadJSON:Pi.fromJSON},FrameOverLife:{type:"FrameOverLife",constructor:Ei,params:[["frame",["value","valueFunc"]]],loadJSON:Ei.fromJSON},ForceOverLife:{type:"ForceOverLife",constructor:Ci,params:[["x",["value","valueFunc"]],["y",["value","valueFunc"]],["z",["value","valueFunc"]]],loadJSON:Ci.fromJSON},OrbitOverLife:{type:"OrbitOverLife",constructor:ki,params:[["orbitSpeed",["value","valueFunc"]],["axis",["vec3"]]],loadJSON:ki.fromJSON},WidthOverLength:{type:"WidthOverLength",constructor:Ri,params:[["width",["value","valueFunc"]]],loadJSON:Ri.fromJSON},ChangeEmitDirection:{type:"ChangeEmitDirection",constructor:zi,params:[["angle",["value"]]],loadJSON:zi.fromJSON},EmitSubParticleSystem:{type:"EmitSubParticleSystem",constructor:Ii,params:[["particleSystem",["self"]],["useVelocityAsBasis",["boolean"]],["subParticleSystem",["particleSystem"]],["mode",["number"]],["emitProbability",["number"]]],loadJSON:Ii.fromJSON},LimitSpeedOverLife:{type:"LimitSpeedOverLife",constructor:Fi,params:[["speed",["value","valueFunc"]],["dampen",["number"]]],loadJSON:Fi.fromJSON}};function mu(r,e){return Nr[r.type]?Nr[r.type].loadJSON(r,e):null}const yu=[];function gu(r){if(!yu.find(t=>t.id===r.id)){for(const t of r.emitterShapes)Is[t.type]||(Is[t.type]=t);for(const t of r.behaviors)Nr[t.type]||(Nr[t.type]=t)}}var vu=`
1
+ "use strict";const A=require("./three.umd.cjs"),ml=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function yl(r){return typeof r=="string"&&ml.test(r)}const Le=[];for(let r=0;r<256;++r)Le.push((r+256).toString(16).slice(1));function gl(r,e=0){return Le[r[e+0]]+Le[r[e+1]]+Le[r[e+2]]+Le[r[e+3]]+"-"+Le[r[e+4]]+Le[r[e+5]]+"-"+Le[r[e+6]]+Le[r[e+7]]+"-"+Le[r[e+8]]+Le[r[e+9]]+"-"+Le[r[e+10]]+Le[r[e+11]]+Le[r[e+12]]+Le[r[e+13]]+Le[r[e+14]]+Le[r[e+15]]}function vl(r){if(!yl(r))throw TypeError("Invalid UUID");let e;const t=new Uint8Array(16);return t[0]=(e=parseInt(r.slice(0,8),16))>>>24,t[1]=e>>>16&255,t[2]=e>>>8&255,t[3]=e&255,t[4]=(e=parseInt(r.slice(9,13),16))>>>8,t[5]=e&255,t[6]=(e=parseInt(r.slice(14,18),16))>>>8,t[7]=e&255,t[8]=(e=parseInt(r.slice(19,23),16))>>>8,t[9]=e&255,t[10]=(e=parseInt(r.slice(24,36),16))/1099511627776&255,t[11]=e/4294967296&255,t[12]=e>>>24&255,t[13]=e>>>16&255,t[14]=e>>>8&255,t[15]=e&255,t}function Sl(r){r=unescape(encodeURIComponent(r));const e=[];for(let t=0;t<r.length;++t)e.push(r.charCodeAt(t));return e}const xl="6ba7b810-9dad-11d1-80b4-00c04fd430c8",_l="6ba7b811-9dad-11d1-80b4-00c04fd430c8";function bl(r,e,t){function n(i,s,a,o){var c;if(typeof i=="string"&&(i=Sl(i)),typeof s=="string"&&(s=vl(s)),((c=s)===null||c===void 0?void 0:c.length)!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let l=new Uint8Array(16+i.length);if(l.set(s),l.set(i,s.length),l=t(l),l[6]=l[6]&15|e,l[8]=l[8]&63|128,a){o=o||0;for(let h=0;h<16;++h)a[o+h]=l[h];return a}return gl(l)}try{n.name=r}catch{}return n.DNS=xl,n.URL=_l,n}function Tl(r,e,t,n){switch(r){case 0:return e&t^~e&n;case 1:return e^t^n;case 2:return e&t^e&n^t&n;case 3:return e^t^n}}function os(r,e){return r<<e|r>>>32-e}function Ml(r){const e=[1518500249,1859775393,2400959708,3395469782],t=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof r=="string"){const a=unescape(encodeURIComponent(r));r=[];for(let o=0;o<a.length;++o)r.push(a.charCodeAt(o))}else Array.isArray(r)||(r=Array.prototype.slice.call(r));r.push(128);const n=r.length/4+2,i=Math.ceil(n/16),s=new Array(i);for(let a=0;a<i;++a){const o=new Uint32Array(16);for(let c=0;c<16;++c)o[c]=r[a*64+c*4]<<24|r[a*64+c*4+1]<<16|r[a*64+c*4+2]<<8|r[a*64+c*4+3];s[a]=o}s[i-1][14]=(r.length-1)*8/Math.pow(2,32),s[i-1][14]=Math.floor(s[i-1][14]),s[i-1][15]=(r.length-1)*8&4294967295;for(let a=0;a<i;++a){const o=new Uint32Array(80);for(let p=0;p<16;++p)o[p]=s[a][p];for(let p=16;p<80;++p)o[p]=os(o[p-3]^o[p-8]^o[p-14]^o[p-16],1);let c=t[0],l=t[1],h=t[2],d=t[3],m=t[4];for(let p=0;p<80;++p){const b=Math.floor(p/20),T=os(c,5)+Tl(b,l,h,d)+m+e[b]+o[p]>>>0;m=d,d=h,h=os(l,30)>>>0,l=c,c=T}t[0]=t[0]+c>>>0,t[1]=t[1]+l>>>0,t[2]=t[2]+h>>>0,t[3]=t[3]+d>>>0,t[4]=t[4]+m>>>0}return[t[0]>>24&255,t[0]>>16&255,t[0]>>8&255,t[0]&255,t[1]>>24&255,t[1]>>16&255,t[1]>>8&255,t[1]&255,t[2]>>24&255,t[2]>>16&255,t[2]>>8&255,t[2]&255,t[3]>>24&255,t[3]>>16&255,t[3]>>8&255,t[3]&255,t[4]>>24&255,t[4]>>16&255,t[4]>>8&255,t[4]&255]}const Cl=bl("v5",80,Ml),as=2,zt=4,Wt=4,Ga=4,Qt=new Int32Array(2),Fo=new Float32Array(Qt.buffer),Vo=new Float64Array(Qt.buffer),Ki=new Uint16Array(new Uint8Array([1,0]).buffer)[0]===1;class Ht{constructor(e,t){this.low=e|0,this.high=t|0}static create(e,t){return e==0&&t==0?Ht.ZERO:new Ht(e,t)}toFloat64(){return(this.low>>>0)+this.high*4294967296}equals(e){return this.low==e.low&&this.high==e.high}}Ht.ZERO=new Ht(0,0);var zs;(function(r){r[r.UTF8_BYTES=1]="UTF8_BYTES",r[r.UTF16_STRING=2]="UTF16_STRING"})(zs||(zs={}));class li{constructor(e){this.bytes_=e,this.position_=0}static allocate(e){return new li(new Uint8Array(e))}clear(){this.position_=0}bytes(){return this.bytes_}position(){return this.position_}setPosition(e){this.position_=e}capacity(){return this.bytes_.length}readInt8(e){return this.readUint8(e)<<24>>24}readUint8(e){return this.bytes_[e]}readInt16(e){return this.readUint16(e)<<16>>16}readUint16(e){return this.bytes_[e]|this.bytes_[e+1]<<8}readInt32(e){return this.bytes_[e]|this.bytes_[e+1]<<8|this.bytes_[e+2]<<16|this.bytes_[e+3]<<24}readUint32(e){return this.readInt32(e)>>>0}readInt64(e){return new Ht(this.readInt32(e),this.readInt32(e+4))}readUint64(e){return new Ht(this.readUint32(e),this.readUint32(e+4))}readFloat32(e){return Qt[0]=this.readInt32(e),Fo[0]}readFloat64(e){return Qt[Ki?0:1]=this.readInt32(e),Qt[Ki?1:0]=this.readInt32(e+4),Vo[0]}writeInt8(e,t){this.bytes_[e]=t}writeUint8(e,t){this.bytes_[e]=t}writeInt16(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8}writeUint16(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8}writeInt32(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8,this.bytes_[e+2]=t>>16,this.bytes_[e+3]=t>>24}writeUint32(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8,this.bytes_[e+2]=t>>16,this.bytes_[e+3]=t>>24}writeInt64(e,t){this.writeInt32(e,t.low),this.writeInt32(e+4,t.high)}writeUint64(e,t){this.writeUint32(e,t.low),this.writeUint32(e+4,t.high)}writeFloat32(e,t){Fo[0]=t,this.writeInt32(e,Qt[0])}writeFloat64(e,t){Vo[0]=t,this.writeInt32(e,Qt[Ki?0:1]),this.writeInt32(e+4,Qt[Ki?1:0])}getBufferIdentifier(){if(this.bytes_.length<this.position_+zt+Wt)throw new Error("FlatBuffers: ByteBuffer is too short to contain an identifier.");let e="";for(let t=0;t<Wt;t++)e+=String.fromCharCode(this.readInt8(this.position_+zt+t));return e}__offset(e,t){const n=e-this.readInt32(e);return t<this.readInt16(n)?this.readInt16(n+t):0}__union(e,t){return e.bb_pos=t+this.readInt32(t),e.bb=this,e}__string(e,t){e+=this.readInt32(e);const n=this.readInt32(e);let i="",s=0;if(e+=zt,t===zs.UTF8_BYTES)return this.bytes_.subarray(e,e+n);for(;s<n;){let a;const o=this.readUint8(e+s++);if(o<192)a=o;else{const c=this.readUint8(e+s++);if(o<224)a=(o&31)<<6|c&63;else{const l=this.readUint8(e+s++);if(o<240)a=(o&15)<<12|(c&63)<<6|l&63;else{const h=this.readUint8(e+s++);a=(o&7)<<18|(c&63)<<12|(l&63)<<6|h&63}}}a<65536?i+=String.fromCharCode(a):(a-=65536,i+=String.fromCharCode((a>>10)+55296,(a&1023)+56320))}return i}__union_with_string(e,t){return typeof e=="string"?this.__string(t):this.__union(e,t)}__indirect(e){return e+this.readInt32(e)}__vector(e){return e+this.readInt32(e)+zt}__vector_len(e){return this.readInt32(e+this.readInt32(e))}__has_identifier(e){if(e.length!=Wt)throw new Error("FlatBuffers: file identifier must be length "+Wt);for(let t=0;t<Wt;t++)if(e.charCodeAt(t)!=this.readInt8(this.position()+zt+t))return!1;return!0}createLong(e,t){return Ht.create(e,t)}createScalarList(e,t){const n=[];for(let i=0;i<t;++i)e(i)!==null&&n.push(e(i));return n}createObjList(e,t){const n=[];for(let i=0;i<t;++i){const s=e(i);s!==null&&n.push(s.unpack())}return n}}class no{constructor(e){this.minalign=1,this.vtable=null,this.vtable_in_use=0,this.isNested=!1,this.object_start=0,this.vtables=[],this.vector_num_elems=0,this.force_defaults=!1,this.string_maps=null;let t;e?t=e:t=1024,this.bb=li.allocate(t),this.space=t}clear(){this.bb.clear(),this.space=this.bb.capacity(),this.minalign=1,this.vtable=null,this.vtable_in_use=0,this.isNested=!1,this.object_start=0,this.vtables=[],this.vector_num_elems=0,this.force_defaults=!1,this.string_maps=null}forceDefaults(e){this.force_defaults=e}dataBuffer(){return this.bb}asUint8Array(){return this.bb.bytes().subarray(this.bb.position(),this.bb.position()+this.offset())}prep(e,t){e>this.minalign&&(this.minalign=e);const n=~(this.bb.capacity()-this.space+t)+1&e-1;for(;this.space<n+e+t;){const i=this.bb.capacity();this.bb=no.growByteBuffer(this.bb),this.space+=this.bb.capacity()-i}this.pad(n)}pad(e){for(let t=0;t<e;t++)this.bb.writeInt8(--this.space,0)}writeInt8(e){this.bb.writeInt8(this.space-=1,e)}writeInt16(e){this.bb.writeInt16(this.space-=2,e)}writeInt32(e){this.bb.writeInt32(this.space-=4,e)}writeInt64(e){this.bb.writeInt64(this.space-=8,e)}writeFloat32(e){this.bb.writeFloat32(this.space-=4,e)}writeFloat64(e){this.bb.writeFloat64(this.space-=8,e)}addInt8(e){this.prep(1,0),this.writeInt8(e)}addInt16(e){this.prep(2,0),this.writeInt16(e)}addInt32(e){this.prep(4,0),this.writeInt32(e)}addInt64(e){this.prep(8,0),this.writeInt64(e)}addFloat32(e){this.prep(4,0),this.writeFloat32(e)}addFloat64(e){this.prep(8,0),this.writeFloat64(e)}addFieldInt8(e,t,n){(this.force_defaults||t!=n)&&(this.addInt8(t),this.slot(e))}addFieldInt16(e,t,n){(this.force_defaults||t!=n)&&(this.addInt16(t),this.slot(e))}addFieldInt32(e,t,n){(this.force_defaults||t!=n)&&(this.addInt32(t),this.slot(e))}addFieldInt64(e,t,n){(this.force_defaults||!t.equals(n))&&(this.addInt64(t),this.slot(e))}addFieldFloat32(e,t,n){(this.force_defaults||t!=n)&&(this.addFloat32(t),this.slot(e))}addFieldFloat64(e,t,n){(this.force_defaults||t!=n)&&(this.addFloat64(t),this.slot(e))}addFieldOffset(e,t,n){(this.force_defaults||t!=n)&&(this.addOffset(t),this.slot(e))}addFieldStruct(e,t,n){t!=n&&(this.nested(t),this.slot(e))}nested(e){if(e!=this.offset())throw new Error("FlatBuffers: struct must be serialized inline.")}notNested(){if(this.isNested)throw new Error("FlatBuffers: object serialization must not be nested.")}slot(e){this.vtable!==null&&(this.vtable[e]=this.offset())}offset(){return this.bb.capacity()-this.space}static growByteBuffer(e){const t=e.capacity();if(t&3221225472)throw new Error("FlatBuffers: cannot grow buffer beyond 2 gigabytes.");const n=t<<1,i=li.allocate(n);return i.setPosition(n-t),i.bytes().set(e.bytes(),n-t),i}addOffset(e){this.prep(zt,0),this.writeInt32(this.offset()-e+zt)}startObject(e){this.notNested(),this.vtable==null&&(this.vtable=[]),this.vtable_in_use=e;for(let t=0;t<e;t++)this.vtable[t]=0;this.isNested=!0,this.object_start=this.offset()}endObject(){if(this.vtable==null||!this.isNested)throw new Error("FlatBuffers: endObject called without startObject");this.addInt32(0);const e=this.offset();let t=this.vtable_in_use-1;for(;t>=0&&this.vtable[t]==0;t--);const n=t+1;for(;t>=0;t--)this.addInt16(this.vtable[t]!=0?e-this.vtable[t]:0);const i=2;this.addInt16(e-this.object_start);const s=(n+i)*as;this.addInt16(s);let a=0;const o=this.space;e:for(t=0;t<this.vtables.length;t++){const c=this.bb.capacity()-this.vtables[t];if(s==this.bb.readInt16(c)){for(let l=as;l<s;l+=as)if(this.bb.readInt16(o+l)!=this.bb.readInt16(c+l))continue e;a=this.vtables[t];break}}return a?(this.space=this.bb.capacity()-e,this.bb.writeInt32(this.space,a-e)):(this.vtables.push(this.offset()),this.bb.writeInt32(this.bb.capacity()-e,this.offset()-e)),this.isNested=!1,e}finish(e,t,n){const i=n?Ga:0;if(t){const s=t;if(this.prep(this.minalign,zt+Wt+i),s.length!=Wt)throw new Error("FlatBuffers: file identifier must be length "+Wt);for(let a=Wt-1;a>=0;a--)this.writeInt8(s.charCodeAt(a))}this.prep(this.minalign,zt+i),this.addOffset(e),i&&this.addInt32(this.bb.capacity()-this.space),this.bb.setPosition(this.space)}finishSizePrefixed(e,t){this.finish(e,t,!0)}requiredField(e,t){const n=this.bb.capacity()-e,i=n-this.bb.readInt32(n);if(!(this.bb.readInt16(i+t)!=0))throw new Error("FlatBuffers: field "+t+" must be set")}startVector(e,t,n){this.notNested(),this.vector_num_elems=t,this.prep(zt,e*t),this.prep(n,e*t)}endVector(){return this.writeInt32(this.vector_num_elems),this.offset()}createSharedString(e){if(!e)return 0;if(this.string_maps||(this.string_maps=new Map),this.string_maps.has(e))return this.string_maps.get(e);const t=this.createString(e);return this.string_maps.set(e,t),t}createString(e){if(!e)return 0;let t;if(e instanceof Uint8Array)t=e;else{t=[];let n=0;for(;n<e.length;){let i;const s=e.charCodeAt(n++);if(s<55296||s>=56320)i=s;else{const a=e.charCodeAt(n++);i=(s<<10)+a+-56613888}i<128?t.push(i):(i<2048?t.push(i>>6&31|192):(i<65536?t.push(i>>12&15|224):t.push(i>>18&7|240,i>>12&63|128),t.push(i>>6&63|128)),t.push(i&63|128))}}this.addInt8(0),this.startVector(1,t.length,1),this.bb.setPosition(this.space-=t.length);for(let n=0,i=this.space,s=this.bb.bytes();n<t.length;n++)s[i++]=t[n];return this.endVector()}createLong(e,t){return Ht.create(e,t)}createObjectOffset(e){return e===null?0:typeof e=="string"?this.createString(e):e.pack(this)}createObjectOffsetList(e){const t=[];for(let n=0;n<e.length;++n){const i=e[n];if(i!==null)t.push(this.createObjectOffset(i));else throw new Error("FlatBuffers: Argument for createObjectOffsetList cannot contain null.")}return t}createStructOffsetList(e,t){return t(this,e.length),this.createObjectOffsetList(e),this.endVector()}}const ze={ComponentState:Object.freeze({DEFAULT:"default",TOUCHED:"touched",PRESSED:"pressed"}),ComponentProperty:Object.freeze({BUTTON:"button",X_AXIS:"xAxis",Y_AXIS:"yAxis",STATE:"state"}),ButtonTouchThreshold:.05,AxisTouchThreshold:.1,VisualResponseProperty:Object.freeze({TRANSFORM:"transform",VISIBILITY:"visibility"})};async function Wa(r){const e=await fetch(r);if(e.ok)return e.json();throw new Error(e.statusText)}async function wl(r){return await Wa(`${r}/profilesList.json`)}async function Pl(r,e,t=null,n=!0){if(!r)throw new Error("No xrInputSource supplied");const i=await wl(e);let s;if(r.profiles.some(c=>{const l=i[c];return l&&(s={profileId:c,profilePath:`${e}/${l.path}`,deprecated:!!l.deprecated}),!!s}),!s){if(!t)throw new Error("No matching profile name found");const c=i[t];if(!c)throw new Error(`No matching profile name found and default profile "${t}" missing.`);s={profileId:t,profilePath:`${e}/${c.path}`,deprecated:!!c.deprecated}}const a=await Wa(s.profilePath);let o;if(n){let c;if(r.handedness==="any"?c=a.layouts[Object.keys(a.layouts)[0]]:c=a.layouts[r.handedness],!c)throw new Error(`No matching handedness, ${r.handedness}, in profile ${s.profileId}`);c.assetPath&&(o=s.profilePath.replace("profile.json",c.assetPath))}return{profile:a,assetPath:o}}const El={xAxis:0,yAxis:0,button:0,state:ze.ComponentState.DEFAULT};function kl(r=0,e=0){let t=r,n=e;if(Math.sqrt(r*r+e*e)>1){const a=Math.atan2(e,r);t=Math.cos(a),n=Math.sin(a)}return{normalizedXAxis:t*.5+.5,normalizedYAxis:n*.5+.5}}class Rl{constructor(e){this.componentProperty=e.componentProperty,this.states=e.states,this.valueNodeName=e.valueNodeName,this.valueNodeProperty=e.valueNodeProperty,this.valueNodeProperty===ze.VisualResponseProperty.TRANSFORM&&(this.minNodeName=e.minNodeName,this.maxNodeName=e.maxNodeName),this.value=0,this.updateFromComponent(El)}updateFromComponent({xAxis:e,yAxis:t,button:n,state:i}){const{normalizedXAxis:s,normalizedYAxis:a}=kl(e,t);switch(this.componentProperty){case ze.ComponentProperty.X_AXIS:this.value=this.states.includes(i)?s:.5;break;case ze.ComponentProperty.Y_AXIS:this.value=this.states.includes(i)?a:.5;break;case ze.ComponentProperty.BUTTON:this.value=this.states.includes(i)?n:0;break;case ze.ComponentProperty.STATE:this.valueNodeProperty===ze.VisualResponseProperty.VISIBILITY?this.value=this.states.includes(i):this.value=this.states.includes(i)?1:0;break;default:throw new Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`)}}}class Al{constructor(e,t){if(!e||!t||!t.visualResponses||!t.gamepadIndices||Object.keys(t.gamepadIndices).length===0)throw new Error("Invalid arguments supplied");this.id=e,this.type=t.type,this.rootNodeName=t.rootNodeName,this.touchPointNodeName=t.touchPointNodeName,this.visualResponses={},Object.keys(t.visualResponses).forEach(n=>{const i=new Rl(t.visualResponses[n]);this.visualResponses[n]=i}),this.gamepadIndices=Object.assign({},t.gamepadIndices),this.values={state:ze.ComponentState.DEFAULT,button:this.gamepadIndices.button!==void 0?0:void 0,xAxis:this.gamepadIndices.xAxis!==void 0?0:void 0,yAxis:this.gamepadIndices.yAxis!==void 0?0:void 0}}get data(){return{id:this.id,...this.values}}updateFromGamepad(e){if(this.values.state=ze.ComponentState.DEFAULT,this.gamepadIndices.button!==void 0&&e.buttons.length>this.gamepadIndices.button){const t=e.buttons[this.gamepadIndices.button];this.values.button=t.value,this.values.button=this.values.button<0?0:this.values.button,this.values.button=this.values.button>1?1:this.values.button,t.pressed||this.values.button===1?this.values.state=ze.ComponentState.PRESSED:(t.touched||this.values.button>ze.ButtonTouchThreshold)&&(this.values.state=ze.ComponentState.TOUCHED)}this.gamepadIndices.xAxis!==void 0&&e.axes.length>this.gamepadIndices.xAxis&&(this.values.xAxis=e.axes[this.gamepadIndices.xAxis],this.values.xAxis=this.values.xAxis<-1?-1:this.values.xAxis,this.values.xAxis=this.values.xAxis>1?1:this.values.xAxis,this.values.state===ze.ComponentState.DEFAULT&&Math.abs(this.values.xAxis)>ze.AxisTouchThreshold&&(this.values.state=ze.ComponentState.TOUCHED)),this.gamepadIndices.yAxis!==void 0&&e.axes.length>this.gamepadIndices.yAxis&&(this.values.yAxis=e.axes[this.gamepadIndices.yAxis],this.values.yAxis=this.values.yAxis<-1?-1:this.values.yAxis,this.values.yAxis=this.values.yAxis>1?1:this.values.yAxis,this.values.state===ze.ComponentState.DEFAULT&&Math.abs(this.values.yAxis)>ze.AxisTouchThreshold&&(this.values.state=ze.ComponentState.TOUCHED)),Object.values(this.visualResponses).forEach(t=>{t.updateFromComponent(this.values)})}}class Ol{constructor(e,t,n){if(!e)throw new Error("No xrInputSource supplied");if(!t)throw new Error("No profile supplied");this.xrInputSource=e,this.assetUrl=n,this.id=t.profileId,this.layoutDescription=t.layouts[e.handedness],this.components={},Object.keys(this.layoutDescription.components).forEach(i=>{const s=this.layoutDescription.components[i];this.components[i]=new Al(i,s)}),this.updateFromGamepad()}get gripSpace(){return this.xrInputSource.gripSpace}get targetRaySpace(){return this.xrInputSource.targetRaySpace}get data(){const e=[];return Object.values(this.components).forEach(t=>{e.push(t.data)}),e}updateFromGamepad(){Object.values(this.components).forEach(e=>{e.updateFromGamepad(this.xrInputSource.gamepad)})}}const Ge=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];let Jo=1234567;const $a=Math.PI/180,Ha=180/Math.PI;function zl(){const r=Math.random()*4294967295|0,e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,n=Math.random()*4294967295|0;return(Ge[r&255]+Ge[r>>8&255]+Ge[r>>16&255]+Ge[r>>24&255]+"-"+Ge[e&255]+Ge[e>>8&255]+"-"+Ge[e>>16&15|64]+Ge[e>>24&255]+"-"+Ge[t&63|128]+Ge[t>>8&255]+"-"+Ge[t>>16&255]+Ge[t>>24&255]+Ge[n&255]+Ge[n>>8&255]+Ge[n>>16&255]+Ge[n>>24&255]).toLowerCase()}function Ot(r,e,t){return Math.max(e,Math.min(t,r))}function qa(r,e){return(r%e+e)%e}function Il(r,e,t,n,i){return n+(r-e)*(i-n)/(t-e)}function Bl(r,e,t){return r!==e?(t-r)/(e-r):0}function Xa(r,e,t){return(1-t)*r+t*e}function Nl(r,e,t,n){return Xa(r,e,1-Math.exp(-t*n))}function Ul(r,e=1){return e-Math.abs(qa(r,e*2)-e)}function Dl(r,e,t){return r<=e?0:r>=t?1:(r=(r-e)/(t-e),r*r*(3-2*r))}function Ll(r,e,t){return r<=e?0:r>=t?1:(r=(r-e)/(t-e),r*r*r*(r*(r*6-15)+10))}function Fl(r,e){return r+Math.floor(Math.random()*(e-r+1))}function Vl(r,e){return r+Math.random()*(e-r)}function Jl(r){return r*(.5-Math.random())}function jl(r){r!==void 0&&(Jo=r);let e=Jo+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function Gl(r){return r*$a}function Wl(r){return r*Ha}function $l(r){return(r&r-1)===0&&r!==0}function Hl(r){return Math.pow(2,Math.ceil(Math.log(r)/Math.LN2))}function ql(r){return Math.pow(2,Math.floor(Math.log(r)/Math.LN2))}function Xl(r,e,t,n,i){const s=Math.cos,a=Math.sin,o=s(t/2),c=a(t/2),l=s((e+n)/2),h=a((e+n)/2),d=s((e-n)/2),m=a((e-n)/2),p=s((n-e)/2),b=a((n-e)/2);switch(i){case"XYX":r.set(o*h,c*d,c*m,o*l);break;case"YZY":r.set(c*m,o*h,c*d,o*l);break;case"ZXZ":r.set(c*d,c*m,o*h,o*l);break;case"XZX":r.set(o*h,c*b,c*p,o*l);break;case"YXY":r.set(c*p,o*h,c*b,o*l);break;case"ZYZ":r.set(c*b,c*p,o*h,o*l);break;default:console.warn("../math.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+i)}}function Yl(r,e){switch(e.constructor){case Float32Array:return r;case Uint32Array:return r/4294967295;case Uint16Array:return r/65535;case Uint8Array:return r/255;case Int32Array:return Math.max(r/2147483647,-1);case Int16Array:return Math.max(r/32767,-1);case Int8Array:return Math.max(r/127,-1);default:throw new Error("Invalid component type.")}}function Zl(r,e){switch(e.constructor){case Float32Array:return r;case Uint32Array:return Math.round(r*4294967295);case Uint16Array:return Math.round(r*65535);case Uint8Array:return Math.round(r*255);case Int32Array:return Math.round(r*2147483647);case Int16Array:return Math.round(r*32767);case Int8Array:return Math.round(r*127);default:throw new Error("Invalid component type.")}}const Jn={DEG2RAD:$a,RAD2DEG:Ha,generateUUID:zl,clamp:Ot,euclideanModulo:qa,mapLinear:Il,inverseLerp:Bl,lerp:Xa,damp:Nl,pingpong:Ul,smoothstep:Dl,smootherstep:Ll,randInt:Fl,randFloat:Vl,randFloatSpread:Jl,seededRandom:jl,degToRad:Gl,radToDeg:Wl,isPowerOfTwo:$l,ceilPowerOfTwo:Hl,floorPowerOfTwo:ql,setQuaternionFromProperEuler:Xl,normalize:Zl,denormalize:Yl};class ie{constructor(e=0,t=0,n=0,i=1){this.isQuaternion=!0,this._x=e,this._y=t,this._z=n,this._w=i}static slerpFlat(e,t,n,i,s,a,o){let c=n[i+0],l=n[i+1],h=n[i+2],d=n[i+3];const m=s[a+0],p=s[a+1],b=s[a+2],T=s[a+3];if(o===0){e[t+0]=c,e[t+1]=l,e[t+2]=h,e[t+3]=d;return}if(o===1){e[t+0]=m,e[t+1]=p,e[t+2]=b,e[t+3]=T;return}if(d!==T||c!==m||l!==p||h!==b){let g=1-o;const v=c*m+l*p+h*b+d*T,_=v>=0?1:-1,x=1-v*v;if(x>Number.EPSILON){const M=Math.sqrt(x),P=Math.atan2(M,v*_);g=Math.sin(g*P)/M,o=Math.sin(o*P)/M}const C=o*_;if(c=c*g+m*C,l=l*g+p*C,h=h*g+b*C,d=d*g+T*C,g===1-o){const M=1/Math.sqrt(c*c+l*l+h*h+d*d);c*=M,l*=M,h*=M,d*=M}}e[t]=c,e[t+1]=l,e[t+2]=h,e[t+3]=d}static multiplyQuaternionsFlat(e,t,n,i,s,a){const o=n[i],c=n[i+1],l=n[i+2],h=n[i+3],d=s[a],m=s[a+1],p=s[a+2],b=s[a+3];return e[t]=o*b+h*d+c*p-l*m,e[t+1]=c*b+h*m+l*d-o*p,e[t+2]=l*b+h*p+o*m-c*d,e[t+3]=h*b-o*d-c*m-l*p,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,n,i){return this._x=e,this._y=t,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new ie(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t=!0){const n=e._x,i=e._y,s=e._z,a=e._order,o=Math.cos,c=Math.sin,l=o(n/2),h=o(i/2),d=o(s/2),m=c(n/2),p=c(i/2),b=c(s/2);switch(a){case"XYZ":this._x=m*h*d+l*p*b,this._y=l*p*d-m*h*b,this._z=l*h*b+m*p*d,this._w=l*h*d-m*p*b;break;case"YXZ":this._x=m*h*d+l*p*b,this._y=l*p*d-m*h*b,this._z=l*h*b-m*p*d,this._w=l*h*d+m*p*b;break;case"ZXY":this._x=m*h*d-l*p*b,this._y=l*p*d+m*h*b,this._z=l*h*b+m*p*d,this._w=l*h*d-m*p*b;break;case"ZYX":this._x=m*h*d-l*p*b,this._y=l*p*d+m*h*b,this._z=l*h*b-m*p*d,this._w=l*h*d+m*p*b;break;case"YZX":this._x=m*h*d+l*p*b,this._y=l*p*d+m*h*b,this._z=l*h*b-m*p*d,this._w=l*h*d-m*p*b;break;case"XZY":this._x=m*h*d-l*p*b,this._y=l*p*d-m*h*b,this._z=l*h*b+m*p*d,this._w=l*h*d+m*p*b;break;default:console.warn("../math.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const n=t/2,i=Math.sin(n);return this._x=e.x*i,this._y=e.y*i,this._z=e.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,n=t[0],i=t[4],s=t[8],a=t[1],o=t[5],c=t[9],l=t[2],h=t[6],d=t[10],m=n+o+d;if(m>0){const p=.5/Math.sqrt(m+1);this._w=.25/p,this._x=(h-c)*p,this._y=(s-l)*p,this._z=(a-i)*p}else if(n>o&&n>d){const p=2*Math.sqrt(1+n-o-d);this._w=(h-c)/p,this._x=.25*p,this._y=(i+a)/p,this._z=(s+l)/p}else if(o>d){const p=2*Math.sqrt(1+o-n-d);this._w=(s-l)/p,this._x=(i+a)/p,this._y=.25*p,this._z=(c+h)/p}else{const p=2*Math.sqrt(1+d-n-o);this._w=(a-i)/p,this._x=(s+l)/p,this._y=(c+h)/p,this._z=.25*p}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return n<Number.EPSILON?(n=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=n):(this._x=0,this._y=-e.z,this._z=e.y,this._w=n)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=n),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Ot(this.dot(e),-1,1)))}rotateTowards(e,t){const n=this.angleTo(e);if(n===0)return this;const i=Math.min(1,t/n);return this.slerp(e,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const n=e._x,i=e._y,s=e._z,a=e._w,o=t._x,c=t._y,l=t._z,h=t._w;return this._x=n*h+a*o+i*l-s*c,this._y=i*h+a*c+s*o-n*l,this._z=s*h+a*l+n*c-i*o,this._w=a*h-n*o-i*c-s*l,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);const n=this._x,i=this._y,s=this._z,a=this._w;let o=a*e._w+n*e._x+i*e._y+s*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=a,this._x=n,this._y=i,this._z=s,this;const c=1-o*o;if(c<=Number.EPSILON){const p=1-t;return this._w=p*a+t*this._w,this._x=p*n+t*this._x,this._y=p*i+t*this._y,this._z=p*s+t*this._z,this.normalize(),this}const l=Math.sqrt(c),h=Math.atan2(l,o),d=Math.sin((1-t)*h)/l,m=Math.sin(t*h)/l;return this._w=a*d+this._w*m,this._x=n*d+this._x*m,this._y=i*d+this._y*m,this._z=s*d+this._z*m,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){const e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),i=Math.sqrt(1-n),s=Math.sqrt(n);return this.set(i*Math.sin(e),i*Math.cos(e),s*Math.sin(t),s*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class G{constructor(e=0,t=0,n=0){this.isVector3=!0,G.prototype.isVector3=!0,this.x=e,this.y=t,this.z=n}set(e,t,n){return n===void 0&&(n=this.z),this.x=e,this.y=t,this.z=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new G(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(jo.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(jo.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,n=this.y,i=this.z,s=e.elements;return this.x=s[0]*t+s[3]*n+s[6]*i,this.y=s[1]*t+s[4]*n+s[7]*i,this.z=s[2]*t+s[5]*n+s[8]*i,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,n=this.y,i=this.z,s=e.elements,a=1/(s[3]*t+s[7]*n+s[11]*i+s[15]);return this.x=(s[0]*t+s[4]*n+s[8]*i+s[12])*a,this.y=(s[1]*t+s[5]*n+s[9]*i+s[13])*a,this.z=(s[2]*t+s[6]*n+s[10]*i+s[14])*a,this}applyQuaternion(e){const t=this.x,n=this.y,i=this.z,s=e.x,a=e.y,o=e.z,c=e.w,l=2*(a*i-o*n),h=2*(o*t-s*i),d=2*(s*n-a*t);return this.x=t+c*l+a*d-o*h,this.y=n+c*h+o*l-s*d,this.z=i+c*d+s*h-a*l,this}transformDirection(e){const t=this.x,n=this.y,i=this.z,s=e.elements;return this.x=s[0]*t+s[4]*n+s[8]*i,this.y=s[1]*t+s[5]*n+s[9]*i,this.z=s[2]*t+s[6]*n+s[10]*i,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const n=e.x,i=e.y,s=e.z,a=t.x,o=t.y,c=t.z;return this.x=i*c-s*o,this.y=s*a-n*c,this.z=n*o-i*a,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return cs.copy(this).projectOnVector(e),this.sub(cs)}reflect(e){return this.sub(cs.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Ot(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y,i=this.z-e.z;return t*t+n*n+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSphericalCoords(e,t,n){const i=Math.sin(t)*e;return this.x=i*Math.sin(n),this.y=Math.cos(t)*e,this.z=i*Math.cos(n),this}setFromCylindricalCoords(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),i=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=i,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=Math.random()*Math.PI*2,t=Math.random()*2-1,n=Math.sqrt(1-t*t);return this.x=n*Math.cos(e),this.y=t,this.z=n*Math.sin(e),this}abs(){return this.x=Math.abs(this.x),this.y=Math.abs(this.y),this.z=Math.abs(this.z),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const cs=new G,jo=new ie,Qi=2e3,Go=2001;class Et{constructor(e,t,n,i,s,a,o,c,l,h,d,m,p,b,T,g){this.isMatrix4=!0,Et.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,t,n,i,s,a,o,c,l,h,d,m,p,b,T,g)}extractPosition(e){return console.warn("THREE.Matrix4: .extractPosition() has been renamed to .copyPosition()."),this.copyPosition(e)}multiplyToArray(e,t,n){return console.error("THREE.Matrix4: .multiplyToArray() has been removed."),this}setRotationFromQuaternion(e){return this.makeRotationFromQuaternion(e)}set(e,t,n,i,s,a,o,c,l,h,d,m,p,b,T,g){const v=this.elements;return v[0]=e,v[4]=t,v[8]=n,v[12]=i,v[1]=s,v[5]=a,v[9]=o,v[13]=c,v[2]=l,v[6]=h,v[10]=d,v[14]=m,v[3]=p,v[7]=b,v[11]=T,v[15]=g,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new Et().fromArray(this.elements)}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(e){const t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,n=e.elements,i=1/wn.setFromMatrixColumn(e,0).length(),s=1/wn.setFromMatrixColumn(e,1).length(),a=1/wn.setFromMatrixColumn(e,2).length();return t[0]=n[0]*i,t[1]=n[1]*i,t[2]=n[2]*i,t[3]=0,t[4]=n[4]*s,t[5]=n[5]*s,t[6]=n[6]*s,t[7]=0,t[8]=n[8]*a,t[9]=n[9]*a,t[10]=n[10]*a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,n=e.x,i=e.y,s=e.z,a=Math.cos(n),o=Math.sin(n),c=Math.cos(i),l=Math.sin(i),h=Math.cos(s),d=Math.sin(s);if(e.order==="XYZ"){const m=a*h,p=a*d,b=o*h,T=o*d;t[0]=c*h,t[4]=-c*d,t[8]=l,t[1]=p+b*l,t[5]=m-T*l,t[9]=-o*c,t[2]=T-m*l,t[6]=b+p*l,t[10]=a*c}else if(e.order==="YXZ"){const m=c*h,p=c*d,b=l*h,T=l*d;t[0]=m+T*o,t[4]=b*o-p,t[8]=a*l,t[1]=a*d,t[5]=a*h,t[9]=-o,t[2]=p*o-b,t[6]=T+m*o,t[10]=a*c}else if(e.order==="ZXY"){const m=c*h,p=c*d,b=l*h,T=l*d;t[0]=m-T*o,t[4]=-a*d,t[8]=b+p*o,t[1]=p+b*o,t[5]=a*h,t[9]=T-m*o,t[2]=-a*l,t[6]=o,t[10]=a*c}else if(e.order==="ZYX"){const m=a*h,p=a*d,b=o*h,T=o*d;t[0]=c*h,t[4]=b*l-p,t[8]=m*l+T,t[1]=c*d,t[5]=T*l+m,t[9]=p*l-b,t[2]=-l,t[6]=o*c,t[10]=a*c}else if(e.order==="YZX"){const m=a*c,p=a*l,b=o*c,T=o*l;t[0]=c*h,t[4]=T-m*d,t[8]=b*d+p,t[1]=d,t[5]=a*h,t[9]=-o*h,t[2]=-l*h,t[6]=p*d+b,t[10]=m-T*d}else if(e.order==="XZY"){const m=a*c,p=a*l,b=o*c,T=o*l;t[0]=c*h,t[4]=-d,t[8]=l*h,t[1]=m*d+T,t[5]=a*h,t[9]=p*d-b,t[2]=b*d-p,t[6]=o*h,t[10]=T*d+m}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(Kl,e,Ql)}lookAt(e,t,n){const i=this.elements;return lt.subVectors(e,t),lt.lengthSq()===0&&(lt.z=1),lt.normalize(),Yt.crossVectors(n,lt),Yt.lengthSq()===0&&(Math.abs(n.z)===1?lt.x+=1e-4:lt.z+=1e-4,lt.normalize(),Yt.crossVectors(n,lt)),Yt.normalize(),er.crossVectors(lt,Yt),i[0]=Yt.x,i[4]=er.x,i[8]=lt.x,i[1]=Yt.y,i[5]=er.y,i[9]=lt.y,i[2]=Yt.z,i[6]=er.z,i[10]=lt.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,i=t.elements,s=this.elements,a=n[0],o=n[4],c=n[8],l=n[12],h=n[1],d=n[5],m=n[9],p=n[13],b=n[2],T=n[6],g=n[10],v=n[14],_=n[3],x=n[7],C=n[11],M=n[15],P=i[0],E=i[4],O=i[8],I=i[12],R=i[1],N=i[5],z=i[9],U=i[13],F=i[2],J=i[6],$=i[10],K=i[14],W=i[3],me=i[7],ne=i[11],ue=i[15];return s[0]=a*P+o*R+c*F+l*W,s[4]=a*E+o*N+c*J+l*me,s[8]=a*O+o*z+c*$+l*ne,s[12]=a*I+o*U+c*K+l*ue,s[1]=h*P+d*R+m*F+p*W,s[5]=h*E+d*N+m*J+p*me,s[9]=h*O+d*z+m*$+p*ne,s[13]=h*I+d*U+m*K+p*ue,s[2]=b*P+T*R+g*F+v*W,s[6]=b*E+T*N+g*J+v*me,s[10]=b*O+T*z+g*$+v*ne,s[14]=b*I+T*U+g*K+v*ue,s[3]=_*P+x*R+C*F+M*W,s[7]=_*E+x*N+C*J+M*me,s[11]=_*O+x*z+C*$+M*ne,s[15]=_*I+x*U+C*K+M*ue,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[4],i=e[8],s=e[12],a=e[1],o=e[5],c=e[9],l=e[13],h=e[2],d=e[6],m=e[10],p=e[14],b=e[3],T=e[7],g=e[11],v=e[15];return b*(+s*c*d-i*l*d-s*o*m+n*l*m+i*o*p-n*c*p)+T*(+t*c*p-t*l*m+s*a*m-i*a*p+i*l*h-s*c*h)+g*(+t*l*d-t*o*p-s*a*d+n*a*p+s*o*h-n*l*h)+v*(-i*o*h-t*c*d+t*o*m+i*a*d-n*a*m+n*c*h)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,n){const i=this.elements;return e.isVector3?(i[12]=e.x,i[13]=e.y,i[14]=e.z):(i[12]=e,i[13]=t,i[14]=n),this}invert(){const e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],c=e[6],l=e[7],h=e[8],d=e[9],m=e[10],p=e[11],b=e[12],T=e[13],g=e[14],v=e[15],_=d*g*l-T*m*l+T*c*p-o*g*p-d*c*v+o*m*v,x=b*m*l-h*g*l-b*c*p+a*g*p+h*c*v-a*m*v,C=h*T*l-b*d*l+b*o*p-a*T*p-h*o*v+a*d*v,M=b*d*c-h*T*c-b*o*m+a*T*m+h*o*g-a*d*g,P=t*_+n*x+i*C+s*M;if(P===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const E=1/P;return e[0]=_*E,e[1]=(T*m*s-d*g*s-T*i*p+n*g*p+d*i*v-n*m*v)*E,e[2]=(o*g*s-T*c*s+T*i*l-n*g*l-o*i*v+n*c*v)*E,e[3]=(d*c*s-o*m*s-d*i*l+n*m*l+o*i*p-n*c*p)*E,e[4]=x*E,e[5]=(h*g*s-b*m*s+b*i*p-t*g*p-h*i*v+t*m*v)*E,e[6]=(b*c*s-a*g*s-b*i*l+t*g*l+a*i*v-t*c*v)*E,e[7]=(a*m*s-h*c*s+h*i*l-t*m*l-a*i*p+t*c*p)*E,e[8]=C*E,e[9]=(b*d*s-h*T*s-b*n*p+t*T*p+h*n*v-t*d*v)*E,e[10]=(a*T*s-b*o*s+b*n*l-t*T*l-a*n*v+t*o*v)*E,e[11]=(h*o*s-a*d*s-h*n*l+t*d*l+a*n*p-t*o*p)*E,e[12]=M*E,e[13]=(h*T*i-b*d*i+b*n*m-t*T*m-h*n*g+t*d*g)*E,e[14]=(b*o*i-a*T*i-b*n*c+t*T*c+a*n*g-t*o*g)*E,e[15]=(a*d*i-h*o*i+h*n*c-t*d*c-a*n*m+t*o*m)*E,this}scale(e){const t=this.elements,n=e.x,i=e.y,s=e.z;return t[0]*=n,t[4]*=i,t[8]*=s,t[1]*=n,t[5]*=i,t[9]*=s,t[2]*=n,t[6]*=i,t[10]*=s,t[3]*=n,t[7]*=i,t[11]*=s,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],i=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,n,i))}makeTranslation(e,t,n){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const n=Math.cos(t),i=Math.sin(t),s=1-n,a=e.x,o=e.y,c=e.z,l=s*a,h=s*o;return this.set(l*a+n,l*o-i*c,l*c+i*o,0,l*o+i*c,h*o+n,h*c-i*a,0,l*c-i*o,h*c+i*a,s*c*c+n,0,0,0,0,1),this}makeScale(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(e,t,n,i,s,a){return this.set(1,n,s,0,e,1,a,0,t,i,1,0,0,0,0,1),this}compose(e,t,n){const i=this.elements,s=t._x,a=t._y,o=t._z,c=t._w,l=s+s,h=a+a,d=o+o,m=s*l,p=s*h,b=s*d,T=a*h,g=a*d,v=o*d,_=c*l,x=c*h,C=c*d,M=n.x,P=n.y,E=n.z;return i[0]=(1-(T+v))*M,i[1]=(p+C)*M,i[2]=(b-x)*M,i[3]=0,i[4]=(p-C)*P,i[5]=(1-(m+v))*P,i[6]=(g+_)*P,i[7]=0,i[8]=(b+x)*E,i[9]=(g-_)*E,i[10]=(1-(m+T))*E,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,this}decompose(e,t,n){const i=this.elements;let s=wn.set(i[0],i[1],i[2]).length();const a=wn.set(i[4],i[5],i[6]).length(),o=wn.set(i[8],i[9],i[10]).length();this.determinant()<0&&(s=-s),e.x=i[12],e.y=i[13],e.z=i[14],Ct.copy(this);const l=1/s,h=1/a,d=1/o;return Ct.elements[0]*=l,Ct.elements[1]*=l,Ct.elements[2]*=l,Ct.elements[4]*=h,Ct.elements[5]*=h,Ct.elements[6]*=h,Ct.elements[8]*=d,Ct.elements[9]*=d,Ct.elements[10]*=d,t.setFromRotationMatrix(Ct),n.x=s,n.y=a,n.z=o,this}makePerspective(e,t,n,i,s,a,o=Qi){const c=this.elements,l=2*s/(t-e),h=2*s/(n-i),d=(t+e)/(t-e),m=(n+i)/(n-i);let p,b;if(o===Qi)p=-(a+s)/(a-s),b=-2*a*s/(a-s);else if(o===Go)p=-a/(a-s),b=-a*s/(a-s);else throw new Error("Matrix4.makePerspective(): Invalid coordinate system: "+o);return c[0]=l,c[4]=0,c[8]=d,c[12]=0,c[1]=0,c[5]=h,c[9]=m,c[13]=0,c[2]=0,c[6]=0,c[10]=p,c[14]=b,c[3]=0,c[7]=0,c[11]=-1,c[15]=0,this}makeOrthographic(e,t,n,i,s,a,o=Qi){const c=this.elements,l=1/(t-e),h=1/(n-i),d=1/(a-s),m=(t+e)*l,p=(n+i)*h;let b,T;if(o===Qi)b=(a+s)*d,T=-2*d;else if(o===Go)b=s*d,T=-1*d;else throw new Error("../math.Matrix4.makeOrthographic(): Invalid coordinate system: "+o);return c[0]=2*l,c[4]=0,c[8]=0,c[12]=-m,c[1]=0,c[5]=2*h,c[9]=0,c[13]=-p,c[2]=0,c[6]=0,c[10]=T,c[14]=-b,c[3]=0,c[7]=0,c[11]=0,c[15]=1,this}equals(e){const t=this.elements,n=e.elements;for(let i=0;i<16;i++)if(t[i]!==n[i])return!1;return!0}fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}}const wn=new G,Ct=new Et,Kl=new G(0,0,0),Ql=new G(1,1,1),Yt=new G,er=new G,lt=new G,Wo=new Et,$o=new ie;class ui{constructor(e=0,t=0,n=0,i=ui.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=n,this._order=i}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,n,i=this._order){return this._x=e,this._y=t,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new ui(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,n=!0){const i=e.elements,s=i[0],a=i[4],o=i[8],c=i[1],l=i[5],h=i[9],d=i[2],m=i[6],p=i[10];switch(t){case"XYZ":this._y=Math.asin(Ot(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-h,p),this._z=Math.atan2(-a,s)):(this._x=Math.atan2(m,l),this._z=0);break;case"YXZ":this._x=Math.asin(-Ot(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(o,p),this._z=Math.atan2(c,l)):(this._y=Math.atan2(-d,s),this._z=0);break;case"ZXY":this._x=Math.asin(Ot(m,-1,1)),Math.abs(m)<.9999999?(this._y=Math.atan2(-d,p),this._z=Math.atan2(-a,l)):(this._y=0,this._z=Math.atan2(c,s));break;case"ZYX":this._y=Math.asin(-Ot(d,-1,1)),Math.abs(d)<.9999999?(this._x=Math.atan2(m,p),this._z=Math.atan2(c,s)):(this._x=0,this._z=Math.atan2(-a,l));break;case"YZX":this._z=Math.asin(Ot(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(-h,l),this._y=Math.atan2(-d,s)):(this._x=0,this._y=Math.atan2(o,p));break;case"XZY":this._z=Math.asin(-Ot(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(m,l),this._y=Math.atan2(o,s)):(this._x=Math.atan2(-h,p),this._y=0);break;default:console.warn("../math.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return Wo.makeRotationFromQuaternion(e),this.setFromRotationMatrix(Wo,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return $o.setFromEuler(this),this.setFromQuaternion($o,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(e){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}ui.DEFAULT_ORDER="XYZ";class Dn{constructor(e=0,t=0){this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new Dn(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,n=this.y,i=e.elements;return this.x=i[0]*t+i[3]*n+i[6],this.y=i[1]*t+i[4]*n+i[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Ot(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}rotateAround(e,t){const n=Math.cos(t),i=Math.sin(t),s=this.x-e.x,a=this.y-e.y;return this.x=s*n-a*i+e.x,this.y=s*i+a*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}Dn.isVector2=!0;class at{constructor(e=0,t=0,n=0,i=1){at.prototype.isVector4=!0,this.x=e,this.y=t,this.z=n,this.w=i}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,i){return this.x=e,this.y=t,this.z=n,this.w=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new at(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,n=this.y,i=this.z,s=this.w,a=e.elements;return this.x=a[0]*t+a[4]*n+a[8]*i+a[12]*s,this.y=a[1]*t+a[5]*n+a[9]*i+a[13]*s,this.z=a[2]*t+a[6]*n+a[10]*i+a[14]*s,this.w=a[3]*t+a[7]*n+a[11]*i+a[15]*s,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,n,i,s;const c=e.elements,l=c[0],h=c[4],d=c[8],m=c[1],p=c[5],b=c[9],T=c[2],g=c[6],v=c[10];if(Math.abs(h-m)<.01&&Math.abs(d-T)<.01&&Math.abs(b-g)<.01){if(Math.abs(h+m)<.1&&Math.abs(d+T)<.1&&Math.abs(b+g)<.1&&Math.abs(l+p+v-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const x=(l+1)/2,C=(p+1)/2,M=(v+1)/2,P=(h+m)/4,E=(d+T)/4,O=(b+g)/4;return x>C&&x>M?x<.01?(n=0,i=.707106781,s=.707106781):(n=Math.sqrt(x),i=P/n,s=E/n):C>M?C<.01?(n=.707106781,i=0,s=.707106781):(i=Math.sqrt(C),n=P/i,s=O/i):M<.01?(n=.707106781,i=.707106781,s=0):(s=Math.sqrt(M),n=E/s,i=O/s),this.set(n,i,s,t),this}let _=Math.sqrt((g-b)*(g-b)+(d-T)*(d-T)+(m-h)*(m-h));return Math.abs(_)<.001&&(_=1),this.x=(g-b)/_,this.y=(d-T)/_,this.z=(m-h)/_,this.w=Math.acos((l+p+v-1)/2),this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this.w=Math.max(e,Math.min(t,this.w)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class It{constructor(e,t,n,i,s,a,o,c,l){It.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,n,i,s,a,o,c,l)}set(e,t,n,i,s,a,o,c,l){const h=this.elements;return h[0]=e,h[1]=i,h[2]=o,h[3]=t,h[4]=s,h[5]=c,h[6]=n,h[7]=a,h[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,i=t.elements,s=this.elements,a=n[0],o=n[3],c=n[6],l=n[1],h=n[4],d=n[7],m=n[2],p=n[5],b=n[8],T=i[0],g=i[3],v=i[6],_=i[1],x=i[4],C=i[7],M=i[2],P=i[5],E=i[8];return s[0]=a*T+o*_+c*M,s[3]=a*g+o*x+c*P,s[6]=a*v+o*C+c*E,s[1]=l*T+h*_+d*M,s[4]=l*g+h*x+d*P,s[7]=l*v+h*C+d*E,s[2]=m*T+p*_+b*M,s[5]=m*g+p*x+b*P,s[8]=m*v+p*C+b*E,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],c=e[6],l=e[7],h=e[8];return t*a*h-t*o*l-n*s*h+n*o*c+i*s*l-i*a*c}invert(){const e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],c=e[6],l=e[7],h=e[8],d=h*a-o*l,m=o*c-h*s,p=l*s-a*c,b=t*d+n*m+i*p;if(b===0)return this.set(0,0,0,0,0,0,0,0,0);const T=1/b;return e[0]=d*T,e[1]=(i*l-h*n)*T,e[2]=(o*n-i*a)*T,e[3]=m*T,e[4]=(h*t-i*c)*T,e[5]=(i*s-o*t)*T,e[6]=p*T,e[7]=(n*c-l*t)*T,e[8]=(a*t-n*s)*T,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,i,s,a,o){const c=Math.cos(s),l=Math.sin(s);return this.set(n*c,n*l,-n*(c*a+l*o)+a+e,-i*l,i*c,-i*(-l*a+c*o)+o+t,0,0,1),this}scale(e,t){return this.premultiply(ls.makeScale(e,t)),this}rotate(e){return this.premultiply(ls.makeRotation(-e)),this}translate(e,t){return this.premultiply(ls.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,n=e.elements;for(let i=0;i<9;i++)if(t[i]!==n[i])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new It().fromArray(this.elements)}}const ls=new It;var et;(function(r){r[r.Random=0]="Random",r[r.Loop=1]="Loop",r[r.PingPong=2]="PingPong",r[r.Burst=3]="Burst"})(et||(et={}));function ji(r,e,t,n){let i;switch(et.Random===r?e=Math.random():et.Burst===r&&n.isBursting&&(e=n.burstParticleIndex/n.burstParticleCount),t>0?i=Math.floor(e/t)*t:i=e,r){case et.Loop:i=i%1;break;case et.PingPong:i=Math.abs(i%2-1);break}return i}class yn{constructor(e,t,n,i){this.p=[e,t,n,i]}genValue(e){const t=e*e,n=e*e*e,i=1-e,s=i*i,a=s*i;return this.p[0]*a+this.p[1]*s*e*3+this.p[2]*i*t*3+this.p[3]*n}derivativeCoefficients(e){const t=[];for(let n=e,i=n.length-1;i>0;i--){const s=[];for(let a=0;a<i;a++){const o=i*(n[a+1]-n[a]);s.push(o)}t.push(s),n=s}return t}getSlope(e){const t=this.derivativeCoefficients(this.p)[0],n=1-e,i=n*n,s=n*e*2,a=e*e;return i*t[0]+s*t[1]+a*t[2]}controlCurve(e,t){this.p[1]=e/3+this.p[0],this.p[2]=this.p[3]-t/3}hull(e){let t=this.p,n=[],i,s=0,a=0,o=0;const c=[];for(c[s++]=t[0],c[s++]=t[1],c[s++]=t[2],c[s++]=t[3];t.length>1;){for(n=[],a=0,o=t.length-1;a<o;a++)i=e*t[a]+(1-e)*t[a+1],c[s++]=i,n.push(i);t=n}return c}split(e){const t=this.hull(e);return{left:new yn(t[0],t[4],t[7],t[9]),right:new yn(t[9],t[8],t[6],t[3]),span:t}}clone(){return new yn(this.p[0],this.p[1],this.p[2],this.p[3])}toJSON(){return{p0:this.p[0],p1:this.p[1],p2:this.p[2],p3:this.p[3]}}static fromJSON(e){return new yn(e.p0,e.p1,e.p2,e.p3)}}const hi=r=>({r:r.x,g:r.y,b:r.z,a:r.w}),fi=r=>new at(r.r,r.g,r.b,r.a),eu=(r,e)=>{switch(e){case"Vector3":return new G(r.x,r.y,r.z);case"Vector4":return new at(r.x,r.y,r.z,r.w);case"Color":return new G(r.r,r.g,r.b);case"Number":return r;default:return r}},tu=(r,e)=>{switch(e){case"Vector3":return{x:r.x,y:r.y,z:r.z};case"Vector4":return{x:r.x,y:r.y,z:r.z,w:r.w};case"Color":return{r:r.x,g:r.y,b:r.z};case"Number":return r;default:return r}};class Ar{constructor(e,t){this.a=e,this.b=t,this.type="value"}startGen(e){}genColor(e,t){const n=Math.random();return t.copy(this.a).lerp(this.b,n)}toJSON(){return{type:"RandomColor",a:hi(this.a),b:hi(this.b)}}static fromJSON(e){return new Ar(fi(e.a),fi(e.b))}clone(){return new Ar(this.a.clone(),this.b.clone())}}class Ln{constructor(e,t){this.a=e,this.b=t,this.indexCount=-1,this.type="value"}startGen(e){this.indexCount=e.length,e.push(Math.random())}genColor(e,t){return this.indexCount===-1&&this.startGen(e),t.copy(this.a).lerp(this.b,e[this.indexCount])}toJSON(){return{type:"ColorRange",a:hi(this.a),b:hi(this.b)}}static fromJSON(e){return new Ln(fi(e.a),fi(e.b))}clone(){return new Ln(this.a.clone(),this.b.clone())}}class tn{constructor(e,t){this.subType=t,this.type="function",this.keys=e}findKey(e){let t=0,n=0,i=this.keys.length-1;for(;n+1<i;)if(t=Math.floor((n+i)/2),e<this.getStartX(t))i=t-1;else if(e>this.getEndX(t))n=t+1;else return t;for(let s=n;s<=i;s++)if(e>=this.getStartX(s)&&e<=this.getEndX(s))return s;return-1}getStartX(e){return this.keys[e][1]}getEndX(e){return e+1<this.keys.length?this.keys[e+1][1]:1}genValue(e,t){const n=this.findKey(t);return this.subType==="Number"?n===-1?this.keys[0][0]:n+1>=this.keys.length?this.keys[this.keys.length-1][0]:(this.keys[n+1][0]-this.keys[n][0])*((t-this.getStartX(n))/(this.getEndX(n)-this.getStartX(n)))+this.keys[n][0]:n===-1?e.copy(this.keys[0][0]):n+1>=this.keys.length?e.copy(this.keys[this.keys.length-1][0]):e.copy(this.keys[n][0]).lerp(this.keys[n+1][0],(t-this.getStartX(n))/(this.getEndX(n)-this.getStartX(n)))}toJSON(){return this.keys[0][0].constructor.name,{type:"CLinearFunction",subType:this.subType,keys:this.keys.map(([e,t])=>({value:tu(e,this.subType),pos:t}))}}static fromJSON(e){return new tn(e.keys.map(t=>[eu(t.value,e.subType),t.pos]),e.subType)}clone(){return this.subType==="Number"?new tn(this.keys.map(([e,t])=>[e,t]),this.subType):new tn(this.keys.map(([e,t])=>[e.clone(),t]),this.subType)}}const tr=new G;class gn{constructor(e=[[new G(0,0,0),0],[new G(1,1,1),0]],t=[[1,0],[1,1]]){this.type="function",this.color=new tn(e,"Color"),this.alpha=new tn(t,"Number")}genColor(e,t,n){return this.color.genValue(tr,n),t.set(tr.x,tr.y,tr.z,this.alpha.genValue(1,n))}toJSON(){return{type:"Gradient",color:this.color.toJSON(),alpha:this.alpha.toJSON()}}static fromJSON(e){if(e.functions){const t=e.functions.map(n=>[Ln.fromJSON(n.function).a,n.start]);return e.functions.length>0&&t.push([Ln.fromJSON(e.functions[e.functions.length-1].function).b,1]),new gn(t.map(n=>[new G(n[0].x,n[0].y,n[0].z),n[1]]),t.map(n=>[n[0].w,n[1]]))}else{const t=new gn;return t.alpha=tn.fromJSON(e.alpha),t.color=tn.fromJSON(e.color),t}}clone(){const e=new gn;return e.alpha=this.alpha.clone(),e.color=this.color.clone(),e}startGen(e){}}const us=new at;class Or{constructor(e,t){this.indexCount=0,this.type="function",this.gradient1=e,this.gradient2=t}startGen(e){this.indexCount=e.length,e.push(Math.random())}genColor(e,t,n){return this.gradient1.genColor(e,t,n),this.gradient2.genColor(e,us,n),e&&e[this.indexCount]!==void 0?t.lerp(us,e[this.indexCount]):t.lerp(us,Math.random()),t}toJSON(){return{type:"RandomColorBetweenGradient",gradient1:this.gradient1.toJSON(),gradient2:this.gradient2.toJSON()}}static fromJSON(e){return new Or(gn.fromJSON(e.gradient1),gn.fromJSON(e.gradient2))}clone(){return new Or(this.gradient1.clone(),this.gradient2.clone())}}class vn{constructor(e){this.color=e,this.type="value"}startGen(e){}genColor(e,t){return t.copy(this.color)}toJSON(){return{type:"ConstantColor",color:hi(this.color)}}static fromJSON(e){return new vn(fi(e.color))}clone(){return new vn(this.color.clone())}}function io(r){switch(r.type){case"ConstantColor":return vn.fromJSON(r);case"ColorRange":return Ln.fromJSON(r);case"RandomColor":return Ar.fromJSON(r);case"Gradient":return gn.fromJSON(r);case"RandomColorBetweenGradient":return Or.fromJSON(r);default:return new vn(new at(1,1,1,1))}}class ee{constructor(e){this.value=e,this.type="value"}startGen(e){}genValue(e){return this.value}toJSON(){return{type:"ConstantValue",value:this.value}}static fromJSON(e){return new ee(e.value)}clone(){return new ee(this.value)}}class Sn{constructor(e,t){this.a=e,this.b=t,this.indexCount=-1,this.type="value"}startGen(e){this.indexCount=e.length,e.push(Math.random())}genValue(e){return this.indexCount===-1&&this.startGen(e),Jn.lerp(this.a,this.b,e[this.indexCount])}toJSON(){return{type:"IntervalValue",a:this.a,b:this.b}}static fromJSON(e){return new Sn(e.a,e.b)}clone(){return new Sn(this.a,this.b)}}class nu{constructor(){this.functions=new Array}findFunction(e){let t=0,n=0,i=this.functions.length-1;for(;n+1<i;)if(t=Math.floor((n+i)/2),e<this.getStartX(t))i=t-1;else if(e>this.getEndX(t))n=t+1;else return t;for(let s=n;s<=i;s++)if(e>=this.functions[s][1]&&e<=this.getEndX(s))return s;return-1}getStartX(e){return this.functions[e][1]}setStartX(e,t){e>0&&(this.functions[e][1]=t)}getEndX(e){return e+1<this.functions.length?this.functions[e+1][1]:1}setEndX(e,t){e+1<this.functions.length&&(this.functions[e+1][1]=t)}insertFunction(e,t){const n=this.findFunction(e);this.functions.splice(n+1,0,[t,e])}removeFunction(e){return this.functions.splice(e,1)[0][0]}getFunction(e){return this.functions[e][0]}setFunction(e,t){this.functions[e][0]=t}get numOfFunctions(){return this.functions.length}}class di extends nu{constructor(e=[[new yn(0,1/3,1/3*2,1),0]]){super(),this.type="function",this.functions=e}genValue(e,t=0){const n=this.findFunction(t);return n===-1?0:this.functions[n][0].genValue((t-this.getStartX(n))/(this.getEndX(n)-this.getStartX(n)))}toSVG(e,t){if(t<1)return"";let n=["M",0,this.functions[0][0].p[0]].join(" ");for(let i=1/t;i<=1;i+=1/t)n=[n,"L",i*e,this.genValue(void 0,i)].join(" ");return n}toJSON(){return{type:"PiecewiseBezier",functions:this.functions.map(([e,t])=>({function:e.toJSON(),start:t}))}}static fromJSON(e){return new di(e.functions.map(t=>[yn.fromJSON(t.function),t.start]))}clone(){return new di(this.functions.map(([e,t])=>[e.clone(),t]))}startGen(e){}}function Z(r){switch(r.type){case"ConstantValue":return ee.fromJSON(r);case"IntervalValue":return Sn.fromJSON(r);case"PiecewiseBezier":return di.fromJSON(r);default:return new ee(0)}}class pi{constructor(){this.indexCount=0,this.type="rotation"}startGen(e){this.indexCount=e.length,e.push(new ie);let t,n,i,s,a,o;do t=Math.random()*2-1,n=Math.random()*2-1,i=t*t+n*n;while(i>1);do s=Math.random()*2-1,a=Math.random()*2-1,o=s*s+a*a;while(o>1);const c=Math.sqrt((1-i)/o);e[this.indexCount].set(t,n,c*s,c*a)}genValue(e,t,n,i){return this.indexCount===-1&&this.startGen(e),t.copy(e[this.indexCount]),t}toJSON(){return{type:"RandomQuat"}}static fromJSON(e){return new pi}clone(){return new pi}}class mi{constructor(e,t){this.axis=e,this.angle=t,this.type="rotation"}startGen(e){this.angle.startGen(e)}genValue(e,t,n,i){return t.setFromAxisAngle(this.axis,this.angle.genValue(e,i)*n)}toJSON(){return{type:"AxisAngle",axis:{x:this.axis.x,y:this.axis.y,z:this.axis.z},angle:this.angle.toJSON()}}static fromJSON(e){return new mi(new G(e.axis.x,e.axis.y,e.axis.z),Z(e.angle))}clone(){return new mi(this.axis.clone(),this.angle.clone())}}class zr{constructor(e,t,n,i){this.angleX=e,this.angleY=t,this.angleZ=n,this.type="rotation",this.eular=new ui(0,0,0,i)}startGen(e){this.angleX.startGen(e),this.angleY.startGen(e),this.angleZ.startGen(e)}genValue(e,t,n,i){return this.eular.set(this.angleX.genValue(e,i)*n,this.angleY.genValue(e,i)*n,this.angleZ.genValue(e,i)*n),t.setFromEuler(this.eular)}toJSON(){return{type:"Euler",angleX:this.angleX.toJSON(),angleY:this.angleY.toJSON(),angleZ:this.angleZ.toJSON(),eulerOrder:this.eular.order}}static fromJSON(e){return new zr(Z(e.angleX),Z(e.angleY),Z(e.angleZ),e.eulerOrder)}clone(){return new zr(this.angleX,this.angleY,this.angleZ,this.eular.order)}}function Ya(r){switch(r.type){case"AxisAngle":return mi.fromJSON(r);case"Euler":return zr.fromJSON(r);case"RandomQuat":return pi.fromJSON(r);default:return new pi}}class xn{constructor(e,t,n){this.x=e,this.y=t,this.z=n,this.type="vec3function"}startGen(e){this.x.startGen(e),this.y.startGen(e),this.z.startGen(e)}genValue(e,t,n){return t.set(this.x.genValue(e,n),this.y.genValue(e,n),this.z.genValue(e,n))}toJSON(){return{type:"Vector3Function",x:this.x.toJSON(),y:this.y.toJSON(),z:this.z.toJSON()}}static fromJSON(e){return new xn(Z(e.x),Z(e.y),Z(e.z))}clone(){return new xn(this.x,this.y,this.z)}}function iu(r){return r.type==="Vector3Function"?xn.fromJSON(r):new xn(new ee(0),new ee(0),new ee(0))}function Ir(r){switch(r.type){case"ConstantValue":case"IntervalValue":case"PiecewiseBezier":return Z(r);case"AxisAngle":case"RandomQuat":case"Euler":return Ya(r);case"Vector3Function":return iu(r);default:return new ee(0)}}class yi{constructor(e={}){var t,n,i,s,a,o,c;this.type="cone",this.currentValue=0,this.radius=(t=e.radius)!==null&&t!==void 0?t:10,this.arc=(n=e.arc)!==null&&n!==void 0?n:2*Math.PI,this.thickness=(i=e.thickness)!==null&&i!==void 0?i:1,this.angle=(s=e.angle)!==null&&s!==void 0?s:Math.PI/6,this.mode=(a=e.mode)!==null&&a!==void 0?a:et.Random,this.spread=(o=e.spread)!==null&&o!==void 0?o:0,this.speed=(c=e.speed)!==null&&c!==void 0?c:new ee(1),this.memory=[]}update(e,t){et.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){const n=ji(this.mode,this.currentValue,this.spread,t),i=Jn.lerp(1-this.thickness,1,Math.random()),s=n*this.arc,a=Math.sqrt(i),o=Math.sin(s),c=Math.cos(s);e.position.x=a*c,e.position.y=a*o,e.position.z=0;const l=this.angle*a;e.velocity.set(0,0,Math.cos(l)).addScaledVector(e.position,Math.sin(l)).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius)}toJSON(){return{type:"cone",radius:this.radius,arc:this.arc,thickness:this.thickness,angle:this.angle,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(e){return new yi({radius:e.radius,arc:e.arc,thickness:e.thickness,angle:e.angle,mode:e.mode,speed:e.speed?Z(e.speed):void 0,spread:e.spread})}clone(){return new yi({radius:this.radius,arc:this.arc,thickness:this.thickness,angle:this.angle,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}class gi{constructor(e={}){var t,n,i,s,a,o;this.type="circle",this.currentValue=0,this.radius=(t=e.radius)!==null&&t!==void 0?t:10,this.arc=(n=e.arc)!==null&&n!==void 0?n:2*Math.PI,this.thickness=(i=e.thickness)!==null&&i!==void 0?i:1,this.mode=(s=e.mode)!==null&&s!==void 0?s:et.Random,this.spread=(a=e.spread)!==null&&a!==void 0?a:0,this.speed=(o=e.speed)!==null&&o!==void 0?o:new ee(1),this.memory=[]}update(e,t){this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t}initialize(e,t){const n=ji(this.mode,this.currentValue,this.spread,t),i=Jn.lerp(1-this.thickness,1,Math.random()),s=n*this.arc;e.position.x=Math.cos(s),e.position.y=Math.sin(s),e.position.z=0,e.velocity.copy(e.position).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius*i)}toJSON(){return{type:"circle",radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(e){return new gi({radius:e.radius,arc:e.arc,thickness:e.thickness,mode:e.mode,speed:e.speed?Z(e.speed):void 0,spread:e.spread})}clone(){return new gi({radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}function nr(r,e){return Math.floor(Math.random()*(e-r))+r}const Vr=new G(0,1,0),Jr=new G(0,0,0),ru=new G(1,1,1),Ho=new G(0,0,1);class vi{constructor(e={}){var t,n,i,s,a,o,c;this.type="donut",this.currentValue=0,this.radius=(t=e.radius)!==null&&t!==void 0?t:10,this.arc=(n=e.arc)!==null&&n!==void 0?n:2*Math.PI,this.thickness=(i=e.thickness)!==null&&i!==void 0?i:1,this.donutRadius=(s=e.donutRadius)!==null&&s!==void 0?s:this.radius*.2,this.mode=(a=e.mode)!==null&&a!==void 0?a:et.Random,this.spread=(o=e.spread)!==null&&o!==void 0?o:0,this.speed=(c=e.speed)!==null&&c!==void 0?c:new ee(1),this.memory=[],this._m1=new Et}update(e,t){et.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){const n=ji(this.mode,this.currentValue,this.spread,t),i=Math.random(),s=Jn.lerp(1-this.thickness,1,Math.random()),a=n*this.arc,o=i*Math.PI*2,c=Math.sin(a),l=Math.cos(a);e.position.x=this.radius*l,e.position.y=this.radius*c,e.position.z=0,e.velocity.z=this.donutRadius*s*Math.sin(o),e.velocity.x=this.donutRadius*s*Math.cos(o)*l,e.velocity.y=this.donutRadius*s*Math.cos(o)*c,e.position.add(e.velocity),e.velocity.normalize().multiplyScalar(e.startSpeed),e.rotation instanceof ie&&(this._m1.lookAt(Jr,e.velocity,Vr),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:"donut",radius:this.radius,arc:this.arc,thickness:this.thickness,donutRadius:this.donutRadius,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(e){return new vi({radius:e.radius,arc:e.arc,thickness:e.thickness,donutRadius:e.donutRadius,mode:e.mode,speed:e.speed?Z(e.speed):void 0,spread:e.spread})}clone(){return new vi({radius:this.radius,arc:this.arc,thickness:this.thickness,donutRadius:this.donutRadius,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}class Si{constructor(){this.type="point",this._m1=new Et}update(e,t){}initialize(e){const t=Math.random(),n=Math.random(),i=t*Math.PI*2,s=Math.acos(2*n-1),a=Math.cbrt(Math.random()),o=Math.sin(i),c=Math.cos(i),l=Math.sin(s),h=Math.cos(s);e.velocity.x=a*l*c,e.velocity.y=a*l*o,e.velocity.z=a*h,e.velocity.multiplyScalar(e.startSpeed),e.position.setScalar(0),e.rotation instanceof ie&&(this._m1.lookAt(Jr,e.position,Vr),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:"point"}}static fromJSON(e){return new Si}clone(){return new Si}}class Fn{constructor(e={}){var t,n,i,s,a,o;this.type="sphere",this.currentValue=0,this.radius=(t=e.radius)!==null&&t!==void 0?t:10,this.arc=(n=e.arc)!==null&&n!==void 0?n:2*Math.PI,this.thickness=(i=e.thickness)!==null&&i!==void 0?i:1,this.mode=(s=e.mode)!==null&&s!==void 0?s:et.Random,this.spread=(a=e.spread)!==null&&a!==void 0?a:0,this.speed=(o=e.speed)!==null&&o!==void 0?o:new ee(1),this.memory=[],this._m1=new Et}update(e,t){et.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){const n=ji(this.mode,this.currentValue,this.spread,t),i=Math.random(),s=Jn.lerp(1-this.thickness,1,Math.random()),a=n*this.arc,o=Math.acos(2*i-1),c=Math.sin(a),l=Math.cos(a),h=Math.sin(o),d=Math.cos(o);e.position.x=h*l,e.position.y=h*c,e.position.z=d,e.velocity.copy(e.position).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius*s),e.rotation instanceof ie&&(this._m1.lookAt(Jr,e.position,Vr),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:"sphere",radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(e){return new Fn({radius:e.radius,arc:e.arc,thickness:e.thickness,mode:e.mode,speed:e.speed?Z(e.speed):void 0,spread:e.spread})}clone(){return new Fn({radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}class xi{constructor(e={}){var t,n,i,s,a,o;this.type="sphere",this.currentValue=0,this.radius=(t=e.radius)!==null&&t!==void 0?t:10,this.arc=(n=e.arc)!==null&&n!==void 0?n:2*Math.PI,this.thickness=(i=e.thickness)!==null&&i!==void 0?i:1,this.mode=(s=e.mode)!==null&&s!==void 0?s:et.Random,this.spread=(a=e.spread)!==null&&a!==void 0?a:0,this.speed=(o=e.speed)!==null&&o!==void 0?o:new ee(1),this.memory=[],this._m1=new Et}update(e,t){et.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){const n=ji(this.mode,this.currentValue,this.spread,t),i=Math.random(),s=Jn.lerp(1-this.thickness,1,Math.random()),a=n*this.arc,o=Math.acos(i),c=Math.sin(a),l=Math.cos(a),h=Math.sin(o),d=Math.cos(o);e.position.x=h*l,e.position.y=h*c,e.position.z=d,e.velocity.copy(e.position).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius*s),e.rotation instanceof ie&&(this._m1.lookAt(Jr,e.position,Vr),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:"hemisphere",radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(e){return new xi({radius:e.radius,arc:e.arc,thickness:e.thickness,mode:e.mode,speed:e.speed?Z(e.speed):void 0,spread:e.spread})}clone(){return new xi({radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}class _i{constructor(e={}){var t,n,i,s;this.type="grid",this.width=(t=e.width)!==null&&t!==void 0?t:1,this.height=(n=e.height)!==null&&n!==void 0?n:1,this.column=(i=e.column)!==null&&i!==void 0?i:10,this.row=(s=e.row)!==null&&s!==void 0?s:10}initialize(e){const t=Math.floor(Math.random()*this.row),n=Math.floor(Math.random()*this.column);e.position.x=n*this.width/this.column-this.width/2,e.position.y=t*this.height/this.row-this.height/2,e.position.z=0,e.velocity.set(0,0,e.startSpeed)}toJSON(){return{type:"grid",width:this.width,height:this.height,column:this.column,row:this.row}}static fromJSON(e){return new _i(e)}clone(){return new _i({width:this.width,height:this.height,column:this.column,row:this.row})}update(e,t){}}const Is={circle:{type:"circle",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:gi,loadJSON:gi.fromJSON},cone:{type:"cone",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["angle",["radian"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:yi,loadJSON:yi.fromJSON},donut:{type:"donut",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["donutRadius",["number"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:vi,loadJSON:vi.fromJSON},point:{type:"point",params:[],constructor:Si,loadJSON:Si.fromJSON},sphere:{type:"sphere",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["angle",["radian"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:Fn,loadJSON:Fn.fromJSON},hemisphere:{type:"hemisphere",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["angle",["radian"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:xi,loadJSON:xi.fromJSON},grid:{type:"grid",params:[["width",["number"]],["height",["number"]],["rows",["number"]],["column",["number"]]],constructor:_i,loadJSON:_i.fromJSON}};function su(r,e){return Is[r.type].loadJSON(r,e)}class bi{constructor(e){this.color=e,this.type="ColorOverLife"}initialize(e){this.color.startGen(e.memory)}update(e,t){this.color.genColor(e.memory,e.color,e.age/e.life),e.color.x*=e.startColor.x,e.color.y*=e.startColor.y,e.color.z*=e.startColor.z,e.color.w*=e.startColor.w}frameUpdate(e){}toJSON(){return{type:this.type,color:this.color.toJSON()}}static fromJSON(e){return new bi(io(e.color))}clone(){return new bi(this.color.clone())}reset(){}}class Ti{constructor(e){this.angularVelocity=e,this.type="RotationOverLife"}initialize(e){typeof e.rotation=="number"&&this.angularVelocity.startGen(e.memory)}update(e,t){typeof e.rotation=="number"&&(e.rotation+=t*this.angularVelocity.genValue(e.memory,e.age/e.life))}toJSON(){return{type:this.type,angularVelocity:this.angularVelocity.toJSON()}}static fromJSON(e){return new Ti(Z(e.angularVelocity))}frameUpdate(e){}clone(){return new Ti(this.angularVelocity.clone())}reset(){}}class Mi{constructor(e){this.angularVelocity=e,this.type="Rotation3DOverLife",this.tempQuat=new ie,this.tempQuat2=new ie}initialize(e){e.rotation instanceof ie&&(e.angularVelocity=new ie,this.angularVelocity.startGen(e.memory))}update(e,t){e.rotation instanceof ie&&(this.angularVelocity.genValue(e.memory,this.tempQuat,t,e.age/e.life),e.rotation.multiply(this.tempQuat))}toJSON(){return{type:this.type,angularVelocity:this.angularVelocity.toJSON()}}static fromJSON(e){return new Mi(Ya(e.angularVelocity))}frameUpdate(e){}clone(){return new Mi(this.angularVelocity.clone())}reset(){}}class Ci{initialize(e,t){this.ps=t,this.x.startGen(e.memory),this.y.startGen(e.memory),this.z.startGen(e.memory)}constructor(e,t,n){this.x=e,this.y=t,this.z=n,this.type="ForceOverLife",this._temp=new G,this._tempScale=new G,this._tempQ=new ie}update(e,t){this._temp.set(this.x.genValue(e.memory,e.age/e.life),this.y.genValue(e.memory,e.age/e.life),this.z.genValue(e.memory,e.age/e.life)),this.ps.worldSpace?e.velocity.addScaledVector(this._temp,t):(this._temp.multiply(this._tempScale).applyQuaternion(this._tempQ),e.velocity.addScaledVector(this._temp,t))}toJSON(){return{type:this.type,x:this.x.toJSON(),y:this.y.toJSON(),z:this.z.toJSON()}}static fromJSON(e){return new Ci(Z(e.x),Z(e.y),Z(e.z))}frameUpdate(e){if(this.ps&&!this.ps.worldSpace){const t=this._temp,n=this._tempQ,i=this._tempScale;this.ps.emitter.matrixWorld.decompose(t,n,i),n.invert(),i.set(1/i.x,1/i.y,1/i.z)}}clone(){return new Ci(this.x.clone(),this.y.clone(),this.z.clone())}reset(){}}class wi{initialize(e){this.size.startGen(e.memory)}constructor(e){this.size=e,this.type="SizeOverLife"}update(e){this.size instanceof xn?this.size.genValue(e.memory,e.size,e.age/e.life).multiply(e.startSize):e.size.copy(e.startSize).multiplyScalar(this.size.genValue(e.memory,e.age/e.life))}toJSON(){return{type:this.type,size:this.size.toJSON()}}static fromJSON(e){return new wi(Ir(e.size))}frameUpdate(e){}clone(){return new wi(this.size.clone())}reset(){}}class Pi{initialize(e){this.speed.startGen(e.memory)}constructor(e){this.speed=e,this.type="SpeedOverLife"}update(e){e.speedModifier=this.speed.genValue(e.memory,e.age/e.life)}toJSON(){return{type:this.type,speed:this.speed.toJSON()}}static fromJSON(e){return new Pi(Z(e.speed))}frameUpdate(e){}clone(){return new Pi(this.speed.clone())}reset(){}}class Ei{constructor(e){this.frame=e,this.type="FrameOverLife"}initialize(e){this.frame.startGen(e.memory)}update(e,t){this.frame instanceof di&&(e.uvTile=this.frame.genValue(e.memory,e.age/e.life))}frameUpdate(e){}toJSON(){return{type:this.type,frame:this.frame.toJSON()}}static fromJSON(e){return new Ei(Z(e.frame))}clone(){return new Ei(this.frame.clone())}reset(){}}class ki{constructor(e,t=new G(0,1,0)){this.orbitSpeed=e,this.axis=t,this.type="OrbitOverLife",this.temp=new G,this.rotation=new ie}initialize(e){this.orbitSpeed.startGen(e.memory)}update(e,t){this.temp.copy(e.position).projectOnVector(this.axis),this.rotation.setFromAxisAngle(this.axis,this.orbitSpeed.genValue(e.memory,e.age/e.life)*t),e.position.sub(this.temp),e.position.applyQuaternion(this.rotation),e.position.add(this.temp)}frameUpdate(e){}toJSON(){return{type:this.type,orbitSpeed:this.orbitSpeed.toJSON(),axis:[this.axis.x,this.axis.y,this.axis.z]}}static fromJSON(e){return new ki(Z(e.orbitSpeed),e.axis?new G(e.axis[0],e.axis[1],e.axis[2]):void 0)}clone(){return new ki(this.orbitSpeed.clone())}reset(){}}class hs{constructor(e){this.data=e,this.next=null,this.prev=null}hasPrev(){return this.prev!==null}hasNext(){return this.next!==null}}class ou{constructor(){this.length=0,this.head=this.tail=null}isEmpty(){return this.head===null}clear(){this.length=0,this.head=this.tail=null}front(){return this.head===null?null:this.head.data}back(){return this.tail===null?null:this.tail.data}dequeue(){if(this.head){const e=this.head.data;return this.head=this.head.next,this.head?this.head.prev=null:this.tail=null,this.length--,e}}pop(){if(this.tail){const e=this.tail.data;return this.tail=this.tail.prev,this.tail?this.tail.next=null:this.head=null,this.length--,e}}queue(e){const t=new hs(e);this.tail||(this.tail=t),this.head&&(this.head.prev=t,t.next=this.head),this.head=t,this.length++}push(e){const t=new hs(e);this.head||(this.head=t),this.tail&&(this.tail.next=t,t.prev=this.tail),this.tail=t,this.length++}insertBefore(e,t){const n=new hs(t);n.next=e,n.prev=e.prev,n.prev!==null&&(n.prev.next=n),n.next.prev=n,e==this.head&&(this.head=n),this.length++}remove(e){if(this.head===null||this.tail===null)return;let t=this.head;for(e===this.head.data&&(this.head=this.head.next),e===this.tail.data&&(this.tail=this.tail.prev);t.next!==null&&t.data!==e;)t=t.next;t.data===e&&(t.prev!==null&&(t.prev.next=t.next),t.next!==null&&(t.next.prev=t.prev),this.length--)}*values(){let e=this.head;for(;e!==null;)yield e.data,e=e.next}}class au{constructor(){this.startSpeed=0,this.startColor=new at,this.startSize=new G(1,1,1),this.position=new G,this.velocity=new G,this.age=0,this.life=1,this.size=new G(1,1,1),this.speedModifier=1,this.rotation=0,this.color=new at,this.uvTile=0,this.memory=[]}get died(){return this.age>=this.life}reset(){this.memory.length=0}}class cu{constructor(e,t,n){this.position=e,this.size=t,this.color=n}}class Br{constructor(){this.startSpeed=0,this.startColor=new at,this.startSize=new G(1,1,1),this.position=new G,this.velocity=new G,this.age=0,this.life=1,this.size=new G(1,1,1),this.length=100,this.speedModifier=1,this.color=new at,this.previous=new ou,this.uvTile=0,this.memory=[]}update(){for(this.age<=this.life?this.previous.push(new cu(this.position.clone(),this.size.x,this.color.clone())):this.previous.length>0&&this.previous.dequeue();this.previous.length>this.length;)this.previous.dequeue()}get died(){return this.age>=this.life}reset(){this.memory.length=0,this.previous.clear()}}class Ri{initialize(e){this.width.startGen(e.memory)}constructor(e){this.width=e,this.type="WidthOverLength"}update(e){if(e instanceof Br){const t=e.previous.values();for(let n=0;n<e.previous.length;n++){const i=t.next();i.value.size=this.width.genValue(e.memory,(e.previous.length-n)/e.length)}}}frameUpdate(e){}toJSON(){return{type:this.type,width:this.width.toJSON()}}static fromJSON(e){return new Ri(Z(e.width))}clone(){return new Ri(this.width.clone())}reset(){}}class Ai{constructor(e,t){this.direction=e,this.magnitude=t,this.type="ApplyForce",this.memory={data:[],dataCount:0},this.magnitudeValue=this.magnitude.genValue(this.memory)}initialize(e){}update(e,t){e.velocity.addScaledVector(this.direction,this.magnitudeValue*t)}frameUpdate(e){this.magnitudeValue=this.magnitude.genValue(this.memory)}toJSON(){return{type:this.type,direction:[this.direction.x,this.direction.y,this.direction.z],magnitude:this.magnitude.toJSON()}}static fromJSON(e){var t;return new Ai(new G(e.direction[0],e.direction[1],e.direction[2]),Z((t=e.magnitude)!==null&&t!==void 0?t:e.force))}clone(){return new Ai(this.direction.clone(),this.magnitude.clone())}reset(){}}class Oi{constructor(e,t){this.center=e,this.magnitude=t,this.type="GravityForce",this.temp=new G}initialize(e){}update(e,t){this.temp.copy(this.center).sub(e.position).normalize(),e.velocity.addScaledVector(this.temp,this.magnitude/e.position.distanceToSquared(this.center)*t)}frameUpdate(e){}toJSON(){return{type:this.type,center:[this.center.x,this.center.y,this.center.z],magnitude:this.magnitude}}static fromJSON(e){return new Oi(new G(e.center[0],e.center[1],e.center[2]),e.magnitude)}clone(){return new Oi(this.center.clone(),this.magnitude)}reset(){}}class zi{constructor(e){this.angle=e,this.type="ChangeEmitDirection",this._temp=new G,this._q=new ie,this.memory={data:[],dataCount:0}}initialize(e){const t=e.velocity.length();t!=0&&(e.velocity.normalize(),e.velocity.x===0&&e.velocity.y===0?this._temp.set(0,e.velocity.z,0):this._temp.set(-e.velocity.y,e.velocity.x,0),this.angle.startGen(this.memory),this._q.setFromAxisAngle(this._temp.normalize(),this.angle.genValue(this.memory)),this._temp.copy(e.velocity),e.velocity.applyQuaternion(this._q),this._q.setFromAxisAngle(this._temp,Math.random()*Math.PI*2),e.velocity.applyQuaternion(this._q),e.velocity.setLength(t))}update(e,t){}frameUpdate(e){}toJSON(){return{type:this.type,angle:this.angle.toJSON()}}static fromJSON(e){return new zi(Z(e.angle))}clone(){return new zi(this.angle)}reset(){}}var Nn;(function(r){r[r.Death=0]="Death",r[r.Birth=1]="Birth",r[r.Frame=2]="Frame"})(Nn||(Nn={}));class Ii{constructor(e,t,n,i=Nn.Frame,s=1){this.particleSystem=e,this.useVelocityAsBasis=t,this.subParticleSystem=n,this.mode=i,this.emitProbability=s,this.type="EmitSubParticleSystem",this.q_=new ie,this.v_=new G,this.v2_=new G,this.subEmissions=new Array,this.subParticleSystem&&this.subParticleSystem.system&&(this.subParticleSystem.system.onlyUsedByOther=!0)}initialize(e){}update(e,t){this.mode===Nn.Frame?this.emit(e,t):this.mode===Nn.Birth&&e.age===0?this.emit(e,t):this.mode===Nn.Death&&e.age+t>=e.life&&this.emit(e,t)}emit(e,t){if(!this.subParticleSystem||Math.random()>this.emitProbability)return;const n=new Et;this.setMatrixFromParticle(n,e),this.subEmissions.push({burstParticleCount:0,burstParticleIndex:0,isBursting:!1,burstIndex:0,burstWaveIndex:0,time:0,waitEmiting:0,matrix:n,travelDistance:0,particle:e})}frameUpdate(e){if(this.subParticleSystem)for(let t=0;t<this.subEmissions.length;t++)if(this.subEmissions[t].time>=this.subParticleSystem.system.duration)this.subEmissions[t]=this.subEmissions[this.subEmissions.length-1],this.subEmissions.length=this.subEmissions.length-1,t--;else{const n=this.subEmissions[t];n.particle&&n.particle.age<n.particle.life?this.setMatrixFromParticle(n.matrix,n.particle):n.particle=void 0,this.subParticleSystem.system.emit(e,n,n.matrix)}}toJSON(){return{type:this.type,subParticleSystem:this.subParticleSystem?this.subParticleSystem.uuid:"",useVelocityAsBasis:this.useVelocityAsBasis,mode:this.mode,emitProbability:this.emitProbability}}static fromJSON(e,t){return new Ii(t,e.useVelocityAsBasis,e.subParticleSystem,e.mode,e.emitProbability)}clone(){return new Ii(this.particleSystem,this.useVelocityAsBasis,this.subParticleSystem,this.mode,this.emitProbability)}reset(){}setMatrixFromParticle(e,t){let n;if(t.rotation===void 0||this.useVelocityAsBasis)if(t.velocity.x===0&&t.velocity.y===0&&(t.velocity.z===1||t.velocity.z===0))e.set(1,0,0,t.position.x,0,1,0,t.position.y,0,0,1,t.position.z,0,0,0,1);else{this.v_.copy(Ho).cross(t.velocity),this.v2_.copy(t.velocity).cross(this.v_);const i=this.v_.length(),s=this.v2_.length();e.set(this.v_.x/i,this.v2_.x/s,t.velocity.x,t.position.x,this.v_.y/i,this.v2_.y/s,t.velocity.y,t.position.y,this.v_.z/i,this.v2_.z/s,t.velocity.z,t.position.z,0,0,0,1)}else t.rotation instanceof ie?n=t.rotation:(this.q_.setFromAxisAngle(Ho,t.rotation),n=this.q_),e.compose(t.position,n,ru);this.particleSystem.worldSpace||e.multiplyMatrices(this.particleSystem.emitter.matrixWorld,e)}}const lu=.5*(Math.sqrt(3)-1),$n=(3-Math.sqrt(3))/6,uu=1/3,Rt=1/6,hu=(Math.sqrt(5)-1)/4,Ne=(5-Math.sqrt(5))/20,Oe=new Float32Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]),Me=new Float32Array([0,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,1,0,1,1,1,0,1,-1,1,0,-1,1,1,0,-1,-1,-1,0,1,1,-1,0,1,-1,-1,0,-1,1,-1,0,-1,-1,1,1,0,1,1,1,0,-1,1,-1,0,1,1,-1,0,-1,-1,1,0,1,-1,1,0,-1,-1,-1,0,1,-1,-1,0,-1,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,0]);class Za{constructor(e=Math.random){const t=typeof e=="function"?e:du(e);this.p=fu(t),this.perm=new Uint8Array(512),this.permMod12=new Uint8Array(512);for(let n=0;n<512;n++)this.perm[n]=this.p[n&255],this.permMod12[n]=this.perm[n]%12}noise2D(e,t){const n=this.permMod12,i=this.perm;let s=0,a=0,o=0;const c=(e+t)*lu,l=Math.floor(e+c),h=Math.floor(t+c),d=(l+h)*$n,m=l-d,p=h-d,b=e-m,T=t-p;let g,v;b>T?(g=1,v=0):(g=0,v=1);const _=b-g+$n,x=T-v+$n,C=b-1+2*$n,M=T-1+2*$n,P=l&255,E=h&255;let O=.5-b*b-T*T;if(O>=0){const N=n[P+i[E]]*3;O*=O,s=O*O*(Oe[N]*b+Oe[N+1]*T)}let I=.5-_*_-x*x;if(I>=0){const N=n[P+g+i[E+v]]*3;I*=I,a=I*I*(Oe[N]*_+Oe[N+1]*x)}let R=.5-C*C-M*M;if(R>=0){const N=n[P+1+i[E+1]]*3;R*=R,o=R*R*(Oe[N]*C+Oe[N+1]*M)}return 70*(s+a+o)}noise3D(e,t,n){const i=this.permMod12,s=this.perm;let a,o,c,l;const h=(e+t+n)*uu,d=Math.floor(e+h),m=Math.floor(t+h),p=Math.floor(n+h),b=(d+m+p)*Rt,T=d-b,g=m-b,v=p-b,_=e-T,x=t-g,C=n-v;let M,P,E,O,I,R;_>=x?x>=C?(M=1,P=0,E=0,O=1,I=1,R=0):_>=C?(M=1,P=0,E=0,O=1,I=0,R=1):(M=0,P=0,E=1,O=1,I=0,R=1):x<C?(M=0,P=0,E=1,O=0,I=1,R=1):_<C?(M=0,P=1,E=0,O=0,I=1,R=1):(M=0,P=1,E=0,O=1,I=1,R=0);const N=_-M+Rt,z=x-P+Rt,U=C-E+Rt,F=_-O+2*Rt,J=x-I+2*Rt,$=C-R+2*Rt,K=_-1+3*Rt,W=x-1+3*Rt,me=C-1+3*Rt,ne=d&255,ue=m&255,re=p&255;let ge=.6-_*_-x*x-C*C;if(ge<0)a=0;else{const oe=i[ne+s[ue+s[re]]]*3;ge*=ge,a=ge*ge*(Oe[oe]*_+Oe[oe+1]*x+Oe[oe+2]*C)}let be=.6-N*N-z*z-U*U;if(be<0)o=0;else{const oe=i[ne+M+s[ue+P+s[re+E]]]*3;be*=be,o=be*be*(Oe[oe]*N+Oe[oe+1]*z+Oe[oe+2]*U)}let se=.6-F*F-J*J-$*$;if(se<0)c=0;else{const oe=i[ne+O+s[ue+I+s[re+R]]]*3;se*=se,c=se*se*(Oe[oe]*F+Oe[oe+1]*J+Oe[oe+2]*$)}let he=.6-K*K-W*W-me*me;if(he<0)l=0;else{const oe=i[ne+1+s[ue+1+s[re+1]]]*3;he*=he,l=he*he*(Oe[oe]*K+Oe[oe+1]*W+Oe[oe+2]*me)}return 32*(a+o+c+l)}noise4D(e,t,n,i){const s=this.perm;let a,o,c,l,h;const d=(e+t+n+i)*hu,m=Math.floor(e+d),p=Math.floor(t+d),b=Math.floor(n+d),T=Math.floor(i+d),g=(m+p+b+T)*Ne,v=m-g,_=p-g,x=b-g,C=T-g,M=e-v,P=t-_,E=n-x,O=i-C;let I=0,R=0,N=0,z=0;M>P?I++:R++,M>E?I++:N++,M>O?I++:z++,P>E?R++:N++,P>O?R++:z++,E>O?N++:z++;const U=I>=3?1:0,F=R>=3?1:0,J=N>=3?1:0,$=z>=3?1:0,K=I>=2?1:0,W=R>=2?1:0,me=N>=2?1:0,ne=z>=2?1:0,ue=I>=1?1:0,re=R>=1?1:0,ge=N>=1?1:0,be=z>=1?1:0,se=M-U+Ne,he=P-F+Ne,oe=E-J+Ne,Xe=O-$+Ne,Ve=M-K+2*Ne,Je=P-W+2*Ne,Ye=E-me+2*Ne,xe=O-ne+2*Ne,ye=M-ue+3*Ne,ae=P-re+3*Ne,ut=E-ge+3*Ne,ke=O-be+3*Ne,fe=M-1+4*Ne,it=P-1+4*Ne,vt=E-1+4*Ne,St=O-1+4*Ne,rt=m&255,xt=p&255,ht=b&255,ft=T&255;let _t=.6-M*M-P*P-E*E-O*O;if(_t<0)a=0;else{const Q=s[rt+s[xt+s[ht+s[ft]]]]%32*4;_t*=_t,a=_t*_t*(Me[Q]*M+Me[Q+1]*P+Me[Q+2]*E+Me[Q+3]*O)}let Re=.6-se*se-he*he-oe*oe-Xe*Xe;if(Re<0)o=0;else{const Q=s[rt+U+s[xt+F+s[ht+J+s[ft+$]]]]%32*4;Re*=Re,o=Re*Re*(Me[Q]*se+Me[Q+1]*he+Me[Q+2]*oe+Me[Q+3]*Xe)}let Ze=.6-Ve*Ve-Je*Je-Ye*Ye-xe*xe;if(Ze<0)c=0;else{const Q=s[rt+K+s[xt+W+s[ht+me+s[ft+ne]]]]%32*4;Ze*=Ze,c=Ze*Ze*(Me[Q]*Ve+Me[Q+1]*Je+Me[Q+2]*Ye+Me[Q+3]*xe)}let ct=.6-ye*ye-ae*ae-ut*ut-ke*ke;if(ct<0)l=0;else{const Q=s[rt+ue+s[xt+re+s[ht+ge+s[ft+be]]]]%32*4;ct*=ct,l=ct*ct*(Me[Q]*ye+Me[Q+1]*ae+Me[Q+2]*ut+Me[Q+3]*ke)}let Ke=.6-fe*fe-it*it-vt*vt-St*St;if(Ke<0)h=0;else{const Q=s[rt+1+s[xt+1+s[ht+1+s[ft+1]]]]%32*4;Ke*=Ke,h=Ke*Ke*(Me[Q]*fe+Me[Q+1]*it+Me[Q+2]*vt+Me[Q+3]*St)}return 27*(a+o+c+l+h)}}function fu(r){const e=new Uint8Array(256);for(let t=0;t<256;t++)e[t]=t;for(let t=0;t<255;t++){const n=t+~~(r()*(256-t)),i=e[t];e[t]=e[n],e[n]=i}return e}function du(r){let e=0,t=0,n=0,i=1;const s=pu();return e=s(" "),t=s(" "),n=s(" "),e-=s(r),e<0&&(e+=1),t-=s(r),t<0&&(t+=1),n-=s(r),n<0&&(n+=1),function(){const a=2091639*e+i*23283064365386963e-26;return e=t,t=n,n=a-(i=a|0)}}function pu(){let r=4022871197;return function(e){e=e.toString();for(let t=0;t<e.length;t++){r+=e.charCodeAt(t);let n=.02519603282416938*r;r=n>>>0,n-=r,n*=r,r=n>>>0,n-=r,r+=n*4294967296}return(r>>>0)*23283064365386963e-26}}class Bi{constructor(e,t,n,i){this.scale=e,this.octaves=t,this.velocityMultiplier=n,this.timeScale=i,this.type="TurbulenceField",this.generator=new Za,this.timeOffset=new G,this.temp=new G,this.temp2=new G,this.timeOffset.x=Math.random()/this.scale.x*this.timeScale.x,this.timeOffset.y=Math.random()/this.scale.y*this.timeScale.y,this.timeOffset.z=Math.random()/this.scale.z*this.timeScale.z}initialize(e){}update(e,t){const n=e.position.x/this.scale.x,i=e.position.y/this.scale.y,s=e.position.z/this.scale.z;this.temp.set(0,0,0);let a=1;for(let o=0;o<this.octaves;o++)this.temp2.set(this.generator.noise4D(n*a,i*a,s*a,this.timeOffset.x*a)/a,this.generator.noise4D(n*a,i*a,s*a,this.timeOffset.y*a)/a,this.generator.noise4D(n*a,i*a,s*a,this.timeOffset.z*a)/a),this.temp.add(this.temp2),a*=2;this.temp.multiply(this.velocityMultiplier),e.velocity.addScaledVector(this.temp,t)}toJSON(){return{type:this.type,scale:[this.scale.x,this.scale.y,this.scale.z],octaves:this.octaves,velocityMultiplier:[this.velocityMultiplier.x,this.velocityMultiplier.y,this.velocityMultiplier.z],timeScale:[this.timeScale.x,this.timeScale.y,this.timeScale.z]}}frameUpdate(e){this.timeOffset.x+=e*this.timeScale.x,this.timeOffset.y+=e*this.timeScale.y,this.timeOffset.z+=e*this.timeScale.z}static fromJSON(e){return new Bi(new G(e.scale[0],e.scale[1],e.scale[2]),e.octaves,new G(e.velocityMultiplier[0],e.velocityMultiplier[1],e.velocityMultiplier[2]),new G(e.timeScale[0],e.timeScale[1],e.timeScale[2]))}clone(){return new Bi(this.scale.clone(),this.octaves,this.velocityMultiplier.clone(),this.timeScale.clone())}reset(){}}const At=[],fs=new G,ds=new ie;class Ni{constructor(e,t,n=new ee(1),i=new ee(0)){if(this.frequency=e,this.power=t,this.positionAmount=n,this.rotationAmount=i,this.type="Noise",this.duration=0,At.length===0)for(let s=0;s<100;s++)At.push(new Za)}initialize(e){e.lastPosNoise=new G,typeof e.rotation=="number"?e.lastRotNoise=0:e.lastRotNoise=new ie,e.generatorIndex=[nr(0,100),nr(0,100),nr(0,100),nr(0,100)],this.positionAmount.startGen(e.memory),this.rotationAmount.startGen(e.memory),this.frequency.startGen(e.memory),this.power.startGen(e.memory)}update(e,t){let n=this.frequency.genValue(e.memory,e.age/e.life),i=this.power.genValue(e.memory,e.age/e.life),s=this.positionAmount.genValue(e.memory,e.age/e.life),a=this.rotationAmount.genValue(e.memory,e.age/e.life);s>0&&e.lastPosNoise!==void 0&&(e.position.sub(e.lastPosNoise),fs.set(At[e.generatorIndex[0]].noise2D(0,e.age*n)*i*s,At[e.generatorIndex[1]].noise2D(0,e.age*n)*i*s,At[e.generatorIndex[2]].noise2D(0,e.age*n)*i*s),e.position.add(fs),e.lastPosNoise.copy(fs)),a>0&&e.lastRotNoise!==void 0&&(typeof e.rotation=="number"?(e.rotation-=e.lastRotNoise,e.rotation+=At[e.generatorIndex[3]].noise2D(0,e.age*n)*Math.PI*i*a):(e.lastRotNoise.invert(),e.rotation.multiply(e.lastRotNoise),ds.set(At[e.generatorIndex[0]].noise2D(0,e.age*n)*i*a,At[e.generatorIndex[1]].noise2D(0,e.age*n)*i*a,At[e.generatorIndex[2]].noise2D(0,e.age*n)*i*a,At[e.generatorIndex[3]].noise2D(0,e.age*n)*i*a).normalize(),e.rotation.multiply(ds),e.lastRotNoise.copy(ds)))}toJSON(){return{type:this.type,frequency:this.frequency.toJSON(),power:this.power.toJSON(),positionAmount:this.positionAmount.toJSON(),rotationAmount:this.rotationAmount.toJSON()}}frameUpdate(e){this.duration+=e}static fromJSON(e){return new Ni(Z(e.frequency),Z(e.power),Z(e.positionAmount),Z(e.rotationAmount))}clone(){return new Ni(this.frequency.clone(),this.power.clone(),this.positionAmount.clone(),this.rotationAmount.clone())}reset(){}}class Ui{constructor(e,t){this.color=e,this.speedRange=t,this.type="ColorBySpeed"}initialize(e){this.color.startGen(e.memory)}update(e,t){const n=(e.startSpeed-this.speedRange.a)/(this.speedRange.b-this.speedRange.a);this.color.genColor(e.memory,e.color,n),e.color.x*=e.startColor.x,e.color.y*=e.startColor.y,e.color.z*=e.startColor.z,e.color.w*=e.startColor.w}frameUpdate(e){}toJSON(){return{type:this.type,color:this.color.toJSON(),speedRange:this.speedRange.toJSON()}}static fromJSON(e){return new Ui(io(e.color),Sn.fromJSON(e.speedRange))}clone(){return new Ui(this.color.clone(),this.speedRange.clone())}reset(){}}class Di{initialize(e){this.size.startGen(e.memory)}constructor(e,t){this.size=e,this.speedRange=t,this.type="SizeBySpeed"}update(e){const t=(e.startSpeed-this.speedRange.a)/(this.speedRange.b-this.speedRange.a);this.size instanceof xn?this.size.genValue(e.memory,e.size,t).multiply(e.startSize):e.size.copy(e.startSize).multiplyScalar(this.size.genValue(e.memory,t))}toJSON(){return{type:this.type,size:this.size.toJSON(),speedRange:this.speedRange.toJSON()}}static fromJSON(e){return new Di(Ir(e.size),Sn.fromJSON(e.speedRange))}frameUpdate(e){}clone(){return new Di(this.size.clone(),this.speedRange.clone())}reset(){}}class Li{constructor(e,t){this.angularVelocity=e,this.speedRange=t,this.type="RotationBySpeed",this.tempQuat=new ie}initialize(e){typeof e.rotation=="number"&&this.angularVelocity.startGen(e.memory)}update(e,t){if(typeof e.rotation=="number"){const n=(e.startSpeed-this.speedRange.a)/(this.speedRange.b-this.speedRange.a);e.rotation+=t*this.angularVelocity.genValue(e.memory,n)}}toJSON(){return{type:this.type,angularVelocity:this.angularVelocity.toJSON(),speedRange:this.speedRange.toJSON()}}static fromJSON(e){return new Li(Z(e.angularVelocity),Sn.fromJSON(e.speedRange))}frameUpdate(e){}clone(){return new Li(this.angularVelocity.clone(),this.speedRange.clone())}reset(){}}class Fi{initialize(e){this.speed.startGen(e.memory)}constructor(e,t){this.speed=e,this.dampen=t,this.type="LimitSpeedOverLife"}update(e,t){let n=e.velocity.length(),i=this.speed.genValue(e.memory,e.age/e.life);if(n>i){const s=(n-i)/n;e.velocity.multiplyScalar(1-s*this.dampen*t*20)}}toJSON(){return{type:this.type,speed:this.speed.toJSON(),dampen:this.dampen}}static fromJSON(e){return new Fi(Z(e.speed),e.dampen)}frameUpdate(e){}clone(){return new Fi(this.speed.clone(),this.dampen)}reset(){}}const Nr={ApplyForce:{type:"ApplyForce",constructor:Ai,params:[["direction",["vec3"]],["magnitude",["value"]]],loadJSON:Ai.fromJSON},Noise:{type:"Noise",constructor:Ni,params:[["frequency",["value"]],["power",["value"]],["positionAmount",["value"]],["rotationAmount",["value"]]],loadJSON:Ni.fromJSON},TurbulenceField:{type:"TurbulenceField",constructor:Bi,params:[["scale",["vec3"]],["octaves",["number"]],["velocityMultiplier",["vec3"]],["timeScale",["vec3"]]],loadJSON:Bi.fromJSON},GravityForce:{type:"GravityForce",constructor:Oi,params:[["center",["vec3"]],["magnitude",["number"]]],loadJSON:Oi.fromJSON},ColorOverLife:{type:"ColorOverLife",constructor:bi,params:[["color",["colorFunc"]]],loadJSON:bi.fromJSON},RotationOverLife:{type:"RotationOverLife",constructor:Ti,params:[["angularVelocity",["value","valueFunc"]]],loadJSON:Ti.fromJSON},Rotation3DOverLife:{type:"Rotation3DOverLife",constructor:Mi,params:[["angularVelocity",["rotationFunc"]]],loadJSON:Mi.fromJSON},SizeOverLife:{type:"SizeOverLife",constructor:wi,params:[["size",["value","valueFunc","vec3Func"]]],loadJSON:wi.fromJSON},ColorBySpeed:{type:"ColorBySpeed",constructor:Ui,params:[["color",["colorFunc"]],["speedRange",["range"]]],loadJSON:Ui.fromJSON},RotationBySpeed:{type:"RotationBySpeed",constructor:Li,params:[["angularVelocity",["value","valueFunc"]],["speedRange",["range"]]],loadJSON:Li.fromJSON},SizeBySpeed:{type:"SizeBySpeed",constructor:Di,params:[["size",["value","valueFunc","vec3Func"]],["speedRange",["range"]]],loadJSON:Di.fromJSON},SpeedOverLife:{type:"SpeedOverLife",constructor:Pi,params:[["speed",["value","valueFunc"]]],loadJSON:Pi.fromJSON},FrameOverLife:{type:"FrameOverLife",constructor:Ei,params:[["frame",["value","valueFunc"]]],loadJSON:Ei.fromJSON},ForceOverLife:{type:"ForceOverLife",constructor:Ci,params:[["x",["value","valueFunc"]],["y",["value","valueFunc"]],["z",["value","valueFunc"]]],loadJSON:Ci.fromJSON},OrbitOverLife:{type:"OrbitOverLife",constructor:ki,params:[["orbitSpeed",["value","valueFunc"]],["axis",["vec3"]]],loadJSON:ki.fromJSON},WidthOverLength:{type:"WidthOverLength",constructor:Ri,params:[["width",["value","valueFunc"]]],loadJSON:Ri.fromJSON},ChangeEmitDirection:{type:"ChangeEmitDirection",constructor:zi,params:[["angle",["value"]]],loadJSON:zi.fromJSON},EmitSubParticleSystem:{type:"EmitSubParticleSystem",constructor:Ii,params:[["particleSystem",["self"]],["useVelocityAsBasis",["boolean"]],["subParticleSystem",["particleSystem"]],["mode",["number"]],["emitProbability",["number"]]],loadJSON:Ii.fromJSON},LimitSpeedOverLife:{type:"LimitSpeedOverLife",constructor:Fi,params:[["speed",["value","valueFunc"]],["dampen",["number"]]],loadJSON:Fi.fromJSON}};function mu(r,e){return Nr[r.type]?Nr[r.type].loadJSON(r,e):null}const yu=[];function gu(r){if(!yu.find(t=>t.id===r.id)){for(const t of r.emitterShapes)Is[t.type]||(Is[t.type]=t);for(const t of r.behaviors)Nr[t.type]||(Nr[t.type]=t)}}var vu=`
2
2
  #ifdef SOFT_PARTICLES
3
3
 
4
4
  /* #ifdef LOGDEPTH
@@ -519,7 +519,7 @@ vThicknessMapUv = ( tileTransform * thicknessMapTransform * vec3( THICKNESSMAP_U
519
519
 
520
520
  #endif
521
521
 
522
- `;const Zt=A.ShaderChunk;function wu(){Zt.tile_pars_vertex=Mu,Zt.tile_vertex=Cu,Zt.tile_pars_fragment=Tu,Zt.tile_fragment=bu,Zt.soft_pars_vertex=xu,Zt.soft_vertex=_u,Zt.soft_pars_fragment=Su,Zt.soft_fragment=vu}class Pu extends A.Object3D{constructor(e){super(),this.type="ParticleEmitter",this.system=e}clone(){const e=this.system.clone();return e.emitter.copy(this,!0),e.emitter}dispose(){}extractFromCache(e){const t=[];for(const n in e){const i=e[n];delete i.metadata,t.push(i)}return t}toJSON(e,t={}){const n=this.children;this.children=this.children.filter(s=>s.type!=="ParticleSystemPreview");const i=super.toJSON(e);return this.children=n,this.system!==null&&(i.object.ps=this.system.toJSON(e,t)),i}}exports.RenderMode=void 0;(function(r){r[r.BillBoard=0]="BillBoard",r[r.StretchedBillBoard=1]="StretchedBillBoard",r[r.Mesh=2]="Mesh",r[r.Trail=3]="Trail",r[r.HorizontalBillBoard=4]="HorizontalBillBoard",r[r.VerticalBillBoard=5]="VerticalBillBoard"})(exports.RenderMode||(exports.RenderMode={}));class Ka extends A.Mesh{constructor(e){super(),this.type="VFXBatch",this.maxParticles=1e3,this.systems=new Set;const t=new A.Layers;t.mask=e.layers.mask;const n=e.material.clone();n.defines={},Object.assign(n.defines,e.material.defines),this.settings={instancingGeometry:e.instancingGeometry,renderMode:e.renderMode,renderOrder:e.renderOrder,material:n,uTileCount:e.uTileCount,vTileCount:e.vTileCount,blendTiles:e.blendTiles,softParticles:e.softParticles,softNearFade:e.softNearFade,softFarFade:e.softFarFade,layers:t},this.frustumCulled=!1,this.renderOrder=this.settings.renderOrder}addSystem(e){this.systems.add(e)}removeSystem(e){this.systems.delete(e)}applyDepthTexture(e){const t=this.material.uniforms.depthTexture;t&&t.value!==e&&(t.value=e,this.material.needsUpdate=!0)}}const Eu=new G(0,0,1),ps=new ie,ku=new G,Ru=new G;new G;const qo=60,Au=new A.PlaneGeometry(1,1,1,1);class Ur{set time(e){this.emissionState.time=e}get time(){return this.emissionState.time}get layers(){return this.rendererSettings.layers}get texture(){return this.rendererSettings.material.map}set texture(e){this.rendererSettings.material.map=e,this.neededToUpdateRender=!0}get material(){return this.rendererSettings.material}set material(e){this.rendererSettings.material=e,this.neededToUpdateRender=!0}get uTileCount(){return this.rendererSettings.uTileCount}set uTileCount(e){this.rendererSettings.uTileCount=e,this.neededToUpdateRender=!0}get vTileCount(){return this.rendererSettings.vTileCount}set vTileCount(e){this.rendererSettings.vTileCount=e,this.neededToUpdateRender=!0}get blendTiles(){return this.rendererSettings.blendTiles}set blendTiles(e){this.rendererSettings.blendTiles=e,this.neededToUpdateRender=!0}get softParticles(){return this.rendererSettings.softParticles}set softParticles(e){this.rendererSettings.softParticles=e,this.neededToUpdateRender=!0}get softNearFade(){return this.rendererSettings.softNearFade}set softNearFade(e){this.rendererSettings.softNearFade=e,this.neededToUpdateRender=!0}get softFarFade(){return this.rendererSettings.softFarFade}set softFarFade(e){this.rendererSettings.softFarFade=e,this.neededToUpdateRender=!0}get instancingGeometry(){return this.rendererSettings.instancingGeometry}set instancingGeometry(e){this.restart(),this.particles.length=0,this.rendererSettings.instancingGeometry=e,this.neededToUpdateRender=!0}get renderMode(){return this.rendererSettings.renderMode}set renderMode(e){if((this.rendererSettings.renderMode!=exports.RenderMode.Trail&&e===exports.RenderMode.Trail||this.rendererSettings.renderMode==exports.RenderMode.Trail&&e!==exports.RenderMode.Trail)&&(this.restart(),this.particles.length=0),this.rendererSettings.renderMode!==e)switch(e){case exports.RenderMode.Trail:this.rendererEmitterSettings={startLength:new ee(30),followLocalOrigin:!1};break;case exports.RenderMode.Mesh:this.rendererEmitterSettings={geometry:new A.PlaneGeometry(1,1)},this.startRotation=new mi(new G(0,1,0),new ee(0));break;case exports.RenderMode.StretchedBillBoard:this.rendererEmitterSettings={speedFactor:0,lengthFactor:2},this.rendererSettings.renderMode===exports.RenderMode.Mesh&&(this.startRotation=new ee(0));break;case exports.RenderMode.BillBoard:case exports.RenderMode.VerticalBillBoard:case exports.RenderMode.HorizontalBillBoard:this.rendererEmitterSettings={},this.rendererSettings.renderMode===exports.RenderMode.Mesh&&(this.startRotation=new ee(0));break}this.rendererSettings.renderMode=e,this.neededToUpdateRender=!0}get renderOrder(){return this.rendererSettings.renderOrder}set renderOrder(e){this.rendererSettings.renderOrder=e,this.neededToUpdateRender=!0}get blending(){return this.rendererSettings.material.blending}set blending(e){this.rendererSettings.material.blending=e,this.neededToUpdateRender=!0}constructor(e){var t,n,i,s,a,o,c,l,h,d,m,p,b,T,g,v,x,_,M,C,P,E,z,I,R,N;if(this.temp=new G,this.travelDistance=0,this.normalMatrix=new It,this.memory=[],this.listeners={},this.firstTimeUpdate=!0,this.autoDestroy=e.autoDestroy===void 0?!1:e.autoDestroy,this.duration=(t=e.duration)!==null&&t!==void 0?t:1,this.looping=e.looping===void 0?!0:e.looping,this.prewarm=e.prewarm===void 0?!1:e.prewarm,this.startLife=(n=e.startLife)!==null&&n!==void 0?n:new ee(5),this.startSpeed=(i=e.startSpeed)!==null&&i!==void 0?i:new ee(0),this.startRotation=(s=e.startRotation)!==null&&s!==void 0?s:new ee(0),this.startSize=(a=e.startSize)!==null&&a!==void 0?a:new ee(1),this.startColor=(o=e.startColor)!==null&&o!==void 0?o:new vn(new at(1,1,1,1)),this.emissionOverTime=(c=e.emissionOverTime)!==null&&c!==void 0?c:new ee(10),this.emissionOverDistance=(l=e.emissionOverDistance)!==null&&l!==void 0?l:new ee(0),this.emissionBursts=(h=e.emissionBursts)!==null&&h!==void 0?h:[],this.onlyUsedByOther=(d=e.onlyUsedByOther)!==null&&d!==void 0?d:!1,this.emitterShape=(m=e.shape)!==null&&m!==void 0?m:new Fn,this.behaviors=(p=e.behaviors)!==null&&p!==void 0?p:new Array,this.worldSpace=(b=e.worldSpace)!==null&&b!==void 0?b:!1,this.rendererEmitterSettings=(T=e.rendererEmitterSettings)!==null&&T!==void 0?T:{},e.renderMode===exports.RenderMode.StretchedBillBoard){const O=this.rendererEmitterSettings;e.speedFactor!==void 0&&(O.speedFactor=e.speedFactor),O.speedFactor=(g=O.speedFactor)!==null&&g!==void 0?g:0,O.lengthFactor=(v=O.lengthFactor)!==null&&v!==void 0?v:0}this.rendererSettings={instancingGeometry:(x=e.instancingGeometry)!==null&&x!==void 0?x:Au,renderMode:(_=e.renderMode)!==null&&_!==void 0?_:exports.RenderMode.BillBoard,renderOrder:(M=e.renderOrder)!==null&&M!==void 0?M:0,material:e.material,uTileCount:(C=e.uTileCount)!==null&&C!==void 0?C:1,vTileCount:(P=e.vTileCount)!==null&&P!==void 0?P:1,blendTiles:(E=e.blendTiles)!==null&&E!==void 0?E:!1,softParticles:(z=e.softParticles)!==null&&z!==void 0?z:!1,softNearFade:(I=e.softNearFade)!==null&&I!==void 0?I:0,softFarFade:(R=e.softFarFade)!==null&&R!==void 0?R:0,layers:(N=e.layers)!==null&&N!==void 0?N:new A.Layers},this.neededToUpdateRender=!0,this.particles=new Array,this.startTileIndex=e.startTileIndex||new ee(0),this.emitter=new Pu(this),this.paused=!1,this.particleNum=0,this.emissionState={isBursting:!1,burstParticleIndex:0,burstParticleCount:0,burstIndex:0,burstWaveIndex:0,time:0,waitEmiting:0,travelDistance:0},this.emissionBursts.forEach(O=>O.count.startGen(this.memory)),this.emissionOverDistance.startGen(this.memory),this.emitEnded=!1,this.markForDestroy=!1,this.prewarmed=!1}pause(){this.paused=!0}play(){this.paused=!1}stop(){this.restart(),this.pause()}spawn(e,t,n){ps.setFromRotationMatrix(n);const i=ku,s=ps,a=Ru;n.decompose(i,s,a);for(let o=0;o<e;o++){for(t.burstParticleIndex=o,this.particleNum++;this.particles.length<this.particleNum;)this.rendererSettings.renderMode===exports.RenderMode.Trail?this.particles.push(new Br):this.particles.push(new au);const c=this.particles[this.particleNum-1];if(c.reset(),c.speedModifier=1,this.startColor.startGen(c.memory),this.startColor.genColor(c.memory,c.startColor,this.emissionState.time),c.color.copy(c.startColor),this.startSpeed.startGen(c.memory),c.startSpeed=this.startSpeed.genValue(c.memory,t.time/this.duration),this.startLife.startGen(c.memory),c.life=this.startLife.genValue(c.memory,t.time/this.duration),c.age=0,this.startSize.startGen(c.memory),this.startSize.type==="vec3function")this.startSize.genValue(c.memory,c.startSize,t.time/this.duration);else{const l=this.startSize.genValue(c.memory,t.time/this.duration);c.startSize.set(l,l,l)}if(this.startTileIndex.startGen(c.memory),c.uvTile=this.startTileIndex.genValue(c.memory),c.size.copy(c.startSize),this.rendererSettings.renderMode===exports.RenderMode.Mesh||this.rendererSettings.renderMode===exports.RenderMode.BillBoard||this.rendererSettings.renderMode===exports.RenderMode.VerticalBillBoard||this.rendererSettings.renderMode===exports.RenderMode.HorizontalBillBoard||this.rendererSettings.renderMode===exports.RenderMode.StretchedBillBoard){const l=c;this.startRotation.startGen(c.memory),this.rendererSettings.renderMode===exports.RenderMode.Mesh?(l.rotation instanceof ie||(l.rotation=new ie),this.startRotation.type==="rotation"?this.startRotation.genValue(c.memory,l.rotation,1,t.time/this.duration):l.rotation.setFromAxisAngle(Eu,this.startRotation.genValue(l.memory,t.time/this.duration))):this.startRotation.type==="rotation"?l.rotation=0:l.rotation=this.startRotation.genValue(l.memory,t.time/this.duration)}else if(this.rendererSettings.renderMode===exports.RenderMode.Trail){const l=c;this.rendererEmitterSettings.startLength.startGen(l.memory),l.length=this.rendererEmitterSettings.startLength.genValue(l.memory,t.time/this.duration)}if(this.emitterShape.initialize(c,t),this.rendererSettings.renderMode===exports.RenderMode.Trail&&this.rendererEmitterSettings.followLocalOrigin){const l=c;l.localPosition=new G().copy(l.position)}this.worldSpace?(c.position.applyMatrix4(n),c.startSize.multiply(a).abs(),c.size.copy(c.startSize),c.velocity.multiply(a).applyMatrix3(this.normalMatrix),c.rotation&&c.rotation instanceof ie&&c.rotation.multiplyQuaternions(ps,c.rotation)):this.onlyUsedByOther&&(c.parentMatrix=n);for(let l=0;l<this.behaviors.length;l++)this.behaviors[l].initialize(c,this)}}endEmit(){this.emitEnded=!0,this.autoDestroy&&(this.markForDestroy=!0),this.fire({type:"emitEnd",particleSystem:this})}dispose(){this._renderer&&this._renderer.deleteSystem(this),this.emitter.dispose(),this.emitter.parent&&this.emitter.parent.remove(this.emitter),this.fire({type:"destroy",particleSystem:this})}restart(){this.memory.length=0,this.paused=!1,this.particleNum=0,this.emissionState.isBursting=!1,this.emissionState.burstIndex=0,this.emissionState.burstWaveIndex=0,this.emissionState.time=0,this.emissionState.waitEmiting=0,this.behaviors.forEach(e=>{e.reset()}),this.emitEnded=!1,this.markForDestroy=!1,this.prewarmed=!1,this.emissionBursts.forEach(e=>e.count.startGen(this.memory)),this.emissionOverDistance.startGen(this.memory)}update(e){if(this.paused)return;let t=this.emitter;for(;t.parent;)t=t.parent;if(t.type!=="Scene"){this.dispose();return}if(this.firstTimeUpdate&&(this.firstTimeUpdate=!1,this.emitter.updateWorldMatrix(!0,!1)),this.emitEnded&&this.particleNum===0){this.markForDestroy&&this.emitter.parent&&this.dispose();return}if(this.looping&&this.prewarm&&!this.prewarmed){this.prewarmed=!0;for(let n=0;n<this.duration*qo;n++)this.update(1/qo)}e>.1&&(e=.1),this.neededToUpdateRender&&(this._renderer&&this._renderer.updateSystem(this),this.neededToUpdateRender=!1),this.onlyUsedByOther||this.emit(e,this.emissionState,this.emitter.matrixWorld),this.emitterShape.update(this,e);for(let n=0;n<this.behaviors.length;n++){this.behaviors[n].frameUpdate(e);for(let i=0;i<this.particleNum;i++)this.particles[i].died||this.behaviors[n].update(this.particles[i],e)}for(let n=0;n<this.particleNum;n++)this.rendererEmitterSettings.followLocalOrigin&&this.particles[n].localPosition?(this.particles[n].position.copy(this.particles[n].localPosition),this.particles[n].parentMatrix?this.particles[n].position.applyMatrix4(this.particles[n].parentMatrix):this.particles[n].position.applyMatrix4(this.emitter.matrixWorld)):this.particles[n].position.addScaledVector(this.particles[n].velocity,e*this.particles[n].speedModifier),this.particles[n].age+=e;if(this.rendererSettings.renderMode===exports.RenderMode.Trail)for(let n=0;n<this.particleNum;n++)this.particles[n].update();for(let n=0;n<this.particleNum;n++){const i=this.particles[n];i.died&&(!(i instanceof Br)||i.previous.length===0)&&(this.particles[n]=this.particles[this.particleNum-1],this.particles[this.particleNum-1]=i,this.particleNum--,n--,this.fire({type:"particleDied",particleSystem:this,particle:i}))}}emit(e,t,n){t.time>this.duration&&(this.looping?(t.time-=this.duration,t.burstIndex=0,this.behaviors.forEach(s=>{s.reset()})):!this.emitEnded&&!this.onlyUsedByOther&&this.endEmit()),this.normalMatrix.getNormalMatrix(n);const i=Math.ceil(t.waitEmiting);for(this.spawn(i,t,n),t.waitEmiting-=i;t.burstIndex<this.emissionBursts.length&&this.emissionBursts[t.burstIndex].time<=t.time;){if(Math.random()<this.emissionBursts[t.burstIndex].probability){const s=this.emissionBursts[t.burstIndex].count.genValue(this.memory,this.time);t.isBursting=!0,t.burstParticleCount=s,this.spawn(s,t,n),t.isBursting=!1}t.burstIndex++}if(!this.emitEnded&&(t.waitEmiting+=e*this.emissionOverTime.genValue(this.memory,t.time/this.duration),t.previousWorldPos!=null)){this.temp.set(n.elements[12],n.elements[13],n.elements[14]),t.travelDistance+=t.previousWorldPos.distanceTo(this.temp);const s=this.emissionOverDistance.genValue(this.memory,t.time/this.duration);if(t.travelDistance*s>0){const a=Math.floor(t.travelDistance*s);t.travelDistance-=a/s,t.waitEmiting+=a}}t.previousWorldPos===void 0&&(t.previousWorldPos=new G),t.previousWorldPos.set(n.elements[12],n.elements[13],n.elements[14]),t.time+=e}toJSON(e,t={}){var n;if((e===void 0||typeof e=="string")&&(e={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}}),e.materials[this.rendererSettings.material.uuid]=this.rendererSettings.material.toJSON(e),t.useUrlForImage&&((n=this.texture)===null||n===void 0?void 0:n.source)!==void 0){const o=this.texture.source;e.images[o.uuid]={uuid:o.uuid,url:this.texture.image.url}}let s;this.renderMode===exports.RenderMode.Trail?s={startLength:this.rendererEmitterSettings.startLength.toJSON(),followLocalOrigin:this.rendererEmitterSettings.followLocalOrigin}:this.renderMode===exports.RenderMode.Mesh?s={}:this.renderMode===exports.RenderMode.StretchedBillBoard?s={speedFactor:this.rendererEmitterSettings.speedFactor,lengthFactor:this.rendererEmitterSettings.lengthFactor}:s={};const a=this.rendererSettings.instancingGeometry;return e.geometries&&!e.geometries[a.uuid]&&(e.geometries[a.uuid]=a.toJSON()),{version:"3.0",autoDestroy:this.autoDestroy,looping:this.looping,prewarm:this.prewarm,duration:this.duration,shape:this.emitterShape.toJSON(),startLife:this.startLife.toJSON(),startSpeed:this.startSpeed.toJSON(),startRotation:this.startRotation.toJSON(),startSize:this.startSize.toJSON(),startColor:this.startColor.toJSON(),emissionOverTime:this.emissionOverTime.toJSON(),emissionOverDistance:this.emissionOverDistance.toJSON(),emissionBursts:this.emissionBursts.map(o=>({time:o.time,count:o.count.toJSON(),probability:o.probability,interval:o.interval,cycle:o.cycle})),onlyUsedByOther:this.onlyUsedByOther,instancingGeometry:this.rendererSettings.instancingGeometry.uuid,renderOrder:this.renderOrder,renderMode:this.renderMode,rendererEmitterSettings:s,material:this.rendererSettings.material.uuid,layers:this.layers.mask,startTileIndex:this.startTileIndex.toJSON(),uTileCount:this.uTileCount,vTileCount:this.vTileCount,blendTiles:this.blendTiles,softParticles:this.rendererSettings.softParticles,softFarFade:this.rendererSettings.softFarFade,softNearFade:this.rendererSettings.softNearFade,behaviors:this.behaviors.map(o=>o.toJSON()),worldSpace:this.worldSpace}}static fromJSON(e,t,n){var i,s;const a=su(e.shape,t);let o;if(e.renderMode===exports.RenderMode.Trail){const h=e.rendererEmitterSettings;o={startLength:h.startLength!=null?Z(h.startLength):new ee(30),followLocalOrigin:h.followLocalOrigin}}else e.renderMode===exports.RenderMode.Mesh?o={}:e.renderMode===exports.RenderMode.StretchedBillBoard?(o=e.rendererEmitterSettings,e.speedFactor!=null&&(o.speedFactor=e.speedFactor)):o={};const c=new A.Layers;e.layers&&(c.mask=e.layers);const l=new Ur({autoDestroy:e.autoDestroy,looping:e.looping,prewarm:e.prewarm,duration:e.duration,shape:a,startLife:Z(e.startLife),startSpeed:Z(e.startSpeed),startRotation:Ir(e.startRotation),startSize:Ir(e.startSize),startColor:io(e.startColor),emissionOverTime:Z(e.emissionOverTime),emissionOverDistance:Z(e.emissionOverDistance),emissionBursts:(i=e.emissionBursts)===null||i===void 0?void 0:i.map(h=>{var d,m,p;return{time:h.time,count:typeof h.count=="number"?new ee(h.count):Z(h.count),probability:(d=h.probability)!==null&&d!==void 0?d:1,interval:(m=h.interval)!==null&&m!==void 0?m:.1,cycle:(p=h.cycle)!==null&&p!==void 0?p:1}}),onlyUsedByOther:e.onlyUsedByOther,instancingGeometry:t.geometries[e.instancingGeometry],renderMode:e.renderMode,rendererEmitterSettings:o,renderOrder:e.renderOrder,layers:c,material:e.material?t.materials[e.material]:e.texture?new A.MeshBasicMaterial({map:t.textures[e.texture],transparent:(s=e.transparent)!==null&&s!==void 0?s:!0,blending:e.blending,side:A.DoubleSide}):new A.MeshBasicMaterial({color:16777215,transparent:!0,blending:A.AdditiveBlending,side:A.DoubleSide}),startTileIndex:typeof e.startTileIndex=="number"?new ee(e.startTileIndex):Z(e.startTileIndex),uTileCount:e.uTileCount,vTileCount:e.vTileCount,blendTiles:e.blendTiles,softParticles:e.softParticles,softFarFade:e.softFarFade,softNearFade:e.softNearFade,behaviors:[],worldSpace:e.worldSpace});return l.behaviors=e.behaviors.map(h=>{const d=mu(h,l);return d.type==="EmitSubParticleSystem"&&(n[h.subParticleSystem]=d),d}),l}addBehavior(e){this.behaviors.push(e)}getRendererSettings(){return this.rendererSettings}addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}removeAllEventListeners(e){this.listeners[e]&&(this.listeners[e]=[])}removeEventListener(e,t){if(this.listeners[e]){const n=this.listeners[e].indexOf(t);n!==-1&&this.listeners[e].splice(n,1)}}fire(e){this.listeners[e.type]&&this.listeners[e.type].forEach(t=>t(e))}clone(){const e=[];for(const s of this.emissionBursts){const a={};Object.assign(a,s),e.push(a)}const t=[];for(const s of this.behaviors)t.push(s.clone());let n;this.renderMode===exports.RenderMode.Trail?n={startLength:this.rendererEmitterSettings.startLength.clone(),followLocalOrigin:this.rendererEmitterSettings.followLocalOrigin}:this.renderMode===exports.RenderMode.StretchedBillBoard?n={lengthFactor:this.rendererEmitterSettings.lengthFactor,speedFactor:this.rendererEmitterSettings.speedFactor}:n={};const i=new A.Layers;return i.mask=this.layers.mask,new Ur({autoDestroy:this.autoDestroy,looping:this.looping,duration:this.duration,shape:this.emitterShape.clone(),startLife:this.startLife.clone(),startSpeed:this.startSpeed.clone(),startRotation:this.startRotation.clone(),startSize:this.startSize.clone(),startColor:this.startColor.clone(),emissionOverTime:this.emissionOverTime.clone(),emissionOverDistance:this.emissionOverDistance.clone(),emissionBursts:e,onlyUsedByOther:this.onlyUsedByOther,instancingGeometry:this.rendererSettings.instancingGeometry,renderMode:this.renderMode,renderOrder:this.renderOrder,rendererEmitterSettings:n,material:this.rendererSettings.material,startTileIndex:this.startTileIndex,uTileCount:this.uTileCount,vTileCount:this.vTileCount,blendTiles:this.blendTiles,softParticles:this.softParticles,softFarFade:this.softFarFade,softNearFade:this.softNearFade,behaviors:t,worldSpace:this.worldSpace,layers:i})}}var ms=`
522
+ `;const Zt=A.ShaderChunk;function wu(){Zt.tile_pars_vertex=Mu,Zt.tile_vertex=Cu,Zt.tile_pars_fragment=Tu,Zt.tile_fragment=bu,Zt.soft_pars_vertex=xu,Zt.soft_vertex=_u,Zt.soft_pars_fragment=Su,Zt.soft_fragment=vu}class Pu extends A.Object3D{constructor(e){super(),this.type="ParticleEmitter",this.system=e}clone(){const e=this.system.clone();return e.emitter.copy(this,!0),e.emitter}dispose(){}extractFromCache(e){const t=[];for(const n in e){const i=e[n];delete i.metadata,t.push(i)}return t}toJSON(e,t={}){const n=this.children;this.children=this.children.filter(s=>s.type!=="ParticleSystemPreview");const i=super.toJSON(e);return this.children=n,this.system!==null&&(i.object.ps=this.system.toJSON(e,t)),i}}exports.RenderMode=void 0;(function(r){r[r.BillBoard=0]="BillBoard",r[r.StretchedBillBoard=1]="StretchedBillBoard",r[r.Mesh=2]="Mesh",r[r.Trail=3]="Trail",r[r.HorizontalBillBoard=4]="HorizontalBillBoard",r[r.VerticalBillBoard=5]="VerticalBillBoard"})(exports.RenderMode||(exports.RenderMode={}));class Ka extends A.Mesh{constructor(e){super(),this.type="VFXBatch",this.maxParticles=1e3,this.systems=new Set;const t=new A.Layers;t.mask=e.layers.mask;const n=e.material.clone();n.defines={},Object.assign(n.defines,e.material.defines),this.settings={instancingGeometry:e.instancingGeometry,renderMode:e.renderMode,renderOrder:e.renderOrder,material:n,uTileCount:e.uTileCount,vTileCount:e.vTileCount,blendTiles:e.blendTiles,softParticles:e.softParticles,softNearFade:e.softNearFade,softFarFade:e.softFarFade,layers:t},this.frustumCulled=!1,this.renderOrder=this.settings.renderOrder}addSystem(e){this.systems.add(e)}removeSystem(e){this.systems.delete(e)}applyDepthTexture(e){const t=this.material.uniforms.depthTexture;t&&t.value!==e&&(t.value=e,this.material.needsUpdate=!0)}}const Eu=new G(0,0,1),ps=new ie,ku=new G,Ru=new G;new G;const qo=60,Au=new A.PlaneGeometry(1,1,1,1);class Ur{set time(e){this.emissionState.time=e}get time(){return this.emissionState.time}get layers(){return this.rendererSettings.layers}get texture(){return this.rendererSettings.material.map}set texture(e){this.rendererSettings.material.map=e,this.neededToUpdateRender=!0}get material(){return this.rendererSettings.material}set material(e){this.rendererSettings.material=e,this.neededToUpdateRender=!0}get uTileCount(){return this.rendererSettings.uTileCount}set uTileCount(e){this.rendererSettings.uTileCount=e,this.neededToUpdateRender=!0}get vTileCount(){return this.rendererSettings.vTileCount}set vTileCount(e){this.rendererSettings.vTileCount=e,this.neededToUpdateRender=!0}get blendTiles(){return this.rendererSettings.blendTiles}set blendTiles(e){this.rendererSettings.blendTiles=e,this.neededToUpdateRender=!0}get softParticles(){return this.rendererSettings.softParticles}set softParticles(e){this.rendererSettings.softParticles=e,this.neededToUpdateRender=!0}get softNearFade(){return this.rendererSettings.softNearFade}set softNearFade(e){this.rendererSettings.softNearFade=e,this.neededToUpdateRender=!0}get softFarFade(){return this.rendererSettings.softFarFade}set softFarFade(e){this.rendererSettings.softFarFade=e,this.neededToUpdateRender=!0}get instancingGeometry(){return this.rendererSettings.instancingGeometry}set instancingGeometry(e){this.restart(),this.particles.length=0,this.rendererSettings.instancingGeometry=e,this.neededToUpdateRender=!0}get renderMode(){return this.rendererSettings.renderMode}set renderMode(e){if((this.rendererSettings.renderMode!=exports.RenderMode.Trail&&e===exports.RenderMode.Trail||this.rendererSettings.renderMode==exports.RenderMode.Trail&&e!==exports.RenderMode.Trail)&&(this.restart(),this.particles.length=0),this.rendererSettings.renderMode!==e)switch(e){case exports.RenderMode.Trail:this.rendererEmitterSettings={startLength:new ee(30),followLocalOrigin:!1};break;case exports.RenderMode.Mesh:this.rendererEmitterSettings={geometry:new A.PlaneGeometry(1,1)},this.startRotation=new mi(new G(0,1,0),new ee(0));break;case exports.RenderMode.StretchedBillBoard:this.rendererEmitterSettings={speedFactor:0,lengthFactor:2},this.rendererSettings.renderMode===exports.RenderMode.Mesh&&(this.startRotation=new ee(0));break;case exports.RenderMode.BillBoard:case exports.RenderMode.VerticalBillBoard:case exports.RenderMode.HorizontalBillBoard:this.rendererEmitterSettings={},this.rendererSettings.renderMode===exports.RenderMode.Mesh&&(this.startRotation=new ee(0));break}this.rendererSettings.renderMode=e,this.neededToUpdateRender=!0}get renderOrder(){return this.rendererSettings.renderOrder}set renderOrder(e){this.rendererSettings.renderOrder=e,this.neededToUpdateRender=!0}get blending(){return this.rendererSettings.material.blending}set blending(e){this.rendererSettings.material.blending=e,this.neededToUpdateRender=!0}constructor(e){var t,n,i,s,a,o,c,l,h,d,m,p,b,T,g,v,_,x,C,M,P,E,O,I,R,N;if(this.temp=new G,this.travelDistance=0,this.normalMatrix=new It,this.memory=[],this.listeners={},this.firstTimeUpdate=!0,this.autoDestroy=e.autoDestroy===void 0?!1:e.autoDestroy,this.duration=(t=e.duration)!==null&&t!==void 0?t:1,this.looping=e.looping===void 0?!0:e.looping,this.prewarm=e.prewarm===void 0?!1:e.prewarm,this.startLife=(n=e.startLife)!==null&&n!==void 0?n:new ee(5),this.startSpeed=(i=e.startSpeed)!==null&&i!==void 0?i:new ee(0),this.startRotation=(s=e.startRotation)!==null&&s!==void 0?s:new ee(0),this.startSize=(a=e.startSize)!==null&&a!==void 0?a:new ee(1),this.startColor=(o=e.startColor)!==null&&o!==void 0?o:new vn(new at(1,1,1,1)),this.emissionOverTime=(c=e.emissionOverTime)!==null&&c!==void 0?c:new ee(10),this.emissionOverDistance=(l=e.emissionOverDistance)!==null&&l!==void 0?l:new ee(0),this.emissionBursts=(h=e.emissionBursts)!==null&&h!==void 0?h:[],this.onlyUsedByOther=(d=e.onlyUsedByOther)!==null&&d!==void 0?d:!1,this.emitterShape=(m=e.shape)!==null&&m!==void 0?m:new Fn,this.behaviors=(p=e.behaviors)!==null&&p!==void 0?p:new Array,this.worldSpace=(b=e.worldSpace)!==null&&b!==void 0?b:!1,this.rendererEmitterSettings=(T=e.rendererEmitterSettings)!==null&&T!==void 0?T:{},e.renderMode===exports.RenderMode.StretchedBillBoard){const z=this.rendererEmitterSettings;e.speedFactor!==void 0&&(z.speedFactor=e.speedFactor),z.speedFactor=(g=z.speedFactor)!==null&&g!==void 0?g:0,z.lengthFactor=(v=z.lengthFactor)!==null&&v!==void 0?v:0}this.rendererSettings={instancingGeometry:(_=e.instancingGeometry)!==null&&_!==void 0?_:Au,renderMode:(x=e.renderMode)!==null&&x!==void 0?x:exports.RenderMode.BillBoard,renderOrder:(C=e.renderOrder)!==null&&C!==void 0?C:0,material:e.material,uTileCount:(M=e.uTileCount)!==null&&M!==void 0?M:1,vTileCount:(P=e.vTileCount)!==null&&P!==void 0?P:1,blendTiles:(E=e.blendTiles)!==null&&E!==void 0?E:!1,softParticles:(O=e.softParticles)!==null&&O!==void 0?O:!1,softNearFade:(I=e.softNearFade)!==null&&I!==void 0?I:0,softFarFade:(R=e.softFarFade)!==null&&R!==void 0?R:0,layers:(N=e.layers)!==null&&N!==void 0?N:new A.Layers},this.neededToUpdateRender=!0,this.particles=new Array,this.startTileIndex=e.startTileIndex||new ee(0),this.emitter=new Pu(this),this.paused=!1,this.particleNum=0,this.emissionState={isBursting:!1,burstParticleIndex:0,burstParticleCount:0,burstIndex:0,burstWaveIndex:0,time:0,waitEmiting:0,travelDistance:0},this.emissionBursts.forEach(z=>z.count.startGen(this.memory)),this.emissionOverDistance.startGen(this.memory),this.emitEnded=!1,this.markForDestroy=!1,this.prewarmed=!1}pause(){this.paused=!0}play(){this.paused=!1}stop(){this.restart(),this.pause()}spawn(e,t,n){ps.setFromRotationMatrix(n);const i=ku,s=ps,a=Ru;n.decompose(i,s,a);for(let o=0;o<e;o++){for(t.burstParticleIndex=o,this.particleNum++;this.particles.length<this.particleNum;)this.rendererSettings.renderMode===exports.RenderMode.Trail?this.particles.push(new Br):this.particles.push(new au);const c=this.particles[this.particleNum-1];if(c.reset(),c.speedModifier=1,this.startColor.startGen(c.memory),this.startColor.genColor(c.memory,c.startColor,this.emissionState.time),c.color.copy(c.startColor),this.startSpeed.startGen(c.memory),c.startSpeed=this.startSpeed.genValue(c.memory,t.time/this.duration),this.startLife.startGen(c.memory),c.life=this.startLife.genValue(c.memory,t.time/this.duration),c.age=0,this.startSize.startGen(c.memory),this.startSize.type==="vec3function")this.startSize.genValue(c.memory,c.startSize,t.time/this.duration);else{const l=this.startSize.genValue(c.memory,t.time/this.duration);c.startSize.set(l,l,l)}if(this.startTileIndex.startGen(c.memory),c.uvTile=this.startTileIndex.genValue(c.memory),c.size.copy(c.startSize),this.rendererSettings.renderMode===exports.RenderMode.Mesh||this.rendererSettings.renderMode===exports.RenderMode.BillBoard||this.rendererSettings.renderMode===exports.RenderMode.VerticalBillBoard||this.rendererSettings.renderMode===exports.RenderMode.HorizontalBillBoard||this.rendererSettings.renderMode===exports.RenderMode.StretchedBillBoard){const l=c;this.startRotation.startGen(c.memory),this.rendererSettings.renderMode===exports.RenderMode.Mesh?(l.rotation instanceof ie||(l.rotation=new ie),this.startRotation.type==="rotation"?this.startRotation.genValue(c.memory,l.rotation,1,t.time/this.duration):l.rotation.setFromAxisAngle(Eu,this.startRotation.genValue(l.memory,t.time/this.duration))):this.startRotation.type==="rotation"?l.rotation=0:l.rotation=this.startRotation.genValue(l.memory,t.time/this.duration)}else if(this.rendererSettings.renderMode===exports.RenderMode.Trail){const l=c;this.rendererEmitterSettings.startLength.startGen(l.memory),l.length=this.rendererEmitterSettings.startLength.genValue(l.memory,t.time/this.duration)}if(this.emitterShape.initialize(c,t),this.rendererSettings.renderMode===exports.RenderMode.Trail&&this.rendererEmitterSettings.followLocalOrigin){const l=c;l.localPosition=new G().copy(l.position)}this.worldSpace?(c.position.applyMatrix4(n),c.startSize.multiply(a).abs(),c.size.copy(c.startSize),c.velocity.multiply(a).applyMatrix3(this.normalMatrix),c.rotation&&c.rotation instanceof ie&&c.rotation.multiplyQuaternions(ps,c.rotation)):this.onlyUsedByOther&&(c.parentMatrix=n);for(let l=0;l<this.behaviors.length;l++)this.behaviors[l].initialize(c,this)}}endEmit(){this.emitEnded=!0,this.autoDestroy&&(this.markForDestroy=!0),this.fire({type:"emitEnd",particleSystem:this})}dispose(){this._renderer&&this._renderer.deleteSystem(this),this.emitter.dispose(),this.emitter.parent&&this.emitter.parent.remove(this.emitter),this.fire({type:"destroy",particleSystem:this})}restart(){this.memory.length=0,this.paused=!1,this.particleNum=0,this.emissionState.isBursting=!1,this.emissionState.burstIndex=0,this.emissionState.burstWaveIndex=0,this.emissionState.time=0,this.emissionState.waitEmiting=0,this.behaviors.forEach(e=>{e.reset()}),this.emitEnded=!1,this.markForDestroy=!1,this.prewarmed=!1,this.emissionBursts.forEach(e=>e.count.startGen(this.memory)),this.emissionOverDistance.startGen(this.memory)}update(e){if(this.paused)return;let t=this.emitter;for(;t.parent;)t=t.parent;if(t.type!=="Scene"){this.dispose();return}if(this.firstTimeUpdate&&(this.firstTimeUpdate=!1,this.emitter.updateWorldMatrix(!0,!1)),this.emitEnded&&this.particleNum===0){this.markForDestroy&&this.emitter.parent&&this.dispose();return}if(this.looping&&this.prewarm&&!this.prewarmed){this.prewarmed=!0;for(let n=0;n<this.duration*qo;n++)this.update(1/qo)}e>.1&&(e=.1),this.neededToUpdateRender&&(this._renderer&&this._renderer.updateSystem(this),this.neededToUpdateRender=!1),this.onlyUsedByOther||this.emit(e,this.emissionState,this.emitter.matrixWorld),this.emitterShape.update(this,e);for(let n=0;n<this.behaviors.length;n++){this.behaviors[n].frameUpdate(e);for(let i=0;i<this.particleNum;i++)this.particles[i].died||this.behaviors[n].update(this.particles[i],e)}for(let n=0;n<this.particleNum;n++)this.rendererEmitterSettings.followLocalOrigin&&this.particles[n].localPosition?(this.particles[n].position.copy(this.particles[n].localPosition),this.particles[n].parentMatrix?this.particles[n].position.applyMatrix4(this.particles[n].parentMatrix):this.particles[n].position.applyMatrix4(this.emitter.matrixWorld)):this.particles[n].position.addScaledVector(this.particles[n].velocity,e*this.particles[n].speedModifier),this.particles[n].age+=e;if(this.rendererSettings.renderMode===exports.RenderMode.Trail)for(let n=0;n<this.particleNum;n++)this.particles[n].update();for(let n=0;n<this.particleNum;n++){const i=this.particles[n];i.died&&(!(i instanceof Br)||i.previous.length===0)&&(this.particles[n]=this.particles[this.particleNum-1],this.particles[this.particleNum-1]=i,this.particleNum--,n--,this.fire({type:"particleDied",particleSystem:this,particle:i}))}}emit(e,t,n){t.time>this.duration&&(this.looping?(t.time-=this.duration,t.burstIndex=0,this.behaviors.forEach(s=>{s.reset()})):!this.emitEnded&&!this.onlyUsedByOther&&this.endEmit()),this.normalMatrix.getNormalMatrix(n);const i=Math.ceil(t.waitEmiting);for(this.spawn(i,t,n),t.waitEmiting-=i;t.burstIndex<this.emissionBursts.length&&this.emissionBursts[t.burstIndex].time<=t.time;){if(Math.random()<this.emissionBursts[t.burstIndex].probability){const s=this.emissionBursts[t.burstIndex].count.genValue(this.memory,this.time);t.isBursting=!0,t.burstParticleCount=s,this.spawn(s,t,n),t.isBursting=!1}t.burstIndex++}if(!this.emitEnded&&(t.waitEmiting+=e*this.emissionOverTime.genValue(this.memory,t.time/this.duration),t.previousWorldPos!=null)){this.temp.set(n.elements[12],n.elements[13],n.elements[14]),t.travelDistance+=t.previousWorldPos.distanceTo(this.temp);const s=this.emissionOverDistance.genValue(this.memory,t.time/this.duration);if(t.travelDistance*s>0){const a=Math.floor(t.travelDistance*s);t.travelDistance-=a/s,t.waitEmiting+=a}}t.previousWorldPos===void 0&&(t.previousWorldPos=new G),t.previousWorldPos.set(n.elements[12],n.elements[13],n.elements[14]),t.time+=e}toJSON(e,t={}){var n;if((e===void 0||typeof e=="string")&&(e={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}}),e.materials[this.rendererSettings.material.uuid]=this.rendererSettings.material.toJSON(e),t.useUrlForImage&&((n=this.texture)===null||n===void 0?void 0:n.source)!==void 0){const o=this.texture.source;e.images[o.uuid]={uuid:o.uuid,url:this.texture.image.url}}let s;this.renderMode===exports.RenderMode.Trail?s={startLength:this.rendererEmitterSettings.startLength.toJSON(),followLocalOrigin:this.rendererEmitterSettings.followLocalOrigin}:this.renderMode===exports.RenderMode.Mesh?s={}:this.renderMode===exports.RenderMode.StretchedBillBoard?s={speedFactor:this.rendererEmitterSettings.speedFactor,lengthFactor:this.rendererEmitterSettings.lengthFactor}:s={};const a=this.rendererSettings.instancingGeometry;return e.geometries&&!e.geometries[a.uuid]&&(e.geometries[a.uuid]=a.toJSON()),{version:"3.0",autoDestroy:this.autoDestroy,looping:this.looping,prewarm:this.prewarm,duration:this.duration,shape:this.emitterShape.toJSON(),startLife:this.startLife.toJSON(),startSpeed:this.startSpeed.toJSON(),startRotation:this.startRotation.toJSON(),startSize:this.startSize.toJSON(),startColor:this.startColor.toJSON(),emissionOverTime:this.emissionOverTime.toJSON(),emissionOverDistance:this.emissionOverDistance.toJSON(),emissionBursts:this.emissionBursts.map(o=>({time:o.time,count:o.count.toJSON(),probability:o.probability,interval:o.interval,cycle:o.cycle})),onlyUsedByOther:this.onlyUsedByOther,instancingGeometry:this.rendererSettings.instancingGeometry.uuid,renderOrder:this.renderOrder,renderMode:this.renderMode,rendererEmitterSettings:s,material:this.rendererSettings.material.uuid,layers:this.layers.mask,startTileIndex:this.startTileIndex.toJSON(),uTileCount:this.uTileCount,vTileCount:this.vTileCount,blendTiles:this.blendTiles,softParticles:this.rendererSettings.softParticles,softFarFade:this.rendererSettings.softFarFade,softNearFade:this.rendererSettings.softNearFade,behaviors:this.behaviors.map(o=>o.toJSON()),worldSpace:this.worldSpace}}static fromJSON(e,t,n){var i,s;const a=su(e.shape,t);let o;if(e.renderMode===exports.RenderMode.Trail){const h=e.rendererEmitterSettings;o={startLength:h.startLength!=null?Z(h.startLength):new ee(30),followLocalOrigin:h.followLocalOrigin}}else e.renderMode===exports.RenderMode.Mesh?o={}:e.renderMode===exports.RenderMode.StretchedBillBoard?(o=e.rendererEmitterSettings,e.speedFactor!=null&&(o.speedFactor=e.speedFactor)):o={};const c=new A.Layers;e.layers&&(c.mask=e.layers);const l=new Ur({autoDestroy:e.autoDestroy,looping:e.looping,prewarm:e.prewarm,duration:e.duration,shape:a,startLife:Z(e.startLife),startSpeed:Z(e.startSpeed),startRotation:Ir(e.startRotation),startSize:Ir(e.startSize),startColor:io(e.startColor),emissionOverTime:Z(e.emissionOverTime),emissionOverDistance:Z(e.emissionOverDistance),emissionBursts:(i=e.emissionBursts)===null||i===void 0?void 0:i.map(h=>{var d,m,p;return{time:h.time,count:typeof h.count=="number"?new ee(h.count):Z(h.count),probability:(d=h.probability)!==null&&d!==void 0?d:1,interval:(m=h.interval)!==null&&m!==void 0?m:.1,cycle:(p=h.cycle)!==null&&p!==void 0?p:1}}),onlyUsedByOther:e.onlyUsedByOther,instancingGeometry:t.geometries[e.instancingGeometry],renderMode:e.renderMode,rendererEmitterSettings:o,renderOrder:e.renderOrder,layers:c,material:e.material?t.materials[e.material]:e.texture?new A.MeshBasicMaterial({map:t.textures[e.texture],transparent:(s=e.transparent)!==null&&s!==void 0?s:!0,blending:e.blending,side:A.DoubleSide}):new A.MeshBasicMaterial({color:16777215,transparent:!0,blending:A.AdditiveBlending,side:A.DoubleSide}),startTileIndex:typeof e.startTileIndex=="number"?new ee(e.startTileIndex):Z(e.startTileIndex),uTileCount:e.uTileCount,vTileCount:e.vTileCount,blendTiles:e.blendTiles,softParticles:e.softParticles,softFarFade:e.softFarFade,softNearFade:e.softNearFade,behaviors:[],worldSpace:e.worldSpace});return l.behaviors=e.behaviors.map(h=>{const d=mu(h,l);return d.type==="EmitSubParticleSystem"&&(n[h.subParticleSystem]=d),d}),l}addBehavior(e){this.behaviors.push(e)}getRendererSettings(){return this.rendererSettings}addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}removeAllEventListeners(e){this.listeners[e]&&(this.listeners[e]=[])}removeEventListener(e,t){if(this.listeners[e]){const n=this.listeners[e].indexOf(t);n!==-1&&this.listeners[e].splice(n,1)}}fire(e){this.listeners[e.type]&&this.listeners[e.type].forEach(t=>t(e))}clone(){const e=[];for(const s of this.emissionBursts){const a={};Object.assign(a,s),e.push(a)}const t=[];for(const s of this.behaviors)t.push(s.clone());let n;this.renderMode===exports.RenderMode.Trail?n={startLength:this.rendererEmitterSettings.startLength.clone(),followLocalOrigin:this.rendererEmitterSettings.followLocalOrigin}:this.renderMode===exports.RenderMode.StretchedBillBoard?n={lengthFactor:this.rendererEmitterSettings.lengthFactor,speedFactor:this.rendererEmitterSettings.speedFactor}:n={};const i=new A.Layers;return i.mask=this.layers.mask,new Ur({autoDestroy:this.autoDestroy,looping:this.looping,duration:this.duration,shape:this.emitterShape.clone(),startLife:this.startLife.clone(),startSpeed:this.startSpeed.clone(),startRotation:this.startRotation.clone(),startSize:this.startSize.clone(),startColor:this.startColor.clone(),emissionOverTime:this.emissionOverTime.clone(),emissionOverDistance:this.emissionOverDistance.clone(),emissionBursts:e,onlyUsedByOther:this.onlyUsedByOther,instancingGeometry:this.rendererSettings.instancingGeometry,renderMode:this.renderMode,renderOrder:this.renderOrder,rendererEmitterSettings:n,material:this.rendererSettings.material,startTileIndex:this.startTileIndex,uTileCount:this.uTileCount,vTileCount:this.vTileCount,blendTiles:this.blendTiles,softParticles:this.softParticles,softFarFade:this.softFarFade,softNearFade:this.softNearFade,behaviors:t,worldSpace:this.worldSpace,layers:i})}}var ms=`
523
523
 
524
524
  #include <common>
525
525
  #include <color_pars_fragment>
@@ -1036,7 +1036,7 @@ void main() {
1036
1036
  vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
1037
1037
 
1038
1038
  #include <fog_vertex>
1039
- }`;class Fu extends Ka{constructor(e){super(e),this.vector_=new G,this.vector2_=new G,this.vector3_=new G,this.quaternion_=new ie,this.maxParticles=1e4,this.setupBuffers(),this.rebuildMaterial()}setupBuffers(){this.geometry&&this.geometry.dispose(),this.geometry=new A.BufferGeometry,this.indexBuffer=new A.BufferAttribute(new Uint32Array(this.maxParticles*6),1),this.indexBuffer.setUsage(A.DynamicDrawUsage),this.geometry.setIndex(this.indexBuffer),this.positionBuffer=new A.BufferAttribute(new Float32Array(this.maxParticles*6),3),this.positionBuffer.setUsage(A.DynamicDrawUsage),this.geometry.setAttribute("position",this.positionBuffer),this.previousBuffer=new A.BufferAttribute(new Float32Array(this.maxParticles*6),3),this.previousBuffer.setUsage(A.DynamicDrawUsage),this.geometry.setAttribute("previous",this.previousBuffer),this.nextBuffer=new A.BufferAttribute(new Float32Array(this.maxParticles*6),3),this.nextBuffer.setUsage(A.DynamicDrawUsage),this.geometry.setAttribute("next",this.nextBuffer),this.widthBuffer=new A.BufferAttribute(new Float32Array(this.maxParticles*2),1),this.widthBuffer.setUsage(A.DynamicDrawUsage),this.geometry.setAttribute("width",this.widthBuffer),this.sideBuffer=new A.BufferAttribute(new Float32Array(this.maxParticles*2),1),this.sideBuffer.setUsage(A.DynamicDrawUsage),this.geometry.setAttribute("side",this.sideBuffer),this.uvBuffer=new A.BufferAttribute(new Float32Array(this.maxParticles*4),2),this.uvBuffer.setUsage(A.DynamicDrawUsage),this.geometry.setAttribute("uv",this.uvBuffer),this.colorBuffer=new A.BufferAttribute(new Float32Array(this.maxParticles*8),4),this.colorBuffer.setUsage(A.DynamicDrawUsage),this.geometry.setAttribute("color",this.colorBuffer)}expandBuffers(e){for(;e>=this.maxParticles;)this.maxParticles*=2;this.setupBuffers()}rebuildMaterial(){this.layers.mask=this.settings.layers.mask;const e={lineWidth:{value:1},map:{value:null},useMap:{value:0},alphaMap:{value:null},useAlphaMap:{value:0},resolution:{value:new Dn(1,1)},sizeAttenuation:{value:1},visibility:{value:1},alphaTest:{value:0}},t={};if(t.USE_UV="",t.USE_COLOR_ALPHA="",this.settings.material.map&&(t.USE_MAP="",t.MAP_UV=Bs(this.settings.material.map.channel),e.map=new A.Uniform$1(this.settings.material.map),e.mapTransform=new A.Uniform$1(new It().copy(this.settings.material.map.matrix))),this.settings.material.defines&&this.settings.material.defines.USE_COLOR_AS_ALPHA!==void 0&&(t.USE_COLOR_AS_ALPHA=""),this.settings.renderMode===exports.RenderMode.Trail)this.material=new A.ShaderMaterial({uniforms:e,defines:t,vertexShader:Lu,fragmentShader:Du,transparent:this.settings.material.transparent,depthWrite:!this.settings.material.transparent,side:this.settings.material.side,blending:this.settings.material.blending||A.AdditiveBlending,blendDst:this.settings.material.blendDst,blendSrc:this.settings.material.blendSrc,blendEquation:this.settings.material.blendEquation,premultipliedAlpha:this.settings.material.premultipliedAlpha});else throw new Error("render mode unavailable")}update(){let e=0,t=0,n=0;this.systems.forEach(i=>{for(let s=0;s<i.particleNum;s++)n+=i.particles[s].previous.length*2}),n>this.maxParticles&&this.expandBuffers(n),this.systems.forEach(i=>{i.emitter.updateMatrixWorld&&(i.emitter.updateWorldMatrix(!0,!1),i.emitter.updateMatrixWorld(!0));const s=this.quaternion_,a=this.vector2_,o=this.vector3_;i.emitter.matrixWorld.decompose(a,s,o);const c=i.particles,l=i.particleNum,h=this.settings.uTileCount,d=this.settings.vTileCount,m=1/h,p=1/d;for(let b=0;b<l;b++){const T=c[b],g=T.uvTile%d,v=Math.floor(T.uvTile/d+.001),x=T.previous.values();let _=x.next(),M=_.value,C=M;_.done||(_=x.next());let P;_.value!==void 0?P=_.value:P=C;for(let E=0;E<T.previous.length;E++,e+=2){if(this.positionBuffer.setXYZ(e,C.position.x,C.position.y,C.position.z),this.positionBuffer.setXYZ(e+1,C.position.x,C.position.y,C.position.z),i.worldSpace?(this.positionBuffer.setXYZ(e,C.position.x,C.position.y,C.position.z),this.positionBuffer.setXYZ(e+1,C.position.x,C.position.y,C.position.z)):(T.parentMatrix?this.vector_.copy(C.position).applyMatrix4(T.parentMatrix):this.vector_.copy(C.position).applyMatrix4(i.emitter.matrixWorld),this.positionBuffer.setXYZ(e,this.vector_.x,this.vector_.y,this.vector_.z),this.positionBuffer.setXYZ(e+1,this.vector_.x,this.vector_.y,this.vector_.z)),i.worldSpace?(this.previousBuffer.setXYZ(e,M.position.x,M.position.y,M.position.z),this.previousBuffer.setXYZ(e+1,M.position.x,M.position.y,M.position.z)):(T.parentMatrix?this.vector_.copy(M.position).applyMatrix4(T.parentMatrix):this.vector_.copy(M.position).applyMatrix4(i.emitter.matrixWorld),this.previousBuffer.setXYZ(e,this.vector_.x,this.vector_.y,this.vector_.z),this.previousBuffer.setXYZ(e+1,this.vector_.x,this.vector_.y,this.vector_.z)),i.worldSpace?(this.nextBuffer.setXYZ(e,P.position.x,P.position.y,P.position.z),this.nextBuffer.setXYZ(e+1,P.position.x,P.position.y,P.position.z)):(T.parentMatrix?this.vector_.copy(P.position).applyMatrix4(T.parentMatrix):this.vector_.copy(P.position).applyMatrix4(i.emitter.matrixWorld),this.nextBuffer.setXYZ(e,this.vector_.x,this.vector_.y,this.vector_.z),this.nextBuffer.setXYZ(e+1,this.vector_.x,this.vector_.y,this.vector_.z)),this.sideBuffer.setX(e,-1),this.sideBuffer.setX(e+1,1),i.worldSpace)this.widthBuffer.setX(e,C.size),this.widthBuffer.setX(e+1,C.size);else if(T.parentMatrix)this.widthBuffer.setX(e,C.size),this.widthBuffer.setX(e+1,C.size);else{const z=(Math.abs(o.x)+Math.abs(o.y)+Math.abs(o.z))/3;this.widthBuffer.setX(e,C.size*z),this.widthBuffer.setX(e+1,C.size*z)}this.uvBuffer.setXY(e,(E/T.previous.length+g)*m,(d-v-1)*p),this.uvBuffer.setXY(e+1,(E/T.previous.length+g)*m,(d-v)*p),this.colorBuffer.setXYZW(e,C.color.x,C.color.y,C.color.z,C.color.w),this.colorBuffer.setXYZW(e+1,C.color.x,C.color.y,C.color.z,C.color.w),E+1<T.previous.length&&(this.indexBuffer.setX(t*3,e),this.indexBuffer.setX(t*3+1,e+1),this.indexBuffer.setX(t*3+2,e+2),t++,this.indexBuffer.setX(t*3,e+2),this.indexBuffer.setX(t*3+1,e+1),this.indexBuffer.setX(t*3+2,e+3),t++),M=C,C=P,_.done||(_=x.next(),_.value!==void 0&&(P=_.value))}}}),this.positionBuffer.clearUpdateRanges(),this.positionBuffer.addUpdateRange(0,e*3),this.positionBuffer.needsUpdate=!0,this.previousBuffer.clearUpdateRanges(),this.previousBuffer.addUpdateRange(0,e*3),this.previousBuffer.needsUpdate=!0,this.nextBuffer.clearUpdateRanges(),this.nextBuffer.addUpdateRange(0,e*3),this.nextBuffer.needsUpdate=!0,this.sideBuffer.clearUpdateRanges(),this.sideBuffer.addUpdateRange(0,e),this.sideBuffer.needsUpdate=!0,this.widthBuffer.clearUpdateRanges(),this.widthBuffer.addUpdateRange(0,e),this.widthBuffer.needsUpdate=!0,this.uvBuffer.clearUpdateRanges(),this.uvBuffer.addUpdateRange(0,e*2),this.uvBuffer.needsUpdate=!0,this.colorBuffer.clearUpdateRanges(),this.colorBuffer.addUpdateRange(0,e*4),this.colorBuffer.needsUpdate=!0,this.indexBuffer.clearUpdateRanges(),this.indexBuffer.addUpdateRange(0,t*3),this.indexBuffer.needsUpdate=!0,this.geometry.setDrawRange(0,t*3)}dispose(){this.geometry.dispose()}}class Vi{get geometry(){return this._geometry}set geometry(e){if(this._geometry=e,e===void 0||typeof e=="string")return;const t=new A.Triangle;this._triangleIndexToArea.length=0;let n=0;if(!e.getIndex())return;const i=e.getIndex().array,s=i.length/3;this._triangleIndexToArea.push(0);for(let a=0;a<s;a++)t.setFromAttributeAndIndices(e.getAttribute("position"),i[a*3],i[a*3+1],i[a*3+2]),n+=t.getArea(),this._triangleIndexToArea.push(n);e.userData.triangleIndexToArea=this._triangleIndexToArea}constructor(e){this.type="mesh_surface",this._triangleIndexToArea=[],this._tempA=new A.Vector3,this._tempB=new A.Vector3,this._tempC=new A.Vector3,e&&(this.geometry=e)}initialize(e){const t=this._geometry;if(!t||t.getIndex()===null){e.position.set(0,0,0),e.velocity.set(0,0,1).multiplyScalar(e.startSpeed);return}const n=this._triangleIndexToArea.length-1;let i=0,s=n;const a=Math.random()*this._triangleIndexToArea[n];for(;i+1<s;){const p=Math.floor((i+s)/2);a<this._triangleIndexToArea[p]?s=p:i=p}let o=Math.random(),c=Math.random();o+c>1&&(o=1-o,c=1-c);const l=t.getIndex().array[i*3],h=t.getIndex().array[i*3+1],d=t.getIndex().array[i*3+2],m=t.getAttribute("position");this._tempA.fromBufferAttribute(m,l),this._tempB.fromBufferAttribute(m,h),this._tempC.fromBufferAttribute(m,d),this._tempB.sub(this._tempA),this._tempC.sub(this._tempA),this._tempA.addScaledVector(this._tempB,o).addScaledVector(this._tempC,c),e.position.copy(this._tempA),this._tempA.copy(this._tempB).cross(this._tempC).normalize(),e.velocity.copy(this._tempA).normalize().multiplyScalar(e.startSpeed)}toJSON(){return{type:"mesh_surface",mesh:this._geometry?this._geometry.uuid:""}}static fromJSON(e,t){return new Vi(t.geometries[e.geometry])}clone(){return new Vi(this._geometry)}update(e,t){}}gu({id:"three.quarks",emitterShapes:[{type:"mesh_surface",params:[["geometry",["geometry"]]],constructor:Vi,loadJSON:Vi.fromJSON}],behaviors:[]});class oo extends A.Object3D{constructor(){super(),this.batches=[],this.systemToBatchIndex=new Map,this.type="BatchedRenderer",this.depthTexture=null}static equals(e,t){return e.material.side===t.material.side&&e.material.blending===t.material.blending&&e.material.blendSrc===t.material.blendSrc&&e.material.blendDst===t.material.blendDst&&e.material.blendEquation===t.material.blendEquation&&e.material.premultipliedAlpha===t.material.premultipliedAlpha&&e.material.transparent===t.material.transparent&&e.material.depthTest===t.material.depthTest&&e.material.type===t.material.type&&e.material.alphaTest===t.material.alphaTest&&e.material.map===t.material.map&&e.renderMode===t.renderMode&&e.blendTiles===t.blendTiles&&e.softParticles===t.softParticles&&e.softFarFade===t.softFarFade&&e.softNearFade===t.softNearFade&&e.uTileCount===t.uTileCount&&e.vTileCount===t.vTileCount&&e.instancingGeometry===t.instancingGeometry&&e.renderOrder===t.renderOrder&&e.layers.mask===t.layers.mask}addSystem(e){e._renderer=this;const t=e.getRendererSettings();for(let i=0;i<this.batches.length;i++)if(oo.equals(this.batches[i].settings,t)){this.batches[i].addSystem(e),this.systemToBatchIndex.set(e,i);return}let n;switch(t.renderMode){case exports.RenderMode.Trail:n=new Fu(t);break;case exports.RenderMode.Mesh:case exports.RenderMode.BillBoard:case exports.RenderMode.VerticalBillBoard:case exports.RenderMode.HorizontalBillBoard:case exports.RenderMode.StretchedBillBoard:n=new Uu(t);break}this.depthTexture&&n.applyDepthTexture(this.depthTexture),n.addSystem(e),this.batches.push(n),this.systemToBatchIndex.set(e,this.batches.length-1),this.add(n)}deleteSystem(e){const t=this.systemToBatchIndex.get(e);t!=null&&(this.batches[t].removeSystem(e),this.systemToBatchIndex.delete(e))}setDepthTexture(e){this.depthTexture=e;for(const t of this.batches)t.applyDepthTexture(e)}updateSystem(e){this.deleteSystem(e),this.addSystem(e)}update(e){this.systemToBatchIndex.forEach((t,n)=>{n.update(e)});for(let t=0;t<this.batches.length;t++)this.batches[t].update()}}const Vu=oo;wu();console.log("%c Particle system powered by three.quarks. https://quarks.art/","font-size: 14px; font-weight: bold;");const Qa=Math.sqrt(5),Ju=(Qa-1)/4,Ue=(5-Qa)/20,ir=r=>Math.floor(r)|0,rr=new Float64Array([0,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,1,0,1,1,1,0,1,-1,1,0,-1,1,1,0,-1,-1,-1,0,1,1,-1,0,1,-1,-1,0,-1,1,-1,0,-1,-1,1,1,0,1,1,1,0,-1,1,-1,0,1,1,-1,0,-1,-1,1,0,1,-1,1,0,-1,-1,-1,0,1,-1,-1,0,-1,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,0]);function ju(r=Math.random){const e=Gu(r),t=new Float64Array(e).map(a=>rr[a%32*4]),n=new Float64Array(e).map(a=>rr[a%32*4+1]),i=new Float64Array(e).map(a=>rr[a%32*4+2]),s=new Float64Array(e).map(a=>rr[a%32*4+3]);return function(o,c,l,h){let d,m,p,b,T;const g=(o+c+l+h)*Ju,v=ir(o+g),x=ir(c+g),_=ir(l+g),M=ir(h+g),C=(v+x+_+M)*Ue,P=v-C,E=x-C,z=_-C,I=M-C,R=o-P,N=c-E,O=l-z,U=h-I;let F=0,J=0,$=0,K=0;R>N?F++:J++,R>O?F++:$++,R>U?F++:K++,N>O?J++:$++,N>U?J++:K++,O>U?$++:K++;const W=F>=3?1:0,me=J>=3?1:0,ne=$>=3?1:0,ue=K>=3?1:0,re=F>=2?1:0,ge=J>=2?1:0,be=$>=2?1:0,se=K>=2?1:0,he=F>=1?1:0,oe=J>=1?1:0,Xe=$>=1?1:0,Ve=K>=1?1:0,Je=R-W+Ue,Ye=N-me+Ue,xe=O-ne+Ue,ye=U-ue+Ue,ae=R-re+2*Ue,ut=N-ge+2*Ue,ke=O-be+2*Ue,fe=U-se+2*Ue,it=R-he+3*Ue,vt=N-oe+3*Ue,St=O-Xe+3*Ue,rt=U-Ve+3*Ue,xt=R-1+4*Ue,ht=N-1+4*Ue,ft=O-1+4*Ue,_t=U-1+4*Ue,Re=v&255,Ze=x&255,ct=_&255,Ke=M&255;let Q=.6-R*R-N*N-O*O-U*U;if(Q<0)d=0;else{const le=Re+e[Ze+e[ct+e[Ke]]];Q*=Q,d=Q*Q*(t[le]*R+n[le]*N+i[le]*O+s[le]*U)}let bt=.6-Je*Je-Ye*Ye-xe*xe-ye*ye;if(bt<0)m=0;else{const le=Re+W+e[Ze+me+e[ct+ne+e[Ke+ue]]];bt*=bt,m=bt*bt*(t[le]*Je+n[le]*Ye+i[le]*xe+s[le]*ye)}let Nt=.6-ae*ae-ut*ut-ke*ke-fe*fe;if(Nt<0)p=0;else{const le=Re+re+e[Ze+ge+e[ct+be+e[Ke+se]]];Nt*=Nt,p=Nt*Nt*(t[le]*ae+n[le]*ut+i[le]*ke+s[le]*fe)}let Tt=.6-it*it-vt*vt-St*St-rt*rt;if(Tt<0)b=0;else{const le=Re+he+e[Ze+oe+e[ct+Xe+e[Ke+Ve]]];Tt*=Tt,b=Tt*Tt*(t[le]*it+n[le]*vt+i[le]*St+s[le]*rt)}let Ut=.6-xt*xt-ht*ht-ft*ft-_t*_t;if(Ut<0)T=0;else{const le=Re+1+e[Ze+1+e[ct+1+e[Ke+1]]];Ut*=Ut,T=Ut*Ut*(t[le]*xt+n[le]*ht+i[le]*ft+s[le]*_t)}return 27*(d+m+p+b+T)}}function Gu(r){const t=new Uint8Array(512);for(let n=0;n<512/2;n++)t[n]=n;for(let n=0;n<512/2-1;n++){const i=n+~~(r()*(256-n)),s=t[n];t[n]=t[i],t[i]=s}for(let n=256;n<512;n++)t[n]=t[n-256];return t}function ao(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var ys={exports:{}},Xo;function Yo(){return Xo||(Xo=1,(function(r){var e={};e.useBlobBuilder=(function(){try{return new Blob([]),!1}catch{return!0}})(),e.useArrayBufferView=!e.useBlobBuilder&&(function(){try{return new Blob([new Uint8Array([])]).size===0}catch{return!0}})(),r.exports.binaryFeatures=e;var t=r.exports.BlobBuilder;typeof window<"u"&&(t=r.exports.BlobBuilder=window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder||window.BlobBuilder);function n(){this._pieces=[],this._parts=[]}n.prototype.append=function(i){typeof i=="number"?this._pieces.push(i):(this.flush(),this._parts.push(i))},n.prototype.flush=function(){if(this._pieces.length>0){var i=new Uint8Array(this._pieces);e.useArrayBufferView||(i=i.buffer),this._parts.push(i),this._pieces=[]}},n.prototype.getBuffer=function(){if(this.flush(),e.useBlobBuilder){for(var i=new t,s=0,a=this._parts.length;s<a;s++)i.append(this._parts[s]);return i.getBlob()}else return new Blob(this._parts)},r.exports.BufferBuilder=n})(ys)),ys.exports}var gs,Zo;function Wu(){if(Zo)return gs;Zo=1;var r=Yo().BufferBuilder,e=Yo().binaryFeatures,t={unpack:function(o){var c=new n(o);return c.unpack()},pack:function(o){var c=new i;c.pack(o);var l=c.getBuffer();return l}};gs=t;function n(o){this.index=0,this.dataBuffer=o,this.dataView=new Uint8Array(this.dataBuffer),this.length=this.dataBuffer.byteLength}n.prototype.unpack=function(){var o=this.unpack_uint8();if(o<128)return o;if((o^224)<32)return(o^224)-32;var c;if((c=o^160)<=15)return this.unpack_raw(c);if((c=o^176)<=15)return this.unpack_string(c);if((c=o^144)<=15)return this.unpack_array(c);if((c=o^128)<=15)return this.unpack_map(c);switch(o){case 192:return null;case 193:return;case 194:return!1;case 195:return!0;case 202:return this.unpack_float();case 203:return this.unpack_double();case 204:return this.unpack_uint8();case 205:return this.unpack_uint16();case 206:return this.unpack_uint32();case 207:return this.unpack_uint64();case 208:return this.unpack_int8();case 209:return this.unpack_int16();case 210:return this.unpack_int32();case 211:return this.unpack_int64();case 212:return;case 213:return;case 214:return;case 215:return;case 216:return c=this.unpack_uint16(),this.unpack_string(c);case 217:return c=this.unpack_uint32(),this.unpack_string(c);case 218:return c=this.unpack_uint16(),this.unpack_raw(c);case 219:return c=this.unpack_uint32(),this.unpack_raw(c);case 220:return c=this.unpack_uint16(),this.unpack_array(c);case 221:return c=this.unpack_uint32(),this.unpack_array(c);case 222:return c=this.unpack_uint16(),this.unpack_map(c);case 223:return c=this.unpack_uint32(),this.unpack_map(c)}},n.prototype.unpack_uint8=function(){var o=this.dataView[this.index]&255;return this.index++,o},n.prototype.unpack_uint16=function(){var o=this.read(2),c=(o[0]&255)*256+(o[1]&255);return this.index+=2,c},n.prototype.unpack_uint32=function(){var o=this.read(4),c=((o[0]*256+o[1])*256+o[2])*256+o[3];return this.index+=4,c},n.prototype.unpack_uint64=function(){var o=this.read(8),c=((((((o[0]*256+o[1])*256+o[2])*256+o[3])*256+o[4])*256+o[5])*256+o[6])*256+o[7];return this.index+=8,c},n.prototype.unpack_int8=function(){var o=this.unpack_uint8();return o<128?o:o-256},n.prototype.unpack_int16=function(){var o=this.unpack_uint16();return o<32768?o:o-65536},n.prototype.unpack_int32=function(){var o=this.unpack_uint32();return o<Math.pow(2,31)?o:o-Math.pow(2,32)},n.prototype.unpack_int64=function(){var o=this.unpack_uint64();return o<Math.pow(2,63)?o:o-Math.pow(2,64)},n.prototype.unpack_raw=function(o){if(this.length<this.index+o)throw new Error("BinaryPackFailure: index is out of range "+this.index+" "+o+" "+this.length);var c=this.dataBuffer.slice(this.index,this.index+o);return this.index+=o,c},n.prototype.unpack_string=function(o){for(var c=this.read(o),l=0,h="",d,m;l<o;)d=c[l],d<128?(h+=String.fromCharCode(d),l++):(d^192)<32?(m=(d^192)<<6|c[l+1]&63,h+=String.fromCharCode(m),l+=2):(m=(d&15)<<12|(c[l+1]&63)<<6|c[l+2]&63,h+=String.fromCharCode(m),l+=3);return this.index+=o,h},n.prototype.unpack_array=function(o){for(var c=new Array(o),l=0;l<o;l++)c[l]=this.unpack();return c},n.prototype.unpack_map=function(o){for(var c={},l=0;l<o;l++){var h=this.unpack(),d=this.unpack();c[h]=d}return c},n.prototype.unpack_float=function(){var o=this.unpack_uint32(),c=o>>31,l=(o>>23&255)-127,h=o&8388607|8388608;return(c===0?1:-1)*h*Math.pow(2,l-23)},n.prototype.unpack_double=function(){var o=this.unpack_uint32(),c=this.unpack_uint32(),l=o>>31,h=(o>>20&2047)-1023,d=o&1048575|1048576,m=d*Math.pow(2,h-20)+c*Math.pow(2,h-52);return(l===0?1:-1)*m},n.prototype.read=function(o){var c=this.index;if(c+o<=this.length)return this.dataView.subarray(c,c+o);throw new Error("BinaryPackFailure: read index out of range")};function i(){this.bufferBuilder=new r}i.prototype.getBuffer=function(){return this.bufferBuilder.getBuffer()},i.prototype.pack=function(o){var c=typeof o;if(c==="string")this.pack_string(o);else if(c==="number")Math.floor(o)===o?this.pack_integer(o):this.pack_double(o);else if(c==="boolean")o===!0?this.bufferBuilder.append(195):o===!1&&this.bufferBuilder.append(194);else if(c==="undefined")this.bufferBuilder.append(192);else if(c==="object")if(o===null)this.bufferBuilder.append(192);else{var l=o.constructor;if(l==Array)this.pack_array(o);else if(l==Blob||l==File||o instanceof Blob||o instanceof File)this.pack_bin(o);else if(l==ArrayBuffer)e.useArrayBufferView?this.pack_bin(new Uint8Array(o)):this.pack_bin(o);else if("BYTES_PER_ELEMENT"in o)e.useArrayBufferView?this.pack_bin(new Uint8Array(o.buffer)):this.pack_bin(o.buffer);else if(l==Object||l.toString().startsWith("class"))this.pack_object(o);else if(l==Date)this.pack_string(o.toString());else if(typeof o.toBinaryPack=="function")this.bufferBuilder.append(o.toBinaryPack());else throw new Error('Type "'+l.toString()+'" not yet supported')}else throw new Error('Type "'+c+'" not yet supported');this.bufferBuilder.flush()},i.prototype.pack_bin=function(o){var c=o.length||o.byteLength||o.size;if(c<=15)this.pack_uint8(160+c);else if(c<=65535)this.bufferBuilder.append(218),this.pack_uint16(c);else if(c<=4294967295)this.bufferBuilder.append(219),this.pack_uint32(c);else throw new Error("Invalid length");this.bufferBuilder.append(o)},i.prototype.pack_string=function(o){var c=a(o);if(c<=15)this.pack_uint8(176+c);else if(c<=65535)this.bufferBuilder.append(216),this.pack_uint16(c);else if(c<=4294967295)this.bufferBuilder.append(217),this.pack_uint32(c);else throw new Error("Invalid length");this.bufferBuilder.append(o)},i.prototype.pack_array=function(o){var c=o.length;if(c<=15)this.pack_uint8(144+c);else if(c<=65535)this.bufferBuilder.append(220),this.pack_uint16(c);else if(c<=4294967295)this.bufferBuilder.append(221),this.pack_uint32(c);else throw new Error("Invalid length");for(var l=0;l<c;l++)this.pack(o[l])},i.prototype.pack_integer=function(o){if(o>=-32&&o<=127)this.bufferBuilder.append(o&255);else if(o>=0&&o<=255)this.bufferBuilder.append(204),this.pack_uint8(o);else if(o>=-128&&o<=127)this.bufferBuilder.append(208),this.pack_int8(o);else if(o>=0&&o<=65535)this.bufferBuilder.append(205),this.pack_uint16(o);else if(o>=-32768&&o<=32767)this.bufferBuilder.append(209),this.pack_int16(o);else if(o>=0&&o<=4294967295)this.bufferBuilder.append(206),this.pack_uint32(o);else if(o>=-2147483648&&o<=2147483647)this.bufferBuilder.append(210),this.pack_int32(o);else if(o>=-9223372036854776e3&&o<=9223372036854776e3)this.bufferBuilder.append(211),this.pack_int64(o);else if(o>=0&&o<=18446744073709552e3)this.bufferBuilder.append(207),this.pack_uint64(o);else throw new Error("Invalid integer")},i.prototype.pack_double=function(o){var c=0;o<0&&(c=1,o=-o);var l=Math.floor(Math.log(o)/Math.LN2),h=o/Math.pow(2,l)-1,d=Math.floor(h*Math.pow(2,52)),m=Math.pow(2,32),p=c<<31|l+1023<<20|d/m&1048575,b=d%m;this.bufferBuilder.append(203),this.pack_int32(p),this.pack_int32(b)},i.prototype.pack_object=function(o){var c=Object.keys(o),l=c.length;if(l<=15)this.pack_uint8(128+l);else if(l<=65535)this.bufferBuilder.append(222),this.pack_uint16(l);else if(l<=4294967295)this.bufferBuilder.append(223),this.pack_uint32(l);else throw new Error("Invalid length");for(var h in o)o.hasOwnProperty(h)&&(this.pack(h),this.pack(o[h]))},i.prototype.pack_uint8=function(o){this.bufferBuilder.append(o)},i.prototype.pack_uint16=function(o){this.bufferBuilder.append(o>>8),this.bufferBuilder.append(o&255)},i.prototype.pack_uint32=function(o){var c=o&4294967295;this.bufferBuilder.append((c&4278190080)>>>24),this.bufferBuilder.append((c&16711680)>>>16),this.bufferBuilder.append((c&65280)>>>8),this.bufferBuilder.append(c&255)},i.prototype.pack_uint64=function(o){var c=o/Math.pow(2,32),l=o%Math.pow(2,32);this.bufferBuilder.append((c&4278190080)>>>24),this.bufferBuilder.append((c&16711680)>>>16),this.bufferBuilder.append((c&65280)>>>8),this.bufferBuilder.append(c&255),this.bufferBuilder.append((l&4278190080)>>>24),this.bufferBuilder.append((l&16711680)>>>16),this.bufferBuilder.append((l&65280)>>>8),this.bufferBuilder.append(l&255)},i.prototype.pack_int8=function(o){this.bufferBuilder.append(o&255)},i.prototype.pack_int16=function(o){this.bufferBuilder.append((o&65280)>>8),this.bufferBuilder.append(o&255)},i.prototype.pack_int32=function(o){this.bufferBuilder.append(o>>>24&255),this.bufferBuilder.append((o&16711680)>>>16),this.bufferBuilder.append((o&65280)>>>8),this.bufferBuilder.append(o&255)},i.prototype.pack_int64=function(o){var c=Math.floor(o/Math.pow(2,32)),l=o%Math.pow(2,32);this.bufferBuilder.append((c&4278190080)>>>24),this.bufferBuilder.append((c&16711680)>>>16),this.bufferBuilder.append((c&65280)>>>8),this.bufferBuilder.append(c&255),this.bufferBuilder.append((l&4278190080)>>>24),this.bufferBuilder.append((l&16711680)>>>16),this.bufferBuilder.append((l&65280)>>>8),this.bufferBuilder.append(l&255)};function s(o){var c=o.charCodeAt(0);return c<=2047?"00":c<=65535?"000":c<=2097151?"0000":c<=67108863?"00000":"000000"}function a(o){return o.length>600?new Blob([o]).size:o.replace(/[^\u0000-\u007F]/g,s).length}return gs}var $u=Wu();const Ko=ao($u);let ec=!0,tc=!0;function ii(r,e,t){const n=r.match(e);return n&&n.length>=t&&parseInt(n[t],10)}function jn(r,e,t){if(!r.RTCPeerConnection)return;const n=r.RTCPeerConnection.prototype,i=n.addEventListener;n.addEventListener=function(a,o){if(a!==e)return i.apply(this,arguments);const c=l=>{const h=t(l);h&&(o.handleEvent?o.handleEvent(h):o(h))};return this._eventMap=this._eventMap||{},this._eventMap[e]||(this._eventMap[e]=new Map),this._eventMap[e].set(o,c),i.apply(this,[a,c])};const s=n.removeEventListener;n.removeEventListener=function(a,o){if(a!==e||!this._eventMap||!this._eventMap[e])return s.apply(this,arguments);if(!this._eventMap[e].has(o))return s.apply(this,arguments);const c=this._eventMap[e].get(o);return this._eventMap[e].delete(o),this._eventMap[e].size===0&&delete this._eventMap[e],Object.keys(this._eventMap).length===0&&delete this._eventMap,s.apply(this,[a,c])},Object.defineProperty(n,"on"+e,{get(){return this["_on"+e]},set(a){this["_on"+e]&&(this.removeEventListener(e,this["_on"+e]),delete this["_on"+e]),a&&this.addEventListener(e,this["_on"+e]=a)},enumerable:!0,configurable:!0})}function Hu(r){return typeof r!="boolean"?new Error("Argument type: "+typeof r+". Please use a boolean."):(ec=r,r?"adapter.js logging disabled":"adapter.js logging enabled")}function qu(r){return typeof r!="boolean"?new Error("Argument type: "+typeof r+". Please use a boolean."):(tc=!r,"adapter.js deprecation warnings "+(r?"disabled":"enabled"))}function co(){if(typeof window=="object"){if(ec)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function jr(r,e){tc&&console.warn(r+" is deprecated, please use "+e+" instead.")}function Xu(r){const e={browser:null,version:null};if(typeof r>"u"||!r.navigator)return e.browser="Not a browser.",e;const{navigator:t}=r;if(t.mozGetUserMedia)e.browser="firefox",e.version=ii(t.userAgent,/Firefox\/(\d+)\./,1);else if(t.webkitGetUserMedia||r.isSecureContext===!1&&r.webkitRTCPeerConnection&&!r.RTCIceGatherer)e.browser="chrome",e.version=ii(t.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(t.mediaDevices&&t.userAgent.match(/Edge\/(\d+).(\d+)$/))e.browser="edge",e.version=ii(t.userAgent,/Edge\/(\d+).(\d+)$/,2);else if(r.RTCPeerConnection&&t.userAgent.match(/AppleWebKit\/(\d+)\./))e.browser="safari",e.version=ii(t.userAgent,/AppleWebKit\/(\d+)\./,1),e.supportsUnifiedPlan=r.RTCRtpTransceiver&&"currentDirection"in r.RTCRtpTransceiver.prototype;else return e.browser="Not a supported browser.",e;return e}function Qo(r){return Object.prototype.toString.call(r)==="[object Object]"}function nc(r){return Qo(r)?Object.keys(r).reduce(function(e,t){const n=Qo(r[t]),i=n?nc(r[t]):r[t],s=n&&!Object.keys(i).length;return i===void 0||s?e:Object.assign(e,{[t]:i})},{}):r}function Ns(r,e,t){!e||t.has(e.id)||(t.set(e.id,e),Object.keys(e).forEach(n=>{n.endsWith("Id")?Ns(r,r.get(e[n]),t):n.endsWith("Ids")&&e[n].forEach(i=>{Ns(r,r.get(i),t)})}))}function ea(r,e,t){const n=t?"outbound-rtp":"inbound-rtp",i=new Map;if(e===null)return i;const s=[];return r.forEach(a=>{a.type==="track"&&a.trackIdentifier===e.id&&s.push(a)}),s.forEach(a=>{r.forEach(o=>{o.type===n&&o.trackId===a.id&&Ns(r,o,i)})}),i}const ta=co;function ic(r,e){const t=r&&r.navigator;if(!t.mediaDevices)return;const n=function(o){if(typeof o!="object"||o.mandatory||o.optional)return o;const c={};return Object.keys(o).forEach(l=>{if(l==="require"||l==="advanced"||l==="mediaSource")return;const h=typeof o[l]=="object"?o[l]:{ideal:o[l]};h.exact!==void 0&&typeof h.exact=="number"&&(h.min=h.max=h.exact);const d=function(m,p){return m?m+p.charAt(0).toUpperCase()+p.slice(1):p==="deviceId"?"sourceId":p};if(h.ideal!==void 0){c.optional=c.optional||[];let m={};typeof h.ideal=="number"?(m[d("min",l)]=h.ideal,c.optional.push(m),m={},m[d("max",l)]=h.ideal,c.optional.push(m)):(m[d("",l)]=h.ideal,c.optional.push(m))}h.exact!==void 0&&typeof h.exact!="number"?(c.mandatory=c.mandatory||{},c.mandatory[d("",l)]=h.exact):["min","max"].forEach(m=>{h[m]!==void 0&&(c.mandatory=c.mandatory||{},c.mandatory[d(m,l)]=h[m])})}),o.advanced&&(c.optional=(c.optional||[]).concat(o.advanced)),c},i=function(o,c){if(e.version>=61)return c(o);if(o=JSON.parse(JSON.stringify(o)),o&&typeof o.audio=="object"){const l=function(h,d,m){d in h&&!(m in h)&&(h[m]=h[d],delete h[d])};o=JSON.parse(JSON.stringify(o)),l(o.audio,"autoGainControl","googAutoGainControl"),l(o.audio,"noiseSuppression","googNoiseSuppression"),o.audio=n(o.audio)}if(o&&typeof o.video=="object"){let l=o.video.facingMode;l=l&&(typeof l=="object"?l:{ideal:l});const h=e.version<66;if(l&&(l.exact==="user"||l.exact==="environment"||l.ideal==="user"||l.ideal==="environment")&&!(t.mediaDevices.getSupportedConstraints&&t.mediaDevices.getSupportedConstraints().facingMode&&!h)){delete o.video.facingMode;let d;if(l.exact==="environment"||l.ideal==="environment"?d=["back","rear"]:(l.exact==="user"||l.ideal==="user")&&(d=["front"]),d)return t.mediaDevices.enumerateDevices().then(m=>{m=m.filter(b=>b.kind==="videoinput");let p=m.find(b=>d.some(T=>b.label.toLowerCase().includes(T)));return!p&&m.length&&d.includes("back")&&(p=m[m.length-1]),p&&(o.video.deviceId=l.exact?{exact:p.deviceId}:{ideal:p.deviceId}),o.video=n(o.video),ta("chrome: "+JSON.stringify(o)),c(o)})}o.video=n(o.video)}return ta("chrome: "+JSON.stringify(o)),c(o)},s=function(o){return e.version>=64?o:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[o.name]||o.name,message:o.message,constraint:o.constraint||o.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}},a=function(o,c,l){i(o,h=>{t.webkitGetUserMedia(h,c,d=>{l&&l(s(d))})})};if(t.getUserMedia=a.bind(t),t.mediaDevices.getUserMedia){const o=t.mediaDevices.getUserMedia.bind(t.mediaDevices);Object.getOwnPropertyDescriptor(t.mediaDevices,"getUserMedia")?.writable&&(t.mediaDevices.getUserMedia=function(c){return i(c,l=>o(l).then(h=>{if(l.audio&&!h.getAudioTracks().length||l.video&&!h.getVideoTracks().length)throw h.getTracks().forEach(d=>{d.stop()}),new DOMException("","NotFoundError");return h},h=>Promise.reject(s(h))))})}}function Yu(r,e){if(!(r.navigator.mediaDevices&&"getDisplayMedia"in r.navigator.mediaDevices)&&r.navigator.mediaDevices){if(typeof e!="function"){console.error("shimGetDisplayMedia: getSourceId argument is not a function");return}r.navigator.mediaDevices.getDisplayMedia=function(n){return e(n).then(i=>{const s=n.video&&n.video.width,a=n.video&&n.video.height,o=n.video&&n.video.frameRate;return n.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:i,maxFrameRate:o||3}},s&&(n.video.mandatory.maxWidth=s),a&&(n.video.mandatory.maxHeight=a),r.navigator.mediaDevices.getUserMedia(n)})}}}function rc(r){r.MediaStream=r.MediaStream||r.webkitMediaStream}function sc(r){if(typeof r=="object"&&r.RTCPeerConnection&&!("ontrack"in r.RTCPeerConnection.prototype)){Object.defineProperty(r.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(t){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=t)},enumerable:!0,configurable:!0});const e=r.RTCPeerConnection.prototype.setRemoteDescription;r.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=n=>{n.stream.addEventListener("addtrack",i=>{let s;r.RTCPeerConnection.prototype.getReceivers?s=this.getReceivers().find(o=>o.track&&o.track.id===i.track.id):s={track:i.track};const a=new Event("track");a.track=i.track,a.receiver=s,a.transceiver={receiver:s},a.streams=[n.stream],this.dispatchEvent(a)}),n.stream.getTracks().forEach(i=>{let s;r.RTCPeerConnection.prototype.getReceivers?s=this.getReceivers().find(o=>o.track&&o.track.id===i.id):s={track:i};const a=new Event("track");a.track=i,a.receiver=s,a.transceiver={receiver:s},a.streams=[n.stream],this.dispatchEvent(a)})},this.addEventListener("addstream",this._ontrackpoly)),e.apply(this,arguments)}}else jn(r,"track",e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e))}function oc(r){if(typeof r=="object"&&r.RTCPeerConnection&&!("getSenders"in r.RTCPeerConnection.prototype)&&"createDTMFSender"in r.RTCPeerConnection.prototype){const e=function(i,s){return{track:s,get dtmf(){return this._dtmf===void 0&&(s.kind==="audio"?this._dtmf=i.createDTMFSender(s):this._dtmf=null),this._dtmf},_pc:i}};if(!r.RTCPeerConnection.prototype.getSenders){r.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const i=r.RTCPeerConnection.prototype.addTrack;r.RTCPeerConnection.prototype.addTrack=function(o,c){let l=i.apply(this,arguments);return l||(l=e(this,o),this._senders.push(l)),l};const s=r.RTCPeerConnection.prototype.removeTrack;r.RTCPeerConnection.prototype.removeTrack=function(o){s.apply(this,arguments);const c=this._senders.indexOf(o);c!==-1&&this._senders.splice(c,1)}}const t=r.RTCPeerConnection.prototype.addStream;r.RTCPeerConnection.prototype.addStream=function(s){this._senders=this._senders||[],t.apply(this,[s]),s.getTracks().forEach(a=>{this._senders.push(e(this,a))})};const n=r.RTCPeerConnection.prototype.removeStream;r.RTCPeerConnection.prototype.removeStream=function(s){this._senders=this._senders||[],n.apply(this,[s]),s.getTracks().forEach(a=>{const o=this._senders.find(c=>c.track===a);o&&this._senders.splice(this._senders.indexOf(o),1)})}}else if(typeof r=="object"&&r.RTCPeerConnection&&"getSenders"in r.RTCPeerConnection.prototype&&"createDTMFSender"in r.RTCPeerConnection.prototype&&r.RTCRtpSender&&!("dtmf"in r.RTCRtpSender.prototype)){const e=r.RTCPeerConnection.prototype.getSenders;r.RTCPeerConnection.prototype.getSenders=function(){const n=e.apply(this,[]);return n.forEach(i=>i._pc=this),n},Object.defineProperty(r.RTCRtpSender.prototype,"dtmf",{get(){return this._dtmf===void 0&&(this.track.kind==="audio"?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function ac(r){if(!r.RTCPeerConnection)return;const e=r.RTCPeerConnection.prototype.getStats;r.RTCPeerConnection.prototype.getStats=function(){const[n,i,s]=arguments;if(arguments.length>0&&typeof n=="function")return e.apply(this,arguments);if(e.length===0&&(arguments.length===0||typeof n!="function"))return e.apply(this,[]);const a=function(c){const l={};return c.result().forEach(d=>{const m={id:d.id,timestamp:d.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[d.type]||d.type};d.names().forEach(p=>{m[p]=d.stat(p)}),l[m.id]=m}),l},o=function(c){return new Map(Object.keys(c).map(l=>[l,c[l]]))};if(arguments.length>=2){const c=function(l){i(o(a(l)))};return e.apply(this,[c,n])}return new Promise((c,l)=>{e.apply(this,[function(h){c(o(a(h)))},l])}).then(i,s)}}function cc(r){if(!(typeof r=="object"&&r.RTCPeerConnection&&r.RTCRtpSender&&r.RTCRtpReceiver))return;if(!("getStats"in r.RTCRtpSender.prototype)){const t=r.RTCPeerConnection.prototype.getSenders;t&&(r.RTCPeerConnection.prototype.getSenders=function(){const s=t.apply(this,[]);return s.forEach(a=>a._pc=this),s});const n=r.RTCPeerConnection.prototype.addTrack;n&&(r.RTCPeerConnection.prototype.addTrack=function(){const s=n.apply(this,arguments);return s._pc=this,s}),r.RTCRtpSender.prototype.getStats=function(){const s=this;return this._pc.getStats().then(a=>ea(a,s.track,!0))}}if(!("getStats"in r.RTCRtpReceiver.prototype)){const t=r.RTCPeerConnection.prototype.getReceivers;t&&(r.RTCPeerConnection.prototype.getReceivers=function(){const i=t.apply(this,[]);return i.forEach(s=>s._pc=this),i}),jn(r,"track",n=>(n.receiver._pc=n.srcElement,n)),r.RTCRtpReceiver.prototype.getStats=function(){const i=this;return this._pc.getStats().then(s=>ea(s,i.track,!1))}}if(!("getStats"in r.RTCRtpSender.prototype&&"getStats"in r.RTCRtpReceiver.prototype))return;const e=r.RTCPeerConnection.prototype.getStats;r.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof r.MediaStreamTrack){const n=arguments[0];let i,s,a;return this.getSenders().forEach(o=>{o.track===n&&(i?a=!0:i=o)}),this.getReceivers().forEach(o=>(o.track===n&&(s?a=!0:s=o),o.track===n)),a||i&&s?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):i?i.getStats():s?s.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return e.apply(this,arguments)}}function lc(r){r.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(a=>this._shimmedLocalStreams[a][0])};const e=r.RTCPeerConnection.prototype.addTrack;r.RTCPeerConnection.prototype.addTrack=function(a,o){if(!o)return e.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const c=e.apply(this,arguments);return this._shimmedLocalStreams[o.id]?this._shimmedLocalStreams[o.id].indexOf(c)===-1&&this._shimmedLocalStreams[o.id].push(c):this._shimmedLocalStreams[o.id]=[o,c],c};const t=r.RTCPeerConnection.prototype.addStream;r.RTCPeerConnection.prototype.addStream=function(a){this._shimmedLocalStreams=this._shimmedLocalStreams||{},a.getTracks().forEach(l=>{if(this.getSenders().find(d=>d.track===l))throw new DOMException("Track already exists.","InvalidAccessError")});const o=this.getSenders();t.apply(this,arguments);const c=this.getSenders().filter(l=>o.indexOf(l)===-1);this._shimmedLocalStreams[a.id]=[a].concat(c)};const n=r.RTCPeerConnection.prototype.removeStream;r.RTCPeerConnection.prototype.removeStream=function(a){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[a.id],n.apply(this,arguments)};const i=r.RTCPeerConnection.prototype.removeTrack;r.RTCPeerConnection.prototype.removeTrack=function(a){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},a&&Object.keys(this._shimmedLocalStreams).forEach(o=>{const c=this._shimmedLocalStreams[o].indexOf(a);c!==-1&&this._shimmedLocalStreams[o].splice(c,1),this._shimmedLocalStreams[o].length===1&&delete this._shimmedLocalStreams[o]}),i.apply(this,arguments)}}function uc(r,e){if(!r.RTCPeerConnection)return;if(r.RTCPeerConnection.prototype.addTrack&&e.version>=65)return lc(r);const t=r.RTCPeerConnection.prototype.getLocalStreams;r.RTCPeerConnection.prototype.getLocalStreams=function(){const h=t.apply(this);return this._reverseStreams=this._reverseStreams||{},h.map(d=>this._reverseStreams[d.id])};const n=r.RTCPeerConnection.prototype.addStream;r.RTCPeerConnection.prototype.addStream=function(h){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},h.getTracks().forEach(d=>{if(this.getSenders().find(p=>p.track===d))throw new DOMException("Track already exists.","InvalidAccessError")}),!this._reverseStreams[h.id]){const d=new r.MediaStream(h.getTracks());this._streams[h.id]=d,this._reverseStreams[d.id]=h,h=d}n.apply(this,[h])};const i=r.RTCPeerConnection.prototype.removeStream;r.RTCPeerConnection.prototype.removeStream=function(h){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},i.apply(this,[this._streams[h.id]||h]),delete this._reverseStreams[this._streams[h.id]?this._streams[h.id].id:h.id],delete this._streams[h.id]},r.RTCPeerConnection.prototype.addTrack=function(h,d){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const m=[].slice.call(arguments,1);if(m.length!==1||!m[0].getTracks().find(T=>T===h))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find(T=>T.track===h))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const b=this._streams[d.id];if(b)b.addTrack(h),Promise.resolve().then(()=>{this.dispatchEvent(new Event("negotiationneeded"))});else{const T=new r.MediaStream([h]);this._streams[d.id]=T,this._reverseStreams[T.id]=d,this.addStream(T)}return this.getSenders().find(T=>T.track===h)};function s(l,h){let d=h.sdp;return Object.keys(l._reverseStreams||[]).forEach(m=>{const p=l._reverseStreams[m],b=l._streams[p.id];d=d.replace(new RegExp(b.id,"g"),p.id)}),new RTCSessionDescription({type:h.type,sdp:d})}function a(l,h){let d=h.sdp;return Object.keys(l._reverseStreams||[]).forEach(m=>{const p=l._reverseStreams[m],b=l._streams[p.id];d=d.replace(new RegExp(p.id,"g"),b.id)}),new RTCSessionDescription({type:h.type,sdp:d})}["createOffer","createAnswer"].forEach(function(l){const h=r.RTCPeerConnection.prototype[l],d={[l](){const m=arguments;return arguments.length&&typeof arguments[0]=="function"?h.apply(this,[b=>{const T=s(this,b);m[0].apply(null,[T])},b=>{m[1]&&m[1].apply(null,b)},arguments[2]]):h.apply(this,arguments).then(b=>s(this,b))}};r.RTCPeerConnection.prototype[l]=d[l]});const o=r.RTCPeerConnection.prototype.setLocalDescription;r.RTCPeerConnection.prototype.setLocalDescription=function(){return!arguments.length||!arguments[0].type?o.apply(this,arguments):(arguments[0]=a(this,arguments[0]),o.apply(this,arguments))};const c=Object.getOwnPropertyDescriptor(r.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(r.RTCPeerConnection.prototype,"localDescription",{get(){const l=c.get.apply(this);return l.type===""?l:s(this,l)}}),r.RTCPeerConnection.prototype.removeTrack=function(h){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!h._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(!(h._pc===this))throw new DOMException("Sender was not created by this connection.","InvalidAccessError");this._streams=this._streams||{};let m;Object.keys(this._streams).forEach(p=>{this._streams[p].getTracks().find(T=>h.track===T)&&(m=this._streams[p])}),m&&(m.getTracks().length===1?this.removeStream(this._reverseStreams[m.id]):m.removeTrack(h.track),this.dispatchEvent(new Event("negotiationneeded")))}}function Us(r,e){!r.RTCPeerConnection&&r.webkitRTCPeerConnection&&(r.RTCPeerConnection=r.webkitRTCPeerConnection),r.RTCPeerConnection&&e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){const n=r.RTCPeerConnection.prototype[t],i={[t](){return arguments[0]=new(t==="addIceCandidate"?r.RTCIceCandidate:r.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}};r.RTCPeerConnection.prototype[t]=i[t]})}function hc(r,e){jn(r,"negotiationneeded",t=>{const n=t.target;if(!((e.version<72||n.getConfiguration&&n.getConfiguration().sdpSemantics==="plan-b")&&n.signalingState!=="stable"))return t})}const na=Object.freeze(Object.defineProperty({__proto__:null,fixNegotiationNeeded:hc,shimAddTrackRemoveTrack:uc,shimAddTrackRemoveTrackWithNative:lc,shimGetDisplayMedia:Yu,shimGetSendersWithDtmf:oc,shimGetStats:ac,shimGetUserMedia:ic,shimMediaStream:rc,shimOnTrack:sc,shimPeerConnection:Us,shimSenderReceiverGetStats:cc},Symbol.toStringTag,{value:"Module"}));function Zu(r,e){let t=!1;return r=JSON.parse(JSON.stringify(r)),r.filter(n=>{if(n&&(n.urls||n.url)){let i=n.urls||n.url;n.url&&!n.urls&&jr("RTCIceServer.url","RTCIceServer.urls");const s=typeof i=="string";return s&&(i=[i]),i=i.filter(a=>{if(a.indexOf("stun:")===0)return!1;const o=a.startsWith("turn")&&!a.startsWith("turn:[")&&a.includes("transport=udp");return o&&!t?(t=!0,!0):o&&!t}),delete n.url,n.urls=s?i[0]:i,!!i.length}})}var vs={exports:{}},ia;function fc(){return ia||(ia=1,(function(r){var e={};e.generateIdentifier=function(){return Math.random().toString(36).substr(2,10)},e.localCName=e.generateIdentifier(),e.splitLines=function(t){return t.trim().split(`
1039
+ }`;class Fu extends Ka{constructor(e){super(e),this.vector_=new G,this.vector2_=new G,this.vector3_=new G,this.quaternion_=new ie,this.maxParticles=1e4,this.setupBuffers(),this.rebuildMaterial()}setupBuffers(){this.geometry&&this.geometry.dispose(),this.geometry=new A.BufferGeometry,this.indexBuffer=new A.BufferAttribute(new Uint32Array(this.maxParticles*6),1),this.indexBuffer.setUsage(A.DynamicDrawUsage),this.geometry.setIndex(this.indexBuffer),this.positionBuffer=new A.BufferAttribute(new Float32Array(this.maxParticles*6),3),this.positionBuffer.setUsage(A.DynamicDrawUsage),this.geometry.setAttribute("position",this.positionBuffer),this.previousBuffer=new A.BufferAttribute(new Float32Array(this.maxParticles*6),3),this.previousBuffer.setUsage(A.DynamicDrawUsage),this.geometry.setAttribute("previous",this.previousBuffer),this.nextBuffer=new A.BufferAttribute(new Float32Array(this.maxParticles*6),3),this.nextBuffer.setUsage(A.DynamicDrawUsage),this.geometry.setAttribute("next",this.nextBuffer),this.widthBuffer=new A.BufferAttribute(new Float32Array(this.maxParticles*2),1),this.widthBuffer.setUsage(A.DynamicDrawUsage),this.geometry.setAttribute("width",this.widthBuffer),this.sideBuffer=new A.BufferAttribute(new Float32Array(this.maxParticles*2),1),this.sideBuffer.setUsage(A.DynamicDrawUsage),this.geometry.setAttribute("side",this.sideBuffer),this.uvBuffer=new A.BufferAttribute(new Float32Array(this.maxParticles*4),2),this.uvBuffer.setUsage(A.DynamicDrawUsage),this.geometry.setAttribute("uv",this.uvBuffer),this.colorBuffer=new A.BufferAttribute(new Float32Array(this.maxParticles*8),4),this.colorBuffer.setUsage(A.DynamicDrawUsage),this.geometry.setAttribute("color",this.colorBuffer)}expandBuffers(e){for(;e>=this.maxParticles;)this.maxParticles*=2;this.setupBuffers()}rebuildMaterial(){this.layers.mask=this.settings.layers.mask;const e={lineWidth:{value:1},map:{value:null},useMap:{value:0},alphaMap:{value:null},useAlphaMap:{value:0},resolution:{value:new Dn(1,1)},sizeAttenuation:{value:1},visibility:{value:1},alphaTest:{value:0}},t={};if(t.USE_UV="",t.USE_COLOR_ALPHA="",this.settings.material.map&&(t.USE_MAP="",t.MAP_UV=Bs(this.settings.material.map.channel),e.map=new A.Uniform$1(this.settings.material.map),e.mapTransform=new A.Uniform$1(new It().copy(this.settings.material.map.matrix))),this.settings.material.defines&&this.settings.material.defines.USE_COLOR_AS_ALPHA!==void 0&&(t.USE_COLOR_AS_ALPHA=""),this.settings.renderMode===exports.RenderMode.Trail)this.material=new A.ShaderMaterial({uniforms:e,defines:t,vertexShader:Lu,fragmentShader:Du,transparent:this.settings.material.transparent,depthWrite:!this.settings.material.transparent,side:this.settings.material.side,blending:this.settings.material.blending||A.AdditiveBlending,blendDst:this.settings.material.blendDst,blendSrc:this.settings.material.blendSrc,blendEquation:this.settings.material.blendEquation,premultipliedAlpha:this.settings.material.premultipliedAlpha});else throw new Error("render mode unavailable")}update(){let e=0,t=0,n=0;this.systems.forEach(i=>{for(let s=0;s<i.particleNum;s++)n+=i.particles[s].previous.length*2}),n>this.maxParticles&&this.expandBuffers(n),this.systems.forEach(i=>{i.emitter.updateMatrixWorld&&(i.emitter.updateWorldMatrix(!0,!1),i.emitter.updateMatrixWorld(!0));const s=this.quaternion_,a=this.vector2_,o=this.vector3_;i.emitter.matrixWorld.decompose(a,s,o);const c=i.particles,l=i.particleNum,h=this.settings.uTileCount,d=this.settings.vTileCount,m=1/h,p=1/d;for(let b=0;b<l;b++){const T=c[b],g=T.uvTile%d,v=Math.floor(T.uvTile/d+.001),_=T.previous.values();let x=_.next(),C=x.value,M=C;x.done||(x=_.next());let P;x.value!==void 0?P=x.value:P=M;for(let E=0;E<T.previous.length;E++,e+=2){if(this.positionBuffer.setXYZ(e,M.position.x,M.position.y,M.position.z),this.positionBuffer.setXYZ(e+1,M.position.x,M.position.y,M.position.z),i.worldSpace?(this.positionBuffer.setXYZ(e,M.position.x,M.position.y,M.position.z),this.positionBuffer.setXYZ(e+1,M.position.x,M.position.y,M.position.z)):(T.parentMatrix?this.vector_.copy(M.position).applyMatrix4(T.parentMatrix):this.vector_.copy(M.position).applyMatrix4(i.emitter.matrixWorld),this.positionBuffer.setXYZ(e,this.vector_.x,this.vector_.y,this.vector_.z),this.positionBuffer.setXYZ(e+1,this.vector_.x,this.vector_.y,this.vector_.z)),i.worldSpace?(this.previousBuffer.setXYZ(e,C.position.x,C.position.y,C.position.z),this.previousBuffer.setXYZ(e+1,C.position.x,C.position.y,C.position.z)):(T.parentMatrix?this.vector_.copy(C.position).applyMatrix4(T.parentMatrix):this.vector_.copy(C.position).applyMatrix4(i.emitter.matrixWorld),this.previousBuffer.setXYZ(e,this.vector_.x,this.vector_.y,this.vector_.z),this.previousBuffer.setXYZ(e+1,this.vector_.x,this.vector_.y,this.vector_.z)),i.worldSpace?(this.nextBuffer.setXYZ(e,P.position.x,P.position.y,P.position.z),this.nextBuffer.setXYZ(e+1,P.position.x,P.position.y,P.position.z)):(T.parentMatrix?this.vector_.copy(P.position).applyMatrix4(T.parentMatrix):this.vector_.copy(P.position).applyMatrix4(i.emitter.matrixWorld),this.nextBuffer.setXYZ(e,this.vector_.x,this.vector_.y,this.vector_.z),this.nextBuffer.setXYZ(e+1,this.vector_.x,this.vector_.y,this.vector_.z)),this.sideBuffer.setX(e,-1),this.sideBuffer.setX(e+1,1),i.worldSpace)this.widthBuffer.setX(e,M.size),this.widthBuffer.setX(e+1,M.size);else if(T.parentMatrix)this.widthBuffer.setX(e,M.size),this.widthBuffer.setX(e+1,M.size);else{const O=(Math.abs(o.x)+Math.abs(o.y)+Math.abs(o.z))/3;this.widthBuffer.setX(e,M.size*O),this.widthBuffer.setX(e+1,M.size*O)}this.uvBuffer.setXY(e,(E/T.previous.length+g)*m,(d-v-1)*p),this.uvBuffer.setXY(e+1,(E/T.previous.length+g)*m,(d-v)*p),this.colorBuffer.setXYZW(e,M.color.x,M.color.y,M.color.z,M.color.w),this.colorBuffer.setXYZW(e+1,M.color.x,M.color.y,M.color.z,M.color.w),E+1<T.previous.length&&(this.indexBuffer.setX(t*3,e),this.indexBuffer.setX(t*3+1,e+1),this.indexBuffer.setX(t*3+2,e+2),t++,this.indexBuffer.setX(t*3,e+2),this.indexBuffer.setX(t*3+1,e+1),this.indexBuffer.setX(t*3+2,e+3),t++),C=M,M=P,x.done||(x=_.next(),x.value!==void 0&&(P=x.value))}}}),this.positionBuffer.clearUpdateRanges(),this.positionBuffer.addUpdateRange(0,e*3),this.positionBuffer.needsUpdate=!0,this.previousBuffer.clearUpdateRanges(),this.previousBuffer.addUpdateRange(0,e*3),this.previousBuffer.needsUpdate=!0,this.nextBuffer.clearUpdateRanges(),this.nextBuffer.addUpdateRange(0,e*3),this.nextBuffer.needsUpdate=!0,this.sideBuffer.clearUpdateRanges(),this.sideBuffer.addUpdateRange(0,e),this.sideBuffer.needsUpdate=!0,this.widthBuffer.clearUpdateRanges(),this.widthBuffer.addUpdateRange(0,e),this.widthBuffer.needsUpdate=!0,this.uvBuffer.clearUpdateRanges(),this.uvBuffer.addUpdateRange(0,e*2),this.uvBuffer.needsUpdate=!0,this.colorBuffer.clearUpdateRanges(),this.colorBuffer.addUpdateRange(0,e*4),this.colorBuffer.needsUpdate=!0,this.indexBuffer.clearUpdateRanges(),this.indexBuffer.addUpdateRange(0,t*3),this.indexBuffer.needsUpdate=!0,this.geometry.setDrawRange(0,t*3)}dispose(){this.geometry.dispose()}}class Vi{get geometry(){return this._geometry}set geometry(e){if(this._geometry=e,e===void 0||typeof e=="string")return;const t=new A.Triangle;this._triangleIndexToArea.length=0;let n=0;if(!e.getIndex())return;const i=e.getIndex().array,s=i.length/3;this._triangleIndexToArea.push(0);for(let a=0;a<s;a++)t.setFromAttributeAndIndices(e.getAttribute("position"),i[a*3],i[a*3+1],i[a*3+2]),n+=t.getArea(),this._triangleIndexToArea.push(n);e.userData.triangleIndexToArea=this._triangleIndexToArea}constructor(e){this.type="mesh_surface",this._triangleIndexToArea=[],this._tempA=new A.Vector3,this._tempB=new A.Vector3,this._tempC=new A.Vector3,e&&(this.geometry=e)}initialize(e){const t=this._geometry;if(!t||t.getIndex()===null){e.position.set(0,0,0),e.velocity.set(0,0,1).multiplyScalar(e.startSpeed);return}const n=this._triangleIndexToArea.length-1;let i=0,s=n;const a=Math.random()*this._triangleIndexToArea[n];for(;i+1<s;){const p=Math.floor((i+s)/2);a<this._triangleIndexToArea[p]?s=p:i=p}let o=Math.random(),c=Math.random();o+c>1&&(o=1-o,c=1-c);const l=t.getIndex().array[i*3],h=t.getIndex().array[i*3+1],d=t.getIndex().array[i*3+2],m=t.getAttribute("position");this._tempA.fromBufferAttribute(m,l),this._tempB.fromBufferAttribute(m,h),this._tempC.fromBufferAttribute(m,d),this._tempB.sub(this._tempA),this._tempC.sub(this._tempA),this._tempA.addScaledVector(this._tempB,o).addScaledVector(this._tempC,c),e.position.copy(this._tempA),this._tempA.copy(this._tempB).cross(this._tempC).normalize(),e.velocity.copy(this._tempA).normalize().multiplyScalar(e.startSpeed)}toJSON(){return{type:"mesh_surface",mesh:this._geometry?this._geometry.uuid:""}}static fromJSON(e,t){return new Vi(t.geometries[e.geometry])}clone(){return new Vi(this._geometry)}update(e,t){}}gu({id:"three.quarks",emitterShapes:[{type:"mesh_surface",params:[["geometry",["geometry"]]],constructor:Vi,loadJSON:Vi.fromJSON}],behaviors:[]});class oo extends A.Object3D{constructor(){super(),this.batches=[],this.systemToBatchIndex=new Map,this.type="BatchedRenderer",this.depthTexture=null}static equals(e,t){return e.material.side===t.material.side&&e.material.blending===t.material.blending&&e.material.blendSrc===t.material.blendSrc&&e.material.blendDst===t.material.blendDst&&e.material.blendEquation===t.material.blendEquation&&e.material.premultipliedAlpha===t.material.premultipliedAlpha&&e.material.transparent===t.material.transparent&&e.material.depthTest===t.material.depthTest&&e.material.type===t.material.type&&e.material.alphaTest===t.material.alphaTest&&e.material.map===t.material.map&&e.renderMode===t.renderMode&&e.blendTiles===t.blendTiles&&e.softParticles===t.softParticles&&e.softFarFade===t.softFarFade&&e.softNearFade===t.softNearFade&&e.uTileCount===t.uTileCount&&e.vTileCount===t.vTileCount&&e.instancingGeometry===t.instancingGeometry&&e.renderOrder===t.renderOrder&&e.layers.mask===t.layers.mask}addSystem(e){e._renderer=this;const t=e.getRendererSettings();for(let i=0;i<this.batches.length;i++)if(oo.equals(this.batches[i].settings,t)){this.batches[i].addSystem(e),this.systemToBatchIndex.set(e,i);return}let n;switch(t.renderMode){case exports.RenderMode.Trail:n=new Fu(t);break;case exports.RenderMode.Mesh:case exports.RenderMode.BillBoard:case exports.RenderMode.VerticalBillBoard:case exports.RenderMode.HorizontalBillBoard:case exports.RenderMode.StretchedBillBoard:n=new Uu(t);break}this.depthTexture&&n.applyDepthTexture(this.depthTexture),n.addSystem(e),this.batches.push(n),this.systemToBatchIndex.set(e,this.batches.length-1),this.add(n)}deleteSystem(e){const t=this.systemToBatchIndex.get(e);t!=null&&(this.batches[t].removeSystem(e),this.systemToBatchIndex.delete(e))}setDepthTexture(e){this.depthTexture=e;for(const t of this.batches)t.applyDepthTexture(e)}updateSystem(e){this.deleteSystem(e),this.addSystem(e)}update(e){this.systemToBatchIndex.forEach((t,n)=>{n.update(e)});for(let t=0;t<this.batches.length;t++)this.batches[t].update()}}const Vu=oo;wu();console.log("%c Particle system powered by three.quarks. https://quarks.art/","font-size: 14px; font-weight: bold;");const Qa=Math.sqrt(5),Ju=(Qa-1)/4,Ue=(5-Qa)/20,ir=r=>Math.floor(r)|0,rr=new Float64Array([0,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,1,0,1,1,1,0,1,-1,1,0,-1,1,1,0,-1,-1,-1,0,1,1,-1,0,1,-1,-1,0,-1,1,-1,0,-1,-1,1,1,0,1,1,1,0,-1,1,-1,0,1,1,-1,0,-1,-1,1,0,1,-1,1,0,-1,-1,-1,0,1,-1,-1,0,-1,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,0]);function ju(r=Math.random){const e=Gu(r),t=new Float64Array(e).map(a=>rr[a%32*4]),n=new Float64Array(e).map(a=>rr[a%32*4+1]),i=new Float64Array(e).map(a=>rr[a%32*4+2]),s=new Float64Array(e).map(a=>rr[a%32*4+3]);return function(o,c,l,h){let d,m,p,b,T;const g=(o+c+l+h)*Ju,v=ir(o+g),_=ir(c+g),x=ir(l+g),C=ir(h+g),M=(v+_+x+C)*Ue,P=v-M,E=_-M,O=x-M,I=C-M,R=o-P,N=c-E,z=l-O,U=h-I;let F=0,J=0,$=0,K=0;R>N?F++:J++,R>z?F++:$++,R>U?F++:K++,N>z?J++:$++,N>U?J++:K++,z>U?$++:K++;const W=F>=3?1:0,me=J>=3?1:0,ne=$>=3?1:0,ue=K>=3?1:0,re=F>=2?1:0,ge=J>=2?1:0,be=$>=2?1:0,se=K>=2?1:0,he=F>=1?1:0,oe=J>=1?1:0,Xe=$>=1?1:0,Ve=K>=1?1:0,Je=R-W+Ue,Ye=N-me+Ue,xe=z-ne+Ue,ye=U-ue+Ue,ae=R-re+2*Ue,ut=N-ge+2*Ue,ke=z-be+2*Ue,fe=U-se+2*Ue,it=R-he+3*Ue,vt=N-oe+3*Ue,St=z-Xe+3*Ue,rt=U-Ve+3*Ue,xt=R-1+4*Ue,ht=N-1+4*Ue,ft=z-1+4*Ue,_t=U-1+4*Ue,Re=v&255,Ze=_&255,ct=x&255,Ke=C&255;let Q=.6-R*R-N*N-z*z-U*U;if(Q<0)d=0;else{const le=Re+e[Ze+e[ct+e[Ke]]];Q*=Q,d=Q*Q*(t[le]*R+n[le]*N+i[le]*z+s[le]*U)}let bt=.6-Je*Je-Ye*Ye-xe*xe-ye*ye;if(bt<0)m=0;else{const le=Re+W+e[Ze+me+e[ct+ne+e[Ke+ue]]];bt*=bt,m=bt*bt*(t[le]*Je+n[le]*Ye+i[le]*xe+s[le]*ye)}let Nt=.6-ae*ae-ut*ut-ke*ke-fe*fe;if(Nt<0)p=0;else{const le=Re+re+e[Ze+ge+e[ct+be+e[Ke+se]]];Nt*=Nt,p=Nt*Nt*(t[le]*ae+n[le]*ut+i[le]*ke+s[le]*fe)}let Tt=.6-it*it-vt*vt-St*St-rt*rt;if(Tt<0)b=0;else{const le=Re+he+e[Ze+oe+e[ct+Xe+e[Ke+Ve]]];Tt*=Tt,b=Tt*Tt*(t[le]*it+n[le]*vt+i[le]*St+s[le]*rt)}let Ut=.6-xt*xt-ht*ht-ft*ft-_t*_t;if(Ut<0)T=0;else{const le=Re+1+e[Ze+1+e[ct+1+e[Ke+1]]];Ut*=Ut,T=Ut*Ut*(t[le]*xt+n[le]*ht+i[le]*ft+s[le]*_t)}return 27*(d+m+p+b+T)}}function Gu(r){const t=new Uint8Array(512);for(let n=0;n<512/2;n++)t[n]=n;for(let n=0;n<512/2-1;n++){const i=n+~~(r()*(256-n)),s=t[n];t[n]=t[i],t[i]=s}for(let n=256;n<512;n++)t[n]=t[n-256];return t}function ao(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var ys={exports:{}},Xo;function Yo(){return Xo||(Xo=1,(function(r){var e={};e.useBlobBuilder=(function(){try{return new Blob([]),!1}catch{return!0}})(),e.useArrayBufferView=!e.useBlobBuilder&&(function(){try{return new Blob([new Uint8Array([])]).size===0}catch{return!0}})(),r.exports.binaryFeatures=e;var t=r.exports.BlobBuilder;typeof window<"u"&&(t=r.exports.BlobBuilder=window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder||window.BlobBuilder);function n(){this._pieces=[],this._parts=[]}n.prototype.append=function(i){typeof i=="number"?this._pieces.push(i):(this.flush(),this._parts.push(i))},n.prototype.flush=function(){if(this._pieces.length>0){var i=new Uint8Array(this._pieces);e.useArrayBufferView||(i=i.buffer),this._parts.push(i),this._pieces=[]}},n.prototype.getBuffer=function(){if(this.flush(),e.useBlobBuilder){for(var i=new t,s=0,a=this._parts.length;s<a;s++)i.append(this._parts[s]);return i.getBlob()}else return new Blob(this._parts)},r.exports.BufferBuilder=n})(ys)),ys.exports}var gs,Zo;function Wu(){if(Zo)return gs;Zo=1;var r=Yo().BufferBuilder,e=Yo().binaryFeatures,t={unpack:function(o){var c=new n(o);return c.unpack()},pack:function(o){var c=new i;c.pack(o);var l=c.getBuffer();return l}};gs=t;function n(o){this.index=0,this.dataBuffer=o,this.dataView=new Uint8Array(this.dataBuffer),this.length=this.dataBuffer.byteLength}n.prototype.unpack=function(){var o=this.unpack_uint8();if(o<128)return o;if((o^224)<32)return(o^224)-32;var c;if((c=o^160)<=15)return this.unpack_raw(c);if((c=o^176)<=15)return this.unpack_string(c);if((c=o^144)<=15)return this.unpack_array(c);if((c=o^128)<=15)return this.unpack_map(c);switch(o){case 192:return null;case 193:return;case 194:return!1;case 195:return!0;case 202:return this.unpack_float();case 203:return this.unpack_double();case 204:return this.unpack_uint8();case 205:return this.unpack_uint16();case 206:return this.unpack_uint32();case 207:return this.unpack_uint64();case 208:return this.unpack_int8();case 209:return this.unpack_int16();case 210:return this.unpack_int32();case 211:return this.unpack_int64();case 212:return;case 213:return;case 214:return;case 215:return;case 216:return c=this.unpack_uint16(),this.unpack_string(c);case 217:return c=this.unpack_uint32(),this.unpack_string(c);case 218:return c=this.unpack_uint16(),this.unpack_raw(c);case 219:return c=this.unpack_uint32(),this.unpack_raw(c);case 220:return c=this.unpack_uint16(),this.unpack_array(c);case 221:return c=this.unpack_uint32(),this.unpack_array(c);case 222:return c=this.unpack_uint16(),this.unpack_map(c);case 223:return c=this.unpack_uint32(),this.unpack_map(c)}},n.prototype.unpack_uint8=function(){var o=this.dataView[this.index]&255;return this.index++,o},n.prototype.unpack_uint16=function(){var o=this.read(2),c=(o[0]&255)*256+(o[1]&255);return this.index+=2,c},n.prototype.unpack_uint32=function(){var o=this.read(4),c=((o[0]*256+o[1])*256+o[2])*256+o[3];return this.index+=4,c},n.prototype.unpack_uint64=function(){var o=this.read(8),c=((((((o[0]*256+o[1])*256+o[2])*256+o[3])*256+o[4])*256+o[5])*256+o[6])*256+o[7];return this.index+=8,c},n.prototype.unpack_int8=function(){var o=this.unpack_uint8();return o<128?o:o-256},n.prototype.unpack_int16=function(){var o=this.unpack_uint16();return o<32768?o:o-65536},n.prototype.unpack_int32=function(){var o=this.unpack_uint32();return o<Math.pow(2,31)?o:o-Math.pow(2,32)},n.prototype.unpack_int64=function(){var o=this.unpack_uint64();return o<Math.pow(2,63)?o:o-Math.pow(2,64)},n.prototype.unpack_raw=function(o){if(this.length<this.index+o)throw new Error("BinaryPackFailure: index is out of range "+this.index+" "+o+" "+this.length);var c=this.dataBuffer.slice(this.index,this.index+o);return this.index+=o,c},n.prototype.unpack_string=function(o){for(var c=this.read(o),l=0,h="",d,m;l<o;)d=c[l],d<128?(h+=String.fromCharCode(d),l++):(d^192)<32?(m=(d^192)<<6|c[l+1]&63,h+=String.fromCharCode(m),l+=2):(m=(d&15)<<12|(c[l+1]&63)<<6|c[l+2]&63,h+=String.fromCharCode(m),l+=3);return this.index+=o,h},n.prototype.unpack_array=function(o){for(var c=new Array(o),l=0;l<o;l++)c[l]=this.unpack();return c},n.prototype.unpack_map=function(o){for(var c={},l=0;l<o;l++){var h=this.unpack(),d=this.unpack();c[h]=d}return c},n.prototype.unpack_float=function(){var o=this.unpack_uint32(),c=o>>31,l=(o>>23&255)-127,h=o&8388607|8388608;return(c===0?1:-1)*h*Math.pow(2,l-23)},n.prototype.unpack_double=function(){var o=this.unpack_uint32(),c=this.unpack_uint32(),l=o>>31,h=(o>>20&2047)-1023,d=o&1048575|1048576,m=d*Math.pow(2,h-20)+c*Math.pow(2,h-52);return(l===0?1:-1)*m},n.prototype.read=function(o){var c=this.index;if(c+o<=this.length)return this.dataView.subarray(c,c+o);throw new Error("BinaryPackFailure: read index out of range")};function i(){this.bufferBuilder=new r}i.prototype.getBuffer=function(){return this.bufferBuilder.getBuffer()},i.prototype.pack=function(o){var c=typeof o;if(c==="string")this.pack_string(o);else if(c==="number")Math.floor(o)===o?this.pack_integer(o):this.pack_double(o);else if(c==="boolean")o===!0?this.bufferBuilder.append(195):o===!1&&this.bufferBuilder.append(194);else if(c==="undefined")this.bufferBuilder.append(192);else if(c==="object")if(o===null)this.bufferBuilder.append(192);else{var l=o.constructor;if(l==Array)this.pack_array(o);else if(l==Blob||l==File||o instanceof Blob||o instanceof File)this.pack_bin(o);else if(l==ArrayBuffer)e.useArrayBufferView?this.pack_bin(new Uint8Array(o)):this.pack_bin(o);else if("BYTES_PER_ELEMENT"in o)e.useArrayBufferView?this.pack_bin(new Uint8Array(o.buffer)):this.pack_bin(o.buffer);else if(l==Object||l.toString().startsWith("class"))this.pack_object(o);else if(l==Date)this.pack_string(o.toString());else if(typeof o.toBinaryPack=="function")this.bufferBuilder.append(o.toBinaryPack());else throw new Error('Type "'+l.toString()+'" not yet supported')}else throw new Error('Type "'+c+'" not yet supported');this.bufferBuilder.flush()},i.prototype.pack_bin=function(o){var c=o.length||o.byteLength||o.size;if(c<=15)this.pack_uint8(160+c);else if(c<=65535)this.bufferBuilder.append(218),this.pack_uint16(c);else if(c<=4294967295)this.bufferBuilder.append(219),this.pack_uint32(c);else throw new Error("Invalid length");this.bufferBuilder.append(o)},i.prototype.pack_string=function(o){var c=a(o);if(c<=15)this.pack_uint8(176+c);else if(c<=65535)this.bufferBuilder.append(216),this.pack_uint16(c);else if(c<=4294967295)this.bufferBuilder.append(217),this.pack_uint32(c);else throw new Error("Invalid length");this.bufferBuilder.append(o)},i.prototype.pack_array=function(o){var c=o.length;if(c<=15)this.pack_uint8(144+c);else if(c<=65535)this.bufferBuilder.append(220),this.pack_uint16(c);else if(c<=4294967295)this.bufferBuilder.append(221),this.pack_uint32(c);else throw new Error("Invalid length");for(var l=0;l<c;l++)this.pack(o[l])},i.prototype.pack_integer=function(o){if(o>=-32&&o<=127)this.bufferBuilder.append(o&255);else if(o>=0&&o<=255)this.bufferBuilder.append(204),this.pack_uint8(o);else if(o>=-128&&o<=127)this.bufferBuilder.append(208),this.pack_int8(o);else if(o>=0&&o<=65535)this.bufferBuilder.append(205),this.pack_uint16(o);else if(o>=-32768&&o<=32767)this.bufferBuilder.append(209),this.pack_int16(o);else if(o>=0&&o<=4294967295)this.bufferBuilder.append(206),this.pack_uint32(o);else if(o>=-2147483648&&o<=2147483647)this.bufferBuilder.append(210),this.pack_int32(o);else if(o>=-9223372036854776e3&&o<=9223372036854776e3)this.bufferBuilder.append(211),this.pack_int64(o);else if(o>=0&&o<=18446744073709552e3)this.bufferBuilder.append(207),this.pack_uint64(o);else throw new Error("Invalid integer")},i.prototype.pack_double=function(o){var c=0;o<0&&(c=1,o=-o);var l=Math.floor(Math.log(o)/Math.LN2),h=o/Math.pow(2,l)-1,d=Math.floor(h*Math.pow(2,52)),m=Math.pow(2,32),p=c<<31|l+1023<<20|d/m&1048575,b=d%m;this.bufferBuilder.append(203),this.pack_int32(p),this.pack_int32(b)},i.prototype.pack_object=function(o){var c=Object.keys(o),l=c.length;if(l<=15)this.pack_uint8(128+l);else if(l<=65535)this.bufferBuilder.append(222),this.pack_uint16(l);else if(l<=4294967295)this.bufferBuilder.append(223),this.pack_uint32(l);else throw new Error("Invalid length");for(var h in o)o.hasOwnProperty(h)&&(this.pack(h),this.pack(o[h]))},i.prototype.pack_uint8=function(o){this.bufferBuilder.append(o)},i.prototype.pack_uint16=function(o){this.bufferBuilder.append(o>>8),this.bufferBuilder.append(o&255)},i.prototype.pack_uint32=function(o){var c=o&4294967295;this.bufferBuilder.append((c&4278190080)>>>24),this.bufferBuilder.append((c&16711680)>>>16),this.bufferBuilder.append((c&65280)>>>8),this.bufferBuilder.append(c&255)},i.prototype.pack_uint64=function(o){var c=o/Math.pow(2,32),l=o%Math.pow(2,32);this.bufferBuilder.append((c&4278190080)>>>24),this.bufferBuilder.append((c&16711680)>>>16),this.bufferBuilder.append((c&65280)>>>8),this.bufferBuilder.append(c&255),this.bufferBuilder.append((l&4278190080)>>>24),this.bufferBuilder.append((l&16711680)>>>16),this.bufferBuilder.append((l&65280)>>>8),this.bufferBuilder.append(l&255)},i.prototype.pack_int8=function(o){this.bufferBuilder.append(o&255)},i.prototype.pack_int16=function(o){this.bufferBuilder.append((o&65280)>>8),this.bufferBuilder.append(o&255)},i.prototype.pack_int32=function(o){this.bufferBuilder.append(o>>>24&255),this.bufferBuilder.append((o&16711680)>>>16),this.bufferBuilder.append((o&65280)>>>8),this.bufferBuilder.append(o&255)},i.prototype.pack_int64=function(o){var c=Math.floor(o/Math.pow(2,32)),l=o%Math.pow(2,32);this.bufferBuilder.append((c&4278190080)>>>24),this.bufferBuilder.append((c&16711680)>>>16),this.bufferBuilder.append((c&65280)>>>8),this.bufferBuilder.append(c&255),this.bufferBuilder.append((l&4278190080)>>>24),this.bufferBuilder.append((l&16711680)>>>16),this.bufferBuilder.append((l&65280)>>>8),this.bufferBuilder.append(l&255)};function s(o){var c=o.charCodeAt(0);return c<=2047?"00":c<=65535?"000":c<=2097151?"0000":c<=67108863?"00000":"000000"}function a(o){return o.length>600?new Blob([o]).size:o.replace(/[^\u0000-\u007F]/g,s).length}return gs}var $u=Wu();const Ko=ao($u);let ec=!0,tc=!0;function ii(r,e,t){const n=r.match(e);return n&&n.length>=t&&parseInt(n[t],10)}function jn(r,e,t){if(!r.RTCPeerConnection)return;const n=r.RTCPeerConnection.prototype,i=n.addEventListener;n.addEventListener=function(a,o){if(a!==e)return i.apply(this,arguments);const c=l=>{const h=t(l);h&&(o.handleEvent?o.handleEvent(h):o(h))};return this._eventMap=this._eventMap||{},this._eventMap[e]||(this._eventMap[e]=new Map),this._eventMap[e].set(o,c),i.apply(this,[a,c])};const s=n.removeEventListener;n.removeEventListener=function(a,o){if(a!==e||!this._eventMap||!this._eventMap[e])return s.apply(this,arguments);if(!this._eventMap[e].has(o))return s.apply(this,arguments);const c=this._eventMap[e].get(o);return this._eventMap[e].delete(o),this._eventMap[e].size===0&&delete this._eventMap[e],Object.keys(this._eventMap).length===0&&delete this._eventMap,s.apply(this,[a,c])},Object.defineProperty(n,"on"+e,{get(){return this["_on"+e]},set(a){this["_on"+e]&&(this.removeEventListener(e,this["_on"+e]),delete this["_on"+e]),a&&this.addEventListener(e,this["_on"+e]=a)},enumerable:!0,configurable:!0})}function Hu(r){return typeof r!="boolean"?new Error("Argument type: "+typeof r+". Please use a boolean."):(ec=r,r?"adapter.js logging disabled":"adapter.js logging enabled")}function qu(r){return typeof r!="boolean"?new Error("Argument type: "+typeof r+". Please use a boolean."):(tc=!r,"adapter.js deprecation warnings "+(r?"disabled":"enabled"))}function co(){if(typeof window=="object"){if(ec)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function jr(r,e){tc&&console.warn(r+" is deprecated, please use "+e+" instead.")}function Xu(r){const e={browser:null,version:null};if(typeof r>"u"||!r.navigator)return e.browser="Not a browser.",e;const{navigator:t}=r;if(t.mozGetUserMedia)e.browser="firefox",e.version=ii(t.userAgent,/Firefox\/(\d+)\./,1);else if(t.webkitGetUserMedia||r.isSecureContext===!1&&r.webkitRTCPeerConnection&&!r.RTCIceGatherer)e.browser="chrome",e.version=ii(t.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(t.mediaDevices&&t.userAgent.match(/Edge\/(\d+).(\d+)$/))e.browser="edge",e.version=ii(t.userAgent,/Edge\/(\d+).(\d+)$/,2);else if(r.RTCPeerConnection&&t.userAgent.match(/AppleWebKit\/(\d+)\./))e.browser="safari",e.version=ii(t.userAgent,/AppleWebKit\/(\d+)\./,1),e.supportsUnifiedPlan=r.RTCRtpTransceiver&&"currentDirection"in r.RTCRtpTransceiver.prototype;else return e.browser="Not a supported browser.",e;return e}function Qo(r){return Object.prototype.toString.call(r)==="[object Object]"}function nc(r){return Qo(r)?Object.keys(r).reduce(function(e,t){const n=Qo(r[t]),i=n?nc(r[t]):r[t],s=n&&!Object.keys(i).length;return i===void 0||s?e:Object.assign(e,{[t]:i})},{}):r}function Ns(r,e,t){!e||t.has(e.id)||(t.set(e.id,e),Object.keys(e).forEach(n=>{n.endsWith("Id")?Ns(r,r.get(e[n]),t):n.endsWith("Ids")&&e[n].forEach(i=>{Ns(r,r.get(i),t)})}))}function ea(r,e,t){const n=t?"outbound-rtp":"inbound-rtp",i=new Map;if(e===null)return i;const s=[];return r.forEach(a=>{a.type==="track"&&a.trackIdentifier===e.id&&s.push(a)}),s.forEach(a=>{r.forEach(o=>{o.type===n&&o.trackId===a.id&&Ns(r,o,i)})}),i}const ta=co;function ic(r,e){const t=r&&r.navigator;if(!t.mediaDevices)return;const n=function(o){if(typeof o!="object"||o.mandatory||o.optional)return o;const c={};return Object.keys(o).forEach(l=>{if(l==="require"||l==="advanced"||l==="mediaSource")return;const h=typeof o[l]=="object"?o[l]:{ideal:o[l]};h.exact!==void 0&&typeof h.exact=="number"&&(h.min=h.max=h.exact);const d=function(m,p){return m?m+p.charAt(0).toUpperCase()+p.slice(1):p==="deviceId"?"sourceId":p};if(h.ideal!==void 0){c.optional=c.optional||[];let m={};typeof h.ideal=="number"?(m[d("min",l)]=h.ideal,c.optional.push(m),m={},m[d("max",l)]=h.ideal,c.optional.push(m)):(m[d("",l)]=h.ideal,c.optional.push(m))}h.exact!==void 0&&typeof h.exact!="number"?(c.mandatory=c.mandatory||{},c.mandatory[d("",l)]=h.exact):["min","max"].forEach(m=>{h[m]!==void 0&&(c.mandatory=c.mandatory||{},c.mandatory[d(m,l)]=h[m])})}),o.advanced&&(c.optional=(c.optional||[]).concat(o.advanced)),c},i=function(o,c){if(e.version>=61)return c(o);if(o=JSON.parse(JSON.stringify(o)),o&&typeof o.audio=="object"){const l=function(h,d,m){d in h&&!(m in h)&&(h[m]=h[d],delete h[d])};o=JSON.parse(JSON.stringify(o)),l(o.audio,"autoGainControl","googAutoGainControl"),l(o.audio,"noiseSuppression","googNoiseSuppression"),o.audio=n(o.audio)}if(o&&typeof o.video=="object"){let l=o.video.facingMode;l=l&&(typeof l=="object"?l:{ideal:l});const h=e.version<66;if(l&&(l.exact==="user"||l.exact==="environment"||l.ideal==="user"||l.ideal==="environment")&&!(t.mediaDevices.getSupportedConstraints&&t.mediaDevices.getSupportedConstraints().facingMode&&!h)){delete o.video.facingMode;let d;if(l.exact==="environment"||l.ideal==="environment"?d=["back","rear"]:(l.exact==="user"||l.ideal==="user")&&(d=["front"]),d)return t.mediaDevices.enumerateDevices().then(m=>{m=m.filter(b=>b.kind==="videoinput");let p=m.find(b=>d.some(T=>b.label.toLowerCase().includes(T)));return!p&&m.length&&d.includes("back")&&(p=m[m.length-1]),p&&(o.video.deviceId=l.exact?{exact:p.deviceId}:{ideal:p.deviceId}),o.video=n(o.video),ta("chrome: "+JSON.stringify(o)),c(o)})}o.video=n(o.video)}return ta("chrome: "+JSON.stringify(o)),c(o)},s=function(o){return e.version>=64?o:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[o.name]||o.name,message:o.message,constraint:o.constraint||o.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}},a=function(o,c,l){i(o,h=>{t.webkitGetUserMedia(h,c,d=>{l&&l(s(d))})})};if(t.getUserMedia=a.bind(t),t.mediaDevices.getUserMedia){const o=t.mediaDevices.getUserMedia.bind(t.mediaDevices);Object.getOwnPropertyDescriptor(t.mediaDevices,"getUserMedia")?.writable&&(t.mediaDevices.getUserMedia=function(c){return i(c,l=>o(l).then(h=>{if(l.audio&&!h.getAudioTracks().length||l.video&&!h.getVideoTracks().length)throw h.getTracks().forEach(d=>{d.stop()}),new DOMException("","NotFoundError");return h},h=>Promise.reject(s(h))))})}}function Yu(r,e){if(!(r.navigator.mediaDevices&&"getDisplayMedia"in r.navigator.mediaDevices)&&r.navigator.mediaDevices){if(typeof e!="function"){console.error("shimGetDisplayMedia: getSourceId argument is not a function");return}r.navigator.mediaDevices.getDisplayMedia=function(n){return e(n).then(i=>{const s=n.video&&n.video.width,a=n.video&&n.video.height,o=n.video&&n.video.frameRate;return n.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:i,maxFrameRate:o||3}},s&&(n.video.mandatory.maxWidth=s),a&&(n.video.mandatory.maxHeight=a),r.navigator.mediaDevices.getUserMedia(n)})}}}function rc(r){r.MediaStream=r.MediaStream||r.webkitMediaStream}function sc(r){if(typeof r=="object"&&r.RTCPeerConnection&&!("ontrack"in r.RTCPeerConnection.prototype)){Object.defineProperty(r.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(t){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=t)},enumerable:!0,configurable:!0});const e=r.RTCPeerConnection.prototype.setRemoteDescription;r.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=n=>{n.stream.addEventListener("addtrack",i=>{let s;r.RTCPeerConnection.prototype.getReceivers?s=this.getReceivers().find(o=>o.track&&o.track.id===i.track.id):s={track:i.track};const a=new Event("track");a.track=i.track,a.receiver=s,a.transceiver={receiver:s},a.streams=[n.stream],this.dispatchEvent(a)}),n.stream.getTracks().forEach(i=>{let s;r.RTCPeerConnection.prototype.getReceivers?s=this.getReceivers().find(o=>o.track&&o.track.id===i.id):s={track:i};const a=new Event("track");a.track=i,a.receiver=s,a.transceiver={receiver:s},a.streams=[n.stream],this.dispatchEvent(a)})},this.addEventListener("addstream",this._ontrackpoly)),e.apply(this,arguments)}}else jn(r,"track",e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e))}function oc(r){if(typeof r=="object"&&r.RTCPeerConnection&&!("getSenders"in r.RTCPeerConnection.prototype)&&"createDTMFSender"in r.RTCPeerConnection.prototype){const e=function(i,s){return{track:s,get dtmf(){return this._dtmf===void 0&&(s.kind==="audio"?this._dtmf=i.createDTMFSender(s):this._dtmf=null),this._dtmf},_pc:i}};if(!r.RTCPeerConnection.prototype.getSenders){r.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const i=r.RTCPeerConnection.prototype.addTrack;r.RTCPeerConnection.prototype.addTrack=function(o,c){let l=i.apply(this,arguments);return l||(l=e(this,o),this._senders.push(l)),l};const s=r.RTCPeerConnection.prototype.removeTrack;r.RTCPeerConnection.prototype.removeTrack=function(o){s.apply(this,arguments);const c=this._senders.indexOf(o);c!==-1&&this._senders.splice(c,1)}}const t=r.RTCPeerConnection.prototype.addStream;r.RTCPeerConnection.prototype.addStream=function(s){this._senders=this._senders||[],t.apply(this,[s]),s.getTracks().forEach(a=>{this._senders.push(e(this,a))})};const n=r.RTCPeerConnection.prototype.removeStream;r.RTCPeerConnection.prototype.removeStream=function(s){this._senders=this._senders||[],n.apply(this,[s]),s.getTracks().forEach(a=>{const o=this._senders.find(c=>c.track===a);o&&this._senders.splice(this._senders.indexOf(o),1)})}}else if(typeof r=="object"&&r.RTCPeerConnection&&"getSenders"in r.RTCPeerConnection.prototype&&"createDTMFSender"in r.RTCPeerConnection.prototype&&r.RTCRtpSender&&!("dtmf"in r.RTCRtpSender.prototype)){const e=r.RTCPeerConnection.prototype.getSenders;r.RTCPeerConnection.prototype.getSenders=function(){const n=e.apply(this,[]);return n.forEach(i=>i._pc=this),n},Object.defineProperty(r.RTCRtpSender.prototype,"dtmf",{get(){return this._dtmf===void 0&&(this.track.kind==="audio"?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function ac(r){if(!r.RTCPeerConnection)return;const e=r.RTCPeerConnection.prototype.getStats;r.RTCPeerConnection.prototype.getStats=function(){const[n,i,s]=arguments;if(arguments.length>0&&typeof n=="function")return e.apply(this,arguments);if(e.length===0&&(arguments.length===0||typeof n!="function"))return e.apply(this,[]);const a=function(c){const l={};return c.result().forEach(d=>{const m={id:d.id,timestamp:d.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[d.type]||d.type};d.names().forEach(p=>{m[p]=d.stat(p)}),l[m.id]=m}),l},o=function(c){return new Map(Object.keys(c).map(l=>[l,c[l]]))};if(arguments.length>=2){const c=function(l){i(o(a(l)))};return e.apply(this,[c,n])}return new Promise((c,l)=>{e.apply(this,[function(h){c(o(a(h)))},l])}).then(i,s)}}function cc(r){if(!(typeof r=="object"&&r.RTCPeerConnection&&r.RTCRtpSender&&r.RTCRtpReceiver))return;if(!("getStats"in r.RTCRtpSender.prototype)){const t=r.RTCPeerConnection.prototype.getSenders;t&&(r.RTCPeerConnection.prototype.getSenders=function(){const s=t.apply(this,[]);return s.forEach(a=>a._pc=this),s});const n=r.RTCPeerConnection.prototype.addTrack;n&&(r.RTCPeerConnection.prototype.addTrack=function(){const s=n.apply(this,arguments);return s._pc=this,s}),r.RTCRtpSender.prototype.getStats=function(){const s=this;return this._pc.getStats().then(a=>ea(a,s.track,!0))}}if(!("getStats"in r.RTCRtpReceiver.prototype)){const t=r.RTCPeerConnection.prototype.getReceivers;t&&(r.RTCPeerConnection.prototype.getReceivers=function(){const i=t.apply(this,[]);return i.forEach(s=>s._pc=this),i}),jn(r,"track",n=>(n.receiver._pc=n.srcElement,n)),r.RTCRtpReceiver.prototype.getStats=function(){const i=this;return this._pc.getStats().then(s=>ea(s,i.track,!1))}}if(!("getStats"in r.RTCRtpSender.prototype&&"getStats"in r.RTCRtpReceiver.prototype))return;const e=r.RTCPeerConnection.prototype.getStats;r.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof r.MediaStreamTrack){const n=arguments[0];let i,s,a;return this.getSenders().forEach(o=>{o.track===n&&(i?a=!0:i=o)}),this.getReceivers().forEach(o=>(o.track===n&&(s?a=!0:s=o),o.track===n)),a||i&&s?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):i?i.getStats():s?s.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return e.apply(this,arguments)}}function lc(r){r.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(a=>this._shimmedLocalStreams[a][0])};const e=r.RTCPeerConnection.prototype.addTrack;r.RTCPeerConnection.prototype.addTrack=function(a,o){if(!o)return e.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const c=e.apply(this,arguments);return this._shimmedLocalStreams[o.id]?this._shimmedLocalStreams[o.id].indexOf(c)===-1&&this._shimmedLocalStreams[o.id].push(c):this._shimmedLocalStreams[o.id]=[o,c],c};const t=r.RTCPeerConnection.prototype.addStream;r.RTCPeerConnection.prototype.addStream=function(a){this._shimmedLocalStreams=this._shimmedLocalStreams||{},a.getTracks().forEach(l=>{if(this.getSenders().find(d=>d.track===l))throw new DOMException("Track already exists.","InvalidAccessError")});const o=this.getSenders();t.apply(this,arguments);const c=this.getSenders().filter(l=>o.indexOf(l)===-1);this._shimmedLocalStreams[a.id]=[a].concat(c)};const n=r.RTCPeerConnection.prototype.removeStream;r.RTCPeerConnection.prototype.removeStream=function(a){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[a.id],n.apply(this,arguments)};const i=r.RTCPeerConnection.prototype.removeTrack;r.RTCPeerConnection.prototype.removeTrack=function(a){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},a&&Object.keys(this._shimmedLocalStreams).forEach(o=>{const c=this._shimmedLocalStreams[o].indexOf(a);c!==-1&&this._shimmedLocalStreams[o].splice(c,1),this._shimmedLocalStreams[o].length===1&&delete this._shimmedLocalStreams[o]}),i.apply(this,arguments)}}function uc(r,e){if(!r.RTCPeerConnection)return;if(r.RTCPeerConnection.prototype.addTrack&&e.version>=65)return lc(r);const t=r.RTCPeerConnection.prototype.getLocalStreams;r.RTCPeerConnection.prototype.getLocalStreams=function(){const h=t.apply(this);return this._reverseStreams=this._reverseStreams||{},h.map(d=>this._reverseStreams[d.id])};const n=r.RTCPeerConnection.prototype.addStream;r.RTCPeerConnection.prototype.addStream=function(h){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},h.getTracks().forEach(d=>{if(this.getSenders().find(p=>p.track===d))throw new DOMException("Track already exists.","InvalidAccessError")}),!this._reverseStreams[h.id]){const d=new r.MediaStream(h.getTracks());this._streams[h.id]=d,this._reverseStreams[d.id]=h,h=d}n.apply(this,[h])};const i=r.RTCPeerConnection.prototype.removeStream;r.RTCPeerConnection.prototype.removeStream=function(h){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},i.apply(this,[this._streams[h.id]||h]),delete this._reverseStreams[this._streams[h.id]?this._streams[h.id].id:h.id],delete this._streams[h.id]},r.RTCPeerConnection.prototype.addTrack=function(h,d){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const m=[].slice.call(arguments,1);if(m.length!==1||!m[0].getTracks().find(T=>T===h))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find(T=>T.track===h))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const b=this._streams[d.id];if(b)b.addTrack(h),Promise.resolve().then(()=>{this.dispatchEvent(new Event("negotiationneeded"))});else{const T=new r.MediaStream([h]);this._streams[d.id]=T,this._reverseStreams[T.id]=d,this.addStream(T)}return this.getSenders().find(T=>T.track===h)};function s(l,h){let d=h.sdp;return Object.keys(l._reverseStreams||[]).forEach(m=>{const p=l._reverseStreams[m],b=l._streams[p.id];d=d.replace(new RegExp(b.id,"g"),p.id)}),new RTCSessionDescription({type:h.type,sdp:d})}function a(l,h){let d=h.sdp;return Object.keys(l._reverseStreams||[]).forEach(m=>{const p=l._reverseStreams[m],b=l._streams[p.id];d=d.replace(new RegExp(p.id,"g"),b.id)}),new RTCSessionDescription({type:h.type,sdp:d})}["createOffer","createAnswer"].forEach(function(l){const h=r.RTCPeerConnection.prototype[l],d={[l](){const m=arguments;return arguments.length&&typeof arguments[0]=="function"?h.apply(this,[b=>{const T=s(this,b);m[0].apply(null,[T])},b=>{m[1]&&m[1].apply(null,b)},arguments[2]]):h.apply(this,arguments).then(b=>s(this,b))}};r.RTCPeerConnection.prototype[l]=d[l]});const o=r.RTCPeerConnection.prototype.setLocalDescription;r.RTCPeerConnection.prototype.setLocalDescription=function(){return!arguments.length||!arguments[0].type?o.apply(this,arguments):(arguments[0]=a(this,arguments[0]),o.apply(this,arguments))};const c=Object.getOwnPropertyDescriptor(r.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(r.RTCPeerConnection.prototype,"localDescription",{get(){const l=c.get.apply(this);return l.type===""?l:s(this,l)}}),r.RTCPeerConnection.prototype.removeTrack=function(h){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!h._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(!(h._pc===this))throw new DOMException("Sender was not created by this connection.","InvalidAccessError");this._streams=this._streams||{};let m;Object.keys(this._streams).forEach(p=>{this._streams[p].getTracks().find(T=>h.track===T)&&(m=this._streams[p])}),m&&(m.getTracks().length===1?this.removeStream(this._reverseStreams[m.id]):m.removeTrack(h.track),this.dispatchEvent(new Event("negotiationneeded")))}}function Us(r,e){!r.RTCPeerConnection&&r.webkitRTCPeerConnection&&(r.RTCPeerConnection=r.webkitRTCPeerConnection),r.RTCPeerConnection&&e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){const n=r.RTCPeerConnection.prototype[t],i={[t](){return arguments[0]=new(t==="addIceCandidate"?r.RTCIceCandidate:r.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}};r.RTCPeerConnection.prototype[t]=i[t]})}function hc(r,e){jn(r,"negotiationneeded",t=>{const n=t.target;if(!((e.version<72||n.getConfiguration&&n.getConfiguration().sdpSemantics==="plan-b")&&n.signalingState!=="stable"))return t})}const na=Object.freeze(Object.defineProperty({__proto__:null,fixNegotiationNeeded:hc,shimAddTrackRemoveTrack:uc,shimAddTrackRemoveTrackWithNative:lc,shimGetDisplayMedia:Yu,shimGetSendersWithDtmf:oc,shimGetStats:ac,shimGetUserMedia:ic,shimMediaStream:rc,shimOnTrack:sc,shimPeerConnection:Us,shimSenderReceiverGetStats:cc},Symbol.toStringTag,{value:"Module"}));function Zu(r,e){let t=!1;return r=JSON.parse(JSON.stringify(r)),r.filter(n=>{if(n&&(n.urls||n.url)){let i=n.urls||n.url;n.url&&!n.urls&&jr("RTCIceServer.url","RTCIceServer.urls");const s=typeof i=="string";return s&&(i=[i]),i=i.filter(a=>{if(a.indexOf("stun:")===0)return!1;const o=a.startsWith("turn")&&!a.startsWith("turn:[")&&a.includes("transport=udp");return o&&!t?(t=!0,!0):o&&!t}),delete n.url,n.urls=s?i[0]:i,!!i.length}})}var vs={exports:{}},ia;function fc(){return ia||(ia=1,(function(r){var e={};e.generateIdentifier=function(){return Math.random().toString(36).substr(2,10)},e.localCName=e.generateIdentifier(),e.splitLines=function(t){return t.trim().split(`
1040
1040
  `).map(function(n){return n.trim()})},e.splitSections=function(t){var n=t.split(`
1041
1041
  m=`);return n.map(function(i,s){return(s>0?"m="+i:i).trim()+`\r
1042
1042
  `})},e.getDescription=function(t){var n=e.splitSections(t);return n&&n[0]},e.getMediaSections=function(t){var n=e.splitSections(t);return n.shift(),n},e.matchPrefix=function(t,n){return e.splitLines(t).filter(function(i){return i.indexOf(n)===0})},e.parseCandidate=function(t){var n;t.indexOf("a=candidate:")===0?n=t.substring(12).split(" "):n=t.substring(10).split(" ");for(var i={foundation:n[0],component:parseInt(n[1],10),protocol:n[2].toLowerCase(),priority:parseInt(n[3],10),ip:n[4],address:n[4],port:parseInt(n[5],10),type:n[7]},s=8;s<n.length;s+=2)switch(n[s]){case"raddr":i.relatedAddress=n[s+1];break;case"rport":i.relatedPort=parseInt(n[s+1],10);break;case"tcptype":i.tcpType=n[s+1];break;case"ufrag":i.ufrag=n[s+1],i.usernameFragment=n[s+1];break;default:i[n[s]]=n[s+1];break}return i},e.writeCandidate=function(t){var n=[];n.push(t.foundation),n.push(t.component),n.push(t.protocol.toUpperCase()),n.push(t.priority),n.push(t.address||t.ip),n.push(t.port);var i=t.type;return n.push("typ"),n.push(i),i!=="host"&&t.relatedAddress&&t.relatedPort&&(n.push("raddr"),n.push(t.relatedAddress),n.push("rport"),n.push(t.relatedPort)),t.tcpType&&t.protocol.toLowerCase()==="tcp"&&(n.push("tcptype"),n.push(t.tcpType)),(t.usernameFragment||t.ufrag)&&(n.push("ufrag"),n.push(t.usernameFragment||t.ufrag)),"candidate:"+n.join(" ")},e.parseIceOptions=function(t){return t.substr(14).split(" ")},e.parseRtpMap=function(t){var n=t.substr(9).split(" "),i={payloadType:parseInt(n.shift(),10)};return n=n[0].split("/"),i.name=n[0],i.clockRate=parseInt(n[1],10),i.channels=n.length===3?parseInt(n[2],10):1,i.numChannels=i.channels,i},e.writeRtpMap=function(t){var n=t.payloadType;t.preferredPayloadType!==void 0&&(n=t.preferredPayloadType);var i=t.channels||t.numChannels||1;return"a=rtpmap:"+n+" "+t.name+"/"+t.clockRate+(i!==1?"/"+i:"")+`\r
@@ -1083,28 +1083,28 @@ t=0 0\r
1083
1083
  `;p+="a="+T,p+="a=ssrc:"+c.sendEncodingParameters[0].ssrc+" "+T,c.sendEncodingParameters[0].rtx&&(p+="a=ssrc:"+c.sendEncodingParameters[0].rtx.ssrc+" "+T,p+="a=ssrc-group:FID "+c.sendEncodingParameters[0].ssrc+" "+c.sendEncodingParameters[0].rtx.ssrc+`\r
1084
1084
  `)}return p+="a=ssrc:"+c.sendEncodingParameters[0].ssrc+" cname:"+r.localCName+`\r
1085
1085
  `,c.rtpSender&&c.sendEncodingParameters[0].rtx&&(p+="a=ssrc:"+c.sendEncodingParameters[0].rtx.ssrc+" cname:"+r.localCName+`\r
1086
- `),p}function n(c,l){var h=!1;return c=JSON.parse(JSON.stringify(c)),c.filter(function(d){if(d&&(d.urls||d.url)){var m=d.urls||d.url;d.url&&!d.urls&&console.warn("RTCIceServer.url is deprecated! Use urls instead.");var p=typeof m=="string";return p&&(m=[m]),m=m.filter(function(b){var T=b.indexOf("turn:")===0&&b.indexOf("transport=udp")!==-1&&b.indexOf("turn:[")===-1&&!h;return T?(h=!0,!0):b.indexOf("stun:")===0&&l>=14393&&b.indexOf("?transport=udp")===-1}),delete d.url,d.urls=p?m[0]:m,!!m.length}})}function i(c,l){var h={codecs:[],headerExtensions:[],fecMechanisms:[]},d=function(p,b){p=parseInt(p,10);for(var T=0;T<b.length;T++)if(b[T].payloadType===p||b[T].preferredPayloadType===p)return b[T]},m=function(p,b,T,g){var v=d(p.parameters.apt,T),x=d(b.parameters.apt,g);return v&&x&&v.name.toLowerCase()===x.name.toLowerCase()};return c.codecs.forEach(function(p){for(var b=0;b<l.codecs.length;b++){var T=l.codecs[b];if(p.name.toLowerCase()===T.name.toLowerCase()&&p.clockRate===T.clockRate){if(p.name.toLowerCase()==="rtx"&&p.parameters&&T.parameters.apt&&!m(p,T,c.codecs,l.codecs))continue;T=JSON.parse(JSON.stringify(T)),T.numChannels=Math.min(p.numChannels,T.numChannels),h.codecs.push(T),T.rtcpFeedback=T.rtcpFeedback.filter(function(g){for(var v=0;v<p.rtcpFeedback.length;v++)if(p.rtcpFeedback[v].type===g.type&&p.rtcpFeedback[v].parameter===g.parameter)return!0;return!1});break}}}),c.headerExtensions.forEach(function(p){for(var b=0;b<l.headerExtensions.length;b++){var T=l.headerExtensions[b];if(p.uri===T.uri){h.headerExtensions.push(T);break}}}),h}function s(c,l,h){return{offer:{setLocalDescription:["stable","have-local-offer"],setRemoteDescription:["stable","have-remote-offer"]},answer:{setLocalDescription:["have-remote-offer","have-local-pranswer"],setRemoteDescription:["have-local-offer","have-remote-pranswer"]}}[l][c].indexOf(h)!==-1}function a(c,l){var h=c.getRemoteCandidates().find(function(d){return l.foundation===d.foundation&&l.ip===d.ip&&l.port===d.port&&l.priority===d.priority&&l.protocol===d.protocol&&l.type===d.type});return h||c.addRemoteCandidate(l),!h}function o(c,l){var h=new Error(l);return h.name=c,h.code={NotSupportedError:9,InvalidStateError:11,InvalidAccessError:15,TypeError:void 0,OperationError:void 0}[c],h}return Ss=function(c,l){function h(g,v){v.addTrack(g),v.dispatchEvent(new c.MediaStreamTrackEvent("addtrack",{track:g}))}function d(g,v){v.removeTrack(g),v.dispatchEvent(new c.MediaStreamTrackEvent("removetrack",{track:g}))}function m(g,v,x,_){var M=new Event("track");M.track=v,M.receiver=x,M.transceiver={receiver:x},M.streams=_,c.setTimeout(function(){g._dispatchEvent("track",M)})}var p=function(g){var v=this,x=document.createDocumentFragment();if(["addEventListener","removeEventListener","dispatchEvent"].forEach(function(M){v[M]=x[M].bind(x)}),this.canTrickleIceCandidates=null,this.needNegotiation=!1,this.localStreams=[],this.remoteStreams=[],this._localDescription=null,this._remoteDescription=null,this.signalingState="stable",this.iceConnectionState="new",this.connectionState="new",this.iceGatheringState="new",g=JSON.parse(JSON.stringify(g||{})),this.usingBundle=g.bundlePolicy==="max-bundle",g.rtcpMuxPolicy==="negotiate")throw o("NotSupportedError","rtcpMuxPolicy 'negotiate' is not supported");switch(g.rtcpMuxPolicy||(g.rtcpMuxPolicy="require"),g.iceTransportPolicy){case"all":case"relay":break;default:g.iceTransportPolicy="all";break}switch(g.bundlePolicy){case"balanced":case"max-compat":case"max-bundle":break;default:g.bundlePolicy="balanced";break}if(g.iceServers=n(g.iceServers||[],l),this._iceGatherers=[],g.iceCandidatePoolSize)for(var _=g.iceCandidatePoolSize;_>0;_--)this._iceGatherers.push(new c.RTCIceGatherer({iceServers:g.iceServers,gatherPolicy:g.iceTransportPolicy}));else g.iceCandidatePoolSize=0;this._config=g,this.transceivers=[],this._sdpSessionId=r.generateSessionId(),this._sdpSessionVersion=0,this._dtlsRole=void 0,this._isClosed=!1};Object.defineProperty(p.prototype,"localDescription",{configurable:!0,get:function(){return this._localDescription}}),Object.defineProperty(p.prototype,"remoteDescription",{configurable:!0,get:function(){return this._remoteDescription}}),p.prototype.onicecandidate=null,p.prototype.onaddstream=null,p.prototype.ontrack=null,p.prototype.onremovestream=null,p.prototype.onsignalingstatechange=null,p.prototype.oniceconnectionstatechange=null,p.prototype.onconnectionstatechange=null,p.prototype.onicegatheringstatechange=null,p.prototype.onnegotiationneeded=null,p.prototype.ondatachannel=null,p.prototype._dispatchEvent=function(g,v){this._isClosed||(this.dispatchEvent(v),typeof this["on"+g]=="function"&&this["on"+g](v))},p.prototype._emitGatheringStateChange=function(){var g=new Event("icegatheringstatechange");this._dispatchEvent("icegatheringstatechange",g)},p.prototype.getConfiguration=function(){return this._config},p.prototype.getLocalStreams=function(){return this.localStreams},p.prototype.getRemoteStreams=function(){return this.remoteStreams},p.prototype._createTransceiver=function(g,v){var x=this.transceivers.length>0,_={track:null,iceGatherer:null,iceTransport:null,dtlsTransport:null,localCapabilities:null,remoteCapabilities:null,rtpSender:null,rtpReceiver:null,kind:g,mid:null,sendEncodingParameters:null,recvEncodingParameters:null,stream:null,associatedRemoteMediaStreams:[],wantReceive:!0};if(this.usingBundle&&x)_.iceTransport=this.transceivers[0].iceTransport,_.dtlsTransport=this.transceivers[0].dtlsTransport;else{var M=this._createIceAndDtlsTransports();_.iceTransport=M.iceTransport,_.dtlsTransport=M.dtlsTransport}return v||this.transceivers.push(_),_},p.prototype.addTrack=function(g,v){if(this._isClosed)throw o("InvalidStateError","Attempted to call addTrack on a closed peerconnection.");var x=this.transceivers.find(function(C){return C.track===g});if(x)throw o("InvalidAccessError","Track already exists.");for(var _,M=0;M<this.transceivers.length;M++)!this.transceivers[M].track&&this.transceivers[M].kind===g.kind&&(_=this.transceivers[M]);return _||(_=this._createTransceiver(g.kind)),this._maybeFireNegotiationNeeded(),this.localStreams.indexOf(v)===-1&&this.localStreams.push(v),_.track=g,_.stream=v,_.rtpSender=new c.RTCRtpSender(g,_.dtlsTransport),_.rtpSender},p.prototype.addStream=function(g){var v=this;if(l>=15025)g.getTracks().forEach(function(_){v.addTrack(_,g)});else{var x=g.clone();g.getTracks().forEach(function(_,M){var C=x.getTracks()[M];_.addEventListener("enabled",function(P){C.enabled=P.enabled})}),x.getTracks().forEach(function(_){v.addTrack(_,x)})}},p.prototype.removeTrack=function(g){if(this._isClosed)throw o("InvalidStateError","Attempted to call removeTrack on a closed peerconnection.");if(!(g instanceof c.RTCRtpSender))throw new TypeError("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.");var v=this.transceivers.find(function(M){return M.rtpSender===g});if(!v)throw o("InvalidAccessError","Sender was not created by this connection.");var x=v.stream;v.rtpSender.stop(),v.rtpSender=null,v.track=null,v.stream=null;var _=this.transceivers.map(function(M){return M.stream});_.indexOf(x)===-1&&this.localStreams.indexOf(x)>-1&&this.localStreams.splice(this.localStreams.indexOf(x),1),this._maybeFireNegotiationNeeded()},p.prototype.removeStream=function(g){var v=this;g.getTracks().forEach(function(x){var _=v.getSenders().find(function(M){return M.track===x});_&&v.removeTrack(_)})},p.prototype.getSenders=function(){return this.transceivers.filter(function(g){return!!g.rtpSender}).map(function(g){return g.rtpSender})},p.prototype.getReceivers=function(){return this.transceivers.filter(function(g){return!!g.rtpReceiver}).map(function(g){return g.rtpReceiver})},p.prototype._createIceGatherer=function(g,v){var x=this;if(v&&g>0)return this.transceivers[0].iceGatherer;if(this._iceGatherers.length)return this._iceGatherers.shift();var _=new c.RTCIceGatherer({iceServers:this._config.iceServers,gatherPolicy:this._config.iceTransportPolicy});return Object.defineProperty(_,"state",{value:"new",writable:!0}),this.transceivers[g].bufferedCandidateEvents=[],this.transceivers[g].bufferCandidates=function(M){var C=!M.candidate||Object.keys(M.candidate).length===0;_.state=C?"completed":"gathering",x.transceivers[g].bufferedCandidateEvents!==null&&x.transceivers[g].bufferedCandidateEvents.push(M)},_.addEventListener("localcandidate",this.transceivers[g].bufferCandidates),_},p.prototype._gather=function(g,v){var x=this,_=this.transceivers[v].iceGatherer;if(!_.onlocalcandidate){var M=this.transceivers[v].bufferedCandidateEvents;this.transceivers[v].bufferedCandidateEvents=null,_.removeEventListener("localcandidate",this.transceivers[v].bufferCandidates),_.onlocalcandidate=function(C){if(!(x.usingBundle&&v>0)){var P=new Event("icecandidate");P.candidate={sdpMid:g,sdpMLineIndex:v};var E=C.candidate,z=!E||Object.keys(E).length===0;if(z)(_.state==="new"||_.state==="gathering")&&(_.state="completed");else{_.state==="new"&&(_.state="gathering"),E.component=1,E.ufrag=_.getLocalParameters().usernameFragment;var I=r.writeCandidate(E);P.candidate=Object.assign(P.candidate,r.parseCandidate(I)),P.candidate.candidate=I,P.candidate.toJSON=function(){return{candidate:P.candidate.candidate,sdpMid:P.candidate.sdpMid,sdpMLineIndex:P.candidate.sdpMLineIndex,usernameFragment:P.candidate.usernameFragment}}}var R=r.getMediaSections(x._localDescription.sdp);z?R[P.candidate.sdpMLineIndex]+=`a=end-of-candidates\r
1086
+ `),p}function n(c,l){var h=!1;return c=JSON.parse(JSON.stringify(c)),c.filter(function(d){if(d&&(d.urls||d.url)){var m=d.urls||d.url;d.url&&!d.urls&&console.warn("RTCIceServer.url is deprecated! Use urls instead.");var p=typeof m=="string";return p&&(m=[m]),m=m.filter(function(b){var T=b.indexOf("turn:")===0&&b.indexOf("transport=udp")!==-1&&b.indexOf("turn:[")===-1&&!h;return T?(h=!0,!0):b.indexOf("stun:")===0&&l>=14393&&b.indexOf("?transport=udp")===-1}),delete d.url,d.urls=p?m[0]:m,!!m.length}})}function i(c,l){var h={codecs:[],headerExtensions:[],fecMechanisms:[]},d=function(p,b){p=parseInt(p,10);for(var T=0;T<b.length;T++)if(b[T].payloadType===p||b[T].preferredPayloadType===p)return b[T]},m=function(p,b,T,g){var v=d(p.parameters.apt,T),_=d(b.parameters.apt,g);return v&&_&&v.name.toLowerCase()===_.name.toLowerCase()};return c.codecs.forEach(function(p){for(var b=0;b<l.codecs.length;b++){var T=l.codecs[b];if(p.name.toLowerCase()===T.name.toLowerCase()&&p.clockRate===T.clockRate){if(p.name.toLowerCase()==="rtx"&&p.parameters&&T.parameters.apt&&!m(p,T,c.codecs,l.codecs))continue;T=JSON.parse(JSON.stringify(T)),T.numChannels=Math.min(p.numChannels,T.numChannels),h.codecs.push(T),T.rtcpFeedback=T.rtcpFeedback.filter(function(g){for(var v=0;v<p.rtcpFeedback.length;v++)if(p.rtcpFeedback[v].type===g.type&&p.rtcpFeedback[v].parameter===g.parameter)return!0;return!1});break}}}),c.headerExtensions.forEach(function(p){for(var b=0;b<l.headerExtensions.length;b++){var T=l.headerExtensions[b];if(p.uri===T.uri){h.headerExtensions.push(T);break}}}),h}function s(c,l,h){return{offer:{setLocalDescription:["stable","have-local-offer"],setRemoteDescription:["stable","have-remote-offer"]},answer:{setLocalDescription:["have-remote-offer","have-local-pranswer"],setRemoteDescription:["have-local-offer","have-remote-pranswer"]}}[l][c].indexOf(h)!==-1}function a(c,l){var h=c.getRemoteCandidates().find(function(d){return l.foundation===d.foundation&&l.ip===d.ip&&l.port===d.port&&l.priority===d.priority&&l.protocol===d.protocol&&l.type===d.type});return h||c.addRemoteCandidate(l),!h}function o(c,l){var h=new Error(l);return h.name=c,h.code={NotSupportedError:9,InvalidStateError:11,InvalidAccessError:15,TypeError:void 0,OperationError:void 0}[c],h}return Ss=function(c,l){function h(g,v){v.addTrack(g),v.dispatchEvent(new c.MediaStreamTrackEvent("addtrack",{track:g}))}function d(g,v){v.removeTrack(g),v.dispatchEvent(new c.MediaStreamTrackEvent("removetrack",{track:g}))}function m(g,v,_,x){var C=new Event("track");C.track=v,C.receiver=_,C.transceiver={receiver:_},C.streams=x,c.setTimeout(function(){g._dispatchEvent("track",C)})}var p=function(g){var v=this,_=document.createDocumentFragment();if(["addEventListener","removeEventListener","dispatchEvent"].forEach(function(C){v[C]=_[C].bind(_)}),this.canTrickleIceCandidates=null,this.needNegotiation=!1,this.localStreams=[],this.remoteStreams=[],this._localDescription=null,this._remoteDescription=null,this.signalingState="stable",this.iceConnectionState="new",this.connectionState="new",this.iceGatheringState="new",g=JSON.parse(JSON.stringify(g||{})),this.usingBundle=g.bundlePolicy==="max-bundle",g.rtcpMuxPolicy==="negotiate")throw o("NotSupportedError","rtcpMuxPolicy 'negotiate' is not supported");switch(g.rtcpMuxPolicy||(g.rtcpMuxPolicy="require"),g.iceTransportPolicy){case"all":case"relay":break;default:g.iceTransportPolicy="all";break}switch(g.bundlePolicy){case"balanced":case"max-compat":case"max-bundle":break;default:g.bundlePolicy="balanced";break}if(g.iceServers=n(g.iceServers||[],l),this._iceGatherers=[],g.iceCandidatePoolSize)for(var x=g.iceCandidatePoolSize;x>0;x--)this._iceGatherers.push(new c.RTCIceGatherer({iceServers:g.iceServers,gatherPolicy:g.iceTransportPolicy}));else g.iceCandidatePoolSize=0;this._config=g,this.transceivers=[],this._sdpSessionId=r.generateSessionId(),this._sdpSessionVersion=0,this._dtlsRole=void 0,this._isClosed=!1};Object.defineProperty(p.prototype,"localDescription",{configurable:!0,get:function(){return this._localDescription}}),Object.defineProperty(p.prototype,"remoteDescription",{configurable:!0,get:function(){return this._remoteDescription}}),p.prototype.onicecandidate=null,p.prototype.onaddstream=null,p.prototype.ontrack=null,p.prototype.onremovestream=null,p.prototype.onsignalingstatechange=null,p.prototype.oniceconnectionstatechange=null,p.prototype.onconnectionstatechange=null,p.prototype.onicegatheringstatechange=null,p.prototype.onnegotiationneeded=null,p.prototype.ondatachannel=null,p.prototype._dispatchEvent=function(g,v){this._isClosed||(this.dispatchEvent(v),typeof this["on"+g]=="function"&&this["on"+g](v))},p.prototype._emitGatheringStateChange=function(){var g=new Event("icegatheringstatechange");this._dispatchEvent("icegatheringstatechange",g)},p.prototype.getConfiguration=function(){return this._config},p.prototype.getLocalStreams=function(){return this.localStreams},p.prototype.getRemoteStreams=function(){return this.remoteStreams},p.prototype._createTransceiver=function(g,v){var _=this.transceivers.length>0,x={track:null,iceGatherer:null,iceTransport:null,dtlsTransport:null,localCapabilities:null,remoteCapabilities:null,rtpSender:null,rtpReceiver:null,kind:g,mid:null,sendEncodingParameters:null,recvEncodingParameters:null,stream:null,associatedRemoteMediaStreams:[],wantReceive:!0};if(this.usingBundle&&_)x.iceTransport=this.transceivers[0].iceTransport,x.dtlsTransport=this.transceivers[0].dtlsTransport;else{var C=this._createIceAndDtlsTransports();x.iceTransport=C.iceTransport,x.dtlsTransport=C.dtlsTransport}return v||this.transceivers.push(x),x},p.prototype.addTrack=function(g,v){if(this._isClosed)throw o("InvalidStateError","Attempted to call addTrack on a closed peerconnection.");var _=this.transceivers.find(function(M){return M.track===g});if(_)throw o("InvalidAccessError","Track already exists.");for(var x,C=0;C<this.transceivers.length;C++)!this.transceivers[C].track&&this.transceivers[C].kind===g.kind&&(x=this.transceivers[C]);return x||(x=this._createTransceiver(g.kind)),this._maybeFireNegotiationNeeded(),this.localStreams.indexOf(v)===-1&&this.localStreams.push(v),x.track=g,x.stream=v,x.rtpSender=new c.RTCRtpSender(g,x.dtlsTransport),x.rtpSender},p.prototype.addStream=function(g){var v=this;if(l>=15025)g.getTracks().forEach(function(x){v.addTrack(x,g)});else{var _=g.clone();g.getTracks().forEach(function(x,C){var M=_.getTracks()[C];x.addEventListener("enabled",function(P){M.enabled=P.enabled})}),_.getTracks().forEach(function(x){v.addTrack(x,_)})}},p.prototype.removeTrack=function(g){if(this._isClosed)throw o("InvalidStateError","Attempted to call removeTrack on a closed peerconnection.");if(!(g instanceof c.RTCRtpSender))throw new TypeError("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.");var v=this.transceivers.find(function(C){return C.rtpSender===g});if(!v)throw o("InvalidAccessError","Sender was not created by this connection.");var _=v.stream;v.rtpSender.stop(),v.rtpSender=null,v.track=null,v.stream=null;var x=this.transceivers.map(function(C){return C.stream});x.indexOf(_)===-1&&this.localStreams.indexOf(_)>-1&&this.localStreams.splice(this.localStreams.indexOf(_),1),this._maybeFireNegotiationNeeded()},p.prototype.removeStream=function(g){var v=this;g.getTracks().forEach(function(_){var x=v.getSenders().find(function(C){return C.track===_});x&&v.removeTrack(x)})},p.prototype.getSenders=function(){return this.transceivers.filter(function(g){return!!g.rtpSender}).map(function(g){return g.rtpSender})},p.prototype.getReceivers=function(){return this.transceivers.filter(function(g){return!!g.rtpReceiver}).map(function(g){return g.rtpReceiver})},p.prototype._createIceGatherer=function(g,v){var _=this;if(v&&g>0)return this.transceivers[0].iceGatherer;if(this._iceGatherers.length)return this._iceGatherers.shift();var x=new c.RTCIceGatherer({iceServers:this._config.iceServers,gatherPolicy:this._config.iceTransportPolicy});return Object.defineProperty(x,"state",{value:"new",writable:!0}),this.transceivers[g].bufferedCandidateEvents=[],this.transceivers[g].bufferCandidates=function(C){var M=!C.candidate||Object.keys(C.candidate).length===0;x.state=M?"completed":"gathering",_.transceivers[g].bufferedCandidateEvents!==null&&_.transceivers[g].bufferedCandidateEvents.push(C)},x.addEventListener("localcandidate",this.transceivers[g].bufferCandidates),x},p.prototype._gather=function(g,v){var _=this,x=this.transceivers[v].iceGatherer;if(!x.onlocalcandidate){var C=this.transceivers[v].bufferedCandidateEvents;this.transceivers[v].bufferedCandidateEvents=null,x.removeEventListener("localcandidate",this.transceivers[v].bufferCandidates),x.onlocalcandidate=function(M){if(!(_.usingBundle&&v>0)){var P=new Event("icecandidate");P.candidate={sdpMid:g,sdpMLineIndex:v};var E=M.candidate,O=!E||Object.keys(E).length===0;if(O)(x.state==="new"||x.state==="gathering")&&(x.state="completed");else{x.state==="new"&&(x.state="gathering"),E.component=1,E.ufrag=x.getLocalParameters().usernameFragment;var I=r.writeCandidate(E);P.candidate=Object.assign(P.candidate,r.parseCandidate(I)),P.candidate.candidate=I,P.candidate.toJSON=function(){return{candidate:P.candidate.candidate,sdpMid:P.candidate.sdpMid,sdpMLineIndex:P.candidate.sdpMLineIndex,usernameFragment:P.candidate.usernameFragment}}}var R=r.getMediaSections(_._localDescription.sdp);O?R[P.candidate.sdpMLineIndex]+=`a=end-of-candidates\r
1087
1087
  `:R[P.candidate.sdpMLineIndex]+="a="+P.candidate.candidate+`\r
1088
- `,x._localDescription.sdp=r.getDescription(x._localDescription.sdp)+R.join("");var N=x.transceivers.every(function(O){return O.iceGatherer&&O.iceGatherer.state==="completed"});x.iceGatheringState!=="gathering"&&(x.iceGatheringState="gathering",x._emitGatheringStateChange()),z||x._dispatchEvent("icecandidate",P),N&&(x._dispatchEvent("icecandidate",new Event("icecandidate")),x.iceGatheringState="complete",x._emitGatheringStateChange())}},c.setTimeout(function(){M.forEach(function(C){_.onlocalcandidate(C)})},0)}},p.prototype._createIceAndDtlsTransports=function(){var g=this,v=new c.RTCIceTransport(null);v.onicestatechange=function(){g._updateIceConnectionState(),g._updateConnectionState()};var x=new c.RTCDtlsTransport(v);return x.ondtlsstatechange=function(){g._updateConnectionState()},x.onerror=function(){Object.defineProperty(x,"state",{value:"failed",writable:!0}),g._updateConnectionState()},{iceTransport:v,dtlsTransport:x}},p.prototype._disposeIceAndDtlsTransports=function(g){var v=this.transceivers[g].iceGatherer;v&&(delete v.onlocalcandidate,delete this.transceivers[g].iceGatherer);var x=this.transceivers[g].iceTransport;x&&(delete x.onicestatechange,delete this.transceivers[g].iceTransport);var _=this.transceivers[g].dtlsTransport;_&&(delete _.ondtlsstatechange,delete _.onerror,delete this.transceivers[g].dtlsTransport)},p.prototype._transceive=function(g,v,x){var _=i(g.localCapabilities,g.remoteCapabilities);v&&g.rtpSender&&(_.encodings=g.sendEncodingParameters,_.rtcp={cname:r.localCName,compound:g.rtcpParameters.compound},g.recvEncodingParameters.length&&(_.rtcp.ssrc=g.recvEncodingParameters[0].ssrc),g.rtpSender.send(_)),x&&g.rtpReceiver&&_.codecs.length>0&&(g.kind==="video"&&g.recvEncodingParameters&&l<15019&&g.recvEncodingParameters.forEach(function(M){delete M.rtx}),g.recvEncodingParameters.length?_.encodings=g.recvEncodingParameters:_.encodings=[{}],_.rtcp={compound:g.rtcpParameters.compound},g.rtcpParameters.cname&&(_.rtcp.cname=g.rtcpParameters.cname),g.sendEncodingParameters.length&&(_.rtcp.ssrc=g.sendEncodingParameters[0].ssrc),g.rtpReceiver.receive(_))},p.prototype.setLocalDescription=function(g){var v=this;if(["offer","answer"].indexOf(g.type)===-1)return Promise.reject(o("TypeError",'Unsupported type "'+g.type+'"'));if(!s("setLocalDescription",g.type,v.signalingState)||v._isClosed)return Promise.reject(o("InvalidStateError","Can not set local "+g.type+" in state "+v.signalingState));var x,_;if(g.type==="offer")x=r.splitSections(g.sdp),_=x.shift(),x.forEach(function(C,P){var E=r.parseRtpParameters(C);v.transceivers[P].localCapabilities=E}),v.transceivers.forEach(function(C,P){v._gather(C.mid,P)});else if(g.type==="answer"){x=r.splitSections(v._remoteDescription.sdp),_=x.shift();var M=r.matchPrefix(_,"a=ice-lite").length>0;x.forEach(function(C,P){var E=v.transceivers[P],z=E.iceGatherer,I=E.iceTransport,R=E.dtlsTransport,N=E.localCapabilities,O=E.remoteCapabilities,U=r.isRejected(C)&&r.matchPrefix(C,"a=bundle-only").length===0;if(!U&&!E.rejected){var F=r.getIceParameters(C,_),J=r.getDtlsParameters(C,_);M&&(J.role="server"),(!v.usingBundle||P===0)&&(v._gather(E.mid,P),I.state==="new"&&I.start(z,F,M?"controlling":"controlled"),R.state==="new"&&R.start(J));var $=i(N,O);v._transceive(E,$.codecs.length>0,!1)}})}return v._localDescription={type:g.type,sdp:g.sdp},g.type==="offer"?v._updateSignalingState("have-local-offer"):v._updateSignalingState("stable"),Promise.resolve()},p.prototype.setRemoteDescription=function(g){var v=this;if(["offer","answer"].indexOf(g.type)===-1)return Promise.reject(o("TypeError",'Unsupported type "'+g.type+'"'));if(!s("setRemoteDescription",g.type,v.signalingState)||v._isClosed)return Promise.reject(o("InvalidStateError","Can not set remote "+g.type+" in state "+v.signalingState));var x={};v.remoteStreams.forEach(function(I){x[I.id]=I});var _=[],M=r.splitSections(g.sdp),C=M.shift(),P=r.matchPrefix(C,"a=ice-lite").length>0,E=r.matchPrefix(C,"a=group:BUNDLE ").length>0;v.usingBundle=E;var z=r.matchPrefix(C,"a=ice-options:")[0];return z?v.canTrickleIceCandidates=z.substr(14).split(" ").indexOf("trickle")>=0:v.canTrickleIceCandidates=!1,M.forEach(function(I,R){var N=r.splitLines(I),O=r.getKind(I),U=r.isRejected(I)&&r.matchPrefix(I,"a=bundle-only").length===0,F=N[0].substr(2).split(" ")[2],J=r.getDirection(I,C),$=r.parseMsid(I),K=r.getMid(I)||r.generateIdentifier();if(U||O==="application"&&(F==="DTLS/SCTP"||F==="UDP/DTLS/SCTP")){v.transceivers[R]={mid:K,kind:O,protocol:F,rejected:!0};return}!U&&v.transceivers[R]&&v.transceivers[R].rejected&&(v.transceivers[R]=v._createTransceiver(O,!0));var W,me,ne,ue,re,ge,be,se,he,oe=r.parseRtpParameters(I),Xe,Ve;U||(Xe=r.getIceParameters(I,C),Ve=r.getDtlsParameters(I,C),Ve.role="client"),be=r.parseRtpEncodingParameters(I);var Je=r.parseRtcpParameters(I),Ye=r.matchPrefix(I,"a=end-of-candidates",C).length>0,xe=r.matchPrefix(I,"a=candidate:").map(function(fe){return r.parseCandidate(fe)}).filter(function(fe){return fe.component===1});if((g.type==="offer"||g.type==="answer")&&!U&&E&&R>0&&v.transceivers[R]&&(v._disposeIceAndDtlsTransports(R),v.transceivers[R].iceGatherer=v.transceivers[0].iceGatherer,v.transceivers[R].iceTransport=v.transceivers[0].iceTransport,v.transceivers[R].dtlsTransport=v.transceivers[0].dtlsTransport,v.transceivers[R].rtpSender&&v.transceivers[R].rtpSender.setTransport(v.transceivers[0].dtlsTransport),v.transceivers[R].rtpReceiver&&v.transceivers[R].rtpReceiver.setTransport(v.transceivers[0].dtlsTransport)),g.type==="offer"&&!U){W=v.transceivers[R]||v._createTransceiver(O),W.mid=K,W.iceGatherer||(W.iceGatherer=v._createIceGatherer(R,E)),xe.length&&W.iceTransport.state==="new"&&(Ye&&(!E||R===0)?W.iceTransport.setRemoteCandidates(xe):xe.forEach(function(fe){a(W.iceTransport,fe)})),se=c.RTCRtpReceiver.getCapabilities(O),l<15019&&(se.codecs=se.codecs.filter(function(fe){return fe.name!=="rtx"})),ge=W.sendEncodingParameters||[{ssrc:(2*R+2)*1001}];var ye=!1;if(J==="sendrecv"||J==="sendonly"){if(ye=!W.rtpReceiver,re=W.rtpReceiver||new c.RTCRtpReceiver(W.dtlsTransport,O),ye){var ae;he=re.track,$&&$.stream==="-"||($?(x[$.stream]||(x[$.stream]=new c.MediaStream,Object.defineProperty(x[$.stream],"id",{get:function(){return $.stream}})),Object.defineProperty(he,"id",{get:function(){return $.track}}),ae=x[$.stream]):(x.default||(x.default=new c.MediaStream),ae=x.default)),ae&&(h(he,ae),W.associatedRemoteMediaStreams.push(ae)),_.push([he,re,ae])}}else W.rtpReceiver&&W.rtpReceiver.track&&(W.associatedRemoteMediaStreams.forEach(function(fe){var it=fe.getTracks().find(function(vt){return vt.id===W.rtpReceiver.track.id});it&&d(it,fe)}),W.associatedRemoteMediaStreams=[]);W.localCapabilities=se,W.remoteCapabilities=oe,W.rtpReceiver=re,W.rtcpParameters=Je,W.sendEncodingParameters=ge,W.recvEncodingParameters=be,v._transceive(v.transceivers[R],!1,ye)}else if(g.type==="answer"&&!U){W=v.transceivers[R],me=W.iceGatherer,ne=W.iceTransport,ue=W.dtlsTransport,re=W.rtpReceiver,ge=W.sendEncodingParameters,se=W.localCapabilities,v.transceivers[R].recvEncodingParameters=be,v.transceivers[R].remoteCapabilities=oe,v.transceivers[R].rtcpParameters=Je,xe.length&&ne.state==="new"&&((P||Ye)&&(!E||R===0)?ne.setRemoteCandidates(xe):xe.forEach(function(fe){a(W.iceTransport,fe)})),(!E||R===0)&&(ne.state==="new"&&ne.start(me,Xe,"controlling"),ue.state==="new"&&ue.start(Ve));var ut=i(W.localCapabilities,W.remoteCapabilities),ke=ut.codecs.filter(function(fe){return fe.name.toLowerCase()==="rtx"}).length;!ke&&W.sendEncodingParameters[0].rtx&&delete W.sendEncodingParameters[0].rtx,v._transceive(W,J==="sendrecv"||J==="recvonly",J==="sendrecv"||J==="sendonly"),re&&(J==="sendrecv"||J==="sendonly")?(he=re.track,$?(x[$.stream]||(x[$.stream]=new c.MediaStream),h(he,x[$.stream]),_.push([he,re,x[$.stream]])):(x.default||(x.default=new c.MediaStream),h(he,x.default),_.push([he,re,x.default]))):delete W.rtpReceiver}}),v._dtlsRole===void 0&&(v._dtlsRole=g.type==="offer"?"active":"passive"),v._remoteDescription={type:g.type,sdp:g.sdp},g.type==="offer"?v._updateSignalingState("have-remote-offer"):v._updateSignalingState("stable"),Object.keys(x).forEach(function(I){var R=x[I];if(R.getTracks().length){if(v.remoteStreams.indexOf(R)===-1){v.remoteStreams.push(R);var N=new Event("addstream");N.stream=R,c.setTimeout(function(){v._dispatchEvent("addstream",N)})}_.forEach(function(O){var U=O[0],F=O[1];R.id===O[2].id&&m(v,U,F,[R])})}}),_.forEach(function(I){I[2]||m(v,I[0],I[1],[])}),c.setTimeout(function(){v&&v.transceivers&&v.transceivers.forEach(function(I){I.iceTransport&&I.iceTransport.state==="new"&&I.iceTransport.getRemoteCandidates().length>0&&(console.warn("Timeout for addRemoteCandidate. Consider sending an end-of-candidates notification"),I.iceTransport.addRemoteCandidate({}))})},4e3),Promise.resolve()},p.prototype.close=function(){this.transceivers.forEach(function(g){g.iceTransport&&g.iceTransport.stop(),g.dtlsTransport&&g.dtlsTransport.stop(),g.rtpSender&&g.rtpSender.stop(),g.rtpReceiver&&g.rtpReceiver.stop()}),this._isClosed=!0,this._updateSignalingState("closed")},p.prototype._updateSignalingState=function(g){this.signalingState=g;var v=new Event("signalingstatechange");this._dispatchEvent("signalingstatechange",v)},p.prototype._maybeFireNegotiationNeeded=function(){var g=this;this.signalingState!=="stable"||this.needNegotiation===!0||(this.needNegotiation=!0,c.setTimeout(function(){if(g.needNegotiation){g.needNegotiation=!1;var v=new Event("negotiationneeded");g._dispatchEvent("negotiationneeded",v)}},0))},p.prototype._updateIceConnectionState=function(){var g,v={new:0,closed:0,checking:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach(function(_){_.iceTransport&&!_.rejected&&v[_.iceTransport.state]++}),g="new",v.failed>0?g="failed":v.checking>0?g="checking":v.disconnected>0?g="disconnected":v.new>0?g="new":v.connected>0?g="connected":v.completed>0&&(g="completed"),g!==this.iceConnectionState){this.iceConnectionState=g;var x=new Event("iceconnectionstatechange");this._dispatchEvent("iceconnectionstatechange",x)}},p.prototype._updateConnectionState=function(){var g,v={new:0,closed:0,connecting:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach(function(_){_.iceTransport&&_.dtlsTransport&&!_.rejected&&(v[_.iceTransport.state]++,v[_.dtlsTransport.state]++)}),v.connected+=v.completed,g="new",v.failed>0?g="failed":v.connecting>0?g="connecting":v.disconnected>0?g="disconnected":v.new>0?g="new":v.connected>0&&(g="connected"),g!==this.connectionState){this.connectionState=g;var x=new Event("connectionstatechange");this._dispatchEvent("connectionstatechange",x)}},p.prototype.createOffer=function(){var g=this;if(g._isClosed)return Promise.reject(o("InvalidStateError","Can not call createOffer after close"));var v=g.transceivers.filter(function(P){return P.kind==="audio"}).length,x=g.transceivers.filter(function(P){return P.kind==="video"}).length,_=arguments[0];if(_){if(_.mandatory||_.optional)throw new TypeError("Legacy mandatory/optional constraints not supported.");_.offerToReceiveAudio!==void 0&&(_.offerToReceiveAudio===!0?v=1:_.offerToReceiveAudio===!1?v=0:v=_.offerToReceiveAudio),_.offerToReceiveVideo!==void 0&&(_.offerToReceiveVideo===!0?x=1:_.offerToReceiveVideo===!1?x=0:x=_.offerToReceiveVideo)}for(g.transceivers.forEach(function(P){P.kind==="audio"?(v--,v<0&&(P.wantReceive=!1)):P.kind==="video"&&(x--,x<0&&(P.wantReceive=!1))});v>0||x>0;)v>0&&(g._createTransceiver("audio"),v--),x>0&&(g._createTransceiver("video"),x--);var M=r.writeSessionBoilerplate(g._sdpSessionId,g._sdpSessionVersion++);g.transceivers.forEach(function(P,E){var z=P.track,I=P.kind,R=P.mid||r.generateIdentifier();P.mid=R,P.iceGatherer||(P.iceGatherer=g._createIceGatherer(E,g.usingBundle));var N=c.RTCRtpSender.getCapabilities(I);l<15019&&(N.codecs=N.codecs.filter(function(U){return U.name!=="rtx"})),N.codecs.forEach(function(U){U.name==="H264"&&U.parameters["level-asymmetry-allowed"]===void 0&&(U.parameters["level-asymmetry-allowed"]="1"),P.remoteCapabilities&&P.remoteCapabilities.codecs&&P.remoteCapabilities.codecs.forEach(function(F){U.name.toLowerCase()===F.name.toLowerCase()&&U.clockRate===F.clockRate&&(U.preferredPayloadType=F.payloadType)})}),N.headerExtensions.forEach(function(U){var F=P.remoteCapabilities&&P.remoteCapabilities.headerExtensions||[];F.forEach(function(J){U.uri===J.uri&&(U.id=J.id)})});var O=P.sendEncodingParameters||[{ssrc:(2*E+1)*1001}];z&&l>=15019&&I==="video"&&!O[0].rtx&&(O[0].rtx={ssrc:O[0].ssrc+1}),P.wantReceive&&(P.rtpReceiver=new c.RTCRtpReceiver(P.dtlsTransport,I)),P.localCapabilities=N,P.sendEncodingParameters=O}),g._config.bundlePolicy!=="max-compat"&&(M+="a=group:BUNDLE "+g.transceivers.map(function(P){return P.mid}).join(" ")+`\r
1089
- `),M+=`a=ice-options:trickle\r
1090
- `,g.transceivers.forEach(function(P,E){M+=t(P,P.localCapabilities,"offer",P.stream,g._dtlsRole),M+=`a=rtcp-rsize\r
1091
- `,P.iceGatherer&&g.iceGatheringState!=="new"&&(E===0||!g.usingBundle)&&(P.iceGatherer.getLocalCandidates().forEach(function(z){z.component=1,M+="a="+r.writeCandidate(z)+`\r
1092
- `}),P.iceGatherer.state==="completed"&&(M+=`a=end-of-candidates\r
1093
- `))});var C=new c.RTCSessionDescription({type:"offer",sdp:M});return Promise.resolve(C)},p.prototype.createAnswer=function(){var g=this;if(g._isClosed)return Promise.reject(o("InvalidStateError","Can not call createAnswer after close"));if(!(g.signalingState==="have-remote-offer"||g.signalingState==="have-local-pranswer"))return Promise.reject(o("InvalidStateError","Can not call createAnswer in signalingState "+g.signalingState));var v=r.writeSessionBoilerplate(g._sdpSessionId,g._sdpSessionVersion++);g.usingBundle&&(v+="a=group:BUNDLE "+g.transceivers.map(function(M){return M.mid}).join(" ")+`\r
1088
+ `,_._localDescription.sdp=r.getDescription(_._localDescription.sdp)+R.join("");var N=_.transceivers.every(function(z){return z.iceGatherer&&z.iceGatherer.state==="completed"});_.iceGatheringState!=="gathering"&&(_.iceGatheringState="gathering",_._emitGatheringStateChange()),O||_._dispatchEvent("icecandidate",P),N&&(_._dispatchEvent("icecandidate",new Event("icecandidate")),_.iceGatheringState="complete",_._emitGatheringStateChange())}},c.setTimeout(function(){C.forEach(function(M){x.onlocalcandidate(M)})},0)}},p.prototype._createIceAndDtlsTransports=function(){var g=this,v=new c.RTCIceTransport(null);v.onicestatechange=function(){g._updateIceConnectionState(),g._updateConnectionState()};var _=new c.RTCDtlsTransport(v);return _.ondtlsstatechange=function(){g._updateConnectionState()},_.onerror=function(){Object.defineProperty(_,"state",{value:"failed",writable:!0}),g._updateConnectionState()},{iceTransport:v,dtlsTransport:_}},p.prototype._disposeIceAndDtlsTransports=function(g){var v=this.transceivers[g].iceGatherer;v&&(delete v.onlocalcandidate,delete this.transceivers[g].iceGatherer);var _=this.transceivers[g].iceTransport;_&&(delete _.onicestatechange,delete this.transceivers[g].iceTransport);var x=this.transceivers[g].dtlsTransport;x&&(delete x.ondtlsstatechange,delete x.onerror,delete this.transceivers[g].dtlsTransport)},p.prototype._transceive=function(g,v,_){var x=i(g.localCapabilities,g.remoteCapabilities);v&&g.rtpSender&&(x.encodings=g.sendEncodingParameters,x.rtcp={cname:r.localCName,compound:g.rtcpParameters.compound},g.recvEncodingParameters.length&&(x.rtcp.ssrc=g.recvEncodingParameters[0].ssrc),g.rtpSender.send(x)),_&&g.rtpReceiver&&x.codecs.length>0&&(g.kind==="video"&&g.recvEncodingParameters&&l<15019&&g.recvEncodingParameters.forEach(function(C){delete C.rtx}),g.recvEncodingParameters.length?x.encodings=g.recvEncodingParameters:x.encodings=[{}],x.rtcp={compound:g.rtcpParameters.compound},g.rtcpParameters.cname&&(x.rtcp.cname=g.rtcpParameters.cname),g.sendEncodingParameters.length&&(x.rtcp.ssrc=g.sendEncodingParameters[0].ssrc),g.rtpReceiver.receive(x))},p.prototype.setLocalDescription=function(g){var v=this;if(["offer","answer"].indexOf(g.type)===-1)return Promise.reject(o("TypeError",'Unsupported type "'+g.type+'"'));if(!s("setLocalDescription",g.type,v.signalingState)||v._isClosed)return Promise.reject(o("InvalidStateError","Can not set local "+g.type+" in state "+v.signalingState));var _,x;if(g.type==="offer")_=r.splitSections(g.sdp),x=_.shift(),_.forEach(function(M,P){var E=r.parseRtpParameters(M);v.transceivers[P].localCapabilities=E}),v.transceivers.forEach(function(M,P){v._gather(M.mid,P)});else if(g.type==="answer"){_=r.splitSections(v._remoteDescription.sdp),x=_.shift();var C=r.matchPrefix(x,"a=ice-lite").length>0;_.forEach(function(M,P){var E=v.transceivers[P],O=E.iceGatherer,I=E.iceTransport,R=E.dtlsTransport,N=E.localCapabilities,z=E.remoteCapabilities,U=r.isRejected(M)&&r.matchPrefix(M,"a=bundle-only").length===0;if(!U&&!E.rejected){var F=r.getIceParameters(M,x),J=r.getDtlsParameters(M,x);C&&(J.role="server"),(!v.usingBundle||P===0)&&(v._gather(E.mid,P),I.state==="new"&&I.start(O,F,C?"controlling":"controlled"),R.state==="new"&&R.start(J));var $=i(N,z);v._transceive(E,$.codecs.length>0,!1)}})}return v._localDescription={type:g.type,sdp:g.sdp},g.type==="offer"?v._updateSignalingState("have-local-offer"):v._updateSignalingState("stable"),Promise.resolve()},p.prototype.setRemoteDescription=function(g){var v=this;if(["offer","answer"].indexOf(g.type)===-1)return Promise.reject(o("TypeError",'Unsupported type "'+g.type+'"'));if(!s("setRemoteDescription",g.type,v.signalingState)||v._isClosed)return Promise.reject(o("InvalidStateError","Can not set remote "+g.type+" in state "+v.signalingState));var _={};v.remoteStreams.forEach(function(I){_[I.id]=I});var x=[],C=r.splitSections(g.sdp),M=C.shift(),P=r.matchPrefix(M,"a=ice-lite").length>0,E=r.matchPrefix(M,"a=group:BUNDLE ").length>0;v.usingBundle=E;var O=r.matchPrefix(M,"a=ice-options:")[0];return O?v.canTrickleIceCandidates=O.substr(14).split(" ").indexOf("trickle")>=0:v.canTrickleIceCandidates=!1,C.forEach(function(I,R){var N=r.splitLines(I),z=r.getKind(I),U=r.isRejected(I)&&r.matchPrefix(I,"a=bundle-only").length===0,F=N[0].substr(2).split(" ")[2],J=r.getDirection(I,M),$=r.parseMsid(I),K=r.getMid(I)||r.generateIdentifier();if(U||z==="application"&&(F==="DTLS/SCTP"||F==="UDP/DTLS/SCTP")){v.transceivers[R]={mid:K,kind:z,protocol:F,rejected:!0};return}!U&&v.transceivers[R]&&v.transceivers[R].rejected&&(v.transceivers[R]=v._createTransceiver(z,!0));var W,me,ne,ue,re,ge,be,se,he,oe=r.parseRtpParameters(I),Xe,Ve;U||(Xe=r.getIceParameters(I,M),Ve=r.getDtlsParameters(I,M),Ve.role="client"),be=r.parseRtpEncodingParameters(I);var Je=r.parseRtcpParameters(I),Ye=r.matchPrefix(I,"a=end-of-candidates",M).length>0,xe=r.matchPrefix(I,"a=candidate:").map(function(fe){return r.parseCandidate(fe)}).filter(function(fe){return fe.component===1});if((g.type==="offer"||g.type==="answer")&&!U&&E&&R>0&&v.transceivers[R]&&(v._disposeIceAndDtlsTransports(R),v.transceivers[R].iceGatherer=v.transceivers[0].iceGatherer,v.transceivers[R].iceTransport=v.transceivers[0].iceTransport,v.transceivers[R].dtlsTransport=v.transceivers[0].dtlsTransport,v.transceivers[R].rtpSender&&v.transceivers[R].rtpSender.setTransport(v.transceivers[0].dtlsTransport),v.transceivers[R].rtpReceiver&&v.transceivers[R].rtpReceiver.setTransport(v.transceivers[0].dtlsTransport)),g.type==="offer"&&!U){W=v.transceivers[R]||v._createTransceiver(z),W.mid=K,W.iceGatherer||(W.iceGatherer=v._createIceGatherer(R,E)),xe.length&&W.iceTransport.state==="new"&&(Ye&&(!E||R===0)?W.iceTransport.setRemoteCandidates(xe):xe.forEach(function(fe){a(W.iceTransport,fe)})),se=c.RTCRtpReceiver.getCapabilities(z),l<15019&&(se.codecs=se.codecs.filter(function(fe){return fe.name!=="rtx"})),ge=W.sendEncodingParameters||[{ssrc:(2*R+2)*1001}];var ye=!1;if(J==="sendrecv"||J==="sendonly"){if(ye=!W.rtpReceiver,re=W.rtpReceiver||new c.RTCRtpReceiver(W.dtlsTransport,z),ye){var ae;he=re.track,$&&$.stream==="-"||($?(_[$.stream]||(_[$.stream]=new c.MediaStream,Object.defineProperty(_[$.stream],"id",{get:function(){return $.stream}})),Object.defineProperty(he,"id",{get:function(){return $.track}}),ae=_[$.stream]):(_.default||(_.default=new c.MediaStream),ae=_.default)),ae&&(h(he,ae),W.associatedRemoteMediaStreams.push(ae)),x.push([he,re,ae])}}else W.rtpReceiver&&W.rtpReceiver.track&&(W.associatedRemoteMediaStreams.forEach(function(fe){var it=fe.getTracks().find(function(vt){return vt.id===W.rtpReceiver.track.id});it&&d(it,fe)}),W.associatedRemoteMediaStreams=[]);W.localCapabilities=se,W.remoteCapabilities=oe,W.rtpReceiver=re,W.rtcpParameters=Je,W.sendEncodingParameters=ge,W.recvEncodingParameters=be,v._transceive(v.transceivers[R],!1,ye)}else if(g.type==="answer"&&!U){W=v.transceivers[R],me=W.iceGatherer,ne=W.iceTransport,ue=W.dtlsTransport,re=W.rtpReceiver,ge=W.sendEncodingParameters,se=W.localCapabilities,v.transceivers[R].recvEncodingParameters=be,v.transceivers[R].remoteCapabilities=oe,v.transceivers[R].rtcpParameters=Je,xe.length&&ne.state==="new"&&((P||Ye)&&(!E||R===0)?ne.setRemoteCandidates(xe):xe.forEach(function(fe){a(W.iceTransport,fe)})),(!E||R===0)&&(ne.state==="new"&&ne.start(me,Xe,"controlling"),ue.state==="new"&&ue.start(Ve));var ut=i(W.localCapabilities,W.remoteCapabilities),ke=ut.codecs.filter(function(fe){return fe.name.toLowerCase()==="rtx"}).length;!ke&&W.sendEncodingParameters[0].rtx&&delete W.sendEncodingParameters[0].rtx,v._transceive(W,J==="sendrecv"||J==="recvonly",J==="sendrecv"||J==="sendonly"),re&&(J==="sendrecv"||J==="sendonly")?(he=re.track,$?(_[$.stream]||(_[$.stream]=new c.MediaStream),h(he,_[$.stream]),x.push([he,re,_[$.stream]])):(_.default||(_.default=new c.MediaStream),h(he,_.default),x.push([he,re,_.default]))):delete W.rtpReceiver}}),v._dtlsRole===void 0&&(v._dtlsRole=g.type==="offer"?"active":"passive"),v._remoteDescription={type:g.type,sdp:g.sdp},g.type==="offer"?v._updateSignalingState("have-remote-offer"):v._updateSignalingState("stable"),Object.keys(_).forEach(function(I){var R=_[I];if(R.getTracks().length){if(v.remoteStreams.indexOf(R)===-1){v.remoteStreams.push(R);var N=new Event("addstream");N.stream=R,c.setTimeout(function(){v._dispatchEvent("addstream",N)})}x.forEach(function(z){var U=z[0],F=z[1];R.id===z[2].id&&m(v,U,F,[R])})}}),x.forEach(function(I){I[2]||m(v,I[0],I[1],[])}),c.setTimeout(function(){v&&v.transceivers&&v.transceivers.forEach(function(I){I.iceTransport&&I.iceTransport.state==="new"&&I.iceTransport.getRemoteCandidates().length>0&&(console.warn("Timeout for addRemoteCandidate. Consider sending an end-of-candidates notification"),I.iceTransport.addRemoteCandidate({}))})},4e3),Promise.resolve()},p.prototype.close=function(){this.transceivers.forEach(function(g){g.iceTransport&&g.iceTransport.stop(),g.dtlsTransport&&g.dtlsTransport.stop(),g.rtpSender&&g.rtpSender.stop(),g.rtpReceiver&&g.rtpReceiver.stop()}),this._isClosed=!0,this._updateSignalingState("closed")},p.prototype._updateSignalingState=function(g){this.signalingState=g;var v=new Event("signalingstatechange");this._dispatchEvent("signalingstatechange",v)},p.prototype._maybeFireNegotiationNeeded=function(){var g=this;this.signalingState!=="stable"||this.needNegotiation===!0||(this.needNegotiation=!0,c.setTimeout(function(){if(g.needNegotiation){g.needNegotiation=!1;var v=new Event("negotiationneeded");g._dispatchEvent("negotiationneeded",v)}},0))},p.prototype._updateIceConnectionState=function(){var g,v={new:0,closed:0,checking:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach(function(x){x.iceTransport&&!x.rejected&&v[x.iceTransport.state]++}),g="new",v.failed>0?g="failed":v.checking>0?g="checking":v.disconnected>0?g="disconnected":v.new>0?g="new":v.connected>0?g="connected":v.completed>0&&(g="completed"),g!==this.iceConnectionState){this.iceConnectionState=g;var _=new Event("iceconnectionstatechange");this._dispatchEvent("iceconnectionstatechange",_)}},p.prototype._updateConnectionState=function(){var g,v={new:0,closed:0,connecting:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach(function(x){x.iceTransport&&x.dtlsTransport&&!x.rejected&&(v[x.iceTransport.state]++,v[x.dtlsTransport.state]++)}),v.connected+=v.completed,g="new",v.failed>0?g="failed":v.connecting>0?g="connecting":v.disconnected>0?g="disconnected":v.new>0?g="new":v.connected>0&&(g="connected"),g!==this.connectionState){this.connectionState=g;var _=new Event("connectionstatechange");this._dispatchEvent("connectionstatechange",_)}},p.prototype.createOffer=function(){var g=this;if(g._isClosed)return Promise.reject(o("InvalidStateError","Can not call createOffer after close"));var v=g.transceivers.filter(function(P){return P.kind==="audio"}).length,_=g.transceivers.filter(function(P){return P.kind==="video"}).length,x=arguments[0];if(x){if(x.mandatory||x.optional)throw new TypeError("Legacy mandatory/optional constraints not supported.");x.offerToReceiveAudio!==void 0&&(x.offerToReceiveAudio===!0?v=1:x.offerToReceiveAudio===!1?v=0:v=x.offerToReceiveAudio),x.offerToReceiveVideo!==void 0&&(x.offerToReceiveVideo===!0?_=1:x.offerToReceiveVideo===!1?_=0:_=x.offerToReceiveVideo)}for(g.transceivers.forEach(function(P){P.kind==="audio"?(v--,v<0&&(P.wantReceive=!1)):P.kind==="video"&&(_--,_<0&&(P.wantReceive=!1))});v>0||_>0;)v>0&&(g._createTransceiver("audio"),v--),_>0&&(g._createTransceiver("video"),_--);var C=r.writeSessionBoilerplate(g._sdpSessionId,g._sdpSessionVersion++);g.transceivers.forEach(function(P,E){var O=P.track,I=P.kind,R=P.mid||r.generateIdentifier();P.mid=R,P.iceGatherer||(P.iceGatherer=g._createIceGatherer(E,g.usingBundle));var N=c.RTCRtpSender.getCapabilities(I);l<15019&&(N.codecs=N.codecs.filter(function(U){return U.name!=="rtx"})),N.codecs.forEach(function(U){U.name==="H264"&&U.parameters["level-asymmetry-allowed"]===void 0&&(U.parameters["level-asymmetry-allowed"]="1"),P.remoteCapabilities&&P.remoteCapabilities.codecs&&P.remoteCapabilities.codecs.forEach(function(F){U.name.toLowerCase()===F.name.toLowerCase()&&U.clockRate===F.clockRate&&(U.preferredPayloadType=F.payloadType)})}),N.headerExtensions.forEach(function(U){var F=P.remoteCapabilities&&P.remoteCapabilities.headerExtensions||[];F.forEach(function(J){U.uri===J.uri&&(U.id=J.id)})});var z=P.sendEncodingParameters||[{ssrc:(2*E+1)*1001}];O&&l>=15019&&I==="video"&&!z[0].rtx&&(z[0].rtx={ssrc:z[0].ssrc+1}),P.wantReceive&&(P.rtpReceiver=new c.RTCRtpReceiver(P.dtlsTransport,I)),P.localCapabilities=N,P.sendEncodingParameters=z}),g._config.bundlePolicy!=="max-compat"&&(C+="a=group:BUNDLE "+g.transceivers.map(function(P){return P.mid}).join(" ")+`\r
1089
+ `),C+=`a=ice-options:trickle\r
1090
+ `,g.transceivers.forEach(function(P,E){C+=t(P,P.localCapabilities,"offer",P.stream,g._dtlsRole),C+=`a=rtcp-rsize\r
1091
+ `,P.iceGatherer&&g.iceGatheringState!=="new"&&(E===0||!g.usingBundle)&&(P.iceGatherer.getLocalCandidates().forEach(function(O){O.component=1,C+="a="+r.writeCandidate(O)+`\r
1092
+ `}),P.iceGatherer.state==="completed"&&(C+=`a=end-of-candidates\r
1093
+ `))});var M=new c.RTCSessionDescription({type:"offer",sdp:C});return Promise.resolve(M)},p.prototype.createAnswer=function(){var g=this;if(g._isClosed)return Promise.reject(o("InvalidStateError","Can not call createAnswer after close"));if(!(g.signalingState==="have-remote-offer"||g.signalingState==="have-local-pranswer"))return Promise.reject(o("InvalidStateError","Can not call createAnswer in signalingState "+g.signalingState));var v=r.writeSessionBoilerplate(g._sdpSessionId,g._sdpSessionVersion++);g.usingBundle&&(v+="a=group:BUNDLE "+g.transceivers.map(function(C){return C.mid}).join(" ")+`\r
1094
1094
  `),v+=`a=ice-options:trickle\r
1095
- `;var x=r.getMediaSections(g._remoteDescription.sdp).length;g.transceivers.forEach(function(M,C){if(!(C+1>x)){if(M.rejected){M.kind==="application"?M.protocol==="DTLS/SCTP"?v+=`m=application 0 DTLS/SCTP 5000\r
1096
- `:v+="m=application 0 "+M.protocol+` webrtc-datachannel\r
1097
- `:M.kind==="audio"?v+=`m=audio 0 UDP/TLS/RTP/SAVPF 0\r
1095
+ `;var _=r.getMediaSections(g._remoteDescription.sdp).length;g.transceivers.forEach(function(C,M){if(!(M+1>_)){if(C.rejected){C.kind==="application"?C.protocol==="DTLS/SCTP"?v+=`m=application 0 DTLS/SCTP 5000\r
1096
+ `:v+="m=application 0 "+C.protocol+` webrtc-datachannel\r
1097
+ `:C.kind==="audio"?v+=`m=audio 0 UDP/TLS/RTP/SAVPF 0\r
1098
1098
  a=rtpmap:0 PCMU/8000\r
1099
- `:M.kind==="video"&&(v+=`m=video 0 UDP/TLS/RTP/SAVPF 120\r
1099
+ `:C.kind==="video"&&(v+=`m=video 0 UDP/TLS/RTP/SAVPF 120\r
1100
1100
  a=rtpmap:120 VP8/90000\r
1101
1101
  `),v+=`c=IN IP4 0.0.0.0\r
1102
1102
  a=inactive\r
1103
- a=mid:`+M.mid+`\r
1104
- `;return}if(M.stream){var P;M.kind==="audio"?P=M.stream.getAudioTracks()[0]:M.kind==="video"&&(P=M.stream.getVideoTracks()[0]),P&&l>=15019&&M.kind==="video"&&!M.sendEncodingParameters[0].rtx&&(M.sendEncodingParameters[0].rtx={ssrc:M.sendEncodingParameters[0].ssrc+1})}var E=i(M.localCapabilities,M.remoteCapabilities),z=E.codecs.filter(function(I){return I.name.toLowerCase()==="rtx"}).length;!z&&M.sendEncodingParameters[0].rtx&&delete M.sendEncodingParameters[0].rtx,v+=t(M,E,"answer",M.stream,g._dtlsRole),M.rtcpParameters&&M.rtcpParameters.reducedSize&&(v+=`a=rtcp-rsize\r
1105
- `)}});var _=new c.RTCSessionDescription({type:"answer",sdp:v});return Promise.resolve(_)},p.prototype.addIceCandidate=function(g){var v=this,x;return g&&!(g.sdpMLineIndex!==void 0||g.sdpMid)?Promise.reject(new TypeError("sdpMLineIndex or sdpMid required")):new Promise(function(_,M){if(v._remoteDescription)if(!g||g.candidate==="")for(var C=0;C<v.transceivers.length&&!(!v.transceivers[C].rejected&&(v.transceivers[C].iceTransport.addRemoteCandidate({}),x=r.getMediaSections(v._remoteDescription.sdp),x[C]+=`a=end-of-candidates\r
1106
- `,v._remoteDescription.sdp=r.getDescription(v._remoteDescription.sdp)+x.join(""),v.usingBundle));C++);else{var P=g.sdpMLineIndex;if(g.sdpMid){for(var E=0;E<v.transceivers.length;E++)if(v.transceivers[E].mid===g.sdpMid){P=E;break}}var z=v.transceivers[P];if(z){if(z.rejected)return _();var I=Object.keys(g.candidate).length>0?r.parseCandidate(g.candidate):{};if(I.protocol==="tcp"&&(I.port===0||I.port===9)||I.component&&I.component!==1)return _();if((P===0||P>0&&z.iceTransport!==v.transceivers[0].iceTransport)&&!a(z.iceTransport,I))return M(o("OperationError","Can not add ICE candidate"));var R=g.candidate.trim();R.indexOf("a=")===0&&(R=R.substr(2)),x=r.getMediaSections(v._remoteDescription.sdp),x[P]+="a="+(I.type?R:"end-of-candidates")+`\r
1107
- `,v._remoteDescription.sdp=r.getDescription(v._remoteDescription.sdp)+x.join("")}else return M(o("OperationError","Can not add ICE candidate"))}else return M(o("InvalidStateError","Can not add ICE candidate without a remote description"));_()})},p.prototype.getStats=function(g){if(g&&g instanceof c.MediaStreamTrack){var v=null;if(this.transceivers.forEach(function(_){_.rtpSender&&_.rtpSender.track===g?v=_.rtpSender:_.rtpReceiver&&_.rtpReceiver.track===g&&(v=_.rtpReceiver)}),!v)throw o("InvalidAccessError","Invalid selector.");return v.getStats()}var x=[];return this.transceivers.forEach(function(_){["rtpSender","rtpReceiver","iceGatherer","iceTransport","dtlsTransport"].forEach(function(M){_[M]&&x.push(_[M].getStats())})}),Promise.all(x).then(function(_){var M=new Map;return _.forEach(function(C){C.forEach(function(P){M.set(P.id,P)})}),M})};var b=["RTCRtpSender","RTCRtpReceiver","RTCIceGatherer","RTCIceTransport","RTCDtlsTransport"];b.forEach(function(g){var v=c[g];if(v&&v.prototype&&v.prototype.getStats){var x=v.prototype.getStats;v.prototype.getStats=function(){return x.apply(this).then(function(_){var M=new Map;return Object.keys(_).forEach(function(C){_[C].type=e(_[C]),M.set(C,_[C])}),M})}}});var T=["createOffer","createAnswer"];return T.forEach(function(g){var v=p.prototype[g];p.prototype[g]=function(){var x=arguments;return typeof x[0]=="function"||typeof x[1]=="function"?v.apply(this,[arguments[2]]).then(function(_){typeof x[0]=="function"&&x[0].apply(null,[_])},function(_){typeof x[1]=="function"&&x[1].apply(null,[_])}):v.apply(this,arguments)}}),T=["setLocalDescription","setRemoteDescription","addIceCandidate"],T.forEach(function(g){var v=p.prototype[g];p.prototype[g]=function(){var x=arguments;return typeof x[1]=="function"||typeof x[2]=="function"?v.apply(this,arguments).then(function(){typeof x[1]=="function"&&x[1].apply(null)},function(_){typeof x[2]=="function"&&x[2].apply(null,[_])}):v.apply(this,arguments)}}),["getStats"].forEach(function(g){var v=p.prototype[g];p.prototype[g]=function(){var x=arguments;return typeof x[1]=="function"?v.apply(this,arguments).then(function(){typeof x[1]=="function"&&x[1].apply(null)}):v.apply(this,arguments)}}),p},Ss}var Qu=Ku();const eh=ao(Qu);function dc(r){const e=r&&r.navigator,t=function(i){return{name:{PermissionDeniedError:"NotAllowedError"}[i.name]||i.name,message:i.message,constraint:i.constraint,toString(){return this.name}}},n=e.mediaDevices.getUserMedia.bind(e.mediaDevices);Object.getOwnPropertyDescriptor(e.mediaDevices,"getUserMedia")?.writable&&(e.mediaDevices.getUserMedia=function(i){return n(i).catch(s=>Promise.reject(t(s)))})}function pc(r){"getDisplayMedia"in r.navigator&&r.navigator.mediaDevices&&(r.navigator.mediaDevices&&"getDisplayMedia"in r.navigator.mediaDevices||(r.navigator.mediaDevices.getDisplayMedia=r.navigator.getDisplayMedia.bind(r.navigator)))}function Ds(r,e){if(r.RTCIceGatherer&&(r.RTCIceCandidate||(r.RTCIceCandidate=function(i){return i}),r.RTCSessionDescription||(r.RTCSessionDescription=function(i){return i}),e.version<15025)){const n=Object.getOwnPropertyDescriptor(r.MediaStreamTrack.prototype,"enabled");Object.defineProperty(r.MediaStreamTrack.prototype,"enabled",{set(i){n.set.call(this,i);const s=new Event("enabled");s.enabled=i,this.dispatchEvent(s)}})}r.RTCRtpSender&&!("dtmf"in r.RTCRtpSender.prototype)&&Object.defineProperty(r.RTCRtpSender.prototype,"dtmf",{get(){return this._dtmf===void 0&&(this.track.kind==="audio"?this._dtmf=new r.RTCDtmfSender(this):this.track.kind==="video"&&(this._dtmf=null)),this._dtmf}}),r.RTCDtmfSender&&!r.RTCDTMFSender&&(r.RTCDTMFSender=r.RTCDtmfSender);const t=eh(r,e.version);r.RTCPeerConnection=function(i){return i&&i.iceServers&&(i.iceServers=Zu(i.iceServers,e.version),co("ICE servers after filtering:",i.iceServers)),new t(i)},r.RTCPeerConnection.prototype=t.prototype}function mc(r){r.RTCRtpSender&&!("replaceTrack"in r.RTCRtpSender.prototype)&&(r.RTCRtpSender.prototype.replaceTrack=r.RTCRtpSender.prototype.setTrack)}const sa=Object.freeze(Object.defineProperty({__proto__:null,shimGetDisplayMedia:pc,shimGetUserMedia:dc,shimPeerConnection:Ds,shimReplaceTrack:mc},Symbol.toStringTag,{value:"Module"}));function yc(r,e){const t=r&&r.navigator,n=r&&r.MediaStreamTrack;if(t.getUserMedia=function(i,s,a){jr("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),t.mediaDevices.getUserMedia(i).then(s,a)},!(e.version>55&&"autoGainControl"in t.mediaDevices.getSupportedConstraints())){const i=function(a,o,c){o in a&&!(c in a)&&(a[c]=a[o],delete a[o])},s=t.mediaDevices.getUserMedia.bind(t.mediaDevices);if(Object.getOwnPropertyDescriptor(t.mediaDevices,"getUserMedia")?.writable&&(t.mediaDevices.getUserMedia=function(a){return typeof a=="object"&&typeof a.audio=="object"&&(a=JSON.parse(JSON.stringify(a)),i(a.audio,"autoGainControl","mozAutoGainControl"),i(a.audio,"noiseSuppression","mozNoiseSuppression")),s(a)}),n&&n.prototype.getSettings){const a=n.prototype.getSettings;n.prototype.getSettings=function(){const o=a.apply(this,arguments);return i(o,"mozAutoGainControl","autoGainControl"),i(o,"mozNoiseSuppression","noiseSuppression"),o}}if(n&&n.prototype.applyConstraints){const a=n.prototype.applyConstraints;n.prototype.applyConstraints=function(o){return this.kind==="audio"&&typeof o=="object"&&(o=JSON.parse(JSON.stringify(o)),i(o,"autoGainControl","mozAutoGainControl"),i(o,"noiseSuppression","mozNoiseSuppression")),a.apply(this,[o])}}}}function th(r,e){r.navigator.mediaDevices&&"getDisplayMedia"in r.navigator.mediaDevices||r.navigator.mediaDevices&&(r.navigator.mediaDevices.getDisplayMedia=function(n){if(!(n&&n.video)){const i=new DOMException("getDisplayMedia without video constraints is undefined");return i.name="NotFoundError",i.code=8,Promise.reject(i)}return n.video===!0?n.video={mediaSource:e}:n.video.mediaSource=e,r.navigator.mediaDevices.getUserMedia(n)})}function gc(r){typeof r=="object"&&r.RTCTrackEvent&&"receiver"in r.RTCTrackEvent.prototype&&!("transceiver"in r.RTCTrackEvent.prototype)&&Object.defineProperty(r.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function Ls(r,e){if(typeof r!="object"||!(r.RTCPeerConnection||r.mozRTCPeerConnection))return;!r.RTCPeerConnection&&r.mozRTCPeerConnection&&(r.RTCPeerConnection=r.mozRTCPeerConnection),e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(i){const s=r.RTCPeerConnection.prototype[i],a={[i](){return arguments[0]=new(i==="addIceCandidate"?r.RTCIceCandidate:r.RTCSessionDescription)(arguments[0]),s.apply(this,arguments)}};r.RTCPeerConnection.prototype[i]=a[i]});const t={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},n=r.RTCPeerConnection.prototype.getStats;r.RTCPeerConnection.prototype.getStats=function(){const[s,a,o]=arguments;return n.apply(this,[s||null]).then(c=>{if(e.version<53&&!a)try{c.forEach(l=>{l.type=t[l.type]||l.type})}catch(l){if(l.name!=="TypeError")throw l;c.forEach((h,d)=>{c.set(d,Object.assign({},h,{type:t[h.type]||h.type}))})}return c}).then(a,o)}}function vc(r){if(!(typeof r=="object"&&r.RTCPeerConnection&&r.RTCRtpSender)||r.RTCRtpSender&&"getStats"in r.RTCRtpSender.prototype)return;const e=r.RTCPeerConnection.prototype.getSenders;e&&(r.RTCPeerConnection.prototype.getSenders=function(){const i=e.apply(this,[]);return i.forEach(s=>s._pc=this),i});const t=r.RTCPeerConnection.prototype.addTrack;t&&(r.RTCPeerConnection.prototype.addTrack=function(){const i=t.apply(this,arguments);return i._pc=this,i}),r.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function Sc(r){if(!(typeof r=="object"&&r.RTCPeerConnection&&r.RTCRtpSender)||r.RTCRtpSender&&"getStats"in r.RTCRtpReceiver.prototype)return;const e=r.RTCPeerConnection.prototype.getReceivers;e&&(r.RTCPeerConnection.prototype.getReceivers=function(){const n=e.apply(this,[]);return n.forEach(i=>i._pc=this),n}),jn(r,"track",t=>(t.receiver._pc=t.srcElement,t)),r.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function xc(r){!r.RTCPeerConnection||"removeStream"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.removeStream=function(t){jr("removeStream","removeTrack"),this.getSenders().forEach(n=>{n.track&&t.getTracks().includes(n.track)&&this.removeTrack(n)})})}function _c(r){r.DataChannel&&!r.RTCDataChannel&&(r.RTCDataChannel=r.DataChannel)}function bc(r){if(!(typeof r=="object"&&r.RTCPeerConnection))return;const e=r.RTCPeerConnection.prototype.addTransceiver;e&&(r.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];const n=arguments[1],i=n&&"sendEncodings"in n;i&&n.sendEncodings.forEach(a=>{if("rid"in a&&!/^[a-z0-9]{0,16}$/i.test(a.rid))throw new TypeError("Invalid RID value provided.");if("scaleResolutionDownBy"in a&&!(parseFloat(a.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in a&&!(parseFloat(a.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")});const s=e.apply(this,arguments);if(i){const{sender:a}=s,o=a.getParameters();(!("encodings"in o)||o.encodings.length===1&&Object.keys(o.encodings[0]).length===0)&&(o.encodings=n.sendEncodings,a.sendEncodings=n.sendEncodings,this.setParametersPromises.push(a.setParameters(o).then(()=>{delete a.sendEncodings}).catch(()=>{delete a.sendEncodings})))}return s})}function Tc(r){if(!(typeof r=="object"&&r.RTCRtpSender))return;const e=r.RTCRtpSender.prototype.getParameters;e&&(r.RTCRtpSender.prototype.getParameters=function(){const n=e.apply(this,arguments);return"encodings"in n||(n.encodings=[].concat(this.sendEncodings||[{}])),n})}function Mc(r){if(!(typeof r=="object"&&r.RTCPeerConnection))return;const e=r.RTCPeerConnection.prototype.createOffer;r.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>e.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):e.apply(this,arguments)}}function Cc(r){if(!(typeof r=="object"&&r.RTCPeerConnection))return;const e=r.RTCPeerConnection.prototype.createAnswer;r.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>e.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):e.apply(this,arguments)}}const oa=Object.freeze(Object.defineProperty({__proto__:null,shimAddTransceiver:bc,shimCreateAnswer:Cc,shimCreateOffer:Mc,shimGetDisplayMedia:th,shimGetParameters:Tc,shimGetUserMedia:yc,shimOnTrack:gc,shimPeerConnection:Ls,shimRTCDataChannel:_c,shimReceiverGetStats:Sc,shimRemoveStream:xc,shimSenderGetStats:vc},Symbol.toStringTag,{value:"Module"}));function wc(r){if(!(typeof r!="object"||!r.RTCPeerConnection)){if("getLocalStreams"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in r.RTCPeerConnection.prototype)){const e=r.RTCPeerConnection.prototype.addTrack;r.RTCPeerConnection.prototype.addStream=function(n){this._localStreams||(this._localStreams=[]),this._localStreams.includes(n)||this._localStreams.push(n),n.getAudioTracks().forEach(i=>e.call(this,i,n)),n.getVideoTracks().forEach(i=>e.call(this,i,n))},r.RTCPeerConnection.prototype.addTrack=function(n,...i){return i&&i.forEach(s=>{this._localStreams?this._localStreams.includes(s)||this._localStreams.push(s):this._localStreams=[s]}),e.apply(this,arguments)}}"removeStream"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.removeStream=function(t){this._localStreams||(this._localStreams=[]);const n=this._localStreams.indexOf(t);if(n===-1)return;this._localStreams.splice(n,1);const i=t.getTracks();this.getSenders().forEach(s=>{i.includes(s.track)&&this.removeTrack(s)})})}}function Pc(r){if(!(typeof r!="object"||!r.RTCPeerConnection)&&("getRemoteStreams"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in r.RTCPeerConnection.prototype))){Object.defineProperty(r.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(t){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=t),this.addEventListener("track",this._onaddstreampoly=n=>{n.streams.forEach(i=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(i))return;this._remoteStreams.push(i);const s=new Event("addstream");s.stream=i,this.dispatchEvent(s)})})}});const e=r.RTCPeerConnection.prototype.setRemoteDescription;r.RTCPeerConnection.prototype.setRemoteDescription=function(){const n=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(i){i.streams.forEach(s=>{if(n._remoteStreams||(n._remoteStreams=[]),n._remoteStreams.indexOf(s)>=0)return;n._remoteStreams.push(s);const a=new Event("addstream");a.stream=s,n.dispatchEvent(a)})}),e.apply(n,arguments)}}}function Ec(r){if(typeof r!="object"||!r.RTCPeerConnection)return;const e=r.RTCPeerConnection.prototype,t=e.createOffer,n=e.createAnswer,i=e.setLocalDescription,s=e.setRemoteDescription,a=e.addIceCandidate;e.createOffer=function(l,h){const d=arguments.length>=2?arguments[2]:arguments[0],m=t.apply(this,[d]);return h?(m.then(l,h),Promise.resolve()):m},e.createAnswer=function(l,h){const d=arguments.length>=2?arguments[2]:arguments[0],m=n.apply(this,[d]);return h?(m.then(l,h),Promise.resolve()):m};let o=function(c,l,h){const d=i.apply(this,[c]);return h?(d.then(l,h),Promise.resolve()):d};e.setLocalDescription=o,o=function(c,l,h){const d=s.apply(this,[c]);return h?(d.then(l,h),Promise.resolve()):d},e.setRemoteDescription=o,o=function(c,l,h){const d=a.apply(this,[c]);return h?(d.then(l,h),Promise.resolve()):d},e.addIceCandidate=o}function kc(r){const e=r&&r.navigator;if(e.mediaDevices&&e.mediaDevices.getUserMedia){const t=e.mediaDevices,n=t.getUserMedia.bind(t);e.mediaDevices.getUserMedia=i=>n(Rc(i))}!e.getUserMedia&&e.mediaDevices&&e.mediaDevices.getUserMedia&&(e.getUserMedia=(function(n,i,s){e.mediaDevices.getUserMedia(n).then(i,s)}).bind(e))}function Rc(r){return r&&r.video!==void 0?Object.assign({},r,{video:nc(r.video)}):r}function Ac(r){if(!r.RTCPeerConnection)return;const e=r.RTCPeerConnection;r.RTCPeerConnection=function(n,i){if(n&&n.iceServers){const s=[];for(let a=0;a<n.iceServers.length;a++){let o=n.iceServers[a];!o.hasOwnProperty("urls")&&o.hasOwnProperty("url")?(jr("RTCIceServer.url","RTCIceServer.urls"),o=JSON.parse(JSON.stringify(o)),o.urls=o.url,delete o.url,s.push(o)):s.push(n.iceServers[a])}n.iceServers=s}return new e(n,i)},r.RTCPeerConnection.prototype=e.prototype,"generateCertificate"in e&&Object.defineProperty(r.RTCPeerConnection,"generateCertificate",{get(){return e.generateCertificate}})}function Oc(r){typeof r=="object"&&r.RTCTrackEvent&&"receiver"in r.RTCTrackEvent.prototype&&!("transceiver"in r.RTCTrackEvent.prototype)&&Object.defineProperty(r.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function zc(r){const e=r.RTCPeerConnection.prototype.createOffer;r.RTCPeerConnection.prototype.createOffer=function(n){if(n){typeof n.offerToReceiveAudio<"u"&&(n.offerToReceiveAudio=!!n.offerToReceiveAudio);const i=this.getTransceivers().find(a=>a.receiver.track.kind==="audio");n.offerToReceiveAudio===!1&&i?i.direction==="sendrecv"?i.setDirection?i.setDirection("sendonly"):i.direction="sendonly":i.direction==="recvonly"&&(i.setDirection?i.setDirection("inactive"):i.direction="inactive"):n.offerToReceiveAudio===!0&&!i&&this.addTransceiver("audio"),typeof n.offerToReceiveVideo<"u"&&(n.offerToReceiveVideo=!!n.offerToReceiveVideo);const s=this.getTransceivers().find(a=>a.receiver.track.kind==="video");n.offerToReceiveVideo===!1&&s?s.direction==="sendrecv"?s.setDirection?s.setDirection("sendonly"):s.direction="sendonly":s.direction==="recvonly"&&(s.setDirection?s.setDirection("inactive"):s.direction="inactive"):n.offerToReceiveVideo===!0&&!s&&this.addTransceiver("video")}return e.apply(this,arguments)}}function Ic(r){typeof r!="object"||r.AudioContext||(r.AudioContext=r.webkitAudioContext)}const aa=Object.freeze(Object.defineProperty({__proto__:null,shimAudioContext:Ic,shimCallbacksAPI:Ec,shimConstraints:Rc,shimCreateOfferLegacy:zc,shimGetUserMedia:kc,shimLocalStreamsAPI:wc,shimRTCIceServerUrls:Ac,shimRemoteStreamsAPI:Pc,shimTrackEventTransceiver:Oc},Symbol.toStringTag,{value:"Module"}));var nh=fc();const Cr=ao(nh);function wr(r){if(!r.RTCIceCandidate||r.RTCIceCandidate&&"foundation"in r.RTCIceCandidate.prototype)return;const e=r.RTCIceCandidate;r.RTCIceCandidate=function(n){if(typeof n=="object"&&n.candidate&&n.candidate.indexOf("a=")===0&&(n=JSON.parse(JSON.stringify(n)),n.candidate=n.candidate.substr(2)),n.candidate&&n.candidate.length){const i=new e(n),s=Cr.parseCandidate(n.candidate),a=Object.assign(i,s);return a.toJSON=function(){return{candidate:a.candidate,sdpMid:a.sdpMid,sdpMLineIndex:a.sdpMLineIndex,usernameFragment:a.usernameFragment}},a}return new e(n)},r.RTCIceCandidate.prototype=e.prototype,jn(r,"icecandidate",t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new r.RTCIceCandidate(t.candidate),writable:"false"}),t))}function ri(r,e){if(!r.RTCPeerConnection)return;"sctp"in r.RTCPeerConnection.prototype||Object.defineProperty(r.RTCPeerConnection.prototype,"sctp",{get(){return typeof this._sctp>"u"?null:this._sctp}});const t=function(o){if(!o||!o.sdp)return!1;const c=Cr.splitSections(o.sdp);return c.shift(),c.some(l=>{const h=Cr.parseMLine(l);return h&&h.kind==="application"&&h.protocol.indexOf("SCTP")!==-1})},n=function(o){const c=o.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(c===null||c.length<2)return-1;const l=parseInt(c[1],10);return l!==l?-1:l},i=function(o){let c=65536;return e.browser==="firefox"&&(e.version<57?o===-1?c=16384:c=2147483637:e.version<60?c=e.version===57?65535:65536:c=2147483637),c},s=function(o,c){let l=65536;e.browser==="firefox"&&e.version===57&&(l=65535);const h=Cr.matchPrefix(o.sdp,"a=max-message-size:");return h.length>0?l=parseInt(h[0].substr(19),10):e.browser==="firefox"&&c!==-1&&(l=2147483637),l},a=r.RTCPeerConnection.prototype.setRemoteDescription;r.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,e.browser==="chrome"&&e.version>=76){const{sdpSemantics:c}=this.getConfiguration();c==="plan-b"&&Object.defineProperty(this,"sctp",{get(){return typeof this._sctp>"u"?null:this._sctp},enumerable:!0,configurable:!0})}if(t(arguments[0])){const c=n(arguments[0]),l=i(c),h=s(arguments[0],c);let d;l===0&&h===0?d=Number.POSITIVE_INFINITY:l===0||h===0?d=Math.max(l,h):d=Math.min(l,h);const m={};Object.defineProperty(m,"maxMessageSize",{get(){return d}}),this._sctp=m}return a.apply(this,arguments)}}function si(r){if(!(r.RTCPeerConnection&&"createDataChannel"in r.RTCPeerConnection.prototype))return;function e(n,i){const s=n.send;n.send=function(){const o=arguments[0],c=o.length||o.size||o.byteLength;if(n.readyState==="open"&&i.sctp&&c>i.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+i.sctp.maxMessageSize+" bytes)");return s.apply(n,arguments)}}const t=r.RTCPeerConnection.prototype.createDataChannel;r.RTCPeerConnection.prototype.createDataChannel=function(){const i=t.apply(this,arguments);return e(i,this),i},jn(r,"datachannel",n=>(e(n.channel,n.target),n))}function Fs(r){if(!r.RTCPeerConnection||"connectionState"in r.RTCPeerConnection.prototype)return;const e=r.RTCPeerConnection.prototype;Object.defineProperty(e,"connectionState",{get(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(e,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(t){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),t&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=t)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach(t=>{const n=e[t];e[t]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=i=>{const s=i.target;if(s._lastConnectionState!==s.connectionState){s._lastConnectionState=s.connectionState;const a=new Event("connectionstatechange",i);s.dispatchEvent(a)}return i},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),n.apply(this,arguments)}})}function Vs(r,e){if(!r.RTCPeerConnection||e.browser==="chrome"&&e.version>=71||e.browser==="safari"&&e.version>=605)return;const t=r.RTCPeerConnection.prototype.setRemoteDescription;r.RTCPeerConnection.prototype.setRemoteDescription=function(i){if(i&&i.sdp&&i.sdp.indexOf(`
1103
+ a=mid:`+C.mid+`\r
1104
+ `;return}if(C.stream){var P;C.kind==="audio"?P=C.stream.getAudioTracks()[0]:C.kind==="video"&&(P=C.stream.getVideoTracks()[0]),P&&l>=15019&&C.kind==="video"&&!C.sendEncodingParameters[0].rtx&&(C.sendEncodingParameters[0].rtx={ssrc:C.sendEncodingParameters[0].ssrc+1})}var E=i(C.localCapabilities,C.remoteCapabilities),O=E.codecs.filter(function(I){return I.name.toLowerCase()==="rtx"}).length;!O&&C.sendEncodingParameters[0].rtx&&delete C.sendEncodingParameters[0].rtx,v+=t(C,E,"answer",C.stream,g._dtlsRole),C.rtcpParameters&&C.rtcpParameters.reducedSize&&(v+=`a=rtcp-rsize\r
1105
+ `)}});var x=new c.RTCSessionDescription({type:"answer",sdp:v});return Promise.resolve(x)},p.prototype.addIceCandidate=function(g){var v=this,_;return g&&!(g.sdpMLineIndex!==void 0||g.sdpMid)?Promise.reject(new TypeError("sdpMLineIndex or sdpMid required")):new Promise(function(x,C){if(v._remoteDescription)if(!g||g.candidate==="")for(var M=0;M<v.transceivers.length&&!(!v.transceivers[M].rejected&&(v.transceivers[M].iceTransport.addRemoteCandidate({}),_=r.getMediaSections(v._remoteDescription.sdp),_[M]+=`a=end-of-candidates\r
1106
+ `,v._remoteDescription.sdp=r.getDescription(v._remoteDescription.sdp)+_.join(""),v.usingBundle));M++);else{var P=g.sdpMLineIndex;if(g.sdpMid){for(var E=0;E<v.transceivers.length;E++)if(v.transceivers[E].mid===g.sdpMid){P=E;break}}var O=v.transceivers[P];if(O){if(O.rejected)return x();var I=Object.keys(g.candidate).length>0?r.parseCandidate(g.candidate):{};if(I.protocol==="tcp"&&(I.port===0||I.port===9)||I.component&&I.component!==1)return x();if((P===0||P>0&&O.iceTransport!==v.transceivers[0].iceTransport)&&!a(O.iceTransport,I))return C(o("OperationError","Can not add ICE candidate"));var R=g.candidate.trim();R.indexOf("a=")===0&&(R=R.substr(2)),_=r.getMediaSections(v._remoteDescription.sdp),_[P]+="a="+(I.type?R:"end-of-candidates")+`\r
1107
+ `,v._remoteDescription.sdp=r.getDescription(v._remoteDescription.sdp)+_.join("")}else return C(o("OperationError","Can not add ICE candidate"))}else return C(o("InvalidStateError","Can not add ICE candidate without a remote description"));x()})},p.prototype.getStats=function(g){if(g&&g instanceof c.MediaStreamTrack){var v=null;if(this.transceivers.forEach(function(x){x.rtpSender&&x.rtpSender.track===g?v=x.rtpSender:x.rtpReceiver&&x.rtpReceiver.track===g&&(v=x.rtpReceiver)}),!v)throw o("InvalidAccessError","Invalid selector.");return v.getStats()}var _=[];return this.transceivers.forEach(function(x){["rtpSender","rtpReceiver","iceGatherer","iceTransport","dtlsTransport"].forEach(function(C){x[C]&&_.push(x[C].getStats())})}),Promise.all(_).then(function(x){var C=new Map;return x.forEach(function(M){M.forEach(function(P){C.set(P.id,P)})}),C})};var b=["RTCRtpSender","RTCRtpReceiver","RTCIceGatherer","RTCIceTransport","RTCDtlsTransport"];b.forEach(function(g){var v=c[g];if(v&&v.prototype&&v.prototype.getStats){var _=v.prototype.getStats;v.prototype.getStats=function(){return _.apply(this).then(function(x){var C=new Map;return Object.keys(x).forEach(function(M){x[M].type=e(x[M]),C.set(M,x[M])}),C})}}});var T=["createOffer","createAnswer"];return T.forEach(function(g){var v=p.prototype[g];p.prototype[g]=function(){var _=arguments;return typeof _[0]=="function"||typeof _[1]=="function"?v.apply(this,[arguments[2]]).then(function(x){typeof _[0]=="function"&&_[0].apply(null,[x])},function(x){typeof _[1]=="function"&&_[1].apply(null,[x])}):v.apply(this,arguments)}}),T=["setLocalDescription","setRemoteDescription","addIceCandidate"],T.forEach(function(g){var v=p.prototype[g];p.prototype[g]=function(){var _=arguments;return typeof _[1]=="function"||typeof _[2]=="function"?v.apply(this,arguments).then(function(){typeof _[1]=="function"&&_[1].apply(null)},function(x){typeof _[2]=="function"&&_[2].apply(null,[x])}):v.apply(this,arguments)}}),["getStats"].forEach(function(g){var v=p.prototype[g];p.prototype[g]=function(){var _=arguments;return typeof _[1]=="function"?v.apply(this,arguments).then(function(){typeof _[1]=="function"&&_[1].apply(null)}):v.apply(this,arguments)}}),p},Ss}var Qu=Ku();const eh=ao(Qu);function dc(r){const e=r&&r.navigator,t=function(i){return{name:{PermissionDeniedError:"NotAllowedError"}[i.name]||i.name,message:i.message,constraint:i.constraint,toString(){return this.name}}},n=e.mediaDevices.getUserMedia.bind(e.mediaDevices);Object.getOwnPropertyDescriptor(e.mediaDevices,"getUserMedia")?.writable&&(e.mediaDevices.getUserMedia=function(i){return n(i).catch(s=>Promise.reject(t(s)))})}function pc(r){"getDisplayMedia"in r.navigator&&r.navigator.mediaDevices&&(r.navigator.mediaDevices&&"getDisplayMedia"in r.navigator.mediaDevices||(r.navigator.mediaDevices.getDisplayMedia=r.navigator.getDisplayMedia.bind(r.navigator)))}function Ds(r,e){if(r.RTCIceGatherer&&(r.RTCIceCandidate||(r.RTCIceCandidate=function(i){return i}),r.RTCSessionDescription||(r.RTCSessionDescription=function(i){return i}),e.version<15025)){const n=Object.getOwnPropertyDescriptor(r.MediaStreamTrack.prototype,"enabled");Object.defineProperty(r.MediaStreamTrack.prototype,"enabled",{set(i){n.set.call(this,i);const s=new Event("enabled");s.enabled=i,this.dispatchEvent(s)}})}r.RTCRtpSender&&!("dtmf"in r.RTCRtpSender.prototype)&&Object.defineProperty(r.RTCRtpSender.prototype,"dtmf",{get(){return this._dtmf===void 0&&(this.track.kind==="audio"?this._dtmf=new r.RTCDtmfSender(this):this.track.kind==="video"&&(this._dtmf=null)),this._dtmf}}),r.RTCDtmfSender&&!r.RTCDTMFSender&&(r.RTCDTMFSender=r.RTCDtmfSender);const t=eh(r,e.version);r.RTCPeerConnection=function(i){return i&&i.iceServers&&(i.iceServers=Zu(i.iceServers,e.version),co("ICE servers after filtering:",i.iceServers)),new t(i)},r.RTCPeerConnection.prototype=t.prototype}function mc(r){r.RTCRtpSender&&!("replaceTrack"in r.RTCRtpSender.prototype)&&(r.RTCRtpSender.prototype.replaceTrack=r.RTCRtpSender.prototype.setTrack)}const sa=Object.freeze(Object.defineProperty({__proto__:null,shimGetDisplayMedia:pc,shimGetUserMedia:dc,shimPeerConnection:Ds,shimReplaceTrack:mc},Symbol.toStringTag,{value:"Module"}));function yc(r,e){const t=r&&r.navigator,n=r&&r.MediaStreamTrack;if(t.getUserMedia=function(i,s,a){jr("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),t.mediaDevices.getUserMedia(i).then(s,a)},!(e.version>55&&"autoGainControl"in t.mediaDevices.getSupportedConstraints())){const i=function(a,o,c){o in a&&!(c in a)&&(a[c]=a[o],delete a[o])},s=t.mediaDevices.getUserMedia.bind(t.mediaDevices);if(Object.getOwnPropertyDescriptor(t.mediaDevices,"getUserMedia")?.writable&&(t.mediaDevices.getUserMedia=function(a){return typeof a=="object"&&typeof a.audio=="object"&&(a=JSON.parse(JSON.stringify(a)),i(a.audio,"autoGainControl","mozAutoGainControl"),i(a.audio,"noiseSuppression","mozNoiseSuppression")),s(a)}),n&&n.prototype.getSettings){const a=n.prototype.getSettings;n.prototype.getSettings=function(){const o=a.apply(this,arguments);return i(o,"mozAutoGainControl","autoGainControl"),i(o,"mozNoiseSuppression","noiseSuppression"),o}}if(n&&n.prototype.applyConstraints){const a=n.prototype.applyConstraints;n.prototype.applyConstraints=function(o){return this.kind==="audio"&&typeof o=="object"&&(o=JSON.parse(JSON.stringify(o)),i(o,"autoGainControl","mozAutoGainControl"),i(o,"noiseSuppression","mozNoiseSuppression")),a.apply(this,[o])}}}}function th(r,e){r.navigator.mediaDevices&&"getDisplayMedia"in r.navigator.mediaDevices||r.navigator.mediaDevices&&(r.navigator.mediaDevices.getDisplayMedia=function(n){if(!(n&&n.video)){const i=new DOMException("getDisplayMedia without video constraints is undefined");return i.name="NotFoundError",i.code=8,Promise.reject(i)}return n.video===!0?n.video={mediaSource:e}:n.video.mediaSource=e,r.navigator.mediaDevices.getUserMedia(n)})}function gc(r){typeof r=="object"&&r.RTCTrackEvent&&"receiver"in r.RTCTrackEvent.prototype&&!("transceiver"in r.RTCTrackEvent.prototype)&&Object.defineProperty(r.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function Ls(r,e){if(typeof r!="object"||!(r.RTCPeerConnection||r.mozRTCPeerConnection))return;!r.RTCPeerConnection&&r.mozRTCPeerConnection&&(r.RTCPeerConnection=r.mozRTCPeerConnection),e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(i){const s=r.RTCPeerConnection.prototype[i],a={[i](){return arguments[0]=new(i==="addIceCandidate"?r.RTCIceCandidate:r.RTCSessionDescription)(arguments[0]),s.apply(this,arguments)}};r.RTCPeerConnection.prototype[i]=a[i]});const t={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},n=r.RTCPeerConnection.prototype.getStats;r.RTCPeerConnection.prototype.getStats=function(){const[s,a,o]=arguments;return n.apply(this,[s||null]).then(c=>{if(e.version<53&&!a)try{c.forEach(l=>{l.type=t[l.type]||l.type})}catch(l){if(l.name!=="TypeError")throw l;c.forEach((h,d)=>{c.set(d,Object.assign({},h,{type:t[h.type]||h.type}))})}return c}).then(a,o)}}function vc(r){if(!(typeof r=="object"&&r.RTCPeerConnection&&r.RTCRtpSender)||r.RTCRtpSender&&"getStats"in r.RTCRtpSender.prototype)return;const e=r.RTCPeerConnection.prototype.getSenders;e&&(r.RTCPeerConnection.prototype.getSenders=function(){const i=e.apply(this,[]);return i.forEach(s=>s._pc=this),i});const t=r.RTCPeerConnection.prototype.addTrack;t&&(r.RTCPeerConnection.prototype.addTrack=function(){const i=t.apply(this,arguments);return i._pc=this,i}),r.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function Sc(r){if(!(typeof r=="object"&&r.RTCPeerConnection&&r.RTCRtpSender)||r.RTCRtpSender&&"getStats"in r.RTCRtpReceiver.prototype)return;const e=r.RTCPeerConnection.prototype.getReceivers;e&&(r.RTCPeerConnection.prototype.getReceivers=function(){const n=e.apply(this,[]);return n.forEach(i=>i._pc=this),n}),jn(r,"track",t=>(t.receiver._pc=t.srcElement,t)),r.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function xc(r){!r.RTCPeerConnection||"removeStream"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.removeStream=function(t){jr("removeStream","removeTrack"),this.getSenders().forEach(n=>{n.track&&t.getTracks().includes(n.track)&&this.removeTrack(n)})})}function _c(r){r.DataChannel&&!r.RTCDataChannel&&(r.RTCDataChannel=r.DataChannel)}function bc(r){if(!(typeof r=="object"&&r.RTCPeerConnection))return;const e=r.RTCPeerConnection.prototype.addTransceiver;e&&(r.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];const n=arguments[1],i=n&&"sendEncodings"in n;i&&n.sendEncodings.forEach(a=>{if("rid"in a&&!/^[a-z0-9]{0,16}$/i.test(a.rid))throw new TypeError("Invalid RID value provided.");if("scaleResolutionDownBy"in a&&!(parseFloat(a.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in a&&!(parseFloat(a.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")});const s=e.apply(this,arguments);if(i){const{sender:a}=s,o=a.getParameters();(!("encodings"in o)||o.encodings.length===1&&Object.keys(o.encodings[0]).length===0)&&(o.encodings=n.sendEncodings,a.sendEncodings=n.sendEncodings,this.setParametersPromises.push(a.setParameters(o).then(()=>{delete a.sendEncodings}).catch(()=>{delete a.sendEncodings})))}return s})}function Tc(r){if(!(typeof r=="object"&&r.RTCRtpSender))return;const e=r.RTCRtpSender.prototype.getParameters;e&&(r.RTCRtpSender.prototype.getParameters=function(){const n=e.apply(this,arguments);return"encodings"in n||(n.encodings=[].concat(this.sendEncodings||[{}])),n})}function Mc(r){if(!(typeof r=="object"&&r.RTCPeerConnection))return;const e=r.RTCPeerConnection.prototype.createOffer;r.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>e.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):e.apply(this,arguments)}}function Cc(r){if(!(typeof r=="object"&&r.RTCPeerConnection))return;const e=r.RTCPeerConnection.prototype.createAnswer;r.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>e.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):e.apply(this,arguments)}}const oa=Object.freeze(Object.defineProperty({__proto__:null,shimAddTransceiver:bc,shimCreateAnswer:Cc,shimCreateOffer:Mc,shimGetDisplayMedia:th,shimGetParameters:Tc,shimGetUserMedia:yc,shimOnTrack:gc,shimPeerConnection:Ls,shimRTCDataChannel:_c,shimReceiverGetStats:Sc,shimRemoveStream:xc,shimSenderGetStats:vc},Symbol.toStringTag,{value:"Module"}));function wc(r){if(!(typeof r!="object"||!r.RTCPeerConnection)){if("getLocalStreams"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in r.RTCPeerConnection.prototype)){const e=r.RTCPeerConnection.prototype.addTrack;r.RTCPeerConnection.prototype.addStream=function(n){this._localStreams||(this._localStreams=[]),this._localStreams.includes(n)||this._localStreams.push(n),n.getAudioTracks().forEach(i=>e.call(this,i,n)),n.getVideoTracks().forEach(i=>e.call(this,i,n))},r.RTCPeerConnection.prototype.addTrack=function(n,...i){return i&&i.forEach(s=>{this._localStreams?this._localStreams.includes(s)||this._localStreams.push(s):this._localStreams=[s]}),e.apply(this,arguments)}}"removeStream"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.removeStream=function(t){this._localStreams||(this._localStreams=[]);const n=this._localStreams.indexOf(t);if(n===-1)return;this._localStreams.splice(n,1);const i=t.getTracks();this.getSenders().forEach(s=>{i.includes(s.track)&&this.removeTrack(s)})})}}function Pc(r){if(!(typeof r!="object"||!r.RTCPeerConnection)&&("getRemoteStreams"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in r.RTCPeerConnection.prototype))){Object.defineProperty(r.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(t){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=t),this.addEventListener("track",this._onaddstreampoly=n=>{n.streams.forEach(i=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(i))return;this._remoteStreams.push(i);const s=new Event("addstream");s.stream=i,this.dispatchEvent(s)})})}});const e=r.RTCPeerConnection.prototype.setRemoteDescription;r.RTCPeerConnection.prototype.setRemoteDescription=function(){const n=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(i){i.streams.forEach(s=>{if(n._remoteStreams||(n._remoteStreams=[]),n._remoteStreams.indexOf(s)>=0)return;n._remoteStreams.push(s);const a=new Event("addstream");a.stream=s,n.dispatchEvent(a)})}),e.apply(n,arguments)}}}function Ec(r){if(typeof r!="object"||!r.RTCPeerConnection)return;const e=r.RTCPeerConnection.prototype,t=e.createOffer,n=e.createAnswer,i=e.setLocalDescription,s=e.setRemoteDescription,a=e.addIceCandidate;e.createOffer=function(l,h){const d=arguments.length>=2?arguments[2]:arguments[0],m=t.apply(this,[d]);return h?(m.then(l,h),Promise.resolve()):m},e.createAnswer=function(l,h){const d=arguments.length>=2?arguments[2]:arguments[0],m=n.apply(this,[d]);return h?(m.then(l,h),Promise.resolve()):m};let o=function(c,l,h){const d=i.apply(this,[c]);return h?(d.then(l,h),Promise.resolve()):d};e.setLocalDescription=o,o=function(c,l,h){const d=s.apply(this,[c]);return h?(d.then(l,h),Promise.resolve()):d},e.setRemoteDescription=o,o=function(c,l,h){const d=a.apply(this,[c]);return h?(d.then(l,h),Promise.resolve()):d},e.addIceCandidate=o}function kc(r){const e=r&&r.navigator;if(e.mediaDevices&&e.mediaDevices.getUserMedia){const t=e.mediaDevices,n=t.getUserMedia.bind(t);e.mediaDevices.getUserMedia=i=>n(Rc(i))}!e.getUserMedia&&e.mediaDevices&&e.mediaDevices.getUserMedia&&(e.getUserMedia=(function(n,i,s){e.mediaDevices.getUserMedia(n).then(i,s)}).bind(e))}function Rc(r){return r&&r.video!==void 0?Object.assign({},r,{video:nc(r.video)}):r}function Ac(r){if(!r.RTCPeerConnection)return;const e=r.RTCPeerConnection;r.RTCPeerConnection=function(n,i){if(n&&n.iceServers){const s=[];for(let a=0;a<n.iceServers.length;a++){let o=n.iceServers[a];!o.hasOwnProperty("urls")&&o.hasOwnProperty("url")?(jr("RTCIceServer.url","RTCIceServer.urls"),o=JSON.parse(JSON.stringify(o)),o.urls=o.url,delete o.url,s.push(o)):s.push(n.iceServers[a])}n.iceServers=s}return new e(n,i)},r.RTCPeerConnection.prototype=e.prototype,"generateCertificate"in e&&Object.defineProperty(r.RTCPeerConnection,"generateCertificate",{get(){return e.generateCertificate}})}function Oc(r){typeof r=="object"&&r.RTCTrackEvent&&"receiver"in r.RTCTrackEvent.prototype&&!("transceiver"in r.RTCTrackEvent.prototype)&&Object.defineProperty(r.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function zc(r){const e=r.RTCPeerConnection.prototype.createOffer;r.RTCPeerConnection.prototype.createOffer=function(n){if(n){typeof n.offerToReceiveAudio<"u"&&(n.offerToReceiveAudio=!!n.offerToReceiveAudio);const i=this.getTransceivers().find(a=>a.receiver.track.kind==="audio");n.offerToReceiveAudio===!1&&i?i.direction==="sendrecv"?i.setDirection?i.setDirection("sendonly"):i.direction="sendonly":i.direction==="recvonly"&&(i.setDirection?i.setDirection("inactive"):i.direction="inactive"):n.offerToReceiveAudio===!0&&!i&&this.addTransceiver("audio"),typeof n.offerToReceiveVideo<"u"&&(n.offerToReceiveVideo=!!n.offerToReceiveVideo);const s=this.getTransceivers().find(a=>a.receiver.track.kind==="video");n.offerToReceiveVideo===!1&&s?s.direction==="sendrecv"?s.setDirection?s.setDirection("sendonly"):s.direction="sendonly":s.direction==="recvonly"&&(s.setDirection?s.setDirection("inactive"):s.direction="inactive"):n.offerToReceiveVideo===!0&&!s&&this.addTransceiver("video")}return e.apply(this,arguments)}}function Ic(r){typeof r!="object"||r.AudioContext||(r.AudioContext=r.webkitAudioContext)}const aa=Object.freeze(Object.defineProperty({__proto__:null,shimAudioContext:Ic,shimCallbacksAPI:Ec,shimConstraints:Rc,shimCreateOfferLegacy:zc,shimGetUserMedia:kc,shimLocalStreamsAPI:wc,shimRTCIceServerUrls:Ac,shimRemoteStreamsAPI:Pc,shimTrackEventTransceiver:Oc},Symbol.toStringTag,{value:"Module"}));var nh=fc();const Cr=ao(nh);function wr(r){if(!r.RTCIceCandidate||r.RTCIceCandidate&&"foundation"in r.RTCIceCandidate.prototype)return;const e=r.RTCIceCandidate;r.RTCIceCandidate=function(n){if(typeof n=="object"&&n.candidate&&n.candidate.indexOf("a=")===0&&(n=JSON.parse(JSON.stringify(n)),n.candidate=n.candidate.substr(2)),n.candidate&&n.candidate.length){const i=new e(n),s=Cr.parseCandidate(n.candidate),a=Object.assign(i,s);return a.toJSON=function(){return{candidate:a.candidate,sdpMid:a.sdpMid,sdpMLineIndex:a.sdpMLineIndex,usernameFragment:a.usernameFragment}},a}return new e(n)},r.RTCIceCandidate.prototype=e.prototype,jn(r,"icecandidate",t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new r.RTCIceCandidate(t.candidate),writable:"false"}),t))}function ri(r,e){if(!r.RTCPeerConnection)return;"sctp"in r.RTCPeerConnection.prototype||Object.defineProperty(r.RTCPeerConnection.prototype,"sctp",{get(){return typeof this._sctp>"u"?null:this._sctp}});const t=function(o){if(!o||!o.sdp)return!1;const c=Cr.splitSections(o.sdp);return c.shift(),c.some(l=>{const h=Cr.parseMLine(l);return h&&h.kind==="application"&&h.protocol.indexOf("SCTP")!==-1})},n=function(o){const c=o.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(c===null||c.length<2)return-1;const l=parseInt(c[1],10);return l!==l?-1:l},i=function(o){let c=65536;return e.browser==="firefox"&&(e.version<57?o===-1?c=16384:c=2147483637:e.version<60?c=e.version===57?65535:65536:c=2147483637),c},s=function(o,c){let l=65536;e.browser==="firefox"&&e.version===57&&(l=65535);const h=Cr.matchPrefix(o.sdp,"a=max-message-size:");return h.length>0?l=parseInt(h[0].substr(19),10):e.browser==="firefox"&&c!==-1&&(l=2147483637),l},a=r.RTCPeerConnection.prototype.setRemoteDescription;r.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,e.browser==="chrome"&&e.version>=76){const{sdpSemantics:c}=this.getConfiguration();c==="plan-b"&&Object.defineProperty(this,"sctp",{get(){return typeof this._sctp>"u"?null:this._sctp},enumerable:!0,configurable:!0})}if(t(arguments[0])){const c=n(arguments[0]),l=i(c),h=s(arguments[0],c);let d;l===0&&h===0?d=Number.POSITIVE_INFINITY:l===0||h===0?d=Math.max(l,h):d=Math.min(l,h);const m={};Object.defineProperty(m,"maxMessageSize",{get(){return d}}),this._sctp=m}return a.apply(this,arguments)}}function si(r){if(!(r.RTCPeerConnection&&"createDataChannel"in r.RTCPeerConnection.prototype))return;function e(n,i){const s=n.send;n.send=function(){const o=arguments[0],c=o.length||o.size||o.byteLength;if(n.readyState==="open"&&i.sctp&&c>i.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+i.sctp.maxMessageSize+" bytes)");return s.apply(n,arguments)}}const t=r.RTCPeerConnection.prototype.createDataChannel;r.RTCPeerConnection.prototype.createDataChannel=function(){const i=t.apply(this,arguments);return e(i,this),i},jn(r,"datachannel",n=>(e(n.channel,n.target),n))}function Fs(r){if(!r.RTCPeerConnection||"connectionState"in r.RTCPeerConnection.prototype)return;const e=r.RTCPeerConnection.prototype;Object.defineProperty(e,"connectionState",{get(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(e,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(t){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),t&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=t)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach(t=>{const n=e[t];e[t]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=i=>{const s=i.target;if(s._lastConnectionState!==s.connectionState){s._lastConnectionState=s.connectionState;const a=new Event("connectionstatechange",i);s.dispatchEvent(a)}return i},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),n.apply(this,arguments)}})}function Vs(r,e){if(!r.RTCPeerConnection||e.browser==="chrome"&&e.version>=71||e.browser==="safari"&&e.version>=605)return;const t=r.RTCPeerConnection.prototype.setRemoteDescription;r.RTCPeerConnection.prototype.setRemoteDescription=function(i){if(i&&i.sdp&&i.sdp.indexOf(`
1108
1108
  a=extmap-allow-mixed`)!==-1){const s=i.sdp.split(`
1109
1109
  `).filter(a=>a.trim()!=="a=extmap-allow-mixed").join(`
1110
1110
  `);r.RTCSessionDescription&&i instanceof r.RTCSessionDescription?arguments[0]=new r.RTCSessionDescription({type:i.type,sdp:s}):i.sdp=s}return t.apply(this,arguments)}}function Pr(r,e){if(!(r.RTCPeerConnection&&r.RTCPeerConnection.prototype))return;const t=r.RTCPeerConnection.prototype.addIceCandidate;!t||t.length===0||(r.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?(e.browser==="chrome"&&e.version<78||e.browser==="firefox"&&e.version<68||e.browser==="safari")&&arguments[0]&&arguments[0].candidate===""?Promise.resolve():t.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}const ih=Object.freeze(Object.defineProperty({__proto__:null,removeExtmapAllowMixed:Vs,shimAddIceCandidateNullOrEmpty:Pr,shimConnectionState:Fs,shimMaxMessageSize:ri,shimRTCIceCandidate:wr,shimSendThrowTypeError:si},Symbol.toStringTag,{value:"Module"}));function rh({window:r}={},e={shimChrome:!0,shimFirefox:!0,shimEdge:!0,shimSafari:!0}){const t=co,n=Xu(r),i={browserDetails:n,commonShim:ih,extractVersion:ii,disableLog:Hu,disableWarnings:qu};switch(n.browser){case"chrome":if(!na||!Us||!e.shimChrome)return t("Chrome shim is not included in this adapter release."),i;if(n.version===null)return t("Chrome shim can not determine version, not shimming."),i;t("adapter.js shimming chrome."),i.browserShim=na,Pr(r,n),ic(r,n),rc(r),Us(r,n),sc(r),uc(r,n),oc(r),ac(r),cc(r),hc(r,n),wr(r),Fs(r),ri(r,n),si(r),Vs(r,n);break;case"firefox":if(!oa||!Ls||!e.shimFirefox)return t("Firefox shim is not included in this adapter release."),i;t("adapter.js shimming firefox."),i.browserShim=oa,Pr(r,n),yc(r,n),Ls(r,n),gc(r),xc(r),vc(r),Sc(r),_c(r),bc(r),Tc(r),Mc(r),Cc(r),wr(r),Fs(r),ri(r,n),si(r);break;case"edge":if(!sa||!Ds||!e.shimEdge)return t("MS edge shim is not included in this adapter release."),i;t("adapter.js shimming edge."),i.browserShim=sa,dc(r),pc(r),Ds(r,n),mc(r),ri(r,n),si(r);break;case"safari":if(!aa||!e.shimSafari)return t("Safari shim is not included in this adapter release."),i;t("adapter.js shimming safari."),i.browserShim=aa,Pr(r,n),Ac(r),zc(r),Ec(r),wc(r),Pc(r),Oc(r),kc(r),Ic(r),wr(r),ri(r,n),si(r),Vs(r,n);break;default:t("Unsupported browser!");break}return i}const ca=rh({window:typeof window>"u"?void 0:window});function Bt(r,e,t,n){Object.defineProperty(r,e,{get:t,set:n,enumerable:!0,configurable:!0})}var xs=ca.default||ca,Hn=new((function(){function r(){this.isIOS=["iPad","iPhone","iPod"].includes(navigator.platform),this.supportedBrowsers=["firefox","chrome","safari"],this.minFirefoxVersion=59,this.minChromeVersion=72,this.minSafariVersion=605}return r.prototype.isWebRTCSupported=function(){return typeof RTCPeerConnection<"u"},r.prototype.isBrowserSupported=function(){var e=this.getBrowser(),t=this.getVersion(),n=this.supportedBrowsers.includes(e);return n?e==="chrome"?t>=this.minChromeVersion:e==="firefox"?t>=this.minFirefoxVersion:e==="safari"?!this.isIOS&&t>=this.minSafariVersion:!1:!1},r.prototype.getBrowser=function(){return xs.browserDetails.browser},r.prototype.getVersion=function(){return xs.browserDetails.version||0},r.prototype.isUnifiedPlanSupported=function(){var e=this.getBrowser(),t=xs.browserDetails.version||0;if(e==="chrome"&&t<this.minChromeVersion)return!1;if(e==="firefox"&&t>=this.minFirefoxVersion)return!0;if(!window.RTCRtpTransceiver||!("currentDirection"in RTCRtpTransceiver.prototype))return!1;var n,i=!1;try{n=new RTCPeerConnection,n.addTransceiver("audio"),i=!0}catch{}finally{n&&n.close()}return i},r.prototype.toString=function(){return`Supports:
@@ -1113,4 +1113,4 @@ a=extmap-allow-mixed`)!==-1){const s=i.sdp.split(`
1113
1113
  isIOS:`).concat(this.isIOS,`
1114
1114
  isWebRTCSupported:`).concat(this.isWebRTCSupported(),`
1115
1115
  isBrowserSupported:`).concat(this.isBrowserSupported(),`
1116
- isUnifiedPlanSupported:`).concat(this.isUnifiedPlanSupported())},r})()),la={iceServers:[{urls:"stun:stun.l.google.com:19302"},{urls:["turn:eu-0.turn.peerjs.com:3478","turn:us-0.turn.peerjs.com:3478"],username:"peerjs",credential:"peerjsp"}],sdpSemantics:"unified-plan"},sh=(function(){function r(){this.CLOUD_HOST="0.peerjs.com",this.CLOUD_PORT=443,this.chunkedBrowsers={Chrome:1,chrome:1},this.chunkedMTU=16300,this.defaultConfig=la,this.browser=Hn.getBrowser(),this.browserVersion=Hn.getVersion(),this.supports=(function(){var e={browser:Hn.isBrowserSupported(),webRTC:Hn.isWebRTCSupported(),audioVideo:!1,data:!1,binaryBlob:!1,reliable:!1};if(!e.webRTC)return e;var t;try{t=new RTCPeerConnection(la),e.audioVideo=!0;var n=void 0;try{n=t.createDataChannel("_PEERJSTEST",{ordered:!0}),e.data=!0,e.reliable=!!n.ordered;try{n.binaryType="blob",e.binaryBlob=!Hn.isIOS}catch{}}catch{}finally{n&&n.close()}}catch{}finally{t&&t.close()}return e})(),this.pack=Ko.pack,this.unpack=Ko.unpack,this._dataCount=1}return r.prototype.noop=function(){},r.prototype.validateId=function(e){return!e||/^[A-Za-z0-9]+(?:[ _-][A-Za-z0-9]+)*$/.test(e)},r.prototype.chunk=function(e){for(var t=[],n=e.size,i=Math.ceil(n/te.chunkedMTU),s=0,a=0;a<n;){var o=Math.min(n,a+te.chunkedMTU),c=e.slice(a,o),l={__peerData:this._dataCount,n:s,data:c,total:i};t.push(l),a=o,s++}return this._dataCount++,t},r.prototype.blobToArrayBuffer=function(e,t){var n=new FileReader;return n.onload=function(i){i.target&&t(i.target.result)},n.readAsArrayBuffer(e),n},r.prototype.binaryStringToArrayBuffer=function(e){for(var t=new Uint8Array(e.length),n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&255;return t.buffer},r.prototype.randomToken=function(){return Math.random().toString(36).slice(2)},r.prototype.isSecure=function(){return location.protocol==="https:"},r})(),te=new sh,Bc={};Bt(Bc,"Peer",()=>Gs,r=>Gs=r);var Gi={},oh=Object.prototype.hasOwnProperty,nt="~";function Ji(){}Object.create&&(Ji.prototype=Object.create(null),new Ji().__proto__||(nt=!1));function ah(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function Nc(r,e,t,n,i){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new ah(t,n||r,i),a=nt?nt+e:e;return r._events[a]?r._events[a].fn?r._events[a]=[r._events[a],s]:r._events[a].push(s):(r._events[a]=s,r._eventsCount++),r}function Er(r,e){--r._eventsCount===0?r._events=new Ji:delete r._events[e]}function He(){this._events=new Ji,this._eventsCount=0}He.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)oh.call(t,n)&&e.push(nt?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};He.prototype.listeners=function(e){var t=nt?nt+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,s=n.length,a=new Array(s);i<s;i++)a[i]=n[i].fn;return a};He.prototype.listenerCount=function(e){var t=nt?nt+e:e,n=this._events[t];return n?n.fn?1:n.length:0};He.prototype.emit=function(e,t,n,i,s,a){var o=nt?nt+e:e;if(!this._events[o])return!1;var c=this._events[o],l=arguments.length,h,d;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,i),!0;case 5:return c.fn.call(c.context,t,n,i,s),!0;case 6:return c.fn.call(c.context,t,n,i,s,a),!0}for(d=1,h=new Array(l-1);d<l;d++)h[d-1]=arguments[d];c.fn.apply(c.context,h)}else{var m=c.length,p;for(d=0;d<m;d++)switch(c[d].once&&this.removeListener(e,c[d].fn,void 0,!0),l){case 1:c[d].fn.call(c[d].context);break;case 2:c[d].fn.call(c[d].context,t);break;case 3:c[d].fn.call(c[d].context,t,n);break;case 4:c[d].fn.call(c[d].context,t,n,i);break;default:if(!h)for(p=1,h=new Array(l-1);p<l;p++)h[p-1]=arguments[p];c[d].fn.apply(c[d].context,h)}}return!0};He.prototype.on=function(e,t,n){return Nc(this,e,t,n,!1)};He.prototype.once=function(e,t,n){return Nc(this,e,t,n,!0)};He.prototype.removeListener=function(e,t,n,i){var s=nt?nt+e:e;if(!this._events[s])return this;if(!t)return Er(this,s),this;var a=this._events[s];if(a.fn)a.fn===t&&(!i||a.once)&&(!n||a.context===n)&&Er(this,s);else{for(var o=0,c=[],l=a.length;o<l;o++)(a[o].fn!==t||i&&!a[o].once||n&&a[o].context!==n)&&c.push(a[o]);c.length?this._events[s]=c.length===1?c[0]:c:Er(this,s)}return this};He.prototype.removeAllListeners=function(e){var t;return e?(t=nt?nt+e:e,this._events[t]&&Er(this,t)):(this._events=new Ji,this._eventsCount=0),this};He.prototype.off=He.prototype.removeListener;He.prototype.addListener=He.prototype.on;He.prefixed=nt;He.EventEmitter=He;Gi=He;var j={};Bt(j,"LogLevel",()=>ot,r=>ot=r);Bt(j,"default",()=>ua,r=>ua=r);var cn=function(r,e){var t=typeof Symbol=="function"&&r[Symbol.iterator];if(!t)return r;var n=t.call(r),i,s=[],a;try{for(;(e===void 0||e-- >0)&&!(i=n.next()).done;)s.push(i.value)}catch(o){a={error:o}}finally{try{i&&!i.done&&(t=n.return)&&t.call(n)}finally{if(a)throw a.error}}return s},ln=function(r,e,t){if(t||arguments.length===2)for(var n=0,i=e.length,s;n<i;n++)(s||!(n in e))&&(s||(s=Array.prototype.slice.call(e,0,n)),s[n]=e[n]);return r.concat(s||Array.prototype.slice.call(e))},ch="PeerJS: ",ot;(function(r){r[r.Disabled=0]="Disabled",r[r.Errors=1]="Errors",r[r.Warnings=2]="Warnings",r[r.All=3]="All"})(ot||(ot={}));var lh=(function(){function r(){this._logLevel=ot.Disabled}return Object.defineProperty(r.prototype,"logLevel",{get:function(){return this._logLevel},set:function(e){this._logLevel=e},enumerable:!1,configurable:!0}),r.prototype.log=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._logLevel>=ot.All&&this._print.apply(this,ln([ot.All],cn(e),!1))},r.prototype.warn=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._logLevel>=ot.Warnings&&this._print.apply(this,ln([ot.Warnings],cn(e),!1))},r.prototype.error=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._logLevel>=ot.Errors&&this._print.apply(this,ln([ot.Errors],cn(e),!1))},r.prototype.setLogFunction=function(e){this._print=e},r.prototype._print=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var i=ln([ch],cn(t),!1);for(var s in i)i[s]instanceof Error&&(i[s]="("+i[s].name+") "+i[s].message);e>=ot.All?console.log.apply(console,ln([],cn(i),!1)):e>=ot.Warnings?console.warn.apply(console,ln(["WARNING"],cn(i),!1)):e>=ot.Errors&&console.error.apply(console,ln(["ERROR"],cn(i),!1))},r})(),ua=new lh,Uc={};Bt(Uc,"Socket",()=>ha,r=>ha=r);var Pt;(function(r){r.Data="data",r.Media="media"})(Pt||(Pt={}));var _e;(function(r){r.BrowserIncompatible="browser-incompatible",r.Disconnected="disconnected",r.InvalidID="invalid-id",r.InvalidKey="invalid-key",r.Network="network",r.PeerUnavailable="peer-unavailable",r.SslUnavailable="ssl-unavailable",r.ServerError="server-error",r.SocketError="socket-error",r.SocketClosed="socket-closed",r.UnavailableID="unavailable-id",r.WebRTC="webrtc"})(_e||(_e={}));var jt;(function(r){r.Binary="binary",r.BinaryUTF8="binary-utf8",r.JSON="json"})(jt||(jt={}));var $t;(function(r){r.Message="message",r.Disconnected="disconnected",r.Error="error",r.Close="close"})($t||($t={}));var Fe;(function(r){r.Heartbeat="HEARTBEAT",r.Candidate="CANDIDATE",r.Offer="OFFER",r.Answer="ANSWER",r.Open="OPEN",r.Error="ERROR",r.IdTaken="ID-TAKEN",r.InvalidKey="INVALID-KEY",r.Leave="LEAVE",r.Expire="EXPIRE"})(Fe||(Fe={}));var lo={};lo=JSON.parse('{"name":"peerjs","version":"1.4.7","keywords":["peerjs","webrtc","p2p","rtc"],"description":"PeerJS client","homepage":"https://peerjs.com","bugs":{"url":"https://github.com/peers/peerjs/issues"},"repository":{"type":"git","url":"https://github.com/peers/peerjs"},"license":"MIT","contributors":["Michelle Bu <michelle@michellebu.com>","afrokick <devbyru@gmail.com>","ericz <really.ez@gmail.com>","Jairo <kidandcat@gmail.com>","Jonas Gloning <34194370+jonasgloning@users.noreply.github.com>","Jairo Caro-Accino Viciana <jairo@galax.be>","Carlos Caballero <carlos.caballero.gonzalez@gmail.com>","hc <hheennrryy@gmail.com>","Muhammad Asif <capripio@gmail.com>","PrashoonB <prashoonbhattacharjee@gmail.com>","Harsh Bardhan Mishra <47351025+HarshCasper@users.noreply.github.com>","akotynski <aleksanderkotbury@gmail.com>","lmb <i@lmb.io>","Jairooo <jairocaro@msn.com>","Moritz Stückler <moritz.stueckler@gmail.com>","Simon <crydotsnakegithub@gmail.com>","Denis Lukov <denismassters@gmail.com>","Philipp Hancke <fippo@andyet.net>","Hans Oksendahl <hansoksendahl@gmail.com>","Jess <jessachandler@gmail.com>","khankuan <khankuan@gmail.com>","DUODVK <kurmanov.work@gmail.com>","XiZhao <kwang1imsa@gmail.com>","Matthias Lohr <matthias@lohr.me>","=frank tree <=frnktrb@googlemail.com>","Andre Eckardt <aeckardt@outlook.com>","Chris Cowan <agentme49@gmail.com>","Alex Chuev <alex@chuev.com>","alxnull <alxnull@e.mail.de>","Yemel Jardi <angel.jardi@gmail.com>","Ben Parnell <benjaminparnell.94@gmail.com>","Benny Lichtner <bennlich@gmail.com>","fresheneesz <bitetrudpublic@gmail.com>","bob.barstead@exaptive.com <bob.barstead@exaptive.com>","chandika <chandika@gmail.com>","emersion <contact@emersion.fr>","Christopher Van <cvan@users.noreply.github.com>","eddieherm <edhermoso@gmail.com>","Eduardo Pinho <enet4mikeenet@gmail.com>","Evandro Zanatta <ezanatta@tray.net.br>","Gardner Bickford <gardner@users.noreply.github.com>","Gian Luca <gianluca.cecchi@cynny.com>","PatrickJS <github@gdi2290.com>","jonnyf <github@jonathanfoss.co.uk>","Hizkia Felix <hizkifw@gmail.com>","Hristo Oskov <hristo.oskov@gmail.com>","Isaac Madwed <i.madwed@gmail.com>","Ilya Konanykhin <ilya.konanykhin@gmail.com>","jasonbarry <jasbarry@me.com>","Jonathan Burke <jonathan.burke.1311@googlemail.com>","Josh Hamit <josh.hamit@gmail.com>","Jordan Austin <jrax86@gmail.com>","Joel Wetzell <jwetzell@yahoo.com>","xizhao <kevin.wang@cloudera.com>","Alberto Torres <kungfoobar@gmail.com>","Jonathan Mayol <mayoljonathan@gmail.com>","Jefferson Felix <me@jsfelix.dev>","Rolf Erik Lekang <me@rolflekang.com>","Kevin Mai-Husan Chia <mhchia@users.noreply.github.com>","Pepijn de Vos <pepijndevos@gmail.com>","JooYoung <qkdlql@naver.com>","Tobias Speicher <rootcommander@gmail.com>","Steve Blaurock <sblaurock@gmail.com>","Kyrylo Shegeda <shegeda@ualberta.ca>","Diwank Singh Tomer <singh@diwank.name>","Sören Balko <Soeren.Balko@gmail.com>","Arpit Solanki <solankiarpit1997@gmail.com>","Yuki Ito <yuki@gnnk.net>","Artur Zayats <zag2art@gmail.com>"],"funding":{"type":"opencollective","url":"https://opencollective.com/peer"},"collective":{"type":"opencollective","url":"https://opencollective.com/peer"},"files":["dist/*"],"sideEffects":["lib/global.ts","lib/supports.ts"],"main":"dist/bundler.cjs","module":"dist/bundler.mjs","browser-minified":"dist/peerjs.min.js","browser-unminified":"dist/peerjs.js","types":"dist/types.d.ts","engines":{"node":">= 10"},"targets":{"types":{"source":"lib/exports.ts"},"main":{"source":"lib/exports.ts","sourceMap":{"inlineSources":true}},"module":{"source":"lib/exports.ts","includeNodeModules":["eventemitter3"],"sourceMap":{"inlineSources":true}},"browser-minified":{"context":"browser","outputFormat":"global","optimize":true,"engines":{"browsers":"cover 99%, not dead"},"source":"lib/global.ts"},"browser-unminified":{"context":"browser","outputFormat":"global","optimize":false,"engines":{"browsers":"cover 99%, not dead"},"source":"lib/global.ts"}},"scripts":{"contributors":"git-authors-cli --print=false && prettier --write package.json && git add package.json package-lock.json && git commit -m \\"chore(contributors): update and sort contributors list\\"","check":"tsc --noEmit","watch":"parcel watch","build":"rm -rf dist && parcel build","prepublishOnly":"npm run build","test":"mocha -r ts-node/register -r jsdom-global/register test/**/*.ts","format":"prettier --write .","semantic-release":"semantic-release"},"devDependencies":{"@parcel/config-default":"^2.5.0","@parcel/packager-ts":"^2.5.0","@parcel/transformer-typescript-tsc":"^2.5.0","@parcel/transformer-typescript-types":"^2.5.0","@semantic-release/changelog":"^6.0.1","@semantic-release/git":"^10.0.1","@types/chai":"^4.3.0","@types/mocha":"^9.1.0","@types/node":"^17.0.18","chai":"^4.3.6","git-authors-cli":"^1.0.40","jsdom":"^19.0.0","jsdom-global":"^3.0.2","mocha":"^9.2.0","mock-socket":"8.0.5","parcel":"^2.5.0","parcel-transformer-tsc-sourcemaps":"^1.0.2","prettier":"^2.6.2","semantic-release":"^19.0.2","standard":"^16.0.4","ts-node":"^10.5.0","typescript":"^4.5.5"},"dependencies":{"@swc/helpers":"^0.3.13","eventemitter3":"^4.0.7","peerjs-js-binarypack":"1.0.1","webrtc-adapter":"^7.7.1"}}');var uh=(function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}})(),hh=function(r,e){var t=typeof Symbol=="function"&&r[Symbol.iterator];if(!t)return r;var n=t.call(r),i,s=[],a;try{for(;(e===void 0||e-- >0)&&!(i=n.next()).done;)s.push(i.value)}catch(o){a={error:o}}finally{try{i&&!i.done&&(t=n.return)&&t.call(n)}finally{if(a)throw a.error}}return s},fh=function(r,e,t){if(t||arguments.length===2)for(var n=0,i=e.length,s;n<i;n++)(s||!(n in e))&&(s||(s=Array.prototype.slice.call(e,0,n)),s[n]=e[n]);return r.concat(s||Array.prototype.slice.call(e))},dh=function(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],n=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},ha=(function(r){uh(e,r);function e(t,n,i,s,a,o){o===void 0&&(o=5e3);var c=r.call(this)||this;c.pingInterval=o,c._disconnected=!0,c._messagesQueue=[];var l=t?"wss://":"ws://";return c._baseUrl=l+n+":"+i+s+"peerjs?key="+a,c}return e.prototype.start=function(t,n){var i=this;this._id=t;var s="".concat(this._baseUrl,"&id=").concat(t,"&token=").concat(n);this._socket||!this._disconnected||(this._socket=new WebSocket(s+"&version="+lo.version),this._disconnected=!1,this._socket.onmessage=function(a){var o;try{o=JSON.parse(a.data),j.default.log("Server message received:",o)}catch{j.default.log("Invalid server message",a.data);return}i.emit($t.Message,o)},this._socket.onclose=function(a){i._disconnected||(j.default.log("Socket closed.",a),i._cleanup(),i._disconnected=!0,i.emit($t.Disconnected))},this._socket.onopen=function(){i._disconnected||(i._sendQueuedMessages(),j.default.log("Socket open"),i._scheduleHeartbeat())})},e.prototype._scheduleHeartbeat=function(){var t=this;this._wsPingTimer=setTimeout(function(){t._sendHeartbeat()},this.pingInterval)},e.prototype._sendHeartbeat=function(){if(!this._wsOpen()){j.default.log("Cannot send heartbeat, because socket closed");return}var t=JSON.stringify({type:Fe.Heartbeat});this._socket.send(t),this._scheduleHeartbeat()},e.prototype._wsOpen=function(){return!!this._socket&&this._socket.readyState===1},e.prototype._sendQueuedMessages=function(){var t,n,i=fh([],hh(this._messagesQueue),!1);this._messagesQueue=[];try{for(var s=dh(i),a=s.next();!a.done;a=s.next()){var o=a.value;this.send(o)}}catch(c){t={error:c}}finally{try{a&&!a.done&&(n=s.return)&&n.call(s)}finally{if(t)throw t.error}}},e.prototype.send=function(t){if(!this._disconnected){if(!this._id){this._messagesQueue.push(t);return}if(!t.type){this.emit($t.Error,"Invalid message");return}if(this._wsOpen()){var n=JSON.stringify(t);this._socket.send(n)}}},e.prototype.close=function(){this._disconnected||(this._cleanup(),this._disconnected=!0)},e.prototype._cleanup=function(){this._socket&&(this._socket.onopen=this._socket.onmessage=this._socket.onclose=null,this._socket.close(),this._socket=void 0),clearTimeout(this._wsPingTimer)},e})(Gi.EventEmitter),Js={};Bt(Js,"MediaConnection",()=>pa,r=>pa=r);var uo={};Bt(uo,"Negotiator",()=>fa,r=>fa=r);var Dr=function(){return Dr=Object.assign||function(r){for(var e,t=1,n=arguments.length;t<n;t++){e=arguments[t];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=e[i])}return r},Dr.apply(this,arguments)},sr=function(r,e,t,n){function i(s){return s instanceof t?s:new t(function(a){a(s)})}return new(t||(t=Promise))(function(s,a){function o(h){try{l(n.next(h))}catch(d){a(d)}}function c(h){try{l(n.throw(h))}catch(d){a(d)}}function l(h){h.done?s(h.value):i(h.value).then(o,c)}l((n=n.apply(r,e||[])).next())})},or=function(r,e){var t={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,i,s,a;return a={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(l){return function(h){return c([l,h])}}function c(l){if(n)throw new TypeError("Generator is already executing.");for(;t;)try{if(n=1,i&&(s=l[0]&2?i.return:l[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,l[1])).done)return s;switch(i=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return t.label++,{value:l[1],done:!1};case 5:t.label++,i=l[1],l=[0];continue;case 7:l=t.ops.pop(),t.trys.pop();continue;default:if(s=t.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){t=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){t.label=l[1];break}if(l[0]===6&&t.label<s[1]){t.label=s[1],s=l;break}if(s&&t.label<s[2]){t.label=s[2],t.ops.push(l);break}s[2]&&t.ops.pop(),t.trys.pop();continue}l=e.call(r,t)}catch(h){l=[6,h],i=0}finally{n=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}},fa=(function(){function r(e){this.connection=e}return r.prototype.startConnection=function(e){var t=this._startPeerConnection();if(this.connection.peerConnection=t,this.connection.type===Pt.Media&&e._stream&&this._addTracksToConnection(e._stream,t),e.originator){if(this.connection.type===Pt.Data){var n=this.connection,i={ordered:!!e.reliable},s=t.createDataChannel(n.label,i);n.initialize(s)}this._makeOffer()}else this.handleSDP("OFFER",e.sdp)},r.prototype._startPeerConnection=function(){j.default.log("Creating RTCPeerConnection.");var e=new RTCPeerConnection(this.connection.provider.options.config);return this._setupListeners(e),e},r.prototype._setupListeners=function(e){var t=this,n=this.connection.peer,i=this.connection.connectionId,s=this.connection.type,a=this.connection.provider;j.default.log("Listening for ICE candidates."),e.onicecandidate=function(o){!o.candidate||!o.candidate.candidate||(j.default.log("Received ICE candidates for ".concat(n,":"),o.candidate),a.socket.send({type:Fe.Candidate,payload:{candidate:o.candidate,type:s,connectionId:i},dst:n}))},e.oniceconnectionstatechange=function(){switch(e.iceConnectionState){case"failed":j.default.log("iceConnectionState is failed, closing connections to "+n),t.connection.emit("error",new Error("Negotiation of connection to "+n+" failed.")),t.connection.close();break;case"closed":j.default.log("iceConnectionState is closed, closing connections to "+n),t.connection.emit("error",new Error("Connection to "+n+" closed.")),t.connection.close();break;case"disconnected":j.default.log("iceConnectionState changed to disconnected on the connection with "+n);break;case"completed":e.onicecandidate=te.noop;break}t.connection.emit("iceStateChanged",e.iceConnectionState)},j.default.log("Listening for data channel"),e.ondatachannel=function(o){j.default.log("Received data channel");var c=o.channel,l=a.getConnection(n,i);l.initialize(c)},j.default.log("Listening for remote stream"),e.ontrack=function(o){j.default.log("Received remote stream");var c=o.streams[0],l=a.getConnection(n,i);if(l.type===Pt.Media){var h=l;t._addStreamToMediaConnection(c,h)}}},r.prototype.cleanup=function(){j.default.log("Cleaning up PeerConnection to "+this.connection.peer);var e=this.connection.peerConnection;if(e){this.connection.peerConnection=null,e.onicecandidate=e.oniceconnectionstatechange=e.ondatachannel=e.ontrack=function(){};var t=e.signalingState!=="closed",n=!1;if(this.connection.type===Pt.Data){var i=this.connection,s=i.dataChannel;s&&(n=!!s.readyState&&s.readyState!=="closed")}(t||n)&&e.close()}},r.prototype._makeOffer=function(){return sr(this,void 0,Promise,function(){var e,t,n,i,s,a,o;return or(this,function(c){switch(c.label){case 0:e=this.connection.peerConnection,t=this.connection.provider,c.label=1;case 1:return c.trys.push([1,7,,8]),[4,e.createOffer(this.connection.options.constraints)];case 2:n=c.sent(),j.default.log("Created offer."),this.connection.options.sdpTransform&&typeof this.connection.options.sdpTransform=="function"&&(n.sdp=this.connection.options.sdpTransform(n.sdp)||n.sdp),c.label=3;case 3:return c.trys.push([3,5,,6]),[4,e.setLocalDescription(n)];case 4:return c.sent(),j.default.log("Set localDescription:",n,"for:".concat(this.connection.peer)),i={sdp:n,type:this.connection.type,connectionId:this.connection.connectionId,metadata:this.connection.metadata,browser:te.browser},this.connection.type===Pt.Data&&(s=this.connection,i=Dr(Dr({},i),{label:s.label,reliable:s.reliable,serialization:s.serialization})),t.socket.send({type:Fe.Offer,payload:i,dst:this.connection.peer}),[3,6];case 5:return a=c.sent(),a!="OperationError: Failed to set local offer sdp: Called in wrong state: kHaveRemoteOffer"&&(t.emitError(_e.WebRTC,a),j.default.log("Failed to setLocalDescription, ",a)),[3,6];case 6:return[3,8];case 7:return o=c.sent(),t.emitError(_e.WebRTC,o),j.default.log("Failed to createOffer, ",o),[3,8];case 8:return[2]}})})},r.prototype._makeAnswer=function(){return sr(this,void 0,Promise,function(){var e,t,n,i,s;return or(this,function(a){switch(a.label){case 0:e=this.connection.peerConnection,t=this.connection.provider,a.label=1;case 1:return a.trys.push([1,7,,8]),[4,e.createAnswer()];case 2:n=a.sent(),j.default.log("Created answer."),this.connection.options.sdpTransform&&typeof this.connection.options.sdpTransform=="function"&&(n.sdp=this.connection.options.sdpTransform(n.sdp)||n.sdp),a.label=3;case 3:return a.trys.push([3,5,,6]),[4,e.setLocalDescription(n)];case 4:return a.sent(),j.default.log("Set localDescription:",n,"for:".concat(this.connection.peer)),t.socket.send({type:Fe.Answer,payload:{sdp:n,type:this.connection.type,connectionId:this.connection.connectionId,browser:te.browser},dst:this.connection.peer}),[3,6];case 5:return i=a.sent(),t.emitError(_e.WebRTC,i),j.default.log("Failed to setLocalDescription, ",i),[3,6];case 6:return[3,8];case 7:return s=a.sent(),t.emitError(_e.WebRTC,s),j.default.log("Failed to create answer, ",s),[3,8];case 8:return[2]}})})},r.prototype.handleSDP=function(e,t){return sr(this,void 0,Promise,function(){var n,i,s,a;return or(this,function(o){switch(o.label){case 0:t=new RTCSessionDescription(t),n=this.connection.peerConnection,i=this.connection.provider,j.default.log("Setting remote description",t),s=this,o.label=1;case 1:return o.trys.push([1,5,,6]),[4,n.setRemoteDescription(t)];case 2:return o.sent(),j.default.log("Set remoteDescription:".concat(e," for:").concat(this.connection.peer)),e!=="OFFER"?[3,4]:[4,s._makeAnswer()];case 3:o.sent(),o.label=4;case 4:return[3,6];case 5:return a=o.sent(),i.emitError(_e.WebRTC,a),j.default.log("Failed to setRemoteDescription, ",a),[3,6];case 6:return[2]}})})},r.prototype.handleCandidate=function(e){return sr(this,void 0,Promise,function(){var t,n,i,s,a,o;return or(this,function(c){switch(c.label){case 0:j.default.log("handleCandidate:",e),t=e.candidate,n=e.sdpMLineIndex,i=e.sdpMid,s=this.connection.peerConnection,a=this.connection.provider,c.label=1;case 1:return c.trys.push([1,3,,4]),[4,s.addIceCandidate(new RTCIceCandidate({sdpMid:i,sdpMLineIndex:n,candidate:t}))];case 2:return c.sent(),j.default.log("Added ICE candidate for:".concat(this.connection.peer)),[3,4];case 3:return o=c.sent(),a.emitError(_e.WebRTC,o),j.default.log("Failed to handleCandidate, ",o),[3,4];case 4:return[2]}})})},r.prototype._addTracksToConnection=function(e,t){if(j.default.log("add tracks from stream ".concat(e.id," to peer connection")),!t.addTrack)return j.default.error("Your browser does't support RTCPeerConnection#addTrack. Ignored.");e.getTracks().forEach(function(n){t.addTrack(n,e)})},r.prototype._addStreamToMediaConnection=function(e,t){j.default.log("add stream ".concat(e.id," to media connection ").concat(t.connectionId)),t.addStream(e)},r})(),ho={};Bt(ho,"BaseConnection",()=>da,r=>da=r);var ph=(function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}})(),da=(function(r){ph(e,r);function e(t,n,i){var s=r.call(this)||this;return s.peer=t,s.provider=n,s.options=i,s._open=!1,s.metadata=i.metadata,s}return Object.defineProperty(e.prototype,"open",{get:function(){return this._open},enumerable:!1,configurable:!0}),e})(Gi.EventEmitter),mh=(function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}})(),Lr=function(){return Lr=Object.assign||function(r){for(var e,t=1,n=arguments.length;t<n;t++){e=arguments[t];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=e[i])}return r},Lr.apply(this,arguments)},yh=function(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],n=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},pa=(function(r){mh(e,r);function e(t,n,i){var s=r.call(this,t,n,i)||this;return s._localStream=s.options._stream,s.connectionId=s.options.connectionId||e.ID_PREFIX+te.randomToken(),s._negotiator=new uo.Negotiator(s),s._localStream&&s._negotiator.startConnection({_stream:s._localStream,originator:!0}),s}return Object.defineProperty(e.prototype,"type",{get:function(){return Pt.Media},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"localStream",{get:function(){return this._localStream},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"remoteStream",{get:function(){return this._remoteStream},enumerable:!1,configurable:!0}),e.prototype.addStream=function(t){j.default.log("Receiving stream",t),this._remoteStream=t,r.prototype.emit.call(this,"stream",t)},e.prototype.handleMessage=function(t){var n=t.type,i=t.payload;switch(t.type){case Fe.Answer:this._negotiator.handleSDP(n,i.sdp),this._open=!0;break;case Fe.Candidate:this._negotiator.handleCandidate(i.candidate);break;default:j.default.warn("Unrecognized message type:".concat(n," from peer:").concat(this.peer));break}},e.prototype.answer=function(t,n){var i,s;if(n===void 0&&(n={}),this._localStream){j.default.warn("Local stream already exists on this MediaConnection. Are you answering a call twice?");return}this._localStream=t,n&&n.sdpTransform&&(this.options.sdpTransform=n.sdpTransform),this._negotiator.startConnection(Lr(Lr({},this.options._payload),{_stream:t}));var a=this.provider._getMessages(this.connectionId);try{for(var o=yh(a),c=o.next();!c.done;c=o.next()){var l=c.value;this.handleMessage(l)}}catch(h){i={error:h}}finally{try{c&&!c.done&&(s=o.return)&&s.call(o)}finally{if(i)throw i.error}}this._open=!0},e.prototype.close=function(){this._negotiator&&(this._negotiator.cleanup(),this._negotiator=null),this._localStream=null,this._remoteStream=null,this.provider&&(this.provider._removeConnection(this),this.provider=null),this.options&&this.options._stream&&(this.options._stream=null),this.open&&(this._open=!1,r.prototype.emit.call(this,"close"))},e.ID_PREFIX="mc_",e})(ho.BaseConnection),js={};Bt(js,"DataConnection",()=>ya,r=>ya=r);var Dc={};Bt(Dc,"EncodingQueue",()=>ma,r=>ma=r);var gh=(function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}})(),ma=(function(r){gh(e,r);function e(){var t=r.call(this)||this;return t.fileReader=new FileReader,t._queue=[],t._processing=!1,t.fileReader.onload=function(n){t._processing=!1,n.target&&t.emit("done",n.target.result),t.doNextTask()},t.fileReader.onerror=function(n){j.default.error("EncodingQueue error:",n),t._processing=!1,t.destroy(),t.emit("error",n)},t}return Object.defineProperty(e.prototype,"queue",{get:function(){return this._queue},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"size",{get:function(){return this.queue.length},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"processing",{get:function(){return this._processing},enumerable:!1,configurable:!0}),e.prototype.enque=function(t){this.queue.push(t),!this.processing&&this.doNextTask()},e.prototype.destroy=function(){this.fileReader.abort(),this._queue=[]},e.prototype.doNextTask=function(){this.size!==0&&(this.processing||(this._processing=!0,this.fileReader.readAsArrayBuffer(this.queue.shift())))},e})(Gi.EventEmitter),vh=(function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}})(),Sh=function(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],n=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},ya=(function(r){vh(e,r);function e(t,n,i){var s=r.call(this,t,n,i)||this;return s.stringify=JSON.stringify,s.parse=JSON.parse,s._buffer=[],s._bufferSize=0,s._buffering=!1,s._chunkedData={},s._encodingQueue=new Dc.EncodingQueue,s.connectionId=s.options.connectionId||e.ID_PREFIX+te.randomToken(),s.label=s.options.label||s.connectionId,s.serialization=s.options.serialization||jt.Binary,s.reliable=!!s.options.reliable,s._encodingQueue.on("done",function(a){s._bufferedSend(a)}),s._encodingQueue.on("error",function(){j.default.error("DC#".concat(s.connectionId,": Error occured in encoding from blob to arraybuffer, close DC")),s.close()}),s._negotiator=new uo.Negotiator(s),s._negotiator.startConnection(s.options._payload||{originator:!0}),s}return Object.defineProperty(e.prototype,"type",{get:function(){return Pt.Data},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"dataChannel",{get:function(){return this._dc},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"bufferSize",{get:function(){return this._bufferSize},enumerable:!1,configurable:!0}),e.prototype.initialize=function(t){this._dc=t,this._configureDataChannel()},e.prototype._configureDataChannel=function(){var t=this;(!te.supports.binaryBlob||te.supports.reliable)&&(this.dataChannel.binaryType="arraybuffer"),this.dataChannel.onopen=function(){j.default.log("DC#".concat(t.connectionId," dc connection success")),t._open=!0,t.emit("open")},this.dataChannel.onmessage=function(n){j.default.log("DC#".concat(t.connectionId," dc onmessage:"),n.data),t._handleDataMessage(n)},this.dataChannel.onclose=function(){j.default.log("DC#".concat(t.connectionId," dc closed for:"),t.peer),t.close()}},e.prototype._handleDataMessage=function(t){var n=this,i=t.data,s=i.constructor,a=this.serialization===jt.Binary||this.serialization===jt.BinaryUTF8,o=i;if(a){if(s===Blob){te.blobToArrayBuffer(i,function(l){var h=te.unpack(l);n.emit("data",h)});return}else if(s===ArrayBuffer)o=te.unpack(i);else if(s===String){var c=te.binaryStringToArrayBuffer(i);o=te.unpack(c)}}else this.serialization===jt.JSON&&(o=this.parse(i));if(o.__peerData){this._handleChunk(o);return}r.prototype.emit.call(this,"data",o)},e.prototype._handleChunk=function(t){var n=t.__peerData,i=this._chunkedData[n]||{data:[],count:0,total:t.total};if(i.data[t.n]=t.data,i.count++,this._chunkedData[n]=i,i.total===i.count){delete this._chunkedData[n];var s=new Blob(i.data);this._handleDataMessage({data:s})}},e.prototype.close=function(){this._buffer=[],this._bufferSize=0,this._chunkedData={},this._negotiator&&(this._negotiator.cleanup(),this._negotiator=null),this.provider&&(this.provider._removeConnection(this),this.provider=null),this.dataChannel&&(this.dataChannel.onopen=null,this.dataChannel.onmessage=null,this.dataChannel.onclose=null,this._dc=null),this._encodingQueue&&(this._encodingQueue.destroy(),this._encodingQueue.removeAllListeners(),this._encodingQueue=null),this.open&&(this._open=!1,r.prototype.emit.call(this,"close"))},e.prototype.send=function(t,n){if(!this.open){r.prototype.emit.call(this,"error",new Error("Connection is not open. You should listen for the `open` event before sending messages."));return}if(this.serialization===jt.JSON)this._bufferedSend(this.stringify(t));else if(this.serialization===jt.Binary||this.serialization===jt.BinaryUTF8){var i=te.pack(t);if(!n&&i.size>te.chunkedMTU){this._sendChunks(i);return}te.supports.binaryBlob?this._bufferedSend(i):this._encodingQueue.enque(i)}else this._bufferedSend(t)},e.prototype._bufferedSend=function(t){(this._buffering||!this._trySend(t))&&(this._buffer.push(t),this._bufferSize=this._buffer.length)},e.prototype._trySend=function(t){var n=this;if(!this.open)return!1;if(this.dataChannel.bufferedAmount>e.MAX_BUFFERED_AMOUNT)return this._buffering=!0,setTimeout(function(){n._buffering=!1,n._tryBuffer()},50),!1;try{this.dataChannel.send(t)}catch(i){return j.default.error("DC#:".concat(this.connectionId," Error when sending:"),i),this._buffering=!0,this.close(),!1}return!0},e.prototype._tryBuffer=function(){if(this.open&&this._buffer.length!==0){var t=this._buffer[0];this._trySend(t)&&(this._buffer.shift(),this._bufferSize=this._buffer.length,this._tryBuffer())}},e.prototype._sendChunks=function(t){var n,i,s=te.chunk(t);j.default.log("DC#".concat(this.connectionId," Try to send ").concat(s.length," chunks..."));try{for(var a=Sh(s),o=a.next();!o.done;o=a.next()){var c=o.value;this.send(c,!0)}}catch(l){n={error:l}}finally{try{o&&!o.done&&(i=a.return)&&i.call(a)}finally{if(n)throw n.error}}},e.prototype.handleMessage=function(t){var n=t.payload;switch(t.type){case Fe.Answer:this._negotiator.handleSDP(t.type,n.sdp);break;case Fe.Candidate:this._negotiator.handleCandidate(n.candidate);break;default:j.default.warn("Unrecognized message type:",t.type,"from peer:",this.peer);break}},e.ID_PREFIX="dc_",e.MAX_BUFFERED_AMOUNT=8388608,e})(ho.BaseConnection),Lc={};Bt(Lc,"API",()=>Sa,r=>Sa=r);var ga=function(r,e,t,n){function i(s){return s instanceof t?s:new t(function(a){a(s)})}return new(t||(t=Promise))(function(s,a){function o(h){try{l(n.next(h))}catch(d){a(d)}}function c(h){try{l(n.throw(h))}catch(d){a(d)}}function l(h){h.done?s(h.value):i(h.value).then(o,c)}l((n=n.apply(r,e||[])).next())})},va=function(r,e){var t={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,i,s,a;return a={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(l){return function(h){return c([l,h])}}function c(l){if(n)throw new TypeError("Generator is already executing.");for(;t;)try{if(n=1,i&&(s=l[0]&2?i.return:l[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,l[1])).done)return s;switch(i=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return t.label++,{value:l[1],done:!1};case 5:t.label++,i=l[1],l=[0];continue;case 7:l=t.ops.pop(),t.trys.pop();continue;default:if(s=t.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){t=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){t.label=l[1];break}if(l[0]===6&&t.label<s[1]){t.label=s[1],s=l;break}if(s&&t.label<s[2]){t.label=s[2],t.ops.push(l);break}s[2]&&t.ops.pop(),t.trys.pop();continue}l=e.call(r,t)}catch(h){l=[6,h],i=0}finally{n=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}},Sa=(function(){function r(e){this._options=e}return r.prototype._buildRequest=function(e){var t=this._options.secure?"https":"http",n=this._options,i=n.host,s=n.port,a=n.path,o=n.key,c=new URL("".concat(t,"://").concat(i,":").concat(s).concat(a).concat(o,"/").concat(e));return c.searchParams.set("ts","".concat(Date.now()).concat(Math.random())),c.searchParams.set("version",lo.version),fetch(c.href,{referrerPolicy:this._options.referrerPolicy})},r.prototype.retrieveId=function(){return ga(this,void 0,Promise,function(){var e,t,n;return va(this,function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),[4,this._buildRequest("id")];case 1:if(e=i.sent(),e.status!==200)throw new Error("Error. Status:".concat(e.status));return[2,e.text()];case 2:throw t=i.sent(),j.default.error("Error retrieving ID",t),n="",this._options.path==="/"&&this._options.host!==te.CLOUD_HOST&&(n=" If you passed in a `path` to your self-hosted PeerServer, you'll also need to pass in that same path when creating a new Peer."),new Error("Could not get an ID from the server."+n);case 3:return[2]}})})},r.prototype.listAllPeers=function(){return ga(this,void 0,Promise,function(){var e,t,n;return va(this,function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),[4,this._buildRequest("peers")];case 1:if(e=i.sent(),e.status!==200)throw e.status===401?(t="",this._options.host===te.CLOUD_HOST?t="It looks like you're using the cloud server. You can email team@peerjs.com to enable peer listing for your API key.":t="You need to enable `allow_discovery` on your self-hosted PeerServer to use this feature.",new Error("It doesn't look like you have permission to list peers IDs. "+t)):new Error("Error. Status:".concat(e.status));return[2,e.json()];case 2:throw n=i.sent(),j.default.error("Error retrieving list peers",n),new Error("Could not get list peers from the server."+n);case 3:return[2]}})})},r})(),xh=(function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}})(),ai=function(){return ai=Object.assign||function(r){for(var e,t=1,n=arguments.length;t<n;t++){e=arguments[t];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=e[i])}return r},ai.apply(this,arguments)},qn=function(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],n=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},_h=function(r,e){var t=typeof Symbol=="function"&&r[Symbol.iterator];if(!t)return r;var n=t.call(r),i,s=[],a;try{for(;(e===void 0||e-- >0)&&!(i=n.next()).done;)s.push(i.value)}catch(o){a={error:o}}finally{try{i&&!i.done&&(t=n.return)&&t.call(n)}finally{if(a)throw a.error}}return s},Gs=(function(r){xh(e,r);function e(t,n){var i=r.call(this)||this;i._id=null,i._lastServerId=null,i._destroyed=!1,i._disconnected=!1,i._open=!1,i._connections=new Map,i._lostMessages=new Map;var s;return t&&t.constructor==Object?n=t:t&&(s=t.toString()),n=ai({debug:0,host:te.CLOUD_HOST,port:te.CLOUD_PORT,path:"/",key:e.DEFAULT_KEY,token:te.randomToken(),config:te.defaultConfig,referrerPolicy:"strict-origin-when-cross-origin"},n),i._options=n,i._options.host==="/"&&(i._options.host=window.location.hostname),i._options.path&&(i._options.path[0]!=="/"&&(i._options.path="/"+i._options.path),i._options.path[i._options.path.length-1]!=="/"&&(i._options.path+="/")),i._options.secure===void 0&&i._options.host!==te.CLOUD_HOST?i._options.secure=te.isSecure():i._options.host==te.CLOUD_HOST&&(i._options.secure=!0),i._options.logFunction&&j.default.setLogFunction(i._options.logFunction),j.default.logLevel=i._options.debug||0,i._api=new Lc.API(n),i._socket=i._createServerConnection(),!te.supports.audioVideo&&!te.supports.data?(i._delayedAbort(_e.BrowserIncompatible,"The current browser does not support WebRTC"),i):s&&!te.validateId(s)?(i._delayedAbort(_e.InvalidID,'ID "'.concat(s,'" is invalid')),i):(s?i._initialize(s):i._api.retrieveId().then(function(a){return i._initialize(a)}).catch(function(a){return i._abort(_e.ServerError,a)}),i)}return Object.defineProperty(e.prototype,"id",{get:function(){return this._id},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"options",{get:function(){return this._options},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"open",{get:function(){return this._open},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"socket",{get:function(){return this._socket},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"connections",{get:function(){var t,n,i=Object.create(null);try{for(var s=qn(this._connections),a=s.next();!a.done;a=s.next()){var o=_h(a.value,2),c=o[0],l=o[1];i[c]=l}}catch(h){t={error:h}}finally{try{a&&!a.done&&(n=s.return)&&n.call(s)}finally{if(t)throw t.error}}return i},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"destroyed",{get:function(){return this._destroyed},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"disconnected",{get:function(){return this._disconnected},enumerable:!1,configurable:!0}),e.prototype._createServerConnection=function(){var t=this,n=new Uc.Socket(this._options.secure,this._options.host,this._options.port,this._options.path,this._options.key,this._options.pingInterval);return n.on($t.Message,function(i){t._handleMessage(i)}),n.on($t.Error,function(i){t._abort(_e.SocketError,i)}),n.on($t.Disconnected,function(){t.disconnected||(t.emitError(_e.Network,"Lost connection to server."),t.disconnect())}),n.on($t.Close,function(){t.disconnected||t._abort(_e.SocketClosed,"Underlying socket is already closed.")}),n},e.prototype._initialize=function(t){this._id=t,this.socket.start(t,this._options.token)},e.prototype._handleMessage=function(t){var n,i,s=t.type,a=t.payload,o=t.src;switch(s){case Fe.Open:this._lastServerId=this.id,this._open=!0,this.emit("open",this.id);break;case Fe.Error:this._abort(_e.ServerError,a.msg);break;case Fe.IdTaken:this._abort(_e.UnavailableID,'ID "'.concat(this.id,'" is taken'));break;case Fe.InvalidKey:this._abort(_e.InvalidKey,'API KEY "'.concat(this._options.key,'" is invalid'));break;case Fe.Leave:j.default.log("Received leave message from ".concat(o)),this._cleanupPeer(o),this._connections.delete(o);break;case Fe.Expire:this.emitError(_e.PeerUnavailable,"Could not connect to peer ".concat(o));break;case Fe.Offer:var b=a.connectionId,T=this.getConnection(o,b);if(T&&(T.close(),j.default.warn("Offer received for existing Connection ID:".concat(b))),a.type===Pt.Media){var c=new Js.MediaConnection(o,this,{connectionId:b,_payload:a,metadata:a.metadata});T=c,this._addConnection(o,T),this.emit("call",c)}else if(a.type===Pt.Data){var l=new js.DataConnection(o,this,{connectionId:b,_payload:a,metadata:a.metadata,label:a.label,serialization:a.serialization,reliable:a.reliable});T=l,this._addConnection(o,T),this.emit("connection",l)}else{j.default.warn("Received malformed connection type:".concat(a.type));return}var h=this._getMessages(b);try{for(var d=qn(h),m=d.next();!m.done;m=d.next()){var p=m.value;T.handleMessage(p)}}catch(g){n={error:g}}finally{try{m&&!m.done&&(i=d.return)&&i.call(d)}finally{if(n)throw n.error}}break;default:if(!a){j.default.warn("You received a malformed message from ".concat(o," of type ").concat(s));return}var b=a.connectionId,T=this.getConnection(o,b);T&&T.peerConnection?T.handleMessage(t):b?this._storeMessage(b,t):j.default.warn("You received an unrecognized message:",t);break}},e.prototype._storeMessage=function(t,n){this._lostMessages.has(t)||this._lostMessages.set(t,[]),this._lostMessages.get(t).push(n)},e.prototype._getMessages=function(t){var n=this._lostMessages.get(t);return n?(this._lostMessages.delete(t),n):[]},e.prototype.connect=function(t,n){if(n===void 0&&(n={}),this.disconnected){j.default.warn("You cannot connect to a new Peer because you called .disconnect() on this Peer and ended your connection with the server. You can create a new Peer to reconnect, or call reconnect on this peer if you believe its ID to still be available."),this.emitError(_e.Disconnected,"Cannot connect to new Peer after disconnecting from server.");return}var i=new js.DataConnection(t,this,n);return this._addConnection(t,i),i},e.prototype.call=function(t,n,i){if(i===void 0&&(i={}),this.disconnected){j.default.warn("You cannot connect to a new Peer because you called .disconnect() on this Peer and ended your connection with the server. You can create a new Peer to reconnect."),this.emitError(_e.Disconnected,"Cannot connect to new Peer after disconnecting from server.");return}if(!n){j.default.error("To call a peer, you must provide a stream from your browser's `getUserMedia`.");return}var s=new Js.MediaConnection(t,this,ai(ai({},i),{_stream:n}));return this._addConnection(t,s),s},e.prototype._addConnection=function(t,n){j.default.log("add connection ".concat(n.type,":").concat(n.connectionId," to peerId:").concat(t)),this._connections.has(t)||this._connections.set(t,[]),this._connections.get(t).push(n)},e.prototype._removeConnection=function(t){var n=this._connections.get(t.peer);if(n){var i=n.indexOf(t);i!==-1&&n.splice(i,1)}this._lostMessages.delete(t.connectionId)},e.prototype.getConnection=function(t,n){var i,s,a=this._connections.get(t);if(!a)return null;try{for(var o=qn(a),c=o.next();!c.done;c=o.next()){var l=c.value;if(l.connectionId===n)return l}}catch(h){i={error:h}}finally{try{c&&!c.done&&(s=o.return)&&s.call(o)}finally{if(i)throw i.error}}return null},e.prototype._delayedAbort=function(t,n){var i=this;setTimeout(function(){i._abort(t,n)},0)},e.prototype._abort=function(t,n){j.default.error("Aborting!"),this.emitError(t,n),this._lastServerId?this.disconnect():this.destroy()},e.prototype.emitError=function(t,n){j.default.error("Error:",n);var i;typeof n=="string"?i=new Error(n):i=n,i.type=t,this.emit("error",i)},e.prototype.destroy=function(){this.destroyed||(j.default.log("Destroy peer with ID:".concat(this.id)),this.disconnect(),this._cleanup(),this._destroyed=!0,this.emit("close"))},e.prototype._cleanup=function(){var t,n;try{for(var i=qn(this._connections.keys()),s=i.next();!s.done;s=i.next()){var a=s.value;this._cleanupPeer(a),this._connections.delete(a)}}catch(o){t={error:o}}finally{try{s&&!s.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}this.socket.removeAllListeners()},e.prototype._cleanupPeer=function(t){var n,i,s=this._connections.get(t);if(s)try{for(var a=qn(s),o=a.next();!o.done;o=a.next()){var c=o.value;c.close()}}catch(l){n={error:l}}finally{try{o&&!o.done&&(i=a.return)&&i.call(a)}finally{if(n)throw n.error}}},e.prototype.disconnect=function(){if(!this.disconnected){var t=this.id;j.default.log("Disconnect peer with ID:".concat(t)),this._disconnected=!0,this._open=!1,this.socket.close(),this._lastServerId=t,this._id=null,this.emit("disconnected",t)}},e.prototype.reconnect=function(){if(this.disconnected&&!this.destroyed)j.default.log("Attempting reconnection to server with ID ".concat(this._lastServerId)),this._disconnected=!1,this._initialize(this._lastServerId);else{if(this.destroyed)throw new Error("This peer cannot reconnect to the server. It has already been destroyed.");if(!this.disconnected&&!this.open)j.default.error("In a hurry? We're still trying to make the initial connection!");else throw new Error("Peer ".concat(this.id," cannot reconnect because it is not disconnected from the server!"))}},e.prototype.listAllPeers=function(t){var n=this;t===void 0&&(t=function(i){}),this._api.listAllPeers().then(function(i){return t(i)}).catch(function(i){return n._abort(_e.ServerError,i)})},e.DEFAULT_KEY="peerjs",e})(Gi.EventEmitter),bh=Bc.Peer;const Th=Object.freeze(Object.defineProperty({__proto__:null,get Peer(){return Gs},default:bh,util:te},Symbol.toStringTag,{value:"Module"}));class Mh{constructor(e,t){if(this._retries=0,!Number.isInteger(e)||e<0)throw new Error("Base must be a positive integer or zero");if(t!==void 0&&(!Number.isInteger(t)||t<0))throw new Error("ExpMax must be a undefined, a positive integer or zero");this.base=e,this.expMax=t,this.i=0}get retries(){return this._retries}get current(){return this.base*Math.pow(2,this.i)}next(){return this._retries++,this.i=this.expMax===void 0?this.i+1:Math.min(this.i+1,this.expMax),this.current}reset(){this._retries=0,this.i=0}}var ce;(function(r){r.open="open",r.close="close",r.error="error",r.message="message",r.retry="retry",r.reconnect="reconnect"})(ce||(ce={}));class Fc{constructor(e,t,n){var i,s,a,o,c,l,h,d,m,p,b,T,g,v,x;this._closedByUser=!1,this.handleOpenEvent=_=>this.handleEvent(ce.open,_),this.handleErrorEvent=_=>this.handleEvent(ce.error,_),this.handleCloseEvent=_=>this.handleEvent(ce.close,_),this.handleMessageEvent=_=>this.handleEvent(ce.message,_),this._url=e,this._protocols=t,this._options={buffer:n?.buffer,retry:{maxRetries:(i=n?.retry)===null||i===void 0?void 0:i.maxRetries,instantReconnect:(s=n?.retry)===null||s===void 0?void 0:s.instantReconnect,backoff:(a=n?.retry)===null||a===void 0?void 0:a.backoff},listeners:{open:[...(c=(o=n?.listeners)===null||o===void 0?void 0:o.open)!==null&&c!==void 0?c:[]],close:[...(h=(l=n?.listeners)===null||l===void 0?void 0:l.close)!==null&&h!==void 0?h:[]],error:[...(m=(d=n?.listeners)===null||d===void 0?void 0:d.error)!==null&&m!==void 0?m:[]],message:[...(b=(p=n?.listeners)===null||p===void 0?void 0:p.message)!==null&&b!==void 0?b:[]],retry:[...(g=(T=n?.listeners)===null||T===void 0?void 0:T.retry)!==null&&g!==void 0?g:[]],reconnect:[...(x=(v=n?.listeners)===null||v===void 0?void 0:v.reconnect)!==null&&x!==void 0?x:[]]}},this._underlyingWebsocket=this.tryConnect()}get url(){return this._url}get protocols(){return this._protocols}get buffer(){return this._options.buffer}get maxRetries(){return this._options.retry.maxRetries}get instantReconnect(){return this._options.retry.instantReconnect}get backoff(){return this._options.retry.backoff}get closedByUser(){return this._closedByUser}get lastConnection(){return this._lastConnection}get underlyingWebsocket(){return this._underlyingWebsocket}get readyState(){return this._underlyingWebsocket.readyState}get bufferedAmount(){return this._underlyingWebsocket.bufferedAmount}get extensions(){return this._underlyingWebsocket.extensions}get binaryType(){return this._underlyingWebsocket.binaryType}set binaryType(e){this._underlyingWebsocket.binaryType=e}send(e){this.closedByUser||(this._underlyingWebsocket.readyState===this._underlyingWebsocket.OPEN?this._underlyingWebsocket.send(e):this.buffer!==void 0&&this.buffer.add(e))}close(e,t){this.cancelScheduledConnectionRetry(),this._closedByUser=!0,this._underlyingWebsocket.close(e,t)}addEventListener(e,t,n){this._options.listeners[e].push({listener:t,options:n})}removeEventListener(e,t,n){const i=s=>s.listener!==t||s.options!==n;this._options.listeners[e]=this._options.listeners[e].filter(i)}tryConnect(){return this._underlyingWebsocket=new WebSocket(this.url,this.protocols),this._underlyingWebsocket.addEventListener(ce.open,this.handleOpenEvent),this._underlyingWebsocket.addEventListener(ce.close,this.handleCloseEvent),this._underlyingWebsocket.addEventListener(ce.error,this.handleErrorEvent),this._underlyingWebsocket.addEventListener(ce.message,this.handleMessageEvent),this._underlyingWebsocket}clearWebsocket(){this._underlyingWebsocket.removeEventListener(ce.open,this.handleOpenEvent),this._underlyingWebsocket.removeEventListener(ce.close,this.handleCloseEvent),this._underlyingWebsocket.removeEventListener(ce.error,this.handleErrorEvent),this._underlyingWebsocket.removeEventListener(ce.message,this.handleMessageEvent),this._underlyingWebsocket.close()}dispatchEvent(e,t){const n=this._options.listeners[e],i=[];n.forEach(({listener:s,options:a})=>{s(this,t),(a===void 0||a.once===void 0||!a.once)&&i.push({listener:s,options:a})}),this._options.listeners[e]=i}handleEvent(e,t){switch(e){case ce.close:this.dispatchEvent(e,t),this.scheduleConnectionRetryIfNeeded();break;case ce.open:if(this.backoff!==void 0&&this._lastConnection!==void 0){const n={retries:this.backoff.retries,lastConnection:new Date(this._lastConnection)},i=new CustomEvent(ce.reconnect,{detail:n});this.dispatchEvent(ce.reconnect,i),this.backoff.reset()}this._lastConnection=new Date,this.dispatchEvent(e,t),this.sendBufferedData();break;case ce.retry:this.dispatchEvent(e,t),this.clearWebsocket(),this.tryConnect();break;default:this.dispatchEvent(e,t);break}}sendBufferedData(){if(this.buffer!==void 0)for(let e=this.buffer.read();e!==void 0;e=this.buffer.read())this.send(e)}scheduleConnectionRetryIfNeeded(){if(this.closedByUser||this.backoff===void 0)return;const e=n=>{const i=new CustomEvent(ce.retry,{detail:n});this.handleEvent(ce.retry,i)},t={backoff:this._options.retry.instantReconnect===!0?0:this.backoff.next(),retries:this._options.retry.instantReconnect===!0?0:this.backoff.retries,lastConnection:this._lastConnection};(this._options.retry.maxRetries===void 0||t.retries<=this._options.retry.maxRetries)&&(this.retryTimeout=globalThis.setTimeout(()=>e(t),t.backoff))}cancelScheduledConnectionRetry(){globalThis.clearTimeout(this.retryTimeout)}}class Ch{constructor(e){this._url=e}get url(){return this._url}withProtocols(e){return this._protocols=e,this}get protocols(){return this._protocols}withMaxRetries(e){var t;return this._options=Object.assign(Object.assign({},this._options),{retry:Object.assign(Object.assign({},(t=this._options)===null||t===void 0?void 0:t.retry),{maxRetries:e})}),this}get maxRetries(){var e,t;return(t=(e=this._options)===null||e===void 0?void 0:e.retry)===null||t===void 0?void 0:t.maxRetries}withInstantReconnect(e){var t;return this._options=Object.assign(Object.assign({},this._options),{retry:Object.assign(Object.assign({},(t=this._options)===null||t===void 0?void 0:t.retry),{instantReconnect:e})}),this}get instantReconnect(){var e,t;return(t=(e=this._options)===null||e===void 0?void 0:e.retry)===null||t===void 0?void 0:t.instantReconnect}withBackoff(e){var t;return this._options=Object.assign(Object.assign({},this._options),{retry:Object.assign(Object.assign({},(t=this._options)===null||t===void 0?void 0:t.retry),{backoff:e})}),this}get backoff(){var e,t;return(t=(e=this._options)===null||e===void 0?void 0:e.retry)===null||t===void 0?void 0:t.backoff}withBuffer(e){return this._options=Object.assign(Object.assign({},this._options),{buffer:e}),this}get buffer(){var e;return(e=this._options)===null||e===void 0?void 0:e.buffer}onOpen(e,t){return this.addListener(ce.open,e,t),this}onClose(e,t){return this.addListener(ce.close,e,t),this}onError(e,t){return this.addListener(ce.error,e,t),this}onMessage(e,t){return this.addListener(ce.message,e,t),this}onRetry(e,t){return this.addListener(ce.retry,e,t),this}onReconnect(e,t){return this.addListener(ce.reconnect,e,t),this}build(){return new Fc(this._url,this._protocols,this._options)}addListener(e,t,n){var i,s,a,o,c,l,h,d,m,p,b,T,g,v,x,_,M,C,P,E,z;return this._options=Object.assign(Object.assign({},this._options),{listeners:{open:(a=(s=(i=this._options)===null||i===void 0?void 0:i.listeners)===null||s===void 0?void 0:s.open)!==null&&a!==void 0?a:[],close:(l=(c=(o=this._options)===null||o===void 0?void 0:o.listeners)===null||c===void 0?void 0:c.close)!==null&&l!==void 0?l:[],error:(m=(d=(h=this._options)===null||h===void 0?void 0:h.listeners)===null||d===void 0?void 0:d.error)!==null&&m!==void 0?m:[],message:(T=(b=(p=this._options)===null||p===void 0?void 0:p.listeners)===null||b===void 0?void 0:b.message)!==null&&T!==void 0?T:[],retry:(x=(v=(g=this._options)===null||g===void 0?void 0:g.listeners)===null||v===void 0?void 0:v.retry)!==null&&x!==void 0?x:[],reconnect:(C=(M=(_=this._options)===null||_===void 0?void 0:_.listeners)===null||M===void 0?void 0:M.reconnect)!==null&&C!==void 0?C:[],[e]:[...(z=(E=(P=this._options)===null||P===void 0?void 0:P.listeners)===null||E===void 0?void 0:E[e])!==null&&z!==void 0?z:[],{listener:t,options:n}]}}),this}}const wh=Object.freeze(Object.defineProperty({__proto__:null,ExponentialBackoff:Mh,Websocket:Fc,WebsocketBuilder:Ch,get WebsocketEvent(){return ce}},Symbol.toStringTag,{value:"Module"})),fo=0,Vc=1,Jc=2,Ws=2,_s=1.25,xa=1,We=32,Pe=We/4,jc=65535,kr=Math.pow(2,-24),Gr=Symbol("SKIP_GENERATION"),Gc={strategy:fo,maxDepth:40,maxLeafSize:10,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,indirect:!1,verbose:!0,range:null,[Gr]:!1};function Se(r,e,t){return t.min.x=e[r],t.min.y=e[r+1],t.min.z=e[r+2],t.max.x=e[r+3],t.max.y=e[r+4],t.max.z=e[r+5],t}function _a(r){let e=-1,t=-1/0;for(let n=0;n<3;n++){const i=r[n+3]-r[n];i>t&&(t=i,e=n)}return e}function ba(r,e){e.set(r)}function Ta(r,e,t){let n,i;for(let s=0;s<3;s++){const a=s+3;n=r[s],i=e[s],t[s]=n<i?n:i,n=r[a],i=e[a],t[a]=n>i?n:i}}function ar(r,e,t){for(let n=0;n<3;n++){const i=e[r+2*n],s=e[r+2*n+1],a=i-s,o=i+s;a<t[n]&&(t[n]=a),o>t[n+3]&&(t[n+3]=o)}}function Xn(r){const e=r[3]-r[0],t=r[4]-r[1],n=r[5]-r[2];return 2*(e*t+t*n+n*e)}function Ee(r,e){return e[r+15]===jc}function $e(r,e){return e[r+6]}function tt(r,e){return e[r+14]}function Ie(r){return r+Pe}function Be(r,e){const t=e[r+6];return r+t*Pe}function po(r,e){return e[r+7]}function bs(r,e,t,n,i){let s=1/0,a=1/0,o=1/0,c=-1/0,l=-1/0,h=-1/0,d=1/0,m=1/0,p=1/0,b=-1/0,T=-1/0,g=-1/0;const v=r.offset||0;for(let x=(e-v)*6,_=(e+t-v)*6;x<_;x+=6){const M=r[x+0],C=r[x+1],P=M-C,E=M+C;P<s&&(s=P),E>c&&(c=E),M<d&&(d=M),M>b&&(b=M);const z=r[x+2],I=r[x+3],R=z-I,N=z+I;R<a&&(a=R),N>l&&(l=N),z<m&&(m=z),z>T&&(T=z);const O=r[x+4],U=r[x+5],F=O-U,J=O+U;F<o&&(o=F),J>h&&(h=J),O<p&&(p=O),O>g&&(g=O)}n[0]=s,n[1]=a,n[2]=o,n[3]=c,n[4]=l,n[5]=h,i[0]=d,i[1]=m,i[2]=p,i[3]=b,i[4]=T,i[5]=g}const Jt=32,Ph=(r,e)=>r.candidate-e.candidate,Kt=new Array(Jt).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),cr=new Float32Array(6);function Eh(r,e,t,n,i,s){let a=-1,o=0;if(s===fo)a=_a(e),a!==-1&&(o=(e[a]+e[a+3])/2);else if(s===Vc)a=_a(r),a!==-1&&(o=kh(t,n,i,a));else if(s===Jc){const c=Xn(r);let l=_s*i;const h=t.offset||0,d=(n-h)*6,m=(n+i-h)*6;for(let p=0;p<3;p++){const b=e[p],v=(e[p+3]-b)/Jt;if(i<Jt/4){const x=[...Kt];x.length=i;let _=0;for(let C=d;C<m;C+=6,_++){const P=x[_];P.candidate=t[C+2*p],P.count=0;const{bounds:E,leftCacheBounds:z,rightCacheBounds:I}=P;for(let R=0;R<3;R++)I[R]=1/0,I[R+3]=-1/0,z[R]=1/0,z[R+3]=-1/0,E[R]=1/0,E[R+3]=-1/0;ar(C,t,E)}x.sort(Ph);let M=i;for(let C=0;C<M;C++){const P=x[C];for(;C+1<M&&x[C+1].candidate===P.candidate;)x.splice(C+1,1),M--}for(let C=d;C<m;C+=6){const P=t[C+2*p];for(let E=0;E<M;E++){const z=x[E];P>=z.candidate?ar(C,t,z.rightCacheBounds):(ar(C,t,z.leftCacheBounds),z.count++)}}for(let C=0;C<M;C++){const P=x[C],E=P.count,z=i-P.count,I=P.leftCacheBounds,R=P.rightCacheBounds;let N=0;E!==0&&(N=Xn(I)/c);let O=0;z!==0&&(O=Xn(R)/c);const U=xa+_s*(N*E+O*z);U<l&&(a=p,l=U,o=P.candidate)}}else{for(let M=0;M<Jt;M++){const C=Kt[M];C.count=0,C.candidate=b+v+M*v;const P=C.bounds;for(let E=0;E<3;E++)P[E]=1/0,P[E+3]=-1/0}for(let M=d;M<m;M+=6){let E=~~((t[M+2*p]-b)/v);E>=Jt&&(E=Jt-1);const z=Kt[E];z.count++,ar(M,t,z.bounds)}const x=Kt[Jt-1];ba(x.bounds,x.rightCacheBounds);for(let M=Jt-2;M>=0;M--){const C=Kt[M],P=Kt[M+1];Ta(C.bounds,P.rightCacheBounds,C.rightCacheBounds)}let _=0;for(let M=0;M<Jt-1;M++){const C=Kt[M],P=C.count,E=C.bounds,I=Kt[M+1].rightCacheBounds;P!==0&&(_===0?ba(E,cr):Ta(E,cr,cr)),_+=P;let R=0,N=0;_!==0&&(R=Xn(cr)/c);const O=i-_;O!==0&&(N=Xn(I)/c);const U=xa+_s*(R*_+N*O);U<l&&(a=p,l=U,o=C.candidate)}}}}else console.warn(`BVH: Invalid build strategy value ${s} used.`);return{axis:a,pos:o}}function kh(r,e,t,n){let i=0;const s=r.offset;for(let a=e,o=e+t;a<o;a++)i+=r[(a-s)*6+n*2];return i/t}class Ts{constructor(){this.boundingData=new Float32Array(6)}}function Rh(r,e,t,n,i,s){let a=n,o=n+i-1;const c=s.pos,l=s.axis*2,h=t.offset||0;for(;;){for(;a<=o&&t[(a-h)*6+l]<c;)a++;for(;a<=o&&t[(o-h)*6+l]>=c;)o--;if(a<o){for(let d=0;d<e;d++){let m=r[a*e+d];r[a*e+d]=r[o*e+d],r[o*e+d]=m}for(let d=0;d<6;d++){const m=a-h,p=o-h,b=t[m*6+d];t[m*6+d]=t[p*6+d],t[p*6+d]=b}a++,o--}else return a}}let Wc,Rr,$s,$c;const Ah=Math.pow(2,32);function Hs(r){return"count"in r?1:1+Hs(r.left)+Hs(r.right)}function Oh(r,e,t){return Wc=new Float32Array(t),Rr=new Uint32Array(t),$s=new Uint16Array(t),$c=new Uint8Array(t),qs(r,e)}function qs(r,e){const t=r/4,n=r/2,i="count"in e,s=e.boundingData;for(let a=0;a<6;a++)Wc[t+a]=s[a];if(i)return e.buffer?($c.set(new Uint8Array(e.buffer),r),r+e.buffer.byteLength):(Rr[t+6]=e.offset,$s[n+14]=e.count,$s[n+15]=jc,r+We);{const{left:a,right:o,splitAxis:c}=e,l=r+We;let h=qs(l,a);const d=r/We,p=h/We-d;if(p>Ah)throw new Error("MeshBVH: Cannot store relative child node offset greater than 32 bits.");return Rr[t+6]=p,Rr[t+7]=c,qs(h,o)}}function zh(r,e,t,n,i){const{maxDepth:s,verbose:a,maxLeafSize:o,strategy:c,onProgress:l}=i,h=r.primitiveBuffer,d=r.primitiveBufferStride,m=new Float32Array(6);let p=!1;const b=new Ts;return bs(e,t,n,b.boundingData,m),g(b,t,n,m),b;function T(v){l&&l(v/n)}function g(v,x,_,M=null,C=0){if(!p&&C>=s&&(p=!0,a&&console.warn(`BVH: Max depth of ${s} reached when generating BVH. Consider increasing maxDepth.`)),_<=o||C>=s)return T(x+_),v.offset=x,v.count=_,v;const P=Eh(v.boundingData,M,e,x,_,c);if(P.axis===-1)return T(x+_),v.offset=x,v.count=_,v;const E=Rh(h,d,e,x,_,P);if(E===x||E===x+_)T(x+_),v.offset=x,v.count=_;else{v.splitAxis=P.axis;const z=new Ts,I=x,R=E-x;v.left=z,bs(e,I,R,z.boundingData,m),g(z,I,R,m,C+1);const N=new Ts,O=E,U=_-R;v.right=N,bs(e,O,U,N.boundingData,m),g(N,O,U,m,C+1)}return v}}function Ih(r,e){const t=e.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,n=r.getRootRanges(e.range),i=n[0],s=n[n.length-1],a={offset:i.offset,count:s.offset+s.count-i.offset},o=new Float32Array(6*a.count);o.offset=a.offset,r.computePrimitiveBounds(a.offset,a.count,o),r._roots=n.map(c=>{const l=zh(r,o,c.offset,c.count,e),h=Hs(l),d=new t(We*h);return Oh(0,l,d),d})}class mo{constructor(e){this._getNewPrimitive=e,this._primitives=[]}getPrimitive(){const e=this._primitives;return e.length===0?this._getNewPrimitive():e.pop()}releasePrimitive(e){this._primitives.push(e)}}class Bh{constructor(){this.float32Array=null,this.uint16Array=null,this.uint32Array=null;const e=[];let t=null;this.setBuffer=n=>{t&&e.push(t),t=n,this.float32Array=new Float32Array(n),this.uint16Array=new Uint16Array(n),this.uint32Array=new Uint32Array(n)},this.clearBuffer=()=>{t=null,this.float32Array=null,this.uint16Array=null,this.uint32Array=null,e.length!==0&&this.setBuffer(e.pop())}}}const pe=new Bh;let rn,Un;const Pn=[],lr=new mo(()=>new A.Box3);function Nh(r,e,t,n,i,s){rn=lr.getPrimitive(),Un=lr.getPrimitive(),Pn.push(rn,Un),pe.setBuffer(r._roots[e]);const a=Xs(0,r.geometry,t,n,i,s);pe.clearBuffer(),lr.releasePrimitive(rn),lr.releasePrimitive(Un),Pn.pop(),Pn.pop();const o=Pn.length;return o>0&&(Un=Pn[o-1],rn=Pn[o-2]),a}function Xs(r,e,t,n,i=null,s=0,a=0){const{float32Array:o,uint16Array:c,uint32Array:l}=pe;let h=r*2;if(Ee(h,c)){const m=$e(r,l),p=tt(h,c);return Se(r,o,rn),n(m,p,!1,a,s+r/Pe,rn)}else{let R=function(O){const{uint16Array:U,uint32Array:F}=pe;let J=O*2;for(;!Ee(J,U);)O=Ie(O),J=O*2;return $e(O,F)},N=function(O){const{uint16Array:U,uint32Array:F}=pe;let J=O*2;for(;!Ee(J,U);)O=Be(O,F),J=O*2;return $e(O,F)+tt(J,U)};const m=Ie(r),p=Be(r,l);let b=m,T=p,g,v,x,_;if(i&&(x=rn,_=Un,Se(b,o,x),Se(T,o,_),g=i(x),v=i(_),v<g)){b=p,T=m;const O=g;g=v,v=O,x=_}x||(x=rn,Se(b,o,x));const M=Ee(b*2,c),C=t(x,M,g,a+1,s+b/Pe);let P;if(C===Ws){const O=R(b),F=N(b)-O;P=n(O,F,!0,a+1,s+b/Pe,x)}else P=C&&Xs(b,e,t,n,i,s,a+1);if(P)return!0;_=Un,Se(T,o,_);const E=Ee(T*2,c),z=t(_,E,v,a+1,s+T/Pe);let I;if(z===Ws){const O=R(T),F=N(T)-O;I=n(O,F,!0,a+1,s+T/Pe,_)}else I=z&&Xs(T,e,t,n,i,s,a+1);return!!I}}const ci=new pe.constructor,Fr=new pe.constructor,tn=new mo(()=>new A.Box3),En=new A.Box3,kn=new A.Box3,Ms=new A.Box3,Cs=new A.Box3;let ws=!1;function Uh(r,e,t,n){if(ws)throw new Error("MeshBVH: Recursive calls to bvhcast not supported.");ws=!0;const i=r._roots,s=e._roots;let a,o=0,c=0;const l=new A.Matrix4().copy(t).invert();for(let h=0,d=i.length;h<d;h++){ci.setBuffer(i[h]),c=0;const m=tn.getPrimitive();Se(0,ci.float32Array,m),m.applyMatrix4(l);for(let p=0,b=s.length;p<b&&(Fr.setBuffer(s[p]),a=wt(0,0,t,l,n,o,c,0,0,m),Fr.clearBuffer(),c+=s[p].byteLength/We,!a);p++);if(tn.releasePrimitive(m),ci.clearBuffer(),o+=i[h].byteLength/We,a)break}return ws=!1,a}function wt(r,e,t,n,i,s=0,a=0,o=0,c=0,l=null,h=!1){let d,m;h?(d=Fr,m=ci):(d=ci,m=Fr);const p=d.float32Array,b=d.uint32Array,T=d.uint16Array,g=m.float32Array,v=m.uint32Array,x=m.uint16Array,_=r*2,M=e*2,C=Ee(_,T),P=Ee(M,x);let E=!1;if(P&&C)h?E=i($e(e,v),tt(e*2,x),$e(r,b),tt(r*2,T),c,a+e/Pe,o,s+r/Pe):E=i($e(r,b),tt(r*2,T),$e(e,v),tt(e*2,x),o,s+r/Pe,c,a+e/Pe);else if(P){const z=tn.getPrimitive();Se(e,g,z),z.applyMatrix4(t);const I=Ie(r),R=Be(r,b);Se(I,p,En),Se(R,p,kn);const N=z.intersectsBox(En),O=z.intersectsBox(kn);E=N&&wt(e,I,n,t,i,a,s,c,o+1,z,!h)||O&&wt(e,R,n,t,i,a,s,c,o+1,z,!h),tn.releasePrimitive(z)}else{const z=Ie(e),I=Be(e,v);Se(z,g,Ms),Se(I,g,Cs);const R=l.intersectsBox(Ms),N=l.intersectsBox(Cs);if(R&&N)E=wt(r,z,t,n,i,s,a,o,c+1,l,h)||wt(r,I,t,n,i,s,a,o,c+1,l,h);else if(R)if(C)E=wt(r,z,t,n,i,s,a,o,c+1,l,h);else{const O=tn.getPrimitive();O.copy(Ms).applyMatrix4(t);const U=Ie(r),F=Be(r,b);Se(U,p,En),Se(F,p,kn);const J=O.intersectsBox(En),$=O.intersectsBox(kn);E=J&&wt(z,U,n,t,i,a,s,c,o+1,O,!h)||$&&wt(z,F,n,t,i,a,s,c,o+1,O,!h),tn.releasePrimitive(O)}else if(N)if(C)E=wt(r,I,t,n,i,s,a,o,c+1,l,h);else{const O=tn.getPrimitive();O.copy(Cs).applyMatrix4(t);const U=Ie(r),F=Be(r,b);Se(U,p,En),Se(F,p,kn);const J=O.intersectsBox(En),$=O.intersectsBox(kn);E=J&&wt(I,U,n,t,i,a,s,c,o+1,O,!h)||$&&wt(I,F,n,t,i,a,s,c,o+1,O,!h),tn.releasePrimitive(O)}}return E}const Ma=new A.Box3,Rn=new Float32Array(6);class Hc{constructor(){this._roots=null,this.primitiveBuffer=null,this.primitiveBufferStride=null}init(e){e={...Gc,...e},Ih(this,e)}getRootRanges(){throw new Error("BVH: getRootRanges() not implemented")}writePrimitiveBounds(){throw new Error("BVH: writePrimitiveBounds() not implemented")}writePrimitiveRangeBounds(e,t,n,i){let s=1/0,a=1/0,o=1/0,c=-1/0,l=-1/0,h=-1/0;for(let d=e,m=e+t;d<m;d++){this.writePrimitiveBounds(d,Rn,0);const[p,b,T,g,v,x]=Rn;p<s&&(s=p),g>c&&(c=g),b<a&&(a=b),v>l&&(l=v),T<o&&(o=T),x>h&&(h=x)}return n[i+0]=s,n[i+1]=a,n[i+2]=o,n[i+3]=c,n[i+4]=l,n[i+5]=h,n}computePrimitiveBounds(e,t,n){const i=n.offset||0;for(let s=e,a=e+t;s<a;s++){this.writePrimitiveBounds(s,Rn,0);const[o,c,l,h,d,m]=Rn,p=(o+h)/2,b=(c+d)/2,T=(l+m)/2,g=(h-o)/2,v=(d-c)/2,x=(m-l)/2,_=(s-i)*6;n[_+0]=p,n[_+1]=g+(Math.abs(p)+g)*kr,n[_+2]=b,n[_+3]=v+(Math.abs(b)+v)*kr,n[_+4]=T,n[_+5]=x+(Math.abs(T)+x)*kr}return n}shiftPrimitiveOffsets(e){const t=this._indirectBuffer;if(t)for(let n=0,i=t.length;n<i;n++)t[n]+=e;else{const n=this._roots;for(let i=0;i<n.length;i++){const s=n[i],a=new Uint32Array(s),o=new Uint16Array(s),c=s.byteLength/We;for(let l=0;l<c;l++){const h=Pe*l,d=2*h;Ee(d,o)&&(a[h+6]+=e)}}}}traverse(e,t=0){const n=this._roots[t],i=new Uint32Array(n),s=new Uint16Array(n);a(0);function a(o,c=0){const l=o*2,h=Ee(l,s);if(h){const d=i[o+6],m=s[l+14];e(c,h,new Float32Array(n,o*4,6),d,m)}else{const d=Ie(o),m=Be(o,i),p=po(o,i);e(c,h,new Float32Array(n,o*4,6),p)||(a(d,c+1),a(m,c+1))}}}refit(){const e=this._roots;for(let t=0,n=e.length;t<n;t++){const i=e[t],s=new Uint32Array(i),a=new Uint16Array(i),o=new Float32Array(i),c=i.byteLength/We;for(let l=c-1;l>=0;l--){const h=l*Pe,d=h*2;if(Ee(d,a)){const p=$e(h,s),b=tt(d,a);this.writePrimitiveRangeBounds(p,b,Rn,0),o.set(Rn,h)}else{const p=Ie(h),b=Be(h,s);for(let T=0;T<3;T++){const g=o[p+T],v=o[p+T+3],x=o[b+T],_=o[b+T+3];o[h+T]=g<x?g:x,o[h+T+3]=v>_?v:_}}}}}getBoundingBox(e){return e.makeEmpty(),this._roots.forEach(n=>{Se(0,new Float32Array(n),Ma),e.union(Ma)}),e}shapecast(e){let{boundsTraverseOrder:t,intersectsBounds:n,intersectsRange:i,intersectsPrimitive:s,scratchPrimitive:a,iterate:o}=e;if(i&&s){const d=i;i=(m,p,b,T,g)=>d(m,p,b,T,g)?!0:o(m,p,this,s,b,T,a)}else i||(s?i=(d,m,p,b)=>o(d,m,this,s,p,b,a):i=(d,m,p)=>p);let c=!1,l=0;const h=this._roots;for(let d=0,m=h.length;d<m;d++){const p=h[d];if(c=Nh(this,d,n,i,t,l),c)break;l+=p.byteLength/We}return c}bvhcast(e,t,n){let{intersectsRanges:i}=n;return Uh(this,e,t,i)}}function Dh(){return typeof SharedArrayBuffer<"u"}function yo(r){return r.index?r.index.count:r.attributes.position.count}function Wr(r){return yo(r)/3}function Lh(r,e=ArrayBuffer){return r>65535?new Uint32Array(new e(4*r)):new Uint16Array(new e(2*r))}function Fh(r,e){if(!r.index){const t=r.attributes.position.count,n=e.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,i=Lh(t,n);r.setIndex(new A.BufferAttribute(i,1));for(let s=0;s<t;s++)i[s]=s}}function Vh(r,e,t){const n=yo(r)/t,i=e||r.drawRange,s=i.start/t,a=(i.start+i.count)/t,o=Math.max(0,s),c=Math.min(n,a)-o;return{offset:Math.floor(o),count:Math.floor(c)}}function Jh(r,e){return r.groups.map(t=>({offset:t.start/e,count:t.count/e}))}function Ca(r,e,t){const n=Vh(r,e,t),i=Jh(r,t);if(!i.length)return[n];const s=[],a=n.offset,o=n.offset+n.count,c=yo(r)/t,l=[];for(const m of i){const{offset:p,count:b}=m,T=p,g=isFinite(b)?b:c-p,v=p+g;T<o&&v>a&&(l.push({pos:Math.max(a,T),isStart:!0}),l.push({pos:Math.min(o,v),isStart:!1}))}l.sort((m,p)=>m.pos!==p.pos?m.pos-p.pos:m.type==="end"?-1:1);let h=0,d=null;for(const m of l){const p=m.pos;h!==0&&p!==d&&s.push({offset:d,count:p-d}),h+=m.isStart?1:-1,d=p}return s}function qc(r,e){const t=r[r.length-1],n=t.offset+t.count>2**16,i=r.reduce((l,h)=>l+h.count,0),s=n?4:2,a=e?new SharedArrayBuffer(i*s):new ArrayBuffer(i*s),o=n?new Uint32Array(a):new Uint16Array(a);let c=0;for(let l=0;l<r.length;l++){const{offset:h,count:d}=r[l];for(let m=0;m<d;m++)o[c+m]=h+m;c+=d}return o}class Xc extends Hc{get indirect(){return!!this._indirectBuffer}get primitiveStride(){return null}get primitiveBufferStride(){return this.indirect?1:this.primitiveStride}set primitiveBufferStride(e){}get primitiveBuffer(){return this.indirect?this._indirectBuffer:this.geometry.index.array}set primitiveBuffer(e){}constructor(e,t={}){if(e.isBufferGeometry){if(e.index&&e.index.isInterleavedBufferAttribute)throw new Error("BVH: InterleavedBufferAttribute is not supported for the index attribute.")}else throw new Error("BVH: Only BufferGeometries are supported.");if(t.useSharedArrayBuffer&&!Dh())throw new Error("BVH: SharedArrayBuffer is not available.");super(),this.geometry=e,this.resolvePrimitiveIndex=t.indirect?n=>this._indirectBuffer[n]:n=>n,this.primitiveBuffer=null,this.primitiveBufferStride=null,this._indirectBuffer=null,t={...Gc,...t},t[Gr]||this.init(t)}init(e){const{geometry:t,primitiveStride:n}=this;if(e.indirect){const i=Ca(t,e.range,n),s=qc(i,e.useSharedArrayBuffer);this._indirectBuffer=s}else Fh(t,e);super.init(e),!t.boundingBox&&e.setBoundingBox&&(t.boundingBox=this.getBoundingBox(new A.Box3))}getRootRanges(e){return this.indirect?[{offset:0,count:this._indirectBuffer.length}]:Ca(this.geometry,e,this.primitiveStride)}raycastObject3D(){throw new Error("BVH: raycastObject3D() not implemented")}}class qt{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(e,t){let n=1/0,i=-1/0;for(let s=0,a=e.length;s<a;s++){const c=e[s][t];n=c<n?c:n,i=c>i?c:i}this.min=n,this.max=i}setFromPoints(e,t){let n=1/0,i=-1/0;for(let s=0,a=t.length;s<a;s++){const o=t[s],c=e.dot(o);n=c<n?c:n,i=c>i?c:i}this.min=n,this.max=i}isSeparated(e){return this.min>e.max||e.min>this.max}}qt.prototype.setFromBox=(function(){const r=new A.Vector3;return function(t,n){const i=n.min,s=n.max;let a=1/0,o=-1/0;for(let c=0;c<=1;c++)for(let l=0;l<=1;l++)for(let h=0;h<=1;h++){r.x=i.x*c+s.x*(1-c),r.y=i.y*l+s.y*(1-l),r.z=i.z*h+s.z*(1-h);const d=t.dot(r);a=Math.min(d,a),o=Math.max(d,o)}this.min=a,this.max=o}})();const jh=(function(){const r=new A.Vector3,e=new A.Vector3,t=new A.Vector3;return function(i,s,a){const o=i.start,c=r,l=s.start,h=e;t.subVectors(o,l),r.subVectors(i.end,i.start),e.subVectors(s.end,s.start);const d=t.dot(h),m=h.dot(c),p=h.dot(h),b=t.dot(c),g=c.dot(c)*p-m*m;let v,x;g!==0?v=(d*m-b*p)/g:v=0,x=(d+v*m)/p,a.x=v,a.y=x}})(),go=(function(){const r=new A.Vector2,e=new A.Vector3,t=new A.Vector3;return function(i,s,a,o){jh(i,s,r);let c=r.x,l=r.y;if(c>=0&&c<=1&&l>=0&&l<=1){i.at(c,a),s.at(l,o);return}else if(c>=0&&c<=1){l<0?s.at(0,o):s.at(1,o),i.closestPointToPoint(o,!0,a);return}else if(l>=0&&l<=1){c<0?i.at(0,a):i.at(1,a),s.closestPointToPoint(a,!0,o);return}else{let h;c<0?h=i.start:h=i.end;let d;l<0?d=s.start:d=s.end;const m=e,p=t;if(i.closestPointToPoint(d,!0,e),s.closestPointToPoint(h,!0,t),m.distanceToSquared(d)<=p.distanceToSquared(h)){a.copy(m),o.copy(d);return}else{a.copy(h),o.copy(p);return}}}})(),Gh=(function(){const r=new A.Vector3,e=new A.Vector3,t=new A.Plane,n=new A.Line3;return function(s,a){const{radius:o,center:c}=s,{a:l,b:h,c:d}=a;if(n.start=l,n.end=h,n.closestPointToPoint(c,!0,r).distanceTo(c)<=o||(n.start=l,n.end=d,n.closestPointToPoint(c,!0,r).distanceTo(c)<=o)||(n.start=h,n.end=d,n.closestPointToPoint(c,!0,r).distanceTo(c)<=o))return!0;const T=a.getPlane(t);if(Math.abs(T.distanceToPoint(c))<=o){const v=T.projectPoint(c,e);if(a.containsPoint(v))return!0}return!1}})(),Wh=["x","y","z"],Gt=1e-15,wa=Gt*Gt;function pt(r){return Math.abs(r)<Gt}class gt extends A.Triangle{constructor(...e){super(...e),this.isExtendedTriangle=!0,this.satAxes=new Array(4).fill().map(()=>new A.Vector3),this.satBounds=new Array(4).fill().map(()=>new qt),this.points=[this.a,this.b,this.c],this.plane=new A.Plane,this.isDegenerateIntoSegment=!1,this.isDegenerateIntoPoint=!1,this.degenerateSegment=new A.Line3,this.needsUpdate=!0}intersectsSphere(e){return Gh(e,this)}update(){const e=this.a,t=this.b,n=this.c,i=this.points,s=this.satAxes,a=this.satBounds,o=s[0],c=a[0];this.getNormal(o),c.setFromPoints(o,i);const l=s[1],h=a[1];l.subVectors(e,t),h.setFromPoints(l,i);const d=s[2],m=a[2];d.subVectors(t,n),m.setFromPoints(d,i);const p=s[3],b=a[3];p.subVectors(n,e),b.setFromPoints(p,i);const T=l.length(),g=d.length(),v=p.length();this.isDegenerateIntoPoint=!1,this.isDegenerateIntoSegment=!1,T<Gt?g<Gt||v<Gt?this.isDegenerateIntoPoint=!0:(this.isDegenerateIntoSegment=!0,this.degenerateSegment.start.copy(e),this.degenerateSegment.end.copy(n)):g<Gt?v<Gt?this.isDegenerateIntoPoint=!0:(this.isDegenerateIntoSegment=!0,this.degenerateSegment.start.copy(t),this.degenerateSegment.end.copy(e)):v<Gt&&(this.isDegenerateIntoSegment=!0,this.degenerateSegment.start.copy(n),this.degenerateSegment.end.copy(t)),this.plane.setFromNormalAndCoplanarPoint(o,e),this.needsUpdate=!1}}gt.prototype.closestPointToSegment=(function(){const r=new A.Vector3,e=new A.Vector3,t=new A.Line3;return function(i,s=null,a=null){const{start:o,end:c}=i,l=this.points;let h,d=1/0;for(let m=0;m<3;m++){const p=(m+1)%3;t.start.copy(l[m]),t.end.copy(l[p]),go(t,i,r,e),h=r.distanceToSquared(e),h<d&&(d=h,s&&s.copy(r),a&&a.copy(e))}return this.closestPointToPoint(o,r),h=o.distanceToSquared(r),h<d&&(d=h,s&&s.copy(r),a&&a.copy(o)),this.closestPointToPoint(c,r),h=c.distanceToSquared(r),h<d&&(d=h,s&&s.copy(r),a&&a.copy(c)),Math.sqrt(d)}})();gt.prototype.intersectsTriangle=(function(){const r=new gt,e=new qt,t=new qt,n=new A.Vector3,i=new A.Vector3,s=new A.Vector3,a=new A.Vector3,o=new A.Line3,c=new A.Line3,l=new A.Vector3,h=new A.Vector2,d=new A.Vector2;function m(_,M,C,P){const E=n;!_.isDegenerateIntoPoint&&!_.isDegenerateIntoSegment?E.copy(_.plane.normal):E.copy(M.plane.normal);const z=_.satBounds,I=_.satAxes;for(let O=1;O<4;O++){const U=z[O],F=I[O];if(e.setFromPoints(F,M.points),U.isSeparated(e)||(a.copy(E).cross(F),e.setFromPoints(a,_.points),t.setFromPoints(a,M.points),e.isSeparated(t)))return!1}const R=M.satBounds,N=M.satAxes;for(let O=1;O<4;O++){const U=R[O],F=N[O];if(e.setFromPoints(F,_.points),U.isSeparated(e)||(a.crossVectors(E,F),e.setFromPoints(a,_.points),t.setFromPoints(a,M.points),e.isSeparated(t)))return!1}return C&&(P||console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),C.start.set(0,0,0),C.end.set(0,0,0)),!0}function p(_,M,C,P,E,z,I,R,N,O,U){let F=I/(I-R);O.x=P+(E-P)*F,U.start.subVectors(M,_).multiplyScalar(F).add(_),F=I/(I-N),O.y=P+(z-P)*F,U.end.subVectors(C,_).multiplyScalar(F).add(_)}function b(_,M,C,P,E,z,I,R,N,O,U){if(E>0)p(_.c,_.a,_.b,P,M,C,N,I,R,O,U);else if(z>0)p(_.b,_.a,_.c,C,M,P,R,I,N,O,U);else if(R*N>0||I!=0)p(_.a,_.b,_.c,M,C,P,I,R,N,O,U);else if(R!=0)p(_.b,_.a,_.c,C,M,P,R,I,N,O,U);else if(N!=0)p(_.c,_.a,_.b,P,M,C,N,I,R,O,U);else return!0;return!1}function T(_,M,C,P){const E=M.degenerateSegment,z=_.plane.distanceToPoint(E.start),I=_.plane.distanceToPoint(E.end);return pt(z)?pt(I)?m(_,M,C,P):(C&&(C.start.copy(E.start),C.end.copy(E.start)),_.containsPoint(E.start)):pt(I)?(C&&(C.start.copy(E.end),C.end.copy(E.end)),_.containsPoint(E.end)):_.plane.intersectLine(E,n)!=null?(C&&(C.start.copy(n),C.end.copy(n)),_.containsPoint(n)):!1}function g(_,M,C){const P=M.a;return pt(_.plane.distanceToPoint(P))&&_.containsPoint(P)?(C&&(C.start.copy(P),C.end.copy(P)),!0):!1}function v(_,M,C){const P=_.degenerateSegment,E=M.a;return P.closestPointToPoint(E,!0,n),E.distanceToSquared(n)<wa?(C&&(C.start.copy(E),C.end.copy(E)),!0):!1}function x(_,M,C,P){if(_.isDegenerateIntoSegment)if(M.isDegenerateIntoSegment){const E=_.degenerateSegment,z=M.degenerateSegment,I=i,R=s;E.delta(I),z.delta(R);const N=n.subVectors(z.start,E.start),O=I.x*R.y-I.y*R.x;if(pt(O))return!1;const U=(N.x*R.y-N.y*R.x)/O,F=-(I.x*N.y-I.y*N.x)/O;if(U<0||U>1||F<0||F>1)return!1;const J=E.start.z+I.z*U,$=z.start.z+R.z*F;return pt(J-$)?(C&&(C.start.copy(E.start).addScaledVector(I,U),C.end.copy(E.start).addScaledVector(I,U)),!0):!1}else return M.isDegenerateIntoPoint?v(_,M,C):T(M,_,C,P);else{if(_.isDegenerateIntoPoint)return M.isDegenerateIntoPoint?M.a.distanceToSquared(_.a)<wa?(C&&(C.start.copy(_.a),C.end.copy(_.a)),!0):!1:M.isDegenerateIntoSegment?v(M,_,C):g(M,_,C);if(M.isDegenerateIntoPoint)return g(_,M,C);if(M.isDegenerateIntoSegment)return T(_,M,C,P)}}return function(M,C=null,P=!1){this.needsUpdate&&this.update(),M.isExtendedTriangle?M.needsUpdate&&M.update():(r.copy(M),r.update(),M=r);const E=x(this,M,C,P);if(E!==void 0)return E;const z=this.plane,I=M.plane;let R=I.distanceToPoint(this.a),N=I.distanceToPoint(this.b),O=I.distanceToPoint(this.c);pt(R)&&(R=0),pt(N)&&(N=0),pt(O)&&(O=0);const U=R*N,F=R*O;if(U>0&&F>0)return!1;let J=z.distanceToPoint(M.a),$=z.distanceToPoint(M.b),K=z.distanceToPoint(M.c);pt(J)&&(J=0),pt($)&&($=0),pt(K)&&(K=0);const W=J*$,me=J*K;if(W>0&&me>0)return!1;i.copy(z.normal),s.copy(I.normal);const ne=i.cross(s);let ue=0,re=Math.abs(ne.x);const ge=Math.abs(ne.y);ge>re&&(re=ge,ue=1),Math.abs(ne.z)>re&&(ue=2);const se=Wh[ue],he=this.a[se],oe=this.b[se],Xe=this.c[se],Ve=M.a[se],Je=M.b[se],Ye=M.c[se];if(b(this,he,oe,Xe,U,F,R,N,O,h,o))return m(this,M,C,P);if(b(M,Ve,Je,Ye,W,me,J,$,K,d,c))return m(this,M,C,P);if(h.y<h.x){const xe=h.y;h.y=h.x,h.x=xe,l.copy(o.start),o.start.copy(o.end),o.end.copy(l)}if(d.y<d.x){const xe=d.y;d.y=d.x,d.x=xe,l.copy(c.start),c.start.copy(c.end),c.end.copy(l)}return h.y<d.x||d.y<h.x?!1:(C&&(d.x>h.x?C.start.copy(c.start):C.start.copy(o.start),d.y<h.y?C.end.copy(c.end):C.end.copy(o.end)),!0)}})();gt.prototype.distanceToPoint=(function(){const r=new A.Vector3;return function(t){return this.closestPointToPoint(t,r),t.distanceTo(r)}})();gt.prototype.distanceToTriangle=(function(){const r=new A.Vector3,e=new A.Vector3,t=["a","b","c"],n=new A.Line3,i=new A.Line3;return function(a,o=null,c=null){const l=o||c?n:null;if(this.intersectsTriangle(a,l))return(o||c)&&(o&&l.getCenter(o),c&&l.getCenter(c)),0;let h=1/0;for(let d=0;d<3;d++){let m;const p=t[d],b=a[p];this.closestPointToPoint(b,r),m=b.distanceToSquared(r),m<h&&(h=m,o&&o.copy(r),c&&c.copy(b));const T=this[p];a.closestPointToPoint(T,r),m=T.distanceToSquared(r),m<h&&(h=m,o&&o.copy(T),c&&c.copy(r))}for(let d=0;d<3;d++){const m=t[d],p=t[(d+1)%3];n.set(this[m],this[p]);for(let b=0;b<3;b++){const T=t[b],g=t[(b+1)%3];i.set(a[T],a[g]),go(n,i,r,e);const v=r.distanceToSquared(e);v<h&&(h=v,o&&o.copy(r),c&&c.copy(e))}}return Math.sqrt(h)}})();class qe{constructor(e,t,n){this.isOrientedBox=!0,this.min=new A.Vector3,this.max=new A.Vector3,this.matrix=new A.Matrix4,this.invMatrix=new A.Matrix4,this.points=new Array(8).fill().map(()=>new A.Vector3),this.satAxes=new Array(3).fill().map(()=>new A.Vector3),this.satBounds=new Array(3).fill().map(()=>new qt),this.alignedSatBounds=new Array(3).fill().map(()=>new qt),this.needsUpdate=!1,e&&this.min.copy(e),t&&this.max.copy(t),n&&this.matrix.copy(n)}set(e,t,n){this.min.copy(e),this.max.copy(t),this.matrix.copy(n),this.needsUpdate=!0}copy(e){this.min.copy(e.min),this.max.copy(e.max),this.matrix.copy(e.matrix),this.needsUpdate=!0}}qe.prototype.update=(function(){return function(){const e=this.matrix,t=this.min,n=this.max,i=this.points;for(let l=0;l<=1;l++)for(let h=0;h<=1;h++)for(let d=0;d<=1;d++){const m=1*l|2*h|4*d,p=i[m];p.x=l?n.x:t.x,p.y=h?n.y:t.y,p.z=d?n.z:t.z,p.applyMatrix4(e)}const s=this.satBounds,a=this.satAxes,o=i[0];for(let l=0;l<3;l++){const h=a[l],d=s[l],m=1<<l,p=i[m];h.subVectors(o,p),d.setFromPoints(h,i)}const c=this.alignedSatBounds;c[0].setFromPointsField(i,"x"),c[1].setFromPointsField(i,"y"),c[2].setFromPointsField(i,"z"),this.invMatrix.copy(this.matrix).invert(),this.needsUpdate=!1}})();qe.prototype.intersectsBox=(function(){const r=new qt;return function(t){this.needsUpdate&&this.update();const n=t.min,i=t.max,s=this.satBounds,a=this.satAxes,o=this.alignedSatBounds;if(r.min=n.x,r.max=i.x,o[0].isSeparated(r)||(r.min=n.y,r.max=i.y,o[1].isSeparated(r))||(r.min=n.z,r.max=i.z,o[2].isSeparated(r)))return!1;for(let c=0;c<3;c++){const l=a[c],h=s[c];if(r.setFromBox(l,t),h.isSeparated(r))return!1}return!0}})();qe.prototype.intersectsTriangle=(function(){const r=new gt,e=new Array(3),t=new qt,n=new qt,i=new A.Vector3;return function(a){this.needsUpdate&&this.update(),a.isExtendedTriangle?a.needsUpdate&&a.update():(r.copy(a),r.update(),a=r);const o=this.satBounds,c=this.satAxes;e[0]=a.a,e[1]=a.b,e[2]=a.c;for(let m=0;m<3;m++){const p=o[m],b=c[m];if(t.setFromPoints(b,e),p.isSeparated(t))return!1}const l=a.satBounds,h=a.satAxes,d=this.points;for(let m=0;m<3;m++){const p=l[m],b=h[m];if(t.setFromPoints(b,d),p.isSeparated(t))return!1}for(let m=0;m<3;m++){const p=c[m];for(let b=0;b<4;b++){const T=h[b];if(i.crossVectors(p,T),t.setFromPoints(i,e),n.setFromPoints(i,d),t.isSeparated(n))return!1}}return!0}})();qe.prototype.closestPointToPoint=(function(){return function(e,t){return this.needsUpdate&&this.update(),t.copy(e).applyMatrix4(this.invMatrix).clamp(this.min,this.max).applyMatrix4(this.matrix),t}})();qe.prototype.distanceToPoint=(function(){const r=new A.Vector3;return function(t){return this.closestPointToPoint(t,r),t.distanceTo(r)}})();qe.prototype.distanceToBox=(function(){const r=["x","y","z"],e=new Array(12).fill().map(()=>new A.Line3),t=new Array(12).fill().map(()=>new A.Line3),n=new A.Vector3,i=new A.Vector3;return function(a,o=0,c=null,l=null){if(this.needsUpdate&&this.update(),this.intersectsBox(a))return(c||l)&&(a.getCenter(i),this.closestPointToPoint(i,n),a.closestPointToPoint(n,i),c&&c.copy(n),l&&l.copy(i)),0;const h=o*o,d=a.min,m=a.max,p=this.points;let b=1/0;for(let g=0;g<8;g++){const v=p[g];i.copy(v).clamp(d,m);const x=v.distanceToSquared(i);if(x<b&&(b=x,c&&c.copy(v),l&&l.copy(i),x<h))return Math.sqrt(x)}let T=0;for(let g=0;g<3;g++)for(let v=0;v<=1;v++)for(let x=0;x<=1;x++){const _=(g+1)%3,M=(g+2)%3,C=v<<_|x<<M,P=1<<g|v<<_|x<<M,E=p[C],z=p[P];e[T].set(E,z);const R=r[g],N=r[_],O=r[M],U=t[T],F=U.start,J=U.end;F[R]=d[R],F[N]=v?d[N]:m[N],F[O]=x?d[O]:m[N],J[R]=m[R],J[N]=v?d[N]:m[N],J[O]=x?d[O]:m[N],T++}for(let g=0;g<=1;g++)for(let v=0;v<=1;v++)for(let x=0;x<=1;x++){i.x=g?m.x:d.x,i.y=v?m.y:d.y,i.z=x?m.z:d.z,this.closestPointToPoint(i,n);const _=i.distanceToSquared(n);if(_<b&&(b=_,c&&c.copy(n),l&&l.copy(i),_<h))return Math.sqrt(_)}for(let g=0;g<12;g++){const v=e[g];for(let x=0;x<12;x++){const _=t[x];go(v,_,n,i);const M=n.distanceToSquared(i);if(M<b&&(b=M,c&&c.copy(n),l&&l.copy(i),M<h))return Math.sqrt(M)}}return Math.sqrt(b)}})();class $h extends mo{constructor(){super(()=>new gt)}}const yt=new $h,Yn=new A.Vector3,Ps=new A.Vector3;function Hh(r,e,t={},n=0,i=1/0){const s=n*n,a=i*i;let o=1/0,c=null;if(r.shapecast({boundsTraverseOrder:h=>(Yn.copy(e).clamp(h.min,h.max),Yn.distanceToSquared(e)),intersectsBounds:(h,d,m)=>m<o&&m<a,intersectsTriangle:(h,d)=>{h.closestPointToPoint(e,Yn);const m=e.distanceToSquared(Yn);return m<o&&(Ps.copy(Yn),o=m,c=d),m<s}}),o===1/0)return null;const l=Math.sqrt(o);return t.point?t.point.copy(Ps):t.point=Ps.clone(),t.distance=l,t.faceIndex=c,t}const ur=parseInt(A.REVISION)>=169,qh=parseInt(A.REVISION)<=161,un=new A.Vector3,hn=new A.Vector3,fn=new A.Vector3,hr=new A.Vector2,fr=new A.Vector2,dr=new A.Vector2,Pa=new A.Vector3,Ea=new A.Vector3,ka=new A.Vector3,Zn=new A.Vector3;function Xh(r,e,t,n,i,s,a,o){let c;if(s===A.BackSide?c=r.intersectTriangle(n,t,e,!0,i):c=r.intersectTriangle(e,t,n,s!==A.DoubleSide,i),c===null)return null;const l=r.origin.distanceTo(i);return l<a||l>o?null:{distance:l,point:i.clone()}}function Ra(r,e,t,n,i,s,a,o,c,l,h){un.fromBufferAttribute(e,s),hn.fromBufferAttribute(e,a),fn.fromBufferAttribute(e,o);const d=Xh(r,un,hn,fn,Zn,c,l,h);if(d){if(n){hr.fromBufferAttribute(n,s),fr.fromBufferAttribute(n,a),dr.fromBufferAttribute(n,o),d.uv=new A.Vector2;const p=A.Triangle.getInterpolation(Zn,un,hn,fn,hr,fr,dr,d.uv);ur||(d.uv=p)}if(i){hr.fromBufferAttribute(i,s),fr.fromBufferAttribute(i,a),dr.fromBufferAttribute(i,o),d.uv1=new A.Vector2;const p=A.Triangle.getInterpolation(Zn,un,hn,fn,hr,fr,dr,d.uv1);ur||(d.uv1=p),qh&&(d.uv2=d.uv1)}if(t){Pa.fromBufferAttribute(t,s),Ea.fromBufferAttribute(t,a),ka.fromBufferAttribute(t,o),d.normal=new A.Vector3;const p=A.Triangle.getInterpolation(Zn,un,hn,fn,Pa,Ea,ka,d.normal);d.normal.dot(r.direction)>0&&d.normal.multiplyScalar(-1),ur||(d.normal=p)}const m={a:s,b:a,c:o,normal:new A.Vector3,materialIndex:0};if(A.Triangle.getNormal(un,hn,fn,m.normal),d.face=m,d.faceIndex=s,ur){const p=new A.Vector3;A.Triangle.getBarycoord(Zn,un,hn,fn,p),d.barycoord=p}}return d}function Aa(r){return r&&r.isMaterial?r.side:r}function $r(r,e,t,n,i,s,a){const o=n*3;let c=o+0,l=o+1,h=o+2;const{index:d,groups:m}=r;r.index&&(c=d.getX(c),l=d.getX(l),h=d.getX(h));const{position:p,normal:b,uv:T,uv1:g}=r.attributes;if(Array.isArray(e)){const v=n*3;for(let x=0,_=m.length;x<_;x++){const{start:M,count:C,materialIndex:P}=m[x];if(v>=M&&v<M+C){const E=Aa(e[P]),z=Ra(t,p,b,T,g,c,l,h,E,s,a);if(z)if(z.faceIndex=n,z.face.materialIndex=P,i)i.push(z);else return z}}}else{const v=Aa(e),x=Ra(t,p,b,T,g,c,l,h,v,s,a);if(x)if(x.faceIndex=n,x.face.materialIndex=0,i)i.push(x);else return x}return null}function we(r,e,t,n){const i=r.a,s=r.b,a=r.c;let o=e,c=e+1,l=e+2;t&&(o=t.getX(o),c=t.getX(c),l=t.getX(l)),i.x=n.getX(o),i.y=n.getY(o),i.z=n.getZ(o),s.x=n.getX(c),s.y=n.getY(c),s.z=n.getZ(c),a.x=n.getX(l),a.y=n.getY(l),a.z=n.getZ(l)}function Yh(r,e,t,n,i,s,a,o){const{geometry:c,_indirectBuffer:l}=r;for(let h=n,d=n+i;h<d;h++)$r(c,e,t,h,s,a,o)}function Zh(r,e,t,n,i,s,a){const{geometry:o,_indirectBuffer:c}=r;let l=1/0,h=null;for(let d=n,m=n+i;d<m;d++){let p;p=$r(o,e,t,d,null,s,a),p&&p.distance<l&&(h=p,l=p.distance)}return h}function Kh(r,e,t,n,i,s,a){const{geometry:o}=t,{index:c}=o,l=o.attributes.position;for(let h=r,d=e+r;h<d;h++){let m;if(m=h,we(a,m*3,c,l),a.needsUpdate=!0,n(a,m,i,s))return!0}return!1}function Qh(r,e=null){e&&Array.isArray(e)&&(e=new Set(e));const t=r.geometry,n=t.index?t.index.array:null,i=t.attributes.position;let s,a,o,c,l=0;const h=r._roots;for(let m=0,p=h.length;m<p;m++)s=h[m],a=new Uint32Array(s),o=new Uint16Array(s),c=new Float32Array(s),d(0,l),l+=s.byteLength;function d(m,p,b=!1){const T=m*2;if(Ee(T,o)){const g=$e(m,a),v=tt(T,o);let x=1/0,_=1/0,M=1/0,C=-1/0,P=-1/0,E=-1/0;for(let z=3*g,I=3*(g+v);z<I;z++){let R=n[z];const N=i.getX(R),O=i.getY(R),U=i.getZ(R);N<x&&(x=N),N>C&&(C=N),O<_&&(_=O),O>P&&(P=O),U<M&&(M=U),U>E&&(E=U)}return c[m+0]!==x||c[m+1]!==_||c[m+2]!==M||c[m+3]!==C||c[m+4]!==P||c[m+5]!==E?(c[m+0]=x,c[m+1]=_,c[m+2]=M,c[m+3]=C,c[m+4]=P,c[m+5]=E,!0):!1}else{const g=Ie(m),v=Be(m,a);let x=b,_=!1,M=!1;if(e){if(!x){const R=g/Pe+p/We,N=v/Pe+p/We;_=e.has(R),M=e.has(N),x=!_&&!M}}else _=!0,M=!0;const C=x||_,P=x||M;let E=!1;C&&(E=d(g,p,x));let z=!1;P&&(z=d(v,p,x));const I=E||z;if(I)for(let R=0;R<3;R++){const N=g+R,O=v+R,U=c[N],F=c[N+3],J=c[O],$=c[O+3];c[m+R]=U<J?U:J,c[m+R+3]=F>$?F:$}return I}}}function sn(r,e,t,n,i){let s,a,o,c,l,h;const d=1/t.direction.x,m=1/t.direction.y,p=1/t.direction.z,b=t.origin.x,T=t.origin.y,g=t.origin.z;let v=e[r],x=e[r+3],_=e[r+1],M=e[r+3+1],C=e[r+2],P=e[r+3+2];return d>=0?(s=(v-b)*d,a=(x-b)*d):(s=(x-b)*d,a=(v-b)*d),m>=0?(o=(_-T)*m,c=(M-T)*m):(o=(M-T)*m,c=(_-T)*m),s>c||o>a||((o>s||isNaN(s))&&(s=o),(c<a||isNaN(a))&&(a=c),p>=0?(l=(C-g)*p,h=(P-g)*p):(l=(P-g)*p,h=(C-g)*p),s>h||l>a)?!1:((l>s||s!==s)&&(s=l),(h<a||a!==a)&&(a=h),s<=i&&a>=n)}function ef(r,e,t,n,i,s,a,o){const{geometry:c,_indirectBuffer:l}=r;for(let h=n,d=n+i;h<d;h++){let m=l?l[h]:h;$r(c,e,t,m,s,a,o)}}function tf(r,e,t,n,i,s,a){const{geometry:o,_indirectBuffer:c}=r;let l=1/0,h=null;for(let d=n,m=n+i;d<m;d++){let p;p=$r(o,e,t,c?c[d]:d,null,s,a),p&&p.distance<l&&(h=p,l=p.distance)}return h}function nf(r,e,t,n,i,s,a){const{geometry:o}=t,{index:c}=o,l=o.attributes.position;for(let h=r,d=e+r;h<d;h++){let m;if(m=t.resolveTriangleIndex(h),we(a,m*3,c,l),a.needsUpdate=!0,n(a,m,i,s))return!0}return!1}function rf(r,e,t,n,i,s,a){pe.setBuffer(r._roots[e]),Ys(0,r,t,n,i,s,a),pe.clearBuffer()}function Ys(r,e,t,n,i,s,a){const{float32Array:o,uint16Array:c,uint32Array:l}=pe,h=r*2;if(Ee(h,c)){const m=$e(r,l),p=tt(h,c);Yh(e,t,n,m,p,i,s,a)}else{const m=Ie(r);sn(m,o,n,s,a)&&Ys(m,e,t,n,i,s,a);const p=Be(r,l);sn(p,o,n,s,a)&&Ys(p,e,t,n,i,s,a)}}const sf=["x","y","z"];function of(r,e,t,n,i,s){pe.setBuffer(r._roots[e]);const a=Zs(0,r,t,n,i,s);return pe.clearBuffer(),a}function Zs(r,e,t,n,i,s){const{float32Array:a,uint16Array:o,uint32Array:c}=pe;let l=r*2;if(Ee(l,o)){const d=$e(r,c),m=tt(l,o);return Zh(e,t,n,d,m,i,s)}else{const d=po(r,c),m=sf[d],b=n.direction[m]>=0;let T,g;b?(T=Ie(r),g=Be(r,c)):(T=Be(r,c),g=Ie(r));const x=sn(T,a,n,i,s)?Zs(T,e,t,n,i,s):null;if(x){const C=x.point[m];if(b?C<=a[g+d]:C>=a[g+d+3])return x}const M=sn(g,a,n,i,s)?Zs(g,e,t,n,i,s):null;return x&&M?x.distance<=M.distance?x:M:x||M||null}}const pr=new A.Box3,An=new gt,On=new gt,Kn=new A.Matrix4,Oa=new qe,mr=new qe;function af(r,e,t,n){pe.setBuffer(r._roots[e]);const i=Ks(0,r,t,n);return pe.clearBuffer(),i}function Ks(r,e,t,n,i=null){const{float32Array:s,uint16Array:a,uint32Array:o}=pe;let c=r*2;if(i===null&&(t.boundingBox||t.computeBoundingBox(),Oa.set(t.boundingBox.min,t.boundingBox.max,n),i=Oa),Ee(c,a)){const h=e.geometry,d=h.index,m=h.attributes.position,p=t.index,b=t.attributes.position,T=$e(r,o),g=tt(c,a);if(Kn.copy(n).invert(),t.boundsTree)return Se(r,s,mr),mr.matrix.copy(Kn),mr.needsUpdate=!0,t.boundsTree.shapecast({intersectsBounds:x=>mr.intersectsBox(x),intersectsTriangle:x=>{x.a.applyMatrix4(n),x.b.applyMatrix4(n),x.c.applyMatrix4(n),x.needsUpdate=!0;for(let _=T*3,M=(g+T)*3;_<M;_+=3)if(we(On,_,d,m),On.needsUpdate=!0,x.intersectsTriangle(On))return!0;return!1}});{const v=Wr(t);for(let x=T*3,_=(g+T)*3;x<_;x+=3){we(An,x,d,m),An.a.applyMatrix4(Kn),An.b.applyMatrix4(Kn),An.c.applyMatrix4(Kn),An.needsUpdate=!0;for(let M=0,C=v*3;M<C;M+=3)if(we(On,M,p,b),On.needsUpdate=!0,An.intersectsTriangle(On))return!0}}}else{const h=Ie(r),d=Be(r,o);return Se(h,s,pr),!!(i.intersectsBox(pr)&&Ks(h,e,t,n,i)||(Se(d,s,pr),i.intersectsBox(pr)&&Ks(d,e,t,n,i)))}}const yr=new A.Matrix4,Es=new qe,Qn=new qe,cf=new A.Vector3,lf=new A.Vector3,uf=new A.Vector3,hf=new A.Vector3;function ff(r,e,t,n={},i={},s=0,a=1/0){e.boundingBox||e.computeBoundingBox(),Es.set(e.boundingBox.min,e.boundingBox.max,t),Es.needsUpdate=!0;const o=r.geometry,c=o.attributes.position,l=o.index,h=e.attributes.position,d=e.index,m=yt.getPrimitive(),p=yt.getPrimitive();let b=cf,T=lf,g=null,v=null;i&&(g=uf,v=hf);let x=1/0,_=null,M=null;return yr.copy(t).invert(),Qn.matrix.copy(yr),r.shapecast({boundsTraverseOrder:C=>Es.distanceToBox(C),intersectsBounds:(C,P,E)=>E<x&&E<a?(P&&(Qn.min.copy(C.min),Qn.max.copy(C.max),Qn.needsUpdate=!0),!0):!1,intersectsRange:(C,P)=>{if(e.boundsTree)return e.boundsTree.shapecast({boundsTraverseOrder:z=>Qn.distanceToBox(z),intersectsBounds:(z,I,R)=>R<x&&R<a,intersectsRange:(z,I)=>{for(let R=z,N=z+I;R<N;R++){we(p,3*R,d,h),p.a.applyMatrix4(t),p.b.applyMatrix4(t),p.c.applyMatrix4(t),p.needsUpdate=!0;for(let O=C,U=C+P;O<U;O++){we(m,3*O,l,c),m.needsUpdate=!0;const F=m.distanceToTriangle(p,b,g);if(F<x&&(T.copy(b),v&&v.copy(g),x=F,_=O,M=R),F<s)return!0}}}});{const E=Wr(e);for(let z=0,I=E;z<I;z++){we(p,3*z,d,h),p.a.applyMatrix4(t),p.b.applyMatrix4(t),p.c.applyMatrix4(t),p.needsUpdate=!0;for(let R=C,N=C+P;R<N;R++){we(m,3*R,l,c),m.needsUpdate=!0;const O=m.distanceToTriangle(p,b,g);if(O<x&&(T.copy(b),v&&v.copy(g),x=O,_=R,M=z),O<s)return!0}}}}}),yt.releasePrimitive(m),yt.releasePrimitive(p),x===1/0?null:(n.point?n.point.copy(T):n.point=T.clone(),n.distance=x,n.faceIndex=_,i&&(i.point?i.point.copy(v):i.point=v.clone(),i.point.applyMatrix4(yr),T.applyMatrix4(yr),i.distance=T.sub(i.point).length(),i.faceIndex=M),n)}function df(r,e=null){e&&Array.isArray(e)&&(e=new Set(e));const t=r.geometry,n=t.index?t.index.array:null,i=t.attributes.position;let s,a,o,c,l=0;const h=r._roots;for(let m=0,p=h.length;m<p;m++)s=h[m],a=new Uint32Array(s),o=new Uint16Array(s),c=new Float32Array(s),d(0,l),l+=s.byteLength;function d(m,p,b=!1){const T=m*2;if(Ee(T,o)){const g=$e(m,a),v=tt(T,o);let x=1/0,_=1/0,M=1/0,C=-1/0,P=-1/0,E=-1/0;for(let z=g,I=g+v;z<I;z++){const R=3*r.resolveTriangleIndex(z);for(let N=0;N<3;N++){let O=R+N;O=n?n[O]:O;const U=i.getX(O),F=i.getY(O),J=i.getZ(O);U<x&&(x=U),U>C&&(C=U),F<_&&(_=F),F>P&&(P=F),J<M&&(M=J),J>E&&(E=J)}}return c[m+0]!==x||c[m+1]!==_||c[m+2]!==M||c[m+3]!==C||c[m+4]!==P||c[m+5]!==E?(c[m+0]=x,c[m+1]=_,c[m+2]=M,c[m+3]=C,c[m+4]=P,c[m+5]=E,!0):!1}else{const g=Ie(m),v=Be(m,a);let x=b,_=!1,M=!1;if(e){if(!x){const R=g/Pe+p/We,N=v/Pe+p/We;_=e.has(R),M=e.has(N),x=!_&&!M}}else _=!0,M=!0;const C=x||_,P=x||M;let E=!1;C&&(E=d(g,p,x));let z=!1;P&&(z=d(v,p,x));const I=E||z;if(I)for(let R=0;R<3;R++){const N=g+R,O=v+R,U=c[N],F=c[N+3],J=c[O],$=c[O+3];c[m+R]=U<J?U:J,c[m+R+3]=F>$?F:$}return I}}}function pf(r,e,t,n,i,s,a){pe.setBuffer(r._roots[e]),Qs(0,r,t,n,i,s,a),pe.clearBuffer()}function Qs(r,e,t,n,i,s,a){const{float32Array:o,uint16Array:c,uint32Array:l}=pe,h=r*2;if(Ee(h,c)){const m=$e(r,l),p=tt(h,c);ef(e,t,n,m,p,i,s,a)}else{const m=Ie(r);sn(m,o,n,s,a)&&Qs(m,e,t,n,i,s,a);const p=Be(r,l);sn(p,o,n,s,a)&&Qs(p,e,t,n,i,s,a)}}const mf=["x","y","z"];function yf(r,e,t,n,i,s){pe.setBuffer(r._roots[e]);const a=eo(0,r,t,n,i,s);return pe.clearBuffer(),a}function eo(r,e,t,n,i,s){const{float32Array:a,uint16Array:o,uint32Array:c}=pe;let l=r*2;if(Ee(l,o)){const d=$e(r,c),m=tt(l,o);return tf(e,t,n,d,m,i,s)}else{const d=po(r,c),m=mf[d],b=n.direction[m]>=0;let T,g;b?(T=Ie(r),g=Be(r,c)):(T=Be(r,c),g=Ie(r));const x=sn(T,a,n,i,s)?eo(T,e,t,n,i,s):null;if(x){const C=x.point[m];if(b?C<=a[g+d]:C>=a[g+d+3])return x}const M=sn(g,a,n,i,s)?eo(g,e,t,n,i,s):null;return x&&M?x.distance<=M.distance?x:M:x||M||null}}const gr=new A.Box3,zn=new gt,In=new gt,ei=new A.Matrix4,za=new qe,vr=new qe;function gf(r,e,t,n){pe.setBuffer(r._roots[e]);const i=to(0,r,t,n);return pe.clearBuffer(),i}function to(r,e,t,n,i=null){const{float32Array:s,uint16Array:a,uint32Array:o}=pe;let c=r*2;if(i===null&&(t.boundingBox||t.computeBoundingBox(),za.set(t.boundingBox.min,t.boundingBox.max,n),i=za),Ee(c,a)){const h=e.geometry,d=h.index,m=h.attributes.position,p=t.index,b=t.attributes.position,T=$e(r,o),g=tt(c,a);if(ei.copy(n).invert(),t.boundsTree)return Se(r,s,vr),vr.matrix.copy(ei),vr.needsUpdate=!0,t.boundsTree.shapecast({intersectsBounds:x=>vr.intersectsBox(x),intersectsTriangle:x=>{x.a.applyMatrix4(n),x.b.applyMatrix4(n),x.c.applyMatrix4(n),x.needsUpdate=!0;for(let _=T,M=g+T;_<M;_++)if(we(In,3*e.resolveTriangleIndex(_),d,m),In.needsUpdate=!0,x.intersectsTriangle(In))return!0;return!1}});{const v=Wr(t);for(let x=T,_=g+T;x<_;x++){const M=e.resolveTriangleIndex(x);we(zn,3*M,d,m),zn.a.applyMatrix4(ei),zn.b.applyMatrix4(ei),zn.c.applyMatrix4(ei),zn.needsUpdate=!0;for(let C=0,P=v*3;C<P;C+=3)if(we(In,C,p,b),In.needsUpdate=!0,zn.intersectsTriangle(In))return!0}}}else{const h=Ie(r),d=Be(r,o);return Se(h,s,gr),!!(i.intersectsBox(gr)&&to(h,e,t,n,i)||(Se(d,s,gr),i.intersectsBox(gr)&&to(d,e,t,n,i)))}}const Sr=new A.Matrix4,ks=new qe,ti=new qe,vf=new A.Vector3,Sf=new A.Vector3,xf=new A.Vector3,_f=new A.Vector3;function bf(r,e,t,n={},i={},s=0,a=1/0){e.boundingBox||e.computeBoundingBox(),ks.set(e.boundingBox.min,e.boundingBox.max,t),ks.needsUpdate=!0;const o=r.geometry,c=o.attributes.position,l=o.index,h=e.attributes.position,d=e.index,m=yt.getPrimitive(),p=yt.getPrimitive();let b=vf,T=Sf,g=null,v=null;i&&(g=xf,v=_f);let x=1/0,_=null,M=null;return Sr.copy(t).invert(),ti.matrix.copy(Sr),r.shapecast({boundsTraverseOrder:C=>ks.distanceToBox(C),intersectsBounds:(C,P,E)=>E<x&&E<a?(P&&(ti.min.copy(C.min),ti.max.copy(C.max),ti.needsUpdate=!0),!0):!1,intersectsRange:(C,P)=>{if(e.boundsTree){const E=e.boundsTree;return E.shapecast({boundsTraverseOrder:z=>ti.distanceToBox(z),intersectsBounds:(z,I,R)=>R<x&&R<a,intersectsRange:(z,I)=>{for(let R=z,N=z+I;R<N;R++){const O=E.resolveTriangleIndex(R);we(p,3*O,d,h),p.a.applyMatrix4(t),p.b.applyMatrix4(t),p.c.applyMatrix4(t),p.needsUpdate=!0;for(let U=C,F=C+P;U<F;U++){const J=r.resolveTriangleIndex(U);we(m,3*J,l,c),m.needsUpdate=!0;const $=m.distanceToTriangle(p,b,g);if($<x&&(T.copy(b),v&&v.copy(g),x=$,_=U,M=R),$<s)return!0}}}})}else{const E=Wr(e);for(let z=0,I=E;z<I;z++){we(p,3*z,d,h),p.a.applyMatrix4(t),p.b.applyMatrix4(t),p.c.applyMatrix4(t),p.needsUpdate=!0;for(let R=C,N=C+P;R<N;R++){const O=r.resolveTriangleIndex(R);we(m,3*O,l,c),m.needsUpdate=!0;const U=m.distanceToTriangle(p,b,g);if(U<x&&(T.copy(b),v&&v.copy(g),x=U,_=R,M=z),U<s)return!0}}}}}),yt.releasePrimitive(m),yt.releasePrimitive(p),x===1/0?null:(n.point?n.point.copy(T):n.point=T.clone(),n.distance=x,n.faceIndex=_,i&&(i.point?i.point.copy(v):i.point=v.clone(),i.point.applyMatrix4(Sr),T.applyMatrix4(Sr),i.distance=T.sub(i.point).length(),i.faceIndex=M),n)}function Ia(r,e,t){return r===null?null:(r.point.applyMatrix4(e.matrixWorld),r.distance=r.point.distanceTo(t.ray.origin),r.object=e,r)}const xr=new qe,_r=new A.Ray,Ba=new A.Vector3,Na=new A.Matrix4,Ua=new A.Vector3,Rs=["getX","getY","getZ"];class Vn extends Xc{static serialize(e,t={}){t={cloneBuffers:!0,...t};const n=e.geometry,i=e._roots,s=e._indirectBuffer,a=n.getIndex(),o={version:1,roots:null,index:null,indirectBuffer:null};return t.cloneBuffers?(o.roots=i.map(c=>c.slice()),o.index=a?a.array.slice():null,o.indirectBuffer=s?s.slice():null):(o.roots=i,o.index=a?a.array:null,o.indirectBuffer=s),o}static deserialize(e,t,n={}){n={setIndex:!0,indirect:!!e.indirectBuffer,...n};const{index:i,roots:s,indirectBuffer:a}=e;e.version||(console.warn("MeshBVH.deserialize: Serialization format has been changed and will be fixed up. It is recommended to regenerate any stored serialized data."),c(s));const o=new Vn(t,{...n,[Gr]:!0});if(o._roots=s,o._indirectBuffer=a||null,n.setIndex){const l=t.getIndex();if(l===null){const h=new A.BufferAttribute(e.index,1,!1);t.setIndex(h)}else l.array!==i&&(l.array.set(i),l.needsUpdate=!0)}return o;function c(l){for(let h=0;h<l.length;h++){const d=l[h],m=new Uint32Array(d),p=new Uint16Array(d);for(let b=0,T=d.byteLength/We;b<T;b++){const g=Pe*b,v=2*g;Ee(v,p)||(m[g+6]=m[g+6]/Pe-b)}}}}get primitiveStride(){return 3}get resolveTriangleIndex(){return this.resolvePrimitiveIndex}constructor(e,t={}){t.maxLeafTris&&(console.warn('MeshBVH: "maxLeafTris" option has been deprecated. Use maxLeafSize, instead.'),t={...t,maxLeafSize:t.maxLeafTris}),super(e,t)}shiftTriangleOffsets(e){return super.shiftPrimitiveOffsets(e)}writePrimitiveBounds(e,t,n){const i=this.geometry,s=this._indirectBuffer,a=i.attributes.position,o=i.index?i.index.array:null,l=(s?s[e]:e)*3;let h=l+0,d=l+1,m=l+2;o&&(h=o[h],d=o[d],m=o[m]);for(let p=0;p<3;p++){const b=a[Rs[p]](h),T=a[Rs[p]](d),g=a[Rs[p]](m);let v=b;T<v&&(v=T),g<v&&(v=g);let x=b;T>x&&(x=T),g>x&&(x=g),t[n+p]=v,t[n+p+3]=x}return t}computePrimitiveBounds(e,t,n){const i=this.geometry,s=this._indirectBuffer,a=i.attributes.position,o=i.index?i.index.array:null,c=a.normalized;if(e<0||t+e-n.offset>n.length/6)throw new Error("MeshBVH: compute triangle bounds range is invalid.");const l=a.array,h=a.offset||0;let d=3;a.isInterleavedBufferAttribute&&(d=a.data.stride);const m=["getX","getY","getZ"],p=n.offset;for(let b=e,T=e+t;b<T;b++){const v=(s?s[b]:b)*3,x=(b-p)*6;let _=v+0,M=v+1,C=v+2;o&&(_=o[_],M=o[M],C=o[C]),c||(_=_*d+h,M=M*d+h,C=C*d+h);for(let P=0;P<3;P++){let E,z,I;c?(E=a[m[P]](_),z=a[m[P]](M),I=a[m[P]](C)):(E=l[_+P],z=l[M+P],I=l[C+P]);let R=E;z<R&&(R=z),I<R&&(R=I);let N=E;z>N&&(N=z),I>N&&(N=I);const O=(N-R)/2,U=P*2;n[x+U+0]=R+O,n[x+U+1]=O+(Math.abs(R)+O)*kr}}return n}raycastObject3D(e,t,n=[]){const{material:i}=e;if(i===void 0)return;Na.copy(e.matrixWorld).invert(),_r.copy(t.ray).applyMatrix4(Na),Ua.setFromMatrixScale(e.matrixWorld),Ba.copy(_r.direction).multiply(Ua);const s=Ba.length(),a=t.near/s,o=t.far/s;if(t.firstHitOnly===!0){let c=this.raycastFirst(_r,i,a,o);c=Ia(c,e,t),c&&n.push(c)}else{const c=this.raycast(_r,i,a,o);for(let l=0,h=c.length;l<h;l++){const d=Ia(c[l],e,t);d&&n.push(d)}}return n}refit(e=null){return(this.indirect?df:Qh)(this,e)}raycast(e,t=A.FrontSide,n=0,i=1/0){const s=this._roots,a=[],o=this.indirect?pf:rf;for(let c=0,l=s.length;c<l;c++)o(this,c,t,e,a,n,i);return a}raycastFirst(e,t=A.FrontSide,n=0,i=1/0){const s=this._roots;let a=null;const o=this.indirect?yf:of;for(let c=0,l=s.length;c<l;c++){const h=o(this,c,t,e,n,i);h!=null&&(a==null||h.distance<a.distance)&&(a=h)}return a}intersectsGeometry(e,t){let n=!1;const i=this._roots,s=this.indirect?gf:af;for(let a=0,o=i.length;a<o&&(n=s(this,a,e,t),!n);a++);return n}shapecast(e){const t=yt.getPrimitive(),n=super.shapecast({...e,intersectsPrimitive:e.intersectsTriangle,scratchPrimitive:t,iterate:this.indirect?nf:Kh});return yt.releasePrimitive(t),n}bvhcast(e,t,n){let{intersectsRanges:i,intersectsTriangles:s}=n;const a=yt.getPrimitive(),o=this.geometry.index,c=this.geometry.attributes.position,l=this.indirect?b=>{const T=this.resolveTriangleIndex(b);we(a,T*3,o,c)}:b=>{we(a,b*3,o,c)},h=yt.getPrimitive(),d=e.geometry.index,m=e.geometry.attributes.position,p=e.indirect?b=>{const T=e.resolveTriangleIndex(b);we(h,T*3,d,m)}:b=>{we(h,b*3,d,m)};if(s){if(!(e instanceof Vn))throw new Error('MeshBVH: "intersectsTriangles" callback can only be used with another MeshBVH.');const b=(T,g,v,x,_,M,C,P)=>{for(let E=v,z=v+x;E<z;E++){p(E),h.a.applyMatrix4(t),h.b.applyMatrix4(t),h.c.applyMatrix4(t),h.needsUpdate=!0;for(let I=T,R=T+g;I<R;I++)if(l(I),a.needsUpdate=!0,s(a,h,I,E,_,M,C,P))return!0}return!1};if(i){const T=i;i=function(g,v,x,_,M,C,P,E){return T(g,v,x,_,M,C,P,E)?!0:b(g,v,x,_,M,C,P,E)}}else i=b}return super.bvhcast(e,t,{intersectsRanges:i})}intersectsBox(e,t){return xr.set(e.min,e.max,t),xr.needsUpdate=!0,this.shapecast({intersectsBounds:n=>xr.intersectsBox(n),intersectsTriangle:n=>xr.intersectsTriangle(n)})}intersectsSphere(e){return this.shapecast({intersectsBounds:t=>e.intersectsBox(t),intersectsTriangle:t=>t.intersectsSphere(e)})}closestPointToGeometry(e,t,n={},i={},s=0,a=1/0){return(this.indirect?bf:ff)(this,e,t,n,i,s,a)}closestPointToPoint(e,t={},n=0,i=1/0){return Hh(this,e,t,n,i)}}const Bn={Mesh:A.Mesh.prototype.raycast,Line:A.Line.prototype.raycast,LineSegments:A.LineSegments.prototype.raycast,LineLoop:A.LineLoop.prototype.raycast,Points:A.Points.prototype.raycast,BatchedMesh:A.BatchedMesh.prototype.raycast},De=new A.Mesh,br=[];function Tf(r,e){if(this.isBatchedMesh)Mf.call(this,r,e);else{const{geometry:t}=this;if(t.boundsTree)t.boundsTree.raycastObject3D(this,r,e);else{let n;if(this instanceof A.Mesh)n=Bn.Mesh;else if(this instanceof A.LineSegments)n=Bn.LineSegments;else if(this instanceof A.LineLoop)n=Bn.LineLoop;else if(this instanceof A.Line)n=Bn.Line;else if(this instanceof A.Points)n=Bn.Points;else throw new Error("BVH: Fallback raycast function not found.");n.call(this,r,e)}}}function Mf(r,e){if(this.boundsTrees){const t=this.boundsTrees,n=this._drawInfo||this._instanceInfo,i=this._drawRanges||this._geometryInfo,s=this.matrixWorld;De.material=this.material,De.geometry=this.geometry;const a=De.geometry.boundsTree,o=De.geometry.drawRange;De.geometry.boundingSphere===null&&(De.geometry.boundingSphere=new A.Sphere);for(let c=0,l=n.length;c<l;c++){if(!this.getVisibleAt(c))continue;const h=n[c].geometryIndex;if(De.geometry.boundsTree=t[h],this.getMatrixAt(c,De.matrixWorld).premultiply(s),!De.geometry.boundsTree){this.getBoundingBoxAt(h,De.geometry.boundingBox),this.getBoundingSphereAt(h,De.geometry.boundingSphere);const d=i[h];De.geometry.setDrawRange(d.start,d.count)}De.raycast(r,br);for(let d=0,m=br.length;d<m;d++){const p=br[d];p.object=this,p.batchId=c,e.push(p)}br.length=0}De.geometry.boundsTree=a,De.geometry.drawRange=o,De.material=null,De.geometry=null}else Bn.BatchedMesh.call(this,r,e)}function Cf(r={}){const{type:e=Vn}=r;return this.boundsTree=new e(this,r),this.boundsTree}const dn=new A.Vector3,pn=new A.Vector3,mn=new A.Vector3,Da=new A.Vector4,Tr=new A.Vector3,As=new A.Vector3,La=new A.Vector4,Fa=new A.Vector4,Mr=new A.Matrix4,Va=new A.Matrix4;function ni(r,e){if(!r&&!e)return;const t=r.count===e.count,n=r.normalized===e.normalized,i=r.array.constructor===e.array.constructor,s=r.itemSize===e.itemSize;if(!t||!n||!i||!s)throw new Error}function oi(r,e=null){const t=r.array.constructor,n=r.normalized,i=r.itemSize,s=e===null?r.count:e;return new A.BufferAttribute(new t(i*s),i,n)}function Yc(r,e,t=0){if(r.isInterleavedBufferAttribute){const n=r.itemSize;for(let i=0,s=r.count;i<s;i++){const a=i+t;e.setX(a,r.getX(i)),n>=2&&e.setY(a,r.getY(i)),n>=3&&e.setZ(a,r.getZ(i)),n>=4&&e.setW(a,r.getW(i))}}else{const n=e.array,i=n.constructor,s=n.BYTES_PER_ELEMENT*r.itemSize*t;new i(n.buffer,s,r.array.length).set(r.array)}}function wf(r,e,t){const n=r.elements,i=e.elements;for(let s=0,a=i.length;s<a;s++)n[s]+=i[s]*t}function Ja(r,e,t){const n=r.skeleton,i=r.geometry,s=n.bones,a=n.boneInverses;La.fromBufferAttribute(i.attributes.skinIndex,e),Fa.fromBufferAttribute(i.attributes.skinWeight,e),Mr.elements.fill(0);for(let o=0;o<4;o++){const c=Fa.getComponent(o);if(c!==0){const l=La.getComponent(o);Va.multiplyMatrices(s[l].matrixWorld,a[l]),wf(Mr,Va,c)}}return Mr.multiply(r.bindMatrix).premultiply(r.bindMatrixInverse),t.transformDirection(Mr),t}function Os(r,e,t,n,i){Tr.set(0,0,0);for(let s=0,a=r.length;s<a;s++){const o=e[s],c=r[s];o!==0&&(As.fromBufferAttribute(c,n),t?Tr.addScaledVector(As,o):Tr.addScaledVector(As.sub(i),o))}i.add(Tr)}function Pf(r,e={useGroups:!1,updateIndex:!1,skipAttributes:[]},t=new A.BufferGeometry){const n=r[0].index!==null,{useGroups:i=!1,updateIndex:s=!1,skipAttributes:a=[]}=e,o=new Set(Object.keys(r[0].attributes)),c={};let l=0;t.clearGroups();for(let h=0;h<r.length;++h){const d=r[h];let m=0;if(n!==(d.index!==null))throw new Error("StaticGeometryGenerator: All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them.");for(const p in d.attributes){if(!o.has(p))throw new Error('StaticGeometryGenerator: All geometries must have compatible attributes; make sure "'+p+'" attribute exists among all geometries, or in none of them.');c[p]===void 0&&(c[p]=[]),c[p].push(d.attributes[p]),m++}if(m!==o.size)throw new Error("StaticGeometryGenerator: Make sure all geometries have the same number of attributes.");if(i){let p;if(n)p=d.index.count;else if(d.attributes.position!==void 0)p=d.attributes.position.count;else throw new Error("StaticGeometryGenerator: The geometry must have either an index or a position attribute");t.addGroup(l,p,h),l+=p}}if(n){let h=!1;if(!t.index){let d=0;for(let m=0;m<r.length;++m)d+=r[m].index.count;t.setIndex(new A.BufferAttribute(new Uint32Array(d),1,!1)),h=!0}if(s||h){const d=t.index;let m=0,p=0;for(let b=0;b<r.length;++b){const T=r[b],g=T.index;if(a[b]!==!0)for(let v=0;v<g.count;++v)d.setX(m,g.getX(v)+p),m++;p+=T.attributes.position.count}}}for(const h in c){const d=c[h];if(!(h in t.attributes)){let b=0;for(const T in d)b+=d[T].count;t.setAttribute(h,oi(c[h][0],b))}const m=t.attributes[h];let p=0;for(let b=0,T=d.length;b<T;b++){const g=d[b];a[b]!==!0&&Yc(g,m,p),p+=g.count}}return t}function Ef(r,e){if(r===null||e===null)return r===e;if(r.length!==e.length)return!1;for(let t=0,n=r.length;t<n;t++)if(r[t]!==e[t])return!1;return!0}function kf(r){const{index:e,attributes:t}=r;if(e)for(let n=0,i=e.count;n<i;n+=3){const s=e.getX(n),a=e.getX(n+2);e.setX(n,a),e.setX(n+2,s)}else for(const n in t){const i=t[n],s=i.itemSize;for(let a=0,o=i.count;a<o;a+=3)for(let c=0;c<s;c++){const l=i.getComponent(a,c),h=i.getComponent(a+2,c);i.setComponent(a,c,h),i.setComponent(a+2,c,l)}}return r}class Rf{constructor(e){this.matrixWorld=new A.Matrix4,this.geometryHash=null,this.boneMatrices=null,this.primitiveCount=-1,this.mesh=e,this.update()}update(){const e=this.mesh,t=e.geometry,n=e.skeleton,i=(t.index?t.index.count:t.attributes.position.count)/3;if(this.matrixWorld.copy(e.matrixWorld),this.geometryHash=t.attributes.position.version,this.primitiveCount=i,n){n.boneTexture||n.computeBoneTexture(),n.update();const s=n.boneMatrices;!this.boneMatrices||this.boneMatrices.length!==s.length?this.boneMatrices=s.slice():this.boneMatrices.set(s)}else this.boneMatrices=null}didChange(){const e=this.mesh,t=e.geometry,n=(t.index?t.index.count:t.attributes.position.count)/3;return!(this.matrixWorld.equals(e.matrixWorld)&&this.geometryHash===t.attributes.position.version&&Ef(e.skeleton&&e.skeleton.boneMatrices||null,this.boneMatrices)&&this.primitiveCount===n)}}class Af{constructor(e){Array.isArray(e)||(e=[e]);const t=[];e.forEach(n=>{n.traverseVisible(i=>{i.isMesh&&t.push(i)})}),this.meshes=t,this.useGroups=!0,this.applyWorldTransforms=!0,this.attributes=["position","normal","color","tangent","uv","uv2"],this._intermediateGeometry=new Array(t.length).fill().map(()=>new A.BufferGeometry),this._diffMap=new WeakMap}getMaterials(){const e=[];return this.meshes.forEach(t=>{Array.isArray(t.material)?e.push(...t.material):e.push(t.material)}),e}generate(e=new A.BufferGeometry){let t=[];const{meshes:n,useGroups:i,_intermediateGeometry:s,_diffMap:a}=this;for(let o=0,c=n.length;o<c;o++){const l=n[o],h=s[o],d=a.get(l);!d||d.didChange(l)?(this._convertToStaticGeometry(l,h),t.push(!1),d?d.update():a.set(l,new Rf(l))):t.push(!0)}if(s.length===0){e.setIndex(null);const o=e.attributes;for(const c in o)e.deleteAttribute(c);for(const c in this.attributes)e.setAttribute(this.attributes[c],new A.BufferAttribute(new Float32Array(0),4,!1))}else Pf(s,{useGroups:i,skipAttributes:t},e);for(const o in e.attributes)e.attributes[o].needsUpdate=!0;return e}_convertToStaticGeometry(e,t=new A.BufferGeometry){const n=e.geometry,i=this.applyWorldTransforms,s=this.attributes.includes("normal"),a=this.attributes.includes("tangent"),o=n.attributes,c=t.attributes;!t.index&&n.index&&(t.index=n.index.clone()),c.position||t.setAttribute("position",oi(o.position)),s&&!c.normal&&o.normal&&t.setAttribute("normal",oi(o.normal)),a&&!c.tangent&&o.tangent&&t.setAttribute("tangent",oi(o.tangent)),ni(n.index,t.index),ni(o.position,c.position),s&&ni(o.normal,c.normal),a&&ni(o.tangent,c.tangent);const l=o.position,h=s?o.normal:null,d=a?o.tangent:null,m=n.morphAttributes.position,p=n.morphAttributes.normal,b=n.morphAttributes.tangent,T=n.morphTargetsRelative,g=e.morphTargetInfluences,v=new A.Matrix3;v.getNormalMatrix(e.matrixWorld),n.index&&t.index.array.set(n.index.array);for(let x=0,_=o.position.count;x<_;x++)dn.fromBufferAttribute(l,x),h&&pn.fromBufferAttribute(h,x),d&&(Da.fromBufferAttribute(d,x),mn.fromBufferAttribute(d,x)),g&&(m&&Os(m,g,T,x,dn),p&&Os(p,g,T,x,pn),b&&Os(b,g,T,x,mn)),e.isSkinnedMesh&&(e.applyBoneTransform(x,dn),h&&Ja(e,x,pn),d&&Ja(e,x,mn)),i&&dn.applyMatrix4(e.matrixWorld),c.position.setXYZ(x,dn.x,dn.y,dn.z),h&&(i&&pn.applyNormalMatrix(v),c.normal.setXYZ(x,pn.x,pn.y,pn.z)),d&&(i&&mn.transformDirection(e.matrixWorld),c.tangent.setXYZW(x,mn.x,mn.y,mn.z,Da.w));for(const x in this.attributes){const _=this.attributes[x];_==="position"||_==="tangent"||_==="normal"||!(_ in o)||(c[_]||t.setAttribute(_,oi(o[_])),ni(o[_],c[_]),Yc(o[_],c[_]))}return e.matrixWorld.determinant()<0&&kf(t),t}}const Of=Object.freeze(Object.defineProperty({__proto__:null,AVERAGE:Vc,BVH:Hc,CENTER:fo,CONTAINED:Ws,ExtendedTriangle:gt,GeometryBVH:Xc,MeshBVH:Vn,OrientedBox:qe,SAH:Jc,SKIP_GENERATION:Gr,StaticGeometryGenerator:Af,acceleratedRaycast:Tf,computeBoundsTree:Cf,generateIndirectBuffer:qc},Symbol.toStringTag,{value:"Module"}));class zf{constructor(e){this.name="WorkerBase",this.running=!1,this.worker=e,this.worker.onerror=t=>{throw t.message?new Error(`${this.name}: Could not create Web Worker with error "${t.message}"`):new Error(`${this.name}: Could not create Web Worker.`)}}runTask(){}generate(...e){if(this.running)throw new Error("GenerateMeshBVHWorker: Already running job.");if(this.worker===null)throw new Error("GenerateMeshBVHWorker: Worker has been disposed.");this.running=!0;const t=this.runTask(this.worker,...e);return t.finally(()=>{this.running=!1}),t}dispose(){this.worker.terminate(),this.worker=null}}const mt={node:"node",material:"material",camera:"camera",light:"light"},Qt="KHR_animation_pointer",If={CUBICSPLINE:void 0,LINEAR:A.InterpolateLinear,STEP:A.InterpolateDiscrete};class Bf{constructor(e){this.name=Qt,this.parser=e,this.animationPointerResolver=null}setAnimationPointerResolver(e){return this.animationPointerResolver=e,this}loadAnimationTargetFromChannel(e){const t=e.target,n=t.node!==void 0?t.node:t.id;return this.parser.getDependency("node",n)}loadAnimationTargetFromChannelWithAnimationPointer(e){Uf();const t=e.target,n=t.extensions&&t.extensions[Qt]&&t.path&&t.path==="pointer";if(!n)return null;let i,s=mt.node,a;if(n){const c=t.extensions[Qt];let l=c.pointer;if(!l){console.warn("Invalid path",c,t);return}if(l.startsWith("/materials/")?s=mt.material:l.startsWith("/extensions/KHR_lights_punctual/lights/")?s=mt.light:l.startsWith("/cameras/")&&(s=mt.camera),a=this._tryResolveTargetId(l,s),a===null||isNaN(a)){console.warn("Failed resolving animation node id: "+a,l);return}switch(s){case mt.material:const h=("/materials/"+a.toString()+"/").length,d=l.substring(0,h);switch(i=l.substring(h),i){case"pbrMetallicRoughness/baseColorFactor":i="color";break;case"pbrMetallicRoughness/roughnessFactor":i="roughness";break;case"pbrMetallicRoughness/metallicFactor":i="metalness";break;case"emissiveFactor":i="emissive";break;case"alphaCutoff":i="alphaTest";break;case"occlusionTexture/strength":i="aoMapIntensity";break;case"normalTexture/scale":i="normalScale";break;case"pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/scale":i="map/repeat";break;case"pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/offset":i="map/offset";break;case"emissiveTexture/extensions/KHR_texture_transform/scale":i="emissiveMap/repeat";break;case"emissiveTexture/extensions/KHR_texture_transform/offset":i="emissiveMap/offset";break;case"extensions/KHR_materials_emissive_strength/emissiveStrength":i="emissiveIntensity";break;case"extensions/KHR_materials_transmission/transmissionFactor":i="transmission";break;case"extensions/KHR_materials_ior/ior":i="ior";break;case"extensions/KHR_materials_volume/thicknessFactor":i="thickness";break;case"extensions/KHR_materials_volume/attenuationColor":i="attenuationColor";break;case"extensions/KHR_materials_volume/attenuationDistance":i="attenuationDistance";break;case"extensions/KHR_materials_iridescence/iridescenceFactor":i="iridescence";break;case"extensions/KHR_materials_iridescence/iridescenceIor":i="iridescenceIOR";break;case"extensions/KHR_materials_iridescence/iridescenceThicknessMinimum":i="iridescenceThicknessRange[0]";break;case"extensions/KHR_materials_iridescence/iridescenceThicknessMaximum":i="iridescenceThicknessRange[1]";break;case"extensions/KHR_materials_clearcoat/clearcoatFactor":i="clearcoat";break;case"extensions/KHR_materials_clearcoat/clearcoatRoughnessFactor":i="clearcoatRoughness";break;case"extensions/KHR_materials_sheen/sheenColorFactor":i="sheenColor";break;case"extensions/KHR_materials_sheen/sheenRoughnessFactor":i="sheenRoughness";break;case"extensions/KHR_materials_specular/specularFactor":i="specularIntensity";break;case"extensions/KHR_materials_specular/specularColorFactor":i="specularColor";break}l=d+i;break;case mt.node:const m=("/nodes/"+a.toString()+"/").length,p=l.substring(0,m);if(i=l.substring(m),i.startsWith("weights/")){const v=i.substring(8);/^\d+$/.test(v)?i="morphTargetInfluences["+v+"]":console.warn(Qt+": invalid weight index",i,l)}else switch(i){case"translation":i="position";break;case"rotation":i="quaternion";break;case"scale":i="scale";break;case"weights":i="morphTargetInfluences";break;case"extensions/KHR_node_visibility/visible":i="visible";break}l=p+i;break;case mt.light:const b=("/extensions/KHR_lights_punctual/lights/"+a.toString()+"/").length;switch(i=l.substring(b),i){case"color":break;case"intensity":break;case"spot/innerConeAngle":i="penumbra";break;case"spot/outerConeAngle":i="angle";break;case"range":i="distance";break}l="/lights/"+a.toString()+"/"+i;break;case mt.camera:const T=("/cameras/"+a.toString()+"/").length,g=l.substring(0,T);switch(i=l.substring(T),i){case"perspective/yfov":i="fov";break;case"perspective/znear":case"orthographic/znear":i="near";break;case"perspective/zfar":case"orthographic/zfar":i="far";break;case"perspective/aspect":i="aspect";break;case"orthographic/xmag":i="zoom";break;case"orthographic/ymag":i="zoom";break}l=g+i;break}this.animationPointerResolver?.resolvePath&&(l=this.animationPointerResolver.resolvePath(l)),t.extensions[Qt].pointer=l}if(a==null||isNaN(a)){console.warn("Failed resolving animation node id: "+a,t);return}let o;return s===mt.node?o=this.parser.getDependency("node",a):s===mt.material?o=this.parser.getDependency("material",a):s===mt.light?o=this.parser.getDependency("light",a):s===mt.camera?o=this.parser.getDependency("camera",a):console.error("Unhandled type",s),o}createAnimationTracksWithAnimationPointer(e,t,n,i,s){if(!(s.extensions&&s.extensions[Qt]&&s.path&&s.path==="pointer"))return null;let o=s.extensions[Qt].pointer;if(!o)return null;const c=[];o=o.replaceAll("/",".");const l=o.split(".");var d=e.name!==void 0&&e.name!==null?e.name:e.uuid;if(l[2]=d,l[3]?.startsWith("morphTargetInfluences")){const b=l[3];if(e.type==="Group"){for(const T of e.children)T instanceof A.SkinnedMesh&&T.morphTargetInfluences&&(l[3]=T.name,l[4]=b,p(this.parser));return c}}p(this.parser);function m(b,T){try{const g=T.split(".").filter(Boolean),x=g[g.length-1].replace(/\[.*\]$/,"");return x in b?typeof b[x]=="boolean":!1}catch{return!1}}function p(b){o=l.join(".");let T,g=!1;switch(n.itemSize){case 1:Object.prototype.toString.call(n.array)==="[object Uint8Array]"&&m(e,o)?(T=A.BooleanKeyframeTrack,g=!0):T=A.NumberKeyframeTrack;break;case 2:case 3:T=A.VectorKeyframeTrack;break;case 4:o.endsWith(".quaternion")?T=A.QuaternionKeyframeTrack:T=A.ColorKeyframeTrack;break}if(!T){console.warn("Unsupported output accessor format",n);return}const v=i.interpolation!==void 0?If[i.interpolation]:A.InterpolateLinear;let x=b._getArrayFromAccessor(n);o.endsWith(".fov")&&(x=x.map(M=>M/Math.PI*180)),g&&(x=x.map(M=>M>0));const _=new T(o,t.array,x,v);if(v==="CUBICSPLINE"&&b._createCubicSplineTrackInterpolant(_),c.push(_),o&&n.itemSize===4&&o.startsWith(".materials.")&&o.endsWith(".color")){const M=new Float32Array(x.length/4);for(let P=0,E=x.length/4;P<E;P+=1)M[P]=x[P*4+3];const C=new T(o.replace(".color",".opacity"),t.array,M,v);v==="CUBICSPLINE"&&b._createCubicSplineTrackInterpolant(_),c.push(C)}}return c}_tryResolveTargetId(e,t){let n="";return t==="node"?n=e.substring(7):t==="material"?n=e.substring(11):t==="light"?n=e.substring(39):t==="camera"&&(n=e.substring(9)),n=n.substring(0,n.indexOf("/")),Number.parseInt(n)}loadAnimation(e){const t=this,n=this.parser.json,i=this.parser,s=n.animations[e],a=s.name?s.name:"animation_"+e,o=[],c=[],l=[],h=[],d=[];for(let m=0,p=s.channels.length;m<p;m++){const b=s.channels[m],T=s.samplers[b.sampler],g=b.target,v=s.parameters!==void 0?s.parameters[T.input]:T.input,x=s.parameters!==void 0?s.parameters[T.output]:T.output;let _=t.loadAnimationTargetFromChannelWithAnimationPointer(b);_||(_=t.loadAnimationTargetFromChannel(b)),o.push(_),c.push(i.getDependency("accessor",v)),l.push(i.getDependency("accessor",x)),h.push(T),d.push(g)}return Promise.all([Promise.all(o),Promise.all(c),Promise.all(l),Promise.all(h),Promise.all(d)]).then(function(m){const p=m[0],b=m[1],T=m[2],g=m[3],v=m[4],x=[];for(let _=0,M=p.length;_<M;_++){const C=p[_],P=b[_],E=T[_],z=g[_],I=v[_];if(C===void 0)continue;C.updateMatrix&&(C.updateMatrix(),C.matrixAutoUpdate=!0);let R=t.createAnimationTracksWithAnimationPointer(C,P,E,z,I);if(R||(R=i._createAnimationTracks(C,P,E,z,I)),R)for(let N=0;N<R.length;N++)x.push(R[N])}return new A.AnimationClip(a,void 0,x)})}}let ja=!1,Nf=null;function Uf(){if(ja)return;ja=!0;const r=Nf||=A.PropertyBinding.findNode;A.PropertyBinding.findNode=function(e,t){if(!t)return r(e,t);if(t.startsWith(".materials.")){const n=t.substring(11).substring(t.indexOf(".")),i=n.indexOf("."),s=i<0?n:n.substring(0,i);let a=null;return e.traverse(o=>{a!==null||o.type!=="Mesh"&&o.type!=="SkinnedMesh"||o.material&&(o.material.uuid===s||o.material.name===s)&&(a=o.material,a!==null&&(n.endsWith(".map")?a=a.map:n.endsWith(".emissiveMap")&&(a=a.emissiveMap)))}),a}else if(t.startsWith(".nodes.")||t.startsWith(".lights.")||t.startsWith(".cameras.")){const n=t.split(".");let i;for(let s=1;s<n.length;s++){const a=n[s];if(a.length==36)i=e.getObjectByProperty("uuid",a);else if(i&&i[a]){const c=Number.parseInt(a);let l=a;c>=0&&(l=c),i=i[l]}else{const c=e.getObjectByName(a);c&&(i=c)}}if(!i){const s=r(e,n[2]);return s||console.warn(Qt+": Property binding not found",t,e,e.name,n),s}return i}return r(e,t)}}const Df=Object.freeze(Object.defineProperty({__proto__:null,GLTFAnimationPointerExtension:Bf},Symbol.toStringTag,{value:"Module"}));var Lf=Object.defineProperty,Ff=(r,e,t)=>e in r?Lf(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Ce=(r,e,t)=>(Ff(r,typeof e!="symbol"?e+"":e,t),t);(function(){class r{}class e extends r{constructor(f){super(),Ce(this,"value"),this.value=f}}class t extends r{constructor(f){super(),Ce(this,"value"),this.value=f}}class n extends r{constructor(f){super(),Ce(this,"value"),this.value=f}}class i extends r{constructor(f,y="unrestricted"){super(),Ce(this,"type"),Ce(this,"value"),this.value=f,this.type=y}}class s extends r{constructor(f){super(),Ce(this,"value"),this.value=f}}class a extends r{}class o extends r{constructor(f){super(),Ce(this,"value"),this.value=f}}class c extends r{}class l extends r{constructor(f){super(),Ce(this,"value"),this.value=f}}class h extends r{constructor(f,y="integer"){super(),Ce(this,"value"),Ce(this,"type"),this.value=f,this.type=y}}class d extends r{constructor(f){super(),Ce(this,"value"),this.value=f}}class m extends r{constructor(f,y,S){super(),Ce(this,"value"),Ce(this,"type"),Ce(this,"unit"),this.value=f,this.type=y,this.unit=S}}class p extends r{}class b extends r{}class T extends r{}class g extends r{}class v extends r{}class x extends r{}class _ extends r{}class M extends r{}class C extends r{}class P extends r{}class E extends r{}class z extends r{}class I{constructor(f){Ce(this,"input"),Ce(this,"index",0),this.input=f}consume(){const f=this.input.codePointAt(this.index);return f!==void 0&&(this.index+=String.fromCodePoint(f).length),f}reconsume(f){f!==void 0&&(this.index-=String.fromCodePoint(f).length)}peek(){const f=[];let y=this.index;for(let S=0;S<3&&y<this.input.length;S++){const w=this.input.codePointAt(y);f.push(w),y+=String.fromCodePoint(w).length}return f}}function R(u){return u===10}function N(u){return R(u)||u===8192||u===32}function O(u){return u>=48&&u<=57}function U(u){return O(u)||u>=65&&u<=70||u>=97&&u<=102}function F(u){return(function(f){return(function(y){return y>=65&&y<=90})(f)||(function(y){return y>=97&&y<=122})(f)})(u)||(function(f){return f>=128})(u)||u===95}function J(u){return F(u)||O(u)||u===45}function $(u){return u>=0&&u<=8||u===11||u>=14&&u<=31||u===127}function K(u,f){return u===92&&!R(f)}function W(u,f,y){return u===45?F(f)||f===45||K(f,y):!!F(u)||u===92&&K(u,f)}function me(u,f,y){return u===43||u===45?O(f)||f===46&&O(y):O(u===46?f:u)}function ne(u){const f=u.consume();if(U(f)){let y=[f];for(;U(...u.peek())&&y.length<5;)y.push(u.consume());N(...u.peek())&&u.consume();const S=parseInt(String.fromCodePoint(...y),16);return S===0||S>1114111?65533:S}return f===void 0?65533:f}function ue(u,f){const y=new s("");for(;;){const S=u.consume();if(S===f||S===void 0)return y;if(S===10)return u.reconsume(S),new a;if(S===92){const w=u.peek()[0];w===void 0||(R(w)?u.consume():y.value+=String.fromCodePoint(ne(u)))}else y.value+=String.fromCodePoint(S)}}function re(u){let f="";for(;;){const y=u.consume();if(J(y))f+=String.fromCodePoint(y);else{if(!K(...u.peek()))return u.reconsume(y),f;f+=String.fromCodePoint(ne(u))}}}function ge(u){let f=(function(y){let S="integer",w="";for([43,45].includes(y.peek()[0])&&(w+=String.fromCodePoint(y.consume()));O(...y.peek());)w+=String.fromCodePoint(y.consume());if(y.peek()[0]===46&&O(y.peek()[1]))for(w+=String.fromCodePoint(y.consume(),y.consume()),S="number";O(...y.peek());)w+=String.fromCodePoint(y.consume());return[69,101].includes(y.peek()[0])&&([45,43].includes(y.peek()[1])&&O(y.peek()[2])?(w+=String.fromCodePoint(y.consume(),y.consume(),y.consume()),S="number"):O(y.peek()[1])&&(w+=String.fromCodePoint(y.consume(),y.consume()),S="number")),{value:parseFloat(w),type:S}})(u);return W(...u.peek())?new m(f.value,f.type,re(u)):u.peek()[0]===37?(u.consume(),new d(f.value)):new h(f.value,f.type)}function be(u){for(;;){const f=u.consume();if(f===41||f===void 0)return;K(...u.peek())&&ne(u)}}function se(u){const f=re(u);if(f.match(/url/i)&&u.peek()[0]===40){for(u.consume();N(u.peek()[0])&&N(u.peek()[1]);)u.consume();return[34,39].includes(u.peek()[0])||N(u.peek()[0])&&[34,39].includes(u.peek()[1])?new t(f):(function(y){const S=new o("");for(;N(...y.peek());)y.consume();for(;;){const w=y.consume();if(w===41||w===void 0)return S;if(N(w)){for(;N(...y.peek());)y.consume();return y.peek()[0]===41||y.peek()[0]===void 0?(y.consume(),S):(be(y),new c)}if([34,39,40].includes(w)||$(w))return be(y),new c;if(w===92){if(!K(...y.peek()))return be(y),new c;S.value+=ne(y)}else S.value+=String.fromCodePoint(w)}})(u)}return u.peek()[0]===40?(u.consume(),new t(f)):new e(f)}function he(u){const f=u.consume(),y=u.peek();if(N(f)){for(;N(...u.peek());)u.consume();return new p}if(f===34)return ue(u,f);if(f===35){if(J(y[0])||K(...y)){const S=new i;return W(...y)&&(S.type="id"),S.value=re(u),S}return new l(String.fromCodePoint(f))}return f===39?ue(u,f):f===40?new C:f===41?new P:f===43?me(...y)?(u.reconsume(f),ge(u)):new l(String.fromCodePoint(f)):f===44?new x:f===45?me(...u.peek())?(u.reconsume(f),ge(u)):u.peek()[0]===45&&u.peek()[1]===62?(u.consume(),u.consume(),new T):W(...u.peek())?(u.reconsume(f),se(u)):new l(String.fromCodePoint(f)):f===46?me(...u.peek())?(u.reconsume(f),ge(u)):new l(String.fromCodePoint(f)):f===58?new g:f===59?new v:f===60?y[0]===33&&y[1]===45&&y[2]===45?(u.consume(),u.consume(),u.consume(),new b):new l(String.fromCodePoint(f)):f===64?W(...y)?new n(re(u)):new l(String.fromCodePoint(f)):f===91?new _:f===92?K(...y)?(u.reconsume(f),se(u)):new l(String.fromCodePoint(f)):f===93?new M:f===123?new E:f===125?new z:O(f)?(u.reconsume(f),ge(u)):F(f)?(u.reconsume(f),se(u)):f===void 0?void 0:new l(String.fromCodePoint(f))}const oe=new Set(["px","deg","s","hz","dppx","number","fr"]);function Xe(u){return oe.has(u.toLowerCase())}function Ve(u,f){if(["x","y"].includes(u))return u;if(!f)throw new Error("To determine the normalized axis the computedStyle of the source is required.");const y=f.writingMode=="horizontal-tb";if(u==="block")u=y?"y":"x";else{if(u!=="inline")throw new TypeError(`Invalid axis “${u}”`);u=y?"x":"y"}return u}function Je(u){const f=[];let y=0;function S(){let k=0;const B=y;for(;y<u.length;){const L=u.slice(y,y+1);if(/\s/.test(L)&&k===0)break;if(L==="(")k+=1;else if(L===")"&&(k-=1,k===0)){y++;break}y++}return u.slice(B,y)}function w(){for(;/\s/.test(u.slice(y,y+1));)y++}for(;y<u.length;){const k=u.slice(y,y+1);/\s/.test(k)?w():f.push(S())}return f}function Ye(u,f){return u.reduce(((y,S)=>(y.has(S[f])?y.get(S[f]).push(S):y.set(S[f],[S]),y)),new Map)}function xe(u,f){const y=[],S=[];for(const w of u)f(w)?y.push(w):S.push(w);return[y,S]}function ye(u,f={}){function y(S){return Array.from(S).map((w=>ye(w,f)))}if(u instanceof CSSUnitValue){if(u.unit==="percent"&&f.percentageReference){const w=u.value/100*f.percentageReference.value,k=f.percentageReference.unit;return new CSSUnitValue(w,k)}const S=u.toSum();if(S&&S.values.length===1&&(u=S.values[0]),u instanceof CSSUnitValue&&u.unit==="em"&&f.fontSize&&(u=new CSSUnitValue(u.value*f.fontSize.value,f.fontSize.unit)),u instanceof CSSKeywordValue){if(u.value==="e")return new CSSUnitValue(Math.E,"number");if(u.value==="pi")return new CSSUnitValue(Math.PI,"number")}return u}if(!u.operator)return u;switch(u.operator){case"sum":u=new CSSMathSum(...y(u.values));break;case"product":u=new CSSMathProduct(...y(u.values));break;case"negate":u=new CSSMathNegate(ye(u.value,f));break;case"clamp":u=new CSSMathClamp(ye(u.lower,f),ye(u.value,f),ye(u.upper,f));break;case"invert":u=new CSSMathInvert(ye(u.value,f));break;case"min":u=new CSSMathMin(...y(u.values));break;case"max":u=new CSSMathMax(...y(u.values))}if(u instanceof CSSMathMin||u instanceof CSSMathMax){const S=Array.from(u.values);if(S.every((w=>w instanceof CSSUnitValue&&w.unit!=="percent"&&Xe(w.unit)&&w.unit===S[0].unit))){const w=Math[u.operator].apply(Math,S.map((({value:k})=>k)));return new CSSUnitValue(w,S[0].unit)}}if(u instanceof CSSMathMin||u instanceof CSSMathMax){const S=Array.from(u.values),[w,k]=xe(S,(L=>L instanceof CSSUnitValue&&L.unit!=="percent")),B=Array.from(Ye(w,"unit").values());if(B.some((L=>L.length>0))){const L=B.map((D=>{const V=Math[u.operator].apply(Math,D.map((({value:H})=>H)));return new CSSUnitValue(V,D[0].unit)}));u=u instanceof CSSMathMin?new CSSMathMin(...L,...k):new CSSMathMax(...L,...k)}return S.length===1?S[0]:u}if(u instanceof CSSMathNegate)return u.value instanceof CSSUnitValue?new CSSUnitValue(0-u.value.value,u.value.unit):u.value instanceof CSSMathNegate?u.value.value:u;if(u instanceof CSSMathInvert)return u.value instanceof CSSMathInvert?u.value.value:u;if(u instanceof CSSMathSum){let S=function(k){const B=k.filter((L=>L instanceof CSSUnitValue));return[...k.filter((L=>!(L instanceof CSSUnitValue))),...Array.from(Ye(B,"unit").entries()).map((([L,D])=>{const V=D.reduce(((H,{value:X})=>H+X),0);return new CSSUnitValue(V,L)}))]},w=[];for(const k of u.values)k instanceof CSSMathSum?w.push(...k.values):w.push(k);return w=S(w),w.length===1?w[0]:new CSSMathSum(...w)}if(u instanceof CSSMathProduct){let S=[];for(const B of u.values)B instanceof CSSMathProduct?S.push(...B.values):S.push(B);const[w,k]=xe(S,(B=>B instanceof CSSUnitValue&&B.unit==="number"));if(w.length>1){const B=w.reduce(((L,{value:D})=>L*D),1);S=[new CSSUnitValue(B,"number"),...k]}if(S.length===2){let B,L;for(const D of S)D instanceof CSSUnitValue&&D.unit==="number"?B=D:D instanceof CSSMathSum&&[...D.values].every((V=>V instanceof CSSUnitValue))&&(L=D);if(B&&L)return new CSSMathSum(...[...L.values].map((D=>new CSSUnitValue(D.value*B.value,D.unit))))}if(S.every((B=>B instanceof CSSUnitValue&&Xe(B.unit)||B instanceof CSSMathInvert&&B.value instanceof CSSUnitValue&&Xe(B.value.unit)))){const B=new CSSMathProduct(...S).toSum();if(B&&B.values.length===1)return B.values[0]}return new CSSMathProduct(...S)}return u}const ae=null,ut=["percent","length","angle","time","frequency","resolution","flex"],ke={fontRelativeLengths:{units:new Set(["em","rem","ex","rex","cap","rcap","ch","rch","ic","ric","lh","rlh"])},viewportRelativeLengths:{units:new Set(["vw","lvw","svw","dvw","vh","lvh","svh","dvh","vi","lvi","svi","dvi","vb","lvb","svb","dvb","vmin","lvmin","svmin","dvmin","vmax","lvmax","svmax","dvmax"])},absoluteLengths:{units:new Set(["cm","mm","Q","in","pt","pc","px"]),compatible:!0,canonicalUnit:"px",ratios:{cm:96/2.54,mm:96/2.54/10,Q:96/2.54/40,in:96,pc:16,pt:96/72,px:1}},angle:{units:new Set(["deg","grad","rad","turn"]),compatible:!0,canonicalUnit:"deg",ratios:{deg:1,grad:.9,rad:180/Math.PI,turn:360}},time:{units:new Set(["s","ms"]),compatible:!0,canonicalUnit:"s",ratios:{s:1,ms:.001}},frequency:{units:new Set(["hz","khz"]),compatible:!0,canonicalUnit:"hz",ratios:{hz:1,khz:1e3}},resolution:{units:new Set(["dpi","dpcm","dppx"]),compatible:!0,canonicalUnit:"dppx",ratios:{dpi:1/96,dpcm:2.54/96,dppx:1}}},fe=new Map;for(const u of Object.values(ke))if(u.compatible)for(const f of u.units)fe.set(f,u);function it(u){return fe.get(u)}function vt(u,f){const y={...u};for(const S of Object.keys(f))y[S]?y[S]+=f[S]:y[S]=f[S];return y}function St(u){return u==="number"?{}:u==="percent"?{percent:1}:ke.absoluteLengths.units.has(u)||ke.fontRelativeLengths.units.has(u)||ke.viewportRelativeLengths.units.has(u)?{length:1}:ke.angle.units.has(u)?{angle:1}:ke.time.units.has(u)?{time:1}:ke.frequency.units.has(u)?{frequency:1}:ke.resolution.units.has(u)?{resolution:1}:u==="fr"?{flex:1}:ae}function rt(u){if(u instanceof CSSUnitValue){let{unit:f,value:y}=u;const S=it(u.unit);return S&&f!==S.canonicalUnit&&(y*=S.ratios[f],f=S.canonicalUnit),f==="number"?[[y,{}]]:[[y,{[f]:1}]]}if(u instanceof CSSMathInvert){if(!(u.value instanceof CSSUnitValue))throw new Error("Not implemented");const f=rt(u.value);if(f===ae||f.length>1)return ae;const y=f[0],S={};for(const[w,k]of Object.entries(y[1]))S[w]=-1*k;return f[0]=[1/y[0],S],f}if(u instanceof CSSMathProduct){let f=[[1,{}]];for(const y of u.values){const S=rt(y),w=[];if(S===ae)return ae;for(const k of f)for(const B of S)w.push([k[0]*B[0],vt(k[1],B[1])]);f=w}return f}throw new Error("Not implemented")}function xt(u,f){if(St(f)===ae)throw new SyntaxError("The string did not match the expected pattern.");const y=rt(u);if(!y)throw new TypeError;if(y.length>1)throw new TypeError("Sum has more than one item");const S=(function(w,k){const B=w.unit,L=w.value,D=it(B),V=it(k);return!V||D!==V?ae:new CSSUnitValue(L*V.ratios[B]/V.ratios[k],k)})(ht(y[0]),f);if(S===ae)throw new TypeError;return S}function ht(u){const[f,y]=u,S=Object.entries(y);if(S.length>1)return ae;if(S.length===0)return new CSSUnitValue(f,"number");const w=S[0];return w[1]!==1?ae:new CSSUnitValue(f,w[0])}function ft(u,...f){if(f&&f.length)throw new Error("Not implemented");const y=rt(u).map((S=>ht(S)));if(y.some((S=>S===ae)))throw new TypeError("Type error");return new CSSMathSum(...y)}function _t(u,f){if(u.percentHint&&f.percentHint&&u.percentHint!==f.percentHint)return ae;const y={...u,percentHint:u.percentHint??f.percentHint};for(const S of ut)f[S]&&(y[S]??(y[S]=0),y[S]+=f[S]);return y}class Re{constructor(f,y){Ce(this,"name"),Ce(this,"values"),this.name=f,this.values=y}}class Ze{constructor(f,y){Ce(this,"value"),Ce(this,"associatedToken"),this.value=f,this.associatedToken=y}}function ct(u){if(Array.isArray(u))return u;if(typeof u=="string")return(function(f){const y=new I(f),S=[];for(;;){const w=he(y);if(w===void 0)return S;S.push(w)}})(u);throw new TypeError("Invalid input type "+typeof u)}function Ke(u){const f=u.shift();return f instanceof E||f instanceof _||f instanceof C?(function(y,S){let w;if(S instanceof E)w=z;else if(S instanceof C)w=P;else{if(!(S instanceof _))return;w=M}const k=new Ze([],S);for(;;){const B=y.shift();if(B instanceof w||B===void 0)return k;y.unshift(B),k.value.push(Ke(y))}})(u,f):f instanceof t?(function(y,S){const w=new Re(y.value,[]);for(;;){const k=S.shift();if(k instanceof P||k===void 0)return w;S.unshift(k),w.values.push(Ke(S))}})(f,u):f}function Q(u){if(u instanceof C||u instanceof P)return 6;if(u instanceof l)switch(u.value){case"*":case"/":return 4;case"+":case"-":return 2}}function bt(u){return u[u.length-1]}function Nt(u,f,y){const S=["+","-"].includes(u.value)?"ADDITION":"MULTIPLICATION",w=f.type===S?f.values:[f],k=y.type===S?y.values:[y];return u.value==="-"?k[0]={type:"NEGATE",value:k[0]}:u.value==="/"&&(k[0]={type:"INVERT",value:k[0]}),{type:S,values:[...w,...k]}}function Tt(u){if(u.type==="ADDITION")return new CSSMathSum(...u.values.map((f=>Tt(f))));if(u.type==="MULTIPLICATION")return new CSSMathProduct(...u.values.map((f=>Tt(f))));if(u.type==="NEGATE")return new CSSMathNegate(Tt(u.value));if(u.type==="INVERT")return new CSSMathInvert(Tt(u.value));if(u instanceof Ze)return Ut(new Re("calc",u.value));if(u instanceof e){if(u.value==="e")return new CSSUnitValue(Math.E,"number");if(u.value==="pi")return new CSSUnitValue(Math.PI,"number");throw new SyntaxError("Invalid math expression")}return le(u)}function Ut(u){if(u.name==="min"||u.name==="max"){const S=u.values.filter((w=>!(w instanceof p||w instanceof x))).map((w=>ye(Ut(new Re("calc",w)))));return u.name==="min"?new CSSMathMin(...S):new CSSMathMax(...S)}if(u.name!=="calc")return null;const f=Tt((function(S){const w=[],k=[];for(;S.length;){const B=S.shift();if(B instanceof h||B instanceof m||B instanceof d||B instanceof Re||B instanceof Ze||B instanceof e)k.push(B);else if(B instanceof l&&["*","/","+","-"].includes(B.value)){for(;w.length&&!(bt(w)instanceof C)&&Q(bt(w))>Q(B);){const L=w.pop(),D=k.pop(),V=k.pop();k.push(Nt(L,V,D))}w.push(B)}else if(B instanceof C)w.push(B);else if(B instanceof P){if(!w.length)return null;for(;!(bt(w)instanceof C);){const L=w.pop(),D=k.pop(),V=k.pop();k.push(Nt(L,V,D))}if(!(bt(w)instanceof C))return null;w.pop()}else if(!(B instanceof p))return null}for(;w.length;){if(bt(w)instanceof C)return null;const B=w.pop(),L=k.pop(),D=k.pop();k.push(Nt(B,D,L))}return k[0]})([...u.values]));let y;try{y=ye(f)}catch{new CSSStyleSheet().insertRule("error",0)}return y instanceof CSSUnitValue?new CSSMathSum(y):y}function le(u){return u instanceof Re&&["calc","min","max","clamp"].includes(u.name)?Ut(u):u instanceof h&&u.value===0&&!u.unit?new CSSUnitValue(0,"px"):u instanceof h?new CSSUnitValue(u.value,"number"):u instanceof d?new CSSUnitValue(u.value,"percent"):u instanceof m?new CSSUnitValue(u.value,u.unit):void 0}function Zc(u){const f=(function(y){const S=ct(y);for(;S[0]instanceof p;)S.shift();if(S[0]===void 0)return null;const w=Ke(S);for(;S[0]instanceof p;)S.shift();return S[0]===void 0?w:null})(u);return f===null&&new CSSStyleSheet().insertRule("error",0),f instanceof h||f instanceof d||f instanceof m||f instanceof Re||new CSSStyleSheet().insertRule("error",0),f instanceof m&&St(f.unit)===null&&new CSSStyleSheet().insertRule("error",0),le(f)}(function(){let u=new WeakMap;function f(k){const B=[];for(let D=0;D<k.length;D++)B[D]=typeof(L=k[D])=="number"?new CSSUnitValue(L,"number"):L;var L;return B}class y{static parse(B){return B instanceof y?B:ye(Zc(B),{})}}class S extends y{constructor(B,L,D,V){super(),u.set(this,{values:f(B),operator:L,name:D||L,delimiter:V||", "})}get operator(){return u.get(this).operator}get values(){return u.get(this).values}toString(){const B=u.get(this);return`${B.name}(${B.values.join(B.delimiter)})`}}const w={CSSNumericValue:y,CSSMathValue:S,CSSUnitValue:class extends y{constructor(k,B){super(),u.set(this,{value:k,unit:B})}get value(){return u.get(this).value}set value(k){u.get(this).value=k}get unit(){return u.get(this).unit}to(k){return xt(this,k)}toSum(...k){return ft(this,...k)}type(){return St(u.get(this).unit)}toString(){const k=u.get(this);return`${k.value}${(function(B){switch(B){case"percent":return"%";case"number":return"";default:return B.toLowerCase()}})(k.unit)}`}},CSSKeywordValue:class{constructor(k){this.value=k}toString(){return this.value.toString()}},CSSMathSum:class extends S{constructor(k){super(arguments,"sum","calc"," + ")}},CSSMathProduct:class extends S{constructor(k){super(arguments,"product","calc"," * ")}toSum(...k){return ft(this,...k)}type(){return u.get(this).values.map((k=>k.type())).reduce(_t)}},CSSMathNegate:class extends S{constructor(k){super([arguments[0]],"negate","-")}get value(){return u.get(this).values[0]}type(){return this.value.type()}},CSSMathInvert:class extends S{constructor(k){super([1,arguments[0]],"invert","calc"," / ")}get value(){return u.get(this).values[1]}type(){return(function(k){const B={};for(const L of ut)B[L]=-1*k[L];return B})(u.get(this).values[1].type())}},CSSMathMax:class extends S{constructor(){super(arguments,"max")}},CSSMathMin:class extends S{constructor(){super(arguments,"min")}}};if(!window.CSS&&!Reflect.defineProperty(window,"CSS",{value:{}}))throw Error("Error installing CSSOM support");window.CSSUnitValue||["number","percent","em","ex","px","cm","mm","in","pt","pc","Q","vw","vh","vmin","vmax","rems","ch","deg","rad","grad","turn","ms","s","Hz","kHz","dppx","dpi","dpcm","fr"].forEach((k=>{if(!Reflect.defineProperty(CSS,k,{value:B=>new CSSUnitValue(B,k)}))throw Error(`Error installing CSS.${k}`)}));for(let[k,B]of Object.entries(w))if(!(k in window)&&!Reflect.defineProperty(window,k,{value:B}))throw Error(`Error installing CSSOM support for ${k}`)})();const vo="block";let je=new WeakMap,Dt=new WeakMap;const Wi=["entry","exit","cover","contain","entry-crossing","exit-crossing"];function So(u){return u===document.scrollingElement?document:u}function on(u){qr(u);let f=je.get(u).animations;if(f.length===0)return;let y=u.currentTime;for(let S=0;S<f.length;S++)f[S].tickAnimation(y)}function xo(u,f){if(!u)return null;const y=Dt.get(u).sourceMeasurements,S=getComputedStyle(u);let w=y.scrollTop;return Ve(f,S)==="x"&&(w=Math.abs(y.scrollLeft)),w}function Hr(u,f){const y=ye(u,f);if(y instanceof CSSUnitValue){if(y.unit==="px")return y.value;throw TypeError("Unhandled unit type "+y.unit)}throw TypeError("Unsupported value type: "+typeof u)}function qr(u){if(!(u instanceof bn))return void(function(y){const S=je.get(y);if(!S.anonymousSource)return;const w=bo(S.anonymousSource,S.anonymousTarget);_n(y,w)})(u);const f=u.subject;if(!f||getComputedStyle(f).display=="none")return void _n(u,null);_n(u,es(f))}function _o(u){return["block","inline","x","y"].includes(u)}function Xr(u){const f=getComputedStyle(u);return{scrollLeft:u.scrollLeft,scrollTop:u.scrollTop,scrollWidth:u.scrollWidth,scrollHeight:u.scrollHeight,clientWidth:u.clientWidth,clientHeight:u.clientHeight,writingMode:f.writingMode,direction:f.direction,scrollPaddingTop:f.scrollPaddingTop,scrollPaddingBottom:f.scrollPaddingBottom,scrollPaddingLeft:f.scrollPaddingLeft,scrollPaddingRight:f.scrollPaddingRight}}function Yr(u,f){if(!u||!f)return;let y=0,S=0,w=f;const k=u.offsetParent;for(;w&&w!=k;)S+=w.offsetLeft,y+=w.offsetTop,w=w.offsetParent;S-=u.offsetLeft+u.clientLeft,y-=u.offsetTop+u.clientTop;const B=getComputedStyle(f);return{top:y,left:S,offsetWidth:f.offsetWidth,offsetHeight:f.offsetHeight,fontSize:B.fontSize}}function $i(u){let f=Dt.get(u);f.sourceMeasurements=Xr(u);for(const y of f.timelineRefs){const S=y.deref();S instanceof bn&&(je.get(S).subjectMeasurements=Yr(u,S.subject))}f.updateScheduled||(setTimeout((()=>{for(const y of f.timelineRefs){const S=y.deref();S&&on(S)}f.updateScheduled=!1})),f.updateScheduled=!0)}function _n(u,f){const y=je.get(u),S=y.source;if(S!=f){if(S){const w=Dt.get(S);if(w){w.timelineRefs.delete(u);const k=Array.from(w.timelineRefs).filter((B=>B.deref()===void 0));for(const B of k)w.timelineRefs.delete(B);w.timelineRefs.size===0&&(w.disconnect(),Dt.delete(S))}}if(y.source=f,f){let w=Dt.get(f);if(!w){w={timelineRefs:new Set,sourceMeasurements:Xr(f)},Dt.set(f,w);const k=new ResizeObserver((D=>{for(const V of D)$i(y.source)}));k.observe(f);for(const D of f.children)k.observe(D);const B=new MutationObserver((D=>{for(const V of D)$i(V.target)}));B.observe(f,{attributes:!0,attributeFilter:["style","class"]});const L=()=>{w.sourceMeasurements.scrollLeft=f.scrollLeft,w.sourceMeasurements.scrollTop=f.scrollTop;for(const D of w.timelineRefs){const V=D.deref();V&&on(V)}};So(f).addEventListener("scroll",L),w.disconnect=()=>{k.disconnect(),B.disconnect(),So(f).removeEventListener("scroll",L)}}w.timelineRefs.add(new WeakRef(u))}}}function Zr(u,f){let y=je.get(u).animations;for(let S=0;S<y.length;S++)y[S].animation==f&&y.splice(S,1)}function Kr(u,f,y){let S=je.get(u).animations;for(let w=0;w<S.length;w++)if(S[w].animation==f)return;S.push({animation:f,tickAnimation:y}),queueMicrotask((()=>{on(u)}))}class Qe{constructor(f){if(je.set(this,{source:null,axis:vo,anonymousSource:f?f.anonymousSource:null,anonymousTarget:f?f.anonymousTarget:null,subject:null,inset:null,animations:[],subjectMeasurements:null}),_n(this,f&&f.source!==void 0?f.source:document.scrollingElement),f&&f.axis!==void 0&&f.axis!=vo){if(!_o(f.axis))throw TypeError("Invalid axis");je.get(this).axis=f.axis}on(this)}set source(f){_n(this,f),on(this)}get source(){return je.get(this).source}set axis(f){if(!_o(f))throw TypeError("Invalid axis");je.get(this).axis=f,on(this)}get axis(){return je.get(this).axis}get duration(){return CSS.percent(100)}get phase(){const f=this.source;if(!f)return"inactive";let y=getComputedStyle(f);return y.display=="none"?"inactive":f==document.scrollingElement||y.overflow!="visible"&&y.overflow!="clip"?"active":"inactive"}get currentTime(){const y=this.source;if(!y||!y.isConnected||this.phase=="inactive")return null;const S=getComputedStyle(y);if(S.display==="inline"||S.display==="none")return null;const w=this.axis,k=xo(y,w),B=(function(L,D){const V=Dt.get(L).sourceMeasurements,H=getComputedStyle(L).writingMode=="horizontal-tb";return D==="block"?D=H?"y":"x":D==="inline"&&(D=H?"x":"y"),D==="y"?V.scrollHeight-V.clientHeight:D==="x"?V.scrollWidth-V.clientWidth:void 0})(y,w);return B>0?CSS.percent(100*k/B):CSS.percent(100)}get __polyfill(){return!0}}function Qr(u,f){let y=u.parentElement;for(;y!=null;){if(f(y))return y;y=y.parentElement}}function bo(u,f){switch(u){case"root":return document.scrollingElement;case"nearest":return es(f);case"self":return f;default:throw new TypeError("Invalid ScrollTimeline Source Type.")}}function Kc(u){switch(getComputedStyle(u).display){case"block":case"inline-block":case"list-item":case"table":case"table-caption":case"flow-root":case"flex":case"grid":return!0}return!1}function To(u){const f=getComputedStyle(u);return f.transform!="none"||f.perspective!="none"||f.willChange=="transform"||f.willChange=="perspective"||f.filter!="none"||f.willChange=="filter"||f.backdropFilter!="none"}function Qc(u){return getComputedStyle(u).position!="static"||To(u)}function el(u){switch(getComputedStyle(u).position){case"static":case"relative":case"sticky":return Qr(u,Kc);case"absolute":return Qr(u,Qc);case"fixed":return Qr(u,To)}}function es(u){if(u&&u.isConnected){for(;u=el(u);)switch(getComputedStyle(u)["overflow-x"]){case"auto":case"scroll":case"hidden":return u==document.body&&getComputedStyle(document.scrollingElement).overflow=="visible"?document.scrollingElement:u}return document.scrollingElement}}function Gn(u,f){const y=je.get(u),S=y.subjectMeasurements,w=Dt.get(y.source).sourceMeasurements;return u.phase==="inactive"?null:u instanceof bn?ts(f,w,S,y.axis,y.inset):null}function ts(u,f,y,S,w){const k=f.direction=="rtl"||f.writingMode=="vertical-rl";let B,L,D={fontSize:y.fontSize};Ve(S,f)==="x"?(B=y.offsetWidth,L=y.left,D.scrollPadding=[f.scrollPaddingLeft,f.scrollPaddingRight],k&&(L+=f.scrollWidth-f.clientWidth,D.scrollPadding=[f.scrollPaddingRight,f.scrollPaddingLeft]),D.containerSize=f.clientWidth):(B=y.offsetHeight,L=y.top,D.scrollPadding=[f.scrollPaddingTop,f.scrollPaddingBottom],D.containerSize=f.clientHeight);const V=(function(ss,Zi){const fl={start:0,end:0};if(!ss)return fl;const[dl,pl]=[ss.start,ss.end].map(((Do,Lo)=>Do==="auto"?Zi.scrollPadding[Lo]==="auto"?0:parseFloat(Zi.scrollPadding[Lo]):Hr(Do,{percentageReference:CSS.px(Zi.containerSize),fontSize:CSS.px(parseFloat(Zi.fontSize))})));return{start:dl,end:pl}})(w,D),H=L-D.containerSize+V.end,X=L+B-V.start,Y=H+B,de=X-B,Te=Math.min(Y,de),st=Math.max(Y,de);let Mt,dt;const Uo=B>D.containerSize-V.start-V.end;switch(u){case"cover":Mt=H,dt=X;break;case"contain":Mt=Te,dt=st;break;case"entry":Mt=H,dt=Te;break;case"exit":Mt=st,dt=X;break;case"entry-crossing":Mt=H,dt=Uo?st:Te;break;case"exit-crossing":Mt=Uo?Te:st,dt=X}return{start:Mt,end:dt}}function Mo(u,f){if(u instanceof bn){const{rangeName:y,offset:S}=f;return Co(Gn(u,y),S,Gn(u,"cover"),u.subject)}if(u instanceof Qe){const{axis:y,source:S}=u,{sourceMeasurements:w}=Dt.get(S);let k;return k=Ve(y,w)==="x"?w.scrollWidth-w.clientWidth:w.scrollHeight-w.clientHeight,Hr(f,{percentageReference:CSS.px(k)})/k}unsupportedTimeline(u)}function Co(u,f,y,S){if(!u||!y)return 0;let w=getComputedStyle(S);return(Hr(f,{percentageReference:CSS.px(u.end-u.start),fontSize:CSS.px(parseFloat(w.fontSize))})+u.start-y.start)/(y.end-y.start)}let bn=class extends Qe{constructor(f){super(f);const y=je.get(this);y.subject=f&&f.subject?f.subject:void 0,f&&f.inset&&(y.inset=(function(S){if(!S)return{start:0,end:0};let w;if(w=typeof S=="string"?Je(S).map((k=>{if(k==="auto")return"auto";try{return CSSNumericValue.parse(k)}catch{throw TypeError(`Could not parse inset "${S}"`)}})):Array.isArray(S)?S:[S],w.length===0||w.length>2)throw TypeError("Invalid inset");for(const k of w){if(k==="auto")continue;const B=k.type();if(B.length!==1&&B.percent!==1)throw TypeError("Invalid inset")}return{start:w[0],end:w[1]??w[0]}})(f.inset)),y.subject&&(new ResizeObserver((()=>{$i(y.source)})).observe(y.subject),new MutationObserver((()=>{$i(y.source)})).observe(y.subject,{attributes:!0,attributeFilter:["class","style"]})),qr(this),y.subjectMeasurements=Yr(y.source,y.subject),on(this)}get source(){return qr(this),je.get(this).source}set source(f){throw new Error("Cannot set the source of a view timeline")}get subject(){return je.get(this).subject}get axis(){return je.get(this).axis}get currentTime(){const y=xo(this.source,this.axis);if(y==null)return null;const S=Gn(this,"cover");if(!S)return null;const w=(y-S.start)/(S.end-S.start);return CSS.percent(100*w)}get startOffset(){return CSS.px(Gn(this,"cover").start)}get endOffset(){return CSS.px(Gn(this,"cover").end)}};const tl=document.getAnimations,nl=window.Element.prototype.getAnimations,il=window.Element.prototype.animate,wo=window.Animation;class Tn{constructor(){this.state="pending",this.nativeResolve=this.nativeReject=null,this.promise=new Promise(((f,y)=>{this.nativeResolve=f,this.nativeReject=y}))}resolve(f){this.state="resolved",this.nativeResolve(f)}reject(f){this.state="rejected",this.promise.catch((()=>{})),this.nativeReject(f)}}function Wn(u){u.readyPromise=new Tn,requestAnimationFrame((()=>{var f;(((f=u.timeline)==null?void 0:f.currentTime)??null)!==null&&(Hi(u),u.pendingTask!=="play"||u.startTime===null&&u.holdTime===null?u.pendingTask==="pause"&&ko(u):Eo(u))}))}function Po(){return new DOMException("The user aborted a request","AbortError")}function an(u,f){if(f===null)return f;if(typeof f!="number")throw new DOMException(`Unexpected value: ${f}. Cannot convert to CssNumberish`,"InvalidStateError");const y=u.rangeDuration??100,S=Ft(u),w=S?y*f/S:0;return CSS.percent(w)}function ve(u,f){if(u.timeline){if(f===null)return f;if(f.unit==="percent"){const y=u.rangeDuration??100,S=Ft(u);return f.value*S/y}throw new DOMException("CSSNumericValue must be a percentage for progress based animations.","NotSupportedError")}{if(f==null||typeof f=="number")return f;const y=f.to("ms");if(y)return y.value;throw new DOMException("CSSNumericValue must be either a number or a time value for time based animations.","InvalidStateError")}}function Eo(u){const f=ve(u,u.timeline.currentTime);if(u.holdTime!=null)kt(u),u.animation.playbackRate==0?u.startTime=f:(u.startTime=f-u.holdTime/u.animation.playbackRate,u.holdTime=null);else if(u.startTime!==null&&u.pendingPlaybackRate!==null){const y=(f-u.startTime)*u.animation.playbackRate;kt(u);const S=u.animation.playbackRate;S==0?(u.holdTime=null,u.startTime=f):u.startTime=f-y/S}u.readyPromise&&u.readyPromise.state=="pending"&&u.readyPromise.resolve(u.proxy),Lt(u,!1,!1),Vt(u),u.pendingTask=null}function ko(u){const f=ve(u,u.timeline.currentTime);u.startTime!=null&&u.holdTime==null&&(u.holdTime=(f-u.startTime)*u.animation.playbackRate),kt(u),u.startTime=null,u.readyPromise.resolve(u.proxy),Lt(u,!1,!1),Vt(u),u.pendingTask=null}function Ro(u){if(!u.finishedPromise||u.finishedPromise.state!="pending"||u.proxy.playState!="finished")return;u.finishedPromise.resolve(u.proxy),u.animation.pause();const f=new CustomEvent("finish",{detail:{currentTime:u.proxy.currentTime,timelineTime:u.proxy.timeline.currentTime}});Object.defineProperty(f,"currentTime",{get:function(){return this.detail.currentTime}}),Object.defineProperty(f,"timelineTime",{get:function(){return this.detail.timelineTime}}),requestAnimationFrame((()=>{queueMicrotask((()=>{u.animation.dispatchEvent(f)}))}))}function Mn(u){return u.pendingPlaybackRate!==null?u.pendingPlaybackRate:u.animation.playbackRate}function kt(u){u.pendingPlaybackRate!==null&&(u.animation.playbackRate=u.pendingPlaybackRate,u.pendingPlaybackRate=null)}function Ao(u){if(!u.timeline)return null;const f=ve(u,u.timeline.currentTime);if(f===null||u.startTime===null)return null;let y=(f-u.startTime)*u.animation.playbackRate;return y==-0&&(y=0),y}function Lt(u,f,y){if(!u.timeline)return;let S=f?ve(u,u.proxy.currentTime):Ao(u);if(S&&u.startTime!=null&&!u.proxy.pending){const w=Mn(u),k=Ft(u);let B=u.previousCurrentTime;w>0&&S>=k&&u.previousCurrentTime!=null?((B===null||B<k)&&(B=k),u.holdTime=f?S:B):w<0&&S<=0?((B==null||B>0)&&(B=0),u.holdTime=f?S:B):w!=0&&(f&&u.holdTime!==null&&(u.startTime=(function(L,D){if(!L.timeline)return null;const V=ve(L,L.timeline.currentTime);return V==null?null:V-D/L.animation.playbackRate})(u,u.holdTime)),u.holdTime=null)}Vt(u),u.previousCurrentTime=ve(u,u.proxy.currentTime),u.proxy.playState=="finished"?(u.finishedPromise||(u.finishedPromise=new Tn),u.finishedPromise.state=="pending"&&(y?Ro(u):Promise.resolve().then((()=>{Ro(u)})))):(u.finishedPromise&&u.finishedPromise.state=="resolved"&&(u.finishedPromise=new Tn),u.animation.playState!="paused"&&u.animation.pause())}function Ft(u){const f=(function(S){const w=S.proxy.effect.getTiming();return S.normalizedTiming||w})(u),y=f.delay+f.endDelay+f.iterations*f.duration;return Math.max(0,y)}function Vt(u){if(u.timeline)if(u.startTime!==null){const f=u.timeline.currentTime;if(f==null)return;ns(u,(ve(u,f)-u.startTime)*u.animation.playbackRate)}else u.holdTime!==null&&ns(u,u.holdTime)}function ns(u,f){const y=u.timeline,S=u.animation.playbackRate,w=y.currentTime&&y.currentTime.value==(S<0?0:100)?S<0?.001:-.001:0;u.animation.currentTime=f+w}function is(u,f){if(!u.timeline)return;const y=u.proxy.playState=="paused"&&u.proxy.pending;let S=!1,w=ve(u,u.proxy.currentTime);Mn(u)==0&&w==null&&(u.holdTime=0),w==null&&(u.autoAlignStartTime=!0),(u.proxy.playState==="finished"||y)&&(u.holdTime=null,u.startTime=null,u.autoAlignStartTime=!0),u.holdTime&&(u.startTime=null),u.pendingTask&&(u.pendingTask=null,S=!0),(u.holdTime!==null||u.autoAlignStartTime||y||u.pendingPlaybackRate!==null)&&(u.readyPromise&&!S&&(u.readyPromise=null),Vt(u),u.readyPromise||Wn(u),u.pendingTask="play",Kr(u.timeline,u.animation,rs.bind(u.proxy)),Lt(u,!1,!1))}function rs(u){const f=q.get(this);if(!f)return;if(u==null)return void(f.proxy.playState!=="paused"&&f.animation.playState!="idle"&&f.animation.cancel());Hi(f),f.pendingTask&&requestAnimationFrame((()=>{f.pendingTask!=="play"||f.startTime===null&&f.holdTime===null?f.pendingTask==="pause"&&ko(f):Eo(f)}));const y=this.playState;if(y=="running"||y=="finished"){const S=ve(f,u);ns(f,(S-ve(f,this.startTime))*this.playbackRate),Lt(f,!1,!1)}}function Oo(u){u.specifiedTiming=null}let q=new WeakMap;window.addEventListener("pagehide",(u=>{q=new WeakMap}),!1);let zo=new WeakMap;function Hi(u){if(!u.autoAlignStartTime||!u.timeline||!u.timeline.currentTime||u.proxy.playState==="idle"||u.proxy.playState==="paused"&&u.holdTime!==null)return;const f=u.rangeDuration;let y,S;try{y=CSS.percent(100*(function(k){if(!k.animationRange)return 0;const B=k.animationRange.start==="normal"?Io(k.timeline):k.animationRange.start;return Mo(k.timeline,B)})(u))}catch(k){y=CSS.percent(0),u.animationRange.start="normal",console.warn("Exception when calculating start offset",k)}try{S=CSS.percent(100*(1-(function(k){if(!k.animationRange)return 0;const B=k.animationRange.end==="normal"?Bo(k.timeline):k.animationRange.end;return 1-Mo(k.timeline,B)})(u)))}catch(k){S=CSS.percent(100),u.animationRange.end="normal",console.warn("Exception when calculating end offset",k)}u.rangeDuration=S.value-y.value;const w=Mn(u);u.startTime=ve(u,w>=0?y:S),u.holdTime=null,u.rangeDuration!==f&&Oo(u)}function qi(u){throw new Error("Unsupported timeline class")}function Io(u){return u instanceof ViewTimeline?{rangeName:"cover",offset:CSS.percent(0)}:u instanceof Qe?CSS.percent(0):void qi()}function Bo(u){return u instanceof ViewTimeline?{rangeName:"cover",offset:CSS.percent(100)}:u instanceof Qe?CSS.percent(100):void qi()}function rl(u,f){if(!f)return{start:"normal",end:"normal"};const y={start:Io(u),end:Bo(u)};if(u instanceof ViewTimeline){const S=Je(f),w=[],k=[];if(S.forEach((B=>{if(Wi.includes(B))w.push(B);else try{k.push(CSSNumericValue.parse(B))}catch{throw TypeError(`Could not parse range "${f}"`)}})),w.length>2||k.length>2||k.length==1)throw TypeError("Invalid time range or unsupported time range format.");return w.length&&(y.start.rangeName=w[0],y.end.rangeName=w.length>1?w[1]:w[0]),k.length>1&&(y.start.offset=k[0],y.end.offset=k[1]),y}if(u instanceof Qe){const S=f.split(" ");if(S.length!=2)throw TypeError("Invalid time range or unsupported time range format.");return y.start=CSSNumericValue.parse(S[0]),y.end=CSSNumericValue.parse(S[1]),y}qi()}function Xi(u,f,y){if(!f||f==="normal")return"normal";if(u instanceof ViewTimeline){let S="cover",w=y==="start"?CSS.percent(0):CSS.percent(100);if(f instanceof Object)f.rangeName!==void 0&&(S=f.rangeName),f.offset!==void 0&&(w=f.offset);else{const k=Je(f);k.length===1?Wi.includes(k[0])?S=k[0]:w=ye(CSSNumericValue.parse(k[0]),{}):k.length===2&&(S=k[0],w=ye(CSSNumericValue.parse(k[1]),{}))}if(!Wi.includes(S))throw TypeError("Invalid range name");return{rangeName:S,offset:w}}if(u instanceof Qe)return CSSNumericValue.parse(f);qi()}class Yi{constructor(f,y,S={}){const w=y instanceof Qe,k=f instanceof wo?f:new wo(f,w?void 0:y);zo.set(k,this),q.set(this,{animation:k,timeline:w?y:void 0,playState:w?"idle":null,readyPromise:null,finishedPromise:null,startTime:null,holdTime:null,rangeDuration:null,previousCurrentTime:null,autoAlignStartTime:!1,pendingPlaybackRate:null,pendingTask:null,specifiedTiming:null,normalizedTiming:null,effect:null,animationRange:w?rl(y,S["animation-range"]):null,proxy:this})}get effect(){const f=q.get(this);return f.timeline?(f.effect||(f.effect=(function(y){const S=y.animation.effect,w=S.updateTiming,k={apply:function(V){S.getTiming();const H=V.apply(S);if(y.timeline){const X=y.duration??100;H.localTime=an(y,H.localTime),H.endTime=an(y,H.endTime),H.activeDuration=an(y,H.activeDuration);const Y=Ft(y),de=H.iterations?(Y-H.delay-H.endDelay)/H.iterations:0;H.duration=Y?CSS.percent(X*de/Y):CSS.percent(0),y.timeline.currentTime===void 0&&(H.localTime=null)}return H}},B={apply:function(V,H){if(y.specifiedTiming)return y.specifiedTiming;y.specifiedTiming=V.apply(S);let X,Y=Object.assign({},y.specifiedTiming);if(Y.duration===1/0)throw TypeError("Effect duration cannot be Infinity when used with Scroll Timelines");return(Y.duration===null||Y.duration==="auto"||y.autoDurationEffect)&&y.timeline&&(y.autoDurationEffect=!0,Y.delay=0,Y.endDelay=0,X=Y.iterations?1e5:0,Y.duration=Y.iterations?(X-Y.delay-Y.endDelay)/Y.iterations:0,Y.duration<0&&(Y.duration=0,Y.endDelay=X-Y.delay),w.apply(S,[Y])),y.normalizedTiming=Y,y.specifiedTiming}},L={apply:function(V,H,X){if(X&&X.length){if(y.timeline&&X[0]){const Y=X[0],de=Y.duration;if(de===1/0)throw TypeError("Effect duration cannot be Infinity when used with Scroll Timelines");if(Y.iterations===1/0)throw TypeError("Effect iterations cannot be Infinity when used with Scroll Timelines");de!==void 0&&de!=="auto"&&(y.autoDurationEffect=null)}y.specifiedTiming&&V.apply(S,[y.specifiedTiming]),V.apply(S,X),Oo(y)}}},D=new Proxy(S,{get:function(V,H){const X=V[H];return typeof X=="function"?X.bind(S):X},set:function(V,H,X){return V[H]=X,!0}});return D.getComputedTiming=new Proxy(S.getComputedTiming,k),D.getTiming=new Proxy(S.getTiming,B),D.updateTiming=new Proxy(S.updateTiming,L),D})(f)),f.effect):f.animation.effect}set effect(f){const y=q.get(this);y.animation.effect=f,y.effect=null,y.autoDurationEffect=null}get timeline(){const f=q.get(this);return f.timeline||f.animation.timeline}set timeline(f){const y=q.get(this),S=this.timeline;if(S==f)return;const w=this.playState,k=this.currentTime;let B,L=Ft(y);B=k===null?null:L===0?0:ve(y,k)/L;const D=S instanceof Qe,V=f instanceof Qe,H=this.pending;if(D&&Zr(y.timeline,y.animation),V)return y.timeline=f,kt(y),y.autoAlignStartTime=!0,y.startTime=null,y.holdTime=null,w!=="running"&&w!=="finished"||(y.readyPromise&&y.readyPromise.state!=="resolved"||Wn(y),y.pendingTask="play",Kr(y.timeline,y.animation,rs.bind(this))),w==="paused"&&B!==null&&(y.holdTime=B*L),H&&(y.readyPromise&&y.readyPromise.state!="resolved"||Wn(y),y.pendingTask=w=="paused"?"pause":"play"),y.startTime!==null&&(y.holdTime=null),void Lt(y,!1,!1);if(y.animation.timeline!=f)throw TypeError("Unsupported timeline: "+f);if(Zr(y.timeline,y.animation),y.timeline=null,D)switch(k!==null&&(y.animation.currentTime=B*Ft(y)),w){case"paused":y.animation.pause();break;case"running":case"finished":y.animation.play()}}get startTime(){const f=q.get(this);return f.timeline?an(f,f.startTime):f.animation.startTime}set startTime(f){const y=q.get(this);if(f=ve(y,f),!y.timeline)return void(y.animation.startTime=f);y.autoAlignStartTime=!1,ve(y,y.timeline.currentTime)==null&&y.startTime!=null&&(y.holdTime=null,Vt(y));const S=ve(y,this.currentTime);kt(y),y.startTime=f,y.startTime!==null&&y.animation.playbackRate!=0?y.holdTime=null:y.holdTime=S,y.pendingTask&&(y.pendingTask=null,y.readyPromise.resolve(this)),Lt(y,!0,!1),Vt(y)}get currentTime(){const f=q.get(this);return f.timeline?f.holdTime!=null?an(f,f.holdTime):an(f,Ao(f)):f.animation.currentTime}set currentTime(f){const y=q.get(this);y.timeline?((function(S,w){if(w==null&&S.currentTime!==null)throw new TypeError;w=ve(S,w),S.autoAlignStartTime=!1,S.holdTime!==null||S.startTime===null||S.timeline.phase==="inactive"||S.animation.playbackRate===0?S.holdTime=w:S.startTime=ve(S,S.timeline.currentTime)-w/S.animation.playbackRate,S.timeline.phase==="inactive"&&(S.startTime=null),S.previousCurrentTime=null})(y,f),y.pendingTask=="pause"&&(y.holdTime=ve(y,f),kt(y),y.startTime=null,y.pendingTask=null,y.readyPromise.resolve(this)),Lt(y,!0,!1)):y.animation.currentTime=f}get playbackRate(){return q.get(this).animation.playbackRate}set playbackRate(f){const y=q.get(this);if(!y.timeline)return void(y.animation.playbackRate=f);y.pendingPlaybackRate=null;const S=this.currentTime;y.animation.playbackRate=f,S!==null&&(this.currentTime=S)}get playState(){const f=q.get(this);if(!f.timeline)return f.animation.playState;const y=ve(f,this.currentTime);return y===null&&f.startTime===null&&f.pendingTask==null?"idle":f.pendingTask=="pause"||f.startTime===null&&f.pendingTask!="play"?"paused":y!=null&&(f.animation.playbackRate>0&&y>=Ft(f)||f.animation.playbackRate<0&&y<=0)?"finished":"running"}get rangeStart(){var f;return((f=q.get(this).animationRange)==null?void 0:f.start)??"normal"}set rangeStart(f){const y=q.get(this);if(!y.timeline)return y.animation.rangeStart=f;y.timeline instanceof Qe&&(y.animationRange.start=Xi(y.timeline,f,"start"),Hi(y),Vt(y))}get rangeEnd(){var f;return((f=q.get(this).animationRange)==null?void 0:f.end)??"normal"}set rangeEnd(f){const y=q.get(this);if(!y.timeline)return y.animation.rangeEnd=f;y.timeline instanceof Qe&&(y.animationRange.end=Xi(y.timeline,f,"end"),Hi(y),Vt(y))}get replaceState(){return q.get(this).animation.pending}get pending(){const f=q.get(this);return f.timeline?!!f.readyPromise&&f.readyPromise.state=="pending":f.animation.pending}finish(){const f=q.get(this);if(!f.timeline)return void f.animation.finish();const y=Mn(f),S=Ft(f);if(y==0)throw new DOMException("Cannot finish Animation with a playbackRate of 0.","InvalidStateError");if(y>0&&S==1/0)throw new DOMException("Cannot finish Animation with an infinite target effect end.","InvalidStateError");kt(f);const w=y<0?0:S;this.currentTime=an(f,w);const k=ve(f,f.timeline.currentTime);f.startTime===null&&k!==null&&(f.startTime=k-w/f.animation.playbackRate),f.pendingTask=="pause"&&f.startTime!==null&&(f.holdTime=null,f.pendingTask=null,f.readyPromise.resolve(this)),f.pendingTask=="play"&&f.startTime!==null&&(f.pendingTask=null,f.readyPromise.resolve(this)),Lt(f,!0,!0)}play(){const f=q.get(this);f.timeline?is(f):f.animation.play()}pause(){const f=q.get(this);f.timeline?this.playState!="paused"&&(f.animation.currentTime===null&&(f.autoAlignStartTime=!0),f.pendingTask=="play"?f.pendingTask=null:f.readyPromise=null,f.readyPromise||Wn(f),f.pendingTask="pause",Kr(f.timeline,f.animation,rs.bind(f.proxy))):f.animation.pause()}reverse(){const f=q.get(this),y=Mn(f),S=ve(f,this.currentTime),w=Ft(f)==1/0,k=y!=0&&(y<0||S>0||!w);if(!f.timeline||!k)return k&&(f.pendingPlaybackRate=-Mn(f)),void f.animation.reverse();if(f.timeline.phase=="inactive")throw new DOMException("Cannot reverse an animation with no active timeline","InvalidStateError");this.updatePlaybackRate(-y),is(f)}updatePlaybackRate(f){const y=q.get(this);if(y.pendingPlaybackRate=f,!y.timeline)return void y.animation.updatePlaybackRate(f);const S=this.playState;if(!y.readyPromise||y.readyPromise.state!="pending")switch(S){case"idle":case"paused":kt(y);break;case"finished":const w=ve(y,y.timeline.currentTime),k=w!==null?(w-y.startTime)*y.animation.playbackRate:null;y.startTime=f==0?w:w!=null&&k!=null?(w-k)/f:null,kt(y),Lt(y,!1,!1),Vt(y);break;default:is(y)}}persist(){q.get(this).animation.persist()}get id(){return q.get(this).animation.id}set id(f){q.get(this).animation.id=f}cancel(){const f=q.get(this);f.timeline?(this.playState!="idle"&&((function(y){y.pendingTask&&(y.pendingTask=null,kt(y),y.readyPromise.reject(Po()),Wn(y),y.readyPromise.resolve(y.proxy))})(f),f.finishedPromise&&f.finishedPromise.state=="pending"&&f.finishedPromise.reject(Po()),f.finishedPromise=new Tn,f.animation.cancel()),f.startTime=null,f.holdTime=null,Zr(f.timeline,f.animation)):f.animation.cancel()}get onfinish(){return q.get(this).animation.onfinish}set onfinish(f){q.get(this).animation.onfinish=f}get oncancel(){return q.get(this).animation.oncancel}set oncancel(f){q.get(this).animation.oncancel=f}get onremove(){return q.get(this).animation.onremove}set onremove(f){q.get(this).animation.onremove=f}get finished(){const f=q.get(this);return f.timeline?(f.finishedPromise||(f.finishedPromise=new Tn),f.finishedPromise.promise):f.animation.finished}get ready(){const f=q.get(this);return f.timeline?(f.readyPromise||(f.readyPromise=new Tn,f.readyPromise.resolve(this)),f.readyPromise.promise):f.animation.ready}addEventListener(f,y,S){q.get(this).animation.addEventListener(f,y,S)}removeEventListener(f,y,S){q.get(this).animation.removeEventListener(f,y,S)}dispatchEvent(f){q.get(this).animation.dispatchEvent(f)}}function sl(u,f){const y=f.timeline;y instanceof Qe&&delete f.timeline;const S=il.apply(this,[u,f]),w=new Yi(S,y);return y instanceof Qe&&(S.pause(),q.get(w).animationRange={start:Xi(y,f.rangeStart,"start"),end:Xi(y,f.rangeEnd,"end")},w.play()),w}function No(u){for(let f=0;f<u.length;++f){let y=zo.get(u[f]);y&&(u[f]=y)}return u}function ol(u){return No(nl.apply(this,[u]))}function al(u){return No(tl.apply(this,[u]))}const Ae={IDENTIFIER:/[\w\\\@_-]+/g,WHITE_SPACE:/\s*/g,TIME:/^[0-9]+(s|ms)/,SCROLL_TIMELINE:/scroll-timeline\s*:([^;}]+)/,SCROLL_TIMELINE_NAME:/scroll-timeline-name\s*:([^;}]+)/,SCROLL_TIMELINE_AXIS:/scroll-timeline-axis\s*:([^;}]+)/,VIEW_TIMELINE:/view-timeline\s*:([^;}]+)/,VIEW_TIMELINE_NAME:/view-timeline-name\s*:([^;}]+)/,VIEW_TIMELINE_AXIS:/view-timeline-axis\s*:([^;}]+)/,VIEW_TIMELINE_INSET:/view-timeline-inset\s*:([^;}]+)/,ANIMATION_TIMELINE:/animation-timeline\s*:([^;}]+)/,ANIMATION_TIME_RANGE:/animation-range\s*:([^;}]+)/,ANIMATION_NAME:/animation-name\s*:([^;}]+)/,ANIMATION:/animation\s*:([^;}]+)/,ANONYMOUS_SCROLL_TIMELINE:/scroll\(([^)]*)\)/,ANONYMOUS_VIEW_TIMELINE:/view\(([^)]*)\)/},Cn=["block","inline","x","y"],cl=["nearest","root","self"],Xt=new class{constructor(){this.cssRulesWithTimelineName=[],this.nextAnonymousTimelineNameIndex=0,this.anonymousScrollTimelineOptions=new Map,this.anonymousViewTimelineOptions=new Map,this.sourceSelectorToScrollTimeline=[],this.subjectSelectorToViewTimeline=[],this.keyframeNamesSelectors=new Map}transpileStyleSheet(u,f,y){const S={sheetSrc:u,index:0,name:y};for(;S.index<S.sheetSrc.length&&(this.eatWhitespace(S),!(S.index>=S.sheetSrc.length));){if(this.lookAhead("/*",S)){for(;this.lookAhead("/*",S);)this.eatComment(S),this.eatWhitespace(S);continue}const w=this.parseQualifiedRule(S);w&&(f?this.parseKeyframesAndSaveNameMapping(w,S):this.handleScrollTimelineProps(w,S))}return S.sheetSrc}getAnimationTimelineOptions(u,f){for(let y=this.cssRulesWithTimelineName.length-1;y>=0;y--){const S=this.cssRulesWithTimelineName[y];try{if(f.matches(S.selector)&&(!S["animation-name"]||S["animation-name"]==u))return{"animation-timeline":S["animation-timeline"],"animation-range":S["animation-range"]}}catch{}}return null}getAnonymousScrollTimelineOptions(u,f){const y=this.anonymousScrollTimelineOptions.get(u);return y?{anonymousSource:y.source,anonymousTarget:f,source:bo(y.source??"nearest",f),axis:y.axis?y.axis:"block"}:null}getScrollTimelineOptions(u,f){const y=this.getAnonymousScrollTimelineOptions(u,f);if(y)return y;for(let S=this.sourceSelectorToScrollTimeline.length-1;S>=0;S--){const w=this.sourceSelectorToScrollTimeline[S];if(w.name==u){const k=this.findPreviousSiblingOrAncestorMatchingSelector(f,w.selector);if(k)return{source:k,...w.axis?{axis:w.axis}:{}}}}return null}findPreviousSiblingOrAncestorMatchingSelector(u,f){let y=u;for(;y;){if(y.matches(f))return y;y=y.previousElementSibling||y.parentElement}return null}getAnonymousViewTimelineOptions(u,f){const y=this.anonymousViewTimelineOptions.get(u);return y?{subject:f,axis:y.axis?y.axis:"block",inset:y.inset?y.inset:"auto"}:null}getViewTimelineOptions(u,f){const y=this.getAnonymousViewTimelineOptions(u,f);if(y)return y;for(let S=this.subjectSelectorToViewTimeline.length-1;S>=0;S--){const w=this.subjectSelectorToViewTimeline[S];if(w.name==u){const k=this.findPreviousSiblingOrAncestorMatchingSelector(f,w.selector);if(k)return{subject:k,axis:w.axis,inset:w.inset}}}return null}handleScrollTimelineProps(u,f){if(u.selector.includes("@keyframes"))return;const y=u.block.contents.includes("animation-name:"),S=u.block.contents.includes("animation-timeline:"),w=u.block.contents.includes("animation:");if(this.saveSourceSelectorToScrollTimeline(u),this.saveSubjectSelectorToViewTimeline(u),!S&&!y&&!w)return;let k=[],B=[],L=!1;S&&(k=this.extractScrollTimelineNames(u.block.contents)),y&&(B=this.extractMatches(u.block.contents,Ae.ANIMATION_NAME)),S&&y||(w&&this.extractMatches(u.block.contents,Ae.ANIMATION).forEach((D=>{const V=this.extractAnimationName(D);V&&S&&B.push(V),S&&(this.hasDuration(D)||(this.hasAutoDuration(D)&&(u.block.contents=u.block.contents.replace("auto"," ")),u.block.contents=u.block.contents.replace(D," 1s "+D),L=!0))})),L&&this.replacePart(u.block.startIndex,u.block.endIndex,u.block.contents,f)),this.saveRelationInList(u,k,B)}saveSourceSelectorToScrollTimeline(u){const f=u.block.contents.includes("scroll-timeline:"),y=u.block.contents.includes("scroll-timeline-name:"),S=u.block.contents.includes("scroll-timeline-axis:");if(!f&&!y)return;let w=[];if(f){const B=this.extractMatches(u.block.contents,Ae.SCROLL_TIMELINE);for(const L of B){const D=this.split(L);let V={selector:u.selector,name:""};D.length==1?V.name=D[0]:D.length==2&&(Cn.includes(D[0])?(V.axis=D[0],V.name=D[1]):(V.axis=D[1],V.name=D[0])),w.push(V)}}if(y){const B=this.extractMatches(u.block.contents,Ae.SCROLL_TIMELINE_NAME);for(let L=0;L<B.length;L++)if(L<w.length)w[L].name=B[L];else{let D={selector:u.selector,name:B[L]};w.push(D)}}let k=[];if(S){const B=this.extractMatches(u.block.contents,Ae.SCROLL_TIMELINE_AXIS);if(k=B.filter((L=>Cn.includes(L))),k.length!=B.length)throw new Error("Invalid axis")}for(let B=0;B<w.length;B++)k.length&&(w[B].axis=k[B%w.length]);this.sourceSelectorToScrollTimeline.push(...w)}saveSubjectSelectorToViewTimeline(u){const f=u.block.contents.includes("view-timeline:"),y=u.block.contents.includes("view-timeline-name:"),S=u.block.contents.includes("view-timeline-axis:"),w=u.block.contents.includes("view-timeline-inset:");if(!f&&!y)return;let k=[];if(f){const D=this.extractMatches(u.block.contents,Ae.VIEW_TIMELINE);for(let V of D){const H=this.split(V);let X={selector:u.selector,name:"",inset:null};H.length==1?X.name=H[0]:H.length==2&&(Cn.includes(H[0])?(X.axis=H[0],X.name=H[1]):(X.axis=H[1],X.name=H[0])),k.push(X)}}if(y){const D=this.extractMatches(u.block.contents,Ae.VIEW_TIMELINE_NAME);for(let V=0;V<D.length;V++)if(V<k.length)k[V].name=D[V];else{let H={selector:u.selector,name:D[V],inset:null};k.push(H)}}let B=[],L=[];if(w&&(B=this.extractMatches(u.block.contents,Ae.VIEW_TIMELINE_INSET)),S){const D=this.extractMatches(u.block.contents,Ae.VIEW_TIMELINE_AXIS);if(L=D.filter((V=>Cn.includes(V))),L.length!=D.length)throw new Error("Invalid axis")}for(let D=0;D<k.length;D++)B.length&&(k[D].inset=B[D%k.length]),L.length&&(k[D].axis=L[D%k.length]);this.subjectSelectorToViewTimeline.push(...k)}hasDuration(u){return u.split(" ").filter((f=>{return y=f,Ae.TIME.exec(y);var y})).length>=1}hasAutoDuration(u){return u.split(" ").filter((f=>f==="auto")).length>=1}saveRelationInList(u,f,y){let S=[];u.block.contents.includes("animation-range:")&&(S=this.extractMatches(u.block.contents,Ae.ANIMATION_TIME_RANGE));const w=Math.max(f.length,y.length,S.length);for(let k=0;k<w;k++)this.cssRulesWithTimelineName.push({selector:u.selector,"animation-timeline":f[k%f.length],...y.length?{"animation-name":y[k%y.length]}:{},...S.length?{"animation-range":S[k%S.length]}:{}})}extractScrollTimelineNames(u){const f=Ae.ANIMATION_TIMELINE.exec(u)[1].trim(),y=[];return f.split(",").map((S=>S.trim())).forEach((S=>{if((function(w){return(w.startsWith("scroll")||w.startsWith("view"))&&w.includes("(")})(S)){const w=this.saveAnonymousTimelineName(S);y.push(w)}else y.push(S)})),y}saveAnonymousTimelineName(u){const f=":t"+this.nextAnonymousTimelineNameIndex++;return u.startsWith("scroll(")?this.anonymousScrollTimelineOptions.set(f,this.parseAnonymousScrollTimeline(u)):this.anonymousViewTimelineOptions.set(f,this.parseAnonymousViewTimeline(u)),f}parseAnonymousScrollTimeline(u){const f=Ae.ANONYMOUS_SCROLL_TIMELINE.exec(u);if(!f)return null;const y=f[1],S={};return y.split(" ").forEach((w=>{Cn.includes(w)?S.axis=w:cl.includes(w)&&(S.source=w)})),S}parseAnonymousViewTimeline(u){const f=Ae.ANONYMOUS_VIEW_TIMELINE.exec(u);if(!f)return null;const y=f[1],S={};return y.split(" ").forEach((w=>{Cn.includes(w)?S.axis=w:S.inset=S.inset?`${S.inset} ${w}`:w})),S}extractAnimationName(u){return this.findMatchingEntryInContainer(u,this.keyframeNamesSelectors)}findMatchingEntryInContainer(u,f){const y=u.split(" ").filter((S=>f.has(S)));return y?y[0]:null}parseIdentifier(u){Ae.IDENTIFIER.lastIndex=u.index;const f=Ae.IDENTIFIER.exec(u.sheetSrc);if(!f)throw this.parseError(u,"Expected an identifier");return u.index+=f[0].length,f[0]}parseKeyframesAndSaveNameMapping(u,f){if(u.selector.startsWith("@keyframes")){const y=this.replaceKeyframesAndGetMapping(u,f);u.selector.split(" ").forEach(((S,w)=>{w>0&&this.keyframeNamesSelectors.set(S,y)}))}}replaceKeyframesAndGetMapping(u,f){function y(D){return Wi.some((V=>D.startsWith(V)))}const S=u.block.contents,w=(function(D){let V=0,H=-1,X=-1;const Y=[];for(let de=0;de<D.length;de++)D[de]=="{"?V++:D[de]=="}"&&V--,V==1&&D[de]!="{"&&D[de]!="}"&&H==-1&&(H=de),V==2&&D[de]=="{"&&(X=de,Y.push({start:H,end:X}),H=X=-1);return Y})(S);if(w.length==0)return new Map;const k=new Map;let B=!1;const L=[];L.push(S.substring(0,w[0].start));for(let D=0;D<w.length;D++){const V=S.substring(w[D].start,w[D].end);let H=[];V.split(",").forEach((X=>{const Y=X.split(" ").map((Te=>Te.trim())).filter((Te=>Te!="")).join(" "),de=k.size;k.set(de,Y),H.push(`${de}%`),y(Y)&&(B=!0)})),L.push(H.join(",")),D==w.length-1?L.push(S.substring(w[D].end)):L.push(S.substring(w[D].end,w[D+1].start))}return B?(u.block.contents=L.join(""),this.replacePart(u.block.startIndex,u.block.endIndex,u.block.contents,f),k):new Map}parseQualifiedRule(u){const f=u.index,y=this.parseSelector(u).trim();if(y)return{selector:y,block:this.eatBlock(u),startIndex:f,endIndex:u.index}}removeEnclosingDoubleQuotes(u){let f=u[0]=='"'?1:0,y=u[u.length-1]=='"'?u.length-1:u.length;return u.substring(f,y)}assertString(u,f){if(u.sheetSrc.substr(u.index,f.length)!=f)throw this.parseError(u,`Did not find expected sequence ${f}`);u.index+=f.length}replacePart(u,f,y,S){if(S.sheetSrc=S.sheetSrc.slice(0,u)+y+S.sheetSrc.slice(f),S.index>=f){const w=S.index-f;S.index=u+y.length+w}}eatComment(u){this.assertString(u,"/*"),this.eatUntil("*/",u,!0),this.assertString(u,"*/")}eatBlock(u){const f=u.index;this.assertString(u,"{");let y=1;for(;y!=0;)this.lookAhead("/*",u)?this.eatComment(u):(u.sheetSrc[u.index]==="{"?y++:u.sheetSrc[u.index]==="}"&&y--,this.advance(u));const S=u.index;return{startIndex:f,endIndex:S,contents:u.sheetSrc.slice(f,S)}}advance(u){if(u.index++,u.index>u.sheetSrc.length)throw this.parseError(u,"Advanced beyond the end")}parseError(u,f){return Error(`(${u.name?u.name:"<anonymous file>"}): ${f}`)}eatUntil(u,f,y=!1){const S=f.index;for(;!this.lookAhead(u,f);)this.advance(f);return y&&(f.sheetSrc=f.sheetSrc.slice(0,S)+" ".repeat(f.index-S)+f.sheetSrc.slice(f.index)),f.sheetSrc.slice(S,f.index)}parseSelector(u){let f=u.index;if(this.eatUntil("{",u),f===u.index)throw Error("Empty selector");return u.sheetSrc.slice(f,u.index)}eatWhitespace(u){Ae.WHITE_SPACE.lastIndex=u.index;const f=Ae.WHITE_SPACE.exec(u.sheetSrc);f&&(u.index+=f[0].length)}lookAhead(u,f){return f.sheetSrc.substr(f.index,u.length)==u}peek(u){return u.sheetSrc[u.index]}extractMatches(u,f,y=","){return f.exec(u)[1].trim().split(y).map((S=>S.trim()))}split(u){return u.split(" ").map((f=>f.trim())).filter((f=>f!=""))}};function ll(u,f,y,S,w,k){const B=Xr(f),L=Yr(f,y);return Co(ts(u,B,L,S,w),k,ts("cover",B,L,S,w),y)}function ul(u,f,y){const S=Xt.getAnimationTimelineOptions(f,y);if(!S)return null;const w=S["animation-timeline"];if(!w)return null;let k=Xt.getScrollTimelineOptions(w,y)||Xt.getViewTimelineOptions(w,y);return k?(k.subject&&(function(B,L){const D=es(L.subject),V=L.axis||L.axis;function H(Y,de){let Te=null;for(const[st,Mt]of Y)if(st==100*de.offset){if(Mt=="from")Te=0;else if(Mt=="to")Te=100;else{const dt=Mt.split(" ");Te=dt.length==1?parseFloat(dt[0]):100*ll(dt[0],D,L.subject,V,L.inset,CSS.percent(parseFloat(dt[1])))}break}return Te}const X=Xt.keyframeNamesSelectors.get(B.animationName);if(X&&X.size){const Y=[];B.effect.getKeyframes().forEach((Te=>{const st=H(X,Te);st!==null&&st>=0&&st<=100&&(Te.offset=st/100,Y.push(Te))}));const de=Y.sort(((Te,st)=>Te.offset<st.offset?-1:Te.affset>st.offset?1:0));B.effect.setKeyframes(de)}})(u,k),{timeline:k.source?new Qe(k):new bn(k),animOptions:S}):null}function hl(){if(CSS.supports("animation-timeline: --works"))return!0;(function(){function f(S){if(S.innerHTML.trim().length===0||"aphrodite"in S.dataset)return;let w=Xt.transpileStyleSheet(S.innerHTML,!0);w=Xt.transpileStyleSheet(w,!1),S.innerHTML=w}function y(S){S.type!="text/css"&&S.rel!="stylesheet"||!S.href||new URL(S.href,document.baseURI).origin==location.origin&&fetch(S.getAttribute("href")).then((async w=>{const k=await w.text();let B=Xt.transpileStyleSheet(k,!0);if(B=Xt.transpileStyleSheet(k,!1),B!=k){const L=new Blob([B],{type:"text/css"}),D=URL.createObjectURL(L);S.setAttribute("href",D)}}))}new MutationObserver((S=>{for(const w of S)for(const k of w.addedNodes)k instanceof HTMLStyleElement&&f(k),k instanceof HTMLLinkElement&&y(k)})).observe(document.documentElement,{childList:!0,subtree:!0}),document.querySelectorAll("style").forEach((S=>f(S))),document.querySelectorAll("link").forEach((S=>y(S)))})();const u=CSS.supports;CSS.supports=f=>(f=f.replaceAll(/(animation-timeline|scroll-timeline(-(name|axis))?|view-timeline(-(name|axis|inset))?|timeline-scope)\s*:/g,"--supported-property:"),u(f)),window.addEventListener("animationstart",(f=>{f.target.getAnimations().filter((y=>y.animationName===f.animationName)).forEach((y=>{const S=ul(y,y.animationName,f.target);if(S)if(!S.timeline||y instanceof Yi)y.timeline=S.timeline;else{const w=new Yi(y,S.timeline,S.animOptions);y.pause(),w.play()}}))}))}(function(){if(!hl()){if(!Reflect.defineProperty(window,"ScrollTimeline",{value:Qe}))throw Error("Error installing ScrollTimeline polyfill: could not attach ScrollTimeline to window");if(!Reflect.defineProperty(window,"ViewTimeline",{value:bn}))throw Error("Error installing ViewTimeline polyfill: could not attach ViewTimeline to window");if(!Reflect.defineProperty(Element.prototype,"animate",{value:sl}))throw Error("Error installing ScrollTimeline polyfill: could not attach WAAPI's animate to DOM Element");if(!Reflect.defineProperty(window,"Animation",{value:Yi}))throw Error("Error installing Animation constructor.");if(!Reflect.defineProperty(Element.prototype,"getAnimations",{value:ol}))throw Error("Error installing ScrollTimeline polyfill: could not attach WAAPI's getAnimations to DOM Element");if(!Reflect.defineProperty(document,"getAnimations",{value:al}))throw Error("Error installing ScrollTimeline polyfill: could not attach WAAPI's getAnimations to document")}})()})();const Vf=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Jf=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));exports.BatchedParticleRenderer=Vu;exports.Builder=no;exports.ByteBuffer=li;exports.ConstantColor=vn;exports.ConstantValue=ee;exports.Matrix4=Et;exports.MeshBVH=Vn;exports.MotionController=Ol;exports.ParticleSystem=Ur;exports.SIZE_PREFIX_LENGTH=Ga;exports.TrailParticle=Br;exports.Vector4=at;exports.WorkerBase=zf;exports.__viteBrowserExternal=Jf;exports.bundler=Th;exports.createNoise4D=ju;exports.fetchProfile=Pl;exports.index=wh;exports.index$1=Of;exports.index$2=Df;exports.scrollTimeline=Vf;exports.v5=Cl;
1116
+ isUnifiedPlanSupported:`).concat(this.isUnifiedPlanSupported())},r})()),la={iceServers:[{urls:"stun:stun.l.google.com:19302"},{urls:["turn:eu-0.turn.peerjs.com:3478","turn:us-0.turn.peerjs.com:3478"],username:"peerjs",credential:"peerjsp"}],sdpSemantics:"unified-plan"},sh=(function(){function r(){this.CLOUD_HOST="0.peerjs.com",this.CLOUD_PORT=443,this.chunkedBrowsers={Chrome:1,chrome:1},this.chunkedMTU=16300,this.defaultConfig=la,this.browser=Hn.getBrowser(),this.browserVersion=Hn.getVersion(),this.supports=(function(){var e={browser:Hn.isBrowserSupported(),webRTC:Hn.isWebRTCSupported(),audioVideo:!1,data:!1,binaryBlob:!1,reliable:!1};if(!e.webRTC)return e;var t;try{t=new RTCPeerConnection(la),e.audioVideo=!0;var n=void 0;try{n=t.createDataChannel("_PEERJSTEST",{ordered:!0}),e.data=!0,e.reliable=!!n.ordered;try{n.binaryType="blob",e.binaryBlob=!Hn.isIOS}catch{}}catch{}finally{n&&n.close()}}catch{}finally{t&&t.close()}return e})(),this.pack=Ko.pack,this.unpack=Ko.unpack,this._dataCount=1}return r.prototype.noop=function(){},r.prototype.validateId=function(e){return!e||/^[A-Za-z0-9]+(?:[ _-][A-Za-z0-9]+)*$/.test(e)},r.prototype.chunk=function(e){for(var t=[],n=e.size,i=Math.ceil(n/te.chunkedMTU),s=0,a=0;a<n;){var o=Math.min(n,a+te.chunkedMTU),c=e.slice(a,o),l={__peerData:this._dataCount,n:s,data:c,total:i};t.push(l),a=o,s++}return this._dataCount++,t},r.prototype.blobToArrayBuffer=function(e,t){var n=new FileReader;return n.onload=function(i){i.target&&t(i.target.result)},n.readAsArrayBuffer(e),n},r.prototype.binaryStringToArrayBuffer=function(e){for(var t=new Uint8Array(e.length),n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&255;return t.buffer},r.prototype.randomToken=function(){return Math.random().toString(36).slice(2)},r.prototype.isSecure=function(){return location.protocol==="https:"},r})(),te=new sh,Bc={};Bt(Bc,"Peer",()=>Gs,r=>Gs=r);var Gi={},oh=Object.prototype.hasOwnProperty,nt="~";function Ji(){}Object.create&&(Ji.prototype=Object.create(null),new Ji().__proto__||(nt=!1));function ah(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function Nc(r,e,t,n,i){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new ah(t,n||r,i),a=nt?nt+e:e;return r._events[a]?r._events[a].fn?r._events[a]=[r._events[a],s]:r._events[a].push(s):(r._events[a]=s,r._eventsCount++),r}function Er(r,e){--r._eventsCount===0?r._events=new Ji:delete r._events[e]}function He(){this._events=new Ji,this._eventsCount=0}He.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)oh.call(t,n)&&e.push(nt?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};He.prototype.listeners=function(e){var t=nt?nt+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,s=n.length,a=new Array(s);i<s;i++)a[i]=n[i].fn;return a};He.prototype.listenerCount=function(e){var t=nt?nt+e:e,n=this._events[t];return n?n.fn?1:n.length:0};He.prototype.emit=function(e,t,n,i,s,a){var o=nt?nt+e:e;if(!this._events[o])return!1;var c=this._events[o],l=arguments.length,h,d;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,i),!0;case 5:return c.fn.call(c.context,t,n,i,s),!0;case 6:return c.fn.call(c.context,t,n,i,s,a),!0}for(d=1,h=new Array(l-1);d<l;d++)h[d-1]=arguments[d];c.fn.apply(c.context,h)}else{var m=c.length,p;for(d=0;d<m;d++)switch(c[d].once&&this.removeListener(e,c[d].fn,void 0,!0),l){case 1:c[d].fn.call(c[d].context);break;case 2:c[d].fn.call(c[d].context,t);break;case 3:c[d].fn.call(c[d].context,t,n);break;case 4:c[d].fn.call(c[d].context,t,n,i);break;default:if(!h)for(p=1,h=new Array(l-1);p<l;p++)h[p-1]=arguments[p];c[d].fn.apply(c[d].context,h)}}return!0};He.prototype.on=function(e,t,n){return Nc(this,e,t,n,!1)};He.prototype.once=function(e,t,n){return Nc(this,e,t,n,!0)};He.prototype.removeListener=function(e,t,n,i){var s=nt?nt+e:e;if(!this._events[s])return this;if(!t)return Er(this,s),this;var a=this._events[s];if(a.fn)a.fn===t&&(!i||a.once)&&(!n||a.context===n)&&Er(this,s);else{for(var o=0,c=[],l=a.length;o<l;o++)(a[o].fn!==t||i&&!a[o].once||n&&a[o].context!==n)&&c.push(a[o]);c.length?this._events[s]=c.length===1?c[0]:c:Er(this,s)}return this};He.prototype.removeAllListeners=function(e){var t;return e?(t=nt?nt+e:e,this._events[t]&&Er(this,t)):(this._events=new Ji,this._eventsCount=0),this};He.prototype.off=He.prototype.removeListener;He.prototype.addListener=He.prototype.on;He.prefixed=nt;He.EventEmitter=He;Gi=He;var j={};Bt(j,"LogLevel",()=>ot,r=>ot=r);Bt(j,"default",()=>ua,r=>ua=r);var an=function(r,e){var t=typeof Symbol=="function"&&r[Symbol.iterator];if(!t)return r;var n=t.call(r),i,s=[],a;try{for(;(e===void 0||e-- >0)&&!(i=n.next()).done;)s.push(i.value)}catch(o){a={error:o}}finally{try{i&&!i.done&&(t=n.return)&&t.call(n)}finally{if(a)throw a.error}}return s},cn=function(r,e,t){if(t||arguments.length===2)for(var n=0,i=e.length,s;n<i;n++)(s||!(n in e))&&(s||(s=Array.prototype.slice.call(e,0,n)),s[n]=e[n]);return r.concat(s||Array.prototype.slice.call(e))},ch="PeerJS: ",ot;(function(r){r[r.Disabled=0]="Disabled",r[r.Errors=1]="Errors",r[r.Warnings=2]="Warnings",r[r.All=3]="All"})(ot||(ot={}));var lh=(function(){function r(){this._logLevel=ot.Disabled}return Object.defineProperty(r.prototype,"logLevel",{get:function(){return this._logLevel},set:function(e){this._logLevel=e},enumerable:!1,configurable:!0}),r.prototype.log=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._logLevel>=ot.All&&this._print.apply(this,cn([ot.All],an(e),!1))},r.prototype.warn=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._logLevel>=ot.Warnings&&this._print.apply(this,cn([ot.Warnings],an(e),!1))},r.prototype.error=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._logLevel>=ot.Errors&&this._print.apply(this,cn([ot.Errors],an(e),!1))},r.prototype.setLogFunction=function(e){this._print=e},r.prototype._print=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var i=cn([ch],an(t),!1);for(var s in i)i[s]instanceof Error&&(i[s]="("+i[s].name+") "+i[s].message);e>=ot.All?console.log.apply(console,cn([],an(i),!1)):e>=ot.Warnings?console.warn.apply(console,cn(["WARNING"],an(i),!1)):e>=ot.Errors&&console.error.apply(console,cn(["ERROR"],an(i),!1))},r})(),ua=new lh,Uc={};Bt(Uc,"Socket",()=>ha,r=>ha=r);var Pt;(function(r){r.Data="data",r.Media="media"})(Pt||(Pt={}));var _e;(function(r){r.BrowserIncompatible="browser-incompatible",r.Disconnected="disconnected",r.InvalidID="invalid-id",r.InvalidKey="invalid-key",r.Network="network",r.PeerUnavailable="peer-unavailable",r.SslUnavailable="ssl-unavailable",r.ServerError="server-error",r.SocketError="socket-error",r.SocketClosed="socket-closed",r.UnavailableID="unavailable-id",r.WebRTC="webrtc"})(_e||(_e={}));var jt;(function(r){r.Binary="binary",r.BinaryUTF8="binary-utf8",r.JSON="json"})(jt||(jt={}));var $t;(function(r){r.Message="message",r.Disconnected="disconnected",r.Error="error",r.Close="close"})($t||($t={}));var Fe;(function(r){r.Heartbeat="HEARTBEAT",r.Candidate="CANDIDATE",r.Offer="OFFER",r.Answer="ANSWER",r.Open="OPEN",r.Error="ERROR",r.IdTaken="ID-TAKEN",r.InvalidKey="INVALID-KEY",r.Leave="LEAVE",r.Expire="EXPIRE"})(Fe||(Fe={}));var lo={};lo=JSON.parse('{"name":"peerjs","version":"1.4.7","keywords":["peerjs","webrtc","p2p","rtc"],"description":"PeerJS client","homepage":"https://peerjs.com","bugs":{"url":"https://github.com/peers/peerjs/issues"},"repository":{"type":"git","url":"https://github.com/peers/peerjs"},"license":"MIT","contributors":["Michelle Bu <michelle@michellebu.com>","afrokick <devbyru@gmail.com>","ericz <really.ez@gmail.com>","Jairo <kidandcat@gmail.com>","Jonas Gloning <34194370+jonasgloning@users.noreply.github.com>","Jairo Caro-Accino Viciana <jairo@galax.be>","Carlos Caballero <carlos.caballero.gonzalez@gmail.com>","hc <hheennrryy@gmail.com>","Muhammad Asif <capripio@gmail.com>","PrashoonB <prashoonbhattacharjee@gmail.com>","Harsh Bardhan Mishra <47351025+HarshCasper@users.noreply.github.com>","akotynski <aleksanderkotbury@gmail.com>","lmb <i@lmb.io>","Jairooo <jairocaro@msn.com>","Moritz Stückler <moritz.stueckler@gmail.com>","Simon <crydotsnakegithub@gmail.com>","Denis Lukov <denismassters@gmail.com>","Philipp Hancke <fippo@andyet.net>","Hans Oksendahl <hansoksendahl@gmail.com>","Jess <jessachandler@gmail.com>","khankuan <khankuan@gmail.com>","DUODVK <kurmanov.work@gmail.com>","XiZhao <kwang1imsa@gmail.com>","Matthias Lohr <matthias@lohr.me>","=frank tree <=frnktrb@googlemail.com>","Andre Eckardt <aeckardt@outlook.com>","Chris Cowan <agentme49@gmail.com>","Alex Chuev <alex@chuev.com>","alxnull <alxnull@e.mail.de>","Yemel Jardi <angel.jardi@gmail.com>","Ben Parnell <benjaminparnell.94@gmail.com>","Benny Lichtner <bennlich@gmail.com>","fresheneesz <bitetrudpublic@gmail.com>","bob.barstead@exaptive.com <bob.barstead@exaptive.com>","chandika <chandika@gmail.com>","emersion <contact@emersion.fr>","Christopher Van <cvan@users.noreply.github.com>","eddieherm <edhermoso@gmail.com>","Eduardo Pinho <enet4mikeenet@gmail.com>","Evandro Zanatta <ezanatta@tray.net.br>","Gardner Bickford <gardner@users.noreply.github.com>","Gian Luca <gianluca.cecchi@cynny.com>","PatrickJS <github@gdi2290.com>","jonnyf <github@jonathanfoss.co.uk>","Hizkia Felix <hizkifw@gmail.com>","Hristo Oskov <hristo.oskov@gmail.com>","Isaac Madwed <i.madwed@gmail.com>","Ilya Konanykhin <ilya.konanykhin@gmail.com>","jasonbarry <jasbarry@me.com>","Jonathan Burke <jonathan.burke.1311@googlemail.com>","Josh Hamit <josh.hamit@gmail.com>","Jordan Austin <jrax86@gmail.com>","Joel Wetzell <jwetzell@yahoo.com>","xizhao <kevin.wang@cloudera.com>","Alberto Torres <kungfoobar@gmail.com>","Jonathan Mayol <mayoljonathan@gmail.com>","Jefferson Felix <me@jsfelix.dev>","Rolf Erik Lekang <me@rolflekang.com>","Kevin Mai-Husan Chia <mhchia@users.noreply.github.com>","Pepijn de Vos <pepijndevos@gmail.com>","JooYoung <qkdlql@naver.com>","Tobias Speicher <rootcommander@gmail.com>","Steve Blaurock <sblaurock@gmail.com>","Kyrylo Shegeda <shegeda@ualberta.ca>","Diwank Singh Tomer <singh@diwank.name>","Sören Balko <Soeren.Balko@gmail.com>","Arpit Solanki <solankiarpit1997@gmail.com>","Yuki Ito <yuki@gnnk.net>","Artur Zayats <zag2art@gmail.com>"],"funding":{"type":"opencollective","url":"https://opencollective.com/peer"},"collective":{"type":"opencollective","url":"https://opencollective.com/peer"},"files":["dist/*"],"sideEffects":["lib/global.ts","lib/supports.ts"],"main":"dist/bundler.cjs","module":"dist/bundler.mjs","browser-minified":"dist/peerjs.min.js","browser-unminified":"dist/peerjs.js","types":"dist/types.d.ts","engines":{"node":">= 10"},"targets":{"types":{"source":"lib/exports.ts"},"main":{"source":"lib/exports.ts","sourceMap":{"inlineSources":true}},"module":{"source":"lib/exports.ts","includeNodeModules":["eventemitter3"],"sourceMap":{"inlineSources":true}},"browser-minified":{"context":"browser","outputFormat":"global","optimize":true,"engines":{"browsers":"cover 99%, not dead"},"source":"lib/global.ts"},"browser-unminified":{"context":"browser","outputFormat":"global","optimize":false,"engines":{"browsers":"cover 99%, not dead"},"source":"lib/global.ts"}},"scripts":{"contributors":"git-authors-cli --print=false && prettier --write package.json && git add package.json package-lock.json && git commit -m \\"chore(contributors): update and sort contributors list\\"","check":"tsc --noEmit","watch":"parcel watch","build":"rm -rf dist && parcel build","prepublishOnly":"npm run build","test":"mocha -r ts-node/register -r jsdom-global/register test/**/*.ts","format":"prettier --write .","semantic-release":"semantic-release"},"devDependencies":{"@parcel/config-default":"^2.5.0","@parcel/packager-ts":"^2.5.0","@parcel/transformer-typescript-tsc":"^2.5.0","@parcel/transformer-typescript-types":"^2.5.0","@semantic-release/changelog":"^6.0.1","@semantic-release/git":"^10.0.1","@types/chai":"^4.3.0","@types/mocha":"^9.1.0","@types/node":"^17.0.18","chai":"^4.3.6","git-authors-cli":"^1.0.40","jsdom":"^19.0.0","jsdom-global":"^3.0.2","mocha":"^9.2.0","mock-socket":"8.0.5","parcel":"^2.5.0","parcel-transformer-tsc-sourcemaps":"^1.0.2","prettier":"^2.6.2","semantic-release":"^19.0.2","standard":"^16.0.4","ts-node":"^10.5.0","typescript":"^4.5.5"},"dependencies":{"@swc/helpers":"^0.3.13","eventemitter3":"^4.0.7","peerjs-js-binarypack":"1.0.1","webrtc-adapter":"^7.7.1"}}');var uh=(function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}})(),hh=function(r,e){var t=typeof Symbol=="function"&&r[Symbol.iterator];if(!t)return r;var n=t.call(r),i,s=[],a;try{for(;(e===void 0||e-- >0)&&!(i=n.next()).done;)s.push(i.value)}catch(o){a={error:o}}finally{try{i&&!i.done&&(t=n.return)&&t.call(n)}finally{if(a)throw a.error}}return s},fh=function(r,e,t){if(t||arguments.length===2)for(var n=0,i=e.length,s;n<i;n++)(s||!(n in e))&&(s||(s=Array.prototype.slice.call(e,0,n)),s[n]=e[n]);return r.concat(s||Array.prototype.slice.call(e))},dh=function(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],n=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},ha=(function(r){uh(e,r);function e(t,n,i,s,a,o){o===void 0&&(o=5e3);var c=r.call(this)||this;c.pingInterval=o,c._disconnected=!0,c._messagesQueue=[];var l=t?"wss://":"ws://";return c._baseUrl=l+n+":"+i+s+"peerjs?key="+a,c}return e.prototype.start=function(t,n){var i=this;this._id=t;var s="".concat(this._baseUrl,"&id=").concat(t,"&token=").concat(n);this._socket||!this._disconnected||(this._socket=new WebSocket(s+"&version="+lo.version),this._disconnected=!1,this._socket.onmessage=function(a){var o;try{o=JSON.parse(a.data),j.default.log("Server message received:",o)}catch{j.default.log("Invalid server message",a.data);return}i.emit($t.Message,o)},this._socket.onclose=function(a){i._disconnected||(j.default.log("Socket closed.",a),i._cleanup(),i._disconnected=!0,i.emit($t.Disconnected))},this._socket.onopen=function(){i._disconnected||(i._sendQueuedMessages(),j.default.log("Socket open"),i._scheduleHeartbeat())})},e.prototype._scheduleHeartbeat=function(){var t=this;this._wsPingTimer=setTimeout(function(){t._sendHeartbeat()},this.pingInterval)},e.prototype._sendHeartbeat=function(){if(!this._wsOpen()){j.default.log("Cannot send heartbeat, because socket closed");return}var t=JSON.stringify({type:Fe.Heartbeat});this._socket.send(t),this._scheduleHeartbeat()},e.prototype._wsOpen=function(){return!!this._socket&&this._socket.readyState===1},e.prototype._sendQueuedMessages=function(){var t,n,i=fh([],hh(this._messagesQueue),!1);this._messagesQueue=[];try{for(var s=dh(i),a=s.next();!a.done;a=s.next()){var o=a.value;this.send(o)}}catch(c){t={error:c}}finally{try{a&&!a.done&&(n=s.return)&&n.call(s)}finally{if(t)throw t.error}}},e.prototype.send=function(t){if(!this._disconnected){if(!this._id){this._messagesQueue.push(t);return}if(!t.type){this.emit($t.Error,"Invalid message");return}if(this._wsOpen()){var n=JSON.stringify(t);this._socket.send(n)}}},e.prototype.close=function(){this._disconnected||(this._cleanup(),this._disconnected=!0)},e.prototype._cleanup=function(){this._socket&&(this._socket.onopen=this._socket.onmessage=this._socket.onclose=null,this._socket.close(),this._socket=void 0),clearTimeout(this._wsPingTimer)},e})(Gi.EventEmitter),Js={};Bt(Js,"MediaConnection",()=>pa,r=>pa=r);var uo={};Bt(uo,"Negotiator",()=>fa,r=>fa=r);var Dr=function(){return Dr=Object.assign||function(r){for(var e,t=1,n=arguments.length;t<n;t++){e=arguments[t];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=e[i])}return r},Dr.apply(this,arguments)},sr=function(r,e,t,n){function i(s){return s instanceof t?s:new t(function(a){a(s)})}return new(t||(t=Promise))(function(s,a){function o(h){try{l(n.next(h))}catch(d){a(d)}}function c(h){try{l(n.throw(h))}catch(d){a(d)}}function l(h){h.done?s(h.value):i(h.value).then(o,c)}l((n=n.apply(r,e||[])).next())})},or=function(r,e){var t={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,i,s,a;return a={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(l){return function(h){return c([l,h])}}function c(l){if(n)throw new TypeError("Generator is already executing.");for(;t;)try{if(n=1,i&&(s=l[0]&2?i.return:l[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,l[1])).done)return s;switch(i=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return t.label++,{value:l[1],done:!1};case 5:t.label++,i=l[1],l=[0];continue;case 7:l=t.ops.pop(),t.trys.pop();continue;default:if(s=t.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){t=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){t.label=l[1];break}if(l[0]===6&&t.label<s[1]){t.label=s[1],s=l;break}if(s&&t.label<s[2]){t.label=s[2],t.ops.push(l);break}s[2]&&t.ops.pop(),t.trys.pop();continue}l=e.call(r,t)}catch(h){l=[6,h],i=0}finally{n=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}},fa=(function(){function r(e){this.connection=e}return r.prototype.startConnection=function(e){var t=this._startPeerConnection();if(this.connection.peerConnection=t,this.connection.type===Pt.Media&&e._stream&&this._addTracksToConnection(e._stream,t),e.originator){if(this.connection.type===Pt.Data){var n=this.connection,i={ordered:!!e.reliable},s=t.createDataChannel(n.label,i);n.initialize(s)}this._makeOffer()}else this.handleSDP("OFFER",e.sdp)},r.prototype._startPeerConnection=function(){j.default.log("Creating RTCPeerConnection.");var e=new RTCPeerConnection(this.connection.provider.options.config);return this._setupListeners(e),e},r.prototype._setupListeners=function(e){var t=this,n=this.connection.peer,i=this.connection.connectionId,s=this.connection.type,a=this.connection.provider;j.default.log("Listening for ICE candidates."),e.onicecandidate=function(o){!o.candidate||!o.candidate.candidate||(j.default.log("Received ICE candidates for ".concat(n,":"),o.candidate),a.socket.send({type:Fe.Candidate,payload:{candidate:o.candidate,type:s,connectionId:i},dst:n}))},e.oniceconnectionstatechange=function(){switch(e.iceConnectionState){case"failed":j.default.log("iceConnectionState is failed, closing connections to "+n),t.connection.emit("error",new Error("Negotiation of connection to "+n+" failed.")),t.connection.close();break;case"closed":j.default.log("iceConnectionState is closed, closing connections to "+n),t.connection.emit("error",new Error("Connection to "+n+" closed.")),t.connection.close();break;case"disconnected":j.default.log("iceConnectionState changed to disconnected on the connection with "+n);break;case"completed":e.onicecandidate=te.noop;break}t.connection.emit("iceStateChanged",e.iceConnectionState)},j.default.log("Listening for data channel"),e.ondatachannel=function(o){j.default.log("Received data channel");var c=o.channel,l=a.getConnection(n,i);l.initialize(c)},j.default.log("Listening for remote stream"),e.ontrack=function(o){j.default.log("Received remote stream");var c=o.streams[0],l=a.getConnection(n,i);if(l.type===Pt.Media){var h=l;t._addStreamToMediaConnection(c,h)}}},r.prototype.cleanup=function(){j.default.log("Cleaning up PeerConnection to "+this.connection.peer);var e=this.connection.peerConnection;if(e){this.connection.peerConnection=null,e.onicecandidate=e.oniceconnectionstatechange=e.ondatachannel=e.ontrack=function(){};var t=e.signalingState!=="closed",n=!1;if(this.connection.type===Pt.Data){var i=this.connection,s=i.dataChannel;s&&(n=!!s.readyState&&s.readyState!=="closed")}(t||n)&&e.close()}},r.prototype._makeOffer=function(){return sr(this,void 0,Promise,function(){var e,t,n,i,s,a,o;return or(this,function(c){switch(c.label){case 0:e=this.connection.peerConnection,t=this.connection.provider,c.label=1;case 1:return c.trys.push([1,7,,8]),[4,e.createOffer(this.connection.options.constraints)];case 2:n=c.sent(),j.default.log("Created offer."),this.connection.options.sdpTransform&&typeof this.connection.options.sdpTransform=="function"&&(n.sdp=this.connection.options.sdpTransform(n.sdp)||n.sdp),c.label=3;case 3:return c.trys.push([3,5,,6]),[4,e.setLocalDescription(n)];case 4:return c.sent(),j.default.log("Set localDescription:",n,"for:".concat(this.connection.peer)),i={sdp:n,type:this.connection.type,connectionId:this.connection.connectionId,metadata:this.connection.metadata,browser:te.browser},this.connection.type===Pt.Data&&(s=this.connection,i=Dr(Dr({},i),{label:s.label,reliable:s.reliable,serialization:s.serialization})),t.socket.send({type:Fe.Offer,payload:i,dst:this.connection.peer}),[3,6];case 5:return a=c.sent(),a!="OperationError: Failed to set local offer sdp: Called in wrong state: kHaveRemoteOffer"&&(t.emitError(_e.WebRTC,a),j.default.log("Failed to setLocalDescription, ",a)),[3,6];case 6:return[3,8];case 7:return o=c.sent(),t.emitError(_e.WebRTC,o),j.default.log("Failed to createOffer, ",o),[3,8];case 8:return[2]}})})},r.prototype._makeAnswer=function(){return sr(this,void 0,Promise,function(){var e,t,n,i,s;return or(this,function(a){switch(a.label){case 0:e=this.connection.peerConnection,t=this.connection.provider,a.label=1;case 1:return a.trys.push([1,7,,8]),[4,e.createAnswer()];case 2:n=a.sent(),j.default.log("Created answer."),this.connection.options.sdpTransform&&typeof this.connection.options.sdpTransform=="function"&&(n.sdp=this.connection.options.sdpTransform(n.sdp)||n.sdp),a.label=3;case 3:return a.trys.push([3,5,,6]),[4,e.setLocalDescription(n)];case 4:return a.sent(),j.default.log("Set localDescription:",n,"for:".concat(this.connection.peer)),t.socket.send({type:Fe.Answer,payload:{sdp:n,type:this.connection.type,connectionId:this.connection.connectionId,browser:te.browser},dst:this.connection.peer}),[3,6];case 5:return i=a.sent(),t.emitError(_e.WebRTC,i),j.default.log("Failed to setLocalDescription, ",i),[3,6];case 6:return[3,8];case 7:return s=a.sent(),t.emitError(_e.WebRTC,s),j.default.log("Failed to create answer, ",s),[3,8];case 8:return[2]}})})},r.prototype.handleSDP=function(e,t){return sr(this,void 0,Promise,function(){var n,i,s,a;return or(this,function(o){switch(o.label){case 0:t=new RTCSessionDescription(t),n=this.connection.peerConnection,i=this.connection.provider,j.default.log("Setting remote description",t),s=this,o.label=1;case 1:return o.trys.push([1,5,,6]),[4,n.setRemoteDescription(t)];case 2:return o.sent(),j.default.log("Set remoteDescription:".concat(e," for:").concat(this.connection.peer)),e!=="OFFER"?[3,4]:[4,s._makeAnswer()];case 3:o.sent(),o.label=4;case 4:return[3,6];case 5:return a=o.sent(),i.emitError(_e.WebRTC,a),j.default.log("Failed to setRemoteDescription, ",a),[3,6];case 6:return[2]}})})},r.prototype.handleCandidate=function(e){return sr(this,void 0,Promise,function(){var t,n,i,s,a,o;return or(this,function(c){switch(c.label){case 0:j.default.log("handleCandidate:",e),t=e.candidate,n=e.sdpMLineIndex,i=e.sdpMid,s=this.connection.peerConnection,a=this.connection.provider,c.label=1;case 1:return c.trys.push([1,3,,4]),[4,s.addIceCandidate(new RTCIceCandidate({sdpMid:i,sdpMLineIndex:n,candidate:t}))];case 2:return c.sent(),j.default.log("Added ICE candidate for:".concat(this.connection.peer)),[3,4];case 3:return o=c.sent(),a.emitError(_e.WebRTC,o),j.default.log("Failed to handleCandidate, ",o),[3,4];case 4:return[2]}})})},r.prototype._addTracksToConnection=function(e,t){if(j.default.log("add tracks from stream ".concat(e.id," to peer connection")),!t.addTrack)return j.default.error("Your browser does't support RTCPeerConnection#addTrack. Ignored.");e.getTracks().forEach(function(n){t.addTrack(n,e)})},r.prototype._addStreamToMediaConnection=function(e,t){j.default.log("add stream ".concat(e.id," to media connection ").concat(t.connectionId)),t.addStream(e)},r})(),ho={};Bt(ho,"BaseConnection",()=>da,r=>da=r);var ph=(function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}})(),da=(function(r){ph(e,r);function e(t,n,i){var s=r.call(this)||this;return s.peer=t,s.provider=n,s.options=i,s._open=!1,s.metadata=i.metadata,s}return Object.defineProperty(e.prototype,"open",{get:function(){return this._open},enumerable:!1,configurable:!0}),e})(Gi.EventEmitter),mh=(function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}})(),Lr=function(){return Lr=Object.assign||function(r){for(var e,t=1,n=arguments.length;t<n;t++){e=arguments[t];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=e[i])}return r},Lr.apply(this,arguments)},yh=function(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],n=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},pa=(function(r){mh(e,r);function e(t,n,i){var s=r.call(this,t,n,i)||this;return s._localStream=s.options._stream,s.connectionId=s.options.connectionId||e.ID_PREFIX+te.randomToken(),s._negotiator=new uo.Negotiator(s),s._localStream&&s._negotiator.startConnection({_stream:s._localStream,originator:!0}),s}return Object.defineProperty(e.prototype,"type",{get:function(){return Pt.Media},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"localStream",{get:function(){return this._localStream},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"remoteStream",{get:function(){return this._remoteStream},enumerable:!1,configurable:!0}),e.prototype.addStream=function(t){j.default.log("Receiving stream",t),this._remoteStream=t,r.prototype.emit.call(this,"stream",t)},e.prototype.handleMessage=function(t){var n=t.type,i=t.payload;switch(t.type){case Fe.Answer:this._negotiator.handleSDP(n,i.sdp),this._open=!0;break;case Fe.Candidate:this._negotiator.handleCandidate(i.candidate);break;default:j.default.warn("Unrecognized message type:".concat(n," from peer:").concat(this.peer));break}},e.prototype.answer=function(t,n){var i,s;if(n===void 0&&(n={}),this._localStream){j.default.warn("Local stream already exists on this MediaConnection. Are you answering a call twice?");return}this._localStream=t,n&&n.sdpTransform&&(this.options.sdpTransform=n.sdpTransform),this._negotiator.startConnection(Lr(Lr({},this.options._payload),{_stream:t}));var a=this.provider._getMessages(this.connectionId);try{for(var o=yh(a),c=o.next();!c.done;c=o.next()){var l=c.value;this.handleMessage(l)}}catch(h){i={error:h}}finally{try{c&&!c.done&&(s=o.return)&&s.call(o)}finally{if(i)throw i.error}}this._open=!0},e.prototype.close=function(){this._negotiator&&(this._negotiator.cleanup(),this._negotiator=null),this._localStream=null,this._remoteStream=null,this.provider&&(this.provider._removeConnection(this),this.provider=null),this.options&&this.options._stream&&(this.options._stream=null),this.open&&(this._open=!1,r.prototype.emit.call(this,"close"))},e.ID_PREFIX="mc_",e})(ho.BaseConnection),js={};Bt(js,"DataConnection",()=>ya,r=>ya=r);var Dc={};Bt(Dc,"EncodingQueue",()=>ma,r=>ma=r);var gh=(function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}})(),ma=(function(r){gh(e,r);function e(){var t=r.call(this)||this;return t.fileReader=new FileReader,t._queue=[],t._processing=!1,t.fileReader.onload=function(n){t._processing=!1,n.target&&t.emit("done",n.target.result),t.doNextTask()},t.fileReader.onerror=function(n){j.default.error("EncodingQueue error:",n),t._processing=!1,t.destroy(),t.emit("error",n)},t}return Object.defineProperty(e.prototype,"queue",{get:function(){return this._queue},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"size",{get:function(){return this.queue.length},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"processing",{get:function(){return this._processing},enumerable:!1,configurable:!0}),e.prototype.enque=function(t){this.queue.push(t),!this.processing&&this.doNextTask()},e.prototype.destroy=function(){this.fileReader.abort(),this._queue=[]},e.prototype.doNextTask=function(){this.size!==0&&(this.processing||(this._processing=!0,this.fileReader.readAsArrayBuffer(this.queue.shift())))},e})(Gi.EventEmitter),vh=(function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}})(),Sh=function(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],n=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},ya=(function(r){vh(e,r);function e(t,n,i){var s=r.call(this,t,n,i)||this;return s.stringify=JSON.stringify,s.parse=JSON.parse,s._buffer=[],s._bufferSize=0,s._buffering=!1,s._chunkedData={},s._encodingQueue=new Dc.EncodingQueue,s.connectionId=s.options.connectionId||e.ID_PREFIX+te.randomToken(),s.label=s.options.label||s.connectionId,s.serialization=s.options.serialization||jt.Binary,s.reliable=!!s.options.reliable,s._encodingQueue.on("done",function(a){s._bufferedSend(a)}),s._encodingQueue.on("error",function(){j.default.error("DC#".concat(s.connectionId,": Error occured in encoding from blob to arraybuffer, close DC")),s.close()}),s._negotiator=new uo.Negotiator(s),s._negotiator.startConnection(s.options._payload||{originator:!0}),s}return Object.defineProperty(e.prototype,"type",{get:function(){return Pt.Data},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"dataChannel",{get:function(){return this._dc},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"bufferSize",{get:function(){return this._bufferSize},enumerable:!1,configurable:!0}),e.prototype.initialize=function(t){this._dc=t,this._configureDataChannel()},e.prototype._configureDataChannel=function(){var t=this;(!te.supports.binaryBlob||te.supports.reliable)&&(this.dataChannel.binaryType="arraybuffer"),this.dataChannel.onopen=function(){j.default.log("DC#".concat(t.connectionId," dc connection success")),t._open=!0,t.emit("open")},this.dataChannel.onmessage=function(n){j.default.log("DC#".concat(t.connectionId," dc onmessage:"),n.data),t._handleDataMessage(n)},this.dataChannel.onclose=function(){j.default.log("DC#".concat(t.connectionId," dc closed for:"),t.peer),t.close()}},e.prototype._handleDataMessage=function(t){var n=this,i=t.data,s=i.constructor,a=this.serialization===jt.Binary||this.serialization===jt.BinaryUTF8,o=i;if(a){if(s===Blob){te.blobToArrayBuffer(i,function(l){var h=te.unpack(l);n.emit("data",h)});return}else if(s===ArrayBuffer)o=te.unpack(i);else if(s===String){var c=te.binaryStringToArrayBuffer(i);o=te.unpack(c)}}else this.serialization===jt.JSON&&(o=this.parse(i));if(o.__peerData){this._handleChunk(o);return}r.prototype.emit.call(this,"data",o)},e.prototype._handleChunk=function(t){var n=t.__peerData,i=this._chunkedData[n]||{data:[],count:0,total:t.total};if(i.data[t.n]=t.data,i.count++,this._chunkedData[n]=i,i.total===i.count){delete this._chunkedData[n];var s=new Blob(i.data);this._handleDataMessage({data:s})}},e.prototype.close=function(){this._buffer=[],this._bufferSize=0,this._chunkedData={},this._negotiator&&(this._negotiator.cleanup(),this._negotiator=null),this.provider&&(this.provider._removeConnection(this),this.provider=null),this.dataChannel&&(this.dataChannel.onopen=null,this.dataChannel.onmessage=null,this.dataChannel.onclose=null,this._dc=null),this._encodingQueue&&(this._encodingQueue.destroy(),this._encodingQueue.removeAllListeners(),this._encodingQueue=null),this.open&&(this._open=!1,r.prototype.emit.call(this,"close"))},e.prototype.send=function(t,n){if(!this.open){r.prototype.emit.call(this,"error",new Error("Connection is not open. You should listen for the `open` event before sending messages."));return}if(this.serialization===jt.JSON)this._bufferedSend(this.stringify(t));else if(this.serialization===jt.Binary||this.serialization===jt.BinaryUTF8){var i=te.pack(t);if(!n&&i.size>te.chunkedMTU){this._sendChunks(i);return}te.supports.binaryBlob?this._bufferedSend(i):this._encodingQueue.enque(i)}else this._bufferedSend(t)},e.prototype._bufferedSend=function(t){(this._buffering||!this._trySend(t))&&(this._buffer.push(t),this._bufferSize=this._buffer.length)},e.prototype._trySend=function(t){var n=this;if(!this.open)return!1;if(this.dataChannel.bufferedAmount>e.MAX_BUFFERED_AMOUNT)return this._buffering=!0,setTimeout(function(){n._buffering=!1,n._tryBuffer()},50),!1;try{this.dataChannel.send(t)}catch(i){return j.default.error("DC#:".concat(this.connectionId," Error when sending:"),i),this._buffering=!0,this.close(),!1}return!0},e.prototype._tryBuffer=function(){if(this.open&&this._buffer.length!==0){var t=this._buffer[0];this._trySend(t)&&(this._buffer.shift(),this._bufferSize=this._buffer.length,this._tryBuffer())}},e.prototype._sendChunks=function(t){var n,i,s=te.chunk(t);j.default.log("DC#".concat(this.connectionId," Try to send ").concat(s.length," chunks..."));try{for(var a=Sh(s),o=a.next();!o.done;o=a.next()){var c=o.value;this.send(c,!0)}}catch(l){n={error:l}}finally{try{o&&!o.done&&(i=a.return)&&i.call(a)}finally{if(n)throw n.error}}},e.prototype.handleMessage=function(t){var n=t.payload;switch(t.type){case Fe.Answer:this._negotiator.handleSDP(t.type,n.sdp);break;case Fe.Candidate:this._negotiator.handleCandidate(n.candidate);break;default:j.default.warn("Unrecognized message type:",t.type,"from peer:",this.peer);break}},e.ID_PREFIX="dc_",e.MAX_BUFFERED_AMOUNT=8388608,e})(ho.BaseConnection),Lc={};Bt(Lc,"API",()=>Sa,r=>Sa=r);var ga=function(r,e,t,n){function i(s){return s instanceof t?s:new t(function(a){a(s)})}return new(t||(t=Promise))(function(s,a){function o(h){try{l(n.next(h))}catch(d){a(d)}}function c(h){try{l(n.throw(h))}catch(d){a(d)}}function l(h){h.done?s(h.value):i(h.value).then(o,c)}l((n=n.apply(r,e||[])).next())})},va=function(r,e){var t={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,i,s,a;return a={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(l){return function(h){return c([l,h])}}function c(l){if(n)throw new TypeError("Generator is already executing.");for(;t;)try{if(n=1,i&&(s=l[0]&2?i.return:l[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,l[1])).done)return s;switch(i=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return t.label++,{value:l[1],done:!1};case 5:t.label++,i=l[1],l=[0];continue;case 7:l=t.ops.pop(),t.trys.pop();continue;default:if(s=t.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){t=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){t.label=l[1];break}if(l[0]===6&&t.label<s[1]){t.label=s[1],s=l;break}if(s&&t.label<s[2]){t.label=s[2],t.ops.push(l);break}s[2]&&t.ops.pop(),t.trys.pop();continue}l=e.call(r,t)}catch(h){l=[6,h],i=0}finally{n=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}},Sa=(function(){function r(e){this._options=e}return r.prototype._buildRequest=function(e){var t=this._options.secure?"https":"http",n=this._options,i=n.host,s=n.port,a=n.path,o=n.key,c=new URL("".concat(t,"://").concat(i,":").concat(s).concat(a).concat(o,"/").concat(e));return c.searchParams.set("ts","".concat(Date.now()).concat(Math.random())),c.searchParams.set("version",lo.version),fetch(c.href,{referrerPolicy:this._options.referrerPolicy})},r.prototype.retrieveId=function(){return ga(this,void 0,Promise,function(){var e,t,n;return va(this,function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),[4,this._buildRequest("id")];case 1:if(e=i.sent(),e.status!==200)throw new Error("Error. Status:".concat(e.status));return[2,e.text()];case 2:throw t=i.sent(),j.default.error("Error retrieving ID",t),n="",this._options.path==="/"&&this._options.host!==te.CLOUD_HOST&&(n=" If you passed in a `path` to your self-hosted PeerServer, you'll also need to pass in that same path when creating a new Peer."),new Error("Could not get an ID from the server."+n);case 3:return[2]}})})},r.prototype.listAllPeers=function(){return ga(this,void 0,Promise,function(){var e,t,n;return va(this,function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),[4,this._buildRequest("peers")];case 1:if(e=i.sent(),e.status!==200)throw e.status===401?(t="",this._options.host===te.CLOUD_HOST?t="It looks like you're using the cloud server. You can email team@peerjs.com to enable peer listing for your API key.":t="You need to enable `allow_discovery` on your self-hosted PeerServer to use this feature.",new Error("It doesn't look like you have permission to list peers IDs. "+t)):new Error("Error. Status:".concat(e.status));return[2,e.json()];case 2:throw n=i.sent(),j.default.error("Error retrieving list peers",n),new Error("Could not get list peers from the server."+n);case 3:return[2]}})})},r})(),xh=(function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}})(),ai=function(){return ai=Object.assign||function(r){for(var e,t=1,n=arguments.length;t<n;t++){e=arguments[t];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=e[i])}return r},ai.apply(this,arguments)},qn=function(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],n=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},_h=function(r,e){var t=typeof Symbol=="function"&&r[Symbol.iterator];if(!t)return r;var n=t.call(r),i,s=[],a;try{for(;(e===void 0||e-- >0)&&!(i=n.next()).done;)s.push(i.value)}catch(o){a={error:o}}finally{try{i&&!i.done&&(t=n.return)&&t.call(n)}finally{if(a)throw a.error}}return s},Gs=(function(r){xh(e,r);function e(t,n){var i=r.call(this)||this;i._id=null,i._lastServerId=null,i._destroyed=!1,i._disconnected=!1,i._open=!1,i._connections=new Map,i._lostMessages=new Map;var s;return t&&t.constructor==Object?n=t:t&&(s=t.toString()),n=ai({debug:0,host:te.CLOUD_HOST,port:te.CLOUD_PORT,path:"/",key:e.DEFAULT_KEY,token:te.randomToken(),config:te.defaultConfig,referrerPolicy:"strict-origin-when-cross-origin"},n),i._options=n,i._options.host==="/"&&(i._options.host=window.location.hostname),i._options.path&&(i._options.path[0]!=="/"&&(i._options.path="/"+i._options.path),i._options.path[i._options.path.length-1]!=="/"&&(i._options.path+="/")),i._options.secure===void 0&&i._options.host!==te.CLOUD_HOST?i._options.secure=te.isSecure():i._options.host==te.CLOUD_HOST&&(i._options.secure=!0),i._options.logFunction&&j.default.setLogFunction(i._options.logFunction),j.default.logLevel=i._options.debug||0,i._api=new Lc.API(n),i._socket=i._createServerConnection(),!te.supports.audioVideo&&!te.supports.data?(i._delayedAbort(_e.BrowserIncompatible,"The current browser does not support WebRTC"),i):s&&!te.validateId(s)?(i._delayedAbort(_e.InvalidID,'ID "'.concat(s,'" is invalid')),i):(s?i._initialize(s):i._api.retrieveId().then(function(a){return i._initialize(a)}).catch(function(a){return i._abort(_e.ServerError,a)}),i)}return Object.defineProperty(e.prototype,"id",{get:function(){return this._id},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"options",{get:function(){return this._options},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"open",{get:function(){return this._open},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"socket",{get:function(){return this._socket},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"connections",{get:function(){var t,n,i=Object.create(null);try{for(var s=qn(this._connections),a=s.next();!a.done;a=s.next()){var o=_h(a.value,2),c=o[0],l=o[1];i[c]=l}}catch(h){t={error:h}}finally{try{a&&!a.done&&(n=s.return)&&n.call(s)}finally{if(t)throw t.error}}return i},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"destroyed",{get:function(){return this._destroyed},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"disconnected",{get:function(){return this._disconnected},enumerable:!1,configurable:!0}),e.prototype._createServerConnection=function(){var t=this,n=new Uc.Socket(this._options.secure,this._options.host,this._options.port,this._options.path,this._options.key,this._options.pingInterval);return n.on($t.Message,function(i){t._handleMessage(i)}),n.on($t.Error,function(i){t._abort(_e.SocketError,i)}),n.on($t.Disconnected,function(){t.disconnected||(t.emitError(_e.Network,"Lost connection to server."),t.disconnect())}),n.on($t.Close,function(){t.disconnected||t._abort(_e.SocketClosed,"Underlying socket is already closed.")}),n},e.prototype._initialize=function(t){this._id=t,this.socket.start(t,this._options.token)},e.prototype._handleMessage=function(t){var n,i,s=t.type,a=t.payload,o=t.src;switch(s){case Fe.Open:this._lastServerId=this.id,this._open=!0,this.emit("open",this.id);break;case Fe.Error:this._abort(_e.ServerError,a.msg);break;case Fe.IdTaken:this._abort(_e.UnavailableID,'ID "'.concat(this.id,'" is taken'));break;case Fe.InvalidKey:this._abort(_e.InvalidKey,'API KEY "'.concat(this._options.key,'" is invalid'));break;case Fe.Leave:j.default.log("Received leave message from ".concat(o)),this._cleanupPeer(o),this._connections.delete(o);break;case Fe.Expire:this.emitError(_e.PeerUnavailable,"Could not connect to peer ".concat(o));break;case Fe.Offer:var b=a.connectionId,T=this.getConnection(o,b);if(T&&(T.close(),j.default.warn("Offer received for existing Connection ID:".concat(b))),a.type===Pt.Media){var c=new Js.MediaConnection(o,this,{connectionId:b,_payload:a,metadata:a.metadata});T=c,this._addConnection(o,T),this.emit("call",c)}else if(a.type===Pt.Data){var l=new js.DataConnection(o,this,{connectionId:b,_payload:a,metadata:a.metadata,label:a.label,serialization:a.serialization,reliable:a.reliable});T=l,this._addConnection(o,T),this.emit("connection",l)}else{j.default.warn("Received malformed connection type:".concat(a.type));return}var h=this._getMessages(b);try{for(var d=qn(h),m=d.next();!m.done;m=d.next()){var p=m.value;T.handleMessage(p)}}catch(g){n={error:g}}finally{try{m&&!m.done&&(i=d.return)&&i.call(d)}finally{if(n)throw n.error}}break;default:if(!a){j.default.warn("You received a malformed message from ".concat(o," of type ").concat(s));return}var b=a.connectionId,T=this.getConnection(o,b);T&&T.peerConnection?T.handleMessage(t):b?this._storeMessage(b,t):j.default.warn("You received an unrecognized message:",t);break}},e.prototype._storeMessage=function(t,n){this._lostMessages.has(t)||this._lostMessages.set(t,[]),this._lostMessages.get(t).push(n)},e.prototype._getMessages=function(t){var n=this._lostMessages.get(t);return n?(this._lostMessages.delete(t),n):[]},e.prototype.connect=function(t,n){if(n===void 0&&(n={}),this.disconnected){j.default.warn("You cannot connect to a new Peer because you called .disconnect() on this Peer and ended your connection with the server. You can create a new Peer to reconnect, or call reconnect on this peer if you believe its ID to still be available."),this.emitError(_e.Disconnected,"Cannot connect to new Peer after disconnecting from server.");return}var i=new js.DataConnection(t,this,n);return this._addConnection(t,i),i},e.prototype.call=function(t,n,i){if(i===void 0&&(i={}),this.disconnected){j.default.warn("You cannot connect to a new Peer because you called .disconnect() on this Peer and ended your connection with the server. You can create a new Peer to reconnect."),this.emitError(_e.Disconnected,"Cannot connect to new Peer after disconnecting from server.");return}if(!n){j.default.error("To call a peer, you must provide a stream from your browser's `getUserMedia`.");return}var s=new Js.MediaConnection(t,this,ai(ai({},i),{_stream:n}));return this._addConnection(t,s),s},e.prototype._addConnection=function(t,n){j.default.log("add connection ".concat(n.type,":").concat(n.connectionId," to peerId:").concat(t)),this._connections.has(t)||this._connections.set(t,[]),this._connections.get(t).push(n)},e.prototype._removeConnection=function(t){var n=this._connections.get(t.peer);if(n){var i=n.indexOf(t);i!==-1&&n.splice(i,1)}this._lostMessages.delete(t.connectionId)},e.prototype.getConnection=function(t,n){var i,s,a=this._connections.get(t);if(!a)return null;try{for(var o=qn(a),c=o.next();!c.done;c=o.next()){var l=c.value;if(l.connectionId===n)return l}}catch(h){i={error:h}}finally{try{c&&!c.done&&(s=o.return)&&s.call(o)}finally{if(i)throw i.error}}return null},e.prototype._delayedAbort=function(t,n){var i=this;setTimeout(function(){i._abort(t,n)},0)},e.prototype._abort=function(t,n){j.default.error("Aborting!"),this.emitError(t,n),this._lastServerId?this.disconnect():this.destroy()},e.prototype.emitError=function(t,n){j.default.error("Error:",n);var i;typeof n=="string"?i=new Error(n):i=n,i.type=t,this.emit("error",i)},e.prototype.destroy=function(){this.destroyed||(j.default.log("Destroy peer with ID:".concat(this.id)),this.disconnect(),this._cleanup(),this._destroyed=!0,this.emit("close"))},e.prototype._cleanup=function(){var t,n;try{for(var i=qn(this._connections.keys()),s=i.next();!s.done;s=i.next()){var a=s.value;this._cleanupPeer(a),this._connections.delete(a)}}catch(o){t={error:o}}finally{try{s&&!s.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}this.socket.removeAllListeners()},e.prototype._cleanupPeer=function(t){var n,i,s=this._connections.get(t);if(s)try{for(var a=qn(s),o=a.next();!o.done;o=a.next()){var c=o.value;c.close()}}catch(l){n={error:l}}finally{try{o&&!o.done&&(i=a.return)&&i.call(a)}finally{if(n)throw n.error}}},e.prototype.disconnect=function(){if(!this.disconnected){var t=this.id;j.default.log("Disconnect peer with ID:".concat(t)),this._disconnected=!0,this._open=!1,this.socket.close(),this._lastServerId=t,this._id=null,this.emit("disconnected",t)}},e.prototype.reconnect=function(){if(this.disconnected&&!this.destroyed)j.default.log("Attempting reconnection to server with ID ".concat(this._lastServerId)),this._disconnected=!1,this._initialize(this._lastServerId);else{if(this.destroyed)throw new Error("This peer cannot reconnect to the server. It has already been destroyed.");if(!this.disconnected&&!this.open)j.default.error("In a hurry? We're still trying to make the initial connection!");else throw new Error("Peer ".concat(this.id," cannot reconnect because it is not disconnected from the server!"))}},e.prototype.listAllPeers=function(t){var n=this;t===void 0&&(t=function(i){}),this._api.listAllPeers().then(function(i){return t(i)}).catch(function(i){return n._abort(_e.ServerError,i)})},e.DEFAULT_KEY="peerjs",e})(Gi.EventEmitter),bh=Bc.Peer;const Th=Object.freeze(Object.defineProperty({__proto__:null,get Peer(){return Gs},default:bh,util:te},Symbol.toStringTag,{value:"Module"}));class Mh{constructor(e,t){if(this._retries=0,!Number.isInteger(e)||e<0)throw new Error("Base must be a positive integer or zero");if(t!==void 0&&(!Number.isInteger(t)||t<0))throw new Error("ExpMax must be a undefined, a positive integer or zero");this.base=e,this.expMax=t,this.i=0}get retries(){return this._retries}get current(){return this.base*Math.pow(2,this.i)}next(){return this._retries++,this.i=this.expMax===void 0?this.i+1:Math.min(this.i+1,this.expMax),this.current}reset(){this._retries=0,this.i=0}}var ce;(function(r){r.open="open",r.close="close",r.error="error",r.message="message",r.retry="retry",r.reconnect="reconnect"})(ce||(ce={}));class Fc{constructor(e,t,n){var i,s,a,o,c,l,h,d,m,p,b,T,g,v,_;this._closedByUser=!1,this.handleOpenEvent=x=>this.handleEvent(ce.open,x),this.handleErrorEvent=x=>this.handleEvent(ce.error,x),this.handleCloseEvent=x=>this.handleEvent(ce.close,x),this.handleMessageEvent=x=>this.handleEvent(ce.message,x),this._url=e,this._protocols=t,this._options={buffer:n?.buffer,retry:{maxRetries:(i=n?.retry)===null||i===void 0?void 0:i.maxRetries,instantReconnect:(s=n?.retry)===null||s===void 0?void 0:s.instantReconnect,backoff:(a=n?.retry)===null||a===void 0?void 0:a.backoff},listeners:{open:[...(c=(o=n?.listeners)===null||o===void 0?void 0:o.open)!==null&&c!==void 0?c:[]],close:[...(h=(l=n?.listeners)===null||l===void 0?void 0:l.close)!==null&&h!==void 0?h:[]],error:[...(m=(d=n?.listeners)===null||d===void 0?void 0:d.error)!==null&&m!==void 0?m:[]],message:[...(b=(p=n?.listeners)===null||p===void 0?void 0:p.message)!==null&&b!==void 0?b:[]],retry:[...(g=(T=n?.listeners)===null||T===void 0?void 0:T.retry)!==null&&g!==void 0?g:[]],reconnect:[...(_=(v=n?.listeners)===null||v===void 0?void 0:v.reconnect)!==null&&_!==void 0?_:[]]}},this._underlyingWebsocket=this.tryConnect()}get url(){return this._url}get protocols(){return this._protocols}get buffer(){return this._options.buffer}get maxRetries(){return this._options.retry.maxRetries}get instantReconnect(){return this._options.retry.instantReconnect}get backoff(){return this._options.retry.backoff}get closedByUser(){return this._closedByUser}get lastConnection(){return this._lastConnection}get underlyingWebsocket(){return this._underlyingWebsocket}get readyState(){return this._underlyingWebsocket.readyState}get bufferedAmount(){return this._underlyingWebsocket.bufferedAmount}get extensions(){return this._underlyingWebsocket.extensions}get binaryType(){return this._underlyingWebsocket.binaryType}set binaryType(e){this._underlyingWebsocket.binaryType=e}send(e){this.closedByUser||(this._underlyingWebsocket.readyState===this._underlyingWebsocket.OPEN?this._underlyingWebsocket.send(e):this.buffer!==void 0&&this.buffer.add(e))}close(e,t){this.cancelScheduledConnectionRetry(),this._closedByUser=!0,this._underlyingWebsocket.close(e,t)}addEventListener(e,t,n){this._options.listeners[e].push({listener:t,options:n})}removeEventListener(e,t,n){const i=s=>s.listener!==t||s.options!==n;this._options.listeners[e]=this._options.listeners[e].filter(i)}tryConnect(){return this._underlyingWebsocket=new WebSocket(this.url,this.protocols),this._underlyingWebsocket.addEventListener(ce.open,this.handleOpenEvent),this._underlyingWebsocket.addEventListener(ce.close,this.handleCloseEvent),this._underlyingWebsocket.addEventListener(ce.error,this.handleErrorEvent),this._underlyingWebsocket.addEventListener(ce.message,this.handleMessageEvent),this._underlyingWebsocket}clearWebsocket(){this._underlyingWebsocket.removeEventListener(ce.open,this.handleOpenEvent),this._underlyingWebsocket.removeEventListener(ce.close,this.handleCloseEvent),this._underlyingWebsocket.removeEventListener(ce.error,this.handleErrorEvent),this._underlyingWebsocket.removeEventListener(ce.message,this.handleMessageEvent),this._underlyingWebsocket.close()}dispatchEvent(e,t){const n=this._options.listeners[e],i=[];n.forEach(({listener:s,options:a})=>{s(this,t),(a===void 0||a.once===void 0||!a.once)&&i.push({listener:s,options:a})}),this._options.listeners[e]=i}handleEvent(e,t){switch(e){case ce.close:this.dispatchEvent(e,t),this.scheduleConnectionRetryIfNeeded();break;case ce.open:if(this.backoff!==void 0&&this._lastConnection!==void 0){const n={retries:this.backoff.retries,lastConnection:new Date(this._lastConnection)},i=new CustomEvent(ce.reconnect,{detail:n});this.dispatchEvent(ce.reconnect,i),this.backoff.reset()}this._lastConnection=new Date,this.dispatchEvent(e,t),this.sendBufferedData();break;case ce.retry:this.dispatchEvent(e,t),this.clearWebsocket(),this.tryConnect();break;default:this.dispatchEvent(e,t);break}}sendBufferedData(){if(this.buffer!==void 0)for(let e=this.buffer.read();e!==void 0;e=this.buffer.read())this.send(e)}scheduleConnectionRetryIfNeeded(){if(this.closedByUser||this.backoff===void 0)return;const e=n=>{const i=new CustomEvent(ce.retry,{detail:n});this.handleEvent(ce.retry,i)},t={backoff:this._options.retry.instantReconnect===!0?0:this.backoff.next(),retries:this._options.retry.instantReconnect===!0?0:this.backoff.retries,lastConnection:this._lastConnection};(this._options.retry.maxRetries===void 0||t.retries<=this._options.retry.maxRetries)&&(this.retryTimeout=globalThis.setTimeout(()=>e(t),t.backoff))}cancelScheduledConnectionRetry(){globalThis.clearTimeout(this.retryTimeout)}}class Ch{constructor(e){this._url=e}get url(){return this._url}withProtocols(e){return this._protocols=e,this}get protocols(){return this._protocols}withMaxRetries(e){var t;return this._options=Object.assign(Object.assign({},this._options),{retry:Object.assign(Object.assign({},(t=this._options)===null||t===void 0?void 0:t.retry),{maxRetries:e})}),this}get maxRetries(){var e,t;return(t=(e=this._options)===null||e===void 0?void 0:e.retry)===null||t===void 0?void 0:t.maxRetries}withInstantReconnect(e){var t;return this._options=Object.assign(Object.assign({},this._options),{retry:Object.assign(Object.assign({},(t=this._options)===null||t===void 0?void 0:t.retry),{instantReconnect:e})}),this}get instantReconnect(){var e,t;return(t=(e=this._options)===null||e===void 0?void 0:e.retry)===null||t===void 0?void 0:t.instantReconnect}withBackoff(e){var t;return this._options=Object.assign(Object.assign({},this._options),{retry:Object.assign(Object.assign({},(t=this._options)===null||t===void 0?void 0:t.retry),{backoff:e})}),this}get backoff(){var e,t;return(t=(e=this._options)===null||e===void 0?void 0:e.retry)===null||t===void 0?void 0:t.backoff}withBuffer(e){return this._options=Object.assign(Object.assign({},this._options),{buffer:e}),this}get buffer(){var e;return(e=this._options)===null||e===void 0?void 0:e.buffer}onOpen(e,t){return this.addListener(ce.open,e,t),this}onClose(e,t){return this.addListener(ce.close,e,t),this}onError(e,t){return this.addListener(ce.error,e,t),this}onMessage(e,t){return this.addListener(ce.message,e,t),this}onRetry(e,t){return this.addListener(ce.retry,e,t),this}onReconnect(e,t){return this.addListener(ce.reconnect,e,t),this}build(){return new Fc(this._url,this._protocols,this._options)}addListener(e,t,n){var i,s,a,o,c,l,h,d,m,p,b,T,g,v,_,x,C,M,P,E,O;return this._options=Object.assign(Object.assign({},this._options),{listeners:{open:(a=(s=(i=this._options)===null||i===void 0?void 0:i.listeners)===null||s===void 0?void 0:s.open)!==null&&a!==void 0?a:[],close:(l=(c=(o=this._options)===null||o===void 0?void 0:o.listeners)===null||c===void 0?void 0:c.close)!==null&&l!==void 0?l:[],error:(m=(d=(h=this._options)===null||h===void 0?void 0:h.listeners)===null||d===void 0?void 0:d.error)!==null&&m!==void 0?m:[],message:(T=(b=(p=this._options)===null||p===void 0?void 0:p.listeners)===null||b===void 0?void 0:b.message)!==null&&T!==void 0?T:[],retry:(_=(v=(g=this._options)===null||g===void 0?void 0:g.listeners)===null||v===void 0?void 0:v.retry)!==null&&_!==void 0?_:[],reconnect:(M=(C=(x=this._options)===null||x===void 0?void 0:x.listeners)===null||C===void 0?void 0:C.reconnect)!==null&&M!==void 0?M:[],[e]:[...(O=(E=(P=this._options)===null||P===void 0?void 0:P.listeners)===null||E===void 0?void 0:E[e])!==null&&O!==void 0?O:[],{listener:t,options:n}]}}),this}}const wh=Object.freeze(Object.defineProperty({__proto__:null,ExponentialBackoff:Mh,Websocket:Fc,WebsocketBuilder:Ch,get WebsocketEvent(){return ce}},Symbol.toStringTag,{value:"Module"})),fo=0,Vc=1,Jc=2,Ws=2,_s=1.25,xa=1,We=32,Pe=We/4,jc=65535,kr=Math.pow(2,-24),Gr=Symbol("SKIP_GENERATION"),Gc={strategy:fo,maxDepth:40,maxLeafSize:10,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,indirect:!1,verbose:!0,range:null,[Gr]:!1};function Se(r,e,t){return t.min.x=e[r],t.min.y=e[r+1],t.min.z=e[r+2],t.max.x=e[r+3],t.max.y=e[r+4],t.max.z=e[r+5],t}function _a(r){let e=-1,t=-1/0;for(let n=0;n<3;n++){const i=r[n+3]-r[n];i>t&&(t=i,e=n)}return e}function ba(r,e){e.set(r)}function Ta(r,e,t){let n,i;for(let s=0;s<3;s++){const a=s+3;n=r[s],i=e[s],t[s]=n<i?n:i,n=r[a],i=e[a],t[a]=n>i?n:i}}function ar(r,e,t){for(let n=0;n<3;n++){const i=e[r+2*n],s=e[r+2*n+1],a=i-s,o=i+s;a<t[n]&&(t[n]=a),o>t[n+3]&&(t[n+3]=o)}}function Xn(r){const e=r[3]-r[0],t=r[4]-r[1],n=r[5]-r[2];return 2*(e*t+t*n+n*e)}function Ee(r,e){return e[r+15]===jc}function $e(r,e){return e[r+6]}function tt(r,e){return e[r+14]}function Ie(r){return r+Pe}function Be(r,e){const t=e[r+6];return r+t*Pe}function po(r,e){return e[r+7]}function bs(r,e,t,n,i){let s=1/0,a=1/0,o=1/0,c=-1/0,l=-1/0,h=-1/0,d=1/0,m=1/0,p=1/0,b=-1/0,T=-1/0,g=-1/0;const v=r.offset||0;for(let _=(e-v)*6,x=(e+t-v)*6;_<x;_+=6){const C=r[_+0],M=r[_+1],P=C-M,E=C+M;P<s&&(s=P),E>c&&(c=E),C<d&&(d=C),C>b&&(b=C);const O=r[_+2],I=r[_+3],R=O-I,N=O+I;R<a&&(a=R),N>l&&(l=N),O<m&&(m=O),O>T&&(T=O);const z=r[_+4],U=r[_+5],F=z-U,J=z+U;F<o&&(o=F),J>h&&(h=J),z<p&&(p=z),z>g&&(g=z)}n[0]=s,n[1]=a,n[2]=o,n[3]=c,n[4]=l,n[5]=h,i[0]=d,i[1]=m,i[2]=p,i[3]=b,i[4]=T,i[5]=g}const Jt=32,Ph=(r,e)=>r.candidate-e.candidate,Kt=new Array(Jt).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),cr=new Float32Array(6);function Eh(r,e,t,n,i,s){let a=-1,o=0;if(s===fo)a=_a(e),a!==-1&&(o=(e[a]+e[a+3])/2);else if(s===Vc)a=_a(r),a!==-1&&(o=kh(t,n,i,a));else if(s===Jc){const c=Xn(r);let l=_s*i;const h=t.offset||0,d=(n-h)*6,m=(n+i-h)*6;for(let p=0;p<3;p++){const b=e[p],v=(e[p+3]-b)/Jt;if(i<Jt/4){const _=[...Kt];_.length=i;let x=0;for(let M=d;M<m;M+=6,x++){const P=_[x];P.candidate=t[M+2*p],P.count=0;const{bounds:E,leftCacheBounds:O,rightCacheBounds:I}=P;for(let R=0;R<3;R++)I[R]=1/0,I[R+3]=-1/0,O[R]=1/0,O[R+3]=-1/0,E[R]=1/0,E[R+3]=-1/0;ar(M,t,E)}_.sort(Ph);let C=i;for(let M=0;M<C;M++){const P=_[M];for(;M+1<C&&_[M+1].candidate===P.candidate;)_.splice(M+1,1),C--}for(let M=d;M<m;M+=6){const P=t[M+2*p];for(let E=0;E<C;E++){const O=_[E];P>=O.candidate?ar(M,t,O.rightCacheBounds):(ar(M,t,O.leftCacheBounds),O.count++)}}for(let M=0;M<C;M++){const P=_[M],E=P.count,O=i-P.count,I=P.leftCacheBounds,R=P.rightCacheBounds;let N=0;E!==0&&(N=Xn(I)/c);let z=0;O!==0&&(z=Xn(R)/c);const U=xa+_s*(N*E+z*O);U<l&&(a=p,l=U,o=P.candidate)}}else{for(let C=0;C<Jt;C++){const M=Kt[C];M.count=0,M.candidate=b+v+C*v;const P=M.bounds;for(let E=0;E<3;E++)P[E]=1/0,P[E+3]=-1/0}for(let C=d;C<m;C+=6){let E=~~((t[C+2*p]-b)/v);E>=Jt&&(E=Jt-1);const O=Kt[E];O.count++,ar(C,t,O.bounds)}const _=Kt[Jt-1];ba(_.bounds,_.rightCacheBounds);for(let C=Jt-2;C>=0;C--){const M=Kt[C],P=Kt[C+1];Ta(M.bounds,P.rightCacheBounds,M.rightCacheBounds)}let x=0;for(let C=0;C<Jt-1;C++){const M=Kt[C],P=M.count,E=M.bounds,I=Kt[C+1].rightCacheBounds;P!==0&&(x===0?ba(E,cr):Ta(E,cr,cr)),x+=P;let R=0,N=0;x!==0&&(R=Xn(cr)/c);const z=i-x;z!==0&&(N=Xn(I)/c);const U=xa+_s*(R*x+N*z);U<l&&(a=p,l=U,o=M.candidate)}}}}else console.warn(`BVH: Invalid build strategy value ${s} used.`);return{axis:a,pos:o}}function kh(r,e,t,n){let i=0;const s=r.offset;for(let a=e,o=e+t;a<o;a++)i+=r[(a-s)*6+n*2];return i/t}class Ts{constructor(){this.boundingData=new Float32Array(6)}}function Rh(r,e,t,n,i,s){let a=n,o=n+i-1;const c=s.pos,l=s.axis*2,h=t.offset||0;for(;;){for(;a<=o&&t[(a-h)*6+l]<c;)a++;for(;a<=o&&t[(o-h)*6+l]>=c;)o--;if(a<o){for(let d=0;d<e;d++){let m=r[a*e+d];r[a*e+d]=r[o*e+d],r[o*e+d]=m}for(let d=0;d<6;d++){const m=a-h,p=o-h,b=t[m*6+d];t[m*6+d]=t[p*6+d],t[p*6+d]=b}a++,o--}else return a}}let Wc,Rr,$s,$c;const Ah=Math.pow(2,32);function Hs(r){return"count"in r?1:1+Hs(r.left)+Hs(r.right)}function Oh(r,e,t){return Wc=new Float32Array(t),Rr=new Uint32Array(t),$s=new Uint16Array(t),$c=new Uint8Array(t),qs(r,e)}function qs(r,e){const t=r/4,n=r/2,i="count"in e,s=e.boundingData;for(let a=0;a<6;a++)Wc[t+a]=s[a];if(i)return e.buffer?($c.set(new Uint8Array(e.buffer),r),r+e.buffer.byteLength):(Rr[t+6]=e.offset,$s[n+14]=e.count,$s[n+15]=jc,r+We);{const{left:a,right:o,splitAxis:c}=e,l=r+We;let h=qs(l,a);const d=r/We,p=h/We-d;if(p>Ah)throw new Error("MeshBVH: Cannot store relative child node offset greater than 32 bits.");return Rr[t+6]=p,Rr[t+7]=c,qs(h,o)}}function zh(r,e,t,n,i){const{maxDepth:s,verbose:a,maxLeafSize:o,strategy:c,onProgress:l}=i,h=r.primitiveBuffer,d=r.primitiveBufferStride,m=new Float32Array(6);let p=!1;const b=new Ts;return bs(e,t,n,b.boundingData,m),g(b,t,n,m),b;function T(v){l&&l(v/n)}function g(v,_,x,C=null,M=0){if(!p&&M>=s&&(p=!0,a&&console.warn(`BVH: Max depth of ${s} reached when generating BVH. Consider increasing maxDepth.`)),x<=o||M>=s)return T(_+x),v.offset=_,v.count=x,v;const P=Eh(v.boundingData,C,e,_,x,c);if(P.axis===-1)return T(_+x),v.offset=_,v.count=x,v;const E=Rh(h,d,e,_,x,P);if(E===_||E===_+x)T(_+x),v.offset=_,v.count=x;else{v.splitAxis=P.axis;const O=new Ts,I=_,R=E-_;v.left=O,bs(e,I,R,O.boundingData,m),g(O,I,R,m,M+1);const N=new Ts,z=E,U=x-R;v.right=N,bs(e,z,U,N.boundingData,m),g(N,z,U,m,M+1)}return v}}function Ih(r,e){const t=e.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,n=r.getRootRanges(e.range),i=n[0],s=n[n.length-1],a={offset:i.offset,count:s.offset+s.count-i.offset},o=new Float32Array(6*a.count);o.offset=a.offset,r.computePrimitiveBounds(a.offset,a.count,o),r._roots=n.map(c=>{const l=zh(r,o,c.offset,c.count,e),h=Hs(l),d=new t(We*h);return Oh(0,l,d),d})}class mo{constructor(e){this._getNewPrimitive=e,this._primitives=[]}getPrimitive(){const e=this._primitives;return e.length===0?this._getNewPrimitive():e.pop()}releasePrimitive(e){this._primitives.push(e)}}class Bh{constructor(){this.float32Array=null,this.uint16Array=null,this.uint32Array=null;const e=[];let t=null;this.setBuffer=n=>{t&&e.push(t),t=n,this.float32Array=new Float32Array(n),this.uint16Array=new Uint16Array(n),this.uint32Array=new Uint32Array(n)},this.clearBuffer=()=>{t=null,this.float32Array=null,this.uint16Array=null,this.uint32Array=null,e.length!==0&&this.setBuffer(e.pop())}}}const pe=new Bh;let nn,Un;const Pn=[],lr=new mo(()=>new A.Box3);function Nh(r,e,t,n,i,s){nn=lr.getPrimitive(),Un=lr.getPrimitive(),Pn.push(nn,Un),pe.setBuffer(r._roots[e]);const a=Xs(0,r.geometry,t,n,i,s);pe.clearBuffer(),lr.releasePrimitive(nn),lr.releasePrimitive(Un),Pn.pop(),Pn.pop();const o=Pn.length;return o>0&&(Un=Pn[o-1],nn=Pn[o-2]),a}function Xs(r,e,t,n,i=null,s=0,a=0){const{float32Array:o,uint16Array:c,uint32Array:l}=pe;let h=r*2;if(Ee(h,c)){const m=$e(r,l),p=tt(h,c);return Se(r,o,nn),n(m,p,!1,a,s+r/Pe,nn)}else{let R=function(z){const{uint16Array:U,uint32Array:F}=pe;let J=z*2;for(;!Ee(J,U);)z=Ie(z),J=z*2;return $e(z,F)},N=function(z){const{uint16Array:U,uint32Array:F}=pe;let J=z*2;for(;!Ee(J,U);)z=Be(z,F),J=z*2;return $e(z,F)+tt(J,U)};const m=Ie(r),p=Be(r,l);let b=m,T=p,g,v,_,x;if(i&&(_=nn,x=Un,Se(b,o,_),Se(T,o,x),g=i(_),v=i(x),v<g)){b=p,T=m;const z=g;g=v,v=z,_=x}_||(_=nn,Se(b,o,_));const C=Ee(b*2,c),M=t(_,C,g,a+1,s+b/Pe);let P;if(M===Ws){const z=R(b),F=N(b)-z;P=n(z,F,!0,a+1,s+b/Pe,_)}else P=M&&Xs(b,e,t,n,i,s,a+1);if(P)return!0;x=Un,Se(T,o,x);const E=Ee(T*2,c),O=t(x,E,v,a+1,s+T/Pe);let I;if(O===Ws){const z=R(T),F=N(T)-z;I=n(z,F,!0,a+1,s+T/Pe,x)}else I=O&&Xs(T,e,t,n,i,s,a+1);return!!I}}const ci=new pe.constructor,Fr=new pe.constructor,en=new mo(()=>new A.Box3),En=new A.Box3,kn=new A.Box3,Ms=new A.Box3,Cs=new A.Box3;let ws=!1;function Uh(r,e,t,n){if(ws)throw new Error("MeshBVH: Recursive calls to bvhcast not supported.");ws=!0;const i=r._roots,s=e._roots;let a,o=0,c=0;const l=new A.Matrix4().copy(t).invert();for(let h=0,d=i.length;h<d;h++){ci.setBuffer(i[h]),c=0;const m=en.getPrimitive();Se(0,ci.float32Array,m),m.applyMatrix4(l);for(let p=0,b=s.length;p<b&&(Fr.setBuffer(s[p]),a=wt(0,0,t,l,n,o,c,0,0,m),Fr.clearBuffer(),c+=s[p].byteLength/We,!a);p++);if(en.releasePrimitive(m),ci.clearBuffer(),o+=i[h].byteLength/We,a)break}return ws=!1,a}function wt(r,e,t,n,i,s=0,a=0,o=0,c=0,l=null,h=!1){let d,m;h?(d=Fr,m=ci):(d=ci,m=Fr);const p=d.float32Array,b=d.uint32Array,T=d.uint16Array,g=m.float32Array,v=m.uint32Array,_=m.uint16Array,x=r*2,C=e*2,M=Ee(x,T),P=Ee(C,_);let E=!1;if(P&&M)h?E=i($e(e,v),tt(e*2,_),$e(r,b),tt(r*2,T),c,a+e/Pe,o,s+r/Pe):E=i($e(r,b),tt(r*2,T),$e(e,v),tt(e*2,_),o,s+r/Pe,c,a+e/Pe);else if(P){const O=en.getPrimitive();Se(e,g,O),O.applyMatrix4(t);const I=Ie(r),R=Be(r,b);Se(I,p,En),Se(R,p,kn);const N=O.intersectsBox(En),z=O.intersectsBox(kn);E=N&&wt(e,I,n,t,i,a,s,c,o+1,O,!h)||z&&wt(e,R,n,t,i,a,s,c,o+1,O,!h),en.releasePrimitive(O)}else{const O=Ie(e),I=Be(e,v);Se(O,g,Ms),Se(I,g,Cs);const R=l.intersectsBox(Ms),N=l.intersectsBox(Cs);if(R&&N)E=wt(r,O,t,n,i,s,a,o,c+1,l,h)||wt(r,I,t,n,i,s,a,o,c+1,l,h);else if(R)if(M)E=wt(r,O,t,n,i,s,a,o,c+1,l,h);else{const z=en.getPrimitive();z.copy(Ms).applyMatrix4(t);const U=Ie(r),F=Be(r,b);Se(U,p,En),Se(F,p,kn);const J=z.intersectsBox(En),$=z.intersectsBox(kn);E=J&&wt(O,U,n,t,i,a,s,c,o+1,z,!h)||$&&wt(O,F,n,t,i,a,s,c,o+1,z,!h),en.releasePrimitive(z)}else if(N)if(M)E=wt(r,I,t,n,i,s,a,o,c+1,l,h);else{const z=en.getPrimitive();z.copy(Cs).applyMatrix4(t);const U=Ie(r),F=Be(r,b);Se(U,p,En),Se(F,p,kn);const J=z.intersectsBox(En),$=z.intersectsBox(kn);E=J&&wt(I,U,n,t,i,a,s,c,o+1,z,!h)||$&&wt(I,F,n,t,i,a,s,c,o+1,z,!h),en.releasePrimitive(z)}}return E}const Ma=new A.Box3,Rn=new Float32Array(6);class Hc{constructor(){this._roots=null,this.primitiveBuffer=null,this.primitiveBufferStride=null}init(e){e={...Gc,...e},Ih(this,e)}getRootRanges(){throw new Error("BVH: getRootRanges() not implemented")}writePrimitiveBounds(){throw new Error("BVH: writePrimitiveBounds() not implemented")}writePrimitiveRangeBounds(e,t,n,i){let s=1/0,a=1/0,o=1/0,c=-1/0,l=-1/0,h=-1/0;for(let d=e,m=e+t;d<m;d++){this.writePrimitiveBounds(d,Rn,0);const[p,b,T,g,v,_]=Rn;p<s&&(s=p),g>c&&(c=g),b<a&&(a=b),v>l&&(l=v),T<o&&(o=T),_>h&&(h=_)}return n[i+0]=s,n[i+1]=a,n[i+2]=o,n[i+3]=c,n[i+4]=l,n[i+5]=h,n}computePrimitiveBounds(e,t,n){const i=n.offset||0;for(let s=e,a=e+t;s<a;s++){this.writePrimitiveBounds(s,Rn,0);const[o,c,l,h,d,m]=Rn,p=(o+h)/2,b=(c+d)/2,T=(l+m)/2,g=(h-o)/2,v=(d-c)/2,_=(m-l)/2,x=(s-i)*6;n[x+0]=p,n[x+1]=g+(Math.abs(p)+g)*kr,n[x+2]=b,n[x+3]=v+(Math.abs(b)+v)*kr,n[x+4]=T,n[x+5]=_+(Math.abs(T)+_)*kr}return n}shiftPrimitiveOffsets(e){const t=this._indirectBuffer;if(t)for(let n=0,i=t.length;n<i;n++)t[n]+=e;else{const n=this._roots;for(let i=0;i<n.length;i++){const s=n[i],a=new Uint32Array(s),o=new Uint16Array(s),c=s.byteLength/We;for(let l=0;l<c;l++){const h=Pe*l,d=2*h;Ee(d,o)&&(a[h+6]+=e)}}}}traverse(e,t=0){const n=this._roots[t],i=new Uint32Array(n),s=new Uint16Array(n);a(0);function a(o,c=0){const l=o*2,h=Ee(l,s);if(h){const d=i[o+6],m=s[l+14];e(c,h,new Float32Array(n,o*4,6),d,m)}else{const d=Ie(o),m=Be(o,i),p=po(o,i);e(c,h,new Float32Array(n,o*4,6),p)||(a(d,c+1),a(m,c+1))}}}refit(){const e=this._roots;for(let t=0,n=e.length;t<n;t++){const i=e[t],s=new Uint32Array(i),a=new Uint16Array(i),o=new Float32Array(i),c=i.byteLength/We;for(let l=c-1;l>=0;l--){const h=l*Pe,d=h*2;if(Ee(d,a)){const p=$e(h,s),b=tt(d,a);this.writePrimitiveRangeBounds(p,b,Rn,0),o.set(Rn,h)}else{const p=Ie(h),b=Be(h,s);for(let T=0;T<3;T++){const g=o[p+T],v=o[p+T+3],_=o[b+T],x=o[b+T+3];o[h+T]=g<_?g:_,o[h+T+3]=v>x?v:x}}}}}getBoundingBox(e){return e.makeEmpty(),this._roots.forEach(n=>{Se(0,new Float32Array(n),Ma),e.union(Ma)}),e}shapecast(e){let{boundsTraverseOrder:t,intersectsBounds:n,intersectsRange:i,intersectsPrimitive:s,scratchPrimitive:a,iterate:o}=e;if(i&&s){const d=i;i=(m,p,b,T,g)=>d(m,p,b,T,g)?!0:o(m,p,this,s,b,T,a)}else i||(s?i=(d,m,p,b)=>o(d,m,this,s,p,b,a):i=(d,m,p)=>p);let c=!1,l=0;const h=this._roots;for(let d=0,m=h.length;d<m;d++){const p=h[d];if(c=Nh(this,d,n,i,t,l),c)break;l+=p.byteLength/We}return c}bvhcast(e,t,n){let{intersectsRanges:i}=n;return Uh(this,e,t,i)}}function Dh(){return typeof SharedArrayBuffer<"u"}function yo(r){return r.index?r.index.count:r.attributes.position.count}function Wr(r){return yo(r)/3}function Lh(r,e=ArrayBuffer){return r>65535?new Uint32Array(new e(4*r)):new Uint16Array(new e(2*r))}function Fh(r,e){if(!r.index){const t=r.attributes.position.count,n=e.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,i=Lh(t,n);r.setIndex(new A.BufferAttribute(i,1));for(let s=0;s<t;s++)i[s]=s}}function Vh(r,e,t){const n=yo(r)/t,i=e||r.drawRange,s=i.start/t,a=(i.start+i.count)/t,o=Math.max(0,s),c=Math.min(n,a)-o;return{offset:Math.floor(o),count:Math.floor(c)}}function Jh(r,e){return r.groups.map(t=>({offset:t.start/e,count:t.count/e}))}function Ca(r,e,t){const n=Vh(r,e,t),i=Jh(r,t);if(!i.length)return[n];const s=[],a=n.offset,o=n.offset+n.count,c=yo(r)/t,l=[];for(const m of i){const{offset:p,count:b}=m,T=p,g=isFinite(b)?b:c-p,v=p+g;T<o&&v>a&&(l.push({pos:Math.max(a,T),isStart:!0}),l.push({pos:Math.min(o,v),isStart:!1}))}l.sort((m,p)=>m.pos!==p.pos?m.pos-p.pos:m.type==="end"?-1:1);let h=0,d=null;for(const m of l){const p=m.pos;h!==0&&p!==d&&s.push({offset:d,count:p-d}),h+=m.isStart?1:-1,d=p}return s}function qc(r,e){const t=r[r.length-1],n=t.offset+t.count>2**16,i=r.reduce((l,h)=>l+h.count,0),s=n?4:2,a=e?new SharedArrayBuffer(i*s):new ArrayBuffer(i*s),o=n?new Uint32Array(a):new Uint16Array(a);let c=0;for(let l=0;l<r.length;l++){const{offset:h,count:d}=r[l];for(let m=0;m<d;m++)o[c+m]=h+m;c+=d}return o}class Xc extends Hc{get indirect(){return!!this._indirectBuffer}get primitiveStride(){return null}get primitiveBufferStride(){return this.indirect?1:this.primitiveStride}set primitiveBufferStride(e){}get primitiveBuffer(){return this.indirect?this._indirectBuffer:this.geometry.index.array}set primitiveBuffer(e){}constructor(e,t={}){if(e.isBufferGeometry){if(e.index&&e.index.isInterleavedBufferAttribute)throw new Error("BVH: InterleavedBufferAttribute is not supported for the index attribute.")}else throw new Error("BVH: Only BufferGeometries are supported.");if(t.useSharedArrayBuffer&&!Dh())throw new Error("BVH: SharedArrayBuffer is not available.");super(),this.geometry=e,this.resolvePrimitiveIndex=t.indirect?n=>this._indirectBuffer[n]:n=>n,this.primitiveBuffer=null,this.primitiveBufferStride=null,this._indirectBuffer=null,t={...Gc,...t},t[Gr]||this.init(t)}init(e){const{geometry:t,primitiveStride:n}=this;if(e.indirect){const i=Ca(t,e.range,n),s=qc(i,e.useSharedArrayBuffer);this._indirectBuffer=s}else Fh(t,e);super.init(e),!t.boundingBox&&e.setBoundingBox&&(t.boundingBox=this.getBoundingBox(new A.Box3))}getRootRanges(e){return this.indirect?[{offset:0,count:this._indirectBuffer.length}]:Ca(this.geometry,e,this.primitiveStride)}raycastObject3D(){throw new Error("BVH: raycastObject3D() not implemented")}}class qt{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(e,t){let n=1/0,i=-1/0;for(let s=0,a=e.length;s<a;s++){const c=e[s][t];n=c<n?c:n,i=c>i?c:i}this.min=n,this.max=i}setFromPoints(e,t){let n=1/0,i=-1/0;for(let s=0,a=t.length;s<a;s++){const o=t[s],c=e.dot(o);n=c<n?c:n,i=c>i?c:i}this.min=n,this.max=i}isSeparated(e){return this.min>e.max||e.min>this.max}}qt.prototype.setFromBox=(function(){const r=new A.Vector3;return function(t,n){const i=n.min,s=n.max;let a=1/0,o=-1/0;for(let c=0;c<=1;c++)for(let l=0;l<=1;l++)for(let h=0;h<=1;h++){r.x=i.x*c+s.x*(1-c),r.y=i.y*l+s.y*(1-l),r.z=i.z*h+s.z*(1-h);const d=t.dot(r);a=Math.min(d,a),o=Math.max(d,o)}this.min=a,this.max=o}})();const jh=(function(){const r=new A.Vector3,e=new A.Vector3,t=new A.Vector3;return function(i,s,a){const o=i.start,c=r,l=s.start,h=e;t.subVectors(o,l),r.subVectors(i.end,i.start),e.subVectors(s.end,s.start);const d=t.dot(h),m=h.dot(c),p=h.dot(h),b=t.dot(c),g=c.dot(c)*p-m*m;let v,_;g!==0?v=(d*m-b*p)/g:v=0,_=(d+v*m)/p,a.x=v,a.y=_}})(),go=(function(){const r=new A.Vector2,e=new A.Vector3,t=new A.Vector3;return function(i,s,a,o){jh(i,s,r);let c=r.x,l=r.y;if(c>=0&&c<=1&&l>=0&&l<=1){i.at(c,a),s.at(l,o);return}else if(c>=0&&c<=1){l<0?s.at(0,o):s.at(1,o),i.closestPointToPoint(o,!0,a);return}else if(l>=0&&l<=1){c<0?i.at(0,a):i.at(1,a),s.closestPointToPoint(a,!0,o);return}else{let h;c<0?h=i.start:h=i.end;let d;l<0?d=s.start:d=s.end;const m=e,p=t;if(i.closestPointToPoint(d,!0,e),s.closestPointToPoint(h,!0,t),m.distanceToSquared(d)<=p.distanceToSquared(h)){a.copy(m),o.copy(d);return}else{a.copy(h),o.copy(p);return}}}})(),Gh=(function(){const r=new A.Vector3,e=new A.Vector3,t=new A.Plane,n=new A.Line3;return function(s,a){const{radius:o,center:c}=s,{a:l,b:h,c:d}=a;if(n.start=l,n.end=h,n.closestPointToPoint(c,!0,r).distanceTo(c)<=o||(n.start=l,n.end=d,n.closestPointToPoint(c,!0,r).distanceTo(c)<=o)||(n.start=h,n.end=d,n.closestPointToPoint(c,!0,r).distanceTo(c)<=o))return!0;const T=a.getPlane(t);if(Math.abs(T.distanceToPoint(c))<=o){const v=T.projectPoint(c,e);if(a.containsPoint(v))return!0}return!1}})(),Wh=["x","y","z"],Gt=1e-15,wa=Gt*Gt;function pt(r){return Math.abs(r)<Gt}class gt extends A.Triangle{constructor(...e){super(...e),this.isExtendedTriangle=!0,this.satAxes=new Array(4).fill().map(()=>new A.Vector3),this.satBounds=new Array(4).fill().map(()=>new qt),this.points=[this.a,this.b,this.c],this.plane=new A.Plane,this.isDegenerateIntoSegment=!1,this.isDegenerateIntoPoint=!1,this.degenerateSegment=new A.Line3,this.needsUpdate=!0}intersectsSphere(e){return Gh(e,this)}update(){const e=this.a,t=this.b,n=this.c,i=this.points,s=this.satAxes,a=this.satBounds,o=s[0],c=a[0];this.getNormal(o),c.setFromPoints(o,i);const l=s[1],h=a[1];l.subVectors(e,t),h.setFromPoints(l,i);const d=s[2],m=a[2];d.subVectors(t,n),m.setFromPoints(d,i);const p=s[3],b=a[3];p.subVectors(n,e),b.setFromPoints(p,i);const T=l.length(),g=d.length(),v=p.length();this.isDegenerateIntoPoint=!1,this.isDegenerateIntoSegment=!1,T<Gt?g<Gt||v<Gt?this.isDegenerateIntoPoint=!0:(this.isDegenerateIntoSegment=!0,this.degenerateSegment.start.copy(e),this.degenerateSegment.end.copy(n)):g<Gt?v<Gt?this.isDegenerateIntoPoint=!0:(this.isDegenerateIntoSegment=!0,this.degenerateSegment.start.copy(t),this.degenerateSegment.end.copy(e)):v<Gt&&(this.isDegenerateIntoSegment=!0,this.degenerateSegment.start.copy(n),this.degenerateSegment.end.copy(t)),this.plane.setFromNormalAndCoplanarPoint(o,e),this.needsUpdate=!1}}gt.prototype.closestPointToSegment=(function(){const r=new A.Vector3,e=new A.Vector3,t=new A.Line3;return function(i,s=null,a=null){const{start:o,end:c}=i,l=this.points;let h,d=1/0;for(let m=0;m<3;m++){const p=(m+1)%3;t.start.copy(l[m]),t.end.copy(l[p]),go(t,i,r,e),h=r.distanceToSquared(e),h<d&&(d=h,s&&s.copy(r),a&&a.copy(e))}return this.closestPointToPoint(o,r),h=o.distanceToSquared(r),h<d&&(d=h,s&&s.copy(r),a&&a.copy(o)),this.closestPointToPoint(c,r),h=c.distanceToSquared(r),h<d&&(d=h,s&&s.copy(r),a&&a.copy(c)),Math.sqrt(d)}})();gt.prototype.intersectsTriangle=(function(){const r=new gt,e=new qt,t=new qt,n=new A.Vector3,i=new A.Vector3,s=new A.Vector3,a=new A.Vector3,o=new A.Line3,c=new A.Line3,l=new A.Vector3,h=new A.Vector2,d=new A.Vector2;function m(x,C,M,P){const E=n;!x.isDegenerateIntoPoint&&!x.isDegenerateIntoSegment?E.copy(x.plane.normal):E.copy(C.plane.normal);const O=x.satBounds,I=x.satAxes;for(let z=1;z<4;z++){const U=O[z],F=I[z];if(e.setFromPoints(F,C.points),U.isSeparated(e)||(a.copy(E).cross(F),e.setFromPoints(a,x.points),t.setFromPoints(a,C.points),e.isSeparated(t)))return!1}const R=C.satBounds,N=C.satAxes;for(let z=1;z<4;z++){const U=R[z],F=N[z];if(e.setFromPoints(F,x.points),U.isSeparated(e)||(a.crossVectors(E,F),e.setFromPoints(a,x.points),t.setFromPoints(a,C.points),e.isSeparated(t)))return!1}return M&&(P||console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),M.start.set(0,0,0),M.end.set(0,0,0)),!0}function p(x,C,M,P,E,O,I,R,N,z,U){let F=I/(I-R);z.x=P+(E-P)*F,U.start.subVectors(C,x).multiplyScalar(F).add(x),F=I/(I-N),z.y=P+(O-P)*F,U.end.subVectors(M,x).multiplyScalar(F).add(x)}function b(x,C,M,P,E,O,I,R,N,z,U){if(E>0)p(x.c,x.a,x.b,P,C,M,N,I,R,z,U);else if(O>0)p(x.b,x.a,x.c,M,C,P,R,I,N,z,U);else if(R*N>0||I!=0)p(x.a,x.b,x.c,C,M,P,I,R,N,z,U);else if(R!=0)p(x.b,x.a,x.c,M,C,P,R,I,N,z,U);else if(N!=0)p(x.c,x.a,x.b,P,C,M,N,I,R,z,U);else return!0;return!1}function T(x,C,M,P){const E=C.degenerateSegment,O=x.plane.distanceToPoint(E.start),I=x.plane.distanceToPoint(E.end);return pt(O)?pt(I)?m(x,C,M,P):(M&&(M.start.copy(E.start),M.end.copy(E.start)),x.containsPoint(E.start)):pt(I)?(M&&(M.start.copy(E.end),M.end.copy(E.end)),x.containsPoint(E.end)):x.plane.intersectLine(E,n)!=null?(M&&(M.start.copy(n),M.end.copy(n)),x.containsPoint(n)):!1}function g(x,C,M){const P=C.a;return pt(x.plane.distanceToPoint(P))&&x.containsPoint(P)?(M&&(M.start.copy(P),M.end.copy(P)),!0):!1}function v(x,C,M){const P=x.degenerateSegment,E=C.a;return P.closestPointToPoint(E,!0,n),E.distanceToSquared(n)<wa?(M&&(M.start.copy(E),M.end.copy(E)),!0):!1}function _(x,C,M,P){if(x.isDegenerateIntoSegment)if(C.isDegenerateIntoSegment){const E=x.degenerateSegment,O=C.degenerateSegment,I=i,R=s;E.delta(I),O.delta(R);const N=n.subVectors(O.start,E.start),z=I.x*R.y-I.y*R.x;if(pt(z))return!1;const U=(N.x*R.y-N.y*R.x)/z,F=-(I.x*N.y-I.y*N.x)/z;if(U<0||U>1||F<0||F>1)return!1;const J=E.start.z+I.z*U,$=O.start.z+R.z*F;return pt(J-$)?(M&&(M.start.copy(E.start).addScaledVector(I,U),M.end.copy(E.start).addScaledVector(I,U)),!0):!1}else return C.isDegenerateIntoPoint?v(x,C,M):T(C,x,M,P);else{if(x.isDegenerateIntoPoint)return C.isDegenerateIntoPoint?C.a.distanceToSquared(x.a)<wa?(M&&(M.start.copy(x.a),M.end.copy(x.a)),!0):!1:C.isDegenerateIntoSegment?v(C,x,M):g(C,x,M);if(C.isDegenerateIntoPoint)return g(x,C,M);if(C.isDegenerateIntoSegment)return T(x,C,M,P)}}return function(C,M=null,P=!1){this.needsUpdate&&this.update(),C.isExtendedTriangle?C.needsUpdate&&C.update():(r.copy(C),r.update(),C=r);const E=_(this,C,M,P);if(E!==void 0)return E;const O=this.plane,I=C.plane;let R=I.distanceToPoint(this.a),N=I.distanceToPoint(this.b),z=I.distanceToPoint(this.c);pt(R)&&(R=0),pt(N)&&(N=0),pt(z)&&(z=0);const U=R*N,F=R*z;if(U>0&&F>0)return!1;let J=O.distanceToPoint(C.a),$=O.distanceToPoint(C.b),K=O.distanceToPoint(C.c);pt(J)&&(J=0),pt($)&&($=0),pt(K)&&(K=0);const W=J*$,me=J*K;if(W>0&&me>0)return!1;i.copy(O.normal),s.copy(I.normal);const ne=i.cross(s);let ue=0,re=Math.abs(ne.x);const ge=Math.abs(ne.y);ge>re&&(re=ge,ue=1),Math.abs(ne.z)>re&&(ue=2);const se=Wh[ue],he=this.a[se],oe=this.b[se],Xe=this.c[se],Ve=C.a[se],Je=C.b[se],Ye=C.c[se];if(b(this,he,oe,Xe,U,F,R,N,z,h,o))return m(this,C,M,P);if(b(C,Ve,Je,Ye,W,me,J,$,K,d,c))return m(this,C,M,P);if(h.y<h.x){const xe=h.y;h.y=h.x,h.x=xe,l.copy(o.start),o.start.copy(o.end),o.end.copy(l)}if(d.y<d.x){const xe=d.y;d.y=d.x,d.x=xe,l.copy(c.start),c.start.copy(c.end),c.end.copy(l)}return h.y<d.x||d.y<h.x?!1:(M&&(d.x>h.x?M.start.copy(c.start):M.start.copy(o.start),d.y<h.y?M.end.copy(c.end):M.end.copy(o.end)),!0)}})();gt.prototype.distanceToPoint=(function(){const r=new A.Vector3;return function(t){return this.closestPointToPoint(t,r),t.distanceTo(r)}})();gt.prototype.distanceToTriangle=(function(){const r=new A.Vector3,e=new A.Vector3,t=["a","b","c"],n=new A.Line3,i=new A.Line3;return function(a,o=null,c=null){const l=o||c?n:null;if(this.intersectsTriangle(a,l))return(o||c)&&(o&&l.getCenter(o),c&&l.getCenter(c)),0;let h=1/0;for(let d=0;d<3;d++){let m;const p=t[d],b=a[p];this.closestPointToPoint(b,r),m=b.distanceToSquared(r),m<h&&(h=m,o&&o.copy(r),c&&c.copy(b));const T=this[p];a.closestPointToPoint(T,r),m=T.distanceToSquared(r),m<h&&(h=m,o&&o.copy(T),c&&c.copy(r))}for(let d=0;d<3;d++){const m=t[d],p=t[(d+1)%3];n.set(this[m],this[p]);for(let b=0;b<3;b++){const T=t[b],g=t[(b+1)%3];i.set(a[T],a[g]),go(n,i,r,e);const v=r.distanceToSquared(e);v<h&&(h=v,o&&o.copy(r),c&&c.copy(e))}}return Math.sqrt(h)}})();class qe{constructor(e,t,n){this.isOrientedBox=!0,this.min=new A.Vector3,this.max=new A.Vector3,this.matrix=new A.Matrix4,this.invMatrix=new A.Matrix4,this.points=new Array(8).fill().map(()=>new A.Vector3),this.satAxes=new Array(3).fill().map(()=>new A.Vector3),this.satBounds=new Array(3).fill().map(()=>new qt),this.alignedSatBounds=new Array(3).fill().map(()=>new qt),this.needsUpdate=!1,e&&this.min.copy(e),t&&this.max.copy(t),n&&this.matrix.copy(n)}set(e,t,n){this.min.copy(e),this.max.copy(t),this.matrix.copy(n),this.needsUpdate=!0}copy(e){this.min.copy(e.min),this.max.copy(e.max),this.matrix.copy(e.matrix),this.needsUpdate=!0}}qe.prototype.update=(function(){return function(){const e=this.matrix,t=this.min,n=this.max,i=this.points;for(let l=0;l<=1;l++)for(let h=0;h<=1;h++)for(let d=0;d<=1;d++){const m=1*l|2*h|4*d,p=i[m];p.x=l?n.x:t.x,p.y=h?n.y:t.y,p.z=d?n.z:t.z,p.applyMatrix4(e)}const s=this.satBounds,a=this.satAxes,o=i[0];for(let l=0;l<3;l++){const h=a[l],d=s[l],m=1<<l,p=i[m];h.subVectors(o,p),d.setFromPoints(h,i)}const c=this.alignedSatBounds;c[0].setFromPointsField(i,"x"),c[1].setFromPointsField(i,"y"),c[2].setFromPointsField(i,"z"),this.invMatrix.copy(this.matrix).invert(),this.needsUpdate=!1}})();qe.prototype.intersectsBox=(function(){const r=new qt;return function(t){this.needsUpdate&&this.update();const n=t.min,i=t.max,s=this.satBounds,a=this.satAxes,o=this.alignedSatBounds;if(r.min=n.x,r.max=i.x,o[0].isSeparated(r)||(r.min=n.y,r.max=i.y,o[1].isSeparated(r))||(r.min=n.z,r.max=i.z,o[2].isSeparated(r)))return!1;for(let c=0;c<3;c++){const l=a[c],h=s[c];if(r.setFromBox(l,t),h.isSeparated(r))return!1}return!0}})();qe.prototype.intersectsTriangle=(function(){const r=new gt,e=new Array(3),t=new qt,n=new qt,i=new A.Vector3;return function(a){this.needsUpdate&&this.update(),a.isExtendedTriangle?a.needsUpdate&&a.update():(r.copy(a),r.update(),a=r);const o=this.satBounds,c=this.satAxes;e[0]=a.a,e[1]=a.b,e[2]=a.c;for(let m=0;m<3;m++){const p=o[m],b=c[m];if(t.setFromPoints(b,e),p.isSeparated(t))return!1}const l=a.satBounds,h=a.satAxes,d=this.points;for(let m=0;m<3;m++){const p=l[m],b=h[m];if(t.setFromPoints(b,d),p.isSeparated(t))return!1}for(let m=0;m<3;m++){const p=c[m];for(let b=0;b<4;b++){const T=h[b];if(i.crossVectors(p,T),t.setFromPoints(i,e),n.setFromPoints(i,d),t.isSeparated(n))return!1}}return!0}})();qe.prototype.closestPointToPoint=(function(){return function(e,t){return this.needsUpdate&&this.update(),t.copy(e).applyMatrix4(this.invMatrix).clamp(this.min,this.max).applyMatrix4(this.matrix),t}})();qe.prototype.distanceToPoint=(function(){const r=new A.Vector3;return function(t){return this.closestPointToPoint(t,r),t.distanceTo(r)}})();qe.prototype.distanceToBox=(function(){const r=["x","y","z"],e=new Array(12).fill().map(()=>new A.Line3),t=new Array(12).fill().map(()=>new A.Line3),n=new A.Vector3,i=new A.Vector3;return function(a,o=0,c=null,l=null){if(this.needsUpdate&&this.update(),this.intersectsBox(a))return(c||l)&&(a.getCenter(i),this.closestPointToPoint(i,n),a.closestPointToPoint(n,i),c&&c.copy(n),l&&l.copy(i)),0;const h=o*o,d=a.min,m=a.max,p=this.points;let b=1/0;for(let g=0;g<8;g++){const v=p[g];i.copy(v).clamp(d,m);const _=v.distanceToSquared(i);if(_<b&&(b=_,c&&c.copy(v),l&&l.copy(i),_<h))return Math.sqrt(_)}let T=0;for(let g=0;g<3;g++)for(let v=0;v<=1;v++)for(let _=0;_<=1;_++){const x=(g+1)%3,C=(g+2)%3,M=v<<x|_<<C,P=1<<g|v<<x|_<<C,E=p[M],O=p[P];e[T].set(E,O);const R=r[g],N=r[x],z=r[C],U=t[T],F=U.start,J=U.end;F[R]=d[R],F[N]=v?d[N]:m[N],F[z]=_?d[z]:m[N],J[R]=m[R],J[N]=v?d[N]:m[N],J[z]=_?d[z]:m[N],T++}for(let g=0;g<=1;g++)for(let v=0;v<=1;v++)for(let _=0;_<=1;_++){i.x=g?m.x:d.x,i.y=v?m.y:d.y,i.z=_?m.z:d.z,this.closestPointToPoint(i,n);const x=i.distanceToSquared(n);if(x<b&&(b=x,c&&c.copy(n),l&&l.copy(i),x<h))return Math.sqrt(x)}for(let g=0;g<12;g++){const v=e[g];for(let _=0;_<12;_++){const x=t[_];go(v,x,n,i);const C=n.distanceToSquared(i);if(C<b&&(b=C,c&&c.copy(n),l&&l.copy(i),C<h))return Math.sqrt(C)}}return Math.sqrt(b)}})();class $h extends mo{constructor(){super(()=>new gt)}}const yt=new $h,Yn=new A.Vector3,Ps=new A.Vector3;function Hh(r,e,t={},n=0,i=1/0){const s=n*n,a=i*i;let o=1/0,c=null;if(r.shapecast({boundsTraverseOrder:h=>(Yn.copy(e).clamp(h.min,h.max),Yn.distanceToSquared(e)),intersectsBounds:(h,d,m)=>m<o&&m<a,intersectsTriangle:(h,d)=>{h.closestPointToPoint(e,Yn);const m=e.distanceToSquared(Yn);return m<o&&(Ps.copy(Yn),o=m,c=d),m<s}}),o===1/0)return null;const l=Math.sqrt(o);return t.point?t.point.copy(Ps):t.point=Ps.clone(),t.distance=l,t.faceIndex=c,t}const ur=parseInt(A.REVISION)>=169,qh=parseInt(A.REVISION)<=161,ln=new A.Vector3,un=new A.Vector3,hn=new A.Vector3,hr=new A.Vector2,fr=new A.Vector2,dr=new A.Vector2,Pa=new A.Vector3,Ea=new A.Vector3,ka=new A.Vector3,Zn=new A.Vector3;function Xh(r,e,t,n,i,s,a,o){let c;if(s===A.BackSide?c=r.intersectTriangle(n,t,e,!0,i):c=r.intersectTriangle(e,t,n,s!==A.DoubleSide,i),c===null)return null;const l=r.origin.distanceTo(i);return l<a||l>o?null:{distance:l,point:i.clone()}}function Ra(r,e,t,n,i,s,a,o,c,l,h){ln.fromBufferAttribute(e,s),un.fromBufferAttribute(e,a),hn.fromBufferAttribute(e,o);const d=Xh(r,ln,un,hn,Zn,c,l,h);if(d){if(n){hr.fromBufferAttribute(n,s),fr.fromBufferAttribute(n,a),dr.fromBufferAttribute(n,o),d.uv=new A.Vector2;const p=A.Triangle.getInterpolation(Zn,ln,un,hn,hr,fr,dr,d.uv);ur||(d.uv=p)}if(i){hr.fromBufferAttribute(i,s),fr.fromBufferAttribute(i,a),dr.fromBufferAttribute(i,o),d.uv1=new A.Vector2;const p=A.Triangle.getInterpolation(Zn,ln,un,hn,hr,fr,dr,d.uv1);ur||(d.uv1=p),qh&&(d.uv2=d.uv1)}if(t){Pa.fromBufferAttribute(t,s),Ea.fromBufferAttribute(t,a),ka.fromBufferAttribute(t,o),d.normal=new A.Vector3;const p=A.Triangle.getInterpolation(Zn,ln,un,hn,Pa,Ea,ka,d.normal);d.normal.dot(r.direction)>0&&d.normal.multiplyScalar(-1),ur||(d.normal=p)}const m={a:s,b:a,c:o,normal:new A.Vector3,materialIndex:0};if(A.Triangle.getNormal(ln,un,hn,m.normal),d.face=m,d.faceIndex=s,ur){const p=new A.Vector3;A.Triangle.getBarycoord(Zn,ln,un,hn,p),d.barycoord=p}}return d}function Aa(r){return r&&r.isMaterial?r.side:r}function $r(r,e,t,n,i,s,a){const o=n*3;let c=o+0,l=o+1,h=o+2;const{index:d,groups:m}=r;r.index&&(c=d.getX(c),l=d.getX(l),h=d.getX(h));const{position:p,normal:b,uv:T,uv1:g}=r.attributes;if(Array.isArray(e)){const v=n*3;for(let _=0,x=m.length;_<x;_++){const{start:C,count:M,materialIndex:P}=m[_];if(v>=C&&v<C+M){const E=Aa(e[P]),O=Ra(t,p,b,T,g,c,l,h,E,s,a);if(O)if(O.faceIndex=n,O.face.materialIndex=P,i)i.push(O);else return O}}}else{const v=Aa(e),_=Ra(t,p,b,T,g,c,l,h,v,s,a);if(_)if(_.faceIndex=n,_.face.materialIndex=0,i)i.push(_);else return _}return null}function we(r,e,t,n){const i=r.a,s=r.b,a=r.c;let o=e,c=e+1,l=e+2;t&&(o=t.getX(o),c=t.getX(c),l=t.getX(l)),i.x=n.getX(o),i.y=n.getY(o),i.z=n.getZ(o),s.x=n.getX(c),s.y=n.getY(c),s.z=n.getZ(c),a.x=n.getX(l),a.y=n.getY(l),a.z=n.getZ(l)}function Yh(r,e,t,n,i,s,a,o){const{geometry:c,_indirectBuffer:l}=r;for(let h=n,d=n+i;h<d;h++)$r(c,e,t,h,s,a,o)}function Zh(r,e,t,n,i,s,a){const{geometry:o,_indirectBuffer:c}=r;let l=1/0,h=null;for(let d=n,m=n+i;d<m;d++){let p;p=$r(o,e,t,d,null,s,a),p&&p.distance<l&&(h=p,l=p.distance)}return h}function Kh(r,e,t,n,i,s,a){const{geometry:o}=t,{index:c}=o,l=o.attributes.position;for(let h=r,d=e+r;h<d;h++){let m;if(m=h,we(a,m*3,c,l),a.needsUpdate=!0,n(a,m,i,s))return!0}return!1}function Qh(r,e=null){e&&Array.isArray(e)&&(e=new Set(e));const t=r.geometry,n=t.index?t.index.array:null,i=t.attributes.position;let s,a,o,c,l=0;const h=r._roots;for(let m=0,p=h.length;m<p;m++)s=h[m],a=new Uint32Array(s),o=new Uint16Array(s),c=new Float32Array(s),d(0,l),l+=s.byteLength;function d(m,p,b=!1){const T=m*2;if(Ee(T,o)){const g=$e(m,a),v=tt(T,o);let _=1/0,x=1/0,C=1/0,M=-1/0,P=-1/0,E=-1/0;for(let O=3*g,I=3*(g+v);O<I;O++){let R=n[O];const N=i.getX(R),z=i.getY(R),U=i.getZ(R);N<_&&(_=N),N>M&&(M=N),z<x&&(x=z),z>P&&(P=z),U<C&&(C=U),U>E&&(E=U)}return c[m+0]!==_||c[m+1]!==x||c[m+2]!==C||c[m+3]!==M||c[m+4]!==P||c[m+5]!==E?(c[m+0]=_,c[m+1]=x,c[m+2]=C,c[m+3]=M,c[m+4]=P,c[m+5]=E,!0):!1}else{const g=Ie(m),v=Be(m,a);let _=b,x=!1,C=!1;if(e){if(!_){const R=g/Pe+p/We,N=v/Pe+p/We;x=e.has(R),C=e.has(N),_=!x&&!C}}else x=!0,C=!0;const M=_||x,P=_||C;let E=!1;M&&(E=d(g,p,_));let O=!1;P&&(O=d(v,p,_));const I=E||O;if(I)for(let R=0;R<3;R++){const N=g+R,z=v+R,U=c[N],F=c[N+3],J=c[z],$=c[z+3];c[m+R]=U<J?U:J,c[m+R+3]=F>$?F:$}return I}}}function rn(r,e,t,n,i){let s,a,o,c,l,h;const d=1/t.direction.x,m=1/t.direction.y,p=1/t.direction.z,b=t.origin.x,T=t.origin.y,g=t.origin.z;let v=e[r],_=e[r+3],x=e[r+1],C=e[r+3+1],M=e[r+2],P=e[r+3+2];return d>=0?(s=(v-b)*d,a=(_-b)*d):(s=(_-b)*d,a=(v-b)*d),m>=0?(o=(x-T)*m,c=(C-T)*m):(o=(C-T)*m,c=(x-T)*m),s>c||o>a||((o>s||isNaN(s))&&(s=o),(c<a||isNaN(a))&&(a=c),p>=0?(l=(M-g)*p,h=(P-g)*p):(l=(P-g)*p,h=(M-g)*p),s>h||l>a)?!1:((l>s||s!==s)&&(s=l),(h<a||a!==a)&&(a=h),s<=i&&a>=n)}function ef(r,e,t,n,i,s,a,o){const{geometry:c,_indirectBuffer:l}=r;for(let h=n,d=n+i;h<d;h++){let m=l?l[h]:h;$r(c,e,t,m,s,a,o)}}function tf(r,e,t,n,i,s,a){const{geometry:o,_indirectBuffer:c}=r;let l=1/0,h=null;for(let d=n,m=n+i;d<m;d++){let p;p=$r(o,e,t,c?c[d]:d,null,s,a),p&&p.distance<l&&(h=p,l=p.distance)}return h}function nf(r,e,t,n,i,s,a){const{geometry:o}=t,{index:c}=o,l=o.attributes.position;for(let h=r,d=e+r;h<d;h++){let m;if(m=t.resolveTriangleIndex(h),we(a,m*3,c,l),a.needsUpdate=!0,n(a,m,i,s))return!0}return!1}function rf(r,e,t,n,i,s,a){pe.setBuffer(r._roots[e]),Ys(0,r,t,n,i,s,a),pe.clearBuffer()}function Ys(r,e,t,n,i,s,a){const{float32Array:o,uint16Array:c,uint32Array:l}=pe,h=r*2;if(Ee(h,c)){const m=$e(r,l),p=tt(h,c);Yh(e,t,n,m,p,i,s,a)}else{const m=Ie(r);rn(m,o,n,s,a)&&Ys(m,e,t,n,i,s,a);const p=Be(r,l);rn(p,o,n,s,a)&&Ys(p,e,t,n,i,s,a)}}const sf=["x","y","z"];function of(r,e,t,n,i,s){pe.setBuffer(r._roots[e]);const a=Zs(0,r,t,n,i,s);return pe.clearBuffer(),a}function Zs(r,e,t,n,i,s){const{float32Array:a,uint16Array:o,uint32Array:c}=pe;let l=r*2;if(Ee(l,o)){const d=$e(r,c),m=tt(l,o);return Zh(e,t,n,d,m,i,s)}else{const d=po(r,c),m=sf[d],b=n.direction[m]>=0;let T,g;b?(T=Ie(r),g=Be(r,c)):(T=Be(r,c),g=Ie(r));const _=rn(T,a,n,i,s)?Zs(T,e,t,n,i,s):null;if(_){const M=_.point[m];if(b?M<=a[g+d]:M>=a[g+d+3])return _}const C=rn(g,a,n,i,s)?Zs(g,e,t,n,i,s):null;return _&&C?_.distance<=C.distance?_:C:_||C||null}}const pr=new A.Box3,An=new gt,On=new gt,Kn=new A.Matrix4,Oa=new qe,mr=new qe;function af(r,e,t,n){pe.setBuffer(r._roots[e]);const i=Ks(0,r,t,n);return pe.clearBuffer(),i}function Ks(r,e,t,n,i=null){const{float32Array:s,uint16Array:a,uint32Array:o}=pe;let c=r*2;if(i===null&&(t.boundingBox||t.computeBoundingBox(),Oa.set(t.boundingBox.min,t.boundingBox.max,n),i=Oa),Ee(c,a)){const h=e.geometry,d=h.index,m=h.attributes.position,p=t.index,b=t.attributes.position,T=$e(r,o),g=tt(c,a);if(Kn.copy(n).invert(),t.boundsTree)return Se(r,s,mr),mr.matrix.copy(Kn),mr.needsUpdate=!0,t.boundsTree.shapecast({intersectsBounds:_=>mr.intersectsBox(_),intersectsTriangle:_=>{_.a.applyMatrix4(n),_.b.applyMatrix4(n),_.c.applyMatrix4(n),_.needsUpdate=!0;for(let x=T*3,C=(g+T)*3;x<C;x+=3)if(we(On,x,d,m),On.needsUpdate=!0,_.intersectsTriangle(On))return!0;return!1}});{const v=Wr(t);for(let _=T*3,x=(g+T)*3;_<x;_+=3){we(An,_,d,m),An.a.applyMatrix4(Kn),An.b.applyMatrix4(Kn),An.c.applyMatrix4(Kn),An.needsUpdate=!0;for(let C=0,M=v*3;C<M;C+=3)if(we(On,C,p,b),On.needsUpdate=!0,An.intersectsTriangle(On))return!0}}}else{const h=Ie(r),d=Be(r,o);return Se(h,s,pr),!!(i.intersectsBox(pr)&&Ks(h,e,t,n,i)||(Se(d,s,pr),i.intersectsBox(pr)&&Ks(d,e,t,n,i)))}}const yr=new A.Matrix4,Es=new qe,Qn=new qe,cf=new A.Vector3,lf=new A.Vector3,uf=new A.Vector3,hf=new A.Vector3;function ff(r,e,t,n={},i={},s=0,a=1/0){e.boundingBox||e.computeBoundingBox(),Es.set(e.boundingBox.min,e.boundingBox.max,t),Es.needsUpdate=!0;const o=r.geometry,c=o.attributes.position,l=o.index,h=e.attributes.position,d=e.index,m=yt.getPrimitive(),p=yt.getPrimitive();let b=cf,T=lf,g=null,v=null;i&&(g=uf,v=hf);let _=1/0,x=null,C=null;return yr.copy(t).invert(),Qn.matrix.copy(yr),r.shapecast({boundsTraverseOrder:M=>Es.distanceToBox(M),intersectsBounds:(M,P,E)=>E<_&&E<a?(P&&(Qn.min.copy(M.min),Qn.max.copy(M.max),Qn.needsUpdate=!0),!0):!1,intersectsRange:(M,P)=>{if(e.boundsTree)return e.boundsTree.shapecast({boundsTraverseOrder:O=>Qn.distanceToBox(O),intersectsBounds:(O,I,R)=>R<_&&R<a,intersectsRange:(O,I)=>{for(let R=O,N=O+I;R<N;R++){we(p,3*R,d,h),p.a.applyMatrix4(t),p.b.applyMatrix4(t),p.c.applyMatrix4(t),p.needsUpdate=!0;for(let z=M,U=M+P;z<U;z++){we(m,3*z,l,c),m.needsUpdate=!0;const F=m.distanceToTriangle(p,b,g);if(F<_&&(T.copy(b),v&&v.copy(g),_=F,x=z,C=R),F<s)return!0}}}});{const E=Wr(e);for(let O=0,I=E;O<I;O++){we(p,3*O,d,h),p.a.applyMatrix4(t),p.b.applyMatrix4(t),p.c.applyMatrix4(t),p.needsUpdate=!0;for(let R=M,N=M+P;R<N;R++){we(m,3*R,l,c),m.needsUpdate=!0;const z=m.distanceToTriangle(p,b,g);if(z<_&&(T.copy(b),v&&v.copy(g),_=z,x=R,C=O),z<s)return!0}}}}}),yt.releasePrimitive(m),yt.releasePrimitive(p),_===1/0?null:(n.point?n.point.copy(T):n.point=T.clone(),n.distance=_,n.faceIndex=x,i&&(i.point?i.point.copy(v):i.point=v.clone(),i.point.applyMatrix4(yr),T.applyMatrix4(yr),i.distance=T.sub(i.point).length(),i.faceIndex=C),n)}function df(r,e=null){e&&Array.isArray(e)&&(e=new Set(e));const t=r.geometry,n=t.index?t.index.array:null,i=t.attributes.position;let s,a,o,c,l=0;const h=r._roots;for(let m=0,p=h.length;m<p;m++)s=h[m],a=new Uint32Array(s),o=new Uint16Array(s),c=new Float32Array(s),d(0,l),l+=s.byteLength;function d(m,p,b=!1){const T=m*2;if(Ee(T,o)){const g=$e(m,a),v=tt(T,o);let _=1/0,x=1/0,C=1/0,M=-1/0,P=-1/0,E=-1/0;for(let O=g,I=g+v;O<I;O++){const R=3*r.resolveTriangleIndex(O);for(let N=0;N<3;N++){let z=R+N;z=n?n[z]:z;const U=i.getX(z),F=i.getY(z),J=i.getZ(z);U<_&&(_=U),U>M&&(M=U),F<x&&(x=F),F>P&&(P=F),J<C&&(C=J),J>E&&(E=J)}}return c[m+0]!==_||c[m+1]!==x||c[m+2]!==C||c[m+3]!==M||c[m+4]!==P||c[m+5]!==E?(c[m+0]=_,c[m+1]=x,c[m+2]=C,c[m+3]=M,c[m+4]=P,c[m+5]=E,!0):!1}else{const g=Ie(m),v=Be(m,a);let _=b,x=!1,C=!1;if(e){if(!_){const R=g/Pe+p/We,N=v/Pe+p/We;x=e.has(R),C=e.has(N),_=!x&&!C}}else x=!0,C=!0;const M=_||x,P=_||C;let E=!1;M&&(E=d(g,p,_));let O=!1;P&&(O=d(v,p,_));const I=E||O;if(I)for(let R=0;R<3;R++){const N=g+R,z=v+R,U=c[N],F=c[N+3],J=c[z],$=c[z+3];c[m+R]=U<J?U:J,c[m+R+3]=F>$?F:$}return I}}}function pf(r,e,t,n,i,s,a){pe.setBuffer(r._roots[e]),Qs(0,r,t,n,i,s,a),pe.clearBuffer()}function Qs(r,e,t,n,i,s,a){const{float32Array:o,uint16Array:c,uint32Array:l}=pe,h=r*2;if(Ee(h,c)){const m=$e(r,l),p=tt(h,c);ef(e,t,n,m,p,i,s,a)}else{const m=Ie(r);rn(m,o,n,s,a)&&Qs(m,e,t,n,i,s,a);const p=Be(r,l);rn(p,o,n,s,a)&&Qs(p,e,t,n,i,s,a)}}const mf=["x","y","z"];function yf(r,e,t,n,i,s){pe.setBuffer(r._roots[e]);const a=eo(0,r,t,n,i,s);return pe.clearBuffer(),a}function eo(r,e,t,n,i,s){const{float32Array:a,uint16Array:o,uint32Array:c}=pe;let l=r*2;if(Ee(l,o)){const d=$e(r,c),m=tt(l,o);return tf(e,t,n,d,m,i,s)}else{const d=po(r,c),m=mf[d],b=n.direction[m]>=0;let T,g;b?(T=Ie(r),g=Be(r,c)):(T=Be(r,c),g=Ie(r));const _=rn(T,a,n,i,s)?eo(T,e,t,n,i,s):null;if(_){const M=_.point[m];if(b?M<=a[g+d]:M>=a[g+d+3])return _}const C=rn(g,a,n,i,s)?eo(g,e,t,n,i,s):null;return _&&C?_.distance<=C.distance?_:C:_||C||null}}const gr=new A.Box3,zn=new gt,In=new gt,ei=new A.Matrix4,za=new qe,vr=new qe;function gf(r,e,t,n){pe.setBuffer(r._roots[e]);const i=to(0,r,t,n);return pe.clearBuffer(),i}function to(r,e,t,n,i=null){const{float32Array:s,uint16Array:a,uint32Array:o}=pe;let c=r*2;if(i===null&&(t.boundingBox||t.computeBoundingBox(),za.set(t.boundingBox.min,t.boundingBox.max,n),i=za),Ee(c,a)){const h=e.geometry,d=h.index,m=h.attributes.position,p=t.index,b=t.attributes.position,T=$e(r,o),g=tt(c,a);if(ei.copy(n).invert(),t.boundsTree)return Se(r,s,vr),vr.matrix.copy(ei),vr.needsUpdate=!0,t.boundsTree.shapecast({intersectsBounds:_=>vr.intersectsBox(_),intersectsTriangle:_=>{_.a.applyMatrix4(n),_.b.applyMatrix4(n),_.c.applyMatrix4(n),_.needsUpdate=!0;for(let x=T,C=g+T;x<C;x++)if(we(In,3*e.resolveTriangleIndex(x),d,m),In.needsUpdate=!0,_.intersectsTriangle(In))return!0;return!1}});{const v=Wr(t);for(let _=T,x=g+T;_<x;_++){const C=e.resolveTriangleIndex(_);we(zn,3*C,d,m),zn.a.applyMatrix4(ei),zn.b.applyMatrix4(ei),zn.c.applyMatrix4(ei),zn.needsUpdate=!0;for(let M=0,P=v*3;M<P;M+=3)if(we(In,M,p,b),In.needsUpdate=!0,zn.intersectsTriangle(In))return!0}}}else{const h=Ie(r),d=Be(r,o);return Se(h,s,gr),!!(i.intersectsBox(gr)&&to(h,e,t,n,i)||(Se(d,s,gr),i.intersectsBox(gr)&&to(d,e,t,n,i)))}}const Sr=new A.Matrix4,ks=new qe,ti=new qe,vf=new A.Vector3,Sf=new A.Vector3,xf=new A.Vector3,_f=new A.Vector3;function bf(r,e,t,n={},i={},s=0,a=1/0){e.boundingBox||e.computeBoundingBox(),ks.set(e.boundingBox.min,e.boundingBox.max,t),ks.needsUpdate=!0;const o=r.geometry,c=o.attributes.position,l=o.index,h=e.attributes.position,d=e.index,m=yt.getPrimitive(),p=yt.getPrimitive();let b=vf,T=Sf,g=null,v=null;i&&(g=xf,v=_f);let _=1/0,x=null,C=null;return Sr.copy(t).invert(),ti.matrix.copy(Sr),r.shapecast({boundsTraverseOrder:M=>ks.distanceToBox(M),intersectsBounds:(M,P,E)=>E<_&&E<a?(P&&(ti.min.copy(M.min),ti.max.copy(M.max),ti.needsUpdate=!0),!0):!1,intersectsRange:(M,P)=>{if(e.boundsTree){const E=e.boundsTree;return E.shapecast({boundsTraverseOrder:O=>ti.distanceToBox(O),intersectsBounds:(O,I,R)=>R<_&&R<a,intersectsRange:(O,I)=>{for(let R=O,N=O+I;R<N;R++){const z=E.resolveTriangleIndex(R);we(p,3*z,d,h),p.a.applyMatrix4(t),p.b.applyMatrix4(t),p.c.applyMatrix4(t),p.needsUpdate=!0;for(let U=M,F=M+P;U<F;U++){const J=r.resolveTriangleIndex(U);we(m,3*J,l,c),m.needsUpdate=!0;const $=m.distanceToTriangle(p,b,g);if($<_&&(T.copy(b),v&&v.copy(g),_=$,x=U,C=R),$<s)return!0}}}})}else{const E=Wr(e);for(let O=0,I=E;O<I;O++){we(p,3*O,d,h),p.a.applyMatrix4(t),p.b.applyMatrix4(t),p.c.applyMatrix4(t),p.needsUpdate=!0;for(let R=M,N=M+P;R<N;R++){const z=r.resolveTriangleIndex(R);we(m,3*z,l,c),m.needsUpdate=!0;const U=m.distanceToTriangle(p,b,g);if(U<_&&(T.copy(b),v&&v.copy(g),_=U,x=R,C=O),U<s)return!0}}}}}),yt.releasePrimitive(m),yt.releasePrimitive(p),_===1/0?null:(n.point?n.point.copy(T):n.point=T.clone(),n.distance=_,n.faceIndex=x,i&&(i.point?i.point.copy(v):i.point=v.clone(),i.point.applyMatrix4(Sr),T.applyMatrix4(Sr),i.distance=T.sub(i.point).length(),i.faceIndex=C),n)}function Ia(r,e,t){return r===null?null:(r.point.applyMatrix4(e.matrixWorld),r.distance=r.point.distanceTo(t.ray.origin),r.object=e,r)}const xr=new qe,_r=new A.Ray,Ba=new A.Vector3,Na=new A.Matrix4,Ua=new A.Vector3,Rs=["getX","getY","getZ"];class Vn extends Xc{static serialize(e,t={}){t={cloneBuffers:!0,...t};const n=e.geometry,i=e._roots,s=e._indirectBuffer,a=n.getIndex(),o={version:1,roots:null,index:null,indirectBuffer:null};return t.cloneBuffers?(o.roots=i.map(c=>c.slice()),o.index=a?a.array.slice():null,o.indirectBuffer=s?s.slice():null):(o.roots=i,o.index=a?a.array:null,o.indirectBuffer=s),o}static deserialize(e,t,n={}){n={setIndex:!0,indirect:!!e.indirectBuffer,...n};const{index:i,roots:s,indirectBuffer:a}=e;e.version||(console.warn("MeshBVH.deserialize: Serialization format has been changed and will be fixed up. It is recommended to regenerate any stored serialized data."),c(s));const o=new Vn(t,{...n,[Gr]:!0});if(o._roots=s,o._indirectBuffer=a||null,n.setIndex){const l=t.getIndex();if(l===null){const h=new A.BufferAttribute(e.index,1,!1);t.setIndex(h)}else l.array!==i&&(l.array.set(i),l.needsUpdate=!0)}return o;function c(l){for(let h=0;h<l.length;h++){const d=l[h],m=new Uint32Array(d),p=new Uint16Array(d);for(let b=0,T=d.byteLength/We;b<T;b++){const g=Pe*b,v=2*g;Ee(v,p)||(m[g+6]=m[g+6]/Pe-b)}}}}get primitiveStride(){return 3}get resolveTriangleIndex(){return this.resolvePrimitiveIndex}constructor(e,t={}){t.maxLeafTris&&(console.warn('MeshBVH: "maxLeafTris" option has been deprecated. Use maxLeafSize, instead.'),t={...t,maxLeafSize:t.maxLeafTris}),super(e,t)}shiftTriangleOffsets(e){return super.shiftPrimitiveOffsets(e)}writePrimitiveBounds(e,t,n){const i=this.geometry,s=this._indirectBuffer,a=i.attributes.position,o=i.index?i.index.array:null,l=(s?s[e]:e)*3;let h=l+0,d=l+1,m=l+2;o&&(h=o[h],d=o[d],m=o[m]);for(let p=0;p<3;p++){const b=a[Rs[p]](h),T=a[Rs[p]](d),g=a[Rs[p]](m);let v=b;T<v&&(v=T),g<v&&(v=g);let _=b;T>_&&(_=T),g>_&&(_=g),t[n+p]=v,t[n+p+3]=_}return t}computePrimitiveBounds(e,t,n){const i=this.geometry,s=this._indirectBuffer,a=i.attributes.position,o=i.index?i.index.array:null,c=a.normalized;if(e<0||t+e-n.offset>n.length/6)throw new Error("MeshBVH: compute triangle bounds range is invalid.");const l=a.array,h=a.offset||0;let d=3;a.isInterleavedBufferAttribute&&(d=a.data.stride);const m=["getX","getY","getZ"],p=n.offset;for(let b=e,T=e+t;b<T;b++){const v=(s?s[b]:b)*3,_=(b-p)*6;let x=v+0,C=v+1,M=v+2;o&&(x=o[x],C=o[C],M=o[M]),c||(x=x*d+h,C=C*d+h,M=M*d+h);for(let P=0;P<3;P++){let E,O,I;c?(E=a[m[P]](x),O=a[m[P]](C),I=a[m[P]](M)):(E=l[x+P],O=l[C+P],I=l[M+P]);let R=E;O<R&&(R=O),I<R&&(R=I);let N=E;O>N&&(N=O),I>N&&(N=I);const z=(N-R)/2,U=P*2;n[_+U+0]=R+z,n[_+U+1]=z+(Math.abs(R)+z)*kr}}return n}raycastObject3D(e,t,n=[]){const{material:i}=e;if(i===void 0)return;Na.copy(e.matrixWorld).invert(),_r.copy(t.ray).applyMatrix4(Na),Ua.setFromMatrixScale(e.matrixWorld),Ba.copy(_r.direction).multiply(Ua);const s=Ba.length(),a=t.near/s,o=t.far/s;if(t.firstHitOnly===!0){let c=this.raycastFirst(_r,i,a,o);c=Ia(c,e,t),c&&n.push(c)}else{const c=this.raycast(_r,i,a,o);for(let l=0,h=c.length;l<h;l++){const d=Ia(c[l],e,t);d&&n.push(d)}}return n}refit(e=null){return(this.indirect?df:Qh)(this,e)}raycast(e,t=A.FrontSide,n=0,i=1/0){const s=this._roots,a=[],o=this.indirect?pf:rf;for(let c=0,l=s.length;c<l;c++)o(this,c,t,e,a,n,i);return a}raycastFirst(e,t=A.FrontSide,n=0,i=1/0){const s=this._roots;let a=null;const o=this.indirect?yf:of;for(let c=0,l=s.length;c<l;c++){const h=o(this,c,t,e,n,i);h!=null&&(a==null||h.distance<a.distance)&&(a=h)}return a}intersectsGeometry(e,t){let n=!1;const i=this._roots,s=this.indirect?gf:af;for(let a=0,o=i.length;a<o&&(n=s(this,a,e,t),!n);a++);return n}shapecast(e){const t=yt.getPrimitive(),n=super.shapecast({...e,intersectsPrimitive:e.intersectsTriangle,scratchPrimitive:t,iterate:this.indirect?nf:Kh});return yt.releasePrimitive(t),n}bvhcast(e,t,n){let{intersectsRanges:i,intersectsTriangles:s}=n;const a=yt.getPrimitive(),o=this.geometry.index,c=this.geometry.attributes.position,l=this.indirect?b=>{const T=this.resolveTriangleIndex(b);we(a,T*3,o,c)}:b=>{we(a,b*3,o,c)},h=yt.getPrimitive(),d=e.geometry.index,m=e.geometry.attributes.position,p=e.indirect?b=>{const T=e.resolveTriangleIndex(b);we(h,T*3,d,m)}:b=>{we(h,b*3,d,m)};if(s){if(!(e instanceof Vn))throw new Error('MeshBVH: "intersectsTriangles" callback can only be used with another MeshBVH.');const b=(T,g,v,_,x,C,M,P)=>{for(let E=v,O=v+_;E<O;E++){p(E),h.a.applyMatrix4(t),h.b.applyMatrix4(t),h.c.applyMatrix4(t),h.needsUpdate=!0;for(let I=T,R=T+g;I<R;I++)if(l(I),a.needsUpdate=!0,s(a,h,I,E,x,C,M,P))return!0}return!1};if(i){const T=i;i=function(g,v,_,x,C,M,P,E){return T(g,v,_,x,C,M,P,E)?!0:b(g,v,_,x,C,M,P,E)}}else i=b}return super.bvhcast(e,t,{intersectsRanges:i})}intersectsBox(e,t){return xr.set(e.min,e.max,t),xr.needsUpdate=!0,this.shapecast({intersectsBounds:n=>xr.intersectsBox(n),intersectsTriangle:n=>xr.intersectsTriangle(n)})}intersectsSphere(e){return this.shapecast({intersectsBounds:t=>e.intersectsBox(t),intersectsTriangle:t=>t.intersectsSphere(e)})}closestPointToGeometry(e,t,n={},i={},s=0,a=1/0){return(this.indirect?bf:ff)(this,e,t,n,i,s,a)}closestPointToPoint(e,t={},n=0,i=1/0){return Hh(this,e,t,n,i)}}const Bn={Mesh:A.Mesh.prototype.raycast,Line:A.Line.prototype.raycast,LineSegments:A.LineSegments.prototype.raycast,LineLoop:A.LineLoop.prototype.raycast,Points:A.Points.prototype.raycast,BatchedMesh:A.BatchedMesh.prototype.raycast},De=new A.Mesh,br=[];function Tf(r,e){if(this.isBatchedMesh)Mf.call(this,r,e);else{const{geometry:t}=this;if(t.boundsTree)t.boundsTree.raycastObject3D(this,r,e);else{let n;if(this instanceof A.Mesh)n=Bn.Mesh;else if(this instanceof A.LineSegments)n=Bn.LineSegments;else if(this instanceof A.LineLoop)n=Bn.LineLoop;else if(this instanceof A.Line)n=Bn.Line;else if(this instanceof A.Points)n=Bn.Points;else throw new Error("BVH: Fallback raycast function not found.");n.call(this,r,e)}}}function Mf(r,e){if(this.boundsTrees){const t=this.boundsTrees,n=this._drawInfo||this._instanceInfo,i=this._drawRanges||this._geometryInfo,s=this.matrixWorld;De.material=this.material,De.geometry=this.geometry;const a=De.geometry.boundsTree,o=De.geometry.drawRange;De.geometry.boundingSphere===null&&(De.geometry.boundingSphere=new A.Sphere);for(let c=0,l=n.length;c<l;c++){if(!this.getVisibleAt(c))continue;const h=n[c].geometryIndex;if(De.geometry.boundsTree=t[h],this.getMatrixAt(c,De.matrixWorld).premultiply(s),!De.geometry.boundsTree){this.getBoundingBoxAt(h,De.geometry.boundingBox),this.getBoundingSphereAt(h,De.geometry.boundingSphere);const d=i[h];De.geometry.setDrawRange(d.start,d.count)}De.raycast(r,br);for(let d=0,m=br.length;d<m;d++){const p=br[d];p.object=this,p.batchId=c,e.push(p)}br.length=0}De.geometry.boundsTree=a,De.geometry.drawRange=o,De.material=null,De.geometry=null}else Bn.BatchedMesh.call(this,r,e)}function Cf(r={}){const{type:e=Vn}=r;return this.boundsTree=new e(this,r),this.boundsTree}const fn=new A.Vector3,dn=new A.Vector3,pn=new A.Vector3,Da=new A.Vector4,Tr=new A.Vector3,As=new A.Vector3,La=new A.Vector4,Fa=new A.Vector4,Mr=new A.Matrix4,Va=new A.Matrix4;function ni(r,e){if(!r&&!e)return;const t=r.count===e.count,n=r.normalized===e.normalized,i=r.array.constructor===e.array.constructor,s=r.itemSize===e.itemSize;if(!t||!n||!i||!s)throw new Error}function oi(r,e=null){const t=r.array.constructor,n=r.normalized,i=r.itemSize,s=e===null?r.count:e;return new A.BufferAttribute(new t(i*s),i,n)}function Yc(r,e,t=0){if(r.isInterleavedBufferAttribute){const n=r.itemSize;for(let i=0,s=r.count;i<s;i++){const a=i+t;e.setX(a,r.getX(i)),n>=2&&e.setY(a,r.getY(i)),n>=3&&e.setZ(a,r.getZ(i)),n>=4&&e.setW(a,r.getW(i))}}else{const n=e.array,i=n.constructor,s=n.BYTES_PER_ELEMENT*r.itemSize*t;new i(n.buffer,s,r.array.length).set(r.array)}}function wf(r,e,t){const n=r.elements,i=e.elements;for(let s=0,a=i.length;s<a;s++)n[s]+=i[s]*t}function Ja(r,e,t){const n=r.skeleton,i=r.geometry,s=n.bones,a=n.boneInverses;La.fromBufferAttribute(i.attributes.skinIndex,e),Fa.fromBufferAttribute(i.attributes.skinWeight,e),Mr.elements.fill(0);for(let o=0;o<4;o++){const c=Fa.getComponent(o);if(c!==0){const l=La.getComponent(o);Va.multiplyMatrices(s[l].matrixWorld,a[l]),wf(Mr,Va,c)}}return Mr.multiply(r.bindMatrix).premultiply(r.bindMatrixInverse),t.transformDirection(Mr),t}function Os(r,e,t,n,i){Tr.set(0,0,0);for(let s=0,a=r.length;s<a;s++){const o=e[s],c=r[s];o!==0&&(As.fromBufferAttribute(c,n),t?Tr.addScaledVector(As,o):Tr.addScaledVector(As.sub(i),o))}i.add(Tr)}function Pf(r,e={useGroups:!1,updateIndex:!1,skipAttributes:[]},t=new A.BufferGeometry){const n=r[0].index!==null,{useGroups:i=!1,updateIndex:s=!1,skipAttributes:a=[]}=e,o=new Set(Object.keys(r[0].attributes)),c={};let l=0;t.clearGroups();for(let h=0;h<r.length;++h){const d=r[h];let m=0;if(n!==(d.index!==null))throw new Error("StaticGeometryGenerator: All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them.");for(const p in d.attributes){if(!o.has(p))throw new Error('StaticGeometryGenerator: All geometries must have compatible attributes; make sure "'+p+'" attribute exists among all geometries, or in none of them.');c[p]===void 0&&(c[p]=[]),c[p].push(d.attributes[p]),m++}if(m!==o.size)throw new Error("StaticGeometryGenerator: Make sure all geometries have the same number of attributes.");if(i){let p;if(n)p=d.index.count;else if(d.attributes.position!==void 0)p=d.attributes.position.count;else throw new Error("StaticGeometryGenerator: The geometry must have either an index or a position attribute");t.addGroup(l,p,h),l+=p}}if(n){let h=!1;if(!t.index){let d=0;for(let m=0;m<r.length;++m)d+=r[m].index.count;t.setIndex(new A.BufferAttribute(new Uint32Array(d),1,!1)),h=!0}if(s||h){const d=t.index;let m=0,p=0;for(let b=0;b<r.length;++b){const T=r[b],g=T.index;if(a[b]!==!0)for(let v=0;v<g.count;++v)d.setX(m,g.getX(v)+p),m++;p+=T.attributes.position.count}}}for(const h in c){const d=c[h];if(!(h in t.attributes)){let b=0;for(const T in d)b+=d[T].count;t.setAttribute(h,oi(c[h][0],b))}const m=t.attributes[h];let p=0;for(let b=0,T=d.length;b<T;b++){const g=d[b];a[b]!==!0&&Yc(g,m,p),p+=g.count}}return t}function Ef(r,e){if(r===null||e===null)return r===e;if(r.length!==e.length)return!1;for(let t=0,n=r.length;t<n;t++)if(r[t]!==e[t])return!1;return!0}function kf(r){const{index:e,attributes:t}=r;if(e)for(let n=0,i=e.count;n<i;n+=3){const s=e.getX(n),a=e.getX(n+2);e.setX(n,a),e.setX(n+2,s)}else for(const n in t){const i=t[n],s=i.itemSize;for(let a=0,o=i.count;a<o;a+=3)for(let c=0;c<s;c++){const l=i.getComponent(a,c),h=i.getComponent(a+2,c);i.setComponent(a,c,h),i.setComponent(a+2,c,l)}}return r}class Rf{constructor(e){this.matrixWorld=new A.Matrix4,this.geometryHash=null,this.boneMatrices=null,this.primitiveCount=-1,this.mesh=e,this.update()}update(){const e=this.mesh,t=e.geometry,n=e.skeleton,i=(t.index?t.index.count:t.attributes.position.count)/3;if(this.matrixWorld.copy(e.matrixWorld),this.geometryHash=t.attributes.position.version,this.primitiveCount=i,n){n.boneTexture||n.computeBoneTexture(),n.update();const s=n.boneMatrices;!this.boneMatrices||this.boneMatrices.length!==s.length?this.boneMatrices=s.slice():this.boneMatrices.set(s)}else this.boneMatrices=null}didChange(){const e=this.mesh,t=e.geometry,n=(t.index?t.index.count:t.attributes.position.count)/3;return!(this.matrixWorld.equals(e.matrixWorld)&&this.geometryHash===t.attributes.position.version&&Ef(e.skeleton&&e.skeleton.boneMatrices||null,this.boneMatrices)&&this.primitiveCount===n)}}class Af{constructor(e){Array.isArray(e)||(e=[e]);const t=[];e.forEach(n=>{n.traverseVisible(i=>{i.isMesh&&t.push(i)})}),this.meshes=t,this.useGroups=!0,this.applyWorldTransforms=!0,this.attributes=["position","normal","color","tangent","uv","uv2"],this._intermediateGeometry=new Array(t.length).fill().map(()=>new A.BufferGeometry),this._diffMap=new WeakMap}getMaterials(){const e=[];return this.meshes.forEach(t=>{Array.isArray(t.material)?e.push(...t.material):e.push(t.material)}),e}generate(e=new A.BufferGeometry){let t=[];const{meshes:n,useGroups:i,_intermediateGeometry:s,_diffMap:a}=this;for(let o=0,c=n.length;o<c;o++){const l=n[o],h=s[o],d=a.get(l);!d||d.didChange(l)?(this._convertToStaticGeometry(l,h),t.push(!1),d?d.update():a.set(l,new Rf(l))):t.push(!0)}if(s.length===0){e.setIndex(null);const o=e.attributes;for(const c in o)e.deleteAttribute(c);for(const c in this.attributes)e.setAttribute(this.attributes[c],new A.BufferAttribute(new Float32Array(0),4,!1))}else Pf(s,{useGroups:i,skipAttributes:t},e);for(const o in e.attributes)e.attributes[o].needsUpdate=!0;return e}_convertToStaticGeometry(e,t=new A.BufferGeometry){const n=e.geometry,i=this.applyWorldTransforms,s=this.attributes.includes("normal"),a=this.attributes.includes("tangent"),o=n.attributes,c=t.attributes;!t.index&&n.index&&(t.index=n.index.clone()),c.position||t.setAttribute("position",oi(o.position)),s&&!c.normal&&o.normal&&t.setAttribute("normal",oi(o.normal)),a&&!c.tangent&&o.tangent&&t.setAttribute("tangent",oi(o.tangent)),ni(n.index,t.index),ni(o.position,c.position),s&&ni(o.normal,c.normal),a&&ni(o.tangent,c.tangent);const l=o.position,h=s?o.normal:null,d=a?o.tangent:null,m=n.morphAttributes.position,p=n.morphAttributes.normal,b=n.morphAttributes.tangent,T=n.morphTargetsRelative,g=e.morphTargetInfluences,v=new A.Matrix3;v.getNormalMatrix(e.matrixWorld),n.index&&t.index.array.set(n.index.array);for(let _=0,x=o.position.count;_<x;_++)fn.fromBufferAttribute(l,_),h&&dn.fromBufferAttribute(h,_),d&&(Da.fromBufferAttribute(d,_),pn.fromBufferAttribute(d,_)),g&&(m&&Os(m,g,T,_,fn),p&&Os(p,g,T,_,dn),b&&Os(b,g,T,_,pn)),e.isSkinnedMesh&&(e.applyBoneTransform(_,fn),h&&Ja(e,_,dn),d&&Ja(e,_,pn)),i&&fn.applyMatrix4(e.matrixWorld),c.position.setXYZ(_,fn.x,fn.y,fn.z),h&&(i&&dn.applyNormalMatrix(v),c.normal.setXYZ(_,dn.x,dn.y,dn.z)),d&&(i&&pn.transformDirection(e.matrixWorld),c.tangent.setXYZW(_,pn.x,pn.y,pn.z,Da.w));for(const _ in this.attributes){const x=this.attributes[_];x==="position"||x==="tangent"||x==="normal"||!(x in o)||(c[x]||t.setAttribute(x,oi(o[x])),ni(o[x],c[x]),Yc(o[x],c[x]))}return e.matrixWorld.determinant()<0&&kf(t),t}}const Of=Object.freeze(Object.defineProperty({__proto__:null,AVERAGE:Vc,BVH:Hc,CENTER:fo,CONTAINED:Ws,ExtendedTriangle:gt,GeometryBVH:Xc,MeshBVH:Vn,OrientedBox:qe,SAH:Jc,SKIP_GENERATION:Gr,StaticGeometryGenerator:Af,acceleratedRaycast:Tf,computeBoundsTree:Cf,generateIndirectBuffer:qc},Symbol.toStringTag,{value:"Module"}));class zf{constructor(e){this.name="WorkerBase",this.running=!1,this.worker=e,this.worker.onerror=t=>{throw t.message?new Error(`${this.name}: Could not create Web Worker with error "${t.message}"`):new Error(`${this.name}: Could not create Web Worker.`)}}runTask(){}generate(...e){if(this.running)throw new Error("GenerateMeshBVHWorker: Already running job.");if(this.worker===null)throw new Error("GenerateMeshBVHWorker: Worker has been disposed.");this.running=!0;const t=this.runTask(this.worker,...e);return t.finally(()=>{this.running=!1}),t}dispose(){this.worker.terminate(),this.worker=null}}const mt={node:"node",material:"material",camera:"camera",light:"light"},mn="KHR_animation_pointer",If={CUBICSPLINE:void 0,LINEAR:A.InterpolateLinear,STEP:A.InterpolateDiscrete};class Bf{constructor(e){this.name=mn,this.parser=e,this.animationPointerResolver=null,this.pointerPathMap=new Map}setAnimationPointerResolver(e){return this.animationPointerResolver=e,this}loadAnimationTargetFromChannel(e){const t=e.target,n=t.node!==void 0?t.node:t.id;return this.parser.getDependency("node",n)}loadAnimationTargetFromChannelWithAnimationPointer(e){Uf();const t=e.target,n=t.extensions&&t.extensions[mn]&&t.path&&t.path==="pointer";if(!n)return null;let i,s=mt.node,a;if(n){const c=t.extensions[mn];let l=c.pointer;if(!l){console.warn("Invalid path",c,t);return}if(l.startsWith("/materials/")?s=mt.material:l.startsWith("/extensions/KHR_lights_punctual/lights/")?s=mt.light:l.startsWith("/cameras/")&&(s=mt.camera),a=this._tryResolveTargetId(l,s),a===null||isNaN(a)){console.warn("Failed resolving animation node id: "+a,l);return}switch(s){case mt.material:const d=("/materials/"+a.toString()+"/").length,m=l.substring(0,d);switch(i=l.substring(d),i){case"pbrMetallicRoughness/baseColorFactor":i="color";break;case"pbrMetallicRoughness/roughnessFactor":i="roughness";break;case"pbrMetallicRoughness/metallicFactor":i="metalness";break;case"emissiveFactor":i="emissive";break;case"alphaCutoff":i="alphaTest";break;case"occlusionTexture/strength":i="aoMapIntensity";break;case"normalTexture/scale":i="normalScale";break;case"pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/scale":i="map/repeat";break;case"pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/offset":i="map/offset";break;case"emissiveTexture/extensions/KHR_texture_transform/scale":i="emissiveMap/repeat";break;case"emissiveTexture/extensions/KHR_texture_transform/offset":i="emissiveMap/offset";break;case"extensions/KHR_materials_emissive_strength/emissiveStrength":i="emissiveIntensity";break;case"extensions/KHR_materials_transmission/transmissionFactor":i="transmission";break;case"extensions/KHR_materials_ior/ior":i="ior";break;case"extensions/KHR_materials_volume/thicknessFactor":i="thickness";break;case"extensions/KHR_materials_volume/attenuationColor":i="attenuationColor";break;case"extensions/KHR_materials_volume/attenuationDistance":i="attenuationDistance";break;case"extensions/KHR_materials_iridescence/iridescenceFactor":i="iridescence";break;case"extensions/KHR_materials_iridescence/iridescenceIor":i="iridescenceIOR";break;case"extensions/KHR_materials_iridescence/iridescenceThicknessMinimum":i="iridescenceThicknessRange[0]";break;case"extensions/KHR_materials_iridescence/iridescenceThicknessMaximum":i="iridescenceThicknessRange[1]";break;case"extensions/KHR_materials_clearcoat/clearcoatFactor":i="clearcoat";break;case"extensions/KHR_materials_clearcoat/clearcoatRoughnessFactor":i="clearcoatRoughness";break;case"extensions/KHR_materials_sheen/sheenColorFactor":i="sheenColor";break;case"extensions/KHR_materials_sheen/sheenRoughnessFactor":i="sheenRoughness";break;case"extensions/KHR_materials_specular/specularFactor":i="specularIntensity";break;case"extensions/KHR_materials_specular/specularColorFactor":i="specularColor";break}l=m+i;break;case mt.node:const p=("/nodes/"+a.toString()+"/").length,b=l.substring(0,p);if(i=l.substring(p),i.startsWith("weights/")){const _=i.substring(8);/^\d+$/.test(_)?i="morphTargetInfluences["+_+"]":console.warn(mn+": invalid weight index",i,l)}else switch(i){case"translation":i="position";break;case"rotation":i="quaternion";break;case"scale":i="scale";break;case"weights":i="morphTargetInfluences";break;case"extensions/KHR_node_visibility/visible":i="visible";break}l=b+i;break;case mt.light:const T=("/extensions/KHR_lights_punctual/lights/"+a.toString()+"/").length;switch(i=l.substring(T),i){case"color":break;case"intensity":break;case"spot/innerConeAngle":i="penumbra";break;case"spot/outerConeAngle":i="angle";break;case"range":i="distance";break}l="/lights/"+a.toString()+"/"+i;break;case mt.camera:const g=("/cameras/"+a.toString()+"/").length,v=l.substring(0,g);switch(i=l.substring(g),i){case"perspective/yfov":i="fov";break;case"perspective/znear":case"orthographic/znear":i="near";break;case"perspective/zfar":case"orthographic/zfar":i="far";break;case"perspective/aspect":i="aspect";break;case"orthographic/xmag":i="zoom";break;case"orthographic/ymag":i="zoom";break}l=v+i;break}this.animationPointerResolver?.resolvePath&&(l=this.animationPointerResolver.resolvePath(l));const h=c.pointer;this.pointerPathMap.set(h,l)}if(a==null||isNaN(a)){console.warn("Failed resolving animation node id: "+a,t);return}let o;return s===mt.node?o=this.parser.getDependency("node",a):s===mt.material?o=this.parser.getDependency("material",a):s===mt.light?o=this.parser.getDependency("light",a):s===mt.camera?o=this.parser.getDependency("camera",a):console.error("Unhandled type",s),o}createAnimationTracksWithAnimationPointer(e,t,n,i,s){if(!(s.extensions&&s.extensions[mn]&&s.path&&s.path==="pointer"))return null;const o=s.extensions[mn].pointer;let c=this.pointerPathMap.get(o);if(!c)return null;const l=[];c=c.replaceAll("/",".");const h=c.split(".");var m=e.name!==void 0&&e.name!==null?e.name:e.uuid;if(h[2]=m,h[3]?.startsWith("morphTargetInfluences")){const T=h[3];if(e.type==="Group"){for(const g of e.children)g.morphTargetInfluences&&(h[3]=g.name,h[4]=T,b(this.parser));return l}}b(this.parser);function p(T,g){try{const v=g.split(".").filter(Boolean),x=v[v.length-1].replace(/\[.*\]$/,"");return x in T?typeof T[x]=="boolean":!1}catch{return!1}}function b(T){c=h.join(".");let g,v=!1;switch(n.itemSize){case 1:Object.prototype.toString.call(n.array)==="[object Uint8Array]"&&p(e,c)?(g=A.BooleanKeyframeTrack,v=!0):g=A.NumberKeyframeTrack;break;case 2:case 3:g=A.VectorKeyframeTrack;break;case 4:c.endsWith(".quaternion")?g=A.QuaternionKeyframeTrack:g=A.ColorKeyframeTrack;break}if(!g){console.warn("Unsupported output accessor format",n);return}const _=i.interpolation!==void 0?If[i.interpolation]:A.InterpolateLinear;let x=T._getArrayFromAccessor(n);c.endsWith(".fov")&&(x=x.map(M=>M/Math.PI*180)),v&&(x=x.map(M=>M>0));const C=new g(c,t.array,x,_);if(_==="CUBICSPLINE"&&T._createCubicSplineTrackInterpolant(C),l.push(C),c&&n.itemSize===4&&c.startsWith(".materials.")&&c.endsWith(".color")){const M=new Float32Array(x.length/4);for(let E=0,O=x.length/4;E<O;E+=1)M[E]=x[E*4+3];const P=new g(c.replace(".color",".opacity"),t.array,M,_);_==="CUBICSPLINE"&&T._createCubicSplineTrackInterpolant(C),l.push(P)}}return l}_tryResolveTargetId(e,t){let n="";return t==="node"?n=e.substring(7):t==="material"?n=e.substring(11):t==="light"?n=e.substring(39):t==="camera"&&(n=e.substring(9)),n=n.substring(0,n.indexOf("/")),Number.parseInt(n)}loadAnimation(e){const t=this,n=this.parser.json,i=this.parser,s=n.animations[e],a=s.name?s.name:"animation_"+e,o=[],c=[],l=[],h=[],d=[];for(let m=0,p=s.channels.length;m<p;m++){const b=s.channels[m],T=s.samplers[b.sampler],g=b.target,v=s.parameters!==void 0?s.parameters[T.input]:T.input,_=s.parameters!==void 0?s.parameters[T.output]:T.output;let x=t.loadAnimationTargetFromChannelWithAnimationPointer(b);x||(x=t.loadAnimationTargetFromChannel(b)),o.push(x),c.push(i.getDependency("accessor",v)),l.push(i.getDependency("accessor",_)),h.push(T),d.push(g)}return Promise.all([Promise.all(o),Promise.all(c),Promise.all(l),Promise.all(h),Promise.all(d)]).then(function(m){const p=m[0],b=m[1],T=m[2],g=m[3],v=m[4],_=[];for(let x=0,C=p.length;x<C;x++){const M=p[x],P=b[x],E=T[x],O=g[x],I=v[x];if(M===void 0)continue;M.updateMatrix&&(M.updateMatrix(),M.matrixAutoUpdate=!0);let R=t.createAnimationTracksWithAnimationPointer(M,P,E,O,I);if(R||(R=i._createAnimationTracks(M,P,E,O,I)),R)for(let N=0;N<R.length;N++)_.push(R[N])}return new A.AnimationClip(a,void 0,_)})}}let ja=!1,Nf=null;function Uf(){if(ja)return;ja=!0;const r=Nf||=A.PropertyBinding.findNode;A.PropertyBinding.findNode=function(e,t){if(!t)return r(e,t);if(t.startsWith(".materials.")){const n=t.substring(11).substring(t.indexOf(".")),i=n.indexOf("."),s=i<0?n:n.substring(0,i);let a=null;return e.traverse(o=>{a!==null||o.type!=="Mesh"&&o.type!=="SkinnedMesh"||o.material&&(o.material.uuid===s||o.material.name===s)&&(a=o.material,a!==null&&(n.endsWith(".map")?a=a.map:n.endsWith(".emissiveMap")&&(a=a.emissiveMap)))}),a}else if(t.startsWith(".nodes.")||t.startsWith(".lights.")||t.startsWith(".cameras.")){const n=t.split(".");let i;for(let s=1;s<n.length;s++){const a=n[s];if(a.length==36)i=e.getObjectByProperty("uuid",a);else if(i&&i[a]){const c=Number.parseInt(a);let l=a;c>=0&&(l=c),i=i[l]}else{const c=e.getObjectByName(a);c&&(i=c)}}if(!i){const s=r(e,n[2]);return s||console.warn(mn+": Property binding not found",t,e,e.name,n),s}return i}return r(e,t)}}const Df=Object.freeze(Object.defineProperty({__proto__:null,GLTFAnimationPointerExtension:Bf},Symbol.toStringTag,{value:"Module"}));var Lf=Object.defineProperty,Ff=(r,e,t)=>e in r?Lf(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Ce=(r,e,t)=>(Ff(r,typeof e!="symbol"?e+"":e,t),t);(function(){class r{}class e extends r{constructor(f){super(),Ce(this,"value"),this.value=f}}class t extends r{constructor(f){super(),Ce(this,"value"),this.value=f}}class n extends r{constructor(f){super(),Ce(this,"value"),this.value=f}}class i extends r{constructor(f,y="unrestricted"){super(),Ce(this,"type"),Ce(this,"value"),this.value=f,this.type=y}}class s extends r{constructor(f){super(),Ce(this,"value"),this.value=f}}class a extends r{}class o extends r{constructor(f){super(),Ce(this,"value"),this.value=f}}class c extends r{}class l extends r{constructor(f){super(),Ce(this,"value"),this.value=f}}class h extends r{constructor(f,y="integer"){super(),Ce(this,"value"),Ce(this,"type"),this.value=f,this.type=y}}class d extends r{constructor(f){super(),Ce(this,"value"),this.value=f}}class m extends r{constructor(f,y,S){super(),Ce(this,"value"),Ce(this,"type"),Ce(this,"unit"),this.value=f,this.type=y,this.unit=S}}class p extends r{}class b extends r{}class T extends r{}class g extends r{}class v extends r{}class _ extends r{}class x extends r{}class C extends r{}class M extends r{}class P extends r{}class E extends r{}class O extends r{}class I{constructor(f){Ce(this,"input"),Ce(this,"index",0),this.input=f}consume(){const f=this.input.codePointAt(this.index);return f!==void 0&&(this.index+=String.fromCodePoint(f).length),f}reconsume(f){f!==void 0&&(this.index-=String.fromCodePoint(f).length)}peek(){const f=[];let y=this.index;for(let S=0;S<3&&y<this.input.length;S++){const w=this.input.codePointAt(y);f.push(w),y+=String.fromCodePoint(w).length}return f}}function R(u){return u===10}function N(u){return R(u)||u===8192||u===32}function z(u){return u>=48&&u<=57}function U(u){return z(u)||u>=65&&u<=70||u>=97&&u<=102}function F(u){return(function(f){return(function(y){return y>=65&&y<=90})(f)||(function(y){return y>=97&&y<=122})(f)})(u)||(function(f){return f>=128})(u)||u===95}function J(u){return F(u)||z(u)||u===45}function $(u){return u>=0&&u<=8||u===11||u>=14&&u<=31||u===127}function K(u,f){return u===92&&!R(f)}function W(u,f,y){return u===45?F(f)||f===45||K(f,y):!!F(u)||u===92&&K(u,f)}function me(u,f,y){return u===43||u===45?z(f)||f===46&&z(y):z(u===46?f:u)}function ne(u){const f=u.consume();if(U(f)){let y=[f];for(;U(...u.peek())&&y.length<5;)y.push(u.consume());N(...u.peek())&&u.consume();const S=parseInt(String.fromCodePoint(...y),16);return S===0||S>1114111?65533:S}return f===void 0?65533:f}function ue(u,f){const y=new s("");for(;;){const S=u.consume();if(S===f||S===void 0)return y;if(S===10)return u.reconsume(S),new a;if(S===92){const w=u.peek()[0];w===void 0||(R(w)?u.consume():y.value+=String.fromCodePoint(ne(u)))}else y.value+=String.fromCodePoint(S)}}function re(u){let f="";for(;;){const y=u.consume();if(J(y))f+=String.fromCodePoint(y);else{if(!K(...u.peek()))return u.reconsume(y),f;f+=String.fromCodePoint(ne(u))}}}function ge(u){let f=(function(y){let S="integer",w="";for([43,45].includes(y.peek()[0])&&(w+=String.fromCodePoint(y.consume()));z(...y.peek());)w+=String.fromCodePoint(y.consume());if(y.peek()[0]===46&&z(y.peek()[1]))for(w+=String.fromCodePoint(y.consume(),y.consume()),S="number";z(...y.peek());)w+=String.fromCodePoint(y.consume());return[69,101].includes(y.peek()[0])&&([45,43].includes(y.peek()[1])&&z(y.peek()[2])?(w+=String.fromCodePoint(y.consume(),y.consume(),y.consume()),S="number"):z(y.peek()[1])&&(w+=String.fromCodePoint(y.consume(),y.consume()),S="number")),{value:parseFloat(w),type:S}})(u);return W(...u.peek())?new m(f.value,f.type,re(u)):u.peek()[0]===37?(u.consume(),new d(f.value)):new h(f.value,f.type)}function be(u){for(;;){const f=u.consume();if(f===41||f===void 0)return;K(...u.peek())&&ne(u)}}function se(u){const f=re(u);if(f.match(/url/i)&&u.peek()[0]===40){for(u.consume();N(u.peek()[0])&&N(u.peek()[1]);)u.consume();return[34,39].includes(u.peek()[0])||N(u.peek()[0])&&[34,39].includes(u.peek()[1])?new t(f):(function(y){const S=new o("");for(;N(...y.peek());)y.consume();for(;;){const w=y.consume();if(w===41||w===void 0)return S;if(N(w)){for(;N(...y.peek());)y.consume();return y.peek()[0]===41||y.peek()[0]===void 0?(y.consume(),S):(be(y),new c)}if([34,39,40].includes(w)||$(w))return be(y),new c;if(w===92){if(!K(...y.peek()))return be(y),new c;S.value+=ne(y)}else S.value+=String.fromCodePoint(w)}})(u)}return u.peek()[0]===40?(u.consume(),new t(f)):new e(f)}function he(u){const f=u.consume(),y=u.peek();if(N(f)){for(;N(...u.peek());)u.consume();return new p}if(f===34)return ue(u,f);if(f===35){if(J(y[0])||K(...y)){const S=new i;return W(...y)&&(S.type="id"),S.value=re(u),S}return new l(String.fromCodePoint(f))}return f===39?ue(u,f):f===40?new M:f===41?new P:f===43?me(...y)?(u.reconsume(f),ge(u)):new l(String.fromCodePoint(f)):f===44?new _:f===45?me(...u.peek())?(u.reconsume(f),ge(u)):u.peek()[0]===45&&u.peek()[1]===62?(u.consume(),u.consume(),new T):W(...u.peek())?(u.reconsume(f),se(u)):new l(String.fromCodePoint(f)):f===46?me(...u.peek())?(u.reconsume(f),ge(u)):new l(String.fromCodePoint(f)):f===58?new g:f===59?new v:f===60?y[0]===33&&y[1]===45&&y[2]===45?(u.consume(),u.consume(),u.consume(),new b):new l(String.fromCodePoint(f)):f===64?W(...y)?new n(re(u)):new l(String.fromCodePoint(f)):f===91?new x:f===92?K(...y)?(u.reconsume(f),se(u)):new l(String.fromCodePoint(f)):f===93?new C:f===123?new E:f===125?new O:z(f)?(u.reconsume(f),ge(u)):F(f)?(u.reconsume(f),se(u)):f===void 0?void 0:new l(String.fromCodePoint(f))}const oe=new Set(["px","deg","s","hz","dppx","number","fr"]);function Xe(u){return oe.has(u.toLowerCase())}function Ve(u,f){if(["x","y"].includes(u))return u;if(!f)throw new Error("To determine the normalized axis the computedStyle of the source is required.");const y=f.writingMode=="horizontal-tb";if(u==="block")u=y?"y":"x";else{if(u!=="inline")throw new TypeError(`Invalid axis “${u}”`);u=y?"x":"y"}return u}function Je(u){const f=[];let y=0;function S(){let k=0;const B=y;for(;y<u.length;){const L=u.slice(y,y+1);if(/\s/.test(L)&&k===0)break;if(L==="(")k+=1;else if(L===")"&&(k-=1,k===0)){y++;break}y++}return u.slice(B,y)}function w(){for(;/\s/.test(u.slice(y,y+1));)y++}for(;y<u.length;){const k=u.slice(y,y+1);/\s/.test(k)?w():f.push(S())}return f}function Ye(u,f){return u.reduce(((y,S)=>(y.has(S[f])?y.get(S[f]).push(S):y.set(S[f],[S]),y)),new Map)}function xe(u,f){const y=[],S=[];for(const w of u)f(w)?y.push(w):S.push(w);return[y,S]}function ye(u,f={}){function y(S){return Array.from(S).map((w=>ye(w,f)))}if(u instanceof CSSUnitValue){if(u.unit==="percent"&&f.percentageReference){const w=u.value/100*f.percentageReference.value,k=f.percentageReference.unit;return new CSSUnitValue(w,k)}const S=u.toSum();if(S&&S.values.length===1&&(u=S.values[0]),u instanceof CSSUnitValue&&u.unit==="em"&&f.fontSize&&(u=new CSSUnitValue(u.value*f.fontSize.value,f.fontSize.unit)),u instanceof CSSKeywordValue){if(u.value==="e")return new CSSUnitValue(Math.E,"number");if(u.value==="pi")return new CSSUnitValue(Math.PI,"number")}return u}if(!u.operator)return u;switch(u.operator){case"sum":u=new CSSMathSum(...y(u.values));break;case"product":u=new CSSMathProduct(...y(u.values));break;case"negate":u=new CSSMathNegate(ye(u.value,f));break;case"clamp":u=new CSSMathClamp(ye(u.lower,f),ye(u.value,f),ye(u.upper,f));break;case"invert":u=new CSSMathInvert(ye(u.value,f));break;case"min":u=new CSSMathMin(...y(u.values));break;case"max":u=new CSSMathMax(...y(u.values))}if(u instanceof CSSMathMin||u instanceof CSSMathMax){const S=Array.from(u.values);if(S.every((w=>w instanceof CSSUnitValue&&w.unit!=="percent"&&Xe(w.unit)&&w.unit===S[0].unit))){const w=Math[u.operator].apply(Math,S.map((({value:k})=>k)));return new CSSUnitValue(w,S[0].unit)}}if(u instanceof CSSMathMin||u instanceof CSSMathMax){const S=Array.from(u.values),[w,k]=xe(S,(L=>L instanceof CSSUnitValue&&L.unit!=="percent")),B=Array.from(Ye(w,"unit").values());if(B.some((L=>L.length>0))){const L=B.map((D=>{const V=Math[u.operator].apply(Math,D.map((({value:H})=>H)));return new CSSUnitValue(V,D[0].unit)}));u=u instanceof CSSMathMin?new CSSMathMin(...L,...k):new CSSMathMax(...L,...k)}return S.length===1?S[0]:u}if(u instanceof CSSMathNegate)return u.value instanceof CSSUnitValue?new CSSUnitValue(0-u.value.value,u.value.unit):u.value instanceof CSSMathNegate?u.value.value:u;if(u instanceof CSSMathInvert)return u.value instanceof CSSMathInvert?u.value.value:u;if(u instanceof CSSMathSum){let S=function(k){const B=k.filter((L=>L instanceof CSSUnitValue));return[...k.filter((L=>!(L instanceof CSSUnitValue))),...Array.from(Ye(B,"unit").entries()).map((([L,D])=>{const V=D.reduce(((H,{value:X})=>H+X),0);return new CSSUnitValue(V,L)}))]},w=[];for(const k of u.values)k instanceof CSSMathSum?w.push(...k.values):w.push(k);return w=S(w),w.length===1?w[0]:new CSSMathSum(...w)}if(u instanceof CSSMathProduct){let S=[];for(const B of u.values)B instanceof CSSMathProduct?S.push(...B.values):S.push(B);const[w,k]=xe(S,(B=>B instanceof CSSUnitValue&&B.unit==="number"));if(w.length>1){const B=w.reduce(((L,{value:D})=>L*D),1);S=[new CSSUnitValue(B,"number"),...k]}if(S.length===2){let B,L;for(const D of S)D instanceof CSSUnitValue&&D.unit==="number"?B=D:D instanceof CSSMathSum&&[...D.values].every((V=>V instanceof CSSUnitValue))&&(L=D);if(B&&L)return new CSSMathSum(...[...L.values].map((D=>new CSSUnitValue(D.value*B.value,D.unit))))}if(S.every((B=>B instanceof CSSUnitValue&&Xe(B.unit)||B instanceof CSSMathInvert&&B.value instanceof CSSUnitValue&&Xe(B.value.unit)))){const B=new CSSMathProduct(...S).toSum();if(B&&B.values.length===1)return B.values[0]}return new CSSMathProduct(...S)}return u}const ae=null,ut=["percent","length","angle","time","frequency","resolution","flex"],ke={fontRelativeLengths:{units:new Set(["em","rem","ex","rex","cap","rcap","ch","rch","ic","ric","lh","rlh"])},viewportRelativeLengths:{units:new Set(["vw","lvw","svw","dvw","vh","lvh","svh","dvh","vi","lvi","svi","dvi","vb","lvb","svb","dvb","vmin","lvmin","svmin","dvmin","vmax","lvmax","svmax","dvmax"])},absoluteLengths:{units:new Set(["cm","mm","Q","in","pt","pc","px"]),compatible:!0,canonicalUnit:"px",ratios:{cm:96/2.54,mm:96/2.54/10,Q:96/2.54/40,in:96,pc:16,pt:96/72,px:1}},angle:{units:new Set(["deg","grad","rad","turn"]),compatible:!0,canonicalUnit:"deg",ratios:{deg:1,grad:.9,rad:180/Math.PI,turn:360}},time:{units:new Set(["s","ms"]),compatible:!0,canonicalUnit:"s",ratios:{s:1,ms:.001}},frequency:{units:new Set(["hz","khz"]),compatible:!0,canonicalUnit:"hz",ratios:{hz:1,khz:1e3}},resolution:{units:new Set(["dpi","dpcm","dppx"]),compatible:!0,canonicalUnit:"dppx",ratios:{dpi:1/96,dpcm:2.54/96,dppx:1}}},fe=new Map;for(const u of Object.values(ke))if(u.compatible)for(const f of u.units)fe.set(f,u);function it(u){return fe.get(u)}function vt(u,f){const y={...u};for(const S of Object.keys(f))y[S]?y[S]+=f[S]:y[S]=f[S];return y}function St(u){return u==="number"?{}:u==="percent"?{percent:1}:ke.absoluteLengths.units.has(u)||ke.fontRelativeLengths.units.has(u)||ke.viewportRelativeLengths.units.has(u)?{length:1}:ke.angle.units.has(u)?{angle:1}:ke.time.units.has(u)?{time:1}:ke.frequency.units.has(u)?{frequency:1}:ke.resolution.units.has(u)?{resolution:1}:u==="fr"?{flex:1}:ae}function rt(u){if(u instanceof CSSUnitValue){let{unit:f,value:y}=u;const S=it(u.unit);return S&&f!==S.canonicalUnit&&(y*=S.ratios[f],f=S.canonicalUnit),f==="number"?[[y,{}]]:[[y,{[f]:1}]]}if(u instanceof CSSMathInvert){if(!(u.value instanceof CSSUnitValue))throw new Error("Not implemented");const f=rt(u.value);if(f===ae||f.length>1)return ae;const y=f[0],S={};for(const[w,k]of Object.entries(y[1]))S[w]=-1*k;return f[0]=[1/y[0],S],f}if(u instanceof CSSMathProduct){let f=[[1,{}]];for(const y of u.values){const S=rt(y),w=[];if(S===ae)return ae;for(const k of f)for(const B of S)w.push([k[0]*B[0],vt(k[1],B[1])]);f=w}return f}throw new Error("Not implemented")}function xt(u,f){if(St(f)===ae)throw new SyntaxError("The string did not match the expected pattern.");const y=rt(u);if(!y)throw new TypeError;if(y.length>1)throw new TypeError("Sum has more than one item");const S=(function(w,k){const B=w.unit,L=w.value,D=it(B),V=it(k);return!V||D!==V?ae:new CSSUnitValue(L*V.ratios[B]/V.ratios[k],k)})(ht(y[0]),f);if(S===ae)throw new TypeError;return S}function ht(u){const[f,y]=u,S=Object.entries(y);if(S.length>1)return ae;if(S.length===0)return new CSSUnitValue(f,"number");const w=S[0];return w[1]!==1?ae:new CSSUnitValue(f,w[0])}function ft(u,...f){if(f&&f.length)throw new Error("Not implemented");const y=rt(u).map((S=>ht(S)));if(y.some((S=>S===ae)))throw new TypeError("Type error");return new CSSMathSum(...y)}function _t(u,f){if(u.percentHint&&f.percentHint&&u.percentHint!==f.percentHint)return ae;const y={...u,percentHint:u.percentHint??f.percentHint};for(const S of ut)f[S]&&(y[S]??(y[S]=0),y[S]+=f[S]);return y}class Re{constructor(f,y){Ce(this,"name"),Ce(this,"values"),this.name=f,this.values=y}}class Ze{constructor(f,y){Ce(this,"value"),Ce(this,"associatedToken"),this.value=f,this.associatedToken=y}}function ct(u){if(Array.isArray(u))return u;if(typeof u=="string")return(function(f){const y=new I(f),S=[];for(;;){const w=he(y);if(w===void 0)return S;S.push(w)}})(u);throw new TypeError("Invalid input type "+typeof u)}function Ke(u){const f=u.shift();return f instanceof E||f instanceof x||f instanceof M?(function(y,S){let w;if(S instanceof E)w=O;else if(S instanceof M)w=P;else{if(!(S instanceof x))return;w=C}const k=new Ze([],S);for(;;){const B=y.shift();if(B instanceof w||B===void 0)return k;y.unshift(B),k.value.push(Ke(y))}})(u,f):f instanceof t?(function(y,S){const w=new Re(y.value,[]);for(;;){const k=S.shift();if(k instanceof P||k===void 0)return w;S.unshift(k),w.values.push(Ke(S))}})(f,u):f}function Q(u){if(u instanceof M||u instanceof P)return 6;if(u instanceof l)switch(u.value){case"*":case"/":return 4;case"+":case"-":return 2}}function bt(u){return u[u.length-1]}function Nt(u,f,y){const S=["+","-"].includes(u.value)?"ADDITION":"MULTIPLICATION",w=f.type===S?f.values:[f],k=y.type===S?y.values:[y];return u.value==="-"?k[0]={type:"NEGATE",value:k[0]}:u.value==="/"&&(k[0]={type:"INVERT",value:k[0]}),{type:S,values:[...w,...k]}}function Tt(u){if(u.type==="ADDITION")return new CSSMathSum(...u.values.map((f=>Tt(f))));if(u.type==="MULTIPLICATION")return new CSSMathProduct(...u.values.map((f=>Tt(f))));if(u.type==="NEGATE")return new CSSMathNegate(Tt(u.value));if(u.type==="INVERT")return new CSSMathInvert(Tt(u.value));if(u instanceof Ze)return Ut(new Re("calc",u.value));if(u instanceof e){if(u.value==="e")return new CSSUnitValue(Math.E,"number");if(u.value==="pi")return new CSSUnitValue(Math.PI,"number");throw new SyntaxError("Invalid math expression")}return le(u)}function Ut(u){if(u.name==="min"||u.name==="max"){const S=u.values.filter((w=>!(w instanceof p||w instanceof _))).map((w=>ye(Ut(new Re("calc",w)))));return u.name==="min"?new CSSMathMin(...S):new CSSMathMax(...S)}if(u.name!=="calc")return null;const f=Tt((function(S){const w=[],k=[];for(;S.length;){const B=S.shift();if(B instanceof h||B instanceof m||B instanceof d||B instanceof Re||B instanceof Ze||B instanceof e)k.push(B);else if(B instanceof l&&["*","/","+","-"].includes(B.value)){for(;w.length&&!(bt(w)instanceof M)&&Q(bt(w))>Q(B);){const L=w.pop(),D=k.pop(),V=k.pop();k.push(Nt(L,V,D))}w.push(B)}else if(B instanceof M)w.push(B);else if(B instanceof P){if(!w.length)return null;for(;!(bt(w)instanceof M);){const L=w.pop(),D=k.pop(),V=k.pop();k.push(Nt(L,V,D))}if(!(bt(w)instanceof M))return null;w.pop()}else if(!(B instanceof p))return null}for(;w.length;){if(bt(w)instanceof M)return null;const B=w.pop(),L=k.pop(),D=k.pop();k.push(Nt(B,D,L))}return k[0]})([...u.values]));let y;try{y=ye(f)}catch{new CSSStyleSheet().insertRule("error",0)}return y instanceof CSSUnitValue?new CSSMathSum(y):y}function le(u){return u instanceof Re&&["calc","min","max","clamp"].includes(u.name)?Ut(u):u instanceof h&&u.value===0&&!u.unit?new CSSUnitValue(0,"px"):u instanceof h?new CSSUnitValue(u.value,"number"):u instanceof d?new CSSUnitValue(u.value,"percent"):u instanceof m?new CSSUnitValue(u.value,u.unit):void 0}function Zc(u){const f=(function(y){const S=ct(y);for(;S[0]instanceof p;)S.shift();if(S[0]===void 0)return null;const w=Ke(S);for(;S[0]instanceof p;)S.shift();return S[0]===void 0?w:null})(u);return f===null&&new CSSStyleSheet().insertRule("error",0),f instanceof h||f instanceof d||f instanceof m||f instanceof Re||new CSSStyleSheet().insertRule("error",0),f instanceof m&&St(f.unit)===null&&new CSSStyleSheet().insertRule("error",0),le(f)}(function(){let u=new WeakMap;function f(k){const B=[];for(let D=0;D<k.length;D++)B[D]=typeof(L=k[D])=="number"?new CSSUnitValue(L,"number"):L;var L;return B}class y{static parse(B){return B instanceof y?B:ye(Zc(B),{})}}class S extends y{constructor(B,L,D,V){super(),u.set(this,{values:f(B),operator:L,name:D||L,delimiter:V||", "})}get operator(){return u.get(this).operator}get values(){return u.get(this).values}toString(){const B=u.get(this);return`${B.name}(${B.values.join(B.delimiter)})`}}const w={CSSNumericValue:y,CSSMathValue:S,CSSUnitValue:class extends y{constructor(k,B){super(),u.set(this,{value:k,unit:B})}get value(){return u.get(this).value}set value(k){u.get(this).value=k}get unit(){return u.get(this).unit}to(k){return xt(this,k)}toSum(...k){return ft(this,...k)}type(){return St(u.get(this).unit)}toString(){const k=u.get(this);return`${k.value}${(function(B){switch(B){case"percent":return"%";case"number":return"";default:return B.toLowerCase()}})(k.unit)}`}},CSSKeywordValue:class{constructor(k){this.value=k}toString(){return this.value.toString()}},CSSMathSum:class extends S{constructor(k){super(arguments,"sum","calc"," + ")}},CSSMathProduct:class extends S{constructor(k){super(arguments,"product","calc"," * ")}toSum(...k){return ft(this,...k)}type(){return u.get(this).values.map((k=>k.type())).reduce(_t)}},CSSMathNegate:class extends S{constructor(k){super([arguments[0]],"negate","-")}get value(){return u.get(this).values[0]}type(){return this.value.type()}},CSSMathInvert:class extends S{constructor(k){super([1,arguments[0]],"invert","calc"," / ")}get value(){return u.get(this).values[1]}type(){return(function(k){const B={};for(const L of ut)B[L]=-1*k[L];return B})(u.get(this).values[1].type())}},CSSMathMax:class extends S{constructor(){super(arguments,"max")}},CSSMathMin:class extends S{constructor(){super(arguments,"min")}}};if(!window.CSS&&!Reflect.defineProperty(window,"CSS",{value:{}}))throw Error("Error installing CSSOM support");window.CSSUnitValue||["number","percent","em","ex","px","cm","mm","in","pt","pc","Q","vw","vh","vmin","vmax","rems","ch","deg","rad","grad","turn","ms","s","Hz","kHz","dppx","dpi","dpcm","fr"].forEach((k=>{if(!Reflect.defineProperty(CSS,k,{value:B=>new CSSUnitValue(B,k)}))throw Error(`Error installing CSS.${k}`)}));for(let[k,B]of Object.entries(w))if(!(k in window)&&!Reflect.defineProperty(window,k,{value:B}))throw Error(`Error installing CSSOM support for ${k}`)})();const vo="block";let je=new WeakMap,Dt=new WeakMap;const Wi=["entry","exit","cover","contain","entry-crossing","exit-crossing"];function So(u){return u===document.scrollingElement?document:u}function sn(u){qr(u);let f=je.get(u).animations;if(f.length===0)return;let y=u.currentTime;for(let S=0;S<f.length;S++)f[S].tickAnimation(y)}function xo(u,f){if(!u)return null;const y=Dt.get(u).sourceMeasurements,S=getComputedStyle(u);let w=y.scrollTop;return Ve(f,S)==="x"&&(w=Math.abs(y.scrollLeft)),w}function Hr(u,f){const y=ye(u,f);if(y instanceof CSSUnitValue){if(y.unit==="px")return y.value;throw TypeError("Unhandled unit type "+y.unit)}throw TypeError("Unsupported value type: "+typeof u)}function qr(u){if(!(u instanceof bn))return void(function(y){const S=je.get(y);if(!S.anonymousSource)return;const w=bo(S.anonymousSource,S.anonymousTarget);_n(y,w)})(u);const f=u.subject;if(!f||getComputedStyle(f).display=="none")return void _n(u,null);_n(u,es(f))}function _o(u){return["block","inline","x","y"].includes(u)}function Xr(u){const f=getComputedStyle(u);return{scrollLeft:u.scrollLeft,scrollTop:u.scrollTop,scrollWidth:u.scrollWidth,scrollHeight:u.scrollHeight,clientWidth:u.clientWidth,clientHeight:u.clientHeight,writingMode:f.writingMode,direction:f.direction,scrollPaddingTop:f.scrollPaddingTop,scrollPaddingBottom:f.scrollPaddingBottom,scrollPaddingLeft:f.scrollPaddingLeft,scrollPaddingRight:f.scrollPaddingRight}}function Yr(u,f){if(!u||!f)return;let y=0,S=0,w=f;const k=u.offsetParent;for(;w&&w!=k;)S+=w.offsetLeft,y+=w.offsetTop,w=w.offsetParent;S-=u.offsetLeft+u.clientLeft,y-=u.offsetTop+u.clientTop;const B=getComputedStyle(f);return{top:y,left:S,offsetWidth:f.offsetWidth,offsetHeight:f.offsetHeight,fontSize:B.fontSize}}function $i(u){let f=Dt.get(u);f.sourceMeasurements=Xr(u);for(const y of f.timelineRefs){const S=y.deref();S instanceof bn&&(je.get(S).subjectMeasurements=Yr(u,S.subject))}f.updateScheduled||(setTimeout((()=>{for(const y of f.timelineRefs){const S=y.deref();S&&sn(S)}f.updateScheduled=!1})),f.updateScheduled=!0)}function _n(u,f){const y=je.get(u),S=y.source;if(S!=f){if(S){const w=Dt.get(S);if(w){w.timelineRefs.delete(u);const k=Array.from(w.timelineRefs).filter((B=>B.deref()===void 0));for(const B of k)w.timelineRefs.delete(B);w.timelineRefs.size===0&&(w.disconnect(),Dt.delete(S))}}if(y.source=f,f){let w=Dt.get(f);if(!w){w={timelineRefs:new Set,sourceMeasurements:Xr(f)},Dt.set(f,w);const k=new ResizeObserver((D=>{for(const V of D)$i(y.source)}));k.observe(f);for(const D of f.children)k.observe(D);const B=new MutationObserver((D=>{for(const V of D)$i(V.target)}));B.observe(f,{attributes:!0,attributeFilter:["style","class"]});const L=()=>{w.sourceMeasurements.scrollLeft=f.scrollLeft,w.sourceMeasurements.scrollTop=f.scrollTop;for(const D of w.timelineRefs){const V=D.deref();V&&sn(V)}};So(f).addEventListener("scroll",L),w.disconnect=()=>{k.disconnect(),B.disconnect(),So(f).removeEventListener("scroll",L)}}w.timelineRefs.add(new WeakRef(u))}}}function Zr(u,f){let y=je.get(u).animations;for(let S=0;S<y.length;S++)y[S].animation==f&&y.splice(S,1)}function Kr(u,f,y){let S=je.get(u).animations;for(let w=0;w<S.length;w++)if(S[w].animation==f)return;S.push({animation:f,tickAnimation:y}),queueMicrotask((()=>{sn(u)}))}class Qe{constructor(f){if(je.set(this,{source:null,axis:vo,anonymousSource:f?f.anonymousSource:null,anonymousTarget:f?f.anonymousTarget:null,subject:null,inset:null,animations:[],subjectMeasurements:null}),_n(this,f&&f.source!==void 0?f.source:document.scrollingElement),f&&f.axis!==void 0&&f.axis!=vo){if(!_o(f.axis))throw TypeError("Invalid axis");je.get(this).axis=f.axis}sn(this)}set source(f){_n(this,f),sn(this)}get source(){return je.get(this).source}set axis(f){if(!_o(f))throw TypeError("Invalid axis");je.get(this).axis=f,sn(this)}get axis(){return je.get(this).axis}get duration(){return CSS.percent(100)}get phase(){const f=this.source;if(!f)return"inactive";let y=getComputedStyle(f);return y.display=="none"?"inactive":f==document.scrollingElement||y.overflow!="visible"&&y.overflow!="clip"?"active":"inactive"}get currentTime(){const y=this.source;if(!y||!y.isConnected||this.phase=="inactive")return null;const S=getComputedStyle(y);if(S.display==="inline"||S.display==="none")return null;const w=this.axis,k=xo(y,w),B=(function(L,D){const V=Dt.get(L).sourceMeasurements,H=getComputedStyle(L).writingMode=="horizontal-tb";return D==="block"?D=H?"y":"x":D==="inline"&&(D=H?"x":"y"),D==="y"?V.scrollHeight-V.clientHeight:D==="x"?V.scrollWidth-V.clientWidth:void 0})(y,w);return B>0?CSS.percent(100*k/B):CSS.percent(100)}get __polyfill(){return!0}}function Qr(u,f){let y=u.parentElement;for(;y!=null;){if(f(y))return y;y=y.parentElement}}function bo(u,f){switch(u){case"root":return document.scrollingElement;case"nearest":return es(f);case"self":return f;default:throw new TypeError("Invalid ScrollTimeline Source Type.")}}function Kc(u){switch(getComputedStyle(u).display){case"block":case"inline-block":case"list-item":case"table":case"table-caption":case"flow-root":case"flex":case"grid":return!0}return!1}function To(u){const f=getComputedStyle(u);return f.transform!="none"||f.perspective!="none"||f.willChange=="transform"||f.willChange=="perspective"||f.filter!="none"||f.willChange=="filter"||f.backdropFilter!="none"}function Qc(u){return getComputedStyle(u).position!="static"||To(u)}function el(u){switch(getComputedStyle(u).position){case"static":case"relative":case"sticky":return Qr(u,Kc);case"absolute":return Qr(u,Qc);case"fixed":return Qr(u,To)}}function es(u){if(u&&u.isConnected){for(;u=el(u);)switch(getComputedStyle(u)["overflow-x"]){case"auto":case"scroll":case"hidden":return u==document.body&&getComputedStyle(document.scrollingElement).overflow=="visible"?document.scrollingElement:u}return document.scrollingElement}}function Gn(u,f){const y=je.get(u),S=y.subjectMeasurements,w=Dt.get(y.source).sourceMeasurements;return u.phase==="inactive"?null:u instanceof bn?ts(f,w,S,y.axis,y.inset):null}function ts(u,f,y,S,w){const k=f.direction=="rtl"||f.writingMode=="vertical-rl";let B,L,D={fontSize:y.fontSize};Ve(S,f)==="x"?(B=y.offsetWidth,L=y.left,D.scrollPadding=[f.scrollPaddingLeft,f.scrollPaddingRight],k&&(L+=f.scrollWidth-f.clientWidth,D.scrollPadding=[f.scrollPaddingRight,f.scrollPaddingLeft]),D.containerSize=f.clientWidth):(B=y.offsetHeight,L=y.top,D.scrollPadding=[f.scrollPaddingTop,f.scrollPaddingBottom],D.containerSize=f.clientHeight);const V=(function(ss,Zi){const fl={start:0,end:0};if(!ss)return fl;const[dl,pl]=[ss.start,ss.end].map(((Do,Lo)=>Do==="auto"?Zi.scrollPadding[Lo]==="auto"?0:parseFloat(Zi.scrollPadding[Lo]):Hr(Do,{percentageReference:CSS.px(Zi.containerSize),fontSize:CSS.px(parseFloat(Zi.fontSize))})));return{start:dl,end:pl}})(w,D),H=L-D.containerSize+V.end,X=L+B-V.start,Y=H+B,de=X-B,Te=Math.min(Y,de),st=Math.max(Y,de);let Mt,dt;const Uo=B>D.containerSize-V.start-V.end;switch(u){case"cover":Mt=H,dt=X;break;case"contain":Mt=Te,dt=st;break;case"entry":Mt=H,dt=Te;break;case"exit":Mt=st,dt=X;break;case"entry-crossing":Mt=H,dt=Uo?st:Te;break;case"exit-crossing":Mt=Uo?Te:st,dt=X}return{start:Mt,end:dt}}function Mo(u,f){if(u instanceof bn){const{rangeName:y,offset:S}=f;return Co(Gn(u,y),S,Gn(u,"cover"),u.subject)}if(u instanceof Qe){const{axis:y,source:S}=u,{sourceMeasurements:w}=Dt.get(S);let k;return k=Ve(y,w)==="x"?w.scrollWidth-w.clientWidth:w.scrollHeight-w.clientHeight,Hr(f,{percentageReference:CSS.px(k)})/k}unsupportedTimeline(u)}function Co(u,f,y,S){if(!u||!y)return 0;let w=getComputedStyle(S);return(Hr(f,{percentageReference:CSS.px(u.end-u.start),fontSize:CSS.px(parseFloat(w.fontSize))})+u.start-y.start)/(y.end-y.start)}let bn=class extends Qe{constructor(f){super(f);const y=je.get(this);y.subject=f&&f.subject?f.subject:void 0,f&&f.inset&&(y.inset=(function(S){if(!S)return{start:0,end:0};let w;if(w=typeof S=="string"?Je(S).map((k=>{if(k==="auto")return"auto";try{return CSSNumericValue.parse(k)}catch{throw TypeError(`Could not parse inset "${S}"`)}})):Array.isArray(S)?S:[S],w.length===0||w.length>2)throw TypeError("Invalid inset");for(const k of w){if(k==="auto")continue;const B=k.type();if(B.length!==1&&B.percent!==1)throw TypeError("Invalid inset")}return{start:w[0],end:w[1]??w[0]}})(f.inset)),y.subject&&(new ResizeObserver((()=>{$i(y.source)})).observe(y.subject),new MutationObserver((()=>{$i(y.source)})).observe(y.subject,{attributes:!0,attributeFilter:["class","style"]})),qr(this),y.subjectMeasurements=Yr(y.source,y.subject),sn(this)}get source(){return qr(this),je.get(this).source}set source(f){throw new Error("Cannot set the source of a view timeline")}get subject(){return je.get(this).subject}get axis(){return je.get(this).axis}get currentTime(){const y=xo(this.source,this.axis);if(y==null)return null;const S=Gn(this,"cover");if(!S)return null;const w=(y-S.start)/(S.end-S.start);return CSS.percent(100*w)}get startOffset(){return CSS.px(Gn(this,"cover").start)}get endOffset(){return CSS.px(Gn(this,"cover").end)}};const tl=document.getAnimations,nl=window.Element.prototype.getAnimations,il=window.Element.prototype.animate,wo=window.Animation;class Tn{constructor(){this.state="pending",this.nativeResolve=this.nativeReject=null,this.promise=new Promise(((f,y)=>{this.nativeResolve=f,this.nativeReject=y}))}resolve(f){this.state="resolved",this.nativeResolve(f)}reject(f){this.state="rejected",this.promise.catch((()=>{})),this.nativeReject(f)}}function Wn(u){u.readyPromise=new Tn,requestAnimationFrame((()=>{var f;(((f=u.timeline)==null?void 0:f.currentTime)??null)!==null&&(Hi(u),u.pendingTask!=="play"||u.startTime===null&&u.holdTime===null?u.pendingTask==="pause"&&ko(u):Eo(u))}))}function Po(){return new DOMException("The user aborted a request","AbortError")}function on(u,f){if(f===null)return f;if(typeof f!="number")throw new DOMException(`Unexpected value: ${f}. Cannot convert to CssNumberish`,"InvalidStateError");const y=u.rangeDuration??100,S=Ft(u),w=S?y*f/S:0;return CSS.percent(w)}function ve(u,f){if(u.timeline){if(f===null)return f;if(f.unit==="percent"){const y=u.rangeDuration??100,S=Ft(u);return f.value*S/y}throw new DOMException("CSSNumericValue must be a percentage for progress based animations.","NotSupportedError")}{if(f==null||typeof f=="number")return f;const y=f.to("ms");if(y)return y.value;throw new DOMException("CSSNumericValue must be either a number or a time value for time based animations.","InvalidStateError")}}function Eo(u){const f=ve(u,u.timeline.currentTime);if(u.holdTime!=null)kt(u),u.animation.playbackRate==0?u.startTime=f:(u.startTime=f-u.holdTime/u.animation.playbackRate,u.holdTime=null);else if(u.startTime!==null&&u.pendingPlaybackRate!==null){const y=(f-u.startTime)*u.animation.playbackRate;kt(u);const S=u.animation.playbackRate;S==0?(u.holdTime=null,u.startTime=f):u.startTime=f-y/S}u.readyPromise&&u.readyPromise.state=="pending"&&u.readyPromise.resolve(u.proxy),Lt(u,!1,!1),Vt(u),u.pendingTask=null}function ko(u){const f=ve(u,u.timeline.currentTime);u.startTime!=null&&u.holdTime==null&&(u.holdTime=(f-u.startTime)*u.animation.playbackRate),kt(u),u.startTime=null,u.readyPromise.resolve(u.proxy),Lt(u,!1,!1),Vt(u),u.pendingTask=null}function Ro(u){if(!u.finishedPromise||u.finishedPromise.state!="pending"||u.proxy.playState!="finished")return;u.finishedPromise.resolve(u.proxy),u.animation.pause();const f=new CustomEvent("finish",{detail:{currentTime:u.proxy.currentTime,timelineTime:u.proxy.timeline.currentTime}});Object.defineProperty(f,"currentTime",{get:function(){return this.detail.currentTime}}),Object.defineProperty(f,"timelineTime",{get:function(){return this.detail.timelineTime}}),requestAnimationFrame((()=>{queueMicrotask((()=>{u.animation.dispatchEvent(f)}))}))}function Mn(u){return u.pendingPlaybackRate!==null?u.pendingPlaybackRate:u.animation.playbackRate}function kt(u){u.pendingPlaybackRate!==null&&(u.animation.playbackRate=u.pendingPlaybackRate,u.pendingPlaybackRate=null)}function Ao(u){if(!u.timeline)return null;const f=ve(u,u.timeline.currentTime);if(f===null||u.startTime===null)return null;let y=(f-u.startTime)*u.animation.playbackRate;return y==-0&&(y=0),y}function Lt(u,f,y){if(!u.timeline)return;let S=f?ve(u,u.proxy.currentTime):Ao(u);if(S&&u.startTime!=null&&!u.proxy.pending){const w=Mn(u),k=Ft(u);let B=u.previousCurrentTime;w>0&&S>=k&&u.previousCurrentTime!=null?((B===null||B<k)&&(B=k),u.holdTime=f?S:B):w<0&&S<=0?((B==null||B>0)&&(B=0),u.holdTime=f?S:B):w!=0&&(f&&u.holdTime!==null&&(u.startTime=(function(L,D){if(!L.timeline)return null;const V=ve(L,L.timeline.currentTime);return V==null?null:V-D/L.animation.playbackRate})(u,u.holdTime)),u.holdTime=null)}Vt(u),u.previousCurrentTime=ve(u,u.proxy.currentTime),u.proxy.playState=="finished"?(u.finishedPromise||(u.finishedPromise=new Tn),u.finishedPromise.state=="pending"&&(y?Ro(u):Promise.resolve().then((()=>{Ro(u)})))):(u.finishedPromise&&u.finishedPromise.state=="resolved"&&(u.finishedPromise=new Tn),u.animation.playState!="paused"&&u.animation.pause())}function Ft(u){const f=(function(S){const w=S.proxy.effect.getTiming();return S.normalizedTiming||w})(u),y=f.delay+f.endDelay+f.iterations*f.duration;return Math.max(0,y)}function Vt(u){if(u.timeline)if(u.startTime!==null){const f=u.timeline.currentTime;if(f==null)return;ns(u,(ve(u,f)-u.startTime)*u.animation.playbackRate)}else u.holdTime!==null&&ns(u,u.holdTime)}function ns(u,f){const y=u.timeline,S=u.animation.playbackRate,w=y.currentTime&&y.currentTime.value==(S<0?0:100)?S<0?.001:-.001:0;u.animation.currentTime=f+w}function is(u,f){if(!u.timeline)return;const y=u.proxy.playState=="paused"&&u.proxy.pending;let S=!1,w=ve(u,u.proxy.currentTime);Mn(u)==0&&w==null&&(u.holdTime=0),w==null&&(u.autoAlignStartTime=!0),(u.proxy.playState==="finished"||y)&&(u.holdTime=null,u.startTime=null,u.autoAlignStartTime=!0),u.holdTime&&(u.startTime=null),u.pendingTask&&(u.pendingTask=null,S=!0),(u.holdTime!==null||u.autoAlignStartTime||y||u.pendingPlaybackRate!==null)&&(u.readyPromise&&!S&&(u.readyPromise=null),Vt(u),u.readyPromise||Wn(u),u.pendingTask="play",Kr(u.timeline,u.animation,rs.bind(u.proxy)),Lt(u,!1,!1))}function rs(u){const f=q.get(this);if(!f)return;if(u==null)return void(f.proxy.playState!=="paused"&&f.animation.playState!="idle"&&f.animation.cancel());Hi(f),f.pendingTask&&requestAnimationFrame((()=>{f.pendingTask!=="play"||f.startTime===null&&f.holdTime===null?f.pendingTask==="pause"&&ko(f):Eo(f)}));const y=this.playState;if(y=="running"||y=="finished"){const S=ve(f,u);ns(f,(S-ve(f,this.startTime))*this.playbackRate),Lt(f,!1,!1)}}function Oo(u){u.specifiedTiming=null}let q=new WeakMap;window.addEventListener("pagehide",(u=>{q=new WeakMap}),!1);let zo=new WeakMap;function Hi(u){if(!u.autoAlignStartTime||!u.timeline||!u.timeline.currentTime||u.proxy.playState==="idle"||u.proxy.playState==="paused"&&u.holdTime!==null)return;const f=u.rangeDuration;let y,S;try{y=CSS.percent(100*(function(k){if(!k.animationRange)return 0;const B=k.animationRange.start==="normal"?Io(k.timeline):k.animationRange.start;return Mo(k.timeline,B)})(u))}catch(k){y=CSS.percent(0),u.animationRange.start="normal",console.warn("Exception when calculating start offset",k)}try{S=CSS.percent(100*(1-(function(k){if(!k.animationRange)return 0;const B=k.animationRange.end==="normal"?Bo(k.timeline):k.animationRange.end;return 1-Mo(k.timeline,B)})(u)))}catch(k){S=CSS.percent(100),u.animationRange.end="normal",console.warn("Exception when calculating end offset",k)}u.rangeDuration=S.value-y.value;const w=Mn(u);u.startTime=ve(u,w>=0?y:S),u.holdTime=null,u.rangeDuration!==f&&Oo(u)}function qi(u){throw new Error("Unsupported timeline class")}function Io(u){return u instanceof ViewTimeline?{rangeName:"cover",offset:CSS.percent(0)}:u instanceof Qe?CSS.percent(0):void qi()}function Bo(u){return u instanceof ViewTimeline?{rangeName:"cover",offset:CSS.percent(100)}:u instanceof Qe?CSS.percent(100):void qi()}function rl(u,f){if(!f)return{start:"normal",end:"normal"};const y={start:Io(u),end:Bo(u)};if(u instanceof ViewTimeline){const S=Je(f),w=[],k=[];if(S.forEach((B=>{if(Wi.includes(B))w.push(B);else try{k.push(CSSNumericValue.parse(B))}catch{throw TypeError(`Could not parse range "${f}"`)}})),w.length>2||k.length>2||k.length==1)throw TypeError("Invalid time range or unsupported time range format.");return w.length&&(y.start.rangeName=w[0],y.end.rangeName=w.length>1?w[1]:w[0]),k.length>1&&(y.start.offset=k[0],y.end.offset=k[1]),y}if(u instanceof Qe){const S=f.split(" ");if(S.length!=2)throw TypeError("Invalid time range or unsupported time range format.");return y.start=CSSNumericValue.parse(S[0]),y.end=CSSNumericValue.parse(S[1]),y}qi()}function Xi(u,f,y){if(!f||f==="normal")return"normal";if(u instanceof ViewTimeline){let S="cover",w=y==="start"?CSS.percent(0):CSS.percent(100);if(f instanceof Object)f.rangeName!==void 0&&(S=f.rangeName),f.offset!==void 0&&(w=f.offset);else{const k=Je(f);k.length===1?Wi.includes(k[0])?S=k[0]:w=ye(CSSNumericValue.parse(k[0]),{}):k.length===2&&(S=k[0],w=ye(CSSNumericValue.parse(k[1]),{}))}if(!Wi.includes(S))throw TypeError("Invalid range name");return{rangeName:S,offset:w}}if(u instanceof Qe)return CSSNumericValue.parse(f);qi()}class Yi{constructor(f,y,S={}){const w=y instanceof Qe,k=f instanceof wo?f:new wo(f,w?void 0:y);zo.set(k,this),q.set(this,{animation:k,timeline:w?y:void 0,playState:w?"idle":null,readyPromise:null,finishedPromise:null,startTime:null,holdTime:null,rangeDuration:null,previousCurrentTime:null,autoAlignStartTime:!1,pendingPlaybackRate:null,pendingTask:null,specifiedTiming:null,normalizedTiming:null,effect:null,animationRange:w?rl(y,S["animation-range"]):null,proxy:this})}get effect(){const f=q.get(this);return f.timeline?(f.effect||(f.effect=(function(y){const S=y.animation.effect,w=S.updateTiming,k={apply:function(V){S.getTiming();const H=V.apply(S);if(y.timeline){const X=y.duration??100;H.localTime=on(y,H.localTime),H.endTime=on(y,H.endTime),H.activeDuration=on(y,H.activeDuration);const Y=Ft(y),de=H.iterations?(Y-H.delay-H.endDelay)/H.iterations:0;H.duration=Y?CSS.percent(X*de/Y):CSS.percent(0),y.timeline.currentTime===void 0&&(H.localTime=null)}return H}},B={apply:function(V,H){if(y.specifiedTiming)return y.specifiedTiming;y.specifiedTiming=V.apply(S);let X,Y=Object.assign({},y.specifiedTiming);if(Y.duration===1/0)throw TypeError("Effect duration cannot be Infinity when used with Scroll Timelines");return(Y.duration===null||Y.duration==="auto"||y.autoDurationEffect)&&y.timeline&&(y.autoDurationEffect=!0,Y.delay=0,Y.endDelay=0,X=Y.iterations?1e5:0,Y.duration=Y.iterations?(X-Y.delay-Y.endDelay)/Y.iterations:0,Y.duration<0&&(Y.duration=0,Y.endDelay=X-Y.delay),w.apply(S,[Y])),y.normalizedTiming=Y,y.specifiedTiming}},L={apply:function(V,H,X){if(X&&X.length){if(y.timeline&&X[0]){const Y=X[0],de=Y.duration;if(de===1/0)throw TypeError("Effect duration cannot be Infinity when used with Scroll Timelines");if(Y.iterations===1/0)throw TypeError("Effect iterations cannot be Infinity when used with Scroll Timelines");de!==void 0&&de!=="auto"&&(y.autoDurationEffect=null)}y.specifiedTiming&&V.apply(S,[y.specifiedTiming]),V.apply(S,X),Oo(y)}}},D=new Proxy(S,{get:function(V,H){const X=V[H];return typeof X=="function"?X.bind(S):X},set:function(V,H,X){return V[H]=X,!0}});return D.getComputedTiming=new Proxy(S.getComputedTiming,k),D.getTiming=new Proxy(S.getTiming,B),D.updateTiming=new Proxy(S.updateTiming,L),D})(f)),f.effect):f.animation.effect}set effect(f){const y=q.get(this);y.animation.effect=f,y.effect=null,y.autoDurationEffect=null}get timeline(){const f=q.get(this);return f.timeline||f.animation.timeline}set timeline(f){const y=q.get(this),S=this.timeline;if(S==f)return;const w=this.playState,k=this.currentTime;let B,L=Ft(y);B=k===null?null:L===0?0:ve(y,k)/L;const D=S instanceof Qe,V=f instanceof Qe,H=this.pending;if(D&&Zr(y.timeline,y.animation),V)return y.timeline=f,kt(y),y.autoAlignStartTime=!0,y.startTime=null,y.holdTime=null,w!=="running"&&w!=="finished"||(y.readyPromise&&y.readyPromise.state!=="resolved"||Wn(y),y.pendingTask="play",Kr(y.timeline,y.animation,rs.bind(this))),w==="paused"&&B!==null&&(y.holdTime=B*L),H&&(y.readyPromise&&y.readyPromise.state!="resolved"||Wn(y),y.pendingTask=w=="paused"?"pause":"play"),y.startTime!==null&&(y.holdTime=null),void Lt(y,!1,!1);if(y.animation.timeline!=f)throw TypeError("Unsupported timeline: "+f);if(Zr(y.timeline,y.animation),y.timeline=null,D)switch(k!==null&&(y.animation.currentTime=B*Ft(y)),w){case"paused":y.animation.pause();break;case"running":case"finished":y.animation.play()}}get startTime(){const f=q.get(this);return f.timeline?on(f,f.startTime):f.animation.startTime}set startTime(f){const y=q.get(this);if(f=ve(y,f),!y.timeline)return void(y.animation.startTime=f);y.autoAlignStartTime=!1,ve(y,y.timeline.currentTime)==null&&y.startTime!=null&&(y.holdTime=null,Vt(y));const S=ve(y,this.currentTime);kt(y),y.startTime=f,y.startTime!==null&&y.animation.playbackRate!=0?y.holdTime=null:y.holdTime=S,y.pendingTask&&(y.pendingTask=null,y.readyPromise.resolve(this)),Lt(y,!0,!1),Vt(y)}get currentTime(){const f=q.get(this);return f.timeline?f.holdTime!=null?on(f,f.holdTime):on(f,Ao(f)):f.animation.currentTime}set currentTime(f){const y=q.get(this);y.timeline?((function(S,w){if(w==null&&S.currentTime!==null)throw new TypeError;w=ve(S,w),S.autoAlignStartTime=!1,S.holdTime!==null||S.startTime===null||S.timeline.phase==="inactive"||S.animation.playbackRate===0?S.holdTime=w:S.startTime=ve(S,S.timeline.currentTime)-w/S.animation.playbackRate,S.timeline.phase==="inactive"&&(S.startTime=null),S.previousCurrentTime=null})(y,f),y.pendingTask=="pause"&&(y.holdTime=ve(y,f),kt(y),y.startTime=null,y.pendingTask=null,y.readyPromise.resolve(this)),Lt(y,!0,!1)):y.animation.currentTime=f}get playbackRate(){return q.get(this).animation.playbackRate}set playbackRate(f){const y=q.get(this);if(!y.timeline)return void(y.animation.playbackRate=f);y.pendingPlaybackRate=null;const S=this.currentTime;y.animation.playbackRate=f,S!==null&&(this.currentTime=S)}get playState(){const f=q.get(this);if(!f.timeline)return f.animation.playState;const y=ve(f,this.currentTime);return y===null&&f.startTime===null&&f.pendingTask==null?"idle":f.pendingTask=="pause"||f.startTime===null&&f.pendingTask!="play"?"paused":y!=null&&(f.animation.playbackRate>0&&y>=Ft(f)||f.animation.playbackRate<0&&y<=0)?"finished":"running"}get rangeStart(){var f;return((f=q.get(this).animationRange)==null?void 0:f.start)??"normal"}set rangeStart(f){const y=q.get(this);if(!y.timeline)return y.animation.rangeStart=f;y.timeline instanceof Qe&&(y.animationRange.start=Xi(y.timeline,f,"start"),Hi(y),Vt(y))}get rangeEnd(){var f;return((f=q.get(this).animationRange)==null?void 0:f.end)??"normal"}set rangeEnd(f){const y=q.get(this);if(!y.timeline)return y.animation.rangeEnd=f;y.timeline instanceof Qe&&(y.animationRange.end=Xi(y.timeline,f,"end"),Hi(y),Vt(y))}get replaceState(){return q.get(this).animation.pending}get pending(){const f=q.get(this);return f.timeline?!!f.readyPromise&&f.readyPromise.state=="pending":f.animation.pending}finish(){const f=q.get(this);if(!f.timeline)return void f.animation.finish();const y=Mn(f),S=Ft(f);if(y==0)throw new DOMException("Cannot finish Animation with a playbackRate of 0.","InvalidStateError");if(y>0&&S==1/0)throw new DOMException("Cannot finish Animation with an infinite target effect end.","InvalidStateError");kt(f);const w=y<0?0:S;this.currentTime=on(f,w);const k=ve(f,f.timeline.currentTime);f.startTime===null&&k!==null&&(f.startTime=k-w/f.animation.playbackRate),f.pendingTask=="pause"&&f.startTime!==null&&(f.holdTime=null,f.pendingTask=null,f.readyPromise.resolve(this)),f.pendingTask=="play"&&f.startTime!==null&&(f.pendingTask=null,f.readyPromise.resolve(this)),Lt(f,!0,!0)}play(){const f=q.get(this);f.timeline?is(f):f.animation.play()}pause(){const f=q.get(this);f.timeline?this.playState!="paused"&&(f.animation.currentTime===null&&(f.autoAlignStartTime=!0),f.pendingTask=="play"?f.pendingTask=null:f.readyPromise=null,f.readyPromise||Wn(f),f.pendingTask="pause",Kr(f.timeline,f.animation,rs.bind(f.proxy))):f.animation.pause()}reverse(){const f=q.get(this),y=Mn(f),S=ve(f,this.currentTime),w=Ft(f)==1/0,k=y!=0&&(y<0||S>0||!w);if(!f.timeline||!k)return k&&(f.pendingPlaybackRate=-Mn(f)),void f.animation.reverse();if(f.timeline.phase=="inactive")throw new DOMException("Cannot reverse an animation with no active timeline","InvalidStateError");this.updatePlaybackRate(-y),is(f)}updatePlaybackRate(f){const y=q.get(this);if(y.pendingPlaybackRate=f,!y.timeline)return void y.animation.updatePlaybackRate(f);const S=this.playState;if(!y.readyPromise||y.readyPromise.state!="pending")switch(S){case"idle":case"paused":kt(y);break;case"finished":const w=ve(y,y.timeline.currentTime),k=w!==null?(w-y.startTime)*y.animation.playbackRate:null;y.startTime=f==0?w:w!=null&&k!=null?(w-k)/f:null,kt(y),Lt(y,!1,!1),Vt(y);break;default:is(y)}}persist(){q.get(this).animation.persist()}get id(){return q.get(this).animation.id}set id(f){q.get(this).animation.id=f}cancel(){const f=q.get(this);f.timeline?(this.playState!="idle"&&((function(y){y.pendingTask&&(y.pendingTask=null,kt(y),y.readyPromise.reject(Po()),Wn(y),y.readyPromise.resolve(y.proxy))})(f),f.finishedPromise&&f.finishedPromise.state=="pending"&&f.finishedPromise.reject(Po()),f.finishedPromise=new Tn,f.animation.cancel()),f.startTime=null,f.holdTime=null,Zr(f.timeline,f.animation)):f.animation.cancel()}get onfinish(){return q.get(this).animation.onfinish}set onfinish(f){q.get(this).animation.onfinish=f}get oncancel(){return q.get(this).animation.oncancel}set oncancel(f){q.get(this).animation.oncancel=f}get onremove(){return q.get(this).animation.onremove}set onremove(f){q.get(this).animation.onremove=f}get finished(){const f=q.get(this);return f.timeline?(f.finishedPromise||(f.finishedPromise=new Tn),f.finishedPromise.promise):f.animation.finished}get ready(){const f=q.get(this);return f.timeline?(f.readyPromise||(f.readyPromise=new Tn,f.readyPromise.resolve(this)),f.readyPromise.promise):f.animation.ready}addEventListener(f,y,S){q.get(this).animation.addEventListener(f,y,S)}removeEventListener(f,y,S){q.get(this).animation.removeEventListener(f,y,S)}dispatchEvent(f){q.get(this).animation.dispatchEvent(f)}}function sl(u,f){const y=f.timeline;y instanceof Qe&&delete f.timeline;const S=il.apply(this,[u,f]),w=new Yi(S,y);return y instanceof Qe&&(S.pause(),q.get(w).animationRange={start:Xi(y,f.rangeStart,"start"),end:Xi(y,f.rangeEnd,"end")},w.play()),w}function No(u){for(let f=0;f<u.length;++f){let y=zo.get(u[f]);y&&(u[f]=y)}return u}function ol(u){return No(nl.apply(this,[u]))}function al(u){return No(tl.apply(this,[u]))}const Ae={IDENTIFIER:/[\w\\\@_-]+/g,WHITE_SPACE:/\s*/g,TIME:/^[0-9]+(s|ms)/,SCROLL_TIMELINE:/scroll-timeline\s*:([^;}]+)/,SCROLL_TIMELINE_NAME:/scroll-timeline-name\s*:([^;}]+)/,SCROLL_TIMELINE_AXIS:/scroll-timeline-axis\s*:([^;}]+)/,VIEW_TIMELINE:/view-timeline\s*:([^;}]+)/,VIEW_TIMELINE_NAME:/view-timeline-name\s*:([^;}]+)/,VIEW_TIMELINE_AXIS:/view-timeline-axis\s*:([^;}]+)/,VIEW_TIMELINE_INSET:/view-timeline-inset\s*:([^;}]+)/,ANIMATION_TIMELINE:/animation-timeline\s*:([^;}]+)/,ANIMATION_TIME_RANGE:/animation-range\s*:([^;}]+)/,ANIMATION_NAME:/animation-name\s*:([^;}]+)/,ANIMATION:/animation\s*:([^;}]+)/,ANONYMOUS_SCROLL_TIMELINE:/scroll\(([^)]*)\)/,ANONYMOUS_VIEW_TIMELINE:/view\(([^)]*)\)/},Cn=["block","inline","x","y"],cl=["nearest","root","self"],Xt=new class{constructor(){this.cssRulesWithTimelineName=[],this.nextAnonymousTimelineNameIndex=0,this.anonymousScrollTimelineOptions=new Map,this.anonymousViewTimelineOptions=new Map,this.sourceSelectorToScrollTimeline=[],this.subjectSelectorToViewTimeline=[],this.keyframeNamesSelectors=new Map}transpileStyleSheet(u,f,y){const S={sheetSrc:u,index:0,name:y};for(;S.index<S.sheetSrc.length&&(this.eatWhitespace(S),!(S.index>=S.sheetSrc.length));){if(this.lookAhead("/*",S)){for(;this.lookAhead("/*",S);)this.eatComment(S),this.eatWhitespace(S);continue}const w=this.parseQualifiedRule(S);w&&(f?this.parseKeyframesAndSaveNameMapping(w,S):this.handleScrollTimelineProps(w,S))}return S.sheetSrc}getAnimationTimelineOptions(u,f){for(let y=this.cssRulesWithTimelineName.length-1;y>=0;y--){const S=this.cssRulesWithTimelineName[y];try{if(f.matches(S.selector)&&(!S["animation-name"]||S["animation-name"]==u))return{"animation-timeline":S["animation-timeline"],"animation-range":S["animation-range"]}}catch{}}return null}getAnonymousScrollTimelineOptions(u,f){const y=this.anonymousScrollTimelineOptions.get(u);return y?{anonymousSource:y.source,anonymousTarget:f,source:bo(y.source??"nearest",f),axis:y.axis?y.axis:"block"}:null}getScrollTimelineOptions(u,f){const y=this.getAnonymousScrollTimelineOptions(u,f);if(y)return y;for(let S=this.sourceSelectorToScrollTimeline.length-1;S>=0;S--){const w=this.sourceSelectorToScrollTimeline[S];if(w.name==u){const k=this.findPreviousSiblingOrAncestorMatchingSelector(f,w.selector);if(k)return{source:k,...w.axis?{axis:w.axis}:{}}}}return null}findPreviousSiblingOrAncestorMatchingSelector(u,f){let y=u;for(;y;){if(y.matches(f))return y;y=y.previousElementSibling||y.parentElement}return null}getAnonymousViewTimelineOptions(u,f){const y=this.anonymousViewTimelineOptions.get(u);return y?{subject:f,axis:y.axis?y.axis:"block",inset:y.inset?y.inset:"auto"}:null}getViewTimelineOptions(u,f){const y=this.getAnonymousViewTimelineOptions(u,f);if(y)return y;for(let S=this.subjectSelectorToViewTimeline.length-1;S>=0;S--){const w=this.subjectSelectorToViewTimeline[S];if(w.name==u){const k=this.findPreviousSiblingOrAncestorMatchingSelector(f,w.selector);if(k)return{subject:k,axis:w.axis,inset:w.inset}}}return null}handleScrollTimelineProps(u,f){if(u.selector.includes("@keyframes"))return;const y=u.block.contents.includes("animation-name:"),S=u.block.contents.includes("animation-timeline:"),w=u.block.contents.includes("animation:");if(this.saveSourceSelectorToScrollTimeline(u),this.saveSubjectSelectorToViewTimeline(u),!S&&!y&&!w)return;let k=[],B=[],L=!1;S&&(k=this.extractScrollTimelineNames(u.block.contents)),y&&(B=this.extractMatches(u.block.contents,Ae.ANIMATION_NAME)),S&&y||(w&&this.extractMatches(u.block.contents,Ae.ANIMATION).forEach((D=>{const V=this.extractAnimationName(D);V&&S&&B.push(V),S&&(this.hasDuration(D)||(this.hasAutoDuration(D)&&(u.block.contents=u.block.contents.replace("auto"," ")),u.block.contents=u.block.contents.replace(D," 1s "+D),L=!0))})),L&&this.replacePart(u.block.startIndex,u.block.endIndex,u.block.contents,f)),this.saveRelationInList(u,k,B)}saveSourceSelectorToScrollTimeline(u){const f=u.block.contents.includes("scroll-timeline:"),y=u.block.contents.includes("scroll-timeline-name:"),S=u.block.contents.includes("scroll-timeline-axis:");if(!f&&!y)return;let w=[];if(f){const B=this.extractMatches(u.block.contents,Ae.SCROLL_TIMELINE);for(const L of B){const D=this.split(L);let V={selector:u.selector,name:""};D.length==1?V.name=D[0]:D.length==2&&(Cn.includes(D[0])?(V.axis=D[0],V.name=D[1]):(V.axis=D[1],V.name=D[0])),w.push(V)}}if(y){const B=this.extractMatches(u.block.contents,Ae.SCROLL_TIMELINE_NAME);for(let L=0;L<B.length;L++)if(L<w.length)w[L].name=B[L];else{let D={selector:u.selector,name:B[L]};w.push(D)}}let k=[];if(S){const B=this.extractMatches(u.block.contents,Ae.SCROLL_TIMELINE_AXIS);if(k=B.filter((L=>Cn.includes(L))),k.length!=B.length)throw new Error("Invalid axis")}for(let B=0;B<w.length;B++)k.length&&(w[B].axis=k[B%w.length]);this.sourceSelectorToScrollTimeline.push(...w)}saveSubjectSelectorToViewTimeline(u){const f=u.block.contents.includes("view-timeline:"),y=u.block.contents.includes("view-timeline-name:"),S=u.block.contents.includes("view-timeline-axis:"),w=u.block.contents.includes("view-timeline-inset:");if(!f&&!y)return;let k=[];if(f){const D=this.extractMatches(u.block.contents,Ae.VIEW_TIMELINE);for(let V of D){const H=this.split(V);let X={selector:u.selector,name:"",inset:null};H.length==1?X.name=H[0]:H.length==2&&(Cn.includes(H[0])?(X.axis=H[0],X.name=H[1]):(X.axis=H[1],X.name=H[0])),k.push(X)}}if(y){const D=this.extractMatches(u.block.contents,Ae.VIEW_TIMELINE_NAME);for(let V=0;V<D.length;V++)if(V<k.length)k[V].name=D[V];else{let H={selector:u.selector,name:D[V],inset:null};k.push(H)}}let B=[],L=[];if(w&&(B=this.extractMatches(u.block.contents,Ae.VIEW_TIMELINE_INSET)),S){const D=this.extractMatches(u.block.contents,Ae.VIEW_TIMELINE_AXIS);if(L=D.filter((V=>Cn.includes(V))),L.length!=D.length)throw new Error("Invalid axis")}for(let D=0;D<k.length;D++)B.length&&(k[D].inset=B[D%k.length]),L.length&&(k[D].axis=L[D%k.length]);this.subjectSelectorToViewTimeline.push(...k)}hasDuration(u){return u.split(" ").filter((f=>{return y=f,Ae.TIME.exec(y);var y})).length>=1}hasAutoDuration(u){return u.split(" ").filter((f=>f==="auto")).length>=1}saveRelationInList(u,f,y){let S=[];u.block.contents.includes("animation-range:")&&(S=this.extractMatches(u.block.contents,Ae.ANIMATION_TIME_RANGE));const w=Math.max(f.length,y.length,S.length);for(let k=0;k<w;k++)this.cssRulesWithTimelineName.push({selector:u.selector,"animation-timeline":f[k%f.length],...y.length?{"animation-name":y[k%y.length]}:{},...S.length?{"animation-range":S[k%S.length]}:{}})}extractScrollTimelineNames(u){const f=Ae.ANIMATION_TIMELINE.exec(u)[1].trim(),y=[];return f.split(",").map((S=>S.trim())).forEach((S=>{if((function(w){return(w.startsWith("scroll")||w.startsWith("view"))&&w.includes("(")})(S)){const w=this.saveAnonymousTimelineName(S);y.push(w)}else y.push(S)})),y}saveAnonymousTimelineName(u){const f=":t"+this.nextAnonymousTimelineNameIndex++;return u.startsWith("scroll(")?this.anonymousScrollTimelineOptions.set(f,this.parseAnonymousScrollTimeline(u)):this.anonymousViewTimelineOptions.set(f,this.parseAnonymousViewTimeline(u)),f}parseAnonymousScrollTimeline(u){const f=Ae.ANONYMOUS_SCROLL_TIMELINE.exec(u);if(!f)return null;const y=f[1],S={};return y.split(" ").forEach((w=>{Cn.includes(w)?S.axis=w:cl.includes(w)&&(S.source=w)})),S}parseAnonymousViewTimeline(u){const f=Ae.ANONYMOUS_VIEW_TIMELINE.exec(u);if(!f)return null;const y=f[1],S={};return y.split(" ").forEach((w=>{Cn.includes(w)?S.axis=w:S.inset=S.inset?`${S.inset} ${w}`:w})),S}extractAnimationName(u){return this.findMatchingEntryInContainer(u,this.keyframeNamesSelectors)}findMatchingEntryInContainer(u,f){const y=u.split(" ").filter((S=>f.has(S)));return y?y[0]:null}parseIdentifier(u){Ae.IDENTIFIER.lastIndex=u.index;const f=Ae.IDENTIFIER.exec(u.sheetSrc);if(!f)throw this.parseError(u,"Expected an identifier");return u.index+=f[0].length,f[0]}parseKeyframesAndSaveNameMapping(u,f){if(u.selector.startsWith("@keyframes")){const y=this.replaceKeyframesAndGetMapping(u,f);u.selector.split(" ").forEach(((S,w)=>{w>0&&this.keyframeNamesSelectors.set(S,y)}))}}replaceKeyframesAndGetMapping(u,f){function y(D){return Wi.some((V=>D.startsWith(V)))}const S=u.block.contents,w=(function(D){let V=0,H=-1,X=-1;const Y=[];for(let de=0;de<D.length;de++)D[de]=="{"?V++:D[de]=="}"&&V--,V==1&&D[de]!="{"&&D[de]!="}"&&H==-1&&(H=de),V==2&&D[de]=="{"&&(X=de,Y.push({start:H,end:X}),H=X=-1);return Y})(S);if(w.length==0)return new Map;const k=new Map;let B=!1;const L=[];L.push(S.substring(0,w[0].start));for(let D=0;D<w.length;D++){const V=S.substring(w[D].start,w[D].end);let H=[];V.split(",").forEach((X=>{const Y=X.split(" ").map((Te=>Te.trim())).filter((Te=>Te!="")).join(" "),de=k.size;k.set(de,Y),H.push(`${de}%`),y(Y)&&(B=!0)})),L.push(H.join(",")),D==w.length-1?L.push(S.substring(w[D].end)):L.push(S.substring(w[D].end,w[D+1].start))}return B?(u.block.contents=L.join(""),this.replacePart(u.block.startIndex,u.block.endIndex,u.block.contents,f),k):new Map}parseQualifiedRule(u){const f=u.index,y=this.parseSelector(u).trim();if(y)return{selector:y,block:this.eatBlock(u),startIndex:f,endIndex:u.index}}removeEnclosingDoubleQuotes(u){let f=u[0]=='"'?1:0,y=u[u.length-1]=='"'?u.length-1:u.length;return u.substring(f,y)}assertString(u,f){if(u.sheetSrc.substr(u.index,f.length)!=f)throw this.parseError(u,`Did not find expected sequence ${f}`);u.index+=f.length}replacePart(u,f,y,S){if(S.sheetSrc=S.sheetSrc.slice(0,u)+y+S.sheetSrc.slice(f),S.index>=f){const w=S.index-f;S.index=u+y.length+w}}eatComment(u){this.assertString(u,"/*"),this.eatUntil("*/",u,!0),this.assertString(u,"*/")}eatBlock(u){const f=u.index;this.assertString(u,"{");let y=1;for(;y!=0;)this.lookAhead("/*",u)?this.eatComment(u):(u.sheetSrc[u.index]==="{"?y++:u.sheetSrc[u.index]==="}"&&y--,this.advance(u));const S=u.index;return{startIndex:f,endIndex:S,contents:u.sheetSrc.slice(f,S)}}advance(u){if(u.index++,u.index>u.sheetSrc.length)throw this.parseError(u,"Advanced beyond the end")}parseError(u,f){return Error(`(${u.name?u.name:"<anonymous file>"}): ${f}`)}eatUntil(u,f,y=!1){const S=f.index;for(;!this.lookAhead(u,f);)this.advance(f);return y&&(f.sheetSrc=f.sheetSrc.slice(0,S)+" ".repeat(f.index-S)+f.sheetSrc.slice(f.index)),f.sheetSrc.slice(S,f.index)}parseSelector(u){let f=u.index;if(this.eatUntil("{",u),f===u.index)throw Error("Empty selector");return u.sheetSrc.slice(f,u.index)}eatWhitespace(u){Ae.WHITE_SPACE.lastIndex=u.index;const f=Ae.WHITE_SPACE.exec(u.sheetSrc);f&&(u.index+=f[0].length)}lookAhead(u,f){return f.sheetSrc.substr(f.index,u.length)==u}peek(u){return u.sheetSrc[u.index]}extractMatches(u,f,y=","){return f.exec(u)[1].trim().split(y).map((S=>S.trim()))}split(u){return u.split(" ").map((f=>f.trim())).filter((f=>f!=""))}};function ll(u,f,y,S,w,k){const B=Xr(f),L=Yr(f,y);return Co(ts(u,B,L,S,w),k,ts("cover",B,L,S,w),y)}function ul(u,f,y){const S=Xt.getAnimationTimelineOptions(f,y);if(!S)return null;const w=S["animation-timeline"];if(!w)return null;let k=Xt.getScrollTimelineOptions(w,y)||Xt.getViewTimelineOptions(w,y);return k?(k.subject&&(function(B,L){const D=es(L.subject),V=L.axis||L.axis;function H(Y,de){let Te=null;for(const[st,Mt]of Y)if(st==100*de.offset){if(Mt=="from")Te=0;else if(Mt=="to")Te=100;else{const dt=Mt.split(" ");Te=dt.length==1?parseFloat(dt[0]):100*ll(dt[0],D,L.subject,V,L.inset,CSS.percent(parseFloat(dt[1])))}break}return Te}const X=Xt.keyframeNamesSelectors.get(B.animationName);if(X&&X.size){const Y=[];B.effect.getKeyframes().forEach((Te=>{const st=H(X,Te);st!==null&&st>=0&&st<=100&&(Te.offset=st/100,Y.push(Te))}));const de=Y.sort(((Te,st)=>Te.offset<st.offset?-1:Te.affset>st.offset?1:0));B.effect.setKeyframes(de)}})(u,k),{timeline:k.source?new Qe(k):new bn(k),animOptions:S}):null}function hl(){if(CSS.supports("animation-timeline: --works"))return!0;(function(){function f(S){if(S.innerHTML.trim().length===0||"aphrodite"in S.dataset)return;let w=Xt.transpileStyleSheet(S.innerHTML,!0);w=Xt.transpileStyleSheet(w,!1),S.innerHTML=w}function y(S){S.type!="text/css"&&S.rel!="stylesheet"||!S.href||new URL(S.href,document.baseURI).origin==location.origin&&fetch(S.getAttribute("href")).then((async w=>{const k=await w.text();let B=Xt.transpileStyleSheet(k,!0);if(B=Xt.transpileStyleSheet(k,!1),B!=k){const L=new Blob([B],{type:"text/css"}),D=URL.createObjectURL(L);S.setAttribute("href",D)}}))}new MutationObserver((S=>{for(const w of S)for(const k of w.addedNodes)k instanceof HTMLStyleElement&&f(k),k instanceof HTMLLinkElement&&y(k)})).observe(document.documentElement,{childList:!0,subtree:!0}),document.querySelectorAll("style").forEach((S=>f(S))),document.querySelectorAll("link").forEach((S=>y(S)))})();const u=CSS.supports;CSS.supports=f=>(f=f.replaceAll(/(animation-timeline|scroll-timeline(-(name|axis))?|view-timeline(-(name|axis|inset))?|timeline-scope)\s*:/g,"--supported-property:"),u(f)),window.addEventListener("animationstart",(f=>{f.target.getAnimations().filter((y=>y.animationName===f.animationName)).forEach((y=>{const S=ul(y,y.animationName,f.target);if(S)if(!S.timeline||y instanceof Yi)y.timeline=S.timeline;else{const w=new Yi(y,S.timeline,S.animOptions);y.pause(),w.play()}}))}))}(function(){if(!hl()){if(!Reflect.defineProperty(window,"ScrollTimeline",{value:Qe}))throw Error("Error installing ScrollTimeline polyfill: could not attach ScrollTimeline to window");if(!Reflect.defineProperty(window,"ViewTimeline",{value:bn}))throw Error("Error installing ViewTimeline polyfill: could not attach ViewTimeline to window");if(!Reflect.defineProperty(Element.prototype,"animate",{value:sl}))throw Error("Error installing ScrollTimeline polyfill: could not attach WAAPI's animate to DOM Element");if(!Reflect.defineProperty(window,"Animation",{value:Yi}))throw Error("Error installing Animation constructor.");if(!Reflect.defineProperty(Element.prototype,"getAnimations",{value:ol}))throw Error("Error installing ScrollTimeline polyfill: could not attach WAAPI's getAnimations to DOM Element");if(!Reflect.defineProperty(document,"getAnimations",{value:al}))throw Error("Error installing ScrollTimeline polyfill: could not attach WAAPI's getAnimations to document")}})()})();const Vf=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Jf=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));exports.BatchedParticleRenderer=Vu;exports.Builder=no;exports.ByteBuffer=li;exports.ConstantColor=vn;exports.ConstantValue=ee;exports.Matrix4=Et;exports.MeshBVH=Vn;exports.MotionController=Ol;exports.ParticleSystem=Ur;exports.SIZE_PREFIX_LENGTH=Ga;exports.TrailParticle=Br;exports.Vector4=at;exports.WorkerBase=zf;exports.__viteBrowserExternal=Jf;exports.bundler=Th;exports.createNoise4D=ju;exports.fetchProfile=Pl;exports.index=wh;exports.index$1=Of;exports.index$2=Df;exports.scrollTimeline=Vf;exports.v5=Cl;