{"id":2479,"artifact_id":2298,"version":1,"data":{"version":1,"artifact":{"chain":"tezos","title":"Chaos","artist":"tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad","tokenId":"50132","description":"Move top spheres to change melody. @ramioso","contractAddress":"KT1RJ6PbjHpwc3M5rw5s2Nbmefwbuwbdxton"},"snapshot":{"net":[{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","host":"ipfs.arkivo.art","path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR","type":"http","query":"?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","method":"GET","headers":{"sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\"","upgrade-insecure-requests":"1"},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723849522142},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","body":"","status":301,"headers":{"date":"Fri, 16 Aug 2024 23:05:22 GMT","server":"nginx/1.27.0","location":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","connection":"keep-alive","x-ipfs-path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR","content-type":"text/html; charset=utf-8","x-ipfs-roots":"QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR","content-length":"161","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type\nRange\nUser-Agent\nX-Requested-With","access-control-allow-methods":"GET\nHEAD\nOPTIONS","access-control-expose-headers":"Content-Length\nContent-Range\nX-Chunked-Output\nX-Ipfs-Path\nX-Ipfs-Roots\nX-Stream-Output"}},"type":2,"external":false,"timestamp":1723849522185},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","host":"ipfs.arkivo.art","path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/","type":"http","query":"?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","method":"GET","headers":{"sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\"","upgrade-insecure-requests":"1"},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723849522185},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","body":"","status":200,"headers":{"date":"Fri, 16 Aug 2024 23:05:22 GMT","etag":"\"QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR\"","server":"nginx/1.27.0","connection":"keep-alive","x-ipfs-path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/","content-type":"text/html","x-ipfs-roots":"QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"3998","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type\nRange\nUser-Agent\nX-Requested-With","access-control-allow-methods":"GET\nHEAD\nOPTIONS","access-control-expose-headers":"Content-Length\nContent-Range\nX-Chunked-Output\nX-Ipfs-Path\nX-Ipfs-Roots\nX-Stream-Output"}},"type":2,"external":false,"timestamp":1723849522188},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/static/css/main.572066a2.chunk.css","host":"ipfs.arkivo.art","path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/static/css/main.572066a2.chunk.css","type":"http","query":"","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723849522221},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/static/css/main.572066a2.chunk.css","body":"","status":200,"headers":{"date":"Fri, 16 Aug 2024 23:05:22 GMT","etag":"\"QmNiv82vgc7uRb9PnmUUSp8JRNZNxtzsUvxsqGkrEgJRZc\"","server":"nginx/1.27.0","connection":"keep-alive","x-ipfs-path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/static/css/main.572066a2.chunk.css","content-type":"text/css; charset=utf-8","x-ipfs-roots":"QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR,QmW15JmhsMC7ccmbbW3bNn1CFNKNAXtxLLEgNby54SssG6,QmddWUDTj9qsd8CbKJ7ydEGHUR7R8WzUqynWi9pbaqsdLK,QmNiv82vgc7uRb9PnmUUSp8JRNZNxtzsUvxsqGkrEgJRZc","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"758","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET, HEAD, OPTIONS","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":false,"timestamp":1723849522227},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/static/js/2.494fb46d.chunk.js","host":"ipfs.arkivo.art","path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/static/js/2.494fb46d.chunk.js","type":"http","query":"","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723849522227},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/static/js/2.494fb46d.chunk.js","body":"","status":200,"headers":{"date":"Fri, 16 Aug 2024 23:05:22 GMT","etag":"\"QmbWZyGVMYFUk22TbmxrbzfVnjMkZKvDTWtjF5d2Pz82Aa\"","server":"nginx/1.27.0","connection":"keep-alive","x-ipfs-path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/static/js/2.494fb46d.chunk.js","content-type":"text/javascript; charset=utf-8","x-ipfs-roots":"QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR,QmW15JmhsMC7ccmbbW3bNn1CFNKNAXtxLLEgNby54SssG6,QmQvvQRHDgXxp15J1XuMBwjTys8WMvaa82XRmR6Qzq5KXs,QmbWZyGVMYFUk22TbmxrbzfVnjMkZKvDTWtjF5d2Pz82Aa","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"1614811","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET, HEAD, OPTIONS","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":false,"timestamp":1723849522232},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/static/js/main.4fa8be0d.chunk.js","host":"ipfs.arkivo.art","path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/static/js/main.4fa8be0d.chunk.js","type":"http","query":"","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723849522344},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/static/js/main.4fa8be0d.chunk.js","body":"","status":200,"headers":{"date":"Fri, 16 Aug 2024 23:05:22 GMT","etag":"\"QmT7DRUVQ4mxG6UGXxe2oHbPUr9kEovrHet5hfHBE949pK\"","server":"nginx/1.27.0","connection":"keep-alive","x-ipfs-path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/static/js/main.4fa8be0d.chunk.js","content-type":"text/javascript; charset=utf-8","x-ipfs-roots":"QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR,QmW15JmhsMC7ccmbbW3bNn1CFNKNAXtxLLEgNby54SssG6,QmQvvQRHDgXxp15J1XuMBwjTys8WMvaa82XRmR6Qzq5KXs,QmT7DRUVQ4mxG6UGXxe2oHbPUr9kEovrHet5hfHBE949pK","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"8628","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET, HEAD, OPTIONS","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":false,"timestamp":1723849522352},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-G2.mp3","host":"ipfs.arkivo.art","path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-G2.mp3","type":"http","query":"","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723849522662},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-A2.mp3","host":"ipfs.arkivo.art","path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-A2.mp3","type":"http","query":"","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723849522706},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-C3.mp3","host":"ipfs.arkivo.art","path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-C3.mp3","type":"http","query":"","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723849522706},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-C3.mp3","host":"ipfs.arkivo.art","path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-C3.mp3","type":"http","query":"","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723849522706},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-E3.mp3","host":"ipfs.arkivo.art","path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-E3.mp3","type":"http","query":"","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723849522707},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-G3.mp3","host":"ipfs.arkivo.art","path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-G3.mp3","type":"http","query":"","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723849522707},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-A3.mp3","host":"ipfs.arkivo.art","path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-A3.mp3","type":"http","query":"","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723849522707},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-C4.mp3","host":"ipfs.arkivo.art","path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-C4.mp3","type":"http","query":"","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723849522707},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-D4.mp3","host":"ipfs.arkivo.art","path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-D4.mp3","type":"http","query":"","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723849522707},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-E4.mp3","host":"ipfs.arkivo.art","path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-E4.mp3","type":"http","query":"","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723849522707},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-G2.mp3","host":"ipfs.arkivo.art","path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-G2.mp3","type":"http","query":"","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723849522707},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-A2.mp3","host":"ipfs.arkivo.art","path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-A2.mp3","type":"http","query":"","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723849522708},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-C3.mp3","host":"ipfs.arkivo.art","path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-C3.mp3","type":"http","query":"","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723849522708},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-C3.mp3","host":"ipfs.arkivo.art","path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-C3.mp3","type":"http","query":"","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723849522708},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-E3.mp3","host":"ipfs.arkivo.art","path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-E3.mp3","type":"http","query":"","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723849522712},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-G3.mp3","host":"ipfs.arkivo.art","path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-G3.mp3","type":"http","query":"","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723849522712},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-A3.mp3","host":"ipfs.arkivo.art","path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-A3.mp3","type":"http","query":"","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723849522712},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-C4.mp3","host":"ipfs.arkivo.art","path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-C4.mp3","type":"http","query":"","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723849522712},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-D4.mp3","host":"ipfs.arkivo.art","path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-D4.mp3","type":"http","query":"","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723849522713},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-E4.mp3","host":"ipfs.arkivo.art","path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-E4.mp3","type":"http","query":"","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/?creator=tz1he2B6L9MqwUrXPysHro7E5GN1QosVLMad&viewer=&objkt=50132","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723849522713},{"data":{"url":"blob:https://ipfs.arkivo.art/2a633ab9-68c5-469b-b74b-726fb307c255","host":"","path":"https://ipfs.arkivo.art/2a633ab9-68c5-469b-b74b-726fb307c255","type":"http","query":"","method":"GET","headers":{"referer":"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36"},"fragment":"","postData":null,"protocol":"blob:"},"type":1,"external":false,"timestamp":1723849522713},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-G2.mp3","body":"","status":200,"headers":{"date":"Fri, 16 Aug 2024 23:05:22 GMT","etag":"\"QmQaVgrpKe4aKBWNa5rPfMUt7nQxhRcfCMV6hJfBHadMUk\"","server":"nginx/1.27.0","connection":"keep-alive","x-ipfs-path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-G2.mp3","content-type":"audio/mpeg","x-ipfs-roots":"QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR,QmPLh9hxJsx91dMVq4QGSMaJ6PArpPkvTrrr46jFewBFin,QmQaVgrpKe4aKBWNa5rPfMUt7nQxhRcfCMV6hJfBHadMUk","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"129148","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET, HEAD, OPTIONS","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":false,"timestamp":1723849522713},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-C3.mp3","body":"","status":200,"headers":{"date":"Fri, 16 Aug 2024 23:05:22 GMT","etag":"\"QmXN6BJnSBqvKszpe5CfnFYb5UEXhEpsgK5249oz94GXkL\"","server":"nginx/1.27.0","x-ipfs-path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-C3.mp3","content-type":"audio/mpeg","x-ipfs-roots":"QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR,QmPLh9hxJsx91dMVq4QGSMaJ6PArpPkvTrrr46jFewBFin,QmXN6BJnSBqvKszpe5CfnFYb5UEXhEpsgK5249oz94GXkL","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"129148","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET, HEAD, OPTIONS","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":false,"timestamp":1723849522715},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-A3.mp3","body":"","status":200,"headers":{"date":"Fri, 16 Aug 2024 23:05:22 GMT","etag":"\"QmPdgYSrCLLzJSr5os3ZCo4MtSKku9DMQNYE7dKZriWhUB\"","server":"nginx/1.27.0","x-ipfs-path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-A3.mp3","content-type":"audio/mpeg","x-ipfs-roots":"QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR,QmPLh9hxJsx91dMVq4QGSMaJ6PArpPkvTrrr46jFewBFin,QmPdgYSrCLLzJSr5os3ZCo4MtSKku9DMQNYE7dKZriWhUB","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"129148","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET, HEAD, OPTIONS","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":false,"timestamp":1723849522715},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-C4.mp3","body":"","status":200,"headers":{"date":"Fri, 16 Aug 2024 23:05:22 GMT","etag":"\"QmaWe6QHwAGNYBed26aQgnNZ7pF3bbWgw8L7QMsGeB17c8\"","server":"nginx/1.27.0","x-ipfs-path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-C4.mp3","content-type":"audio/mpeg","x-ipfs-roots":"QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR,QmPLh9hxJsx91dMVq4QGSMaJ6PArpPkvTrrr46jFewBFin,QmaWe6QHwAGNYBed26aQgnNZ7pF3bbWgw8L7QMsGeB17c8","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"129148","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET, HEAD, OPTIONS","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":false,"timestamp":1723849522715},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-A3.mp3","body":"","status":200,"headers":{"date":"Fri, 16 Aug 2024 23:05:22 GMT","etag":"\"QmPdgYSrCLLzJSr5os3ZCo4MtSKku9DMQNYE7dKZriWhUB\"","server":"nginx/1.27.0","connection":"keep-alive","x-ipfs-path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-A3.mp3","content-type":"audio/mpeg","x-ipfs-roots":"QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR,QmPLh9hxJsx91dMVq4QGSMaJ6PArpPkvTrrr46jFewBFin,QmPdgYSrCLLzJSr5os3ZCo4MtSKku9DMQNYE7dKZriWhUB","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"129148","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET, HEAD, OPTIONS","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":false,"timestamp":1723849522715},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-A2.mp3","body":"","status":200,"headers":{"date":"Fri, 16 Aug 2024 23:05:22 GMT","etag":"\"QmdoSH8qxMXh5M4h9AnsoFFcn7mspWEzkGSaoWyPKNBxjb\"","server":"nginx/1.27.0","connection":"keep-alive","x-ipfs-path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-A2.mp3","content-type":"audio/mpeg","x-ipfs-roots":"QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR,QmPLh9hxJsx91dMVq4QGSMaJ6PArpPkvTrrr46jFewBFin,QmdoSH8qxMXh5M4h9AnsoFFcn7mspWEzkGSaoWyPKNBxjb","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"129148","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET, HEAD, OPTIONS","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":false,"timestamp":1723849522723},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-C3.mp3","body":"","status":200,"headers":{"date":"Fri, 16 Aug 2024 23:05:22 GMT","etag":"\"QmXN6BJnSBqvKszpe5CfnFYb5UEXhEpsgK5249oz94GXkL\"","server":"nginx/1.27.0","connection":"keep-alive","x-ipfs-path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-C3.mp3","content-type":"audio/mpeg","x-ipfs-roots":"QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR,QmPLh9hxJsx91dMVq4QGSMaJ6PArpPkvTrrr46jFewBFin,QmXN6BJnSBqvKszpe5CfnFYb5UEXhEpsgK5249oz94GXkL","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"129148","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET, HEAD, OPTIONS","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":false,"timestamp":1723849522723},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-C3.mp3","body":"","status":200,"headers":{"date":"Fri, 16 Aug 2024 23:05:22 GMT","etag":"\"QmXN6BJnSBqvKszpe5CfnFYb5UEXhEpsgK5249oz94GXkL\"","server":"nginx/1.27.0","x-ipfs-path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-C3.mp3","content-type":"audio/mpeg","x-ipfs-roots":"QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR,QmPLh9hxJsx91dMVq4QGSMaJ6PArpPkvTrrr46jFewBFin,QmXN6BJnSBqvKszpe5CfnFYb5UEXhEpsgK5249oz94GXkL","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"129148","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET, HEAD, OPTIONS","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":false,"timestamp":1723849522723},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-E3.mp3","body":"","status":200,"headers":{"date":"Fri, 16 Aug 2024 23:05:22 GMT","etag":"\"Qmd9t2hVsCYWatGnZfuCfr8ZbduK38m2aduxeSyg8YJVQF\"","server":"nginx/1.27.0","connection":"keep-alive","x-ipfs-path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-E3.mp3","content-type":"audio/mpeg","x-ipfs-roots":"QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR,QmPLh9hxJsx91dMVq4QGSMaJ6PArpPkvTrrr46jFewBFin,Qmd9t2hVsCYWatGnZfuCfr8ZbduK38m2aduxeSyg8YJVQF","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"129148","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET, HEAD, OPTIONS","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":false,"timestamp":1723849522723},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-G3.mp3","body":"","status":200,"headers":{"date":"Fri, 16 Aug 2024 23:05:22 GMT","etag":"\"QmbE1d12kevvo1j8fT8HuuFz5S9B8VjqDeo9Tg5Wu3UW3g\"","server":"nginx/1.27.0","connection":"keep-alive","x-ipfs-path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-G3.mp3","content-type":"audio/mpeg","x-ipfs-roots":"QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR,QmPLh9hxJsx91dMVq4QGSMaJ6PArpPkvTrrr46jFewBFin,QmbE1d12kevvo1j8fT8HuuFz5S9B8VjqDeo9Tg5Wu3UW3g","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"129148","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET, HEAD, OPTIONS","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":false,"timestamp":1723849522724},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-C4.mp3","body":"","status":200,"headers":{"date":"Fri, 16 Aug 2024 23:05:22 GMT","etag":"\"QmaWe6QHwAGNYBed26aQgnNZ7pF3bbWgw8L7QMsGeB17c8\"","server":"nginx/1.27.0","connection":"keep-alive","x-ipfs-path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-C4.mp3","content-type":"audio/mpeg","x-ipfs-roots":"QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR,QmPLh9hxJsx91dMVq4QGSMaJ6PArpPkvTrrr46jFewBFin,QmaWe6QHwAGNYBed26aQgnNZ7pF3bbWgw8L7QMsGeB17c8","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"129148","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET, HEAD, OPTIONS","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":false,"timestamp":1723849522724},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-G2.mp3","body":"","status":200,"headers":{"date":"Fri, 16 Aug 2024 23:05:22 GMT","etag":"\"QmQaVgrpKe4aKBWNa5rPfMUt7nQxhRcfCMV6hJfBHadMUk\"","server":"nginx/1.27.0","x-ipfs-path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-G2.mp3","content-type":"audio/mpeg","x-ipfs-roots":"QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR,QmPLh9hxJsx91dMVq4QGSMaJ6PArpPkvTrrr46jFewBFin,QmQaVgrpKe4aKBWNa5rPfMUt7nQxhRcfCMV6hJfBHadMUk","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"129148","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET, HEAD, OPTIONS","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":false,"timestamp":1723849522724},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-A2.mp3","body":"","status":200,"headers":{"date":"Fri, 16 Aug 2024 23:05:22 GMT","etag":"\"QmdoSH8qxMXh5M4h9AnsoFFcn7mspWEzkGSaoWyPKNBxjb\"","server":"nginx/1.27.0","x-ipfs-path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-A2.mp3","content-type":"audio/mpeg","x-ipfs-roots":"QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR,QmPLh9hxJsx91dMVq4QGSMaJ6PArpPkvTrrr46jFewBFin,QmdoSH8qxMXh5M4h9AnsoFFcn7mspWEzkGSaoWyPKNBxjb","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"129148","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET, HEAD, OPTIONS","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":false,"timestamp":1723849522724},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-E3.mp3","body":"","status":200,"headers":{"date":"Fri, 16 Aug 2024 23:05:22 GMT","etag":"\"Qmd9t2hVsCYWatGnZfuCfr8ZbduK38m2aduxeSyg8YJVQF\"","server":"nginx/1.27.0","x-ipfs-path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-E3.mp3","content-type":"audio/mpeg","x-ipfs-roots":"QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR,QmPLh9hxJsx91dMVq4QGSMaJ6PArpPkvTrrr46jFewBFin,Qmd9t2hVsCYWatGnZfuCfr8ZbduK38m2aduxeSyg8YJVQF","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"129148","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET, HEAD, OPTIONS","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":false,"timestamp":1723849522724},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-G3.mp3","body":"","status":200,"headers":{"date":"Fri, 16 Aug 2024 23:05:22 GMT","etag":"\"QmbE1d12kevvo1j8fT8HuuFz5S9B8VjqDeo9Tg5Wu3UW3g\"","server":"nginx/1.27.0","x-ipfs-path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-G3.mp3","content-type":"audio/mpeg","x-ipfs-roots":"QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR,QmPLh9hxJsx91dMVq4QGSMaJ6PArpPkvTrrr46jFewBFin,QmbE1d12kevvo1j8fT8HuuFz5S9B8VjqDeo9Tg5Wu3UW3g","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"129148","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET, HEAD, OPTIONS","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":false,"timestamp":1723849522724},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-D4.mp3","body":"","status":200,"headers":{"date":"Fri, 16 Aug 2024 23:05:22 GMT","etag":"\"QmQTxXSoyN1chXgJWLBdLAyAuZnnmuowqLjDYMFuV8A94L\"","server":"nginx/1.27.0","connection":"keep-alive","x-ipfs-path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-D4.mp3","content-type":"audio/mpeg","x-ipfs-roots":"QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR,QmPLh9hxJsx91dMVq4QGSMaJ6PArpPkvTrrr46jFewBFin,QmQTxXSoyN1chXgJWLBdLAyAuZnnmuowqLjDYMFuV8A94L","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"129148","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET, HEAD, OPTIONS","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":false,"timestamp":1723849522767},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-C3.mp3","body":"","status":200,"headers":{"date":"Fri, 16 Aug 2024 23:05:22 GMT","etag":"\"QmXN6BJnSBqvKszpe5CfnFYb5UEXhEpsgK5249oz94GXkL\"","server":"nginx/1.27.0","x-ipfs-path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-C3.mp3","content-type":"audio/mpeg","x-ipfs-roots":"QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR,QmPLh9hxJsx91dMVq4QGSMaJ6PArpPkvTrrr46jFewBFin,QmXN6BJnSBqvKszpe5CfnFYb5UEXhEpsgK5249oz94GXkL","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"129148","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET, HEAD, OPTIONS","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":false,"timestamp":1723849522768},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-E4.mp3","body":"","status":200,"headers":{"date":"Fri, 16 Aug 2024 23:05:22 GMT","etag":"\"QmYKetcnHsJZWnQQ5jP9FVGjZ41u85Y9Q2P9HRHkdCsdTe\"","server":"nginx/1.27.0","connection":"keep-alive","x-ipfs-path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-E4.mp3","content-type":"audio/mpeg","x-ipfs-roots":"QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR,QmPLh9hxJsx91dMVq4QGSMaJ6PArpPkvTrrr46jFewBFin,QmYKetcnHsJZWnQQ5jP9FVGjZ41u85Y9Q2P9HRHkdCsdTe","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"129148","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET, HEAD, OPTIONS","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":false,"timestamp":1723849522768},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-D4.mp3","body":"","status":200,"headers":{"date":"Fri, 16 Aug 2024 23:05:22 GMT","etag":"\"QmQTxXSoyN1chXgJWLBdLAyAuZnnmuowqLjDYMFuV8A94L\"","server":"nginx/1.27.0","x-ipfs-path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-D4.mp3","content-type":"audio/mpeg","x-ipfs-roots":"QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR,QmPLh9hxJsx91dMVq4QGSMaJ6PArpPkvTrrr46jFewBFin,QmQTxXSoyN1chXgJWLBdLAyAuZnnmuowqLjDYMFuV8A94L","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"129148","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET, HEAD, OPTIONS","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":false,"timestamp":1723849522770},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-E4.mp3","body":"","status":200,"headers":{"date":"Fri, 16 Aug 2024 23:05:22 GMT","etag":"\"QmYKetcnHsJZWnQQ5jP9FVGjZ41u85Y9Q2P9HRHkdCsdTe\"","server":"nginx/1.27.0","x-ipfs-path":"/ipfs/QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR/teropa/scale-E4.mp3","content-type":"audio/mpeg","x-ipfs-roots":"QmP3MXzZWPSUGhLm2c3CDCmXrvxBaiPvTRDPUxG3EkLchR,QmPLh9hxJsx91dMVq4QGSMaJ6PArpPkvTrrr46jFewBFin,QmYKetcnHsJZWnQQ5jP9FVGjZ41u85Y9Q2P9HRHkdCsdTe","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"129148","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET, HEAD, OPTIONS","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":false,"timestamp":1723849522770},{"data":{"url":"blob:https://ipfs.arkivo.art/2a633ab9-68c5-469b-b74b-726fb307c255","body":"\"\\n\\t\\t\\t// the initial timeout time\\n\\t\\t\\tlet timeoutTime =  50.0;\\n\\t\\t\\t// onmessage callback\\n\\t\\t\\tself.onmessage = function(msg){\\n\\t\\t\\t\\ttimeoutTime = parseInt(msg.data);\\n\\t\\t\\t};\\n\\t\\t\\t// the tick function which posts a message\\n\\t\\t\\t// and schedules a new tick\\n\\t\\t\\tfunction tick(){\\n\\t\\t\\t\\tsetTimeout(tick, timeoutTime);\\n\\t\\t\\t\\tself.postMessage('tick');\\n\\t\\t\\t}\\n\\t\\t\\t// call tick initially\\n\\t\\t\\ttick();\\n\\t\\t\\t\"","status":200,"headers":{"content-type":"text/javascript","content-length":"371"}},"type":2,"external":true,"timestamp":1723849524006},{"data":{"url":"blob:https://ipfs.arkivo.art/53f810ad-7829-4182-afd3-61a7d6f20a35","host":"","path":"https://ipfs.arkivo.art/53f810ad-7829-4182-afd3-61a7d6f20a35","type":"http","query":"","method":"GET","headers":{"referer":"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36"},"fragment":"","postData":null,"protocol":"blob:"},"type":1,"external":false,"timestamp":1723849524094},{"data":{"url":"blob:https://ipfs.arkivo.art/53f810ad-7829-4182-afd3-61a7d6f20a35","body":"\"!function(){\\\\\\\"use strict\\\\\\\";class t{constructor(t=[0,0,0,0,0,0,0,0,0]){this.elements=t}identity(){const t=this.elements;t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1}setZero(){const t=this.elements;t[0]=0,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=0,t[6]=0,t[7]=0,t[8]=0}setTrace(t){const e=this.elements;e[0]=t.x,e[4]=t.y,e[8]=t.z}getTrace(t=new e){const s=this.elements;return t.x=s[0],t.y=s[4],t.z=s[8],t}vmult(t,s=new e){const i=this.elements,o=t.x,n=t.y,r=t.z;return s.x=i[0]*o+i[1]*n+i[2]*r,s.y=i[3]*o+i[4]*n+i[5]*r,s.z=i[6]*o+i[7]*n+i[8]*r,s}smult(t){for(let e=0;e<this.elements.length;e++)this.elements[e]*=t}mmult(e,s=new t){const i=this.elements,o=e.elements,n=s.elements,r=i[0],a=i[1],l=i[2],c=i[3],h=i[4],u=i[5],d=i[6],p=i[7],y=i[8],m=o[0],v=o[1],w=o[2],f=o[3],g=o[4],x=o[5],b=o[6],A=o[7],B=o[8];return n[0]=r*m+a*f+l*b,n[1]=r*v+a*g+l*A,n[2]=r*w+a*x+l*B,n[3]=c*m+h*f+u*b,n[4]=c*v+h*g+u*A,n[5]=c*w+h*x+u*B,n[6]=d*m+p*f+y*b,n[7]=d*v+p*g+y*A,n[8]=d*w+p*x+y*B,s}scale(e,s=new t){const i=this.elements,o=s.elements;for(let t=0;3!==t;t++)o[3*t+0]=e.x*i[3*t+0],o[3*t+1]=e.y*i[3*t+1],o[3*t+2]=e.z*i[3*t+2];return s}solve(t,s=new e){const i=[];let o,n;for(o=0;o<12;o++)i.push(0);for(o=0;o<3;o++)for(n=0;n<3;n++)i[o+4*n]=this.elements[o+3*n];i[3]=t.x,i[7]=t.y,i[11]=t.z;let r=3;const a=r;let l;let c;do{if(o=a-r,0===i[o+4*o])for(n=o+1;n<a;n++)if(0!==i[o+4*n]){l=4;do{c=4-l,i[c+4*o]+=i[c+4*n]}while(--l);break}if(0!==i[o+4*o])for(n=o+1;n<a;n++){const t=i[o+4*n]/i[o+4*o];l=4;do{c=4-l,i[c+4*n]=c<=o?0:i[c+4*n]-i[c+4*o]*t}while(--l)}}while(--r);if(s.z=i[11]/i[10],s.y=(i[7]-i[6]*s.z)/i[5],s.x=(i[3]-i[2]*s.z-i[1]*s.y)/i[0],isNaN(s.x)||isNaN(s.y)||isNaN(s.z)||s.x===1/0||s.y===1/0||s.z===1/0)throw\\\\\\\"Could not solve equation! Got x=[\\\\\\\"+s.toString()+\\\\\\\"], b=[\\\\\\\"+t.toString()+\\\\\\\"], A=[\\\\\\\"+this.toString()+\\\\\\\"]\\\\\\\";return s}e(t,e,s){if(void 0===s)return this.elements[e+3*t];this.elements[e+3*t]=s}copy(t){for(let e=0;e<t.elements.length;e++)this.elements[e]=t.elements[e];return this}toString(){let t=\\\\\\\"\\\\\\\";for(let e=0;e<9;e++)t+=this.elements[e]+\\\\\\\",\\\\\\\";return t}reverse(e=new t){const s=[];let i,o;for(i=0;i<18;i++)s.push(0);for(i=0;i<3;i++)for(o=0;o<3;o++)s[i+6*o]=this.elements[i+3*o];s[3]=1,s[9]=0,s[15]=0,s[4]=0,s[10]=1,s[16]=0,s[5]=0,s[11]=0,s[17]=1;let n=3;const r=n;let a;let l;do{if(i=r-n,0===s[i+6*i])for(o=i+1;o<r;o++)if(0!==s[i+6*o]){a=6;do{l=6-a,s[l+6*i]+=s[l+6*o]}while(--a);break}if(0!==s[i+6*i])for(o=i+1;o<r;o++){const t=s[i+6*o]/s[i+6*i];a=6;do{l=6-a,s[l+6*o]=l<=i?0:s[l+6*o]-s[l+6*i]*t}while(--a)}}while(--n);i=2;do{o=i-1;do{const t=s[i+6*o]/s[i+6*i];a=6;do{l=6-a,s[l+6*o]=s[l+6*o]-s[l+6*i]*t}while(--a)}while(o--)}while(--i);i=2;do{const t=1/s[i+6*i];a=6;do{l=6-a,s[l+6*i]=s[l+6*i]*t}while(--a)}while(i--);i=2;do{o=2;do{if(l=s[3+o+6*i],isNaN(l)||l===1/0)throw\\\\\\\"Could not reverse! A=[\\\\\\\"+this.toString()+\\\\\\\"]\\\\\\\";e.e(i,o,l)}while(o--)}while(i--);return e}setRotationFromQuaternion(t){const e=t.x,s=t.y,i=t.z,o=t.w,n=e+e,r=s+s,a=i+i,l=e*n,c=e*r,h=e*a,u=s*r,d=s*a,p=i*a,y=o*n,m=o*r,v=o*a,w=this.elements;return w[0]=1-(u+p),w[1]=c-v,w[2]=h+m,w[3]=c+v,w[4]=1-(l+p),w[5]=d-y,w[6]=h-m,w[7]=d+y,w[8]=1-(l+u),this}transpose(e=new t){const s=this.elements,i=e.elements;let o;return i[0]=s[0],i[4]=s[4],i[8]=s[8],o=s[1],i[1]=s[3],i[3]=o,o=s[2],i[2]=s[6],i[6]=o,o=s[5],i[5]=s[7],i[7]=o,e}}class e{constructor(t=0,e=0,s=0){this.x=t,this.y=e,this.z=s}cross(t,s=new e){const i=t.x,o=t.y,n=t.z,r=this.x,a=this.y,l=this.z;return s.x=a*n-l*o,s.y=l*i-r*n,s.z=r*o-a*i,s}set(t,e,s){return this.x=t,this.y=e,this.z=s,this}setZero(){this.x=this.y=this.z=0}vadd(t,s){if(!s)return new e(this.x+t.x,this.y+t.y,this.z+t.z);s.x=t.x+this.x,s.y=t.y+this.y,s.z=t.z+this.z}vsub(t,s){if(!s)return new e(this.x-t.x,this.y-t.y,this.z-t.z);s.x=this.x-t.x,s.y=this.y-t.y,s.z=this.z-t.z}crossmat(){return new t([0,-this.z,this.y,this.z,0,-this.x,-this.y,this.x,0])}normalize(){const t=this.x,e=this.y,s=this.z,i=Math.sqrt(t*t+e*e+s*s);if(i>0){const t=1/i;this.x*=t,this.y*=t,this.z*=t}else this.x=0,this.y=0,this.z=0;return i}unit(t=new e){const s=this.x,i=this.y,o=this.z;let n=Math.sqrt(s*s+i*i+o*o);return n>0?(n=1/n,t.x=s*n,t.y=i*n,t.z=o*n):(t.x=1,t.y=0,t.z=0),t}length(){const t=this.x,e=this.y,s=this.z;return Math.sqrt(t*t+e*e+s*s)}lengthSquared(){return this.dot(this)}distanceTo(t){const e=this.x,s=this.y,i=this.z,o=t.x,n=t.y,r=t.z;return Math.sqrt((o-e)*(o-e)+(n-s)*(n-s)+(r-i)*(r-i))}distanceSquared(t){const e=this.x,s=this.y,i=this.z,o=t.x,n=t.y,r=t.z;return(o-e)*(o-e)+(n-s)*(n-s)+(r-i)*(r-i)}scale(t,s=new e){const i=this.x,o=this.y,n=this.z;return s.x=t*i,s.y=t*o,s.z=t*n,s}vmul(t,s=new e){return s.x=t.x*this.x,s.y=t.y*this.y,s.z=t.z*this.z,s}addScaledVector(t,s,i=new e){return i.x=this.x+t*s.x,i.y=this.y+t*s.y,i.z=this.z+t*s.z,i}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z}isZero(){return 0===this.x&&0===this.y&&0===this.z}negate(t=new e){return t.x=-this.x,t.y=-this.y,t.z=-this.z,t}tangents(t,e){const o=this.length();if(o>0){const n=s,r=1/o;n.set(this.x*r,this.y*r,this.z*r);const a=i;Math.abs(n.x)<.9?(a.set(1,0,0),n.cross(a,t)):(a.set(0,1,0),n.cross(a,t)),n.cross(t,e)}else t.set(1,0,0),e.set(0,1,0)}toString(){return this.x+\\\\\\\",\\\\\\\"+this.y+\\\\\\\",\\\\\\\"+this.z}toArray(){return[this.x,this.y,this.z]}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}lerp(t,e,s){const i=this.x,o=this.y,n=this.z;s.x=i+(t.x-i)*e,s.y=o+(t.y-o)*e,s.z=n+(t.z-n)*e}almostEquals(t,e=1e-6){return!(Math.abs(this.x-t.x)>e||Math.abs(this.y-t.y)>e||Math.abs(this.z-t.z)>e)}almostZero(t=1e-6){return!(Math.abs(this.x)>t||Math.abs(this.y)>t||Math.abs(this.z)>t)}isAntiparallelTo(t,e){return this.negate(o),o.almostEquals(t,e)}clone(){return new e(this.x,this.y,this.z)}}e.ZERO=new e(0,0,0),e.UNIT_X=new e(1,0,0),e.UNIT_Y=new e(0,1,0),e.UNIT_Z=new e(0,0,1);const s=new e,i=new e,o=new e;class n{constructor(t={}){this.lowerBound=new e,this.upperBound=new e,t.lowerBound&&this.lowerBound.copy(t.lowerBound),t.upperBound&&this.upperBound.copy(t.upperBound)}setFromPoints(t,e,s,i){const o=this.lowerBound,n=this.upperBound,a=s;o.copy(t[0]),a&&a.vmult(o,o),n.copy(o);for(let e=1;e<t.length;e++){let s=t[e];a&&(a.vmult(s,r),s=r),s.x>n.x&&(n.x=s.x),s.x<o.x&&(o.x=s.x),s.y>n.y&&(n.y=s.y),s.y<o.y&&(o.y=s.y),s.z>n.z&&(n.z=s.z),s.z<o.z&&(o.z=s.z)}return e&&(e.vadd(o,o),e.vadd(n,n)),i&&(o.x-=i,o.y-=i,o.z-=i,n.x+=i,n.y+=i,n.z+=i),this}copy(t){return this.lowerBound.copy(t.lowerBound),this.upperBound.copy(t.upperBound),this}clone(){return(new n).copy(this)}extend(t){this.lowerBound.x=Math.min(this.lowerBound.x,t.lowerBound.x),this.upperBound.x=Math.max(this.upperBound.x,t.upperBound.x),this.lowerBound.y=Math.min(this.lowerBound.y,t.lowerBound.y),this.upperBound.y=Math.max(this.upperBound.y,t.upperBound.y),this.lowerBound.z=Math.min(this.lowerBound.z,t.lowerBound.z),this.upperBound.z=Math.max(this.upperBound.z,t.upperBound.z)}overlaps(t){const e=this.lowerBound,s=this.upperBound,i=t.lowerBound,o=t.upperBound,n=i.x<=s.x&&s.x<=o.x||e.x<=o.x&&o.x<=s.x,r=i.y<=s.y&&s.y<=o.y||e.y<=o.y&&o.y<=s.y,a=i.z<=s.z&&s.z<=o.z||e.z<=o.z&&o.z<=s.z;return n&&r&&a}volume(){const t=this.lowerBound,e=this.upperBound;return(e.x-t.x)*(e.y-t.y)*(e.z-t.z)}contains(t){const e=this.lowerBound,s=this.upperBound,i=t.lowerBound,o=t.upperBound;return e.x<=i.x&&s.x>=o.x&&e.y<=i.y&&s.y>=o.y&&e.z<=i.z&&s.z>=o.z}getCorners(t,e,s,i,o,n,r,a){const l=this.lowerBound,c=this.upperBound;t.copy(l),e.set(c.x,l.y,l.z),s.set(c.x,c.y,l.z),i.set(l.x,c.y,c.z),o.set(c.x,l.y,c.z),n.set(l.x,c.y,l.z),r.set(l.x,l.y,c.z),a.copy(c)}toLocalFrame(t,e){const s=a,i=s[0],o=s[1],n=s[2],r=s[3],l=s[4],c=s[5],h=s[6],u=s[7];this.getCorners(i,o,n,r,l,c,h,u);for(let e=0;8!==e;e++){const i=s[e];t.pointToLocal(i,i)}return e.setFromPoints(s)}toWorldFrame(t,e){const s=a,i=s[0],o=s[1],n=s[2],r=s[3],l=s[4],c=s[5],h=s[6],u=s[7];this.getCorners(i,o,n,r,l,c,h,u);for(let e=0;8!==e;e++){const i=s[e];t.pointToWorld(i,i)}return e.setFromPoints(s)}overlapsRay(t){const{direction:e,from:s}=t,i=1/e.x,o=1/e.y,n=1/e.z,r=(this.lowerBound.x-s.x)*i,a=(this.upperBound.x-s.x)*i,l=(this.lowerBound.y-s.y)*o,c=(this.upperBound.y-s.y)*o,h=(this.lowerBound.z-s.z)*n,u=(this.upperBound.z-s.z)*n,d=Math.max(Math.max(Math.min(r,a),Math.min(l,c)),Math.min(h,u)),p=Math.min(Math.min(Math.max(r,a),Math.max(l,c)),Math.max(h,u));return!(p<0)&&!(d>p)}}const r=new e,a=[new e,new e,new e,new e,new e,new e,new e,new e];class l{constructor(){this.matrix=[]}get(t,e){let{index:s}=t,{index:i}=e;if(i>s){const t=i;i=s,s=t}return this.matrix[(s*(s+1)>>1)+i-1]}set(t,e,s){let{index:i}=t,{index:o}=e;if(o>i){const t=o;o=i,i=t}this.matrix[(i*(i+1)>>1)+o-1]=s?1:0}reset(){for(let t=0,e=this.matrix.length;t!==e;t++)this.matrix[t]=0}setNumObjects(t){this.matrix.length=t*(t-1)>>1}}class c{constructor(){}addEventListener(t,e){void 0===this._listeners&&(this._listeners={});const s=this._listeners;return void 0===s[t]&&(s[t]=[]),s[t].includes(e)||s[t].push(e),this}hasEventListener(t,e){if(void 0===this._listeners)return!1;const s=this._listeners;return!(void 0===s[t]||!s[t].includes(e))}hasAnyEventListener(t){if(void 0===this._listeners)return!1;return void 0!==this._listeners[t]}removeEventListener(t,e){if(void 0===this._listeners)return this;const s=this._listeners;if(void 0===s[t])return this;const i=s[t].indexOf(e);return-1!==i&&s[t].splice(i,1),this}dispatchEvent(t){if(void 0===this._listeners)return this;const e=this._listeners[t.type];if(void 0!==e){t.target=this;for(let s=0,i=e.length;s<i;s++)e[s].call(this,t)}return this}}class h{constructor(t=0,e=0,s=0,i=1){this.x=t,this.y=e,this.z=s,this.w=i}set(t,e,s,i){return this.x=t,this.y=e,this.z=s,this.w=i,this}toString(){return this.x+\\\\\\\",\\\\\\\"+this.y+\\\\\\\",\\\\\\\"+this.z+\\\\\\\",\\\\\\\"+this.w}toArray(){return[this.x,this.y,this.z,this.w]}setFromAxisAngle(t,e){const s=Math.sin(.5*e);return this.x=t.x*s,this.y=t.y*s,this.z=t.z*s,this.w=Math.cos(.5*e),this}toAxisAngle(t=new e){this.normalize();const s=2*Math.acos(this.w),i=Math.sqrt(1-this.w*this.w);return i<.001?(t.x=this.x,t.y=this.y,t.z=this.z):(t.x=this.x/i,t.y=this.y/i,t.z=this.z/i),[t,s]}setFromVectors(t,e){if(t.isAntiparallelTo(e)){const e=u,s=d;t.tangents(e,s),this.setFromAxisAngle(e,Math.PI)}else{const s=t.cross(e);this.x=s.x,this.y=s.y,this.z=s.z,this.w=Math.sqrt(t.length()**2*e.length()**2)+t.dot(e),this.normalize()}return this}mult(t,e=new h){const s=this.x,i=this.y,o=this.z,n=this.w,r=t.x,a=t.y,l=t.z,c=t.w;return e.x=s*c+n*r+i*l-o*a,e.y=i*c+n*a+o*r-s*l,e.z=o*c+n*l+s*a-i*r,e.w=n*c-s*r-i*a-o*l,e}inverse(t=new h){const e=this.x,s=this.y,i=this.z,o=this.w;this.conjugate(t);const n=1/(e*e+s*s+i*i+o*o);return t.x*=n,t.y*=n,t.z*=n,t.w*=n,t}conjugate(t=new h){return t.x=-this.x,t.y=-this.y,t.z=-this.z,t.w=this.w,t}normalize(){let t=Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w);return 0===t?(this.x=0,this.y=0,this.z=0,this.w=0):(t=1/t,this.x*=t,this.y*=t,this.z*=t,this.w*=t),this}normalizeFast(){const t=(3-(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w))/2;return 0===t?(this.x=0,this.y=0,this.z=0,this.w=0):(this.x*=t,this.y*=t,this.z*=t,this.w*=t),this}vmult(t,s=new e){const i=t.x,o=t.y,n=t.z,r=this.x,a=this.y,l=this.z,c=this.w,h=c*i+a*n-l*o,u=c*o+l*i-r*n,d=c*n+r*o-a*i,p=-r*i-a*o-l*n;return s.x=h*c+p*-r+u*-l-d*-a,s.y=u*c+p*-a+d*-r-h*-l,s.z=d*c+p*-l+h*-a-u*-r,s}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w,this}toEuler(t,e=\\\\\\\"YZX\\\\\\\"){let s,i,o;const n=this.x,r=this.y,a=this.z,l=this.w;switch(e){case\\\\\\\"YZX\\\\\\\":const t=n*r+a*l;if(t>.499&&(s=2*Math.atan2(n,l),i=Math.PI/2,o=0),t<-.499&&(s=-2*Math.atan2(n,l),i=-Math.PI/2,o=0),void 0===s){const e=n*n,c=r*r,h=a*a;s=Math.atan2(2*r*l-2*n*a,1-2*c-2*h),i=Math.asin(2*t),o=Math.atan2(2*n*l-2*r*a,1-2*e-2*h)}break;default:throw new Error(\\\\\\\"Euler order \\\\\\\"+e+\\\\\\\" not supported yet.\\\\\\\")}t.y=s,t.z=i,t.x=o}setFromEuler(t,e,s,i=\\\\\\\"XYZ\\\\\\\"){const o=Math.cos(t/2),n=Math.cos(e/2),r=Math.cos(s/2),a=Math.sin(t/2),l=Math.sin(e/2),c=Math.sin(s/2);return\\\\\\\"XYZ\\\\\\\"===i?(this.x=a*n*r+o*l*c,this.y=o*l*r-a*n*c,this.z=o*n*c+a*l*r,this.w=o*n*r-a*l*c):\\\\\\\"YXZ\\\\\\\"===i?(this.x=a*n*r+o*l*c,this.y=o*l*r-a*n*c,this.z=o*n*c-a*l*r,this.w=o*n*r+a*l*c):\\\\\\\"ZXY\\\\\\\"===i?(this.x=a*n*r-o*l*c,this.y=o*l*r+a*n*c,this.z=o*n*c+a*l*r,this.w=o*n*r-a*l*c):\\\\\\\"ZYX\\\\\\\"===i?(this.x=a*n*r-o*l*c,this.y=o*l*r+a*n*c,this.z=o*n*c-a*l*r,this.w=o*n*r+a*l*c):\\\\\\\"YZX\\\\\\\"===i?(this.x=a*n*r+o*l*c,this.y=o*l*r+a*n*c,this.z=o*n*c-a*l*r,this.w=o*n*r-a*l*c):\\\\\\\"XZY\\\\\\\"===i&&(this.x=a*n*r-o*l*c,this.y=o*l*r-a*n*c,this.z=o*n*c+a*l*r,this.w=o*n*r+a*l*c),this}clone(){return new h(this.x,this.y,this.z,this.w)}slerp(t,e,s=new h){const i=this.x,o=this.y,n=this.z,r=this.w;let a,l,c,u,d,p=t.x,y=t.y,m=t.z,v=t.w;return l=i*p+o*y+n*m+r*v,l<0&&(l=-l,p=-p,y=-y,m=-m,v=-v),1-l>1e-6?(a=Math.acos(l),c=Math.sin(a),u=Math.sin((1-e)*a)/c,d=Math.sin(e*a)/c):(u=1-e,d=e),s.x=u*i+d*p,s.y=u*o+d*y,s.z=u*n+d*m,s.w=u*r+d*v,s}integrate(t,e,s,i=new h){const o=t.x*s.x,n=t.y*s.y,r=t.z*s.z,a=this.x,l=this.y,c=this.z,u=this.w,d=.5*e;return i.x+=d*(o*u+n*c-r*l),i.y+=d*(n*u+r*a-o*c),i.z+=d*(r*u+o*l-n*a),i.w+=d*(-o*a-n*l-r*c),i}}const u=new e,d=new e;class p{constructor(t={}){this.id=p.idCounter++,this.type=t.type||0,this.boundingSphereRadius=0,this.collisionResponse=!t.collisionResponse||t.collisionResponse,this.collisionFilterGroup=void 0!==t.collisionFilterGroup?t.collisionFilterGroup:1,this.collisionFilterMask=void 0!==t.collisionFilterMask?t.collisionFilterMask:-1,this.material=t.material?t.material:null,this.body=null}updateBoundingSphereRadius(){throw\\\\\\\"computeBoundingSphereRadius() not implemented for shape type \\\\\\\"+this.type}volume(){throw\\\\\\\"volume() not implemented for shape type \\\\\\\"+this.type}calculateLocalInertia(t,e){throw\\\\\\\"calculateLocalInertia() not implemented for shape type \\\\\\\"+this.type}calculateWorldAABB(t,e,s,i){throw\\\\\\\"calculateWorldAABB() not implemented for shape type \\\\\\\"+this.type}}p.idCounter=0,p.types={SPHERE:1,PLANE:2,BOX:4,COMPOUND:8,CONVEXPOLYHEDRON:16,HEIGHTFIELD:32,PARTICLE:64,CYLINDER:128,TRIMESH:256};class y{constructor(t={}){this.position=new e,this.quaternion=new h,t.position&&this.position.copy(t.position),t.quaternion&&this.quaternion.copy(t.quaternion)}pointToLocal(t,e){return y.pointToLocalFrame(this.position,this.quaternion,t,e)}pointToWorld(t,e){return y.pointToWorldFrame(this.position,this.quaternion,t,e)}vectorToWorldFrame(t,s=new e){return this.quaternion.vmult(t,s),s}static pointToLocalFrame(t,s,i,o=new e){return i.vsub(t,o),s.conjugate(m),m.vmult(o,o),o}static pointToWorldFrame(t,s,i,o=new e){return s.vmult(i,o),o.vadd(t,o),o}static vectorToWorldFrame(t,s,i=new e){return t.vmult(s,i),i}static vectorToLocalFrame(t,s,i,o=new e){return s.w*=-1,s.vmult(i,o),s.w*=-1,o}}const m=new h;class v extends p{constructor(t={}){const{vertices:e=[],faces:s=[],normals:i=[],axes:o,boundingSphereRadius:n}=t;super({type:p.types.CONVEXPOLYHEDRON}),this.vertices=e,this.faces=s,this.faceNormals=i,0===this.faceNormals.length&&this.computeNormals(),n?this.boundingSphereRadius=n:this.updateBoundingSphereRadius(),this.worldVertices=[],this.worldVerticesNeedsUpdate=!0,this.worldFaceNormals=[],this.worldFaceNormalsNeedsUpdate=!0,this.uniqueAxes=o?o.slice():null,this.uniqueEdges=[],this.computeEdges()}computeEdges(){const t=this.faces,s=this.vertices,i=this.uniqueEdges;i.length=0;const o=new e;for(let e=0;e!==t.length;e++){const n=t[e],r=n.length;for(let t=0;t!==r;t++){const e=(t+1)%r;s[n[t]].vsub(s[n[e]],o),o.normalize();let a=!1;for(let t=0;t!==i.length;t++)if(i[t].almostEquals(o)||i[t].almostEquals(o)){a=!0;break}a||i.push(o.clone())}}}computeNormals(){this.faceNormals.length=this.faces.length;for(let t=0;t<this.faces.length;t++){for(let e=0;e<this.faces[t].length;e++)if(!this.vertices[this.faces[t][e]])throw new Error(\\\\\\\"Vertex \\\\\\\"+this.faces[t][e]+\\\\\\\" not found!\\\\\\\");const s=this.faceNormals[t]||new e;this.getFaceNormal(t,s),s.negate(s),this.faceNormals[t]=s;const i=this.vertices[this.faces[t][0]];if(s.dot(i)<0){console.error(\\\\\\\".faceNormals[\\\\\\\"+t+\\\\\\\"] = Vec3(\\\\\\\"+s.toString()+\\\\\\\") looks like it points into the shape? The vertices follow. Make sure they are ordered CCW around the normal, using the right hand rule.\\\\\\\");for(let e=0;e<this.faces[t].length;e++)console.warn(\\\\\\\".vertices[\\\\\\\"+this.faces[t][e]+\\\\\\\"] = Vec3(\\\\\\\"+this.vertices[this.faces[t][e]].toString()+\\\\\\\")\\\\\\\")}}}getFaceNormal(t,e){const s=this.faces[t],i=this.vertices[s[0]],o=this.vertices[s[1]],n=this.vertices[s[2]];v.computeNormal(i,o,n,e)}static computeNormal(t,s,i,o){const n=new e,r=new e;s.vsub(t,r),i.vsub(s,n),n.cross(r,o),o.isZero()||o.normalize()}clipAgainstHull(t,s,i,o,n,r,a,l,c){const h=new e;let u=-1,d=-Number.MAX_VALUE;for(let t=0;t<i.faces.length;t++){h.copy(i.faceNormals[t]),n.vmult(h,h);const e=h.dot(r);e>d&&(d=e,u=t)}const p=[];for(let t=0;t<i.faces[u].length;t++){const s=i.vertices[i.faces[u][t]],r=new e;r.copy(s),n.vmult(r,r),o.vadd(r,r),p.push(r)}u>=0&&this.clipFaceAgainstHull(r,t,s,p,a,l,c)}findSeparatingAxis(t,s,i,o,n,r,a,l){const c=new e,h=new e,u=new e,d=new e,p=new e,y=new e;let m=Number.MAX_VALUE;const v=this;if(v.uniqueAxes)for(let e=0;e!==v.uniqueAxes.length;e++){i.vmult(v.uniqueAxes[e],c);const a=v.testSepAxis(c,t,s,i,o,n);if(!1===a)return!1;a<m&&(m=a,r.copy(c))}else{const e=a?a.length:v.faces.length;for(let l=0;l<e;l++){const e=a?a[l]:l;c.copy(v.faceNormals[e]),i.vmult(c,c);const h=v.testSepAxis(c,t,s,i,o,n);if(!1===h)return!1;h<m&&(m=h,r.copy(c))}}if(t.uniqueAxes)for(let e=0;e!==t.uniqueAxes.length;e++){n.vmult(t.uniqueAxes[e],h);const a=v.testSepAxis(h,t,s,i,o,n);if(!1===a)return!1;a<m&&(m=a,r.copy(h))}else{const e=l?l.length:t.faces.length;for(let a=0;a<e;a++){const e=l?l[a]:a;h.copy(t.faceNormals[e]),n.vmult(h,h);const c=v.testSepAxis(h,t,s,i,o,n);if(!1===c)return!1;c<m&&(m=c,r.copy(h))}}for(let e=0;e!==v.uniqueEdges.length;e++){i.vmult(v.uniqueEdges[e],d);for(let e=0;e!==t.uniqueEdges.length;e++)if(n.vmult(t.uniqueEdges[e],p),d.cross(p,y),!y.almostZero()){y.normalize();const e=v.testSepAxis(y,t,s,i,o,n);if(!1===e)return!1;e<m&&(m=e,r.copy(y))}}return o.vsub(s,u),u.dot(r)>0&&r.negate(r),!0}testSepAxis(t,e,s,i,o,n){v.project(this,t,s,i,w),v.project(e,t,o,n,f);const r=w[0],a=w[1],l=f[0],c=f[1];if(r<c||l<a)return!1;const h=r-c,u=l-a;return h<u?h:u}calculateLocalInertia(t,s){const i=new e,o=new e;this.computeLocalAABB(o,i);const n=i.x-o.x,r=i.y-o.y,a=i.z-o.z;s.x=1/12*t*(2*r*2*r+2*a*2*a),s.y=1/12*t*(2*n*2*n+2*a*2*a),s.z=1/12*t*(2*r*2*r+2*n*2*n)}getPlaneConstantOfFace(t){const e=this.faces[t],s=this.faceNormals[t],i=this.vertices[e[0]];return-s.dot(i)}clipFaceAgainstHull(t,s,i,o,n,r,a){const l=new e,c=new e,h=new e,u=new e,d=new e,p=new e,y=new e,m=new e,v=this,w=o,f=[];let g=-1,x=Number.MAX_VALUE;for(let e=0;e<v.faces.length;e++){l.copy(v.faceNormals[e]),i.vmult(l,l);const s=l.dot(t);s<x&&(x=s,g=e)}if(g<0)return;const b=v.faces[g];b.connectedFaces=[];for(let t=0;t<v.faces.length;t++)for(let e=0;e<v.faces[t].length;e++)-1!==b.indexOf(v.faces[t][e])&&t!==g&&-1===b.connectedFaces.indexOf(t)&&b.connectedFaces.push(t);const A=b.length;for(let t=0;t<A;t++){const e=v.vertices[b[t]],o=v.vertices[b[(t+1)%A]];e.vsub(o,c),h.copy(c),i.vmult(h,h),s.vadd(h,h),u.copy(this.faceNormals[g]),i.vmult(u,u),s.vadd(u,u),h.cross(u,d),d.negate(d),p.copy(e),i.vmult(p,p),s.vadd(p,p);const n=b.connectedFaces[t];y.copy(this.faceNormals[n]);const r=this.getPlaneConstantOfFace(n);m.copy(y),i.vmult(m,m);const a=r-m.dot(s);for(this.clipFaceAgainstPlane(w,f,m,a);w.length;)w.shift();for(;f.length;)w.push(f.shift())}y.copy(this.faceNormals[g]);const B=this.getPlaneConstantOfFace(g);m.copy(y),i.vmult(m,m);const E=B-m.dot(s);for(let t=0;t<w.length;t++){let e=m.dot(w[t])+E;if(e<=n&&(console.log(\\\\\\\"clamped: depth=\\\\\\\"+e+\\\\\\\" to minDist=\\\\\\\"+n),e=n),e<=r){const s=w[t];if(e<=1e-6){const t={point:s,normal:m,depth:e};a.push(t)}}}}clipFaceAgainstPlane(t,s,i,o){let n,r;const a=t.length;if(a<2)return s;let l=t[t.length-1],c=t[0];n=i.dot(l)+o;for(let h=0;h<a;h++){if(c=t[h],r=i.dot(c)+o,n<0)if(r<0){const t=new e;t.copy(c),s.push(t)}else{const t=new e;l.lerp(c,n/(n-r),t),s.push(t)}else if(r<0){const t=new e;l.lerp(c,n/(n-r),t),s.push(t),s.push(c)}l=c,n=r}return s}computeWorldVertices(t,s){for(;this.worldVertices.length<this.vertices.length;)this.worldVertices.push(new e);const i=this.vertices,o=this.worldVertices;for(let e=0;e!==this.vertices.length;e++)s.vmult(i[e],o[e]),t.vadd(o[e],o[e]);this.worldVerticesNeedsUpdate=!1}computeLocalAABB(t,e){const s=this.vertices;t.set(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),e.set(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE);for(let i=0;i<this.vertices.length;i++){const o=s[i];o.x<t.x?t.x=o.x:o.x>e.x&&(e.x=o.x),o.y<t.y?t.y=o.y:o.y>e.y&&(e.y=o.y),o.z<t.z?t.z=o.z:o.z>e.z&&(e.z=o.z)}}computeWorldFaceNormals(t){const s=this.faceNormals.length;for(;this.worldFaceNormals.length<s;)this.worldFaceNormals.push(new e);const i=this.faceNormals,o=this.worldFaceNormals;for(let e=0;e!==s;e++)t.vmult(i[e],o[e]);this.worldFaceNormalsNeedsUpdate=!1}updateBoundingSphereRadius(){let t=0;const e=this.vertices;for(let s=0;s!==e.length;s++){const i=e[s].lengthSquared();i>t&&(t=i)}this.boundingSphereRadius=Math.sqrt(t)}calculateWorldAABB(t,s,i,o){const n=this.vertices;let r,a,l,c,h,u,d=new e;for(let e=0;e<n.length;e++){d.copy(n[e]),s.vmult(d,d),t.vadd(d,d);const i=d;(void 0===r||i.x<r)&&(r=i.x),(void 0===c||i.x>c)&&(c=i.x),(void 0===a||i.y<a)&&(a=i.y),(void 0===h||i.y>h)&&(h=i.y),(void 0===l||i.z<l)&&(l=i.z),(void 0===u||i.z>u)&&(u=i.z)}i.set(r,a,l),o.set(c,h,u)}volume(){return 4*Math.PI*this.boundingSphereRadius/3}getAveragePointLocal(t=new e){const s=this.vertices;for(let e=0;e<s.length;e++)t.vadd(s[e],t);return t.scale(1/s.length,t),t}transformAllPoints(t,e){const s=this.vertices.length,i=this.vertices;if(e){for(let t=0;t<s;t++){const s=i[t];e.vmult(s,s)}for(let t=0;t<this.faceNormals.length;t++){const s=this.faceNormals[t];e.vmult(s,s)}}if(t)for(let e=0;e<s;e++){const s=i[e];s.vadd(t,s)}}pointIsInside(t){const s=this.vertices,i=this.faces,o=this.faceNormals,n=new e;this.getAveragePointLocal(n);for(let r=0;r<this.faces.length;r++){let a=o[r];const l=s[i[r][0]],c=new e;t.vsub(l,c);const h=a.dot(c),u=new e;n.vsub(l,u);const d=a.dot(u);if(h<0&&d>0||h>0&&d<0)return!1}return-1}static project(t,e,s,i,o){const n=t.vertices.length,r=g;let a=0,l=0;const c=x,h=t.vertices;c.setZero(),y.vectorToLocalFrame(s,i,e,r),y.pointToLocalFrame(s,i,c,c);const u=c.dot(r);l=a=h[0].dot(r);for(let t=1;t<n;t++){const e=h[t].dot(r);e>a&&(a=e),e<l&&(l=e)}if(l-=u,a-=u,l>a){const t=l;l=a,a=t}o[0]=a,o[1]=l}}const w=[],f=[],g=new e,x=new e;class b extends p{constructor(t){super({type:p.types.BOX}),this.halfExtents=t,this.convexPolyhedronRepresentation=null,this.updateConvexPolyhedronRepresentation(),this.updateBoundingSphereRadius()}updateConvexPolyhedronRepresentation(){const t=this.halfExtents.x,s=this.halfExtents.y,i=this.halfExtents.z,o=e,n=[new o(-t,-s,-i),new o(t,-s,-i),new o(t,s,-i),new o(-t,s,-i),new o(-t,-s,i),new o(t,-s,i),new o(t,s,i),new o(-t,s,i)],r=[new o(0,0,1),new o(0,1,0),new o(1,0,0)],a=new v({vertices:n,faces:[[3,2,1,0],[4,5,6,7],[5,4,0,1],[2,3,7,6],[0,4,7,3],[1,2,6,5]],axes:r});this.convexPolyhedronRepresentation=a,a.material=this.material}calculateLocalInertia(t,s=new e){return b.calculateInertia(this.halfExtents,t,s),s}static calculateInertia(t,e,s){const i=t;s.x=1/12*e*(2*i.y*2*i.y+2*i.z*2*i.z),s.y=1/12*e*(2*i.x*2*i.x+2*i.z*2*i.z),s.z=1/12*e*(2*i.y*2*i.y+2*i.x*2*i.x)}getSideNormals(t,e){const s=t,i=this.halfExtents;if(s[0].set(i.x,0,0),s[1].set(0,i.y,0),s[2].set(0,0,i.z),s[3].set(-i.x,0,0),s[4].set(0,-i.y,0),s[5].set(0,0,-i.z),void 0!==e)for(let t=0;t!==s.length;t++)e.vmult(s[t],s[t]);return s}volume(){return 8*this.halfExtents.x*this.halfExtents.y*this.halfExtents.z}updateBoundingSphereRadius(){this.boundingSphereRadius=this.halfExtents.length()}forEachWorldCorner(t,e,s){const i=this.halfExtents,o=[[i.x,i.y,i.z],[-i.x,i.y,i.z],[-i.x,-i.y,i.z],[-i.x,-i.y,-i.z],[i.x,-i.y,-i.z],[i.x,i.y,-i.z],[-i.x,i.y,-i.z],[i.x,-i.y,i.z]];for(let i=0;i<o.length;i++)A.set(o[i][0],o[i][1],o[i][2]),e.vmult(A,A),t.vadd(A,A),s(A.x,A.y,A.z)}calculateWorldAABB(t,e,s,i){const o=this.halfExtents;B[0].set(o.x,o.y,o.z),B[1].set(-o.x,o.y,o.z),B[2].set(-o.x,-o.y,o.z),B[3].set(-o.x,-o.y,-o.z),B[4].set(o.x,-o.y,-o.z),B[5].set(o.x,o.y,-o.z),B[6].set(-o.x,o.y,-o.z),B[7].set(o.x,-o.y,o.z);const n=B[0];e.vmult(n,n),t.vadd(n,n),i.copy(n),s.copy(n);for(let o=1;o<8;o++){const n=B[o];e.vmult(n,n),t.vadd(n,n);const r=n.x,a=n.y,l=n.z;r>i.x&&(i.x=r),a>i.y&&(i.y=a),l>i.z&&(i.z=l),r<s.x&&(s.x=r),a<s.y&&(s.y=a),l<s.z&&(s.z=l)}}}const A=new e,B=[new e,new e,new e,new e,new e,new e,new e,new e],E=0,S=1,z=2;class F extends c{constructor(s={}){super(),this.id=F.idCounter++,this.index=-1,this.world=null,this.preStep=null,this.postStep=null,this.vlambda=new e,this.collisionFilterGroup=\\\\\\\"number\\\\\\\"==typeof s.collisionFilterGroup?s.collisionFilterGroup:1,this.collisionFilterMask=\\\\\\\"number\\\\\\\"==typeof s.collisionFilterMask?s.collisionFilterMask:-1,this.collisionResponse=\\\\\\\"boolean\\\\\\\"!=typeof s.collisionResponse||s.collisionResponse,this.position=new e,this.previousPosition=new e,this.interpolatedPosition=new e,this.initPosition=new e,s.position&&(this.position.copy(s.position),this.previousPosition.copy(s.position),this.interpolatedPosition.copy(s.position),this.initPosition.copy(s.position)),this.velocity=new e,s.velocity&&this.velocity.copy(s.velocity),this.initVelocity=new e,this.force=new e;const i=\\\\\\\"number\\\\\\\"==typeof s.mass?s.mass:0;this.mass=i,this.invMass=i>0?1/i:0,this.material=s.material||null,this.linearDamping=\\\\\\\"number\\\\\\\"==typeof s.linearDamping?s.linearDamping:.01,this.type=i<=0?F.STATIC:F.DYNAMIC,typeof s.type==typeof F.STATIC&&(this.type=s.type),this.allowSleep=void 0===s.allowSleep||s.allowSleep,this.sleepState=F.AWAKE,this.sleepSpeedLimit=void 0!==s.sleepSpeedLimit?s.sleepSpeedLimit:.1,this.sleepTimeLimit=void 0!==s.sleepTimeLimit?s.sleepTimeLimit:1,this.timeLastSleepy=0,this.wakeUpAfterNarrowphase=!1,this.torque=new e,this.quaternion=new h,this.initQuaternion=new h,this.previousQuaternion=new h,this.interpolatedQuaternion=new h,s.quaternion&&(this.quaternion.copy(s.quaternion),this.initQuaternion.copy(s.quaternion),this.previousQuaternion.copy(s.quaternion),this.interpolatedQuaternion.copy(s.quaternion)),this.angularVelocity=new e,s.angularVelocity&&this.angularVelocity.copy(s.angularVelocity),this.initAngularVelocity=new e,this.shapes=[],this.shapeOffsets=[],this.shapeOrientations=[],this.inertia=new e,this.invInertia=new e,this.invInertiaWorld=new t,this.invMassSolve=0,this.invInertiaSolve=new e,this.invInertiaWorldSolve=new t,this.fixedRotation=void 0!==s.fixedRotation&&s.fixedRotation,this.angularDamping=void 0!==s.angularDamping?s.angularDamping:.01,this.linearFactor=new e(1,1,1),s.linearFactor&&this.linearFactor.copy(s.linearFactor),this.angularFactor=new e(1,1,1),s.angularFactor&&this.angularFactor.copy(s.angularFactor),this.aabb=new n,this.aabbNeedsUpdate=!0,this.boundingRadius=0,this.wlambda=new e,s.shape&&this.addShape(s.shape),this.updateMassProperties()}wakeUp(){const t=this.sleepState;this.sleepState=F.AWAKE,this.wakeUpAfterNarrowphase=!1,t===F.SLEEPING&&this.dispatchEvent(F.wakeupEvent)}sleep(){this.sleepState=F.SLEEPING,this.velocity.set(0,0,0),this.angularVelocity.set(0,0,0),this.wakeUpAfterNarrowphase=!1}sleepTick(t){if(this.allowSleep){const e=this.sleepState,s=this.velocity.lengthSquared()+this.angularVelocity.lengthSquared(),i=this.sleepSpeedLimit**2;e===F.AWAKE&&s<i?(this.sleepState=F.SLEEPY,this.timeLastSleepy=t,this.dispatchEvent(F.sleepyEvent)):e===F.SLEEPY&&s>i?this.wakeUp():e===F.SLEEPY&&t-this.timeLastSleepy>this.sleepTimeLimit&&(this.sleep(),this.dispatchEvent(F.sleepEvent))}}updateSolveMassProperties(){this.sleepState===F.SLEEPING||this.type===F.KINEMATIC?(this.invMassSolve=0,this.invInertiaSolve.setZero(),this.invInertiaWorldSolve.setZero()):(this.invMassSolve=this.invMass,this.invInertiaSolve.copy(this.invInertia),this.invInertiaWorldSolve.copy(this.invInertiaWorld))}pointToLocalFrame(t,s=new e){return t.vsub(this.position,s),this.quaternion.conjugate().vmult(s,s),s}vectorToLocalFrame(t,s=new e){return this.quaternion.conjugate().vmult(t,s),s}pointToWorldFrame(t,s=new e){return this.quaternion.vmult(t,s),s.vadd(this.position,s),s}vectorToWorldFrame(t,s=new e){return this.quaternion.vmult(t,s),s}addShape(t,s,i){const o=new e,n=new h;return s&&o.copy(s),i&&n.copy(i),this.shapes.push(t),this.shapeOffsets.push(o),this.shapeOrientations.push(n),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0,t.body=this,this}removeShape(t){const e=this.shapes.indexOf(t);return-1===e?(console.warn(\\\\\\\"Shape does not belong to the body\\\\\\\"),this):(this.shapes.splice(e,1),this.shapeOffsets.splice(e,1),this.shapeOrientations.splice(e,1),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0,t.body=null,this)}updateBoundingRadius(){const t=this.shapes,e=this.shapeOffsets,s=t.length;let i=0;for(let o=0;o!==s;o++){const s=t[o];s.updateBoundingSphereRadius();const n=e[o].length(),r=s.boundingSphereRadius;n+r>i&&(i=n+r)}this.boundingRadius=i}updateAABB(){const t=this.shapes,e=this.shapeOffsets,s=this.shapeOrientations,i=t.length,o=C,n=M,r=this.quaternion,a=this.aabb,l=R;for(let c=0;c!==i;c++){const i=t[c];r.vmult(e[c],o),o.vadd(this.position,o),r.mult(s[c],n),i.calculateWorldAABB(o,n,l.lowerBound,l.upperBound),0===c?a.copy(l):a.extend(l)}this.aabbNeedsUpdate=!1}updateInertiaWorld(t){const e=this.invInertia;if(e.x!==e.y||e.y!==e.z||t){const t=I,s=T;t.setRotationFromQuaternion(this.quaternion),t.transpose(s),t.scale(e,t),t.mmult(s,this.invInertiaWorld)}else;}applyForce(t,s=new e){if(this.type!==F.DYNAMIC)return;this.sleepState===F.SLEEPING&&this.wakeUp();const i=L;s.cross(t,i),this.force.vadd(t,this.force),this.torque.vadd(i,this.torque)}applyLocalForce(t,s=new e){if(this.type!==F.DYNAMIC)return;const i=q,o=P;this.vectorToWorldFrame(t,i),this.vectorToWorldFrame(s,o),this.applyForce(i,o)}applyTorque(t){this.type===F.DYNAMIC&&(this.sleepState===F.SLEEPING&&this.wakeUp(),this.torque.vadd(t,this.torque))}applyImpulse(t,s=new e){if(this.type!==F.DYNAMIC)return;this.sleepState===F.SLEEPING&&this.wakeUp();const i=s,o=N;o.copy(t),o.scale(this.invMass,o),this.velocity.vadd(o,this.velocity);const n=W;i.cross(t,n),this.invInertiaWorld.vmult(n,n),this.angularVelocity.vadd(n,this.angularVelocity)}applyLocalImpulse(t,s=new e){if(this.type!==F.DYNAMIC)return;const i=V,o=k;this.vectorToWorldFrame(t,i),this.vectorToWorldFrame(s,o),this.applyImpulse(i,o)}updateMassProperties(){const t=j;this.invMass=this.mass>0?1/this.mass:0;const e=this.inertia,s=this.fixedRotation;this.updateAABB(),t.set((this.aabb.upperBound.x-this.aabb.lowerBound.x)/2,(this.aabb.upperBound.y-this.aabb.lowerBound.y)/2,(this.aabb.upperBound.z-this.aabb.lowerBound.z)/2),b.calculateInertia(t,this.mass,e),this.invInertia.set(e.x>0&&!s?1/e.x:0,e.y>0&&!s?1/e.y:0,e.z>0&&!s?1/e.z:0),this.updateInertiaWorld(!0)}getVelocityAtWorldPoint(t,s){const i=new e;return t.vsub(this.position,i),this.angularVelocity.cross(i,s),this.velocity.vadd(s,s),s}integrate(t,e,s){if(this.previousPosition.copy(this.position),this.previousQuaternion.copy(this.quaternion),this.type!==F.DYNAMIC&&this.type!==F.KINEMATIC||this.sleepState===F.SLEEPING)return;const i=this.velocity,o=this.angularVelocity,n=this.position,r=this.force,a=this.torque,l=this.quaternion,c=this.invMass,h=this.invInertiaWorld,u=this.linearFactor,d=c*t;i.x+=r.x*d*u.x,i.y+=r.y*d*u.y,i.z+=r.z*d*u.z;const p=h.elements,y=this.angularFactor,m=a.x*y.x,v=a.y*y.y,w=a.z*y.z;o.x+=t*(p[0]*m+p[1]*v+p[2]*w),o.y+=t*(p[3]*m+p[4]*v+p[5]*w),o.z+=t*(p[6]*m+p[7]*v+p[8]*w),n.x+=i.x*t,n.y+=i.y*t,n.z+=i.z*t,l.integrate(this.angularVelocity,t,this.angularFactor,l),e&&(s?l.normalizeFast():l.normalize()),this.aabbNeedsUpdate=!0,this.updateInertiaWorld()}}F.COLLIDE_EVENT_NAME=\\\\\\\"collide\\\\\\\",F.DYNAMIC=1,F.STATIC=2,F.KINEMATIC=4,F.AWAKE=E,F.SLEEPY=S,F.SLEEPING=z,F.idCounter=0,F.wakeupEvent={type:\\\\\\\"wakeup\\\\\\\"},F.sleepyEvent={type:\\\\\\\"sleepy\\\\\\\"},F.sleepEvent={type:\\\\\\\"sleep\\\\\\\"};const C=new e,M=new h,R=new n,I=new t,T=new t,L=new e,q=new e,P=new e,N=new e,W=new e,V=new e,k=new e,j=new e;class O{constructor(){this.world=null,this.useBoundingBoxes=!1,this.dirty=!0}collisionPairs(t,e,s){throw new Error(\\\\\\\"collisionPairs not implemented for this BroadPhase class!\\\\\\\")}needBroadphaseCollision(t,e){return 0!=(t.collisionFilterGroup&e.collisionFilterMask)&&0!=(e.collisionFilterGroup&t.collisionFilterMask)&&(0==(t.type&F.STATIC)&&t.sleepState!==F.SLEEPING||0==(e.type&F.STATIC)&&e.sleepState!==F.SLEEPING)}intersectionTest(t,e,s,i){this.useBoundingBoxes?this.doBoundingBoxBroadphase(t,e,s,i):this.doBoundingSphereBroadphase(t,e,s,i)}doBoundingSphereBroadphase(t,e,s,i){const o=_;e.position.vsub(t.position,o);const n=(t.boundingRadius+e.boundingRadius)**2;o.lengthSquared()<n&&(s.push(t),i.push(e))}doBoundingBoxBroadphase(t,e,s,i){t.aabbNeedsUpdate&&t.updateAABB(),e.aabbNeedsUpdate&&e.updateAABB(),t.aabb.overlaps(e.aabb)&&(s.push(t),i.push(e))}makePairsUnique(t,e){const s=D,i=H,o=U,n=t.length;for(let s=0;s!==n;s++)i[s]=t[s],o[s]=e[s];t.length=0,e.length=0;for(let t=0;t!==n;t++){const e=i[t].id,n=o[t].id,r=e<n?e+\\\\\\\",\\\\\\\"+n:n+\\\\\\\",\\\\\\\"+e;s[r]=t,s.keys.push(r)}for(let n=0;n!==s.keys.length;n++){const n=s.keys.pop(),r=s[n];t.push(i[r]),e.push(o[r]),delete s[n]}}setWorld(t){}static boundingSphereCheck(t,s){const i=new e;t.position.vsub(s.position,i);const o=t.shapes[0],n=s.shapes[0];return Math.pow(o.boundingSphereRadius+n.boundingSphereRadius,2)>i.lengthSquared()}aabbQuery(t,e,s){return console.warn(\\\\\\\".aabbQuery is not implemented in this Broadphase subclass.\\\\\\\"),[]}}const _=new e,D={keys:[]},H=[],U=[];class G extends O{constructor(){super()}collisionPairs(t,e,s){const i=t.bodies,o=i.length;let n,r;for(let t=0;t!==o;t++)for(let o=0;o!==t;o++)n=i[t],r=i[o],this.needBroadphaseCollision(n,r)&&this.intersectionTest(n,r,e,s)}aabbQuery(t,e,s=[]){for(let i=0;i<t.bodies.length;i++){const o=t.bodies[i];o.aabbNeedsUpdate&&o.updateAABB(),o.aabb.overlaps(e)&&s.push(o)}return s}}class X{constructor(){this.rayFromWorld=new e,this.rayToWorld=new e,this.hitNormalWorld=new e,this.hitPointWorld=new e,this.hasHit=!1,this.shape=null,this.body=null,this.hitFaceIndex=-1,this.distance=-1,this.shouldStop=!1}reset(){this.rayFromWorld.setZero(),this.rayToWorld.setZero(),this.hitNormalWorld.setZero(),this.hitPointWorld.setZero(),this.hasHit=!1,this.shape=null,this.body=null,this.hitFaceIndex=-1,this.distance=-1,this.shouldStop=!1}abort(){this.shouldStop=!0}set(t,e,s,i,o,n,r){this.rayFromWorld.copy(t),this.rayToWorld.copy(e),this.hitNormalWorld.copy(s),this.hitPointWorld.copy(i),this.shape=o,this.body=n,this.distance=r}}class Y{constructor(t=new e,s=new e){this.from=t.clone(),this.to=s.clone(),this.direction=new e,this.precision=1e-4,this.checkCollisionResponse=!0,this.skipBackfaces=!1,this.collisionFilterMask=-1,this.collisionFilterGroup=-1,this.mode=Y.ANY,this.result=new X,this.hasHit=!1,this.callback=t=>{}}intersectWorld(t,e){return this.mode=e.mode||Y.ANY,this.result=e.result||new X,this.skipBackfaces=!!e.skipBackfaces,this.collisionFilterMask=void 0!==e.collisionFilterMask?e.collisionFilterMask:-1,this.collisionFilterGroup=void 0!==e.collisionFilterGroup?e.collisionFilterGroup:-1,this.checkCollisionResponse=void 0===e.checkCollisionResponse||e.checkCollisionResponse,e.from&&this.from.copy(e.from),e.to&&this.to.copy(e.to),this.callback=e.callback||(()=>{}),this.hasHit=!1,this.result.reset(),this.updateDirection(),this.getAABB(Z),K.length=0,t.broadphase.aabbQuery(t,Z,K),this.intersectBodies(K),this.hasHit}intersectBody(t,e){e&&(this.result=e,this.updateDirection());const s=this.checkCollisionResponse;if(s&&!t.collisionResponse)return;if(0==(this.collisionFilterGroup&t.collisionFilterMask)||0==(t.collisionFilterGroup&this.collisionFilterMask))return;const i=tt,o=et;for(let e=0,n=t.shapes.length;e<n;e++){const n=t.shapes[e];if((!s||n.collisionResponse)&&(t.quaternion.mult(t.shapeOrientations[e],o),t.quaternion.vmult(t.shapeOffsets[e],i),i.vadd(t.position,i),this.intersectShape(n,o,i,t),this.result.shouldStop))break}}intersectBodies(t,e){e&&(this.result=e,this.updateDirection());for(let e=0,s=t.length;!this.result.shouldStop&&e<s;e++)this.intersectBody(t[e])}updateDirection(){this.to.vsub(this.from,this.direction),this.direction.normalize()}intersectShape(t,e,s,i){if(function(t,e,s){s.vsub(t,At);const i=At.dot(e);e.scale(i,Bt),Bt.vadd(t,Bt);return s.distanceTo(Bt)}(this.from,this.direction,s)>t.boundingSphereRadius)return;const o=this[t.type];o&&o.call(this,t,e,s,i,t)}_intersectBox(t,e,s,i,o){return this._intersectConvex(t.convexPolyhedronRepresentation,e,s,i,o)}_intersectPlane(t,s,i,o,n){const r=this.from,a=this.to,l=this.direction,c=new e(0,0,1);s.vmult(c,c);const h=new e;r.vsub(i,h);const u=h.dot(c);a.vsub(i,h);if(u*h.dot(c)>0)return;if(r.distanceTo(a)<u)return;const d=c.dot(l);if(Math.abs(d)<this.precision)return;const p=new e,y=new e,m=new e;r.vsub(i,p);const v=-c.dot(p)/d;l.scale(v,y),r.vadd(y,m),this.reportIntersection(c,m,n,o,-1)}getAABB(t){const{lowerBound:e,upperBound:s}=t,i=this.to,o=this.from;e.x=Math.min(i.x,o.x),e.y=Math.min(i.y,o.y),e.z=Math.min(i.z,o.z),s.x=Math.max(i.x,o.x),s.y=Math.max(i.y,o.y),s.z=Math.max(i.z,o.z)}_intersectHeightfield(t,e,s,i,o){t.data,t.elementSize;const r=lt;r.from.copy(this.from),r.to.copy(this.to),y.pointToLocalFrame(s,e,r.from,r.from),y.pointToLocalFrame(s,e,r.to,r.to),r.updateDirection();const a=ct;let l,c,h,u;l=c=0,h=u=t.data.length-1;const d=new n;r.getAABB(d),t.getIndexOfPosition(d.lowerBound.x,d.lowerBound.y,a,!0),l=Math.max(l,a[0]),c=Math.max(c,a[1]),t.getIndexOfPosition(d.upperBound.x,d.upperBound.y,a,!0),h=Math.min(h,a[0]+1),u=Math.min(u,a[1]+1);for(let n=l;n<h;n++)for(let a=c;a<u;a++){if(this.result.shouldStop)return;if(t.getAabbAtIndex(n,a,d),d.overlapsRay(r)){if(t.getConvexTrianglePillar(n,a,!1),y.pointToWorldFrame(s,e,t.pillarOffset,at),this._intersectConvex(t.pillarConvex,e,at,i,o,rt),this.result.shouldStop)return;t.getConvexTrianglePillar(n,a,!0),y.pointToWorldFrame(s,e,t.pillarOffset,at),this._intersectConvex(t.pillarConvex,e,at,i,o,rt)}}}_intersectSphere(t,e,s,i,o){const n=this.from,r=this.to,a=t.radius,l=(r.x-n.x)**2+(r.y-n.y)**2+(r.z-n.z)**2,c=2*((r.x-n.x)*(n.x-s.x)+(r.y-n.y)*(n.y-s.y)+(r.z-n.z)*(n.z-s.z)),h=c**2-4*l*((n.x-s.x)**2+(n.y-s.y)**2+(n.z-s.z)**2-a**2),u=ht,d=ut;if(!(h<0))if(0===h)n.lerp(r,h,u),u.vsub(s,d),d.normalize(),this.reportIntersection(d,u,o,i,-1);else{const t=(-c-Math.sqrt(h))/(2*l),e=(-c+Math.sqrt(h))/(2*l);if(t>=0&&t<=1&&(n.lerp(r,t,u),u.vsub(s,d),d.normalize(),this.reportIntersection(d,u,o,i,-1)),this.result.shouldStop)return;e>=0&&e<=1&&(n.lerp(r,e,u),u.vsub(s,d),d.normalize(),this.reportIntersection(d,u,o,i,-1))}}_intersectConvex(t,e,s,i,o,n){const r=dt,a=pt,l=n&&n.faceList||null,c=t.faces,h=t.vertices,u=t.faceNormals,d=this.direction,p=this.from,y=this.to,m=p.distanceTo(y),v=l?l.length:c.length,w=this.result;for(let t=0;!w.shouldStop&&t<v;t++){const n=l?l[t]:t,y=c[n],v=u[n],f=e,g=s;a.copy(h[y[0]]),f.vmult(a,a),a.vadd(g,a),a.vsub(p,a),f.vmult(v,r);const x=d.dot(r);if(Math.abs(x)<this.precision)continue;const b=r.dot(a)/x;if(!(b<0)){d.scale(b,st),st.vadd(p,st),it.copy(h[y[0]]),f.vmult(it,it),g.vadd(it,it);for(let t=1;!w.shouldStop&&t<y.length-1;t++){ot.copy(h[y[t]]),nt.copy(h[y[t+1]]),f.vmult(ot,ot),f.vmult(nt,nt),g.vadd(ot,ot),g.vadd(nt,nt);const e=st.distanceTo(p);!$(st,it,ot,nt)&&!$(st,ot,it,nt)||e>m||this.reportIntersection(r,st,o,i,n)}}}}_intersectTrimesh(t,e,s,i,o,n){const r=yt,a=xt,l=bt,c=pt,h=mt,u=vt,d=wt,p=gt,m=ft;n&&n.faceList;const v=t.indices;t.vertices;const w=this.from,f=this.to,g=this.direction;l.position.copy(s),l.quaternion.copy(e),y.vectorToLocalFrame(s,e,g,h),y.pointToLocalFrame(s,e,w,u),y.pointToLocalFrame(s,e,f,d),d.x*=t.scale.x,d.y*=t.scale.y,d.z*=t.scale.z,u.x*=t.scale.x,u.y*=t.scale.y,u.z*=t.scale.z,d.vsub(u,h),h.normalize();const x=u.distanceSquared(d);t.tree.rayQuery(this,l,a);for(let n=0,l=a.length;!this.result.shouldStop&&n!==l;n++){const l=a[n];t.getNormal(l,r),t.getVertex(v[3*l],it),it.vsub(u,c);const d=h.dot(r),w=r.dot(c)/d;if(w<0)continue;h.scale(w,st),st.vadd(u,st),t.getVertex(v[3*l+1],ot),t.getVertex(v[3*l+2],nt);const f=st.distanceSquared(u);!$(st,ot,it,nt)&&!$(st,it,ot,nt)||f>x||(y.vectorToWorldFrame(e,r,m),y.pointToWorldFrame(s,e,st,p),this.reportIntersection(m,p,o,i,l))}a.length=0}reportIntersection(t,e,s,i,o){const n=this.from,r=this.to,a=n.distanceTo(e),l=this.result;if(!(this.skipBackfaces&&t.dot(this.direction)>0))switch(l.hitFaceIndex=void 0!==o?o:-1,this.mode){case Y.ALL:this.hasHit=!0,l.set(n,r,t,e,s,i,a),l.hasHit=!0,this.callback(l);break;case Y.CLOSEST:(a<l.distance||!l.hasHit)&&(this.hasHit=!0,l.hasHit=!0,l.set(n,r,t,e,s,i,a));break;case Y.ANY:this.hasHit=!0,l.hasHit=!0,l.set(n,r,t,e,s,i,a),l.shouldStop=!0}}}Y.CLOSEST=1,Y.ANY=2,Y.ALL=4;const Z=new n,K=[],Q=new e,J=new e;function $(t,e,s,i){i.vsub(e,At),s.vsub(e,Q),t.vsub(e,J);const o=At.dot(At),n=At.dot(Q),r=At.dot(J),a=Q.dot(Q),l=Q.dot(J);let c,h;return(c=a*r-n*l)>=0&&(h=o*l-n*r)>=0&&c+h<o*a-n*n}Y.pointInTriangle=$;const tt=new e,et=new h,st=new e,it=new e,ot=new e,nt=new e;Y.prototype[p.types.BOX]=Y.prototype._intersectBox,Y.prototype[p.types.PLANE]=Y.prototype._intersectPlane;const rt={faceList:[0]},at=new e,lt=new Y,ct=[];Y.prototype[p.types.HEIGHTFIELD]=Y.prototype._intersectHeightfield;const ht=new e,ut=new e;Y.prototype[p.types.SPHERE]=Y.prototype._intersectSphere;const dt=new e,pt=new e;Y.prototype[p.types.CYLINDER]=Y.prototype._intersectConvex,Y.prototype[p.types.CONVEXPOLYHEDRON]=Y.prototype._intersectConvex;const yt=new e,mt=new e,vt=new e,wt=new e,ft=new e,gt=new e;new n;const xt=[],bt=new y;Y.prototype[p.types.TRIMESH]=Y.prototype._intersectTrimesh;const At=new e,Bt=new e;class Et extends O{constructor(t){super(),this.axisList=[],this.world=null,this.axisIndex=0;const e=this.axisList;this._addBodyHandler=t=>{e.push(t.body)},this._removeBodyHandler=t=>{const s=e.indexOf(t.body);-1!==s&&e.splice(s,1)},t&&this.setWorld(t)}setWorld(t){this.axisList.length=0;for(let e=0;e<t.bodies.length;e++)this.axisList.push(t.bodies[e]);t.removeEventListener(\\\\\\\"addBody\\\\\\\",this._addBodyHandler),t.removeEventListener(\\\\\\\"removeBody\\\\\\\",this._removeBodyHandler),t.addEventListener(\\\\\\\"addBody\\\\\\\",this._addBodyHandler),t.addEventListener(\\\\\\\"removeBody\\\\\\\",this._removeBodyHandler),this.world=t,this.dirty=!0}collisionPairs(t,e,s){const i=this.axisList,o=i.length,n=this.axisIndex;let r,a;for(this.dirty&&(this.sortList(),this.dirty=!1),r=0;r!==o;r++){const t=i[r];for(a=r+1;a<o;a++){const o=i[a];if(this.needBroadphaseCollision(t,o)){if(!Et.checkBounds(t,o,n))break;this.intersectionTest(t,o,e,s)}}}}sortList(){const t=this.axisList,e=this.axisIndex,s=t.length;for(let e=0;e!==s;e++){const s=t[e];s.aabbNeedsUpdate&&s.updateAABB()}0===e?Et.insertionSortX(t):1===e?Et.insertionSortY(t):2===e&&Et.insertionSortZ(t)}autoDetectAxis(){let t=0,e=0,s=0,i=0,o=0,n=0;const r=this.axisList,a=r.length,l=1/a;for(let l=0;l!==a;l++){const a=r[l],c=a.position.x;t+=c,e+=c*c;const h=a.position.y;s+=h,i+=h*h;const u=a.position.z;o+=u,n+=u*u}const c=e-t*t*l,h=i-s*s*l,u=n-o*o*l;this.axisIndex=c>h?c>u?0:2:h>u?1:2}aabbQuery(t,e,s=[]){this.dirty&&(this.sortList(),this.dirty=!1);const i=this.axisIndex;let o=\\\\\\\"x\\\\\\\";1===i&&(o=\\\\\\\"y\\\\\\\"),2===i&&(o=\\\\\\\"z\\\\\\\");const n=this.axisList;e.lowerBound[o],e.upperBound[o];for(let t=0;t<n.length;t++){const i=n[t];i.aabbNeedsUpdate&&i.updateAABB(),i.aabb.overlaps(e)&&s.push(i)}return s}}Et.insertionSortX=t=>{for(let e=1,s=t.length;e<s;e++){const s=t[e];let i;for(i=e-1;i>=0&&!(t[i].aabb.lowerBound.x<=s.aabb.lowerBound.x);i--)t[i+1]=t[i];t[i+1]=s}return t},Et.insertionSortY=t=>{for(let e=1,s=t.length;e<s;e++){const s=t[e];let i;for(i=e-1;i>=0&&!(t[i].aabb.lowerBound.y<=s.aabb.lowerBound.y);i--)t[i+1]=t[i];t[i+1]=s}return t},Et.insertionSortZ=t=>{for(let e=1,s=t.length;e<s;e++){const s=t[e];let i;for(i=e-1;i>=0&&!(t[i].aabb.lowerBound.z<=s.aabb.lowerBound.z);i--)t[i+1]=t[i];t[i+1]=s}return t},Et.checkBounds=(t,e,s)=>{let i,o;0===s?(i=t.position.x,o=e.position.x):1===s?(i=t.position.y,o=e.position.y):2===s&&(i=t.position.z,o=e.position.z);const n=t.boundingRadius;return o-e.boundingRadius<i+n};class St{static defaults(t={},e){for(let s in e)s in t||(t[s]=e[s]);return t}}class zt{constructor(t,e,s={}){s=St.defaults(s,{collideConnected:!0,wakeUpBodies:!0}),this.equations=[],this.bodyA=t,this.bodyB=e,this.id=zt.idCounter++,this.collideConnected=s.collideConnected,s.wakeUpBodies&&(t&&t.wakeUp(),e&&e.wakeUp())}update(){throw new Error(\\\\\\\"method update() not implmemented in this Constraint subclass!\\\\\\\")}enable(){const t=this.equations;for(let e=0;e<t.length;e++)t[e].enabled=!0}disable(){const t=this.equations;for(let e=0;e<t.length;e++)t[e].enabled=!1}}zt.idCounter=0;class Ft{constructor(){this.spatial=new e,this.rotational=new e}multiplyElement(t){return t.spatial.dot(this.spatial)+t.rotational.dot(this.rotational)}multiplyVectors(t,e){return t.dot(this.spatial)+e.dot(this.rotational)}}class Ct{constructor(t,e,s=-1e6,i=1e6){this.id=Ct.id++,this.minForce=s,this.maxForce=i,this.bi=t,this.bj=e,this.a=0,this.b=0,this.eps=0,this.jacobianElementA=new Ft,this.jacobianElementB=new Ft,this.enabled=!0,this.multiplier=0,this.setSpookParams(1e7,4,1/60)}setSpookParams(t,e,s){const i=e,o=t,n=s;this.a=4/(n*(1+4*i)),this.b=4*i/(1+4*i),this.eps=4/(n*n*o*(1+4*i))}computeB(t,e,s){const i=this.computeGW();return-this.computeGq()*t-i*e-this.computeGiMf()*s}computeGq(){const t=this.jacobianElementA,e=this.jacobianElementB,s=this.bi,i=this.bj,o=s.position,n=i.position;return t.spatial.dot(o)+e.spatial.dot(n)}computeGW(){const t=this.jacobianElementA,e=this.jacobianElementB,s=this.bi,i=this.bj,o=s.velocity,n=i.velocity,r=s.angularVelocity,a=i.angularVelocity;return t.multiplyVectors(o,r)+e.multiplyVectors(n,a)}computeGWlambda(){const t=this.jacobianElementA,e=this.jacobianElementB,s=this.bi,i=this.bj,o=s.vlambda,n=i.vlambda,r=s.wlambda,a=i.wlambda;return t.multiplyVectors(o,r)+e.multiplyVectors(n,a)}computeGiMf(){const t=this.jacobianElementA,e=this.jacobianElementB,s=this.bi,i=this.bj,o=s.force,n=s.torque,r=i.force,a=i.torque,l=s.invMassSolve,c=i.invMassSolve;return o.scale(l,Mt),r.scale(c,Rt),s.invInertiaWorldSolve.vmult(n,It),i.invInertiaWorldSolve.vmult(a,Tt),t.multiplyVectors(Mt,It)+e.multiplyVectors(Rt,Tt)}computeGiMGt(){const t=this.jacobianElementA,e=this.jacobianElementB,s=this.bi,i=this.bj,o=s.invMassSolve,n=i.invMassSolve,r=s.invInertiaWorldSolve,a=i.invInertiaWorldSolve;let l=o+n;return r.vmult(t.rotational,Lt),l+=Lt.dot(t.rotational),a.vmult(e.rotational,Lt),l+=Lt.dot(e.rotational),l}addToWlambda(t){const e=this.jacobianElementA,s=this.jacobianElementB,i=this.bi,o=this.bj,n=qt;i.vlambda.addScaledVector(i.invMassSolve*t,e.spatial,i.vlambda),o.vlambda.addScaledVector(o.invMassSolve*t,s.spatial,o.vlambda),i.invInertiaWorldSolve.vmult(e.rotational,n),i.wlambda.addScaledVector(t,n,i.wlambda),o.invInertiaWorldSolve.vmult(s.rotational,n),o.wlambda.addScaledVector(t,n,o.wlambda)}computeC(){return this.computeGiMGt()+this.eps}}Ct.id=0;const Mt=new e,Rt=new e,It=new e,Tt=new e,Lt=new e,qt=new e;class Pt extends Ct{constructor(t,s,i=1e6){super(t,s,0,i),this.restitution=0,this.ri=new e,this.rj=new e,this.ni=new e}computeB(t){const e=this.a,s=this.b,i=this.bi,o=this.bj,n=this.ri,r=this.rj,a=Nt,l=Wt,c=i.velocity,h=i.angularVelocity;i.force,i.torque;const u=o.velocity,d=o.angularVelocity;o.force,o.torque;const p=Vt,y=this.jacobianElementA,m=this.jacobianElementB,v=this.ni;n.cross(v,a),r.cross(v,l),v.negate(y.spatial),a.negate(y.rotational),m.spatial.copy(v),m.rotational.copy(l),p.copy(o.position),p.vadd(r,p),p.vsub(i.position,p),p.vsub(n,p);const w=v.dot(p),f=this.restitution+1;return-w*e-(f*u.dot(v)-f*c.dot(v)+d.dot(l)-h.dot(a))*s-t*this.computeGiMf()}getImpactVelocityAlongNormal(){const t=kt,e=jt,s=Ot,i=_t,o=Dt;return this.bi.position.vadd(this.ri,s),this.bj.position.vadd(this.rj,i),this.bi.getVelocityAtWorldPoint(s,t),this.bj.getVelocityAtWorldPoint(i,e),t.vsub(e,o),this.ni.dot(o)}}const Nt=new e,Wt=new e,Vt=new e,kt=new e,jt=new e,Ot=new e,_t=new e,Dt=new e;class Ht extends zt{constructor(t,s=new e,i,o=new e,n=1e6){super(t,i),this.pivotA=s.clone(),this.pivotB=o.clone();const r=this.equationX=new Pt(t,i),a=this.equationY=new Pt(t,i),l=this.equationZ=new Pt(t,i);this.equations.push(r,a,l),r.minForce=a.minForce=l.minForce=-n,r.maxForce=a.maxForce=l.maxForce=n,r.ni.set(1,0,0),a.ni.set(0,1,0),l.ni.set(0,0,1)}update(){const t=this.bodyA,e=this.bodyB,s=this.equationX,i=this.equationY,o=this.equationZ;t.quaternion.vmult(this.pivotA,s.ri),e.quaternion.vmult(this.pivotB,s.rj),i.ri.copy(s.ri),i.rj.copy(s.rj),o.ri.copy(s.ri),o.rj.copy(s.rj)}}class Ut extends Ct{constructor(t,s,i={}){const o=void 0!==i.maxForce?i.maxForce:1e6;super(t,s,-o,o),this.axisA=i.axisA?i.axisA.clone():new e(1,0,0),this.axisB=i.axisB?i.axisB.clone():new e(0,1,0),this.angle=void 0!==i.angle?i.angle:0}computeB(t){const e=this.a,s=this.b,i=this.axisA,o=this.axisB,n=Gt,r=Xt,a=this.jacobianElementA,l=this.jacobianElementB;i.cross(o,n),o.cross(i,r),a.rotational.copy(r),l.rotational.copy(n);return-(Math.cos(this.angle)-i.dot(o))*e-this.computeGW()*s-t*this.computeGiMf()}}const Gt=new e,Xt=new e;class Yt extends Ct{constructor(t,s,i={}){const o=void 0!==i.maxForce?i.maxForce:1e6;super(t,s,-o,o),this.axisA=i.axisA?i.axisA.clone():new e(1,0,0),this.axisB=i.axisB?i.axisB.clone():new e(0,1,0),this.maxAngle=Math.PI/2}computeB(t){const e=this.a,s=this.b,i=this.axisA,o=this.axisB,n=Zt,r=Kt,a=this.jacobianElementA,l=this.jacobianElementB;i.cross(o,n),o.cross(i,r),a.rotational.copy(r),l.rotational.copy(n);return-(Math.cos(this.maxAngle)-i.dot(o))*e-this.computeGW()*s-t*this.computeGiMf()}}const Zt=new e,Kt=new e;class Qt extends Ht{constructor(t,s,i={}){const o=void 0!==i.maxForce?i.maxForce:1e6;super(t,i.pivotA?i.pivotA.clone():new e,s,i.pivotB?i.pivotB.clone():new e,o),this.axisA=i.axisA?i.axisA.clone():new e,this.axisB=i.axisB?i.axisB.clone():new e,this.collideConnected=!!i.collideConnected,this.angle=void 0!==i.angle?i.angle:0;const n=this.coneEquation=new Ut(t,s,i),r=this.twistEquation=new Yt(t,s,i);this.twistAngle=void 0!==i.twistAngle?i.twistAngle:0,n.maxForce=0,n.minForce=-o,r.maxForce=0,r.minForce=-o,this.equations.push(n,r)}update(){const t=this.bodyA,e=this.bodyB,s=this.coneEquation,i=this.twistEquation;super.update(),t.vectorToWorldFrame(this.axisA,s.axisA),e.vectorToWorldFrame(this.axisB,s.axisB),this.axisA.tangents(i.axisA,i.axisA),t.vectorToWorldFrame(i.axisA,i.axisA),this.axisB.tangents(i.axisB,i.axisB),e.vectorToWorldFrame(i.axisB,i.axisB),s.angle=this.angle,i.maxAngle=this.twistAngle}}class Jt extends zt{constructor(t,e,s,i=1e6){super(t,e),void 0===s&&(s=t.position.distanceTo(e.position)),this.distance=s;const o=this.distanceEquation=new Pt(t,e);this.equations.push(o),o.minForce=-i,o.maxForce=i}update(){const t=this.bodyA,e=this.bodyB,s=this.distanceEquation,i=.5*this.distance,o=s.ni;e.position.vsub(t.position,o),o.normalize(),o.scale(i,s.ri),o.scale(-i,s.rj)}}class $t extends Ht{constructor(t,s,i={}){const o=void 0!==i.maxForce?i.maxForce:1e6,n=new e,r=new e,a=new e;t.position.vadd(s.position,a),a.scale(.5,a),s.pointToLocalFrame(a,r),t.pointToLocalFrame(a,n),super(t,n,s,r,o),this.xA=t.vectorToLocalFrame(e.UNIT_X),this.xB=s.vectorToLocalFrame(e.UNIT_X),this.yA=t.vectorToLocalFrame(e.UNIT_Y),this.yB=s.vectorToLocalFrame(e.UNIT_Y),this.zA=t.vectorToLocalFrame(e.UNIT_Z),this.zB=s.vectorToLocalFrame(e.UNIT_Z);const l=this.rotationalEquation1=new Yt(t,s,i),c=this.rotationalEquation2=new Yt(t,s,i),h=this.rotationalEquation3=new Yt(t,s,i);this.equations.push(l,c,h)}update(){const t=this.bodyA,e=this.bodyB;this.motorEquation;const s=this.rotationalEquation1,i=this.rotationalEquation2,o=this.rotationalEquation3;super.update(),t.vectorToWorldFrame(this.xA,s.axisA),e.vectorToWorldFrame(this.yB,s.axisB),t.vectorToWorldFrame(this.yA,i.axisA),e.vectorToWorldFrame(this.zB,i.axisB),t.vectorToWorldFrame(this.zA,o.axisA),e.vectorToWorldFrame(this.xB,o.axisB)}}class te extends Ct{constructor(t,s,i=1e6){super(t,s,-i,i),this.axisA=new e,this.axisB=new e,this.targetVelocity=0}computeB(t){this.a;const e=this.b;this.bi,this.bj;const s=this.axisA,i=this.axisB,o=this.jacobianElementA,n=this.jacobianElementB;o.rotational.copy(s),i.negate(n.rotational);return-(this.computeGW()-this.targetVelocity)*e-t*this.computeGiMf()}}class ee extends Ht{constructor(t,s,i={}){const o=void 0!==i.maxForce?i.maxForce:1e6;super(t,i.pivotA?i.pivotA.clone():new e,s,i.pivotB?i.pivotB.clone():new e,o);(this.axisA=i.axisA?i.axisA.clone():new e(1,0,0)).normalize();(this.axisB=i.axisB?i.axisB.clone():new e(1,0,0)).normalize(),this.collideConnected=!!i.collideConnected;const n=this.rotationalEquation1=new Yt(t,s,i),r=this.rotationalEquation2=new Yt(t,s,i),a=this.motorEquation=new te(t,s,o);a.enabled=!1,this.equations.push(n,r,a)}enableMotor(){this.motorEquation.enabled=!0}disableMotor(){this.motorEquation.enabled=!1}setMotorSpeed(t){this.motorEquation.targetVelocity=t}setMotorMaxForce(t){this.motorEquation.maxForce=t,this.motorEquation.minForce=-t}update(){const t=this.bodyA,e=this.bodyB,s=this.motorEquation,i=this.rotationalEquation1,o=this.rotationalEquation2,n=se,r=ie,a=this.axisA,l=this.axisB;super.update(),t.quaternion.vmult(a,n),e.quaternion.vmult(l,r),n.tangents(i.axisA,o.axisA),i.axisB.copy(r),o.axisB.copy(r),this.motorEquation.enabled&&(t.quaternion.vmult(this.axisA,s.axisA),e.quaternion.vmult(this.axisB,s.axisB))}}const se=new e,ie=new e;class oe extends Ct{constructor(t,s,i){super(t,s,-i,i),this.ri=new e,this.rj=new e,this.t=new e}computeB(t){this.a;const e=this.b;this.bi,this.bj;const s=this.ri,i=this.rj,o=ne,n=re,r=this.t;s.cross(r,o),i.cross(r,n);const a=this.jacobianElementA,l=this.jacobianElementB;r.negate(a.spatial),o.negate(a.rotational),l.spatial.copy(r),l.rotational.copy(n);return-this.computeGW()*e-t*this.computeGiMf()}}const ne=new e,re=new e;class ae{constructor(t,e,s){s=St.defaults(s,{friction:.3,restitution:.3,contactEquationStiffness:1e7,contactEquationRelaxation:3,frictionEquationStiffness:1e7,frictionEquationRelaxation:3}),this.id=ae.idCounter++,this.materials=[t,e],this.friction=s.friction,this.restitution=s.restitution,this.contactEquationStiffness=s.contactEquationStiffness,this.contactEquationRelaxation=s.contactEquationRelaxation,this.frictionEquationStiffness=s.frictionEquationStiffness,this.frictionEquationRelaxation=s.frictionEquationRelaxation}}ae.idCounter=0;class le{constructor(t={}){let e=\\\\\\\"\\\\\\\";\\\\\\\"string\\\\\\\"==typeof t&&(e=t,t={}),this.name=e,this.id=le.idCounter++,this.friction=void 0!==t.friction?t.friction:-1,this.restitution=void 0!==t.restitution?t.restitution:-1}}le.idCounter=0;class ce{constructor(t,s,i={}){this.restLength=\\\\\\\"number\\\\\\\"==typeof i.restLength?i.restLength:1,this.stiffness=i.stiffness||100,this.damping=i.damping||1,this.bodyA=t,this.bodyB=s,this.localAnchorA=new e,this.localAnchorB=new e,i.localAnchorA&&this.localAnchorA.copy(i.localAnchorA),i.localAnchorB&&this.localAnchorB.copy(i.localAnchorB),i.worldAnchorA&&this.setWorldAnchorA(i.worldAnchorA),i.worldAnchorB&&this.setWorldAnchorB(i.worldAnchorB)}setWorldAnchorA(t){this.bodyA.pointToLocalFrame(t,this.localAnchorA)}setWorldAnchorB(t){this.bodyB.pointToLocalFrame(t,this.localAnchorB)}getWorldAnchorA(t){this.bodyA.pointToWorldFrame(this.localAnchorA,t)}getWorldAnchorB(t){this.bodyB.pointToWorldFrame(this.localAnchorB,t)}applyForce(){const t=this.stiffness,e=this.damping,s=this.restLength,i=this.bodyA,o=this.bodyB,n=he,r=ue,a=de,l=pe,c=xe,h=ye,u=me,d=ve,p=we,y=fe,m=ge;this.getWorldAnchorA(h),this.getWorldAnchorB(u),h.vsub(i.position,d),u.vsub(o.position,p),u.vsub(h,n);const v=n.length();r.copy(n),r.normalize(),o.velocity.vsub(i.velocity,a),o.angularVelocity.cross(p,c),a.vadd(c,a),i.angularVelocity.cross(d,c),a.vsub(c,a),r.scale(-t*(v-s)-e*a.dot(r),l),i.force.vsub(l,i.force),o.force.vadd(l,o.force),d.cross(l,y),p.cross(l,m),i.torque.vsub(y,i.torque),o.torque.vadd(m,o.torque)}}const he=new e,ue=new e,de=new e,pe=new e,ye=new e,me=new e,ve=new e,we=new e,fe=new e,ge=new e,xe=new e;class be{constructor(t={}){t=St.defaults(t,{chassisConnectionPointLocal:new e,chassisConnectionPointWorld:new e,directionLocal:new e,directionWorld:new e,axleLocal:new e,axleWorld:new e,suspensionRestLength:1,suspensionMaxLength:2,radius:1,suspensionStiffness:100,dampingCompression:10,dampingRelaxation:10,frictionSlip:10.5,forwardAcceleration:1,sideAcceleration:1,steering:0,rotation:0,deltaRotation:0,rollInfluence:.01,maxSuspensionForce:Number.MAX_VALUE,isFrontWheel:!0,clippedInvContactDotSuspension:1,suspensionRelativeVelocity:0,suspensionForce:0,slipInfo:0,skidInfo:0,suspensionLength:0,maxSuspensionTravel:1,useCustomSlidingRotationalSpeed:!1,customSlidingRotationalSpeed:-.1}),this.maxSuspensionTravel=t.maxSuspensionTravel,this.customSlidingRotationalSpeed=t.customSlidingRotationalSpeed,this.useCustomSlidingRotationalSpeed=t.useCustomSlidingRotationalSpeed,this.sliding=!1,this.chassisConnectionPointLocal=t.chassisConnectionPointLocal.clone(),this.chassisConnectionPointWorld=t.chassisConnectionPointWorld.clone(),this.directionLocal=t.directionLocal.clone(),this.directionWorld=t.directionWorld.clone(),this.axleLocal=t.axleLocal.clone(),this.axleWorld=t.axleWorld.clone(),this.suspensionRestLength=t.suspensionRestLength,this.suspensionMaxLength=t.suspensionMaxLength,this.radius=t.radius,this.suspensionStiffness=t.suspensionStiffness,this.dampingCompression=t.dampingCompression,this.dampingRelaxation=t.dampingRelaxation,this.frictionSlip=t.frictionSlip,this.forwardAcceleration=t.forwardAcceleration,this.sideAcceleration=t.sideAcceleration,this.steering=0,this.rotation=0,this.deltaRotation=0,this.rollInfluence=t.rollInfluence,this.maxSuspensionForce=t.maxSuspensionForce,this.engineForce=0,this.brake=0,this.isFrontWheel=t.isFrontWheel,this.clippedInvContactDotSuspension=1,this.suspensionRelativeVelocity=0,this.suspensionForce=0,this.slipInfo=0,this.skidInfo=0,this.suspensionLength=0,this.sideImpulse=0,this.forwardImpulse=0,this.raycastResult=new X,this.worldTransform=new y,this.isInContact=!1}updateWheel(t){const e=this.raycastResult;if(this.isInContact){const s=e.hitNormalWorld.dot(e.directionWorld);e.hitPointWorld.vsub(t.position,Be),t.getVelocityAtWorldPoint(Be,Ae);const i=e.hitNormalWorld.dot(Ae);if(s>=-.1)this.suspensionRelativeVelocity=0,this.clippedInvContactDotSuspension=10;else{const t=-1/s;this.suspensionRelativeVelocity=i*t,this.clippedInvContactDotSuspension=t}}else e.suspensionLength=this.suspensionRestLength,this.suspensionRelativeVelocity=0,e.directionWorld.scale(-1,e.hitNormalWorld),this.clippedInvContactDotSuspension=1}}const Ae=new e,Be=new e;class Ee{constructor(t){this.chassisBody=t.chassisBody,this.wheelInfos=[],this.sliding=!1,this.world=null,this.indexRightAxis=void 0!==t.indexRightAxis?t.indexRightAxis:2,this.indexForwardAxis=void 0!==t.indexForwardAxis?t.indexForwardAxis:0,this.indexUpAxis=void 0!==t.indexUpAxis?t.indexUpAxis:1,this.constraints=[],this.preStepCallback=()=>{},this.currentVehicleSpeedKmHour=0}addWheel(t={}){const e=new be(t),s=this.wheelInfos.length;return this.wheelInfos.push(e),s}setSteeringValue(t,e){this.wheelInfos[e].steering=t}applyEngineForce(t,e){this.wheelInfos[e].engineForce=t}setBrake(t,e){this.wheelInfos[e].brake=t}addToWorld(t){this.constraints,t.addBody(this.chassisBody);const e=this;this.preStepCallback=()=>{e.updateVehicle(t.dt)},t.addEventListener(\\\\\\\"preStep\\\\\\\",this.preStepCallback),this.world=t}getVehicleAxisWorld(t,e){e.set(0===t?1:0,1===t?1:0,2===t?1:0),this.chassisBody.vectorToWorldFrame(e,e)}updateVehicle(t){const s=this.wheelInfos,i=s.length,o=this.chassisBody;for(let t=0;t<i;t++)this.updateWheelTransform(t);this.currentVehicleSpeedKmHour=3.6*o.velocity.length();const n=new e;this.getVehicleAxisWorld(this.indexForwardAxis,n),n.dot(o.velocity)<0&&(this.currentVehicleSpeedKmHour*=-1);for(let t=0;t<i;t++)this.castRay(s[t]);this.updateSuspension(t);const r=new e,a=new e;for(let e=0;e<i;e++){const i=s[e];let n=i.suspensionForce;n>i.maxSuspensionForce&&(n=i.maxSuspensionForce),i.raycastResult.hitNormalWorld.scale(n*t,r),i.raycastResult.hitPointWorld.vsub(o.position,a),o.applyImpulse(r,a)}this.updateFriction(t);const l=new e,c=new e,h=new e;for(let e=0;e<i;e++){const i=s[e];o.getVelocityAtWorldPoint(i.chassisConnectionPointWorld,h);let n=1;switch(this.indexUpAxis){case 1:n=-1}if(i.isInContact){this.getVehicleAxisWorld(this.indexForwardAxis,c);const e=c.dot(i.raycastResult.hitNormalWorld);i.raycastResult.hitNormalWorld.scale(e,l),c.vsub(l,c);const s=c.dot(h);i.deltaRotation=n*s*t/i.radius}!i.sliding&&i.isInContact||0===i.engineForce||!i.useCustomSlidingRotationalSpeed||(i.deltaRotation=(i.engineForce>0?1:-1)*i.customSlidingRotationalSpeed*t),Math.abs(i.brake)>Math.abs(i.engineForce)&&(i.deltaRotation=0),i.rotation+=i.deltaRotation,i.deltaRotation*=.99}}updateSuspension(t){const e=this.chassisBody.mass,s=this.wheelInfos,i=s.length;for(let t=0;t<i;t++){const i=s[t];if(i.isInContact){let t;const s=i.suspensionRestLength-i.suspensionLength;t=i.suspensionStiffness*s*i.clippedInvContactDotSuspension;const o=i.suspensionRelativeVelocity;let n;n=o<0?i.dampingCompression:i.dampingRelaxation,t-=n*o,i.suspensionForce=t*e,i.suspensionForce<0&&(i.suspensionForce=0)}else i.suspensionForce=0}}removeFromWorld(t){this.constraints,t.removeBody(this.chassisBody),t.removeEventListener(\\\\\\\"preStep\\\\\\\",this.preStepCallback),this.world=null}castRay(t){const s=Ce,i=Me;this.updateWheelTransformWorld(t);const o=this.chassisBody;let n=-1;const r=t.suspensionRestLength+t.radius;t.directionWorld.scale(r,s);const a=t.chassisConnectionPointWorld;a.vadd(s,i);const l=t.raycastResult;l.reset();const c=o.collisionResponse;o.collisionResponse=!1,this.world.rayTest(a,i,l),o.collisionResponse=c;const h=l.body;if(t.raycastResult.groundObject=0,h){n=l.distance,t.raycastResult.hitNormalWorld=l.hitNormalWorld,t.isInContact=!0;const s=l.distance;t.suspensionLength=s-t.radius;const i=t.suspensionRestLength-t.maxSuspensionTravel,r=t.suspensionRestLength+t.maxSuspensionTravel;t.suspensionLength<i&&(t.suspensionLength=i),t.suspensionLength>r&&(t.suspensionLength=r,t.raycastResult.reset());const a=t.raycastResult.hitNormalWorld.dot(t.directionWorld),c=new e;o.getVelocityAtWorldPoint(t.raycastResult.hitPointWorld,c);const h=t.raycastResult.hitNormalWorld.dot(c);if(a>=-.1)t.suspensionRelativeVelocity=0,t.clippedInvContactDotSuspension=10;else{const e=-1/a;t.suspensionRelativeVelocity=h*e,t.clippedInvContactDotSuspension=e}}else t.suspensionLength=t.suspensionRestLength+0*t.maxSuspensionTravel,t.suspensionRelativeVelocity=0,t.directionWorld.scale(-1,t.raycastResult.hitNormalWorld),t.clippedInvContactDotSuspension=1;return n}updateWheelTransformWorld(t){t.isInContact=!1;const e=this.chassisBody;e.pointToWorldFrame(t.chassisConnectionPointLocal,t.chassisConnectionPointWorld),e.vectorToWorldFrame(t.directionLocal,t.directionWorld),e.vectorToWorldFrame(t.axleLocal,t.axleWorld)}updateWheelTransform(t){const e=Se,s=ze,i=Fe,o=this.wheelInfos[t];this.updateWheelTransformWorld(o),o.directionLocal.scale(-1,e),s.copy(o.axleLocal),e.cross(s,i),i.normalize(),s.normalize();const n=o.steering,r=new h;r.setFromAxisAngle(e,n);const a=new h;a.setFromAxisAngle(s,o.rotation);const l=o.worldTransform.quaternion;this.chassisBody.quaternion.mult(r,l),l.mult(a,l),l.normalize();const c=o.worldTransform.position;c.copy(o.directionWorld),c.scale(o.suspensionLength,c),c.vadd(o.chassisConnectionPointWorld,c)}getWheelTransformWorld(t){return this.wheelInfos[t].worldTransform}updateFriction(t){const s=Ie,i=this.wheelInfos,o=i.length,n=this.chassisBody,r=Le,a=Te;for(let t=0;t<o;t++){const s=i[t];s.raycastResult.body,s.sideImpulse=0,s.forwardImpulse=0,r[t]||(r[t]=new e),a[t]||(a[t]=new e)}for(let t=0;t<o;t++){const e=i[t],o=e.raycastResult.body;if(o){const i=a[t];this.getWheelTransformWorld(t).vectorToWorldFrame(Re[this.indexRightAxis],i);const l=e.raycastResult.hitNormalWorld,c=i.dot(l);l.scale(c,s),i.vsub(s,i),i.normalize(),l.cross(i,r[t]),r[t].normalize(),e.sideImpulse=Xe(n,e.raycastResult.hitPointWorld,o,e.raycastResult.hitPointWorld,i),e.sideImpulse*=qe}}this.sliding=!1;for(let e=0;e<o;e++){const s=i[e],o=s.raycastResult.body;let a=0;if(s.slipInfo=1,o){const i=0,l=s.brake?s.brake:i;a=Ve(n,o,s.raycastResult.hitPointWorld,r[e],l),a+=s.engineForce*t;const c=l/a;s.slipInfo*=c}if(s.forwardImpulse=0,s.skidInfo=1,o){s.skidInfo=1;const e=s.suspensionForce*t*s.frictionSlip,i=e*e;s.forwardImpulse=a;const o=.5*s.forwardImpulse/s.forwardAcceleration,n=1*s.sideImpulse/s.sideAcceleration,r=o*o+n*n;if(s.sliding=!1,r>i){this.sliding=!0,s.sliding=!0;const t=e/Math.sqrt(r);s.skidInfo*=t}}}if(this.sliding)for(let t=0;t<o;t++){const e=i[t];0!==e.sideImpulse&&e.skidInfo<1&&(e.forwardImpulse*=e.skidInfo,e.sideImpulse*=e.skidInfo)}for(let t=0;t<o;t++){const s=i[t],o=new e;if(s.raycastResult.hitPointWorld.vsub(n.position,o),0!==s.forwardImpulse){const i=new e;r[t].scale(s.forwardImpulse,i),n.applyImpulse(i,o)}if(0!==s.sideImpulse){const i=s.raycastResult.body,r=new e;s.raycastResult.hitPointWorld.vsub(i.position,r);const l=new e;a[t].scale(s.sideImpulse,l),n.vectorToLocalFrame(o,o),o[\\\\\\\"xyz\\\\\\\"[this.indexUpAxis]]*=s.rollInfluence,n.vectorToWorldFrame(o,o),n.applyImpulse(l,o),l.scale(-1,l),i.applyImpulse(l,r)}}}}const Se=new e,ze=new e,Fe=new e;new Y;const Ce=new e,Me=new e,Re=[new e(1,0,0),new e(0,1,0),new e(0,0,1)],Ie=new e,Te=[],Le=[],qe=1,Pe=new e,Ne=new e,We=new e;function Ve(t,e,s,i,o){let n=0;const r=s,a=Pe,l=Ne,c=We;t.getVelocityAtWorldPoint(r,a),e.getVelocityAtWorldPoint(r,l),a.vsub(l,c);return n=-i.dot(c)*(1/(De(t,s,i)+De(e,s,i))),o<n&&(n=o),n<-o&&(n=-o),n}const ke=new e,je=new e,Oe=new e,_e=new e;function De(t,e,s){const i=ke,o=je,n=Oe,r=_e;return e.vsub(t.position,i),i.cross(s,o),t.invInertiaWorld.vmult(o,r),r.cross(i,n),t.invMass+s.dot(n)}const He=new e,Ue=new e,Ge=new e;function Xe(t,e,s,i,o){if(o.lengthSquared()>1.1)return 0;const n=He,r=Ue,a=Ge;t.getVelocityAtWorldPoint(e,n),s.getVelocityAtWorldPoint(i,r),n.vsub(r,a);return-.2*o.dot(a)*(1/(t.invMass+s.invMass))}class Ye extends p{constructor(t){if(super({type:p.types.SPHERE}),this.radius=void 0!==t?t:1,this.radius<0)throw new Error(\\\\\\\"The sphere radius cannot be negative.\\\\\\\");this.updateBoundingSphereRadius()}calculateLocalInertia(t,s=new e){const i=2*t*this.radius*this.radius/5;return s.x=i,s.y=i,s.z=i,s}volume(){return 4*Math.PI*Math.pow(this.radius,3)/3}updateBoundingSphereRadius(){this.boundingSphereRadius=this.radius}calculateWorldAABB(t,e,s,i){const o=this.radius,n=[\\\\\\\"x\\\\\\\",\\\\\\\"y\\\\\\\",\\\\\\\"z\\\\\\\"];for(let e=0;e<n.length;e++){const r=n[e];s[r]=t[r]-o,i[r]=t[r]+o}}}class Ze extends v{constructor(t=1,s=1,i=1,o=8){if(t<0)throw new Error(\\\\\\\"The cylinder radiusTop cannot be negative.\\\\\\\");if(s<0)throw new Error(\\\\\\\"The cylinder radiusBottom cannot be negative.\\\\\\\");const n=o,r=[],a=[],l=[],c=[],h=[],u=Math.cos,d=Math.sin;r.push(new e(-s*d(0),.5*-i,s*u(0))),c.push(0),r.push(new e(-t*d(0),.5*i,t*u(0))),h.push(1);for(let o=0;o<n;o++){const p=2*Math.PI/n*(o+1),y=2*Math.PI/n*(o+.5);o<n-1?(r.push(new e(-s*d(p),.5*-i,s*u(p))),c.push(2*o+2),r.push(new e(-t*d(p),.5*i,t*u(p))),h.push(2*o+3),l.push([2*o,2*o+1,2*o+3,2*o+2])):l.push([2*o,2*o+1,1,0]),(n%2==1||o<n/2)&&a.push(new e(-d(y),0,u(y)))}l.push(c),a.push(new e(0,1,0));const y=[];for(let t=0;t<h.length;t++)y.push(h[h.length-t-1]);l.push(y),super({vertices:r,faces:l,axes:a}),this.type=p.types.CYLINDER,this.radiusTop=t,this.radiusBottom=s,this.height=i,this.numSegments=o}}class Ke extends p{constructor(){super({type:p.types.PARTICLE})}calculateLocalInertia(t,s=new e){return s.set(0,0,0),s}volume(){return 0}updateBoundingSphereRadius(){this.boundingSphereRadius=0}calculateWorldAABB(t,e,s,i){s.copy(t),i.copy(t)}}class Qe extends p{constructor(){super({type:p.types.PLANE}),this.worldNormal=new e,this.worldNormalNeedsUpdate=!0,this.boundingSphereRadius=Number.MAX_VALUE}computeWorldNormal(t){const e=this.worldNormal;e.set(0,0,1),t.vmult(e,e),this.worldNormalNeedsUpdate=!1}calculateLocalInertia(t,s=new e){return s}volume(){return Number.MAX_VALUE}calculateWorldAABB(t,e,s,i){Je.set(0,0,1),e.vmult(Je,Je);const o=Number.MAX_VALUE;s.set(-o,-o,-o),i.set(o,o,o),1===Je.x?i.x=t.x:-1===Je.x&&(s.x=t.x),1===Je.y?i.y=t.y:-1===Je.y&&(s.y=t.y),1===Je.z?i.z=t.z:-1===Je.z&&(s.z=t.z)}updateBoundingSphereRadius(){this.boundingSphereRadius=Number.MAX_VALUE}}const Je=new e;class $e extends p{constructor(t,s={}){s=St.defaults(s,{maxValue:null,minValue:null,elementSize:1}),super({type:p.types.HEIGHTFIELD}),this.data=t,this.maxValue=s.maxValue,this.minValue=s.minValue,this.elementSize=s.elementSize,null===s.minValue&&this.updateMinValue(),null===s.maxValue&&this.updateMaxValue(),this.cacheEnabled=!0,this.pillarConvex=new v,this.pillarOffset=new e,this.updateBoundingSphereRadius(),this._cachedPillars={}}update(){this._cachedPillars={}}updateMinValue(){const t=this.data;let e=t[0][0];for(let s=0;s!==t.length;s++)for(let i=0;i!==t[s].length;i++){const o=t[s][i];o<e&&(e=o)}this.minValue=e}updateMaxValue(){const t=this.data;let e=t[0][0];for(let s=0;s!==t.length;s++)for(let i=0;i!==t[s].length;i++){const o=t[s][i];o>e&&(e=o)}this.maxValue=e}setHeightValueAtIndex(t,e,s){this.data[t][e]=s,this.clearCachedConvexTrianglePillar(t,e,!1),t>0&&(this.clearCachedConvexTrianglePillar(t-1,e,!0),this.clearCachedConvexTrianglePillar(t-1,e,!1)),e>0&&(this.clearCachedConvexTrianglePillar(t,e-1,!0),this.clearCachedConvexTrianglePillar(t,e-1,!1)),e>0&&t>0&&this.clearCachedConvexTrianglePillar(t-1,e-1,!0)}getRectMinMax(t,e,s,i,o=[]){const n=this.data;let r=this.minValue;for(let o=t;o<=s;o++)for(let t=e;t<=i;t++){const e=n[o][t];e>r&&(r=e)}o[0]=this.minValue,o[1]=r}getIndexOfPosition(t,e,s,i){const o=this.elementSize,n=this.data;let r=Math.floor(t/o),a=Math.floor(e/o);return s[0]=r,s[1]=a,i&&(r<0&&(r=0),a<0&&(a=0),r>=n.length-1&&(r=n.length-1),a>=n[0].length-1&&(a=n[0].length-1)),!(r<0||a<0||r>=n.length-1||a>=n[0].length-1)}getTriangleAt(t,e,s,i,o,n){const r=ts;this.getIndexOfPosition(t,e,r,s);let a=r[0],l=r[1];const c=this.data;s&&(a=Math.min(c.length-2,Math.max(0,a)),l=Math.min(c[0].length-2,Math.max(0,l)));const h=this.elementSize,u=(t/h-a)**2+(e/h-l)**2>(t/h-(a+1))**2+(e/h-(l+1))**2;return this.getTriangle(a,l,u,i,o,n),u}getNormalAt(t,e,s,i){const o=ns,n=rs,r=as,a=ls,l=cs;this.getTriangleAt(t,e,s,o,n,r),n.vsub(o,a),r.vsub(o,l),a.cross(l,i),i.normalize()}getAabbAtIndex(t,e,{lowerBound:s,upperBound:i}){const o=this.data,n=this.elementSize;s.set(t*n,e*n,o[t][e]),i.set((t+1)*n,(e+1)*n,o[t+1][e+1])}getHeightAt(t,e,s){const i=this.data,o=ss,n=is,r=os,a=ts;this.getIndexOfPosition(t,e,a,s);let l=a[0],c=a[1];s&&(l=Math.min(i.length-2,Math.max(0,l)),c=Math.min(i[0].length-2,Math.max(0,c)));const h=this.getTriangleAt(t,e,s,o,n,r);!function(t,e,s,i,o,n,r,a,l){l.x=((n-a)*(t-r)+(r-o)*(e-a))/((n-a)*(s-r)+(r-o)*(i-a)),l.y=((a-i)*(t-r)+(s-r)*(e-a))/((n-a)*(s-r)+(r-o)*(i-a)),l.z=1-l.x-l.y}(t,e,o.x,o.y,n.x,n.y,r.x,r.y,es);const u=es;return h?i[l+1][c+1]*u.x+i[l][c+1]*u.y+i[l+1][c]*u.z:i[l][c]*u.x+i[l+1][c]*u.y+i[l][c+1]*u.z}getCacheConvexTrianglePillarKey(t,e,s){return t+\\\\\\\"_\\\\\\\"+e+\\\\\\\"_\\\\\\\"+(s?1:0)}getCachedConvexTrianglePillar(t,e,s){return this._cachedPillars[this.getCacheConvexTrianglePillarKey(t,e,s)]}setCachedConvexTrianglePillar(t,e,s,i,o){this._cachedPillars[this.getCacheConvexTrianglePillarKey(t,e,s)]={convex:i,offset:o}}clearCachedConvexTrianglePillar(t,e,s){delete this._cachedPillars[this.getCacheConvexTrianglePillarKey(t,e,s)]}getTriangle(t,e,s,i,o,n){const r=this.data,a=this.elementSize;s?(i.set((t+1)*a,(e+1)*a,r[t+1][e+1]),o.set(t*a,(e+1)*a,r[t][e+1]),n.set((t+1)*a,e*a,r[t+1][e])):(i.set(t*a,e*a,r[t][e]),o.set((t+1)*a,e*a,r[t+1][e]),n.set(t*a,(e+1)*a,r[t][e+1]))}getConvexTrianglePillar(t,s,i){let o=this.pillarConvex,n=this.pillarOffset;if(this.cacheEnabled){const r=this.getCachedConvexTrianglePillar(t,s,i);if(r)return this.pillarConvex=r.convex,void(this.pillarOffset=r.offset);o=new v,n=new e,this.pillarConvex=o,this.pillarOffset=n}const r=this.data,a=this.elementSize,l=o.faces;o.vertices.length=6;for(let t=0;t<6;t++)o.vertices[t]||(o.vertices[t]=new e);l.length=5;for(let t=0;t<5;t++)l[t]||(l[t]=[]);const c=o.vertices,h=(Math.min(r[t][s],r[t+1][s],r[t][s+1],r[t+1][s+1])-this.minValue)/2+this.minValue;i?(n.set((t+.75)*a,(s+.75)*a,h),c[0].set(.25*a,.25*a,r[t+1][s+1]-h),c[1].set(-.75*a,.25*a,r[t][s+1]-h),c[2].set(.25*a,-.75*a,r[t+1][s]-h),c[3].set(.25*a,.25*a,-Math.abs(h)-1),c[4].set(-.75*a,.25*a,-Math.abs(h)-1),c[5].set(.25*a,-.75*a,-Math.abs(h)-1),l[0][0]=0,l[0][1]=1,l[0][2]=2,l[1][0]=5,l[1][1]=4,l[1][2]=3,l[2][0]=2,l[2][1]=5,l[2][2]=3,l[2][3]=0,l[3][0]=3,l[3][1]=4,l[3][2]=1,l[3][3]=0,l[4][0]=1,l[4][1]=4,l[4][2]=5,l[4][3]=2):(n.set((t+.25)*a,(s+.25)*a,h),c[0].set(-.25*a,-.25*a,r[t][s]-h),c[1].set(.75*a,-.25*a,r[t+1][s]-h),c[2].set(-.25*a,.75*a,r[t][s+1]-h),c[3].set(-.25*a,-.25*a,-Math.abs(h)-1),c[4].set(.75*a,-.25*a,-Math.abs(h)-1),c[5].set(-.25*a,.75*a,-Math.abs(h)-1),l[0][0]=0,l[0][1]=1,l[0][2]=2,l[1][0]=5,l[1][1]=4,l[1][2]=3,l[2][0]=0,l[2][1]=2,l[2][2]=5,l[2][3]=3,l[3][0]=1,l[3][1]=0,l[3][2]=3,l[3][3]=4,l[4][0]=4,l[4][1]=5,l[4][2]=2,l[4][3]=1),o.computeNormals(),o.computeEdges(),o.updateBoundingSphereRadius(),this.setCachedConvexTrianglePillar(t,s,i,o,n)}calculateLocalInertia(t,s=new e){return s.set(0,0,0),s}volume(){return Number.MAX_VALUE}calculateWorldAABB(t,e,s,i){s.set(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),i.set(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE)}updateBoundingSphereRadius(){const t=this.data,s=this.elementSize;this.boundingSphereRadius=new e(t.length*s,t[0].length*s,Math.max(Math.abs(this.maxValue),Math.abs(this.minValue))).length()}setHeightsFromImage(t,e){const{x:s,z:i,y:o}=e,n=document.createElement(\\\\\\\"canvas\\\\\\\");n.width=t.width,n.height=t.height;const r=n.getContext(\\\\\\\"2d\\\\\\\");r.drawImage(t,0,0);const a=r.getImageData(0,0,t.width,t.height),l=this.data;l.length=0,this.elementSize=Math.abs(s)/a.width;for(let t=0;t<a.height;t++){const e=[];for(let o=0;o<a.width;o++){const n=(a.data[4*(t*a.height+o)]+a.data[4*(t*a.height+o)+1]+a.data[4*(t*a.height+o)+2])/4/255*i;s<0?e.push(n):e.unshift(n)}o<0?l.unshift(e):l.push(e)}this.updateMaxValue(),this.updateMinValue(),this.update()}}const ts=[],es=new e,ss=new e,is=new e,os=new e,ns=new e,rs=new e,as=new e,ls=new e,cs=new e;class hs{constructor(t={}){this.root=t.root||null,this.aabb=t.aabb?t.aabb.clone():new n,this.data=[],this.children=[]}reset(){this.children.length=this.data.length=0}insert(t,e,s=0){const i=this.data;if(!this.aabb.contains(t))return!1;const o=this.children;if(s<(this.maxDepth||this.root.maxDepth)){let i=!1;o.length||(this.subdivide(),i=!0);for(let i=0;8!==i;i++)if(o[i].insert(t,e,s+1))return!0;i&&(o.length=0)}return i.push(e),!0}subdivide(){const t=this.aabb,s=t.lowerBound,i=t.upperBound,o=this.children;o.push(new hs({aabb:new n({lowerBound:new e(0,0,0)})}),new hs({aabb:new n({lowerBound:new e(1,0,0)})}),new hs({aabb:new n({lowerBound:new e(1,1,0)})}),new hs({aabb:new n({lowerBound:new e(1,1,1)})}),new hs({aabb:new n({lowerBound:new e(0,1,1)})}),new hs({aabb:new n({lowerBound:new e(0,0,1)})}),new hs({aabb:new n({lowerBound:new e(1,0,1)})}),new hs({aabb:new n({lowerBound:new e(0,1,0)})})),i.vsub(s,ds),ds.scale(.5,ds);const r=this.root||this;for(let t=0;8!==t;t++){const e=o[t];e.root=r;const i=e.aabb.lowerBound;i.x*=ds.x,i.y*=ds.y,i.z*=ds.z,i.vadd(s,i),i.vadd(ds,e.aabb.upperBound)}}aabbQuery(t,e){this.data,this.children;const s=[this];for(;s.length;){const i=s.pop();i.aabb.overlaps(t)&&Array.prototype.push.apply(e,i.data),Array.prototype.push.apply(s,i.children)}return e}rayQuery(t,e,s){return t.getAABB(ps),ps.toLocalFrame(e,ps),this.aabbQuery(ps,s),s}removeEmptyNodes(){for(let t=this.children.length-1;t>=0;t--)this.children[t].removeEmptyNodes(),this.children[t].children.length||this.children[t].data.length||this.children.splice(t,1)}}class us extends hs{constructor(t,e={}){super({root:null,aabb:t}),this.maxDepth=void 0!==e.maxDepth?e.maxDepth:8}}const ds=new e,ps=new n;class ys extends p{constructor(t,s){super({type:p.types.TRIMESH}),this.vertices=new Float32Array(t),this.indices=new Int16Array(s),this.normals=new Float32Array(s.length),this.aabb=new n,this.edges=null,this.scale=new e(1,1,1),this.tree=new us,this.updateEdges(),this.updateNormals(),this.updateAABB(),this.updateBoundingSphereRadius(),this.updateTree()}updateTree(){const t=this.tree;t.reset(),t.aabb.copy(this.aabb);const s=this.scale;t.aabb.lowerBound.x*=1/s.x,t.aabb.lowerBound.y*=1/s.y,t.aabb.lowerBound.z*=1/s.z,t.aabb.upperBound.x*=1/s.x,t.aabb.upperBound.y*=1/s.y,t.aabb.upperBound.z*=1/s.z;const i=new n,o=new e,r=new e,a=new e,l=[o,r,a];for(let e=0;e<this.indices.length/3;e++){const s=3*e;this._getUnscaledVertex(this.indices[s],o),this._getUnscaledVertex(this.indices[s+1],r),this._getUnscaledVertex(this.indices[s+2],a),i.setFromPoints(l),t.insert(i,e)}t.removeEmptyNodes()}getTrianglesInAABB(t,e){vs.copy(t);const s=this.scale,i=s.x,o=s.y,n=s.z,r=vs.lowerBound,a=vs.upperBound;return r.x/=i,r.y/=o,r.z/=n,a.x/=i,a.y/=o,a.z/=n,this.tree.aabbQuery(vs,e)}setScale(t){const e=this.scale.x===this.scale.y&&this.scale.y===this.scale.z,s=t.x===t.y&&t.y===t.z;e&&s||this.updateNormals(),this.scale.copy(t),this.updateAABB(),this.updateBoundingSphereRadius()}updateNormals(){const t=ms,e=this.normals;for(let s=0;s<this.indices.length/3;s++){const i=3*s,o=this.indices[i],n=this.indices[i+1],r=this.indices[i+2];this.getVertex(o,bs),this.getVertex(n,As),this.getVertex(r,Bs),ys.computeNormal(As,bs,Bs,t),e[i]=t.x,e[i+1]=t.y,e[i+2]=t.z}}updateEdges(){const t={},e=(e,s)=>{t[e<s?e+\\\\\\\"_\\\\\\\"+s:s+\\\\\\\"_\\\\\\\"+e]=!0};for(let t=0;t<this.indices.length/3;t++){const s=3*t,i=this.indices[s],o=this.indices[s+1],n=this.indices[s+2];e(i,o),e(o,n),e(n,i)}const s=Object.keys(t);this.edges=new Int16Array(2*s.length);for(let t=0;t<s.length;t++){const e=s[t].split(\\\\\\\"_\\\\\\\");this.edges[2*t]=parseInt(e[0],10),this.edges[2*t+1]=parseInt(e[1],10)}}getEdgeVertex(t,e,s){const i=this.edges[2*t+(e?1:0)];this.getVertex(i,s)}getEdgeVector(t,e){const s=ws,i=fs;this.getEdgeVertex(t,0,s),this.getEdgeVertex(t,1,i),i.vsub(s,e)}static computeNormal(t,e,s,i){e.vsub(t,xs),s.vsub(e,gs),gs.cross(xs,i),i.isZero()||i.normalize()}getVertex(t,e){const s=this.scale;return this._getUnscaledVertex(t,e),e.x*=s.x,e.y*=s.y,e.z*=s.z,e}_getUnscaledVertex(t,e){const s=3*t,i=this.vertices;return e.set(i[s],i[s+1],i[s+2])}getWorldVertex(t,e,s,i){return this.getVertex(t,i),y.pointToWorldFrame(e,s,i,i),i}getTriangleVertices(t,e,s,i){const o=3*t;this.getVertex(this.indices[o],e),this.getVertex(this.indices[o+1],s),this.getVertex(this.indices[o+2],i)}getNormal(t,e){const s=3*t;return e.set(this.normals[s],this.normals[s+1],this.normals[s+2])}calculateLocalInertia(t,e){this.computeLocalAABB(Es);const s=Es.upperBound.x-Es.lowerBound.x,i=Es.upperBound.y-Es.lowerBound.y,o=Es.upperBound.z-Es.lowerBound.z;return e.set(1/12*t*(2*i*2*i+2*o*2*o),1/12*t*(2*s*2*s+2*o*2*o),1/12*t*(2*i*2*i+2*s*2*s))}computeLocalAABB(t){const e=t.lowerBound,s=t.upperBound,i=this.vertices.length;this.vertices;const o=Ss;this.getVertex(0,o),e.copy(o),s.copy(o);for(let t=0;t!==i;t++)this.getVertex(t,o),o.x<e.x?e.x=o.x:o.x>s.x&&(s.x=o.x),o.y<e.y?e.y=o.y:o.y>s.y&&(s.y=o.y),o.z<e.z?e.z=o.z:o.z>s.z&&(s.z=o.z)}updateAABB(){this.computeLocalAABB(this.aabb)}updateBoundingSphereRadius(){let t=0;const s=this.vertices,i=new e;for(let e=0,o=s.length/3;e!==o;e++){this.getVertex(e,i);const s=i.lengthSquared();s>t&&(t=s)}this.boundingSphereRadius=Math.sqrt(t)}calculateWorldAABB(t,e,s,i){const o=zs,n=Fs;o.position=t,o.quaternion=e,this.aabb.toWorldFrame(o,n),s.copy(n.lowerBound),i.copy(n.upperBound)}volume(){return 4*Math.PI*this.boundingSphereRadius/3}static createTorus(t=1,e=.5,s=8,i=6,o=2*Math.PI){const n=[],r=[];for(let r=0;r<=s;r++)for(let a=0;a<=i;a++){const l=a/i*o,c=r/s*Math.PI*2,h=(t+e*Math.cos(c))*Math.cos(l),u=(t+e*Math.cos(c))*Math.sin(l),d=e*Math.sin(c);n.push(h,u,d)}for(let t=1;t<=s;t++)for(let e=1;e<=i;e++){const s=(i+1)*t+e-1,o=(i+1)*(t-1)+e-1,n=(i+1)*(t-1)+e,a=(i+1)*t+e;r.push(s,o,a),r.push(o,n,a)}return new ys(n,r)}}const ms=new e,vs=new n,ws=new e,fs=new e,gs=new e,xs=new e,bs=new e,As=new e,Bs=new e,Es=new n,Ss=new e,zs=new y,Fs=new n;class Cs extends class{constructor(){this.equations=[]}solve(t,e){return 0}addEquation(t){t.enabled&&this.equations.push(t)}removeEquation(t){const e=this.equations,s=e.indexOf(t);-1!==s&&e.splice(s,1)}removeAllEquations(){this.equations.length=0}}{constructor(){super(),this.iterations=10,this.tolerance=1e-7}solve(t,e){let s=0;const i=this.iterations,o=this.tolerance*this.tolerance,n=this.equations,r=n.length,a=e.bodies,l=a.length,c=t;let h,u,d,p,y,m;if(0!==r)for(let t=0;t!==l;t++)a[t].updateSolveMassProperties();const v=Rs,w=Is,f=Ms;v.length=r,w.length=r,f.length=r;for(let t=0;t!==r;t++){const e=n[t];f[t]=0,w[t]=e.computeB(c),v[t]=1/e.computeC()}if(0!==r){for(let t=0;t!==l;t++){const e=a[t],s=e.vlambda,i=e.wlambda;s.set(0,0,0),i.set(0,0,0)}for(s=0;s!==i;s++){p=0;for(let t=0;t!==r;t++){const e=n[t];h=w[t],u=v[t],m=f[t],y=e.computeGWlambda(),d=u*(h-y-e.eps*m),m+d<e.minForce?d=e.minForce-m:m+d>e.maxForce&&(d=e.maxForce-m),f[t]+=d,p+=d>0?d:-d,e.addToWlambda(d)}if(p*p<o)break}for(let t=0;t!==l;t++){const e=a[t],s=e.velocity,i=e.angularVelocity;e.vlambda.vmul(e.linearFactor,e.vlambda),s.vadd(e.vlambda,s),e.wlambda.vmul(e.angularFactor,e.wlambda),i.vadd(e.wlambda,i)}let t=n.length;const e=1/c;for(;t--;)n[t].multiplier=f[t]*e}return s}}const Ms=[],Rs=[],Is=[];class Ts extends class{constructor(){this.objects=[],this.type=Object}release(...t){const e=t.length;for(let s=0;s!==e;s++)this.objects.push(t[s]);return this}get(){return 0===this.objects.length?this.constructObject():this.objects.pop()}constructObject(){throw new Error(\\\\\\\"constructObject() not implemented in this Pool subclass yet!\\\\\\\")}resize(t){const e=this.objects;for(;e.length>t;)e.pop();for(;e.length<t;)e.push(this.constructObject());return this}}{constructor(){super(),this.type=e}constructObject(){return new e}}const Ls=p.types.SPHERE,qs=p.types.SPHERE|p.types.PLANE,Ps=p.types.BOX|p.types.BOX,Ns=p.types.SPHERE|p.types.BOX,Ws=p.types.PLANE|p.types.BOX,Vs=p.types.CONVEXPOLYHEDRON,ks=p.types.SPHERE|p.types.CONVEXPOLYHEDRON,js=p.types.PLANE|p.types.CONVEXPOLYHEDRON,Os=p.types.BOX|p.types.CONVEXPOLYHEDRON,_s=p.types.SPHERE|p.types.HEIGHTFIELD,Ds=p.types.BOX|p.types.HEIGHTFIELD,Hs=p.types.CONVEXPOLYHEDRON|p.types.HEIGHTFIELD,Us=p.types.PARTICLE|p.types.SPHERE,Gs=p.types.PLANE|p.types.PARTICLE,Xs=p.types.BOX|p.types.PARTICLE,Ys=p.types.PARTICLE|p.types.CONVEXPOLYHEDRON,Zs=p.types.CYLINDER,Ks=p.types.SPHERE|p.types.CYLINDER,Qs=p.types.PLANE|p.types.CYLINDER,Js=p.types.BOX|p.types.CYLINDER,$s=p.types.CONVEXPOLYHEDRON|p.types.CYLINDER,ti=p.types.HEIGHTFIELD|p.types.CYLINDER,ei=p.types.PARTICLE|p.types.CYLINDER,si=p.types.SPHERE|p.types.TRIMESH,ii=p.types.PLANE|p.types.TRIMESH;class oi{constructor(t){this.contactPointPool=[],this.frictionEquationPool=[],this.result=[],this.frictionResult=[],this.v3pool=new Ts,this.world=t,this.currentContactMaterial=t.defaultContactMaterial,this.enableFrictionReduction=!1}createContactEquation(t,e,s,i,o,n){let r;this.contactPointPool.length?(r=this.contactPointPool.pop(),r.bi=t,r.bj=e):r=new Pt(t,e),r.enabled=t.collisionResponse&&e.collisionResponse&&s.collisionResponse&&i.collisionResponse;const a=this.currentContactMaterial;r.restitution=a.restitution,r.setSpookParams(a.contactEquationStiffness,a.contactEquationRelaxation,this.world.dt);const l=s.material||t.material,c=i.material||e.material;return l&&c&&l.restitution>=0&&c.restitution>=0&&(r.restitution=l.restitution*c.restitution),r.si=o||s,r.sj=n||i,r}createFrictionEquationsFromContact(t,e){const s=t.bi,i=t.bj,o=t.si,n=t.sj,r=this.world,a=this.currentContactMaterial;let l=a.friction;const c=o.material||s.material,h=n.material||i.material;if(c&&h&&c.friction>=0&&h.friction>=0&&(l=c.friction*h.friction),l>0){const o=l*r.gravity.length();let n=s.invMass+i.invMass;n>0&&(n=1/n);const c=this.frictionEquationPool,h=c.length?c.pop():new oe(s,i,o*n),u=c.length?c.pop():new oe(s,i,o*n);return h.bi=u.bi=s,h.bj=u.bj=i,h.minForce=u.minForce=-o*n,h.maxForce=u.maxForce=o*n,h.ri.copy(t.ri),h.rj.copy(t.rj),u.ri.copy(t.ri),u.rj.copy(t.rj),t.ni.tangents(h.t,u.t),h.setSpookParams(a.frictionEquationStiffness,a.frictionEquationRelaxation,r.dt),u.setSpookParams(a.frictionEquationStiffness,a.frictionEquationRelaxation,r.dt),h.enabled=u.enabled=t.enabled,e.push(h,u),!0}return!1}createFrictionFromAverage(t){let e=this.result[this.result.length-1];if(!this.createFrictionEquationsFromContact(e,this.frictionResult)||1===t)return;const s=this.frictionResult[this.frictionResult.length-2],i=this.frictionResult[this.frictionResult.length-1];ni.setZero(),ri.setZero(),ai.setZero();const o=e.bi;e.bj;for(let s=0;s!==t;s++)e=this.result[this.result.length-1-s],e.bi!==o?(ni.vadd(e.ni,ni),ri.vadd(e.ri,ri),ai.vadd(e.rj,ai)):(ni.vsub(e.ni,ni),ri.vadd(e.rj,ri),ai.vadd(e.ri,ai));const n=1/t;ri.scale(n,s.ri),ai.scale(n,s.rj),i.ri.copy(s.ri),i.rj.copy(s.rj),ni.normalize(),ni.tangents(s.t,i.t)}getContacts(t,e,s,i,o,n,r){this.contactPointPool=o,this.frictionEquationPool=r,this.result=i,this.frictionResult=n;const a=hi,l=ui,c=li,h=ci;for(let i=0,o=t.length;i!==o;i++){const o=t[i],n=e[i];let r=null;o.material&&n.material&&(r=s.getContactMaterial(o.material,n.material)||null);const u=o.type&F.KINEMATIC&&n.type&F.STATIC||o.type&F.STATIC&&n.type&F.KINEMATIC||o.type&F.KINEMATIC&&n.type&F.KINEMATIC;for(let t=0;t<o.shapes.length;t++){o.quaternion.mult(o.shapeOrientations[t],a),o.quaternion.vmult(o.shapeOffsets[t],c),c.vadd(o.position,c);const e=o.shapes[t];for(let t=0;t<n.shapes.length;t++){n.quaternion.mult(n.shapeOrientations[t],l),n.quaternion.vmult(n.shapeOffsets[t],h),h.vadd(n.position,h);const i=n.shapes[t];if(!(e.collisionFilterMask&i.collisionFilterGroup&&i.collisionFilterMask&e.collisionFilterGroup))continue;if(c.distanceTo(h)>e.boundingSphereRadius+i.boundingSphereRadius)continue;let d=null;e.material&&i.material&&(d=s.getContactMaterial(e.material,i.material)||null),this.currentContactMaterial=d||r||s.defaultContactMaterial;const p=this[e.type|i.type];if(p){let t=!1;t=e.type<i.type?p.call(this,e,i,c,h,a,l,o,n,e,i,u):p.call(this,i,e,h,c,l,a,n,o,e,i,u),t&&u&&(s.shapeOverlapKeeper.set(e.id,i.id),s.bodyOverlapKeeper.set(o.id,n.id))}}}}}sphereSphere(t,e,s,i,o,n,r,a,l,c,h){if(h)return s.distanceSquared(i)<(t.radius+e.radius)**2;const u=this.createContactEquation(r,a,t,e,l,c);i.vsub(s,u.ni),u.ni.normalize(),u.ri.copy(u.ni),u.rj.copy(u.ni),u.ri.scale(t.radius,u.ri),u.rj.scale(-e.radius,u.rj),u.ri.vadd(s,u.ri),u.ri.vsub(r.position,u.ri),u.rj.vadd(i,u.rj),u.rj.vsub(a.position,u.rj),this.result.push(u),this.createFrictionEquationsFromContact(u,this.frictionResult)}spherePlane(t,e,s,i,o,n,r,a,l,c,h){const u=this.createContactEquation(r,a,t,e,l,c);if(u.ni.set(0,0,1),n.vmult(u.ni,u.ni),u.ni.negate(u.ni),u.ni.normalize(),u.ni.scale(t.radius,u.ri),s.vsub(i,Ri),u.ni.scale(u.ni.dot(Ri),Ii),Ri.vsub(Ii,u.rj),-Ri.dot(u.ni)<=t.radius){if(h)return!0;const t=u.ri,e=u.rj;t.vadd(s,t),t.vsub(r.position,t),e.vadd(i,e),e.vsub(a.position,e),this.result.push(u),this.createFrictionEquationsFromContact(u,this.frictionResult)}}boxBox(t,e,s,i,o,n,r,a,l,c,h){return t.convexPolyhedronRepresentation.material=t.material,e.convexPolyhedronRepresentation.material=e.material,t.convexPolyhedronRepresentation.collisionResponse=t.collisionResponse,e.convexPolyhedronRepresentation.collisionResponse=e.collisionResponse,this.convexConvex(t.convexPolyhedronRepresentation,e.convexPolyhedronRepresentation,s,i,o,n,r,a,t,e,h)}sphereBox(t,e,s,i,o,n,r,a,l,c,h){const u=this.v3pool,d=ji;s.vsub(i,Ni),e.getSideNormals(d,n);const p=t.radius;let y=!1;const m=_i,v=Di,w=Hi;let f=null,g=0,x=0,b=0,A=null;for(let t=0,e=d.length;t!==e&&!1===y;t++){const e=Wi;e.copy(d[t]);const s=e.length();e.normalize();const i=Ni.dot(e);if(i<s+p&&i>0){const o=Vi,n=ki;o.copy(d[(t+1)%3]),n.copy(d[(t+2)%3]);const r=o.length(),a=n.length();o.normalize(),n.normalize();const l=Ni.dot(o),c=Ni.dot(n);if(l<r&&l>-r&&c<a&&c>-a){const t=Math.abs(i-s-p);if((null===A||t<A)&&(A=t,x=l,b=c,f=s,m.copy(e),v.copy(o),w.copy(n),g++,h))return!0}}}if(g){y=!0;const o=this.createContactEquation(r,a,t,e,l,c);m.scale(-p,o.ri),o.ni.copy(m),o.ni.negate(o.ni),m.scale(f,m),v.scale(x,v),m.vadd(v,m),w.scale(b,w),m.vadd(w,o.rj),o.ri.vadd(s,o.ri),o.ri.vsub(r.position,o.ri),o.rj.vadd(i,o.rj),o.rj.vsub(a.position,o.rj),this.result.push(o),this.createFrictionEquationsFromContact(o,this.frictionResult)}let B=u.get();const E=Oi;for(let o=0;2!==o&&!y;o++)for(let n=0;2!==n&&!y;n++)for(let u=0;2!==u&&!y;u++)if(B.set(0,0,0),o?B.vadd(d[0],B):B.vsub(d[0],B),n?B.vadd(d[1],B):B.vsub(d[1],B),u?B.vadd(d[2],B):B.vsub(d[2],B),i.vadd(B,E),E.vsub(s,E),E.lengthSquared()<p*p){if(h)return!0;y=!0;const o=this.createContactEquation(r,a,t,e,l,c);o.ri.copy(E),o.ri.normalize(),o.ni.copy(o.ri),o.ri.scale(p,o.ri),o.rj.copy(B),o.ri.vadd(s,o.ri),o.ri.vsub(r.position,o.ri),o.rj.vadd(i,o.rj),o.rj.vsub(a.position,o.rj),this.result.push(o),this.createFrictionEquationsFromContact(o,this.frictionResult)}u.release(B),B=null;const S=u.get(),z=u.get(),F=u.get(),C=u.get(),M=u.get(),R=d.length;for(let o=0;o!==R&&!y;o++)for(let n=0;n!==R&&!y;n++)if(o%3!=n%3){d[n].cross(d[o],S),S.normalize(),d[o].vadd(d[n],z),F.copy(s),F.vsub(z,F),F.vsub(i,F);const u=F.dot(S);S.scale(u,C);let m=0;for(;m===o%3||m===n%3;)m++;M.copy(s),M.vsub(C,M),M.vsub(z,M),M.vsub(i,M);const v=Math.abs(u),w=M.length();if(v<d[m].length()&&w<p){if(h)return!0;y=!0;const o=this.createContactEquation(r,a,t,e,l,c);z.vadd(C,o.rj),o.rj.copy(o.rj),M.negate(o.ni),o.ni.normalize(),o.ri.copy(o.rj),o.ri.vadd(i,o.ri),o.ri.vsub(s,o.ri),o.ri.normalize(),o.ri.scale(p,o.ri),o.ri.vadd(s,o.ri),o.ri.vsub(r.position,o.ri),o.rj.vadd(i,o.rj),o.rj.vsub(a.position,o.rj),this.result.push(o),this.createFrictionEquationsFromContact(o,this.frictionResult)}}u.release(S,z,F,C,M)}planeBox(t,e,s,i,o,n,r,a,l,c,h){return e.convexPolyhedronRepresentation.material=e.material,e.convexPolyhedronRepresentation.collisionResponse=e.collisionResponse,e.convexPolyhedronRepresentation.id=e.id,this.planeConvex(t,e.convexPolyhedronRepresentation,s,i,o,n,r,a,t,e,h)}convexConvex(t,e,s,i,o,n,r,a,l,c,h,u,d){const p=no;if(!(s.distanceTo(i)>t.boundingSphereRadius+e.boundingSphereRadius)&&t.findSeparatingAxis(e,s,o,i,n,p,u,d)){const u=[],d=ro;t.clipAgainstHull(s,o,e,i,n,p,-100,100,u);let y=0;for(let o=0;o!==u.length;o++){if(h)return!0;const n=this.createContactEquation(r,a,t,e,l,c),m=n.ri,v=n.rj;p.negate(n.ni),u[o].normal.negate(d),d.scale(u[o].depth,d),u[o].point.vadd(d,m),v.copy(u[o].point),m.vsub(s,m),v.vsub(i,v),m.vadd(s,m),m.vsub(r.position,m),v.vadd(i,v),v.vsub(a.position,v),this.result.push(n),y++,this.enableFrictionReduction||this.createFrictionEquationsFromContact(n,this.frictionResult)}this.enableFrictionReduction&&y&&this.createFrictionFromAverage(y)}}sphereConvex(t,e,s,i,o,n,r,a,l,c,h){const u=this.v3pool;s.vsub(i,Ui);const d=e.faceNormals,p=e.faces,y=e.vertices,m=t.radius;let v=!1;for(let o=0;o!==y.length;o++){const u=y[o],d=Zi;n.vmult(u,d),i.vadd(d,d);const p=Yi;if(d.vsub(s,p),p.lengthSquared()<m*m){if(h)return!0;v=!0;const o=this.createContactEquation(r,a,t,e,l,c);return o.ri.copy(p),o.ri.normalize(),o.ni.copy(o.ri),o.ri.scale(m,o.ri),d.vsub(i,o.rj),o.ri.vadd(s,o.ri),o.ri.vsub(r.position,o.ri),o.rj.vadd(i,o.rj),o.rj.vsub(a.position,o.rj),this.result.push(o),void this.createFrictionEquationsFromContact(o,this.frictionResult)}}for(let o=0,w=p.length;o!==w&&!1===v;o++){const w=d[o],f=p[o],g=Ki;n.vmult(w,g);const x=Qi;n.vmult(y[f[0]],x),x.vadd(i,x);const b=Ji;g.scale(-m,b),s.vadd(b,b);const A=$i;b.vsub(x,A);const B=A.dot(g),E=to;if(s.vsub(x,E),B<0&&E.dot(g)>0){const o=[];for(let t=0,e=f.length;t!==e;t++){const e=u.get();n.vmult(y[f[t]],e),i.vadd(e,e),o.push(e)}if(Pi(o,g,s)){if(h)return!0;v=!0;const n=this.createContactEquation(r,a,t,e,l,c);g.scale(-m,n.ri),g.negate(n.ni);const d=u.get();g.scale(-B,d);const p=u.get();g.scale(-m,p),s.vsub(i,n.rj),n.rj.vadd(p,n.rj),n.rj.vadd(d,n.rj),n.rj.vadd(i,n.rj),n.rj.vsub(a.position,n.rj),n.ri.vadd(s,n.ri),n.ri.vsub(r.position,n.ri),u.release(d),u.release(p),this.result.push(n),this.createFrictionEquationsFromContact(n,this.frictionResult);for(let t=0,e=o.length;t!==e;t++)u.release(o[t]);return}for(let d=0;d!==f.length;d++){const p=u.get(),v=u.get();n.vmult(y[f[(d+1)%f.length]],p),n.vmult(y[f[(d+2)%f.length]],v),i.vadd(p,p),i.vadd(v,v);const w=Gi;v.vsub(p,w);const g=Xi;w.unit(g);const x=u.get(),b=u.get();s.vsub(p,b);const A=b.dot(g);g.scale(A,x),x.vadd(p,x);const B=u.get();if(x.vsub(s,B),A>0&&A*A<w.lengthSquared()&&B.lengthSquared()<m*m){if(h)return!0;const n=this.createContactEquation(r,a,t,e,l,c);x.vsub(i,n.rj),x.vsub(s,n.ni),n.ni.normalize(),n.ni.scale(m,n.ri),n.rj.vadd(i,n.rj),n.rj.vsub(a.position,n.rj),n.ri.vadd(s,n.ri),n.ri.vsub(r.position,n.ri),this.result.push(n),this.createFrictionEquationsFromContact(n,this.frictionResult);for(let t=0,e=o.length;t!==e;t++)u.release(o[t]);return u.release(p),u.release(v),u.release(x),u.release(B),void u.release(b)}u.release(p),u.release(v),u.release(x),u.release(B),u.release(b)}for(let t=0,e=o.length;t!==e;t++)u.release(o[t])}}}planeConvex(t,e,s,i,o,n,r,a,l,c,h){const u=eo,d=so;d.set(0,0,1),o.vmult(d,d);let p=0;const y=io;for(let o=0;o!==e.vertices.length;o++){u.copy(e.vertices[o]),n.vmult(u,u),i.vadd(u,u),u.vsub(s,y);if(d.dot(y)<=0){if(h)return!0;const o=this.createContactEquation(r,a,t,e,l,c),n=oo;d.scale(d.dot(y),n),u.vsub(n,n),n.vsub(s,o.ri),o.ni.copy(d),u.vsub(i,o.rj),o.ri.vadd(s,o.ri),o.ri.vsub(r.position,o.ri),o.rj.vadd(i,o.rj),o.rj.vsub(a.position,o.rj),this.result.push(o),p++,this.enableFrictionReduction||this.createFrictionEquationsFromContact(o,this.frictionResult)}}this.enableFrictionReduction&&p&&this.createFrictionFromAverage(p)}boxConvex(t,e,s,i,o,n,r,a,l,c,h){return t.convexPolyhedronRepresentation.material=t.material,t.convexPolyhedronRepresentation.collisionResponse=t.collisionResponse,this.convexConvex(t.convexPolyhedronRepresentation,e,s,i,o,n,r,a,t,e,h)}sphereHeightfield(t,e,s,i,o,n,r,a,l,c,h){const u=e.data,d=t.radius,p=e.elementSize,m=bo,v=xo;y.pointToLocalFrame(i,n,s,v);let w=Math.floor((v.x-d)/p)-1,f=Math.ceil((v.x+d)/p)+1,g=Math.floor((v.y-d)/p)-1,x=Math.ceil((v.y+d)/p)+1;if(f<0||x<0||w>u.length||g>u[0].length)return;w<0&&(w=0),f<0&&(f=0),g<0&&(g=0),x<0&&(x=0),w>=u.length&&(w=u.length-1),f>=u.length&&(f=u.length-1),x>=u[0].length&&(x=u[0].length-1),g>=u[0].length&&(g=u[0].length-1);const b=[];e.getRectMinMax(w,g,f,x,b);const A=b[0],B=b[1];if(v.z-d>B||v.z+d<A)return;const E=this.result;for(let l=w;l<f;l++)for(let c=g;c<x;c++){const u=E.length;let d=!1;if(e.getConvexTrianglePillar(l,c,!1),y.pointToWorldFrame(i,n,e.pillarOffset,m),s.distanceTo(m)<e.pillarConvex.boundingSphereRadius+t.boundingSphereRadius&&(d=this.sphereConvex(t,e.pillarConvex,s,m,o,n,r,a,t,e,h)),h&&d)return!0;if(e.getConvexTrianglePillar(l,c,!0),y.pointToWorldFrame(i,n,e.pillarOffset,m),s.distanceTo(m)<e.pillarConvex.boundingSphereRadius+t.boundingSphereRadius&&(d=this.sphereConvex(t,e.pillarConvex,s,m,o,n,r,a,t,e,h)),h&&d)return!0;if(E.length-u>2)return}}boxHeightfield(t,e,s,i,o,n,r,a,l,c,h){return t.convexPolyhedronRepresentation.material=t.material,t.convexPolyhedronRepresentation.collisionResponse=t.collisionResponse,this.convexHeightfield(t.convexPolyhedronRepresentation,e,s,i,o,n,r,a,t,e,h)}convexHeightfield(t,e,s,i,o,n,r,a,l,c,h){const u=e.data,d=e.elementSize,p=t.boundingSphereRadius,m=fo,v=go,w=wo;y.pointToLocalFrame(i,n,s,w);let f=Math.floor((w.x-p)/d)-1,g=Math.ceil((w.x+p)/d)+1,x=Math.floor((w.y-p)/d)-1,b=Math.ceil((w.y+p)/d)+1;if(g<0||b<0||f>u.length||x>u[0].length)return;f<0&&(f=0),g<0&&(g=0),x<0&&(x=0),b<0&&(b=0),f>=u.length&&(f=u.length-1),g>=u.length&&(g=u.length-1),b>=u[0].length&&(b=u[0].length-1),x>=u[0].length&&(x=u[0].length-1);const A=[];e.getRectMinMax(f,x,g,b,A);const B=A[0],E=A[1];if(!(w.z-p>E||w.z+p<B))for(let l=f;l<g;l++)for(let c=x;c<b;c++){let u=!1;if(e.getConvexTrianglePillar(l,c,!1),y.pointToWorldFrame(i,n,e.pillarOffset,m),s.distanceTo(m)<e.pillarConvex.boundingSphereRadius+t.boundingSphereRadius&&(u=this.convexConvex(t,e.pillarConvex,s,m,o,n,r,a,null,null,h,v,null)),h&&u)return!0;if(e.getConvexTrianglePillar(l,c,!0),y.pointToWorldFrame(i,n,e.pillarOffset,m),s.distanceTo(m)<e.pillarConvex.boundingSphereRadius+t.boundingSphereRadius&&(u=this.convexConvex(t,e.pillarConvex,s,m,o,n,r,a,null,null,h,v,null)),h&&u)return!0}}sphereParticle(t,e,s,i,o,n,r,a,l,c,h){const u=ho;u.set(0,0,1),i.vsub(s,u);if(u.lengthSquared()<=t.radius*t.radius){if(h)return!0;const s=this.createContactEquation(a,r,e,t,l,c);u.normalize(),s.rj.copy(u),s.rj.scale(t.radius,s.rj),s.ni.copy(u),s.ni.negate(s.ni),s.ri.set(0,0,0),this.result.push(s),this.createFrictionEquationsFromContact(s,this.frictionResult)}}planeParticle(t,e,s,i,o,n,r,a,l,c,h){const u=ao;u.set(0,0,1),r.quaternion.vmult(u,u);const d=lo;i.vsub(r.position,d);if(u.dot(d)<=0){if(h)return!0;const s=this.createContactEquation(a,r,e,t,l,c);s.ni.copy(u),s.ni.negate(s.ni),s.ri.set(0,0,0);const o=co;u.scale(u.dot(i),o),i.vsub(o,o),s.rj.copy(o),this.result.push(s),this.createFrictionEquationsFromContact(s,this.frictionResult)}}boxParticle(t,e,s,i,o,n,r,a,l,c,h){return t.convexPolyhedronRepresentation.material=t.material,t.convexPolyhedronRepresentation.collisionResponse=t.collisionResponse,this.convexParticle(t.convexPolyhedronRepresentation,e,s,i,o,n,r,a,t,e,h)}convexParticle(t,e,s,i,o,n,r,a,l,c,h){let u=-1;const d=yo,p=vo;let y=null;const m=po;if(m.copy(i),m.vsub(s,m),o.conjugate(uo),uo.vmult(m,m),t.pointIsInside(m)){t.worldVerticesNeedsUpdate&&t.computeWorldVertices(s,o),t.worldFaceNormalsNeedsUpdate&&t.computeWorldFaceNormals(o);for(let e=0,s=t.faces.length;e!==s;e++){const s=[t.worldVertices[t.faces[e][0]]],o=t.worldFaceNormals[e];i.vsub(s[0],mo);const n=-o.dot(mo);if(null===y||Math.abs(n)<Math.abs(y)){if(h)return!0;y=n,u=e,d.copy(o)}}if(-1!==u){const o=this.createContactEquation(a,r,e,t,l,c);d.scale(y,p),p.vadd(i,p),p.vsub(s,p),o.rj.copy(p),d.negate(o.ni),o.ri.set(0,0,0);const n=o.ri,h=o.rj;n.vadd(i,n),n.vsub(a.position,n),h.vadd(s,h),h.vsub(r.position,h),this.result.push(o),this.createFrictionEquationsFromContact(o,this.frictionResult)}else console.warn(\\\\\\\"Point found inside convex, but did not find penetrating face!\\\\\\\")}}heightfieldCylinder(t,e,s,i,o,n,r,a,l,c,h){return this.convexHeightfield(e,t,i,s,n,o,a,r,l,c,h)}particleCylinder(t,e,s,i,o,n,r,a,l,c,h){return this.convexParticle(e,t,i,s,n,o,a,r,l,c,h)}sphereTrimesh(t,e,s,i,o,n,r,a,l,c,h){const u=gi,d=xi,p=bi,m=Ai,v=Bi,w=Ei,f=Ci,g=fi,x=vi,b=Mi;y.pointToLocalFrame(i,n,s,v);const A=t.radius;f.lowerBound.set(v.x-A,v.y-A,v.z-A),f.upperBound.set(v.x+A,v.y+A,v.z+A),e.getTrianglesInAABB(f,b);const B=wi,E=t.radius*t.radius;for(let o=0;o<b.length;o++)for(let u=0;u<3;u++)if(e.getVertex(e.indices[3*b[o]+u],B),B.vsub(v,x),x.lengthSquared()<=E){if(g.copy(B),y.pointToWorldFrame(i,n,g,B),B.vsub(s,x),h)return!0;let o=this.createContactEquation(r,a,t,e,l,c);o.ni.copy(x),o.ni.normalize(),o.ri.copy(o.ni),o.ri.scale(t.radius,o.ri),o.ri.vadd(s,o.ri),o.ri.vsub(r.position,o.ri),o.rj.copy(B),o.rj.vsub(a.position,o.rj),this.result.push(o),this.createFrictionEquationsFromContact(o,this.frictionResult)}for(let o=0;o<b.length;o++)for(let f=0;f<3;f++){e.getVertex(e.indices[3*b[o]+f],u),e.getVertex(e.indices[3*b[o]+(f+1)%3],d),d.vsub(u,p),v.vsub(d,w);const g=w.dot(p);v.vsub(u,w);let x=w.dot(p);if(x>0&&g<0){v.vsub(u,w),m.copy(p),m.normalize(),x=w.dot(m),m.scale(x,w),w.vadd(u,w);if(w.distanceTo(v)<t.radius){if(h)return!0;const o=this.createContactEquation(r,a,t,e,l,c);w.vsub(v,o.ni),o.ni.normalize(),o.ni.scale(t.radius,o.ri),o.ri.vadd(s,o.ri),o.ri.vsub(r.position,o.ri),y.pointToWorldFrame(i,n,w,w),w.vsub(a.position,o.rj),y.vectorToWorldFrame(n,o.ni,o.ni),y.vectorToWorldFrame(n,o.ri,o.ri),this.result.push(o),this.createFrictionEquationsFromContact(o,this.frictionResult)}}}const S=Si,z=zi,F=Fi,C=mi;for(let o=0,u=b.length;o!==u;o++){e.getTriangleVertices(b[o],S,z,F),e.getNormal(b[o],C),v.vsub(S,w);let u=w.dot(C);if(C.scale(u,w),v.vsub(w,w),u=w.distanceTo(v),Y.pointInTriangle(w,S,z,F)&&u<t.radius){if(h)return!0;let o=this.createContactEquation(r,a,t,e,l,c);w.vsub(v,o.ni),o.ni.normalize(),o.ni.scale(t.radius,o.ri),o.ri.vadd(s,o.ri),o.ri.vsub(r.position,o.ri),y.pointToWorldFrame(i,n,w,w),w.vsub(a.position,o.rj),y.vectorToWorldFrame(n,o.ni,o.ni),y.vectorToWorldFrame(n,o.ri,o.ri),this.result.push(o),this.createFrictionEquationsFromContact(o,this.frictionResult)}}b.length=0}planeTrimesh(t,s,i,o,n,r,a,l,c,h,u){const d=new e,p=di;p.set(0,0,1),n.vmult(p,p);for(let n=0;n<s.vertices.length/3;n++){s.getVertex(n,d);const m=new e;m.copy(d),y.pointToWorldFrame(o,r,m,d);const v=pi;d.vsub(i,v);if(p.dot(v)<=0){if(u)return!0;const e=this.createContactEquation(a,l,t,s,c,h);e.ni.copy(p);const i=yi;p.scale(v.dot(p),i),d.vsub(i,i),e.ri.copy(i),e.ri.vsub(a.position,e.ri),e.rj.copy(d),e.rj.vsub(l.position,e.rj),this.result.push(e),this.createFrictionEquationsFromContact(e,this.frictionResult)}}}}const ni=new e,ri=new e,ai=new e,li=new e,ci=new e,hi=new h,ui=new h;oi.prototype[Ps]=oi.prototype.boxBox,oi.prototype[Os]=oi.prototype.boxConvex,oi.prototype[Xs]=oi.prototype.boxParticle,oi.prototype[Ls]=oi.prototype.sphereSphere;const di=new e,pi=new e,yi=new e;oi.prototype[ii]=oi.prototype.planeTrimesh;const mi=new e,vi=new e,wi=new e,fi=new e,gi=new e,xi=new e,bi=new e,Ai=new e,Bi=new e,Ei=new e,Si=new e,zi=new e,Fi=new e,Ci=new n,Mi=[];oi.prototype[si]=oi.prototype.sphereTrimesh;const Ri=new e,Ii=new e;oi.prototype[qs]=oi.prototype.spherePlane;const Ti=new e,Li=new e,qi=new e;function Pi(t,e,s){let i=null;const o=t.length;for(let n=0;n!==o;n++){const r=t[n],a=Ti;t[(n+1)%o].vsub(r,a);const l=Li;a.cross(e,l);const c=qi;s.vsub(r,c);const h=l.dot(c);if(!(null===i||h>0&&!0===i||h<=0&&!1===i))return!1;null===i&&(i=h>0)}return!0}const Ni=new e,Wi=new e,Vi=new e,ki=new e,ji=[new e,new e,new e,new e,new e,new e],Oi=new e,_i=new e,Di=new e,Hi=new e;oi.prototype[Ns]=oi.prototype.sphereBox;const Ui=new e,Gi=new e,Xi=new e,Yi=new e,Zi=new e,Ki=new e,Qi=new e,Ji=new e,$i=new e,to=new e;oi.prototype[ks]=oi.prototype.sphereConvex,oi.prototype[Ws]=oi.prototype.planeBox;const eo=new e,so=new e,io=new e,oo=new e;oi.prototype[js]=oi.prototype.planeConvex;const no=new e,ro=new e;oi.prototype[Vs]=oi.prototype.convexConvex;const ao=new e,lo=new e,co=new e;oi.prototype[Gs]=oi.prototype.planeParticle;const ho=new e;oi.prototype[Us]=oi.prototype.sphereParticle,oi.prototype[Zs]=oi.prototype.convexConvex,oi.prototype[Ks]=oi.prototype.sphereConvex,oi.prototype[Qs]=oi.prototype.planeConvex,oi.prototype[Js]=oi.prototype.boxConvex,oi.prototype[$s]=oi.prototype.convexConvex,oi.prototype[ti]=oi.prototype.heightfieldCylinder,oi.prototype[ei]=oi.prototype.particleCylinder;const uo=new h,po=new e,yo=new e,mo=new e,vo=new e;oi.prototype[Ys]=oi.prototype.convexParticle,oi.prototype[Ds]=oi.prototype.boxHeightfield;const wo=new e,fo=new e,go=[0];oi.prototype[Hs]=oi.prototype.convexHeightfield;const xo=new e,bo=new e;oi.prototype[_s]=oi.prototype.sphereHeightfield;class Ao{constructor(){this.current=[],this.previous=[]}getKey(t,e){if(e<t){const s=e;e=t,t=s}return t<<16|e}set(t,e){const s=this.getKey(t,e),i=this.current;let o=0;for(;s>i[o];)o++;if(s!==i[o]){for(let t=i.length-1;t>=o;t--)i[t+1]=i[t];i[o]=s}}tick(){const t=this.current;this.current=this.previous,this.previous=t,this.current.length=0}getDiff(t,e){const s=this.current,i=this.previous,o=s.length,n=i.length;let r=0;for(let e=0;e<o;e++){let o=!1;const n=s[e];for(;n>i[r];)r++;o=n===i[r],o||Bo(t,n)}r=0;for(let t=0;t<n;t++){let o=!1;const n=i[t];for(;n>s[r];)r++;o=s[r]===n,o||Bo(e,n)}}}function Bo(t,e){t.push((4294901760&e)>>16,65535&e)}class Eo{constructor(){this.data={keys:[]}}get(t,e){if(t>e){const s=e;e=t,t=s}return this.data[t+\\\\\\\"-\\\\\\\"+e]}set(t,e,s){if(t>e){const s=e;e=t,t=s}const i=t+\\\\\\\"-\\\\\\\"+e;this.get(t,e)||this.data.keys.push(i),this.data[i]=s}reset(){const t=this.data,e=t.keys;for(;e.length>0;){delete t[e.pop()]}}}class So extends c{constructor(t={}){super(),this.dt=-1,this.allowSleep=!!t.allowSleep,this.contacts=[],this.frictionEquations=[],this.quatNormalizeSkip=void 0!==t.quatNormalizeSkip?t.quatNormalizeSkip:0,this.quatNormalizeFast=void 0!==t.quatNormalizeFast&&t.quatNormalizeFast,this.time=0,this.stepnumber=0,this.default_dt=1/60,this.nextId=0,this.gravity=new e,t.gravity&&this.gravity.copy(t.gravity),this.broadphase=void 0!==t.broadphase?t.broadphase:new G,this.bodies=[],this.hasActiveBodies=!1,this.solver=void 0!==t.solver?t.solver:new Cs,this.constraints=[],this.narrowphase=new oi(this),this.collisionMatrix=new l,this.collisionMatrixPrevious=new l,this.bodyOverlapKeeper=new Ao,this.shapeOverlapKeeper=new Ao,this.materials=[],this.contactmaterials=[],this.contactMaterialTable=new Eo,this.defaultMaterial=new le(\\\\\\\"default\\\\\\\"),this.defaultContactMaterial=new ae(this.defaultMaterial,this.defaultMaterial,{friction:.3,restitution:0}),this.doProfiling=!1,this.profile={solve:0,makeContactConstraints:0,broadphase:0,integrate:0,narrowphase:0},this.accumulator=0,this.subsystems=[],this.addBodyEvent={type:\\\\\\\"addBody\\\\\\\",body:null},this.removeBodyEvent={type:\\\\\\\"removeBody\\\\\\\",body:null},this.idToBodyMap={},this.broadphase.setWorld(this)}getContactMaterial(t,e){return this.contactMaterialTable.get(t.id,e.id)}numObjects(){return this.bodies.length}collisionMatrixTick(){const t=this.collisionMatrixPrevious;this.collisionMatrixPrevious=this.collisionMatrix,this.collisionMatrix=t,this.collisionMatrix.reset(),this.bodyOverlapKeeper.tick(),this.shapeOverlapKeeper.tick()}addConstraint(t){this.constraints.push(t)}removeConstraint(t){const e=this.constraints.indexOf(t);-1!==e&&this.constraints.splice(e,1)}rayTest(t,e,s){s instanceof X?this.raycastClosest(t,e,{skipBackfaces:!0},s):this.raycastAll(t,e,{skipBackfaces:!0},s)}raycastAll(t,e,s={},i){return s.mode=Y.ALL,s.from=t,s.to=e,s.callback=i,zo.intersectWorld(this,s)}raycastAny(t,e,s={},i){return s.mode=Y.ANY,s.from=t,s.to=e,s.result=i,zo.intersectWorld(this,s)}raycastClosest(t,e,s={},i){return s.mode=Y.CLOSEST,s.from=t,s.to=e,s.result=i,zo.intersectWorld(this,s)}addBody(t){this.bodies.includes(t)||(t.index=this.bodies.length,this.bodies.push(t),t.world=this,t.initPosition.copy(t.position),t.initVelocity.copy(t.velocity),t.timeLastSleepy=this.time,t instanceof F&&(t.initAngularVelocity.copy(t.angularVelocity),t.initQuaternion.copy(t.quaternion)),this.collisionMatrix.setNumObjects(this.bodies.length),this.addBodyEvent.body=t,this.idToBodyMap[t.id]=t,this.dispatchEvent(this.addBodyEvent))}removeBody(t){t.world=null;const e=this.bodies.length-1,s=this.bodies,i=s.indexOf(t);if(-1!==i){s.splice(i,1);for(let t=0;t!==s.length;t++)s[t].index=t;this.collisionMatrix.setNumObjects(e),this.removeBodyEvent.body=t,delete this.idToBodyMap[t.id],this.dispatchEvent(this.removeBodyEvent)}}getBodyById(t){return this.idToBodyMap[t]}getShapeById(t){const e=this.bodies;for(let s=0,i=e.length;s<i;s++){const i=e[s].shapes;for(let e=0,s=i.length;e<s;e++){const s=i[e];if(s.id===t)return s}}}addMaterial(t){this.materials.push(t)}addContactMaterial(t){this.contactmaterials.push(t),this.contactMaterialTable.set(t.materials[0].id,t.materials[1].id,t)}step(t,e,s=10){if(void 0===e)this.internalStep(t),this.time+=t;else{this.accumulator+=e;const i=Fo.now();let o=0;for(;this.accumulator>=t&&o<s&&(this.internalStep(t),this.accumulator-=t,o++,!(Fo.now()-i>1e3*t)););this.accumulator=this.accumulator%t;const n=this.accumulator/t;for(let t=0;t!==this.bodies.length;t++){const e=this.bodies[t];e.previousPosition.lerp(e.position,n,e.interpolatedPosition),e.previousQuaternion.slerp(e.quaternion,n,e.interpolatedQuaternion),e.previousQuaternion.normalize()}this.time+=e}}internalStep(t){this.dt=t;const e=this.contacts,s=Lo,i=qo,o=this.numObjects(),n=this.bodies,r=this.solver,a=this.gravity,l=this.doProfiling,c=this.profile,h=F.DYNAMIC;let u=-1/0;const d=this.constraints,p=To;a.length();const y=a.x,m=a.y,v=a.z;let w=0;for(l&&(u=Fo.now()),w=0;w!==o;w++){const t=n[w];if(t.type===h){const e=t.force,s=t.mass;e.x+=s*y,e.y+=s*m,e.z+=s*v}}for(let t=0,e=this.subsystems.length;t!==e;t++)this.subsystems[t].update();l&&(u=Fo.now()),s.length=0,i.length=0,this.broadphase.collisionPairs(this,s,i),l&&(c.broadphase=Fo.now()-u);let f=d.length;for(w=0;w!==f;w++){const t=d[w];if(!t.collideConnected)for(let e=s.length-1;e>=0;e-=1)(t.bodyA===s[e]&&t.bodyB===i[e]||t.bodyB===s[e]&&t.bodyA===i[e])&&(s.splice(e,1),i.splice(e,1))}this.collisionMatrixTick(),l&&(u=Fo.now());const g=Io,x=e.length;for(w=0;w!==x;w++)g.push(e[w]);e.length=0;const b=this.frictionEquations.length;for(w=0;w!==b;w++)p.push(this.frictionEquations[w]);for(this.frictionEquations.length=0,this.narrowphase.getContacts(s,i,this,e,g,this.frictionEquations,p),l&&(c.narrowphase=Fo.now()-u),l&&(u=Fo.now()),w=0;w<this.frictionEquations.length;w++)r.addEquation(this.frictionEquations[w]);const A=e.length;for(let t=0;t!==A;t++){const s=e[t],i=s.bi,o=s.bj,n=s.si,a=s.sj;let l;if(l=i.material&&o.material&&this.getContactMaterial(i.material,o.material)||this.defaultContactMaterial,l.friction,i.material&&o.material&&(i.material.friction>=0&&o.material.friction>=0&&(i.material.friction,o.material.friction),i.material.restitution>=0&&o.material.restitution>=0&&(s.restitution=i.material.restitution*o.material.restitution)),r.addEquation(s),i.allowSleep&&i.type===F.DYNAMIC&&i.sleepState===F.SLEEPING&&o.sleepState===F.AWAKE&&o.type!==F.STATIC){o.velocity.lengthSquared()+o.angularVelocity.lengthSquared()>=2*o.sleepSpeedLimit**2&&(i.wakeUpAfterNarrowphase=!0)}if(o.allowSleep&&o.type===F.DYNAMIC&&o.sleepState===F.SLEEPING&&i.sleepState===F.AWAKE&&i.type!==F.STATIC){i.velocity.lengthSquared()+i.angularVelocity.lengthSquared()>=2*i.sleepSpeedLimit**2&&(o.wakeUpAfterNarrowphase=!0)}this.collisionMatrix.set(i,o,!0),this.collisionMatrixPrevious.get(i,o)||(Ro.body=o,Ro.contact=s,i.dispatchEvent(Ro),Ro.body=i,o.dispatchEvent(Ro)),this.bodyOverlapKeeper.set(i.id,o.id),this.shapeOverlapKeeper.set(n.id,a.id)}for(this.emitContactEvents(),l&&(c.makeContactConstraints=Fo.now()-u,u=Fo.now()),w=0;w!==o;w++){const t=n[w];t.wakeUpAfterNarrowphase&&(t.wakeUp(),t.wakeUpAfterNarrowphase=!1)}for(f=d.length,w=0;w!==f;w++){const t=d[w];t.update();for(let e=0,s=t.equations.length;e!==s;e++){const s=t.equations[e];r.addEquation(s)}}r.solve(t,this),l&&(c.solve=Fo.now()-u),r.removeAllEquations();const B=Math.pow;for(w=0;w!==o;w++){const e=n[w];if(e.type&h){const s=B(1-e.linearDamping,t),i=e.velocity;i.scale(s,i);const o=e.angularVelocity;if(o){const s=B(1-e.angularDamping,t);o.scale(s,o)}}}for(this.dispatchEvent(Mo),w=0;w!==o;w++){const t=n[w];t.preStep&&t.preStep.call(t)}l&&(u=Fo.now());const E=this.stepnumber%(this.quatNormalizeSkip+1)==0,S=this.quatNormalizeFast;for(w=0;w!==o;w++)n[w].integrate(t,E,S);for(this.clearForces(),this.broadphase.dirty=!0,l&&(c.integrate=Fo.now()-u),this.time+=t,this.stepnumber+=1,this.dispatchEvent(Co),w=0;w!==o;w++){const t=n[w],e=t.postStep;e&&e.call(t)}let z=!0;if(this.allowSleep)for(z=!1,w=0;w!==o;w++){const t=n[w];t.sleepTick(this.time),t.sleepState!==F.SLEEPING&&(z=!0)}this.hasActiveBodies=z}clearForces(){const t=this.bodies,e=t.length;for(let s=0;s!==e;s++){const e=t[s];e.force,e.torque,e.force.set(0,0,0),e.torque.set(0,0,0)}}}new n;const zo=new Y,Fo=globalThis.performance||{};if(!Fo.now){let t=Date.now();Fo.timing&&Fo.timing.navigationStart&&(t=Fo.timing.navigationStart),Fo.now=()=>Date.now()-t}const Co={type:\\\\\\\"postStep\\\\\\\"},Mo={type:\\\\\\\"preStep\\\\\\\"},Ro={type:F.COLLIDE_EVENT_NAME,body:null,contact:null},Io=[],To=[],Lo=[],qo=[];So.prototype.emitContactEvents=(()=>{const t=[],e=[],s={type:\\\\\\\"beginContact\\\\\\\",bodyA:null,bodyB:null},i={type:\\\\\\\"endContact\\\\\\\",bodyA:null,bodyB:null},o={type:\\\\\\\"beginShapeContact\\\\\\\",bodyA:null,bodyB:null,shapeA:null,shapeB:null},n={type:\\\\\\\"endShapeContact\\\\\\\",bodyA:null,bodyB:null,shapeA:null,shapeB:null};return function(){const r=this.hasAnyEventListener(\\\\\\\"beginContact\\\\\\\"),a=this.hasAnyEventListener(\\\\\\\"endContact\\\\\\\");if((r||a)&&this.bodyOverlapKeeper.getDiff(t,e),r){for(let e=0,i=t.length;e<i;e+=2)s.bodyA=this.getBodyById(t[e]),s.bodyB=this.getBodyById(t[e+1]),this.dispatchEvent(s);s.bodyA=s.bodyB=null}if(a){for(let t=0,s=e.length;t<s;t+=2)i.bodyA=this.getBodyById(e[t]),i.bodyB=this.getBodyById(e[t+1]),this.dispatchEvent(i);i.bodyA=i.bodyB=null}t.length=e.length=0;const l=this.hasAnyEventListener(\\\\\\\"beginShapeContact\\\\\\\"),c=this.hasAnyEventListener(\\\\\\\"endShapeContact\\\\\\\");if((l||c)&&this.shapeOverlapKeeper.getDiff(t,e),l){for(let e=0,s=t.length;e<s;e+=2){const s=this.getShapeById(t[e]),i=this.getShapeById(t[e+1]);o.shapeA=s,o.shapeB=i,o.bodyA=s.body,o.bodyB=i.body,this.dispatchEvent(o)}o.bodyA=o.bodyB=o.shapeA=o.shapeB=null}if(c){for(let t=0,s=e.length;t<s;t+=2){const s=this.getShapeById(e[t]),i=this.getShapeById(e[t+1]);n.shapeA=s,n.shapeB=i,n.bodyA=s.body,n.bodyB=i.body,this.dispatchEvent(n)}n.bodyA=n.bodyB=n.shapeA=n.shapeB=null}}})();let Po={};const No={},Wo={},Vo={},ko=new So,jo={step:1/60},Oo={},_o=new e;function Do(t,s){switch(t){case\\\\\\\"Box\\\\\\\":return new b(new e(...s.map((t=>t/2))));case\\\\\\\"ConvexPolyhedron\\\\\\\":const[t,i,o]=s;return new v({vertices:t.map((([t,s,i])=>new e(t,s,i))),normals:o?o.map((([t,s,i])=>new e(t,s,i))):null,faces:i});case\\\\\\\"Cylinder\\\\\\\":return new Ze(...s);case\\\\\\\"Heightfield\\\\\\\":return new $e(...s);case\\\\\\\"Particle\\\\\\\":return new Ke;case\\\\\\\"Plane\\\\\\\":return new Qe;case\\\\\\\"Sphere\\\\\\\":return new Ye(...s);case\\\\\\\"Trimesh\\\\\\\":return new ys(...s)}}let Ho,Uo=!1;function Go(){Uo=!0,Po=ko.bodies.reduce(((t,e)=>({...t,[e.uuid]:e})),{})}self.onmessage=t=>{const{op:s,uuid:i,type:o,positions:n,quaternions:r,props:a}=t.data;switch(s){case\\\\\\\"init\\\\\\\":{const{gravity:t,tolerance:e,step:s,iterations:i,allowSleep:o,broadphase:n,axisIndex:r,defaultContactMaterial:l}=a,c={NaiveBroadphase:G,SAPBroadphase:Et};ko.allowSleep=o,ko.gravity.set(t[0],t[1],t[2]),ko.solver.tolerance=e,ko.solver.iterations=i,ko.broadphase=new(c[n+\\\\\\\"Broadphase\\\\\\\"]||G)(ko),ko.broadphase.axisIndex=null!=r?r:0,Object.assign(ko.defaultContactMaterial,l),jo.step=s;break}case\\\\\\\"step\\\\\\\":{const t=performance.now()/1e3;if(Ho){const e=t-Ho;ko.step(jo.step,e)}else ko.step(jo.step);Ho=t;const s=ko.bodies.length;for(let t=0;t<s;t++){let e=ko.bodies[t],s=e.position,i=e.quaternion;n[3*t+0]=s.x,n[3*t+1]=s.y,n[3*t+2]=s.z,r[4*t+0]=i.x,r[4*t+1]=i.y,r[4*t+2]=i.z,r[4*t+3]=i.w}const i=[];for(const t of Object.keys(Oo)){const[s,o]=Oo[t];let n=Po[s][o];n instanceof e?n=n.toArray():n instanceof h&&(n.toEuler(_o),n=_o.toArray()),i.push([t,n])}const o={op:\\\\\\\"frame\\\\\\\",positions:n,quaternions:r,observations:i,active:ko.hasActiveBodies};Uo&&(o.bodies=ko.bodies.map((t=>t.uuid)),Uo=!1),self.postMessage(o,[n.buffer,r.buffer]);break}case\\\\\\\"addBodies\\\\\\\":for(let t=0;t<i.length;t++){const{args:s=[],position:n=[0,0,0],rotation:r=[0,0,0],scale:l=[1,1,1],velocity:c=[0,0,0],angularVelocity:u=[0,0,0],linearFactor:d=[1,1,1],angularFactor:p=[1,1,1],type:y,mass:m,material:v,shapes:w,onCollide:f,collisionResponse:g,...x}=a[t],b=new F({...x,mass:\\\\\\\"Static\\\\\\\"===y?0:m,type:y?F[y.toUpperCase()]:void 0,material:v?new le(v):void 0});b.uuid=i[t],void 0!==g&&(b.collisionResponse=g),\\\\\\\"Compound\\\\\\\"===o?w.forEach((({type:t,args:s,position:i,rotation:o,material:n,...r})=>{const a=b.addShape(Do(t,s),i?new e(...i):void 0,o?(new h).setFromEuler(...o):void 0);n&&(a.material=new le(n)),Object.assign(a,r)})):b.addShape(Do(o,s)),b.position.set(n[0],n[1],n[2]),b.quaternion.setFromEuler(r[0],r[1],r[2]),b.velocity.set(c[0],c[1],c[2]),b.angularVelocity.set(u[0],u[1],u[2]),b.linearFactor.set(d[0],d[1],d[2]),b.angularFactor.set(p[0],p[1],p[2]),ko.addBody(b),f&&b.addEventListener(\\\\\\\"collide\\\\\\\",(({type:t,body:e,target:s,contact:i})=>{const{ni:o,ri:n,rj:r}=i;self.postMessage({op:\\\\\\\"event\\\\\\\",type:t,body:e.uuid,target:s.uuid,contact:{ni:o.toArray(),ri:n.toArray(),rj:r.toArray(),impactVelocity:i.getImpactVelocityAlongNormal()},collisionFilters:{bodyFilterGroup:e.collisionFilterGroup,bodyFilterMask:e.collisionFilterMask,targetFilterGroup:s.collisionFilterGroup,targetFilterMask:s.collisionFilterMask}})}))}Go();break;case\\\\\\\"removeBodies\\\\\\\":for(let t=0;t<i.length;t++)ko.removeBody(Po[i[t]]);Go();break;case\\\\\\\"subscribe\\\\\\\":{const{id:t,type:e}=a;Oo[t]=[i,e];break}case\\\\\\\"unsubscribe\\\\\\\":delete Oo[a];break;case\\\\\\\"setPosition\\\\\\\":Po[i].position.set(a[0],a[1],a[2]);break;case\\\\\\\"setQuaternion\\\\\\\":Po[i].quaternion.setFromEuler(a[0],a[1],a[2]);break;case\\\\\\\"setVelocity\\\\\\\":Po[i].velocity.set(a[0],a[1],a[2]);break;case\\\\\\\"setAngularVelocity\\\\\\\":Po[i].angularVelocity.set(a[0],a[1],a[2]);break;case\\\\\\\"setLinearFactor\\\\\\\":Po[i].linearFactor.set(a[0],a[1],a[2]);break;case\\\\\\\"setAngularFactor\\\\\\\":Po[i].angularFactor.set(a[0],a[1],a[2]);break;case\\\\\\\"setMass\\\\\\\":0!==a&&0===Po[i].type&&(Po[i].type=1),Po[i].mass=a,Po[i].updateMassProperties();break;case\\\\\\\"setLinearDamping\\\\\\\":Po[i].linearDamping=a;break;case\\\\\\\"setAngularDamping\\\\\\\":Po[i].angularDamping=a;break;case\\\\\\\"setAllowSleep\\\\\\\":Po[i].allowSleep=a;break;case\\\\\\\"setSleepSpeedLimit\\\\\\\":Po[i].sleepSpeedLimit=a;break;case\\\\\\\"setSleepTimeLimit\\\\\\\":Po[i].sleepTimeLimit=a;break;case\\\\\\\"setCollisionFilterGroup\\\\\\\":Po[i].collisionFilterGroup=a;break;case\\\\\\\"setCollisionFilterMask\\\\\\\":case\\\\\\\"setCollisionFilterMask\\\\\\\":Po[i].collisionFilterMask=a;break;case\\\\\\\"setCollisionResponse\\\\\\\":Po[i].collisionResponse=a;break;case\\\\\\\"setFixedRotation\\\\\\\":Po[i].fixedRotation=a;break;case\\\\\\\"applyForce\\\\\\\":Po[i].applyForce(new e(...a[0]),new e(...a[1]));break;case\\\\\\\"applyImpulse\\\\\\\":Po[i].applyImpulse(new e(...a[0]),new e(...a[1]));break;case\\\\\\\"applyLocalForce\\\\\\\":Po[i].applyLocalForce(new e(...a[0]),new e(...a[1]));break;case\\\\\\\"applyLocalImpulse\\\\\\\":Po[i].applyLocalImpulse(new e(...a[0]),new e(...a[1]));break;case\\\\\\\"addConstraint\\\\\\\":{const[t,s,n]=a;let r,{pivotA:l,pivotB:c,axisA:h,axisB:u,...d}=n;switch(l=Array.isArray(l)?new e(...l):void 0,c=Array.isArray(c)?new e(...c):void 0,h=Array.isArray(h)?new e(...h):void 0,u=Array.isArray(u)?new e(...u):void 0,o){case\\\\\\\"PointToPoint\\\\\\\":r=new Ht(Po[t],l,Po[s],c,n.maxForce);break;case\\\\\\\"ConeTwist\\\\\\\":r=new Qt(Po[t],Po[s],{pivotA:l,pivotB:c,axisA:h,axisB:u,...d});break;case\\\\\\\"Hinge\\\\\\\":r=new ee(Po[t],Po[s],{pivotA:l,pivotB:c,axisA:h,axisB:u,...d});break;case\\\\\\\"Distance\\\\\\\":r=new Jt(Po[t],Po[s],n.distance,n.maxForce);break;case\\\\\\\"Lock\\\\\\\":r=new $t(Po[t],Po[s],n);break;default:r=new zt(Po[t],Po[s],n)}r.uuid=i,ko.addConstraint(r);break}case\\\\\\\"removeConstraint\\\\\\\":ko.constraints.filter((({uuid:t})=>t===i)).map((t=>ko.removeConstraint(t)));break;case\\\\\\\"enableConstraint\\\\\\\":ko.constraints.filter((({uuid:t})=>t===i)).map((t=>t.enable()));break;case\\\\\\\"disableConstraint\\\\\\\":ko.constraints.filter((({uuid:t})=>t===i)).map((t=>t.disable()));break;case\\\\\\\"addSpring\\\\\\\":{const[t,s,o]=a;let{worldAnchorA:n,worldAnchorB:r,localAnchorA:l,localAnchorB:c,restLength:h,stiffness:u,damping:d}=o;n=Array.isArray(n)?new e(...n):void 0,r=Array.isArray(r)?new e(...r):void 0,l=Array.isArray(l)?new e(...l):void 0,c=Array.isArray(c)?new e(...c):void 0;let p=new ce(Po[t],Po[s],{worldAnchorA:n,worldAnchorB:r,localAnchorA:l,localAnchorB:c,restLength:h,stiffness:u,damping:d});p.uuid=i;let y=t=>p.applyForce();Wo[i]=y,ko.addEventListener(\\\\\\\"postStep\\\\\\\",Wo[i]);break}case\\\\\\\"removeSpring\\\\\\\":ko.removeEventListener(\\\\\\\"postStep\\\\\\\",Wo[i]);break;case\\\\\\\"addRay\\\\\\\":{const{from:t,to:s,...o}=a,n=new Y(t?new e(...t):void 0,s?new e(...s):void 0);o.mode=Y[o.mode.toUpperCase()],o.result=new X,Vo[i]=()=>{n.intersectWorld(ko,o);const{body:e,shape:r,rayFromWorld:a,rayToWorld:l,hitNormalWorld:c,hitPointWorld:h,...u}=o.result;self.postMessage({op:\\\\\\\"event\\\\\\\",type:\\\\\\\"rayhit\\\\\\\",ray:{from:t,to:s,direction:n.direction.toArray(),collisionFilterGroup:n.collisionFilterGroup,collisionFilterMask:n.collisionFilterMask,uuid:i},body:e?e.uuid:null,shape:r?{...r,body:e.uuid}:null,rayFromWorld:a.toArray(),rayToWorld:l.toArray(),hitNormalWorld:c.toArray(),hitPointWorld:h.toArray(),...u})},ko.addEventListener(\\\\\\\"preStep\\\\\\\",Vo[i]);break}case\\\\\\\"removeRay\\\\\\\":ko.removeEventListener(\\\\\\\"preStep\\\\\\\",Vo[i]),delete Vo[i];break;case\\\\\\\"addRaycastVehicle\\\\\\\":{const[t,s,o,n,r,l]=a,c=new Ee({chassisBody:Po[t],indexForwardAxis:n,indexRightAxis:r,indexUpAxis:l});c.world=ko;for(let t=0;t<o.length;t++){const i=o[t];i.directionLocal=new e(...i.directionLocal),i.chassisConnectionPointLocal=new e(...i.chassisConnectionPointLocal),i.axleLocal=new e(...i.axleLocal),c.addWheel(i),Po[s[t]]}No[i]={vehicle:c,wheels:s,preStep:()=>{No[i].vehicle.updateVehicle(ko.dt)},postStep:()=>{for(let t=0;t<No[i].vehicle.wheelInfos.length;t++){No[i].vehicle.updateWheelTransform(t);const e=No[i].vehicle.wheelInfos[t].worldTransform,s=Po[No[i].wheels[t]];s.position.copy(e.position),s.quaternion.copy(e.quaternion)}}},ko.addEventListener(\\\\\\\"preStep\\\\\\\",No[i].preStep),ko.addEventListener(\\\\\\\"postStep\\\\\\\",No[i].postStep);break}case\\\\\\\"removeRaycastVehicle\\\\\\\":ko.removeEventListener(\\\\\\\"preStep\\\\\\\",No[i].preStep),ko.removeEventListener(\\\\\\\"postStep\\\\\\\",No[i].postStep),No[i].vehicle.world=null,No[i].vehicle=null,delete No[i];break;case\\\\\\\"setRaycastVehicleSteeringValue\\\\\\\":{const[t,e]=a;No[i].vehicle.setSteeringValue(t,e);break}case\\\\\\\"applyRaycastVehicleEngineForce\\\\\\\":{const[t,e]=a;No[i].vehicle.applyEngineForce(t,e);break}case\\\\\\\"setRaycastVehicleBrake\\\\\\\":{const[t,e]=a;No[i].vehicle.setBrake(t,e);break}}}}();\\n\\n\"","status":200,"headers":{"content-type":"application/javascript","content-length":"120581"}},"type":2,"external":true,"timestamp":1723849532321}],"browser":{"name":"chromium","version":"119.0.6045.9"},"viewport":{"width":2000,"height":2000},"screenshot":"iVBORw0KGgoAAAANSUhEUgAAB9AAAAfQCAYAAACaOMR5AAAAAXNSR0IArs4c6QAAIABJREFUeJzs2UENACAQwLCBf8+HDEhoFey/NTMTAAAAAAAAAHxu3w4AAAAAAAAAgBcY6AAAAAAAAACQgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAAJWBDgAAAAAAAACVgQ4AAAAAAAAAlYEOAAAAAAAAcNi72+a0sTsOwz8JhLfNTL//52xnmxiE1BfpYWUWMA9CEvZ1zWSSxkawzQvP0a3/OZBEQAcAAAAAAACAJAI6AAAAAAAAACQR0AEAAAAAAAAgiYAOAAAAAAAAAEkEdAAAAAAAAABIIqADAAAAAAAAQBIBHQAAAAAAAACSCOgAAAAAAAAAkERABwAAAAAAAIAkAjoAAAAAAAAAJBHQAQAAAAAAACCJgA4AAAAAAAAASQR0AAAAAAAAAEgioAMAAAAAAABAEgEdAAAAAAAAAJII6AAAAAAAAACQREAHAAAAAAAAgCQCOgAAAAAAAAAkEdABAAAAAAAAIImADgAAAAAAAABJBHQAAAAAAAAASCKgAwAAAAAAAEASAR0AAAAAAAAAkgjoAAAAAAAAAJBEQAcAAAAAAACAJAI6AAAAAAAAACQR0AEAAAAAAAAgiYAOAAAAAAAAAEkEdAAAAAAAAABIIqADAAAAAAAAQBIBHQAAAAAAAACSCOgAAAAAAAAAkERABwAAAAAAAIAkAjoAAAAAAAAAJBHQAQAAAAAAACCJgA4AAAAAAAAASQR0AAAAAAAAAEgioAMAAAAAAABAEgEdAAAAAAAAAJII6AAAAAAAAACQREAHAAAAAAAAgCQCOgAAAAAAAAAkEdABAAAAAAAAIImADgAAAAAAAABJBHQAAAAAAAAASCKgAwAAAAAAAEASAR0AAAAAAAAAkgjoAAAAAAAAAJBEQAcAAAAAAACAJAI6AAAAAAAAACQR0AEAAAAAAAAgiYAOAAAAAAAAAEkEdAAAAAAAAABIIqADAAAAAAAAQBIBHQAAAAAAAACSCOgAAAAAAAAAkERABwAAAAAAAIAkAjoAAAAAAAAAJBHQAQAAAAAAACCJgA4AAAAAAAAASQR0AAAAAAAAAEgioAMAAAAAAABAEgEdAAAAAAAAAJII6AAAAAAAAACQREAHAAAAAAAAgCQCOgAAAAAAAAAkEdABAAAAAAAAIImADgAAAAAAAABJBHQAAAAAAAAASCKgAwAAAAAAAEASAR0AAAAAAAAAkgjoAAAAAAAAAJBEQAcAAAAAAACAJAI6AAAAAAAAACQR0AEAAAAAAAAgiYAOAAAAAAAAAEkEdAAAAAAAAABIIqADAAAAAAAAQBIBHQAAAAAAAACSCOgAAAAAAAAAkERABwAAAAAAAIAkAjoAAAAAAAAAJBHQAQAAAAAAACCJgA4AAAAAAAAASQR0AAAAAAAAAEgioAMAAAAAAABAEgEdAAAAAAAAAJII6AAAAAAAAACQREAHAAAAAAAAgCQCOgAAAAAAAAAkEdABAAAAAAAAIImADgAAAAAAAABJBHQAAAAAAAAASCKgAwAAAAAAAEASAR0AAAAAAAAAkgjoAAAAAAAAAJBEQAcAAAAAAACAJAI6AAAAAAAAACQR0AEAAAAAAAAgiYAOAAAAAAAAAEkEdAAAAAAAAABIIqADAAAAAAAAQBIBHQAAAAAAAACSCOgAAAAAAAAAkERABwAAAAAAAIAkAjoAAAAAAAAAJBHQAQAAAAAAACCJgA4AAAAAAAAASQR0AAAAAAAAAEgioAMAAAAAAABAEgEdAAAAAAAAAJII6AAAAAAAAACQREAHAAAAAAAAgCQCOgAAAAAAAAAkEdABAAAAAAAAIImADgAAAAAAAABJBHQAAAAAAAAASCKgAwAAAAAAAEASAR0AAAAAAAAAkgjoAAAAAAAAAJBEQAcAAAAAAACAJAI6AAAAAAAAACQR0AEAAAAAAAAgiYAOAAAAAAAAAEkEdAAAAAAAAABIIqADAAAAAAAAQBIBHQAAAAAAAACSCOgAAAAAAAAAkERABwAAAAAAAIAkAjoAAAAAAAAAJBHQAQAAAAAAACCJgA4AAAAAAAAASQR0AAAAAAAAAEgioAMAAAAAAABAEgEdAAAAAAAAAJII6AAAAAAAAACQREAHAAAAAAAAgCQCOgAAAAAAAAAkEdABAAAAAAAAIImADgAAAAAAAABJBHQAAAAAAAAASCKgAwAAAAAAAEASAR0AAAAAAAAAkgjoAAAAAAAAAJBEQAcAAAAAAACAJAI6AAAAAAAAACQR0AEAAAAAAAAgiYAOAAAAAAAAAEkEdAAAAAAAAABIIqADAAAAAAAAQBIBHQAAAAAAAACSCOgAAAAAAAAAkERABwAAAAAAAIAkAjoAAAAAAAAAJBHQAQAAAAAAACCJgA4AAAAAAAAASQR0AAAAAAAAAEgioAMAAAAAAABAEgEdAAAAAAAAAJII6AAAAAAAAACQREAHAAAAAAAAgCQCOgAAAAAAAAAkEdABAAAAAAAAIImADgAAAAAAAABJBHQAAAAAAAAASCKgAwAAAAAAAEASAR0AAAAAAAAAkgjoAAAAAAAAAJBEQAcAAAAAAACAJAI6AAAAAAAAACQR0AEAAAAAAAAgiYAOAAAAAAAAAEkEdAAAAAAAAABIIqADAAAAAAAAQBIBHQAAAAAAAACSCOgAAAAAAAAAkERABwAAAAAAAIAkAjoAAAAAAAAAJBHQAQAAAAAAACCJgA4AAAAAAAAASQR0AAAAAAAAAEgioAMAAAAAAABAEgEdAAAAAAAAAJII6AAAAAAAAACQREAHAAAAAAAAgCQCOgAAAAAAAAAkEdABAAAAAAAAIImADgAAAAAAAABJBHQAAAAAAAAASCKgAwAAAAAAAEASAR0AAAAAAAAAkgjoAAAAAAAAAJBEQAcAAAAAAACAJAI6AAAAAAAAACQR0AEAAAAAAAAgiYAOAAAAAAAAAEkEdAAAAAAAAABIIqADAAAAAAAAQBIBHQAAAAAAAACSCOgAAAAAAAAAkERABwAAAAAAAIAkAjoAAAAAAAAAJBHQAQAAAAAAACCJgA4AAAAAAAAASQR0AAAAAAAAAEgioAMAAAAAAABAEgEdAAAAAAAAAJII6AAAAAAAAACQREAHAAAAAAAAgCQCOgAAAAAAAAAkEdABAAAAAAAAIImADgAAAAAAAABJBHQAAAAAAAAASCKgAwAAAAAAAEASAR0AAAAAAAAAkgjoAAAAAAAAAJBEQAcAAAAAAACAJAI6AAAAAAAAACQR0AEAAAAAAAAgiYAOAAAAAAAAAEkEdAAAAAAAAABIIqADAAAAAAAAQBIBHQAAAAAAAACSCOgAAAAAAAAAkERABwAAAAAAAIAkAjoAAAAAAAAAJBHQAQAAAAAAACCJgA4AAAAAAAAASQR0AAAAAAAAAEgioAMAAAAAAABAEgEdAAAAAAAAAJII6AAAAAAAAACQREAHAAAAAAAAgCQCOgAAAAAAAAAkEdABAAAAAAAAIImADgAAAAAAAABJBHQAAAAAAAAASCKgAwAAAAAAAEASAR0AAAAAAAAAkgjoAAAAAAAAAJBEQAcAAAAAAACAJAI6AAAAAAAAACQR0AEAAAAAAAAgiYAOAAAAAAAAAEkEdAAAAAAAAABIIqADAAAAAAAAQBIBHQAAAAAAAACSCOgAAAAAAAAAkERABwAAAAAAAIAkAjoAAAAAAAAAJBHQAQAAAAAAACCJgA4AAAAAAAAASQR0AAAAAAAAAEgioAMAAAAAAABAEgEdAAAAAAAAAJII6AAAAAAAAACQREAHAAAAAAAAgCQCOgAAAAAAAAAkEdABAAAAAAAAIImADgAAAAAAAABJBHQAAAAAAAAASCKgAwAAAAAAAEASAR0AAAAAAAAAkgjoAAAAAAAAAJBEQAcAAAAAAACAJAI6AAAAAAAAACQR0AEAAAAAAAAgiYAOAAAAAAAAAEkEdAAAAAAAAABIIqADAAAAAAAAQBIBHQAAAAAAAACSCOgAAAAAAAAAkERABwAAAAAAAIAkAjoAAAAAAAAAJBHQAQAAAAAAACCJgA4AAAAAAAAASQR0AAAAAAAAAEgioAMAAAAAAABAEgEdAAAAAAAAAJII6AAAAAAAAACQREAHAAAAAAAAgCQCOgAAAAAAAAAkEdABAAAAAAAAIImADgAAAAAAAABJBHQAAAAAAAAASCKgAwAAAAAAAEASAR0AAAAAAAAAkgjoAAAAAAAAAJBEQAcAAAAAAACAJAI6AAAAAAAAACQR0AEAAAAAAAAgiYAOAAAAAAAAAEkEdAAAAAAAAABIIqADAAAAAAAAQBIBHQAAAAAAAACSCOgAAAAAAAAAkERABwAAAAAAAIAkAjoAAAAAAAAAJBHQAQAAAAAAACCJgA4AAAAAAAAASQR0AAAAAAAAAEgioAMAAAAAAABAEgEdAAAAAAAAAJII6AAAAAAAAACQ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AQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgmFKwWgAABMFJREFUEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoBLQAQAAAAAAAKAS0AEAAAAAAACgEtABAAAAAAAAoKr/AyQYYLtVpPxcAAAAAElFTkSuQmCC","consoleMessages":[{"text":"The Content Security Policy directive 'frame-ancestors' is ignored when delivered via a <meta> element.","level":"error","timestamp":1723849522217},{"text":"Unrecognized Content-Security-Policy directive 'prefetch-src'.","level":"error","timestamp":1723849522217},{"text":"Unrecognized Content-Security-Policy directive 'webrtc-src'.","level":"error","timestamp":1723849522217},{"text":"%c * Tone.js v14.7.77 *  background: #000; color: #fff","level":"log","timestamp":1723849522417},{"text":"The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://goo.gl/7K7WLu","level":"warning","timestamp":1723849522491},{"text":"The ScriptProcessorNode is deprecated. Use AudioWorkletNode instead. (https://bit.ly/audio-worklet)","level":"warning","timestamp":1723849522497},{"text":"The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://goo.gl/7K7WLu","level":"warning","timestamp":1723849522497},{"text":"The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://goo.gl/7K7WLu","level":"warning","timestamp":1723849522543},{"text":"The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://goo.gl/7K7WLu","level":"warning","timestamp":1723849522543},{"text":"[.WebGL-0x25840037c600]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels","level":"warning","timestamp":1723849524095},{"text":"[.WebGL-0x25840037c600]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels","level":"warning","timestamp":1723849524100},{"text":"[.WebGL-0x25840037c600]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels","level":"warning","timestamp":1723849524100},{"text":"[.WebGL-0x25840037c600]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels (this message will no longer repeat)","level":"warning","timestamp":1723849524101}],"screenshotDelay":10000},"timestamp":1723849521600},"created_at":"2024-08-16T23:05:57.247+00:00","updated_at":"2024-08-16T23:05:57.247+00:00"}