File: blk05793.txt

j| MARA Made in USA
FjDOUT:76629060C211BB960DB845E77C5EB90D06F287A16B5C11051BA5E55BBBD9EC36
FjDOUT:000001F02F8ED305FBA0653170B5613A9663BCE63C851A1D9660671E347972F1
6j4kUM:to:USDT(TRON):TD2Gg87W6nHT1SYVEeQkjKRgubfcc6GNYc
7j5Vgu:to:ETH:0x192e4C5eef8232342744F1b466b35376F851A3b7
6j4wGQ:to:USDT(TRON):TW4dCL9Xp2YuoPXYMbjZkWsyXQR8cXt65c
=j;N0H:to:USDT(BSC):0x5c56Fa3b8a5c7771e2a762A5a2F3d0B460607Ce1
6j4Qoa:to:USDT(TRON):TUoXi4gKqVACbNdg6PkRt71m8bjDytz11VI|
6j471n:to:USDT(TRON):TDVLRYYViF8pzSUmMtxU2sjQDvL9aF7wL5
6j4o7V:to:USDT(TRON):TV79wWwAqiLrTUxFZE8xwE1vnQW994jQqF
?j=VG9:to:USDT(ERC20):0xF26662983d7237AFf2f4e920CCdB905979678b7ef
0j.from:122XRP:rhxs6FwTsrZUZvcoXB4ZxtiJus322n4mEc{
9j7to:USDT(BSC):0xcCE53146BD966251649D23DEEA62F37251156b33
4j2to:USDC:0x4F5B303668fabAC47d98e0d0775de21E2bC8909F
DjB0x4a6b382aa34264ccd11ec0e15bcec0f50010fe499de24c1cc3bf35ebdf3d30f5
DjB0x4b02a26c33f6f21e24f79d4cffb8cff0f90ee3b8e9cc29632ffb82b7db912ccb
DjB0xbc3800892020b22e4315d60e60b6ee58606db262c217c100905ddf47e68e85c1
DjB0x7451717f24dd648db8ada7564329c6d32215c66fe9a574033a1af683f00a4084
DjB0xcfcdb60a46510e6104f9d8304cbca3bfb488d1b37035d9039ef88d9682054abb
DjB0x2c52928217a06d75dbd15cd09c0f056c9cd1ef3ab6b68a4ebbad798c3a4e637d
DjB0x1f1344cbc8913310e403118f140552a15715eaa31cf8cda3abea8d7c45470b53
DjB0x8bdabd2fdb9c4def1fe75393601a7beeca62a2a9fe6eddab9969dcaf0b05100f
DjB0x09454cf3963363c7a28f6ff3b524c71e533e97d08ee0615a8f850675d6d89d01
DjB0x62efdf02edfb7a0bbafd5158f4fa0f2fad67c762f8368542fdcb4e7534c12aa6
DjB0xf57463fd3163e2775c4ea268f6f798218f2e5d1930a7a41028355a6f5d59f66b
B7d05d145b704748d98055e9268781cdc2f5e778494ea042d236f3f4a99ac8c8c:1a
GjE=:e:0x5E75BCb237d031c2b7381eE5CdB626F4e3A5B2dA:71185581/100:sk/t:5/50Tk"
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"34"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5000000000"}h!
 /www.w3.org/2000/svg" xml:space=J
 "preserve" id="Layer_1" x="0" y=J
 "0" viewBox="0 0 500 500"><styleJ
 >.st0{fill:#fff}</style><path d=J
 "M0 0h500v500H0z" class="st0"/><J
 path d="m329.6 343.34 56.8-14.51J
 v56.58h-56.8z"/><path d="m386.4 J
 328.83 9.6 2.9v47.15l-9.6 6.53z"J
 /><path d="m48 377.43 48-8.7 48-J
 8.7 64-11.61 56-9.43 48-9.43 48-J
 9.43 32-2.18 31.2-1.45v13.06l-15J
 .2 2.9-21.6 3.63-26.4 6.53-40 9.J
 43-48 11.61-56 13.06-56 12.33-56J
  9.43-56 5.8z"/><path d="m48 366J
 .91 48-9.79 48-9.43 64-11.61 56-J
 9.07 48-9.43 48-9.07 32 .73 31.2J
  1.09v6.17l-31.2 1.45-32 2.18-48J
  9.43-48 9.43-56 9.43-64 11.61-4J
 8 8.7-48 8.7z"/><path d="M260.8 J
 82.58h2l2 1.45.4 3.63 11.2-1.45 J
 14.8 1.09 8 1.81 12.8 5.08 10 6.J
 17 8.8 7.98 6.8 9.79 3.2 6.89-1.J
 6-.73-2.4-3.63-6.8-6.89-5.2-3.99J
 -6.4-3.99-10.8-4.71-6.4-1.81-17.J
 2-1.45-11.2 1.45-7.2 2.9.4 9.43-J
 1.6 2.54-.8 89.94 3.6 2.18-.4 3.J
 63.8 2.9-.8 4.71-3.6 2.18-4.4 11J
 0.61-4.8 1.09-.8-1.81.8-1.09.4-2J
 4.3 3.2-58.39v-23.21l-1.2 11.24-J
 3.2 9.07-2 1.45-9.2-5.8h-1.2l5.6J
  48.6 2.8 44.97-103.6 19.58v-2.5J
 4l4.8-10.52 3.6-12.33 10.8-60.93J
 -3.6-3.26.4-6.53-3.6-1.81-.4-2.9J
  1.6-7.98.8-15.59 3.2-22.49 3.6-J
 17.05 4.8-13.78 6.8-9.07 4.8-3.9J
 9-1.2-1.45v-2.54l5.2-4.35v-5.08lJ
 3.6-7.98 3.6-4.35 4.8-3.63 2.4-4J
 .35 4.4-3.99 6-2.54 4.8-.36 5.2 J
 1.81 2.4 2.18 4.4-1.09 3.2.36 4.J
 4 2.9 1.2 1.45.4 2.54 6 4.35 1.2J
  1.81-.4.73 2.4 2.9-3.2 2.9 1.6 J
 1.09-.8 1.45-4.8 2.9 1.2 1.81.4 J
 3.99 2 1.81-2.4 2.54.4 1.09-2 1.J
 45-3.6.36-2.4 2.9-6.4 1.81-.4.73J
  4.4 3.63 4.4 6.17 5.6 26.11 2.4J
  3.26 9.2 1.81 1.6-2.9 4.4-2.54.J
 8-83.41-.4-6.89-1.2-1.09v-1.81l1J
 .2-15.23-.4-10.15z"/><path d="M0J
  500V0h500v500zm250-42.75c114.46J
  0 207.25-92.79 207.25-207.25S36J
 4.46 42.75 250 42.75 42.75 135.5J
 4 42.75 250 135.54 457.25 250 45J
 7.25"/><text class="st0" style="J
 font-family:&quot;AcademyEngraveJ
 dLetPlain&quot;;font-size:7.5169J
 px" transform="translate(452.36 J
 495.13)">HNFT PEPE</text><scriptJ
 >{let c=new AudioContext,t=0,r=dJ
 ocument.documentElement,s=e=>(c.J
 resume(),t=e.timeStamp+600);[[55J
 .3,1],[77.8,.55],[110.6,.5],[116J
 .7,.25],[165.9,.4],[233.4,.22],[J
 276.5,.25],[387.1,.16],[497.7,.1J
 ]].map(([f,a],i)=>{for(let j=0;2J
 >j;j++){let o=c.createOscillatorJ
 (),g=c.createGain();o.frequency.J
 value=f+j*(.11+.073*i);g.gain.vaJ
 lue=a*(j?.6:1)*.16;o.connect(g).J
 connect(c.destination);o.start()J
 }});r.addEventListener('click',eJ
 =>c.state!='running'?s(e):e.timeJ
 Stamp>t?c.suspend():0);r.addEvenJ
 tListener('touchend',e=>c.currenJ
 tTime||s(e))}</script></svg>x
dnameeDEATHpcontent_location
crefhHNFTPEPEcrelfartistdtags
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"6000000000"}h!
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
/Foundry USA Pool #dropgold/]6
FjDOUT:BA9188443E32C98E66B5A0669B8097C837D58B8B64F014E6C402A3F205B0BD34
FjDOUT:C7649AE7D37561BF698C07A9939F496FDC0E8719EC6C10833166F269A6CF478A
7j5p7g:to:ETH:0x192e4C5eef8232342744F1b466b35376F851A3b7
6j4IPj:to:USDT(TRON):TMVJhwyRhBHWqqDn8xrM3mb2mkHCFRMGsL
6j4Tpe:to:USDT(TRON):TGtyUL84zrSCfSy6YJ9cwwLYbJpzTjAUzoy
4j2to:USDC:0x4B68a539Ec61D46eDE59ADC04910568E6C9Bb78cU*
DjB0x62526d5b65346eed5eb3c0b3b85d24e60c371251b867b6cd4deadcd1a8a03f84
DjB0xbb64b10b4d1c7ba13b99732229d2ef1668a7b63efb21aaa18504695c7c6d1297
DjB0x47ec2304ef8db2bace17bf8f01bf289f355a9ceb9f45f70dc85c05f0835dbd76
text/plain;charset=utf-8
C{"p":"brc-20","op":"transfer","tick":"sats","amt":"106794749.1496"}h!
DjB0x4b971c2be72571f6649575c4cb9ac773dc6a4b69d0e581e97fef3d967702dc62
DjB0x067609296366e1b7702532823f0a32c99e19d9291c568947e33278fa92c3712b
DjB0x9ea769f63bf99e9a66f75f1e603eb77033b4c80c6d882f05e6e07efaefbd57ec
DjB0x911ef833bdd74a8d3e241ace62e4797a2030e3107968fdbb7158e4d88f6faf1f
DjB0x9c60e713fee93244b04f566a4328182e442bfc50f6c48bb7efc4db8081e4964e
DjB0x66212a1925733c012f6fb4bfe150f05eb58b4bdfe6f340c69dfc558ede4d67e6
DjB0x00eccb6cfa482c7f21437bb091331ac5a72857df474e74b0c4a6ac5f34dd283c
DjB0xed397fc241c9e4dbef89ceb1d07bc2d0afb030540ad873b20ea69557a0f3fab0
DjB0x783eb08bac8daea7db78a2c189cf944ed24d1b804e5668f9989a25bdf19f976c
DjB0x831f58edf2487af6ef45fdad32aaeea1a958b8b2447e06281dfd4c938f774825
DjB0x309d1f2c417e807bdcf995d1ebc4033d986f6a633d34cfa97834a552644adf3b
DjB0x25a9a8af565bf2e9f58efb9d193710819c5dc3efd6d468785da27727d64e0c15
DjB0x8ea493c378013c622de56a0b258db8bfc609d4ddece2b6ff7ede76942dfefd17
OjLL0x681d5f45c18509c0834b7374d78e358d51b0467f118eb3dd5ef4f5fbc2f21be0=|lifi5
text/plain;charset=utf-8
LW{"p":"brc20-module","op":"withdraw","tick":"shhhhh","amt":"11000","module":"BRC20PROG"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"451"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"165000000000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"2000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
/Foundry USA Pool #dropgold/l
{jLx0xbf30ec8b8c40be3e7fbbefff67975660f4b868eee680edb5b707637d7eceae59|depositor=bc1qq2mvrp4g3ugd424dw4xv53rgsf8szkrv853jrc|
DjB0x997f123cb2cd6e7537644c098ae0dfa7d5b3c28988b27bfa4705c5c42032b2ba
DjB0x8f9fedeff37c65f61990ca208998190de398e12683ff7cd46c51b34002c841d6
JSON{"asset":{"generator":"Khronos glTF Blender I/O v5.2.39","version":"2.0"},"extensionsUsed":["EXT_texture_webp"],"extensionsRequired":["EXT_texture_webp"],"scene":0,"scenes":[{"name":"Scene","nodes":[4]}],"nodes":[{"mesh":0,"name":"Architexture_0"},{"mesh":1,"name":"Architexture_1"},{"children":[0,1],"name":"Architexture"},{"children":[2],"name":"Root"},{"children":[3],"name":"Sketchfab_model","rotation":[-0.70710688829422,0,0,0.7071066498756409]}],"materials":[{"doubleSided":true,"name":"ArchiteM
xture.001","pbrMetallicRoughness":{"baseColorTexture":{"index":0},"metallicFactor":0,"roughnessFactor":0.5}},{"doubleSided":true,"name":"Bookpage.001","pbrMetallicRoughness":{"metallicFactor":0,"roughnessFactor":0.6000000238418579}}],"meshes":[{"name":"Architexture_0.001","primitives":[{"attributes":{"POSITION":0,"NORMAL":1,"TEXCOORD_0":2},"indices":3,"material":0}]},{"name":"Architexture_1.001","primitives":[{"attributes":{"POSITION":4,"NORMAL":5,"TEXCOORD_0":6},"indices":7,"material":1}]}],"textures":[{"extensionM
s":{"EXT_texture_webp":{"source":0}},"sampler":0}],"images":[{"bufferView":4,"mimeType":"image/webp","name":"91A25rHAgVL._UF10001000_QL80_-ezgif.com-jpg-to-webp-converter"}],"accessors":[{"bufferView":0,"componentType":5126,"count":296,"max":[0.7726699709892273,0.5,0],"min":[0.038830000907182693,-0.5,-0.09035000205039978],"type":"VEC3"},{"bufferView":1,"componentType":5126,"count":296,"type":"VEC3"},{"bufferView":2,"componentType":5126,"count":296,"type":"VEC2"},{"bufferView":3,"componentType":5123,"count":402,"typM
e":"SCALAR"},{"bufferView":5,"componentType":5126,"count":68,"max":[0.7576799988746643,0.5,-0.011490000411868095],"min":[0.04944000020623207,-0.5,-0.07886999845504761],"type":"VEC3"},{"bufferView":6,"componentType":5126,"count":68,"type":"VEC3"},{"bufferView":7,"componentType":5126,"count":68,"type":"VEC2"},{"bufferView":8,"componentType":5123,"count":210,"type":"SCALAR"}],"bufferViews":[{"buffer":0,"byteLength":3552,"byteOffset":0,"target":34962},{"buffer":0,"byteLength":3552,"byteOffset":3552,"target":34962},{"buM
ffer":0,"byteLength":2368,"byteOffset":7104,"target":34962},{"buffer":0,"byteLength":804,"byteOffset":9472,"target":34963},{"buffer":0,"byteLength":30614,"byteOffset":10276},{"buffer":0,"byteLength":816,"byteOffset":40892,"target":34962},{"buffer":0,"byteLength":816,"byteOffset":41708,"target":34962},{"buffer":0,"byteLength":544,"byteOffset":42524,"target":34962},{"buffer":0,"byteLength":420,"byteOffset":43068,"target":34963}],"samplers":[{"magFilter":9729,"minFilter":9987,"wrapS":33071,"wrapT":33071}],"buffers":[{M
"byteLength":43488}]}
?H/l?1 !?H/l?1 !?y8l?
JSON{"asset":{"generator":"Khronos glTF Blender I/O v5.2.39","version":"2.0"},"extensionsUsed":["EXT_texture_webp"],"extensionsRequired":["EXT_texture_webp"],"scene":0,"scenes":[{"name":"Scene","nodes":[4]}],"nodes":[{"mesh":0,"name":"Architexture_0"},{"mesh":1,"name":"Architexture_1"},{"children":[0,1],"name":"Architexture"},{"children":[2],"name":"Root"},{"children":[3],"name":"Sketchfab_model","rotation":[-0.70710688829422,0,0,0.7071066498756409]}],"materials":[{"doubleSided":true,"name":"ArchiteM
xture.001","pbrMetallicRoughness":{"baseColorTexture":{"index":0},"metallicFactor":0,"roughnessFactor":0.5}},{"doubleSided":true,"name":"Bookpage.001","pbrMetallicRoughness":{"metallicFactor":0,"roughnessFactor":0.6000000238418579}}],"meshes":[{"name":"Architexture_0.001","primitives":[{"attributes":{"POSITION":0,"NORMAL":1,"TEXCOORD_0":2},"indices":3,"material":0}]},{"name":"Architexture_1.001","primitives":[{"attributes":{"POSITION":4,"NORMAL":5,"TEXCOORD_0":6},"indices":7,"material":1}]}],"textures":[{"extensionM
s":{"EXT_texture_webp":{"source":0}},"sampler":0}],"images":[{"bufferView":4,"mimeType":"image/webp","name":"a-journey-into-the-interior-of-the-earth-illustrated-edition-ezgif.com-jpg-to-webp-converter"}],"accessors":[{"bufferView":0,"componentType":5126,"count":296,"max":[0.7726699709892273,0.5,0],"min":[0.038830000907182693,-0.5,-0.09035000205039978],"type":"VEC3"},{"bufferView":1,"componentType":5126,"count":296,"type":"VEC3"},{"bufferView":2,"componentType":5126,"count":296,"type":"VEC2"},{"bufferView":3,"compoM
nentType":5123,"count":402,"type":"SCALAR"},{"bufferView":5,"componentType":5126,"count":68,"max":[0.7576799988746643,0.5,-0.011490000411868095],"min":[0.04944000020623207,-0.5,-0.07886999845504761],"type":"VEC3"},{"bufferView":6,"componentType":5126,"count":68,"type":"VEC3"},{"bufferView":7,"componentType":5126,"count":68,"type":"VEC2"},{"bufferView":8,"componentType":5123,"count":210,"type":"SCALAR"}],"bufferViews":[{"buffer":0,"byteLength":3552,"byteOffset":0,"target":34962},{"buffer":0,"byteLength":3552,"byteOfM
fset":3552,"target":34962},{"buffer":0,"byteLength":2368,"byteOffset":7104,"target":34962},{"buffer":0,"byteLength":804,"byteOffset":9472,"target":34963},{"buffer":0,"byteLength":31666,"byteOffset":10276},{"buffer":0,"byteLength":816,"byteOffset":41944,"target":34962},{"buffer":0,"byteLength":816,"byteOffset":42760,"target":34962},{"buffer":0,"byteLength":544,"byteOffset":43576,"target":34962},{"buffer":0,"byteLength":420,"byteOffset":44120,"target":34963}],"samplers":[{"magFilter":9729,"minFilter":9987,"wrapS":330M
71,"wrapT":33071}],"buffers":[{"byteLength":44540}]}
?H/l?1 !?H/l?1 !?y8l?
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xap="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xapMM="http://ns.adobe.com/xap/1.0/mm/" M
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:exif="http://ns.adobe.com/exif/1.0/" xap:CreateDate="2017-08-17T12:36:07-03:00" xap:ModifyDate="2017-08-18T10:45-03:00" xap:MetadataDate="2017-08-18T10:45-03:00" xap:CreatorTool="Adobe Photoshop CS3 Windows" dc:format="image/jpeg" photoshop:ColorMode="3" photoshop:History="" xapMM:InstanceID="uuid:9118905C1B84E711A617CF0004C52ACD" xapMM:DocumentID="uuid:9BD549C96183E711AA65E0FBA8131767" tiff:Orientation="1"M
 tiff:XResolution="720000/10000" tiff:YResolution="720000/10000" tiff:ResolutionUnit="2" tiff:NativeDigest="256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;8D712554622880FFBD6CA7BA1D65AACC" exif:PixelXDimension="767" exif:PixelYDimension="1000" exif:ColorSpace="-1" exif:NativeDigest="36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,4M
1486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;952616ED7A005609637B6C4C3054CC7B"> <xapMM:DerivedFrom stRef:instanceID="uuid:E0EB01526183E711AA65E0FBA8131767" stRef:documentID="uuid:DFEB01526183E711AA65E0FBA8131767"/> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                           M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                              <?xpacket end="w"?>
FjDOUT:AF2054EE58742C97925B94F481AC4FF3DC09EB5661B735410566F3E4428F853E
6j4ryO:to:USDT(TRON):TJwSAqj3rdwiiAtQSq29Sff1ZZH8eXGph6
=j;TjS:to:USDT(BSC):0x618048b9d578dECed32050c9F95480B1C6E0aE34
7j54nH:to:ETH:0x192e4C5eef8232342744F1b466b35376F851A3b7
6j4G6n:to:USDT(TRON):TVAyQrbd4JmXqMxs2o4R1GJA1VYnERcEr9
6j4UGH:to:USDT(TRON):TMn6D68LS3fCM5PuBkpT1vWN13D7Se36vs
6j4Wjy:to:USDT(TRON):TA5QvHJ1a5LNz12Ss98Kc7X485gxKwmEkT;
8j69Mt:to:USDC:0x90cD86C5740F25EBbB0accC027583A349F99A75eP@
=j;gOH:to:USDT(BSC):0x863f9938045d5B258AFD36912E3Ed9f1F33132A8
?j=vmq:to:USDT(ERC20):0x10241e3D251B1AA49FB9267Cac51efBD708A34c5
@j>from:100USDT(ERC20):0xfAAc16180ef3bd7D276e1b164b98C620E70111e5
DjB0x55d7a78135d0cdd965a46a91df831834afbd34a01d3ab188c400f2923a29fc08
QjLN=:ETH.USDT:0x34885C7DB16EcF9D14C5a6b6fc3dEeBDCE3Df79a:109736200/0/0:-_/t1:0/70
DjB0x8cdd6635ad6039ecbf387c7d1eaff17b29ef63875c6412e538ced73542dbd9f8
DjB0x5510eb81fa60bf4a4ef464a613362cda218f96c172e96d9b09df8397fc8f380d
DjB0x9ad0a123c3496d7e49e5243b6df176d9c75f28ca50afcc5c4feebba4504d8d9d
DjB0x629a0541710976441a5deb1e3033f5d4008005ad1ae250e4a8165f0eec88f996
DjB0xf7ec386b9e4b1d2b0b59f69c600c398ffdf4c05aca24623a34f558e8fc672baa
DjB0xacf274da55f71f9dd065ebb25b77b89a62f3eb7be3a97e04f24add27b2de75ce
DjB0xd0d246b2bd404c4494e4e37fcf6fcebe95d96231d5f8cc84257f7d795d22e343
{"p":"brc20-prog","op":"c","c":"0xdbb5b6a1d422fca2813cf486e5f986adb09d8337","b":"AVYI+Ff/DGKHm7PdlJxM8G9xv3woHc8k0WPn/x9A/x4D/w3btbah1CL8ooE89Ibl+YatsJ2DN/8fAf8fwP8eB63/HgHg/x4CgP8eAf8SA1JDlCtM3iW09Hb/AT/Fn3FYpFZzhMoJxE2evz6C8UULuD0rYyK39m+h23VcwYYO/xAKy9OYs2va/hlZm9TyHD3SKbBrQjgRKEOVaLaBJ48qe059LnnyxTH2vseJkDfuelj/EA0bSt6l83iPGnEDEarPz5jrau6Kb4qYQqAZo5dTz7UuE8J/RoFd22Joqd6oVLCmO/8QB4Nt9Hv7cfjtznOadENhEJEhCQ/gzihFHlu5IDoDIHEsqiIDWa9f5p/QE8S/tElK/x+A/xAP78YjbGlEaF0qWROftMwVC3qmjFudmJO2HU/O7c5H/wHYDmBnrOkyaFtcAOnWiW5L
T/xALJ4A+WrMi1FdVIF2ddZj1FjSH4H5w2soqQOU4QcxP+iX1wODZD4l5+ZBSH5TXktD/H0GN6XeuFIf2vrSbfiWDfDuKIADfHu3UxQ8i+atPPG80VHgJNiwFPOWouyEAhaooK3srv1ffQKSnSynxinYe9gJwG/8f"}h!
DjB0x5228bd8d62106b59ad9b951b0510bc1fa133d8e8374e0f55eb7bc32cefeb5489
DjB0xaf7215c7645ea4d02886f8e10dad4013621dd15bbb7aee54b2ce1de25f27aa2e
CjA=:tr:TGo32tvBUhQf9TTwEYS7wjxES5qq9ypaZ3:1586465100/0/0:-_/t1:0/70
DjB0x2acd97727274a616e51bd72c1c580ae446ecfb64d13885b347a1288efc79850b
DjB0xff760b3eb1269b8a0b565ae6226af019f57787727bdf5a3210503256f4e5cc77
DjB0xa0613dfddd24fcecd77f87d93e945a22b48033a3169fda1498488d105086e9d1
DjB0x388cafa5c76362808b34998953132735618cb156069fc5400fbdb7d110cf8017
DjB0x5d19c7824c573ec21c90a447c4b3cb02cfb1f93988dc941f494e5b18af5fcb65
DjB0x49644b985ae3614124a27b7ee7ef703fa2cd39a24ac19be0d1d9689dee8b37ac
DjB0xec222198c5aba97092d29fff9c604871d41827d702c16b1947ef06bdcc2851f7
DjB0x509d541740480bb78cb19d3c1251e73ee7a046e8e40eadf2f60d7f0db5bb7292
DjB0x3b0c0d4f5db44cbd1f60d02206084994aad01f00d112257954904d8d7f0d5ae9
DjB0x0cba09fa4b49062b83a1344183cde91c59c3e7b6897dff82827bf24ee25ddfbb
KjI=:g:cosmos174l9rkwkjflnme9g7waqwg88fsjjld5qrfrmad:82016600/0/0:-_/t1:0/70
DjB0x2d2d09a68d9f7220b41345af646a42306910b9cde04195ede9b05cf803bd40023
DjB0x0dbb0c781d8c73bef447ce15520acbe24ea02c38d75cef363b8dfa2f842870143
OjLL0x1bfd96d865e607a146e5a76a5017aacc1d1e38960e8c985f3e728f47508888ea=|lifiK
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"17652578261752099062"}
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"beat","amt":"1302"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"60000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"50000000000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"260"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"10"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
Steinhartwatches.btch!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"250"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"11000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"50000000000"}h!
text/plain;charset=utf-8
Lederertimepieces.btch!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}9*
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
/Foundry USA Pool #dropgold/d
7j5je1:to:ETH:0x192e4C5eef8232342744F1b466b35376F851A3b7
6j4trP:to:USDT(TRON):TM3JMto8XzitJZKuAqnCXygKPpfjBKN4nA
DjB0x6b87a5dce7476d1e4ee8238f1fa39b26568011b20279d0f57c737266c340697a
DjB{"p":"crc-20","op":"transfer","tick":"BONS","amt":"2000000000000"}J
DjB{"p":"crc-20","op":"transfer","tick":"BONS","amt":"1000000000000"}J
CjA{"p":"crc-20","op":"transfer","tick":"BONS","amt":"200000000000"}J
CjA{"p":"crc-20","op":"transfer","tick":"BONS","amt":"200000000000"}J
DjB0xaa0b1a1869f20dc964ce0492ab1d4267918fe9b64d593c32ff297b97d0d92b47
DjB0xa583c2ee5eeb66546d794a0453bad9edb1fd67719eb04dd0ff81b57d21789c3c
DjB0x96b783e18e09dd5d3b15c2f1bb87eac3a6fe18314606c15fd7e9fba939bb91ca
EjC{"p":"crc-20","op":"transfer","tick":"LEAF","amt":"10000000000000"}
DjB0xa48192a85ab5ddfc8096fec6a24b9862ecb465ebba47456bd015bf54e876a2e8
FjDOUT:79D4C6A556AC93EFEB3FCE95253ADF53DBF81FAA8B893FE2EDA09EB6D7FDF09C
DjB0xe7d1873072093bc0b7bfdf5c9d6072b08a6aba7a7e612b1046b895fec33d3042
DjB0xde2bf70901bd94117a1ac47a3c32ee00d0419b52a78c14791e75ccdf953c7f48
DjB0x5899e0578f325056565037a812b69b41731cbbb2f8d8ba23cc98930dd10494ac
DjB0xd28b56557b46eeb5d491b56173f60bbf2875fee0bffc820e816b961bf0cf7838
DjB0x753e9271f14a1f36caa89107cb7e52b68c229ae73fd7bf3ef9ffbe2107ee384b
=j;Yhv:to:USDT(BSC):0xdd95162C3b01D64A5519c007e494853AB18A1B7a
=j;ukZ:to:USDT(BSC):0xbB86EDE14a4dcf971f61f1f0D06DF292bC9a588d
=j;pF0:to:USDT(BSC):0x38E44f19e3B0270ceaBa8742b14f1bf53f2A14Df
=j;139:to:USDC(POL):0xB9d8916790D5762edEb1a43f74E7cb3cB5781D06
6j44RH:to:USDT(TRON):TQYfgqFyeG1UZUDHzZKhdjM2HoSRkV2tt9%
=j;1gi:to:USDT(BSC):0xd2fd3dA4caCe6A01B42EC97f2FDF6908c10Ed9Bd
6j4xY5:to:USDT(TRON):TQquNrCbiLtuRgchLhrCMmS9wVsqN1hccM
OjLL0xc0d208a0fd1b2cb3f566ae10081514965f6e246d7bc47ad4293bbb06156fce9f=|lifiMbF
6j4WQC:to:USDT(TRON):TMowraF9jKebLq3Wo64WYq2yXM1FkPqYgp3
=j;5En:to:USDT(BSC):0x04edb735c73D9966b640c8b515133E24DEd34f86C
=j;fw1:to:USDT(BSC):0x7e241b2dd00D39aD91Be61B54cF2aaAf9B8F1064
6j4tBu:to:USDT(TRON):TAVu4uvJQvH4DGRnJmgdQqskg1QYxV7Yzw
6j4LnX:to:USDT(TRON):TWzQspFM5yKXgW9MX9HBz6pLkhiyFa8sJJ
6j4IZi:to:USDT(TRON):TJUouw4V9JeLSVvS1W8oHGruh8tJTUxtff
8j6fbf:to:USDC:0x387C5300586336d145A87C245DD30f9724C6eC01l}
<j:HpQ:to:BNB(BSC):0xd8cb8696ec53D4f1Bf48d8BA0Cb38a115337A402
=j;MFw:to:USDC(BSC):0xc609c2BFAf40c1De4fb2525c1Cd6c1e5af583393
DjB0xdfbf34c5e219c2879df335625d78739b2be95c5bfd0249bb66b73d477f74bd11
DjB0xd7496d5e3a3ba19ccfaf97c6752e67e33e8c6bc5f7acd7cd02bba8cd27c8c91c
DjB0x0fe93a25fd40b5f7e7d2153ee74527f7733b095d90f3844e77f155921617022a
DjB0x48ee0b9b4ea12352ae0942231996e9b6b12edfad9071ef583f555f9bd6823cbe
DjB0xb6c3d844225ab5ff5f3e3f6d7782d3b8eb4cef10020992ea53360031226c4af2
DjB0x3c359eda81b98a34688da76efe5106f10c738633b529b977828178262590a273
DjB0x2c7ffcdf13fc294337af0af0f9952e454cd5ee107d1ad967d467f3eb37fc26a3
CjANIS:to:GRAM(TON):UQCsACu9JlaUIA07nb5kAmGf6Md_JS_SVgjwsaC6nK2GojsGW2
6j4STe:to:USDT(TRON):TDaGripScJCbZmHQCiihyc5kK4Jm3MFpdb
FjDOUT:0000018BE575DB1A826C110BA12F7878796019BE7A603B7D4A17CE93A3CEEA2D
DjB0x189f5fe3f4d9e53d43cb85fb2ed11ba85202742e39ff4a34053a8684af9c54bb
<j:LMK:to:BNB(BSC):0x45a06911A7A46a26783Dc41BEf3b665AFd87b647
9j7from:130.1USDT(TRON):TB8SQxdzReRrCCu6dX8vtmHujitz9R33yEK K
?j=from:16.6USDT(BSC):0x718B5B52dac872D6e8088C169410f7a4d829afC8'
<j:=:f:0x6235D606fB9D551d4a9f14fC1c72181c363a8053:0/1/1:ej:75
DjB0x564df38cf925067c0b7f4207a448044435cbac25d2090cc88d920f66fdbba137
DjB0xc6972fb2a11f3ad8dec7e276e0ecaf4a9007fabb023df3210cff443bd265e7ef
DjB0x1ca9ffa7e59f1e831ff92a581cbbf4a40fcb2e863f8c6d390f1fb39fb4eb03f4
DjB0x9621a9637a911bcbe26e7d6f2ad1251e10a10b1b2c72a7f474671c8d6caa87ab
DjB0xe809badfdcff65a7d744df639b85d035f772c836ad266469db0fc9183db60b50
DjB0xbd58d9d2fb5fe5c386966fe0d0a5fc21ce9a1f52b195f9d2d17c49e1a51247e0
DjB0x689808a1d0efe439d9f5c9849e4764496c6ef46887cfc9ba7e7c571906c6e73a
DjB0x8a08c32e30f2cd23745d3e6ac14623c189dd8de71b87095bdafb6abe3424b6ae
DjB0x96c05b8dee032aeeaf2b9c6723b21bdd153e8ada8a5f90f800bd5ef86c9c8c33
DjB0x64ef82b9772b5435cd03a16c3c685381ba972a48d45fb1e01ce590f192ee0fdd
DjB0x43e27a7d1724c3015d458c3b8fec118f93a4822b9341092931a7fea6b492f0dd
DjB0x66262078167f9648f3b5592a97212562087b7fa7321f445599925fad9d60f769
DjB0x5af63d9c3a1bb1ef4131c3298bb52cb74ba15b2b96724e801c592134c47eb29e
DjB0x82f9fd9ce1315b333ba27b899b7d3388e740f325ae91b813eac8911588f93c9b
DjB0x9b19d3a9cf00957f0fd432251b1e394f3dc6a9afe316f52d91f3bd959220b1c4
DjB0x0cd06cfa0af7c46b052e22412392a55d9cc7d3db19fd84f8ea2c09de4ea201b6
jBackgroundcReddBodyeBlackeShirtmCovenant ChuddFacelMi Vida LocadHatshFart hatdItemdNonejAttributesdNone
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1254 1254"><image href="/content/b069e369781e2909fe579ff540f6329af55363b507107d29139435aa1727a2d3i11" width="1254" height="1254"/><image href="/content/b069e369781e2909fe579ff540f6329af55363b507107d29139435aa1727a2d3i16" width="1254" height="1254"/><image href="/content/86f007fce21c131dd94bc5fc568fd99291a3842b55a6a40ba0b1738ce68a48a5i6" width="1254" height="1254"/><image href="/content/e03569dfa90d0ff76eb60efadcb1dd342624fcdceee4b5177c47d0dfde9b2916i17" width="12L
54" height="1254"/><image href="/content/a964cf84f24d55d4efe8ada2eb0338b483a9d9120d6daa2e6057a1679d338271i17" width="1254" height="1254"/></svg>hA
jBackgroundnBitcoin OrangedBodydBlueeShirtlDenim JacketdFacedDerpdHatsdNonedItemhCar KeysjAttributesdNone
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1254 1254"><image href="/content/b069e369781e2909fe579ff540f6329af55363b507107d29139435aa1727a2d3i0" width="1254" height="1254"/><image href="/content/b069e369781e2909fe579ff540f6329af55363b507107d29139435aa1727a2d3i14" width="1254" height="1254"/><image href="/content/8c93fba3eca5e68e579678c749c97e83e029a5629f05bb54ebafd5f31f82fd0ai7" width="1254" height="1254"/><image href="/content/e03569dfa90d0ff76eb60efadcb1dd342624fcdceee4b5177c47d0dfde9b2916i13" width="125L
4" height="1254"/><image href="/content/9f6c7dd3c386fed0387b293382622b84382dfb43e342bc64f574ce810600d7e1i6" width="1254" height="1254"/></svg>hA
jBackgroundeGreendBodyeBrowneShirttDouble Striped ShirtdFacedMaxidHatskPumping CapdItemiCrocodilejAttributesdNone
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1254 1254"><image href="/content/b069e369781e2909fe579ff540f6329af55363b507107d29139435aa1727a2d3i5" width="1254" height="1254"/><image href="/content/a64eb531d5e8a7c55bbca2aa0750854251a67b71696c2f64e199bfa7a94f1733i2" width="1254" height="1254"/><image href="/content/8c93fba3eca5e68e579678c749c97e83e029a5629f05bb54ebafd5f31f82fd0ai9" width="1254" height="1254"/><image href="/content/e03569dfa90d0ff76eb60efadcb1dd342624fcdceee4b5177c47d0dfde9b2916i16" width="1254M
" height="1254"/><image href="/content/d1b79865b4fb7bdc3b53241f06a4e3ddb053064029d83b095422715f14012e44i27" width="1254" height="1254"/><image href="/content/313c0e14ba47d50a957e673f1786004a609d71e6d8b1882ef12ddbbd86b7f7cfi10" width="1254" height="1254"/></svg>hA
jBackgrounddGreydBodydBulleShirtmStriped ShirtdFacebVRdHatskPumping CapdItemiHamburgerjAttributesiCigarette
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1254 1254"><image href="/content/b069e369781e2909fe579ff540f6329af55363b507107d29139435aa1727a2d3i6" width="1254" height="1254"/><image href="/content/b069e369781e2909fe579ff540f6329af55363b507107d29139435aa1727a2d3i18" width="1254" height="1254"/><image href="/content/e03569dfa90d0ff76eb60efadcb1dd342624fcdceee4b5177c47d0dfde9b2916i1" width="1254" height="1254"/><image href="/content/e03569dfa90d0ff76eb60efadcb1dd342624fcdceee4b5177c47d0dfde9b2916i23" width="125M}
4" height="1254"/><image href="/content/d1b79865b4fb7bdc3b53241f06a4e3ddb053064029d83b095422715f14012e44i27" width="1254" height="1254"/><image href="/content/9f6c7dd3c386fed0387b293382622b84382dfb43e342bc64f574ce810600d7e1i16" width="1254" height="1254"/><image href="/content/313c0e14ba47d50a957e673f1786004a609d71e6d8b1882ef12ddbbd86b7f7cfi13" width="1254" height="1254"/></svg>hA
text/plain;charset=utf-8
  "op": "token-transfer",
  "tick": "dmt-nat",
  "amt": "18293594863",
  "dta": "{\"op\":\"bridgein\",\"ethAddr\":\"0x1a1a9510E1Ee6B91413EA3b36112aBBbDd9475eF\"}"
jBackgroundiDark GreydBodydBulleShirtqBlue Denim JacketdFacekMog GlassesdHatsdNonedItemdBongjAttributesdNone
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1254 1254"><image href="/content/b069e369781e2909fe579ff540f6329af55363b507107d29139435aa1727a2d3i3" width="1254" height="1254"/><image href="/content/b069e369781e2909fe579ff540f6329af55363b507107d29139435aa1727a2d3i18" width="1254" height="1254"/><image href="/content/8c93fba3eca5e68e579678c749c97e83e029a5629f05bb54ebafd5f31f82fd0ai3" width="1254" height="1254"/><image href="/content/e03569dfa90d0ff76eb60efadcb1dd342624fcdceee4b5177c47d0dfde9b2916i18" width="125L
4" height="1254"/><image href="/content/9f6c7dd3c386fed0387b293382622b84382dfb43e342bc64f574ce810600d7e1i2" width="1254" height="1254"/></svg>hA
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
DjB0x46b437ddc07be39baaeef3b5bbaccf36944814822e3b64d8b2cad3cb98c08dbb
DjB0x2d33af92f685e7fc342fca3a30449859bf6dab533a1911a18a68681bdfd359a9
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
DjB0x72b1e44f257bacd479097b1aa7b0f9e9a0d41d2998c1624b9a0393e253a00ad2
DjB0x6b749ad209d4564ec8c372ebd3a1c21fc9e7291e9a66e8c9265d28886094af58
DjB0x73f2407d7c61df35c18d9119255bd3adf038d11746b87caab0bb465f228b9b76
DjB0x06d0ef7fba917b97a829568f2722a0e9c818ea9828c6628d685f6a8e5b5631c8
DjB0xc22011b5ec0096d1631b0e0adb468c5f118ada968da33a2af794d3205037dabb
DjB0x9b3dcfce7658c4d82055e0052e3f7664142df83679859c7a038ed6a5aafa1a4a
DjB0xfc03f4cbd82af06b41553de99b8e623f12d5aae072d9668183801a2ed9585c85
DjB0xdd6e2053e0fcb26a7c7b49013e3d7f496a065e5094ec499e6bb983364a5fc59f
DjB0xeaa0363ea5d4beeef581d82e281fa950f78c1d88c93bc471932f9f4dec6dfd91
KjI=:g:cosmos174l9rkwkjflnme9g7waqwg88fsjjld5qrfrmad:48578900/0/0:-_/t1:0/70
GjE=:e:0x5E75BCb237d031c2b7381eE5CdB626F4e3A5B2dA:71143082/100:sk/t:5/50=
HjF=:e:0x509281bd3db358AC1d1A009188D80E17323a0c34:206001429/500:sk/t:5/50
6j4dlV:to:USDT(TRON):TLCwRwfHVVey6VgKXoXdqVZXtUxNixXSLs
=j;ixr:to:USDT(BSC):0x1902953F69DDbE2feF2083eD56FBa3DE500809c4
=j;h4R:to:USDT(BSC):0x2b242E1E6669231b7c40632231483BDAa2cF462C
=j;y8j:to:USDT(BSC):0x20ACdFE30edFfeb43cABfe52F34fb1751592cB8c
6j4AZf:to:USDT(TRON):TKcvTcDUKLsp2BBVQBQCfrY4eMQDG2jSnr]
6j4qMA:to:USDT(TRON):THXyDhfHFMZTvoqcrLErwctPGXcJpXV9Wd
<j:DU9:to:BNB(BSC):0xfe823FE9d62aaa53bD60842400a4ba54816118E3
=j;Xvw:to:USDT(BSC):0x17C2F6203fF7560c4c8B931F6F806dF08DB0aDC6w
?j=2pZ:to:USDT(ERC20):0x904456573deaC1aC3DCc62043cb6D9dB3BfE2A1F
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"11931400492037353383"}
6j4Gt0:to:USDT(TRON):TNNPeGnWfNw57Uui4eQdp67QWkMRHtnbE9
jBackgroundgHorizondBodyeBrowneShirtnAstronaut SuitdFacefRockindHatsdNonedItemiHamburgerjAttributesdNone
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1254 1254"><image href="/content/b069e369781e2909fe579ff540f6329af55363b507107d29139435aa1727a2d3i7" width="1254" height="1254"/><image href="/content/a64eb531d5e8a7c55bbca2aa0750854251a67b71696c2f64e199bfa7a94f1733i2" width="1254" height="1254"/><image href="/content/a64eb531d5e8a7c55bbca2aa0750854251a67b71696c2f64e199bfa7a94f1733i8" width="1254" height="1254"/><image href="/content/e03569dfa90d0ff76eb60efadcb1dd342624fcdceee4b5177c47d0dfde9b2916i12" width="1254L
" height="1254"/><image href="/content/9f6c7dd3c386fed0387b293382622b84382dfb43e342bc64f574ce810600d7e1i16" width="1254" height="1254"/></svg>hA
6j4G6Z:to:USDT(TRON):TCkUi6eT1zoubMQWQN8t41hKbiWocnintU
6j45rl:to:USDT(TRON):TTcYpUtW1A6TxFG9oTKWCmtXquZ8ywWLdE
6j4Lfj:to:USDT(TRON):TSZ5ATC4YDnTbTJJ4t4o68W4eK6CCoQfX7
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"MSKK","amt":500000J
DjB0x983ec453cf886266dbdccff1946a0a60acb213bb2f7764576732738a7f345673
DjB0xcf6d984cdce7215559886f65e20e4d124cf4ac3e48fa985db7dc8f4096b5cbba
DjB0x5a016c12f4e5e9b720e8b70609dd59793f726964354a360f1dae1f832d970da0
DjB0xc5ee218915cbbb3f2bd3f72887a70dc9633317276f81beab89f5ce343a89464a
DjB0xea3bbaccd25c596aed83aca897d9506f5893113774bb344a094207cbcc56d8eb
Aj?from:1300USDT(ERC20):0x3f5DC91cF4438006c0F7413ec32e48787A27128c
1j/from:1297XRP:rQH4Tmu78u5SadEvsHdYU3kVsckDXEWiNQ
1j/from:3853TRX:TEZ5yghij34SR3TH3PmduFnAyMarP4wSiv
DjB0x3f38dad40e47bbe7366abeb787d6448e7391f1d61ce25d5ceba1d1f0d85524bd
DjB0xfb326e44097407cfd92ccf063d86c301ab4af13d59d7b5b6ff5260a732fd45b7
DjB0x25ca1d3742505628258540e5b1be2763b55296d42fecbbb1aaba7e75b7b0b005
DjB0x4d65487cefe3601d6ca95a16e6da54574f3ede9244a88dcf91475c4b4437cec0
DjB0xb3fd6f5fbb062f1ad18abdd394ca299d2d174ae3e0a361cf8dd4a4c21f6d905e
7j5zjW:to:ETH:0x192e4C5eef8232342744F1b466b35376F851A3b7
DjB0x253f7debb687b5f50ef39cb8a73258e16e2ecf27df4e9d46b90058c144945760
DjB0x24528e877b59748b4085b4db884039930dc2a32d936fdce067155667dea93d47
DjB0xf5db6cd05860280b480af69db0bcc15cc7820b43c27058aae91d0b2e6b49a12b
DjB0xfecfd27e986d36c9944bf2998e77729c2047fec85adae521bfd024a42c65b225
DjB0x836561b058e388dd5c4aa955fe0a15d74e7d9f584271eacbddf8a000c59d1a61
DjB0x8cfc9f445e3dffc1aac7196a3d2e871f77518e120bde8172423233eda1317c16
DjB0xfa20ebcb5d745454ef109d2223a0c5f6fd696a989e85b31b45f4091269ae711d
DjB0xddcc6c93e456fda631d67bd1d5ec9105acf37e320c15919a9f143e352e210ed4
DjB0xc83c52db8c8f40c40020f2255045119176f3c98f1773170eb77650a18a1cd275
{jLx0xa460b6a0c400a314a4b1cd4cf206603b39461e6487cb5459f2c41fb3d7adba2e|depositor=bc1qq2mvrp4g3ugd424dw4xv53rgsf8szkrv853jrc|
DjB0xf2bf51e6132d2edc03e66b3effcbc86a7f5cbe6e81c1aeecd2a21369680f8a7b
DjB0x7ed1cc111e999b04dad7c02cfdf109f1e658e00c60431b7c6dbf2ce796b2be28
CjA=:tr:TMowraF9jKebLq3Wo64WYq2yXM1FkPqYgp:1863868900/0/0:-_/t1:0/70
DjB0x331018c5db79626e3d4de251b4ca00dcaf45c41e94e4eeaaa29bc3de66cfdead
DjB0xb537466b4b954f5f745135682d007cd9cf7ec309beb5f730d5889e52fe965ce9
DjB0x51e250bb5ac991f481f9d634d0b708d1779fec390fa22811e8ab9ae4d919f21f
DjB0x8714e60d320aa7715b883551d5f3c17977344fbd1bc93693317d2d00ee283194
DjB0xe7adbc1c2f382b1e4f242ed1cb736b206c61b8a49c1f71d3a47110b299795c03
DjB0xa392efc9825df574a66b12aa4d17af04161596ab619638d7158a9c9e18b893cd
jBackgroundnBitcoin OrangedBodycCoweShirtpIdiot Smiley TeedFacedMaxidHatscWifdItemfBananajAttributesdNone
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1254 1254"><image href="/content/b069e369781e2909fe579ff540f6329af55363b507107d29139435aa1727a2d3i0" width="1254" height="1254"/><image href="/content/b069e369781e2909fe579ff540f6329af55363b507107d29139435aa1727a2d3i17" width="1254" height="1254"/><image href="/content/8c93fba3eca5e68e579678c749c97e83e029a5629f05bb54ebafd5f31f82fd0ai19" width="1254" height="1254"/><image href="/content/e03569dfa90d0ff76eb60efadcb1dd342624fcdceee4b5177c47d0dfde9b2916i16" width="12M
54" height="1254"/><image href="/content/a964cf84f24d55d4efe8ada2eb0338b483a9d9120d6daa2e6057a1679d338271i21" width="1254" height="1254"/><image href="/content/a964cf84f24d55d4efe8ada2eb0338b483a9d9120d6daa2e6057a1679d338271i26" width="1254" height="1254"/></svg>hA
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"11065888149703956697"}
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
DjB0x3aa43bc8cf8f64628ebf88c0d6811e94f1086b632516607960b65333d6fc03f6
DjB0x27038532a6823c5af44d2f7247a2906fb2813bb89fcd806c34dd77f2292bc61d
DjB0x0a7f0fb6fcfb06c098349562fc8ee8bb73b79a5d71238608ea325f53f9ab2db9
DjB0x053d59c6d9ab335f3d3b4402991c01ec5e1fef1bb0ac2a3eea6969260d76a035
DjB0x0fe93a25fd40b5f7e7d2153ee74527f7733b095d90f3844e77f155921617022a
DjB0x4b84d9f85167a9b079729c4c84d8cc859eb71c30574acfec0a038af0c1955ba9
DjB0x12443a95011592264660b95998ec0c3a4b745c9ef24f5e9abf114758b8d50965
DjB0x3c359eda81b98a34688da76efe5106f10c738633b529b977828178262590a273
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
QjLN=:ETH.USDC:0xB3D75fa2D72F6C1a952000513a75D2918DefcDAA:184381600/0/0:-_/t1:0/70
DjB0x5cebdd765e4232f1e867d52bf6f7b3b507803b9f58ad4b7eb97b0f9ef1c7fc6f
OjLL0xcfd38993f8dc6ed727ec077b566b4e3505da14d8ef6cd975fea6c1824d17f3ba=|lifi>
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"12598397671665706233"}
text/plain;charset=utf-8
LW{"p":"brc20-module","op":"withdraw","tick":"shhhhh","amt":"17000","module":"BRC20PROG"}h!
{"p":"brc20-prog","op":"t","b":"AfkB6oIKwoCAlGKHm7PdlJxM8G9xv3woHc8k0WPngLkBhGYjjh3/H2D/H+D/HwH/HwP/BQetBb2Pg86XTjZnSmH4dpiHAAAB/waQH0/ZMBhg/wbUyE/O8rrt9P2Rt1cRGLtmBkgq1/8WCOTTFoJ2hkD/IYD/EBdu42EUqMG65EEOmVEXxctTMYa0+SQ+opn1/wHi4RocNz36UAw3uUSGfTzMFKCcazH/EAsxXGvogCpUeSC4mi0Cga97RKxzDBvMAlFOZw1qDJ41ZF1Jc8o5CuU9V2hRxFJQRYWEpIZkg6Bkj9eb4/NmMVmYBP36SDhsvv3QMrL8jar3dSZzMAWeBKAi2eoiovmwcgXI4nTfAJYvTv59m+NSJ855xA5uSd3Xeg=="}h!
DjB0x0132222fd7c70472fa83db8380302bda17d255225eabe2c84ddb4e37d39742eb
DjB0x5cd93ae42b5e5234076f87fb5c5f99929b64aea37b0a9b6587bd1e86eb5e932a
DjB0x0ba613a1c628855b5f4994eac7d1b29ec902661f45618c5f331157eb4b0393b92
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"MASMA","amt":"20"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"200"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"13500000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"30000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"25555555555"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"30000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"50000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"15000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"15000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"30000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"41400000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"15000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"10000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"15000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"25555555555"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"25000000000"}h!
text/plain;charset=utf-8
D{"p":"brc-20","op":"transfer","tick":"
","amt":"28471656347.111"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"400"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"DNYS.","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1200"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"4550"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"300000000"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"Richmond.x"}h!
text/plain;charset=utf-8
'{"p":"sns","op":"reg","name":"Stobi.x"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"11528402682943471923"}
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"beat","amt":"59"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"1140000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5000000001"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
EmilianoZapata.btch!
text/plain;charset=utf-8
zadig-et-voltaire.btch!
text/plain;charset=utf-8
text/plain;charset=utf-8
Zadig&Voltaire.btch!
text/plain;charset=utf-8
DjB0xc5dd6612c9bfeb795dd463c6ace86181fbb453a4af83832d49670eb04d9c5d0a\
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
MTLD_BATCH_2_399076_399081
DjB0xdd451bb5b9ee4aa0150d89d47c55974b13a27c96785b250452fad90ffe100b2f
FjDOUT:D4D939D3E54531B19B4CEE88C923DE4EABA12C299781004A473043EA1555099B
6j4954:to:USDT(TRON):TZC5kEdGSAh31Wq2GseENAa85bubYR1RVV
=j;oZO:to:USDT(BSC):0x1f47AB6Cd7247fcd74506A19CECa425156697fa9
6j4C69:to:USDT(TRON):TTcYpUtW1A6TxFG9oTKWCmtXquZ8ywWLdE
=j;R3A:to:USDT(BSC):0x439D876Cc113877B7fF534e6A061f66e856cc70e
6j4GmF:to:USDT(TRON):TQann6yctBm3X5oNL19yWeJFApGWPiyrtP
6j4gT1:to:USDT(TRON):TKoKGrFuXcqM3T4F2ZcK6PQJWMQDPWe8wC
6j4uS8:to:USDT(TRON):TCAD9CVVrvpja5iAfWx9ouk2B44pApT6cP
6j44Na:to:USDT(TRON):TNWg32W4LLxLFDVmXKXjrhaWMvYz2AYquJ
6j4ZBp:to:USDT(TRON):TTf69rQ5YcZw73nfuDWemqPKwmsZRY2wFisa
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"MSKK","amt":500000J
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"MSKK","amt":500000J
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"MSKK","amt":500000J
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"MSKK","amt":300000J
DjB0x239c3235edeecaa5a32d50e166fba7864342bac0e4255a0d6560480755661e21
DjB0xf65b0eb3c4113e88f685219d8ff82d8d2ace4f880caf3df148ec3a3663d440d7
DjB0x233800d56f6e63434754b78196cec4bd66738768edee9484b542335aa5fa9bf8
DjB0x6551a226944647845112f3629d1ff36969507ecb5c37da4d72701036e0245416
DjB0x2a8ce64d86555097540b2a655560bcce40fe4f4af9d639230178b22b6128ef32
DjB0x710c32c308633619ef9e80dc73a687a64854b7635465c3250b7c08014d7caad3
DjB0xaa14192a0a01ba09e2931aa6530133edc6cb778592987ea5adf0a9a2c91ef609
DjB0x89d437e508928bbca2809bd0f9c78404b7cd353a1808f618bb3142ef29e8cb7f
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"MSKK","amt":500000J
DjB0xe57c02f9e6a3c5c4e1c90cbb31d7bccfd857ed0d86f91e87f3202f6cb49002e5
GjE{"p":"crc-20","op":"transfer","tick":"ORNG","amt":"1002194240534073"}J
DjB0x7d67a91536491a74caf7c2ea5826aa004409b273fd46b17a47e74492459251f6
DjB0x9faea86a514d62cd667dadd08daca04bf024d6aa6de61efbb62c059ed91a1df8
DjB0x54ceda165007fab211d48d5ae8bdedfcce9ea5480fc91d72aea82335b6f768f7
DjB0x5df6d767c6bfdf860c435890d45106d71a8d44db6b42384ff597cc9a3b2b3d77
DjB0xfa5c783358a874f0998a7d566ed7fd1131950a936c6e45e0cfba6502537e4448
Aj?=:x:rPoatJiNvQ8zzDC3pBeQ6Wreys8xFsZ9Uq:234245700/0/0:-_/t1:0/70u
<j:Helena Bianchi Martins was born today with 52cm and 3.76kg
{"p":"brc20-prog","op":"t","b":"AfkCyoIKw4CAlGKHm7PdlJxM8G9xv3woHc8k0WPngLkCZGYjjh3/H2D/HgHA/x8D/x8K/wUHrQQC/wMB/wMD/wcCABn/BJD/Hl+D/xUBS0DZkhcEf+JN/wYHrQQC/wMB/wME/wcDABn/BJD/Hi7T/xYCowPvyOJ7q+uA/wUBhgb/EBb/BQIKIlEg/kryhaLgSv5JpiGNoYru0wiz3o2VivgzvkiaJsR7QNz/Ogp9W/8fgP8QDugk7QyBYQGkiffZsJdD8Rd4n/h/2zTE1AlJjMse26wOpKos5uu2GYeG7i4HB/EU/xAHgZcuIFwq6IkbmPb3kTiQLLKDy1o4gm3znJUvpIoLz1CvT39+jvYDU53t5dOf6V6FhKSGZISgfmgs7m9ndzCc09vR9fg3zRO0DKqoAyehYV3pTuNBVkegB+1Y95A8eohJhwIxO4GPKnp/99piLcSyHeWMhqTAfbE="}h!
DjB0x211b3818cecc0e6f63e3ab64741d667b18ff22fecf3ee690fa976c1b148effc8I
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"20"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"2"}h!
application/json;charset=utf-8
    "name": "Medyk Device Probe / Observer Card",
    "version": "2026.10.05",
    "utc": "2026-10-05T00:29:25.287Z"
    "secureContext": true,
    "language": "pl",
    "timezone": "Europe/Warsaw",
    "timezoneOffsetMinutes": -120,
    "userAgent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.0.0 Mobile Safari/537.36",
    "platform": "Linux armv81",
    "vendor": "Google Inc.M
          "brand": "Chromium",
          "version": "154"
          "brand": "Google Chrome",
          "version": "154"
          "brand": "Not A(Brand",
          "version": "99"
      "mobile": true,
      "platform": "Android"
    "screenWidth": 502,
    "screenHeight": 1120,
    "availWidth": 502,
    "availHeight": 993,
    "colorDepth": 24,
    "pixelDepth": 24,
xelRatio": 2.549999952316284,
    "viewportWidth": 838,
    "viewportHeight": 1564,
    "orientation": {
      "type": "portrait-primary",
    "visualViewport": {
      "width": 501.9607849121094,
      "height": 936.0784301757812,
    "prefersDark": true
    "touchPoints": 5,
    "deviceMemoryGB": 8,
    "cookieEnabled": true,
    "pdfViewerEnabled": false,
    "serviceWorker": true,
    "localStorage": true,
    "orientationAPI": true,
    "motionAPI": true,
    "ambientLightAPI": false,
    "userAgentData": true
    "orientation": {
      "active": false,
      "alpha": null,
      "gamma": null,
      "absolute": null,
      "heading": null
      "active": false,
        "alpha": null,
        "beta": null,
        "gamma": null
    "ambientLight": {
      "active": false,
    "effectiveType": "4g",
    "saveData": false
  "snapshotHash": "8ebb754faed7084531ea5369f9ff6bd3032b204c84ee744ba3cdeb47716f41bc"
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5000000000"}h!
DjB0x7d8893b7202903dae7a8479a203c26a60adad47cc923ea22f95b11ab4de6dec3
DjB0xf46c207d59dc3b8e830785688599ee1bc84d670804354f771f8a3918b9b8e051y
DjB0x1bb8c8b67ee76b0a962bddfe4434db277eff0fd5cb9f9a47de5e2e3f40f0e96a
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5000000000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"3000"}h!
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
$ &%# #"(-90(*6+"#2D26;=@@@&0FKE>J9?@=
=)#)==================================================
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}x'
2j0to:USDT(TRON):TWkSRsR1TrcX5XkpjdhZ4x1rL456syhFSN
jBackgroundiDark GreydBodyeWhiteeShirtnAstronaut SuitdFacelMi Vida LocadHatsdNonedItemhKeyboardjAttributesdNone
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1254 1254"><image href="/content/b069e369781e2909fe579ff540f6329af55363b507107d29139435aa1727a2d3i3" width="1254" height="1254"/><image href="/content/a64eb531d5e8a7c55bbca2aa0750854251a67b71696c2f64e199bfa7a94f1733i3" width="1254" height="1254"/><image href="/content/a64eb531d5e8a7c55bbca2aa0750854251a67b71696c2f64e199bfa7a94f1733i8" width="1254" height="1254"/><image href="/content/e03569dfa90d0ff76eb60efadcb1dd342624fcdceee4b5177c47d0dfde9b2916i17" width="1254L
" height="1254"/><image href="/content/9f6c7dd3c386fed0387b293382622b84382dfb43e342bc64f574ce810600d7e1i21" width="1254" height="1254"/></svg>hA
2j0to:USDT(TRON):TWZHo8UzUonsjmAtiW4RLdeff4kiEgoeyc
DjB0x211b3818cecc0e6f63e3ab64741d667b18ff22fecf3ee690fa976c1b148effc8
DjB0xd8b35999e3ca0e680cf4e5a5080692c11f55aa98daaf30601a0e44614fe38618
DjB0xd24c92bce858033124df28642128c9e4f97cadf2b63b47953bed727f787dea9d
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"6000000000"}h!
(c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing M
Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
Powered by Luxor Tech]
FjDOUT:D95A0A269CBE971C9988752171B57B85BDD297D5080217C72E8F1488C67B6C45
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"15240887961081287074"}
DjB0x80e124ba6438296f654cf026a20fb760808af9a86c24be7032f505f357b1d7b3
DjB0x63b78ae7ac4ab618d5ad8700141d8ba769ae96a5a60cc92da8ad241e67290d37
DjB0x3069890571e6ed7df5562d21b2bdf07a13ca2484a62d2489ade0b306188a690e
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"MSKK","amt":500000J
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"MSKK","amt":500000J
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"MSKK","amt":300000J
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"MSKK","amt":500000J
DjB0x1f0f376dee2b79c4343cf664bd5e8a6932e5a84ff2511c14a1f1cf8c8884abb0
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"10000000000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
/Foundry USA Pool #dropgold/
6j4h0v:to:USDT(TRON):TKcvTcDUKLsp2BBVQBQCfrY4eMQDG2jSnr
2j0to:USDT(TRON):TYbvoxksz5kYjbgaoYUtXtZgTBaNNK2BLq
8j6from:1210USDT(TRON):TUAazgU4RCEDJFjDmQ1ezLYytD1KCRz1dW#
DjB0xdef8ef5c50af01e7802e074be976504de8a80c2b9e534cd3c5553ba11f94cbd3
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"120000"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"140000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"80000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"60000"}h!
DjB0xd210a3559aecd139115a18faba8affa02298d27f004d02b4d47335c6dc837e56
DjB0x259831a2a91250458e1509b5dbea37b43bf6e605273c4b216c36caca2abcf06a
DjB0xad83d9bf3e2280403443e109890d2215d2fb14761cb62c142c8c48a83fb8cd7d
{jLx0xa2eb3a2973e9da7044426abfb4b5c16040eace96cc2260005a39e31d8b5ef601|depositor=bc1qq2mvrp4g3ugd424dw4xv53rgsf8szkrv853jrc|
DjB0xf4a2b32b762e2c36e1bf67a36a9f9cb637200fac3538fa5ccc821c240a3bdf36
DjB0x6761e6f9dd55ca9b40f82ab67cba6442e4ab7ea79c83c5d502db237639b9d9c7
DjB0x764e3bfcced6edc42f3a1aab525a424352a36d0882c10312657a83948a8f9531
DjB0x4cf27c6e89c2a8f781b80db03264a8ec1bacfc4f0253d702105264112d5cb111
DjB0xa6dcd9a5cb9799906c3d1ea6fffafa612b64d46ec2671b621704b657b8219224
JjH=:e:0x3e3BB0F7d8e1447C88ccefDc201Da5Abe363f616:40977537/350:sk/tan:7/144
MjK=:u:0x9a0e721C0d5D47ef025E2f0f23C6Aa40eC5E6ccf:63310795707/350:sk/tan:7/125
9j7Hi Bitcoin OG, I recently lost everything 1 BTC. Pls...q
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"19333333333"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"16410647898392056679"}
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"1"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"18833367445"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"7000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"22999999999"}h!
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
6j4Go5:to:USDT(TRON):TYtZATTX2Uu3tKhz8mnJUWzt8z84gainyk
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"12280786341280249601"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"12621709512212411974"}
FjDOUT:E4E5BE974DF3587F864032E036F8BC1C0ADC7BBD9E2EE3243DFEBC32D9D97869
=j;Ske:to:USDT(BSC):0x1f47AB6Cd7247fcd74506A19CECa425156697fa9
/j-fl9:to:TRX:TRjAchxoJwjgKTwRaq8rJmSzN7ykN9y7mi
8j6Lr5:to:LTC:ltc1qp02g26ps8xrdfkcldsv23rj9fzg2ju93jgazz6
2j0to:USDT(TRON):TBzvE9g9yQjWYmbgNqg7usYVnEsCjDDDpH
>j<Lr3:to:USDC(SOL):xJjvbt1KfJwSywZ5iyfkTNmjbNTrDQ9fjPdJCaBTNkq
DjB0xd71290c5451dcbf2ee693533ac88f4d8320a84bae0e2ebcb4aa434f9b2d24ddd
DjB0xd922434a174a5344a762cce016842ccfaef6c479be47f7ed0e851cd7ae48507b
DjB0x493929f7c6c166b7accacb9cee62da6d38ebf42158d78daba278a2e5bfcf703c
DjB0x3519c325f8e5d664fbc3b1a331eb75fffa17103ac8e5efb83e335e6e7e3d5c01
DjB0x7d2a3424dedb42eeb3ad8e0d963dd495f6f58aefa70ec767bb6d1d714c552924
DjB0x25d14df0fd741b9f708a5936efae7be094e7ce1607b7667c2d923a7ce16859d5
DjB0x1b5088aca7a4d594d798e94b91485af635d755f4b91084284b2c62a67291291e
DjB0xbb681079a2bd9d6169c402ff73165eff0db30fbc5ac965d957246f1d70a4312d
DjB0xf44e3ae4e9a01952152e8667f6fe85c33cb37026306c137042af56d7b1e43358
DjB0x0b7197d828c410e2d614dc5d0ff4a7ad0234c9802cbb15a2867fac9f7c4d24fe
DjB0x6ac32a6d88d21e0f2b7447d3023d1b3a7ad46cfa5eeab87c158ace1a3bc171a2
DjB0xfd22fdb228aa12262f50cfbed81065e6c6ac197e426aaa05572a0a0a4489b42c
DjB0x342d2263478814a63d9fd0d2e77c2f3b4406801d2a476add3d592883d010045d
{"p":"brc20-prog","op":"t","b":"AfkCyoIKxICAlGKHm7PdlJxM8G9xv3woHc8k0WPngLkCZGYjjh3/H2D/HgHA/x8D/x8K/wUHrQQC/wMB/wME/wcEABn/BJD/Hhno/xYBTimqvFirShbA/wUEBAMC/wMM/wMB/wcH/wMZAACQ/xZ8ShT30OIXznD/HhjiAv8FBAQG/xAI/wUCCiJRIPTSrp6i3mLCM3pEaIBlbyAD3Rq7ih2+jIF110DmpAUk/zoZUfP/H4D/EAPhzYbkzBQyWRVIyLEjpsSXG5CR8fzmtmP9ClKD4mw4/wGYWjAcYRAOdOEFKACjEGr/EAwMpW2mTVOWXXZruTp0wH7ywMOuUtUFzpfuy7omLfa8qDSpky0Ipt3+OGDfVGr3nYWEpIZkhKD3NTsD3QHjMLGniy3IyfcHGjwpF0OF0Dd7Qb1KNQiiAKBhDwvfslOGCzLr9vv8ypAubiyDf3+tUuRbPPD3zXVg1Q=="}h!
{"p":"brc20-prog","op":"c","c":"0xd4c84fcef2baedf4fd91b7571118bb6606482ad7","b":"AakFnLv/DL2Pg86XTjZnSmH4dpiHH0/ZMBhg/xdsa5Nbi71AAAA"}h!
DjB0xfff6f925dea34fc1ed78501e941ee4071be33a933f9ae7fa920f41265e0f3de4
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"1"}h!
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}|
(c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing M
Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}a
>j<J4i:to:USDC(SOL):xJjvbt1KfJwSywZ5iyfkTNmjbNTrDQ9fjPdJCaBTNkq
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"16210609844369357944"}
FjDOUT:4E2DF4B0C177546A72001729E9ECF39997115602DC03369CF918A075A51ECCC3
FjDOUT:368F93076B242B528A4F1A6FBF2DFF42290AA4160FC1D9E3089ED26DAAA6378C
FjDOUT:1E2051FA12836423DF5911DBA1A35201BAF74718A26AC149FCF87779F3E23DB4
Not sure about this colordBodydGreyeShirtfHoodiedFacecPepdHatsdNonedItemdNonejAttributesdNone
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1254 1254"><image href="/content/b069e369781e2909fe579ff540f6329af55363b507107d29139435aa1727a2d3i10" width="1254" height="1254"/><image href="/content/a64eb531d5e8a7c55bbca2aa0750854251a67b71696c2f64e199bfa7a94f1733i6" width="1254" height="1254"/><image href="/content/8c93fba3eca5e68e579678c749c97e83e029a5629f05bb54ebafd5f31f82fd0ai17" width="1254" height="1254"/><image href="/content/e03569dfa90d0ff76eb60efadcb1dd342624fcdceee4b5177c47d0dfde9b2916i21" width="12
54" height="1254"/></svg>hA
?j=ero:to:USDT(ERC20):0x4b18F7A2B0e547265b59a8115FFd68F9D833c93a
=j;ArW:to:USDT(BSC):0x1cEd3E38fEea3F25B2Be22F8b7C27a37F754d536
6j4SMH:to:USDT(TRON):TKoKGrFuXcqM3T4F2ZcK6PQJWMQDPWe8wC
6j4N7L:to:USDT(TRON):TE2756qwRpWAiwdM7BXbumYB8ZECreSeN3
6j4hln:to:USDT(TRON):TWFNFSegvomGTrRgUhAZ2zpbnxjawjJpc6
6j4AXG:to:USDT(TRON):TTUPWHD8vZ7QqMfQHEApxttuWJZwMk7EuY,
=j;2nq:to:USDT(BSC):0xeC30047e64654DBd56C7CF7A819CB3331D8AE77b
6j4wwu:to:USDT(TRON):TUSLSGeBif79o7ynyztgEbESAqAirYWvgB
6j4XtR:to:USDT(TRON):TQc89j3TBshXfLedUnheoRoSF489G7sGmW
/j-twb:to:XRP:rMY6mU7MS2ZYcwRXLVDZAHzNQP9bRkMxcdR
=j;cjm:to:USDC(BSC):0x45c0E3E8bcc48B12692647317c2c9f6cb876d2bb
DjB0xf498932b3abcc33ce989dd3adbda826589449f48a91fc0b18d429300cd098bc3
2j0to:USDT(TRON):TN18kaboymMDzLQufJBVmS5vBFPSqydYxj
OjLL0x95b614c226377bc6a2c6512e08b83e1f6912987c20bbf5d499bdba727454f599=|lifi`U
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"14567162629244985710"}
2j0to:USDT(TRON):TN18kaboymMDzLQufJBVmS5vBFPSqydYxjSi
2j0to:USDT(TRON):TWJesRj7BoBm1UcAXq99pcGMsH9mwTc8Jx
7j5from:475USDT(TRON):TEdsFkuTm2fb4xagfGrje88htge6zXdhyG?
=j;ZaF:to:USDT(BSC):0x84E402F0a95610Dc470e94A6805621bc6653bd40
DjB0x0b5cf7481acd207603c0ed5fea546c37fdb79aec856258de71caa0a719da168d
DjB0x03a39c0e4e2c51b507bb55c5ab2c99a11a655fbc47d17f28174cde36743e2962
DjB0x269a427d35f6b38f628fed1da7d62aa6db2b5665d49e98d9fa0d4464aec79cd8
DjB0x4386e9d68b6c06b5d8db127269bc18d1fc6fbfce00ffc8803b5e240aa2c9ee18
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"18833367445"}h!
DjB0xdf5ac5a5cff8537416cbfa8fc6fe38736ecb2f10afbef25af6103a57f3b62ede
{jLx0x8e9d3ee6c5be7906df2830cdbb31b419f31ebc5159138d6286ce31297d8ca85a|depositor=bc1qq2mvrp4g3ugd424dw4xv53rgsf8szkrv853jrc|
DjB0xe036fb9d7afac4e7532ba6db50ee7b051effb0d3f957067c3db3d09088f7df42
DjB0xa87ae376a89f760e8471a8ad2756b7fb8479417823c0be4dcf6a82476ee05e44
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"14423720787885637796"}
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"3000"}h!
DjB0xd57c1befd6dd5c04192c4580b542676bea5f47fba64eaa034a71a6db46f85fbf
DjB0x94cd93d10bf94e0d65c05d82940cb089d3f75e39f0134351b82658dea753ac9a
DjB0x94e47ac0fa990896d026d81fb2ac479bb99b8a8909f8ca1af11497f4d6800e1b
DjB0x5d4d4826d375db8ac2c2fd6b04ea20bd11856ca552960344027387f66a6506e6
DjB0x8dbc5b25747ff431241fd3ca957b26b8e4578f892f81308bd7cf77bcc984174a
DjB0xa4b44faebb43864072f6c5cc0c6fe9967eba020e3ae1efd66f58f02ee6af1e30
DjB0x6f718f879546c1db20c9c2d4e1d65c18ebf8b12c45abea4e082d7fbb089090b1
DjB0x13251977f636350977ed16fc875410fe7b9ffcfc30ad456fd1dfd6f3ec668b55
DjB0x644d999175e464136d75e60937a3fc2742a93b630cb742c5321da02b5e3c06f2
DjB0x8a6b32774ff755533db0e108678825e890f27891d1239667e29f945ae0f87cf6
DjB0xb2367d49b9bf5c452c64fa28489fd183ce86b9a3488b6bc38b3d35f2c6f8c8f8
DjB0x5ed13e470e4fe55a988a210773527055b8998e3fae561055d4885855b67e397d
DjB0xb4b8e2b9b3ae4a13621534a057bf7c9b4383daccee63fb07b1ba623d1d6aeae9
DjB0x6281f48630938cbe12f260358f4a500851310538377dcafd1fab8231fb9df236
DjB0x52966b370c034697fc349e62e3fedaca697f3783f072713150b9f0af9abe7e22
DjB0x91d3df20496e65bff4acf0222864c3a4238322461dfb83d70d902c1adfa2f6883
GjElEdgead688a99921bb2f5d727f7f2222d59f2c70f12b5b95a1747db52af9dc4c4a94a
OjLL0xc16b9bd7d7119824cca13c0804fb8c5cace4850e7ce814aca1d458d1054fadc0=|lifi
{jLx0xeaf3e7a3ef79fd0e90a3c3b7d30a38202cd428420d81b388b45e80d07f69cf3d|depositor=bc1qq2mvrp4g3ugd424dw4xv53rgsf8szkrv853jrc|
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"letter","amt":"0.3"}h!
{"p":"brc20-prog","op":"t","b":"AfkCCoIKxYCAlGKHm7PdlJxM8G9xv3woHc8k0WPngLkBpGYjjh3/H2D/HgH/IAH/HwT/BQPLBv8QBv8FAgoiUSCpAiu0o2lLkEBczFzXEE8dmgDENhPkHOyFcVAlEp2ABf86CVL5/x+A/xAO/wEb3W9Oxav/AYO0y6sJEFDfbfvKe9VaEdnsTuZacPYWn4n6gX1VpifokOWkMQ9s0/8QC3etwPUUP4PCaOl3Muwi6RKvvjsOuWq/kWf9OwgEDdOMu2K0yEw8PCshdETfX8ZahYSkhmSDoHpWimeU80n7qG/mfxop/RjsvAf23ADi9ekFbhiD2OVPoCTFIO3H6izyg+QeBJcPKl8jpzrxs9jW7H3eDcOzHnt0"}h!
text/plain;charset=utf-8
LW{"p":"brc20-module","op":"withdraw","tick":"shhhhh","amt":"42000","module":"BRC20PROG"}h!
5j3=:z:t1aGju1AtYyzUaF89dyA9X37L5BukDjK5HZ:0/1/1:ej:75
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"2000"}h!
DjB0x24c71f9c347e15f57699ee3a1e7e81a26106cf0bc60cfdc9ded0e60fdc7d5b6a
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"98888888888"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"pizza","amt":"660"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"EYTS","amt":"1"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"1"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"15018273243585893267"}
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"6632548580"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"6498696420"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"11199136281032869367"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW37","nonce":"15892460486569836223"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"btty","amt":"1200"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"2000"}h!
j| MARA Made in USA
DjB0x56e37e0aed60e125f2fc6136c8cbe8e2de1e88d2ecac860965007d423793bcda
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"2000"}h!
=j;from:15USDT(BSC):0x74c4a7C5D806A379DA4fEB0Aa96B4BfcC612210e
EjC{"p":"crc-20","op":"transfer","tick":"LEAF","amt":"20000000000000"}
FjDOUT:B76085A25778463DA2F7F6D7EB708B47FAE8648884109F5A932D04022503A871
FjDOUT:BAEE09E898B46050CA7380B5D6A062D8C295FA66623C3CEA16756D2A49A1171B
+j)to:TRX:TM3k6fBfWw6EwKz4MSU8gzXWgH6FdKoB1Z
6j4ciQ:to:USDT(TRON):TPtzDXYLY3TZ64zkExMAjkRcKAqNps68Xv
/j-EaZ:to:TRX:TTFE7TsqJrb8qZXfoHzcNkvD2QcTUmWDUF
6j4p77:to:USDT(TRON):TKGwJoNMSQkK6mHoQFqWqENuY2hSoxGKED
6j4AwL:to:USDT(TRON):TYNaFtoo7Wqu3kpVz7V5zHrZDbBDBFs14SU
>j<Vh7:to:USDC(SOL):xJjvbt1KfJwSywZ5iyfkTNmjbNTrDQ9fjPdJCaBTNkq|hd
2j0to:USDT(TRON):TXkcHb89HLY1yUNCsAwFGRtNh3phPBLKR3d
9j7to:USDT(BSC):0x3c220603B15B8eDd145b4Ade6f09a22a77EA3789
DjB0x1e42f05a9b432e24c49dc8ed2c8ddaa4de772fab87e92803bcce5dbb7fcfc72e
DjB0xe3aff5e58db727b40195c5b42576852282ede9262bbea19edeb122d2056c9551
DjB0xc04d5b61944adc390cd7d10f109a6254bc220d43b47c2978dd3c45d0135fc2b1
DjB0xe5e2505061d597cea39a75fcb5ac15b3178c3ab21275efe924bd6c7abfc868a4
DjB0x78e18b48568bfba33c062da86f5167d6e2d22e3cb4f5ab7fe99d04afb902cb86
DjB0x7ead08aad3fa4c271d52e7c3c52ea3a73ca629dcdfcce63aafc2bd7087f51c64
DjB0x88aefc8759da4ca7a26fb31245520deb066a6cadcf4daaffa63c84f9111501f9
DjB0x437e536d161ad7621d84c5a981108cd18b18d6698df9a280f585f8d4d1c9f74e
DjB0x91d3df20496e65bff4acf0222864c3a4238322461dfb83d70d902c1adfa2f688
DjB0xe64a65be7f52d6470598e3f9931678e92d7766e449a2e978d2c9a16f0e7a74eb
DjB0x30ac74be832b1b0625801049cf5b4775112dad86816c4e33ecda4f2c4ecfa67a
DjB0x9d223da31ad7f8782c86fa9a25b96d53b994f56680092f8e2077a44d46a0dcee
DjB0x08cc746c8f640a78bc85ed4280412803e2d7cdf86d59442fa6a3dbb82621a5c9
DjB0x5c325aba9fb4b352d2c44bc84eb3302b7463452f8572a3e0770bd3683466e616
DjB0x76b67a6d72707d58b8b7c97536f6a6fdd8f3c97462a805073f7340825cff551b
DjB0x343a285283b519f72f473b5abb2a7943430bd8b043ef551b72d089a2df7d7ab03
CjA=:tr:TCvX2jRnVgwk6dZAJa5MVveZDGkzgrWtF9:1308710300/0/0:-_/t1:0/70
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"2000"}h!
DjB0x44cf283a562f5863efc6a2f53aed06822cc3cd03eaa38daaafdc3674d15b82f3%>
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"2000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"500"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"20000008555"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"19333333333"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"20201138560"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"17449881342258014393"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"btty","amt":"1000"}h!
text/plain;charset=utf-8
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypec1/1fArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
gSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
ypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfAr
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArti
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
dNamegSoulboydTypegEditionfArtistgAxstone
fartistgAxstonekdescriptionx,Soulboy
Let the music set your spirit free!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","amt":"46371891191","tick":"sats"}h!
2j0to:USDT(TRON):TRFaxBzLqFLsTtLJJXRy9nUKbma9J3bm4K
GjE=:ETH.USDT:0xf1d99b62691c79454cb970453f90e914875d33a2:53126399436/1/0
EjC{"p":"crc-20","op":"transfer","tick":"LEAF","amt":"22222200000000"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW37","nonce":"11139668271813471075"}
8j6Zm6:to:USDC:0xB1aCa8d7cdaDdBfc7Adb2A9726c1405821000C75
6j4qHc:to:USDT(TRON):TNPLJvfrUC5qY1soya7buDEyXRGTRvqqgJ
?j=pTJ:to:USDT(ERC20):0xb35d3Ab8EFe4Bc8bbE56735d3A1Da4D14f822eAE
6j4c0h:to:USDT(TRON):TNrixyY4xtbkqt8De1PGja3q7dPAb2UUfK`
2j0to:USDT(TRON):TUAazgU4RCEDJFjDmQ1ezLYytD1KCRz1dWUP
DjB0x8946de6aff8792eaccc270f9ba8cb305c971b992608ca88856bc1360264eee73
DjB0x11748baedaea3c7822e1584b5ff218ffb370ba6d9d52c54ec4b518f0c11a1dda
DjB0x7419d031ea285e890f8dc2011ac4f9fec90e20a5961d8497e546e8e7606a88f0
DjB0xb74cfef83f22d92cd3d03990d82e018411380306dd2a72a0aff34ec812ab0fef
DjB0x093cbea8d451575066f4d6d9518396d43e0cc6eb3698d4bf8988daaae45217d4
DjB0xccdbad5a0c6439eca18a18689845b7ea3e167df99b56a8eb5d5d42347208cd03
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"19000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"15000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"21000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"14588591421665806129"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW37","nonce":"16602304546154323100"}
application/javascript
(c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing M
Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
/Foundry USA Pool #dropgold/
EjC{"p":"crc-20","op":"transfer","tick":"LEAF","amt":"10000000000000"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"14443987068398253377"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"17089694451540209822"}
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"2000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
>j<5nD:to:USDC(SOL):xJjvbt1KfJwSywZ5iyfkTNmjbNTrDQ9fjPdJCaBTNkqH
6j4YlD:to:USDT(TRON):TUY3zSqTVYcSu1woFkbC9RfCMc6kqJaJEH
?j=zMa:to:USDT(ERC20):0x481778CB0aE0d5873099Db0394b41aAC88Fc9B80
DjB{"p":"crc-20","op":"transfer","tick":"LEAF","amt":"5000000000000"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"17846164944816206345"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"17660376391442863254"}
2j0to:USDT(TRON):TKoKGrFuXcqM3T4F2ZcK6PQJWMQDPWe8wC
9j79nC:to:SOL:6udpEQuphmXRjtp9fq5SFTdb2oA8WopAB9PfFfHZzRGk
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"13537307533465574540"}
2j0to:USDT(TRON):TM23uuCQnuMHwBJXMCSkJJZQV3pyy6ZsRL
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"2385"}h!
=j;=:l:ltc1q86yjymyqjjsdd0804arjntk8n3rjztrzpp2jee:0/1/1:ej:75
DjB0xb7babf99112f78e432cbe0bac448c9712df0365c74999ea82d6b59ae75d08940
DjB0xbae10b9ac8513d2855ea3a7ed198adf3baeff06ded966c388d2aa071948dde07
DjB0x96f9a7c0902750f8c67bd898d2fa7f40639336eadab2c3cede43477f7e1bdd7b
DjB0x6ce193455072ddb3d9fd66d7926379975f3ebe7dbacb7a8aa7cd82f2a8d9f414
DjB0x04b2d9714e63f83074aa6c3d83fe2acfc84b1b57016e7538e6ce269b9156c2d6
DjB0x01cd54ae0e9a5276b4facf441387f0a6a3990ce24865c93c4bab10886f50301e
DjB0x5667cd918a4facb1790a8f62d09e9f98b55d3035e3fa38412511e4124d02b776
DjB0x3d2db1a99015393437b7d69a9a69f3e16df2cc6691eab2d46849300128c1d35b
["pumpologia","long","paper"]
DjB0x3e38cf6a0d01ed4a85f48cd1c1beabc7d420da03f319d40d0f9cb209e3ddd2c5
DjB0xc7ab7bc98b460982b2fb9929bb9656c2f00afd9143f737a15abec926db874aa8
DjB0x33aa25aa967589a902c1f608348801ca037aa9181484cc219d7c8ad89d53223a
DjB0xee465048e7e1fb8dbb6d41f0be91cdd19af342676f32d052ccf8c4063ad74202
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"letter","amt":"0.1"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"15009164289759875480"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"16086275415312573399"}
DjB0x436df56290f191b67402bdcb63b3a29c7b0ac4723cf8164795266a567e87cc49
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"14999999999"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"2000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"69933300000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"30000000000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"50"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"10460017410590626984"}
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"25990"}h!
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
:{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"900"}h!
:{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"900"}h!
:{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"900"}h!
:{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"900"}h!
:{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"900"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"13000"}h!
6j4Csq:to:USDT(TRON):TRKuacyowAZWsrM3dmGuSKuMDvxWhDnkqr
6j4JEZ:to:USDT(TRON):TB3DPFhjyFzYszE4yxA1XV9bU91QfxAKGn
9j7from:109.8USDT(TRON):TEXfdUvffh2ei4PzEd1XDaGeWPYnUvH8Ppq
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"15185292619309241170"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"10897350097310232617"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"13492525994506984909"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"14543204184474813077"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"10788449639519952152"}
FjDOUT:2469FB16C495EDE75C19EEAD78DEB273A8AA1058C3E532D83275AA56CA83DEDF
FjDOUT:74890859B4EC6B6CD11CD44FF4617865613895C666ACBFCA15134C2DF81DBB3D
=j;7b2:to:USDT(BSC):0x05f0A42A8048354bBE2C20dC73c4B9c19f086CE9
=j;Gw1:to:USDT(BSC):0x5E768f278a7404565ddFfeE4b58fb87052C1b92e
=j;pnq:to:USDT(BSC):0xf4a2715ccAc3e52d2E7C9DE7ddA281B67dd32CBa
2j0to:USDT(TRON):TA8hkJ1Et4ctZG2WbhZeTpMzh1uRndaB8n
=j;fpC:to:USDC(BSC):0x8E205ed7341B09aD57258E5D8a5A59Da666F3B81
/j-rsn:to:TRX:TNZPMgGb6y9sNQ5DvHkZ5LtZmVMjxZjGFw
6j4XZe:to:USDT(TRON):TQc89j3TBshXfLedUnheoRoSF489G7sGmWI
6j44Sm:to:USDT(TRON):TRKGTpkL7erx1DYxoAJNoPCYQ6TAm5ohkx
6j4VlI:to:USDT(TRON):THi258akKUKXPmti4m5WL5gakFfsGEyioYBnJ
=j;SDN:to:USDT(BSC):0x7e4Cd6DDDaF6784c8c2f5CA74f1DDd60F474Dc02
=j;5xl:to:USDT(BSC):0xb68A8958c50E2bD8275ca673b08fC3dE65844442M
=j;leC:to:USDC(POL):0x42e99c6bF02951811FCC438F30cD87c95849E24f>
>j<OFr:to:USDC(SOL):xJjvbt1KfJwSywZ5iyfkTNmjbNTrDQ9fjPdJCaBTNkq
DjB0x9689f92b860cdf66a154ff1d09d1755936dd37e39c89607af20a7b4a0bd4ffd0
DjB0x64c8d29687fd445ea6642ad35e97aeda637274bcd3b058e1531ca0bb40d1b0e6
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"12995465890193516284"}
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"3258"}h!
DjB0x01f5b367c6b19ece9c3fdac3fbd3cbac827d2d57ea774880fd5fb6e916317b31
DjB0xa6d24415b06c3d04db7d0f174f80cff71b34199d09f5400b10417181baad89bb
DjB0x849e2e9c8972f084267518db73ecc86808afd16743617f2a15a87e6554b0f259
DjB0x323551e5441982af634b4315649e9f67d4e5a52d8f09e9234a12a67992c0fe79
DjB0xf0c6a86d89bd88e86deba1badbe529ecb094b5aadbd156eee686dff094d434ef
DjB0x9badd9a646473f725ff2d759d1d423c7fbde044550b784ffbed9921ce432232d
DjB0xdad135129cbe6b9be57dd39f3147543bb5d1c540209aa19dc54c11f831b14838
DjB0x9d31d757c4a708a7be6da979a5256f54bd82540030d1ee345f154563f65a1419
2j0to:USDT(TRON):TQGgdjjejeM4pZtoNBSDJah3aMBn4UUK62
DjB0xc19303c180cc0d3aeda8f8ec7afd86f821452ac955f6853ddadbae30adf405d4
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":20754}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":18506}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":18761}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":26065}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6449}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":31464}
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":111872J
DjB0x263a472f77cec10aa70dfa3ac0828e6399b2c90582aed9bce861c8fcf56e4203
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"3000"}h!
DjB0xb8e6103fcef943a1c18265d2d1735105676bfd17b7af1e5a7430aaee710c98f5
DjB0xc04c27b2323b7d1ac480517b601271dc81bb745ceeb8a4d02cff43d374f33d2b
DjB0x72fdb80c81cb63a48d904e46c8be79d35173c21125f6dcad627b218656eea06d
DjB0x3127d36550d29607dac444f03f8f5ff52a406cc2e0a1b9ff0ad383be889a7577
EjC=:e:0xF093FFb774ED368d488b084c53196b922C485f97:26291/0/0:-_/t1:0/70
DjB0xd03cc60f0aecccfc8d0ef84f4b1f281a2cc9d2ccc8366d90fb35708887be3ecf
DjB0x38a9cc3d74a4f5932db0ecdd01e296d7d805584483efaec7fac325c573e1680a
DjB0x9d36acabcfddfd284f4788612a0f8a6e7792541dd82bf06847e01fc9574dfcec
DjB0x4aed3ab9c5b63f06e7b81e3a571fe0655c13e2e463ceaca45dfe03eea1ccf0c8
DjB0x7a1b295115d3e812b639039db296cbbb663f556d58e1759a57960576cba37bf8
DjB0x452041d259c6e482f9eb22bdcd3bdf2d8410baa8ee84d1e0cee1d5653037bf49
DjB0x01c000aa3e68acafe29e646056775d5cb37a8729963ee03742982191acb92b3b
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000008"}h!
FjD{"p":"crc-20","op":"transfer","tick":"LEAF","amt":"172646952380952"}J
DjB0xfee1f042dc856c52cdc9462974143ef734a88c0fb486bfe3126962e154871ff2VT
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"100"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"17404797823"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"12500000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"18746610740"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"20000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"4550"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"zeusv","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"10636054955834602948"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"16466396943591382641"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"12931334305951770543"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"12584574647801661794"}
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"22"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"20"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"6000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"9152458660"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"3000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5777777777"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"17926887250651354365"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"10697749558546280996"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"18436974481029908447"}
6j4E8N:to:USDT(TRON):TAmgzDjFw4cNRatwRvmyGSbSYENgyfEESx
6j4l9P:to:USDT(TRON):TAmgzDjFw4cNRatwRvmyGSbSYENgyfEESx
?j=oWo:to:USDT(ERC20):0xF8fEB126c0a036e27f2058Cd3D4bf06E399151d8
8j6from:1684USDT(TRON):TVmuDN5XokjfnUKFXJGr7vx3S1adeLcKP5yS
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"12572241132179478956"}
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"4580"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"12841378884923050793"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"14150453474188874167"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"10182576454684547200"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"11340800350083283356"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"13393905461514077886"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"10296598062209317868"}
FjDOUT:90126C370A54603582F56596171DF9E9AD150F674E7170DF16D3911C42C8C690
FjDOUT:7791BE24663C17EF8054F47E1E07A91199AA17566870F4AD49BE1476DB1B3781
FjDOUT:2DC03D8C9570EB43FC3E61EF310A06947F91926DF55F56F32D21A51508C9B390
FjDOUT:18F5E6EF8FD8E07803BEAD4011B234CE28700823D9AEDF39E4998E0E98E3F246
DjB0x457b47e6d2264e3de943e0273cc47c7595f54c5f1cf26f22ef26c4ef5a293fb6
=j;Goo:to:USDT(BSC):0x2E449Da9B039b118C34F88612F54f4dC914A6fE4
/j-L6b:to:TRX:TD1nYdBjaLA3nv8VJtPpiSEkCTVHyThdzh
6j4yOF:to:USDT(TRON):TEUfwU81hm2RZ7nBJxun1mNdLQp8CZbzMz\
=j;H6p:to:USDT(BSC):0x4f77Fc38236295CC2066f74198a9653d56e5FF02
Aj?9sj:to:AVAX(C-Chain):0xdef039E63E8920E4bc6D064690305Bf21d99eaa7
6j4Dd6:to:USDT(TRON):TVwsTuYPnYqQApJQnHqxx9PmdixKpseSZz
6j4XkT:to:USDT(TRON):TEDnLV9cJeeUFAgdHc7dPTcknCnKkR8ujm
8j6XLi:to:USDC:0x9b49EfBef16858DEDFe424473832436128367118
?j=wSN:to:USDT(ERC20):0x4fEe8904b1C8Da61a9E17398266994644922449f
DjB0xdb35966c9f1e517fea529940798e826527e7b927bfb0c4f3723a71cfd86bbb0b
DjB0x173b20d510fccacab31253cf89a7ee138266dc98d6e2c25f6cbad7c58a4af747
2j0to:USDT(TRON):TTqbH7pSWHex3WbZDWYPMZePWMJp9zGJJe
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"17349537850188906752"}
=j;=:l:ltc1q9a7kmnlaggp2yr7pa8xeu0sgwj09hllaj7gzzg:0/1/1:ej:75
DjB0x26c1dad5e47dfdb81aa36430a3fb6d48177e5091c773b9758adf3b6f3e8d9b8a
DjB0x215b953a5e1bd24fe1049c850c681832fde6d2b6c78d39916a2bb3c1b960d2af
DjB0x84f576a79866a0a96d51001f7fc1b99b289033f49cf5b2ab57b58159621d82c8
DjB0x71a05d7c0f41638c9fe5e02cebfd6e91d2ab0adb4cde3d5580689ba91df8e3e5
DjB0x3abcca3a883ef3b411f35820f3ad3c5082f943d990a5a68155ea75306f293c80
DjB0x5c4865295894d6b18aa83ef81ed1252554151d2eaabe8278f161f81886b863f3
DjB0xab083e537bc687cfabeccb44bff80079412a6565d993a42cd96de51504a66ec3
DjB0x4f5d58f2652c2c484e461a265b8a7f9b4f71a68649a67ec159b2f5bba9cd4295
DjB0x0d61e04093ad7b9110fc851efe9970d9b00b86eb9055be34d2e0158865c33186
DjB0xc35b5370583fd146ac7979f50b1ff73228dd2e29130e3a7384d6182632baa6d5
DjB0x79e2a68d693f6b6998cf80b87739103a0c31ae4269379c6c6449fac361e637f6
DjB0x029b88fd9a3feb659cbbe36ef9d9914c9176257306786c7236744a6f3450817c
DjB0x7439f21f208f03780c24c2eae4e53c8ab20fa0612cd34619e68ba3acdaf43c063
DjB0x99746ce21593a78a37a9b26aaacf234d14004c18b99aa49c3e3b51ee3e47398c
DjB0x7b563b11a5da4a00c9960aeb16a1a10a3308a114db3a839c6ac4f68bd155f3cb
DjB0x6329c39f87c236336e0a7b8d13af0e5102d80970ee6daf8dddb8c0d81730839f
DjB0xe501b901883eff1155cd2888dc8162f5e15150e0d787e56e13c5c1d5c6645009
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":30136}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6380}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":53095}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":53095}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":89817}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":98447}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6642}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":8354}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":13285}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":35969}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":65222}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":64894}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":49699}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6511}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":8265}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":66861}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":54537}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":54537}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":18943}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":12673}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":65550}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6249}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":31791}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":30136}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":51981}
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":259778J
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":18524}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":61617}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":45098}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":8342}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":41670}
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":147387J
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":172530J
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6336}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":64916}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":39772}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":7521}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6314}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":66424}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":59650}
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"12000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"18000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"14107868427687459930"}
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
DjB0xeeb104d2fa34666284451cf0c051761068d8b9a9f9b5ee70a7e2d3a9489d288d
DjB0x977da3e4c874f327fb87e3c8533ed283e2d54d6f6433713c7a2415c97aba1779
DjB0x8d70fd3884e1a324904c784fa55f8af43c4adb1d434a9e8fc0aec1808c8b8028
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
DjB0xe687c3796be1dfe18bc274a1698e2205b36dd40a5f0a3c44d5deb66eebb0f964
DjB0x12515cf9f423ceea8e61adaff471071496907e2d3472ff556833c3adebf82628
DjB0x3151521432e5491d39f278167b36a46db7f0031fdc7525ebb5b96f338bc99cad
DjB0x8637f4d7c2a465aab84d3c3c238923e11496dd674f168edea899c2d72e66e6d4
DjB0x1dc550723ffab905f21ac59b948455de95a9d6514a9e87b6cbf2f9b92773ba97
DjB0x82c7e2f97c000b76d3fcafb8566006191a8d91fc46bbe525c8ef93fe86058da9
DjB0xe676d360bbfac122ebb6f4a08d5ae71142c84071b5785698e06d22a7d8dfb458
DjB0x5916a6db22f73a6ff07530c4bd010c80394e07192b363d3b2bf2aab6581b3980
DjB0x57fc890ba8ae4362711cf3686bca608552207a21d1d158ae9cec6e65202637b9t
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"3000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"16764266290912433932"}
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"2000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"300"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"300"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"300"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"300"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"300"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"300"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"300"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"300"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"300"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
DjB0x98b64e08074d9d3fa5992ac672449ff7d7f942695e1ea3a41b82ecef164f26ba
DjB0xc7e847f354a6fe2e2a958c919c54a3c829810dad7a49377e9dfe95be728d9c8eQ
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"100"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"1500000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"18000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"14250000000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"80.5"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"100"}h!
application/json;charset=utf-8
 "seed": 3330732363006,
 "run": "Hania Basia",
  "##################",
  "#................#",
  "#................#",
  "#................#",
  "#................#",
  "#................#",
  "#................#",
  "#.........#......#",
  "#.........#......#",
  "#................#",
  "#................#",
  "#.....#..........#",
  "#.....#..........#",
  "#.#...#......#...#",
  "#..#..#..........#",
  "#..#..#..........#",
  "#..#.............#",
  "#................#",
  "#................#",
  "#................#",
  "#................#",
  "#................#",
  "#................#",
  "#.##.........#####",
  "#................#",
  "#.............#..#",
  "#................#",
  "#................#",
  "##################"
 "seed": 3330732363006,
   "sd": "DAILY 20261005",
   "ts": "2026-10-05T01:41:12Z",
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"8"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"2"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"BTC.D","amt":"20.5"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"pepe","amt":"10000"}h!
.GIF compressed with https://ezgif.com/optimize
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"16086475921198920562"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"17027820090586095526"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW37","nonce":"17561677761224878904"}
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5986666666"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5500000000"}h!
text/plain;charset=utf-8
C{"p":"brc-20","op":"transfer","tick":"
","amt":"5894522226.808"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW37","nonce":"16076891471858389156"}
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
/Foundry USA Pool #dropgold/
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":60374}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":44419}
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"5000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"12658970677846809192"}
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"2000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"2000"}h!
%j#Jzcfjwziqn yfpoq unbbflev ucqsdt m.
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}d
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}3
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}x
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"15868706810710474946"}
<meta charset=utf-8>
<title>ORDIMUTANTS EXE LOUNGE</title>
<meta name="generator" content="richart.app">
<meta name="collection" content="OM LOUNGE">
<meta name="provenance" content="Ordinal inscription">
    background: #000;
    overflow: hidden;
    font-family: monospace;
    text-align: center;
    position: fixed;
    align-items: center;
    flex-direction: column;
    background: #000;
    font-size: 18px;
    letter-spacing: 3px;
    text-shadow: 0 0 20px #0f0;
    font-size: 24px;
    font-size: 12px;
    margin-top: 20px;
    <b>ORDIMUTANTS EXE LOUNGE<</b><br>
    RESOLVING LOUNGE FROM SAT 584669751815870...<br>
    <small>(loading via 0rdinals.com to bypass sandbox)</small>
      const GAME_SAT = "584669751815870";
      function selfWrapperId() {
          var m = /\/content\/([0-9a-f]{64}i\d+)/i.exec(location.pathname) ||
                   /\/content\/([0-9a-f]{64}i\d+)/i.exec(location.href);
          if (m && m[1]) return m[1];
        } catch (_) {}
        return "__WRAPPER_INSCRIPTION_ID__";
      const WRAPPER_ID = selfWrapperId();
      function passthroughHash() {
          var hash = (loM
cation.hash || '').replace(/^#/, '');
          var qs = new URLSearchParams(location.search + '&' + hash);
          var room = (qs.get('room') || '').toUpperCase();
          if (/^[A-Z0-9]{4,8}$/.test(room)) return '&room=' + room;
        } catch (_) {}
      function fetchSat(base) {
        return fetch(base + '/r/sat/' + GAME_SAT + '/at/-1', { cache: 'no-store' })
          .then(function(r) {
            if (!r.ok) throw new Error('HTTP ' + r.status);
          .then(function(j) {
            var id = j && j.id;
            if (id && /^[0-9a-f]{64}i\d+$/i.test(id)) return id;
            throw new Error('bad id');
      function resolveFromSat() {
        return fetchSat('')
          .catch(() => fetchSat('https://0rdinals.com'))
          .catch(() => fetchSat('https://ordinals.com'));
      function mount(id) {
          document.getElementById('boot').innerHTML = 'SM
KULLS AT WAR<br><br>' +
            '<b>Cannot resolve sat ' + GAME_SAT + '.</b><br>' +
            '<small style="opacity:.6">Please try opening directly on 0rdinals.com</small>';
        var hashParts = ['wrapperId=' + WRAPPER_ID];
        var pass = passthroughHash().replace(/^&/, '');
        if (pass) hashParts.push(pass);
        // === CRITICAL CHANGE: use 0rdinals.com (with the zero) ===
        var dest = 'https://0rdinals.com/content/' + id + '#' + hashParts.join('&');M
        console.log("
 Redirecting to clean game on 0rdinals.com:", dest);
        location.replace(dest);
      var boot = document.getElementById('boot');
      boot.innerHTML += '<br><small>Fetching latest inscription from sat...</small>';
      resolveFromSat()
        .then(function(id) {
          mount(id);
        .catch(function(err) {
          console.error(err);
          boot.innerHTML = 'OR EXE LOUNGE<br><br>' +
            '<b>Could not resolve sat ' + GAME_SATM
            '<small style="opacity:.6">' + (err && err.message || err) + '</small><br>' +
            '<small style="opacity:.6">Please open this inscription directly on 0rdinals.com</small>';
$ &%# #"(-90(*6+"#2D26;=@@@&0FKE>J9?@=
=)#)==================================================
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><title>OrdiMutants Executive Lounge</title> <link rel="preconnect" href="https://fonts.googleapis.com"/> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin/> <link href="https://fonts.googleapis.com/css2?family=Cinzel:wght@400;600;700&family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400&display=swap" rel="stylesheet"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta http-equiv="Content-Security-Policy" conteM
nt="default-src * 'unsafe-inline' 'unsafe-eval' data: blob: ws: wss: https:;"/><link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24'%3E%3Ctext y='20' font-size='20'%3E%F0%9F%92%80%3C/text%3E%3C/svg%3E" type="image/svg+xml"/><style>body{margin:0;overflow:hidden;background:#050506;font-family:"Cormorant Garamond",Palatino,"Times New Roman",serif;cursor:none;color:#efe6d6}#overlay,#p2p-lobby,#previewOverlay,#controlsOverlay{position:absolute;inseM
t:0;background:rgba(0,0,0,.92);color:#e8d5a3;display:none;align-items:center;justify-content:center;flex-direction:column;z-index:410;padding:28px;text-align:center}#controlsOverlay ul{list-style:none;padding:0;text-align:left;font-size:1.05rem}#controlsOverlay li{margin:8px 0}#rulesOverlay{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24'%3E%3Ctext y='20' font-size='20'%3E%F0%9F%92%80%3C/text%3E%3C/svg%3E") 16 16,auto}canvas{display:block;cursor:nonM
e;touch-action:none}#overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:radial-gradient(ellipse at 50% 28%,rgba(40,34,28,.28),transparent 52%),rgba(6,6,8,.72);color:#efe6d6;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px;z-index:100;text-align:center;padding:28px 20px;overflow-y:auto;max-height:100vh;letter-spacing:.02em}#overlay h1{font-family:Cinzel,Palatino,serif;font-weight:600;font-size:clamp(1.7rem, 4.6vw, 2.7rem);margin:0;color:#f4ead8;letter-spacingM
:.18em;text-transform:uppercase;text-shadow:0 0 28px rgba(196,165,116,.22);line-height:1.15}#overlay p.subtitle{font-size:clamp(.92rem, 2.1vw, 1.12rem);margin:0 0 10px;color:#c4a574;font-style:italic;letter-spacing:.08em;text-shadow:none}button{margin-top:6px;padding:9px 22px;font-family:Cinzel,Palatino,serif;font-size:.78rem;font-weight:600;background:0 0;color:#f0e6d4;border:1px solid rgba(196,165,116,.55);cursor:pointer;text-transform:uppercase;letter-spacing:.16em;border-radius:1px;min-width:220px}button:disablM
ed{background:0 0;color:rgba(240,230,212,.35);border-color:rgba(196,165,116,.18);cursor:not-allowed;opacity:1}button:hover:not(:disabled){background:rgba(196,165,116,.12);border-color:#d4b896}#status{margin:8px 0 4px;font-size:.95rem;min-height:1.4em;color:rgba(239,230,214,.62);font-style:italic}#charIdInput{width:min(380px,82vw);padding:9px 12px;font-family:"Cormorant Garamond",Palatino,serif;font-size:1.05rem;background:rgba(12,12,14,.72);border:1px solid rgba(196,165,116,.35);color:#efe6d6;border-radius:1px;textM
-align:center;margin:6px 0 2px;letter-spacing:.04em}#charIdInput::placeholder{color:rgba(196,165,116,.45)}#movePad{position:absolute;left:10px;bottom:58px;width:132px;height:132px;border-radius:16px;background:rgba(16,10,6,.3);border:1px solid rgba(201,162,39,.4);z-index:72;display:none;touch-action:none;pointer-events:auto}#movePad .pad-cross{position:absolute;inset:10px;border-radius:12px;background:linear-gradient(rgba(232,213,163,.28),rgba(232,213,163,.28)) center/10px 70% no-repeat,linear-gradient(rgba(232,213M
,163,.28),rgba(232,213,163,.28)) center/70% 10px no-repeat;pointer-events:none}#movePad .pad-knob{position:absolute;width:36px;height:36px;margin:-18px 0 0 -18px;left:50%;top:50%;border-radius:50%;background:rgba(30,232,255,.35);border:1px solid rgba(30,232,255,.7);pointer-events:none}#throttleIndicator{display:none!important}#throttleFill{position:absolute;bottom:4px;left:4px;width:calc(100% - 8px);background:linear-gradient(to top,#6b2b1f,#d4af37);border-radius:9999px;height:0%;box-shadow:0 0 12px #0ff}#previewOvM
erlay{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.22);color:#e8d5a3;display:none;align-items:center;justify-content:center;flex-direction:column;z-index:100;padding:clamp(20px,5vw,40px);box-sizing:border-box}#previewOverlay p{font-size:clamp(1.35rem, 3.8vw, 1.7rem);margin-bottom:auto;text-shadow:0 0 14px #7a4a1a}#previewButtons{display:flex;gap:clamp(15px,4vw,30px);margin-top:auto;width:100%;justify-content:center}#previewButtons button{background:0 0!important;border:3px solid #c9aM
227;color:#d4af37;text-shadow:0 0 12px #7a4a1a;box-shadow:0 0 22px rgba(196,162,106,.55);padding:clamp(12px,3vw,18px) clamp(30px,6vw,45px);font-size:clamp(1.2rem, 3.5vw, 1.6rem)}#p2p-lobby{position:fixed;inset:0;display:none;justify-content:center;align-items:center;z-index:2000;background:rgba(0,0,0,.95)}.lobby-box{background:rgba(10,10,12,.94);border:1px solid rgba(196,165,116,.38);box-shadow:0 24px 80px rgba(0,0,0,.55);padding:32px 36px;max-width:480px;width:92%;max-height:92vh;overflow-y:auto;border-radius:2px}M
.lobby-title{text-align:center;font-family:Cinzel,Palatino,serif;font-size:22px;font-weight:600;color:#f4ead8;letter-spacing:.2em;text-shadow:none;margin-bottom:6px}.lobby-sub{text-align:center;color:#c4a574;font-size:11px;letter-spacing:.22em;margin-bottom:22px;text-transform:uppercase}.lobby-label{font-family:Cinzel,Palatino,serif;font-size:10px;color:#c4a574;margin-bottom:6px;display:block;letter-spacing:.16em;text-transform:uppercase}.lobby-field{width:100%;background:rgba(36,22,12,.9);border:1px solid #8a6a3b;M
color:#e8d5a3;font-family:monospace;font-size:13px;padding:9px 11px;outline:0;margin-bottom:10px;border-radius:4px}textarea.lobby-field{resize:vertical;min-height:55px}.lobby-btn{width:100%;padding:10px 14px;background:0 0;border:1px solid rgba(196,165,116,.5);color:#f0e6d4;font-family:Cinzel,Palatino,serif;font-size:11px;font-weight:600;letter-spacing:.16em;cursor:pointer;text-transform:uppercase;margin-bottom:8px;border-radius:1px;min-width:0}.lobby-btn:hover:not(:disabled){background:rgba(196,165,116,.12)}.lobbyM
-btn:hover{background:rgba(138,58,36,.45);box-shadow:0 0 18px #8a3a24}.lobby-btn.green{border-color:#c9a227;color:#c4a36a;background:rgba(138,58,36,.28)}.lobby-btn.small{padding:8px;font-size:11px}.lobby-or{text-align:center;color:#666;font-size:11px;letter-spacing:4px;margin:12px 0}.code-out{background:#1c120c;border:1px solid #8a6a3b;padding:10px;margin:8px 0;font-size:11px;color:#e8d5a3;word-break:break-all;max-height:80px;overflow-y:auto;cursor:pointer;font-family:monospace;border-radius:4px;display:block}#liveM
GamesContainer{margin-top:12px;border-top:1px solid #8a6a3b;padding-top:12px}#liveGamesList{max-height:240px;overflow-y:auto}.live-game-item{background:rgba(107,43,31,.35);border:1px solid #8a6a3b;margin:6px 0;padding:10px;border-radius:4px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;color:#0f0!important}.live-game-item.stale{background:rgba(255,60,60,.12);border:1px solid #f66}.live-game-item.stale strong{color:#f55!important}.live-game-item.stale small{color:#faa!important}.live-gM
ame-item>div{color:#e8d5a3}.live-game-item strong{color:#e8d5a3}.live-game-item small{color:#d4af37}.live-game-item:hover{background:rgba(138,58,36,.4)}#lobby-status{text-align:center;font-size:1.25rem;padding:10px;color:#d4af37;min-height:1.6em;font-weight:700}#hud{position:absolute;top:16px;left:16px;color:#0a0;font-size:clamp(.55rem, 1.25vw, .65rem);text-shadow:0 0 6px #040;pointer-events:none;z-index:50;opacity:.9}#customCursor{position:absolute;width:20px;height:20px;background:radial-gradient(circle,#d4af37 3M
0%,transparent 70%);border:2px solid #c9a227;border-radius:50%;pointer-events:none;transform:translate(-50%,-50%);z-index:200;opacity:.9;mix-blend-mode:difference;display:none}#pauseHint{position:absolute;top:18px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.85);color:#d4af37;padding:8px 16px;border:2px solid #c9a227;border-radius:8px;font-size:clamp(.75rem, 2vw, .95rem);display:none;z-index:300;text-align:center;max-width:90vw;pointer-events:none}#chat-container,#chatModeHint,#cpIndicator,#flagCarryHM
int,#freezeCharge,#scoreboard{display:none!important}#chat-container{position:fixed;bottom:155px;left:20px;width:clamp(280px,38vw,340px);z-index:150;display:none}#chat-messages{max-height:240px;overflow-y:auto;background:rgba(0,0,0,.75);padding:8px;border:1px solid #8a6a3b;border-radius:4px}.chat-msg{color:#ddd;font-size:13px;padding:2px 0;word-break:break-word}#chat-input{width:100%;padding:8px;background:rgba(0,0,0,.85);border:1px solid #8a6a3b;color:#e8d5a3;font-family:monospace;font-size:13px;margin-top:6px;borM
der-radius:4px;outline:0}#chat-input:focus{border-color:#d4af37;box-shadow:0 0 8px #8a5a2a}#chatModeHint{position:absolute;bottom:355px;left:20px;background:rgba(255,0,0,.85);color:#fff;padding:8px 16px;border-radius:4px;font-size:13px;display:none;z-index:160;pointer-events:none}#freezeCharge{position:absolute;bottom:25px;right:25px;width:220px;z-index:60;pointer-events:none}#freezeCharge .label{color:#d4af37;font-size:clamp(.7rem, 1.5vw, .85rem);text-shadow:0 0 8px #7a4a1a;margin-bottom:3px}#freezeCharge .bar-outM
er{height:6px;background:#111;border:2px solid #c9a227;border-radius:4px;overflow:hidden}#freezeCharge .bar-inner{height:100%;width:0%;background:linear-gradient(90deg,#0ff,#88f);transition:width .1s linear}#freezeCharge.lava-ready .label{color:#f80;text-shadow:0 0 8px #f80}#freezeCharge.lava-ready .bar-outer{border-color:#f80}#freezeCharge.lava-ready .bar-inner{background:linear-gradient(90deg,#f40,#fa0)}#flagCarryHint{position:absolute;top:14px;left:50%;transform:translateX(-50%);color:#fff;font-size:clamp(.76remM
, 1.75vw, .96rem);font-weight:700;text-shadow:0 1px 2px #000;opacity:.85;pointer-events:none;z-index:110;display:none;font-family:monospace;letter-spacing:.04em;background:rgba(0,0,0,.55);padding:4px 14px;border-radius:6px}#ctfHud{position:absolute;top:2px;left:50%;transform:translateX(-50%);z-index:400;text-align:center;pointer-events:none;font-family:monospace;background:rgba(0,0,0,.55);padding:4px 16px 6px;border-radius:8px;border:1px solid rgba(0,255,255,.2)}#ctfScoreLine{color:#fff;font-size:clamp(.7rem, 1.5vwM
, .8rem);text-shadow:0 1px 2px #000;margin-bottom:2px}#ctfTeamLine{color:#d4af37;font-size:clamp(.6rem, 1.2vw, .7rem);text-shadow:0 1px 2px #000}#cpIndicator{position:absolute;bottom:80px;right:25px;color:#d4af37;font-size:clamp(.85rem, 2vw, 1rem);text-shadow:0 0 10px #7a4a1a;background:rgba(0,0,0,.6);padding:4px 10px;border-radius:6px;display:none;z-index:65;pointer-events:none;white-space:nowrap}#scoreboard{position:absolute;bottom:25px;left:20px;width:clamp(280px,38vw,340px);z-index:55;background:rgba(0,0,0,.75)M
;border:1px solid #8a6a3b;border-radius:4px;padding:8px;display:none}#scoreboard .title{color:#d4af37;font-size:13px;margin-bottom:6px;text-align:center}#scoreList{color:#ddd;font-size:13px;line-height:1.4}#rulesOverlay{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.92);color:#e8d5a3;display:none;align-items:center;justify-content:center;flex-direction:column;z-index:400;padding:clamp(20px,5vw,40px);overflow-y:auto;text-align:center;box-sizing:border-box}#rulesOverlay h2{font-size:clamM
p(1.8rem, 5vw, 2.8rem);margin:0 0 20px 0;text-shadow:0 0 16px #7a4a1a;color:#d4af37}#rulesOverlay ul{list-style:none;padding:0;max-width:820px;text-align:left;margin:0 auto 24px;font-size:clamp(.95rem, 2.4vw, 1.15rem)}#rulesOverlay li{margin:8px 0}#rulesOverlay p{max-width:820px;margin:0 auto 18px;text-align:left;font-size:clamp(.95rem, 2.4vw, 1.15rem);line-height:1.45}#rulesOverlay .close-btn{background:#8a3a24;color:#f3e6c4;margin-top:20px}#pauseRulesBtn{position:absolute;bottom:30px;left:50%;transform:translateXM
(-50%);background:rgba(107,43,31,.45);border:3px solid #c9a227;color:#d4af37;padding:clamp(8px,2.5vw,14px) clamp(20px,5vw,32px);font-size:clamp(1.1rem, 3vw, 1.4rem);font-weight:700;text-transform:uppercase;border-radius:12px;box-shadow:0 0 22px #8a5a2a;cursor:pointer;z-index:350;display:none}#pauseRulesBtn:hover{background:rgba(138,58,36,.5)}#lavaPowerHint{position:absolute;top:80px;left:50%;transform:translateX(-50%);background:rgba(255,80,0,.9);color:#fff;padding:8px 24px;border:3px solid #ff0;border-radius:9999pM
x;font-size:1.1rem;font-weight:700;display:none;z-index:120;text-shadow:0 0 12px #ff0;box-shadow:0 0 25px #f80}#cameraCycleBtn,#pauseBtn{position:absolute;right:16px;background:rgba(107,43,31,.55);border:3px solid #c9a227;color:#d4af37;font-size:1.35rem;font-weight:700;width:48px;height:48px;border-radius:50%;display:none;align-items:center;justify-content:center;z-index:5000;box-shadow:0 0 18px #8a5a2a;cursor:pointer;pointer-events:auto;touch-action:manipulation;-webkit-tap-highlight-color:transparent;user-select:M
none;-webkit-user-select:none}#jumpBtn{display:none;position:absolute;left:50%;bottom:14px;transform:translateX(-50%);background:rgba(16,10,6,.3);border:1px solid rgba(201,162,39,.4);color:#e8d5a3;font-size:.8rem;font-weight:700;width:168px;height:38px;border-radius:14px;display:none;align-items:center;justify-content:center;z-index:72;cursor:pointer;pointer-events:auto;touch-action:manipulation;-webkit-tap-highlight-color:transparent;user-select:none}#jumpBtn:active{background:rgba(16,10,6,.5);color:#f3e6c4}#camerM
aCycleBtn{display:none;top:18px}#pauseBtn{display:none;top:78px}#micBtn{position:absolute;bottom:55px;right:61px;z-index:70;width:28px;height:28px;padding:0;font-size:.55rem;line-height:1;font-weight:700;font-family:monospace;background:#04181c;border:1px solid #1ee8ff;color:#1ee8ff;border-radius:6px;cursor:pointer;pointer-events:auto;touch-action:manipulation;display:none}#micBtn.on{background:#1ee8ff;color:#04181c;border-color:#f5ff7a}#cameraCycleBtn:active,#pauseBtn:active{background:#6b2b1f;color:#f3e6c4}#clubMM
ixer{position:fixed;right:16px;bottom:18px;z-index:440;width:168px;padding:10px 12px 12px;background:rgba(10,10,12,.82);border:1px solid rgba(196,165,116,.35);border-radius:2px;color:#efe6d6;font-family:Cinzel,Palatino,serif;pointer-events:auto;display:none}#clubMixer .mix-title{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:#c4a574;margin-bottom:8px}#clubMixer label{display:block;font-size:10px;letter-spacing:.08em;margin:6px 0 0;color:#efe6d6}#clubMixer input[type=range]{width:100%;margin-top:M
4px;accent-color:#c4a574;cursor:pointer}#clubDockToggle{position:absolute;top:12px;left:12px;z-index:430;width:28px;height:28px;padding:0;border-radius:8px;border:1px solid rgba(255,255,255,.12);background:rgba(18,18,20,.92);color:#eee;font-size:14px;line-height:26px;text-align:center;cursor:pointer;display:none}#clubDock.collapsed{width:28px;height:28px;padding:0;overflow:hidden;border-radius:8px}#clubDock.collapsed #clubDockBody,#clubDock.collapsed .panel{display:none!important}#clubDock{position:absolute;top:12pM
x;left:12px;width:236px;max-height:calc(100vh - 24px);overflow-y:auto;padding-top:36px;z-index:420;display:none;pointer-events:auto;font-family:ui-sans-serif,system-ui,-apple-system,sans-serif;background:rgba(18,18,20,.92);border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:10px 10px 12px;box-shadow:0 8px 28px rgba(0,0,0,.35);backdrop-filter:blur(14px);color:#e8e6e3}#clubDock .panel{background:0 0;border:none;box-shadow:none;border-radius:0;padding:8px 2px 10px;margin:0 0 4px;border-bottom:1px solid rM
gba(255,255,255,.06);color:#e8e6e3}#clubDock .panel:last-child{border-bottom:none;margin-bottom:0}#clubDock h3{margin:0 0 6px;font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.42)}#clubRoleLine{font-size:11px;color:rgba(255,255,255,.55);margin-bottom:6px}#clubDock button{width:100%;margin:3px 0 0;padding:5px 8px;font-size:11px;font-weight:500;letter-spacing:0;text-transform:none;border-radius:8px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.0M
8);color:#f2f1ee;box-shadow:none}#clubDock button:hover:not(:disabled){background:rgba(255,255,255,.11)}#clubDock button:disabled{opacity:.45;background:rgba(255,255,255,.04)}#clubPlayerList{font-size:11px}.club-row{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:4px 0;border-bottom:1px solid rgba(255,255,255,.05)}.club-row:last-child{border-bottom:none}.club-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:118px;font-size:11px}.club-tag{font-size:9px;letter-spaM
cing:.04em;padding:1px 6px;border-radius:99px;border:1px solid rgba(255,255,255,.12);color:rgba(255,255,255,.55)}.club-tag.host{color:#e6c36a;border-color:rgba(230,195,106,.35)}.club-tag.speak{color:#7bcfa0;border-color:rgba(123,207,160,.35)}.club-tag.wait{color:#8bb4e8;border-color:rgba(139,180,232,.35)}#clubDock button{min-width:0;width:100%;margin-top:4px;padding:6px 8px;font-size:10px;letter-spacing:.1em}#clubDock .club-actions button{width:auto;display:inline-block;margin:0 0 0 4px;padding:3px 8px;font-size:10M
px;min-width:0;pointer-events:auto;cursor:pointer}#clubMicBtn,#clubMuteBtn,#clubRoomMuteBtn,#clubScreenBtn,#clubSpeakBtn,#clubWalkBtn{width:100%;margin-top:4px}#clubMicHint{font-size:10px;color:rgba(255,255,255,.38);margin-top:6px}#screenUrlInput{width:100%;box-sizing:border-box;margin:4px 0;padding:6px 8px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);color:#eee;border-radius:8px;font-family:inherit;font-size:11px}#stageScreenFrame{position:fixed;left:0;top:0;width:1280px;height:720px;tranM
sform-origin:0 0;pointer-events:none;z-index:1;overflow:hidden;border:2px solid rgba(201,162,39,.55);border-radius:4px;background:#07060a;display:none}#stageScreenFrame.interact{pointer-events:auto;z-index:3}#stageScreenFrame iframe,#stageScreenFrame img{width:100%;height:100%;border:0;background:#000;pointer-events:inherit}canvas{position:fixed!important;inset:0;z-index:2!important;touch-action:none;background:0 0!important}#charPick{display:flex;flex-direction:column;align-items:center;gap:8px;margin:10px 0 4px}#M
charPick button{min-width:180px;margin-top:0}#pickMutant{min-width:260px;font-size:1.25rem;padding:14px 28px;letter-spacing:.08em}#charPick button.picked{background:rgba(196,165,116,.18);border-color:#d4b896}#omModelInput,#omAnimsInput{width:min(380px,82vw);padding:9px 12px;font-family:\"Cormorant Garamond\",Palatino,serif;font-size:1.05rem;background:rgba(12,12,14,.72);border:1px solid rgba(196,165,116,.35);color:#efe6d6;border-radius:1px;text-align:center;margin:6px 0 2px;letter-spacing:.04em}</style> <script typM
"three": "/content/0d013bb60fc5bf5a6c77da7371b07dc162ebc7d7f3af0ff3bd00ae5f0c546445i0",
"three/addons/loaders/GLTFLoader.js": "/content/af27eb654e3f1ce4036fd5b415fe441202f0c784e3e1e03cb63890b5e820297ci0",
"three/addons/loaders/DRACOLoader.js": "/content/701931ffd87e9a547834542357cbf5d975b740073aec9eeb62ef96254f570520i0"
}</script> </head><body><div id="customCursor"></div><div id="clubDock"><button id="clubDockToggle" type="button" title="Hide menu">
</button><div id="clubDockBody">M
<div class="panel"><h3>AUDITORIUM</h3><div id="clubRoleLine">Role: listener</div><button id="clubWalkBtn" type="button">Walk (back to avatar)</button><button id="clubSpeakBtn">Request to speak</button><button id="clubMicBtn" type="button">Enable microphone</button><button id="clubMuteBtn" type="button" style="display:none">Mute my mic</button><button id="clubRoomMuteBtn" type="button" style="display:none">Mute room</button><div id="clubMicHint" style="font-size:10px;color:#d4af37;margin-top:6px;opacity:.85">Mic onlM
y turns on from these buttons (needed inside iframes)</div></div><div class="panel" id="clubPeoplePanel"><h3>IN THE ROOM</h3><div id="clubPlayerList">
</div></div><div class="panel" id="clubScreenPanel" style="display:none"><h3>STAGE SCREEN</h3><input id="screenUrlInput" placeholder="https://
  (YouTube, image, site)"/><button id="clubScreenBtn">Show on stage</button><button id="clubUnmuteBtn" type="button">Unmute video</button><button id="clubShareBtn" type="button">Share window</button><button id="clubShareStM
opBtn" type="button" style="display:none">Stop share</button><div style="font-size:10px;color:#d4af37;margin-top:6px;opacity:.8">Host only
 many sites block embeds</div></div></div></div><div id="clubMixer" aria-label="Audio mix"> <div class="mix-title">Mix</div> <label>Voices <input id="mixVoice" type="range" min="0" max="200" value="140"/></label> <label>Screen <input id="mixJumbo" type="range" min="0" max="100" value="28"/></label> </div> <div id="stageScreenFrame"><audio id="stageShareAudio" autoplay playsinlM
ine></audio><video id="stageShareVideo" autoplay playsinline muted style="display:none"></video><iframe id="stageIframe" allow="autoplay; encrypted-media; picture-in-picture; fullscreen; accelerometer; gyroscope" allowfullscreen referrerpolicy="strict-origin-when-cross-origin"></iframe></div><div id="throttleIndicator"><div id="throttleFill"></div></div><div id="movePad" aria-hidden="true"><div class="pad-cross"></div><div class="pad-knob" id="movePadKnob"></div></div><button id="jumpBtn">JUMP</button><button id="cM
ameraCycleBtn" title="Camera: chase, far, orbit, first person">C</button><button id="pauseBtn">P</button><button id="micBtn" title="Voice chat" style="display:none!important">MIC</button><div id="overlay"><h1>OrdiMutants Executive Lounge</h1><p class="subtitle">Members salon
 the mutation is permanent</p><div id="status">Loading core assets...</div><div id="charPick"><button type="button" id="pickMutant">OrdiMutant</button><button type="button" id="pickSkull" class="picked">Skeleton</button></div><input id="charIM
dInput" type="text" placeholder="Your skull inscription"/><button id="enterCustomBtn">Present character</button><select id="mapSelect" style="display:none"><option value="club-hall" selected="selected">Club</option></select><button id="rulesBtn">House rules</button><button id="controlsBtn" type="button">Controls</button><button id="multiBtn">Executive rooms</button></div><div id="p2p-lobby"><div class="lobby-box"><div class="lobby-title">ORDIMUTANTS</div><div class="lobby-sub">EXECUTIVE LOUNGE</div><label class="loM
bby-label">Your Name</label><input id="lobbyNameInput" class="lobby-field" placeholder="Your name" maxlength="20" value="Guest"/><div id="liveGamesContainer"><div class="lobby-label" style="margin-top:4px">Open rooms</div><div id="liveGamesList"><div style="color:#0af;padding:8px;text-align:center;font-size:.85rem"> Looking for rooms
 </div></div><button class="lobby-btn small green" id="refreshLiveBtn" style="margin-top:8px"> REFRESH </button></div><button class="lobby-btn" id="lobbyHostBtn" style="margin-top:14M
px"> Open a room </button><div id="lobbyOfferCode" class="code-out" style="display:none"></div><button id="lobbyCopyOffer" style="display:none"></button><button id="searchLiveGamesBtn" style="display:none"></button><button id="newInviteBtn" style="display:none"></button><button id="manualPublishBtn" style="display:none"></button><div id="extraOffers" style="display:none"></div><textarea id="lobbyAnswerInput" style="display:none"></textarea><button id="lobbyAcceptBtn" style="display:none"></button><textarea id="lobbM
yPeerCode" style="display:none"></textarea><button id="lobbyJoinBtn" style="display:none"></button><div id="lobbyAnswerCode" class="code-out" style="display:none"></div><button id="lobbyCopyAnswer" style="display:none"></button><div id="lobbyHostControls" style="display:none"><div class="lobby-label" style="margin-top:8px">Connected players</div><div id="hostPlayerList" style="background:rgba(36,22,12,.7);border:1px solid #8a6a3b;border-radius:6px;padding:8px;font-size:.85rem;color:#e8d5a3;max-height:120px;overflowM
-y:auto;margin-bottom:8px">
 </div><button class="lobby-btn start-btn" id="lobbyStartBtn"> Enter room </button><div style="color:#0af;font-size:.8rem;margin-top:8px;text-align:center"> Live listing updates automatically
 late joiners can still find this game </div></div><button class="lobby-btn green" id="lobbyReturnToGameBtn" style="display:none;margin-top:10px"> RETURN TO GAME </button><div id="lobby-status">Enter a name
 open a room or join one below</div></div></div><div id="previewOverlay"><p>CUSTOM CHM
ARACTER LOADED SUCCESSFULLY</p><div id="previewButtons"><button id="startSingleFromPreview">Enter the salon</button><button id="goToMultiFromPreview">GO TO MULTIPLAYER LOBBY</button></div></div><div id="controlsOverlay"><h2>Controls</h2><ul><li>W A S D move, Shift run, Space jump</li><li>C crouch</li><li>Click or fire throws the ball, plays Throw</li><li>J punch, H hit</li><li>1 and 2 dance</li><li>4 pistol hold, 5 pistol shoot, 6 reload</li><li>7 rifle hold, 8 rifle shoot</li><li>Three hits play Death, then respawM
n</li><li>V or the camera button cycles the view</li></ul><button id="controlsClose" type="button">Close</button></div><div id="rulesOverlay"><h2>LOUNGE RULES</h2><ul><li>W A S D
 MOVE &nbsp;|&nbsp; SHIFT
 JUMP &nbsp;|&nbsp; C
 CROUCH</li><li>MOUSE
 TURN &nbsp;|&nbsp; V
 CYCLE CAMERA</li><li>CLICK
 PUNCH &nbsp;|&nbsp; H
 PISTOL HOLD &nbsp;|&nbsp; 5
 SHOOT &nbsp;|&nbsp; 6
 RIFLE SHOOT</li><li>THREE HITS
 DEATH, THEN RESPAWN</li><li>MIC
 SPEAK only if the host accepts you</li><li>L
 LOBBY WHILE PAUSED &nbsp;|&nbsp; ESC
 RELEASE POINTER</li><li>MOBILE: pad to walk, JUMP to jump, drag to turn</li></ul><p><strong>ORDIMUTANT LOUNGE:</strong> A members salon. Walk the floor, gather at the stage, and request the mic like an X Space. Only accepted speakers transmit. Everyone hears the speakers. The host picks what appears on the stage screen.</p><button class="cM
lose-btn" id="closeRules">BACK TO MENU / GAME</button></div><button id="pauseRulesBtn">House rules</button><div id="hud"> CAM: <span id="camMode">CHASE</span>
 IN ROOM: <span id="playerCount">1</span></div><div id="pauseHint"> Paused
 <strong>L</strong> members lounge
 <strong>P</strong> return </div><div id="chatModeHint"> MENU
 ESC or Walk to return to your avatar </div><div id="chat-container"><div id="chat-messages"></div><input id="chat-input" type="text" placeholder="Type message and press ENTER to M
send..." maxlength="200"/></div><div id="freezeCharge"><div class="label" id="chargeLabel">FREEZE CHARGE</div><div class="bar-outer"><div id="chargeBar" class="bar-inner"></div></div></div> <script src="/r/sat/957337645267059/at/-1/content"></script> <script type="text/placeholder-removed"></script> <div id="cpIndicator" style="display:none"></div> <div id="scoreboard" style="display:none"><div id="scoreList"></div></div> <div id="flagCarryHint" style="display:none"></div> <div id="lavaPowerHint" style="display:nonM
e"></div> <div id="ctfHud" style="display:none"><div id="ctfScoreLine"></div><div id="ctfTeamLine"></div></div> <canvas id="ctfRadar" width="120" height="120" style="display:none"></canvas> <button id="teamToggleBtn" type="button" style="display:none"></button> <script type="module">import*as THREE from"three";import{GLTFLoader}from"three/addons/loaders/GLTFLoader.js";import{DRACOLoader}from"three/addons/loaders/DRACOLoader.js";const DRACO_WRAPPER_ID="1c59d4d184bfaadf33e641456d540dba14edc8d383d84634a418d75f149e1683M
i1",DRACO_WASM_ID="1c59d4d184bfaadf33e641456d540dba14edc8d383d84634a418d75f149e1683i2";let _gltfLoader=null;async function makeGltfLoader(){if(_gltfLoader)return _gltfLoader;const e=new GLTFLoader;try{const t=new DRACOLoader;t._initDecoder=function(){if(this.decoderPending)return this.decoderPending;const e=this;return this.decoderPending=Promise.all([fetch("/content/"+DRACO_WRAPPER_ID).then(e=>e.text()),fetch("/content/"+DRACO_WASM_ID).then(e=>e.arrayBuffer())]).then(t=>{const a=new Function(t[0]+"\nreturn DracoDeM
coderModule;")();return new Promise((o,n)=>{const r=a({wasmBinary:t[1],onModuleLoaded:t=>{e._draco=t,o(t)}});r&&r.then&&r.then(t=>{e._draco||(e._draco=t,o(t))}).catch(n)})}),this.decoderPending},t.preload=function(){return this._initDecoder(),this};const a=t.decodeDracoFile.bind(t);t.decodeDracoFile=function(e,t,o,n,r,s){const l={};if(n)for(const e in n){const t=n[e];l[e]="function"==typeof t?t.name:t}return a(e,function(e){!e||e.attributes,t(e)},o,l,r,function(e){s&&s(e)})},e.setDRACOLoader(t)}catch(e){}return _glM
tfLoader=e,e}const NOSTR_RELAYS=["wss://nos.lol","wss://nostr.wine","wss://relay.damus.io","wss://relay.nostr.band","wss://nostr-pub.wellorder.net","wss://relay.primal.net","wss://nostr.orangepill.dev"],KENOBI_GAME_NAMESPACE="OMLOUNGE",KENOBI_HEARTBEAT_INTERVAL=8e3,LIVE_GAME_MAX_AGE_SEC=120,LIVE_GAME_DROP_SEC=180,LIVE_SEARCH_SINCE_SEC=900;let nostrSecretKey=null,nostrPubkey=null;const liveGamesByRoom=new Map;let liveListRefreshTimer=null;function initNostrKeys(){if(nostrSecretKey)return!0;if(void 0===window.NostrSiM
gn)return!1;try{return nostrSecretKey=window.NostrSign.generateSecretKey(),nostrPubkey=window.NostrSign.getPublicKey(nostrSecretKey),!0}catch(e){return!1}}let nostrSockets=[],nostrRoomId=null,kenobiHeartbeatTimer=null,lastConnectTime=0,isHostWithKenobi=!1;function attachNostrHandlers(e,t){e.onmessage=e=>{try{const t=JSON.parse(e.data);if("EVENT"===t[0]&&t[2]&&30311===t[2].kind){if(t[2].tags.some(e=>"t"===e[0]&&"OMLOUNGE"===e[1])){t[2].tags.find(e=>"answer"===e[0])?handleAnswerEvent(t[2]):handleLiveGameEvent(t[2])}}M
}catch(e){}},e.onerror=()=>e.onclose=()=>{nostrSockets=nostrSockets.filter(t=>t!==e&&t.readyState!==WebSocket.CLOSED)}}function subscribeLiveFilter(e,t){if(e.readyState!==WebSocket.OPEN)return;const a=Math.floor(Date.now()/1e3),o=(t?"search-":"live-")+Date.now()+"-"+Math.random().toString(36).slice(2,6),n={kinds:[30311],"#t":["OMLOUNGE"],since:a-900};try{e.send(JSON.stringify(["REQ",o,n]))}catch(e){}}function connectNostrRelays(e=!1,t=!1){const a=Date.now();if(!t&&a-lastConnectTime<(e?1200:2500))return void(e&&nostM
rSockets.forEach(e=>subscribeLiveFilter(e,!0)));lastConnectTime=a,nostrSockets=nostrSockets.filter(e=>e.readyState===WebSocket.OPEN||e.readyState===WebSocket.CONNECTING);const o=new Set(nostrSockets.map(e=>e._relayUrl).filter(Boolean));NOSTR_RELAYS.forEach(t=>{if(o.has(t)){const a=nostrSockets.find(e=>e._relayUrl===t);return void(a&&a.readyState===WebSocket.OPEN&&subscribeLiveFilter(a,e))}try{const a=new WebSocket(t);a._relayUrl=t,a.onopen=()=>{subscribeLiveFilter(a,e)},attachNostrHandlers(a,t),nostrSockets.push(a)M
}catch(e){}}),liveListRefreshTimer||(liveListRefreshTimer=setInterval(renderLiveGamesList,3e3))}function getMapDisplayName(e){const t=MAP_DEFS[e||currentMapId];return t&&t.name||e||"OM Lounge"}function publishKenobiHeartbeat(e,t){if(!nostrRoomId)return;0===nostrSockets.filter(e=>e.readyState===WebSocket.OPEN).length&&connectNostrRelays(!1,!0);const a=initNostrKeys(),n=null!=t?t:1+remotePlayers.size,r=(document.getElementById("lobbyNameInput")&&document.getElementById("lobbyNameInput").value.trim()||(myPlayerID||"HoM
st").split("-")[0]||"Host").slice(0,20),s="OM Lounge",l=`${s}
 ${n} Players`,i={kind:30311,created_at:Math.floor(Date.now()/1e3),tags:[["d",nostrRoomId],["t","OMLOUNGE"],["t",s],["title",l],["status","live"],["offer",e||""],["players",String(n)],["map",currentMapId||"club-hall"],["host",r]],content:l};let c=i;if(a)try{c=window.NostrSign.finalizeEvent(i,nostrSecretKey)}catch(e){}let d=0;nostrSockets.forEach(e=>{if(e.readyState===WebSocket.OPEN)try{e.send(JSON.stringify(["EVENT",c])),d++}catch(e){}}),0===d&M
&connectNostrRelays(!1,!0)}function publishAnswerToNostr(e,t){0===nostrSockets.length&&connectNostrRelays(!0);const a=initNostrKeys(),o={kind:30311,created_at:Math.floor(Date.now()/1e3),tags:[["t","OMLOUNGE"],["offer",e],["answer",t],["type","answer"]],content:"Answer for offer"};let n=o;if(a)try{n=window.NostrSign.finalizeEvent(o,nostrSecretKey)}catch(e){}nostrSockets.forEach(e=>{e.readyState===WebSocket.OPEN&&e.send(JSON.stringify(["EVENT",n]))})}function startKenobiLobbyPing(e){kenobiHeartbeatTimer&&clearIntervaM
l(kenobiHeartbeatTimer),nostrRoomId="pod-"+Math.random().toString(36).substring(2,11),isHostWithKenobi=!0,connectNostrRelays(!1,!0);const t=()=>{publishKenobiHeartbeat(document.getElementById("lobbyOfferCode")&&document.getElementById("lobbyOfferCode").textContent||hostOfferCodes&&hostOfferCodes[0]||e,1+remotePlayers.size)};setTimeout(t,600),setTimeout(t,2e3),kenobiHeartbeatTimer=setInterval(t,8e3),window._kenobiVisBound||(window._kenobiVisBound=!0,document.addEventListener("visibilitychange",()=>{"visible"===documM
ent.visibilityState&&isHost&&isHostWithKenobi&&nostrRoomId&&t()}))}function handleLiveGameEvent(e){const t=e.tags.find(e=>"d"===e[0]),a=t?t[1]:null;if(a&&a===nostrRoomId)return;const o=e.tags.find(e=>"offer"===e[0]);if(!o||!o[1])return;const n=o[1],r=e.tags.find(e=>"title"===e[0]),s=e.tags.find(e=>"players"===e[0]),l=e.tags.find(e=>"map"===e[0]),i=e.tags.find(e=>"host"===e[0]),c=s&&parseInt(s[1],10)||1,d=l?getMapDisplayName(l[1]):"Map",u=i?i[1]:"",m=r?r[1]:`${d}${u?"
 ${c} Players`,p=a||n.substring(0,4M
8),y=liveGamesByRoom.get(p);y&&e.created_at<y.createdAt||(liveGamesByRoom.set(p,{offer:n,title:m,players:c,mapName:d,createdAt:e.created_at,updatedAt:Date.now()}),renderLiveGamesList())}function renderLiveGamesList(){const e=document.getElementById("liveGamesList");if(!e)return;const t=Date.now()/1e3;for(const[e,a]of liveGamesByRoom)t-a.createdAt>180&&liveGamesByRoom.delete(e);const a=[];for(const[e,o]of liveGamesByRoom)t-o.createdAt<=120&&a.push({key:e,...o});a.sort((e,t)=>t.createdAt-e.createdAt),a.length?(e.inneM
rHTML="",a.forEach(t=>{const a=document.createElement("div");a.className="live-game-item",a.dataset.offer=t.offer,a.dataset.room=t.key;const o=(t.title||`OM Lounge
 ${t.players} Players`).replace(/^CSC\s*[
]\s*/i,"").replace(/\s*[
]\s*Club Hall\b/ig,"").replace(/\b(\d+)p\b/gi,"$1 Players");a.innerHTML=`<div><strong>${o}</strong></div><button class="lobby-btn small green" style="width:auto;padding:4px 12px;font-size:10px;">JOIN</button>`,a.querySelector("button").onclick=e=>{e.stopImmediatePropagationM
();const a=document.getElementById("lobbyPeerCode");a&&(a.value=t.offer),document.getElementById("lobbyJoinBtn").click()},e.appendChild(a)})):e.innerHTML='<div style="color:#888;padding:10px;text-align:center;font-size:0.85rem;">No open rooms right now
 open one!</div>'}const usedAnswerTokens=new Set;function handleAnswerEvent(e){if(!isHost)return;const t=e.tags.find(e=>"offer"===e[0]),a=e.tags.find(e=>"answer"===e[0]);if(!t||!a)return;const o=t[1],n=a[1];if(!n||usedAnswerTokens.has(n))return;if(!hostOfferCodes.M
includes(o))return;pcList.some(e=>e&&"have-local-offer"===e.signalingState)&&(usedAnswerTokens.add(n),document.getElementById("lobbyAnswerInput").value=n,setTimeout(()=>{const e=document.getElementById("lobbyAcceptBtn");e&&e.click()},300))}function searchLiveGames(){const e=document.getElementById("liveGamesList");e&&(e.innerHTML='<div style="color:#0af;padding:8px;text-align:center;font-size:0.85rem;">Scanning relays for live games
</div>'),connectNostrRelays(!0),setTimeout(renderLiveGamesList,2500)}const MINIONM
_ID="a4ece09037d2e227554c6c6a7c0fe1b15d7ce94510adbe5eef575b852c351152i0";try{THREE.Cache&&(THREE.Cache.enabled=!1)}catch(e){}const SAMPLE_SKULL_ID="e40a2dd269eb0e878b658df30ac779085cee71ac0601a4c546b2d6aea802b7d2i0";let minionTemplate=null,minionMixer=null,minionActions={},minionRoot=null;const MINION_SCALE_MENU=4.5,MINION_SCALE=5.69;let jumpRequested=!1,jumpHeld=!1,jumpStartY=0,jumpStartAt=0;const MAX_JUMP_HEIGHT=280,MAX_JUMP_HOLD_MS=1400;let currentAnim="";const FALLBACK_ID="53efe58237bf922eb0b2989af602e180921955M
62b47fff8174739da90cd3d9b7i0",BLOCK_TEXTURE_ID="c5ceb6b6cd1bcc564a9167bab9586691b254a0ea0155858dafbb0d1b9cd64a9di0",STAR_ID="893344c8a0205d190e8dc1f36f54530b2501ff821aa560e5cfbecf08288cdc40i0",LAVA_ID="d2bf68f7c49e947e24f856d9fb15c3b6deefc1268cac684dfe8fb91f10207ea0i0",POD_YAW_OFFSET=Math.PI,MAP_DEFS={"club-hall":{name:"Club Hall",mode:"club",domeModelId:"cefc55835b4fc10e9ba5c3f09e634cad0705b2c7f108deed84dccff03e03770di0",castleTexId:"7070c3300760fcbd1764b1daed9ed20717363e02d861ebd5f34658848e6df642i0",content:null,M
duneScale:.28,innerWall:!1,outerRadiusOverride:2700,groundTexId:"f7af8e2672a0ed4670ca0ad8ce5f3b8de2a93c64f0cdcb4e563cef863fd18783i0",groundRepeat:28,wallTexId:"16d53cd3cba7e0853d7dc0ea3a3f9133a96cbfeedac95fc442926d12fb103f82i0",skyTexId:"b1a6b0a7dc61eeb4764607ab0505d571b4e42a6b31ca0e2d0c9bc8fe7014ac97i0"}};let scene,camera,renderer,cart,playerModel,skyDome,terrainMesh,currentMapId="club-hall",gameMode="club",lastBuiltMapId=null,loadedMapScripts=new Set,mapScriptPromises={},applyingHostMap=null,coreGrassTex=null,corM
eWallTex=null,coreSkyTex=null,activeGrassTex=null,activeWallTex=null,activeTrackTex=null,trackSurfaceMesh=null,wallMeshList=[],mapObstacleList=[],mapExtraColliders=[],solidBoxes=[],keys={},mouseXNormalized=0,mouseYNormalized=0,cameraMode="chase",droneSide=0,droneYawPrev=0,gameStarted=!1,paused=!1,previewMode=!1,multiplayerMode=!1,pendingGuestStart=!1,inLobby=!0,controlsEnabled=!0,typingChat=!1;function fieldIsVisible(e){if(!e||!e.getBoundingClientRect)return!1;const t=window.getComputedStyle(e);if("none"===t.displaM
y||"hidden"===t.visibility||"0"===t.opacity)return!1;let a=e;for(;a&&a!==document.body;){const e=window.getComputedStyle(a);if("none"===e.display||"hidden"===e.visibility)return!1;a=a.parentElement}const o=e.getBoundingClientRect();return o.width>2&&o.height>2}function isTypingNow(){const e=document.activeElement;if(!e)return!!typingChat;const t=(e.tagName||"").toUpperCase();return"INPUT"===t||"TEXTAREA"===t||"SELECT"===t||e.isContentEditable?!!fieldIsVisible(e)&&!(gameStarted&&!clubUiMode&&"screenUrlInput"!==e.id&M
&"chat-input"!==e.id):!!typingChat}function clearMoveKeys(){["w","a","s","d","arrowup","arrowdown","arrowleft","arrowright"," ","space","shift"].forEach(e=>{keys[e]=!1}),jumpHeld=!1,jumpRequested=!1}let menuShowcaseActive=!0,showcaseModel=null,car={pos:new THREE.Vector3(0,120,0),vel:new THREE.Vector3(0,0,0),rotation:0,pitch:0,onGround:!0};const PITCH_MAX=1.52,PITCH_RATE=1.85;let lastFwdVel=0,orbitAzimuth=0,orbitPolar=0,orbitRadius=30,orbitTarget=new THREE.Vector3,isDragging=!1,lastMouseX=0,lastMouseY=0,colliders=[]M
,projectiles=[],lastFireTime=0;const FIRE_COOLDOWN=2100;function getFireCooldown(){return"ctf"===gameMode?1050:2100}function updateChargeMeterUI(){const e=document.getElementById("freezeCharge"),t=document.getElementById("chargeLabel");e&&t&&(hasLavaPower?(e.classList.add("lava-ready"),t.textContent="Lava Ready"):(e.classList.remove("lava-ready"),t.textContent="FREEZE CHARGE"))}function updateFlagCarryHint(){const e=document.getElementById("flagCarryHint");if(!e)return;let t=!1;t="ctf"===gameMode?CTF.redHolder===myM
PlayerID||CTF.blueHolder===myPlayerID:flagHolder===myPlayerID,e.style.display=t&&gameStarted?"block":"none"}let slowEndTime=0,consecutiveFreezeHits=0,scores=new Map,crouchOn=!1,emoteUntil=0;const PROJECTILE_SPEED=405,MAX_PROJECTILE_DIST=2550,PROJECTILE_GRAVITY=-84,FREEZE_DURATION=5e3;let flagCooldown=0,stealCooldown=0;const STEAL_COOLDOWN_MS=1500;let droppedFlagPos=null,flagHomePos=null;const TERRAIN_SIZE=5e3,TERRAIN_SEGMENTS=160,BASE_HEIGHT=0,DUNE_AMPLITUDE=18,DUNE_FREQ_LARGE=.0099,DUNE_FREQ_MED=.0054,DUNE_FREQ_SMM
ALL=.0098,JUMP_HUMPS=[{cx:-120,cz:-180,height:190,radius:160},{cx:140,cz:-60,height:44,radius:135},{cx:-10,cz:220,height:180,radius:280},{cx:80,cz:90,height:70,radius:145}],MAX_SPEED_BASE=180,MAX_SPEED_BOOST_MUL=1.25,COAST_DRAG=.78,ACCEL_DRAG=.993,ACCEL=36,TURBO_MUL=1.55,BRAKE_FORCE=25,REVERSE_FORCE=12.5,REVERSE_MAX=-38/3.6,TURN_RATE_BASE=1.7,TURN_MULT=1.35,BASE_LATERAL_GRIP=.42,MIN_LATERAL_GRIP=.18,GRIP_DROP_SPEED=180,GRIP_FULL_DROP=260,STEER_DEADZONE=.05,MOUSE_SMOOTH=.2,AUTO_COUNTER=.18,GRAVITY=-250,GROUND_RESTITM
UTION=.5,LATERAL_VEL_THRESHOLD=2/3.6,FWD_VEL_BRAKE_THRESHOLD=2/3.6,OUTER_RADIUS=6900,INNER_RADIUS=6650,MEANDER_AMP=170,MEANDER_WAVES=10,GAP_ANGLES_DEFAULT=[{center:.25*Math.PI,width:.048*Math.PI},{center:.75*Math.PI,width:.048*Math.PI},{center:1.25*Math.PI,width:.048*Math.PI},{center:1.75*Math.PI,width:.048*Math.PI}],GAP_ANGLES_SNAKE=[{center:.25*Math.PI,width:.024*Math.PI},{center:.5*Math.PI,width:.024*Math.PI},{center:.75*Math.PI,width:.024*Math.PI},{center:1.25*Math.PI,width:.024*Math.PI},{center:1.5*Math.PI,widM
th:.024*Math.PI},{center:1.75*Math.PI,width:.024*Math.PI}];function getGapAngles(){const e=MAP_DEFS[currentMapId];return e&&(e.trackAspect||1)>1.2?GAP_ANGLES_SNAKE:GAP_ANGLES_DEFAULT}function getTrackParams(){const e=MAP_DEFS[currentMapId]||MAP_DEFS["club-hall"],t=e.trackAspect>0?e.trackAspect:1,a=null!=e.meanderLong?e.meanderLong:170,o=null!=e.meanderShort?e.meanderShort:170,n=null!=e.meanderWaves?e.meanderWaves:10,r=e.trackWidthScale>0?e.trackWidthScale:1,s=e.outerRadiusOverride>0?e.outerRadiusOverride:6900,l=250M
*r,i=!!e.chaosArena||!1===e.innerWall;return{aspect:t,openArena:i,outerRx:s,outerRz:s*t,innerRx:i?1:s-l,innerRz:i?1:(s-l)*t,meanderLong:a,meanderShort:o,waves:n,terrainSize:i?2*s:Math.max(5e3,s*t*2.35),floorHalf:i?s:null}}function getWallPoint(e,t){const a=getTrackParams(),o=t?a.innerRx:a.outerRx,n=t?a.innerRz:a.outerRz;let r,s;if(a.aspect>1.15){const t=Math.pow(Math.abs(Math.sin(e)),2);r=a.meanderShort+(a.meanderLong-a.meanderShort)*t,s=1}else r=170,s=1;const l=r*Math.sin(a.waves*s*e),i=o*Math.sin(e),c=n*Math.cos(M
e),d=Math.hypot(i,c)||1;return{x:i+i/d*l,z:c+c/d*l,theta:e}}function isOnTrackXZ(e,t){const a=getTrackParams();if((MAP_DEFS[currentMapId]||{}).chaosArena||a.floorHalf){const o=(a.floorHalf||a.outerRx)+40;return Math.abs(e)<=o&&Math.abs(t)<=o}const o=.55*Math.max(a.meanderLong,170)+80,n=e*e/Math.pow(a.outerRx+o,2)+t*t/Math.pow(a.outerRz+o,2)<=1;if(a.openArena)return n;const r=Math.max(40,.35*o),s=e*e/Math.pow(Math.max(80,a.innerRx-r),2)+t*t/Math.pow(Math.max(80,a.innerRz-r),2)<=1;return n&&!s}const SHRINK_ENDS_BY=.5M
,COL_SEGMENT_LEN=3,EXTRA_MARGIN=.1,RESTITUTION=.35,WALL_FRICTION=.98,POS_CORRECTION=.8,MAX_COLLISION_ITER=4,DISCONNECT_TIMEOUT_MS=22e3,DISCONNECT_HOST_GRACE_MS=4e4;let netKeepaliveTimer=null,peerPingTimer=null;const CHECKPOINT_ANGLES=[0,Math.PI/2,Math.PI,3*Math.PI/2];let flagPoleMesh,flagMesh,heldFlagMesh,checkpointStars=[],myCompletedCheckpoints=new Set,myLaps=0,playerLaps=new Map,flagHolder=null,myTeam=null,teamScores={red:0,blue:0};const CTF={redHolder:null,blueHolder:null,redDrop:null,blueDrop:null,redHome:nullM
,blueHome:null,redPole:null,bluePole:null,redFlagMesh:null,blueFlagMesh:null,heldRedMesh:null,heldBlueMesh:null};let starGLTF,lavaGLTF,lavaPatches=[],myLapStartTime=0,myLapPausedTime=0,myLapIsPaused=!1,playerLapTimes=new Map,dustParticles=[],hasLavaPower=!1,touchThrottle=0,padKeys={w:0,a:0,s:0,d:0},padRamp=0,padTouchId=null,ignoreMouseSteerUntil=0,coarsePointer=!1;function isPhoneUI(){const e=navigator.userAgent||"";return!!/Mobi|Android|iPhone|iPod|webOS|BlackBerry/i.test(e)||!!(/iPad/i.test(e)||"MacIntel"===navigM
ator.platform&&navigator.maxTouchPoints>1)}let touchSteer=0,throttleTouchId=null,steerTouchId=null,steerTouchStartX=0,steerTouchStartY=0,potentialFireTouch=null,hudVisible=!0;function updateCursorForLobby(){"none"!==document.getElementById("overlay").style.display||"none"!==document.getElementById("p2p-lobby").style.display||"none"!==document.getElementById("previewOverlay").style.display||"none"!==document.getElementById("rulesOverlay").style.display?document.body.style.cursor='url("data:image/svg+xml,%3Csvg xmlnsM
=%27http://www.w3.org/2000/svg%27 width=%2732%27 height=%2732%27 viewBox=%270 0 24 24%27%3E%3Ctext y=%2720%27 font-size=%2720%27%3E%F0%9F%92%80%3C/text%3E%3C/svg%27") 16 16, auto':gameStarted&&(document.body.style.cursor="none")}const SMALL_SKY_ID="b1a6b0a7dc61eeb4764607ab0505d571b4e42a6b31ca0e2d0c9bc8fe7014ac97i0",BLOCKED_TEX=["4aabdef09087eec3f1e46a631a90d205c230542db7dc69c1b5a6cdb8ffe15910i0","dee0872513415146a6d47576ad4ae48b51ab58081c4b6eca49f7fa919cf26575i0"];function texUrlBlocked(e){const t=String(e||"");retM
urn BLOCKED_TEX.some(e=>-1!==t.indexOf(e))}{const e=THREE.TextureLoader.prototype.load;THREE.TextureLoader.prototype.load=function(t,a,o,n){return texUrlBlocked(t)?("function"==typeof n&&n(),this):e.call(this,t,a,o,n)}}function loadTex(e){return!e||texUrlBlocked(e)?Promise.resolve(null):new Promise(t=>{(new THREE.TextureLoader).load(e,e=>{e.flipY=!1,e.wrapS=e.wrapT=THREE.RepeatWrapping;try{void 0!==THREE.SRGBColorSpace&&(e.colorSpace=THREE.SRGBColorSpace)}catch(e){}t(e)},void 0,()=>t(null))})}function normalizeCharM
Id(e){const t=String(e||"").trim(),a=t.match(/([0-9a-fA-F]{64}i[0-9]+)/);return a?a[1]:/^[0-9a-fA-F]{64}$/.test(t)?t+"i0":""}function readMyCharIdFromInput(){const e=document.getElementById("charIdInput"),t=normalizeCharId(e&&e.value)||SAMPLE_SKULL_ID;return myCharId=t,t}function uniqueTex(e){if(!e)return null;const t=e.clone();t.needsUpdate=!0,t.flipY=!1,t.wrapS=t.wrapT=THREE.RepeatWrapping;try{void 0!==THREE.SRGBColorSpace&&(t.colorSpace=THREE.SRGBColorSpace)}catch(e){}return t}function absContent(e){if(!e)returnM
 null;const t=String(e).match(/([0-9a-fA-F]{64}i0)/);return t?`/content/${t[1]}`:String(e).startsWith("/")?e:null}async function parseCscTexturePack(e){const t=(e||"").trim(),a=t?t.replace(/i0$/,"")+"i0":SAMPLE_SKULL_ID,o={skinUrl:null,skyUrl:null,envUrl:null,modelUrl:null};try{const e=await fetch(`/content/${a}`);if(!e.ok)return o;const t=await e.text(),n=(new DOMParser).parseFromString(t,"text/html"),r=n.querySelector("model-viewer");r&&(o.modelUrl=absContent(r.getAttribute("src")),o.skyUrl=absContent(r.getAttribM
ute("skybox-image")||r.getAttribute("skyboxImage")),o.envUrl=null);const s=n.querySelectorAll("script");for(const e of s){const t=e.textContent||"",a=t.match(/const\s+textureFilePath\s*=\s*["']([^"']+)["']/)||t.match(/textureFilePath\s*=\s*["']([^"']+)["']/);a&&(o.skinUrl=absContent(a[1]));const n=t.match(/const\s+skybox(?:Texture|Image|FilePath|Path)?\s*=\s*["']([^"']+)["']/)||t.match(/skyboxImage\s*=\s*["']([^"']+)["']/);n&&!o.skyUrl&&(o.skyUrl=absContent(n[1]))}o.envUrl=null}catch(e){}return o}function applyPackM
ToMinion(e,t){const{skin:a,sky:o}=t,n=uniqueTex(a),r=uniqueTex(o)||n;e.traverse(e=>{if(!e.isMesh)return;const t=(Array.isArray(e.material)?e.material:e.material?[e.material]:[null]).map(t=>{const a=(t&&t.name||e.name||"").toLowerCase(),o=new THREE.MeshStandardMaterial({name:t&&t.name||e.name||"minion",color:16777215,metalness:.28,roughness:.35,side:THREE.DoubleSide});return a.includes("glow")||a.includes("eye")?(r&&(o.map=uniqueTex(r),o.emissiveMap=o.map),o.emissive=new THREE.Color(16772744),o.emissiveIntensity=1.1M
):n&&(o.map=uniqueTex(n),o.emissiveMap=o.map,o.emissive=new THREE.Color(3355443),o.emissiveIntensity=.55),o.needsUpdate=!0,o});e.material=1===t.length?t[0]:t})}function parallelTraverse(e,t,a){a(e,t);for(let o=0;o<e.children.length;o++)t.children[o]&&parallelTraverse(e.children[o],t.children[o],a)}function cloneSkinned(e){const t=new Map,a=new Map,o=e.clone(!0);return parallelTraverse(e,o,(e,o)=>{t.set(e,o),a.set(o,e)}),o.visible=!0,o.traverse(e=>{if(e.visible=!0,e.isMesh&&e.material&&(e.material=Array.isArray(e.maM
terial)?e.material.map(e=>e.clone()):e.material.clone()),!e.isSkinnedMesh||!e.skeleton)return;const o=a.get(e);if(!o||!o.skeleton)return;const n=o.skeleton.bones.map(e=>t.get(e)).filter(Boolean);e.bind(new THREE.Skeleton(n,o.skeleton.boneInverses.slice()),o.bindMatrix.clone())}),o}function playAnimOn(e,t){if(!e||!e.userData||!e.userData.actions)return;const a=e.userData.actions;if(e.userData.currentAnim===t)return;const o=a[t]||a.Idle;if(o){const once=/^(Jump|Death|Punch|Hit|Throw|PistolShoot|RifleShoot|Reload)$/i.M
test(t),n=once?1:"Walk"===t?1.65:"Run"===t?.62:1;o.setLoop(once?THREE.LoopOnce:THREE.LoopRepeat,once?1:1/0),o.clampWhenFinished=once,o.timeScale=n,Object.values(a).forEach(e=>{e!==o&&e.fadeOut(.15)}),o.reset().fadeIn(.15).play(),o.timeScale=n,e.userData.currentAnim=t}}function cacheSwingBones(e){if(!e)return;const t={};e.traverse(e=>{const a=(e.name||"").toLowerCase();"upperarm.l"===a||a.endsWith("upperarm.l")?t.aL=e:"upperarm.r"===a||a.endsWith("upperarm.r")?t.aR=e:"lowerarm.l"===a||a.endsWith("lowerarm.l")?t.eL=eM
:("lowerarm.r"===a||a.endsWith("lowerarm.r"))&&(t.eR=e)}),["aL","aR","eL","eR"].forEach(e=>{t[e]&&!t[e+"Q"]&&(t[e+"Q"]=t[e].quaternion.clone())}),e.userData.swingPack=t,e.userData.swingReady=!(!t.aL||!t.aR)}const _swingQ=new THREE.Quaternion,_swingZ=new THREE.Vector3(0,0,1),_swingX=new THREE.Vector3(1,0,0);function poseSwing(e,t,a){e&&t&&(e.quaternion.copy(t),_swingQ.setFromAxisAngle(_swingZ,a),e.quaternion.multiply(_swingQ),_swingQ.setFromAxisAngle(_swingX,.45*a),e.quaternion.multiply(_swingQ))}const _armHold={},_M
armNames=["LeftShoulder","RightShoulder","LeftArm","RightArm","LeftForeArm","RightForeArm","LeftHand","RightHand"];let _armHoldFor=0;function restoreThrowArms(e){if(!_armHoldFor)return;_armNames.forEach(function(t){e[t]&&_armHold[t]&&e[t].quaternion.copy(_armHold[t])}),_armHoldFor=0}function baseThrowArms(e){const t=throwPoseUntil;if(_armHoldFor!==t){_armNames.forEach(function(t){e[t]&&(_armHold[t]=e[t].quaternion.clone())}),_armHoldFor=t}else _armNames.forEach(function(t){e[t]&&_armHold[t]&&e[t].quaternion.copy(_aM
rmHold[t])})}function applyArmSwing(e,t){if(!/walk|run/i.test(t)||Date.now()<throwPoseUntil)return;const a=/run/i.test(t);let o=0;if(e.LeftUpLeg){_fixE.setFromQuaternion(e.LeftUpLeg.quaternion,"XYZ"),o=_fixE.x}const n=a?.62:.4,r=a?.22:.4,i=a?.95:.4;["Left","Right"].forEach(function(t){const l=t==="Right"?1:-1,c=t==="Left"?-1:1,u=e[t+"Arm"],f=e[t+"ForeArm"];u&&(_fixQ.setFromAxisAngle(_fixZ,-r*l),u.quaternion.multiply(_fixQ),_fixQ.setFromAxisAngle(_fixX,c*o*n-(a?.32:0)),u.quaternion.multiply(_fixQ)),f&&(_fixQ.setFromM
AxisAngle(_fixX,-i),f.quaternion.multiply(_fixQ),_fixQ.setFromAxisAngle(_fixZ,-.2*l),f.quaternion.multiply(_fixQ))})}const _fixQ=new THREE.Quaternion,_fixE=new THREE.Euler,_fixX=new THREE.Vector3(1,0,0),_fixY=new THREE.Vector3(0,1,0),_fixZ=new THREE.Vector3(0,0,1);function fixMutantPose(){if(!minionRoot)return;const e={};minionRoot.traverse(function(t){t.isBone&&t.name&&(e[t.name]=t)});applyArmSwing(e,minionRoot.userData.currentAnim||"");if(crouchOn)["LeftUpLeg","RightUpLeg"].forEach(function(t){e[t]&&(_fixQ.setFroM
mAxisAngle(_fixX,.28),e[t].quaternion.multiply(_fixQ))}),["LeftLeg","RightLeg"].forEach(function(t){e[t]&&(_fixQ.setFromAxisAngle(_fixX,-.5),e[t].quaternion.multiply(_fixQ))});if(Date.now()<throwPoseUntil){baseThrowArms(e);const t=700-Math.max(0,throwPoseUntil-Date.now()),a=t<140?1:Math.max(0,1-(t-140)/460),o="Right";["Left","Right"].forEach(function(t){const n=t===o?1:-1,r=e[t+"Arm"],i=e[t+"ForeArm"];r&&(_fixQ.setFromAxisAngle(_fixZ,-1.15*n*a),r.quaternion.multiply(_fixQ),_fixQ.setFromAxisAngle(_fixY,.42*n*a),r.quM
aternion.multiply(_fixQ)),i&&(_fixQ.setFromAxisAngle(_fixZ,-.95*n*a),i.quaternion.multiply(_fixQ))})}else restoreThrowArms(e)}function playMinionAnim(e){playAnimOn(minionRoot,e),currentAnim=e,minionRoot&&minionRoot.userData&&(minionMixer=minionRoot.userData.mixer,minionActions=minionRoot.userData.actions)}let attackUntil=0;function playEmote(e,t,a){const o=minionRoot&&minionRoot.userData&&minionRoot.userData.actions||minionActions||{},n=Object.keys(o).find(t=>t.toLowerCase()===String(e).toLowerCase());if(!n)return M
void(a&&a());playMinionAnim(n),emoteUntil=Date.now()+(t||700),attackUntil=emoteUntil,a&&setTimeout(a,t||700)}let throwPoseUntil=0;function playThrowAnim(){throwPoseUntil=Date.now()+700,emoteUntil=throwPoseUntil,attackUntil=throwPoseUntil;return;const e=minionRoot&&minionRoot.userData&&minionRoot.userData.actions||minionActions||{},t=Object.keys(e).find(e=>/throw/i.test(e));if(t)return playMinionAnim(t),void(attackUntil=Date.now()+480);if(!minionRoot)return;let a=null;if(minionRoot.traverse(e=>{if(a||!e.isBone)returM
n;const t=e.name.toLowerCase();(t.includes("right")||t.endsWith("_r")||t.endsWith(".r"))&&(t.includes("arm")||t.includes("hand")||t.includes("shoulder"))&&(a=e)}),!a)return;const o=a.rotation.clone();a.rotation.x-=1.15,attackUntil=Date.now()+280,setTimeout(()=>{a&&a.rotation.copy(o)},280)}function bindMinionClips(e,t){const a=new THREE.AnimationMixer(t),o={},n=e.animations||[],r=n.find(e=>/walk/i.test(e.name)),s=n.find(e=>/run/i.test(e.name));return n.forEach(e=>{o[e.name]=a.clipAction(e)}),t.userData.mixer=a,t.useM
rData.actions=o,t.userData.currentAnim="",playAnimOn(t,"Idle"),a.update(0),t.userData.swingReady=!1,cacheSwingBones(t),a}function patchGlbDropEmptyAccessors(e){try{const t=new Uint8Array(e),a=new DataView(e);if(1179937895!==a.getUint32(0,!0))return e;const o=a.getUint32(12,!0),n=JSON.parse((new TextDecoder).decode(t.subarray(20,20+o)));if(!n.accessors||!n.animations)return e;let r=!1;for(const e of n.animations){const t=[];for(const a of e.channels||[]){const o=e.samplers[a.sampler];if(!o)continue;const s=n.accessoM
rs[o.output],l=n.accessors[o.input];s&&void 0!==s.bufferView&&l&&void 0!==l.bufferView?t.push(a):r=!0}e.channels=t}if(!r)return e;const s=(new TextEncoder).encode(JSON.stringify(n)),l=(4-s.length%4)%4,i=new Uint8Array(s.length+l);i.set(s,0);for(let e=s.length;e<i.length;e++)i[e]=32;const c=i.length,d=20+o,u=t.subarray(d),m=new Uint8Array(20+c+u.length),p=new DataView(m.buffer);return p.setUint32(0,1179937895,!0),p.setUint32(4,2,!0),p.setUint32(8,m.byteLength,!0),p.setUint32(12,c,!0),p.setUint32(16,1313821514,!0),m.M
set(i,20),m.set(u,20+c),m.buffer}catch(t){return e}}async function loadMinionTemplate(){return minionTemplate||new Promise(async e=>{const t=await makeGltfLoader();fetch(`/content/${MINION_ID}`).then(e=>{if(!e.ok)throw new Error("minion HTTP "+e.status);return e.arrayBuffer()}).then(a=>{const o=patchGlbDropEmptyAccessors(a);t.parse(o,"",t=>{minionTemplate=t,t.scene&&(t.scene.visible=!1),e(t)},t=>{const a=document.getElementById("status");a&&(a.textContent="Minion GLB failed."),e(null)})}).catch(t=>{e(null)})})}
st OM_MODEL_ID="76e8ed3cf79ff6b7c020f03c9a265709a41b6cd9197ec5732a15479a23ea45d3i0";const OM_ANIMS_ID="da68cab4f26065b15c2a4f74856393d49334f46529e238498be81bf1062f58fci0";const OM_TEXTURE_ID="57ff07ad8376f6cfdc2c2bfe42a16ba6b99c983ea463e9a33cc148985e736ed3i0";let characterKind="skull";function omInscription(e,t){const a=new URLSearchParams(location.search).get(e);if(a&&/^[0-9a-f]{64}i[0-9]+$/i.test(a))return a;const o=document.getElementById(t);const n=(o&&o.value||"").trim();const r=n.match(/([0-9a-fA-F]{64}i[0-9]M
+)/);return r?r[1]:(t==="omModelInput"?OM_MODEL_ID:OM_ANIMS_ID)}function isOmChar(e){const t=omInscription("omModel","omModelInput");return!!(e&&t&&String(e).toLowerCase().indexOf(String(t).toLowerCase().slice(0,64))===0)}async function parseInscribedGlb(e){const t=await makeGltfLoader(),a=await fetch("/content/"+e);if(!a.ok)throw new Error("inscription "+e+" HTTP "+a.status);const o=await a.arrayBuffer();return await new Promise(function(n,r){t.parse(o,"",n,r)})}function amplifyOmTrack(e,t){const a=e.name,o=a.lastM
IndexOf("."),n=a.slice(0,o).toLowerCase(),r=a.slice(o+1),s=e.values;if("position"===r&&n.indexOf("hip")>=0){const e=s[0],a=s[1],o=s[2];for(let n=0;n<s.length;n+=3)s[n]=e+(s[n]-e)*t,s[n+1]=a+(s[n+1]-a)*t,s[n+2]=o+(s[n+2]-o)*t;return}if("rotation"!==r||!/arm|leg|foot|hand|hip|thigh|shin/.test(n))return;const l=new THREE.Quaternion(s[0],s[1],s[2],s[3]).normalize(),i=l.clone().invert(),c=new THREE.Quaternion,d=new THREE.Quaternion;for(let e=0;e<s.length;e+=4){c.set(s[e],s[e+1],s[e+2],s[e+3]).normalize();d.copy(i).multiM
ply(c);let a=2*Math.acos(Math.max(-1,Math.min(1,d.w)));if(a>1e-4){const e=Math.sin(a/2)||1,o=d.x/e,n=d.y/e,r=d.z/e,l=a*t,i=Math.sin(l/2);d.set(o*i,n*i,r*i,Math.cos(l/2))}c.copy(l).multiply(d);s[e]=c.x,s[e+1]=c.y,s[e+2]=c.z,s[e+3]=c.w}}function flexOmElbow(e,t){const a=e.values,o=new THREE.Quaternion,n=new THREE.Quaternion().setFromAxisAngle(new THREE.Vector3(1,0,0),t);for(let e=0;e<a.length;e+=4)o.set(a[e],a[e+1],a[e+2],a[e+3]).multiply(n),a[e]=o.x,a[e+1]=o.y,a[e+2]=o.z,a[e+3]=o.w}function styleOmRun(e){for(let t=0M
;t<e.tracks.length;t++){const a=e.tracks[t],o=a.name.toLowerCase();if(o.indexOf("hips")>=0&&o.endsWith("position")){const e=a.values,t=e[1];for(let a=0;a<e.length;a+=3){e[a]=e[0]+(e[a]-e[0])*1.05;e[a+2]=e[2]+(e[a+2]-e[2])*1.05;e[a+1]=t+(e[a+1]-t)*1.25}}else if(o.indexOf("upleg")>=0)amplifyOmTrack(a,1.4);else if(o.indexOf("forearm")>=0)flexOmElbow(a,-0.85);else if(o.indexOf("hand")>=0)flexOmElbow(a,-1.2);else if(/leg|foot/.test(o))amplifyOmTrack(a,1.2);else if(o.indexOf("arm")>=0&&o.indexOf("fore")<0)amplifyOmTrack(M
a,1.25)}}function styleOmWalk(e){for(let t=0;t<e.tracks.length;t++){const a=e.tracks[t],o=a.name.toLowerCase();if(o.indexOf("hand")>=0)flexOmElbow(a,-0.4);else if(o.indexOf("forearm")>=0)flexOmElbow(a,-0.22);else amplifyOmTrack(a,1.3)}}function retargetOmClips(e,t){const a={};t.traverse(function(e){if(e.name)a[e.name]=e});const idle=(e.animations||[]).find(function(e){return/^idle$/i.test(e.name)});const rest={};idle&&idle.tracks.forEach(function(e){const t=e.name.lastIndexOf("."),a=e.name.slice(0,t),o=e.name.sliceM
(t+1);if("quaternion"!==o&&"rotation"!==o)return;rest[a]=new THREE.Quaternion(e.values[0],e.values[1],e.values[2],e.values[3]).normalize()});return(e.animations||[]).map(function(e){const t=[];for(let n=0;n<e.tracks.length;n++){const o=e.tracks[n],r=o.name.lastIndexOf("."),s=o.name.slice(0,r),l=o.name.slice(r+1),c=a[s];if(!c)continue;const u=o.clone();if(u.name=s+"."+l,("quaternion"===l||"rotation"===l)&&rest[s]&&c.quaternion&&(!/^(walk|run)$/i.test(e.name)||/Arm|Shoulder|Hand/.test(s))){const e=rest[s].clone().invM
ert(),t=c.quaternion.clone().normalize(),a=new THREE.Quaternion,o=u.values;for(let n=0;n<o.length;n+=4)a.set(o[n],o[n+1],o[n+2],o[n+3]).normalize(),a.premultiply(e).premultiply(t),o[n]=a.x,o[n+1]=a.y,o[n+2]=a.z,o[n+3]=a.w}t.push(u)}return new THREE.AnimationClip(e.name,e.duration,t)})}let omTemplate=null;function loadOmTexture(){return new Promise(function(e){const t=new THREE.TextureLoader();t.load("/content/"+OM_TEXTURE_ID,function(t){try{t.colorSpace=THREE.SRGBColorSpace}catch(a){}t.flipY=false;t.wrapS=t.wrapT=TM
HREE.ClampToEdgeWrapping;t.needsUpdate=true;e(t)},void 0,function(){e(null)})})}async function loadOrdiMutant(e){const t=omInscription("omModel","omModelInput"),a=omInscription("omAnims","omAnimsInput");if(!t||!a)throw new Error("Paste the model and animation inscription ids");if(!omTemplate){const n=await parseInscribedGlb(t);const r=await parseInscribedGlb(a);omTemplate={scene:n.scene,animations:retargetOmClips(r,n.scene),texture:await loadOmTexture()}}const o=!e||e.local!==false;const n=cloneSkinned(omTemplate.sM
cene);n.visible=true;n.traverse(function(e){e.visible=true;if(e.isMesh){e.castShadow=true;e.frustumCulled=false;if(e.material){const m=e.material;m.side=THREE.DoubleSide;if(omTemplate.texture){m.map=omTemplate.texture;m.emissiveMap=null;if(m.color)m.color.set(16777215);if(m.emissive)m.emissive.set(0);if("metalness" in m)m.metalness=0;if("roughness" in m)m.roughness=1}m.needsUpdate=true}}if(e.isSkinnedMesh)e.frustumCulled=false});n.scale.setScalar(12.2904);n.userData.isMutant=true;n.userData.isPlayerChar=true;n.userM
Data.skullId=t;bindMinionClips(omTemplate,n);if(o){minionRoot=n;minionMixer=n.userData.mixer;minionActions=n.userData.actions;myCharId=t}return n}function setCharacterKind(e){characterKind=e;const t=e==="mutant";if(t)myCharId=OM_MODEL_ID;const a=document.getElementById("pickSkull");const o=document.getElementById("pickMutant");const n=document.getElementById("charIdInput");if(a)a.classList.toggle("picked",!t);if(o)o.classList.toggle("picked",t);if(n)n.style.display=t?"none":"";try{localStorage.setItem("om-kind",e)}M
catch(a){}}async function loadSkinnedMinion(e,t){if((!t||!1!==t.local)&&characterKind==="mutant"||isOmChar(e))return loadOrdiMutant(t&&t.local===false?{local:false}:{local:true});const a=await loadMinionTemplate();if(!a)return null;const o=!t||!1!==t.local,n=cloneSkinned(a.scene);n.visible=!0,n.traverse(e=>{e.visible=!0,e.isMesh&&(e.castShadow=!0,e.frustumCulled=!1,e.visible=!0,e.material&&(e.material.side=THREE.DoubleSide,e.material.transparent=!1,e.material.depthWrite=!0,e.material.needsUpdate=!0)),e.isSkinnedMesM
h&&(e.frustumCulled=!1)});const r=normalizeCharId(e)||SAMPLE_SKULL_ID,s=await parseCscTexturePack(r);return applyPackToMinion(n,{skin:await loadTex(s.skinUrl),sky:null}),n.scale.setScalar(5.69),n.position.set(0,0,0),n.rotation.set(0,0,0),n.userData.isMinion=!0,n.userData.isPlayerChar=!0,n.userData.skullId=r,bindMinionClips(a,n),o&&(minionRoot=n,minionMixer=n.userData.mixer,minionActions=n.userData.actions),n}function applyEmissiveAndTexture(e,t=null){e.traverse(e=>{if(e.isMesh&&e.material){(Array.isArray(e.materialM
)?e.material:[e.material]).forEach(e=>{t&&(e.map=t,e.emissiveMap=t),e.emissive=new THREE.Color(4473924),e.emissiveIntensity=.85,e.needsUpdate=!0})}})}async function getModelAndTexture(e){const t=`/content/${e}`;try{const e=await fetch(t);if(!e.ok)throw new Error(`Fetch failed: ${e.status}`);const a=await e.text(),o=(new DOMParser).parseFromString(a,"text/html");let n=null;const r=o.querySelector("model-viewer");r&&r.hasAttribute("src")&&(n=r.getAttribute("src"));let s=null;const l=o.querySelectorAll("script");for(lM
et e of l){const t=(e.textContent||"").match(/const\s+textureFilePath\s*=\s*["']([^"']+)["']/);if(t&&t[1]){s=t[1];break}}return{modelUrl:n,textureUrl:s}}catch(e){return{modelUrl:null,textureUrl:null}}}const IMAGE_SPHERE_MODEL_ID="c569b9ea81d2bc78fd86b328c7c1659b193f461ceb1c1ae9e79ac21e2713a171i0";let imageSphereTemplate=null;async function ensureImageSphere(){return imageSphereTemplate||new Promise(e=>{(new GLTFLoader).load(`/content/${IMAGE_SPHERE_MODEL_ID}`,t=>{const a=t.scene;a.traverse(e=>{e.isMesh&&(e.castShadM
ow=!0)}),imageSphereTemplate=a,e(a)},void 0,t=>{e(null)})})}async function probeIsImageInscription(e){try{let t=await fetch(`/content/${e}`,{method:"HEAD"});if(t.ok&&t.headers.get("content-type")||(t=await fetch(`/content/${e}`,{method:"GET"})),!t.ok)return!1;const a=(t.headers.get("content-type")||"").toLowerCase();if(a.startsWith("image/"))return!0;if(a.includes("octet-stream")||""===a||a.includes("binary")){const e=await t.clone().arrayBuffer(),a=new Uint8Array(e.slice(0,12));if(137===a[0]&&80===a[1]&&78===a[2]&M
&71===a[3])return!0;if(255===a[0]&&216===a[1]&&255===a[2])return!0;if(71===a[0]&&73===a[1]&&70===a[2])return!0;if(82===a[0]&&73===a[1]&&70===a[2]&&70===a[3]&&87===a[8]&&69===a[9]&&66===a[10]&&80===a[11])return!0}return!1}catch(e){return!1}}async function loadImageSphereCharacter(e){try{const t=await new Promise(t=>{(new THREE.TextureLoader).load(`/content/${e}`,e=>t(e),void 0,()=>t(null))});if(!t)return null;t.flipY=!0,t.wrapS=THREE.ClampToEdgeWrapping,t.wrapT=THREE.ClampToEdgeWrapping,t.repeat.set(1,1),t.offset.seM
t(0,0);try{void 0!==THREE.SRGBColorSpace?t.colorSpace=THREE.SRGBColorSpace:void 0!==THREE.sRGBEncoding&&(t.encoding=THREE.sRGBEncoding)}catch(e){}const a=new THREE.SphereGeometry(1,64,48),o=new THREE.MeshStandardMaterial({map:t,emissiveMap:t,emissive:new THREE.Color(2236962),emissiveIntensity:.45,metalness:.08,roughness:.55}),n=new THREE.Mesh(a,o);n.castShadow=!0;const r=new THREE.Group;return r.add(n),r.scale.setScalar(1.65),r.position.set(0,2.25,-.4),r.rotation.y=-Math.PI/2,r.userData.isImageSphere=!0,r}catch(e){M
return null}}const LORDINAL_MODEL_ID="c33b6ea4e111364a094e28176a52208a977c2010bcef2a4c7fd10ab25b9f7515i0",LORDINAL_CATALOG_ID="67bfb966121e697a0bbc773567bf30bf59b95364f2e8e8c00bf2a80e54210018i0";let lordinalBodyTemplate=null,lordinalTextureIds=null;function parseLordinalCatalog(e){const t=[],a=/\[\s*\d+\s*,\s*["']([0-9a-fA-Fi]+)["']\s*\]/g;let o;for(;null!==(o=a.exec(e));)t.push(o[1]);return t.length?t:null}async function ensureLordinalCatalog(){if(lordinalTextureIds)return lordinalTextureIds;try{const e=await fetcM
h(`/content/${LORDINAL_CATALOG_ID}`);if(!e.ok)throw new Error("catalog HTTP "+e.status);const t=await e.text();return lordinalTextureIds=parseLordinalCatalog(t),lordinalTextureIds}catch(e){return null}}async function ensureLordinalBody(){return lordinalBodyTemplate||new Promise(e=>{(new GLTFLoader).load(`/content/${LORDINAL_MODEL_ID}`,t=>{const a=t.scene;a.traverse(e=>{e.isMesh&&(e.castShadow=!0)}),lordinalBodyTemplate=a,e(a)},void 0,t=>{e(null)})})}function applyLordinalProjectedUVs(e){e.updateMatrixWorld(!0);consM
t t=(new THREE.Box3).setFromObject(e),a=t.getSize(new THREE.Vector3);if(a.x<1e-6||a.y<1e-6)return;const o=new THREE.Vector3;e.traverse(e=>{if(!e.isMesh||!e.geometry)return;e.geometry=e.geometry.clone();const n=e.geometry.attributes.position,r=new Float32Array(2*n.count);for(let s=0;s<n.count;s++)o.fromBufferAttribute(n,s),e.localToWorld(o),r[2*s]=(o.x-t.min.x)/a.x,r[2*s+1]=(t.max.y-o.y)/a.y;e.geometry.setAttribute("uv",new THREE.BufferAttribute(r,2))})}function applyTextureToModel(e,t){if(t){t.flipY=!1,t.wrapS=t.wrM
apT=THREE.RepeatWrapping;try{void 0!==THREE.SRGBColorSpace?t.colorSpace=THREE.SRGBColorSpace:void 0!==THREE.sRGBEncoding&&(t.encoding=THREE.sRGBEncoding)}catch(e){}e.traverse(e=>{if(!e.isMesh||!e.material)return;const a=(Array.isArray(e.material)?e.material:[e.material]).map(e=>{const a=e.clone();return a.map=t,a.emissiveMap=t,a.emissive=new THREE.Color(2236962),a.emissiveIntensity=.6,"metalness"in a&&(a.metalness=.05,a.roughness=.55),a.needsUpdate=!0,a});e.material=Array.isArray(e.material)?a:a[0]})}}async functioM
n loadLordinalFromEntry(e){try{const t=await fetch(`/content/${e}`);if(!t.ok)return null;const a=(await t.text()).match(/P\s*=\s*(\d+)/);if(!a)return null;const o=parseInt(a[1],10),n=await ensureLordinalCatalog();if(!n||o<1||o>n.length)return null;const r=n[o-1],s=await ensureLordinalBody();if(!s)return null;const l=s.clone(!0);l.scale.setScalar(2.04),l.position.set(0,1.55,-.4),l.rotation.y=0,l.userData.isLordinal=!0,applyLordinalProjectedUVs(l);const i=await new Promise(e=>{(new THREE.TextureLoader).load(`/contentM
/${r}`,t=>e(t),void 0,()=>e(null))});return i?applyTextureToModel(l,i):applyEmissiveAndTexture(l),l}catch(e){return null}}function finalizeCscModel(e,t,a){if(e.scale.setScalar(.8),e.traverse(e=>{e.isMesh&&(e.castShadow=!0)}),e.position.set(0,.35,-.4),e.rotation.y=0,t){t.flipY=!1;try{void 0!==THREE.SRGBColorSpace?t.colorSpace=THREE.SRGBColorSpace:void 0!==THREE.sRGBEncoding&&(t.encoding=THREE.sRGBEncoding)}catch(e){}applyEmissiveAndTexture(e,t)}else applyEmissiveAndTexture(e);return modelCache.set(a,e),e.clone()}asyM
nc function loadCharacterModel(e){try{let t=(e||"").trim(),a=t.replace(/i0$/,"")+"i0";if(t&&"i0"!==a||(a=FALLBACK_ID),modelCache.has(a))return modelCache.get(a).clone();let o="";const n=await probeIsImageInscription(a);if(!n)try{const e=await fetch(`/content/${a}`);e.ok&&(o=await e.text())}catch(e){}if(/P\s*=\s*\d+/.test(o)){const e=await loadLordinalFromEntry(a);if(e)return modelCache.set(a,e),e.clone(!0)}if(n){const e=await loadImageSphereCharacter(a);if(e)return modelCache.set(a,e),e.clone(!0)}let r=await getModM
elAndTexture(a);return r&&r.modelUrl?new Promise(e=>{(new GLTFLoader).load(r.modelUrl,t=>{const o=t.scene;r.textureUrl?(new THREE.TextureLoader).load(r.textureUrl,t=>e(finalizeCscModel(o,t,a)),void 0,()=>e(finalizeCscModel(o,null,a))):e(finalizeCscModel(o,null,a))},void 0,t=>{e(null)})}):a!==FALLBACK_ID&&(r=await getModelAndTexture(FALLBACK_ID),r&&r.modelUrl)?new Promise(e=>{(new GLTFLoader).load(r.modelUrl,t=>{e(finalizeCscModel(t.scene,null,FALLBACK_ID))},void 0,()=>e(null))}):null}catch(e){return null}}async funM
ction preloadCoreAssets(){const e=[];e.push(new Promise((e,t)=>{(new THREE.TextureLoader).load("/content/ca1be2e1bcda5cd624ea2c73995f470fa58674187f196c1571cc69e827aa1d13i0",t=>{t.wrapS=t.wrapT=THREE.RepeatWrapping,t.repeat.set(160,160),e(t)},void 0,t)})),e.push(new Promise((e,t)=>{(new THREE.TextureLoader).load("/content/b1a6b0a7dc61eeb4764607ab0505d571b4e42a6b31ca0e2d0c9bc8fe7014ac97i0",e,void 0,t)})),e.push(new Promise((e,t)=>{(new THREE.TextureLoader).load(`/content/${BLOCK_TEXTURE_ID}`,e,void 0,t)})),e.push(newM
 Promise((e,t)=>{(new GLTFLoader).load("/content/756a5fe7b548354837d57c4c1db157f4bc7b9ac603033163fe41e3359bf35e70i0",t=>{cart=t.scene,cart.scale.setScalar(1.8),cart.traverse(e=>{e.isMesh&&(e.castShadow=!0,e.receiveShadow=!0)}),e()},void 0,t)})),e.push(new Promise((e,t)=>{(new GLTFLoader).load(`/content/${STAR_ID}`,t=>{starGLTF=t,starGLTF.scene.scale.setScalar(12),e()},void 0,t)})),e.push(new Promise((e,t)=>{(new GLTFLoader).load(`/content/${LAVA_ID}`,t=>{lavaGLTF=t,e()},void 0,t)}));try{const[t,a,o]=await Promise.aM
ll(e);return coreGrassTex=t,coreSkyTex=a,coreWallTex=o,activeGrassTex=t,activeWallTex=o,statusEl.textContent="The house is prepared",startBtn&&(startBtn.disabled=!1),ensureLordinalBody().catch(()=>{}),ensureLordinalCatalog().catch(()=>{}),ensureImageSphere().catch(()=>{}),{grassTex:t,skyTex:a,wallTex:o}}catch(e){return statusEl.textContent="Some assets failed to load
 proceeding anyway",startBtn&&(startBtn.disabled=!1),ensureLordinalBody().catch(()=>{}),ensureLordinalCatalog().catch(()=>{}),ensureImageSphere().cM
atch(()=>{}),null}}function getTerrainHeight(e,t){const a=MAP_DEFS[currentMapId]||MAP_DEFS["club-hall"],o=void 0!==a.duneScale?a.duneScale:1,n=a.floorLift||0;let r=0;r+=18*o*Math.sin(.0099*e+.0099*t*.7),r+=18*o*.6*Math.sin(.0054*e*1.4+.0054*t*.9+1.7),r+=18*o*.35*Math.sin(.0098*e*2.3+.0098*t*1.8+4.1);const s=a.chaosArena?1.35:"club"===a.mode?0:1;return s>0&&JUMP_HUMPS.forEach(o=>{const n=e-o.cx,l=t-o.cz,i=n*n+l*l,c=Math.exp(-i/(o.radius*o.radius*2*(a.chaosArena?1.2:1)));r+=o.height*s*c*c}),r+n}function buildTerrain(M
e){const t=getTrackParams(),a=t.terrainSize,o=t.aspect>1.2?Math.min(220,200):160,n=new THREE.PlaneGeometry(a,a,o,o);n.rotateX(-Math.PI/2);const r=n.attributes.position.array;for(let e=0;e<r.length;e+=3){const t=r[e],a=r[e+2];r[e+1]=getTerrainHeight(t,a)}n.computeVertexNormals();const s=n.attributes.position.array,l=[];for(let e=0;e<s.length;e+=3){const t=isOnTrackXZ(s[e],s[e+2])?.42:1;l.push(.82*t,.91*t,.78*t)}n.setAttribute("color",new THREE.Float32BufferAttribute(l,3));const i=new THREE.MeshStandardMaterial({map:M
e,vertexColors:!0,roughness:.88,metalness:.06});terrainMesh=new THREE.Mesh(n,i),terrainMesh.receiveShadow=!0,scene.add(terrainMesh)}function clearTrackSurface(){if(trackSurfaceMesh){scene.remove(trackSurfaceMesh);try{trackSurfaceMesh.geometry.dispose(),trackSurfaceMesh.material&&(trackSurfaceMesh.material.map&&(trackSurfaceMesh.material.map=null),trackSurfaceMesh.material.dispose())}catch(e){}trackSurfaceMesh=null}}function buildBlueTrackSurface(){clearTrackSurface();const e=[],t=[];for(let t=0;t<=360;t++){const a=M
t/360*Math.PI*2,o=getWallPoint(a,!1),n=getWallPoint(a,!0),r=getTerrainHeight(o.x,o.z)+1.5,s=getTerrainHeight(n.x,n.z)+1.5;e.push(o.x,r,o.z),e.push(n.x,s,n.z)}for(let e=0;e<360;e++){const a=2*e,o=a+1,n=a+2,r=a+3;t.push(a,o,n,o,r,n)}const a=new THREE.BufferGeometry;a.setAttribute("position",new THREE.Float32BufferAttribute(e,3)),a.setIndex(t),a.computeVertexNormals();const o=new THREE.MeshStandardMaterial({color:1735423,emissive:671129,emissiveIntensity:.55,roughness:.65,metalness:.08,side:THREE.DoubleSide});trackSurM
faceMesh=new THREE.Mesh(a,o),trackSurfaceMesh.receiveShadow=!0,scene.add(trackSurfaceMesh)}function buildWall(e,t,a=!1){t.flipY=!1;const o=getGapAngles();let n=[];for(let e=0;e<7200;e++){const t=e/7200*Math.PI*2,r=getWallPoint(t,a),s=r.x,l=r.z;let i=getTerrainHeight(s,l);if(a){let e=!1;for(const a of o){const o=Math.abs(t-a.center),n=Math.abs(t-(a.center+2*Math.PI)),r=Math.abs(t-(a.center-2*Math.PI));if(Math.min(o,n,r)<a.width/2){e=!0;break}}e&&(i-=100)}n.push(new THREE.Vector3(s,i,l))}n[0].distanceTo(n[n.length-1]M
)>1&&n.push(n[0].clone());let r=[0],s=0;for(let e=2;e<n.length;e++){let t=n[s],a=n[e];if(a.distanceTo(t)>35){r.push(e-1),s=e-1;continue}let o=0;const l=a.clone().sub(t).clone().normalize();for(let a=s+1;a<e;a++){const e=n[a],r=e.clone().sub(t).dot(l),s=t.clone().addScaledVector(l,r),i=e.distanceTo(s);i>o&&(o=i)}o>.4&&(r.push(e-1),s=e-1)}0!==r[r.length-1]&&r.push(0);for(let e=0;e<r.length-1;e++){let o=r[e],s=r[e+1],l=n[o],i=n[s],c=l.clone().add(i).multiplyScalar(.5),d=i.clone().sub(l),u=d.length();if(u<.5)continue;lM
et m=d.clone().normalize(),p=Math.atan2(m.x,m.z)+Math.PI/2;const y=new THREE.BoxGeometry(1,23,2),h=new THREE.MeshStandardMaterial({map:t,roughness:.92,metalness:.08});{const e=MAP_DEFS[currentMapId]||{},t=null!=e.wallRepeatY?e.wallRepeatY:4;h.map.repeat.set(1,t)}h.map.wrapS=h.map.wrapT=THREE.RepeatWrapping,h.needsUpdate=!0;const f=new THREE.Mesh(y,h);f.castShadow=!0,f.receiveShadow=!0;const g=u/1;f.scale.set(g,1,1),f.position.copy(c),f.position.y+=9.2,f.rotation.y=p,f.userData.isMapWall=!0,f.userData.isInnerWall=!!M
a,scene.add(f),wallMeshList.push(f);const b=Math.max(1,Math.ceil(u/3));for(let e=0;e<b;e++){let t=e/b,o=(e+1)/b;const n=0===e||e===b-1?.5:.1;if(t+=n/u,o-=n/u,t>=o)continue;const r=l.clone().lerp(i,t),s=l.clone().lerp(i,o),c=r.clone().add(s).multiplyScalar(.5),d=r.distanceTo(s),y=2,h=23,f=new THREE.Mesh(new THREE.BoxGeometry(d,h,y),new THREE.MeshBasicMaterial({visible:!1}));f.position.copy(c),f.position.y+=h/2.5,f.rotation.y=p;const g=new THREE.Vector3(m.z,0,-m.x).normalize();a&&g.negate(),f.userData={wallDir:m.clonM
e(),wallNormal:g,isMapWall:!0,isInnerWall:!!a},scene.add(f),colliders.push(f)}}}function clearLavaPatches(){lavaPatches.forEach(e=>{e.mesh&&!e.fromChaosProp&&scene.remove(e.mesh)}),lavaPatches=[]}function buildLavaPatches(e){if(!(lavaGLTF||e&&MAP_DEFS[currentMapId]?.chaosArena))return;if(e||clearLavaPatches(),!lavaGLTF)return;const t=MAP_DEFS[currentMapId]||{},a="ctf"===t.mode,o=null!=t.lavaCount?t.lavaCount:a?16:2,n=[];if(t.chaosArena){const e=JUMP_HUMPS[0]||{cx:-120,cz:-180},t=JUMP_HUMPS[2]||{cx:-10,cz:220};n.pusM
h({x:e.cx,z:e.cz,yOffset:6},{x:t.cx,z:t.cz,yOffset:6})}else if(a){const e=6900*.55;for(let t=0;t<o;t++)n.push({angle:t/o*Math.PI*2,useEllipse:!1,radius:e,yOffset:2})}else if(o>=12||t.trackAspect>1)for(let e=0;e<o;e++)n.push({angle:e/o*Math.PI*2,useEllipse:!0,yOffset:2});else n.push({angle:.25*Math.PI,useEllipse:!0,yOffset:2},{angle:1.25*Math.PI,useEllipse:!0,yOffset:2});const r=a?22.5:7.5,s=a?55:42;n.forEach(e=>{let t,a;if(null!=e.x&&null!=e.z)t=e.x,a=e.z;else if(e.useEllipse){const o=getWallPoint(e.angle,!1),n=getM
WallPoint(e.angle,!0);t=.5*(o.x+n.x),a=.5*(o.z+n.z)}else t=e.radius*Math.sin(e.angle),a=e.radius*Math.cos(e.angle);const o=getTerrainHeight(t,a)+e.yOffset,n=lavaGLTF.scene.clone();n.scale.set(7.5,r,7.5),n.position.set(t,o,a),n.rotation.y=e.angle+Math.PI/2,scene.add(n);const l=new THREE.AnimationMixer(n);lavaGLTF.animations&&lavaGLTF.animations.length>0&&lavaGLTF.animations.forEach(e=>{const t=l.clipAction(e);t.setLoop(THREE.LoopRepeat),t.play()}),lavaPatches.push({mesh:n,mixer:l,pos:new THREE.Vector3(t,o,a),radius:M
s})})}function createDustParticle(){}function updateDustParticles(){}function clearCheckpointsAndFlag(){checkpointStars.forEach(e=>{e.mesh&&scene.remove(e.mesh)}),checkpointStars=[],flagPoleMesh&&(scene.remove(flagPoleMesh),flagPoleMesh=null),flagMesh&&(scene.remove(flagMesh),flagMesh=null),heldFlagMesh&&(heldFlagMesh.parent&&heldFlagMesh.parent.remove(heldFlagMesh),heldFlagMesh=null),flagHomePos=null}function buildCheckpoints(){if(clearCheckpointsAndFlag(),!starGLTF)return;const e=MAP_DEFS[currentMapId]||{};let t=M
[];if(e.chaosArena){const a=.9*(e.outerRadiusOverride||chaosWallRadius||1400);t=[{x:a,z:a},{x:a,z:-a},{x:-a,z:-a},{x:-a,z:a}]}else for(let e=0;e<4;e++){const a=CHECKPOINT_ANGLES[e],o=getWallPoint(a,!1),n=getWallPoint(a,!0);t.push({x:.5*(o.x+n.x),z:.5*(o.z+n.z)})}for(let e=0;e<4;e++){const a=t[e].x,o=t[e].z,n=getTerrainHeight(a,o)+12,r=starGLTF.scene.clone();r.position.set(a,n,o),scene.add(r);const s=new THREE.AnimationMixer(r);if(starGLTF.animations&&starGLTF.animations.length>0){s.clipAction(starGLTF.animations[0]M
).play()}checkpointStars.push({mesh:r,mixer:s})}const a=t[0].x,o=t[0].z,n=getTerrainHeight(a,o)+60;flagPoleMesh=new THREE.Mesh(new THREE.CylinderGeometry(2,2,240,8),new THREE.MeshPhongMaterial({color:11184810,emissive:11184810,emissiveIntensity:2})),flagPoleMesh.position.set(a,n,o),scene.add(flagPoleMesh),flagMesh=new THREE.Mesh(new THREE.PlaneGeometry(24,18),new THREE.MeshPhongMaterial({color:43775,side:THREE.DoubleSide,emissive:65535,emissiveIntensity:3,transparent:!0,opacity:.95})),flagMesh.position.set(a,n+120,M
o),flagMesh.rotation.y=Math.atan2(a,o)+Math.PI/2,flagHomePos=flagMesh.position.clone(),scene.add(flagMesh),heldFlagMesh=new THREE.Mesh(new THREE.PlaneGeometry(12,9),new THREE.MeshPhongMaterial({color:43775,side:THREE.DoubleSide,emissive:65535,emissiveIntensity:4})),heldFlagMesh.visible=!1}const customCursor=document.getElementById("customCursor"),statusEl=document.getElementById("status"),startBtn=document.getElementById("startBtn"),pauseHint=document.getElementById("pauseHint"),chatModeHint=document.getElementByIdM
("chatModeHint"),lavaPowerHint=document.getElementById("lavaPowerHint"),modelCache=new Map,chatContainer=document.getElementById("chat-container"),chatMessages=document.getElementById("chat-messages"),chatInput=document.getElementById("chat-input"),chargeBar=document.getElementById("chargeBar"),scoreboard=document.getElementById("scoreboard"),scoreList=document.getElementById("scoreList"),cpIndicator=document.getElementById("cpIndicator"),pauseRulesBtn=document.getElementById("pauseRulesBtn"),throttleIndicator=docuM
ment.getElementById("throttleIndicator"),throttleFill=document.getElementById("throttleFill"),cameraCycleBtn=document.getElementById("cameraCycleBtn"),pauseBtn=document.getElementById("pauseBtn");let pcList=[],dcList=[],voiceOn=!1,localMicStream=null;const voicePcs=new Map,sharePcs=new Map,voiceAudioEls=new Map;function rtcConf(){return{iceServers:[{urls:"stun:stun.l.google.com:19302"},{urls:"stun:stun1.l.google.com:19302"},{urls:"stun:stun2.l.google.com:19302"},{urls:"stun:stun.cloudflare.com:3478"}]}}function senM
dToPeer(e,t){if(!e)return;const a=JSON.stringify(Object.assign({id:myPlayerID,to:e},t));let o=0;dcList.forEach(t=>{if(t&&"open"===t.readyState&&t._peerId===e)try{t.send(a),o++}catch(e){}}),o||dcList.forEach(e=>{if(e&&"open"===e.readyState)try{e.send(a)}catch(e){}})}function kickVoicePlayback(){voiceAudioEls.forEach(e=>{try{e.play()}catch(e){}})}let voiceMixLevel=1.4,jumboMixLevel=.28;function applyClubMix(){void 0!==voiceGainNodes&&voiceGainNodes.forEach(e=>{e&&e.gain&&(e.gain.gain.value=clubVoiceGain())}),void 0!=M
=voiceAudioEls&&voiceAudioEls.forEach(e=>{if(!e)return;const t=voiceMixLevel<=.001;e.muted=t||!(!voiceGainNodes||!voiceGainNodes.size),e.volume=t?0:1});const e=jumboVol()<=.001,t=document.getElementById("stageShareVideo");t&&(t.muted=e,t.volume=jumboVol(),e||t.play().catch(()=>{}));const a=document.getElementById("stageShareAudio");if(a&&(a.muted=e,a.volume=jumboVol(),!e&&a.srcObject&&a.play().catch(()=>{})),"function"==typeof ytCommand){try{ytCommand("setVolume",[Math.round(100*jumboMixLevel)])}catch(e){}if(jumboMM
ixLevel<=.001)try{ytCommand("mute")}catch(e){}else try{ytCommand("unMute")}catch(e){}}}function bindClubMixer(){const e=document.getElementById("mixVoice"),t=document.getElementById("mixJumbo");if(e&&e.addEventListener("input",()=>{voiceMixLevel=Math.max(0,Math.min(2,Number(e.value)/100)),applyClubMix()}),t){const e=()=>{jumboMixLevel=Math.max(0,Math.min(1,Number(t.value)/100)),applyClubMix()};t.addEventListener("input",e),t.addEventListener("change",e)}}function resumeClubVoiceElements(){window._clubAudioCtx&&"susM
pended"===window._clubAudioCtx.state&&window._clubAudioCtx.resume();const e=document.getElementById("stageShareVideo"),t=document.getElementById("stageShareAudio");e&&(e.muted=jumboVol()<=.001,e.volume=jumboVol(),e.play().catch(()=>{})),t&&(t.muted=jumboVol()<=.001,t.volume=jumboVol(),t.play().catch(()=>{})),void 0!==voiceAudioEls&&(voiceAudioEls.forEach(e=>{e&&(e.muted=!(!voiceGainNodes||!voiceGainNodes.size),e.volume=Math.max(0,Math.min(1,voiceMixLevel<=.001?0:1)),e.play().catch(()=>{}))}),applyClubMix())}bindCluM
bMixer(),document.addEventListener("pointerdown",resumeClubVoiceElements,!0);const voiceGainNodes=new Map;function clubVoiceGain(){const e="number"==typeof voiceMixLevel?voiceMixLevel:1.4;return e<=.001?0:3.6*e}function attachRemoteVoice(e,t){if(!e||e===myPlayerID)return;if(localMicStream&&(t===localMicStream||t.getAudioTracks&&t.getAudioTracks().some(e=>-1!==localMicStream.getTracks().indexOf(e))))return;let a=voiceAudioEls.get(e);a||(a=document.createElement("audio"),a.autoplay=!0,a.playsInline=!0,a.setAttribute(M
"playsinline",""),a.style.display="none",document.body.appendChild(a),voiceAudioEls.set(e,a)),a.srcObject=t,a.muted=voiceMixLevel<=.001,a.volume=voiceMixLevel<=.001?0:1;const o=()=>{a.muted=voiceMixLevel<=.001,a.play().catch(()=>{})};o(),t&&t.getAudioTracks&&t.getAudioTracks().forEach(e=>{e.enabled=!0,e.onunmute=o});try{window._clubAudioCtx||(window._clubAudioCtx=new(window.AudioContext||window.webkitAudioContext));const o=window._clubAudioCtx;o.resume();let n=voiceGainNodes.get(e);if(n&&n.stream!==t){try{n.src.disM
connect(),n.gain.disconnect()}catch(e){}n=null}if(n)n.gain.gain.value=Math.max(2.5,clubVoiceGain());else{const n=o.createMediaStreamSource(t),r=o.createGain();r.gain.value=Math.max(2.5,clubVoiceGain()),n.connect(r),r.connect(o.destination),voiceGainNodes.set(e,{src:n,gain:r,stream:t}),a.muted=!0}}catch(e){a.muted=voiceMixLevel<=.001}}function closeVoicePeer(e){const t=voicePcs.get(e);if(t){try{t.close()}catch(e){}voicePcs.delete(e)}const a=voiceAudioEls.get(e);a&&(a.srcObject=null,voiceAudioEls.delete(e))}let silenM
tVoiceTrack=null;function getSilentAudioTrack(){if(silentVoiceTrack&&"live"===silentVoiceTrack.readyState)return silentVoiceTrack;try{const e=new(window.AudioContext||window.webkitAudioContext),t=e.createMediaStreamDestination(),a=e.createGain();a.gain.value=0;const o=e.createOscillator();o.connect(a),a.connect(t),o.start(),silentVoiceTrack=t.stream.getAudioTracks()[0]}catch(e){silentVoiceTrack=null}return silentVoiceTrack}function senderForKind(e,t){if(!e)return null;const a=e.getTransceivers?e.getTransceivers():[M
];for(let e=0;e<a.length;e++){const o=a[e];if((o.sender&&o.sender.track&&o.sender.track.kind||o.receiver&&o.receiver.track&&o.receiver.track.kind)===t)return o.sender}return e.getSenders().find(e=>e.track&&e.track.kind===t)||null}function getVoicePc(e){let t=voicePcs.get(e);if(t)return t;t=new RTCPeerConnection(rtcConf());const a=t.addTransceiver("audio",{direction:"sendrecv"});a&&a.sender&&(a.sender._clubVoice=!0),t._clubSlots={voice:a};const o=localMicStream&&localMicStream.getAudioTracks().find(e=>"live"===e.reaM
dyState)||getSilentAudioTrack();if(o&&a&&a.sender)try{a.sender.replaceTrack(o)}catch(e){}return t.ontrack=t=>{e!==myPlayerID&&t.track&&"audio"===t.track.kind&&(localMicStream&&-1!==localMicStream.getTracks().indexOf(t.track)||attachRemoteVoice(e,new MediaStream([t.track])))},t.onicecandidate=t=>{t.candidate&&sendToPeer(e,{type:"voiceIce",candidate:t.candidate})},voicePcs.set(e,t),t.onconnectionstatechange=()=>{"failed"===t.connectionState&&recoverVoicePeer(e)},t}function getSharePc(e){let t=sharePcs.get(e);if(t)retM
urn t;if(t=new RTCPeerConnection(rtcConf()),isHost&&localShareStream)localShareStream.getTracks().forEach(track=>{try{const clone=track.clone();clone.enabled=!0;t.addTrack(clone,localShareStream)}catch(err){try{t.addTrack(track,localShareStream)}catch(err2){}}});else{try{t.addTransceiver("video",{direction:"recvonly"})}catch(err){}try{t.addTransceiver("audio",{direction:"recvonly"})}catch(err){}}return t.ontrack=ev=>{if(isHost)return;try{const stream=ev.streams&&ev.streams[0]?ev.streams[0]:new MediaStream([ev.trackM
]);applyShareStreamToStage(stream),"audio"===ev.track.kind&&applyShareAudio(ev.track),"video"===ev.track.kind&&applyShareVideo(ev.track)}catch(err){}},t.onicecandidate=ev=>{ev.candidate&&sendToPeer(e,{type:"shareIce",candidate:ev.candidate})},sharePcs.set(e,t),t}async function offerShare(e){if(!e||e===myPlayerID)return;const t=getSharePc(e);try{const a=await t.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});await t.setLocalDescription(a),sendToPeer(e,{type:"shareOffer",sdp:a.sdp})}catch(e){}}async funcM
tion handleShareMsg(e){const t=e.id;if(t&&t!==myPlayerID){if("shareOffer"===e.type&&e.sdp){const a=getSharePc(t);try{await a.setRemoteDescription({type:"offer",sdp:e.sdp});const o=await a.createAnswer();await a.setLocalDescription(o),sendToPeer(t,{type:"shareAnswer",sdp:o.sdp})}catch(e){}return}if("shareAnswer"===e.type&&e.sdp){const a=sharePcs.get(t);if(!a)return;try{"have-local-offer"===a.signalingState&&await a.setRemoteDescription({type:"answer",sdp:e.sdp})}catch(e){}return}if("shareIce"===e.type&&e.candidate){M
const a=getSharePc(t);try{await a.addIceCandidate(e.candidate)}catch(e){}}}}const voiceRetryAt=new Map;async function recoverVoicePeer(e){if(!e||e===myPlayerID||!multiplayerMode)return;const t=Date.now();if(t-(voiceRetryAt.get(e)||0)<4e3)return;voiceRetryAt.set(e,t);let a=voicePcs.get(e);if(!a||"failed"!==a.connectionState&&"closed"!==a.connectionState&&"failed"!==a.iceConnectionState)a||(a=getVoicePc(e));else{try{a.close()}catch(e){}voicePcs.delete(e),a=getVoicePc(e)}try{if(isHost||"function"==typeof clubCanSpeak&M
&clubCanSpeak()){const t=await a.createOffer({iceRestart:!0,offerToReceiveAudio:!0,offerToReceiveVideo:!0});await a.setLocalDescription(t),sendToPeer(e,{type:"voiceOffer",sdp:t.sdp})}else sendToPeer(e,{type:"voiceHello"});"function"==typeof attachMicToPeers&&attachMicToPeers(!1)}catch(e){}}async function offerVoice(e){if(!e||e===myPlayerID)return;const t=getVoicePc(e);try{const a=await t.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});await t.setLocalDescription(a),sendToPeer(e,{type:"voiceOffer",sdp:aM
.sdp})}catch(e){}}function voiceHelloAll(){dcList.forEach(e=>{e&&"open"===e.readyState&&e._peerId&&sendToPeer(e._peerId,{type:"voiceHello"})})}async function handleVoiceMsg(e,t){const a=t.id||e._peerId;if(a&&a!==myPlayerID){if("voiceHello"===t.type){const e=getVoicePc(a),t=!e.connectionState||"new"===e.connectionState||"connecting"===e.connectionState||"failed"===e.connectionState||"disconnected"===e.connectionState;return void(isHost&&t?await ensureHostBroadcast(a):!isHost&&(voiceOn||"function"==typeof clubCanSpeaM
k&&clubCanSpeak())&&t&&await offerVoice(a))}if("voiceOffer"===t.type&&t.sdp){const e=getVoicePc(a);try{if("stable"!==e.signalingState&&"have-remote-offer"!==e.signalingState)try{await e.setLocalDescription({type:"rollback"})}catch(e){}await e.setRemoteDescription({type:"offer",sdp:t.sdp});const o=await e.createAnswer();await e.setLocalDescription(o),sendToPeer(a,{type:"voiceAnswer",sdp:o.sdp})}catch(e){}return}if("voiceAnswer"===t.type&&t.sdp){const e=voicePcs.get(a);if(!e)return;try{"have-local-offer"===e.signalinM
gState&&await e.setRemoteDescription({type:"answer",sdp:t.sdp})}catch(e){}return}if("voiceIce"===t.type&&t.candidate){const e=getVoicePc(a);try{await e.addIceCandidate(t.candidate)}catch(e){}}}}window._clubNetWatch||(window._clubNetWatch=setInterval(()=>{if(!multiplayerMode)return;voicePcs.forEach((e,t)=>{const a=e.connectionState,o=e.iceConnectionState;"failed"!==a&&"failed"!==o||recoverVoicePeer(t)}),void 0!==remotePlayers&&remotePlayers.forEach((e,t)=>{t&&t!==myPlayerID&&(voicePcs.has(t)||(getVoicePc(t),isHost&&M
recoverVoicePeer(t)))}),dcList.forEach(e=>{e&&"open"===e.readyState&&e._peerId&&!voicePcs.has(e._peerId)&&(getVoicePc(e._peerId),isHost&&recoverVoicePeer(e._peerId))}),voiceAudioEls.forEach(e=>{e&&e.paused&&e.play().catch(()=>{})});const e=document.getElementById("stageShareAudio");if(e&&e.srcObject&&jumboVol()>.001&&((e.paused||e.ended)&&e.play().catch(()=>{}),e.muted=!1,e.volume=jumboVol()),isHost&&localShareStream)voicePcs.forEach(e=>{e.getSenders().forEach(e=>{if(!e._clubShare||!e._clubShareKind)return;const t=M
"video"===e._clubShareKind?localShareStream.getVideoTracks()[0]:localShareStream.getAudioTracks()[0];if(t&&e.track!==t)try{e.replaceTrack(t)}catch(e){}})});else if(!isHost&&window._remoteShareOn){const e=document.getElementById("stageShareAudio");e&&e.srcObject&&!e.paused||dcList.forEach(e=>{if(e&&"open"===e.readyState)try{e.send(JSON.stringify({type:"shareRepair",id:myPlayerID}))}catch(e){}})}},5e3));let selfMuted=!1,roomMuteHold=!1;function syncMicButtons(){const e=document.getElementById("micBtn"),t=document.getM
ElementById("clubMicBtn"),a=document.getElementById("clubMuteBtn"),o=document.getElementById("clubRoomMuteBtn"),n=!(!localMicStream||!voiceOn);e&&(e.classList.toggle("on",n&&!selfMuted),e.textContent=n?selfMuted?"MUTED":"ON":"MIC"),t&&(t.textContent=n?selfMuted||roomMuteHold?"Unmute my mic":"Microphone live":"Enable microphone"),a&&(a.style.display=n?"block":"none",a.textContent=selfMuted?"Unmute my mic":"Mute my mic"),o&&(o.style.display=isHost?"block":"none")}function isShareAudioTrack(e){return!(void 0===localShM
areStream||!localShareStream||!e||-1===localShareStream.getTracks().indexOf(e))}function applyMicSendState(){const e=!(!voiceOn||!localMicStream||selfMuted||roomMuteHold||"function"==typeof clubCanSpeak&&!clubCanSpeak()),t=localMicStream&&localMicStream.getAudioTracks().find(e=>"live"===e.readyState);localMicStream&&localMicStream.getAudioTracks().forEach(t=>{t.enabled=e}),void 0!==voicePcs&&t&&voicePcs.forEach(e=>{e.getSenders().forEach(e=>{if(!isShareAudioTrack(e.track)&&(e._clubVoice||!e.track||"audio"===e.trackM
.kind)&&(e._clubVoice||e.track&&"audio"===e.track.kind&&!isShareAudioTrack(e.track))&&e.track!==t)try{e.replaceTrack(t),e._clubVoice=!0}catch(e){}})})}async function ensureHostBroadcast(e,t){if(!isHost&&multiplayerMode)return;const a=!t||!1!==t.offer;try{if(!!(!localMicStream||!localMicStream.getAudioTracks().some(e=>"live"===e.readyState))){const e=!!selfMuted;await setMicEnabled(!0),e&&(selfMuted=!0,applyMicSendState())}await attachMicToPeers(!!a),applyMicSendState(),a&&(e?await offerVoice(e):voicePcs.forEach((e,M
t)=>offerVoice(t))),syncMicButtons()}catch(e){}}async function attachMicToPeers(e){if(!localMicStream)return;const t=localMicStream.getAudioTracks().find(e=>"live"===e.readyState);t&&voicePcs.forEach((a,o)=>{let n=a._clubSlots&&a._clubSlots.voice&&a._clubSlots.voice.sender||a.getSenders().find(e=>e._clubVoice);try{if(n)n.replaceTrack(t),n._clubVoice=!0;else{const e=a.addTrack(t,localMicStream);e&&(e._clubVoice=!0)}}catch(e){}e&&o&&offerVoice(o)})}async function setMicEnabled(e){const t=document.getElementById("micBM
tn");if(e&&"function"==typeof clubCanSpeak&&!clubCanSpeak()){const e=document.getElementById("status");return e&&(e.textContent="Request the mic
 host must accept speakers"),refreshClubDock(),void syncMicButtons()}if(!e)return voiceOn=!0,selfMuted=!0,applyMicSendState(),syncMicButtons(),void(t&&(t.classList.remove("on"),t.textContent="MUTED"));if(!(!localMicStream||!localMicStream.getAudioTracks().some(e=>"live"===e.readyState)))return voiceOn=!0,selfMuted=!1,roomMuteHold=!1,applyMicSendState(),syncMicButtons(),M
void(t&&(t.classList.add("on"),t.textContent="ON"));try{localMicStream=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0},video:!1}),voiceOn=!0,selfMuted=!1,roomMuteHold=!1,await attachMicToPeers(!0),applyMicSendState(),syncMicButtons(),t&&(t.classList.add("on"),t.textContent="ON"),voiceHelloAll(),voicePcs.forEach((e,t)=>offerVoice(t)),dcList.forEach(e=>{e&&"open"===e.readyState&&e._peerId&&offerVoice(e._peerId)})}catch(e){voiceOn=!1,syncMicButtons(),t&&(t.M
classList.remove("on"),t.textContent="MIC")}}let connected=!1,remotePlayers=new Map,isHost=!1,hostOfferCodes=[],myPlayerID="Mutant",myCharId=FALLBACK_ID,collectedCandidatesList=[],lastCharSync=0;const CHAR_SYNC_INTERVAL=2500;let audioContext,audioMaster=null,sharedNoiseBuffer=null,lastSoundAt=0,raycaster=new THREE.Raycaster,pointer=new THREE.Vector2,syncCounter=0,seenChats=new Set,lastFullStateSent=0;function init(){scene=new THREE.Scene,scene.fog=new THREE.FogExp2(8956671,18e-5),camera=new THREE.PerspectiveCamera(M
90,window.innerWidth/window.innerHeight,.1,6e3),camera.position.set(0,12,28),renderer=new THREE.WebGLRenderer({antialias:!0,alpha:!0}),renderer.setClearColor(0,0),renderer.setClearAlpha(0),renderer.setSize(window.innerWidth,window.innerHeight),renderer.setPixelRatio(window.devicePixelRatio),renderer.shadowMap.enabled=!0,document.body.appendChild(renderer.domElement),Object.assign(renderer.domElement.style,{position:"fixed",inset:"0",width:"100%",height:"100%",zIndex:"2",background:"transparent",pointerEvents:"auto"M
});const e=renderer.domElement;scene.add(new THREE.AmbientLight(11184810,1.1));const t=new THREE.DirectionalLight(16772812,1.5);t.position.set(80,140,60),t.castShadow=!1,scene.add(t);const a=isPhoneUI(),o=document.getElementById("jumpBtn");if(a)cameraCycleBtn.style.display="flex",pauseBtn.style.display="flex",o&&(o.style.display="flex");else{cameraCycleBtn&&(cameraCycleBtn.style.display="none"),pauseBtn&&(pauseBtn.style.display="none"),o&&(o.style.display="none");const e=document.getElementById("movePad");e&&(e.styM
le.display="none")}const n=(e,t)=>{let a=!1;e.addEventListener("touchstart",e=>{e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),a=!0,throttleTouchId=null,steerTouchId=null,touchSteer=0,touchThrottle=0,potentialFireTouch=null,throttleIndicator.style.display="none",t()},{passive:!1}),e.addEventListener("touchend",e=>{e.preventDefault(),e.stopPropagation(),a=!1},{passive:!1}),e.addEventListener("click",e=>{a?e.preventDefault():t()})};n(cameraCycleBtn,cycleCamera),n(pauseBtn,togglePause),o&&(o.addEvM
entListener("touchstart",e=>{e.preventDefault(),e.stopPropagation(),c(),jumpHeld||(jumpRequested=!0),jumpHeld=!0},{passive:!1}),o.addEventListener("touchend",e=>{e.preventDefault(),e.stopPropagation(),jumpHeld=!1},{passive:!1}),o.addEventListener("touchcancel",()=>{jumpHeld=!1},{passive:!0}),o.addEventListener("mousedown",e=>{e.preventDefault(),jumpHeld||(jumpRequested=!0),jumpHeld=!0}),o.addEventListener("mouseup",()=>{jumpHeld=!1}));const r=document.getElementById("teamToggleBtn");r&&n(r,()=>{c(),toggleTeam()});cM
onst s=document.getElementById("micBtn");function l(){gameStarted&&(setClubUiMode(!1),controlsEnabled=!0,blurGameInputs())}s&&s.addEventListener("touchstart",e=>{e.preventDefault(),e.stopPropagation(),c()},{passive:!1}),window.addEventListener("keydown",e=>{isTypingNow()||"Space"!==e.code&&" "!==e.key&&"Spacebar"!==e.key||!gameStarted||inLobby&&!gameStarted||(e.preventDefault(),jumpHeld||(jumpRequested=!0),jumpHeld=!0,keys[" "]=!0,keys.space=!0)},!0),window.addEventListener("keydown",e=>{if(!e.key)return;if("Enter"M
===e.key&&document.activeElement===chatInput){e.preventDefault();const t=chatInput.value.trim();if(t){appendChatMessage(myPlayerID,t);const e=JSON.stringify({type:"chat",message:t,from:myPlayerID});dcList.forEach(t=>{t&&"open"===t.readyState&&t.send(e)}),chatInput.value=""}return}const t=isTypingNow(),a=["w","a","s","d","arrowup","arrowdown","arrowleft","arrowright","shift"].indexOf((e.key||"").toLowerCase())>=0;gameStarted&&!clubUiMode&&!paused&&a&&t&&blurGameInputs(),"Space"!==e.code&&" "!==e.key&&"Spacebar"!==e.M
key||!gameStarted||paused||clubUiMode||t&&fieldIsVisible(document.activeElement)||(e.preventDefault(),jumpRequested=!0,keys[" "]=!0,keys.space=!0),previewMode||!gameStarted&&(inLobby||t)||t&&clubUiMode||t&&!a&&"Shift"!==e.key||(keys[e.key.toLowerCase()]=!0,"ShiftLeft"!==e.code&&"ShiftRight"!==e.code||(keys.shift=!0),"p"===e.key.toLowerCase()&&togglePause(),paused||previewMode||inLobby||!controlsEnabled,"v"!==e.key&&"V"!==e.key||cycleCamera(),paused&&"l"===e.key.toLowerCase()&&openLobbyFromPause(),"Escape"===e.key&&M
gameStarted&&(e.preventDefault(),setClubUiMode(!clubUiMode,"MENU
 ESC or Walk to return to your avatar")))}),window.addEventListener("keyup",e=>{e.key&&(keys[e.key.toLowerCase()]=!1),"ShiftLeft"!==e.code&&"ShiftRight"!==e.code||(keys.shift=!1),"Space"!==e.code&&" "!==e.key&&"Spacebar"!==e.key||(jumpHeld=!1,keys[" "]=!1,keys.space=!1)}),e.addEventListener("pointerdown",e=>{if(!gameStarted)return;const t=document.getElementById("clubDock");if(t&&t.contains(e.target))return;const a=document.getElementById("stageScrM
eenFrame");a&&a.classList.contains("interact")&&a.contains(e.target)||l()}),e.addEventListener("click",()=>{l()}),e.addEventListener("mousedown",e=>{0===e.button&&Date.now()-lastFireTime>getFireCooldown()&&gameStarted&&!paused&&controlsEnabled&&!clubUiMode&&(fireFreezeBall(),lastFireTime=Date.now())}),window.addEventListener("mousemove",e=>{if((paused||"orbit"===cameraMode)&&isDragging){const t=e.clientX-lastMouseX,a=e.clientY-lastMouseY;return orbitAzimuth-=.01*t,orbitPolar-=.01*a,orbitPolar=Math.max(.01,Math.min(M
Math.PI-.01,orbitPolar)),lastMouseX=e.clientX,void(lastMouseY=e.clientY)}if(!controlsEnabled||!gameStarted&&inLobby||typingChat||paused||clubUiMode)return;if(coarsePointer||Date.now()<ignoreMouseSteerUntil)return;let t=e.clientX/window.innerWidth*2-1,a=e.clientY/window.innerHeight*2-1;const o=.06;t=Math.abs(t)<o?0:Math.sign(t)*(Math.abs(t)-o)/.94,a=Math.abs(a)<o?0:Math.sign(a)*(Math.abs(a)-o)/.94,mouseXNormalized=THREE.MathUtils.lerp(mouseXNormalized,t,.2),mouseYNormalized=THREE.MathUtils.lerp(mouseYNormalized,a,.2M
),pointer.x=t,pointer.y=-a,gameStarted&&(customCursor.style.left=e.clientX+"px",customCursor.style.top=e.clientY+"px")});e.addEventListener("mousedown",e=>{(paused||"orbit"===cameraMode)&&(isDragging=!0,lastMouseX=e.clientX,lastMouseY=e.clientY,document.body.style.cursor="grabbing")}),document.addEventListener("mouseup",()=>{isDragging&&(isDragging=!1,document.body.style.cursor="grab")}),e.addEventListener("wheel",e=>{if(paused||"orbit"===cameraMode){e.preventDefault();const t=e.deltaY>0?1.1:.9;orbitRadius*=t,orbitM
Radius=Math.max(6,Math.min(80,orbitRadius))}},{passive:!1});const i=renderer.domElement;function c(){ignoreMouseSteerUntil=Date.now()+1200,mouseXNormalized=0,mouseYNormalized=0,coarsePointer=!0,customCursor.style.display="none"}function d(e,t){if(e>window.innerWidth-80&&t<140)return!0;const a=["jumpBtn","micBtn","teamToggleBtn","movePad","cameraCycleBtn","pauseBtn"];for(let o=0;o<a.length;o++){const n=document.getElementById(a[o]);if(!n||"none"===n.style.display)continue;const r=n.getBoundingClientRect();if(e>=r.leM
ft-8&&e<=r.right+8&&t>=r.top-8&&t<=r.bottom+8)return!0}return!1}function u(e,t){const a=document.getElementById("movePad");if(!a)return;const o=a.getBoundingClientRect(),n=o.left+o.width/2,r=o.top+o.height/2;let s=(e-n)/(.42*o.width),l=(t-r)/(.42*o.height);const i=Math.hypot(s,l);i>1&&(s/=i,l/=i);padKeys.w=padKeys.a=padKeys.s=padKeys.d=0,i>.28&&(Math.abs(l)>=Math.abs(s)?l<0?padKeys.w=1:padKeys.s=1:s<0?padKeys.a=1:padKeys.d=1);const c=document.getElementById("movePadKnob");c&&(c.style.left=50+38*s+"%",c.style.top=50M
+38*l+"%")}function m(){padKeys.w=padKeys.a=padKeys.s=padKeys.d=0,padTouchId=null;const e=document.getElementById("movePadKnob");e&&(e.style.left="50%",e.style.top="50%")}function p(e){const t=Date.now();for(let a=0;a<e.changedTouches.length;a++){const o=e.changedTouches[a];if(o.identifier===padTouchId&&m(),o.identifier===steerTouchId){if(potentialFireTouch&&potentialFireTouch.id===o.identifier){const e=t-potentialFireTouch.startTime,a=Math.abs(o.clientX-potentialFireTouch.startX),n=Math.abs(o.clientY-potentialFireM
Touch.startY);if(e<220&&a<35&&n<35){const e=i.getBoundingClientRect();pointer.x=(o.clientX-e.left)/e.width*2-1,pointer.y=-(o.clientY-e.top)/e.height*2+1,Date.now()-lastFireTime>getFireCooldown()&&gameStarted&&!paused&&controlsEnabled&&!clubUiMode&&(fireFreezeBall(),lastFireTime=Date.now())}potentialFireTouch=null}steerTouchId=null,touchSteer=0}}}!function(){const e=document.getElementById("movePad");if(!e||e._bound)return;e._bound=!0;const t=e=>{e.preventDefault(),e.stopPropagation();const t=e.changedTouches&&e.chaM
ngedTouches[0]||e;padTouchId=null!=t.identifier?t.identifier:0,u(t.clientX,t.clientY)},a=e=>{e.preventDefault(),e.stopPropagation(),padTouchId=null,m()};e.addEventListener("touchstart",t,{passive:!1}),e.addEventListener("touchmove",e=>{e.preventDefault(),e.stopPropagation();const t=e.changedTouches&&e.changedTouches[0]||e;u(t.clientX,t.clientY)},{passive:!1}),e.addEventListener("touchend",a,{passive:!1}),e.addEventListener("touchcancel",a,{passive:!1}),e.addEventListener("pointerdown",t),window.addEventListener("poM
interup",a)}(),i.addEventListener("touchstart",function(e){e.preventDefault();const t=Date.now();for(let a=0;a<e.changedTouches.length;a++){const o=e.changedTouches[a];if(d(o.clientX,o.clientY)){c();const e=document.getElementById("movePad");if(e&&"none"!==e.style.display){const t=e.getBoundingClientRect();o.clientX>=t.left&&o.clientX<=t.right&&o.clientY>=t.top&&o.clientY<=t.bottom&&(padTouchId=o.identifier,u(o.clientX,o.clientY))}continue}coarsePointer=!0,null===steerTouchId&&(steerTouchId=o.identifier,steerTouchSM
tartX=o.clientX,steerTouchStartY=o.clientY,touchSteer=0,potentialFireTouch={id:o.identifier,startTime:t,startX:o.clientX,startY:o.clientY})}},{passive:!1}),i.addEventListener("touchmove",function(e){e.preventDefault();for(let t=0;t<e.changedTouches.length;t++){const a=e.changedTouches[t];if(a.identifier===padTouchId)u(a.clientX,a.clientY);else if(a.identifier===steerTouchId){const e=a.clientX-steerTouchStartX,t=a.clientY-steerTouchStartY;touchSteer=THREE.MathUtils.clamp(e/(.38*window.innerWidth),-1,1),mouseYNormaliM
zed=THREE.MathUtils.clamp(t/(.32*window.innerHeight),-1,1),potentialFireTouch&&(Math.abs(e)>30||Math.abs(t)>30)&&(potentialFireTouch=null)}}},{passive:!1}),i.addEventListener("touchend",p),i.addEventListener("touchcancel",p),window.addEventListener("resize",()=>{camera.aspect=window.innerWidth/window.innerHeight,camera.updateProjectionMatrix(),renderer.setSize(window.innerWidth,window.innerHeight)}),chatInput.addEventListener("focus",()=>{gameStarted&&!clubUiMode||(typingChat=!0,clearMoveKeys())}),chatInput.addEvenM
tListener("blur",()=>typingChat=!1),document.addEventListener("focusin",e=>{if(gameStarted&&!clubUiMode)return;const t=e.target,a=t&&t.tagName||"";("INPUT"===a||"TEXTAREA"===a||"SELECT"===a||t&&t.isContentEditable)&&(typingChat=!0,clearMoveKeys())}),document.addEventListener("focusout",e=>{setTimeout(()=>{isTypingNow()||(typingChat=!1)},0)}),updateCursorForLobby()}let audioUnlockP=null,liveVoices=0;function tapDisconnect(){try{this.disconnect()}catch(e){}liveVoices=Math.max(0,liveVoices-1)}function ensureAudio(){trM
y{if(audioContext||(audioContext=new(window.AudioContext||window.webkitAudioContext)),!audioMaster&&audioContext&&(audioMaster=audioContext.createGain(),audioMaster.gain.value=.7,audioMaster.connect(audioContext.destination)),audioContext&&!sharedNoiseBuffer){const e=Math.floor(.18*audioContext.sampleRate);sharedNoiseBuffer=audioContext.createBuffer(1,e,audioContext.sampleRate);const t=sharedNoiseBuffer.getChannelData(0);for(let a=0;a<e;a++)t[a]=2*Math.random()-1}}catch(e){}return audioContext}function unlockAudio(M
){const e=ensureAudio();return e?"running"===e.state?Promise.resolve(e):(audioUnlockP||(audioUnlockP=e.resume().then(()=>(audioUnlockP=null,e)).catch(()=>(audioUnlockP=null,e))),audioUnlockP):Promise.resolve(null)}function playFireSound(e=!1){const t=performance.now();t-lastSoundAt<55||(lastSoundAt=t,unlockAudio().then(t=>{if(!t||"running"!==t.state||!audioMaster)return;if(liveVoices>6)return;const a=t.currentTime,o=audioMaster;if(e){const e=t.createOscillator(),n=t.createGain();e.type="sawtooth",e.frequency.setValM
ueAtTime(280,a),e.frequency.exponentialRampToValueAtTime(900,a+.22),n.gain.setValueAtTime(.55,a),n.gain.exponentialRampToValueAtTime(1e-4,a+.28),e.connect(n).connect(o),e.onended=tapDisconnect,liveVoices++,e.start(a),e.stop(a+.3)}else{const e=t.createOscillator(),n=t.createGain();e.type="triangle",e.frequency.setValueAtTime(520,a),e.frequency.exponentialRampToValueAtTime(90,a+.16),n.gain.setValueAtTime(.5,a),n.gain.exponentialRampToValueAtTime(1e-4,a+.2),e.connect(n).connect(o),e.onended=tapDisconnect,liveVoices++,M
e.start(a),e.stop(a+.22)}}))}function playHitSound(){unlockAudio().then(e=>{if(!e||"running"!==e.state||!audioMaster)return;if(liveVoices>6)return;const t=e.currentTime,a=e.createOscillator(),o=e.createGain();a.type="sine",a.frequency.setValueAtTime(110,t),o.gain.setValueAtTime(.6,t),o.gain.exponentialRampToValueAtTime(1e-4,t+.22),a.connect(o).connect(audioMaster),a.onended=tapDisconnect,liveVoices++,a.start(t),a.stop(t+.24)})}function cycleCamera(){throttleTouchId=null,steerTouchId=null,touchSteer=0,touchThrottle=M
0,throttleIndicator.style.display="none","chase"===cameraMode?(cameraMode="orbit",hudVisible=!0,headLookTarget(orbitTarget),function(){const e=new THREE.Vector3().subVectors(camera.position,orbitTarget),t=new THREE.Spherical().setFromVector3(e);orbitRadius=Math.max(8,t.radius),orbitPolar=t.theta,orbitAzimuth=t.phi}()):"orbit"===cameraMode?(cameraMode="fpv",hudVisible=!0):(cameraMode="chase",hudVisible=!0);const e=document.getElementById("camMode");if(e){const t="chase-far"===cameraMode?"CHASE FAR":"orbit"===cameraMM
ode?"ORBIT":"fpv"===cameraMode?"FIRST PERSON":"CHASE";e.textContent=t}document.getElementById("hud").style.display=hudVisible?"block":"none",chatContainer&&(chatContainer.style.display="none"),scoreboard&&(scoreboard.style.display="none"),cpIndicator&&(cpIndicator.style.display="none");"cockpit"===cameraMode||"cockpit-fpv"===cameraMode?(camera.fov=90,playerModel&&(playerModel.visible=!1)):(camera.fov=90,playerModel&&(playerModel.visible=!0)),camera.updateProjectionMatrix()}function updateHostPlayerList(){const e=doM
cument.getElementById("hostPlayerList");if(!e)return;let t=`<div style="color:#0ff;"><strong>Host:</strong> ${myPlayerID||"
"}</div>`;0===remotePlayers.size?t+='<div style="color:#888;margin-top:4px;">No remote players yet</div>':remotePlayers.forEach((e,a)=>{const o="red"===e.team?' <span style="color:#f44">[RED]</span>':"blue"===e.team?' <span style="color:#48f">[BLUE]</span>':"";t+=`<div style="margin-top:2px;">${a}${o}</div>`}),e.innerHTML=t}function openLobbyFromPause(){const e=document.getElementById("p2p-lM
obby");if(!e)return;e.style.display="flex";const t=document.getElementById("liveGamesContainer");if(t&&(t.style.display="block"),searchLiveGames(),isHost){const e=document.getElementById("lobbyHostControls");e&&(e.style.display="block"),updateHostPlayerList()}const a=document.getElementById("lobbyReturnToGameBtn");a&&(a.style.display=gameStarted?"block":"none");const o=document.getElementById("lobbyStartBtn");o&&(o.style.display=gameStarted?"none":"block"),updateCursorForLobby()}function togglePause(){if(throttleToM
uchId=null,steerTouchId=null,touchSteer=0,touchThrottle=0,throttleIndicator.style.display="none",paused=!paused,paused){headLookTarget(orbitTarget);const e=(new THREE.Vector3).subVectors(camera.position,orbitTarget),t=(new THREE.Spherical).setFromVector3(e);orbitRadius=t.radius,orbitPolar=t.theta,orbitAzimuth=t.phi,customCursor.style.display="none",document.body.style.cursor="grabbing";const a=document.getElementById("camMode");a&&(a.textContent="ORBIT"),pauseHint.style.display="block",pauseRulesBtn.style.display="M
block"}else{customCursor.style.display="block",document.body.style.cursor="none";const e=document.getElementById("camMode");e&&(e.textContent=cameraMode.toUpperCase()),pauseHint.style.display="none",pauseRulesBtn.style.display="none",document.getElementById("hud").style.display=hudVisible?"block":"none",chatContainer&&(chatContainer.style.display="none"),scoreboard&&(scoreboard.style.display="none"),cpIndicator&&(cpIndicator.style.display="none")}updateCursorForLobby()}function createProjectile(e,t,a,o=!1){const n=M
new THREE.SphereGeometry(3.8,14,14),r=o?16729088:7851263,s=o?11149824:2250154,l=new THREE.MeshPhongMaterial({color:r,emissive:s,emissiveIntensity:1.8,shininess:92,specular:o?16755200:11206655}),i=new THREE.Mesh(n,l);i.position.copy(e);const c=new THREE.Mesh(new THREE.SphereGeometry(5.2,12,12),new THREE.MeshBasicMaterial({color:o?16746496:8969727,transparent:!0,opacity:.35}));return i.add(c),scene.add(i),{mesh:i,vel:t.clone(),owner:a,startPos:e.clone(),createdAt:Date.now(),isLava:o}}function fireFreezeBall(){if(!carM
t||!gameStarted||paused)return;raycaster.setFromCamera(pointer,camera);const e="orbit"===cameraMode?new THREE.Vector3(0,.42,-1).applyQuaternion(new THREE.Quaternion().setFromAxisAngle(new THREE.Vector3(0,1,0),car.rotation)).normalize():raycaster.ray.direction.clone().normalize(),t=new THREE.Vector3(0,0,-1).applyQuaternion((new THREE.Quaternion).setFromAxisAngle(new THREE.Vector3(0,1,0),car.rotation)).clone().multiplyScalar(7).add(new THREE.Vector3(0,4,0)),a=car.pos.clone().add(t),o=e.multiplyScalar(405).clone().addM
(car.vel),n=hasLavaPower,r=createProjectile(a,o,myPlayerID,n);projectiles.push(r),playFireSound(n),playThrowAnim(),n&&(hasLavaPower=!1,updateChargeMeterUI()),dcList.forEach(e=>{e&&"open"===e.readyState&&e.send(JSON.stringify({type:"fireFreeze",pos:{x:a.x,y:a.y,z:a.z},vel:{x:o.x,y:o.y,z:o.z},owner:myPlayerID,isLava:n}))})}function updateProjectiles(e){Date.now();for(let t=projectiles.length-1;t>=0;t--){const a=projectiles[t];a.vel.y+=-84*e,a.mesh.position.addScaledVector(a.vel,e);const o=getTerrainHeight(a.mesh.posiM
tion.x,a.mesh.position.z);if(a.mesh.position.y<o+1.8){scene.remove(a.mesh),projectiles.splice(t,1);continue}if(a.mesh.position.distanceTo(a.startPos)>2550){scene.remove(a.mesh),projectiles.splice(t,1);continue}const n=a.owner===myPlayerID;let r=!1;if(n)remotePlayers.forEach((e,t)=>{if(!r&&e.mesh&&a.mesh.position.distanceTo(e.mesh.position)<13){const e={type:"freezeHit",target:t,duration:5e3};a.isLava&&(e.isLava=!0),dcList.forEach(t=>{t&&"open"===t.readyState&&t.send(JSON.stringify(e))});const o=(scores.get(myPlayerM
ID)||0)+1;scores.set(myPlayerID,o),dcList.forEach(e=>{e&&"open"===e.readyState&&e.send(JSON.stringify({type:"scoreUpdate",id:myPlayerID,hits:o}))}),updateScoreboard(),r=!0}});else if(a.mesh.position.distanceTo(car.pos)<13){(!a.createdAt||Date.now()-a.createdAt>180)&&(a.isLava?applyLavaHit():applyFreezeHit(5e3),r=!0)}r&&(scene.remove(a.mesh),projectiles.splice(t,1))}}function ensureCart(){return cart||(cart=new THREE.Group,cart.visible=!1,scene&&scene.add(cart),cart)}function updatePhysics(e){if(!gameStarted||pausedM
||clubUiMode)return;if(controlsEnabled=!0,inLobby=!1,typingChat=!1,ensureCart(),"club"===gameMode){const e=Math.hypot(car.pos.x,car.pos.z);if(e>CLUB_FLOOR_R-8){const t=(CLUB_FLOOR_R-8)/e;car.pos.x*=t,car.pos.z*=t;const a=car.pos.x/(CLUB_FLOOR_R-8),o=car.pos.z/(CLUB_FLOOR_R-8),n=car.vel.x*a+car.vel.z*o;n>0&&(car.vel.x-=a*n,car.vel.z-=o*n)}}isOnTrackXZ(car.pos.x,car.pos.z);const t=Date.now()<slowEndTime;!t&&consecutiveFreezeHits>0&&Date.now()>slowEndTime+400&&(consecutiveFreezeHits=0);const a=(t?.3:1)*(crouchOn?.45:1M
),o=!!(keys.w||keys.arrowup||padKeys.w),n=!!(keys.s||keys.arrowdown||padKeys.s),r=!!(keys.a||keys.arrowleft||padKeys.a),s=!!(keys.d||keys.arrowright||padKeys.d);padRamp=o?Math.min(1,padRamp+e/1.15):Math.max(0,padRamp-2.2*e);const l=n&&!o?1:0;let i=o?1:0,c=keys.shift||keys.shiftleft||keys.shiftright?1:0;padKeys.w&&(c=padRamp);const d=20*a,u=1*d,m=d+(58*a-d)*(c?1===c?1:c:0);jumpRequested&&car.onGround&&(car.vel.y="club"===gameMode?67:110,car.onGround=!1,jumpStartY=car.pos.y,jumpStartAt=Date.now()),jumpRequested=!1;leM
t p=0;null!==steerTouchId?p=touchSteer:"orbit"!==cameraMode&&!coarsePointer&&Date.now()>ignoreMouseSteerUntil&&(p=mouseXNormalized),Math.abs(p)<.05&&(p=0);const y=-1*p,h=new THREE.Vector3(0,0,-1).applyAxisAngle(new THREE.Vector3(0,1,0),car.rotation),f=new THREE.Vector3(1,0,0).applyAxisAngle(new THREE.Vector3(0,1,0),car.rotation);let g=car.vel.dot(h),b=car.vel.dot(f);const E=3.6*Math.abs(g);let M=1;if(E>180){const e=THREE.MathUtils.clamp((E-180)/80,0,1);M=THREE.MathUtils.lerp(.18/.42,1,e*e)}const S="club"===gameModeM
?1.25:1;if(g*=i?.993:.78,b*=.42*M,Math.abs(b)>.5555555555555556&&Math.abs(y)<.4){const t=-Math.sign(b);car.rotation+=.18*t*Math.min(.4*Math.abs(b),1.8)*e}{const t=THREE.MathUtils.clamp(1.52*mouseYNormalized+.22,-.88,1.55);car.pitch=THREE.MathUtils.lerp(car.pitch,t,Math.min(1,1.85*e))}g+=i*(36*a)*(1+(c?.55*("number"==typeof c?c:1):0))*1*e;const w=(s?1:0)-(r?1:0);w&&(b+=72*w*e),b=THREE.MathUtils.clamp(b,-u,u),l&&(g>.5555555555555556?g-=25*e*1:(g-=12.5*e*1,g=Math.max(g,-u))),g=THREE.MathUtils.clamp(g,n?-u:REVERSE_MAX,M
m);const T=1.7*(1-.12*Math.min(1,Math.abs(g)/Math.max(1,m)));car.rotation+=y*T*1.35*S*e;const v=car.vel.y;car.vel=h.multiplyScalar(g).add(f.multiplyScalar(b));let C="club"===gameMode?-39:-250;!car.onGround&&jumpHeld&&v>0&&car.pos.y-jumpStartY<("club"===gameMode?120:280)&&Date.now()-jumpStartAt<("club"===gameMode?1500:1400)?(C="club"===gameMode?-10:-30,car.vel.y=Math.min("club"===gameMode?72:380,v+("club"===gameMode?18:160)*e+C*e)):car.vel.y=v+C*e,car.pos.y-jumpStartY>280&&car.vel.y>0&&(car.vel.y*=.25);const I=car.vM
el.clone().multiplyScalar(e);let P=car.pos.clone().add(I);const R=getDriveSurfaceHeight(P.x,P.z,car.pos.y)+.04;P.y<=R+.2?(P.y=R,car.vel.y=0,car.onGround=!0):car.onGround=!1;const H="club"===gameMode?4.2:12,L="club"===gameMode?.06:.18;for(let e=0;e<2;e++)for(let e=0;e<solidBoxes.length;e++){const t=solidBoxes[e],a=void 0!==t.halfXZ?t.halfXZ:t.half,o=void 0!==t.halfX?t.halfX:a,n=void 0!==t.halfZ?t.halfZ:a,r=void 0!==t.halfY?t.halfY:t.half,s=t.y+r,l=t.y-r,i=Math.abs(P.x-t.x),c=Math.abs(P.z-t.z),d=t.soft?7:t.isBridge?1M
0:H,u=void 0!==t.rubber?t.rubber:t.soft?.35:t.isBridge?.22:L;if(!t.noLand&&i<=o&&c<=n&&P.y>=s-10&&car.vel.y<=40){P.y<=s+2.5&&(P.y=s+.05,car.onGround=!0,car.vel.y<0&&(car.vel.y=0));continue}if(P.y+8<=l||P.y-2>=s)continue;const m=Math.max(t.x-o,Math.min(t.x+o,P.x)),p=Math.max(t.z-n,Math.min(t.z+n,P.z));let y=P.x-m,h=P.z-p,f=Math.hypot(y,h);if(f<1e-6&&(o-i<n-c?(y=P.x>=t.x?1:-1,h=0,f=1,P.x=t.x+y*(o+d)):(y=0,h=P.z>=t.z?1:-1,f=1,P.z=t.z+h*(n+d))),f>0&&f<d){const e=y/f,t=h/f,a=d-f;P.x+=e*a,P.z+=t*a;const o=car.vel.x*e+carM
.vel.z*t;o<0&&(car.vel.x-=(1+u)*o*e,car.vel.z-=(1+u)*o*t)}}"club"===gameMode&&"function"==typeof resolveClubMeshWalls&&(P=resolveClubMeshWalls(car.pos,P)),remotePlayers.forEach((e,t)=>{if(!e.mesh)return;if(P.distanceTo(e.mesh.position)<14){const t=P.clone().sub(e.mesh.position).normalize();car.vel.addScaledVector(t,24),e.lastState&&e.lastState.pos.addScaledVector(t,-24)}});let x=P.clone();for(let e=0;e<4;e++){const e=(new THREE.Box3).setFromCenterAndSize(x,new THREE.Vector3(15,14,15));let t=!1;for(let a of colliderM
s){a.updateMatrixWorld();const o=(new THREE.Box3).setFromObject(a);if(e.intersectsBox(o)){t=!0;let n=new THREE.Vector3;if(a.userData&&a.userData.wallNormal)n.copy(a.userData.wallNormal);else{const t=new THREE.Vector3;e.getCenter(t);const a=new THREE.Vector3;o.getCenter(a),n.subVectors(t,a).normalize()}const r=car.onGround?.8:.8*2.2;x.addScaledVector(n,r);const s=car.vel.dot(n);if(s<0){const e=n.clone().multiplyScalar(.35*-s),t=car.vel.clone().sub(n.clone().multiplyScalar(s)).multiplyScalar(.98);car.vel.copy(t).add(M
e)}break}}if(!t)break}car.pos.copy(x),cart.position.copy(car.pos),cart.rotation.order="YXZ",cart.rotation.y=car.rotation+POD_YAW_OFFSET,cart.rotation.x=car.pitch||0;const k=Math.max(0,Math.min(1,(E-50)/450));cart.rotation.z=car.onGround?-.34*y*k:THREE.MathUtils.lerp(cart.rotation.z,0,Math.min(1,6*e));const D=Math.round(E),B=document.getElementById("speed");if(B&&(B.textContent=D),lastFwdVel=g,lavaPatches.forEach(e=>{const t=car.pos.x-e.pos.x,a=car.pos.z-e.pos.z,o=Math.hypot(t,a),n=e.radius||28,r=Math.abs(car.pos.y-M
e.pos.y)<35;o<n&&r&&(hasLavaPower||(hasLavaPower=!0,updateChargeMeterUI()))}),Math.random()<.62){const e=new THREE.Vector3(0,0,-1).applyAxisAngle(new THREE.Vector3(0,1,0),car.rotation).clone().multiplyScalar(-9),t=new THREE.Vector3(0,1.6,0),a=car.pos.clone().add(e).add(t);if(E>600&&car.onGround){createDustParticle(a,car.vel.clone().multiplyScalar(.25).add(new THREE.Vector3(28*(Math.random()-.5),12+22*Math.random(),28*(Math.random()-.5))),4874026)}if(!car.onGround&&"club"!==gameMode){createDustParticle(a,new THREE.VM
ector3(32*(Math.random()-.5),-18-25*Math.random(),32*(Math.random()-.5)),Math.random()>.6?11206655:7851263)}}const A=Date.now();if("ctf"===gameMode)return void updateCtfGameplay();if(!flagPoleMesh)return;const F=new THREE.Vector3(flagPoleMesh.position.x,getTerrainHeight(flagPoleMesh.position.x,flagPoleMesh.position.z)+8,flagPoleMesh.position.z);if(flagHolder===myPlayerID&&0===myLapStartTime&&(myLapStartTime=A,myLapPausedTime=0,myLapIsPaused=!1),flagHolder!==myPlayerID&&myLapStartTime>0&&!myLapIsPaused&&(myLapPausedM
Time=A-myLapStartTime,myLapIsPaused=!0),flagHolder===myPlayerID&&myLapIsPaused&&(myLapStartTime=A-myLapPausedTime,myLapIsPaused=!1),flagHolder===myPlayerID)for(let e=0;e<checkpointStars.length;e++){const t=checkpointStars[e].mesh.position;car.pos.distanceTo(t)<45&&!myCompletedCheckpoints.has(e)&&myCompletedCheckpoints.add(e)}if(4===myCompletedCheckpoints.size){if(car.pos.distanceTo(F)<45&&flagHolder===myPlayerID){const e=((A-myLapStartTime)/1e3).toFixed(2);playerLapTimes.set(myPlayerID,e),myLaps++,playerLaps.set(myM
PlayerID,myLaps),myCompletedCheckpoints.clear(),flagHolder=null,droppedFlagPos=null,flagCooldown=A+3e3,stealCooldown=A+1500,consecutiveFreezeHits=0,dcList.forEach(t=>{t&&"open"===t.readyState&&(t.send(JSON.stringify({type:"flagUpdate",holder:null,dropPos:null,cooldown:flagCooldown,stealCooldown:stealCooldown})),t.send(JSON.stringify({type:"lapUpdate",id:myPlayerID,laps:myLaps,lapTime:e})))}),updateFlagVisual(),updateScoreboard(),myLapStartTime=0}}if(null===flagHolder&&A>flagCooldown&&A>stealCooldown){const e=droppeM
dFlagPos||F;car.pos.distanceTo(e)<45&&(flagHolder=myPlayerID,droppedFlagPos=null,myLapStartTime=A,myLapIsPaused=!1,consecutiveFreezeHits=0,dcList.forEach(e=>{e&&"open"===e.readyState&&e.send(JSON.stringify({type:"flagUpdate",holder:myPlayerID,dropPos:null,cooldown:flagCooldown,stealCooldown:stealCooldown}))}),updateFlagVisual(),updateScoreboard())}else if(flagHolder!==myPlayerID&&A>stealCooldown){let e=!1;const t=remotePlayers.get(flagHolder);if(t&&(e=Date.now()<(t.lastState.slowEndTime||0)),e){const e=t?t.mesh:nulM
l;if(e){car.pos.distanceTo(e.position)<28&&(flagHolder=myPlayerID,myLapStartTime=A,stealCooldown=A+1500,dcList.forEach(e=>{e&&"open"===e.readyState&&e.send(JSON.stringify({type:"flagUpdate",holder:myPlayerID,cooldown:flagCooldown,stealCooldown:stealCooldown}))}),updateFlagVisual(),updateScoreboard())}}}}function headLookTarget(e){const t=minionRoot||playerModel;let a=null;t&&t.traverse(function(e){a||e.isBone&&/head/i.test(e.name)&&(a=e)});if(a)return a.updateWorldMatrix(!0,!1),a.getWorldPosition(e),e.y+=.45*(t.scaM
le&&t.scale.x||1)*.08,e;const o=t&&t.scale?t.scale.x:6;return e.copy(car.pos),e.y+=Math.max(6.4,.62*o),e}function updateCamera(){if(!cart&&!minionRoot&&!playerModel)return;document.getElementById("stageScreenFrame");if(skyDome&&skyDome.position.set((paused?orbitTarget:car.pos).x,0,(paused?orbitTarget:car.pos).z),paused){headLookTarget(orbitTarget);const e=new THREE.Vector3;return e.setFromSphericalCoords(orbitRadius,orbitPolar,orbitAzimuth),e.add(orbitTarget),camera.position.copy(e),void camera.lookAt(orbitTarget)}M
const e=(new THREE.Quaternion).setFromEuler(new THREE.Euler(0,car.rotation,0,"YXZ"));minionRoot&&(minionRoot.visible="fpv"!==cameraMode),playerModel&&(playerModel.visible="fpv"!==cameraMode);const t="number"==typeof mouseXNormalized?mouseXNormalized:0,a="number"==typeof mouseYNormalized?mouseYNormalized:0;if("fpv"===cameraMode){const eye=new THREE.Vector3;let head=null;minionRoot&&minionRoot.traverse(function(o){head||o.isBone&&/head/i.test(o.name)&&(head=o)});if(head){head.updateWorldMatrix(!0,!1),head.getWorldPosM
ition(eye);const sc=minionRoot.scale&&minionRoot.scale.x||1;eye.y+=.12*sc}else{const sc=minionRoot&&minionRoot.userData.isMutant?22:10.8;eye.copy(car.pos),eye.y+=sc}const fwd=new THREE.Vector3(0,0,-1).applyQuaternion(e),sc=minionRoot&&minionRoot.scale?minionRoot.scale.x:6;eye.add(fwd.clone().multiplyScalar(.08*sc)),camera.position.copy(eye);const look=eye.clone().add(fwd.multiplyScalar(48));look.x+=48*t,look.y+=12+85*-a,camera.lookAt(look)}else if("orbit"===cameraMode){headLookTarget(orbitTarget);const o=new THREE.M
Vector3;o.setFromSphericalCoords(orbitRadius,orbitPolar,orbitAzimuth),o.add(orbitTarget),camera.position.copy(o),camera.lookAt(orbitTarget)}else{const o="chase-far"===cameraMode,n=new THREE.Vector3(0,o?20:12.2,o?28:16.5).applyQuaternion(e);let r=car.pos.x+n.x,s=car.pos.z+n.z,l=car.pos.y+n.y;camera.position.x+=.22*(r-camera.position.x),camera.position.z+=.22*(s-camera.position.z),camera.position.y+=.28*(l-camera.position.y);const i=car.pos.clone().add(new THREE.Vector3(t*(o?52:38),(o?14:12.5)+-a*(o?78:68)+7,o?-36:-2M
6).applyQuaternion(e));camera.lookAt(i)}}function decodeSDP(e){const t=e.trim().replace(/[\r\n]+/g,"").match(/^([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),(.*)$/);if(!t)throw new Error("Invalid token");const a=t[1],o=t[2],n=t[3],r=t[4];let s=t[5];const l=t[6]||"";64===s.length&&/^[0-9A-Fa-f]{64}$/.test(s)&&(s=s.match(/.{2}/g).join(":").toUpperCase());const i=l?l.split("|").map(e=>e.trim()).filter(e=>e.length>0):[],c="A"===a?"active":"actpass";let d=`v=0\r\no=- ${Date.now()} 2 IN IP4 0.0.0.0\r\ns=-\r\nt=0 0\r\na=msid-seM
mantic: WMS\r\nm=application 9 UDP/DTLS/SCTP webrtc-datachannel\r\nc=IN IP4 0.0.0.0\r\na=mid:0\r\na=sctp-port:5000\r\na=max-message-size:262144\r\na=setup:${c}\r\na=ice-ufrag:${n}\r\na=ice-pwd:${r}\r\na=fingerprint:sha-256 ${s}\r\n`;return i.forEach(e=>d+=`a=candidate:${e}\r\n`),d+="a=end-of-candidates\r\n",{sdp:d,username:o}}function encodeSDP(e,t,a){const o=e.split("\r\n");let n="",r="",s="";const l=[];for(const e of o)e.startsWith("a=ice-ufrag:")&&(n=e.slice(12)),e.startsWith("a=ice-pwd:")&&(r=e.slice(10)),e.staM
rtsWith("a=fingerprint:sha-256 ")&&(s=e.slice(22).replace(/:/g,"")),e.startsWith("a=candidate:")&&l.push(e.slice(12));return`${"offer"===t?"O":"A"},${a},${n},${r},${s},${l.join("|")}`}async function waitForIceGathering(e){return new Promise(t=>{if("complete"===e.iceGatheringState)return t();const a=()=>{e.removeEventListener("icegatheringstatechange",a),t()};e.addEventListener("icegatheringstatechange",a),setTimeout(a,12e3)})}function broadcastToAll(e,t=null){dcList.forEach(a=>{a!==t&&"open"===a.readyState&&a.send(M
e)})}function sendFullState(){const e={type:"fullState",mapId:currentMapId,gameMode:gameMode,players:{}};e.players[myPlayerID]={charId:myCharId,team:myTeam,isHost:!!isHost,pos:{x:car.pos.x,y:car.pos.y,z:car.pos.z},rot:car.rotation,laps:playerLaps.get(myPlayerID)||0,lapTime:playerLapTimes.get(myPlayerID)||0,hits:scores.get(myPlayerID)||0},remotePlayers.forEach((t,a)=>{e.players[a]={charId:t.charId,team:t.team,pos:{x:t.lastState.pos.x,y:t.lastState.pos.y,z:t.lastState.pos.z},rot:t.lastState.podRot||0,laps:playerLaps.M
get(a)||0,lapTime:playerLapTimes.get(a)||0,hits:scores.get(a)||0}});const t=JSON.stringify(e);dcList.forEach(e=>{e&&"open"===e.readyState&&e.send(t)}),lastFullStateSent=Date.now()}function setupDataChannel(e){-1===dcList.indexOf(e)&&dcList.push(e),e.onclose=()=>{e._peerId&&removeRemotePlayer(e._peerId)},e.onerror=()=>{},e.onopen=async()=>{connected=!0;const t=document.getElementById("lobby-status");if(t&&(t.innerHTML=isHost?`<span style="color:#0f0;">Player connected
 ${1+remotePlayers.size} total</span>`:"ConnecM
 waiting for host map
"),isHost&&updateHostPlayerList(),currentMapId="club-hall",gameMode="club",readMyCharIdFromInput(),e.send(JSON.stringify({type:"init",charId:myCharId,id:myPlayerID,team:myTeam,gameMode:gameMode,mapId:currentMapId,isHost:!!isHost,pos:{x:car.pos.x||0,y:2.2,z:car.pos.z||-1300},rot:car.rotation||0})),isHost&&(e.send(JSON.stringify({type:"mapSync",mapId:"club-hall",gameMode:"club"})),syncClubStateTo(e)),"ctf"===gameMode&&(broadcastTeam(),broadcastCtfFlags()),multiplayerMode=!0,startNetM
Keepalive(),e._peerId&&(isHost||clubCanSpeak())&&offerVoice(e._peerId),e._peerId&&isHost&&localShareStream&&offerShare(e._peerId),!isHost){const t=readMyCharIdFromInput(),a=await loadSkinnedMinion(t);a&&(playerModel=a,attachCharacterToPod(playerModel)),document.getElementById("p2p-lobby").style.display="none",e.send(JSON.stringify({type:"mapRequest"})),pendingGuestStart=!0,setTimeout(()=>{pendingGuestStart&&(pendingGuestStart=!1,startGame())},4e3)}},e.onmessage=t=>{try{const a=JSON.parse(t.data);if(a.id&&a.id!==myPM
layerID){const t=!e._peerId;e._peerId=a.id,t&&(getVoicePc(a.id),getSharePc(a.id),isHost?(ensureHostBroadcast(a.id),localShareStream&&offerShare(a.id)):sendToPeer(a.id,{type:"voiceHello"}))}if(a.type&&0===String(a.type).indexOf("share")&&"shareRepair"!==a.type)return isHost&&a.to&&a.to!==myPlayerID?void dcList.forEach(e=>{if(e&&"open"===e.readyState&&e._peerId===a.to)try{e.send(JSON.stringify(a))}catch(e){}}):void handleShareMsg(a);if(a.type&&0===String(a.type).indexOf("voice"))return isHost&&a.to&&a.to!==myPlayerIDM
?void dcList.forEach(e=>{if(e&&"open"===e.readyState&&e._peerId===a.to)try{e.send(JSON.stringify(a))}catch(e){}}):void handleVoiceMsg(e,a);if("function"==typeof handleClubNet&&handleClubNet(a))return void(isHost&&"speakerSync"!==a.type&&"fullState"!==a.type&&broadcastToAll(t.data,e));if("ping"===a.type){a.id&&(e._peerId=a.id);try{e.send(JSON.stringify({type:"pong",id:myPlayerID,t:a.t,isHost:!!isHost}))}catch(e){}return}if("pong"===a.type){if(a.id){let e=remotePlayers.get(a.id);e&&(e.lastUpdateTime=Date.now(),a.t&&(M
e.rtt=Date.now()-a.t),a.isHost&&(e.isHost=!0))}return}if("chat"===a.type){if(a.from===myPlayerID||seenChats.has(a.message+a.from))return;return seenChats.add(a.message+a.from),appendChatMessage(a.from,a.message),void(isHost&&broadcastToAll(t.data,e))}if("fullState"===a.type)return!isHost&&a.mapId&&applyHostMap(a.mapId,a.gameMode),Object.keys(a.players).forEach(e=>{if(e===myPlayerID)return;const t=a.players[e];let o=remotePlayers.get(e);o||(addRemotePlayer(e,t.charId,t.rot),o=remotePlayers.get(e)),o&&(o.lastState.poM
s.set(t.pos.x,t.pos.y,t.pos.z),o.lastState.podRot=t.rot,t.team&&(o.team=t.team,o.mesh&&attachNameTag(o.mesh,o.playerId||e,!1,o.team)),t.isHost&&(o.isHost=!0),t.charId&&t.charId!==o.charId&&updateRemoteCharacter(o,t.charId),o.lastUpdateTime=Date.now()),void 0!==t.laps&&playerLaps.set(e,t.laps),void 0!==t.lapTime&&playerLapTimes.set(e,t.lapTime),void 0!==t.hits&&scores.set(e,t.hits)}),void updateScoreboard();if("mapRequest"===a.type)isHost&&e.send(JSON.stringify({type:"mapSync",mapId:currentMapId,gameMode:gameMode}))M
;else if("mapSync"===a.type)!isHost&&a.mapId&&(async()=>{await applyHostMap(a.mapId,a.gameMode),pendingGuestStart&&(pendingGuestStart=!1,startGame())})();else if("init"===a.type){if(a.id===myPlayerID)return;(async()=>{!isHost&&a.mapId&&await applyHostMap(a.mapId,a.gameMode),await addRemotePlayer(a.id,a.charId,a.rot);const e=remotePlayers.get(a.id);e&&(a.team&&(e.team=a.team,e.mesh&&attachNameTag(e.mesh,e.playerId||a.id,!1,e.team)),a.isHost&&(e.isHost=!0)),!isHost&&pendingGuestStart&&(pendingGuestStart=!1,startGame(M
))})()}else if("pos"===a.type){if(a.id===myPlayerID)return;let e=remotePlayers.get(a.id);!e&&a.id&&(addRemotePlayer(a.id,a.charId,a.rot),e=remotePlayers.get(a.id)),e&&(a.pos&&e.lastState.pos.copy(a.pos),a.anim&&(e.lastState.anim=a.anim),void 0!==a.rot&&(e.lastState.podRot=a.rot),a.charId&&a.charId!==e.charId&&updateRemoteCharacter(e,a.charId),void 0!==a.slowEndTime&&(e.lastState.slowEndTime=a.slowEndTime),a.isHost&&(e.isHost=!0),a.team&&(e.team=a.team,e.mesh&&attachNameTag(e.mesh,e.playerId||a.id,!1,e.team)),e.lastM
UpdateTime=Date.now())}else if("fireFreeze"===a.type){const e=new THREE.Vector3(a.pos.x,a.pos.y,a.pos.z),t=createProjectile(e,new THREE.Vector3(a.vel.x,a.vel.y,a.vel.z),a.owner,!!a.isLava);projectiles.push(t)}else if("freezeHit"===a.type)a.target===myPlayerID&&(a.isLava?applyLavaHit():applyFreezeHit(a.duration||5e3));else if("scoreUpdate"===a.type)scores.set(a.id,a.hits),updateScoreboard();else if("lapUpdate"===a.type)playerLaps.set(a.id,a.laps),void 0!==a.lapTime&&null!==a.lapTime&&playerLapTimes.set(a.id,a.lapTimM
e),updateScoreboard();else if("flagUpdate"===a.type)flagHolder=a.holder,a.cooldown&&(flagCooldown=a.cooldown),a.stealCooldown&&(stealCooldown=a.stealCooldown),a.dropPos?droppedFlagPos=new THREE.Vector3(a.dropPos.x,a.dropPos.y,a.dropPos.z):(a.holder||null===a.dropPos)&&(droppedFlagPos=null),updateFlagVisual(),updateScoreboard();else if("teamUpdate"===a.type){if(a.id===myPlayerID)return;let e=remotePlayers.get(a.id);e?(e.team=a.team,e.mesh&&attachNameTag(e.mesh,e.playerId||a.id,!1,e.team),updateScoreboard()):addRemotM
ePlayer(a.id,null,0).then(()=>{const e=remotePlayers.get(a.id);e&&(e.team=a.team,e.mesh&&attachNameTag(e.mesh,e.playerId||a.id,!1,e.team)),updateScoreboard()})}else"ctfFlagUpdate"===a.type&&(CTF.redHolder=a.redHolder||null,CTF.blueHolder=a.blueHolder||null,CTF.redDrop=a.redDrop?new THREE.Vector3(a.redDrop.x,a.redDrop.y,a.redDrop.z):null,CTF.blueDrop=a.blueDrop?new THREE.Vector3(a.blueDrop.x,a.blueDrop.y,a.blueDrop.z):null,a.teamScores&&(teamScores=a.teamScores),updateCtfFlagVisual(),updateCtfHud(),updateScoreboard(M
));isHost&&"fullState"!==a.type&&broadcastToAll(t.data,e)}catch(e){}}}function poseCharacterOnPod(e){e&&(e.userData.isPlayerChar=!0,e.userData.isLordinal?(e.scale.setScalar(2.04),e.position.set(0,1.55,-.4),e.rotation.y=0):e.userData.isImageSphere?(e.scale.setScalar(1.65),e.position.set(0,2.25,-.4),e.rotation.y=-Math.PI/2):(e.scale.setScalar(.8),e.position.set(0,.35,-.4),e.rotation.y=0))}async function addRemotePlayer(e,t,a){if(remotePlayers.has(e))return;const o={mesh:null,model:null,charId:t||FALLBACK_ID,playerId:M
e,team:null,loadGen:0,lastState:{pos:new THREE.Vector3(0,0,0),podRot:a||0,anim:"Idle",slowEndTime:0},lastUpdateTime:Date.now()};remotePlayers.set(e,o),scores.set(e,0),playerLaps.set(e,0),updatePlayerCount();const n=new THREE.Group;n.visible=!0,scene.add(n),o.mesh=n,o.loadGen+=1;const r=o.loadGen,s=await loadSkinnedMinion(o.charId,{local:!1});if(remotePlayers.has(e)&&remotePlayers.get(e)===o&&o.loadGen===r){for(;n.children.length;)n.remove(n.children[0]);s&&s!==minionRoot&&s!==playerModel&&(s.parent&&s.parent.removeM
(s),s.position.set(0,0,0),s.rotation.set(0,0,0),s.scale.setScalar(s.userData.isMutant?12.2904:5.69),n.scale.set(1,1,1),n.add(s),o.model=s,attachNameTag(n,e,!1,o.team)),updateScoreboard()}else s&&s.parent&&s.parent.remove(s)}async function updateRemoteCharacter(e,t){if(!e||!t||e.charId===t)return;e.charId=t,e.loadGen=(e.loadGen||0)+1;const a=e.loadGen;if(e.mesh)for(;e.mesh.children.length;)e.mesh.remove(e.mesh.children[0]);e.model=null;const o=await loadSkinnedMinion(t,{local:!1});o&&e.loadGen===a&&e.charId===t&&e.mM
esh?(o.position.set(0,0,0),o.rotation.set(0,0,0),o.scale.setScalar(o.userData.isMutant?12.2904:5.69),e.mesh.scale.set(1,1,1),e.mesh.add(o),e.model=o,attachNameTag(e.mesh,e.playerId||"Mutant",!1,e.team)):o&&o.parent&&o.parent.remove(o)}function updatePlayerCount(){document.getElementById("playerCount").textContent=1+remotePlayers.size}function updateScoreboard(){if("club"===gameMode)return void(scoreboard&&(scoreboard.style.display="none"));let e="";if("ctf"===gameMode){e+=`<div style="color:#f44">RED ${teamScores.rM
ed}</div>`,e+=`<div style="color:#48f">BLUE ${teamScores.blue}</div>`,e+='<hr style="border-color:#0f03">';const t=(t,a)=>{const o=scores.get(t)||0,n="red"===a?"#f44":"blue"===a?"#48f":"#aaa";let r="";CTF.redHolder===t&&(r=' <span style="color:#f66">
 RED FLAG</span>'),CTF.blueHolder===t&&(r=' <span style="color:#6af">
 BLUE FLAG</span>'),e+=`<div><span style="color:${n}">[${(a||"?").toUpperCase()}]</span> <strong>${t}</strong>: ${o} hits${r}</div>`};t(myPlayerID,myTeam),remotePlayers.forEach((e,a)=>t(a,e.team)M
)}else{const t=new Set([myPlayerID,...remotePlayers.keys()]);scores.forEach((e,a)=>t.add(a)),t.forEach(t=>{const a=scores.get(t)||0,o=playerLaps.get(t)||0,n=playerLapTimes.get(t)||0;e+=`<div><strong>${t}</strong>: ${a} hits | ${o} laps${flagHolder===t?' <span style="color:#0ff">
 FLAG</span>':""} <span style="color:#0ff;">${n}s</span></div>`})}scoreList.innerHTML=e||'<div style="color:#666;">No hits or laps yet</div>',scoreboard.style.display=hudVisible?"block":"none"}function updateRemotePlayers(){const e=MAP_DEM
FS[currentMapId]||{},t=e.fog&&null!=e.fogPlayerDist?e.fogPlayerDist:null;remotePlayers.forEach(e=>{if(!e.mesh||!e.lastState||!e.lastState.pos)return;const a=e.mesh.position.distanceTo(e.lastState.pos);if(a>120)e.mesh.position.copy(e.lastState.pos);else{const t=a>40?.5:a>12?.38:.28;e.mesh.position.lerp(e.lastState.pos,t)}const o=(e.lastState.podRot||0)+Math.PI;if(e.mesh.rotation.y=THREE.MathUtils.lerp(e.mesh.rotation.y||0,o,.35),e.model&&(playAnimOn(e.model,e.lastState.anim||"Idle"),e.model.userData.mixer&&e.model.uM
serData.mixer.update(.016)),null!=t&&car&&car.pos){const a=e.mesh.position.distanceTo(car.pos);e.mesh.visible=a<=t}else e.mesh.visible=!0})}function appendChatMessage(e,t){const a=document.createElement("div");a.className="chat-msg",a.innerHTML=`<strong>${e}:</strong> ${t}`,chatMessages.appendChild(a),chatMessages.scrollTop=chatMessages.scrollHeight}function dropFlagAtWorld(e){if(flagHolder!==myPlayerID)return;const t=e&&e.clone?e.clone():new THREE.Vector3(e&&e.x||car.pos.x,e&&e.y||car.pos.y,e&&e.z||car.pos.z);t.y=M
getTerrainHeight(t.x,t.z)+14,droppedFlagPos=t,flagHolder=null;const a=Date.now();flagCooldown=a+900,stealCooldown=a+1500,dcList.forEach(e=>{e&&"open"===e.readyState&&e.send(JSON.stringify({type:"flagUpdate",holder:null,dropPos:{x:t.x,y:t.y,z:t.z},cooldown:flagCooldown,stealCooldown:stealCooldown}))}),updateFlagVisual(),updateScoreboard()}function applyLavaHit(){"ctf"===gameMode?(CTF.redHolder===myPlayerID&&dropCtfFlag("red",car.pos),CTF.blueHolder===myPlayerID&&dropCtfFlag("blue",car.pos)):flagHolder===myPlayerID&&M
dropFlagAtWorld(car.pos),consecutiveFreezeHits=0;const e=getSpawnPos();car.pos.copy(e),car.vel.set(0,0,0),car.rotation=0,car.pitch=0,playHitSound()}function applyFreezeHit(e){slowEndTime=Date.now()+(e||5e3),playHitSound(),consecutiveFreezeHits++,consecutiveFreezeHits>=3?(consecutiveFreezeHits=0,playEmote("Death",1600,function(){applyLavaHit()})):playEmote("Hit",450)}function updateFlagVisual(){heldFlagMesh&&heldFlagMesh.parent&&heldFlagMesh.parent.remove(heldFlagMesh),null===flagHolder?(flagMesh&&(flagMesh.visible=M
!0,droppedFlagPos?flagMesh.position.copy(droppedFlagPos):flagHomePos&&flagMesh.position.copy(flagHomePos)),heldFlagMesh&&(heldFlagMesh.visible=!1)):(flagMesh&&(flagMesh.visible=!1),flagHolder===myPlayerID&&cart&&heldFlagMesh?(cart.add(heldFlagMesh),heldFlagMesh.position.set(0,18,0),heldFlagMesh.rotation.y=Math.PI/2,heldFlagMesh.visible=!0):heldFlagMesh&&remotePlayers.forEach((e,t)=>{t===flagHolder&&e.mesh&&(e.mesh.add(heldFlagMesh),heldFlagMesh.position.set(0,18,0),heldFlagMesh.rotation.y=Math.PI/2,heldFlagMesh.visM
ible=!0)})),updateScoreboard()}function isHoldingAnyFlag(){return"ctf"===gameMode?CTF.redHolder===myPlayerID||CTF.blueHolder===myPlayerID:flagHolder===myPlayerID}function countTeams(){let e=0,t=0;return"red"===myTeam?e++:"blue"===myTeam&&t++,remotePlayers.forEach(a=>{"red"===a.team?e++:"blue"===a.team&&t++}),{red:e,blue:t}}function assignBalancedTeam(){const{red:e,blue:t}=countTeams();return e<=t?"red":"blue"}function broadcastTeam(){const e=JSON.stringify({type:"teamUpdate",id:myPlayerID,team:myTeam});dcList.forEaM
ch(t=>{t&&"open"===t.readyState&&t.send(e)})}function broadcastCtfFlags(){if("ctf"!==gameMode)return;const e=JSON.stringify({type:"ctfFlagUpdate",redHolder:CTF.redHolder,blueHolder:CTF.blueHolder,redDrop:CTF.redDrop?{x:CTF.redDrop.x,y:CTF.redDrop.y,z:CTF.redDrop.z}:null,blueDrop:CTF.blueDrop?{x:CTF.blueDrop.x,y:CTF.blueDrop.y,z:CTF.blueDrop.z}:null,teamScores:teamScores});dcList.forEach(t=>{t&&"open"===t.readyState&&t.send(e)})}function updateCtfHud(){const e=document.getElementById("ctfHud"),t=document.getElementBM
yId("teamToggleBtn");if("ctf"!==gameMode||!gameStarted)return e&&(e.style.display="none"),void(t&&(t.style.display="none"));e&&(e.style.display="block"),t&&(t.style.display="block");const a=document.getElementById("ctfScoreLine"),o=document.getElementById("ctfTeamLine");if(a&&(a.innerHTML=`<span style="color:#f44">RED ${teamScores.red}</span>
 <span style="color:#48f">BLUE ${teamScores.blue}</span>`),o){const e="red"===myTeam?"#f44":"#48f";o.innerHTML=`Team: <span style="color:${e};font-weight:bold">${(myTeam||"M
").toUpperCase()}</span>`}}function toggleTeam(){if("ctf"===gameMode&&gameStarted){if(isHoldingAnyFlag()){const e=document.getElementById("ctfTeamLine");return void(e&&(e.textContent="Can't switch team while holding a flag!"))}myTeam="red"===myTeam?"blue":"red",minionRoot&&attachNameTag(minionRoot,myPlayerID,!0,myTeam),broadcastTeam(),updateCtfHud(),updateScoreboard()}}function makeCtfFlagMesh(e,t){return new THREE.Mesh(new THREE.PlaneGeometry(22,16),new THREE.MeshPhongMaterial({color:e,side:THREE.DoubleSide,emiM
ssive:t,emissiveIntensity:3,transparent:!0,opacity:.95}))}function makeCtfPole(e){return new THREE.Mesh(new THREE.CylinderGeometry(2.2,2.2,240,8),new THREE.MeshPhongMaterial({color:e,emissive:e,emissiveIntensity:1.5}))}function clearCtfObjects(){["redPole","bluePole","redFlagMesh","blueFlagMesh","heldRedMesh","heldBlueMesh"].forEach(e=>{const t=CTF[e];t&&(t.parent&&t.parent.remove(t),scene.remove(t)),CTF[e]=null}),CTF.redHolder=CTF.blueHolder=null,CTF.redDrop=CTF.blueDrop=null,CTF.redHome=CTF.blueHome=null}functionM
 setupCtfBases(){clearCtfObjects();const e=MAP_DEFS[currentMapId]||{},t=240;let a,o,n,r;if(e.chaosArena||e.squareWall){const t=.9*(e.outerRadiusOverride||chaosWallRadius||1400);a=t,o=t,n=-t,r=-t}else{const e=6072;a=0,o=-e,n=0,r=e}const s=getTerrainHeight(a,o),l=getTerrainHeight(n,r),i=s+120,c=l+120;CTF.redHome=new THREE.Vector3(a,s+t+8,o),CTF.blueHome=new THREE.Vector3(n,l+t+8,r),CTF.redPole=makeCtfPole(16720418),CTF.redPole.position.set(a,i,o),scene.add(CTF.redPole),CTF.bluePole=makeCtfPole(2254591),CTF.bluePole.pM
osition.set(n,c,r),scene.add(CTF.bluePole),CTF.redFlagMesh=makeCtfFlagMesh(16724787,16711680),CTF.redFlagMesh.position.copy(CTF.redHome),scene.add(CTF.redFlagMesh),CTF.blueFlagMesh=makeCtfFlagMesh(3377407,17663),CTF.blueFlagMesh.position.copy(CTF.blueHome),scene.add(CTF.blueFlagMesh),CTF.heldRedMesh=makeCtfFlagMesh(16724787,16711680),CTF.heldRedMesh.visible=!1,CTF.heldBlueMesh=makeCtfFlagMesh(3377407,17663),CTF.heldBlueMesh.visible=!1,CTF.redHolder=null,CTF.blueHolder=null,CTF.redDrop=null,CTF.blueDrop=null,teamScoM
res={red:0,blue:0}}async function buildChaosScatterProps(){const e=MAP_DEFS[currentMapId]||{};if(!e.chaosArena||!e.scatterModels||!e.scatterModels.length)return;const t=e.scatterModels,a=e.scatterCount||20,o=e.scatterNearFlag||4,n={};for(const e of t)try{const t=await loadGltfById(e);t&&(n[e]=t)}catch(e){}const r=t.filter(e=>n[e]);if(!r.length)return;const s=.9*(e.outerRadiusOverride||chaosWallRadius||1400),l=(e,t,o,l,i,c)=>{const d=r[e%r.length],u=n[d];if(!u)return;const m=u.clone(!0),p=(Math.max(1,a-1),l+e%20/19*M
(i-l)),y=(e%2==0?1:-1)*c*(.25+7*e%10/10)*s,h=o*(1-p),f=t*(1-p)+y*(0!==o&&Math.sign(o)||1)*.55,g=h-y*(0!==t&&Math.sign(t)||1)*.55,b=getTerrainHeight(f,g),E=18+e%3*6;m.position.set(f,b,g),m.scale.set(E,E,E),m.rotation.y=.97*e%(2*Math.PI),m.traverse(e=>{e.isMesh&&e.geometry&&(e.castShadow=!0,e.receiveShadow=!0,e.raycast=THREE.Mesh.prototype.raycast,chaosRayMeshes.push(e))}),scene.add(m),mapObstacleList.push(m)};for(let e=0;e<a;e++)l(e,-s,-s,.1,.55,.42);for(let e=0;e<o;e++)l(a+e,s,s,.08,.28,.3)}function updateCtfFlagViM
sual(){if("ctf"!==gameMode)return;CTF.redFlagMesh&&(CTF.redHolder?CTF.redFlagMesh.visible=!1:(CTF.redFlagMesh.visible=!0,CTF.redFlagMesh.position.copy(CTF.redDrop||CTF.redHome||new THREE.Vector3))),CTF.blueFlagMesh&&(CTF.blueHolder?CTF.blueFlagMesh.visible=!1:(CTF.blueFlagMesh.visible=!0,CTF.blueFlagMesh.position.copy(CTF.blueDrop||CTF.blueHome||new THREE.Vector3)));const e=(e,t)=>{if(t&&(t.parent&&t.parent.remove(t),t.visible=!1,e))if(e===myPlayerID&&cart)cart.add(t),t.position.set(0,20,0),t.visible=!0;else{const M
a=remotePlayers.get(e);a&&a.mesh&&(a.mesh.add(t),t.position.set(0,20,0),t.visible=!0)}};e(CTF.redHolder,CTF.heldRedMesh),e(CTF.blueHolder,CTF.heldBlueMesh),updateScoreboard()}function dropCtfFlag(e,t){const a=t.clone?t.clone():new THREE.Vector3(t.x,t.y,t.z);if(a.y=getTerrainHeight(a.x,a.z)+14,"red"===e){if(CTF.redHolder!==myPlayerID)return;CTF.redHolder=null,CTF.redDrop=a}else{if(CTF.blueHolder!==myPlayerID)return;CTF.blueHolder=null,CTF.blueDrop=a}consecutiveFreezeHits=0,broadcastCtfFlags(),updateCtfFlagVisual()}fM
unction ctfReturnFlagHome(e){"red"===e?(CTF.redHolder=null,CTF.redDrop=null):(CTF.blueHolder=null,CTF.blueDrop=null),broadcastCtfFlags(),updateCtfFlagVisual()}function ctfScore(e){teamScores[e]=(teamScores[e]||0)+1,CTF.redHolder=null,CTF.blueHolder=null,CTF.redDrop=null,CTF.blueDrop=null,consecutiveFreezeHits=0,broadcastCtfFlags(),updateCtfFlagVisual(),updateCtfHud(),updateScoreboard()}function horizDist(e,t){return e&&t?Math.hypot(e.x-t.x,e.z-t.z):1/0}function updateCtfGameplay(){if("ctf"!==gameMode||!controlsEnabM
led||paused)return;myTeam||(myTeam=assignBalancedTeam(),minionRoot&&attachNameTag(minionRoot,myPlayerID,!0,myTeam));const e="red"===myTeam?"blue":"red",t="red"===myTeam?CTF.redHome:CTF.blueHome;if(!t)return;const a=e=>{const t=e+"Holder",a=e+"Drop",o=e+"Home";if(CTF[t])return;if(e===myTeam&&!CTF[a])return;let n=CTF[a]||CTF[o];if(!n){const t="red"===e?CTF.redPole:CTF.bluePole;t&&(n=t.position)}n&&horizDist(car.pos,n)<90&&(CTF[t]=myPlayerID,CTF[a]=null,consecutiveFreezeHits=0,broadcastCtfFlags(),updateCtfFlagVisual()M
)};if(a(e),a(myTeam),horizDist(car.pos,t)<90){if("red"===e&&CTF.redHolder===myPlayerID||"blue"===e&&CTF.blueHolder===myPlayerID)return void ctfScore(myTeam);("red"===myTeam&&CTF.redHolder===myPlayerID||"blue"===myTeam&&CTF.blueHolder===myPlayerID)&&ctfReturnFlagHome(myTeam)}}function clearMapObstacles(){mapObstacleList.forEach(e=>{e&&e.parent&&e.parent.remove(e),e&&scene.remove(e)}),mapObstacleList=[],colliders=colliders.filter(e=>!e.userData||!e.userData.isMapObstacle),mapExtraColliders.forEach(e=>{scene.remove(e)M
}),mapExtraColliders=[],solidBoxes=[],chaosRayMeshes=[]}["pointerdown","keydown","touchstart"].forEach(e=>{window.addEventListener(e,()=>{unlockAudio(),kickVoicePlayback()},{passive:!0})});let chaosWallRadius=1400,chaosRayMeshes=[];const chaosRaycaster=new THREE.Raycaster,chaosRayOrigin=new THREE.Vector3,chaosRayDir=new THREE.Vector3(0,-1,0);function getClubGroundHeight(e,t,a){const o=getTerrainHeight(e,t);if(!chaosRayMeshes.length)return o;const n=(null!=a&&isFinite(a)?a:o)+12;chaosRayOrigin.set(e,n,t),chaosRaycasM
ter.set(chaosRayOrigin,chaosRayDir),chaosRaycaster.far=n-o+80;const r=chaosRaycaster.intersectObjects(chaosRayMeshes,!1);let s=o;for(let e=0;e<r.length;e++){const t=r[e].point.y;t<=n-.2&&t>s&&(s=t)}return s}function getDriveSurfaceHeight(e,t,a){const o=getTerrainHeight(e,t);if("club"===gameMode)return getClubGroundHeight(e,t,a);if(!chaosRayMeshes.length)return o;const n=null!=a&&isFinite(a)?a+40:o+200;chaosRayOrigin.set(e,n,t),chaosRaycaster.set(chaosRayOrigin,chaosRayDir),chaosRaycaster.far=500;let r=chaosRaycasteM
r.intersectObjects(chaosRayMeshes,!1);if(r.length){for(let e=0;e<r.length;e++){const t=r[e].point.y;if(t<=n+2)return Math.max(t,o)}return Math.max(r[0].point.y,o)}return chaosRayOrigin.set(e,8e3,t),chaosRaycaster.far=2e4,r=chaosRaycaster.intersectObjects(chaosRayMeshes,!1),r.length?Math.max(r[0].point.y,o):o}async function buildChaosArena(){clearMapObstacles(),clearLavaPatches(),chaosRayMeshes=[];const e={},t=await loadTextureById("7070c3300760fcbd1764b1daed9ed20717363e02d861ebd5f34658848e6df642i0"),a=t?new THREE.MM
eshStandardMaterial({map:t,roughness:.72,metalness:.08,side:THREE.DoubleSide,transparent:!1,depthWrite:!0,depthTest:!0,polygonOffset:!0,polygonOffsetFactor:1,polygonOffsetUnits:1}):null,o={g3:1,g5:1,g6:1,g12:1,g13:1};for(const[t,a]of Object.entries(n))if("g4"!==t)try{const o=await loadGltfById(a);o&&(e[t]=o)}catch(e){}const n={},r=0,s=0;let l=0;[].forEach(t=>{if("g4"===t.a)return;if(t.s[0]>=8&&Math.abs(t.s[0]-t.s[1])<.05&&Math.abs(t.s[1]-t.s[2])<.05)return;const n=e[t.a];if(!n)return;const i=n.clone(!0),c=1*(t.p[0]M
-r),d=1*(t.p[2]-s),u=1*t.p[1];i.position.set(c,u,d),i.scale.set(1*t.s[0],1*t.s[1],1*t.s[2]),i.rotation.order="YXZ",i.rotation.set(t.r[0]*Math.PI/180,t.r[1]*Math.PI/180,t.r[2]*Math.PI/180),i.traverse(e=>{e.isMesh&&e.geometry&&(e.castShadow=!0,e.receiveShadow=!0,a&&o[t.a]&&(e.material=a),e.raycast=THREE.Mesh.prototype.raycast,chaosRayMeshes.push(e))}),scene.add(i),mapObstacleList.push(i),i.updateMatrixWorld(!0);const m=(new THREE.Box3).setFromObject(i);if(!m.isEmpty()){[[m.min.x,m.min.z],[m.min.x,m.max.z],[m.max.x,m.M
min.z],[m.max.x,m.max.z]].forEach(([e,t])=>{const a=Math.hypot(e,t);a>l&&(l=a)})}"g7"===t.a&&lavaPatches.push({mesh:i,mixer:null,pos:new THREE.Vector3(c,u,d),radius:42,fromChaosProp:!0})});const i=Math.max(2200,1.05*l+80);chaosWallRadius=.5*i*1.1,MAP_DEFS["map-3"]&&(MAP_DEFS["map-3"].outerRadiusOverride=chaosWallRadius,MAP_DEFS["map-3"].squareWall=!0);const c=.98*chaosWallRadius;for(let e=mapObstacleList.length-1;e>=0;e--){const t=mapObstacleList[e];t&&t.position&&(Math.max(Math.abs(t.position.x),Math.abs(t.positioM
n.z))<=c||(scene.remove(t),mapObstacleList.splice(e,1),chaosRayMeshes=chaosRayMeshes.filter(e=>{let a=e;for(;a&&a!==t;)a=a.parent;return a!==t}),lavaPatches=lavaPatches.filter(e=>e.mesh!==t)))}}function buildSquareOuterWall(e,t){if(!t)return;t.flipY=!1;const a=[[-e,e],[e,e],[e,-e],[-e,-e],[-e,e]],o=[];for(let e=0;e<4;e++){const t=a[e][0],n=a[e][1],r=a[e+1][0],s=a[e+1][1];for(let e=0;e<100;e++){const a=e/100,l=t+(r-t)*a,i=n+(s-n)*a;o.push(new THREE.Vector3(l,getTerrainHeight(l,i),i))}}o.push(o[0].clone());let n=[0],M
r=0;for(let e=2;e<o.length;e++){const t=o[r],a=o[e];if(a.distanceTo(t)>35){n.push(e-1),r=e-1;continue}let s=0;const l=a.clone().sub(t).clone().normalize();for(let a=r+1;a<e;a++){const e=o[a],n=e.clone().sub(t).dot(l),r=t.clone().addScaledVector(l,n),i=e.distanceTo(r);i>s&&(s=i)}s>.4&&(n.push(e-1),r=e-1)}0!==n[n.length-1]&&n.push(0);for(let e=0;e<n.length-1;e++){const a=n[e],r=n[e+1],s=o[a],l=o[r],i=s.clone().add(l).multiplyScalar(.5),c=l.clone().sub(s),d=c.length();if(d<.5)continue;const u=c.clone().normalize(),m=MM
ath.atan2(u.x,u.z)+Math.PI/2,p=new THREE.MeshStandardMaterial({map:t,roughness:.92,metalness:.08});{const e=MAP_DEFS[currentMapId]||{},t=null!=e.wallRepeatY?e.wallRepeatY:4;p.map.repeat.set(1,t)}p.map.wrapS=p.map.wrapT=THREE.RepeatWrapping,p.needsUpdate=!0;const y=new THREE.Mesh(new THREE.BoxGeometry(1,23,2),p);y.castShadow=!0,y.receiveShadow=!0,y.scale.set(d/1,1,1),y.position.copy(i),y.position.y+=9.2,y.rotation.y=m,y.userData.isMapWall=!0,scene.add(y),wallMeshList.push(y);const h=Math.max(1,Math.ceil(d/3));for(leM
t e=0;e<h;e++){let t=e/h,a=(e+1)/h;const o=0===e||e===h-1?.5:.1;if(t+=o/d,a-=o/d,t>=a)continue;const n=s.clone().lerp(l,t),r=s.clone().lerp(l,a),i=n.clone().add(r).multiplyScalar(.5),c=n.distanceTo(r),p=new THREE.Mesh(new THREE.BoxGeometry(c,23,2),new THREE.MeshBasicMaterial({visible:!1}));p.position.copy(i),p.position.y+=9.2,p.rotation.y=m;const y=new THREE.Vector3(u.z,0,-u.x).normalize();p.userData={wallDir:u.clone(),wallNormal:y,isMapWall:!0},scene.add(p),colliders.push(p)}}}function getSpawnPos(){const e=MAP_DEM
FS[currentMapId]||{};if("club"===e.mode||"club-hall"===currentMapId){const e=getClubSpawn();return car.rotation=e.rot,new THREE.Vector3(e.x,e.y,e.z)}let t=0,a=0;if(e.chaosArena){let e=JUMP_HUMPS[0];for(let t=1;t<JUMP_HUMPS.length;t++)JUMP_HUMPS[t].height>e.height&&(e=JUMP_HUMPS[t]);t=e.cx,a=e.cz}let o=getDriveSurfaceHeight(t,a,400);if(void 0!==solidBoxes&&solidBoxes)for(let e=0;e<solidBoxes.length;e++){const n=solidBoxes[e],r=void 0!==n.halfXZ?n.halfXZ:n.half,s=void 0!==n.halfY?n.halfY:n.half;Math.abs(t-n.x)<=r&&MaM
th.abs(a-n.z)<=r&&(o=Math.max(o,n.y+s))}return new THREE.Vector3(t,o+.06,a)}function clearInnerWalls(){for(let e=wallMeshList.length-1;e>=0;e--){const t=wallMeshList[e];t.userData&&t.userData.isInnerWall&&(scene.remove(t),wallMeshList.splice(e,1))}colliders=colliders.filter(e=>!(e.userData&&e.userData.isInnerWall))}async function loadTextureById(e){return texUrlBlocked(e)?null:new Promise(t=>{setTimeout(()=>t(null),8e3);(new THREE.TextureLoader).load(`/content/${e}`,e=>{e.wrapS=e.wrapT=THREE.RepeatWrapping,THREE.SRM
GBColorSpace?e.colorSpace=THREE.SRGBColorSpace:THREE.sRGBEncoding&&(e.encoding=THREE.sRGBEncoding),e.needsUpdate=!0,t(e)},void 0,()=>{t(null)})})}async function loadGltfById(e){return new Promise(t=>{setTimeout(()=>t(null),1e4);(new GLTFLoader).load(`/content/${e}`,a=>{const o=a.scene;if(o){const t=[];o.traverse(a=>{if(!a.isMesh)return;const o=[].concat(a.material||[]).some(e=>[e&&e.map,e&&e.envMap,e&&e.emissiveMap].some(e=>texUrlBlocked(e&&e.userData&&e.userData.url||e&&e.image&&e.image.currentSrc||e&&e.image&&e.iM
mage.src||"")));a.geometry&&a.geometry.boundingBox;a.geometry&&!a.geometry.boundingBox&&a.geometry.computeBoundingBox&&a.geometry.computeBoundingBox();const n=a.geometry&&a.geometry.type;(o||n&&/sphere/i.test(n)&&texUrlBlocked(e))&&t.push(a)}),t.forEach(e=>{e.parent&&e.parent.remove(e)})}t(o)},void 0,()=>t(null))})}async function buildMap2Cubes(e){clearMapObstacles();const t=await loadGltfById(e.cubeModelId),a=await loadTextureById(e.cubeTexId);if(!t)return;a&&(a.flipY=!1,a.wrapS=a.wrapT=THREE.RepeatWrapping,THREE.M
SRGBColorSpace&&(a.colorSpace=THREE.SRGBColorSpace),a.needsUpdate=!0);const o=new THREE.MeshStandardMaterial({map:a||null,color:a?16777215:13404228,roughness:.82,metalness:.08});t.traverse(e=>{e.isMesh&&(e.material=o,e.castShadow=!0,e.receiveShadow=!0)});const n=null!=e.cubeScaleXZ?e.cubeScaleXZ:86.4,r=null!=e.cubeScaleY?e.cubeScaleY:69.12,s=null!=e.cubeCount?e.cubeCount:100,l=[];for(let e=0;e<16;e++)for(let t=0;t<16;t++){if((e+t)%2!=0)continue;const a=759*(e+.5)-6072,o=759*(t+.5)-6072;if(Math.hypot(a,o)>6780)contiM
nue;let n=!1;for(const e of JUMP_HUMPS)if(Math.hypot(a-e.cx,o-e.cz)<1.5*e.radius){n=!0;break}n||l.push({x:a,z:o})}const i=Math.max(1,Math.floor(l.length/s));let c=0;const d=t.clone(!0);d.scale.set(n,r,n),d.position.set(0,0,0),d.updateMatrixWorld(!0);const u=(new THREE.Box3).setFromObject(d),m=(u.getSize(new THREE.Vector3),[]),p=[],y=[];for(let e=0;e<l.length&&c<s;e+=i){const{x:a,z:o}=l[e],s=getTerrainHeight(a,o)-u.min.y,i=t.clone(!0);i.scale.set(n,r,n),i.position.set(a,s,o),i.updateMatrixWorld(!0),i.traverse(e=>{e.M
isMesh&&(e.castShadow=!0,e.receiveShadow=!0)}),scene.add(i),mapObstacleList.push(i),p.push(i);const d=(new THREE.Box3).setFromObject(i),h=d.getCenter(new THREE.Vector3),f=d.getSize(new THREE.Vector3);y.push(solidBoxes.length),solidBoxes.push({x:h.x,y:h.y,z:h.z,halfXZ:.5*Math.max(f.x,f.z)*.98,halfY:.5*f.y*.98,half:.5*Math.max(f.x,f.z)*.98}),m.push({x:h.x,y:d.max.y,z:h.z,halfXZ:.5*Math.max(f.x,f.z)}),c++}if(m.length){let e=1/0;for(let t=0;t<m.length;t++)m[t].y<e&&(e=m[t].y);for(let t=0;t<m.length;t++){const a=m[t].y-M
e;if(a<=.001)continue;p[t].position.y-=a,p[t].updateMatrixWorld(!0);const o=y[t];solidBoxes[o]&&(solidBoxes[o].y-=a),m[t].y=e}}e.bridgeModelId&&m.length>=2&&await buildCubeBridges(e,m,a)}async function buildCubeBridges(e,t,a){let o=null;try{o=await loadGltfById(e.bridgeModelId)}catch(e){}let n=10,r="z";if(o){const e=(new THREE.Box3).setFromObject(o).getSize(new THREE.Vector3);e.x>=e.z&&e.x>=e.y?(n=Math.max(.01,e.x),r="x"):e.z>=e.x&&e.z>=e.y?(n=Math.max(.01,e.z),r="z"):(n=Math.max(.01,e.x,e.z),r=e.x>=e.z?"x":"z")}leM
t s=null;if(a){const e=a.clone();e.wrapS=e.wrapT=THREE.RepeatWrapping,e.repeat.set(2,1),e.needsUpdate=!0,s=new THREE.MeshStandardMaterial({map:e,color:16777215,roughness:.82,metalness:.08})}const l=t.length,i=[];for(let e=0;e<l;e++){let a=1/0;for(let o=0;o<l;o++){if(e===o)continue;const n=Math.hypot(t[e].x-t[o].x,t[e].z-t[o].z);n<a&&(a=n)}a<1/0&&i.push(a)}i.sort((e,t)=>e-t);const c=1.55*(i.length>0?i[Math.floor(i.length/2)]:200),d=[];for(let e=0;e<l;e++)for(let a=e+1;a<l;a++){const o=Math.hypot(t[e].x-t[a].x,t[e].zM
-t[a].z);o>=1&&o<=c&&d.push({i:e,j:a,d:o})}d.sort((e,t)=>e.d-t.d);const u=new Array(l).fill(0),m=[];for(const e of d)u[e.i]>=2||u[e.j]>=2||(m.push(e),u[e.i]++,u[e.j]++);for(const e of m){const a=t[e.i],l=t[e.j],i=l.x-a.x,c=l.z-a.z,d=Math.hypot(i,c);if(d<1)continue;const u=Math.min(.08*d,.35*(a.halfXZ||20)),m=i/d,p=c/d,y=a.x+m*u,h=a.z+p*u,f=l.x-m*u,g=l.z-p*u,b=Math.hypot(f-y,g-h),E=.5*(y+f),M=.5*(h+g),S=.5*(a.y+l.y),w=Math.atan2(f-y,g-h),T=Math.atan2(l.y-a.y,b);let v,C=12;if(o){v=o.clone(!0);const e=b/n,t=Math.min(4M
0,Math.max(18,.45*e)),a=Math.min(52,Math.max(24,.4*e));"x"===r?(v.scale.set(e,t,a),v.rotation.order="YXZ",v.rotation.y=w+Math.PI/2):(v.scale.set(a,t,e),v.rotation.order="YXZ",v.rotation.y=w),v.rotation.x=-T,v.position.set(E,S,M),v.updateMatrixWorld(!0);const s=(new THREE.Box3).setFromObject(v);v.position.y+=S-s.min.y-5.5}else v=new THREE.Mesh(new THREE.BoxGeometry(b,12,28),s||new THREE.MeshStandardMaterial({color:9136404,roughness:.9})),v.rotation.y=w+Math.PI/2,v.rotation.z=T,v.position.set(E,S+3,M),C=12;v.traverseM
(e=>{e.isMesh&&(s&&(e.material=s),e.castShadow=!0,e.receiveShadow=!0,e.raycast=THREE.Mesh.prototype.raycast,chaosRayMeshes.push(e))}),scene.add(v),mapObstacleList.push(v)}u.filter(e=>1===e).length,u.filter(e=>2===e).length}async function rebuildWorldForMap(e){const t=MAP_DEFS[e]||MAP_DEFS["club-hall"];currentMapId=e,gameMode=t.mode||"race",flagMesh&&(flagMesh.visible="race"===gameMode&&null===flagHolder),flagPoleMesh&&(flagPoleMesh.visible="race"===gameMode),heldFlagMesh&&(heldFlagMesh.visible=!1),checkpointStars.fM
orEach(e=>{e.mesh&&(e.mesh.visible="race"===gameMode)});let a=coreGrassTex,o=coreWallTex;if(t.groundTexId){const e=await loadTextureById(t.groundTexId);if(e){const o=null!=t.groundRepeat?t.groundRepeat:160;e.repeat.set(o,o),a=e}}if(t.wallTexId){const e=await loadTextureById(t.wallTexId);e&&(o=e)}if(activeGrassTex=a||coreGrassTex,activeWallTex=o||coreWallTex,skyDome&&skyDome.material){let e=coreSkyTex;if(t.skyTexId){const a=await loadTextureById(t.skyTexId);a&&(a.wrapS=a.wrapT=THREE.ClampToEdgeWrapping,THREE.SRGBColM
orSpace&&(a.colorSpace=THREE.SRGBColorSpace),a.needsUpdate=!0,e=a)}e&&(skyDome.material.map=e,skyDome.material.needsUpdate=!0)}if(t.fog){const e=null!=t.fogColor?t.fogColor:658450,a=null!=t.fogNear?t.fogNear:60,o=null!=t.fogFar?t.fogFar:220;scene.fog=new THREE.Fog(e,a,o),scene.background=new THREE.Color(e),skyDome&&(skyDome.visible=!1)}else scene.fog=null,scene.background=null,skyDome&&(skyDome.visible=!0);if(clearTrackSurface(),activeTrackTex=null,clearMapObstacles(),clearCtfObjects(),clearLavaPatches(),"club"===tM
.mode||"club-hall"===e?await buildClubHall():t.chaosArena?(await buildChaosArena(),await buildChaosScatterProps(),buildLavaPatches(!0)):buildLavaPatches(),terrainMesh){scene.remove(terrainMesh);try{terrainMesh.geometry.dispose(),terrainMesh.material.dispose()}catch(e){}terrainMesh=null}if(activeGrassTex&&buildTerrain(activeGrassTex),wallMeshList.forEach(e=>scene.remove(e)),wallMeshList=[],colliders=colliders.filter(e=>!(e.userData&&(e.userData.isMapWall||e.userData.isMapObstacle))),activeWallTex&&"club"!==t.mode&&"M
club-hall"!==e){const e=getTrackParams();t.chaosArena||t.squareWall?buildSquareOuterWall(e.floorHalf||e.outerRx,activeWallTex):(buildWall(e.outerRx,activeWallTex,!1),!1!==t.innerWall&&buildWall(e.innerRx,activeWallTex,!0))}"race"===gameMode?(buildCheckpoints(),flagMesh&&(flagMesh.visible=null===flagHolder),flagPoleMesh&&(flagPoleMesh.visible=!0)):clearCheckpointsAndFlag(),t.cubeModelId&&"club"!==t.mode&&await buildMap2Cubes(t),"ctf"===gameMode&&setupCtfBases(),lastBuiltMapId=e}async function loadMapScript(e){const M
t=MAP_DEFS[e];return!t||!t.content||(!!loadedMapScripts.has(e)||(mapScriptPromises[e]||(mapScriptPromises[e]=new Promise(a=>{const o=document.createElement("script");o.src=t.content,o.onload=()=>{if(loadedMapScripts.add(e),window.MAP_OVERRIDES&&"object"==typeof window.MAP_OVERRIDES){const t=window.MAP_OVERRIDES,a=MAP_DEFS[e].content;Object.assign(MAP_DEFS[e],t),MAP_DEFS[e].content=a,texUrlBlocked(MAP_DEFS[e].skyTexId)&&(MAP_DEFS[e].skyTexId=SMALL_SKY_ID),t.name&&(MAP_DEFS[e].name=t.name),t.mode&&(MAP_DEFS[e].mode=tM
.mode);try{delete window.MAP_OVERRIDES}catch(e){}}a(!0)},o.onerror=()=>{delete mapScriptPromises[e],a(!1)},document.head.appendChild(o),setTimeout(()=>{loadedMapScripts.has(e)||(delete mapScriptPromises[e],a(!1))},5e3)})),mapScriptPromises[e]))}async function startGame(){currentMapId="club-hall",gameMode="club";const e=MAP_DEFS["club-hall"]||MAP_DEFS[currentMapId]||{name:"Club Hall",mode:"club",innerWall:!1,duneScale:.28,outerRadiusOverride:900};if(MAP_DEFS["club-hall"]||(MAP_DEFS["club-hall"]=e),gameMode=e.mode||"M
club",menuShowcaseActive=!1,window._menuKeyLight&&(window._menuKeyLight.visible=!1),showcaseModel&&showcaseModel.parent&&showcaseModel!==playerModel&&showcaseModel!==minionRoot)try{showcaseModel.parent.remove(showcaseModel)}catch(e){}showcaseModel=null,document.getElementById("overlay").style.display="none",document.getElementById("p2p-lobby").style.display="none",document.getElementById("previewOverlay").style.display="none";const t=document.getElementById("status");t&&(t.textContent="Opening the salon
ion"==typeof ensureCart&&ensureCart(),inLobby=!1,previewMode=!1,paused=!1,controlsEnabled=!0,gameStarted=!0;try{document.activeElement&&document.activeElement.blur&&document.activeElement.blur()}catch(e){}window.focus&&window.focus();try{"club-hall"!==lastBuiltMapId&&await rebuildWorldForMap("club-hall")}catch(e){console.error("club rebuild",e);try{await buildClubHall()}catch(e){console.error(e)}}{const e=document.getElementById("micBtn");e&&(e.style.display="none");const t=document.getElementById("movePad"),a=isPhM
oneUI();t&&(t.style.display=a?"block":"none",a&&"function"==typeof bindMovePad&&bindMovePad());const o=document.getElementById("jumpBtn");o&&(o.style.display=a?"flex":"none"),a||(cameraCycleBtn.style.display="none",pauseBtn.style.display="none")}if(customCursor.style.display="block",chatContainer&&(chatContainer.style.display="none"),inLobby=!1,controlsEnabled=!0,gameStarted=!0,void 0!==gameMode&&"club"===gameMode){!isHost&&multiplayerMode||(isHost=isHost||!multiplayerMode,clubHostId=myPlayerID,clubSpeakers.add(myPM
layerID),multiplayerMode&&syncClubStateTo());const e=document.getElementById("clubDock");e&&(e.style.display="block"),refreshClubDock()}cart&&(cart.visible=!1);{const e=getSpawnPos();car.pos.copy(e)}if(car.vel.set(0,0,0),"club"!==gameMode&&(car.rotation=0),car.pitch=0,car.onGround=!0,scores.set(myPlayerID,0),playerLaps.set(myPlayerID,0),myCompletedCheckpoints.clear(),flagHolder=null,droppedFlagPos=null,consecutiveFreezeHits=0,hasLavaPower=!1,updateChargeMeterUI(),"ctf"===gameMode?(myTeam||(myTeam=assignBalancedTeamM
()),minionRoot&&attachNameTag(minionRoot,myPlayerID,!0,myTeam),teamScores={red:0,blue:0},CTF.redHolder=CTF.blueHolder=null,CTF.redDrop=CTF.blueDrop=null,broadcastTeam(),broadcastCtfFlags(),updateCtfFlagVisual(),updateCtfHud(),flagMesh&&(flagMesh.visible=!1),flagPoleMesh&&(flagPoleMesh.visible=!1)):(myTeam=null,updateCtfHud(),updateFlagVisual(),flagPoleMesh&&(flagPoleMesh.visible=!0)),updateScoreboard(),camera.fov=90,camera.updateProjectionMatrix(),isHost&&isHostWithKenobi&&nostrRoomId){publishKenobiHeartbeat(hostOfM
ferCodes&&hostOfferCodes[0]||document.getElementById("lobbyOfferCode")&&document.getElementById("lobbyOfferCode").textContent||"",1+remotePlayers.size)}updateCursorForLobby(),requestAnimationFrame(animate)}function animate(){requestAnimationFrame(animate);const e=.016;if(stageScreenMesh&&stageScreenMesh.userData.shareTex){const v=document.getElementById("stageShareVideo");v&&v.readyState>=2&&(stageScreenMesh.userData.shareTex.needsUpdate=!0)}if(menuShowcaseActive&&showcaseModel&&!gameStarted&&!previewMode&&(showcasM
eModel.rotation.y+=.012,camera.position.set(0,5.2,14),camera.lookAt(0,4.6,0)),!paused&&gameStarted){if(updatePhysics(e),updateProjectiles(e),minionRoot){minionRoot.scale.setScalar(minionRoot.userData.isMutant?12.2904:5.69),minionRoot.position.copy(car.pos),crouchOn&&minionRoot.userData.isMutant&&(minionRoot.position.y-=minionRoot.scale.x*.28),minionRoot.rotation.y=car.rotation+Math.PI;const e=Math.hypot(car.vel.x,car.vel.z),t=padKeys.a||padKeys.d||keys.a||keys.d||keys.arrowleft||keys.arrowright,a=padKeys.s||keys.s|M
|keys.arrowdown;Date.now()<attackUntil||Date.now()<emoteUntil||(crouchOn?playMinionAnim("CrouchIdle"):car.onGround?playMinionAnim(t||a?"Walk":e>28?minionActions.Run?"Run":"Walk":e>4?"Walk":"Idle"):playMinionAnim("Jump"));const o=minionRoot.userData&&minionRoot.userData.actions&&minionRoot.userData.actions[minionRoot.userData.currentAnim];o&&("Jump"===minionRoot.userData.currentAnim?o.timeScale=1:o.timeScale=(a&&!t?-.7:t?.75:.7+Math.min(1.3,e/140))*(minionRoot.userData.isMutant?(/run/i.test(minionRoot.userData.curreM
ntAnim||"")?.462:/walk/i.test(minionRoot.userData.currentAnim||"")?.5:1):1))}minionMixer&&minionMixer.update(e),minionRoot&&applyArmSwing(minionRoot,Math.hypot(car.vel.x,car.vel.z)),minionRoot&&minionRoot.userData&&minionRoot.userData.isMutant&&fixMutantPose()}else minionMixer&&menuShowcaseActive&&(playMinionAnim("Idle"),minionMixer.update(e));if(gameStarted&&updateCamera(),gameStarted&&"function"==typeof projectStageScreen&&projectStageScreen(),gameStarted&&"function"==typeof refreshClubDock&&0===syncCounter&&refrM
eshClubDock(),flagMesh&&null===flagHolder&&(flagMesh.position.y=flagPoleMesh.position.y+120+4*Math.sin(Date.now()/200)),checkpointStars.forEach(t=>{t.mixer&&t.mixer.update(e)}),lavaPatches.forEach(t=>{t.mixer&&t.mixer.update(e)}),flagHolder===myPlayerID){const e=[];for(let t=0;t<4;t++)myCompletedCheckpoints.has(t)||e.push(t+1);cpIndicator&&(cpIndicator.textContent=e.length?`CHECKPOINTS NEEDED: ${e.join("
 ")}`:"ALL CHECKPOINTS COMPLETE
 RETURN TO START!",cpIndicator.style.display=hudVisible?"block":"none")}elM
se cpIndicator&&(cpIndicator.style.display="none");const t=Date.now()-lastFireTime,a=Math.min(100,t/getFireCooldown()*100);if(chargeBar&&(chargeBar.style.width=`${a}%`),updateFlagCarryHint(),hasLavaPower&&updateChargeMeterUI(),isHost&&Date.now()-lastFullStateSent>2500&&sendFullState(),multiplayerMode&&dcList.length>0){if(updateRemotePlayers(),syncCounter=(syncCounter+1)%2,0===syncCounter){const e=Date.now(),t={type:"pos",pos:{x:car.pos.x,y:car.pos.y,z:car.pos.z},rot:car.rotation,anim:currentAnim||"Idle",id:myPlayerM
ID,isHost:!!isHost,team:myTeam,mapId:currentMapId,gameMode:gameMode,slowEndTime:slowEndTime};t.charId=characterKind==="mutant"?OM_MODEL_ID:myCharId,characterKind==="mutant"&&(myCharId=OM_MODEL_ID),lastCharSync=e,dcList.forEach(e=>{e&&"open"===e.readyState&&e.send(JSON.stringify(t))})}cleanupStalePlayers()}renderer.render(scene,camera)}function removeRemotePlayer(e){if(!e||e===myPlayerID)return;clubSpeakers.delete(e),clubRequests.delete(e),"function"==typeof refreshClubDock&&refreshClubDock();const t=remotePlayers.gM
et(e);if(t&&t.mesh&&scene.remove(t.mesh),closeVoicePeer(e),remotePlayers.delete(e),scores.delete(e),playerLaps.delete(e),playerLapTimes.delete(e),void 0!==CTF&&(CTF.redHolder===e&&(CTF.redHolder=null,t&&t.mesh?CTF.redDrop=t.mesh.position.clone():CTF.redDrop=car.pos.clone()),CTF.blueHolder===e&&(CTF.blueHolder=null,t&&t.mesh?CTF.blueDrop=t.mesh.position.clone():CTF.blueDrop=car.pos.clone()),"function"==typeof updateCtfFlagVisual&&updateCtfFlagVisual()),flagHolder===e&&(flagHolder=null,"function"==typeof updateFlagViM
sual&&updateFlagVisual()),updateScoreboard(),updatePlayerCount(),isHost&&updateHostPlayerList(),isHost&&isHostWithKenobi&&nostrRoomId){publishKenobiHeartbeat(hostOfferCodes&&hostOfferCodes[0]||document.getElementById("lobbyOfferCode")&&document.getElementById("lobbyOfferCode").textContent||"",1+remotePlayers.size)}}function cleanupStalePlayers(){const e=Date.now();remotePlayers.forEach((t,a)=>{if(a===myPlayerID)return;const o=t.lastUpdateTime||0,n=t.isHost?4e4:22e3;o&&e-o>n&&removeRemotePlayer(a)});for(let e=dcListM
.length-1;e>=0;e--){const t=dcList[e];t&&"closed"!==t.readyState&&"closing"!==t.readyState||(t&&t._peerId&&removeRemotePlayer(t._peerId),dcList.splice(e,1))}}function startNetKeepalive(){netKeepaliveTimer||(netKeepaliveTimer=setInterval(()=>{if(!multiplayerMode||!dcList.length)return;const e={type:"pos",pos:{x:car.pos.x,y:car.pos.y,z:car.pos.z},rot:car.rotation,anim:currentAnim||"Idle",charId:characterKind==="mutant"?OM_MODEL_ID:myCharId,id:myPlayerID,isHost:!!isHost,team:myTeam,keepalive:!0,slowEndTime:slowEndTimeM
,mapId:currentMapId,gameMode:gameMode},t=JSON.stringify(e);dcList.forEach(e=>{if(e&&"open"===e.readyState)try{e.send(t)}catch(e){}});const a=JSON.stringify({type:"ping",id:myPlayerID,t:Date.now(),isHost:!!isHost});if(dcList.forEach(e=>{if(e&&"open"===e.readyState)try{e.send(a)}catch(e){}}),isHost)try{sendFullState()}catch(e){}},2500))}async function applyHostMap(e,t){return!(!e||!MAP_DEFS[e])&&(currentMapId===e&&lastBuiltMapId===e&&loadedMapScripts.has(e)?(t&&(gameMode=t),!0):applyingHostMap||(applyingHostMap=(asynM
c()=>{try{const a=document.getElementById("mapSelect");a&&(a.value=e),currentMapId=e;return MAP_DEFS[e].content&&await loadMapScript(e),gameMode=MAP_DEFS[e]&&MAP_DEFS[e].mode||t||gameMode,lastBuiltMapId!==e?await rebuildWorldForMap(e):"ctf"!==gameMode||CTF.redPole||setupCtfBases(),!0}finally{applyingHostMap=null}})(),applyingHostMap))}async function initialize(){init();const e=await preloadCoreAssets();if(e){const{grassTex:t,skyTex:a,wallTex:o}=e;buildTerrain(t),lastBuiltMapId=null,gameMode="club",currentMapId="cluM
b-hall",skyDome=new THREE.Mesh(new THREE.SphereGeometry(3800,64,64),new THREE.MeshBasicMaterial({map:a,side:THREE.BackSide})),scene.add(skyDome)}cart&&(scene.add(cart),cart.position.copy(car.pos),cart.rotation.y=car.rotation+POD_YAW_OFFSET,cart.visible=!1),startBtn&&(startBtn.disabled=!1),document.getElementById("status").textContent="Preparing your arrival
",gameStarted||requestAnimationFrame(animate),(async()=>{try{"function"==typeof placeMenuPlaceholder&&placeMenuPlaceholder(),myCharId=SAMPLE_SKULL_ID;let e=awM
ait loadSkinnedMinion(SAMPLE_SKULL_ID);e||(e=await loadSkinnedMinion(FALLBACK_ID)),e?(await showCharacterOnMenu(e),document.getElementById("status").textContent="The salon is ready"):document.getElementById("status").textContent="Preview unavailable
 you may still enter"}catch(e){document.getElementById("status").textContent="Preview failed
 you may still enter"}})()}async function showCharacterOnMenu(e){e&&(showcaseModel&&showcaseModel.parent&&showcaseModel.parent.remove(showcaseModel),playerModel&&playerModM
el.parent&&playerModel!==e&&cart&&playerModel.parent===cart&&cart.remove(playerModel),playerModel=e,showcaseModel=e,cart&&(cart.visible=!1),scene.add(e),e.userData&&e.userData.isMutant?(e.rotation.y=Math.PI,e.scale.setScalar(9.72),e.position.set(0,0,0),camera.position.set(0,6.4,16.8),camera.lookAt(0,3.2,0)):e.userData&&e.userData.isLordinal?(e.rotation.y=0,e.scale.setScalar(1.87),e.position.set(0,2,0),camera.position.set(0,4,12),camera.lookAt(0,2.5,0)):e.userData&&e.userData.isImageSphere?(e.rotation.y=-Math.PI/2,eM
.scale.setScalar(1.76),e.position.set(0,2.5,0),camera.position.set(0,4,11),camera.lookAt(0,2.6,0)):(e.rotation.y=Math.PI,e.scale.setScalar(4.5),e.position.set(0,-.4,0),camera.position.set(0,5.2,14),camera.lookAt(0,4.6,0)),menuShowcaseActive=!0,camera.fov=50,camera.updateProjectionMatrix(),!window._menuKeyLight&&scene&&(window._menuKeyLight=new THREE.PointLight(16773584,2.2,40),window._menuKeyLight.position.set(3,7,8),scene.add(window._menuKeyLight)),window._menuKeyLight&&(window._menuKeyLight.visible=!gameStarted),M
document.getElementById("overlay").style.display="flex",document.getElementById("previewOverlay").style.display="none",previewMode=!1,updateCursorForLobby())}function displayName(e){return String(e||"Mutant").replace(/-\d+$/,"").slice(0,18)}function teamHex(e){return"red"===e?"#ff4444":"blue"===e?"#4488ff":"#ecdcb0"}function makeNameTag(e,t){const a=displayName(e),o=document.createElement("canvas");o.width=512,o.height=96;const n=o.getContext("2d");n.clearRect(0,0,o.width,o.height),n.font="600 36px Palatino, GeorgiM
a, serif",n.textAlign="center",n.textBaseline="middle",n.lineWidth=6,n.strokeStyle="rgba(20,12,6,0.55)",n.strokeText(a,256,52),n.fillStyle=teamHex(t),n.fillText(a,256,52);const r=new THREE.CanvasTexture(o);r.needsUpdate=!0;const s=new THREE.SpriteMaterial({map:r,transparent:!0,opacity:.4,depthTest:!1,depthWrite:!1}),l=new THREE.Sprite(s);return l.userData.isNameTag=!0,l}function attachNameTag(e,t,a,o){if(!e)return;e.userData.nameTag&&e.userData.nameTag.parent&&e.userData.nameTag.parent.remove(e.userData.nameTag);coM
nst n=makeNameTag(t,o);a?(n.scale.set(1.85,.36,1),n.position.set(0,-.12,0)):(n.scale.set(9.2,1.8,1),n.position.set(0,-.55,0)),e.add(n),e.userData.nameTag=n}function attachCharacterToPod(e){e&&(e.parent&&e.parent.remove(e),scene.add(e),minionRoot=e,playerModel=e,e.scale.setScalar(e.userData.isMutant?12.2904:5.69),attachNameTag(e,myPlayerID,!0,myTeam),cart&&(cart.visible=!1))}document.getElementById("multiBtn").addEventListener("click",()=>{currentMapId="club-hall",gameMode="club",document.getElementById("overlay").sM
tyle.display="none",document.getElementById("p2p-lobby").style.display="flex",inLobby=!0,updateCursorForLobby(),searchLiveGames()}),document.getElementById("lobbyHostBtn").addEventListener("click",async()=>{document.getElementById("lobby-status").innerHTML='<span style="font-size:1.4rem;color:#0f0;">HOSTING...</span><br><span style="font-size:1.1rem;color:#0ff;">You can enter the lounge now
 listing may take a few seconds</span>';const e=document.getElementById("lobbyHostControls");e&&(e.style.display="block");cM
onst t=document.getElementById("liveGamesContainer");t&&(t.style.display="block"),collectedCandidatesList=[],hostOfferCodes=[],pcList=[],dcList=[];let a=document.getElementById("lobbyNameInput").value.trim()||"Mutant";myPlayerID=a+"-"+Math.floor(9999*Math.random()),isHost=!0;const o=new RTCPeerConnection({iceServers:[{urls:"stun:stun.l.google.com:19302"},{urls:"stun:stun1.l.google.com:19302"},{urls:"stun:stun2.l.google.com:19302"},{urls:"stun:stun3.l.google.com:19302"},{urls:"stun:stun4.l.google.com:19302"}]});pcLiM
st.push(o),collectedCandidatesList.push([]),o.onicecandidate=e=>{e.candidate&&e.candidate.candidate&&collectedCandidatesList[0].push(e.candidate.candidate.replace(/^candidate:\s*/i,"").trim())};const n=o.createDataChannel("race");dcList.push(n),setupDataChannel(n);const r=await o.createOffer();await o.setLocalDescription(r),await waitForIceGathering(o);let s=Date.now();for(;collectedCandidatesList[0].length<4&&Date.now()-s<12e3;)await new Promise(e=>setTimeout(e,250));await new Promise(e=>setTimeout(e,600));const lM
=encodeSDP(o.localDescription.sdp,"offer",myPlayerID);hostOfferCodes.push(l),document.getElementById("lobbyOfferCode").textContent=l,document.getElementById("lobbyHostControls").style.display="block",updateHostPlayerList(),document.getElementById("lobby-status").innerHTML='<span style="font-size:1.15rem;color:#0f0;">Hosting
 listed as live on Kenobi</span><br><span style="font-size:0.9rem;color:#0af;">Waiting for players to join
</span>',startKenobiLobbyPing(l),searchLiveGames(),updateCursorForLobby()}),documenM
t.getElementById("lobbyCopyOffer").addEventListener("click",()=>{navigator.clipboard.writeText(hostOfferCodes[0]),document.getElementById("lobby-status").textContent="First invite copied!"}),document.getElementById("newInviteBtn").addEventListener("click",async()=>{document.getElementById("lobby-status").innerHTML='<span style="font-size:1.4rem;color:#0f0;">GENERATING...</span><br><span style="font-size:1.1rem;color:#0ff;">May take up to 20 seconds...</span>';const e=pcList.length,t=new RTCPeerConnection({iceServerM
s:[{urls:"stun:stun.l.google.com:19302"},{urls:"stun:stun1.l.google.com:19302"},{urls:"stun:stun2.l.google.com:19302"},{urls:"stun:stun3.l.google.com:19302"},{urls:"stun:stun4.l.google.com:19302"}]});pcList.push(t),collectedCandidatesList.push([]),t.onicecandidate=t=>{t.candidate&&t.candidate.candidate&&collectedCandidatesList[e].push(t.candidate.candidate.replace(/^candidate:\s*/i,"").trim())};const a=t.createDataChannel("race");dcList.push(a),setupDataChannel(a);const o=await t.createOffer();await t.setLocalDescrM
iption(o),await waitForIceGathering(t);let n=Date.now();for(;collectedCandidatesList[e].length<4&&Date.now()-n<12e3;)await new Promise(e=>setTimeout(e,250));await new Promise(e=>setTimeout(e,600));const r=encodeSDP(t.localDescription.sdp,"offer",myPlayerID);hostOfferCodes.push(r);const s=document.createElement("div");s.className="code-out",s.textContent=r,s.onclick=()=>{navigator.clipboard.writeText(r),document.getElementById("lobby-status").textContent="New invite copied!"},document.getElementById("extraOffers").aM
ppendChild(s),document.getElementById("lobby-status").innerHTML='<span style="font-size:1.3rem;color:#0f0;">New invite generated for next player</span>'}),document.getElementById("manualPublishBtn").addEventListener("click",()=>{if(nostrRoomId&&isHostWithKenobi){publishKenobiHeartbeat(document.getElementById("lobbyOfferCode").textContent||"",1+remotePlayers.size),document.getElementById("lobby-status").textContent="Heartbeat published manually"}}),document.getElementById("lobbyJoinBtn").addEventListener("click",asyM
nc()=>{document.getElementById("lobby-status").innerHTML='<span style="font-size:1.4rem;color:#0f0;">JOINING...</span><br><span style="font-size:1.1rem;color:#0ff;">May take up to 20 seconds...</span>';let e=document.getElementById("lobbyPeerCode").value.trim();if(!e)return;let t=document.getElementById("lobbyNameInput").value.trim()||"Mutant";myPlayerID=t+"-"+Math.floor(9999*Math.random());const a=new RTCPeerConnection({iceServers:[{urls:"stun:stun.l.google.com:19302"},{urls:"stun:stun1.l.google.com:19302"},{urls:M
"stun:stun2.l.google.com:19302"},{urls:"stun:stun3.l.google.com:19302"},{urls:"stun:stun4.l.google.com:19302"}]});pcList.push(a),collectedCandidatesList.push([]),a.onicecandidate=e=>{e.candidate&&e.candidate.candidate&&collectedCandidatesList[0].push(e.candidate.candidate.replace(/^candidate:\s*/i,"").trim())},a.ondatachannel=e=>setupDataChannel(e.channel);try{const t=decodeSDP(e);await a.setRemoteDescription({type:"offer",sdp:t.sdp});const o=await a.createAnswer();await a.setLocalDescription(o),await waitForIceGatM
hering(a);let n=Date.now();for(;collectedCandidatesList[0].length<4&&Date.now()-n<12e3;)await new Promise(e=>setTimeout(e,250));await new Promise(e=>setTimeout(e,600));const r=encodeSDP(a.localDescription.sdp,"answer",myPlayerID);document.getElementById("lobbyAnswerCode").textContent=r,publishAnswerToNostr(e,r),document.getElementById("lobby-status").innerHTML='
 <strong style="font-size:1.15rem;">Joining via Kenobi
</strong><br><span style="color:#0af;">Host should accept you shortly</span>'}catch(e){document.M
getElementById("lobby-status").textContent="Invalid offer token"}}),document.getElementById("lobbyCopyAnswer").addEventListener("click",()=>{navigator.clipboard.writeText(document.getElementById("lobbyAnswerCode").textContent),document.getElementById("lobby-status").textContent="Answer copied!"}),document.getElementById("lobbyAcceptBtn").addEventListener("click",async()=>{let e=document.getElementById("lobbyAnswerInput").value.trim();if(e)try{const t=decodeSDP(e),a=pcList.findIndex(e=>e&&"have-local-offer"===e.signM
alingState);if(-1===a)return;await pcList[a].setRemoteDescription({type:"answer",sdp:t.sdp}),document.getElementById("lobby-status").innerHTML=`<span style="font-size:1.3rem;color:#0f0;">Player ${remotePlayers.size+1} connected
</span>`,document.getElementById("lobbyAnswerInput").value="",setTimeout(sendFullState,300),document.getElementById("lobby-status").innerHTML+='<br><span style="color:#0af">Auto-generating next invite...</span>',setTimeout(async()=>{try{const e=pcList.length,t=new RTCPeerConnection({iceSeM
rvers:[{urls:"stun:stun.l.google.com:19302"},{urls:"stun:stun1.l.google.com:19302"},{urls:"stun:stun2.l.google.com:19302"},{urls:"stun:stun3.l.google.com:19302"},{urls:"stun:stun4.l.google.com:19302"}]});pcList.push(t),collectedCandidatesList.push([]),t.onicecandidate=t=>{t.candidate&&t.candidate.candidate&&collectedCandidatesList[e].push(t.candidate.candidate.replace(/^candidate:\s*/i,"").trim())};const a=t.createDataChannel("race");dcList.push(a),setupDataChannel(a);const o=await t.createOffer();await t.setLocalDM
escription(o),await waitForIceGathering(t);let n=Date.now();for(;collectedCandidatesList[e].length<4&&Date.now()-n<12e3;)await new Promise(e=>setTimeout(e,250));await new Promise(e=>setTimeout(e,600));const r=encodeSDP(t.localDescription.sdp,"offer",myPlayerID);hostOfferCodes[0]=r,document.getElementById("lobbyOfferCode").textContent=r,isHostWithKenobi&&nostrRoomId&&publishKenobiHeartbeat(r,1+remotePlayers.size),document.getElementById("lobby-status").innerHTML='<span style="font-size:1.3rem;color:#0f0;">
 accepted!<br>New invite ready for next player</span>'}catch(e){}},1200)}catch(e){document.getElementById("lobby-status").textContent="Invalid answer token"}}),document.getElementById("lobbyStartBtn").addEventListener("click",async()=>{multiplayerMode=!0,isHost=!0,currentMapId="club-hall",gameMode="club",clubHostId=myPlayerID,clubSpeakers.add(myPlayerID);try{const e=readMyCharIdFromInput();if(!minionRoot||myCharId!==e){const t=await loadSkinnedMinion(e);t&&(playerModel=t)}playerModel&&attachCharacterToPod(playerModM
el),await startGame()}catch(e){console.error(e),await startGame().catch(()=>{})}dcList.forEach(e=>{e&&"open"===e.readyState&&e.send(JSON.stringify({type:"pos",pos:{x:car.pos.x,y:car.pos.y,z:car.pos.z},rot:car.rotation,anim:currentAnim||"Idle",id:myPlayerID,charId:myCharId}))}),lastCharSync=Date.now()}),document.getElementById("searchLiveGamesBtn").addEventListener("click",()=>searchLiveGames()),document.getElementById("refreshLiveBtn").addEventListener("click",()=>searchLiveGames()),document.getElementById("lobbyReM
turnToGameBtn").addEventListener("click",()=>{document.getElementById("p2p-lobby").style.display="none",updateCursorForLobby()}),document.getElementById("enterCustomBtn").addEventListener("click",async()=>{const e="mutant"===characterKind?omInscription("omModel","omModelInput"):(document.getElementById("charIdInput").value.trim()||"").replace(/i0$/,"")+"i0"||FALLBACK_ID;myCharId=e||myCharId,document.getElementById("status").textContent="mutant"===characterKind?"Loading OrdiMutant rig and clips
":"Loading minion +M
";try{const t=await loadSkinnedMinion(e);t?(await showCharacterOnMenu(t),document.getElementById("status").textContent="mutant"===characterKind?"Mutant received
 enter the lounge":"Skull received
 enter the lounge"):document.getElementById("status").textContent="Failed to load that character"}catch(e){document.getElementById("status").textContent=e&&e.message?e.message:"Failed to load that character"}}),document.getElementById("startSingleFromPreview").addEventListener("click",()=>{previewMoM
de=!1,document.getElementById("previewOverlay").style.display="none",playerModel&&attachCharacterToPod(playerModel),multiplayerMode=!1,startGame()}),document.getElementById("goToMultiFromPreview").addEventListener("click",()=>{previewMode=!1,document.getElementById("previewOverlay").style.display="none",document.getElementById("overlay").style.display="none",document.getElementById("p2p-lobby").style.display="flex",updateCursorForLobby()}),document.getElementById("startBtn")&&document.getElementById("startBtn").addM
EventListener("click",async()=>{multiplayerMode=!1,isHost=!0,currentMapId="club-hall",gameMode="club";const e=document.getElementById("status");e&&(e.textContent="Entering the lounge
");try{const e=readMyCharIdFromInput();if(!minionRoot||myCharId!==e){const t=await loadSkinnedMinion(e);t&&(playerModel=t)}playerModel&&attachCharacterToPod(playerModel),await startGame()}catch(t){console.error(t),e&&(e.textContent="Enter failed
 retry"),document.getElementById("overlay").style.display="none",await startGame().catM
ch(()=>{})}});const rulesOverlay=document.getElementById("rulesOverlay"),rulesBtn=document.getElementById("rulesBtn"),closeRules=document.getElementById("closeRules"),micBtnEl=document.getElementById("micBtn");micBtnEl&&micBtnEl.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation(),localMicStream&&voiceOn?(selfMuted=!selfMuted,applyMicSendState(),syncMicButtons()):setMicEnabled(!0)});const clubSpeakBtn=document.getElementById("clubSpeakBtn");async function onClubMicClick(e){if(e&&(e.preventDefault(),eM
.stopPropagation()),!clubCanSpeak()){const e=document.getElementById("status");return void(e&&(e.textContent="Request to speak first
 host must accept you"))}return voiceOn&&localMicStream?selfMuted||roomMuteHold?(roomMuteHold=!1,selfMuted=!1,applyMicSendState(),void syncMicButtons()):void 0:(roomMuteHold=!1,selfMuted=!1,void await setMicEnabled(!0))}function onClubMuteClick(e){e&&(e.preventDefault(),e.stopPropagation()),localMicStream&&(selfMuted=!selfMuted,selfMuted||(roomMuteHold=!1),applyMicSendState(),syncMM
icButtons())}function onClubRoomMute(e){if(e&&(e.preventDefault(),e.stopPropagation()),!isHost)return;broadcastClub({type:"roomMute"});const t=document.getElementById("status");t&&(t.textContent="Room muted
 speakers must unmute themselves")}clubSpeakBtn&&clubSpeakBtn.addEventListener("click",e=>{e.preventDefault(),requestSpeak()});const clubMicBtn=document.getElementById("clubMicBtn");clubMicBtn&&clubMicBtn.addEventListener("click",onClubMicClick);const clubMuteBtn=document.getElementById("clubMuteBtn");clubMutM
eBtn&&clubMuteBtn.addEventListener("click",onClubMuteClick);const clubRoomMuteBtn=document.getElementById("clubRoomMuteBtn");clubRoomMuteBtn&&clubRoomMuteBtn.addEventListener("click",onClubRoomMute);const clubScreenBtn=document.getElementById("clubScreenBtn");clubScreenBtn&&clubScreenBtn.addEventListener("click",e=>{e.preventDefault(),publishStageScreen()});const screenUrlInput=document.getElementById("screenUrlInput");screenUrlInput&&screenUrlInput.addEventListener("keydown",e=>{"Enter"===e.key&&(e.preventDefault(M
),publishStageScreen())}),rulesBtn.addEventListener("click",()=>{rulesOverlay.style.display="flex",updateCursorForLobby()}),closeRules.addEventListener("click",()=>{rulesOverlay.style.display="none",updateCursorForLobby()}),pauseRulesBtn.addEventListener("click",()=>{rulesOverlay.style.display="flex",updateCursorForLobby()});const observer=new MutationObserver(()=>{updateCursorForLobby()});observer.observe(document.getElementById("overlay"),{attributes:!0,attributeFilter:["style"]}),observer.observe(document.getEleM
mentById("p2p-lobby"),{attributes:!0,attributeFilter:["style"]}),observer.observe(document.getElementById("previewOverlay"),{attributes:!0,attributeFilter:["style"]}),observer.observe(document.getElementById("rulesOverlay"),{attributes:!0,attributeFilter:["style"]}),window.addEventListener("beforeunload",()=>{kenobiHeartbeatTimer&&clearInterval(kenobiHeartbeatTimer)});const CLUB_FLOOR_R=2640;let clubSpeakers=new Set,clubRequests=new Set,clubHostId=null,stageScreenUrl="",stageScreenMesh=null,stageGroup=null,clubBuilM
t=!1;const _ssCorners=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];let clubUiMode=!1;function blurGameInputs(){try{const e=document.activeElement;e&&e.blur&&e!==document.body&&e.blur()}catch(e){}["chat-input","screenUrlInput","charIdInput","lobbyNameInput"].forEach(e=>{const t=document.getElementById(e);t&&t.blur&&t.blur()})}function setClubUiMode(e,t){if(clubUiMode=!!e,clubUiMode){controlsEnabled=!1,"function"==typeof clearMoveKeys&&clearMoveKeys(),document.body.style.cursor="auto";conM
st e=document.getElementById("customCursor");e&&(e.style.display="none");const a=document.getElementById("stageScreenFrame");a&&t&&/screen/i.test(t)&&a.classList.add("interact"),minionRoot&&t&&/screen/i.test(t)&&(minionRoot.visible=!1)}else{controlsEnabled=!0,blurGameInputs(),document.body.style.cursor="none";const e=document.getElementById("customCursor");e&&(e.style.display=gameStarted?"block":"none");const t=document.getElementById("chatModeHint");t&&(t.style.display="none");const a=document.getElementById("stagM
eScreenFrame");a&&a.classList.remove("interact"),minionRoot&&(minionRoot.visible=!0),"function"==typeof updateCursorForLobby&&updateCursorForLobby()}const a=document.getElementById("clubWalkBtn");a&&(a.textContent=clubUiMode?"Walk (back to avatar)":"Walk (you are in control)")}function clubCanSpeak(){return!(!isHost&&multiplayerMode)||clubSpeakers.has(myPlayerID)}function clubRoleOf(e){return e===clubHostId||isHost&&e===myPlayerID?"host":clubSpeakers.has(e)?"speaker":clubRequests.has(e)?"waiting":"listener"}functioM
n broadcastClub(e){const t=JSON.stringify(Object.assign({id:myPlayerID},e));dcList.forEach(e=>{e&&"open"===e.readyState&&e.send(t)})}function toEmbedUrl(e){const t=String(e||"").trim();if(!t)return"";let a=t.match(/(?:youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/embed\/|youtube\.com\/shorts\/|youtube\.com\/live\/)([A-Za-z0-9_-]{6,})/);if(a){const e=encodeURIComponent(location.origin||"https://www.youtube.com"),t=Math.max(0,Math.floor(window._stageStartSec||0));return"https://www.youtube.com/embed/"+a[1]+"?autoM
play=1&mute=0&playsinline=1&rel=0&modestbranding=1&enablejsapi=1&controls=1&fs=1&start="+t+"&origin="+e}return t}function getStagePunchMaterial(){return window._stagePunchMat||(window._stagePunchMat=new THREE.ShaderMaterial({vertexShader:"void main(){ gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0); }",fragmentShader:"void main(){ gl_FragColor = vec4(0.0,0.0,0.0,0.0); }",transparent:!0,depthTest:!0,depthWrite:!0,fog:!1,side:THREE.DoubleSide,blending:THREE.CustomBlending,blendEquation:THREE.AddM
Equation,blendSrc:THREE.ZeroFactor,blendDst:THREE.ZeroFactor,blendSrcAlpha:THREE.ZeroFactor,blendDstAlpha:THREE.ZeroFactor})),window._stagePunchMat}function getStageIdleMaterial(){return window._stageIdleMat||(window._stageIdleMat=new THREE.MeshBasicMaterial({color:1118232,transparent:!0,opacity:.28,side:THREE.DoubleSide,fog:!1,depthWrite:!0})),window._stageIdleMat}function setStagePortal(e){stageScreenMesh&&(stageScreenMesh.material=e?getStagePunchMaterial():getStageIdleMaterial(),stageScreenMesh.renderOrder=e?1e3M
:0)}function ytCommand(e,t){const a=document.getElementById("stageIframe");if(a&&a.contentWindow)try{a.contentWindow.postMessage(JSON.stringify({event:"command",func:e,args:t||[]}),"*")}catch(e){}}function unmuteStageVideo(){ytCommand("unMute"),ytCommand("setVolume",[100]),ytCommand("playVideo");const e=document.getElementById("stageIframe");e&&e.src&&e.src.indexOf("mute=1")>=0&&(e.src=e.src.replace("mute=1","mute=0"))}let localShareStream=null;function jumboVol(){return Math.max(0,Math.min(1,"number"==typeof jumboM
MixLevel?jumboMixLevel:.28))}function applyShareVideo(e){if(!e||"video"!==e.kind)return;window._pendingShareVideo=e;const t=document.getElementById("stageShareVideo");if(!t)return;let a=t.srcObject instanceof MediaStream?t.srcObject:new MediaStream;a.getVideoTracks().forEach(e=>a.removeTrack(e)),a.addTrack(e),t.srcObject=a,t.playsInline=!0,t.muted=!0,t.volume=0,t.style.display="block",t.style.position="fixed",t.style.left="-2000px",t.style.width="320px",t.style.height="180px",t.style.opacity="0.01",e.enabled=!0;conM
st kick=()=>t.play().catch(()=>{});kick(),t.onloadeddata=kick,!stageScreenMesh||(stageScreenMesh.visible=!0,stageScreenMesh.frustumCulled=!1,stageScreenMesh.renderOrder=5);const o=new THREE.VideoTexture(t);o.flipY=!0,THREE.SRGBColorSpace&&(o.colorSpace=THREE.SRGBColorSpace),o.minFilter=THREE.LinearFilter,o.magFilter=THREE.LinearFilter,o.generateMipmaps=!1,o.needsUpdate=!0,"function"==typeof setStagePortal&&setStagePortal(!1),stageScreenMesh&&(stageScreenMesh.material=new THREE.MeshBasicMaterial({map:o,side:THREE.DoM
ubleSide,fog:!1,toneMapped:!1,depthWrite:!1}),stageScreenMesh.userData.shareTex=o);const n=document.getElementById("stageScreenFrame");n&&(n.style.display="none")}function applyShareAudio(e){if(!e||"audio"!==e.kind)return;try{window._pendingShareAudio=e;e.enabled=!0;let a=document.getElementById("stageShareAudio");a||(a=document.createElement("audio"),a.id="stageShareAudio",a.autoplay=!0,a.playsInline=!0,document.body.appendChild(a));a.srcObject=new MediaStream([e]);a.muted=!1;a.volume=Math.max(.35,jumboVol());consM
t play=()=>{a.volume=Math.max(.35,jumboVol());a.play().catch(()=>{})};play();e.onunmute=play;if(!window._shareAudioUnlock){window._shareAudioUnlock=()=>{play();document.removeEventListener("pointerdown",window._shareAudioUnlock)};document.addEventListener("pointerdown",window._shareAudioUnlock)}}catch(err){}}function applyShareStreamToStage(e){e&&(window._pendingShareStream=e,e.getVideoTracks&&e.getVideoTracks().forEach(applyShareVideo),e.getAudioTracks&&e.getAudioTracks().forEach(applyShareAudio),"video"===e.kind&M
&applyShareVideo(e),"audio"===e.kind&&applyShareAudio(e))}async function startHostShare(){if(multiplayerMode&&!isHost){const e=document.getElementById("status");return void(e&&(e.textContent="Only the host can share a window"))}const videoOpt={frameRate:12,width:{max:1280},height:{max:720}};try{try{localShareStream=await navigator.mediaDevices.getDisplayMedia({video:videoOpt,audio:{suppressLocalAudioPlayback:!0,echoCancellation:!1,noiseSuppression:!1,autoGainControl:!1},systemAudio:"include",preferCurrentTab:!1,selM
fBrowserSurface:"exclude"})}catch(err){if(err&&"NotAllowedError"===err.name)throw err;localShareStream=await navigator.mediaDevices.getDisplayMedia({video:videoOpt,audio:!1})}}catch(e){const t=document.getElementById("status");return void(t&&(t.textContent="Share cancelled or blocked"))}const e=localShareStream.getAudioTracks();e.forEach(e=>{try{e.contentHint="music",e.enabled=!0}catch(e){}});const t=document.getElementById("status");!e.length&&t&&(t.textContent="No tab audio captured. Share a Chrome TAB (not a winM
dow) and check Share tab audio."),applyShareStreamToStage(localShareStream);const a=localShareStream.getVideoTracks()[0];a&&a.addEventListener("ended",()=>stopHostShare());const o=new Set;void 0!==remotePlayers&&remotePlayers.forEach((e,t)=>o.add(t)),dcList.forEach(e=>{e&&e._peerId&&o.add(e._peerId)}),sharePcs.forEach((e,t)=>o.add(t)),o.forEach(e=>{if(!e||e===myPlayerID)return;const t=sharePcs.get(e);if(t){try{t.close()}catch(e){}sharePcs.delete(e)}offerShare(e)}),"function"==typeof broadcastClub&&broadcastClub({tyM
pe:"screenShare",on:!0});const n=document.getElementById("clubShareStopBtn"),r=document.getElementById("clubShareBtn");n&&(n.style.display="block"),r&&(r.textContent="Sharing
")}function stopHostShare(){localShareStream&&(localShareStream.getTracks().forEach(e=>{try{e.stop()}catch(e){}}),localShareStream=null),sharePcs.forEach((e,t)=>{try{e.getSenders().forEach(e=>{try{e.replaceTrack(null)}catch(e){}})}catch(e){}});const e=document.getElementById("stageShareVideo");e&&(e.srcObject=null);const t=document.getElemenM
tById("stageShareAudio");t&&(t.srcObject=null),window._pendingShareStream=null,window._pendingShareVideo=null,window._pendingShareAudio=null,stageScreenMesh&&"function"==typeof getStageIdleMaterial&&(stageScreenMesh.material=getStageIdleMaterial()),"function"==typeof broadcastClub&&broadcastClub({type:"screenShare",on:!1});const a=document.getElementById("clubShareStopBtn"),o=document.getElementById("clubShareBtn");a&&(a.style.display="none"),o&&(o.textContent="Share window")}function applyStageScreen(e,t){stageScrM
eenUrl=e||"",null!=t&&(window._stageStartSec=t);const a=document.getElementById("stageScreenFrame"),o=document.getElementById("stageIframe");if(!a||!o)return;const n=toEmbedUrl(stageScreenUrl);if(!n)return o.src="about:blank",a.style.display="none",void setStagePortal(!1);a.style.display="none",o.src!==n&&(o.src=n),applyStagePreviewTexture(stageScreenUrl),setStagePortal(!0),setTimeout(()=>{try{ytCommand("unMute"),ytCommand("setVolume",[Math.round(100*("number"==typeof jumboMixLevel?jumboMixLevel:.55))]),ytCommand("M
playVideo")}catch(e){}if(t)try{ytCommand("seekTo",[t,!0])}catch(e){}},800)}function publishStageScreen(){if(!isHost)return;const e=document.getElementById("screenUrlInput"),t=e?e.value.trim():"";window._stageT0=Date.now(),window._stageStartSec=0,applyStageScreen(t,0),broadcastClub({type:"screenUrl",url:t,t0:window._stageT0,start:0})}function stageElapsed(){return window._stageT0?(Date.now()-window._stageT0)/1e3+(window._stageStartSec||0):0}function startStageClock(){window._stageClock||(window._stageClock=setIntervM
al(()=>{isHost&&stageScreenUrl&&broadcastClub({type:"screenClock",url:stageScreenUrl,t:stageElapsed()})},2500))}function requestSpeak(){clubCanSpeak()?isHost||(clubSpeakers.delete(myPlayerID),voiceOn&&setMicEnabled(!1),broadcastClub({type:"speakLeave"}),refreshClubDock()):(clubRequests.add(myPlayerID),broadcastClub({type:"speakRequest"}),refreshClubDock())}function hostSetSpeaker(e,t){e&&(isHost||clubHostId===myPlayerID)&&(isHost=!0,t?(clubRequests.delete(e),clubSpeakers.add(e),broadcastClub({type:"speakGrant",targM
et:e,speakers:Array.from(clubSpeakers)})):(clubSpeakers.delete(e),clubRequests.delete(e),broadcastClub({type:"speakRevoke",target:e,speakers:Array.from(clubSpeakers)})),refreshClubDock())}function handleClubNet(e){if(!e||!e.type)return!1;if(-1===["speakRequest","speakLeave","speakGrant","speakRevoke","speakerSync","screenUrl","screenClock","roomMute","screenShare","shareRepair"].indexOf(e.type))return!1;if("speakRequest"===e.type){e.id&&clubRequests.add(e.id);const t=document.getElementById("status");return t&&isHoM
st&&(t.textContent=(e.id||"Guest")+" requests the floor"),refreshClubDock(),!0}if("speakLeave"===e.type)return e.id&&(clubSpeakers.delete(e.id),clubRequests.delete(e.id)),refreshClubDock(),!0;if("speakGrant"===e.type)return Array.isArray(e.speakers)&&(clubSpeakers=new Set(e.speakers)),e.target&&(clubSpeakers.add(e.target),clubRequests.delete(e.target),e.target===myPlayerID&&(remotePlayers.forEach((e,t)=>getVoicePc(t)),dcList.forEach(e=>{e&&e._peerId&&getVoicePc(e._peerId)}),clubHostId&&clubHostId!==myPlayerID&&getVM
oicePc(clubHostId),attachMicToPeers(!0),voicePcs.forEach((e,t)=>offerVoice(t)))),isHost&&e.target&&e.target!==myPlayerID&&offerVoice(e.target),refreshClubDock(),!0;if("speakRevoke"===e.type)return Array.isArray(e.speakers)&&(clubSpeakers=new Set(e.speakers)),e.target&&(clubSpeakers.delete(e.target),clubRequests.delete(e.target),e.target===myPlayerID&&voiceOn&&setMicEnabled(!1)),refreshClubDock(),!0;if("speakerSync"===e.type){if(e.hostId&&(clubHostId=e.hostId),Array.isArray(e.speakers)&&(clubSpeakers=new Set(e.speakM
ers)),Array.isArray(e.requests)&&(clubRequests=new Set(e.requests)),e.sharing&&(window._remoteShareOn=!isHost),null!=e.screenUrl){const t=e.t0?(Date.now()-e.t0)/1e3+(e.start||0):e.start||0;applyStageScreen(e.screenUrl,t)}return refreshClubDock(),!0}if("screenUrl"===e.type){const t=e.t0?(Date.now()-e.t0)/1e3+(e.start||0):e.start||0;applyStageScreen(e.url||"",t);const a=document.getElementById("screenUrlInput");return a&&null!=e.url&&(a.value=e.url),!0}if("screenClock"===e.type&&!isHost){if(e.url&&e.url!==stageScreenM
Url)applyStageScreen(e.url,e.t||0);else if(null!=e.t)try{ytCommand("seekTo",[e.t,!0]),ytCommand("playVideo")}catch(e){}return!0}if("shareRepair"===e.type&&isHost&&localShareStream)return voicePcs.forEach((e,t)=>{e.getSenders().forEach(e=>{if(!e._clubShare||!e._clubShareKind)return;const t="video"===e._clubShareKind?localShareStream.getVideoTracks()[0]:localShareStream.getAudioTracks()[0];if(t)try{e.replaceTrack(t)}catch(e){}}),"function"==typeof offerVoice&&offerVoice(t)}),!0;if("screenShare"===e.type){if(window._rM
emoteShareOn=!!e.on&&!isHost,!1===e.on&&!isHost){const e=document.getElementById("stageShareVideo");e&&(e.srcObject=null),stageScreenMesh&&"function"==typeof getStageIdleMaterial&&(stageScreenMesh.material=getStageIdleMaterial())}return!0}if("roomMute"===e.type){if(!isHost){roomMuteHold=!0,selfMuted=!0,applyMicSendState(),syncMicButtons();const e=document.getElementById("status");e&&(e.textContent="Host muted the room
 click Unmute my mic"),refreshClubDock()}return!0}return!1}function syncClubStateTo(e){if(!isHoM
st)return;const t={type:"speakerSync",id:myPlayerID,hostId:myPlayerID,speakers:Array.from(clubSpeakers),requests:Array.from(clubRequests),screenUrl:stageScreenUrl,sharing:!(void 0===localShareStream||!localShareStream),t0:window._stageT0||Date.now(),start:stageElapsed()},a=JSON.stringify(t);e&&"open"===e.readyState?e.send(a):broadcastClub(t)}function refreshClubDock(){const e=document.getElementById("clubDock"),t=document.getElementById("clubPlayerList"),a=document.getElementById("clubRoleLine"),o=document.getElemeM
ntById("clubSpeakBtn"),n=document.getElementById("clubScreenPanel");if(!e||!t)return;e.style.display=gameStarted?"block":"none";const r=document.getElementById("clubDockToggle");r&&(r.style.display=gameStarted?"block":"none");const s=document.getElementById("clubMixer");s&&(s.style.display=gameStarted?"block":"none"),gameStarted&&isHost&&!window._hostVoiceArmed&&(window._hostVoiceArmed=!0,ensureHostBroadcast()),clubDockCollapsed&&e.classList.add("collapsed"),n&&(n.style.display=isHost?"block":"none");const l=documeM
nt.getElementById("clubRoomMuteBtn");l&&(l.style.display=isHost?"block":"none"),"function"==typeof syncMicButtons&&syncMicButtons();const i=clubRoleOf(myPlayerID);a&&(a.textContent="You: "+i.toUpperCase()+(isHost?"
 hosting":"")),o&&(isHost?(o.textContent="Host mic is always allowed",o.disabled=!0):clubCanSpeak()?(o.textContent="Leave speaker seat",o.disabled=!1):clubRequests.has(myPlayerID)?(o.textContent="Waiting for host
",o.disabled=!0):(o.textContent="Request to speak",o.disabled=!1));const c=[],d=new Set,M
u=(e,t)=>{if(!e||d.has(e))return;d.add(e);const a=clubRoleOf(e),o="function"==typeof displayName?displayName(e):String(e||"Guest");let n="";isHost&&e!==myPlayerID&&(n="waiting"===a?'<span class="club-actions"><button data-act="grant" data-id="'+e+'">ALLOW</button><button data-act="deny" data-id="'+e+'">NO</button></span>':"speaker"===a?'<span class="club-actions"><button data-act="revoke" data-id="'+e+'">REMOVE</button></span>':'<span class="club-actions"><button data-act="grant" data-id="'+e+'">INVITE</button></spM
an>');const r="host"===a?"host":"speaker"===a?"speak":"waiting"===a?"wait":"";c.push('<div class="club-row"><div class="club-name">'+o+(t||"")+'</div><span class="club-tag '+r+'">'+a+"</span>"+n+"</div>")};u(myPlayerID,"
 you"),remotePlayers.forEach((e,t)=>u(t)),clubRequests.forEach(e=>u(e)),clubSpeakers.forEach(e=>u(e)),t.innerHTML=c.join("")||"
",t.querySelectorAll("button[data-act]").forEach(e=>{const t=t=>{t&&(t.preventDefault(),t.stopPropagation());const a=e.getAttribute("data-id");hostSetSpeaker(a,"grant"M
===e.getAttribute("data-act"))};e.onclick=t,e.onmousedown=t})}function youtubeIdFromUrl(e){const t=String(e||"").match(/(?:youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/embed\/|youtube\.com\/live\/)([A-Za-z0-9_-]{6,})/);return t?t[1]:""}function applyStagePreviewTexture(e){if(!stageScreenMesh)return;const t=youtubeIdFromUrl(e),a=t?"https://img.youtube.com/vi/"+t+"/hqdefault.jpg":"";a?(new THREE.TextureLoader).load(a,e=>{stageScreenMesh&&stageScreenMesh.material&&(e.colorSpace=THREE.SRGBColorSpace||e.colorSpace,M
stageScreenMesh.material.map=e,stageScreenMesh.material.color.set(16777215),stageScreenMesh.material.transparent=!1,stageScreenMesh.material.opacity=1,stageScreenMesh.material.needsUpdate=!0)},void 0,()=>{}):stageScreenMesh.material&&(stageScreenMesh.material.map=null,stageScreenMesh.material.opacity=.28,stageScreenMesh.material.needsUpdate=!0)}function projectStageScreen(){const e=document.getElementById("stageScreenFrame");if(!(e&&stageScreenMesh&&camera&&renderer))return;if(!stageScreenUrl)return void(e.style.diM
splay="none");e.style.display="block",stageScreenMesh.updateWorldMatrix(!0,!1);const t=stageScreenMesh.geometry;t.boundingBox||t.computeBoundingBox();const a=t.boundingBox;_ssCorners[0].set(a.min.x,a.max.y,0),_ssCorners[1].set(a.max.x,a.max.y,0),_ssCorners[2].set(a.max.x,a.min.y,0),_ssCorners[3].set(a.min.x,a.min.y,0);const o=window.innerWidth,n=window.innerHeight,r=_ssCorners.map(e=>{const t=e.clone().applyMatrix4(stageScreenMesh.matrixWorld).project(camera);return{x:(.5*t.x+.5)*o,y:(.5*-t.y+.5)*n,z:t.z}});if(r.soM
me(e=>e.z>1||e.z<-1))return void(e.style.opacity="0");e.style.opacity="1";const s=function(e,t){const a=[],o=[];for(let n=0;n<4;n++){const r=e[n],s=t[n];a.push([r[0],r[1],1,0,0,0,-r[0]*s[0],-r[1]*s[0]]),o.push(s[0]),a.push([0,0,0,r[0],r[1],1,-r[0]*s[1],-r[1]*s[1]]),o.push(s[1])}const n=a.map((e,t)=>e.concat([o[t]]));for(let e=0;e<8;e++){let t=e;for(let a=e+1;a<8;a++)Math.abs(n[a][e])>Math.abs(n[t][e])&&(t=a);const a=n[e];n[e]=n[t],n[t]=a;const o=n[e][e]||1e-12;for(let t=e;t<=8;t++)n[e][t]/=o;for(let t=0;t<8;t++)if(M
t!==e){const a=n[t][e];for(let o=e;o<=8;o++)n[t][o]-=a*n[e][o]}}return n.map(e=>e[8])}([[0,0],[1280,0],[1280,720],[0,720]],[[r[0].x,r[0].y],[r[1].x,r[1].y],[r[2].x,r[2].y],[r[3].x,r[3].y]]),l=[s[0],s[3],0,s[6],s[1],s[4],0,s[7],0,0,1,0,s[2],s[5],0,1];e.style.transform="matrix3d("+l.join(",")+")"}startStageClock();let clubCollideMeshes=[];function resolveClubMeshWalls(e,t){if(!clubCollideMeshes.length)return t;const a=[1.2,4.2,8.5],o=new THREE.Vector3(t.x-e.x,0,t.z-e.z),n=Math.hypot(o.x,o.z);if(n<1e-5)return t;o.multM
iplyScalar(1/n);const r=new THREE.Raycaster;r.far=n+3.4;let s=null;for(let t=0;t<a.length;t++){const l=new THREE.Vector3(e.x,e.y+a[t],e.z);r.set(l,o);const i=r.intersectObjects(clubCollideMeshes,!1);if(!i.length)continue;const c=i[0];c.distance<n+3.4&&(!s||c.distance<s.distance)&&(s=c)}if(!s)return t;const l=s.face&&s.object?s.face.normal.clone().transformDirection(s.object.matrixWorld):o.clone().negate();l.y=0,l.lengthSq()<1e-6&&l.copy(o).negate(),l.normalize(),l.dot(o)>0&&l.negate();const i=n+3.4-s.distance+.15;tM
.x=e.x+o.x*Math.max(0,n-i),t.z=e.z+o.z*Math.max(0,n-i),t.x+=.2*l.x,t.z+=.2*l.z;const c=car.vel.x*-l.x+car.vel.z*-l.z;return c>0&&(car.vel.x+=l.x*c,car.vel.z+=l.z*c),t}function plantClubMushroom(e,t,a,o,n,r,s,l){if(!e)return;const i="function"==typeof getClubGroundHeight?getClubGroundHeight(t,a,r+80):r,c=e.clone(!0);c.scale.setScalar(o),c.position.set(t,i,a),c.rotation.y=null!=l?l:0,n.add(c),c.updateMatrixWorld(!0);let d=(new THREE.Box3).setFromObject(c),u=Math.max(.01,d.max.y-d.min.y);const m=Math.max(s||10,u);u<m&M
&(c.scale.multiplyScalar(m/u),c.updateMatrixWorld(!0),d=(new THREE.Box3).setFromObject(c)),c.position.y+=i-d.min.y,c.updateMatrixWorld(!0),c.traverse(e=>{e.isMesh&&e.geometry&&(e.castShadow=!0,e.receiveShadow=!0,chaosRayMeshes.push(e))})}const CLUB_MUSH_IDS=["5f55e6743880d1f8adbd8e5e7c730fde9903707c0202bfdd3e19334c88a82808i0","4f57fb110ffa81b4905e789f337f9469f620a7106815e2f132409312a6770beci0","05f0bccee01c3f63ecc627530dc91e63fec456157bb54742f4566437baf9985bi0"];async function loadClubMushroomTemplates(){const e="fM
unction"==typeof makeGltfLoader?await makeGltfLoader():new GLTFLoader,t=[];return await Promise.all(CLUB_MUSH_IDS.map(a=>new Promise(o=>{const n=setTimeout(()=>o(),2e4);e.load("/content/"+a,e=>{clearTimeout(n),e&&e.scene&&t.push(e.scene),o()},void 0,()=>{clearTimeout(n),o()})}))),t}async function scatterClubMushrooms(e,t,a,o){const n=await loadClubMushroomTemplates();if(!n.length)return;const r=o?o.x:0,s=o?o.z:0,l=Math.atan2(s,r),i=[{dist:.05,count:5,sc:1.7,minH:4},{dist:.1625,count:7,sc:4.9,minH:10.5},{dist:.275,cM
ount:8,sc:8.05,minH:17},{dist:.3875,count:9,sc:11.2,minH:150},{dist:.5,count:8,sc:14.4,minH:200}],c=1.02*Math.PI;let d=0;for(let o=0;o<i.length;o++){const u=i[o],m=a*u.dist;for(let i=0;i<u.count;i++){const p=1===u.count?.5:i/(u.count-1),y=o%2*(c/(2*u.count)),h=l+Math.PI-c/2+p*c+y,f=Math.cos(h)*m,g=Math.sin(h)*m;if(Math.hypot(f-r,g-s)<.17*a)continue;const b=Math.atan2(r-f,s-g);plantClubMushroom(n[d%n.length],f,g,u.sc,e,t,u.minH,b),d++}const endR=a*.52,left=l+Math.PI-c/2,right=l+Math.PI+c/2,lx=Math.cos(left)*endR,lz=M
Math.sin(left)*endR,rx=Math.cos(right)*endR,rz=Math.sin(right)*endR;plantClubMushroom(n[0],lx,lz,16,e,t,375,Math.atan2(r-lx,s-lz)),plantClubMushroom(n[n.length-1],rx,rz,16,e,t,375,Math.atan2(r-rx,s-rz))}}async function buildClubHall(){clearMapObstacles(),"function"==typeof clearCtfObjects&&clearCtfObjects(),"function"==typeof clearLavaPatches&&clearLavaPatches(),"function"==typeof clearCheckpointsAndFlag&&clearCheckpointsAndFlag(),stageGroup&&stageGroup.parent&&scene.remove(stageGroup),stageGroup=new THREE.Group,clM
ubCollideMeshes=[];const e=(MAP_DEFS["club-hall"]||{}).domeModelId||"e4f5f9ff44b15f7ee9f4af3949ed844bbd8d8754b94359241c9646d2dbe94b7di0",t=getTerrainHeight(0,0);let a=null;try{const t="function"==typeof makeGltfLoader?await makeGltfLoader():new GLTFLoader;a=await new Promise(a=>{const o=setTimeout(()=>a(null),25e3);t.load("/content/"+e,e=>{clearTimeout(o),a(e&&e.scene?e.scene:null)},void 0,()=>{clearTimeout(o),a(null)})})}catch(e){console.error(e)}if(a){stageGroup.add(a),a.updateMatrixWorld(!0);let e=(new THREE.BoxM
3).setFromObject(a),o=e.getSize(new THREE.Vector3);const n=5200,r=Math.max(o.x,o.z,1);a.scale.multiplyScalar(n/r),a.updateMatrixWorld(!0),e=(new THREE.Box3).setFromObject(a);const castleH=Math.max(1,e.max.y-e.min.y);a.scale.y*=600/castleH,a.updateMatrixWorld(!0),e=(new THREE.Box3).setFromObject(a),a.position.y+=t-e.min.y,a.updateMatrixWorld(!0),e=(new THREE.Box3).setFromObject(a),window._clubDomeBB=e;let castleTex=null;try{castleTex=await loadTextureById(((MAP_DEFS["club-hall"]||{}).castleTexId)||"7070c3300760fcbd1M
764b1daed9ed20717363e02d861ebd5f34658848e6df642i0")}catch(err){}if(castleTex){castleTex.wrapS=castleTex.wrapT=THREE.RepeatWrapping;castleTex.repeat.set(1,1);castleTex.flipY=false}a.traverse(e=>{if(e.isMesh&&e.geometry){e.castShadow=!0;e.receiveShadow=!0;if(e.material){const mats=Array.isArray(e.material)?e.material:[e.material];const next=mats.map(m=>{const c=m.clone();c.side=THREE.DoubleSide;if(castleTex){c.map=castleTex;if(c.color)c.color.set(16777215);if(c.emissive)c.emissive.set(0);if("metalness" in c)c.metalneM
ss=0;if("roughness" in c)c.roughness=1}c.needsUpdate=!0;return c});e.material=Array.isArray(e.material)?next:next[0]}if(e.geometry.computeBoundsTree)try{e.geometry.computeBoundsTree()}catch(err){}chaosRayMeshes.push(e);clubCollideMeshes.push(e)}})}const o=new THREE.PlaneGeometry(262,185);{const uv=o.attributes.uv;for(let i=0;i<uv.count;i++)uv.setX(i,1-uv.getX(i));uv.needsUpdate=!0}const n="function"==typeof getStageIdleMaterial?getStageIdleMaterial():new THREE.MeshBasicMaterial({color:1118232,side:THREE.DoubleSide,M
fog:!1});stageScreenMesh=new THREE.Mesh(o,n);const r=window._clubDomeBB||new THREE.Box3(new THREE.Vector3(-200,t,-200),new THREE.Vector3(200,t+80,200)),s=r.getSize(new THREE.Vector3);let l=(r.min.x+r.max.x)*.5,i=(r.min.z+r.max.z)*.5;const c="function"==typeof getClubGroundHeight?getClubGroundHeight(l,i,t+30):t,d=c+92.5+4;stageScreenMesh.position.set(l,d,i);const grove=Math.atan2(i,l)+Math.PI,gx=l+Math.cos(grove)*600,gz=i+Math.sin(grove)*600;stageScreenMesh.lookAt(gx,d,gz),stageScreenMesh.rotateY(Math.PI),stageScreeM
nMesh.rotateX(THREE.MathUtils.degToRad(-10)),window._pendingShareStream&&applyShareStreamToStage(window._pendingShareStream),window._pendingShareVideo&&applyShareVideo(window._pendingShareVideo),window._clubScreenPos={x:l,y:d,z:i},window._clubDomeR=860;stageScreenMesh.renderOrder=12,stageGroup.add(stageScreenMesh);const p=new THREE.PointLight(16764023,1.4,520);p.position.set(0,t+Math.min(120,.35*s.y),0),stageGroup.add(p);const y=new THREE.PointLight(8956671,.55,600);y.position.set(.4*l,d,.4*i),stageGroup.add(y);conM
st h=new THREE.Mesh(new THREE.CircleGeometry(CLUB_FLOOR_R,80),new THREE.MeshStandardMaterial({color:12891274,roughness:.92,metalness:.04,transparent:!0,opacity:.18}));h.rotation.x=-Math.PI/2,h.position.y=t+.35,h.receiveShadow=!0,stageGroup.add(h);const f=new THREE.Mesh(new THREE.TorusGeometry(CLUB_FLOOR_R-2,3.2,8,80),new THREE.MeshStandardMaterial({color:13214247,emissive:3811848,roughness:.5}));f.rotation.x=Math.PI/2,f.position.y=t+1.2,stageGroup.add(f),window._clubSpawnLift=r?Math.max(48,.38*(r.max.y-t)):90;try{aM
wait scatterClubMushrooms(stageGroup,t,window._clubDomeR||700,window._clubScreenPos)}catch(e){console.error(e)}scene.add(stageGroup),mapObstacleList.push(stageGroup),clubBuilt=!0}function getClubSpawn(){const e=getTerrainHeight(0,0),t=window._clubSpawnLift||90,a=.15*(window._clubDomeR||700);return{x:(2*Math.random()-1)*a,y:e+t,z:(2*Math.random()-1)*a,rot:Math.random()*Math.PI*2}}function placeMenuPlaceholder(){if(showcaseModel||gameStarted)return;const e=new THREE.Group,t=new THREE.Mesh(new THREE.SphereGeometry(1.1M
5,24,18),new THREE.MeshStandardMaterial({color:15259043,roughness:.45,metalness:.15})),a=new THREE.Mesh(new THREE.SphereGeometry(.18,10,8),new THREE.MeshBasicMaterial({color:1118481})),o=a.clone();a.position.set(-.35,.2,.9),o.position.set(.35,.2,.9),e.add(t,a,o),e.position.set(0,2.2,0),e.userData.isPlaceholder=!0,scene.add(e),showcaseModel=e,menuShowcaseActive=!0,camera.fov=50,camera.updateProjectionMatrix(),camera.position.set(0,5.2,14),camera.lookAt(0,4.6,0)}let clubDockCollapsed=!1;function setClubDockCollapsed(M
e){clubDockCollapsed=!!e;const t=document.getElementById("clubDock"),a=document.getElementById("clubDockToggle");t&&t.classList.toggle("collapsed",clubDockCollapsed),a&&(a.textContent=clubDockCollapsed?"
",a.title=clubDockCollapsed?"Show menu":"Hide menu",a.style.display=gameStarted?"block":"none")}const clubDockToggle=document.getElementById("clubDockToggle");clubDockToggle&&clubDockToggle.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation(),setClubDockCollapsed(!clubDockCollapsed)});const cM
lubShareBtn=document.getElementById("clubShareBtn");clubShareBtn&&clubShareBtn.addEventListener("click",e=>{e.preventDefault(),startHostShare()});const clubShareStopBtn=document.getElementById("clubShareStopBtn");clubShareStopBtn&&clubShareStopBtn.addEventListener("click",e=>{e.preventDefault(),stopHostShare()});const clubUnmuteBtn=document.getElementById("clubUnmuteBtn");clubUnmuteBtn&&clubUnmuteBtn.addEventListener("click",e=>{e.preventDefault(),unmuteStageVideo()});const clubWalkBtn=document.getElementById("clubM
WalkBtn");clubWalkBtn&&clubWalkBtn.addEventListener("click",e=>{e.preventDefault(),setClubUiMode(!1)});const screenUrlInput2=document.getElementById("screenUrlInput");function bindClubWalkKeys(){if(window._clubWalkBound)return;window._clubWalkBound=!0;window.addEventListener("keydown",e=>{if(!gameStarted||paused||clubUiMode)return;const t=(e.key||"").toLowerCase(),a=e.code||"";let o=!1;"w"!==t&&"KeyW"!==a&&"arrowup"!==t&&"ArrowUp"!==a||(keys.w=keys.arrowup=!0,o=!0),"s"!==t&&"KeyS"!==a&&"arrowdown"!==t&&"ArrowDown"!M
==a||(keys.s=keys.arrowdown=!0,o=!0),"a"!==t&&"KeyA"!==a&&"arrowleft"!==t&&"ArrowLeft"!==a||(keys.a=keys.arrowleft=!0,o=!0),"d"!==t&&"KeyD"!==a&&"arrowright"!==t&&"ArrowRight"!==a||(keys.d=keys.arrowright=!0,o=!0),"shift"!==t&&"ShiftLeft"!==a&&"ShiftRight"!==a||(keys.shift=!0,o=!0)," "!==t&&"Space"!==a||(keys[" "]=keys.space=!0,jumpHeld=!0,jumpRequested=!0,o=!0),"c"===t&&(crouchOn=!crouchOn,o=!0),"h"===t&&(playEmote("Hit",450),o=!0),"j"===t&&(playEmote("Punch",700),o=!0),"1"===t&&(playEmote("Dance",1400),o=!0),"2"=M
==t&&(playEmote("Dance",1400),o=!0),"4"===t&&(playEmote("HoldPistol",1200),o=!0),"5"===t&&(playEmote("PistolShoot",700),o=!0),"6"===t&&(playEmote("Reload",1200),o=!0),"7"===t&&(playEmote("HoldRifle",1200),o=!0),"8"===t&&(playEmote("RifleShoot",1100),o=!0),"v"===t&&(o=!0),o&&(typingChat=!1,e.preventDefault())},!0),window.addEventListener("keyup",e=>{const t=(e.key||"").toLowerCase(),a=e.code||"";"w"!==t&&"KeyW"!==a&&"arrowup"!==t&&"ArrowUp"!==a||(keys.w=keys.arrowup=!1),"s"!==t&&"KeyS"!==a&&"arrowdown"!==t&&"ArrowDoM
wn"!==a||(keys.s=keys.arrowdown=!1),"a"!==t&&"KeyA"!==a&&"arrowleft"!==t&&"ArrowLeft"!==a||(keys.a=keys.arrowleft=!1),"d"!==t&&"KeyD"!==a&&"arrowright"!==t&&"ArrowRight"!==a||(keys.d=keys.arrowright=!1),"shift"!==t&&"ShiftLeft"!==a&&"ShiftRight"!==a||(keys.shift=!1)," "!==t&&"Space"!==a||(keys[" "]=keys.space=!1,jumpHeld=!1)},!0)}screenUrlInput2&&screenUrlInput2.addEventListener("focus",()=>{gameStarted&&setClubUiMode(!0,"MENU
 ESC or Walk to return to your avatar")}),bindClubWalkKeys(),document.getElementById("M
controlsBtn")&&document.getElementById("controlsBtn").addEventListener("click",()=>{const e=document.getElementById("controlsOverlay");e&&(e.style.display="flex")}),document.getElementById("controlsClose")&&document.getElementById("controlsClose").addEventListener("click",()=>{const e=document.getElementById("controlsOverlay");e&&(e.style.display="none")}),document.getElementById("pickSkull")&&document.getElementById("pickSkull").addEventListener("click",()=>setCharacterKind("skull")),document.getElementById("pickMM
utant")&&document.getElementById("pickMutant").addEventListener("click",async()=>{setCharacterKind("mutant");const s=document.getElementById("status");s&&(s.textContent="Loading OrdiMutant
");try{const m=await loadOrdiMutant({local:true});m&&await showCharacterOnMenu(m);s&&(s.textContent="Mutant ready
 enter the lounge")}catch(e){s&&(s.textContent=e&&e.message?e.message:"Mutant failed to load")}});try{const _k=localStorage.getItem("om-kind");_k&&setCharacterKind(_k);const _q=new URLSearchParams(location.search1);}catch(e){}initialize()</script> </body></html>h!
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><title>Skulls at War</title><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta
      http-equiv="Content-Security-Policy"
      content="default-src * 'unsafe-inline' 'unsafe-eval' data: blob: ws: wss: https:;"
      href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24'%3E%3Ctext y='20' font-size='20'%3E%F0%9F%92%80%3C/text%3E%3C/svg%3E"
        overflow: hidden;
        background: #000;
        font-family: monospace;
        cursor: none;
      #previewOverlay,
      #rulesOverlay {
        cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24'%3E%3Ctext y='20' font-size='20'%3E%F0%9F%92%80%3C/text%3E%3C/svg%3E")
        cursor: none;
        touch-action: none;
      /* MAIN OVERLAY */
        position: absolute;
        width: 100%;
        height: 100%;
        background: rgba(18, 10, 6, 0.72);
        color: #e8d5a3;
        display: flex;
        align-items: center;
        justify-content: center;
        flex-direction: column;
        gap: clamp(4px, 1.2vw, 8px);
        z-index: 100;
        text-align: center;
        padding: clamp(10pM
        overflow-y: auto;
        max-height: 100vh;
        font-size: clamp(1.75rem, 5.4vw, 3.3rem);
        margin: 0 0 4px 0;
        text-shadow: 0 0 18px #8a5a2a;
        line-height: 1.05;
      #overlay p.subtitle {
        font-size: clamp(0.95rem, 2.6vw, 1.25rem);
        margin: 0 0 12px 0;
        color: #d4af37;
        text-shadow: 0 0 14px #7a4a1a;
        margin-top: 4px;
        padding: clamp(8px, 2vw, 12px) clamp(20px,M
        font-size: clamp(1.15rem, 3vw, 1.6rem);
        background: #6b2b1f;
        color: #f3e6c4;
        border: none;
        cursor: pointer;
        text-transform: uppercase;
        font-weight: bold;
        border-radius: 12px;
      button:disabled {
        background: #444;
        cursor: not-allowed;
        opacity: 0.6;
      button:hover:not(:disabled) {
        background: #8a3a24;
        margin: clamp(6px, 1.8vw, 10px) 0;
e: clamp(1.05rem, 2.5vw, 1.25rem);
        min-height: 1.6em;
      #charPick{display:flex;flex-direction:column;align-items:center;gap:8px;margin:8px 0 4px}
      #charPick button{min-width:220px;margin-top:0}
      #pickMutant{min-width:280px;font-size:1.25rem;padding:14px 28px}
      #charPick button.picked{outline:2px solid #d4af37;background:#8a3a24}
      #charIdInput {
        width: clamp(280px, 80vw, 420px);
        padding: 10px;
        font-size: clamp(1.05rem, 2.8vw, 1.2rem);
nd: rgba(0, 20, 0, 0.5);
        border: 1px solid #8a6a3b;
        color: #e8d5a3;
        border-radius: 8px;
        text-align: center;
        margin: 8px 0;
        position: absolute;
        bottom: 58px;
        width: 132px;
        height: 132px;
        border-radius: 16px;
        background: rgba(16, 10, 6, 0.3);
        border: 1px solid rgba(201, 162, 39, 0.4);
        z-index: 5000;
        display: none;
        touch-action: none;
        pointer-evenM
      #movePad .pad-cross {
        position: absolute;
        inset: 10px;
        border-radius: 12px;
          linear-gradient(rgba(232,213,163,0.28), rgba(232,213,163,0.28)) center/10px 70% no-repeat,
          linear-gradient(rgba(232,213,163,0.28), rgba(232,213,163,0.28)) center/70% 10px no-repeat;
        pointer-events: none;
      #movePad .pad-knob {
        position: absolute;
        width: 36px;
        height: 36px;
        margin: -18px 0 0 -18px;
        border-radius: 50%;
        background: rgba(30,232,255,0.35);
        border: 1px solid rgba(30,232,255,0.7);
        pointer-events: none;
      /* PREVIEW OVERLAY */
      #previewOverlay {
        position: absolute;
        width: 100%;
        height: 100%;
        background: rgba(0, 0, 0, 0.22);
        color: #e8d5a3;
        display: none;
        align-items: center;
        justify-content: center;
        flex-direction: cM
        z-index: 100;
        padding: clamp(20px, 5vw, 40px);
        box-sizing: border-box;
      #previewOverlay p {
        font-size: clamp(1.35rem, 3.8vw, 1.7rem);
        margin-bottom: auto;
        text-shadow: 0 0 14px #7a4a1a;
      #previewButtons {
        display: flex;
        gap: clamp(15px, 4vw, 30px);
        margin-top: auto;
        width: 100%;
        justify-content: center;
      #previewButtons button {
        background: transparent !important;
border: 3px solid #c9a227;
        color: #d4af37;
        text-shadow: 0 0 12px #7a4a1a;
        box-shadow: 0 0 22px rgba(196, 162, 106, 0.55);
        padding: clamp(12px, 3vw, 18px) clamp(30px, 6vw, 45px);
        font-size: clamp(1.2rem, 3.5vw, 1.6rem);
      /* MULTIPLAYER LOBBY */
        position: fixed;
        display: none;
        justify-content: center;
        align-items: center;
        z-index: 2000;
        background: rgba(0, 0, 0, 0.95);
        background: rgba(28, 16, 10, 0.97);
        border: 2px solid #c9a227;
        box-shadow: 0 0 28px rgba(139, 58, 42, 0.55);
        padding: 28px 36px;
        max-width: 620px;
        max-height: 92vh;
        overflow-y: auto;
        border-radius: 8px;
      .lobby-title {
        text-align: center;
        font-size: 28px;
        font-weight: bold;
        color: #e8d5a3;
        text-shadow: 0 0 18px #8a5a2a;
        margin-bottom: 4px;
        text-align: center;
        color: #d4af37;
        font-size: 12px;
        letter-spacing: 3px;
        margin-bottom: 20px;
      .lobby-label {
        font-size: 12px;
        color: #d4af37;
        margin-bottom: 5px;
        display: block;
      .lobby-field {
        width: 100%;
        background: rgba(36, 22, 12, 0.9);
        border: 1px solid #8a6a3b;
        color: #e8d5a3;
        font-family: monospace;
        font-size: 13px;
        padding: 9px 11px;
        margin-bottom: 10px;
        border-radius: 4px;
      textarea.lobby-field {
        resize: vertical;
        min-height: 55px;
        width: 100%;
        padding: 12px;
        background: rgba(107, 43, 31, 0.45);
        border: 2px solid #c9a227;
        color: #e8d5a3;
        font-family: monospace;
        font-size: 14px;
        font-weight: bold;
        letter-spacing: 2px;
        cursor: pointer;
        text-transform: uppercase;
        border-radius: 4px;
      .lobby-btn:hover {
        background: rgba(138, 58, 36, 0.45);
        box-shadow: 0 0 18px #8a3a24;
      .lobby-btn.green {
        border-color: #c9a227;
        color: #c4a36a;
        background: rgba(138, 58, 36, 0.28);
      .lobby-btn.small {
        padding: 8px;
        font-size: 11px;
        text-align: center;
        color: #666;
        font-size: 11px;
        letter-spacing: 4px;
        background: #1c120c;
        border: 1px solid #8a6a3b;
        padding: 10px;
        margin: 8px 0;
        font-size: 11px;
        color: #e8d5a3;
        word-break: break-all;
        max-height: 80px;
        overflow-y: auto;
        cursor: pointer;
        font-family: monospace;
        border-radius: 4px;
        display: block;
      #liveGamesContainer {
        margin-top: 12px;
        border-top: 1px solid #8a6a3b;
        padding-top: 12px;M
      #liveGamesList {
        max-height: 240px;
        overflow-y: auto;
      .live-game-item {
        background: rgba(107, 43, 31, 0.35);
        border: 1px solid #8a6a3b;
        margin: 6px 0;
        padding: 10px;
        border-radius: 4px;
        cursor: pointer;
        display: flex;
        justify-content: space-between;
        align-items: center;
        color: #0f0 !important;
      .live-game-item.stale {
        background: rgba(255, 60, 60, 0.12);
      .live-game-item.stale strong {
        color: #ff5555 !important;
      .live-game-item.stale small {
        color: #ffaaaa !important;
      .live-game-item > div {
        color: #e8d5a3;
      .live-game-item strong {
        color: #e8d5a3;
      .live-game-item small {
        color: #d4af37;
      .live-game-item:hover {
        background: rgba(138, 58, 36, 0.4);
      #lobby-status {
        text-align: center;
        padding: 10px;
        color: #d4af37;
        min-height: 1.6em;
        font-weight: bold;
      /* HUD / PAUSE / CHAT */
        position: absolute;
        color: #0a0;
        font-size: clamp(0.55rem, 1.25vw, 0.65rem);
        text-shadow: 0 0 6px #040;
        pointer-events: none;
        z-index: 50;
        opacity: 0.9;
      #customCursor {
        position: absolute;
        width: 20px;
        height: 20pM
        background: radial-gradient(circle, #d4af37 30%, transparent 70%);
        border: 2px solid #c9a227;
        border-radius: 50%;
        pointer-events: none;
        transform: translate(-50%, -50%);
        z-index: 200;
        opacity: 0.9;
        mix-blend-mode: difference;
        display: none;
        position: absolute;
        transform: translateX(-50%);
        background: rgba(0, 0, 0, 0.85);
        color: #d4af37;
        border: 2px solid #c9a227;
        border-radius: 8px;
        font-size: clamp(0.75rem, 2vw, 0.95rem);
        display: none;
        z-index: 300;
        text-align: center;
        max-width: 90vw;
        pointer-events: none;
      #chat-container {
        position: fixed;
        bottom: 155px;
        width: clamp(280px, 38vw, 340px);
        z-index: 150;
        display: none;
      #chat-messages {
        max-height: 240px;
        background: rgba(0, 0, 0, 0.75);
        padding: 8px;
        border: 1px solid #8a6a3b;
        border-radius: 4px;
        color: #ddd;
        font-size: 13px;
        padding: 2px 0;
        word-break: break-word;
        width: 100%;
        padding: 8px;
        background: rgba(0, 0, 0, 0.85);
        border: 1px solid #8a6a3b;
        color: #e8d5a3;
        font-family: monospace;
        font-size: 13px;
        margin-top: 6px;M
        border-radius: 4px;
        outline: none;
      #chat-input:focus {
        border-color: #d4af37;
        box-shadow: 0 0 8px #8a5a2a;
      #chatModeHint {
        position: absolute;
        bottom: 355px;
        background: rgba(255, 0, 0, 0.85);
        color: #fff;
        padding: 8px 16px;
        border-radius: 4px;
        font-size: 13px;
        display: none;
        z-index: 160;
        pointer-events: none;
      /* FREEZE / CP / SCOREBOARD *M
      #freezeCharge {
        position: absolute;
        bottom: 25px;
        right: 25px;
        width: 220px;
        z-index: 60;
        pointer-events: none;
      #voiceMixWrap {
        margin-top: 8px;
        pointer-events: auto;
      #voiceMixWrap .label {
        color: #d4af37;
        font-size: clamp(0.65rem, 1.4vw, 0.8rem);
        text-shadow: 0 0 8px #7a4a1a;
        margin-bottom: 2px;
        display: flex;
        justify-content: space-between;
        height: 16px;
        accent-color: #1ee8ff;
        cursor: pointer;
        pointer-events: auto;
      #freezeCharge .label {
        color: #d4af37;
        font-size: clamp(0.7rem, 1.5vw, 0.85rem);
        text-shadow: 0 0 8px #7a4a1a;
        margin-bottom: 3px;
      #freezeCharge .bar-outer {
        height: 6px;
        background: #111;
        border: 2px solid #c9a227;
        border-radius: 4px;
        overflow: hidden;
reezeCharge .bar-inner {
        height: 100%;
        background: linear-gradient(90deg, #0ff, #88f);
        transition: width 0.1s linear;
      #freezeCharge.lava-ready .label {
        color: #ff8800;
        text-shadow: 0 0 8px #f80;
      #freezeCharge.lava-ready .bar-outer {
        border-color: #ff8800;
      #freezeCharge.lava-ready .bar-inner {
        background: linear-gradient(90deg, #ff4400, #ffaa00);
      #flagCarryHint {
        position: abM
        transform: translateX(-50%);
        color: #fff;
        font-size: clamp(0.76rem, 1.75vw, 0.96rem);
        font-weight: bold;
        text-shadow: 0 1px 2px #000;
        opacity: 0.85;
        pointer-events: none;
        z-index: 110;
        display: none;
        font-family: monospace;
        letter-spacing: 0.04em;
        background: rgba(0, 0, 0, 0.55);
        padding: 4px 14px;
        border-radius: 6px;
        transform: translateX(-50%);
        z-index: 400;
        text-align: center;
        pointer-events: none;
        font-family: monospace;
        background: rgba(0, 0, 0, 0.55);
        padding: 4px 16px 6px;
        border-radius: 8px;
        border: 1px solid rgba(0, 255, 255, 0.2);
      #ctfScoreLine {
        color: #fff;
        font-size: clamp(0.7rem, 1.5vw, 0.8rem);
        text-shadow: 0 1px 2px #000;
        margin-bottom: 2px;
      #ctfTeamLine {
        color: #d4af37;
        font-size: clamp(0.6rem, 1.2vw, 0.7rem);
        text-shadow: 0 1px 2px #000;
      #cpIndicator {
        position: absolute;
        bottom: 80px;
        right: 25px;
        color: #d4af37;
        font-size: clamp(0.85rem, 2vw, 1rem);
        text-shadow: 0 0 10px #7a4a1a;
        background: rgba(0, 0, 0, 0.6);
        padding: 4px 10px;
        border-radius: 6px;
        display: none;
        z-index: 65;
        pointer-events: none;
white-space: nowrap;
        position: absolute;
        bottom: 25px;
        width: clamp(280px, 38vw, 340px);
        z-index: 55;
        background: rgba(0, 0, 0, 0.75);
        border: 1px solid #8a6a3b;
        border-radius: 4px;
        padding: 8px;
        display: none;
      #scoreboard .title {
        color: #d4af37;
        font-size: 13px;
        margin-bottom: 6px;
        text-align: center;
        color: #dddM
        font-size: 13px;
        line-height: 1.4;
      /* RULES OVERLAY */
      #rulesOverlay {
        position: absolute;
        width: 100%;
        height: 100%;
        background: rgba(0, 0, 0, 0.92);
        color: #e8d5a3;
        display: none;
        align-items: center;
        justify-content: center;
        flex-direction: column;
        z-index: 400;
        padding: clamp(20px, 5vw, 40px);
        overflow-y: auto;
        text-align: center;
 box-sizing: border-box;
      #rulesOverlay h2 {
        font-size: clamp(1.8rem, 5vw, 2.8rem);
        margin: 0 0 20px 0;
        text-shadow: 0 0 16px #7a4a1a;
        color: #d4af37;
      #rulesOverlay ul {
        list-style: none;
        max-width: 820px;
        text-align: left;
        margin: 0 auto 24px;
        font-size: clamp(0.95rem, 2.4vw, 1.15rem);
      #rulesOverlay li {
        margin: 8px 0;
      #rulesOverlay p {
        max-width: 82M
        margin: 0 auto 18px;
        text-align: left;
        font-size: clamp(0.95rem, 2.4vw, 1.15rem);
        line-height: 1.45;
      #rulesOverlay .close-btn {
        background: #8a3a24;
        color: #f3e6c4;
        margin-top: 20px;
      /* Floating Rules button */
      #pauseRulesBtn {
        position: absolute;
        bottom: 30px;
        transform: translateX(-50%);
        background: rgba(107, 43, 31, 0.45);
        border: 3px solid #c9a227;
        padding: clamp(8px, 2.5vw, 14px) clamp(20px, 5vw, 32px);
        font-size: clamp(1.1rem, 3vw, 1.4rem);
        font-weight: bold;
        text-transform: uppercase;
        border-radius: 12px;
        box-shadow: 0 0 22px #8a5a2a;
        cursor: pointer;
        z-index: 350;
        display: none;
      #pauseRulesBtn:hover {
        background: rgba(138, 58, 36, 0.5);
      /* LAVA POWER-UP HUD */
      #lavaPowerHint {
        position: absolute;
        transform: translateX(-50%);
        background: rgba(255, 80, 0, 0.9);
        color: #fff;
        padding: 8px 24px;
        border: 3px solid #ff0;
        border-radius: 9999px;
        font-size: 1.1rem;
        font-weight: bold;
        display: none;
        z-index: 120;
        text-shadow: 0 0 12px #ff0;
        box-shadow: 0 0 25px #f80;
      /* CAMERA CYCLE + PAUSE (mobile)
 above canvas, large hit targets */
      #cameraCycleBtn,
        right: 16px;
        background: rgba(107, 43, 31, 0.55);
        border: 3px solid #c9a227;
        color: #d4af37;
        font-size: 1.35rem;
        font-weight: bold;
        width: 48px;
        height: 48px;
        border-radius: 50%;
        display: none;
        align-items: center;
        justify-content: center;
        z-index: 5000;
        box-shadow: 0 0 18px #8a5a2a;
        cursor: pointer;
        pointer-events: auto;
        touch-action: manipulation;
        -webkit-tapM
-highlight-color: transparent;
        user-select: none;
        -webkit-user-select: none;
        position: absolute;
        bottom: 14px;
        transform: translateX(-50%);
        background: rgba(16, 10, 6, 0.3);
        border: 1px solid rgba(201, 162, 39, 0.4);
        color: #e8d5a3;
        font-size: 0.8rem;
        font-weight: bold;
        width: 168px;
        height: 38px;
        border-radius: 14px;
        display: none;
        align-items: center;
        justify-content: center;
        z-index: 5000;
        cursor: pointer;
        pointer-events: auto;
        touch-action: manipulation;
        -webkit-tap-highlight-color: transparent;
        user-select: none;
      #jumpBtn:active {
        background: rgba(16, 10, 6, 0.5);
        color: #f3e6c4;
      #cameraCycleBtn {
        position: absolute;
        bottom: 55px;
        right: 61px;
        width: 28px;
        height: 28px;
        font-size: 0.55rem;
        line-height: 1;
        font-weight: bold;
        font-family: monospace;
        background: #04181c;
        border: 1px solid #1ee8ff;
        color: #1ee8ff;
        border-radius: 6px;
        cursor: pointer;
        pointer-events: auto;
        touch-action: manipulation;
        display: none;
        background: #1ee8ff;
        color: #04181c;
        border-colorM
      #cameraCycleBtn:active,
      #pauseBtn:active {
        background: #6b2b1f;
        color: #f3e6c4;
      /* Keep WebGL canvas under HUD buttons */
        position: relative;
        touch-action: none;
    <script type="importmap">{
"three": "/content/0d013bb60fc5bf5a6c77da7371b07dc162ebc7d7f3af0ff3bd00ae5f0c546445i0",
"three/addons/loaders/GLTFLoader.js": "/content/af27eb654e3f1ce4036fd5b415fe441202f0c784e3e1eM
03cb63890b5e820297ci0",
"three/addons/loaders/DRACOLoader.js": "/content/701931ffd87e9a547834542357cbf5d975b740073aec9eeb62ef96254f570520i0"
  </head><body><div id="customCursor"></div><div id="movePad" aria-hidden="true"><div class="pad-cross"></div><div class="pad-knob" id="movePadKnob"></div></div><div id="lavaPowerHint" style="display:none !important" aria-hidden="true"></div><div id="flagCarryHint">You have the flag!</div><button id="jumpBtn">JUMP</button><button id="cameraCycleBtn">C</button><butM
ton id="pauseBtn">P</button><div id="ctfHud" style="display:none;"><div id="ctfScoreLine">RED 0
 0 BLUE</div><div id="ctfTeamLine">Team:
</div></div><button id="micBtn" title="Voice chat">MIC</button><button id="teamToggleBtn" title="Switch Team" style="display:none;position:absolute;bottom:55px;right:25px;z-index:70;width:28px;height:28px;padding:0;font-size:0.65rem;line-height:1;background:rgba(0,0,0,0.6);border:1px solid #c9a227;color:#d4af37;border-radius:6px;font-family:monospace;cursor:pointer;pointer-eM
vents:auto;touch-action:manipulation;">T</button><canvas id="ctfRadar" width="120" height="120" style="display:none;position:absolute;bottom:95px;right:25px;z-index:68;width:90px;height:90px;border-radius:50%;border:2px solid rgba(201,162,39,0.5);background:rgba(0,0,0,0.45);opacity:0.5;pointer-events:none;"></canvas><div id="overlay"><h1>Skulls at War</h1><p class="subtitle">
        Powered by the Crystal Skull Collective + KENOBI Serverless Lobby
      </p><div id="status">Loading core assets...</div><div id="chaM
rPick"><button type="button" id="pickMutant">OrdiMutant</button><button type="button" id="pickSkull" class="picked">Skeleton</button></div><input
        id="charIdInput"
        placeholder="CSC Skull inscription id"
      /><button id="enterCustomBtn">Load Character</button><div style="display:flex;flex-wrap:wrap;gap:12px;justify-content:center;align-items:center;margin:10px 0;"><label style="color:#d4af37;font-size:0.95rem;">MAP
          <select id="mapSelect" style="margin-left:6px;padding:M
6px 10px;background:rgba(36,22,12,0.85);border:1px solid #8a6a3b;color:#e8d5a3;border-radius:6px;font-family:monospace;font-size:1rem;"><option value="map-2" selected>CTF Arena</option><option value="map-3">Chaos CTF</option><option value="map-4">Fog of War CTF</option></select></label></div><button id="rulesBtn">Rules/Controls</button><button id="startBtn" disabled>Wander Alone</button><button id="multiBtn">Multiplayer Host/Join</button></div><div id="p2p-lobby"><div class="lobby-box"><div class="lobby-title">SKULM
LS AT WAR</div><div class="lobby-sub">SKULLS AT WAR
 ON-FOOT CTF</div><label class="lobby-label">Your Name</label><input
          id="lobbyNameInput"
          class="lobby-field"
          placeholder="Enter your name"
          maxlength="20"
          value="Racer"
        /><div id="liveGamesContainer"><div class="lobby-label" style="margin-top:4px;">Live games</div><div id="liveGamesList"><div style="color:#0af;padding:8px;text-align:center;font-size:0.85rem;">
              Scanning relays
            class="lobby-btn small green"
            id="refreshLiveBtn"
            style="margin-top: 8px"
          </button></div><button class="lobby-btn" id="lobbyHostBtn" style="margin-top:14px;">
        </button><div id="lobbyOfferCode" class="code-out" style="display:none"></div><button id="lobbyCopyOffer" style="display:none"></button><button id="searchLiveGamesBtn" style="display:none"></button><button id="newInviteBtn" style="displM
ay:none"></button><button id="manualPublishBtn" style="display:none"></button><div id="extraOffers" style="display:none"></div><textarea id="lobbyAnswerInput" style="display:none"></textarea><button id="lobbyAcceptBtn" style="display:none"></button><textarea id="lobbyPeerCode" style="display:none"></textarea><button id="lobbyJoinBtn" style="display:none"></button><div id="lobbyAnswerCode" class="code-out" style="display:none"></div><button id="lobbyCopyAnswer" style="display:none"></button><div id="lobbyHostControlM
s" style="display: none"><div class="lobby-label" style="margin-top:8px;">Connected players</div><div
            id="hostPlayerList"
            style="background:rgba(36,22,12,0.7);border:1px solid #8a6a3b;border-radius:6px;padding:8px;font-size:0.85rem;color:#e8d5a3;max-height:120px;overflow-y:auto;margin-bottom:8px;"
          </div><button class="lobby-btn start-btn" id="lobbyStartBtn">
            Call the Host to War
          </button><div style="color:#0af;font-size:0.8rem;margiM
n-top:8px;text-align:center;">
            Live listing updates automatically
 late joiners can still find this game
          </div></div><button
          class="lobby-btn green"
          id="lobbyReturnToGameBtn"
          style="display:none;margin-top:10px;"
          RETURN TO GAME
        </button><div id="lobby-status">Enter a name
 Host a game or join one below</div></div></div><div id="previewOverlay"><p>CUSTOM CHARACTER LOADED SUCCESSFULLY</p><div id="previewButtons"><button id="startSingM
leFromPreview">Wander Alone</button><button id="goToMultiFromPreview">GO TO MULTIPLAYER LOBBY</button></div></div><div id="rulesOverlay"><h2>RULES / CONTROLS</h2><ul><li>MOUSE LEFT / RIGHT
 WALK FORWARD &nbsp;|&nbsp; SHIFT+W
 BACK UP</li><li>A / D
 SIDESTEP</li><li>SPACE
 JUMP (tap hop / hold moon jump)</li><li>LEFT MOUSE
 THROW FREEZE BALL (or lava if charged)</li><li>C
 CAMERA &nbsp;|&nbsp; P
 PAUSE / ORBIT</li><li>MIC
 OPTIONAL VOICE (asks for microphoM
 LOBBY WHILE PAUSED &nbsp;|&nbsp; ESC
 CHAT / RELEASE POINTER</li><li>MOBILE: 4-way pad (hold up to run), J jump, drag right to turn, tap to throw</li><li>WALK ON LAVA
 next throw is a LAVA BALL (sends them home)</li></ul><p><strong>SKULLS AT WAR (CTF):</strong> Two teams. Steal the enemy flag
        and carry it to your base to score. Freeze balls slow a runner so the
        flag can be stolen. Lava balls send them back to spawn.
      </p><p><strong>FREEZE:</strong> Hit = 30% speed for 5sM
. Steal the flag from a
        frozen carrier.
      </p><p><strong>LAVA:</strong> One charged shot. Must touch lava again to reload.
      </p><button class="close-btn" id="closeRules">BACK TO MENU / GAME</button></div><button id="pauseRulesBtn">Rules/Controls</button><div id="hud">
      SPEED: <span id="speed">0</span> km/h CAM:
      <span id="camMode">CHASE</span> | PLAYERS: <span id="playerCount">1</span></div><div id="pauseHint">
 Press <strong>L</strong> for Multiplayer Lobby
    </div><div id="chatModeHint">
 PRESS ESC OR CLICK GAME TO RESUME RACING
    </div><div id="chat-container"><div id="chat-messages"></div><input
        id="chat-input"
        placeholder="Type message and press ENTER to send..."
        maxlength="200"
      /></div><div id="freezeCharge"><div class="label" id="chargeLabel">FREEZE CHARGE</div><div class="bar-outer"><div id="chargeBar" class="bar-inner"></div></div><div id="voiceMixWrap"><div class="labelM
">VOICE <span id="voiceMixPct">100%</span></div><input id="voiceMix" type="range" min="0" max="150" value="100" /></div></div><div id="cpIndicator">CHECKPOINTS NEEDED:
</div><div id="scoreboard"><div class="title">HIT SCOREBOARD</div><div id="scoreList"></div></div>
    <script src="/r/sat/957337645267059/at/-1/content"></script>
    <script type="text/placeholder-removed"></script>
    <script type="module">import * as THREE from "three";
import { GLTFLoader } from "three/addons/loaders/GLTFM
import { DRACOLoader } from "three/addons/loaders/DRACOLoader.js";
const DRACO_WRAPPER_ID =
"1c59d4d184bfaadf33e641456d540dba14edc8d383d84634a418d75f149e1683i1";
const DRACO_WASM_ID =
"1c59d4d184bfaadf33e641456d540dba14edc8d383d84634a418d75f149e1683i2";
let _gltfLoader = null;
async function makeGltfLoader() {
if (_gltfLoader) return _gltfLoader;
const loader = new GLTFLoader();
const draco = new DRACOLoader();
draco._initDecoder = function () {
if (this.decoderPending) return this.decoderPending;M
this.decoderPending = Promise.all([
fetch("/content/" + DRACO_WRAPPER_ID).then((r) => r.text()),
fetch("/content/" + DRACO_WASM_ID).then((r) => r.arrayBuffer()),
const factory = new Function(
pair[0] + "\nreturn DracoDecoderModule;"
return new Promise((resolve, reject) => {
const out = factory({
wasmBinary: pair[1],
onModuleLoaded: (mod) => {
if (out && out.then) out.then((mod) => {
return this.decoderPending;
draco.preload = function () {
this._initDecoder();
const _decode = draco.decodeDracoFile.bind(draco);
draco.decodeDracoFile = function (buffer, cb, ids, types, space, err) {
for (const k in types) {
names[k] = typeof v === "function" ? v.name : v;
return _decode(buffer, function (geo) {
if (!geo || !geo.attributes) {
}, ids, names, space, function (e) {
loader.setDRACOLoader(draco);
_gltfLoader = loader;
const NOSTR_RELAYS = [
"wss://relay.damus.io",
"wss://relay.nostr.band",
"wss://nostr-pub.wellorder.net",
"wss://relay.primal.net",
"wss://nostr.orangepill.dev",
const KENOBI_GAME_NAMESPACE = "SKW";
const KENOBI_HEARTBEAT_INTERVAL = 8000;
const LIVE_GAME_MAX_AGE_SEC = 120;
const LIVE_GAME_DROP_SEC = 180;
const LIVE_SEARCH_SINCE_SEC = 900;
let nostrSecretKey = null;
const liveGamesByRoom = new Map();
let liveListRefreshTimer = null;
function initNostrKeys() {
if (nostrSecretKey) return true;
if (typeof window.NostrSign === "undefined") {
nostrSecretKey = window.NostrSign.generateSecretKey();
nostrPubkey = window.NostrSign.getPublicKey(nostrSecretKey);
let nostrSockets = [];
let nostrRoomId = null;
let kenobiHeartbeatTimer = null;
let lastConnectTime = 0;
let isHostWithKenobi = false;
hNostrHandlers(ws, url) {
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
if (data[0] === "EVENT" && data[2] && data[2].kind === 30311) {
const hasTag = data[2].tags.some(
(t) => t[0] === "t" && t[1] === KENOBI_GAME_NAMESPACE
const answerTag = data[2].tags.find((t) => t[0] === "answer");
if (answerTag) handleAnswerEvent(data[2]);
else handleLiveGameEvent(data[2]);
ws.onclose = () => {
nostrSockets = nostrSockets.filter((s) => s !== ws M
&& s.readyState !== WebSocket.CLOSED);
function subscribeLiveFilter(ws, isSearch) {
if (ws.readyState !== WebSocket.OPEN) return;
const ts = Math.floor(Date.now() / 1000);
const subId = (isSearch ? "search-" : "live-") + Date.now() + "-" + Math.random().toString(36).slice(2, 6);
"#t": [KENOBI_GAME_NAMESPACE],
since: ts - LIVE_SEARCH_SINCE_SEC,
ws.send(JSON.stringify(["REQ", subId, filter]));
function connectNostrRelays(isSearch = false, force = false) M
const now = Date.now();
if (!force && now - lastConnectTime < (isSearch ? 1200 : 2500)) {
nostrSockets.forEach((ws) => subscribeLiveFilter(ws, true));
lastConnectTime = now;
nostrSockets = nostrSockets.filter(
ws.readyState === WebSocket.OPEN ||
ws.readyState === WebSocket.CONNECTING
const openUrls = new Set(
nostrSockets.map((ws) => ws._relayUrl).filter(Boolean)
NOSTR_RELAYS.forEach((url) => {
if (openUrls.has(url)) {
const existing = nostrSockets.find((ws) => ws._relayUM
if (existing && existing.readyState === WebSocket.OPEN) {
subscribeLiveFilter(existing, isSearch);
const ws = new WebSocket(url);
subscribeLiveFilter(ws, isSearch);
attachNostrHandlers(ws, url);
nostrSockets.push(ws);
if (!liveListRefreshTimer) {
liveListRefreshTimer = setInterval(renderLiveGamesList, 3000);
function getMapDisplayName(mapId) {
const def = MAP_DEFS[mapId || currentMapId];
return (def && def.name) || mapM
Id || "Grassy Dunes";
function publishKenobiHeartbeat(offerCode, playerCount) {
if (!nostrRoomId) return;
const openCount = nostrSockets.filter(
(ws) => ws.readyState === WebSocket.OPEN
if (openCount === 0) connectNostrRelays(false, true);
const canSign = initNostrKeys();
const mapName = getMapDisplayName(currentMapId);
const count = playerCount != null ? playerCount : 1 + remotePlayers.size;
(document.getElementById("lobbyNameInput") &&
document.getElementById("lobbyNameInput").valueM
(myPlayerID || "Host").split("-")[0] ||
const skwTag = "SKW-" + mapName;
const title = `${skwTag}
created_at: Math.floor(Date.now() / 1000),
["t", KENOBI_GAME_NAMESPACE],
["offer", offerCode || ""],
["players", String(count)],
["map", currentMapId || "map-2"],
let signedEvent = eventBase;
signedEvent = window.NostrSign.finalizeEvent(
nostrSockets.forEach((ws) => {
if (ws.readyState === WebSocket.OPEN) {
ws.send(JSON.stringify(["EVENT", signedEvent]));
connectNostrRelays(false, true);
function publishAnswerToNostr(offerCode, answerToken) {
if (nostrSockets.length === 0) connectNostrRelays(true);
const canSign = initNostrKeys();
created_at: Math.floor(Date.now() / 1000),
["t", KENOBI_GAME_NAMESPACE],
["offer", offerCode],
["answer", answerToken],
content: `Answer for offer`,
let signedEvent = eventBase;
signedEvent = window.NostrSign.finalizeEvent(
nostrSockets.forEach((ws) => {
if (ws.readyState === WebSocket.OPEN)
ws.send(JSON.stringify(["EVENT", signedEvent]));
function startKenobiLobbyPing(firstOfferCode) {
if (kenobiHeartbeatTM
imer) clearInterval(kenobiHeartbeatTimer);
nostrRoomId = "pod-" + Math.random().toString(36).substring(2, 11);
isHostWithKenobi = true;
connectNostrRelays(false, true);
const publish = () => {
(document.getElementById("lobbyOfferCode") &&
document.getElementById("lobbyOfferCode").textContent) ||
(hostOfferCodes && hostOfferCodes[0]) ||
publishKenobiHeartbeat(offer, 1 + remotePlayers.size);
setTimeout(publish, 600);
setTimeout(publish, 2000);
kenobiHeartbeatTimer = setInterval(publisM
h, KENOBI_HEARTBEAT_INTERVAL);
if (!window._kenobiVisBound) {
window._kenobiVisBound = true;
document.addEventListener("visibilitychange", () => {
document.visibilityState === "visible" &&
function handleLiveGameEvent(evt) {
const dTag = evt.tags.find((t) => t[0] === "d");
const roomId = dTag ? dTag[1] : null;
if (roomId && roomId === nostrRoomId) return;
const offerTag = evt.tags.find((t) => t[0] === "offer");
if (!offerTag || !offerTag[1]) reM
const offerCode = offerTag[1];
const titleTag = evt.tags.find((t) => t[0] === "title");
const playersTag = evt.tags.find((t) => t[0] === "players");
const mapTag = evt.tags.find((t) => t[0] === "map");
const hostTag = evt.tags.find((t) => t[0] === "host");
const players = playersTag ? parseInt(playersTag[1], 10) || 1 : 1;
const mapName = mapTag
? getMapDisplayName(mapTag[1])
const hostName = hostTag ? hostTag[1] : "";
const title = titleTag
: `${mapName}${hostName ? "
 ${players} Players`;
const key = roomId || offerCode.substring(0, 48);
const prev = liveGamesByRoom.get(key);
if (prev && evt.created_at < prev.createdAt) return;
liveGamesByRoom.set(key, {
createdAt: evt.created_at,
updatedAt: Date.now(),
renderLiveGamesList();
function renderLiveGamesList() {
const listEl = document.getElementById("liveGamesList");
if (!listEl) return;
const nowSec = Date.now() / 1000;
for (const [key, g] of liveGamesByRoom) {
.createdAt > LIVE_GAME_DROP_SEC) {
liveGamesByRoom.delete(key);
for (const [key, g] of liveGamesByRoom) {
if (nowSec - g.createdAt <= LIVE_GAME_MAX_AGE_SEC) {
active.push({ key, ...g });
active.sort((a, b) => b.createdAt - a.createdAt);
if (!active.length) {
'<div style="color:#888;padding:10px;text-align:center;font-size:0.85rem;">No live games right now
listEl.innerHTML = "";
active.forEach((g) => {
const div = document.createElement("dM
div.className = "live-game-item";
div.dataset.offer = g.offer;
div.dataset.room = g.key;
const label = (g.title || `${g.mapName || "Map"}
 ${g.players} Players`)
.replace(/\b(\d+)p\b/gi, "$1 Players");
div.innerHTML = `<div><strong>${label}</strong></div><button class="lobby-btn small green" style="width:auto;padding:4px 12px;font-size:10px;">JOIN</button>`;
div.querySelector("button").onclick = (e) => {
e.stopImmediatePropagation();
const peer = document.getElementByM
Id("lobbyPeerCode");
if (peer) peer.value = g.offer;
document.getElementById("lobbyJoinBtn").click();
listEl.appendChild(div);
const usedAnswerTokens = new Set();
function handleAnswerEvent(evt) {
if (!isHost) return;
const offerTag = evt.tags.find((t) => t[0] === "offer");
const answerTag = evt.tags.find((t) => t[0] === "answer");
if (!offerTag || !answerTag) return;
const incomingOffer = offerTag[1];
const answerToken = answerTag[1];
if (!answerToken || usedAnswerTokens.has(answerToken)) return;
tOfferCodes.includes(incomingOffer)) return;
const pending = pcList.some(
(p) => p && p.signalingState === "have-local-offer"
if (!pending) return;
usedAnswerTokens.add(answerToken);
document.getElementById("lobbyAnswerInput").value = answerToken;
const btn = document.getElementById("lobbyAcceptBtn");
if (btn) btn.click();
function searchLiveGames() {
const listEl = document.getElementById("liveGamesList");
'<div style="color:#0af;padding:8px;text-alM
ign:center;font-size:0.85rem;">Scanning relays for live games
connectNostrRelays(true);
setTimeout(renderLiveGamesList, 2500);
"a4ece09037d2e227554c6c6a7c0fe1b15d7ce94510adbe5eef575b852c351152i0";
try { if (THREE.Cache) THREE.Cache.enabled = false; } catch (_) {}
const SAMPLE_SKULL_ID =
"e40a2dd269eb0e878b658df30ac779085cee71ac0601a4c546b2d6aea802b7d2i0";
let minionTemplate = null;
let minionMixer = null;
let minionActions = {};
let minionRoot = null;
const MINION_SCALE_MENU = 4.5;
const MINION_SCALE = 4.95;
let jumpRequested = false;
let jumpHeld = false;
let jumpStartAt = 0;
const MAX_JUMP_HEIGHT = 280;
const MAX_JUMP_HOLD_MS = 1400;
let currentAnim = "";
"53efe58237bf922eb0b2989af602e18092195562b47fff8174739da90cd3d9b7i0";
const BLOCK_TEXTURE_ID =
"c5ceb6b6cd1bcc564a9167bab9586691b254a0ea0155858dafbb0d1b9cd64a9di0";
"893344c8a0205d190e8dc1f36f54530b2501ff821aa560e5cfbecf08288cdc40i0";
"d2bf68f7c49e947e24f856d9fb15c3b6dM
eefc1268cac684dfe8fb91f10207ea0i0";
const POD_YAW_OFFSET = Math.PI;
name: "Grassy Dunes",
content: "/r/sat/1838624944188321/at/-1/content",
"8afd4d71e03b661687dacd09e7b86da7d949b437a365a8fcf682eea74d615b39i0",
"16d53cd3cba7e0853d7dc0ea3a3f9133a96cbfeedac95fc442926d12fb103f82i0",
61eeb4764607ab0505d571b4e42a6b31ca0e2d0c9bc8fe7014ac97i0",
"f1988b118cf7078d4da3a6cd89f58526bd54468288a77acd4ef79a3c0c040213i0",
"27755d60a6c311cfe404b41e65281a47671ea2e83ad4af7f371a3325bc07e326i0",
"c8c0afdb0b9a9aea005a8a8af22bb20324142bead8260e8010f60a00cfd39fe9i0",
content: "/r/sat/1838624944188651/at/-1/content",
"6847b9bcccc779ae3b421df59b32f38d6ebc373935b0e5f3fc1770b4c912166bi0",
"16d53cd3cba7e0853d7dc0ea3a3f9133a96cbfeedac95fc442926d12fb103f82i0",
"b1a6b0a7dc61eeb4764607ab0505d571b4e42a6b31ca0e2d0c9bc8fe7014ac97i0",
outerRadiusOverride: 1400,
"25013a3ab212e0ca5b3ccbd858ff988f506b77080c51M
963c948c055028af2051i0",
"1617193a1df08ab6db7305ad7694b8cc39f0e58ae01f6847023d829b3741ad16i0",
name: "Fog of War CTF",
content: "/r/sat/1838624944188981/at/-1/content",
"8afd4d71e03b661687dacd09e7b86da7d949b437a365a8fcf682eea74d615b39i0",
"16d53cd3cba7e0853d7dc0ea3a3f9133a96cbfeedac95fc442926d12fb103f82i0",
"b1a6b0a7dc61eeb4764607ab0505d571b4e42a6b31ca0e2d0c9bc8fe70M
"f1988b118cf7078d4da3a6cd89f58526bd54468288a77acd4ef79a3c0c040213i0",
"27755d60a6c311cfe404b41e65281a47671ea2e83ad4af7f371a3325bc07e326i0",
"c8c0afdb0b9a9aea005a8a8af22bb20324142bead8260e8010f60a00cfd39fe9i0",
let currentMapId = "map-2";
let gameMode = "race";
let lastBuiltMapId = null;
apScripts = new Set();
let mapScriptPromises = {};
let applyingHostMap = null;
let coreGrassTex = null;
let coreWallTex = null;
let coreSkyTex = null;
let activeGrassTex = null;
let activeWallTex = null;
let activeTrackTex = null;
let trackSurfaceMesh = null;
let wallMeshList = [];
let mapObstacleList = [];
let mapExtraColliders = [];
let solidBoxes = [];
let scene, camera, renderer;
let cart, playerModel, skyDome, terrainMesh;
let mouseXNormalized = 0;
let mouseYNormalized = 0;
let cameraMode = "chaM
let gameStarted = false;
let previewMode = false;
let multiplayerMode = false;
let pendingGuestStart = false;
let controlsEnabled = true;
let typingChat = false;
function isTypingNow() {
const el = document.activeElement;
if (!el) return !!typingChat;
const tag = (el.tagName || "").toUpperCase();
if (tag === "INPUT" || tag === "TEXTAREA" || tag === "SELECT") return true;
if (el.isContentEditable) return true;
return !!typingChat;
function clearMoveKeys() {
s", "d", "arrowup", "arrowdown", "arrowleft", "arrowright", " ", "space", "shift"].forEach((k) => {
jumpRequested = false;
let menuShowcaseActive = true;
let showcaseModel = null;
pos: new THREE.Vector3(0, 120, 0),
vel: new THREE.Vector3(0, 0, 0),
const PITCH_MAX = 0.175;
const PITCH_RATE = 2.2;
let orbitAzimuth = 0;
let orbitRadius = 30;
let orbitTarget = new THREE.Vector3();
let projectiles = [];
let lastFireTime = 0;
const FIRE_COOLDOWN = 2100;
function getFireCooldown() {
return gameMode === "ctf" ? FIRE_COOLDOWN * 0.5 : FIRE_COOLDOWN;
function updateChargeMeterUI() {
const wrap = document.getElementById("freezeCharge");
const label = document.getElementById("chargeLabel");
if (!wrap || !label) return;
wrap.classList.add("lava-ready");
label.textContent = "Lava Ready";
lassList.remove("lava-ready");
label.textContent = "FREEZE CHARGE";
function updateFlagCarryHint() {
const el = document.getElementById("flagCarryHint");
let holding = false;
if (gameMode === "ctf") {
CTF.redHolder === myPlayerID || CTF.blueHolder === myPlayerID;
holding = flagHolder === myPlayerID;
el.style.display = holding && gameStarted ? "block" : "none";
let slowEndTime = 0;
let consecutiveFreezeHits = 0;
let scores = new Map();
const PROJECTILE_SPEED = 405;
AX_PROJECTILE_DIST = 2550;
const PROJECTILE_GRAVITY = -84;
const FREEZE_DURATION = 5000;
let flagCooldown = 0;
let stealCooldown = 0;
const STEAL_COOLDOWN_MS = 1500;
let droppedFlagPos = null;
let flagHomePos = null;
const TERRAIN_SIZE = 5000;
const TERRAIN_SEGMENTS = 160;
const BASE_HEIGHT = 0.0;
const DUNE_AMPLITUDE = 18;
const DUNE_FREQ_LARGE = 0.0099;
const DUNE_FREQ_MED = 0.0054;
const DUNE_FREQ_SMALL = 0.0098;
const JUMP_HUMPS = [
const MAX_SPEED_BASE = 180;
const MAX_SPEED_BOOST_MUL = 1.25;
const COAST_DRAG = 0.78;
const ACCEL_DRAG = 0.993;
const TURBO_MUL = 1.55;
const BRAKE_FORCE = 90 / 3.6;
const REVERSE_FORCE = 45 / 3.6;
const REVERSE_MAX = -38 / 3.6;
const TURN_RATE_BASE = 0.92;
const TURN_MULT = 2.1;
const BASE_LATERAL_GRIP = 0.42;
const MIN_LATERAL_GRIP = 0.18;
const GRIP_DROP_SPEED = 180;
const STEER_DEADZONE = 0.08;
const MOUSE_SMOOTH = 0.18;
const AUTO_COUNTER = 0.18;
const GRAVITY = -250;
const GROUND_RESTITUTION = 0.5;
const LATERAL_VEL_THRESHOLD = 2 / 3.6;
const FWD_VEL_BRAKE_THRESHOLD = 2 / 3.6;
const OUTER_RADIUS = 2300;
const INNER_RADIUS = OUTER_RADIUS - 250;
const MEANDER_AMP = 170;
const MEANDER_WAVES = 10;
const GAP_ANGLES_DEFAULT = [
{ center: Math.PI * 0.25, width: Math.PI * 0.048 },
{ center: Math.PI * 0.75, width: Math.PI * 0.048 },
{ center: Math.PI * 1.25, width: M
{ center: Math.PI * 1.75, width: Math.PI * 0.048 },
const GAP_ANGLES_SNAKE = [
{ center: Math.PI * 0.25, width: Math.PI * 0.024 },
{ center: Math.PI * 0.5, width: Math.PI * 0.024 },
{ center: Math.PI * 0.75, width: Math.PI * 0.024 },
{ center: Math.PI * 1.25, width: Math.PI * 0.024 },
{ center: Math.PI * 1.5, width: Math.PI * 0.024 },
{ center: Math.PI * 1.75, width: Math.PI * 0.024 },
function getGapAngles() {
const def = MAP_DEFS[currentMapId];
if (def && (def.trackAspect || 1) > 1.2) retM
urn GAP_ANGLES_SNAKE;
return GAP_ANGLES_DEFAULT;
function getTrackParams() {
const def = MAP_DEFS[currentMapId] || MAP_DEFS["map-2"];
const aspect = def.trackAspect > 0 ? def.trackAspect : 1;
def.meanderLong != null ? def.meanderLong : MEANDER_AMP;
const meanderShort =
def.meanderShort != null ? def.meanderShort : MEANDER_AMP;
def.meanderWaves != null ? def.meanderWaves : MEANDER_WAVES;
def.trackWidthScale > 0 ? def.trackWidthScale : 1;
terRadiusOverride > 0
? def.outerRadiusOverride
const trackW = (OUTER_RADIUS - INNER_RADIUS) * widthScale;
const openArena = !!def.chaosArena || def.innerWall === false;
const outerRx = baseOuter;
const outerRz = baseOuter * aspect;
const innerRx = openArena ? 1 : baseOuter - trackW;
const innerRz = openArena ? 1 : (baseOuter - trackW) * aspect;
terrainSize: openArena
: Math.max(TERRAIN_M
SIZE, baseOuter * aspect * 2.35),
floorHalf: openArena ? baseOuter : null,
function getWallPoint(theta, isInner) {
const t = getTrackParams();
const rx = isInner ? t.innerRx : t.outerRx;
const rz = isInner ? t.innerRz : t.outerRz;
if (t.aspect > 1.15) {
const longW = Math.pow(Math.abs(Math.sin(theta)), 2);
amp = t.meanderShort + (t.meanderLong - t.meanderShort) * longW;
const meander = amp * Math.sin(t.waves * waveMul * theta);
eX = rx * Math.sin(theta);
const baseZ = rz * Math.cos(theta);
const len = Math.hypot(baseX, baseZ) || 1;
x: baseX + (baseX / len) * meander,
z: baseZ + (baseZ / len) * meander,
function isOnTrackXZ(x, z) {
const t = getTrackParams();
const def = MAP_DEFS[currentMapId] || {};
if (def.chaosArena || t.floorHalf) {
const h = (t.floorHalf || t.outerRx) + 40;
return Math.abs(x) <= h && Math.abs(z) <= h;
const margin = Math.max(t.meanderLong, MEANDER_AMP) * 0.55 + 80;
ow(t.outerRx + margin, 2) +
(z * z) / Math.pow(t.outerRz + margin, 2) <=
if (t.openArena) return outer;
const innerPad = Math.max(40, margin * 0.35);
(x * x) / Math.pow(Math.max(80, t.innerRx - innerPad), 2) +
(z * z) / Math.pow(Math.max(80, t.innerRz - innerPad), 2) <=
return outer && !inner;
const SHRINK_ENDS_BY = 0.5;
const COL_SEGMENT_LEN = 3;
const EXTRA_MARGIN = 0.1;
const RESTITUTION = 0.35;
const WALL_FRICTION = 0.98;
const POS_CORRECTION = 0.8;
const MAX_COLLISION_ITER = 4;
ONNECT_TIMEOUT_MS = 22000;
const DISCONNECT_HOST_GRACE_MS = 40000;
let netKeepaliveTimer = null;
let peerPingTimer = null;
const CHECKPOINT_ANGLES = [0, Math.PI / 2, Math.PI, (3 * Math.PI) / 2];
let checkpointStars = [];
let myCompletedCheckpoints = new Set();
let playerLaps = new Map();
let flagHolder = null;
let flagPoleMesh, flagMesh, heldFlagMesh;
let teamScores = { red: 0, blue: 0 };
let lavaPatches = [];
let myLapStartTime = 0;
let myLapPausedTime = 0;
let myLapIsPaused = false;
let playerLapTimes = new Map();
let dustParticles = [];
let hasLavaPower = false;
let padKeys = { w: 0, a: 0, s: 0, d: 0 };
let padTouchId = null;
let ignoreMouseSteerUntil = 0;
let coarsePointer = false;
function isPhoneUI() {
const short = Math.M
min(window.innerWidth, window.innerHeight);
const ua = navigator.userAgent || "";
return short <= 640 && /Mobi|Android|iPhone|iPod/i.test(ua);
let steerTouchId = null;
let steerTouchStartX = 0;
let potentialFireTouch = null;
let hudVisible = true;
function updateCursorForLobby() {
const isLobbyVisible =
document.getElementById("overlay").style.display !== "none" ||
document.getElementById("p2p-lobby").style.display !== "none" ||
document.getElementById("previewOverlay").style.display !== "noneM
document.getElementById("rulesOverlay").style.display !== "none";
if (isLobbyVisible) {
document.body.style.cursor =
'url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2732%27 height=%2732%27 viewBox=%270 0 24 24%27%3E%3Ctext y=%2720%27 font-size=%2720%27%3E%F0%9F%92%80%3C/text%3E%3C/svg%27") 16 16, auto';
} else if (gameStarted) {
document.body.style.cursor = "none";
const SMALL_SKY_ID =
"b1a6b0a7dc61eeb4764607ab0505d571b4e42a6b31ca0e2d0c9bc8fe7014ac97i0";
const BLOCKED_TEX = [
"4aabdef09087eec3f1e46a631a90d205c230542db7dc69c1b5a6cdb8ffe15910i0",
"dee0872513415146a6d47576ad4ae48b51ab58081c4b6eca49f7fa919cf26575i0",
function texUrlBlocked(u) {
const s = String(u || "");
return BLOCKED_TEX.some((id) => s.indexOf(id) !== -1);
const orig = THREE.TextureLoader.prototype.load;
THREE.TextureLoader.prototype.load = function (url, onLoad, onProg, onErr) {
if (texUrlBlocked(url)) {
if (typeof onErr === "function") onErr();
return orig.call(this, url, onLoad, onProg, onErr);
function loadTex(url) {
if (!url || texUrlBlocked(url)) return Promise.resolve(null);
return new Promise((resolve) => {
new THREE.TextureLoader().load(
tex.wrapS = tex.wrapT = THREE.RepeatWrapping;
if (THREE.SRGBColorSpace !== undefined)
tex.colorSpace = THREE.SRGBColorSpace;
function normalizeCharId(raw) {
const s = String(raw || "").trim();
const m = s.match(/([0-9a-fA-F]{64}i[0-9]+)/);
if (/^[0-9a-fA-F]{64}$/.test(s)) return s + "i0";
function readMyCharIdFromInput() {
const el = document.getElementById("charIdInput");
const id = normalizeCharId(el && el.value) || SAMPLE_SKULL_ID;
function uniqueTex(src) {
if (!src) return null;
const t = src.clone();
t.needsUpdate = true;
t.wrapS = t.wrapT = THREE.RepeatWrapping;
if (THREE.SRGBColorSpace !== undefined) t.colorSpace = THREE.SRGBColorSpace;
if (!u) return null;
const m = String(u).match(/([0-9a-fA-F]{64}i0)/);
return m ? `/content/${m[1]}` : (String(u).startsWith("/") ? u : null);
async function parseCscTexturePack(inscriptionId) {
const raw = (inscriptionId || "").trim();
const id = raw ? raw.replace(/i0$/, "") + "i0" : SAMPLE_SKULL_ID;
const pack = { skinUrl: null, skyUrl: null, envUrl: null, modelUrl: null };
const resp = await fetch(`/content/${id}`);
if (!resp.ok) return pack;
const html = await resp.text();
w DOMParser().parseFromString(html, "text/html");
const mv = doc.querySelector("model-viewer");
pack.modelUrl = absContent(mv.getAttribute("src"));
pack.skyUrl = absContent(
mv.getAttribute("skybox-image") || mv.getAttribute("skyboxImage")
const scripts = doc.querySelectorAll("script");
for (const script of scripts) {
const text = script.textContent || "";
text.match(/const\s+textureFilePath\s*=\s*["']([^"']+)["']/) ||
text.match(/textureFilePath\s*=\s*["']([^"']+)["'M
if (skin) pack.skinUrl = absContent(skin[1]);
text.match(/const\s+skybox(?:Texture|Image|FilePath|Path)?\s*=\s*["']([^"']+)["']/) ||
text.match(/skyboxImage\s*=\s*["']([^"']+)["']/);
if (sky && !pack.skyUrl) pack.skyUrl = absContent(sky[1]);
function applyPackToMinion(model, packTex) {
const { skin, sky } = packTex;
const bodyTex = uniqueTex(skin);
const glowTex = uniqueTex(sky) || bodyTex;
model.traverse((child) => {
if (!child.isMesh) return;
onst olds = Array.isArray(child.material)
const next = olds.map((old) => {
const name = ((old && old.name) || child.name || "").toLowerCase();
const mat = new THREE.MeshStandardMaterial({
name: (old && old.name) || child.name || "minion",
side: THREE.DoubleSide,
if (name.includes("glow") || name.includes("eye")) {
mat.map = uniqueTex(glowTex);
mat.emissiveMap = mat.map;
 = new THREE.Color(0xffee88);
mat.emissiveIntensity = 1.1;
} else if (bodyTex) {
mat.map = uniqueTex(bodyTex);
mat.emissiveMap = mat.map;
mat.emissive = new THREE.Color(0x333333);
mat.emissiveIntensity = 0.55;
mat.needsUpdate = true;
child.material = next.length === 1 ? next[0] : next;
function parallelTraverse(a, b, cb) {
for (let i = 0; i < a.children.length; i++) {
if (b.children[i]) parallelTraverse(a.children[i], b.children[i], cb);
function cloneSkinned(source) {
urceLookup = new Map();
const cloneLookup = new Map();
const clone = source.clone(true);
parallelTraverse(source, clone, (s, c) => {
sourceLookup.set(s, c);
cloneLookup.set(c, s);
clone.visible = true;
clone.traverse((node) => {
node.visible = true;
if (node.isMesh && node.material) {
node.material = Array.isArray(node.material)
? node.material.map((m) => m.clone())
: node.material.clone();
if (!node.isSkinnedMesh || !node.skeleton) return;
const srcMesh = cloneLookup.get(node);
if (!srcMesh || !srcMesh.skeleM
const bones = srcMesh.skeleton.bones.map((b) => sourceLookup.get(b)).filter(Boolean);
new THREE.Skeleton(bones, srcMesh.skeleton.boneInverses.slice()),
srcMesh.bindMatrix.clone()
function playAnimOn(root, name) {
if (!root || !root.userData || !root.userData.actions) return;
const actions = root.userData.actions;
if (root.userData.currentAnim === name) return;
const next = actions[name] || actions.Idle;
Object.values(actions).forEach((a) => {
== next) a.fadeOut(0.15);
next.reset().fadeIn(0.15).play();
root.userData.currentAnim = name;
function cacheSwingBones(root) {
root.traverse((o) => {
const n = (o.name || "").toLowerCase();
if (n === "upperarm.l" || n.endsWith("upperarm.l")) pack.aL = o;
else if (n === "upperarm.r" || n.endsWith("upperarm.r")) pack.aR = o;
else if (n === "lowerarm.l" || n.endsWith("lowerarm.l")) pack.eL = o;
else if (n === "lowerarm.r" || n.endsWith("lowerarm.r")) pack.eR = o;
R", "eL", "eR"].forEach((k) => {
if (pack[k] && !pack[k + "Q"]) pack[k + "Q"] = pack[k].quaternion.clone();
root.userData.swingPack = pack;
root.userData.swingReady = !!(pack.aL && pack.aR);
const _swingQ = new THREE.Quaternion();
const _swingZ = new THREE.Vector3(0, 0, 1);
const _swingX = new THREE.Vector3(1, 0, 0);
function poseSwing(bone, restQ, ang) {
if (!bone || !restQ) return;
bone.quaternion.copy(restQ);
_swingQ.setFromAxisAngle(_swingZ, ang);
bone.quaternion.multiply(_swingQ);
_swingQ.setFromAxisAnglM
e(_swingX, ang * 0.45);
bone.quaternion.multiply(_swingQ);
function applyArmSwing(root, spd) {
cacheSwingBones(root);
const p = root.userData.swingPack;
if (!p || !p.aL || !p.aR || spd < 1.5) return;
root.userData.actions &&
root.userData.actions[root.userData.currentAnim];
const clip = act && act.getClip && act.getClip();
const dur = (clip && clip.duration) || 0.8;
const u = act ? act.time / Math.max(0.05, dur) : performance.now() * 0.002;
const wave = Math.sin(u * Math.PI * 2);
HREE.MathUtils.clamp(0.5 + spd / 160, 0.5, 1.05);
poseSwing(p.aL, p.aLQ, wave * amp);
poseSwing(p.aR, p.aRQ, -wave * amp);
poseSwing(p.eL, p.eLQ, wave * amp * 0.4);
poseSwing(p.eR, p.eRQ, -wave * amp * 0.4);
root.traverse((o) => {
if (o.isSkinnedMesh && o.skeleton) o.skeleton.update();
function playMinionAnim(name) {
playAnimOn(minionRoot, name);
if (minionRoot && minionRoot.userData) {
minionMixer = minionRoot.userData.mixer;
minionActions = minionRoot.userData.actions;
function playThrowAnim() {
if(minionRoot&&minionRoot.userData.isMutant){throwPoseUntil=Date.now()+700;return}
const acts = (minionRoot && minionRoot.userData && minionRoot.userData.actions) || minionActions || {};
const name = Object.keys(acts).find((n) => /attack|punch|throw|slash|hit/i.test(n));
playMinionAnim(name);
attackUntil = Date.now() + 480;
if (!minionRoot) return;
minionRoot.traverse((o) => {
if (bone || !o.isBone) return;
const n = o.name.toLowerCase();
(n.includes("right") || n.endsWith("_r") || n.endsWith(".r")) &&
(n.includes("arm") || n.includes("hand") || n.includes("shoulder")))
const base = bone.rotation.clone();
bone.rotation.x -= 1.15;
attackUntil = Date.now() + 280;
if (bone) bone.rotation.copy(base);
function bindMinionClips(gltf, root) {
const mixer = new THREE.AnimationMixer(root);
const clips = gltf.animations || [];
const walkClip = clips.find((c) => /walk/i.test(c.naM
const runClip = clips.find((c) => /run/i.test(c.name));
clips.forEach((clip) => {
if (runClip && walkClip && clip === runClip && !(root.userData&&root.userData.isMutant)) {
const body = clip.tracks.filter(
(tr) => !/arm|hand|wrist|elbow/i.test(tr.name)
const arms = walkClip.tracks.filter((tr) =>
/arm|hand|wrist|elbow/i.test(tr.name)
const scaled = arms.map((tr) => {
const copy = tr.clone();
const k = clip.duration / Math.max(0.01, walkClip.duration);
for (let i = 0; i < copy.times.lengthM
; i++) copy.times[i] *= k;
use = new THREE.AnimationClip(clip.name, clip.duration, body.concat(scaled));
actions[clip.name] = mixer.clipAction(use);
root.userData.mixer = mixer;
root.userData.actions = actions;
root.userData.currentAnim = "";
playAnimOn(root, "Idle");
root.userData.swingReady = false;
cacheSwingBones(root);
function patchGlbDropEmptyAccessors(buffer) {
const u8 = new Uint8Array(buffer);
const dv = new DataView(buffer);
, true) !== 0x46546c67) return buffer;
const jsonLen = dv.getUint32(12, true);
const json = JSON.parse(new TextDecoder().decode(u8.subarray(20, 20 + jsonLen)));
if (!json.accessors || !json.animations) return buffer;
let changed = false;
for (const anim of json.animations) {
for (const ch of anim.channels || []) {
const samp = anim.samplers[ch.sampler];
if (!samp) continue;
const out = json.accessors[samp.output];
const inn = json.accessors[samp.input];
if (!out || out.bufferView === undefined || !M
inn || inn.bufferView === undefined) {
anim.channels = keep;
if (!changed) return buffer;
const jsonBytes = new TextEncoder().encode(JSON.stringify(json));
const pad = (4 - (jsonBytes.length % 4)) % 4;
const padded = new Uint8Array(jsonBytes.length + pad);
padded.set(jsonBytes, 0);
for (let i = jsonBytes.length; i < padded.length; i++) padded[i] = 0x20;
const newJsonLen = padded.length;
const binOff = 20 + jsonLen;
const binPart = u8.subarray(binOff);
int8Array(12 + 8 + newJsonLen + binPart.length);
const odv = new DataView(out.buffer);
odv.setUint32(0, 0x46546c67, true);
odv.setUint32(4, 2, true);
odv.setUint32(8, out.byteLength, true);
odv.setUint32(12, newJsonLen, true);
odv.setUint32(16, 0x4e4f534a, true);
out.set(padded, 20);
out.set(binPart, 20 + newJsonLen);
async function loadMinionTemplate() {
if (minionTemplate) return minionTemplate;
return new Promise(async (resolve) => {
const loader = await makeGlM
fetch(`/content/${MINION_ID}`)
if (!r.ok) throw new Error("minion HTTP " + r.status);
return r.arrayBuffer();
const patched = patchGlbDropEmptyAccessors(buf);
minionTemplate = gltf;
if (gltf.scene) gltf.scene.visible = false;
const st = document.getElementById("status");
if (st) st.textContent = "Minion GLB failed.";
const OM_MODEL_ID="M
76e8ed3cf79ff6b7c020f03c9a265709a41b6cd9197ec5732a15479a23ea45d3i0";
const OM_ANIMS_ID="da68cab4f26065b15c2a4f74856393d49334f46529e238498be81bf1062f58fci0";
const OM_TEXTURE_ID="57ff07ad8376f6cfdc2c2bfe42a16ba6b99c983ea463e9a33cc148985e736ed3i0";
const OM_SCALE=10.69;
function charWorldScale(model){return model&&model.userData&&model.userData.isMutant?OM_SCALE:MINION_SCALE}
let characterKind="skull";
let omTemplate=null;
let throwPoseUntil=0;
const _omQ=new THREE.Quaternion,_omE=new THREE.Euler,_omX=new THREE.VectoM
r3(1,0,0),_omY=new THREE.Vector3(0,1,0),_omZ=new THREE.Vector3(0,0,1);
const _armHold={},_armNames=["LeftShoulder","RightShoulder","LeftArm","RightArm","LeftForeArm","RightForeArm","LeftHand","RightHand"];
function isOmChar(id){return !!(id&&String(id).toLowerCase().indexOf(OM_MODEL_ID.slice(0,64).toLowerCase())===0)}
async function parseInscribedGlb(id){
  const loader=await makeGltfLoader();
  const res=await fetch("/content/"+id);
  if(!res.ok)throw new Error("inscription "+id+" HTTP "+res.staM
  let buf=await res.arrayBuffer();
  if(typeof patchGlbDropEmptyAccessors==="function")buf=patchGlbDropEmptyAccessors(buf);
  return await new Promise((ok,bad)=>loader.parse(buf,"",ok,bad));
function retargetOmClips(gltf,model){
  model.traverse(o=>{if(o.name)bones[o.name]=o});
  const idle=(gltf.animations||[]).find(a=>/^idle$/i.test(a.name));
  idle&&idle.tracks.forEach(tr=>{
    const dot=tr.name.lastIndexOf(".");
    const bone=tr.name.slice(0,dot), prop=tr.name.slice(M
    if(prop!=="quaternion"&&prop!=="rotation")return;
    rest[bone]=new THREE.Quaternion(tr.values[0],tr.values[1],tr.values[2],tr.values[3]).normalize();
  return (gltf.animations||[]).map(clip=>{
    const tracks=[];
    const loco=/^(walk|run)$/i.test(clip.name);
    clip.tracks.forEach(tr=>{
      const dot=tr.name.lastIndexOf(".");
      const bone=tr.name.slice(0,dot), prop=tr.name.slice(dot+1);
      const node=bones[bone];
      if(!node)return;
      const copy=tr.clone();
      const arm=/Arm|Shoulder|Hand/.test(bone);
      if((prop==="quaternion"||prop==="rotation")&&rest[bone]&&node.quaternion&&(!loco||arm)){
        const inv=rest[bone].clone().invert();
        const bind=node.quaternion.clone().normalize();
        const q=new THREE.Quaternion();
        for(let i=0;i<copy.values.length;i+=4){
          q.set(copy.values[i],copy.values[i+1],copy.values[i+2],copy.values[i+3]).normalize();
          q.premultiply(inv).premultiply(bind);
          copy.values[i]=q.x;M
copy.values[i+1]=q.y;copy.values[i+2]=q.z;copy.values[i+3]=q.w;
      tracks.push(copy);
    return new THREE.AnimationClip(clip.name,clip.duration,tracks);
function loadOmTexture(){
  return new Promise(ok=>{
    new THREE.TextureLoader().load("/content/"+OM_TEXTURE_ID,tex=>{
      try{tex.colorSpace=THREE.SRGBColorSpace}catch(e){}
      tex.flipY=false;tex.wrapS=tex.wrapT=THREE.ClampToEdgeWrapping;tex.needsUpdate=true;ok(tex);
    },undefined,()=>ok(null));
 loadOrdiMutant(opts){
    const model=await parseInscribedGlb(OM_MODEL_ID);
    const anims=await parseInscribedGlb(OM_ANIMS_ID);
    omTemplate={scene:model.scene,animations:retargetOmClips(anims,model.scene),texture:await loadOmTexture()};
  const local=!opts||opts.local!==false;
  const root=cloneSkinned(omTemplate.scene);
  root.visible=true;
  root.traverse(o=>{
      o.castShadow=true;o.frustumCulled=false;
      if(o.material){
        const m=o.mM
        m.side=THREE.DoubleSide;
        if(omTemplate.texture){
          m.map=omTemplate.texture;m.emissiveMap=null;
          if(m.color)m.color.set(0xffffff);
          if(m.emissive)m.emissive.set(0);
          if("metalness" in m)m.metalness=0;
          if("roughness" in m)m.roughness=1;
        m.needsUpdate=true;
    if(o.isSkinnedMesh)o.frustumCulled=false;
  root.scale.setScalar(charWorldScale(root));
  root.userData.isMutant=true;
  root.userData.isPlayerChar=trueM
  root.userData.skullId=OM_MODEL_ID;
  bindMinionClips(omTemplate,root);
  const jump=root.userData.actions&&root.userData.actions.Jump;
  if(jump){jump.setLoop(THREE.LoopOnce,1);jump.clampWhenFinished=true}
  if(local){minionRoot=root;minionMixer=root.userData.mixer;minionActions=root.userData.actions;myCharId=OM_MODEL_ID}
function setCharacterKind(kind){
  characterKind=kind;
  const mutant=kind==="mutant";
  if(mutant)myCharId=OM_MODEL_ID;
  const skull=document.getElementById("pickSkull");
const mut=document.getElementById("pickMutant");
  const input=document.getElementById("charIdInput");
  const loadBtn=document.getElementById("enterCustomBtn");
  if(skull)skull.classList.toggle("picked",!mutant);
  if(mut)mut.classList.toggle("picked",mutant);
  if(input)input.style.display=mutant?"none":"";
  if(loadBtn)loadBtn.style.display=mutant?"none":"";
  try{localStorage.setItem("saw-kind",kind)}catch(e){}
function restoreThrowArms(bones){
  if(!_armHoldFor)return;
  _armNames.forEach(n=>{if(bones[n]&&_M
armHold[n])bones[n].quaternion.copy(_armHold[n])});
function baseThrowArms(bones){
  if(_armHoldFor!==throwPoseUntil){
    _armNames.forEach(n=>{if(bones[n])_armHold[n]=bones[n].quaternion.clone()});
    _armHoldFor=throwPoseUntil;
  }else _armNames.forEach(n=>{if(bones[n]&&_armHold[n])bones[n].quaternion.copy(_armHold[n])});
function applyMutantArmSwing(bones,anim){
  if(!/walk|run/i.test(anim)||Date.now()<throwPoseUntil)return;
  const run=/run/i.test(anim);
  if(bones.LeftUpLeM
g){_omE.setFromQuaternion(bones.LeftUpLeg.quaternion,"XYZ");phase=_omE.x}
  const amp=run?0.18:0.14, tuck=run?0.1:0.16, elbow=run?0.28:0.16;
  ["Left","Right"].forEach(side=>{
    const n=side==="Right"?1:-1, swing=side==="Left"?-1:1;
    const arm=bones[side+"Arm"], fore=bones[side+"ForeArm"];
      _omQ.setFromAxisAngle(_omZ,-tuck*n);arm.quaternion.multiply(_omQ);
      _omQ.setFromAxisAngle(_omX,swing*phase*amp);arm.quaternion.multiply(_omQ);
      _omQ.setFromAxisAngle(_omX,-elbM
ow);fore.quaternion.multiply(_omQ);
function fixMutantPose(){
  if(!minionRoot||!minionRoot.userData.isMutant)return;
  minionRoot.traverse(o=>{if(o.isBone&&o.name)bones[o.name]=o});
  applyMutantArmSwing(bones,minionRoot.userData.currentAnim||"");
  if(Date.now()<throwPoseUntil){
    baseThrowArms(bones);
    const t=700-Math.max(0,throwPoseUntil-Date.now());
    const a=t<140?1:Math.max(0,1-(t-140)/460);
    ["Left","Right"].forEach(side=>{
      const n=side==="Right"?1:-1;
const arm=bones[side+"Arm"], fore=bones[side+"ForeArm"];
      if(arm){_omQ.setFromAxisAngle(_omZ,-1.15*n*a);arm.quaternion.multiply(_omQ);_omQ.setFromAxisAngle(_omY,0.42*n*a);arm.quaternion.multiply(_omQ)}
      if(fore){_omQ.setFromAxisAngle(_omZ,-0.95*n*a);fore.quaternion.multiply(_omQ)}
  }else restoreThrowArms(bones);
async function loadSkinnedMinion(skullId, opts) {
if((!opts||opts.local!==false)&&characterKind==="mutant"||isOmChar(skullId))return loadOrdiMutant(opts);
const gltf = await loadMinionM
if (!gltf) return null;
const asLocal = !opts || opts.local !== false;
const root = cloneSkinned(gltf.scene);
root.visible = true;
root.traverse((c) => {
c.castShadow = true;
c.frustumCulled = false;
c.material.side = THREE.DoubleSide;
c.material.transparent = false;
c.material.depthWrite = true;
c.material.needsUpdate = true;
if (c.isSkinnedMesh) c.frustumCulled = false;
const sid = normalizeCharId(skullId) || SAMPLE_SKULL_IDM
const pack = await parseCscTexturePack(sid);
const skin = await loadTex(pack.skinUrl);
applyPackToMinion(root, { skin, sky: null });
root.scale.setScalar(MINION_SCALE);
root.position.set(0, 0, 0);
root.rotation.set(0, 0, 0);
root.userData.isMinion = true;
root.userData.isPlayerChar = true;
root.userData.skullId = sid;
bindMinionClips(gltf, root);
minionMixer = root.userData.mixer;
minionActions = root.userData.actions;
function applyEmissiveAndTexture(model, textM
model.traverse((child) => {
if (child.isMesh && child.material) {
const mats = Array.isArray(child.material)
mats.forEach((mat) => {
mat.emissiveMap = texture;
mat.emissive = new THREE.Color(0x444444);
mat.emissiveIntensity = 0.85;
mat.needsUpdate = true;
async function getModelAndTexture(inscriptionId) {
const url = `/content/${inscriptionId}`;
const response = await fetch(url);
if (!response.ok) throw new ErroM
r(`Fetch failed: ${response.status}`);
const html = await response.text();
const doc = new DOMParser().parseFromString(html, "text/html");
let modelUrl = null;
const viewer = doc.querySelector("model-viewer");
if (viewer && viewer.hasAttribute("src"))
modelUrl = viewer.getAttribute("src");
let textureUrl = null;
const scripts = doc.querySelectorAll("script");
for (let script of scripts) {
const text = script.textContent || "";
const match = text.match(
/const\s+textureFilePath\s*=\s*["']([^"']+)["']/
textureUrl = match[1];
const IMAGE_SPHERE_MODEL_ID =
"c569b9ea81d2bc78fd86b328c7c1659b193f461ceb1c1ae9e79ac21e2713a171i0";
let imageSphereTemplate = null;
async function ensureImageSphere() {
if (imageSphereTemplate) return imageSphereTemplate;
return new Promise((resolve) => {
const loader = new GLTFLoader();
`/content/${IMAGE_SPHERE_MODEL_ID}`,
const body = gltf.sceneM
body.traverse((c) => {
if (c.isMesh) c.castShadow = true;
imageSphereTemplate = body;
async function probeIsImageInscription(id) {
let resp = await fetch(`/content/${id}`, { method: "HEAD" });
if (!resp.ok || !(resp.headers.get("content-type") || "")) {
resp = await fetch(`/content/${id}`, { method: "GET" });
if (!resp.ok) return false;
const ct = (resp.headers.get("content-type") || "").toLowerCase();
if (ct.startsWith("image/")) returM
if (ct.includes("octet-stream") || ct === "" || ct.includes("binary")) {
const buf = await resp.clone().arrayBuffer();
const u8 = new Uint8Array(buf.slice(0, 12));
if (u8[0] === 0xff && u8[1] === 0xd8 && u8[2] === 0xff) return true;
if (u8[0] === 0x47 && u8[1] === 0x49 && u8[2] === 0x46) return true;
async function loadImageSphereCharacter(imageId) {
const texture = await new Promise((resolve) => {
new THREE.TextureLoader().load(
`/content/${imageId}`,
(tex) => resolve(tex),
if (!texture) return null;
texture.flipY = true;
texture.wrapS = THREE.ClampToEdgeWrapping;
texture.wrapT = THREE.ClampToEdgeWrapping;
texture.repeat.set(1, 1);
texture.offset.set(0, 0);
olorSpace !== undefined) {
texture.colorSpace = THREE.SRGBColorSpace;
} else if (THREE.sRGBEncoding !== undefined) {
texture.encoding = THREE.sRGBEncoding;
const geo = new THREE.SphereGeometry(1, 64, 48);
const mat = new THREE.MeshStandardMaterial({
emissiveMap: texture,
emissive: new THREE.Color(0x222222),
emissiveIntensity: 0.45,
const mesh = new THREE.Mesh(geo, mat);
mesh.castShadow = true;
const root = new THREE.Group();
cale.setScalar(1.65);
root.position.set(0, 2.25, -0.4);
root.rotation.y = -Math.PI / 2;
root.userData.isImageSphere = true;
const LORDINAL_MODEL_ID =
"c33b6ea4e111364a094e28176a52208a977c2010bcef2a4c7fd10ab25b9f7515i0";
const LORDINAL_CATALOG_ID =
"67bfb966121e697a0bbc773567bf30bf59b95364f2e8e8c00bf2a80e54210018i0";
let lordinalBodyTemplate = null;
let lordinalTextureIds = null;
function parseLordinalCatalog(text) {
/\[\s*\d+\s*,\s*["']([0-9M
a-fA-Fi]+)["']\s*\]/g;
while ((m = pairRe.exec(text)) !== null) {
return ids.length ? ids : null;
async function ensureLordinalCatalog() {
if (lordinalTextureIds) return lordinalTextureIds;
const resp = await fetch(`/content/${LORDINAL_CATALOG_ID}`);
if (!resp.ok) throw new Error("catalog HTTP " + resp.status);
const text = await resp.text();
lordinalTextureIds = parseLordinalCatalog(text);
if (lordinalTextureIds) {
return lordinalTextureIds;
unction ensureLordinalBody() {
if (lordinalBodyTemplate) return lordinalBodyTemplate;
return new Promise((resolve) => {
const loader = new GLTFLoader();
`/content/${LORDINAL_MODEL_ID}`,
const body = gltf.scene;
body.traverse((c) => {
if (c.isMesh) c.castShadow = true;
lordinalBodyTemplate = body;
// Match the official Lordinal viewer: rebuild UVs from bounding-box projection
// so the skin maps correctly (avoids the 90
rotation from raw model UVs).
function applyLordinalProjectedUVs(model) {
model.updateMatrixWorld(true);
const box = new THREE.Box3().setFromObject(model);
const size = box.getSize(new THREE.Vector3());
if (size.x < 1e-6 || size.y < 1e-6) return;
const worldPos = new THREE.Vector3();
model.traverse((child) => {
if (!child.isMesh || !child.geometry) return;
// Clone geometry so we never mutate the shared body template
child.geometry = child.geometry.clone();
const pos = child.geometry.attributes.position;
= new Float32Array(pos.count * 2);
for (let i = 0; i < pos.count; i++) {
worldPos.fromBufferAttribute(pos, i);
child.localToWorld(worldPos);
// Same mapping as official viewer: X
uvs[i * 2] = (worldPos.x - box.min.x) / size.x;
uvs[i * 2 + 1] = (box.max.y - worldPos.y) / size.y;
child.geometry.setAttribute(
new THREE.BufferAttribute(uvs, 2)
function applyTextureToModel(model, texture) {
if (!texture) return;
texture.flipY = false;
texture.wrapS = texture.wrapT = THREE.RepeatWM
if (THREE.SRGBColorSpace !== undefined) {
texture.colorSpace = THREE.SRGBColorSpace;
} else if (THREE.sRGBEncoding !== undefined) {
texture.encoding = THREE.sRGBEncoding;
model.traverse((child) => {
if (!child.isMesh || !child.material) return;
const mats = Array.isArray(child.material)
const newMats = mats.map((mat) => {
const m = mat.clone();
m.emissiveMap = texture;
m.emissive = new THREE.Color(0x222222);
m.emissiveIntensity = M
if ("metalness" in m) {
m.needsUpdate = true;
child.material = Array.isArray(child.material)
// Build a ready-to-use Lordinal from entry ID (reads P=, looks up skin, clones body)
async function loadLordinalFromEntry(entryId) {
const resp = await fetch(`/content/${entryId}`);
if (!resp.ok) return null;
const html = await resp.text();
const pMatch = html.match(/P\s*=\s*(\d+)/);
if (!pMatch) return null;
based P into the PIECES array
const p = parseInt(pMatch[1], 10);
const catalog = await ensureLordinalCatalog();
if (!catalog || p < 1 || p > catalog.length) {
const textureId = catalog[p - 1];
const body = await ensureLordinalBody();
if (!body) return null;
const clone = body.clone(true);
// Reduced by 1/3 from 3.06
 2.04; raised a little higher in the pod
clone.scale.setScalar(2.04);
clone.position.set(0, 1.55, -0.4);
clone.rotation.y = 0;
clone.userData.isLordinal = true;
// Official-viewer UV pM
rojection so the skin sits correctly
applyLordinalProjectedUVs(clone);
// Load and apply ONLY this skin
const texture = await new Promise((resolve) => {
new THREE.TextureLoader().load(
`/content/${textureId}`,
(tex) => resolve(tex),
if (texture) applyTextureToModel(clone, texture);
else applyEmissiveAndTexture(clone);
function finalizeCscModel(baseModel, texture, cacheKey) {
baseModel.scale.setScalar(0.8);
baseModel.traverse((child) M
if (child.isMesh) child.castShadow = true;
baseModel.position.set(0, 0.35, -0.4);
baseModel.rotation.y = 0;
texture.flipY = false;
if (THREE.SRGBColorSpace !== undefined) {
texture.colorSpace = THREE.SRGBColorSpace;
} else if (THREE.sRGBEncoding !== undefined) {
texture.encoding = THREE.sRGBEncoding;
applyEmissiveAndTexture(baseModel, texture);
applyEmissiveAndTexture(baseModel);
modelCache.set(cacheKey, baseModel);
return baseModel.clone();
 loadCharacterModel(inscriptionId) {
let raw = (inscriptionId || "").trim();
let id = raw.replace(/i0$/, "") + "i0";
if (!raw || id === "i0") id = FALLBACK_ID;
if (modelCache.has(id)) return modelCache.get(id).clone();
// Peek content to decide path (text peek only if not likely binary image)
const isImage = await probeIsImageInscription(id);
const r = await fetch(`/content/${id}`);
if (r.ok) htmlPeek = await r.text();
// 1) Lordinal entry? (must contaM
if (/P\s*=\s*\d+/.test(htmlPeek)) {
const lordinal = await loadLordinalFromEntry(id);
modelCache.set(id, lordinal);
return lordinal.clone(true);
// 2) Plain image inscription
 sphere model + image as texture
const sphereChar = await loadImageSphereCharacter(id);
modelCache.set(id, sphereChar);
return sphereChar.clone(true);
// incompatible / failed
 fall through to skull
// 3) Classic CSC skull path (model-viewer HTML)
let data = await getModelAnM
if (data && data.modelUrl) {
return new Promise((resolve) => {
const loader = new GLTFLoader();
const baseModel = gltf.scene;
if (data.textureUrl) {
new THREE.TextureLoader().load(
(tex) => resolve(finalizeCscModel(baseModel, tex, id)),
() => resolve(finalizeCscModel(baseModel, null, id))
resolve(finalizeCscModel(baseModel, null, id));
// 4) Fallback to default CSC skullM
if (id !== FALLBACK_ID) {
data = await getModelAndTexture(FALLBACK_ID);
if (data && data.modelUrl) {
return new Promise((resolve) => {
const loader = new GLTFLoader();
resolve(finalizeCscModel(gltf.scene, null, FALLBACK_ID));
async function preloadCoreAssets() {
const promises = [];
new Promise((resolve, reject) => {
const loader = new THREE.TextureLoader();
/content/ca1be2e1bcda5cd624ea2c73995f470fa58674187f196c1571cc69e827aa1d13i0",
tex.wrapS = tex.wrapT = THREE.RepeatWrapping;
tex.repeat.set(160, 160);
new Promise((resolve, reject) => {
const loader = new THREE.TextureLoader();
"/content/b1a6b0a7dc61eeb4764607ab0505d571b4e42a6b31ca0e2d0c9bc8fe7014ac97i0",
new Promise((resolve, reject) => {
const loader = new THREE.TextureLoader();
`/content/${BLOCK_TEXTURE_ID}`,
new Promise((resolve, reject) => {
const loader = new GLTFLoader();
"/content/756a5fe7b548354837d57c4c1db157f4bc7b9ac603033163fe41e3359bf35e70i0",
cart.scale.setScalar(1.8);
cart.traverse((child) => {
child.castShadow = true;
child.receiveShadow = true;
new Promise((resolve, reject) => {
 = new GLTFLoader();
`/content/${STAR_ID}`,
starGLTF.scene.scale.setScalar(12);
new Promise((resolve, reject) => {
const loader = new GLTFLoader();
`/content/${LAVA_ID}`,
const [grassTex, skyTex, wallTex] = await Promise.all(promises);
coreGrassTex = grassTex;
coreSkyTex = skyTex;
coreWallTex = wallTex;
activeGrassTex = grassTex;
ctiveWallTex = wallTex;
statusEl.textContent = "Core assets loaded
startBtn.disabled = false;
// Preload optional character bases (non-blocking
ensureLordinalBody().catch(() => {});
ensureLordinalCatalog().catch(() => {});
ensureImageSphere().catch(() => {});
statusEl.textContent =
"Some assets failed to load
 proceeding anyway";
startBtn.disabled = false;
// Still try optional character bases in background
ensureLordinalBody().catM
ensureLordinalCatalog().catch(() => {});
ensureImageSphere().catch(() => {});
function getTerrainHeight(x, z) {
const def = MAP_DEFS[currentMapId] || MAP_DEFS["map-2"];
def.duneScale !== undefined ? def.duneScale : 1.0;
const floorLift = def.floorLift || 0;
// Dunes scaled per map; JUMP_HUMPS (center mountains) always full strength
let h = BASE_HEIGHT;
Math.sin(x * DUNE_FREQ_LARGE + z * DUNE_FREQ_LARGE * 0.7);
Math.sin(x * DUNE_FREQ_MED * 1.4 + z * DUNE_FREQ_MED * 0.9 + 1.7);
Math.sin(x * DUNE_FREQ_SMALL * 2.3 + z * DUNE_FREQ_SMALL * 1.8 + 4.1);
 slightly larger on Chaos so they stay usable at arena scale
const humpScale = def.chaosArena ? 1.35 : 1.0;
JUMP_HUMPS.forEach((hump) => {
const dx = x - hump.cx;
const dz = z - hump.cz;
const dist2 = dx * dx + dz * dz;
const influence = Math.exp(
-dist2 / (hump.radius * hump.radius * 2 * (def.chaosArena ?M
h += hump.height * humpScale * influence * influence;
return h + floorLift;
function buildTerrain(grassTex) {
const tp = getTrackParams();
const size = tp.terrainSize;
// More segments on elongated maps so the long axis stays smooth
const segs = tp.aspect > 1.2 ? Math.min(220, TERRAIN_SEGMENTS + 40) : TERRAIN_SEGMENTS;
const geo = new THREE.PlaneGeometry(size, size, segs, segs);
geo.rotateX(-Math.PI / 2);
const vertices = geo.attributes.position.array;
for (let i = 0; i < vertices.length; i += 3M
const x = vertices[i];
const z = vertices[i + 2];
vertices[i + 1] = getTerrainHeight(x, z);
geo.computeVertexNormals();
const positions = geo.attributes.position.array;
for (let i = 0; i < positions.length; i += 3) {
const x = positions[i];
const z = positions[i + 2];
const isTrack = isOnTrackXZ(x, z);
// Slight darken on track lane only (no blue tint)
const brightness = isTrack ? 0.42 : 1.0;
geo.setAttribute("color",M
 new THREE.Float32BufferAttribute(colors, 3));
const mat = new THREE.MeshStandardMaterial({
terrainMesh = new THREE.Mesh(geo, mat);
terrainMesh.receiveShadow = true;
scene.add(terrainMesh);
function clearTrackSurface() {
if (trackSurfaceMesh) {
scene.remove(trackSurfaceMesh);
trackSurfaceMesh.geometry.dispose();
if (trackSurfaceMesh.material) {
if (trackSurfaceMesh.material.map)
trackSurfaceMesh.material.map = null;
trackSurfaceMesh.maM
trackSurfaceMesh = null;
// Solid blue ribbon between inner/outer walls (follows meander + terrain)
function buildBlueTrackSurface() {
clearTrackSurface();
const positions = [];
for (let i = 0; i <= segs; i++) {
const theta = (i / segs) * Math.PI * 2;
const outer = getWallPoint(theta, false);
const inner = getWallPoint(theta, true);
const oy = getTerrainHeight(outer.x, outer.z) + 1.5;
const iy = getTerrainHeight(inner.x, inner.z) + 1.5;
sitions.push(outer.x, oy, outer.z);
positions.push(inner.x, iy, inner.z);
for (let i = 0; i < segs; i++) {
indices.push(a, b, c, b, d, c);
const geo = new THREE.BufferGeometry();
new THREE.Float32BufferAttribute(positions, 3)
geo.setIndex(indices);
geo.computeVertexNormals();
// Unlit-ish blue so it reads clearly over any ground texture
const mat = new THREE.MeshStandardMaterial({
emissiveIntensity: 0.55,
side: THREE.DoubleSide,
trackSurfaceMesh = new THREE.Mesh(geo, mat);
trackSurfaceMesh.receiveShadow = true;
scene.add(trackSurfaceMesh);
function buildWall(radius, wallTex, isInner = false) {
wallTex.flipY = false;
const originalWallLength = 1;
const originalWallHeight = 23;
const originalWallThickness = 2;
const numFine = 360 * 20;
const gaps = getGapAngles();
let finePoints = [];
for (let i = 0; i < numFine; i++) {
const theta = (i / numFine) M
// Elliptical path + anisotropic meander (legacy circular when aspect=1)
const pt = getWallPoint(theta, isInner);
let y = getTerrainHeight(x, z);
let isInGap = false;
for (const gap of gaps) {
const d = Math.abs(theta - gap.center);
const d2 = Math.abs(theta - (gap.center + Math.PI * 2));
const d3 = Math.abs(theta - (gap.center - Math.PI * 2));
const minD = Math.min(d, d2, d3);
if (minD < gap.width / 2) {
if (isInGap) y -= 100;M
finePoints.push(new THREE.Vector3(x, y, z));
if (finePoints[0].distanceTo(finePoints[finePoints.length - 1]) > 1)
finePoints.push(finePoints[0].clone());
let segmentIndices = [0];
const tolerance = 0.4;
for (let i = 2; i < finePoints.length; i++) {
let p0 = finePoints[lastIdx];
let pi = finePoints[i];
let len = pi.distanceTo(p0);
segmentIndices.push(i - 1);
const vec = pi.clone().sub(p0);
const norm = vec.cloneM
for (let j = lastIdx + 1; j < i; j++) {
const pj = finePoints[j];
const sub = pj.clone().sub(p0);
const t = sub.dot(norm);
const proj = p0.clone().addScaledVector(norm, t);
const dev = pj.distanceTo(proj);
if (dev > maxDev) maxDev = dev;
if (maxDev > tolerance) {
segmentIndices.push(i - 1);
if (segmentIndices[segmentIndices.length - 1] !== 0)
segmentIndices.push(0);
for (let k = 0; k < segmentIndices.length - 1; k++) {
let idx1 = segmentIndices[k];
let idx2 = segmentIndices[k M
let p1 = finePoints[idx1];
let p2 = finePoints[idx2];
let mid = p1.clone().add(p2).multiplyScalar(0.5);
let vec = p2.clone().sub(p1);
let length = vec.length();
if (length < 0.5) continue;
let dir = vec.clone().normalize();
let rotY = Math.atan2(dir.x, dir.z) + Math.PI / 2;
const visGeo = new THREE.BoxGeometry(
originalWallThickness
const material = new THREE.MeshStandardMaterial({
const def = MAP_DEFS[currentMapIM
def.wallRepeatY != null ? def.wallRepeatY : 4;
material.map.repeat.set(1, wallRepY);
material.map.wrapS = material.map.wrapT = THREE.RepeatWrapping;
material.needsUpdate = true;
const wall = new THREE.Mesh(visGeo, material);
wall.castShadow = true;
wall.receiveShadow = true;
const scaleFactor = length / originalWallLength;
wall.scale.set(scaleFactor, 1.0, 1.0);
wall.position.copy(mid);
wall.position.y += originalWallHeight / 2.5;
wall.rotation.y = rotY;
wall.userData.isMapWall = true;
all.userData.isInnerWall = !!isInner;
wallMeshList.push(wall);
const numCols = Math.max(1, Math.ceil(length / COL_SEGMENT_LEN));
for (let s = 0; s < numCols; s++) {
let t1 = s / numCols;
let t2 = (s + 1) / numCols;
s === 0 || s === numCols - 1 ? SHRINK_ENDS_BY : EXTRA_MARGIN;
t1 += shrink / length;
t2 -= shrink / length;
if (t1 >= t2) continue;
const subP1 = p1.clone().lerp(p2, t1);
const subP2 = p1.clone().lerp(p2, t2);
const subMid = subP1.clone().add(subP2).multiplyScalar(0.5);
nst colWidth = subP1.distanceTo(subP2);
const colDepth = originalWallThickness;
const colHeight = originalWallHeight;
const collider = new THREE.Mesh(
new THREE.BoxGeometry(colWidth, colHeight, colDepth),
new THREE.MeshBasicMaterial({
collider.position.copy(subMid);
collider.position.y += colHeight / 2.5;
collider.rotation.y = rotY;
const wallNormal = new THREE.Vector3(dir.z, 0, -dir.x).normalize();
if (isInner) wallNormal.negate();
collider.userData = {
wallDir: dir.clone(),
isInnerWall: !!isInner,
scene.add(collider);
colliders.push(collider);
function clearLavaPatches() {
lavaPatches.forEach((p) => {
// Don't remove chaos prop meshes that double as lava (owned by mapObstacleList)
if (p.mesh && !p.fromChaosProp) scene.remove(p.mesh);
function buildLavaPatches(appendOnly) {
if (!lavaGLTF && !(appendOnly && MAP_DEFS[currentMapId]?.chaosArena))
if (!appendOnly) clearLavaPatches();
if (!lavaGLTF) return;
const def = MAP_DEFSM
[currentMapId] || {};
const isCtfMap = def.mode === "ctf";
def.lavaCount != null
const positions = [];
if (def.chaosArena) {
const h0 = JUMP_HUMPS[0] || { cx: -120, cz: -180 };
const h1 = JUMP_HUMPS[2] || { cx: -10, cz: 220 };
{ x: h0.cx, z: h0.cz, yOffset: 6 },
{ x: h1.cx, z: h1.cz, yOffset: 6 }
} else if (isCtfMap) {
const radius = OUTER_RADIUS * 0.55;
for (let i = 0; i < lavaCount; i++) {
angle: (i / lavaCount) * Math.PI *M
} else if (lavaCount >= 12 || def.trackAspect > 1) {
for (let i = 0; i < lavaCount; i++) {
angle: (i / lavaCount) * Math.PI * 2,
angle: Math.PI * 0.25,
angle: Math.PI * 1.25,
const baseScale = 7.5;
const scaleXZ = baseScale;
const scaleY = isCtfMap ? baseScale * 3 : baseScale;
const hitRadius = isCtfMap ? 55 : 42;
itions.forEach((p) => {
if (p.x != null && p.z != null) {
} else if (p.useEllipse) {
const outer = getWallPoint(p.angle, false);
const inner = getWallPoint(p.angle, true);
x = (outer.x + inner.x) * 0.5;
z = (outer.z + inner.z) * 0.5;
x = p.radius * Math.sin(p.angle);
z = p.radius * Math.cos(p.angle);
const y = getTerrainHeight(x, z) + p.yOffset;
const clone = lavaGLTF.scene.clone();
clone.scale.set(scaleXZ, scaleY, scaleXZ);
clone.position.set(x, y, z);
clone.rotation.y = p.anM
const mixer = new THREE.AnimationMixer(clone);
if (lavaGLTF.animations && lavaGLTF.animations.length > 0) {
lavaGLTF.animations.forEach((anim) => {
const action = mixer.clipAction(anim);
action.setLoop(THREE.LoopRepeat);
pos: new THREE.Vector3(x, y, z),
function createDustParticle(pos, vel, color) {
const size = 0.18 + Math.random() * 0.55;
const geo = new THREE.PlaneGeometry(size, siM
const mat = new THREE.MeshBasicMaterial({
side: THREE.DoubleSide,
blending: THREE.AdditiveBlending,
const p = new THREE.Mesh(geo, mat);
p.position.copy(pos);
velocity: vel.clone(),
life: 1.1 + Math.random() * 1.3,
initialOpacity: 0.85,
dustParticles.push(p);
function updateDustParticles(dt) {
for (let i = dustParticles.length - 1; i >= 0; i--) {
const p = dustParticles[i];
const ud = p.userData;
ud.velocity.y -= 120 * dt;
p.position.addScaledVector(ud.velocity, dt);
const progress = Math.min(1, ud.age / ud.life);
p.material.opacity = ud.initialOpacity * (1 - progress * 1.2);
p.lookAt(camera.position);
if (ud.age > ud.life) {
dustParticles.splice(i, 1);
function clearCheckpointsAndFlag() {
checkpointStars.forEach((s) => {
if (s.mesh) scene.remove(s.mesh);
checkpointStars = [];
scene.remove(flagPoleMesh);
flagPoleMesh = null;
if (heldFlagMesh.parent) heldFlagMesh.parent.remove(heldFlagMesh);
heldFlagMesh = null;
function buildCheckpoints() {
clearCheckpointsAndFlag();
if (!starGLTF) return;
const def = MAP_DEFS[currentMapId] || {};
if (def.chaosArena) {
(def.outerRadiusOverride || chaosWallRadius || 1400) * 0.9;
for (let i = 0; i < 4; i++) {
angle = CHECKPOINT_ANGLES[i];
const outer = getWallPoint(angle, false);
const inner = getWallPoint(angle, true);
x: (outer.x + inner.x) * 0.5,
z: (outer.z + inner.z) * 0.5,
for (let i = 0; i < 4; i++) {
const midX = pts[i].x;
const midZ = pts[i].z;
const y = getTerrainHeight(midX, midZ) + 12;
const starClone = starGLTF.scene.clone();
starClone.position.set(midX, y, midZ);
scene.add(starClone);
const mixer = new THREE.AnimationMixer(starClone);
if (starGLTF.animations && starGLTF.animations.lengthM
const action = mixer.clipAction(starGLTF.animations[0]);
checkpointStars.push({
const flagX = pts[0].x;
const flagZ = pts[0].z;
const poleY = getTerrainHeight(flagX, flagZ) + 60;
flagPoleMesh = new THREE.Mesh(
new THREE.CylinderGeometry(2, 2, 240, 8),
new THREE.MeshPhongMaterial({
emissiveIntensity: 2,
flagPoleMesh.position.set(flagX, poleY, flagZ);
scene.add(flagPoleMesh);
flagMesh = new THREE.Mesh(
new THREE.MeshPhongMaterial({
side: THREE.DoubleSide,
emissiveIntensity: 3,
flagMesh.position.set(flagX, poleY + 120, flagZ);
flagMesh.rotation.y = Math.atan2(flagX, flagZ) + Math.PI / 2;
flagHomePos = flagMesh.position.clone();
scene.add(flagMesh);
heldFlagMesh = new THREE.Mesh(
new THREE.PlaneGeometry(12, 9),
new THREE.MeshPhongMaterial({
side: THREE.DoubleSide,
emissiveIntensity: 4,
heldFlagMesh.visible = false;
const customCursor = document.getElementById("customCursor");
const statusEl = document.getElementById("status");
const startBtn = document.getElementById("startBtn");
const pauseHint = document.getElementById("pauseHint");
const chatModeHint = document.getElementById("chatModeHint");
const lavaPowerHint = document.getElementById("lavaPowerHint");
const modelCache = new Map();
const chatContainer = document.getElementById("chat-container");
const chatMessages = document.getElemenM
tById("chat-messages");
const chatInput = document.getElementById("chat-input");
const chargeBar = document.getElementById("chargeBar");
const scoreboard = document.getElementById("scoreboard");
const scoreList = document.getElementById("scoreList");
const cpIndicator = document.getElementById("cpIndicator");
const pauseRulesBtn = document.getElementById("pauseRulesBtn");
const cameraCycleBtn = document.getElementById("cameraCycleBtn");
const pauseBtn = document.getElementById("pauseBtn");
let voiceOn = false;
let localMicStream = null;
const voicePcs = new Map();
const voiceAudioEls = new Map();
function rtcConf() {
{ urls: "stun:stun.l.google.com:19302" },
{ urls: "stun:stun1.l.google.com:19302" },
function sendToPeer(peerId, obj) {
if (!peerId) return;
const payload = JSON.stringify(Object.assign({ id: myPlayerID, to: peerId }, obj));
dcList.forEach((dc) => {
if (dc && dc.readyState === "open" && dc._peerId === peerId) {
try { dc.send(payloM
ad); sent = true; } catch (_) {}
dcList.forEach((dc) => {
if (dc && dc.readyState === "open") {
try { dc.send(payload); } catch (_) {}
let selfMuted = false;
let voiceMixLevel = 1;
const voiceRetryAt = new Map();
function applyVoiceMix() {
const g = Math.max(0, Math.min(1, voiceMixLevel));
voiceAudioEls.forEach((el) => {
const pct = document.getElementById("voiceMixPct");
if (pct) pct.textContent = Math.round(g * 100) + "%";
on kickVoicePlayback() {
voiceAudioEls.forEach((el) => {
el.volume = Math.max(0.2, Math.min(1, voiceMixLevel));
const pr = el.play();
if (pr && pr.catch) pr.catch(() => {});
function syncMicButtons() {
const btn = document.getElementById("micBtn");
const armed = !!(localMicStream && voiceOn);
btn.classList.toggle("on", armed && !selfMuted);
btn.textContent = armed ? (selfMuted ? "MUTED" : "ON") : "MIC";
function liveMicTrack() {
lMicStream) return null;
return localMicStream.getAudioTracks().find((tr) => tr.readyState === "live") || null;
function attachRemoteVoice(peerId, stream) {
if (!peerId || peerId === myPlayerID || !stream) return;
let el = voiceAudioEls.get(peerId);
el = document.createElement("audio");
el.playsInline = true;
el.setAttribute("playsinline", "true");
el.setAttribute("webkit-playsinline", "true");
el.style.display = "none";
document.body.appendChild(el);
voiceAudioEls.set(peerId, el);
el.volume = Math.max(0.35, Math.min(1, voiceMixLevel));
if (el.srcObject !== stream) el.srcObject = stream;
const play = () => {
const pr = el.play();
if (pr && pr.catch) pr.catch(() => {});
stream.getAudioTracks().forEach((tr) => {
function closeVoicePeer(peerId) {
const vpc = voicePcs.get(peerId);
try { vpc.close(); } catch (_) {}
voicePcs.delete(peerId);
const el = voiceAudioEls.get(peerId);
 el.srcObject = null; } catch (_) {}
voiceAudioEls.delete(peerId);
function putMicOnPc(vpc) {
const track = liveMicTrack();
const list = vpc.getTransceivers();
trans = list.find((tr) => (tr.sender && tr.sender.track && tr.sender.track.kind === "audio")
|| (tr.receiver && tr.receiver.track && tr.receiver.track.kind === "audio")) || list[0] || null;
list.forEach((tr) => { try { tr.direction = "sendrecv"; } catch (_) {} });
if (trans && trans.sender)M
const p = trans.sender.replaceTrack(track);
if (p && p.catch) p.catch(() => {});
vpc.addTrack(track, localMicStream);
try { vpc.addTrack(track, localMicStream); } catch (_2) {}
function shouldOfferVoice(peerId) {
return String(myPlayerID || "") < String(peerId || "");
function getVoicePc(peerId) {
let vpc = voicePcs.get(peerId);
if (vpc) return vpc;
vpc = new RTCPeerConnection(rtcConf());
vpc.ontrack = (e) => {
if (!e.track || e.track.kind !== "audio") return;
if (liveMicTrack() &&M
 e.track.id === liveMicTrack().id) return;
e.track.enabled = true;
const stream = e.streams && e.streams[0] ? e.streams[0] : new MediaStream([e.track]);
attachRemoteVoice(peerId, stream);
e.track.onunmute = () => attachRemoteVoice(peerId, stream);
e.track.onmute = () => {};
vpc.onicecandidate = (e) => {
if (e.candidate) sendToPeer(peerId, { type: "voiceIce", candidate: e.candidate });
try { vpc.addTransceiver("audio", { direction: "sendrecv" }); } catch (_) {}
voicePcs.set(peerId, vpc);
async function offerVoice(peerId) {
if (!peerId || peerId === myPlayerID) return;
const vpc = getVoicePc(peerId);
if (vpc.signalingState !== "stable") {
vpc._needOffer = true;
vpc._needOffer = false;
vpc._offering = true;
const offer = await vpc.createOffer({ offerToReceiveAudio: true });
if (vpc.signalingState !== "stable") {
vpc._needOffer = true;
await vpc.setLocalDescription(offer);
sendToPeer(peerId, { type: "voiceOffer", sdp: vpc.localDescription.sdp });
vpc._needOffer = true;
vpc._offering = false;
function flushVoiceOffer(peerId) {
const vpc = voicePcs.get(peerId);
if (vpc && vpc._needOffer && vpc.signalingState === "stable") offerVoice(peerId);
function publishMicToAll() {
const ids = new Set(voicePcs.keys());
dcList.forEach((dc) => {
if (dc && dc.readyState === "open" && dc._peerId) ids.add(dc._peerId);
remotePlayers.forEach((_, id) => ids.add(id));
ids.forEach((id) => {
if (!id || id === myPlayerID) return;
const vpc = getVoiceM
const live = vpc.connectionState === "connected" || vpc.iceConnectionState === "connected" || vpc.iceConnectionState === "completed";
if (!live) offerVoice(id);
function ensureVoiceLink(peerId) {
if (!peerId || peerId === myPlayerID) return;
const vpc = getVoicePc(peerId);
if (shouldOfferVoice(peerId) && vpc.signalingState === "stable" && !vpc.currentRemoteDescription)
else if (!shouldOfferVoice(peerId))
sendToPeer(peerId, { type: "voiceHello" });
handleVoiceMsg(channel, data) {
const peerId = data.id || channel._peerId;
if (!peerId || peerId === myPlayerID) return;
if (data.to && data.to !== myPlayerID) return;
if (data.type === "voiceHello" || data.type === "voiceRepair") {
const vpc = getVoicePc(peerId);
if (vpc.signalingState === "stable") await offerVoice(peerId);
if (data.type === "voiceOffer" && data.sdp) {
const vpc = getVoicePc(peerId);
if (vpc.signalingState === "have-local-offer") {
try { await vpc.setLocalDescriptM
ion({ type: "rollback" }); } catch (_) {}
await vpc.setRemoteDescription({ type: "offer", sdp: data.sdp });
const answer = await vpc.createAnswer();
await vpc.setLocalDescription(answer);
sendToPeer(peerId, { type: "voiceAnswer", sdp: vpc.localDescription.sdp });
flushVoiceOffer(peerId);
if (data.type === "voiceAnswer" && data.sdp) {
const vpc = voicePcs.get(peerId);
if (vpc.signalingState === "have-local-offer")
await vpc.setRemoteDescription({ tyM
pe: "answer", sdp: data.sdp });
flushVoiceOffer(peerId);
if (data.type === "voiceIce" && data.candidate) {
const vpc = getVoicePc(peerId);
try { await vpc.addIceCandidate(data.candidate); } catch (_) {}
function micIsLive() {
return !!(voiceOn && liveMicTrack() && !selfMuted);
async function toggleMic() {
await setMicEnabled(!micIsLive());
async function setMicEnabled(on) {
if (localMicStream) {
localMicStream.getAudioTracks().forEach((tr) => { tr.enableM
kickVoicePlayback();
const first = !liveMicTrack();
localMicStream = await navigator.mediaDevices.getUserMedia({
audio: { echoCancellation: true, noiseSuppression: false, autoGainControl: false },
const track = liveMicTrack();
if (track) track.enabled = true;
voicePcs.forEach((vpc) => putMicOnPc(vpc));
if (first) publishMicToAll();
kickVoicePlayback();
const voicePktLast = new Map();
async function peerVoiceBroken(peerId, vpc) {
if (!vpc) return true;
const cs = vpc.connectionState;
const ice = vpc.iceConnectionState;
if (cs === "failed" || cs === "closed" || ice === "failed") return true;
if (cs === "disconnected" || ice === "disconnected") return true;
if (cs !== "connected" && ice !== "connected" && ice !== "completed") {
if (!vpc._voiceBorn) vpc._voiceBorn = Date.now();
return Date.now() - vpc._voiceBorn > 12000;
 await vpc.getStats();
stats.forEach((s) => {
if (s.type === "inbound-rtp" && (s.kind === "audio" || s.mediaType === "audio") && typeof s.packetsReceived === "number")
pkts += s.packetsReceived;
voicePktLast.set(peerId, pkts);
vpc._zeroTried = false;
if (!vpc._voiceBorn) vpc._voiceBorn = Date.now();
if (Date.now() - vpc._voiceBorn > 15000 && !vpc._zeroTried) {
vpc._zeroTried = true;
async function recoverVM
oicePeer(peerId, hard) {
if (!peerId || peerId === myPlayerID || !multiplayerMode) return;
const now = Date.now();
if (now - (voiceRetryAt.get(peerId) || 0) < 8000) return;
voiceRetryAt.set(peerId, now);
let vpc = voicePcs.get(peerId);
const dead = !vpc || vpc.connectionState === "failed" || vpc.connectionState === "closed" || vpc.iceConnectionState === "failed";
closeVoicePeer(peerId);
voicePktLast.delete(peerId);
vpc = getVoicePc(peerId);
sendToPeer(peerId, { type: "voiceHello" });
fferVoice(peerId) || liveMicTrack()) offerVoice(peerId);
if (vpc.signalingState === "stable") {
const offer = await vpc.createOffer({ iceRestart: true, offerToReceiveAudio: true });
await vpc.setLocalDescription(offer);
sendToPeer(peerId, { type: "voiceOffer", sdp: vpc.localDescription.sdp });
sendToPeer(peerId, { type: "voiceHello" });
sendToPeer(peerId, { type: "voiceHello" });
if (!window._skwVoiceWatch) {
window._skwVoiceWatch = setInterval(async () M
if (!multiplayerMode) return;
const ids = new Set();
remotePlayers.forEach((_, id) => { if (id && id !== myPlayerID) ids.add(id); });
dcList.forEach((dc) => {
if (dc && dc.readyState === "open" && dc._peerId && dc._peerId !== myPlayerID)
ids.add(dc._peerId);
for (const id of ids) {
if (!voicePcs.has(id)) {
ensureVoiceLink(id);
const vpc = voicePcs.get(id);
if (await peerVoiceBroken(id, vpc)) recoverVoicePeer(id, vpc.connectionState === "failed" || vpc.connectionState === "closed");
const sl = document.getElementById("voiceMix");
if (sl && !sl._bound) {
sl.addEventListener("input", () => {
voiceMixLevel = Math.max(0, Math.min(1, Number(sl.value) / 100));
sl.addEventListener("pointerdown", (e) => e.stopPropagation());
sl.addEventListener("touchstart", (e) => e.stopPropagation(), { passive: true });
let connected = false;
let remotePlayers = new Map();
let hostOfferCodes = [];
let myPlayerID = "Racer";
CharId = FALLBACK_ID;
let collectedCandidatesList = [];
let lastCharSync = 0;
const CHAR_SYNC_INTERVAL = 2500;
let audioMaster = null;
let sharedNoiseBuffer = null;
let lastSoundAt = 0;
let raycaster = new THREE.Raycaster();
let pointer = new THREE.Vector2();
let syncCounter = 0;
let seenChats = new Set();
let lastFullStateSent = 0;
scene = new THREE.Scene();
scene.fog = new THREE.FogExp2(0x88aaff, 0.00018);
camera = new THREE.PerspectiveCamera(
window.innerWidth / window.innM
camera.position.set(0, 12, 28);
renderer = new THREE.WebGLRenderer({
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setPixelRatio(window.devicePixelRatio);
renderer.shadowMap.enabled = true;
document.body.appendChild(renderer.domElement);
const dom = renderer.domElement;
scene.add(new THREE.AmbientLight(0xaaaaaa, 1.1));
const sun = new THREE.DirectionalLight(0xffeecc, 1.5);
sun.position.set(80, 140, 60);
sun.castShadow = false;
mallScreen = isPhoneUI();
const jumpBtn = document.getElementById("jumpBtn");
if (isSmallScreen) {
cameraCycleBtn.style.display = "flex";
pauseBtn.style.display = "flex";
if (jumpBtn) jumpBtn.style.display = "flex";
const resetTouchVars = () => {
steerTouchId = null;
potentialFireTouch = null;
const bindMobileBtn = (btn, action) => {
let touched = false;
btn.addEventListener(
e.stopPropagation();
e.stopImmediatePropagation();
btn.addEventListener(
e.stopPropagation();
btn.addEventListener("click", (e) => {
bindMobileBtn(cameraCycleBtn, cycleCamera);
bindMobileBtn(pauseBtn, togglePause);
jumpBtn.addEventListener("touchstart", (e) => {
e.stopPropagation();
if (!jumpHeld) jumpRequested = true;
}, { passive: false });
jumpBtn.addEventListener("touchend", (e) => {
e.stopPropagation();
}, { passive: false });
jumpBtn.addEventListener("touchcancel", () => { jumpHeld = false; }, { passive: true });
jumpBtn.addEventListener("mousedown", (e) => {
if (!jumpHeld) jumpRequested = true;
jumpBtn.addEventListener("mouseup", () => { jumpHeld = false; });
const teamBtn = document.getElementById("teamToggleBtn");
bileBtn(teamBtn, () => { markHudTouch(); toggleTeam(); });
const micBtnHud = document.getElementById("micBtn");
let micTouched = false;
micBtnHud.addEventListener("touchstart", (e) => {
e.stopPropagation();
}, { passive: false });
micBtnHud.addEventListener("click", (e) => {
e.stopPropagation();
window.addEventListener(
if (isTypingNow()) M
if (e.code === "Space" || e.key === " " || e.key === "Spacebar") {
if (gameStarted && !inLobby) {
if (!jumpHeld) jumpRequested = true;
keys["space"] = true;
window.addEventListener("keydown", (e) => {
if (e.key === "Enter" && document.activeElement === chatInput) {
const msg = chatInput.value.trim();
appendChatMessage(myPlayerID, msg);
const chatPayload = JSON.stringify({
dcList.forEach((dc) => {
if (dc && dc.readyState === "open") dc.send(chatPayload);
chatInput.value = "";
const typing = isTypingNow();
const playing = gameStarted && !inLobby && !previewMode && !typingChat;
if (e.code === "Space" || e.key === " " || e.key === "Spacebar") {
if (gameStarted && !paused && !inLobby && (playing || !typing)) {
if (!jumpHeld) jumpRequested = true;
keys["space"] = true;
l = document.getElementById("p2p-lobby");
const lobbyOpen = lobbyEl && lobbyEl.style.display === "flex";
if (gameStarted) inLobby = false;
keys[e.key.toLowerCase()] = true;
if (e.code === "ShiftLeft" || e.code === "ShiftRight") keys["shift"] = true;
if (e.key.toLowerCase() === "p") togglePause();
(e.key === "c" || e.key === "C")
if (paused && e.key.toLowerCase() === "l") openLobbyFromPauM
if (e.key === "Escape" && gameStarted && !paused && !inLobby) {
controlsEnabled = !controlsEnabled;
if (!controlsEnabled) {
chatModeHint.style.display = "block";
chatModeHint.style.display = "none";
window.addEventListener("keyup", (e) => {
if (e.key) keys[e.key.toLowerCase()] = false;
if (e.code === "ShiftLeft" || e.code === "ShiftRight") keys["shift"] = false;
if (e.code === "Space" || e.key === " " || e.key === "Spacebar") {
keys["space"] = false;
dom.addEventListener("click", () => {
if (!controlsEnabled) {
controlsEnabled = true;
chatModeHint.style.display = "none";
dom.addEventListener("mousedown", (e) => {
Date.now() - lastFireTime > getFireCooldown() &&
lastFireTime = Date.now();
window.addEventListener("mousemove", (e) => {
if (paused && isDragging) {
const deltaX = e.clientX - lastMouseX;
aY = e.clientY - lastMouseY;
orbitAzimuth -= deltaX * 0.01;
orbitPolar -= deltaY * 0.01;
orbitPolar = Math.max(0.01, Math.min(Math.PI - 0.01, orbitPolar));
lastMouseX = e.clientX;
lastMouseY = e.clientY;
const lobbyEl = document.getElementById("p2p-lobby");
const lobbyOpen = lobbyEl && lobbyEl.style.display === "flex";
if (!controlsEnabled || lobbyOpen || typingChat || paused) return;
if (e.pointerType === "touch") return;
coarsePointer = false;
ignoreMouseSteerUntil = 0;
const targetX = (e.clientX / windM
ow.innerWidth) * 2 - 1;
mouseXNormalized = THREE.MathUtils.lerp(
const targetY = (e.clientY / window.innerHeight) * 2 - 1;
mouseYNormalized = THREE.MathUtils.lerp(
pointer.x = targetX;
pointer.y = -targetY;
customCursor.style.left = e.clientX + "px";
customCursor.style.top = e.clientY + "px";
const onMouseDown = (e) => {
lastMouseX = e.clientX;
lastMouseY = e.clientY;
ent.body.style.cursor = "grabbing";
const onMouseUp = () => {
document.body.style.cursor = "grab";
const onWheel = (e) => {
const factor = e.deltaY > 0 ? 1.1 : 0.9;
orbitRadius *= factor;
orbitRadius = Math.max(5, Math.min(100, orbitRadius));
dom.addEventListener("mousedown", onMouseDown);
document.addEventListener("mouseup", onMouseUp);
dom.addEventListener("wheel", onWheel, {
const canvas = renderer.domElemeM
function markHudTouch() {
ignoreMouseSteerUntil = Date.now() + 1200;
mouseXNormalized = 0;
mouseYNormalized = 0;
coarsePointer = true;
customCursor.style.display = "none";
function isInMobileHudZone(clientX, clientY) {
if (clientX > window.innerWidth - 80 && clientY < 140) return true;
const ids = ["jumpBtn", "micBtn", "teamToggleBtn", "movePad", "cameraCycleBtn", "pauseBtn", "voiceMix", "voiceMixWrap", "freezeCharge"];
for (let i = 0; i < ids.length; i++) {
const el = document.getElementById(ids[i]);
 || el.style.display === "none") continue;
const r = el.getBoundingClientRect();
clientX >= r.left - 8 &&
clientX <= r.right + 8 &&
clientY >= r.top - 8 &&
clientY <= r.bottom + 8
function applyPadFromPoint(clientX, clientY) {
const pad = document.getElementById("movePad");
const r = pad.getBoundingClientRect();
const cx = r.left + r.width / 2;
const cy = r.top + r.height / 2;
let dx = (clientX - cx) / (r.width * 0.42);
let dy = (clientY - cy) / (r.height * 0.M
const mag = Math.hypot(dx, dy);
if (mag > 1) { dx /= mag; dy /= mag; }
padKeys.w = padKeys.a = padKeys.s = padKeys.d = 0;
if (Math.abs(dy) >= Math.abs(dx)) {
if (dy < 0) padKeys.w = 1;
if (dx < 0) padKeys.a = 1;
const knob = document.getElementById("movePadKnob");
knob.style.left = 50 + dx * 38 + "%";
knob.style.top = 50 + dy * 38 + "%";
function clearPad() {
padKeys.w = padKeys.a = padKeys.s = padKeys.d =M
const knob = document.getElementById("movePadKnob");
if (knob) { knob.style.left = "50%"; knob.style.top = "50%"; }
function onTouchStart(e) {
const now = Date.now();
for (let i = 0; i < e.changedTouches.length; i++) {
const t = e.changedTouches[i];
if (isInMobileHudZone(t.clientX, t.clientY)) {
const pad = document.getElementById("movePad");
if (pad && pad.style.display !== "none") {
const r = pad.getBoundingClientRect();
t.clientX >= r.left &&
t.clientY >= r.top &&
t.clientY <= r.bottom
padTouchId = t.identifier;
applyPadFromPoint(t.clientX, t.clientY);
coarsePointer = true;
if (steerTouchId === null) {
steerTouchId = t.identifier;
steerTouchStartX = t.clientX;
potentialFireTouch = {
function onTouchMove(e) {
for (let i = 0; i < e.changedTouches.length; i++) {
const t = e.changedTouches[i];
ntifier === padTouchId) applyPadFromPoint(t.clientX, t.clientY);
else if (t.identifier === steerTouchId) {
const offsetX = t.clientX - steerTouchStartX;
touchSteer = THREE.MathUtils.clamp(
offsetX / (window.innerWidth * 0.38),
if (potentialFireTouch && Math.abs(offsetX) > 30)
potentialFireTouch = null;
function onTouchEnd(e) {
const now = Date.now();
for (let i = 0; i < e.changedTouches.length; i++) {
const t = e.changedTouches[i];
if (t.identifier === padTouchId) clearPad();
if (t.identifier === steM
potentialFireTouch &&
potentialFireTouch.id === t.identifier
const duration = now - potentialFireTouch.startTime;
const deltaX = Math.abs(t.clientX - potentialFireTouch.startX);
const deltaY = Math.abs(t.clientY - potentialFireTouch.startY);
if (duration < 220 && deltaX < 35 && deltaY < 35) {
const rect = canvas.getBoundingClientRect();
pointer.x = ((t.clientX - rect.left) / rect.width) * 2 - 1;
pointer.y = -((t.clientY - rect.top) / rect.height) * 2 + 1;
Date.now() - lastFireTime > getFiM
lastFireTime = Date.now();
potentialFireTouch = null;
steerTouchId = null;
const movePadEl = document.getElementById("movePad");
movePadEl.addEventListener("touchstart", (e) => {
e.stopPropagation();
const t = e.changedTouches[0];
padTouchId = t.identifier;
applyPadFromPoint(t.clientX, t.clientY);
}, { passive: false });
movePadEl.addEventLiM
stener("touchmove", (e) => {
e.stopPropagation();
for (let i = 0; i < e.changedTouches.length; i++) {
const t = e.changedTouches[i];
if (padTouchId === null || t.identifier === padTouchId)
applyPadFromPoint(t.clientX, t.clientY);
}, { passive: false });
const endPad = (e) => {
e.stopPropagation();
movePadEl.addEventListener("touchend", endPad, { passive: false });
movePadEl.addEventListener("touchcancel", endPad, { passive: false });
canvas.addEventListenerM
("touchstart", onTouchStart, {
canvas.addEventListener("touchmove", onTouchMove, {
canvas.addEventListener("touchend", onTouchEnd);
canvas.addEventListener("touchcancel", onTouchEnd);
window.addEventListener("resize", () => {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(window.innerWidth, window.innerHeight);
chatInput.addEventListener("focus", () => {
chatInput.addEventLiM
stener("blur", () => (typingChat = false));
document.addEventListener("focusin", (e) => {
const el = e.target;
const tag = (el && el.tagName) || "";
if (tag === "INPUT" || tag === "TEXTAREA" || tag === "SELECT" || (el && el.isContentEditable)) {
document.addEventListener("focusout", (e) => {
if (!isTypingNow()) typingChat = false;
updateCursorForLobby();
let audioUnlockP = null;
function tapDisconnect() {
nect(); } catch (_) {}
liveVoices = Math.max(0, liveVoices - 1);
function ensureAudio() {
if (!audioContext) {
audioContext = new (window.AudioContext || window.webkitAudioContext)();
if (!audioMaster && audioContext) {
audioMaster = audioContext.createGain();
audioMaster.gain.value = 0.7;
audioMaster.connect(audioContext.destination);
if (audioContext && !sharedNoiseBuffer) {
const len = Math.floor(audioContext.sampleRate * 0.18);
sharedNoiseBuffer = audioContext.createBuffer(1, len, audioContext.samplM
const data = sharedNoiseBuffer.getChannelData(0);
for (let i = 0; i < len; i++) data[i] = Math.random() * 2 - 1;
return audioContext;
function unlockAudio() {
const ctx = ensureAudio();
if (!ctx) return Promise.resolve(null);
if (ctx.state === "running") return Promise.resolve(ctx);
if (!audioUnlockP) {
audioUnlockP = ctx.resume().then(() => {
audioUnlockP = null;
audioUnlockP = null;
return audioUnlockP;
["pointerdown", "keydown", "touchstM
art"].forEach((ev) => {
window.addEventListener(ev, () => { unlockAudio(); kickVoicePlayback(); }, { passive: true });
function playFireSound(isLava = false) {
const tnow = performance.now();
if (tnow - lastSoundAt < 55) return;
unlockAudio().then((ctx) => {
if (!ctx || ctx.state !== "running" || !audioMaster) return;
if (liveVoices > 6) return;
const now = ctx.currentTime;
const dest = audioMaster;
const osc = ctx.createOscillator();
const gain = ctx.createGain();
osc.frequency.setValueAtTime(280, now);
osc.frequency.exponentialRampToValueAtTime(900, now + 0.22);
gain.gain.setValueAtTime(0.55, now);
gain.gain.exponentialRampToValueAtTime(0.0001, now + 0.28);
osc.connect(gain).connect(dest);
osc.onended = tapDisconnect;
osc.stop(now + 0.3);
const osc = ctx.createOscillator();
const gain = ctx.createGain();
osc.type = "triangle";
osc.frequency.setValueAtTime(520, now);
osc.frequency.exponentialRampToValueAtTime(90, now + 0.16);M
gain.gain.setValueAtTime(0.5, now);
gain.gain.exponentialRampToValueAtTime(0.0001, now + 0.2);
osc.connect(gain).connect(dest);
osc.onended = tapDisconnect;
osc.stop(now + 0.22);
function playHitSound() {
unlockAudio().then((ctx) => {
if (!ctx || ctx.state !== "running" || !audioMaster) return;
if (liveVoices > 6) return;
const now = ctx.currentTime;
const osc = ctx.createOscillator();
const gain = ctx.createGain();
osc.frequency.setValueAtTime(110, now);
in.gain.setValueAtTime(0.6, now);
gain.gain.exponentialRampToValueAtTime(0.0001, now + 0.22);
osc.connect(gain).connect(audioMaster);
osc.onended = tapDisconnect;
osc.stop(now + 0.24);
function cycleCamera() {
steerTouchId = null;
if (cameraMode === "chase") {
cameraMode = "cockpit";
} else if (cameraMode === "cockpit") {
cameraMode = "cockpit-fpv";
} else if (cameraMode === "cockpit-fpv") {
cameraMode = "cinema";
cameraMode = "chase";
const camModeEl = document.getElementById("camMode");
cameraMode === "cockpit-fpv" ? "COCKPIT FPV" : cameraMode.toUpperCase();
camModeEl.textContent = label;
document.getElementById("hud").style.display = hudVisible
chatContainer.style.display = hudVisible ? "block" : "none";
scoreboard.style.display = hudVisible ? "block" : "none";
cpIndicator.style.display = hudVisible ? "block" : "none";
cameraMode === "cockpit" || cameraMode === "cockpit-fpv";
if (playerModel) playerModel.visible = false;
if (playerModel) playerModel.visible = true;
camera.updateProjectionMatrix();
function updateHostPlayerList() {
const el = document.getElementById("hostPlayerList");
let html = `<div style="color:#0ff;"><strong>Host:</strong> ${myPlayerID || "
if (remotePlayers.size === 0) {
html += `<div style="color:#888;margin-tM
op:4px;">No remote players yet</div>`;
remotePlayers.forEach((p, id) => {
? ' <span style="color:#f44">[RED]</span>'
? ' <span style="color:#48f">[BLUE]</span>'
html += `<div style="margin-top:2px;">${id}${team}</div>`;
el.innerHTML = html;
function openLobbyFromPause() {
const lobby = document.getElementById("p2p-lobby");
lobby.style.display = "flex";
const live = document.getElementById("liveGamesContainer");
ve.style.display = "block";
const hc = document.getElementById("lobbyHostControls");
if (hc) hc.style.display = "block";
updateHostPlayerList();
const ret = document.getElementById("lobbyReturnToGameBtn");
if (ret) ret.style.display = gameStarted ? "block" : "none";
const startBtn = document.getElementById("lobbyStartBtn");
if (startBtn) startBtn.style.display = gameStarted ? "none" : "block";
updateCursorForLobby();
function togglePause() {
steerTouchId = null;
orbitTarget.copy(car.pos);
orbitTarget.y += 3.5;
const relPos = new THREE.Vector3().subVectors(
const sph = new THREE.Spherical().setFromVector3(relPos);
orbitRadius = sph.radius;
orbitPolar = sph.theta;
orbitAzimuth = sph.phi;
customCursor.style.display = "none";
document.body.style.cursor = "grabbing";
const camModeEl = document.getElementById("camMode");
if (camModeEl) camModeEl.textContent = "ORBIT";
pauseHint.style.display = "block";
.style.display = "block";
customCursor.style.display = "block";
document.body.style.cursor = "none";
const camModeEl = document.getElementById("camMode");
if (camModeEl) camModeEl.textContent = cameraMode.toUpperCase();
pauseHint.style.display = "none";
pauseRulesBtn.style.display = "none";
document.getElementById("hud").style.display = hudVisible
chatContainer.style.display = hudVisible ? "block" : "none";
scoreboard.style.display = hudVisible ? "block" : "none";
cpIndicator.style.dispM
lay = hudVisible ? "block" : "none";
updateCursorForLobby();
function createProjectile(spawnPos, initialVel, owner, isLava = false) {
const geo = new THREE.SphereGeometry(3.8, 14, 14);
const color = isLava ? 0xff4400 : 0x77ccff;
const emissive = isLava ? 0xaa2200 : 0x2255aa;
const mat = new THREE.MeshPhongMaterial({
emissiveIntensity: 1.8,
specular: isLava ? 0xffaa00 : 0xaaffff,
const ball = new THREE.Mesh(geo, mat);
ball.position.copy(spawnPos);
const glow = new THREE.Mesh(
new THREE.SphereGeometry(5.2, 12, 12),
new THREE.MeshBasicMaterial({
color: isLava ? 0xff8800 : 0x88ddff,
vel: initialVel.clone(),
startPos: spawnPos.clone(),
createdAt: Date.now(),
function fireFreezeBall() {
if (!cart || !gameStarted || paused) return;
raycaster.setFromCamera(pointer, camera);
const dir = raycaster.ray.direction.clone().normalize();
const forward = new THREE.Vector3(0, 0, -1).aM
new THREE.Quaternion().setFromAxisAngle(
new THREE.Vector3(0, 1, 0),
const spawnOffset = forward
.add(new THREE.Vector3(0, 4, 0));
const spawnPos = car.pos.clone().add(spawnOffset);
const vel = dir.multiplyScalar(PROJECTILE_SPEED).clone().add(car.vel);
const isLava = hasLavaPower;
const proj = createProjectile(spawnPos, vel, myPlayerID, isLava);
projectiles.push(proj);
playFireSound(isLava);
hasLavaPower = false;
dcList.forEach((dc) => {
if (dc && dc.readyState === "open")
function updateProjectiles(dt) {
const now = Date.now();
for (let i = projectiles.length - 1; i >= 0; i--) {
const p = projectiles[i];
p.vel.y += PROJECTILE_GRAVITY * dt;
p.mesh.position.addScaledVector(p.vel, dt);
const groundY = getTerrainHeight(
if (p.mesh.position.y < groundY + 1.8) {
scene.remove(p.mesh);
projectiles.splice(i, 1);
if (p.mesh.position.distanceTo(p.startPos) > MAX_PROJECTILE_DIST) {
scene.remove(p.mesh);
projectiles.splice(i, 1);
const isMine = p.owner === myPlayerID;
remotePlayers.forEach((remote, pid) => {
if (hit || !remote.mesh) return;
if (p.mesh.position.distanceTo(remote.mesh.position) < 13) {
ation: FREEZE_DURATION,
if (p.isLava) payload.isLava = true;
dcList.forEach((dc) => {
if (dc && dc.readyState === "open")
dc.send(JSON.stringify(payload));
const current = (scores.get(myPlayerID) || 0) + 1;
scores.set(myPlayerID, current);
dcList.forEach((dc) => {
if (dc && dc.readyState === "open")
type: "scoreUpdate",
} else if (p.mesh.position.distanceTo(car.pos) < 13) {
ate.now() - p.createdAt > 180;
if (p.isLava) applyLavaHit();
else applyFreezeHit(FREEZE_DURATION);
scene.remove(p.mesh);
projectiles.splice(i, 1);
function updatePhysics(dt) {
const lobbyEl = document.getElementById("p2p-lobby");
const menuEl = document.getElementById("overlay");
const lobbyOpen = lobbyEl && lobbyEl.style.display === "flex";
const menuOpen = menuEl && menuEl.style.display !== "none" && menuEl.style.display !== "";
if (gameStarted && !lobbyOpen && !menuOM
pen) inLobby = false;
if (!cart || paused || !controlsEnabled || inLobby) return;
const onRoad = isOnTrackXZ(car.pos.x, car.pos.z);
const isFrozen = Date.now() < slowEndTime;
if (!isFrozen && consecutiveFreezeHits > 0 && Date.now() > slowEndTime + 400) {
consecutiveFreezeHits = 0;
const slowMul = isFrozen ? 0.3 : 1.0;
const wantFwd = !!(keys["w"] || keys["arrowup"] || padKeys.w);
const wantBack = !!(keys["s"] || keys["arrowdown"] || padKeys.s);
const wantLeft = !!(keys["a"] || keys["arrowleft"] || padKeys.a);
st wantRight = !!(keys["d"] || keys["arrowright"] || padKeys.d);
if (wantFwd) padRamp = Math.min(1, padRamp + dt / 1.15);
else padRamp = Math.max(0, padRamp - dt * 2.2);
const brake = wantBack && !wantFwd ? 1 : 0;
let throttle = wantFwd ? 1 : 0;
keys["shift"] || keys["shiftleft"] || keys["shiftright"] ? 1 : 0;
if (padKeys.w) turbo = padRamp;
const walkMax = 50 * slowMul;
const runMax = 180 * slowMul;
const sideMax = walkMax * 0.5;
const currentMaxSpeed = (walkMax + (runMax - walkMax) * (turbo ? (turbo =M
== 1 ? 1 : turbo) : 0));
if (jumpRequested && car.onGround) {
car.onGround = false;
jumpStartY = car.pos.y;
jumpStartAt = Date.now();
jumpRequested = false;
if (steerTouchId !== null) steerInput = touchSteer;
else steerInput = mouseXNormalized;
if (Math.abs(steerInput) < STEER_DEADZONE) steerInput = 0;
const steer = steerInput * -1;
const forward = new THREE.Vector3(0, 0, -1).applyAxisAngle(
new THREE.Vector3(0, 1, 0),
const right = new THREE.Vector3(1, 0, 0).aM
new THREE.Vector3(0, 1, 0),
let fwdVel = car.vel.dot(forward);
let latVel = car.vel.dot(right);
const speedKmh = Math.abs(fwdVel) * 3.6;
let gripFactor = 1.0;
if (speedKmh > GRIP_DROP_SPEED) {
const t = THREE.MathUtils.clamp(
(speedKmh - GRIP_DROP_SPEED) / (GRIP_FULL_DROP - GRIP_DROP_SPEED),
gripFactor = THREE.MathUtils.lerp(
MIN_LATERAL_GRIP / BASE_LATERAL_GRIP,
const currentLateralGrip = BASE_LATERAL_GRIP * gripFactor;
const controlMul = 1.0;
const currentDrag = throttle ? ACCEL_DRAG : COAST_DRAG;
fwdVel *= currentDrag;
latVel *= currentLateralGrip;
Math.abs(latVel) > LATERAL_VEL_THRESHOLD &&
Math.abs(steer) < 0.4
const counterDir = -Math.sign(latVel);
Math.min(Math.abs(latVel) * 0.4, 1.8) *
const pitchTarget = THREE.MathUtils.clamp(
mouseYNormalized * PITCH_MAX,
car.pitch = THREE.MathUtils.lerp(
Math.min(1, PITCH_RATE * dt)
(1 + (turbo ? (TURBO_MUL - 1) * (typeof turbo === "number" ? turbo : 1) : 0)) *
fwdVel += engineForce * dt;
const strafe = (wantRight ? 1 : 0) - (wantLeft ? 1 : 0);
if (strafe) latVel += strafe * 36 * dt;
latVel = THREE.MathUtils.clamp(latVel, -sideMax, sideMax);
if (fwdVel > FWD_VEL_BRAKE_THRESHOLD)
fwdVel -= BRAKE_FORCE * dt * controlMul;
fwdVel -= REVERSE_FORCE * dt * controlMul;
fwdVel = Math.max(fwdVel, -sideMax);
REE.MathUtils.clamp(fwdVel, wantBack ? -sideMax : REVERSE_MAX, currentMaxSpeed);
const speedNorm = Math.min(1, Math.abs(fwdVel) / Math.max(1, currentMaxSpeed));
const turnStrength = TURN_RATE_BASE * (1 - speedNorm * 0.32);
car.rotation += steer * turnStrength * TURN_MULT * yawMul * dt;
const keepY = car.vel.y;
.multiplyScalar(fwdVel)
.add(right.multiplyScalar(latVel));
car.pos.y - jumpStartY < MAX_JUMP_HEIGHT &&
 jumpStartAt < MAX_JUMP_HOLD_MS;
car.vel.y = Math.min(380, keepY + 160 * dt + g * dt);
car.vel.y = keepY + g * dt;
if (car.pos.y - jumpStartY > MAX_JUMP_HEIGHT && car.vel.y > 0) {
const deltaPos = car.vel.clone().multiplyScalar(dt);
let newPos = car.pos.clone().add(deltaPos);
const groundY = getDriveSurfaceHeight(
const minY = groundY + 0.04;
const unconstrainedY = newPos.y;
if (unconstrainedY <= minY + 0.2) {
car.onGround = true;
} else car.onGround = false;
const RUBBER = 0.18;
for (let pass = 0; pass < 2; pass++) {
for (let bi = 0; bi < solidBoxes.length; bi++) {
const b = solidBoxes[bi];
const hxz = b.halfXZ !== undefined ? b.halfXZ : b.half;
const hy = b.halfY !== undefined ? b.halfY : b.half;
const topY = b.y + hy;
const botY = b.y - hy;
const adx = Math.abs(newPos.x - b.x);
const adz = Math.abs(newPos.z - b.z);
const rad = b.soft ? 7 : b.isBridge ? 10 : carRad;
b.rubber !== undefined
unconstrainedY >= topY - 10 &&
if (newPos.y < topY + 1.2 && car.vel.y <= 8) {
newPos.y = topY + 0.04;
car.onGround = true;
if (car.vel.y < 0) car.vel.y = 0;
if (newPos.y + 8 <= botY || newPos.y - 2 >= topY) continue;
const closestX = Math.max(b.x - hxz, Math.min(b.x + hxz, newPos.x));
const closestZ = Math.max(b.z - hxz, Math.min(b.z + hxz, newPos.z));M
let dx = newPos.x - closestX;
let dz = newPos.z - closestZ;
let dist = Math.hypot(dx, dz);
if (hxz - adx < hxz - adz) {
dx = newPos.x >= b.x ? 1 : -1;
newPos.x = b.x + dx * (hxz + rad);
dz = newPos.z >= b.z ? 1 : -1;
newPos.z = b.z + dz * (hxz + rad);
if (dist > 0 && dist < rad) {
const nx = dx / dist;
const nz = dz / dist;
const pen = rad - dist;
newPos.x += nx * pen;
newPos.z += nz * pen;
const vn = car.vel.x * nx + car.vel.z * nz;
car.vel.x -= (1 + rubber) * vn * nx;
car.vel.z -= (1 + rubber) * vn * nz;
remotePlayers.forEach((remote, pid) => {
if (!remote.mesh) return;
const dist = newPos.distanceTo(remote.mesh.position);
const pushDir = newPos
.sub(remote.mesh.position)
car.vel.addScaledVector(pushDir, 24);
if (remote.lastState)
remote.lastState.pos.addScaledVector(pushDir, -24);
let currentPos = newPos.clone();
for (let iter = 0; iter < MAX_COLLISION_ITER; iter++) {
const carBox = new M
THREE.Box3().setFromCenterAndSize(
new THREE.Vector3(15, 14, 15)
let hitThisFrame = false;
for (let col of colliders) {
col.updateMatrixWorld();
const colBox = new THREE.Box3().setFromObject(col);
if (carBox.intersectsBox(colBox)) {
hitThisFrame = true;
let hitNormal = new THREE.Vector3();
if (col.userData && col.userData.wallNormal)
hitNormal.copy(col.userData.wallNormal);
const carCenter = new THREE.Vector3();
carBox.getCenter(carCenter);
const colCenter = new THREE.Vector3();
hitNormal.subVectors(carCenter, colCenter).normalize();
const correction = car.onGround
: POS_CORRECTION * 2.2;
currentPos.addScaledVector(hitNormal, correction);
const vNormalMag = car.vel.dot(hitNormal);
if (vNormalMag < 0) {
const reflectedNormal = hitNormal
.multiplyScalar(-vNormalMag * RESTITUTION);
const parallelVel = car.vel
.sub(hitNormal.clone().multiplyScalar(vNormalMag));
const dampedParallel =
parallelVel.multiplyScalar(WALL_FRICTION);
pedParallel).add(reflectedNormal);
if (!hitThisFrame) break;
car.pos.copy(currentPos);
cart.position.copy(car.pos);
cart.rotation.order = "YXZ";
cart.rotation.y = car.rotation + POD_YAW_OFFSET;
cart.rotation.x = car.pitch || 0;
const maxBank = 0.34;
const speedFactor = Math.max(
Math.min(1, (speedKmh - 50) / (500 - 50))
cart.rotation.z = car.onGround
? steer * -maxBank * speedFactor
: THREE.MathUtils.lerp(cart.rotation.z, 0, Math.min(1, 6 * dt));
const displayedSpeed = Math.round(speedKmh);
st speedEl = document.getElementById("speed");
if (speedEl) speedEl.textContent = displayedSpeed;
lastFwdVel = fwdVel;
lavaPatches.forEach((patch) => {
const dx = car.pos.x - patch.pos.x;
const dz = car.pos.z - patch.pos.z;
const horiz = Math.hypot(dx, dz);
const r = patch.radius || 28;
const nearHeight = Math.abs(car.pos.y - patch.pos.y) < 35;
if (horiz < r && nearHeight) {
if (!hasLavaPower) {
hasLavaPower = true;
updateChargeMeterUI();
if (Math.random() < 0.62) {
const podForward = new THREE.Vector3(0, 0M
, -1).applyAxisAngle(
new THREE.Vector3(0, 1, 0),
const rearOffset = podForward.clone().multiplyScalar(-9);
const lowOffset = new THREE.Vector3(0, 1.6, 0);
const emitPos = car.pos.clone().add(rearOffset).add(lowOffset);
if (speedKmh > 600 && car.onGround) {
const dustVel = car.vel
.multiplyScalar(0.25)
(Math.random() - 0.5) * 28,
12 + Math.random() * 22,
(Math.random() - 0.5) * 28
createDustParticle(emitPos, dustVel, 0x4a5f2a);
if (!car.onGround) {
el = new THREE.Vector3(
(Math.random() - 0.5) * 32,
-18 - Math.random() * 25,
(Math.random() - 0.5) * 32
Math.random() > 0.6 ? 0xaaffff : 0x77ccff
const now = Date.now();
if (gameMode === "ctf") {
updateCtfGameplay();
if (!flagPoleMesh) return;
const flagBase = new THREE.Vector3(
flagPoleMesh.position.x,
getTerrainHeight(flagPoleMesh.position.x, flagPoleMesh.position.z) +
flagPoleMesh.position.z
if (flagHolder === myPlayerID && myLapStartTime === 0) {
yLapStartTime = now;
myLapPausedTime = 0;
myLapIsPaused = false;
if (flagHolder !== myPlayerID && myLapStartTime > 0 && !myLapIsPaused) {
myLapPausedTime = now - myLapStartTime;
myLapIsPaused = true;
if (flagHolder === myPlayerID && myLapIsPaused) {
myLapStartTime = now - myLapPausedTime;
myLapIsPaused = false;
if (flagHolder === myPlayerID) {
for (let i = 0; i < checkpointStars.length; i++) {
const starPos = checkpointStars[i].mesh.position;
const d = car.pos.distanceTo(starPos);
if (d < 45 && !myCompletedChM
myCompletedCheckpoints.add(i);
if (myCompletedCheckpoints.size === 4) {
const d = car.pos.distanceTo(flagBase);
if (d < 45 && flagHolder === myPlayerID) {
const lapTimeMs = now - myLapStartTime;
const lapTimeSec = (lapTimeMs / 1000).toFixed(2);
playerLapTimes.set(myPlayerID, lapTimeSec);
playerLaps.set(myPlayerID, myLaps);
myCompletedCheckpoints.clear();
droppedFlagPos = null;
flagCooldown = now + 3000;
stealCooldown = now + STEAL_COOLDOWN_MS;
consecutiveFreezeHitsM
dcList.forEach((dc) => {
if (dc && dc.readyState === "open") {
cooldown: flagCooldown,
stealCooldown: stealCooldown,
lapTime: lapTimeSec,
if (flagHolder === null && now > flagCooldown && now > stealCooldown) {
const pickupTarget = droppedFlagPos || flagBase;
const d = car.pos.distaM
nceTo(pickupTarget);
flagHolder = myPlayerID;
droppedFlagPos = null;
myLapStartTime = now;
myLapIsPaused = false;
consecutiveFreezeHits = 0;
dcList.forEach((dc) => {
if (dc && dc.readyState === "open")
cooldown: flagCooldown,
stealCooldown: stealCooldown,
} else if (flagHolder !== myPlayerID && now > stealCooldown) {
let holderIsFrozen = false;
const holderRemote = remotM
ePlayers.get(flagHolder);
Date.now() < (holderRemote.lastState.slowEndTime || 0);
if (holderIsFrozen) {
const holderMesh = holderRemote ? holderRemote.mesh : null;
const d = car.pos.distanceTo(holderMesh.position);
flagHolder = myPlayerID;
myLapStartTime = now;
stealCooldown = now + STEAL_COOLDOWN_MS;
dcList.forEach((dc) => {
if (dc && dc.readyState === "open")
cooldown: flagCooldown,M
stealCooldown: stealCooldown,
function updateCamera() {
if (!cart && !minionRoot && !playerModel) return;
skyDome.position.set(
(paused ? orbitTarget : car.pos).x,
(paused ? orbitTarget : car.pos).z
const pos = new THREE.Vector3();
pos.setFromSphericalCoords(orbitRadius, orbitPolar, orbitAzimuth);
pos.add(orbitTarget);
camera.position.copy(pos);
camera.lookAt(orbitTarget);
const orient = new THREE.Quaternion().seM
new THREE.Euler(-(car.pitch || 0), car.rotation, 0, "YXZ")
if (cameraMode === "chase" || cameraMode === "cinema") {
const offset = new THREE.Vector3(0, 11.5, 15.5).applyQuaternion(orient);
const camTarget = car.pos.clone().add(offset);
let gx = camTarget.x, gz = camTarget.z, gy = camTarget.y;
const floorY = getDriveSurfaceHeight(gx, gz, car.pos.y) + 6.2;
if (gy < floorY) gy = floorY;
if (gy < car.pos.y + 6.5) gy = car.pos.y + 6.5;
if (typeof solidBoxes !== "undefined" && solidBoxes) {
 i < solidBoxes.length; i++) {
const b = solidBoxes[i];
const hxz = (b.halfXZ !== undefined ? b.halfXZ : b.half) + 2;
const hy = b.halfY !== undefined ? b.halfY : b.half;
if (Math.abs(gx - b.x) <= hxz && Math.abs(gz - b.z) <= hxz) {
const top = b.y + hy + 5.5;
if (gy < top) gy = top;
camera.position.x += (gx - camera.position.x) * 0.22;
camera.position.z += (gz - camera.position.z) * 0.22;
camera.position.y += (gy - camera.position.y) * 0.28;
const lookPt = car.pos
.add(new THREE.Vector3(0, 3.6, -8).M
applyQuaternion(orient));
camera.lookAt(lookPt);
const eyeLocal = new THREE.Vector3(0, 2.9, -2.4).applyQuaternion(
camera.position.copy(car.pos.clone().add(eyeLocal));
const lookLocal = new THREE.Vector3(0, 0.35, -60).applyQuaternion(
camera.lookAt(car.pos.clone().add(lookLocal));
function decodeSDP(token) {
let trimmed = token.trim().replace(/[\r\n]+/g, "");
const match = trimmed.match(
/^([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),(.*)$/
if (!match) throw new Error("Invalid token")M
const type = match[1];
const username = match[2];
const ufrag = match[3];
const pwd = match[4];
let fingerprint = match[5];
const candidateStr = match[6] || "";
if (fingerprint.length === 64 && /^[0-9A-Fa-f]{64}$/.test(fingerprint))
fingerprint = fingerprint.match(/.{2}/g).join(":").toUpperCase();
const candidates = candidateStr
.map((c) => c.trim())
.filter((c) => c.length > 0)
const setupValue = type === "A" ? "active" : "actpass";
let sdp = `v=0\r\no=- ${Date.now()} 2 IN IP4 0.M
0.0.0\r\ns=-\r\nt=0 0\r\na=msid-semantic: WMS\r\nm=application 9 UDP/DTLS/SCTP webrtc-datachannel\r\nc=IN IP4 0.0.0.0\r\na=mid:0\r\na=sctp-port:5000\r\na=max-message-size:262144\r\na=setup:${setupValue}\r\na=ice-ufrag:${ufrag}\r\na=ice-pwd:${pwd}\r\na=fingerprint:sha-256 ${fingerprint}\r\n`;
candidates.forEach((cand) => (sdp += `a=candidate:${cand}\r\n`));
sdp += `a=end-of-candidates\r\n`;
function encodeSDP(sdpStr, type, username) {
const lines = sdpStr.split("\r\n");
const candidates = [];
for (const line of lines) {
if (line.startsWith("a=ice-ufrag:")) ufrag = line.slice(12);
if (line.startsWith("a=ice-pwd:")) pwd = line.slice(10);
if (line.startsWith("a=fingerprint:sha-256 "))
fingerprint = line.slice(22).replace(/:/g, "");
if (line.startsWith("a=candidate:")) candidates.push(line.slice(12));
const candidatePart = candidates.join("|");
type === "offer" ? "O" : "A"
},${username},${ufrag},${pwd},${fingerprint},${candidatePart}`;
unction waitForIceGathering(pc) {
return new Promise((r) => {
if (pc.iceGatheringState === "complete") return r();
const done = () => {
pc.removeEventListener("icegatheringstatechange", done);
pc.addEventListener("icegatheringstatechange", done);
setTimeout(done, 12000);
function broadcastToAll(message, excludeChannel = null) {
dcList.forEach((dc) => {
if (dc !== excludeChannel && dc.readyState === "open")
function sendFullState() {
fullState.players[myPlayerID] = {
laps: playerLaps.get(myPlayerID) || 0,
lapTime: playerLapTimes.get(myPlayerID) || 0,
hits: scores.get(myPlayerID) || 0,
remotePlayers.forEach((p, id) => {
fullState.players[id] = {
x: p.lastState.pos.x,
y: p.lastState.pos.y,
z: p.lastState.pos.z,
rot: p.lastState.podRot || 0,
ps: playerLaps.get(id) || 0,
lapTime: playerLapTimes.get(id) || 0,
hits: scores.get(id) || 0,
const payload = JSON.stringify(fullState);
dcList.forEach((dc) => {
if (dc && dc.readyState === "open") dc.send(payload);
lastFullStateSent = Date.now();
function setupDataChannel(channel) {
if (dcList.indexOf(channel) === -1) dcList.push(channel);
channel.onclose = () => {
if (channel._peerId) removeRemotePlayer(channel._peerId);
channel.onerror = () => {
channel.onopen = async () => {
const st = document.getElementById("lobby-status");
st.innerHTML = isHost
? `<span style="color:#0f0;">Player connected
 ${1 + remotePlayers.size} total</span>`
 waiting for host map
if (isHost) updateHostPlayerList();
const mapSel = document.getElementById("mapSelect");
if (mapSel && mapSel.value) currentMapId = mapSel.value;
const def = MAP_DEFS[currentMapId];
if (def) gameMode = def.mode || gameMode;
readMyCharIdFromInput();
mapId: currentMapId,
z: car.pos.z || -1300,
rot: car.rotation || 0,
mapId: currentMapId,
if (gameMode === "ctf") {
broadcastCtfFlags();
multiplayerMode = true;
startNetKeepalive();
if (channel._peerId) ensureVoiceLink(channel._peerId);
const id = readMyCharIdFromInput();
ait loadSkinnedMinion(id);
playerModel = success;
attachCharacterToPod(playerModel);
document.getElementById("p2p-lobby").style.display = "none";
channel.send(JSON.stringify({ type: "mapRequest" }));
pendingGuestStart = true;
if (pendingGuestStart) {
pendingGuestStart = false;
channel.onmessage = (event) => {
const data = JSON.parse(event.data);
if (data.id && data.id !== myPlayerID) {
const firstId = !channel._peerId;
channel._peerId = data.idM
if (firstId) ensureVoiceLink(data.id);
if (data.type && String(data.type).indexOf("voice") === 0) {
handleVoiceMsg(channel, data);
if (data.type === "ping") {
if (data.id) channel._peerId = data.id;
if (data.type === "pong") {
let p = remotePlayers.get(data.id);
p.lastUpdateTime = Date.now();
if (data.t) p.rtt = Date.now() - data.t;
sHost) p.isHost = true;
if (data.type === "chat") {
data.from === myPlayerID ||
seenChats.has(data.message + data.from)
seenChats.add(data.message + data.from);
appendChatMessage(data.from, data.message);
if (isHost) broadcastToAll(event.data, channel);
if (data.type === "fullState") {
if (!isHost && data.mapId) {
applyHostMap(data.mapId, data.gameMode);
Object.keys(data.players).forEach((id) => {
if (id === myPlayerID) return;
const info = data.players[id];
addRemotePlayer(id, info.charId, info.rot);
p = remotePlayers.get(id);
p.lastState.pos.set(info.pos.x, info.pos.y, info.pos.z);
p.lastState.podRot = info.rot;
if (p.mesh) attachNameTag(p.mesh, p.playerId || id, false, p.team);
if (info.isHost) p.isHost = true;
if (info.charId && info.charId !== p.charId)
updateRemoteCharacter(p, info.charId);
p.lastUpdateTime = Date.now();
if (info.laps !== undefined) playerLaps.set(id, info.laps);
o.lapTime !== undefined)
playerLapTimes.set(id, info.lapTime);
if (info.hits !== undefined) scores.set(id, info.hits);
if (data.type === "mapRequest") {
mapId: currentMapId,
} else if (data.type === "mapSync") {
if (!isHost && data.mapId) {
await applyHostMap(data.mapId, data.gameMode);
if (pendingGuestStart) {
pendingGuestStart = false;
} else if (data.type === "inM
if (data.id === myPlayerID) return;
if (!isHost && data.mapId) {
await applyHostMap(data.mapId, data.gameMode);
await addRemotePlayer(data.id, data.charId, data.rot);
const p = remotePlayers.get(data.id);
if (p.mesh) attachNameTag(p.mesh, p.playerId || data.id, false, p.team);
if (data.isHost) p.isHost = true;
if (!isHost && pendingGuestStart) {
pendingGuestStart = false;
} else if (data.type === "pos") {
let p = remotePlayers.get(data.id);
if (!p && data.id) {
addRemotePlayer(data.id, data.charId, data.rot);
p = remotePlayers.get(data.id);
if (data.pos) p.lastState.pos.copy(data.pos);
if (data.anim) p.lastState.anim = data.anim;
if (data.rot !== undefined) p.lastState.podRot = data.rot;
if (data.charId && data.charId !== p.charId)
updateRemoteCharacter(p, data.charId);
if (data.slowEndTime !== undefined)
p.lastState.slowEndTime = data.slowEndTime;
if (data.isHost) p.isHost = true;
if (p.mesh) attachNameTag(p.mesh, p.playerId || data.id, false, p.team);
p.lastUpdateTime = Date.now();
} else if (data.type === "fireFreeze") {
const spawnPos = new THREE.Vector3(
const vel = new THREE.Vector3(data.vel.x, data.vel.y, data.vel.z);
const proj = createProjectile(
projectiles.push(proj);
} else if (data.type === "freezeHit") {
if (data.target === myPlayerID) {
if (data.isLava) applyLM
else applyFreezeHit(data.duration || FREEZE_DURATION);
} else if (data.type === "scoreUpdate") {
scores.set(data.id, data.hits);
} else if (data.type === "lapUpdate") {
playerLaps.set(data.id, data.laps);
if (data.lapTime !== undefined && data.lapTime !== null) {
playerLapTimes.set(data.id, data.lapTime);
} else if (data.type === "flagUpdate") {
flagHolder = data.holder;
if (data.cooldown) flagCooldown = data.cooldown;
if (data.stealCooldown) stealCooldown = datM
droppedFlagPos = new THREE.Vector3(
} else if (data.holder) {
droppedFlagPos = null;
} else if (data.dropPos === null) {
droppedFlagPos = null;
} else if (data.type === "teamUpdate") {
if (data.id === myPlayerID) return;
let p = remotePlayers.get(data.id);
if (p.mesh) attachNameTag(p.mesh, p.playerId || data.id, false, p.team);
RemotePlayer(data.id, null, 0).then(() => {
const rp = remotePlayers.get(data.id);
rp.team = data.team;
if (rp.mesh) attachNameTag(rp.mesh, rp.playerId || data.id, false, rp.team);
} else if (data.type === "ctfFlagUpdate") {
CTF.redHolder = data.redHolder || null;
CTF.blueHolder = data.blueHolder || null;
CTF.redDrop = data.redDrop
? new THREE.Vector3(
CTF.blueDrop = data.blueDrop
? new THREE.Vector3(
if (data.teamScores) teamScores = data.teamScores;
updateCtfFlagVisual();
if (isHost && data.type !== "fullState")
broadcastToAll(event.data, channel);
function poseCharacterOnPod(model) {
model.userData.isPlayerChar = true;
if (model.userData.isLordinal) {
model.scale.setScalar(2.04);
model.position.set(0, 1.55, -0.4);
model.rotation.y = 0;
} else if (model.userData.isImageSphere) {
model.position.set(0, 2.25, -0.4);
model.rotation.y = -Math.PI / 2;
model.scale.setScalar(0.8);
model.position.set(0, 0.35, -0.4);
model.rotation.y = 0;
async function addRemotePlayer(id, charId, modelRot) {
if (remotePlayers.has(id)) return;
charId: charId || FALLBACK_ID,
pos: new THREE.Vector3(0, 0, 0),
podRot: modelRot || 0,
lastUpdateTime: Date.now(),
layers.set(id, entry);
playerLaps.set(id, 0);
updatePlayerCount();
const holder = new THREE.Group();
holder.visible = true;
entry.mesh = holder;
const gen = entry.loadGen;
const characterModel = await loadSkinnedMinion(entry.charId, { local: false });
if (!remotePlayers.has(id) || remotePlayers.get(id) !== entry || entry.loadGen !== gen) {
if (characterModel && characterModel.parent) characterModel.parent.remove(characterModel);
while (holder.childM
ren.length) holder.remove(holder.children[0]);
if (characterModel && characterModel !== minionRoot && characterModel !== playerModel) {
if (characterModel.parent) characterModel.parent.remove(characterModel);
characterModel.position.set(0, 0, 0);
characterModel.rotation.set(0, 0, 0);
characterModel.scale.setScalar(charWorldScale(characterModel));
holder.scale.set(1, 1, 1);
holder.add(characterModel);
entry.model = characterModel;
attachNameTag(holder, id, false, entry.team);
pdateRemoteCharacter(remotePlayer, newCharId) {
if (!remotePlayer || !newCharId || remotePlayer.charId === newCharId)
remotePlayer.charId = newCharId;
remotePlayer.loadGen = (remotePlayer.loadGen || 0) + 1;
const gen = remotePlayer.loadGen;
if (remotePlayer.mesh) {
while (remotePlayer.mesh.children.length) {
remotePlayer.mesh.remove(remotePlayer.mesh.children[0]);
remotePlayer.model = null;
const newModel = await loadSkinnedMinion(newCharId, { local: false });
remotePlayer.loadGen !== M
remotePlayer.charId !== newCharId ||
if (newModel && newModel.parent) newModel.parent.remove(newModel);
newModel.position.set(0, 0, 0);
newModel.rotation.set(0, 0, 0);
newModel.scale.setScalar(charWorldScale(newModel));
remotePlayer.mesh.scale.set(1, 1, 1);
remotePlayer.mesh.add(newModel);
remotePlayer.model = newModel;
attachNameTag(remotePlayer.mesh, remotePlayer.playerId || "Racer", false, remotePlayer.team);
function updatePlayerCount() {
document.getElementById("playerM
Count").textContent =
1 + remotePlayers.size;
function updateScoreboard() {
if (gameMode === "ctf") {
html += `<div style="color:#f44">RED ${teamScores.red}</div>`;
html += `<div style="color:#48f">BLUE ${teamScores.blue}</div>`;
html += `<hr style="border-color:#0f03">`;
const line = (id, team) => {
const hits = scores.get(id) || 0;
team === "red" ? "#f44" : team === "blue" ? "#48f" : "#aaa";
if (CTF.redHolder === id) flagTag = ' <span style="color:#f66">
if (CTF.blueHolder === id)
flagTag = ' <span style="color:#6af">
html += `<div><span style="color:${tcol}">[${(team || "?").toUpperCase()}]</span> <strong>${id}</strong>: ${hits} hits${flagTag}</div>`;
line(myPlayerID, myTeam);
remotePlayers.forEach((p, id) => line(id, p.team));
const ids = new Set([myPlayerID, ...remotePlayers.keys()]);
scores.forEach((_, id) => ids.add(id));
ids.forEach((id) => {
const hits = scores.get(id) || 0;
const laps = playerLaps.get(id) || 0;
nst lapTime = playerLapTimes.get(id) || 0;
? ' <span style="color:#0ff">
html += `<div><strong>${id}</strong>: ${hits} hits | ${laps} laps${flagTag} <span style="color:#0ff;">${lapTime}s</span></div>`;
scoreList.innerHTML =
html || '<div style="color:#666;">No hits or laps yet</div>';
scoreboard.style.display = hudVisible ? "block" : "none";
function updateRemotePlayers() {
const def = MAP_DEFS[currentMapId] || {};
def.fog && def.fogPlaM
yerDist != null ? def.fogPlayerDist : null;
remotePlayers.forEach((p) => {
if (!p.mesh || !p.lastState || !p.lastState.pos) return;
const dist = p.mesh.position.distanceTo(p.lastState.pos);
p.mesh.position.copy(p.lastState.pos);
const alpha = dist > 40 ? 0.5 : dist > 12 ? 0.38 : 0.28;
p.mesh.position.lerp(p.lastState.pos, alpha);
const targetRot = (p.lastState.podRot || 0) + Math.PI;
p.mesh.rotation.y = THREE.MathUtils.lerp(
p.mesh.rotation.y || 0,
AnimOn(p.model, p.lastState.anim || "Idle");
if (p.model.userData.mixer) p.model.userData.mixer.update(0.016);
if (fogHide != null && car && car.pos) {
const d = p.mesh.position.distanceTo(car.pos);
p.mesh.visible = d <= fogHide;
p.mesh.visible = true;
function appendChatMessage(from, message) {
const div = document.createElement("div");
div.className = "chat-msg";
div.innerHTML = `<strong>${from}:</strong> ${message}`;
chatMessages.appendChild(div);
chatMessages.scrollTop = chatMessages.scrollHeM
function dropFlagAtWorld(pos) {
if (flagHolder !== myPlayerID) return;
const drop = (pos && pos.clone) ? pos.clone() : new THREE.Vector3(
(pos && pos.x) || car.pos.x,
(pos && pos.y) || car.pos.y,
(pos && pos.z) || car.pos.z
drop.y = getTerrainHeight(drop.x, drop.z) + 14;
droppedFlagPos = drop;
const now = Date.now();
flagCooldown = now + 900;
stealCooldown = now + STEAL_COOLDOWN_MS;
dcList.forEach((dc) => {
if (dc && dc.readyState === "open")
dropPos: { x: drop.x, y: drop.y, z: drop.z },
cooldown: flagCooldown,
stealCooldown: stealCooldown,
function applyLavaHit() {
if (gameMode === "ctf") {
if (CTF.redHolder === myPlayerID) dropCtfFlag("red", car.pos);
if (CTF.blueHolder === myPlayerID) dropCtfFlag("blue", car.pos);
} else if (flagHolder === myPlayerID) {
dropFlagAtWorld(car.pos);
consecutiveFreezeHits = 0;
const sp = getSpawnPos();
car.vel.set(0, 0, 0);
function applyFreezeHit(duration) {
slowEndTime = Date.now() + (duration || FREEZE_DURATION);
consecutiveFreezeHits++;
if (consecutiveFreezeHits >= 3) {
consecutiveFreezeHits = 0;
function updateFlagVisual() {
if (heldFlagMesh && heldFlagMesh.parent)
heldFlagMesh.parent.remove(heldFlagMesh);
if (flagHolder === null) {
flagMesh.visible = true;
if (droppedFlagPos) {
flagMesh.position.copy(droppedFlagPos);
} else if (flagHomePM
flagMesh.position.copy(flagHomePos);
if (heldFlagMesh) heldFlagMesh.visible = false;
if (flagMesh) flagMesh.visible = false;
if (flagHolder === myPlayerID && cart && heldFlagMesh) {
cart.add(heldFlagMesh);
heldFlagMesh.position.set(0, 18, 0);
heldFlagMesh.rotation.y = Math.PI / 2;
heldFlagMesh.visible = true;
} else if (heldFlagMesh) {
remotePlayers.forEach((remote, pid) => {
if (pid === flagHolder && remote.mesh) {
remote.mesh.add(heldFlagMesh);
heldFlagMesh.position.set(0, 18, 0);
rotation.y = Math.PI / 2;
heldFlagMesh.visible = true;
function isHoldingAnyFlag() {
if (gameMode === "ctf") {
CTF.redHolder === myPlayerID || CTF.blueHolder === myPlayerID
return flagHolder === myPlayerID;
function countTeams() {
if (myTeam === "red") red++;
else if (myTeam === "blue") blue++;
remotePlayers.forEach((p) => {
if (p.team === "red") red++;
else if (p.team === "blue") blue++;
return { red, blue };
function assignBalancedTeam()M
const { red, blue } = countTeams();
return red <= blue ? "red" : "blue";
function broadcastTeam() {
const payload = JSON.stringify({
dcList.forEach((dc) => {
if (dc && dc.readyState === "open") dc.send(payload);
function broadcastCtfFlags() {
if (gameMode !== "ctf") return;
const payload = JSON.stringify({
type: "ctfFlagUpdate",
redHolder: CTF.redHolder,
blueHolder: CTF.blueHolder,
redDrop: CTF.redDrop
? { x: CTF.redDrop.x, y: CTF.redDrop.y, z: CTF.reM
blueDrop: CTF.blueDrop
? { x: CTF.blueDrop.x, y: CTF.blueDrop.y, z: CTF.blueDrop.z }
dcList.forEach((dc) => {
if (dc && dc.readyState === "open") dc.send(payload);
function updateCtfHud() {
const hud = document.getElementById("ctfHud");
const teamBtn = document.getElementById("teamToggleBtn");
const radar = document.getElementById("ctfRadar");
if (radar) radar.style.display = gameStarted ? "block" : "none";
if (gameMode !== "ctf" || !gameStarted) {
if (hud) hud.style.M
if (teamBtn) teamBtn.style.display = "none";
if (hud) hud.style.display = "block";
if (teamBtn) teamBtn.style.display = "block";
const scoreEl = document.getElementById("ctfScoreLine");
const teamEl = document.getElementById("ctfTeamLine");
scoreEl.innerHTML = `<span style="color:#f44">RED ${teamScores.red}</span>
 <span style="color:#48f">BLUE ${teamScores.blue}</span>`;
const col = myTeam === "red" ? "#f44" : "#48f";
teamEl.innerHTML = `Team: <span style="M
color:${col};font-weight:bold">${(myTeam || "
").toUpperCase()}</span>`;
function updateCtfRadar() {
const canvas = document.getElementById("ctfRadar");
if (!canvas || !gameStarted) return;
if (gameMode !== "ctf" && gameMode !== "race") return;
canvas.style.display = "block";
const ctx = canvas.getContext("2d");
const W = canvas.width;
const H = canvas.height;
const R = Math.min(W, H) * 0.42;
ctx.clearRect(0, 0, W, H);
ctx.arc(cx, cy, R + M
ctx.fillStyle = "rgba(0,20,30,0.55)";
ctx.strokeStyle = "rgba(0,255,255,0.45)";
const face = car.rotation || 0;
const cos = Math.cos(face);
const sin = Math.sin(face);
const def = MAP_DEFS[currentMapId] || {};
def.outerRadiusOverride ||
const scale = R / (mapR * 1.05);
const worldToRadar = (wx, wz) => {
const dx = wx - car.pos.x;
const dz = wz - car.pos.z;
const localRight = dx * cos + dz * -sin;
alFwd = dx * -sin + dz * -cos;
x: cx + localRight * scale,
y: cy - localFwd * scale,
const clampDot = (p) => {
const ddx = p.x - cx;
const ddy = p.y - cy;
const d = Math.hypot(ddx, ddy);
const s = (R - 3) / d;
return { x: cx + ddx * s, y: cy + ddy * s };
const drawDot = (p, color, r) => {
const c = clampDot(p);
ctx.arc(c.x, c.y, r, 0, Math.PI * 2);
ctx.fillStyle = color;
worldToRadar(CTF.redPole.position.x, CTF.M
redPole.position.z),
worldToRadar(CTF.bluePole.position.x, CTF.bluePole.position.z),
const flagWorld = (color) => {
const holder = color === "red" ? CTF.redHolder : CTF.blueHolder;
if (holder === myPlayerID) return { x: car.pos.x, z: car.pos.z };
const rp = remotePlayers.get(holder);
return { x: rp.mesh.position.x, z: rp.mesh.position.z };
const drop = color === "red" ? CTF.redDrop : CTF.blueDrop;
if (drop) return { x: droM
const home = color === "red" ? CTF.redHome : CTF.blueHome;
if (home) return { x: home.x, z: home.z };
if (gameMode === "ctf") {
const rf = flagWorld("red");
if (rf) drawDot(worldToRadar(rf.x, rf.z), "#ff8888", 3);
const bf = flagWorld("blue");
if (bf) drawDot(worldToRadar(bf.x, bf.z), "#88bbff", 3);
checkpointStars.forEach((cp, i) => {
worldToRadar(cp.mesh.position.x, cp.mesh.position.z),
myCompletedCheckpoints.has(i) ? "#2f2" : "#ff0",
worldToRadar(flagPoleMesh.position.x, flagPoleMesh.position.z),
if (flagHolder === myPlayerID) {
} else if (flagHolder) {
const rp = remotePlayers.get(flagHolder);
if (rp && rp.mesh) {
fx = rp.mesh.position.x;
fz = rp.mesh.position.z;
} else if (droppedFlagPos) {
fx = droppedFlagPos.x;
fz = droppedFlagPos.z;
} else if (flagHomePos) {
if (fx != null) drawDot(worldToRadar(fx, fz), "M
ctx.arc(cx, cy, 4, 0, Math.PI * 2);
ctx.fillStyle = "#0f0";
ctx.moveTo(cx, cy - R + 2);
ctx.lineTo(cx - 4, cy - R + 10);
ctx.lineTo(cx + 4, cy - R + 10);
ctx.fillStyle = "#0ff";
function toggleTeam() {
if (gameMode !== "ctf" || !gameStarted) return;
if (isHoldingAnyFlag()) {
const teamEl = document.getElementById("ctfTeamLine");
teamEl.textContent = "Can't switch team while holding a flag!";
am === "red" ? "blue" : "red";
if (minionRoot) attachNameTag(minionRoot, myPlayerID, true, myTeam);
function makeCtfFlagMesh(color, emissive) {
const mesh = new THREE.Mesh(
new THREE.PlaneGeometry(22, 16),
new THREE.MeshPhongMaterial({
side: THREE.DoubleSide,
emissiveIntensity: 3,
function makeCtfPole(color) {
return new THREE.Mesh(
new THREE.CylinderGeometry(2.2, 2.2, 240, 8),
emissiveIntensity: 1.5,
function clearCtfObjects() {
["redPole", "bluePole", "redFlagMesh", "blueFlagMesh", "heldRedMesh", "heldBlueMesh"].forEach(
if (m.parent) m.parent.remove(m);
CTF.redHolder = CTF.blueHolder = null;
CTF.redDrop = CTF.blueDrop = null;
CTF.redHome = CTF.blueHome = null;
function setupCtfBases() {
const def = MAP_DEFS[currentMapId] || {};
let redX, redZ, blueX, blueZ;
if (def.chaosArena || def.squareWall) {
const h = (def.outerRadiusOverride || chaosWallRadius || 1400) * 0.9;
const baseR = OUTER_RADIUS * 0.88;
const redTerrain = getTerrainHeight(redX, redZ);
const blueTerrain = getTerrainHeight(blueX, blueZ);
const redY = redTerrain + poleH / 2;
const blueY = blueTerrain + poleH / 2;
CTF.redHome = new THREE.Vector3(redX, redTerrain + poleH M
CTF.blueHome = new THREE.Vector3(blueX, blueTerrain + poleH + 8, blueZ);
CTF.redPole = makeCtfPole(0xff2222);
CTF.redPole.position.set(redX, redY, redZ);
scene.add(CTF.redPole);
CTF.bluePole = makeCtfPole(0x2266ff);
CTF.bluePole.position.set(blueX, blueY, blueZ);
scene.add(CTF.bluePole);
CTF.redFlagMesh = makeCtfFlagMesh(0xff3333, 0xff0000);
CTF.redFlagMesh.position.copy(CTF.redHome);
scene.add(CTF.redFlagMesh);
CTF.blueFlagMesh = makeCtfFlagMesh(0x3388ff, 0x0044ff);
CTF.blueFlagMesh.position.copy(CTF.bM
scene.add(CTF.blueFlagMesh);
CTF.heldRedMesh = makeCtfFlagMesh(0xff3333, 0xff0000);
CTF.heldRedMesh.visible = false;
CTF.heldBlueMesh = makeCtfFlagMesh(0x3388ff, 0x0044ff);
CTF.heldBlueMesh.visible = false;
CTF.redHolder = null;
CTF.blueHolder = null;
CTF.blueDrop = null;
teamScores = { red: 0, blue: 0 };
async function buildChaosScatterProps() {
const def = MAP_DEFS[currentMapId] || {};
if (!def.chaosArena || !def.scatterModels || !def.scatterModels.length)
const count = def.scatterCount || 20;
const nearFlag = def.scatterNearFlag || 4;
for (const id of ids) {
const root = await loadGltfById(id);
if (root) cache[id] = root;
const loaded = ids.filter((id) => cache[id]);
if (!loaded.length) return;
const h = (def.outerRadiusOverride || chaosWallRadius || 1400) * 0.9;
const placeOne = (i, cornerX, cornerZ, tMin, tMax, latSpread) => {
const id = loaded[i % loaded.length];
const src = cache[id];
t clone = src.clone(true);
const n = Math.max(1, count - 1);
const t = tMin + ((i % 20) / 19) * (tMax - tMin);
const side = i % 2 === 0 ? 1 : -1;
side * latSpread * (0.25 + ((i * 7) % 10) / 10) * h;
const alongX = cornerX * (1 - t);
const alongZ = cornerZ * (1 - t);
const x = alongX + lat * (cornerZ !== 0 ? Math.sign(cornerZ) || 1 : 1) * 0.55;
const z = alongZ - lat * (cornerX !== 0 ? Math.sign(cornerX) || 1 : 1) * 0.55;
const y = getTerrainHeight(x, z);
const s = 18 + (i % 3) * 6;
clone.position.set(x,M
clone.scale.set(s, s, s);
clone.rotation.y = (i * 0.97) % (Math.PI * 2);
clone.traverse((ch) => {
if (ch.isMesh && ch.geometry) {
ch.castShadow = true;
ch.receiveShadow = true;
ch.raycast = THREE.Mesh.prototype.raycast;
chaosRayMeshes.push(ch);
mapObstacleList.push(clone);
for (let i = 0; i < count; i++) {
placeOne(i, -h, -h, 0.1, 0.55, 0.42);
for (let i = 0; i < nearFlag; i++) {
placeOne(count + i, h, h, 0.08, 0.28, 0.3);
function updateCtfFlagVisual() {
if (gameMode !== "cM
if (CTF.redFlagMesh) {
if (CTF.redHolder) {
CTF.redFlagMesh.visible = false;
CTF.redFlagMesh.visible = true;
CTF.redFlagMesh.position.copy(
CTF.redDrop || CTF.redHome || new THREE.Vector3()
if (CTF.blueFlagMesh) {
if (CTF.blueHolder) {
CTF.blueFlagMesh.visible = false;
CTF.blueFlagMesh.visible = true;
CTF.blueFlagMesh.position.copy(
CTF.blueDrop || CTF.blueHome || new THREE.Vector3()
const attachHeld = (holderId, mesh) => {
if (mesh.parent) mesh.parentM
mesh.visible = false;
if (!holderId) return;
if (holderId === myPlayerID && cart) {
mesh.position.set(0, 20, 0);
mesh.visible = true;
const remote = remotePlayers.get(holderId);
if (remote && remote.mesh) {
remote.mesh.add(mesh);
mesh.position.set(0, 20, 0);
mesh.visible = true;
attachHeld(CTF.redHolder, CTF.heldRedMesh);
attachHeld(CTF.blueHolder, CTF.heldBlueMesh);
function dropCtfFlag(color, pos) {
const drop = pos.clone
EE.Vector3(pos.x, pos.y, pos.z);
drop.y = getTerrainHeight(drop.x, drop.z) + 14;
if (color === "red") {
if (CTF.redHolder !== myPlayerID) return;
CTF.redHolder = null;
if (CTF.blueHolder !== myPlayerID) return;
CTF.blueHolder = null;
CTF.blueDrop = drop;
consecutiveFreezeHits = 0;
broadcastCtfFlags();
updateCtfFlagVisual();
function ctfReturnFlagHome(color) {
if (color === "red") {
CTF.redHolder = null;
CTF.blueHolder = null;
CTF.blueDrop = null;
updateCtfFlagVisual();
function ctfScore(scoringTeam) {
teamScores[scoringTeam] = (teamScores[scoringTeam] || 0) + 1;
CTF.redHolder = null;
CTF.blueHolder = null;
CTF.blueDrop = null;
consecutiveFreezeHits = 0;
broadcastCtfFlags();
updateCtfFlagVisual();
function horizDist(a, b) {
if (!a || !b) return Infinity;
return Math.hypot(a.x - b.x, a.z - b.z);
function updateCtfGameplay() {
if (gameMode !== "ctf" || !controlsEnabled || paused) retM
myTeam = assignBalancedTeam();
if (minionRoot) attachNameTag(minionRoot, myPlayerID, true, myTeam);
const enemy = myTeam === "red" ? "blue" : "red";
const myHome = myTeam === "red" ? CTF.redHome : CTF.blueHome;
if (!myHome) return;
const PICKUP_R = 90;
const tryPickup = (color) => {
const holderKey = color + "Holder";
const dropKey = color + "Drop";
const homeKey = color + "Home";
if (CTF[holderKey]) return;
const isOwn = color === myTeam;
if (isOwn && !CTF[dropKey]) returnM
let target = CTF[dropKey] || CTF[homeKey];
const pole = color === "red" ? CTF.redPole : CTF.bluePole;
if (pole) target = pole.position;
if (!target) return;
if (horizDist(car.pos, target) < PICKUP_R) {
CTF[holderKey] = myPlayerID;
CTF[dropKey] = null;
consecutiveFreezeHits = 0;
broadcastCtfFlags();
updateCtfFlagVisual();
if (horizDist(car.pos, myHome) < SCORE_R) {
(enemy === "red" && CTF.redHolder === myPlayerID) ||
(enemy === "blue" && CTF.blueHoldeM
(myTeam === "red" && CTF.redHolder === myPlayerID) ||
(myTeam === "blue" && CTF.blueHolder === myPlayerID)
ctfReturnFlagHome(myTeam);
function clearMapObstacles() {
mapObstacleList.forEach((m) => {
if (m && m.parent) m.parent.remove(m);
if (m) scene.remove(m);
mapObstacleList = [];
colliders = colliders.filter((c) => !c.userData || !c.userData.isMapObstacle);
mapExtraColliders.forEach((c) => {
mapExtraColliders = [];
chaosRayMeshes = [];
const CHAOS_ASSETS = {
"g1": "e4d98b1238facb936f24c57298b425869bf343c134fea33d862c57b4744efd42i0",
"g2": "16957e91d9a75779ae558998cf1b98ef1258095c94fad8cb5ea8802b1e80d7b2i0",
"g3": "cefc55835b4fc10e9ba5c3f09e634cad0705b2c7f108deed84dccff03e03770di0",
"g4": "cf7b3a7b98ddad94c30376e7cb17bd80857b8798f0e20831d577feeae8cdc9b1i0",
"g5": "95d9f6d66ec84350564763dc5548884f52014adc9fae5860fca2a5bc75605deai0",
"g6": "c8c0afdb0b9a9aea005a8a8af22bb20324142bead8260e8010f60a00cfd39fe9i0",
f68f7c49e947e24f856d9fb15c3b6deefc1268cac684dfe8fb91f10207ea0i0",
"g8": "fd5978542b711ba43291cdc2848ddb0718d45dcb78b7d655251ca1631d71e6e2i0",
"g9": "6af953644a88540bbe38a530b74230cb1609e959fa2fe7f9b1b35c8080040e32i0",
"g10": "65bad87eb0729155597669897813b6e0ee83191afd240e5e7e3e8876b94c8c43i0",
"g11": "90658ebdd8972a2ac111c873fd0a581e786e93a7a2df50a3701c64d1d0305084i0",
"g12": "171c26e24b94e11fc8dfae620173179ff43fa41674685721464ca28d658ed138i0",
"g13": "792d4855c5d73c501584dcfd14a7a4301b373b4ee6dae3fa5546e216239a680M
const CHAOS_PLACEMENTS = [{"a": "g1", "p": [-22.5, 19.791, -14.0], "s": [0.5, 0.5, 0.5], "r": [0.0, 0.0, 0.0]}, {"a": "g2", "p": [34.0, 0.509, 29.0], "s": [0.2, 0.05, 0.2], "r": [0.0, 0.0, 0.0]}, {"a": "g2", "p": [-65.5, 0.509, 35.0], "s": [0.2, 0.05, 0.2], "r": [0.0, 0.0, 0.0]}, {"a": "g2", "p": [-103.5, 0.509, -127.0], "s": [0.5, 0.05, 0.5], "r": [0.0, 0.0, 0.0]}, {"a": "g3", "p": [-131.5, 1.509, -118.5], "s": [4.0, 2.0, 6.0], "r": [0.0, 0.0, 0.0]}, {"a": "g3", "p": [-135.5, 1.509, -155.0], "s": [4.0, 2.0M
, 6.0], "r": [180.0, 0.0, 180.0]}, {"a": "g4", "p": [0.0, 0.0, 0.0], "s": [20.0, 20.0, 20.0], "r": [0.0, 0.0, 0.0]}, {"a": "g3", "p": [-131.5, 24.009, -118.5], "s": [4.0, 2.0, 3.0], "r": [0.0, 0.0, 0.0]}, {"a": "g3", "p": [-135.5, 24.009, -155.0], "s": [4.0, 2.0, 3.0], "r": [180.0, 0.0, 180.0]}, {"a": "g5", "p": [-99.0, 5.509, -136.69], "s": [2.0, 6.7, 0.5], "r": [0.0, -90.0, 0.0]}, {"a": "g5", "p": [-169.5, 3.009, -136.69], "s": [2.0, 7.0, 0.5], "r": [0.0, -90.0, 0.0]}, {"a": "g6", "p": [-84.491, 27.109, -36.85], M
"s": [7.0, 2.5, 2.0], "r": [-2.33, -19.87, 20.38]}, {"a": "g1", "p": [-110.802, 7.941, -36.628], "s": [0.5, 0.2, 0.5], "r": [0.0, -80.0, 0.0]}, {"a": "g7", "p": [-106.866, 15.659, -46.487], "s": [5.84, 2.84, 4.5], "r": [0.0, -12.0, 0.0]}, {"a": "g1", "p": [-123.5, 7.341, -72.5], "s": [0.15, 0.1, 0.15], "r": [0.0, -80.0, 0.0]}, {"a": "g1", "p": [-119.0, 10.341, -65.0], "s": [0.15, 0.1, 0.15], "r": [180.0, -70.0, 180.0]}, {"a": "g2", "p": [62.0, 0.509, -18.5], "s": [0.2, 0.02, 0.2], "r": [0.0, 0.0, 0.0]}, {"a": "g2",M
 "p": [1.5, 0.509, -232.5], "s": [0.3, 0.05, 0.2], "r": [180.0, -15.0, 180.0]}, {"a": "g8", "p": [58.0, 30.509, -125.0], "s": [1.25, 1.25, 1.25], "r": [0.0, 0.0, 0.0]}, {"a": "g9", "p": [-133.5, 24.509, -117.5], "s": [2.0, 2.0, 2.0], "r": [0.0, 0.0, 0.0]}, {"a": "g10", "p": [-133.5, 24.209, -157.5], "s": [2.0, 2.0, 2.0], "r": [180.0, 0.0, 180.0]}, {"a": "g11", "p": [-134.0, 2.009, -162.5], "s": [2.0, 2.0, 2.0], "r": [180.0, 0.0, 180.0]}, {"a": "g6", "p": [47.5, 1.109, 24.0], "s": [7.5, 2.5, 2.0], "r": [0.0, -36.0, M
0.0]}, {"a": "g10", "p": [141.5, 1.109, 86.0], "s": [30.0, 30.0, 30.0], "r": [180.0, -60.0, 180.0]}, {"a": "g6", "p": [128.0, 19.259, 77.0], "s": [7.5, 2.5, 2.0], "r": [18.78, -26.86, -34.02]}, {"a": "g6", "p": [114.05, 42.209, 61.0], "s": [2.25, 2.5, 2.0], "r": [-22.2, -27.38, 34.34]}, {"a": "g6", "p": [-170.5, 6.609, -136.5], "s": [5.0, 2.5, 2.0], "r": [0.0, -90.0, 0.0]}, {"a": "g6", "p": [-95.0, 6.609, -136.5], "s": [5.0, 2.5, 2.0], "r": [0.0, -90.0, 0.0]}, {"a": "g12", "p": [5.5, 7.509, -237.5], "s": [5.0, 5.0,M
 5.0], "r": [0.0, 0.0, 0.0]}, {"a": "g12", "p": [1.5, 8.009, -232.5], "s": [7.0, 7.0, 7.0], "r": [0.0, 0.0, 0.0]}, {"a": "g13", "p": [11.0, 5.859, -232.5], "s": [3.0, 3.0, 3.0], "r": [0.0, 0.0, 0.0]}, {"a": "g13", "p": [10.635, 5.859, -235.782], "s": [3.0, 3.0, 3.0], "r": [0.0, 0.0, 0.0]}, {"a": "g13", "p": [-2.726, 5.859, -242.041], "s": [3.0, 3.0, 3.0], "r": [0.0, 0.0, 0.0]}, {"a": "g13", "p": [5.72, 4.859, -221.727], "s": [5.0, 4.0, 5.0], "r": [0.0, 0.0, 0.0]}, {"a": "g13", "p": [7.441, 5.359, -254.279], "s": [4M
.0, 5.0, 4.0], "r": [0.0, 0.0, 0.0]}, {"a": "g13", "p": [24.353, 4.209, -238.269], "s": [3.0, 3.0, 3.0], "r": [0.0, 0.0, 0.0]}, {"a": "g13", "p": [21.902, 3.059, -258.773], "s": [3.0, 3.0, 3.0], "r": [0.0, 0.0, 0.0]}, {"a": "g13", "p": [-4.246, 5.359, -259.132], "s": [3.0, 3.0, 3.0], "r": [0.0, 0.0, 0.0]}, {"a": "g13", "p": [-16.454, 4.559, -239.322], "s": [5.0, 4.0, 5.0], "r": [0.0, 0.0, 0.0]}, {"a": "g13", "p": [11.746, 2.659, -214.211], "s": [3.0, 3.0, 3.0], "r": [0.0, 0.0, 0.0]}, {"a": "g13", "p": [30.992, 2.65M
9, -227.279], "s": [6.0, 3.0, 6.0], "r": [0.0, 0.0, 0.0]}, {"a": "g12", "p": [17.472, 5.859, -247.923], "s": [5.0, 5.0, 5.0], "r": [0.0, 0.0, 0.0]}, {"a": "g12", "p": [33.975, 5.009, -252.125], "s": [7.0, 5.0, 7.0], "r": [0.0, 0.0, 0.0]}, {"a": "g12", "p": [-4.584, 5.009, -212.767], "s": [5.0, 5.0, 5.0], "r": [0.0, 0.0, 0.0]}, {"a": "g12", "p": [-17.54, 5.359, -254.981], "s": [3.0, 3.0, 3.0], "r": [0.0, 0.0, 0.0]}, {"a": "g12", "p": [18.902, 6.109, -233.902], "s": [5.0, 5.0, 5.0], "r": [0.0, 0.0, 0.0]}, {"a": "g12"M
, "p": [20.199, 4.759, -226.115], "s": [5.0, 5.0, 5.0], "r": [0.0, 0.0, 0.0]}, {"a": "g12", "p": [2.62, 6.809, -249.034], "s": [8.0, 5.0, 8.0], "r": [0.0, 0.0, 0.0]}, {"a": "g2", "p": [82.5, 0.509, 56.0], "s": [0.3, 0.0499, 0.1999], "r": [180.0, 30.0, 180.0]}, {"a": "g1", "p": [85.382, 2.291, 5.608], "s": [0.5, 0.059, 0.5], "r": [0.0, 87.0, 0.0]}, {"a": "g7", "p": [79.59, 3.459, 14.253], "s": [5.84, 2.84, 4.5], "r": [0.0, -12.0, 0.0]}, {"a": "g1", "p": [65.5, 2.291, 51.0], "s": [0.5, 0.07, 0.5], "r": [0.0, 57.0, 0.M
0]}, {"a": "g7", "p": [57.0, 3.459, 54.0], "s": [5.84, 2.84, 4.5], "r": [0.0, -12.0, 0.0]}, {"a": "g1", "p": [-58.0, 2.291, -211.5], "s": [0.5, 0.059, 0.5], "r": [0.0, 87.0, 0.0]}, {"a": "g7", "p": [-63.5, 3.459, -201.0], "s": [5.84, 2.84, 4.5], "r": [0.0, -12.0, 0.0]}, {"a": "g1", "p": [-32.0, 2.291, -223.5], "s": [0.5, 0.059, 0.5], "r": [0.0, -48.0, 0.0]}, {"a": "g7", "p": [-34.0, 3.459, -234.0], "s": [5.84, 2.84, 4.5], "r": [0.0, 33.0, 0.0]}, {"a": "g1", "p": [8.5, 2.291, -230.5], "s": [0.5, 0.059, 0.5], "r": [0M
.0, -48.0, 0.0]}, {"a": "g7", "p": [-31.5, 42.159, -19.2], "s": [4.0, 2.84, 6.5], "r": [0.0, -16.0, 0.0]}, {"a": "g1", "p": [-81.0, 2.291, -157.5], "s": [0.5, 0.059, 0.5], "r": [0.0, -70.0, 0.0]}, {"a": "g1", "p": [-85.0, 2.291, -135.5], "s": [0.5, 0.059, 0.5], "r": [0.0, -70.0, 0.0]}, {"a": "g1", "p": [-64.0, 2.291, -133.5], "s": [0.5, 0.059, 0.5], "r": [0.0, -70.0, 0.0]}];
const CHAOS_ORIGIN = { x: -24.367, z: -131.110 };
const CHAOS_SCALE = 15.6;
let chaosWallRadius = 1400;
let chaosRayMeshes = [];
ycaster = new THREE.Raycaster();
const chaosRayOrigin = new THREE.Vector3();
const chaosRayDir = new THREE.Vector3(0, -1, 0);
function getDriveSurfaceHeight(x, z, hintY) {
const floorY = getTerrainHeight(x, z);
if (!chaosRayMeshes.length) return floorY;
hintY != null && isFinite(hintY) ? hintY + 40 : floorY + 200;
chaosRayOrigin.set(x, startY, z);
chaosRaycaster.set(chaosRayOrigin, chaosRayDir);
chaosRaycaster.far = 500;
let hits = chaosRaycaster.intersectObjects(chaosRayMeshes, false);
for (let i = 0; i < hits.length; i++) {
const hy = hits[i].point.y;
if (hy <= startY + 2) return Math.max(hy, floorY);
return Math.max(hits[0].point.y, floorY);
chaosRayOrigin.set(x, 8000, z);
chaosRaycaster.far = 20000;
hits = chaosRaycaster.intersectObjects(chaosRayMeshes, false);
if (hits.length) return Math.max(hits[0].point.y, floorY);
async function buildChaosArena() {
clearMapObstacles();
chaosRayMeshes = [];
const castleTex = await loadTextureM
ById("7070c3300760fcbd1764b1daed9ed20717363e02d861ebd5f34658848e6df642i0");
const castleMat = castleTex
? new THREE.MeshStandardMaterial({
side: THREE.DoubleSide,
polygonOffset: true,
polygonOffsetFactor: 1,
polygonOffsetUnits: 1,
const castleKeys = { g3: 1, g5: 1, g6: 1, g12: 1, g13: 1 };
for (const [key, id] of Object.entries(CHAOS_ASSETS)) {
if (key === 'g4') continue;
const sceneRoot = awaitM
if (sceneRoot) cache[key] = sceneRoot;
const S = CHAOS_SCALE;
CHAOS_PLACEMENTS.forEach((pl) => {
if (pl.a === "g4") return;
Math.abs(pl.s[0] - pl.s[1]) < 0.05 &&
Math.abs(pl.s[1] - pl.s[2]) < 0.05
const src = cache[pl.a];
const clone = src.clone(true);
const x = (pl.p[0] - CHAOS_ORIGIN.x) * S;
const z = (pl.p[2] - CHAOS_ORIGIN.z) * S;
const y = pl.p[1] * S;
clone.position.set(x, y, z);
(pl.s[0] * S, pl.s[1] * S, pl.s[2] * S);
clone.rotation.order = 'YXZ';
(pl.r[0] * Math.PI) / 180,
(pl.r[1] * Math.PI) / 180,
(pl.r[2] * Math.PI) / 180
clone.traverse((ch) => {
if (ch.isMesh && ch.geometry) {
ch.castShadow = true;
ch.receiveShadow = true;
if (castleMat && castleKeys[pl.a]) ch.material = castleMat;
ch.raycast = THREE.Mesh.prototype.raycast;
chaosRayMeshes.push(ch);
mapObstacleList.push(clone);
clone.updateMatrixWorld(true);
const box = new THREE.Box3().sM
etFromObject(clone);
if (!box.isEmpty()) {
[box.min.x, box.min.z],
[box.min.x, box.max.z],
[box.max.x, box.min.z],
[box.max.x, box.max.z],
corners.forEach(([cx, cz]) => {
const r = Math.hypot(cx, cz);
if (r > maxR) maxR = r;
if (pl.a === 'g7') {
pos: new THREE.Vector3(x, y, z),
fromChaosProp: true,
const fullR = Math.max(2200, maxR * 1.05 + 80);
chaosWallRadius = fullR * 0.5 * 1.1;
if (MAP_DEFS['map-3']) {
FS['map-3'].outerRadiusOverride = chaosWallRadius;
MAP_DEFS['map-3'].squareWall = true;
const half = chaosWallRadius * 0.98;
for (let i = mapObstacleList.length - 1; i >= 0; i--) {
const o = mapObstacleList[i];
if (!o || !o.position) continue;
if (Math.max(Math.abs(o.position.x), Math.abs(o.position.z)) <= half) continue;
mapObstacleList.splice(i, 1);
chaosRayMeshes = chaosRayMeshes.filter((m) => {
while (n && n !== o) n = n.parent;
lavaPatches = lavaPatches.filter(M
(lp) => lp.mesh !== o);
function buildSquareOuterWall(half, wallTex) {
if (!wallTex) return;
wallTex.flipY = false;
const originalWallLength = 1;
const originalWallHeight = 23;
const originalWallThickness = 2;
const perSide = 100;
const finePoints = [];
for (let s = 0; s < 4; s++) {
const x0 = corners[s][0],
const x1 = corners[s + 1][0],
z1 = corners[s + 1][1];
for (let i = 0; i < perSide; i++) {
const t = i / perSide;
const x = x0 + (x1 - x0) * t;
const z = z0 + (z1 - z0) * t;
new THREE.Vector3(x, getTerrainHeight(x, z), z)
finePoints.push(finePoints[0].clone());
let segmentIndices = [0];
const tolerance = 0.4;
for (let i = 2; i < finePoints.length; i++) {
const p0 = finePoints[lastIdx];
const pi = finePoints[i];
const len = pi.distanceTo(p0);
segmentIndices.push(i - 1);
const norm = vec.clone().normalize();
for (let j = lastIdx + 1; j < i; j++) {
const pj = finePoints[j];
const sub = pj.clone().sub(p0);
const tt = sub.dot(norm);
const proj = p0.clone().addScaledVector(norm, tt);
const dev = pj.distanceTo(proj);
if (dev > maxDev) maxDev = dev;
if (maxDev > tolerance) {
segmentIndices.push(i - 1);
if (segmentIndices[segmentIndices.length - 1] !== 0)
segmentIndices.push(0);
for (let k = 0; k < segmentIndices.length - 1; k++) {
const idx2 = segmentIndices[k + 1];
const p1 = finePoints[idx1];
const p2 = finePoints[idx2];
const mid = p1.clone().add(p2).multiplyScalar(0.5);
const vec = p2.clone().sub(p1);
const length = vec.length();
if (length < 0.5) continue;
const dir = vec.clone().normalize();
const rotY = Math.atan2(dir.x, dir.z) + Math.PI / 2;
const material = new THREE.MeshStandardMaterial({
const def = MAP_DEFS[currentMapId] || {};
const wallRepY = def.wallRepeatM
Y != null ? def.wallRepeatY : 4;
material.map.repeat.set(1, wallRepY);
material.map.wrapS = material.map.wrapT = THREE.RepeatWrapping;
material.needsUpdate = true;
const wall = new THREE.Mesh(
new THREE.BoxGeometry(
originalWallThickness
wall.castShadow = true;
wall.receiveShadow = true;
wall.scale.set(length / originalWallLength, 1.0, 1.0);
wall.position.copy(mid);
wall.position.y += originalWallHeight / 2.5;
wall.rotation.y = rotY;
wall.userData.isMapWall =M
wallMeshList.push(wall);
const numCols = Math.max(1, Math.ceil(length / COL_SEGMENT_LEN));
for (let s = 0; s < numCols; s++) {
let t1 = s / numCols;
let t2 = (s + 1) / numCols;
s === 0 || s === numCols - 1 ? SHRINK_ENDS_BY : EXTRA_MARGIN;
t1 += shrink / length;
t2 -= shrink / length;
if (t1 >= t2) continue;
const subP1 = p1.clone().lerp(p2, t1);
const subP2 = p1.clone().lerp(p2, t2);
const subMid = subP1.clone().add(subP2).multiplyScalar(0.5);
const colWidth = subP1.distanceToM
const collider = new THREE.Mesh(
new THREE.BoxGeometry(
originalWallThickness
new THREE.MeshBasicMaterial({ visible: false })
collider.position.copy(subMid);
collider.position.y += originalWallHeight / 2.5;
collider.rotation.y = rotY;
const wallNormal = new THREE.Vector3(dir.z, 0, -dir.x).normalize();
collider.userData = {
wallDir: dir.clone(),
scene.add(collider);
colliders.push(collider);
function getSpawnPos() {
FS[currentMapId] || {};
if (def.chaosArena) {
let hump = JUMP_HUMPS[0];
for (let i = 1; i < JUMP_HUMPS.length; i++) {
if (JUMP_HUMPS[i].height > hump.height) hump = JUMP_HUMPS[i];
let y = getDriveSurfaceHeight(x, z, 400);
if (typeof solidBoxes !== "undefined" && solidBoxes) {
for (let i = 0; i < solidBoxes.length; i++) {
const b = solidBoxes[i];
const hxz = b.halfXZ !== undefined ? b.halfXZ : b.half;
const hy = b.halfY !== undefined ? b.halfY : b.half;
s(x - b.x) <= hxz && Math.abs(z - b.z) <= hxz) {
y = Math.max(y, b.y + hy);
return new THREE.Vector3(x, y + 0.06, z);
function clearInnerWalls() {
for (let i = wallMeshList.length - 1; i >= 0; i--) {
const w = wallMeshList[i];
if (w.userData && w.userData.isInnerWall) {
wallMeshList.splice(i, 1);
colliders = colliders.filter(
(c) => !(c.userData && c.userData.isInnerWall)
async function loadTextureById(id) {
if (texUrlBlocked(id)) return null;
return new Promise((resolve) => {
THREE.TextureLoader().load(
tex.wrapS = tex.wrapT = THREE.RepeatWrapping;
if (THREE.SRGBColorSpace) tex.colorSpace = THREE.SRGBColorSpace;
else if (THREE.sRGBEncoding) tex.encoding = THREE.sRGBEncoding;
tex.needsUpdate = true;
async function loadGltfById(id) {
return new Promise((resolve) => {
new GLTFLoader().load(
const root = gltf.scene;
root.traverse((ch) => {
(!ch.isMesh) return;
const mats = [].concat(ch.material || []);
const blocked = mats.some((m) => {
const maps = [m && m.map, m && m.envMap, m && m.emissiveMap];
return maps.some((tex) => {
(tex && tex.userData && tex.userData.url) ||
(tex && tex.image && tex.image.currentSrc) ||
(tex && tex.image && tex.image.src) ||
return texUrlBlocked(src);
const box = ch.geometry && ch.geometry.boundingBox;
if (ch.geometry && !ch.geometry.boundingBox && ch.geometry.computeBoundingBox)
ch.geometry.computeM
const g = ch.geometry && ch.geometry.type;
if (blocked || (g && /sphere/i.test(g) && texUrlBlocked(id)))
drop.forEach((ch) => {
if (ch.parent) ch.parent.remove(ch);
async function buildMap2Cubes(def) {
clearMapObstacles();
const model = await loadGltfById(def.cubeModelId);
const tex = await loadTextureById(def.cubeTexId);
tex.wrapS = tex.wrapT = THREE.RepeatWrappingM
if (THREE.SRGBColorSpace) tex.colorSpace = THREE.SRGBColorSpace;
tex.needsUpdate = true;
const cubeMat = new THREE.MeshStandardMaterial({
color: tex ? 0xffffff : 0xcc8844,
model.traverse((ch) => {
ch.material = cubeMat;
ch.castShadow = true;
ch.receiveShadow = true;
const CUBE_SCALE_XZ = def.cubeScaleXZ != null ? def.cubeScaleXZ : 86.4;
const CUBE_SCALE_Y = def.cubeScaleY != null ? def.cubeScaleY : 69.12;
const TARGET_CUBES = def.cubM
eCount != null ? def.cubeCount : 100;
const positions = [];
const span = OUTER_RADIUS * 0.88;
for (let ix = 0; ix < gridN; ix++) {
for (let iz = 0; iz < gridN; iz++) {
if ((ix + iz) % 2 !== 0) continue;
const x = -span + (ix + 0.5) * ((2 * span) / gridN);
const z = -span + (iz + 0.5) * ((2 * span) / gridN);
const r = Math.hypot(x, z);
if (r > OUTER_RADIUS - 120) continue;
let nearMountain = false;
for (const hump of JUMP_HUMPS) {
if (Math.hypot(x - hump.cx, z - hump.cz) < hump.radius * 1.5) {
if (nearMountain) continue;
positions.push({ x, z });
const step = Math.max(1, Math.floor(positions.length / TARGET_CUBES));
const probe = model.clone(true);
probe.scale.set(CUBE_SCALE_XZ, CUBE_SCALE_Y, CUBE_SCALE_XZ);
probe.position.set(0, 0, 0);
probe.updateMatrixWorld(true);
const probeBox = new THREE.Box3().setFromObject(probe);
const probeSize = probeBox.getSize(new THREE.Vector3());
const cubeTops = [];
const cubeMeshes = [];
const cubeBoxIdx = [];
0; i < positions.length && placed < TARGET_CUBES; i += step) {
const { x, z } = positions[i];
const groundY = getTerrainHeight(x, z);
const cy = groundY - probeBox.min.y;
const cube = model.clone(true);
cube.scale.set(CUBE_SCALE_XZ, CUBE_SCALE_Y, CUBE_SCALE_XZ);
cube.position.set(x, cy, z);
cube.updateMatrixWorld(true);
cube.traverse((ch) => {
ch.castShadow = true;
ch.receiveShadow = true;
mapObstacleList.push(cube);
cubeMeshes.push(cube);
const wb = new THREE.Box3().setFromOM
const center = wb.getCenter(new THREE.Vector3());
const size = wb.getSize(new THREE.Vector3());
cubeBoxIdx.push(solidBoxes.length);
halfXZ: Math.max(size.x, size.z) * 0.5 * 0.98,
halfY: size.y * 0.5 * 0.98,
half: Math.max(size.x, size.z) * 0.5 * 0.98,
halfXZ: Math.max(size.x, size.z) * 0.5,
if (cubeTops.length) {
let minTop = Infinity;
for (let i = 0; i < cubeTops.length; M
if (cubeTops[i].y < minTop) minTop = cubeTops[i].y;
for (let i = 0; i < cubeTops.length; i++) {
const drop = cubeTops[i].y - minTop;
if (drop <= 0.001) continue;
cubeMeshes[i].position.y -= drop;
cubeMeshes[i].updateMatrixWorld(true);
const bi = cubeBoxIdx[i];
if (solidBoxes[bi]) solidBoxes[bi].y -= drop;
cubeTops[i].y = minTop;
if (def.bridgeModelId && cubeTops.length >= 2) {
await buildCubeBridges(def, cubeTops, tex);
async function buildCubeBridges(def, cubeTops, cubeTex) {
let bridgeSrc = null;M
bridgeSrc = await loadGltfById(def.bridgeModelId);
let bridgeAxis = "z";
const pb = new THREE.Box3().setFromObject(bridgeSrc);
const ps = pb.getSize(new THREE.Vector3());
if (ps.x >= ps.z && ps.x >= ps.y) {
bridgeLen = Math.max(0.01, ps.x);
} else if (ps.z >= ps.x && ps.z >= ps.y) {
bridgeLen = Math.max(0.01, ps.z);
bridgeLen = Math.max(0.01, ps.x, ps.z);
bridgeAxis = ps.x >= ps.z ? "x" : "z";
const t = cubeTex.clone();
t.wrapS = t.wrapT = THREE.RepeatWrapping;
t.needsUpdate = true;
bridgeMat = new THREE.MeshStandardMaterial({
const n = cubeTops.length;
for (let i = 0; i < n; i++) {
let best = Infinity;
for (let j = 0; j < n; j++) {
if (i === j) continue;
const d = Math.hypot(
cubeTops[i].x - cubeTops[j].x,
cubeTops[i].z - cubeTops[j].z
if (d < best) best = d;
finity) nnDists.push(best);
nnDists.sort((a, b) => a - b);
nnDists.length > 0 ? nnDists[Math.floor(nnDists.length / 2)] : 200;
const maxEdge = medianNn * 1.55;
const candidates = [];
for (let i = 0; i < n; i++) {
for (let j = i + 1; j < n; j++) {
const d = Math.hypot(
cubeTops[i].x - cubeTops[j].x,
cubeTops[i].z - cubeTops[j].z
if (d >= 1 && d <= maxEdge) candidates.push({ i, j, d });
candidates.sort((a, b) => a.d - b.d);
const degree = new Array(n).fill(0);
const selected = [];
if (degree[e.i] >= 2 || degree[e.j] >= 2) continue;
for (const e of selected) {
const a = cubeTops[e.i];
const b = cubeTops[e.j];
const dx = b.x - a.x;
const dz = b.z - a.z;
const dist = Math.hypot(dx, dz);
if (dist < 1) continue;
const inset = Math.min(dist * 0.08, (a.halfXZ || 20) * 0.35);
const ux = dx / dist;
const uz = dz / dist;
const x0 = a.x + ux * inset;
const z0 = a.z + uz * inset;
const x1 = b.x - ux * inset;
const span = Math.hypot(x1 - x0, z1 - z0);
const midX = (x0 + x1) * 0.5;
const midZ = (z0 + z1) * 0.5;
const topY = (a.y + b.y) * 0.5;
const yaw = Math.atan2(x1 - x0, z1 - z0);
const pitch = Math.atan2(b.y - a.y, span);
let deckThickness = 12;
mesh = bridgeSrc.clone(true);
const scaleAlong = span / bridgeLen;
const sY = Math.min(40, Math.max(18, scaleAlong * 0.45));
const sSide = Math.min(52, Math.max(24, scaleAlong * 0.4));
if (bridgeAxis === "x") {
leAlong, sY, sSide);
mesh.rotation.order = "YXZ";
mesh.rotation.y = yaw + Math.PI / 2;
mesh.scale.set(sSide, sY, scaleAlong);
mesh.rotation.order = "YXZ";
mesh.rotation.y = yaw;
mesh.rotation.x = -pitch;
mesh.position.set(midX, topY, midZ);
mesh.updateMatrixWorld(true);
const bb = new THREE.Box3().setFromObject(mesh);
mesh.position.y += topY - bb.min.y - 5.5;
mesh = new THREE.Mesh(
new THREE.BoxGeometry(span, 12, 28),
new THREE.MeshStandardMaterial({
mesh.rotation.y = yaw + Math.PI / 2;
mesh.rotation.z = pitch;
mesh.position.set(midX, topY + 3, midZ);
mesh.traverse((ch) => {
if (bridgeMat) ch.material = bridgeMat;
ch.castShadow = true;
ch.receiveShadow = true;
ch.raycast = THREE.Mesh.prototype.raycast;
chaosRayMeshes.push(ch);
mapObstacleList.push(mesh);
const deg1 = degree.filter((d) => d === 1).length;
const deg2 = degree.filter((d) => d === 2).length;
async function rebuildWoM
const def = MAP_DEFS[mapId] || MAP_DEFS["map-2"];
currentMapId = mapId;
gameMode = def.mode || "race";
if (flagMesh) flagMesh.visible = gameMode === "race" && flagHolder === null;
if (flagPoleMesh) flagPoleMesh.visible = gameMode === "race";
if (heldFlagMesh) heldFlagMesh.visible = false;
checkpointStars.forEach((s) => {
if (s.mesh) s.mesh.visible = gameMode === "race";
let grass = coreGrassTex;
let wall = coreWallTex;
if (def.groundTexId) {
const t = await loadTextureById(def.groundTexId);
def.groundRepeat != null ? def.groundRepeat : 160;
t.repeat.set(rep, rep);
if (def.wallTexId) {
const t = await loadTextureById(def.wallTexId);
activeGrassTex = grass || coreGrassTex;
activeWallTex = wall || coreWallTex;
if (skyDome && skyDome.material) {
let sky = coreSkyTex;
const st = await loadTextureById(def.skyTexId);
st.wrapS = st.wrapT = THREE.ClampToEdgeWrapping;
if (THREE.SRGBColorSpace) st.colorSpace = THREE.SRGBColorSpacM
st.needsUpdate = true;
skyDome.material.map = sky;
skyDome.material.needsUpdate = true;
const fc = def.fogColor != null ? def.fogColor : 0x0a0c12;
const near = def.fogNear != null ? def.fogNear : 60;
const far = def.fogFar != null ? def.fogFar : 220;
scene.fog = new THREE.Fog(fc, near, far);
scene.background = new THREE.Color(fc);
if (skyDome) skyDome.visible = false;
scene.background = null;
if (skyDome) skyDome.visible = true;
activeTrackTex = null;
clearMapObstacles();
if (def.chaosArena) {
await buildChaosArena();
await buildChaosScatterProps();
buildLavaPatches(true);
scene.remove(terrainMesh);
terrainMesh.geometry.dispose();
terrainMesh.material.dispose();
if (activeGrassTex) buildTerrain(activeGrassTex);
wallMeshList.forEach((w) => scene.remove(w));
colliders = colliders.filM
(c) => !(c.userData && (c.userData.isMapWall || c.userData.isMapObstacle))
if (activeWallTex) {
const tp = getTrackParams();
if (def.chaosArena || def.squareWall) {
buildSquareOuterWall(tp.floorHalf || tp.outerRx, activeWallTex);
buildWall(tp.outerRx, activeWallTex, false);
if (def.innerWall !== false) {
buildWall(tp.innerRx, activeWallTex, true);
if (gameMode === "race") {
if (flagMesh) flagMesh.visible = flagHolder === null;
if (flagPoleMesh) flagPoleMesh.visible = true;M
clearCheckpointsAndFlag();
if (def.cubeModelId) {
await buildMap2Cubes(def);
if (gameMode === "ctf") {
lastBuiltMapId = mapId;
async function loadMapScript(mapId) {
const def = MAP_DEFS[mapId];
if (!def || !def.content) return true;
if (loadedMapScripts.has(mapId)) return true;
if (mapScriptPromises[mapId]) return mapScriptPromises[mapId];
mapScriptPromises[mapId] = new Promise((resolve) => {
const s = document.createElement("script");
s.src = def.content;
dMapScripts.add(mapId);
if (window.MAP_OVERRIDES && typeof window.MAP_OVERRIDES === "object") {
const o = window.MAP_OVERRIDES;
const keepContent = MAP_DEFS[mapId].content;
Object.assign(MAP_DEFS[mapId], o);
MAP_DEFS[mapId].content = keepContent;
if (texUrlBlocked(MAP_DEFS[mapId].skyTexId))
MAP_DEFS[mapId].skyTexId = SMALL_SKY_ID;
if (o.name) MAP_DEFS[mapId].name = o.name;
if (o.mode) MAP_DEFS[mapId].mode = o.mode;
delete window.MAP_OVERRIDES;
criptPromises[mapId];
document.head.appendChild(s);
if (!loadedMapScripts.has(mapId)) {
delete mapScriptPromises[mapId];
return mapScriptPromises[mapId];
async function startGame() {
const mapSel = document.getElementById("mapSelect");
if (mapSel) currentMapId = mapSel.value || "map-2";
const def = MAP_DEFS[currentMapId] || MAP_DEFS["map-2"];
gameMode = def.mode || "race";
document.getElementById("status").textContent =
`Loading ${def.name || cM
await loadMapScript(currentMapId);
if (lastBuiltMapId !== currentMapId) {
await rebuildWorldForMap(currentMapId);
gameMode = def.mode || "race";
if (gameMode === "ctf" && !CTF.redPole) setupCtfBases();
menuShowcaseActive = false;
document.getElementById("overlay").style.display = "none";
document.getElementById("p2p-lobby").style.display = "none";
const micBtn = document.getElementById("micBtn");
if (micBtn) micBtn.style.display = multiplayerMode ? "block" : "noneM
if (multiplayerMode) {
dcList.forEach((dc) => {
if (dc && dc.readyState === "open" && dc._peerId) ensureVoiceLink(dc._peerId);
remotePlayers.forEach((_, id) => ensureVoiceLink(id));
const pad = document.getElementById("movePad");
const phone = isPhoneUI();
if (pad) pad.style.display = phone ? "block" : "none";
const jb = document.getElementById("jumpBtn");
if (jb) jb.style.display = phone ? "flex" : "none";
cameraCycleBtn.style.display = "none";
pauseBtn.style.display = "none";
or.style.display = "block";
chatContainer.style.display = hudVisible ? "block" : "none";
controlsEnabled = true;
const canvas = document.querySelector("canvas");
if (canvas) { canvas.tabIndex = 0; try { canvas.focus(); } catch (err) {} }
if (cart) cart.visible = false;
const sp = getSpawnPos();
car.vel.set(0, 0, 0);
car.onGround = true;
scores.set(myPlayerID, 0);
playerLaps.set(myPlayerID, 0);
myCompletedCheckpoints.clear();M
droppedFlagPos = null;
consecutiveFreezeHits = 0;
hasLavaPower = false;
updateChargeMeterUI();
if (gameMode === "ctf") {
if (!myTeam) myTeam = assignBalancedTeam();
if (minionRoot) attachNameTag(minionRoot, myPlayerID, true, myTeam);
teamScores = { red: 0, blue: 0 };
CTF.redHolder = CTF.blueHolder = null;
CTF.redDrop = CTF.blueDrop = null;
broadcastCtfFlags();
updateCtfFlagVisual();
if (flagMesh) flagMesh.visible = false;
if (flagPoleMesh) flagPoleMesh.visible = M
if (flagPoleMesh) flagPoleMesh.visible = true;
camera.updateProjectionMatrix();
if (isHost && isHostWithKenobi && nostrRoomId) {
(hostOfferCodes && hostOfferCodes[0]) ||
(document.getElementById("lobbyOfferCode") &&
document.getElementById("lobbyOfferCode").textContent) ||
publishKenobiHeartbeat(offer, 1 + remotePlayers.size);
updateCursorForLobby();
requestAnimationFrame(animate);
requestAnimationFrame(animate);
if (menuShowcaseActive && showcaseModel && !gameStarted && !previewMode) {
showcaseModel.rotation.y += 0.012;
camera.position.set(0, 5.2, 14);
camera.lookAt(0, 4.6, 0);
if (!paused && gameStarted) {
updateProjectiles(dt);
updateDustParticles(dt);
minionRoot.scale.setScalar(charWorldScale(minionRoot));
minionRoot.position.copy(car.pos);
minionRoot.rotation.y = car.rotation + Math.PI;
const spd = Math.hypot(car.vel.M
padKeys.a || padKeys.d || keys["a"] || keys["d"] ||
keys["arrowleft"] || keys["arrowright"];
const back = padKeys.s || keys["s"] || keys["arrowdown"];
if (Date.now() < attackUntil) {}
else if (!car.onGround) playMinionAnim("Jump");
else if (side || back) playMinionAnim("Walk");
else if (spd > 28) playMinionAnim(minionActions.Run ? "Run" : "Walk");
else if (spd > 4) playMinionAnim("Walk");
else playMinionAnim("Idle");
minionRoot.userData &&
minionRoot.userData.actions &&
nRoot.userData.actions[minionRoot.userData.currentAnim];
if (back && !side) act.timeScale = -0.7;
else if (side) act.timeScale = 0.75;
else act.timeScale = 0.7 + Math.min(1.3, spd / 140);
if (minionMixer) minionMixer.update(dt);
if (minionRoot&&minionRoot.userData.isMutant) fixMutantPose();
if (minionRoot) applyArmSwing(minionRoot, Math.hypot(car.vel.x, car.vel.z));
} else if (minionMixer && menuShowcaseActive) {
playMinionAnim("Idle");
minionMixer.update(dt);
if (gameStarted) updateCamera();
ameStarted) updateCtfRadar();
if (flagMesh && flagHolder === null)
flagMesh.position.y =
flagPoleMesh.position.y + 120 + Math.sin(Date.now() / 200) * 4;
checkpointStars.forEach((s) => {
if (s.mixer) s.mixer.update(dt);
lavaPatches.forEach((p) => {
if (p.mixer) p.mixer.update(dt);
if (flagHolder === myPlayerID) {
for (let i = 0; i < 4; i++)
if (!myCompletedCheckpoints.has(i)) missing.push(i + 1);
cpIndicator.textContent = missing.length
? `CHECKPOINTS NEEDED: ${missing.join("
ALL CHECKPOINTS COMPLETE
cpIndicator.style.display = hudVisible ? "block" : "none";
} else cpIndicator.style.display = "none";
const elapsed = Date.now() - lastFireTime;
const progress = Math.min(100, (elapsed / getFireCooldown()) * 100);
if (chargeBar) chargeBar.style.width = `${progress}%`;
updateFlagCarryHint();
if (hasLavaPower) updateChargeMeterUI();
if (isHost && Date.now() - lastFullStateSent > CHAR_SYNC_INTERVAL)
if (multiplayerMode && dcList.length > 0) {
syncCounter = (syncCounter + 1) % 2;
if (syncCounter === 0) {
const now = Date.now();
anim: currentAnim || "Idle",
mapId: currentMapId,
slowEndTime: slowEndTime,
payload.charId = myCharId;
dcList.forEach((dc) => {
if (dc && dc.readyState === "open")
dc.send(JSON.stringify(payload));
cleanupStalePlayers();
ender(scene, camera);
function removeRemotePlayer(id) {
if (!id || id === myPlayerID) return;
const p = remotePlayers.get(id);
if (p && p.mesh) scene.remove(p.mesh);
remotePlayers.delete(id);
playerLaps.delete(id);
playerLapTimes.delete(id);
if (typeof CTF !== "undefined") {
if (CTF.redHolder === id) {
CTF.redHolder = null;
CTF.redDrop = p.mesh.position.clone();
else CTF.redDrop = car.pos.clone();
if (CTF.blueHolder === id) {
CTF.blueHolder = null;
CTF.blueDrop = p.mesh.position.clone();
else CTF.blueDrop = car.pos.clone();
if (typeof updateCtfFlagVisual === "function") updateCtfFlagVisual();
if (flagHolder === id) {
if (typeof updateFlagVisual === "function") updateFlagVisual();
updatePlayerCount();
if (isHost) updateHostPlayerList();
if (isHost && isHostWithKenobi && nostrRoomId) {
(hostOfferCodes && hostOfferCodes[0]) ||
(document.getElementById("lobbyOfferCode") &&
document.getElementByIM
d("lobbyOfferCode").textContent) ||
publishKenobiHeartbeat(offer, 1 + remotePlayers.size);
function cleanupStalePlayers() {
const now = Date.now();
remotePlayers.forEach((p, id) => {
if (id === myPlayerID) return;
const last = p.lastUpdateTime || 0;
const limit = p.isHost
? DISCONNECT_HOST_GRACE_MS
: DISCONNECT_TIMEOUT_MS;
if (last && now - last > limit) {
removeRemotePlayer(id);
for (let i = dcList.length - 1; i >= 0; i--) {
const dc = dcList[i];
if (!dc || dc.readyState === "closed" || dc.readyStateM
if (dc && dc._peerId) removeRemotePlayer(dc._peerId);
dcList.splice(i, 1);
function startNetKeepalive() {
if (netKeepaliveTimer) return;
netKeepaliveTimer = setInterval(() => {
if (!multiplayerMode || !dcList.length) return;
anim: currentAnim || "Idle",
slowEndTime: slowEndTime,
mapId: currentMapId,
const msg = JSON.stringify(payload);
dcList.forEach((dc) => {
if (dc && dc.readyState === "open") {
const pingMsg = JSON.stringify({
dcList.forEach((dc) => {
if (dc && dc.readyState === "open") {
async function applyHostMap(mapId, modeHint) {
if (!mapId || !MAP_DEFS[mapId]) return false;
entMapId === mapId &&
lastBuiltMapId === mapId &&
loadedMapScripts.has(mapId)
if (modeHint) gameMode = modeHint;
if (applyingHostMap) return applyingHostMap;
applyingHostMap = (async () => {
const sel = document.getElementById("mapSelect");
if (sel) sel.value = mapId;
currentMapId = mapId;
const def = MAP_DEFS[mapId];
if (def.content) await loadMapScript(mapId);
(MAP_DEFS[mapId] && MAP_DEFS[mapId].mode) ||
if (lastBuiltMapId !== mapId) {
await rebuildWorldFoM
} else if (gameMode === "ctf" && !CTF.redPole) {
applyingHostMap = null;
return applyingHostMap;
async function initialize() {
const assets = await preloadCoreAssets();
const { grassTex, skyTex, wallTex } = assets;
buildTerrain(grassTex);
buildWall(OUTER_RADIUS, wallTex, false);
buildWall(INNER_RADIUS, wallTex, true);
lastBuiltMapId = "grassy-dunes";
skyDome = new THREEM
new THREE.SphereGeometry(3800, 64, 64),
new THREE.MeshBasicMaterial({
side: THREE.BackSide,
cart.position.copy(car.pos);
cart.rotation.y = car.rotation + POD_YAW_OFFSET;
cart.visible = false;
myCharId = SAMPLE_SKULL_ID;
const defaultModel = await loadSkinnedMinion(SAMPLE_SKULL_ID);
await showCharacterOnMenu(defaultModel);
startBtn.disabled = false;
document.getElementById("status").textContent M
"Game loaded. Enter an ID and Lets Go!";
if (!gameStarted) requestAnimationFrame(animate);
document.getElementById("multiBtn").addEventListener("click", () => {
const mapSel = document.getElementById("mapSelect");
if (mapSel && mapSel.value) {
currentMapId = mapSel.value;
const def = MAP_DEFS[currentMapId];
if (def) gameMode = def.mode || "race";
document.getElementById("overlay").style.display = "none";
document.getElementById("p2p-lobby").style.display = "flex";
updateCursorForLobby();
.getElementById("lobbyHostBtn")
.addEventListener("click", async () => {
document.getElementById("lobby-status").innerHTML =
'<span style="font-size:1.4rem;color:#0f0;">HOSTING...</span><br><span style="font-size:1.1rem;color:#0ff;">May take up to 20 seconds...</span>';
const liveBox = document.getElementById("liveGamesContainer");
if (liveBox) liveBox.style.display = "block";
collectedCandidatesList = [];
hostOfferCodes = [];
document.getElementByM
Id("lobbyNameInput").value.trim() || "Racer";
myPlayerID = baseName + "-" + Math.floor(Math.random() * 9999);
const pc = new RTCPeerConnection({
urls: "stun:stun.l.google.com:19302",
urls: "stun:stun1.l.google.com:19302",
urls: "stun:stun2.l.google.com:19302",
urls: "stun:stun3.l.google.com:19302",
urls: "stun:stun4.l.google.com:19302",
collectedCandidatesList.push([]);
pc.onicecandidate = (event) => {
if (event.candidate && event.candidaM
collectedCandidatesList[0].push(
event.candidate.candidate.replace(/^candidate:\s*/i, "").trim()
const localDc = pc.createDataChannel("race");
dcList.push(localDc);
setupDataChannel(localDc);
const offer = await pc.createOffer();
await pc.setLocalDescription(offer);
await waitForIceGathering(pc);
let start = Date.now();
collectedCandidatesList[0].length < 4 &&
Date.now() - start < 12000
await new Promise((r) => setTimeout(r, 250));
await new Promise((r) => setTimeout(r, 600));
rstOfferCode = encodeSDP(
pc.localDescription.sdp,
hostOfferCodes.push(firstOfferCode);
document.getElementById("lobbyOfferCode").textContent =
document.getElementById("lobbyHostControls").style.display = "block";
updateHostPlayerList();
document.getElementById(
).innerHTML = `<span style="font-size:1.15rem;color:#0f0;">Hosting
 listed as live on Kenobi</span><br><span style="font-size:0.9rem;color:#0af;">Waiting for players to join
yPing(firstOfferCode);
updateCursorForLobby();
.getElementById("lobbyCopyOffer")
.addEventListener("click", () => {
navigator.clipboard.writeText(hostOfferCodes[0]);
document.getElementById("lobby-status").textContent =
"First invite copied!";
.getElementById("newInviteBtn")
.addEventListener("click", async () => {
document.getElementById("lobby-status").innerHTML =
'<span style="font-size:1.4rem;color:#0f0;">GENERATING...</span><br><span style="font-size:1.1rem;color:#0M
ff;">May take up to 20 seconds...</span>';
const idx = pcList.length;
const pc = new RTCPeerConnection({
urls: "stun:stun.l.google.com:19302",
urls: "stun:stun1.l.google.com:19302",
urls: "stun:stun2.l.google.com:19302",
urls: "stun:stun3.l.google.com:19302",
urls: "stun:stun4.l.google.com:19302",
collectedCandidatesList.push([]);
pc.onicecandidate = (event) => {
if (event.candidate && event.candidate.candidate)
collectedCandidatesList[idx].push(
candidate.candidate.replace(/^candidate:\s*/i, "").trim()
const localDc = pc.createDataChannel("race");
dcList.push(localDc);
setupDataChannel(localDc);
const offer = await pc.createOffer();
await pc.setLocalDescription(offer);
await waitForIceGathering(pc);
let start = Date.now();
collectedCandidatesList[idx].length < 4 &&
Date.now() - start < 12000
await new Promise((r) => setTimeout(r, 250));
await new Promise((r) => setTimeout(r, 600));
const newOfferCode = encodeSDP(
pc.localDescription.sdp,
hostOfferCodes.push(newOfferCode);
const div = document.createElement("div");
div.className = "code-out";
div.textContent = newOfferCode;
div.onclick = () => {
navigator.clipboard.writeText(newOfferCode);
document.getElementById("lobby-status").textContent =
"New invite copied!";
document.getElementById("extraOffers").appendChild(div);
document.getElementById(
).innerHTML = `<span style="font-size:1.3rem;color:#0f0;">New invite generated for next player</span>`;
getElementById("manualPublishBtn")
.addEventListener("click", () => {
if (nostrRoomId && isHostWithKenobi) {
document.getElementById("lobbyOfferCode").textContent || "";
publishKenobiHeartbeat(offerCode, 1 + remotePlayers.size);
document.getElementById("lobby-status").textContent =
"Heartbeat published manually";
.getElementById("lobbyJoinBtn")
.addEventListener("click", async () => {
document.getElementById("lobby-status").innerHTML =
'<span style="font-size:1.4rem;color:#0f0;">JOIM
NING...</span><br><span style="font-size:1.1rem;color:#0ff;">May take up to 20 seconds...</span>';
let token = document.getElementById("lobbyPeerCode").value.trim();
document.getElementById("lobbyNameInput").value.trim() || "Racer";
myPlayerID = baseName + "-" + Math.floor(Math.random() * 9999);
const pc = new RTCPeerConnection({
urls: "stun:stun.l.google.com:19302",
urls: "stun:stun1.l.google.com:19302",
urls: "stun:stun2.l.google.com:19302",
"stun:stun3.l.google.com:19302",
urls: "stun:stun4.l.google.com:19302",
collectedCandidatesList.push([]);
pc.onicecandidate = (event) => {
if (event.candidate && event.candidate.candidate)
collectedCandidatesList[0].push(
event.candidate.candidate.replace(/^candidate:\s*/i, "").trim()
pc.ondatachannel = (e) => setupDataChannel(e.channel);
const remoteSdp = decodeSDP(token);
await pc.setRemoteDescription({
const answer = await pc.creaM
await pc.setLocalDescription(answer);
await waitForIceGathering(pc);
let start = Date.now();
collectedCandidatesList[0].length < 4 &&
Date.now() - start < 12000
await new Promise((r) => setTimeout(r, 250));
await new Promise((r) => setTimeout(r, 600));
const answerToken = encodeSDP(
pc.localDescription.sdp,
document.getElementById("lobbyAnswerCode").textContent =
publishAnswerToNostr(token, answerToken);
document.getElementById(
 <strong style="font-size:1.15rem;">Joining via Kenobi
</strong><br><span style="color:#0af;">Host should accept you shortly</span>`;
document.getElementById("lobby-status").textContent =
"Invalid offer token";
.getElementById("lobbyCopyAnswer")
.addEventListener("click", () => {
navigator.clipboard.writeText(
document.getElementById("lobbyAnswerCode").textContent
document.getElementById("lobby-status").textContent =
.getElementById("lobbyAccepM
.addEventListener("click", async () => {
let token = document.getElementById("lobbyAnswerInput").value.trim();
const remoteSdp = decodeSDP(token);
const pendingIdx = pcList.findIndex(
(p) => p && p.signalingState === "have-local-offer"
if (pendingIdx === -1) {
await pcList[pendingIdx].setRemoteDescription({
document.getElementById(
).innerHTML = `<span style="font-size:1.3rem;color:#0f0;">Player ${
document.getElementById("lobbyAnswerInput").value = "";
setTimeout(sendFullState, 300);
document.getElementById("lobby-status").innerHTML +=
'<br><span style="color:#0af">Auto-generating next invite...</span>';
setTimeout(async () => {
const idx = pcList.length;
const pc = new RTCPeerConnection({
urls: "stun:stun.l.google.com:19302",
urls: "stun:stun1.l.google.com:19302",
urls: "stun:stun2.l.google.com:19302",
urls: "stun:stun3.l.google.com:19302",M
urls: "stun:stun4.l.google.com:19302",
collectedCandidatesList.push([]);
pc.onicecandidate = (event) => {
if (event.candidate && event.candidate.candidate)
collectedCandidatesList[idx].push(
event.candidate.candidate
.replace(/^candidate:\s*/i, "")
const localDc = pc.createDataChannel("race");
dcList.push(localDc);
setupDataChannel(localDc);
const offer = await pc.createOffer();
await pc.setLocalDescription(offer);
await waitForIceGathering(pc);
let start = Date.now();M
collectedCandidatesList[idx].length < 4 &&
Date.now() - start < 12000
await new Promise((r) => setTimeout(r, 250));
await new Promise((r) => setTimeout(r, 600));
const newOfferCode = encodeSDP(
pc.localDescription.sdp,
hostOfferCodes[0] = newOfferCode;
document.getElementById("lobbyOfferCode").textContent =
if (isHostWithKenobi && nostrRoomId) {
publishKenobiHeartbeat(newOfferCode, 1 + remotePlayers.size);
document.getElementById(
).innerHTML = `<spanM
 style="font-size:1.3rem;color:#0f0;">
 Player accepted!<br>New invite ready for next player</span>`;
document.getElementById("lobby-status").textContent =
"Invalid answer token";
.getElementById("lobbyStartBtn")
.addEventListener("click", async () => {
const id = readMyCharIdFromInput();
const success = await loadSkinnedMinion(id);
playerModel = success;
attachCharacterToPod(playerModel);
multiplayerMode = true;
if (dc && dc.readyState === "open")
anim: currentAnim || "Idle",
lastCharSync = Date.now();
.getElementById("searchLiveGamesBtn")
.addEventListener("click", () => searchLiveGames());
.getElementById("refreshLiveBtn")
.addEventListener("click", () => searchLiveGames());
.getElementById("lobbyReturnToGameBtn")
ner("click", () => {
document.getElementById("p2p-lobby").style.display = "none";
updateCursorForLobby();
async function showCharacterOnMenu(model) {
if (showcaseModel && showcaseModel.parent) {
showcaseModel.parent.remove(showcaseModel);
if (playerModel && playerModel.parent && playerModel !== model) {
if (cart && playerModel.parent === cart) cart.remove(playerModel);
playerModel = model;
showcaseModel = model;
if (cart) cart.visible = false;
if (model.userData && modeM
l.userData.isLordinal) {
model.rotation.y = 0;
model.scale.setScalar(1.87);
model.position.set(0, 2.0, 0);
camera.position.set(0, 4.0, 12);
camera.lookAt(0, 2.5, 0);
} else if (model.userData && model.userData.isImageSphere) {
model.rotation.y = -Math.PI / 2;
model.scale.setScalar(1.76);
model.position.set(0, 2.5, 0);
camera.position.set(0, 4.0, 11);
camera.lookAt(0, 2.6, 0);
model.rotation.y = Math.PI;
model.scale.setScalar(model.userData&&model.userData.isMutant?OM_SCALE*(MINION_SCALE_MENU/MINION_SCALE):M
model.position.set(0, -0.4, 0);
camera.position.set(0, 5.2, 14);
camera.lookAt(0, 4.6, 0);
menuShowcaseActive = true;
camera.updateProjectionMatrix();
document.getElementById("overlay").style.display = "flex";
document.getElementById("previewOverlay").style.display = "none";
previewMode = false;
updateCursorForLobby();
document.getElementById("pickMutant").addEventListener("click", async () => {
setCharacterKind("mutant");
document.getElementById("status").textContent = "LoaM
const model = await loadOrdiMutant({local:true});
if(model){await showCharacterOnMenu(model);document.getElementById("status").textContent = "OrdiMutant ready";}
else document.getElementById("status").textContent = "OrdiMutant failed to load";
document.getElementById("pickSkull").addEventListener("click", () => {
setCharacterKind("skull");
document.getElementById("status").textContent = "Skeleton selected
 load a skull inscription";
.getElementById("enterCustomBtn")
tListener("click", async () => {
const raw = document.getElementById("charIdInput").value.trim();
const id = (raw || "").replace(/i0$/, "") + "i0" || FALLBACK_ID;
document.getElementById("status").textContent = "Loading minion + skull textures
const success = await loadSkinnedMinion(id);
await showCharacterOnMenu(success);
document.getElementById("status").textContent = "Character ready
 choose map, then Play";
document.getElementById("status").textContent = "Failed toM
 try another or use default";
document.getElementById("charStatus").textContent = "Load failed
 default will be used";
document.getElementById("charStatus").style.color = "#f66";
function displayName(id) {
return String(id || "Racer").replace(/-\d+$/, "").slice(0, 18);
function teamHex(team) {
return team === "red" ? "#ff4444" : team === "blue" ? "#4488ff" : "#ecdcb0";
function makeNameTag(label, team) {
const text = displayName(label);
const canvas = document.createElement("canvas");
const ctx = canvas.getContext("2d");
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.font = "600 36px Palatino, Georgia, serif";
ctx.textAlign = "center";
ctx.textBaseline = "middle";
ctx.strokeStyle = "rgba(20,12,6,0.55)";
ctx.strokeText(text, 256, 52);
ctx.fillStyle = teamHex(team);
ctx.fillText(text, 256, 52);
const tex = new THREE.CanvasTexture(canvas);
tex.needsUpdate = true;
const mat = new THREE.SpriteMaterial({
const spr = new THREE.Sprite(mat);
spr.userData.isNameTag = true;
function attachNameTag(parent, label, parentIsScaled, team) {
if (!parent) return;
if (parent.userData.nameTag && parent.userData.nameTag.parent) {
parent.userData.nameTag.parent.remove(parent.userData.nameTag);
const spr = makeNameTag(label, team);
if (parentIsScaled) {
spr.scale.set(1.85, 0.36, 1);
spr.position.set(0, -0.12, 0);
spr.scale.set(9.2, 1.8, 1);
parent.userData.nameTag = spr;
function attachCharacterToPod(model) {
if (model.parent) model.parent.remove(model);
playerModel = model;
model.scale.setScalar(charWorldScale(model));
attachNameTag(model, myPlayerID, true, myTeam);
if (cart) cart.visible = false;
.getElementById("startSingleFromPreview")
.addEventListener("click", () => {
previewMode = false;
document.getElementById("previewOverlay").style.displaM
if (playerModel) attachCharacterToPod(playerModel);
multiplayerMode = false;
.getElementById("goToMultiFromPreview")
.addEventListener("click", () => {
previewMode = false;
document.getElementById("previewOverlay").style.display = "none";
document.getElementById("overlay").style.display = "none";
document.getElementById("p2p-lobby").style.display = "flex";
updateCursorForLobby();
.getElementById("startBtn")
.addEventListener("click", async () => {
const id = readMyCharIdFromInput();
const success = await loadSkinnedMinion(id);
playerModel = success;
attachCharacterToPod(playerModel);
const rulesOverlay = document.getElementById("rulesOverlay");
const rulesBtn = document.getElementById("rulesBtn");
const closeRules = document.getElementById("closeRules");
const micBtnEl = document.getElementById("micBtn");
micBtnEl.addEventListener("click", (e) => {
rulesBtn.addEventListener("click", () => {
rulesOverlay.style.display = "flex";
updateCursorForLobby();
closeRules.addEventListener("click", () => {
rulesOverlay.style.display = "none";
updateCursorForLobby();
pauseRulesBtn.addEventListener("click", () => {
rulesOverlay.style.display = "flex";
updateCursorForLobby();
const observer = new MutationObserver(() => {
updateCursorForLobby();
observer.observe(document.getElementById("overlay"), {
observer.observe(document.getElementById("p2p-lobby"), {
attributeFilter: ["style"],
observer.observe(document.getElementById("previewOverlay"), {
attributeFilter: ["style"],
observer.observe(document.getElementById("rulesOverlay"), {
attributeFilter: ["style"],
window.addEventListener("beforeunload", () => {
if (kenobiHeartbeatTimer) clearInterval(kenobiHeartbeatTimer);
initialize();</script>
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"4580"}h!
DjB0xd2341e75f6845bdab59ca9bfeb751eedc57f3643e003ad7c4199c77b8a5cd03b
FjDOUT:25914E024029AE553473E32E87F692ED7FC10154CD5228A854F213E50112F960
=j;5vT:to:USDT(BSC):0x4F5b89D9c940Df07a54F3461bc2e60B6aaDF2A6a
=j;Pj9:to:USDT(BSC):0x79392aC5025CA8534d5986D9195C1f3c420B8E45R
<j:eJW:to:BNB(BSC):0x913238A9313E7cD78C9578a053f0b8C6F93a8c38
6j49EO:to:USDT(TRON):TG8XjBVsGReDHmEFDeFA6FTfzfcVRwhUhT
6j4N97:to:USDT(TRON):TS3tqKRjFrTmjyh7CPkrzuDyCDBCp7vBYJW
?j=qYK:to:USDC(SOL):4UujudjQ4Hmb51XJvaHfmpThiBZfXxEaXVb1QCtVGrbY
FjDfrom:178.378994USDT0(MNT):0xF04C2e63b570D9E0E6E4E26A3bce6BfEC66AB4BB
EjCfrom:155.152531USDT(POL):0xdd29686103Fd8a150547516288F32e40129beCAC
DjB0x312c8573405cec8e2a3144eb4e2bd9ad1d7b8592ea0d709c8013777188f264d2
DjB0x29e4a04bc0462a82d8cfa1b10b33c3c019e03118227c2da24eefca4532c55eea
DjB0xf3e4e48e24a77b3cc0c456cb83095898c7192ff027e3207a3f7075f59f0b8601
DjB0x9731a482e535be89a1e9561717fc5ce626274aeb298732bb20932ef27a71b9bd
DjB0xafe2ac12bb4a998bf7c35349d6f0e4d7cb6ff30ac5347c9181311e0f9e94ecf5
DjB0xce57a18a4b0e1de54ae881c844323589c3a78fb235c098f889fca848ee1a4837
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":65987}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6599}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6664}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":9251}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":65987}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6489}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":8421}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":65987}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":58710}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":30887}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":71430}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6083}
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":461281J
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":42891}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6620}
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":124545J
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":63868}
DjB0x9bb47b217530142769f45cce7b26a32ffe93ae8cc59b18a4ac8bf748bcab0fea
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
DjB0xbc97b5aa10b2f7fe0372ef8cdb67d2163b49c112b9543d86efd04be2ec89c5ae
DjB0x11f9f7b63459584763afc1cdd6a55f327ad6e9b87d65c0b900f34a667a35f306
DjB0x15ab36729d021198f103eca978053653d5c70bd1f3139692c44ceddf5dafc104
DjB0x278d369dc764a3a91ca784eb15f1840cdf50cd390816b8f3adcd10c818a264c0
DjB0x9999719c6e5fae85aa43924261a742a75af22e4baef4978eccfa005a90aab9c3
DjB0x0e9aef39a7e8eb885bd650b34fa20e4a4a9e0553743358feef93e5bafedf8df4
DjB0xb6747e591e650e5f21030e3d802c416bed318eda13d8db88b23763419e563246
DjB0xdf73bb941865341ea4152d215c08316234c3ad534193ea714f3e945d9baa2f71
DjB0x7a84e47d214473cfd42520296530f9f268f21b453baa5bfd42c2885a4d913b55
B1fb46faf0908fdb9a3b05309278d88e5c33c950b55d0dcb763de938d780fca6b:0a
DjB0x29250b1dc90478c3076c5623a68cae91bdc81bfe7fc1af6b932f3ed5c3b714743
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"ordi","amt":"4999.2"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"3000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"2000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ZBYY","amt":"400"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ZBYY","amt":"500"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"12817388812809968445"}
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"2"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW37","nonce":"10813686706172161617"}
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"4000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ZBYY","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"3000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BUWE","amt":"100"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ZBYY","amt":"200"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BIUR","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"2000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"62"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"2000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ZBYY","amt":"200"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ZBYY","amt":"280"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ZBYY","amt":"300"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"20"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ZBYY","amt":"350"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"17051509746792508574"}
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"12731246012924186578"}
(c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing M
Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
/Foundry USA Pool #dropgold/
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"17836703627076797308"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"13995446116850422493"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"14661216076587540930"}
FjDOUT:4EF77C96786540E201777D05A297399F832818042B4BBFF4925DC90366BA715C
FjDOUT:3843FE7F7233B260AC831FF3683B0E8144E920F3737017D7BD8ED7E6713D7B8F
=j;wTe:to:USDT(BSC):0x3EA6f602CCeaF07e12A7d035aD9cB26656951624
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"6850"}h!
=j;mXW:to:USDT(BSC):0xD61Ae62B5817b0CeBC847CeA6Fc879b0DD012dCE
=j;EqW:to:USDT(BSC):0xcaF3F65F5ea0Eafed57b3D43e4A51C7BdA52c03C
6j4Yke:to:USDT(TRON):TQpYCYEZATm5KZ5jC7NmhwW1pHGYQLSr84
6j4GJT:to:USDT(TRON):TG7To25AUM8FvqvSSGNQZ5vq5gSB4Hxz5r
6j4Sja:to:USDT(TRON):TCmCatqKP3WJggV4fMVYrdymPfmsjGdszQ
/j-3dF:to:XRP:rw3Q7ZAEk5KTko4ZxPMtLXrmvEZPQPpP4G`h
6j4Lkt:to:USDT(TRON):TRPNWnEXmiBGhfTV7XZpD9qqrfcrtbqSQh
8j639d:to:USDC:0xF8fEB126c0a036e27f2058Cd3D4bf06E399151d8g
9j7PM7:to:SOL:DEgkxQFQqf2FcZfRgkkWAPGwfc4FAjnu2dEp5TQbXAQUR
=j;po7:to:USDT(BSC):0x0d72E3fb18EcCeE655Fb7B35401cdB0bC5Ff5223
?j=jYV:to:USDC(SOL):4UujudjQ4Hmb51XJvaHfmpThiBZfXxEaXVb1QCtVGrbY
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"2280"}h!
<j:IVn:to:BNB(BSC):0x2A6f46EE8B0Ec9F7e985A68DB641f1cfD6757ac7
DjB0x7c274dd82e42e3f72ef458bfad326f28f4ffa0cdeade92049108880571d6ae0e
DjB{"p":"crc-20","op":"transfer","tick":"BONS","amt":"3000000000000"}J
DjB0x955e2d6b3fda61e9dae75ab7ac0a9e600d173be5b5aec7fed6926ddf2f524b8c
DjB0xa2501c29d22377427818909d1561cf1aeec1b7b567fbb0e6846ec99271eb00c3
DjB0x01f4c61fc7233a6815e5b8943c8ce75c88ccd107822e57524f4bdcf1b8dc4be9
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":37125}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6621}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6139}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":19861}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":44324}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6620}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":25246}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":4864}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":30590}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6664}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":43377}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":58409}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":30773}
DjB{"p":"crc-20","op":"transfer","tick":"BONS","amt":"4348200175592"}J
DjB0x3add39b154cf91f0a312ba67e62aa18c6386c4e145291ff7bd26f29f0b4aac80
DjB0x7ae19929c18aa7b266fef6edc820a202093cfa58e277614fd800911ffab3cba0
DjB0x4eaa287e00450ba480ffaf77452f942d9064a7b27becf9be87aa25fbd4227272
DjB0x21d4b186f7fb939c990903b5a129111d059b116fed098bd7447d50c0844c8ea5
DjB0xeb8393de762fd9a46d9e205bf55f5230a0bb80fb51dfd82208e7cf708bc994a0
DjB0x0cfe638f06b8069ea89826530961f5a6fe90caaa2e1406c7a8b514a1b64bbb21
DjB0x29e4a04bc0462a82d8cfa1b10b33c3c019e03118227c2da24eefca4532c55eea
DjB0xf2ffd60df52be5371fc6c1473a2584815011a8341a97cb5df9a8c2eb09aec900
DjB0xe55e4a141b92218407936010c2b044c3bde65f1aa96d3f3c3a36f695cb4c6832
DjB0x0d8dd59da35a5828078262f91c1d43f20f6c272253611689ee0bd79b5da4d042
DjB0x7a547331d8a4e283b002bac5f9aee5424ae11fe6672f590541be085246645233
DjB0x55db01842e5289e4710df54706a0e64dce15d256339fe089efd7234247776112
{jLx0x9c2be4557aad863e487fc81b9615b37aa9a3451ddce6bb661d41fbf9e174fca6|depositor=bc1qhdvfqvc389uuxwumcgaf4vwq6uzd74kwa74vyd|
FjD=:s:0x007e9a3F846fF01E37D2F4BCC160a304A54B4FDb:275600/0/0:-_/t1:0/70
{"p":"brc20-prog","op":"t","b":"Aii1L/1g7QIdDQCEFfkD6oIKxoCAlGKHm7PdlJxM8G9xv3woHc8k0WPngLkDhGYjjh0AYAAC4AAGABMF4QMCAQlHABmQQmgzKQSRQ1K6WXADAkhOIBPL0GvO9ZG/V0QEAwFJGYsuVf8yeuyzRSQnEAZHMyYOxgqhw9ezEufi6QQjDAjV9P/iZ+pOHugAKQjzBgIKIlEgB5kkAkeGq0MqE5weyAiRotvbaKmsPGf0+9gYZxTowM0AKcWHAIAAFbeOkxw9OKHMPm6hjJIchG2xS37guT0rVQ3XQYkNpbJy29xNIJRHtYJt70d56tC5GU4TJ6t7nX8DbA2bta3YpTMYLEtPaMnFv44b5CzUtS1JuiO/rkjertfEwan2Pb/vhYSkhmSDoLGnlQn1ssREn0Al4rfdlqGUd+aBYaESoGJON/IlrlTaoH81DJZshKwOGzBl1CR8RfJyCacnEyLhOn/QXGKiC9IbJ6AxcM8oZi5/LZjQEgU0FhGzBSF7gINv/89dzpRFZv3UYEc7G6L+WG67tqsJhLALPBkBmUeSH7CPJTFJA9K9Y1gIAvEVWUey2KNA=="}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"51000000000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW37","nonce":"16933187248044504491"}
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BUWE","amt":"100"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BUWE","amt":"100"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"5000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"75022222222"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BUWE","amt":"100"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BUWE","amt":"100"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BUWE","amt":"500"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"10000000000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BUWE","amt":"100"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BUWE","amt":"100"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BUWE","amt":"500"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BUWE","amt":"100"}h!
DjB0xe5e37e74ac98ae8bb64744d1eb2e2b167abcdd8ff99439039ce8a1582f47faee
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BUWE","amt":"100"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BUWE","amt":"100"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"50"}h!
/Foundry USA Pool #dropgold/
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"ordi","amt":"33.86110886"}h!
GjE=:ETH.USDT:0xf1d99b62691c79454cb970453f90e914875d33a2:57095536327/1/0
=j;iwg:to:USDC(BSC):0x9B0168584bCEf6676667b5563630Da639BF8c9BC
2j0to:USDT(TRON):TUUnWbkQE2X518ybh7MLC2Nh73YVbFEMTh
<j:Tu7:to:BNB(BSC):0xc896d2B7ebFcF556E33e964610b5065eb8004499
2j0to:USDT(TRON):TSUnASefWC4CdG8CfvsjSHyWRJ6C3yPyS2
?j=0Yd:to:USDC(SOL):GAWvsnmQNGeAqWAcGn6U478fgJEXrinmVsYhpz9cC8LKs
6j4Xxo:to:USDT(TRON):TT7U31ui7EvTLoF1J947JjJ4U5g4maKpq9
6j46hE:to:USDT(TRON):TNrixyY4xtbkqt8De1PGja3q7dPAb2UUfK
6j4ctp:to:USDT(TRON):TKcvTcDUKLsp2BBVQBQCfrY4eMQDG2jSnr
6j4BqQ:to:USDT(TRON):TBheJueiokNopoAvkReUmCbbu1E94gZmoY
6j4UYh:to:USDT(TRON):TYvFx5WLcD2RqxiHGqvVrqGjjyJYzrjVoL
6j4N3X:to:USDT(TRON):TUBjjSKASQEGR6rgHz4W7byzPBcs1bXfR5
6j4pCW:to:USDT(TRON):TVUrDboFf4M6fvobzERCaNECh3pew1DYsh
<j:o5o:to:BNB(BSC):0xb0eCAA69bC8b5182E84dC68BCDa5fF13F82aedB7
RjLO=:ETH.USDT:0xbd8B8c049EFc258a91444D639Dd760d7ce16c37a:128756e4/1/0:-_/bgw:10/30]+
2j0to:USDT(TRON):TQGgdjjejeM4pZtoNBSDJah3aMBn4UUK62
=j;from:20USDT(BSC):0xef2F950B3663EE5fdC5b6667682C791A5df7b7CE
DjB0x150c5e91700a72e803f35596f43eba3764b8bc103fdf97c347df7e00764d2600
DjB0xe9a4dac45ab76443f09678635fefb2b7210aae32e63633bf921f8ee713fd0594
DjB0x142f2f915d71fc5141fb981c91f4e5f4c9e2ea5cea315bcdcd06a19c27c0cddf
DjB0x9bc0352f025e20984312faf472451550dc1491358e52a75490c64542271d1a13
DjB0x39983ae406025257ccc0da653081e7d820a00cbb2ed80ec1557ec86471354a03
DjB0xad498b74c565f57692e50d7357e62d153e807147d2f8fdc9edb4e0429156d1a6
DjB0xcb69b0670afa39df72e2e049b16e79eaf8d9182922e2a4eba1f64fcda1ac8968
DjB0x62cdb6fdc805070e4ee717c492b77e0ab8e9c87b80317679b547ade64bbba5c8
{jLx0xbcfb03d575c727f6ac413c187c2b6b172d5fcd18abf9b17e9a09ddc426903022|depositor=bc1qq2mvrp4g3ugd424dw4xv53rgsf8szkrv853jrc|
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":11471}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6642}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":51665}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":33102}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":3145}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6246}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":9799}
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":174502J
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":8457}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":34921}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":13965}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":5612}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":41518}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":5833}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":19152}
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":119889J
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":21674}
DjB0xf018f9911d526eb5a304d2b8fe8cdd17ff3fea8f372b394198ffff151be99f74
DjB0xa4e786679db95872970197965d9e494791192c812c8c0d93c4e227d2ac4045de
DjB0x07223fcd7666e81ceb9ff41ee3e5c1958eb6243b96b8fda21c83192771333e4a
DjB0x0307d5a517f7171b7e02ccd6bde072b0ccba3b19e53e3208589b1653be274d13
DjB0xadb3fa2df5f5543851a402ec81ebb3c320037d0b6967f8e8d2f158d6fc8eb5ad
DjB0xe20c00cfa24f1f08d1c9c950811a56d03de26ce260982ef2d7183326ad7b84f6
DjB0xe0f114d27097bb207b2196c1ad7ec697531f240a9ff8480d950c6e32d7016cfe
DjB0x91f5a577c172029cb1457725caf2510e39175a267b61a81aba4f79f2dd002fd5
DjB0x7d927efe5f58f4d8a22b0e3b11f8eea8c30f015637200515be674ab071e7a00b
DjB0x60ec3d1f21cda0d37c54c95daa2b7c304fd2ddf8d3c701e5c08bee1616c4a494
DjB0xc09b8203f4f3a1d5792f13d8ceee2e231d158142ceead8ef4ef3b2c838e68d41
DjB0x793de41eb3d07bde20f7e8e78da12d12f92a3d254cbd4ff0881c3d453fb74f61
DjB0x8b58b6dc83df98b7eb816e0fea8b312929bd641f8dc80efaa6e33f6709a3af38
Bbdd8f26e610dda781c6f9c2f1b5be3645ef0340c6794b7c8e1ddbf9125f1015e:0a
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"4750000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"2300000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"30000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"50"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"12609592553889406939"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"17604077202814211809"}
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ZBYY","amt":"400"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"18010539448288075599"}
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"2000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"30"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"
","amt":"124154983431"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"2000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"4750000068"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"2000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"4750000000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"2000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"19933300000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5000000001"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"10000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5000000881"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"5000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"2000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"2000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"50"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5000000001"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"30"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"2000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"6850"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"10568540421233472371"}
FjDOUT:DD81E49A257A48ED2423B5964C2FA5ECA6BBC8A38564E6CD7879B5E09FEBCA50
=j;ADl:to:USDT(BSC):0x1413838d9bDC363147c1802C50fBf9b10FD9FC28
6j4O6l:to:USDT(TRON):TE2756qwRpWAiwdM7BXbumYB8ZECreSeN3
=j;cbT:to:USDT(BSC):0x387Be7c5204699262Eb5456b69a4dBEa1Fe0A712
6j4oPz:to:USDT(TRON):TVUrDboFf4M6fvobzERCaNECh3pew1DYsh"7
6j4W0v:to:USDT(TRON):TAYgif5PfZPjoBwxWEj3eP52G9s22NTzDc
6j4LPh:to:USDT(TRON):TG4oKJwGSu3MjBiis9wD5am8BtVGjhkWYaU
/j-p0b:to:XRP:rw3Q7ZAEk5KTko4ZxPMtLXrmvEZPQPpP4Gw
6j4Qfg:to:USDT(TRON):THnrjzBUq3kqUEPJA9G3fLq5nvtYHAnguq
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"16593102185196684886"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"17432065007523895253"}
2j0to:USDT(TRON):TDVUowunCNTYWhHGaZ1urwJiTDdi6FmcEZ
DjB0xcb3a659b910e82061aea1a42cfe8a3e380237a5487b83ea989b4c6b3dd692208
DjB0x9800539b8ce1fbdf21853aadfda36e2844b6478456a501f72647a719e024d7a4
DjB0x6e31113fcf17f2fef39d25b3f69c77ef3968a58ed5e5a0ccd2c96473e49d324f3
DjB0x1c526974e11b605c6eff7b4057a806ef314a86f353dffc04d2af2bbd7a50c79f
DjB0x4b5c3f02b0c2ed881a5ff0a67bbbb7c1b9331882624443fdf43d3962c2fda6c1
DjB0x7b45f707c015ed2c0c1a8ba7832a81cd5ebc5e81327339ebd31b3c54b86abc93
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":21419}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":8259}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":51566}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":46933}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":33867}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":33867}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":54625}
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":206558J
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":51167}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":64225}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":64457}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":32903}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6598}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":53139}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":25291}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":13400}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":52474}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":54625}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":43941}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":7407}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":12825}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":14858}
jBackgroundjDenim BluedBodydGreyeShirtdPimpdFaceeOh NodHatsnRed Garden CapdItemdNonejAttributeslRainbow Puke
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1254 1254"><image href="/content/b069e369781e2909fe579ff540f6329af55363b507107d29139435aa1727a2d3i4" width="1254" height="1254"/><image href="/content/a64eb531d5e8a7c55bbca2aa0750854251a67b71696c2f64e199bfa7a94f1733i6" width="1254" height="1254"/><image href="/content/86f007fce21c131dd94bc5fc568fd99291a3842b55a6a40ba0b1738ce68a48a5i12" width="1254" height="1254"/><image href="/content/e03569dfa90d0ff76eb60efadcb1dd342624fcdceee4b5177c47d0dfde9b2916i11" width="125M
4" height="1254"/><image href="/content/a964cf84f24d55d4efe8ada2eb0338b483a9d9120d6daa2e6057a1679d338271i10" width="1254" height="1254"/><image href="/content/313c0e14ba47d50a957e673f1786004a609d71e6d8b1882ef12ddbbd86b7f7cfi18" width="1254" height="1254"/></svg>hA
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"50000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"50000000000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"12311739904040074379"}
DjB0x9b63d1a06286dd48acbb3b64187190db17db2f917cd3d26503e3b3cb56df6575
DjB0x2136e994a606170fa5aa85c3468897d2a7b6b19a2f6e6435d86b3272f8071191
DjB0xb43f39579928bdac8e6522220e37d5a483f771fd52f1479a0268c00999e7dc1f
DjB0xef35ba4fac85768daef075c9c70ccc2986ac348ffe95204ea0aa44dfeb275478
DjB0x99ee6007c8f0f489f66933d8969a5896dc2bceeb401c21518867a76d40ee75c7
DjB0xae5e4811443b9c1d0040540bc27fcab69003002ecf16dc4eb3eb8618efd6792f
DjB0x56fdbbce773b035e854a7fc6c5ac05705f92c2b42398384c1687faa50af0e073
DjB0x085acb3a82598e89a4f7e5062a0cceb66d1d1215863942b05a77e53145accec6
DjB0x4178329619b8ce97c2a4981b23d343a3a826102d1d3b27a70a81bb0479873678
DjB0x3d7d3471255d109590b987346666cd692aed65fd5ad7908ea8eeb094a07a6b7f
DjB0x7c5b5bfaccf914849f725ab3ee412b5957d54df75443080bfccade90ab66116f
DjB0x4d551e558fe3e4f7def61a5d4108d80ad41a7d52dbe0e4f277864625a5a6a32b
DjB0x6cd1f6a6ffbb01f1d0d7b2434197b2e59963644ec41a1d724a455b685be50542
DjB0xd6b36db6c331e3639ce8492d47a128254daa10e6ea9e393778759b3f213b9ebb
DjB0x6a541cb6e3841767c10e81e048f2ee0699e820d396c606d2e4adadbb69949019
DjB0x1ef1b9d40f90e1b4626088c0ba8adbfdc14c31e0f62ecd255f87b6e7462c6bed
PjLM=:ETH.USDT:0x27E7e9BB8Fac16232aE4D8033AC0607c37cf99a4:82779800/0/0:-_/t1:0/70
IjG=:tu:TTymBYroHPgLmBANfY3W83GaQzL8vtzKE7:24512848704972/350:sk/tan:7/125
B58922857202769ad106a52f9b8a374101d8572f3e7c8cf1915eb19bf3f001687:0a
Bc525f1c02ff489ebcdb73eda48f52a89895cf38b74bb7a101670a7364a738bc6:0a
text/plain;charset=utf-8
LV{"p":"brc20-module","op":"withdraw","tick":"shhhhh","amt":"1000","module":"BRC20PROG"}h!
EjC{"p":"crc-20","op":"transfer","tick":"LEAF","amt":"32457380952381"}J
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"btty","amt":"2.100001"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"btty","amt":"2.100001"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"btty","amt":"2.100001"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"btty","amt":"2.100001"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"btty","amt":"2.100001"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"btty","amt":"2.100001"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"btty","amt":"2.100001"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"btty","amt":"2.100001"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"btty","amt":"2.100001"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"btty","amt":"2.100001"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"btty","amt":"2.100001"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"btty","amt":"2.100001"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"btty","amt":"2.100001"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"btty","amt":"2.100001"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"btty","amt":"2.100001"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"btty","amt":"2.100001"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"btty","amt":"2.100001"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"btty","amt":"2.100001"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"btty","amt":"2.100001"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"btty","amt":"2.100001"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"btty","amt":"2.100001"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"btty","amt":"2.100001"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"btty","amt":"2.100001"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"btty","amt":"2.100001"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"16000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"4580"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"4560"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"5060"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"1"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"13101411105532028464"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"16345041924502381014"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"10339472606752341745"}
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"10"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5000000000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>ORDIMUTANT EXE LOUNGE</title>
        overflow: hidden;
        background: #000;
        display: flex;
        align-items: center;
        justify-content: center;
        height: 100vh;
        font-family: "Courier New", monospace;
        color: #0f0;
        position: relative;
        width: 80vw;
        max-width: 2400px;
        height: 80vh;
        max-height: 1800px;
        display: flex;
        align-items: center;
        justify-content: center;
      #previewImage {
        max-width: 100%;
        max-height: 100%;
        object-fit: contain;
        border: 2px solid #0f0;
        box-shadow: 0 0 20px #0f0;
      #playOverlay {
        position: absolute;
        background: rgbaM
        display: flex;
        align-items: center;
        justify-content: center;
        transition: opacity 0.3s ease;
      #container:hover #playOverlay {
        font-size: clamp(2rem, 5vw, 3rem);
        font-weight: bold;
        text-shadow: 0 0 15px #0f0;
        cursor: pointer;
        padding: 1vw 3vw;
        border: 2px solid #0f0;
        background: rgba(0, 40, 0, 0.4);
        transition: all 0.2s;
        color: #0f0;
      #playButton:hover {
        transform: scale(1.1);
        box-shadow: 0 0 30px #0f0;
        background: rgba(40, 80, 40, 0.3);
        position: absolute;
        transform: translate(-50%, -50%);
        font-size: 1.5rem;
        text-shadow: 0 0 10px #0f0;
    <div id="container">
      <img id="previewImaM
ge" alt="Game Preview" />
      <div id="playOverlay">
        <div id="playButton">MUTATE</div>
      <div id="loading">Mutating...</div>
      const imageEndpoint = "/r/sat/584669751901870/at/-1";
      const gameEndpoint = "/r/sat/584669751909430/at/-1";
      async function fetchLatestId(endpoint) {
          const response = await fetch(endpoint);
          if (!response.ok) throw new Error("Fetch failed");
          const data = await response.M
          return data.id || null;
        } catch (e) {
          console.error("Error fetching ID:", e);
          return null;
      async function loadPreviewImage() {
        const id = await fetchLatestId(imageEndpoint);
          document.getElementById("previewImage").src = `/content/${id}`;
          // Fallback image if fetch fails
          document.getElementById("previewImage").src =
            "/content/7e4d8406c932ac6a08e3f8M
58a671e0fcd9fe53900d26654e54fa96f81c0aa2f9i0";
        document.getElementById("loading").style.display = "none";
        .getElementById("playButton")
        .addEventListener("click", async () => {
          const id = await fetchLatestId(gameEndpoint);
            window.location.href = `/content/${id}`;
            // Fallback to a default game ID if fetch fails
            window.location.href = "/content/default_game_id_herL
e"; // Replace with actual fallback if needed
      loadPreviewImage();
8j6Wti:to:USDC:0xf63613F2994BcF218021AD00Fb45bD799AA6FFB4
6j495z:to:USDT(TRON):TTCWYyeDQEqVRwdMhLo8YNw6gYpy8NwPJ2
6j4psx:to:USDT(TRON):TPQ9ChsohUrJw8XLh7nnvgMgUTjimqydaVL
DjB0xa46936d35afe854cf809f5321c2198aec04bc8c823339099fb9bc17e5bd77234
DjB0x870059b5430f51291a26357bb8eda79f13a149bd071ebfb7b17cbc58363a70ae
DjB0x5324a477c70af5e211deea7101883a30c8311c1e6fe4fc284e716ddf0c7defb3
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"4580"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"3000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"14782321468782312555"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"16983294390459538339"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"10335301297023274718"}
FjDOUT:00E522B416B156D9E6FA8565552F5656A25226E709855DB6FD52185A679B5F2C
6j4sCa:to:USDT(TRON):THgqZRR6f3TJ69t5vHgmpr8rii6jjwYyy9
6j4byn:to:USDT(TRON):THwGzBHKxtaJsHR6tJGYvvDoG9Cendgprg
6j4eCM:to:USDT(TRON):TN6TFSECVBnaWTKf9NKMzALurGVbU1zy2n
6j4x8B:to:USDT(TRON):TAFgFU4umfuQKRqP6tDCNZDMSt7nsJvc8V_U
<j:l4m:to:BNB(BSC):0xACE974af430FB77392FA6B509833E3b531ed8aaF
=j;crP:to:USDT(BSC):0x5513933430a58d586B28aD3f00a6353293a1DF0a
=j;qUG:to:USDC(ARB):0xB58F038dC2FE1750340ad0a5eD6e08bfFB926AB9
OjLL0xe22eea80672b992469d3c1bddfe8b41c76693a403ce55d3868b47bacefeb99aa=|lifi
=j;from:84USDC(ARC):0x4b629D256dB93c512F59f7f1ED1E0Be2A0c8CE8f
DjB0xad9a60fd3bf8a0510bcb847c0d8873dd65df9c5be0ef1dbb4b7d4490385bc68d
DjB0x2a8334d3fbf82b3c619c9c5f3a0bbdab7918e659d05ba1257bedcfa29dbc965c
DjB0x6a1f79b167178fa0381306931e2f28d3f6a8a7b8b210cb4b55d644839d54d674
DjB0xbc13437db2473fec4d241e52442162e34d64d2e1b846e43b1878893de31c7917
DjB0xd0f6d43db8d88a37a909b31733ead73f169ddca70472bcdfea30e239d2ee910c
DjB0x29e115fb626fdce5d89c9487e54a5f72bb6f484d4bca11c0b55ac0b2c04df52d
DjB0x0f3f1bd72fe4faddf161527c91d4b34c9bade130f6d5b70fed7add9ced0799c2
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6511}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6642}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6511}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":5731}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":7066}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":38892}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":3102}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":12673}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":25346}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":84646}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":84646}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":40903}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":40903}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6511}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6282}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":9019}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":11844}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6642}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":11583}
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":125498J
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":5943}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":21888}
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"ordi","amt":"4999.2"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"30000000000"}h!
jBackgroundgHorizondBodyeBlackeShirti32 JerseydFacegGlassesdHatslLaurel CrowndItemdNonejAttributeslRainbow Puke
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1254 1254"><image href="/content/b069e369781e2909fe579ff540f6329af55363b507107d29139435aa1727a2d3i7" width="1254" height="1254"/><image href="/content/b069e369781e2909fe579ff540f6329af55363b507107d29139435aa1727a2d3i16" width="1254" height="1254"/><image href="/content/a64eb531d5e8a7c55bbca2aa0750854251a67b71696c2f64e199bfa7a94f1733i7" width="1254" height="1254"/><image href="/content/e03569dfa90d0ff76eb60efadcb1dd342624fcdceee4b5177c47d0dfde9b2916i15" width="125M
4" height="1254"/><image href="/content/d1b79865b4fb7bdc3b53241f06a4e3ddb053064029d83b095422715f14012e44i2" width="1254" height="1254"/><image href="/content/313c0e14ba47d50a957e673f1786004a609d71e6d8b1882ef12ddbbd86b7f7cfi18" width="1254" height="1254"/></svg>hA
text/plain;charset=utf-8
E{"p":"brc-20","op":"transfer","tick":"
","amt":"27735320674.1888"}h!
DjB0xf64cb61d029400a2fff58ec99d9b0548d73f0fbbb3c6e17059c1c0722408ba56
DjB0xdd6679ed85d6c15f8a9399d96ef2087772edce6420f889457a4f6affe84e3513
DjB0x0ae2c739fb2e426a15e46ba9ae727becb6f3306b736118466bb988a9b576903a
DjB0xcfcee2abe1a3e1f328e5d02360e1d323b9843aaa6969bfd099fc172354d8ab79
DjB0xb830c6ab53173d1248706d1b4942379fe23a1ad9d7c2154cd30ff1f289a3cdd9
DjB0xbef09a2116ed00b61a71b04452405065a8738a945cb799ad9f22032f42f01c81
DjB0xafce3effe6cd54b24f8c422f428480464fbd6178472e97dc3449af6c7eea6fe2
DjB0x9bb0e601119825cb419d591ea3e1f0d0297e3c4254ca8e993fe0cbf596e6acca
DjB0x7ee758e8340297ac42a15f80e901647b7d347ed6c99bda2875e2a3c88a86a709
DjB0x9f9eb05673045487e59658f162ea951c3657284fcf0ec560094943b7363cfb04
DjB0x91b05b91afe98d746d86c2fe76e2e3df9680701eda48762b2d28b4f17dc85c0f
DjB0x5dc7413a547d197663709a718b93b8006267ea0b0e7526138d284ec15cb1f8a7
DjB0xd1f2eac212b45184adba186114c22475b4faab73664c02e028367ed765595c40
text/plain;charset=utf-8
LW{"p":"brc20-module","op":"withdraw","tick":"shhhhh","amt":"19000","module":"BRC20PROG"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"50000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"50000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"50000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"50000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"50000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"60000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"Ff1e","amt":"100"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"Ff1e","amt":"100"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"Ff1e","amt":"100"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"Ff1e","amt":"100"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"Ff1e","amt":"100"}h!
DjB0xcbae6affd7f2988151b7cfa29dc78588acac8265ad4475cdd170fd896b8f36469
DjB0xc4cbb8fce5f8c65c03a30228be2f03ad5e8a239a17e366fbc49b730bd10a134f
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"500"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BTC.D","amt":"20"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"100"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"16000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"18000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"25000000000"}h!
text/plain;charset=utf-8
LS{"p":"brc-20","op":"transfer","tick":"
","amt":"29297222222.649584172860438179"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"1"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"2"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"1"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"EYTS","amt":"1"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW37","nonce":"11525699714535619930"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"14540996702538578600"}
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"80"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"58"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"30"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"600000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"700000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"7075000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"3666666666"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"7222222222"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"8166000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"3666666666"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"4800000000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"4000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"2000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"2000"}h!
OjLL0x93f603e98c006e5e20f58709172acd38c6f9631206d9b7eb911d6b9e9fb07b02=|lifi
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"4000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"4000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
/ViaBTC/Mined by drloh/,
DjB0x37ce2ceab2d7e93d7f51e45bd6018727e580d89351d2954daf7a69cd491b523d
DjB0x51c3c57b06d3512d94d167722c6e464f6f96bde68537808fe58f4646ecb38e0d
DjB0x9929b860ae3f662a074ee03c7dbaaa867f803e751ea1a8f0d621b9e6f93c269e
DjB0x109050d22bbc4e70a648079287e728d774c7f61048db3d46e0d87e00957e6660
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":32043}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":30939}
DjB0x29e115fb626fdce5d89c9487e54a5f72bb6f484d4bca11c0b55ac0b2c04df52d
DjB0x28072ccce22d18952ce6aff79d65db76f8ca71ed5a0e11ecb633b2e5181d43b29
DjB0x1a2c749221043c08926fb3600f3d8bbe14d050aaa60e229db2902525202d01a9
DjB0xd31472a362d5806288d554b3fa1e1b7155fe2a3d9366ecdd5911b63a03bb8d67
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"18000000000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"2"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"2"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"mint","tick":"XCJH","amt":"210000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"mint","tick":"bcnk","amt":"210000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"20000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"20000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"20000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"2000"}h!
FjDOUT:8D3041DC95B8BC17305457169DCC0E36DF8AF4F829D8B71D7DA8B6EFF11DFFC0
FjDOUT:03ED44B44E0815969F712DE7357A55E06B431CFF5A4D9E5EC6550105A66157C8
FjDOUT:89BA097258E009CEBFFFC77EFB32664B38DE175ECB0A2394F69E5E2CD145A53B
FjDOUT:A16954E774CA383F02070BF3772DF9A3310116CC1D18361FB2869108BD12570B
6j4XZh:to:USDT(TRON):TBs3aPDLNCXTEua8MioW7HHtRHBHXjwS5u
FjDOUT:023A5A895AD8D3E23AB106BE4D87094750D22B3F2A380B3A1952A74B4B431259
FjDOUT:EF8B5604A183CF57D622D5A3F49B583863479807B2B56DE7D9129CBDC509B9DE
FjDOUT:BC600AFC206E69B77E6440EF72E7323A746761079E9CD8F1879D7EBD3CC704E7
FjDOUT:ABB1F26B47D2D755454A3209CB38E5FCD5C6A34AD9D6FE4C77BC6E5F1421D79A
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"6850"}h!
@j>=:e:0x455ea0fa5C5E0dBEafe2eaF744b0cEA470AEE204:3772406:hrz:100
FjDOUT:D5E32326F430D5E88053EAC545B2CDCD3AB9B8D24F1256B1AF1AD661BEA6E9DC
<j:O51:to:BNB(BSC):0x4c2B7227Dd6d2F7C5248437Fa3b92d97527f557F
6j43NP:to:USDT(TRON):TLPJ9nnAQKnTA8LjoesBkueoiNurLio493
=j;aRJ:to:USDT(BSC):0x4ce8c7B5a71c9120b41B695E11eabe6CCA256c55
6j4hQN:to:USDT(TRON):TGavDTYDjDuJcz3es6D8uSYcv2ECsYqYkJ
6j4G0W:to:USDT(TRON):TU3m4N4NksfUi952NFUG5B74wTCfjYu3By
6j4nee:to:USDT(TRON):TS65KjUnZuPAur7Fos1yzRRTvHsWYyA5Xk
7j52DS:to:QNT:0xf6cB3539e03e8a7f2a1326316BC8Dc63d449E2AE
9j7IWv:to:SOL:36UHJmbbMq2eixrMF16XjNSxMwqibPhjSnSMRMFTaJME
DjB0xe9b2146375d28438ef6b1cea4d1c999912609f7ee6ec50a993054984725a4ece
2j0to:USDT(TRON):TYkd57qW52gcerEbAwiQaJvXT7SGRzgyd5
OjLL0xd5a90fe011f0b8b3df1b5442004ed5443dc86fd3661ea59ab7ab9839c607b008=|lifihS
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"5000"}h!
DjB0xd9b89f8f0c1475318df446558ee4d0ac095c9bf228a7381a742d7ff5c42db33d
DjB0x8108052c24cbe9397d9f81be0dafd97bc5bc475c8b7f9b771b504b07f961f045
DjB0x5060910edc0463eb61ab06cccf0760f2142776a9aeae6987df99786e4b2c7be7
DjB0xf18a96b0e1afcd12c1fe40ea10955805adcef49e4ed2ce3a8644cf206e9702a5
DjB0xb5388e596895cddeff01b8baef9f58536540df682d2222ff8bc0e629bba034b5
DjB0xd1ce6b58a1526f02dc9c54fe2a91d1ea2d4c40bff7ebcafc59f7c963f70bb74a
DjB0x71e85955ca1ba09d24b6f9a21bfa3d0e81e16c6b6a4908fef7c7b43c2d5790b6
DjB0xb8a7bcf97ab8dbf9710ff0db099730db3a5d79101b0f819048b760daefd96b5d
DjB0xbacf5cedb05953fc65beb9782fb34cf541a802b2d2a1ae4e2cae9d782c6624d2
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":34754}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":5866}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":10104}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":5345}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":15333}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":3111}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":4488}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":4876}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6402}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":33259}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6227}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6555}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":8919}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6161}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6161}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":24665}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":11115}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":57465}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6576}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6555}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":76317}
text/plain;charset=utf-8
  "op": "token-transfer",
  "tick": "dmt-nat",
  "amt": "10000000",
  "dta": "{\"op\":\"bridgein\",\"ethAddr\":\"0x586c508Fe13D854e8797Fc55eB47b01700A46539\"}"
{jLx0xd2e5c614e709849ba984bc848ac34aaecbed24b175f7f5efc85cba9e1e3df14f|depositor=bc1q6d2hsdyd4g34uxjp3wm6cuxhhu2g3hwesturqk|
DjB0x12e8cd811ba4eb2a051e7e50e9972494593b3fe8fd492de97177392bb08c47b3
DjB0xfcce50c40e601f603ffd8ab036dae32c5395d64af4f65340b143a2ced5a4ade1
DjB0x77c07605505159b99f6cf8224176ec2a669f90983bdaf1d91e866b86113419d9
DjB0x3624d7c4b1264c05acb3a6037758e96e64345c8712cc999f2ef0c4c596d0dbf0
DjB0xed3c2ebb79f0dd30c1ad70e2b0f62e88d028b92f805bc28718cdbf980e415796
DjB0x44401fbd73a3c3071ce3a6faad5f42a6fc099049a91c8cd10365b732650da162
DjB0xc0c9eeedcc26550a668b46fcc758b4213723720c6735ada59579db19d471944d
DjB0x08e19410c53d19cacf4c38d9e452c2648ddbf976d367bc9147168731be301cd1
DjB0x52969f1b8266e595dfc1268e6babccc4d0dbb65dea25b78e3b74604b88e2bd0d
DjB0xf6a7c2400ce6e3fab685fe8993bc14a8a5c21cf3906d0819478e73a9c39d9484
DjB0xea40ac6d0743a670973f7ab5172bbeb59ec44f8d52d3562cb720f576a7a763c6
DjB0x94aba122061f6fddf3a4d883e525f840bdc6e95e0f2d6a06a1b56ee1002f90e7
DjB0xdf2f5efb82ae84df7f5870be6b0c26a974235622d65e1747389f3d3f0d81083d
DjB0x01174ca1888326694c41d67c4b2e6dc2db3da87662432b895edf3c916cdb3e2e3
DjB0x3bc33c1f5771304c0a5f31f353ed38ac71263d9cc5351bd7e4e12fde1562c3873
0x2c878b709c5cbc9951b2fb0291
text/plain;charset=utf-8
LV{"p":"brc20-module","op":"withdraw","tick":"shhhhh","amt":"3000","module":"BRC20PROG"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"13800000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
DjB0x54dee6cc623ef46e12e8b4b5c514f34c19c07b3e9ac8aced082edf3028755cff_
]jLZForsat shemor tariqeh-ye rendi keh in neshan
Chun rah-e ganj, bar hameh-kas, ashkareh nist
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"200"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"45000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"21000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"19000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"36000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"36888888888"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"25000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"25000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"16000000000"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"ZFBE*","amt":"15000000000"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"ZFBE*","amt":"15000000000"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"ZFBE*","amt":"15000000000"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"ZFBE*","amt":"15000000000"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"ZFBE*","amt":"15000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"100"}h!
text/plain;charset=utf-8
E{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"689646464.464643"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"2"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"2"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"2"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"2"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"9000"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"8000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"3000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"16930881113408376301"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"15293715880973271010"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"15642755623748368453"}
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"mint","tick":"acxs","amt":"210000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"50"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"10000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"20000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"20000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"10000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"30000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"1100000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"6500000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"6500000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"7644444444"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"6000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"1400000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"6500000000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"10082841390060059776"}
FjDOUT:93636430FAB399002ABF58076524B160EE1242DBBA77FDBAA89CE99AB6466EA4
FjDOUT:678D7C2B373740F7CF34B96BBDB48F9B94E0C93492F28DAE6DCDF36AE68D7B88
9j7to:USDC(ARC):0x4b629D256dB93c512F59f7f1ED1E0Be2A0c8CE8f
6j4Cfz:to:USDT(TRON):TSPWUPanvMdFKw9tEkfcrznFtF5TioW4cv
6j4p7k:to:USDT(TRON):TQxqUh3RZhD4eKuJj4MJBXzjTW4WSyKxvQ
9j7zqg:to:SOL:3xmB7h6diJcFxq5aScipVHGoP8Fs1H7JF3oRTxteGzEF;
7j5mZm:to:QNT:0xe6745eA5540bd00cfB6e87a3408CDc4F702fbE78
DjB0x975cf761d4e0e8aebc8b8b39202655aabe97bd2607316b320f01cdde35a5a406
EjC{"p":"crc-20","op":"transfer","tick":"LEAF","amt":"14956142857143"}J
>j<to:gasDAI(Anubis):0xCA1B9048318E7DA66f0203f7d83e173c9c5d25bC
CjA=:BSC.USDT:0x304c56856A07140aeB114744433B4055B44136b9:0/1/0:g1:50
9j7to:USDT(BSC):0xAa437361d2110c9C511137600Fe7B1890633F58F}
FjDOUT:49F04DB35C3CD3BE4A88A0088D01E9331B990882D1603B9E223D245DEE9A413F
HjF=:l:ltc1quvqn7p66kldw75rcd9eylf64axxww929n6wll8:8436342/0/0:-_/t1:0/70
DjB0x1fce1e1989cf01b2e8b9b708b3c1c60a51aaad446a819ffe014f9f1dca849a10
DjB0xf07a9ec7e481819f7d1bc4177b6ed908f4b00d55cf299664e93647d9c029ccb7
DjB0xe0949643ca69a0735aee85e4e5031700344e5bf91d4739660a091e38811a9448
{jLx0x0680abce218ef93d936226cb98827f98fbe9996365eda4235fdaa2f7f54db98d|depositor=bc1q6d2hsdyd4g34uxjp3wm6cuxhhu2g3hwesturqk|
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6074}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6074}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":20496}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6555}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":7711}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":44718}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6555}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":13066}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":53814}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":10793}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":65550}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":65550}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":13497}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":1818}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":5244}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":2722}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":5373}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":14377}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6642}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":9515}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6681}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":38125}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":38125}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":44366}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":20476}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":57322}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6533}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":10846}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":20862}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":4968}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":23178}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6074}
DjB{"p":"crc-20","op":"transfer","tick":"LEAF","amt":"7573380952381"}J
jBackgroundjLight GreydBodydBlueeShirtgNo HomodFacej3D GlassesdHatsdLeafdItemgCrayonsjAttributesdNone
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1254 1254"><image href="/content/b069e369781e2909fe579ff540f6329af55363b507107d29139435aa1727a2d3i9" width="1254" height="1254"/><image href="/content/b069e369781e2909fe579ff540f6329af55363b507107d29139435aa1727a2d3i14" width="1254" height="1254"/><image href="/content/86f007fce21c131dd94bc5fc568fd99291a3842b55a6a40ba0b1738ce68a48a5i4" width="1254" height="1254"/><image href="/content/e03569dfa90d0ff76eb60efadcb1dd342624fcdceee4b5177c47d0dfde9b2916i8" width="1254M
" height="1254"/><image href="/content/a964cf84f24d55d4efe8ada2eb0338b483a9d9120d6daa2e6057a1679d338271i14" width="1254" height="1254"/><image href="/content/9f6c7dd3c386fed0387b293382622b84382dfb43e342bc64f574ce810600d7e1i11" width="1254" height="1254"/></svg>hA
jBackgroundcReddBodycCoweShirtsPartial Button DowndFacelMi Vida LocadHatsgBandanadItemePlushjAttributesdNone
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1254 1254"><image href="/content/b069e369781e2909fe579ff540f6329af55363b507107d29139435aa1727a2d3i11" width="1254" height="1254"/><image href="/content/b069e369781e2909fe579ff540f6329af55363b507107d29139435aa1727a2d3i17" width="1254" height="1254"/><image href="/content/86f007fce21c131dd94bc5fc568fd99291a3842b55a6a40ba0b1738ce68a48a5i10" width="1254" height="1254"/><image href="/content/e03569dfa90d0ff76eb60efadcb1dd342624fcdceee4b5177c47d0dfde9b2916i17" width="1M
254" height="1254"/><image href="/content/e03569dfa90d0ff76eb60efadcb1dd342624fcdceee4b5177c47d0dfde9b2916i25" width="1254" height="1254"/><image href="/content/9f6c7dd3c386fed0387b293382622b84382dfb43e342bc64f574ce810600d7e1i0" width="1254" height="1254"/></svg>hA
jBackgroundnBitcoin OrangedBodyeOchreeShirtpBitcoin BathrobedFacelMi Vida LocadHatskJeet TurbandItemiHamburgerjAttributesdNone
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1254 1254"><image href="/content/b069e369781e2909fe579ff540f6329af55363b507107d29139435aa1727a2d3i0" width="1254" height="1254"/><image href="/content/a64eb531d5e8a7c55bbca2aa0750854251a67b71696c2f64e199bfa7a94f1733i0" width="1254" height="1254"/><image href="/content/a64eb531d5e8a7c55bbca2aa0750854251a67b71696c2f64e199bfa7a94f1733i10" width="1254" height="1254"/><image href="/content/e03569dfa90d0ff76eb60efadcb1dd342624fcdceee4b5177c47d0dfde9b2916i17" width="125M
4" height="1254"/><image href="/content/d1b79865b4fb7bdc3b53241f06a4e3ddb053064029d83b095422715f14012e44i22" width="1254" height="1254"/><image href="/content/9f6c7dd3c386fed0387b293382622b84382dfb43e342bc64f574ce810600d7e1i16" width="1254" height="1254"/></svg>hA
Astamp:{"p":"SRC-20","op":"TRANM
 SFER","tick":"MSKK","amt":"20000M
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"17584826178642112388"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"14829648380163727202"}
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
DjB0x01174ca1888326694c41d67c4b2e6dc2db3da87662432b895edf3c916cdb3e2e
DjB0xd3730c5e911508bf5e81ad7f7f1a6304bf7a7e608311b7145698f439e02e17f1
DjB0x617aae73f6240ca9d674b0685d861e81d6bfedef5b6baf244b164c65a666cb77
DjB0x9d9055aa35fb8696282f6ce459ec1d4e566c3510a0f3b73fa5bc38a8f5d87f26
DjB0x201923b34bea75c14654f2a843af696b44db15971ec83cf29652c41ed7b5872d
DjB0x3dd0609ffdc1b37dbba4dc325d10dcb3d2c42645cc2aa28824ff49081b60888e
DjB0xb121f9b741f045670ea76739db00334959408b562e514b9e76d8b0e8215d3af6
DjB0xee09436e5a7ff4ea04efeb915f8657d1e088ef35440be63df1086322081d60db
DjB0x456329793f2d32bfc75986d5db7ee302097249a2670c1b05d596e53577b4d540
DjB0xf92da3f152194786430c6c828360efac2051c882ea0bb7b89c1edd8f2fc25dc4
DjB0xd843695fbf03fe2588545b4392d070bd37bbf42df506c3a645ea272564e4e328
DjB0xca9826062f8055af96568808adab0d64621dbcc64e9ae28a55f623ee752fb789
DjB0x5ad7fa4415af78c29548f30ffc7affc0f0ae1ff97a69f30e2557e7f00850bbcb
DjB0xd563f09c53b12d815710f3879a0c8fa8262244960aea628a148e2f699b479700
DjB0x7f99f0baf5ed816b2f0396541ea03a0d545fcc46e670c662961fef4a76116a95
GjE=:c:qp5xspgqx8snzdzv4le5cy7ctpj4577krg9v9mckga:1899751/0/0:-_/t1:0/70d
Aj?=:x:rD4n6SKAJui1RYHVy5WT85FUh5xX7TT6GH:179380900/0/0:-_/t1:0/70
DjB0x2a662d8e655058943f87f41ee442d5a02e9ce98fb6f3ec1942ee6d993e419e72
text/plain;charset=utf-8
LW{"p":"brc20-module","op":"withdraw","tick":"shhhhh","amt":"22000","module":"BRC20PROG"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"9999"}h!
text/plain;charset=utf-8
LV{"p":"brc20-module","op":"withdraw","tick":"shhhhh","amt":"1000","module":"BRC20PROG"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"50000000000"}h!
DjB0xf4d84e6a108d3f7841801a2abb5fb4ae1d108a8c40a26b0431718277a8cfce4d
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ZBYY","amt":"521"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"180"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"180"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"110"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"180"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ZBYY","amt":"200"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"220"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"180"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"130"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"30000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"15000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"60000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"35858585858"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"68000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"69000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"60000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"50000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"70000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"21.5"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"ZBYY","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"TRUM","amt":"1000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"2"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"2"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"60"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"90"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"70"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"80"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"90"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"70"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"80"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"70"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"90"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"20"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"2000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"2000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"8000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5555555564"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
?{"p": "brc-20","op": "transfer","tick": "shhhhh","amt": "3000"}h!
text/plain;charset=utf-8
?{"p": "brc-20","op": "transfer","tick": "shhhhh","amt": "3000"}h!
text/plain;charset=utf-8
?{"p": "brc-20","op": "transfer","tick": "shhhhh","amt": "3000"}h!
text/plain;charset=utf-8
?{"p": "brc-20","op": "transfer","tick": "shhhhh","amt": "3000"}h!
text/plain;charset=utf-8
?{"p": "brc-20","op": "transfer","tick": "shhhhh","amt": "3000"}h!
text/plain;charset=utf-8
?{"p": "brc-20","op": "transfer","tick": "shhhhh","amt": "3000"}h!
text/plain;charset=utf-8
?{"p": "brc-20","op": "transfer","tick": "shhhhh","amt": "3000"}h!
text/plain;charset=utf-8
?{"p": "brc-20","op": "transfer","tick": "shhhhh","amt": "3000"}h!
text/plain;charset=utf-8
?{"p": "brc-20","op": "transfer","tick": "shhhhh","amt": "3000"}h!
text/plain;charset=utf-8
?{"p": "brc-20","op": "transfer","tick": "shhhhh","amt": "3000"}h!
text/plain;charset=utf-8
?{"p": "brc-20","op": "transfer","tick": "shhhhh","amt": "3000"}h!
text/plain;charset=utf-8
?{"p": "brc-20","op": "transfer","tick": "shhhhh","amt": "3000"}h!
text/plain;charset=utf-8
?{"p": "brc-20","op": "transfer","tick": "shhhhh","amt": "3000"}h!
text/plain;charset=utf-8
?{"p": "brc-20","op": "transfer","tick": "shhhhh","amt": "3000"}h!
text/plain;charset=utf-8
?{"p": "brc-20","op": "transfer","tick": "shhhhh","amt": "3000"}h!
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
6j4zNe:to:USDT(TRON):TEhka3YFptEVuCwQcZDFndh7s7kZmYyAz4
6j4lif:to:USDT(TRON):THHDjgriR5fYXK1MJgu9EU5bGwsPBRwsc5
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"1500"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"11581002986066839190"}
6j4QWo:to:USDT(TRON):TRm9EjjTjLVtwrvKxoh48zvasEtDd9EPj2
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"sats","amt":"1057391000"}h!
=j;Jjf:to:USDT(BSC):0x6bdaA4b269E74fA338081459E9e496916AB23b64
=j;W4D:to:USDT(BSC):0xBdaa91552b9fc26FA367D1d54d60173fE8B3b719
=j;pzf:to:USDT(BSC):0xF272dfeD12ed3356C369d32E894547c3Aa676DA2
=j;g3y:to:USDT(BSC):0x932E50fe5311Bd95875a2C181b40A8A0D0EdCD95
=j;uGw:to:USDT(BSC):0x957c8Af74A5b0f658E9F334C332860243073e9c8
6j4nLr:to:USDT(TRON):THGXjowbzKeY2AdjcozPZXJdtdhD7k32z8
FjDOUT:F4DB599FF2A3FE09DEE4B4983AF009FE40164566ED7768A8548A1163DBB45C75
FjDOUT:44387AFEA5AFE7CDDA72E851D4D86D5BED04CDFA516BDB92609045BD0B75D2DF
FjDOUT:3914491B336E40D1381DC4D980D25440E1ED71D0CF2E4D080E43AB4948469F4C
FjDOUT:F72D3413EB156F0E13CD52F61A358D6BC4883F28E428AF4269A9A724B99632DA
6j4D3p:to:USDT(TRON):TJQbEpN2nFGYQabmw9iB4wqf5Hn9off9Me
6j47KX:to:USDT(TRON):TS3s2gFENHbEvMe74gxVPeaottAtTfQA1w
6j4Fmr:to:USDT(TRON):TJRPXCkAdcMzmka52ogcbnphyUWzHVtfNz
6j4N25:to:USDT(TRON):TKf8zJZGHGoGC59BX7Y5F2PPayTg6vphiA@
6j4MaE:to:USDT(TRON):TY5DgBz1RKC4xd9hhusA19jrGcc9UPTE4Y=
9j7SkQ:to:SOL:36UHJmbbMq2eixrMF16XjNSxMwqibPhjSnSMRMFTaJME
=j;rHs:to:USDT(BSC):0x48db70eB8A58b6031362B5267A5a41580d178F67z
=j;Iph:to:USDT(BSC):0xd88A7874FA5A584B9Fd54090FfeCcbCfFE8167dB9
DjB0x4bd969a45835af029377bc7edc80810020ea620e6d8aa5f09d9c8a0f1a8b4722
?j=P0Q:to:USDT(ERC20):0xeAF2d0B57078B0dE2B84298f5cd078d0596C47B7
?j=qY4:to:USDC(SOL):4ZsVFxfviqXArKLV3YkATb1bDmmU1mZV3w1nWPbEB9kv&
DjB0xfc3f9bc1e2976a37f6d7b8c3d40f85fef76e7c71a17ce8b75616d0808d69baec
DjB0x91578d871f8d2e91b449732e0c28b4fbad7a7c8b25fb0ad74d0ea74fb8a83119
DjB0xd58edf1fbcd41c5d7112478bb62355cbc7117eef63fefda366e9f946f544a12c
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"20000"}h!
9j7to:USDT(BSC):0x12597114062e7570C2FBbd727cBDA216C4441DA6
;j9to:USDT(ERC20):0x1eb49Ef667Ba39566911f7D776CF646d0bC7Ce86
9j7to:USDT(BSC):0x12597114062e7570C2FBbd727cBDA216C4441DA6G^
@j>from:698.8USDT(BSC):0x0e908cb41692c88a600d6875b63CE2F339f2C1cbM
7j5from:110USDT(TRON):TLxqmywuzWesMHc8qFvPgKPznVXgDDNGGs
{"p":"brc20-prog","op":"c","c":"0xdbb5b6a1d422fca2813cf486e5f986adb09d8337","b":"AVYI+Ff/DGKHm7PdlJxM8G9xv3woHc8k0WPn/x9A/x4D/w3btbah1CL8ooE89Ibl+YatsJ2DN/8fAf8fwP8eB4f/HgHg/x4CgP8eAf8RDJvXZ91Qs+zuRp+IqfmDeqLtyxw67MwHPSF1XUo1tws3pK1IliuGfs0n1+csHj7K/xHhn/d2x3Ipl9qYv5I6YLdHSLIAsEk55l+HNPFV9Avijg500eu+8euqzMCn2blIlP8QBBtEKAP04l3m6A4qL5ZWhhm7oK91QvgbXKO9Mwc0WJOgc1GDC0ixTT3uBbh4whG7/xHS0z30Ctq6d8zn7K52lBXyfwgygQelVIOfxUQkq9Yc8hLBOlnJB5I4qd0KsKqm6/8fgP8QGAYVL1hXx/3zpCzTq21aFSdbuvmnQzogySwlQAX63hV8TqZp4ycmJ5wwNqjFbtlu/xAL
DPRboNg6NiDbohe/7UpGVlEkqi8ZDXPkL6LlmBa758v8BN5QkMkLZgdSGkNGUREYd/x9B4XbPEF3vJPwfNDHR3Txw0lugnRXZkIQfzo/xqyMls55l0CLZxgJuPnURdLI2UQxcNt2BBwZi3VPvp46OKObe8xz/Hw"}h!
DjB0x2eded3e2085fbbc852e4e9ca99d501ab235539798ef6e993cdc27494d5ebd17b
{jLx0x29b175ddcbf44a0599b2188d583d42e3b547260a4baba6e381db6bf7c9235453|depositor=bc1qq2mvrp4g3ugd424dw4xv53rgsf8szkrv853jrc|
DjB0x16e3013c40bc41dc009cbae69e41b15f5f15d4fee8b864bcff7fb44982a42f6c
DjB0x9e15714f26e6e546d65e7c4163cddc7905cf604e90293e2a633245f3f4b5a2e6
DjB0x029ee485d7833a507a1d2a18be9bdb4ae3ca9df86551d372f6e451b7338fb4ff
DjB0x80f2205d6479b7b6de9f38e53d406da3f74d9998ba7d8125b059782574004937
DjB0x2f90b1d1e8f0d36d60ea7ef30efd9480e295e607fae02b5aef43fe1f0cf47f9a
DjB0x4fd967c3dac455da0e4385daa299f75b917556d5631fecd102014bb540adeb41
DjB0x859e9208b04591ac0773c9f6b1e051d0083733da363dcf68b6b6c27c2807e416
DjB0x99495d946bd69120033f9beb07e837687ae4105beea45ea0bd1dbd47f03fb729
DjB0xad7e8b68dc05a976caf1d5f13bb07846b48b96adf5099e7c09129b198f677908
DjB0x89500816578ba50fc00de28922218be0fb578836147b85aa662cd4238f25b99b
DjB0xd1a9799c45061134d3400a695756026d13c96d36087a081561244290ccc56775
DjB0xe8158fbdf215ef72f6e4bbcd060e979f9b6337c4e7e7cf86fb150d6e89e0eb57
HjF=:l:ltc1qhthfnyk6zrfu97dv5x2whfc3yvttlc8dywea78:4515451/0/0:-_/t1:0/70
DjB0xd0f573ac25bd84b45d389d673b6cb57f77a85fc5d6c75830915531ca4027e264
DjB0x8e51135088aabd09d2f877aa38880fc2161f3ae385b305df229246941f044697
DjB0x33c372aef8bed8bc1cfc28ff3604d8e1249b721a130a85c5f04052d66e613064
DjB0x521feec7ebe474de2c6ddae9e0f57c3a4ce08c55e262bacc126188a8b04a640f
DjB0x4cc38459b5fc061226648d698d14f11486c4a8da9473c023b5497e389f1dce9b
DjB0xdf184643b01646bba5c4490c75e7a2c093db3dd5af3516fdb1c813f767320df6
DjB0xd8d57518b125427ef9e28bf57d42ef5a60cd9c3c31e329ecf8ec46f16e90b3fb
DjB0x6424435bf9291ceb361ac88e993bb0e0d67cacc3489bf331fca840707326a8db
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":290711J
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":42304}
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":103337J
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":31664}
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":143229J
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6380}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6576}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":27810}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":18039}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6445}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6511}
DjB0x9e8f375ecdb6b33ad72661bf7836e99899191a685567103821b94c8e3e1db7ca
DjB0xaadea5959c87d8af51c4c52f5403266783ed91d10fd0b56c1eaeb9599ca139e0
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":7361}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":84078}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":22066}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":7137}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":1378}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6511}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":7491}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":62873}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":42768}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6292}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6555}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6380}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":9161}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":26074}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":93463}
<stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":848}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":25957}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":1577}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":9190}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6161}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":27645}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":22127}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":5659}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":66017}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":6576}
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":155855J
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":52463}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":3311}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":18213}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":68490}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":10944}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":1417}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":8244}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":4239}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":2251}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":32039}
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":239229J
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"ordi","amt":"240.814944"}h!
DjB0x1fce1e1989cf01b2e8b9b708b3c1c60a51aaad446a819ffe014f9f1dca849a10
EjC=:e:0xFC00901A26De90748726c1a631992b696003B778:37294/0/0:-_/t1:0/70
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
DjB0xdb5be40f871610a39d42845b96ac61768d464c7dbde6ce8cc9768c1921ed506b
DjB0xbe431f6675b11b67cab795f46e085ffa6edef878706ce5b04ff67bf174907dab
DjB0x139e3a731807413a6d0438b690920c001c43c7c01658e7d753ab8e26d659153a
DjB0xc3109b2de890114e7d673d0f1515a7a3ecb003c18c82813a7ad5e5359d6ba54a
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"ordi","amt":"9.765514"}h!
DjB0xe1a2b90c60f5ea45c71e038b3ea0a8bde9853d77a0eb0d2ffb55f2a8617aa05f
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":"ordi","amt":"58.752165"}h!
DjB0x76fb3b979b1ac8b2a607c0746faf609b838758b69b6ecf5063116f789baeb8b9
DjB0xf5437b6a4ce480c2bf214a0340a1a1140b56f88e0b4cc74220da99b3ccfbb360
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"ordi","amt":"0.645142"}h!
EjC=:e:0x0d1fc8dC965825c5Fe426e2080a31EE17a5380Ca:26392/0/0:-_/t1:0/702
text/plain;charset=utf-8
D{"p":"brc-20","op":"transfer","tick":"sats","amt":"75567044.357335"}h!
FjD=:s:0x45d90cCC300648F230B805e965461309828A589C:131590/0/0:-_/t1:0/70
FjD=:s:0x4460434199DA68cfF88dde9a81E694713E0DB8AA:249328/0/0:-_/t1:0/70
DjB0x3bc1dbe593d0503f2686e405afb8d03df0481cd9b1c3f2c035fc7e41614360a23
{jLx0xa0923548cc5772530e696b7b36285a1bb4a6015971550b109660ed41aeb5e506|depositor=bc1qq2mvrp4g3ugd424dw4xv53rgsf8szkrv853jrc|
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}4
text/plain;charset=utf-8
I{"p":"brc-20","op":"transfer","tick":"ordi","amt":"3.438862108243552377"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"20000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"45500000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"13000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"
","amt":"300000000000"}h!
/Foundry USA Pool #dropgold/a
;j9from:0.0606ETH:0xD9A9b7B17804bf7c0A0477E75178354a70B0471b
=j;from:22USDT(BSC):0xc3D70D29b65f4049D80C68590a21e4003862F7C2={
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"11878324436338648284"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"14118947055145367571"}
FjDOUT:1C596F0E933D10B33CDFD424934AE65D7C8F49DEEEA33A4E4A9286259DDA9121
=j;O3g:to:USDT(BSC):0x9c77bf0f89FCB078D4b2544c3796CD96ba8AdE67
2j0to:USDT(TRON):TVtx8s5ofc9q5oyLzAX3QHth8cYfZ6oqYi
6j4efq:to:USDT(TRON):TGFW4r4DDapYNtqMSy1m8Zt75eBwkS3s8j
6j4V9j:to:USDT(TRON):TYwjfJb94MqBZv3LZRuZizzERr7znv2wk3
/j-p7P:to:TRX:TMwFabtWWCuHCM8PwW9QM3HWD4mzmncr8Z8
6j4pV9:to:USDT(TRON):TJRPXCkAdcMzmka52ogcbnphyUWzHVtfNz
6j4jwg:to:USDT(TRON):TXa3KSoTHcv3V6dmRCh7NkbQ35sa5grwC60A
CjANmV:to:GRAM(TON):UQAWwkq40HlqUHutzF118Z7XJ7uBs-VAh7srxXxzD0oQnwPA
DjB0x7eb029c67746accbe1e31f60ec23bbbb4a2bf1510648337021aa5694b806c89e
=j;Kfh:to:USDT(BSC):0x26AC6502CC6451d1F426F3a26Cc9772567bac4a7
DjB0x0e0d15c8a147ae4f8b8fbe88054a4e77b69877d263ab00d006215c5435e1fbdb
DjB0xde09947cc0c8a4f460774e07793b3d94c29075c0e2f21162b500da7241a2d10f
DjB0xe3d0ae97735dd1831b92c7c08854283cd1d8826202096eccaeb63617877f2867
text/plain;charset=utf-8
  "op": "token-transfer",
  "tick": "dmt-nat",
  "amt": "10000000",
  "dta": "{\"op\":\"bridgein\",\"ethAddr\":\"0x586c508Fe13D854e8797Fc55eB47b01700A46539\"}"
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"11443142295951113168"}
DjB0x4b116f0fa6f0032636daddfed10f3941bed8807c3434a4ee3b6b7b00ba3d3797
DjB0xb48cc8f7be73be698e143a0a41e13a0ea71abd0c15bf3d2ad8d04fb3218d0227
DjB0xf95f46b5aa70ff96f448174d536ab89c9cef518f562f01c73a013b8b7bb59424
DjB0xb2787ee76dd0dbfa7d2c67c3495aa3d4d1074e0fb6769904ad7976c3f67e6e28
DjB0x6602a5f2b434d38423d3fc205b8d650db18c4d0b05e4a8b469c269de610b4085
DjB0x29e8ec6a75f2e8c9e160cd025165ba88c25018ee24d79ad9e25114ca327de912
DjB0x1eabc495f550520323ad8ba1e584ef33e937569e3ad25a6e6c8f61a447a1181f
{"p":"brc20-prog","op":"c","c":"0xdbb5b6a1d422fca2813cf486e5f986adb09d8337","b":"AVYI+Ff/DGKHm7PdlJxM8G9xv3woHc8k0WPn/x9A/x4D/w3btbah1CL8ooE89Ibl+YatsJ2DN/8fAf8fwP8eB4f/HgHg/x4CgP8eAf8RDJvXZ91Qs+zuRp+IqfmDeqLtyxw67MwHPSF1XUo1tws3pK1IliuGfs0n1+csHj7K/xHhn/d2x3Ipl9qYv5I6YLdHSLIAsEk55l+HNPFV9Avijg500eu+8euqzMCn2blIlP8QBBtEKAP04l3m6A4qL5ZWhhm7oK91QvgbXKO9Mwc0WJOgc1GDC0ixTT3uBbh4whG7/xHS0z30Ctq6d8zn7K52lBXyfwgygQelVIOfxUQkq9Yc8hLBOlnJB5I4qd0KsKqm6/8fgP8QGAYVL1hXx/3zpCzTq21aFSdbuvmnQzogySwlQAX63hV8TqZp4ycmJ5wwNqjFbtlu/xAL
DPRboNg6NiDbohe/7UpGVlEkqi8ZDXPkL6LlmBa758v8BN5QkMkLZgdSGkNGUREYd/x9B4XbPEF3vJPwfNDHR3Txw0lugnRXZkIQfzo/xqyMls55l0CLZxgJuPnURdLI2UQxcNt2BBwZi3VPvp46OKObe8xz/Hw"}h!
DjB0x12941ab603472e3a0f9828f41906a204b7531e5875ccf846544593b9f6bdfbcf
DjB0x9949d63893e1c5fcf287e9de0c1dc4ff4650f6130f99e0a0449fa7a6eba16173
DjB0x687e8be6e90b38771a34118fef216fb310ed3f40662ddfc049dbb33e0e56eb23
DjB0x7c2f4cc6d6aa09810ebe3f4e443bf2f6b966143d09a8d629ed17d4f637ef16a4
DjB0xa0e5f80c992c1fb241acb2496d9c9a7855133bb05b45bf164a6649d0510003cd
DjB0xd98f0ff4a57c8218667573240c5a3698609fb597df8dafdf2fdccbbd34c8db83
DjB0xf36956b6e9f0e2abe57565c1832d4d0cd842d69d4db3bdfbeb3a4e80f2190200
FjD=:s:0x5876F306Bc2222B97541E15795AcD5cF38cf24Ad:123265/0/0:-_/t1:0/70
DjB0x681e091eed5cd30ccbfccb083c582ca9024cd2c406e1ce016656c884afa47875
{jLx0xbaebb7bad789aab03fc86b522bd3a0a53b6470a4c6977b3c4a5e3b51fb2dd1b2|depositor=bc1qlct26nwnkqdglzxw26uqp65x9n53mzh7tzpl62|
{jLx0xb9222a976bee4687da5647a295e28c2a27752e89ccfde053071a0ac0708e867d|depositor=bc1q6d2hsdyd4g34uxjp3wm6cuxhhu2g3hwesturqk|
DjB0xe5b6d996521fc78facd3872681c6a66f5ee0f8dbc33801219f4b3c2a8b922b483
GjE=:l:ltc1q3h2e0kz400jvz25vpuw2m7a37pgyvvxxaugpxc:920467/0/0:-_/t1:0/70
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":47732}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":8236}
=stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":1654}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":19418}
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mske","amt":58055}
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"25000000000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"2000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"25000000000"}h!
jBackgroundnBitcoin OrangedBodyeOchreeShirtlBitcoin MonkdFacegGlassesdHatshCock CapdItemmBitcoin StaffjAttributesdNone
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1254 1254"><image href="/content/b069e369781e2909fe579ff540f6329af55363b507107d29139435aa1727a2d3i0" width="1254" height="1254"/><image href="/content/a64eb531d5e8a7c55bbca2aa0750854251a67b71696c2f64e199bfa7a94f1733i0" width="1254" height="1254"/><image href="/content/8c93fba3eca5e68e579678c749c97e83e029a5629f05bb54ebafd5f31f82fd0ai0" width="1254" height="1254"/><image href="/content/e03569dfa90d0ff76eb60efadcb1dd342624fcdceee4b5177c47d0dfde9b2916i15" width="1254M
" height="1254"/><image href="/content/d1b79865b4fb7bdc3b53241f06a4e3ddb053064029d83b095422715f14012e44i5" width="1254" height="1254"/><image href="/content/9f6c7dd3c386fed0387b293382622b84382dfb43e342bc64f574ce810600d7e1i1" width="1254" height="1254"/></svg>hA
text/plain;charset=utf-8
{"p":"tap","op":"token-send","items":[{"tick":"dmt-nat","amt":"1503357011","address":"bc1pcukxh2teu3h8jjvad0ynx7kgr2m7c2wuz7q02uunagujsqfux0rqed9k7u"},{"tick":"dmt-nat","amt":"81296267","address":"bc1p7ncudwy8egx88hk53tc2ldj725mxpvv6kjzp7859ttccec9asavsq3w2ca"},{"tick":"dmt-nat","amt":"38618129","address":"bc1q4ulvmqnsrsq5grn4243042rrfluyzadegtc8tn"},{"tick":"dmt-nat","amt":"32539921","address":"bc1q3pkhz0xzt2te6yqczevck5q04j4yl0vaaju0w8"},{"tick":"dmt-nat","amt":"28243491","address":"bc1q96rgt32cfsvhn5ucr9jvll5r9yM
6t4mfsnktefp"},{"tick":"dmt-nat","amt":"24500032","address":"bc1p8x5eg2wqmgnpkm6hrsxx7jml7v2qvs6nndh6gspp9elxxqlg0mtsle8n0y"},{"tick":"dmt-nat","amt":"23726936","address":"bc1qhx4het5k7vfqj67aqxhqp0cd97jsmlxfnk9qjt"},{"tick":"dmt-nat","amt":"21842750","address":"bc1qgs8wy6zh6n5aeek0anr4qs2j4299249kvfnpyp"},{"tick":"dmt-nat","amt":"15020843","address":"bc1pr3agpcm8j9aj5smfklex58d682xd6s70u3ngxpwh8349e5m0rjps4pe453"},{"tick":"dmt-nat","amt":"13051078","address":"bc1qzgqwvqzwtj4ppdtaw8ctvzsawffw2tjhcazs3m"},{"tick":"dM
mt-nat","amt":"12104353","address":"bc1q9kn0lvq45njgw2ag4hf63rlcag23tdv35jk9xa"},{"tick":"dmt-nat","amt":"12049377","address":"bc1q78yf7nvux9g0lhvf6lzsjk3eh9f3ajjpqx73a2pgj26lrjpu8kjs3v3eyv"},{"tick":"dmt-nat","amt":"11511883","address":"bc1p9rzvclxc2uyh70v9zxusxyejv59p5zh2hg7s9h3meef9d6ykegaqdadywf"},{"tick":"dmt-nat","amt":"11476547","address":"bc1q8kcmfx3gu7v4dsdywrwj3vwr7enwhfzrhktt9z"},{"tick":"dmt-nat","amt":"11251667","address":"bc1q4pgf9zk2gm40y76fjchyjs92klg6dw2uaxa4ye"},{"tick":"dmt-nat","amt":"10841999",M
"address":"bc1qn9gkuegh3wu0ef7j95auqd9wqslltfqh8wesh5"},{"tick":"dmt-nat","amt":"10280499","address":"bc1pn3z7ma8mcqawfgegruaneuwrlkqegrzv2s2yywa43h33hvafaz8qvyegx8"},{"tick":"dmt-nat","amt":"9811451","address":"bc1q67540ujnnnn65c43zyel6u698k6yvzmlcslymp"},{"tick":"dmt-nat","amt":"8649711","address":"bc1q534azmde40hmv6tqedaqsddheq2mrt97c3zqw8"},{"tick":"dmt-nat","amt":"8039039","address":"bc1qf58nu383rg3qvsvyd38z680w7dw874q0czvjum"},{"tick":"dmt-nat","amt":"8022736","address":"bc1phdshnhy5qvclm7flxhsul386ctpxxw2cyfM
krpavq0cm3myuw264snur4fs"},{"tick":"dmt-nat","amt":"7758621","address":"bc1qnaxn7lplawzyy3hfxhpwpn790fe7l0c0mjculs"},{"tick":"dmt-nat","amt":"7256319","address":"bc1pwvxeen0cz0ynjndqd028lj6vz6c0clw8jy3qugsh7vthfhrfp67qackuj8"},{"tick":"dmt-nat","amt":"6305891","address":"bc1qqqjel452vh09rhvaale5nzrjqx85t49dq7uryz"},{"tick":"dmt-nat","amt":"6096122","address":"bc1q6k7d9jeyt69p7m4c4leyscne5gds608nng5zj6"},{"tick":"dmt-nat","amt":"6060237","address":"bc1pahnvlyflkmauewqnksv45veuwa56htcf38jvag4qpf0ut0ppxqdsmd6txm"},{"tM
ick":"dmt-nat","amt":"5998245","address":"bc1qan7vty4pq6qca5p7cawzh520j42wprdqlx7spz"},{"tick":"dmt-nat","amt":"5635525","address":"bc1pk57998kylwwdvw5266lr7xwagggdmvr2mnp4sjsxgmg0wmrc42gsszygpr"},{"tick":"dmt-nat","amt":"5469380","address":"bc1p73mxpgqgg4f05rf2v24rtgdwz9f47dp2n70gvqhzsk83k8lqxyxqyp3aej"},{"tick":"dmt-nat","amt":"5383424","address":"1GSdbjcWUooUwtjTLnDsBMHJVRyoTdC9b7"},{"tick":"dmt-nat","amt":"5375816","address":"12KkFRfMCLAvuEapHhyyAASHTcvksmxujG"},{"tick":"dmt-nat","amt":"5155252","address":"bc1pM
utx49fxewxdlyls0eqgesq6hprthx68ha8v9fmz0rql0qrdx6uxqeplzcp"},{"tick":"dmt-nat","amt":"5146388","address":"bc1qgteq0x6c606jk25rn79kezwzukedygqv5k6kqr"},{"tick":"dmt-nat","amt":"5131188","address":"bc1qtcdy0gflu2qseakcygt49wyqrjwg28qmw4vgff"},{"tick":"dmt-nat","amt":"5098273","address":"bc1pgmjryvqfvlaml0gquzzf0cwz79ev0gu8vqhp925m7dhqek92lx4q6vuqr0"},{"tick":"dmt-nat","amt":"5056289","address":"bc1qn8cej00cny376gx935rxjx57nddd4ykx74g78n"},{"tick":"dmt-nat","amt":"5039628","address":"bc1phh763wfhm0s35tenpm8msg6zrjxp8lL
23ple8q8frkkce2dv49nnse6yp5u"},{"tick":"dmt-nat","amt":"5034446","address":"bc1qgg946fnf4u8qq0xjzg5jh40u2r65ect0rt03qh"},{"tick":"dmt-nat","amt":"5019594","address":"bc1p3ekqz8ap5tpah7aq5lu46eqkq6asm0jxgy0pav6xeqdnapw2fjgqh4l5lm"}]}h!
QjLN=:BSC.BUSD:0xB685A2ecA91635ed6c176fE0147816aD1f8bcD3C:382922994/0/0:-_/t1:0/702
QjLN=:ETH.USDT:0xed6D3eb2819cd755AbdCE9728a19fe19e3F57125:125074900/0/0:-_/t1:0/70
EjC=:s:0x8c5b6e1F68d0A42086D9371A5feEE99401E9F118:98416/0/0:-_/t1:0/70}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}6%
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}b
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"6000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"4000000000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"16981270027911296347"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"15844221151698540703"}
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"9519564013"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"14000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"30"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"50000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"50"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"30"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"15000000000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"10324444444"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"15000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"30"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"10000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"60000000000"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"15000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"30"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"10000000000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"38000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"28000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"TATK","amt":"10"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"28888888888"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"35000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"42000"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"3000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"30"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"3000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"10000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"10000000000"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"DIOR","amt":"10000000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"TATK","amt":"10"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"1"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"7438000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"10000000000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"14853218487403054095"}
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"28000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300.1"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"30"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"99900000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"10000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"15000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"10000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"90"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"10000000000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"400"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"50000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"78000000000"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"
","amt":"300000000000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"7562385550"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"10000000000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"
","amt":"300000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"15000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"15000000000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"5000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"26000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"45000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"4850"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"12000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"8000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"2000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"6500000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"28000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"13"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"2000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"10000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"30"}h!
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":"
","amt":"980000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"30"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"42000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300.02"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"5000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"5000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"11000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"10000000000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"9"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"4.99"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"30000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"5000000000"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"DIOR","amt":"15000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"2000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"21000000000"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"10000000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"65999999999"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"14000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"21545790000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"4300000005"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"50"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"10000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"5000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"18000000000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"10000000000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"13045526208090609709"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW37","nonce":"11405973617222047624"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW37","nonce":"13011826142302788635"}
/Foundry USA Pool #dropgold/
9j7to:USDT(BSC):0x8fd1f6ab7c71b117B8C508a70633DD3092Cf0F7e
FjDOUT:939DEA90A6BA2A02ACD88260ED056775672DA2CEEC8B0776A98A4AEC999FF7E7
=j;1Xk:to:USDT(BSC):0x228b52fFF0b794cB74DF01bB8b6C35ca14604175
=j;tOf:to:USDT(BSC):0xebFc14941752B7461ed7F65067053C81d0bfA526
6j4XpC:to:USDT(TRON):TXrSY2BS9Y7MyTgmppydGcPYcs8i9TYosWRc
6j4ZL4:to:USDT(TRON):TDgtt6K37rbQUxmz9pPSXM31fpgVq6Xd4p
DjB0xe5bcdca5e1fa040025768d3254faf1e6fb8e0f4658668fa65f076add23487a7a
DjB0xb98d35a084799ec7d1040df3615c68e79f37efecaa910058f1fbfb7f5578f4ab
DjB0x9fdfedcd4938683b578a207b371c7d0cea85b872f8a680fe6c57374c002a7e1a
DjB0x7bf8ecbc0373ad5b9912d5bca09f853455e36c7c135d919edac6f55cb59430a7
DjB0x17bed9b03b3d35737848f01d1131d2a53e9cb4b4e7b2b50be2e3e80ad2be3f71
DjB0x313936ccfcbf777790bea51545db67fdb68b68c153a9c785b7518c19ad2c52eb
DjB0x113eacfb7fddf99b6bce911bb84525806e87a6115a5bebb0407485fd3d5547a6
DjB0xfd3b50777299d5fe6b18638cc4365e175d977f0a410b15a60832457e524b03e1
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
DjB0x4839776c626180262c03371a8926c449aaaa2932142fe3991d8368204f356f6a
DjB0x7e56d8fa7abdd5a5b4dd8599ffe716229871655bddf3d7722fa16ab414d94d81
DjB0x3111eacbe53057505565d83f31bd502afa691036b0a139f8bb38ec0b3d770c8e
DjB0x24c3158b131523a8c75fea1310f08ecedf51a8261995c331916ddb1b6f496b2a
DjB0x7ed36ec81d018e10f100507d0ca1329eaf12aef456e53d7ac7ac9af4188bb796
DjB0x2a3e792a1c9c84c0d1f53a33a14fc989363bcb32ed402ff670e0571d383ad415
DjB0x9cec7cb826d50144c200189601030c587aebb9b0222383a0f9e4dd7abaae2a7d
{"p":"shord","op":"name","name":"wanyay.shield","to":"shord126593bf315970873ac099c9eff466859dda0ee416f1ebcc5594a07e2ed13b4f20288669742731a6091fe4327199f42afefde2b1f34be6059eb9947a60465d144"}h!
OjLL0x10578ab9425f6c721e1b0936c4df3e3a6790157c4d86d4ccd9fc400214d9bfa4=|lifi
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
DjB0x4fddf8221f9cd5580f1ab94ee63ea782bc20a5524c816a62971a90866eb667c7p
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"30000000000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"Au   ","amt":"300000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"Au   ","amt":"500000"}h!
DjB0xfc66eb7b6aa1b535176a8fca12667142b256786e99de40fe1b3e26d51f08f5b6y
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"Au   ","amt":"300000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"Au   ","amt":"300000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"Au   ","amt":"300000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"Au   ","amt":"500000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"Au   ","amt":"300000"}h!
text/plain;charset=utf-8
D{"p":"brc-20","op":"transfer","tick":"
","amt":"16471656347.111"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"Au   ","amt":"500000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"Au   ","amt":"300000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"Au   ","amt":"500000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"32000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"25000000000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"Au   ","amt":"300000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"690"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"35000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"26490"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"Au   ","amt":"500000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"17500000000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"Au   ","amt":"500000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"Au   ","amt":"300000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"Au   ","amt":"500000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"Au   ","amt":"300000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"Au   ","amt":"300000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"14494672426163438358"}
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"Au   ","amt":"500000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"Au   ","amt":"500000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"18000000000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"Au   ","amt":"500000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"19"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ZBYY","amt":"100"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
beautifuldaytobealive.btch!
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
=j;P7b:to:USDT(BSC):0x5fE888E36ebb77cDcE55C2aB770f2006f8b1b892
6j4ZBD:to:USDT(TRON):TDYo8A5Ns5YjUzL2S1HTD53Dk8zfuWZ3ip
?j=nPb:to:USDT(ERC20):0x63939446FC257AEead2C27012Cd4665D4Ee73A8ef
DjB0x113eacfb7fddf99b6bce911bb84525806e87a6115a5bebb0407485fd3d5547a6
DjB0x8b7e6bb247be276f4b2907b784a02aa63ec3505e8911c0edab795f61834a9775
EjC=:s:0xB47f973Cc005A3fc0175a79e2AAcB9211AD86ce9:99638/0/0:-_/t1:0/70
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"17223000387480124079"}
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/html;charset=utf-8
FjDOUT:F4513EE97630103F1187A65FD61E05ACE7E5EEDB80DB27C55B8B47FE6885048B
FjDOUT:265B2AFAAE94AA5419F558100DDDAC96FBE41A77930054A29BBF1A158B501085
jBackgroundjDenim BluedBodydPinkeShirtnAstronaut SuitdFacegNeutraldHatsdNonedItemePizzajAttributesdNone
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1254 1254"><image href="/content/b069e369781e2909fe579ff540f6329af55363b507107d29139435aa1727a2d3i4" width="1254" height="1254"/><image href="/content/a64eb531d5e8a7c55bbca2aa0750854251a67b71696c2f64e199bfa7a94f1733i1" width="1254" height="1254"/><image href="/content/a64eb531d5e8a7c55bbca2aa0750854251a67b71696c2f64e199bfa7a94f1733i8" width="1254" height="1254"/><image href="/content/e03569dfa90d0ff76eb60efadcb1dd342624fcdceee4b5177c47d0dfde9b2916i19" width="1254L
" height="1254"/><image href="/content/9f6c7dd3c386fed0387b293382622b84382dfb43e342bc64f574ce810600d7e1i27" width="1254" height="1254"/></svg>hA
=j;KZ2:to:USDT(BSC):0x368706a2c9C72FC4C72999B50040417b72e42597
2j0to:USDT(TRON):TKb5Dn4wsCDEAGdrV8ZA9mTopDVfBbidwY
6j4n37:to:USDT(TRON):TPtcXxiWu7CepWGUbL7F7ozapdr8u9FF4Hc#
6j4ZDE:to:USDT(TRON):TH1bfLkf4QfYdzL5kyXZsvsjKha9beTCmC
/j-f9n:to:TRX:TYwjfJb94MqBZv3LZRuZizzERr7znv2wk3
6j4sVi:to:USDT(TRON):TDYo8A5Ns5YjUzL2S1HTD53Dk8zfuWZ3ipP
6j4sQf:to:USDT(TRON):TVFQBe3c3RD81MJPLiMwwGeepkyuZk6wGD
6j4jr4:to:USDT(TRON):TJ2pfooaocF4A99sZ6bR1oTQtiLHSmpJ4q
0j.from:100XRP:rLCCygafoDhRYTyPCk7LJPLRLkZ6zrnEk4
>j<from:101USDT(BSC):0xEC3597F0524b46b64a0D39221B992aF969910D7f
=j;from:20USDT(BSC):0x13AC2552b014a2537acE282b80DEEBFfAF2756BF)
DjB0x74d85e46334be6dc760e1fceb9cc067d748f11e50f8c7a3edbf777535e2380d4
DjB0x4d550bdfb1d594338b056218e588a0562bb7936157e5d03b2b8518abee3df312
DjB0xb694a474cdba030b713a5e105331376b7bd37149f080f2d82ce2b92e037e013a
DjB0xd25e05a3439564a3a57b1f8ea9e7d2c5a4ff5a3dc2468b355b2ae19b686291df
DjB0x316fb72e9120e7ef6ab7db3fb89a4cd021c3c8eef95511b74cd844f5242e72c8
text/plain;charset=utf-8
I{"p":"brc-20","op":"transfer","tick":"ordi","amt":"3.438862108243552377"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"sats","amt":"100"}h!
DjB0x15b629cc8f15439d890bfde45265a2ed8c29e3bf2d18293597d96df44fbe6d0b
DjB0x08a5c76409e916a9b6d431521c90b9fd79ebc25457de8b3f0296e1b1a0e44cdd
DjB0x169336108d29af323dd288b63b3b4d8a56080dd2c79901701fa549bb0f401f0b
DjB0x8074f26fc49c2eda3106afa92b0e9722a577cffdf795fb9e308703d1613fe581
DjB0xef777eb1054ea200cb8d100cf30d0666a4391aa6ff21ab8d62d7163d8e359edf
DjB0x7fe454cce95fc835ae23c7affad0d857c7cc2ba2f20a642f17dfbce4239e365f
OjLL0xf673efa2d04a270ac41bd7d9666831e4614e5e48bec8c2401e57b38b1a7b0ff6=|lifi
OjLL0xb838f4f381231cd1e11a34e46feba07e8eb70a638ca9191a3cfe063719e47787=|lifi
Bb0889d73bd7c7c2f35520e007461e1b9db4ff02f0fb420bcfeb72afba94811ec:0a
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"17"}h!
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":" UBI","amt":"100000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"50"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"1000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"12733972892683841137"}
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"8000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"40000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"1000000000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"50"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"10000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"50"}h!
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":" UBI","amt":"100000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
-j+{"p":"lucky-20","op":"mine","tick":"LUCKY"}
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"intl","amt":"4047020"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"intl","amt":"4047020"}h!
Mined by AntPool1023
MTLD_BATCH_2_399136_399137
KjI{"p":"crc-20","op":"mint","tick":"CPOW37","nonce":"12909752856508674059"}
FjDOUT:8C0AA6A2F1F879F3AC1CCB64F0D735F110FFEDB67DCA815A1F5A86C597311C5F
=j;SJv:to:USDT(BSC):0xC9AA6c76866cc748f1b61da55f1376a68ec3027f
6j4bE4:to:USDT(TRON):TFpxwaDUsoQTPg7PYnQ3ixjq6ajDVzZs2b
=j;BYb:to:USDT(BSC):0xCCd6688425025bbc32EcEF2109567367748aBC6d
6j49qV:to:USDT(TRON):TLwAefjgt48LsMvmHLneW63VMRXZ8fGEJVO
6j4X9R:to:USDT(TRON):TQzuWbXnKkpCNDv1f3r5r5xeseUCeBwY14
6j4CF2:to:USDT(TRON):TMwFabtWWCuHCM8PwW9QM3HWD4mzmncr8Z
?j=pbh:to:USDT(ERC20):0x65b17E6Cb75A9517d5f6EB04f408f54410AB14d6
FjD=:s:0x88E1e02728C155C3D60f93F09c12E1ed05892DAC:135842/0/0:-_/t1:0/70
HjF=:TRON.USDT:TAA6xDaaekmop4zoLTGoKuoCXm4ZTfeZLR:37038700/0/0:-_/t1:0/70
DjB0x4de257bcdccdeaff8d775a7d4d8044e47c74641966e332231c21d753719d3b3c
DjB0x8212498b83cfa01867d2bd291a524ea8ad7696ce80da27d6c76f34fa8e7060ba
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"17000000000"}h!
DjB0x0657ee352c502bc57a9460638433f795ce9fd1428fd273fd0813aa45fc0bd735
DjB0x5789355e6a00d53e81683edca7e67d634175a54550ac8c7a712b38520434e0fe
DjB0x09cdd99e9aaabdb887cef87af437c64b99c99d22813ef1895ed100fc02790ab0
DjB0x986d7bd1d02f9c3d7f5373f1530bb92badf88b0abba17755764a6c431e7adf4a
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"18395474052654833916"}
DjB0x8c93e1d77ac14e60d2ca7db982c14776c6a893cf0c3fb105aad6899fd8cd54b6
DjB0x9626837c46b32250152b3005e6453cd7e2539aba92388433c49e955647e86bd1
DjB0xfcfd88400a25e2416b46791f5bc8bf7a10cbc69ee1cdbd35d326a4665c663027
DjB0x87d93c1990ee56f8fd9d0b8081e74049a7ccfdf71629a8f9a411e5e0950bb586
DjB0xfe1a11dc0bdc74ad86ded401d4391c056bb21e8554ce747438eea41096825d36
DjB0x57f5460a933c247fd8af40d1bf0facb9bb25bf217687be824b1993e231ac6d23
Bc872df61dddba224cf675534baa9e9f2ec8fba0ff4900b518a6a9f379a1778fb:0a
6j4uKd:to:USDT(TRON):TZAzhAXkiRkeQFQhEoQ3EXdepkb2RcfuNx
B729d15fcf47eeaef6dd5be831fadc012a2d09eee66bbc237d9a0d1f783ff2e7f:0a
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"11547974555394009325"}
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"4580"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"100"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"
","amt":"100000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"19896744443"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"50000000000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"20"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"301"}h!
text/plain;charset=utf-8
C{"p":"brc-20","op":"transfer","tick":"
","amt":"4231722074.346"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"50"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"14651226441887514287"}
2j0to:USDT(TRON):TN5gHv3RofPJoKV6u8eh5igGJBrEET539c
KjI{"p":"crc-20","op":"mint","tick":"CPOW37","nonce":"12256193231048325134"}
FjDOUT:99086E79CAA36A63F119D1514C50B5F7F456788ABFC4F87BB93F59B86C9C7A09
=j;gww:to:USDT(BSC):0x11760A5Ee5d4Cc85F2D555e6032309BcA6DdC657
=j;LFr:to:USDT(BSC):0x782b1c54a771e9138bE4bf9fFb9A284B0B465921
=j;Au5:to:USDT(BSC):0x09163CcC2aBEE647Ed35B1Cef62FE17D608612b8
6j4tUF:to:USDT(TRON):TNPLJvfrUC5qY1soya7buDEyXRGTRvqqgJ
6j4zYq:to:USDT(TRON):TN11suSu5P8FLep3z2ZzS3n6CGzHKXeuRT
6j4CHk:to:USDT(TRON):THAh19MFmsEVUc8GEaZseCa92gEAsheatf
?j=gCx:to:USDT(ERC20):0x4F24c87402B15664cCede21AF5E4c8d5902D23519<
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"17181073268324582322"}
FjDOUT:62B3AE8E11A9E3400CBC33A8C3F80F13BB711EBFCF72B6755064BA22ACCAC58F
EjC=:e:0x86CEe1e2CB3aA03f0b5844E120D213630E18082d:25217/0/0:-_/t1:0/70
DjB0x938696d425c3ab7f8acdec518184ad6f0d6a6e007e5d7350aa391d8eacf61a26
DjB0x493c156a0ab5c9111c9d63ac6a004bbd3b21d578fab4154e6d97a8d48d0c96fb
DjB0x78bae4d0e372edd45873b8a981986733841ee74f21d1f8bb3c799ca628b4d7c6
DjB0xac21d2b31316fd59c39d3ce9f5bb9467b4a41b46028ff4ce7ce1022b893cc970
DjB0x27452e3901960cff2997bd065bcae940c769f0c76be4500151cfcf6407c954b6
{jLx0xcce90ffe00c086add180d569140fc62b8364037e41240b557dddfde0dd9dff84|depositor=bc1q6d2hsdyd4g34uxjp3wm6cuxhhu2g3hwesturqk|
{jLx0x7ebe1988a2aa4ee6a66417866ab669ee92bdd72086496654aa618d244689dc38|depositor=bc1qq2mvrp4g3ugd424dw4xv53rgsf8szkrv853jrc|
>stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mskk","amt":50000}
text/plain;charset=utf-8
  "op": "token-transfer",
  "tick": "dmt-nat",
  "amt": "9990000000",
  "dta": "{\"op\":\"bridgein\",\"ethAddr\":\"0x586c508Fe13D854e8797Fc55eB47b01700A46539\"}"
DjB0xa3c9d636a40a7f2860293c04cc96b8008afc8803fdb9e35d5e4984566af03e95
DjB0x3ce821f300a7969abd662f80718b4fccd914512a96a8a8a7bdb81228b6094163
DjB0xe690c6f2db4404ed64ca4fb2d0a8ff35768a01a5a6483d61141d74099bcb7e02
DjB0x9671734d77654729ad8ae040db34c2c5e34820ae74ec31f2ec8eb4fda436a970
DjB0x7cbd7fce3dc8039f6c22efecad8130d0d84e64d5f3a3f72d4c0b678c27f182c7
DjB0xd91092cef431585f3286aec66fa57eacc206d5689a03b9471417fee24eb05191
DjB0xc0ad9418c3b7fc30af0da303207df039267045e1a433294af08d5fed42190068
DjB0x234686291196426aa85e9d16dffcd618831431be3810e3e44f711f009203e36e
MjK=:u:0x18d49FfA1115Ed96D18979c3E172F2450968AEFB:59215295999/350:sk/tan:7/125
QjLN=:ETH.USDT:0xaaD995fCBF7A0cf9182b0C1Fa2539710A409AD21:217881800/0/0:-_/t1:0/70
QjLN=:ETH.USDT:0x602Ff10AfE0c6c81A0EA1adcA42555067d06dB05:128521100/0/0:-_/t1:0/70
DjB0xb4e793367a284bd47c17ab91642a20a229ce0cde6d599fdc3f4259c7a0c03ae43
uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuQ!
text/plain;charset=utf-8
LS{"p":"brc-20","op":"transfer","tick":"
","amt":"15823947301.073946016061342321"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
EjC{"p":"crc-20","op":"transfer","tick":"LEAF","amt":"30355476190476"}J
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FFST$","amt":"537"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FFST$","amt":"489"}h!
{"p":"crc-20","op":"transfer","tick":"STONK","amt":"20979021000000","to":"d4935b050c4be961547b969521b1b9ec7288a68a437ffd73f4215feecd094786"}J
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"26000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"27878787878"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"28000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"25000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FFST$","amt":"496"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FFST$","amt":"437"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"TRUM","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"AMT  ","amt":"690"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FFST$","amt":"537"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FFST$","amt":"620"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FFST$","amt":"564"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FFST$","amt":"469"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FFST$","amt":"512"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FFST$","amt":"512"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"1"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"11397389951429836529"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"13378697768307170727"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"13080238031574221355"}
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"14"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"5000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"5000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"5000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"2000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"10762866077916197666"}
KjI{"p":"crc-20","op":"mint","tick":"CPOW38","nonce":"12465329603451875772"}
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
KjI{"p":"crc-20","op":"mint","tick":"CPOW36","nonce":"14100314500832171559"}
SODA group: twins peeka
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"intl","amt":"4047020"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"intl","amt":"4047020"}h!
(j&SODA #8945 - #8946: Drawn Jun 28, 2026
dnamejSODA #8945edrawnlJun 28, 2026dseedvtwins tiny - panel 1/2dsizec2x1hsoftwarex/Pixaki 4.6 - iPad Pro 13" M5 - Apple Pencil Pro
dnamejSODA #8946edrawnlJun 28, 2026dseedvtwins tiny - panel 2/2dsizec2x1hsoftwarex/Pixaki 4.6 - iPad Pro 13" M5 - Apple Pencil Pro

blk00000.txt blk00001.txt blk00002.txt blk00003.txt blk00004.txt blk00005.txt blk00006.txt blk00007.txt blk00008.txt blk00009.txt blk00010.txt blk00011.txt blk00012.txt blk00013.txt blk00014.txt blk00015.txt blk00016.txt blk00017.txt blk00018.txt blk00019.txt blk00020.txt blk00021.txt blk00022.txt blk00023.txt blk00024.txt blk00025.txt blk00026.txt blk00027.txt blk00028.txt blk00029.txt blk00030.txt blk00031.txt blk00032.txt blk00033.txt blk00034.txt blk00035.txt blk00036.txt blk00037.txt blk00038.txt blk00039.txt blk00040.txt blk00041.txt blk00042.txt blk00043.txt blk00044.txt blk00045.txt blk00046.txt blk00047.txt blk00048.txt blk00049.txt blk00050.txt blk00051.txt blk00052.txt blk00053.txt blk00054.txt blk00055.txt blk00056.txt blk00057.txt blk00058.txt blk00059.txt blk00060.txt blk00061.txt blk00062.txt blk00063.txt blk00064.txt blk00065.txt blk00066.txt blk00067.txt blk00068.txt blk00069.txt blk00070.txt blk00071.txt blk00072.txt blk00073.txt blk00074.txt blk00075.txt blk00076.txt blk00077.txt blk00078.txt blk00079.txt blk00080.txt blk00081.txt blk00082.txt blk00083.txt blk00084.txt blk00085.txt blk00086.txt blk00087.txt blk00088.txt blk00089.txt blk00090.txt blk00091.txt blk00092.txt blk00093.txt blk00094.txt blk00095.txt blk00096.txt blk00097.txt blk00098.txt blk00099.txt blk00100.txt blk00101.txt blk00102.txt blk00103.txt blk00104.txt blk00105.txt blk00106.txt blk00107.txt blk00108.txt blk00109.txt blk00110.txt blk00111.txt blk00112.txt blk00113.txt blk00114.txt blk00115.txt blk00116.txt blk00117.txt blk00118.txt blk00119.txt blk00120.txt blk00121.txt blk00122.txt blk00123.txt blk00124.txt blk00125.txt blk00126.txt blk00127.txt blk00128.txt blk00129.txt blk00130.txt blk00131.txt blk00132.txt blk00133.txt blk00134.txt blk00135.txt blk00136.txt blk00137.txt blk00138.txt blk00139.txt blk00140.txt blk00141.txt blk00142.txt blk00143.txt blk00144.txt blk00145.txt blk00146.txt blk00147.txt blk00148.txt blk00149.txt blk00150.txt blk00151.txt blk00152.txt blk00153.txt blk00154.txt blk00155.txt blk00156.txt blk00157.txt blk00158.txt blk00159.txt blk00160.txt blk00161.txt blk00162.txt blk00163.txt blk00164.txt blk00165.txt blk00166.txt blk00167.txt blk00168.txt blk00169.txt blk00170.txt blk00171.txt blk00172.txt blk00173.txt blk00174.txt blk00175.txt blk00176.txt blk00177.txt blk00178.txt blk00179.txt blk00180.txt blk00181.txt blk00182.txt blk00183.txt blk00184.txt blk00185.txt blk00186.txt blk00187.txt blk00188.txt blk00189.txt blk00190.txt blk00191.txt blk00192.txt blk00193.txt blk00194.txt blk00195.txt blk00196.txt blk00197.txt blk00198.txt blk00199.txt blk00200.txt blk00201.txt blk00202.txt blk00203.txt blk00204.txt blk00205.txt blk00206.txt blk00207.txt blk00208.txt blk00209.txt blk00210.txt blk00211.txt blk00212.txt blk00213.txt blk00214.txt blk00215.txt blk00216.txt blk00217.txt blk00218.txt blk00219.txt blk00220.txt blk00221.txt blk00222.txt blk00223.txt blk00224.txt blk00225.txt blk00226.txt blk00227.txt blk00228.txt blk00229.txt blk00230.txt blk00231.txt blk00232.txt blk00233.txt blk00234.txt blk00235.txt blk00236.txt blk00237.txt blk00238.txt blk00239.txt blk00240.txt blk00241.txt blk00242.txt blk00243.txt blk00244.txt blk00245.txt blk00246.txt blk00247.txt blk00248.txt blk00249.txt blk00250.txt blk00251.txt blk00252.txt blk00253.txt blk00254.txt blk00255.txt blk00256.txt blk00257.txt blk00258.txt blk00259.txt blk00260.txt blk00261.txt blk00262.txt blk00263.txt blk00264.txt blk00265.txt blk00266.txt blk00267.txt blk00268.txt blk00269.txt blk00270.txt blk00271.txt blk00272.txt blk00273.txt blk00274.txt blk00275.txt blk00276.txt blk00277.txt blk00278.txt blk00279.txt blk00280.txt blk00281.txt blk00282.txt blk00283.txt blk00284.txt blk00285.txt blk00286.txt blk00287.txt blk00288.txt blk00289.txt blk00290.txt blk00291.txt blk00292.txt blk00293.txt blk00294.txt blk00295.txt blk00296.txt blk00297.txt blk00298.txt blk00299.txt blk00300.txt blk00301.txt blk00302.txt blk00303.txt blk00304.txt blk00305.txt blk00306.txt blk00307.txt blk00308.txt blk00309.txt blk00310.txt blk00311.txt blk00312.txt blk00313.txt blk00314.txt blk00315.txt blk00316.txt blk00317.txt blk00318.txt blk00319.txt blk00320.txt blk00321.txt blk00322.txt blk00323.txt blk00324.txt blk00325.txt blk00326.txt blk00327.txt blk00328.txt blk00329.txt blk00330.txt blk00331.txt blk00332.txt blk00333.txt blk00334.txt blk00335.txt blk00336.txt blk00337.txt blk00338.txt blk00339.txt blk00340.txt blk00341.txt blk00342.txt blk00343.txt blk00344.txt blk00345.txt blk00346.txt blk00347.txt blk00348.txt blk00349.txt blk00350.txt blk00351.txt blk00352.txt blk00353.txt blk00354.txt blk00355.txt blk00356.txt blk00357.txt blk00358.txt blk00359.txt blk00360.txt blk00361.txt blk00362.txt blk00363.txt blk00364.txt blk00365.txt blk00366.txt blk00367.txt blk00368.txt blk00369.txt blk00370.txt blk00371.txt blk00372.txt blk00373.txt blk00374.txt blk00375.txt blk00376.txt blk00377.txt blk00378.txt blk00379.txt blk00380.txt blk00381.txt blk00382.txt blk00383.txt blk00384.txt blk00385.txt blk00386.txt blk00387.txt blk00388.txt blk00389.txt blk00390.txt blk00391.txt blk00392.txt blk00393.txt blk00394.txt blk00395.txt blk00396.txt blk00397.txt blk00398.txt blk00399.txt blk00400.txt blk00401.txt blk00402.txt blk00403.txt blk00404.txt blk00405.txt blk00406.txt blk00407.txt blk00408.txt blk00409.txt blk00410.txt blk00411.txt blk00412.txt blk00413.txt blk00414.txt blk00415.txt blk00416.txt blk00417.txt blk00418.txt blk00419.txt blk00420.txt blk00421.txt blk00422.txt blk00423.txt blk00424.txt blk00425.txt blk00426.txt blk00427.txt blk00428.txt blk00429.txt blk00430.txt blk00431.txt blk00432.txt blk00433.txt blk00434.txt blk00435.txt blk00436.txt blk00437.txt blk00438.txt blk00439.txt blk00440.txt blk00441.txt blk00442.txt blk00443.txt blk00444.txt blk00445.txt blk00446.txt blk00447.txt blk00448.txt blk00449.txt blk00450.txt blk00451.txt blk00452.txt blk00453.txt blk00454.txt blk00455.txt blk00456.txt blk00457.txt blk00458.txt blk00459.txt blk00460.txt blk00461.txt blk00462.txt blk00463.txt blk00464.txt blk00465.txt blk00466.txt blk00467.txt blk00468.txt blk00469.txt blk00470.txt blk00471.txt blk00472.txt blk00473.txt blk00474.txt blk00475.txt blk00476.txt blk00477.txt blk00478.txt blk00479.txt blk00480.txt blk00481.txt blk00482.txt blk00483.txt blk00484.txt blk00485.txt blk00486.txt blk00487.txt blk00488.txt blk00489.txt blk00490.txt blk00491.txt blk00492.txt blk00493.txt blk00494.txt blk00495.txt blk00496.txt blk00497.txt blk00498.txt blk00499.txt blk00500.txt blk00501.txt blk00502.txt blk00503.txt blk00504.txt blk00505.txt blk00506.txt blk00507.txt blk00508.txt blk00509.txt blk00510.txt blk00511.txt blk00512.txt blk00513.txt blk00514.txt blk00515.txt blk00516.txt blk00517.txt blk00518.txt blk00519.txt blk00520.txt blk00521.txt blk00522.txt blk00523.txt blk00524.txt blk00525.txt blk00526.txt blk00527.txt blk00528.txt blk00529.txt blk00530.txt blk00531.txt blk00532.txt blk00533.txt blk00534.txt blk00535.txt blk00536.txt blk00537.txt blk00538.txt blk00539.txt blk00540.txt blk00541.txt blk00542.txt blk00543.txt blk00544.txt blk00545.txt blk00546.txt blk00547.txt blk00548.txt blk00549.txt blk00550.txt blk00551.txt blk00552.txt blk00553.txt blk00554.txt blk00555.txt blk00556.txt blk00557.txt blk00558.txt blk00559.txt blk00560.txt blk00561.txt blk00562.txt blk00563.txt blk00564.txt blk00565.txt blk00566.txt blk00567.txt blk00568.txt blk00569.txt blk00570.txt blk00571.txt blk00572.txt blk00573.txt blk00574.txt blk00575.txt blk00576.txt blk00577.txt blk00578.txt blk00579.txt blk00580.txt blk00581.txt blk00582.txt blk00583.txt blk00584.txt blk00585.txt blk00586.txt blk00587.txt blk00588.txt blk00589.txt blk00590.txt blk00591.txt blk00592.txt blk00593.txt blk00594.txt blk00595.txt blk00596.txt blk00597.txt blk00598.txt blk00599.txt blk00600.txt blk00601.txt blk00602.txt blk00603.txt blk00604.txt blk00605.txt blk00606.txt blk00607.txt blk00608.txt blk00609.txt blk00610.txt blk00611.txt blk00612.txt blk00613.txt blk00614.txt blk00615.txt blk00616.txt blk00617.txt blk00618.txt blk00619.txt blk00620.txt blk00621.txt blk00622.txt blk00623.txt blk00624.txt blk00625.txt blk00626.txt blk00627.txt blk00628.txt blk00629.txt blk00630.txt blk00631.txt blk00632.txt blk00633.txt blk00634.txt blk00635.txt blk00636.txt blk00637.txt blk00638.txt blk00639.txt blk00640.txt blk00641.txt blk00642.txt blk00643.txt blk00644.txt blk00645.txt blk00646.txt blk00647.txt blk00648.txt blk00649.txt blk00650.txt blk00651.txt blk00652.txt blk00653.txt blk00654.txt blk00655.txt blk00656.txt blk00657.txt blk00658.txt blk00659.txt blk00660.txt blk00661.txt blk00662.txt blk00663.txt blk00664.txt blk00665.txt blk00666.txt blk00667.txt blk00668.txt blk00669.txt blk00670.txt blk00671.txt blk00672.txt blk00673.txt blk00674.txt blk00675.txt blk00676.txt blk00677.txt blk00678.txt blk00679.txt blk00680.txt blk00681.txt blk00682.txt blk00683.txt blk00684.txt blk00685.txt blk00686.txt blk00687.txt blk00688.txt blk00689.txt blk00690.txt blk00691.txt blk00692.txt blk00693.txt blk00694.txt blk00695.txt blk00696.txt blk00697.txt blk00698.txt blk00699.txt blk00700.txt blk00701.txt blk00702.txt blk00703.txt blk00704.txt blk00705.txt blk00706.txt blk00707.txt blk00708.txt blk00709.txt blk00710.txt blk00711.txt blk00712.txt blk00713.txt blk00714.txt blk00715.txt blk00716.txt blk00717.txt blk00718.txt blk00719.txt blk00720.txt blk00721.txt blk00722.txt blk00723.txt blk00724.txt blk00725.txt blk00726.txt blk00727.txt blk00728.txt blk00729.txt blk00730.txt blk00731.txt blk00732.txt blk00733.txt blk00734.txt blk00735.txt blk00736.txt blk00737.txt blk00738.txt blk00739.txt blk00740.txt blk00741.txt blk00742.txt blk00743.txt blk00744.txt blk00745.txt blk00746.txt blk00747.txt blk00748.txt blk00749.txt blk00750.txt blk00751.txt blk00752.txt blk00753.txt blk00754.txt blk00755.txt blk00756.txt blk00757.txt blk00758.txt blk00759.txt blk00760.txt blk00761.txt blk00762.txt blk00763.txt blk00764.txt blk00765.txt blk00766.txt blk00767.txt blk00768.txt blk00769.txt blk00770.txt blk00771.txt blk00772.txt blk00773.txt blk00774.txt blk00775.txt blk00776.txt blk00777.txt blk00778.txt blk00779.txt blk00780.txt blk00781.txt blk00782.txt blk00783.txt blk00784.txt blk00785.txt blk00786.txt blk00787.txt blk00788.txt blk00789.txt blk00790.txt blk00791.txt blk00792.txt blk00793.txt blk00794.txt blk00795.txt blk00796.txt blk00797.txt blk00798.txt blk00799.txt blk00800.txt blk00801.txt blk00802.txt blk00803.txt blk00804.txt blk00805.txt blk00806.txt blk00807.txt blk00808.txt blk00809.txt blk00810.txt blk00811.txt blk00812.txt blk00813.txt blk00814.txt blk00815.txt blk00816.txt blk00817.txt blk00818.txt blk00819.txt blk00820.txt blk00821.txt blk00822.txt blk00823.txt blk00824.txt blk00825.txt blk00826.txt blk00827.txt blk00828.txt blk00829.txt blk00830.txt blk00831.txt blk00832.txt blk00833.txt blk00834.txt blk00835.txt blk00836.txt blk00837.txt blk00838.txt blk00839.txt blk00840.txt blk00841.txt blk00842.txt blk00843.txt blk00844.txt blk00845.txt blk00846.txt blk00847.txt blk00848.txt blk00849.txt blk00850.txt blk00851.txt blk00852.txt blk00853.txt blk00854.txt blk00855.txt blk00856.txt blk00857.txt blk00858.txt blk00859.txt blk00860.txt blk00861.txt blk00862.txt blk00863.txt blk00864.txt blk00865.txt blk00866.txt blk00867.txt blk00868.txt blk00869.txt blk00870.txt blk00871.txt blk00872.txt blk00873.txt blk00874.txt blk00875.txt blk00876.txt blk00877.txt blk00878.txt blk00879.txt blk00880.txt blk00881.txt blk00882.txt blk00883.txt blk00884.txt blk00885.txt blk00886.txt blk00887.txt blk00888.txt blk00889.txt blk00890.txt blk00891.txt blk00892.txt blk00893.txt blk00894.txt blk00895.txt blk00896.txt blk00897.txt blk00898.txt blk00899.txt blk00900.txt blk00901.txt blk00902.txt blk00903.txt blk00904.txt blk00905.txt blk00906.txt blk00907.txt blk00908.txt blk00909.txt blk00910.txt blk00911.txt blk00912.txt blk00913.txt blk00914.txt blk00915.txt blk00916.txt blk00917.txt blk00918.txt blk00919.txt blk00920.txt blk00921.txt blk00922.txt blk00923.txt blk00924.txt blk00925.txt blk00926.txt blk00927.txt blk00928.txt blk00929.txt blk00930.txt blk00931.txt blk00932.txt blk00933.txt blk00934.txt blk00935.txt blk00936.txt blk00937.txt blk00938.txt blk00939.txt blk00940.txt blk00941.txt blk00942.txt blk00943.txt blk00944.txt blk00945.txt blk00946.txt blk00947.txt blk00948.txt blk00949.txt blk00950.txt blk00951.txt blk00952.txt blk00953.txt blk00954.txt blk00955.txt blk00956.txt blk00957.txt blk00958.txt blk00959.txt blk00960.txt blk00961.txt blk00962.txt blk00963.txt blk00964.txt blk00965.txt blk00966.txt blk00967.txt blk00968.txt blk00969.txt blk00970.txt blk00971.txt blk00972.txt blk00973.txt blk00974.txt blk00975.txt blk00976.txt blk00977.txt blk00978.txt blk00979.txt blk00980.txt blk00981.txt blk00982.txt blk00983.txt blk00984.txt blk00985.txt blk00986.txt blk00987.txt blk00988.txt blk00989.txt blk00990.txt blk00991.txt blk00992.txt blk00993.txt blk00994.txt blk00995.txt blk00996.txt blk00997.txt blk00998.txt blk00999.txt blk01000.txt blk01001.txt blk01002.txt blk01003.txt blk01004.txt blk01005.txt blk01006.txt blk01007.txt blk01008.txt blk01009.txt blk01010.txt blk01011.txt blk01012.txt blk01013.txt blk01014.txt blk01015.txt blk01016.txt blk01017.txt blk01018.txt blk01019.txt blk01020.txt blk01021.txt blk01022.txt blk01023.txt blk01024.txt blk01025.txt blk01026.txt blk01027.txt blk01028.txt blk01029.txt blk01030.txt blk01031.txt blk01032.txt blk01033.txt blk01034.txt blk01035.txt blk01036.txt blk01037.txt blk01038.txt blk01039.txt blk01040.txt blk01041.txt blk01042.txt blk01043.txt blk01044.txt blk01045.txt blk01046.txt blk01047.txt blk01048.txt blk01049.txt blk01050.txt blk01051.txt blk01052.txt blk01053.txt blk01054.txt blk01055.txt blk01056.txt blk01057.txt blk01058.txt blk01059.txt blk01060.txt blk01061.txt blk01062.txt blk01063.txt blk01064.txt blk01065.txt blk01066.txt blk01067.txt blk01068.txt blk01069.txt blk01070.txt blk01071.txt blk01072.txt blk01073.txt blk01074.txt blk01075.txt blk01076.txt blk01077.txt blk01078.txt blk01079.txt blk01080.txt blk01081.txt blk01082.txt blk01083.txt blk01084.txt blk01085.txt blk01086.txt blk01087.txt blk01088.txt blk01089.txt blk01090.txt blk01091.txt blk01092.txt blk01093.txt blk01094.txt blk01095.txt blk01096.txt blk01097.txt blk01098.txt blk01099.txt blk01100.txt blk01101.txt blk01102.txt blk01103.txt blk01104.txt blk01105.txt blk01106.txt blk01107.txt blk01108.txt blk01109.txt blk01110.txt blk01111.txt blk01112.txt blk01113.txt blk01114.txt blk01115.txt blk01116.txt blk01117.txt blk01118.txt blk01119.txt blk01120.txt blk01121.txt blk01122.txt blk01123.txt blk01124.txt blk01125.txt blk01126.txt blk01127.txt blk01128.txt blk01129.txt blk01130.txt blk01131.txt blk01132.txt blk01133.txt blk01134.txt blk01135.txt blk01136.txt blk01137.txt blk01138.txt blk01139.txt blk01140.txt blk01141.txt blk01142.txt blk01143.txt blk01144.txt blk01145.txt blk01146.txt blk01147.txt blk01148.txt blk01149.txt blk01150.txt blk01151.txt blk01152.txt blk01153.txt blk01154.txt blk01155.txt blk01156.txt blk01157.txt blk01158.txt blk01159.txt blk01160.txt blk01161.txt blk01162.txt blk01163.txt blk01164.txt blk01165.txt blk01166.txt blk01167.txt blk01168.txt blk01169.txt blk01170.txt blk01171.txt blk01172.txt blk01173.txt blk01174.txt blk01175.txt blk01176.txt blk01177.txt blk01178.txt blk01179.txt blk01180.txt blk01181.txt blk01182.txt blk01183.txt blk01184.txt blk01185.txt blk01186.txt blk01187.txt blk01188.txt blk01189.txt blk01190.txt blk01191.txt blk01192.txt blk01193.txt blk01194.txt blk01195.txt blk01196.txt blk01197.txt blk01198.txt blk01199.txt blk01200.txt blk01201.txt blk01202.txt blk01203.txt blk01204.txt blk01205.txt blk01206.txt blk01207.txt blk01208.txt blk01209.txt blk01210.txt blk01211.txt blk01212.txt blk01213.txt blk01214.txt blk01215.txt blk01216.txt blk01217.txt blk01218.txt blk01219.txt blk01220.txt blk01221.txt blk01222.txt blk01223.txt blk01224.txt blk01225.txt blk01226.txt blk01227.txt blk01228.txt blk01229.txt blk01230.txt blk01231.txt blk01232.txt blk01233.txt blk01234.txt blk01235.txt blk01236.txt blk01237.txt blk01238.txt blk01239.txt blk01240.txt blk01241.txt blk01242.txt blk01243.txt blk01244.txt blk01245.txt blk01246.txt blk01247.txt blk01248.txt blk01249.txt blk01250.txt blk01251.txt blk01252.txt blk01253.txt blk01254.txt blk01255.txt blk01256.txt blk01257.txt blk01258.txt blk01259.txt blk01260.txt blk01261.txt blk01262.txt blk01263.txt blk01264.txt blk01265.txt blk01266.txt blk01267.txt blk01268.txt blk01269.txt blk01270.txt blk01271.txt blk01272.txt blk01273.txt blk01274.txt blk01275.txt blk01276.txt blk01277.txt blk01278.txt blk01279.txt blk01280.txt blk01281.txt blk01282.txt blk01283.txt blk01284.txt blk01285.txt blk01286.txt blk01287.txt blk01288.txt blk01289.txt blk01290.txt blk01291.txt blk01292.txt blk01293.txt blk01294.txt blk01295.txt blk01296.txt blk01297.txt blk01298.txt blk01299.txt blk01300.txt blk01301.txt blk01302.txt blk01303.txt blk01304.txt blk01305.txt blk01306.txt blk01307.txt blk01308.txt blk01309.txt blk01310.txt blk01311.txt blk01312.txt blk01313.txt blk01314.txt blk01315.txt blk01316.txt blk01317.txt blk01318.txt blk01319.txt blk01320.txt blk01321.txt blk01322.txt blk01323.txt blk01324.txt blk01325.txt blk01326.txt blk01327.txt blk01328.txt blk01329.txt blk01330.txt blk01331.txt blk01332.txt blk01333.txt blk01334.txt blk01335.txt blk01336.txt blk01337.txt blk01338.txt blk01339.txt blk01340.txt blk01341.txt blk01342.txt blk01343.txt blk01344.txt blk01345.txt blk01346.txt blk01347.txt blk01348.txt blk01349.txt blk01350.txt blk01351.txt blk01352.txt blk01353.txt blk01354.txt blk01355.txt blk01356.txt blk01357.txt blk01358.txt blk01359.txt blk01360.txt blk01361.txt blk01362.txt blk01363.txt blk01364.txt blk01365.txt blk01366.txt blk01367.txt blk01368.txt blk01369.txt blk01370.txt blk01371.txt blk01372.txt blk01373.txt blk01374.txt blk01375.txt blk01376.txt blk01377.txt blk01378.txt blk01379.txt blk01380.txt blk01381.txt blk01382.txt blk01383.txt blk01384.txt blk01385.txt blk01386.txt blk01387.txt blk01388.txt blk01389.txt blk01390.txt blk01391.txt blk01392.txt blk01393.txt blk01394.txt blk01395.txt blk01396.txt blk01397.txt blk01398.txt blk01399.txt blk01400.txt blk01401.txt blk01402.txt blk01403.txt blk01404.txt blk01405.txt blk01406.txt blk01407.txt blk01408.txt blk01409.txt blk01410.txt blk01411.txt blk01412.txt blk01413.txt blk01414.txt blk01415.txt blk01416.txt blk01417.txt blk01418.txt blk01419.txt blk01420.txt blk01421.txt blk01422.txt blk01423.txt blk01424.txt blk01425.txt blk01426.txt blk01427.txt blk01428.txt blk01429.txt blk01430.txt blk01431.txt blk01432.txt blk01433.txt blk01434.txt blk01435.txt blk01436.txt blk01437.txt blk01438.txt blk01439.txt blk01440.txt blk01441.txt blk01442.txt blk01443.txt blk01444.txt blk01445.txt blk01446.txt blk01447.txt blk01448.txt blk01449.txt blk01450.txt blk01451.txt blk01452.txt blk01453.txt blk01454.txt blk01455.txt blk01456.txt blk01457.txt blk01458.txt blk01459.txt blk01460.txt blk01461.txt blk01462.txt blk01463.txt blk01464.txt blk01465.txt blk01466.txt blk01467.txt blk01468.txt blk01469.txt blk01470.txt blk01471.txt blk01472.txt blk01473.txt blk01474.txt blk01475.txt blk01476.txt blk01477.txt blk01478.txt blk01479.txt blk01480.txt blk01481.txt blk01482.txt blk01483.txt blk01484.txt blk01485.txt blk01486.txt blk01487.txt blk01488.txt blk01489.txt blk01490.txt blk01491.txt blk01492.txt blk01493.txt blk01494.txt blk01495.txt blk01496.txt blk01497.txt blk01498.txt blk01499.txt blk01500.txt blk01501.txt blk01502.txt blk01503.txt blk01504.txt blk01505.txt blk01506.txt blk01507.txt blk01508.txt blk01509.txt blk01510.txt blk01511.txt blk01512.txt blk01513.txt blk01514.txt blk01515.txt blk01516.txt blk01517.txt blk01518.txt blk01519.txt blk01520.txt blk01521.txt blk01522.txt blk01523.txt blk01524.txt blk01525.txt blk01526.txt blk01527.txt blk01528.txt blk01529.txt blk01530.txt blk01531.txt blk01532.txt blk01533.txt blk01534.txt blk01535.txt blk01536.txt blk01537.txt blk01538.txt blk01539.txt blk01540.txt blk01541.txt blk01542.txt blk01543.txt blk01544.txt blk01545.txt blk01546.txt blk01547.txt blk01548.txt blk01549.txt blk01550.txt blk01551.txt blk01552.txt blk01553.txt blk01554.txt blk01555.txt blk01556.txt blk01557.txt blk01558.txt blk01559.txt blk01560.txt blk01561.txt blk01562.txt blk01563.txt blk01564.txt blk01565.txt blk01566.txt blk01567.txt blk01568.txt blk01569.txt blk01570.txt blk01571.txt blk01572.txt blk01573.txt blk01574.txt blk01575.txt blk01576.txt blk01577.txt blk01578.txt blk01579.txt blk01580.txt blk01581.txt blk01582.txt blk01583.txt blk01584.txt blk01585.txt blk01586.txt blk01587.txt blk01588.txt blk01589.txt blk01590.txt blk01591.txt blk01592.txt blk01593.txt blk01594.txt blk01595.txt blk01596.txt blk01597.txt blk01598.txt blk01599.txt blk01600.txt blk01601.txt blk01602.txt blk01603.txt blk01604.txt blk01605.txt blk01606.txt blk01607.txt blk01608.txt blk01609.txt blk01610.txt blk01611.txt blk01612.txt blk01613.txt blk01614.txt blk01615.txt blk01616.txt blk01617.txt blk01618.txt blk01619.txt blk01620.txt blk01621.txt blk01622.txt blk01623.txt blk01624.txt blk01625.txt blk01626.txt blk01627.txt blk01628.txt blk01629.txt blk01630.txt blk01631.txt blk01632.txt blk01633.txt blk01634.txt blk01635.txt blk01636.txt blk01637.txt blk01638.txt blk01639.txt blk01640.txt blk01641.txt blk01642.txt blk01643.txt blk01644.txt blk01645.txt blk01646.txt blk01647.txt blk01648.txt blk01649.txt blk01650.txt blk01651.txt blk01652.txt blk01653.txt blk01654.txt blk01655.txt blk01656.txt blk01657.txt blk01658.txt blk01659.txt blk01660.txt blk01661.txt blk01662.txt blk01663.txt blk01664.txt blk01665.txt blk01666.txt blk01667.txt blk01668.txt blk01669.txt blk01670.txt blk01671.txt blk01672.txt blk01673.txt blk01674.txt blk01675.txt blk01676.txt blk01677.txt blk01678.txt blk01679.txt blk01680.txt blk01681.txt blk01682.txt blk01683.txt blk01684.txt blk01685.txt blk01686.txt blk01687.txt blk01688.txt blk01689.txt blk01690.txt blk01691.txt blk01692.txt blk01693.txt blk01694.txt blk01695.txt blk01696.txt blk01697.txt blk01698.txt blk01699.txt blk01700.txt blk01701.txt blk01702.txt blk01703.txt blk01704.txt blk01705.txt blk01706.txt blk01707.txt blk01708.txt blk01709.txt blk01710.txt blk01711.txt blk01712.txt blk01713.txt blk01714.txt blk01715.txt blk01716.txt blk01717.txt blk01718.txt blk01719.txt blk01720.txt blk01721.txt blk01722.txt blk01723.txt blk01724.txt blk01725.txt blk01726.txt blk01727.txt blk01728.txt blk01729.txt blk01730.txt blk01731.txt blk01732.txt blk01733.txt blk01734.txt blk01735.txt blk01736.txt blk01737.txt blk01738.txt blk01739.txt blk01740.txt blk01741.txt blk01742.txt blk01743.txt blk01744.txt blk01745.txt blk01746.txt blk01747.txt blk01748.txt blk01749.txt blk01750.txt blk01751.txt blk01752.txt blk01753.txt blk01754.txt blk01755.txt blk01756.txt blk01757.txt blk01758.txt blk01759.txt blk01760.txt blk01761.txt blk01762.txt blk01763.txt blk01764.txt blk01765.txt blk01766.txt blk01767.txt blk01768.txt blk01769.txt blk01770.txt blk01771.txt blk01772.txt blk01773.txt blk01774.txt blk01775.txt blk01776.txt blk01777.txt blk01778.txt blk01779.txt blk01780.txt blk01781.txt blk01782.txt blk01783.txt blk01784.txt blk01785.txt blk01786.txt blk01787.txt blk01788.txt blk01789.txt blk01790.txt blk01791.txt blk01792.txt blk01793.txt blk01794.txt blk01795.txt blk01796.txt blk01797.txt blk01798.txt blk01799.txt blk01800.txt blk01801.txt blk01802.txt blk01803.txt blk01804.txt blk01805.txt blk01806.txt blk01807.txt blk01808.txt blk01809.txt blk01810.txt blk01811.txt blk01812.txt blk01813.txt blk01814.txt blk01815.txt blk01816.txt blk01817.txt blk01818.txt blk01819.txt blk01820.txt blk01821.txt blk01822.txt blk01823.txt blk01824.txt blk01825.txt blk01826.txt blk01827.txt blk01828.txt blk01829.txt blk01830.txt blk01831.txt blk01832.txt blk01833.txt blk01834.txt blk01835.txt blk01836.txt blk01837.txt blk01838.txt blk01839.txt blk01840.txt blk01841.txt blk01842.txt blk01843.txt blk01844.txt blk01845.txt blk01846.txt blk01847.txt blk01848.txt blk01849.txt blk01850.txt blk01851.txt blk01852.txt blk01853.txt blk01854.txt blk01855.txt blk01856.txt blk01857.txt blk01858.txt blk01859.txt blk01860.txt blk01861.txt blk01862.txt blk01863.txt blk01864.txt blk01865.txt blk01866.txt blk01867.txt blk01868.txt blk01869.txt blk01870.txt blk01871.txt blk01872.txt blk01873.txt blk01874.txt blk01875.txt blk01876.txt blk01877.txt blk01878.txt blk01879.txt blk01880.txt blk01881.txt blk01882.txt blk01883.txt blk01884.txt blk01885.txt blk01886.txt blk01887.txt blk01888.txt blk01889.txt blk01890.txt blk01891.txt blk01892.txt blk01893.txt blk01894.txt blk01895.txt blk01896.txt blk01897.txt blk01898.txt blk01899.txt blk01900.txt blk01901.txt blk01902.txt blk01903.txt blk01904.txt blk01905.txt blk01906.txt blk01907.txt blk01908.txt blk01909.txt blk01910.txt blk01911.txt blk01912.txt blk01913.txt blk01914.txt blk01915.txt blk01916.txt blk01917.txt blk01918.txt blk01919.txt blk01920.txt blk01921.txt blk01922.txt blk01923.txt blk01924.txt blk01925.txt blk01926.txt blk01927.txt blk01928.txt blk01929.txt blk01930.txt blk01931.txt blk01932.txt blk01933.txt blk01934.txt blk01935.txt blk01936.txt blk01937.txt blk01938.txt blk01939.txt blk01940.txt blk01941.txt blk01942.txt blk01943.txt blk01944.txt blk01945.txt blk01946.txt blk01947.txt blk01948.txt blk01949.txt blk01950.txt blk01951.txt blk01952.txt blk01953.txt blk01954.txt blk01955.txt blk01956.txt blk01957.txt blk01958.txt blk01959.txt blk01960.txt blk01961.txt blk01962.txt blk01963.txt blk01964.txt blk01965.txt blk01966.txt blk01967.txt blk01968.txt blk01969.txt blk01970.txt blk01971.txt blk01972.txt blk01973.txt blk01974.txt blk01975.txt blk01976.txt blk01977.txt blk01978.txt blk01979.txt blk01980.txt blk01981.txt blk01982.txt blk01983.txt blk01984.txt blk01985.txt blk01986.txt blk01987.txt blk01988.txt blk01989.txt blk01990.txt blk01991.txt blk01992.txt blk01993.txt blk01994.txt blk01995.txt blk01996.txt blk01997.txt blk01998.txt blk01999.txt blk02000.txt blk02001.txt blk02002.txt blk02003.txt blk02004.txt blk02005.txt blk02006.txt blk02007.txt blk02008.txt blk02009.txt blk02010.txt blk02011.txt blk02012.txt blk02013.txt blk02014.txt blk02015.txt blk02016.txt blk02017.txt blk02018.txt blk02019.txt blk02020.txt blk02021.txt blk02022.txt blk02023.txt blk02024.txt blk02025.txt blk02026.txt blk02027.txt blk02028.txt blk02029.txt blk02030.txt blk02031.txt blk02032.txt blk02033.txt blk02034.txt blk02035.txt blk02036.txt blk02037.txt blk02038.txt blk02039.txt blk02040.txt blk02041.txt blk02042.txt blk02043.txt blk02044.txt blk02045.txt blk02046.txt blk02047.txt blk02048.txt blk02049.txt blk02050.txt blk02051.txt blk02052.txt blk02053.txt blk02054.txt blk02055.txt blk02056.txt blk02057.txt blk02058.txt blk02059.txt blk02060.txt blk02061.txt blk02062.txt blk02063.txt blk02064.txt blk02065.txt blk02066.txt blk02067.txt blk02068.txt blk02069.txt blk02070.txt blk02071.txt blk02072.txt blk02073.txt blk02074.txt blk02075.txt blk02076.txt blk02077.txt blk02078.txt blk02079.txt blk02080.txt blk02081.txt blk02082.txt blk02083.txt blk02084.txt blk02085.txt blk02086.txt blk02087.txt blk02088.txt blk02089.txt blk02090.txt blk02091.txt blk02092.txt blk02093.txt blk02094.txt blk02095.txt blk02096.txt blk02097.txt blk02098.txt blk02099.txt blk02100.txt blk02101.txt blk02102.txt blk02103.txt blk02104.txt blk02105.txt blk02106.txt blk02107.txt blk02108.txt blk02109.txt blk02110.txt blk02111.txt blk02112.txt blk02113.txt blk02114.txt blk02115.txt blk02116.txt blk02117.txt blk02118.txt blk02119.txt blk02120.txt blk02121.txt blk02122.txt blk02123.txt blk02124.txt blk02125.txt blk02126.txt blk02127.txt blk02128.txt blk02129.txt blk02130.txt blk02131.txt blk02132.txt blk02133.txt blk02134.txt blk02135.txt blk02136.txt blk02137.txt blk02138.txt blk02139.txt blk02140.txt blk02141.txt blk02142.txt blk02143.txt blk02144.txt blk02145.txt blk02146.txt blk02147.txt blk02148.txt blk02149.txt blk02150.txt blk02151.txt blk02152.txt blk02153.txt blk02154.txt blk02155.txt blk02156.txt blk02157.txt blk02158.txt blk02159.txt blk02160.txt blk02161.txt blk02162.txt blk02163.txt blk02164.txt blk02165.txt blk02166.txt blk02167.txt blk02168.txt blk02169.txt blk02170.txt blk02171.txt blk02172.txt blk02173.txt blk02174.txt blk02175.txt blk02176.txt blk02177.txt blk02178.txt blk02179.txt blk02180.txt blk02181.txt blk02182.txt blk02183.txt blk02184.txt blk02185.txt blk02186.txt blk02187.txt blk02188.txt blk02189.txt blk02190.txt blk02191.txt blk02192.txt blk02193.txt blk02194.txt blk02195.txt blk02196.txt blk02197.txt blk02198.txt blk02199.txt blk02200.txt blk02201.txt blk02202.txt blk02203.txt blk02204.txt blk02205.txt blk02206.txt blk02207.txt blk02208.txt blk02209.txt blk02210.txt blk02211.txt blk02212.txt blk02213.txt blk02214.txt blk02215.txt blk02216.txt blk02217.txt blk02218.txt blk02219.txt blk02220.txt blk02221.txt blk02222.txt blk02223.txt blk02224.txt blk02225.txt blk02226.txt blk02227.txt blk02228.txt blk02229.txt blk02230.txt blk02231.txt blk02232.txt blk02233.txt blk02234.txt blk02235.txt blk02236.txt blk02237.txt blk02238.txt blk02239.txt blk02240.txt blk02241.txt blk02242.txt blk02243.txt blk02244.txt blk02245.txt blk02246.txt blk02247.txt blk02248.txt blk02249.txt blk02250.txt blk02251.txt blk02252.txt blk02253.txt blk02254.txt blk02255.txt blk02256.txt blk02257.txt blk02258.txt blk02259.txt blk02260.txt blk02261.txt blk02262.txt blk02263.txt blk02264.txt blk02265.txt blk02266.txt blk02267.txt blk02268.txt blk02269.txt blk02270.txt blk02271.txt blk02272.txt blk02273.txt blk02274.txt blk02275.txt blk02276.txt blk02277.txt blk02278.txt blk02279.txt blk02280.txt blk02281.txt blk02282.txt blk02283.txt blk02284.txt blk02285.txt blk02286.txt blk02287.txt blk02288.txt blk02289.txt blk02290.txt blk02291.txt blk02292.txt blk02293.txt blk02294.txt blk02295.txt blk02296.txt blk02297.txt blk02298.txt blk02299.txt blk02300.txt blk02301.txt blk02302.txt blk02303.txt blk02304.txt blk02305.txt blk02306.txt blk02307.txt blk02308.txt blk02309.txt blk02310.txt blk02311.txt blk02312.txt blk02313.txt blk02314.txt blk02315.txt blk02316.txt blk02317.txt blk02318.txt blk02319.txt blk02320.txt blk02321.txt blk02322.txt blk02323.txt blk02324.txt blk02325.txt blk02326.txt blk02327.txt blk02328.txt blk02329.txt blk02330.txt blk02331.txt blk02332.txt blk02333.txt blk02334.txt blk02335.txt blk02336.txt blk02337.txt blk02338.txt blk02339.txt blk02340.txt blk02341.txt blk02342.txt blk02343.txt blk02344.txt blk02345.txt blk02346.txt blk02347.txt blk02348.txt blk02349.txt blk02350.txt blk02351.txt blk02352.txt blk02353.txt blk02354.txt blk02355.txt blk02356.txt blk02357.txt blk02358.txt blk02359.txt blk02360.txt blk02361.txt blk02362.txt blk02363.txt blk02364.txt blk02365.txt blk02366.txt blk02367.txt blk02368.txt blk02369.txt blk02370.txt blk02371.txt blk02372.txt blk02373.txt blk02374.txt blk02375.txt blk02376.txt blk02377.txt blk02378.txt blk02379.txt blk02380.txt blk02381.txt blk02382.txt blk02383.txt blk02384.txt blk02385.txt blk02386.txt blk02387.txt blk02388.txt blk02389.txt blk02390.txt blk02391.txt blk02392.txt blk02393.txt blk02394.txt blk02395.txt blk02396.txt blk02397.txt blk02398.txt blk02399.txt blk02400.txt blk02401.txt blk02402.txt blk02403.txt blk02404.txt blk02405.txt blk02406.txt blk02407.txt blk02408.txt blk02409.txt blk02410.txt blk02411.txt blk02412.txt blk02413.txt blk02414.txt blk02415.txt blk02416.txt blk02417.txt blk02418.txt blk02419.txt blk02420.txt blk02421.txt blk02422.txt blk02423.txt blk02424.txt blk02425.txt blk02426.txt blk02427.txt blk02428.txt blk02429.txt blk02430.txt blk02431.txt blk02432.txt blk02433.txt blk02434.txt blk02435.txt blk02436.txt blk02437.txt blk02438.txt blk02439.txt blk02440.txt blk02441.txt blk02442.txt blk02443.txt blk02444.txt blk02445.txt blk02446.txt blk02447.txt blk02448.txt blk02449.txt blk02450.txt blk02451.txt blk02452.txt blk02453.txt blk02454.txt blk02455.txt blk02456.txt blk02457.txt blk02458.txt blk02459.txt blk02460.txt blk02461.txt blk02462.txt blk02463.txt blk02464.txt blk02465.txt blk02466.txt blk02467.txt blk02468.txt blk02469.txt blk02470.txt blk02471.txt blk02472.txt blk02473.txt blk02474.txt blk02475.txt blk02476.txt blk02477.txt blk02478.txt blk02479.txt blk02480.txt blk02481.txt blk02482.txt blk02483.txt blk02484.txt blk02485.txt blk02486.txt blk02487.txt blk02488.txt blk02489.txt blk02490.txt blk02491.txt blk02492.txt blk02493.txt blk02494.txt blk02495.txt blk02496.txt blk02497.txt blk02498.txt blk02499.txt blk02500.txt blk02501.txt blk02502.txt blk02503.txt blk02504.txt blk02505.txt blk02506.txt blk02507.txt blk02508.txt blk02509.txt blk02510.txt blk02511.txt blk02512.txt blk02513.txt blk02514.txt blk02515.txt blk02516.txt blk02517.txt blk02518.txt blk02519.txt blk02520.txt blk02521.txt blk02522.txt blk02523.txt blk02524.txt blk02525.txt blk02526.txt blk02527.txt blk02528.txt blk02529.txt blk02530.txt blk02531.txt blk02532.txt blk02533.txt blk02534.txt blk02535.txt blk02536.txt blk02537.txt blk02538.txt blk02539.txt blk02540.txt blk02541.txt blk02542.txt blk02543.txt blk02544.txt blk02545.txt blk02546.txt blk02547.txt blk02548.txt blk02549.txt blk02550.txt blk02551.txt blk02552.txt blk02553.txt blk02554.txt blk02555.txt blk02556.txt blk02557.txt blk02558.txt blk02559.txt blk02560.txt blk02561.txt blk02562.txt blk02563.txt blk02564.txt blk02565.txt blk02566.txt blk02567.txt blk02568.txt blk02569.txt blk02570.txt blk02571.txt blk02572.txt blk02573.txt blk02574.txt blk02575.txt blk02576.txt blk02577.txt blk02578.txt blk02579.txt blk02580.txt blk02581.txt blk02582.txt blk02583.txt blk02584.txt blk02585.txt blk02586.txt blk02587.txt blk02588.txt blk02589.txt blk02590.txt blk02591.txt blk02592.txt blk02593.txt blk02594.txt blk02595.txt blk02596.txt blk02597.txt blk02598.txt blk02599.txt blk02600.txt blk02601.txt blk02602.txt blk02603.txt blk02604.txt blk02605.txt blk02606.txt blk02607.txt blk02608.txt blk02609.txt blk02610.txt blk02611.txt blk02612.txt blk02613.txt blk02614.txt blk02615.txt blk02616.txt blk02617.txt blk02618.txt blk02619.txt blk02620.txt blk02621.txt blk02622.txt blk02623.txt blk02624.txt blk02625.txt blk02626.txt blk02627.txt blk02628.txt blk02629.txt blk02630.txt blk02631.txt blk02632.txt blk02633.txt blk02634.txt blk02635.txt blk02636.txt blk02637.txt blk02638.txt blk02639.txt blk02640.txt blk02641.txt blk02642.txt blk02643.txt blk02644.txt blk02645.txt blk02646.txt blk02647.txt blk02648.txt blk02649.txt blk02650.txt blk02651.txt blk02652.txt blk02653.txt blk02654.txt blk02655.txt blk02656.txt blk02657.txt blk02658.txt blk02659.txt blk02660.txt blk02661.txt blk02662.txt blk02663.txt blk02664.txt blk02665.txt blk02666.txt blk02667.txt blk02668.txt blk02669.txt blk02670.txt blk02671.txt blk02672.txt blk02673.txt blk02674.txt blk02675.txt blk02676.txt blk02677.txt blk02678.txt blk02679.txt blk02680.txt blk02681.txt blk02682.txt blk02683.txt blk02684.txt blk02685.txt blk02686.txt blk02687.txt blk02688.txt blk02689.txt blk02690.txt blk02691.txt blk02692.txt blk02693.txt blk02694.txt blk02695.txt blk02696.txt blk02697.txt blk02698.txt blk02699.txt blk02700.txt blk02701.txt blk02702.txt blk02703.txt blk02704.txt blk02705.txt blk02706.txt blk02707.txt blk02708.txt blk02709.txt blk02710.txt blk02711.txt blk02712.txt blk02713.txt blk02714.txt blk02715.txt blk02716.txt blk02717.txt blk02718.txt blk02719.txt blk02720.txt blk02721.txt blk02722.txt blk02723.txt blk02724.txt blk02725.txt blk02726.txt blk02727.txt blk02728.txt blk02729.txt blk02730.txt blk02731.txt blk02732.txt blk02733.txt blk02734.txt blk02735.txt blk02736.txt blk02737.txt blk02738.txt blk02739.txt blk02740.txt blk02741.txt blk02742.txt blk02743.txt blk02744.txt blk02745.txt blk02746.txt blk02747.txt blk02748.txt blk02749.txt blk02750.txt blk02751.txt blk02752.txt blk02753.txt blk02754.txt blk02755.txt blk02756.txt blk02757.txt blk02758.txt blk02759.txt blk02760.txt blk02761.txt blk02762.txt blk02763.txt blk02764.txt blk02765.txt blk02766.txt blk02767.txt blk02768.txt blk02769.txt blk02770.txt blk02771.txt blk02772.txt blk02773.txt blk02774.txt blk02775.txt blk02776.txt blk02777.txt blk02778.txt blk02779.txt blk02780.txt blk02781.txt blk02782.txt blk02783.txt blk02784.txt blk02785.txt blk02786.txt blk02787.txt blk02788.txt blk02789.txt blk02790.txt blk02791.txt blk02792.txt blk02793.txt blk02794.txt blk02795.txt blk02796.txt blk02797.txt blk02798.txt blk02799.txt blk02800.txt blk02801.txt blk02802.txt blk02803.txt blk02804.txt blk02805.txt blk02806.txt blk02807.txt blk02808.txt blk02809.txt blk02810.txt blk02811.txt blk02812.txt blk02813.txt blk02814.txt blk02815.txt blk02816.txt blk02817.txt blk02818.txt blk02819.txt blk02820.txt blk02821.txt blk02822.txt blk02823.txt blk02824.txt blk02825.txt blk02826.txt blk02827.txt blk02828.txt blk02829.txt blk02830.txt blk02831.txt blk02832.txt blk02833.txt blk02834.txt blk02835.txt blk02836.txt blk02837.txt blk02838.txt blk02839.txt blk02840.txt blk02841.txt blk02842.txt blk02843.txt blk02844.txt blk02845.txt blk02846.txt blk02847.txt blk02848.txt blk02849.txt blk02850.txt blk02851.txt blk02852.txt blk02853.txt blk02854.txt blk02855.txt blk02856.txt blk02857.txt blk02858.txt blk02859.txt blk02860.txt blk02861.txt blk02862.txt blk02863.txt blk02864.txt blk02865.txt blk02866.txt blk02867.txt blk02868.txt blk02869.txt blk02870.txt blk02871.txt blk02872.txt blk02873.txt blk02874.txt blk02875.txt blk02876.txt blk02877.txt blk02878.txt blk02879.txt blk02880.txt blk02881.txt blk02882.txt blk02883.txt blk02884.txt blk02885.txt blk02886.txt blk02887.txt blk02888.txt blk02889.txt blk02890.txt blk02891.txt blk02892.txt blk02893.txt blk02894.txt blk02895.txt blk02896.txt blk02897.txt blk02898.txt blk02899.txt blk02900.txt blk02901.txt blk02902.txt blk02903.txt blk02904.txt blk02905.txt blk02906.txt blk02907.txt blk02908.txt blk02909.txt blk02910.txt blk02911.txt blk02912.txt blk02913.txt blk02914.txt blk02915.txt blk02916.txt blk02917.txt blk02918.txt blk02919.txt blk02920.txt blk02921.txt blk02922.txt blk02923.txt blk02924.txt blk02925.txt blk02926.txt blk02927.txt blk02928.txt blk02929.txt blk02930.txt blk02931.txt blk02932.txt blk02933.txt blk02934.txt blk02935.txt blk02936.txt blk02937.txt blk02938.txt blk02939.txt blk02940.txt blk02941.txt blk02942.txt blk02943.txt blk02944.txt blk02945.txt blk02946.txt blk02947.txt blk02948.txt blk02949.txt blk02950.txt blk02951.txt blk02952.txt blk02953.txt blk02954.txt blk02955.txt blk02956.txt blk02957.txt blk02958.txt blk02959.txt blk02960.txt blk02961.txt blk02962.txt blk02963.txt blk02964.txt blk02965.txt blk02966.txt blk02967.txt blk02968.txt blk02969.txt blk02970.txt blk02971.txt blk02972.txt blk02973.txt blk02974.txt blk02975.txt blk02976.txt blk02977.txt blk02978.txt blk02979.txt blk02980.txt blk02981.txt blk02982.txt blk02983.txt blk02984.txt blk02985.txt blk02986.txt blk02987.txt blk02988.txt blk02989.txt blk02990.txt blk02991.txt blk02992.txt blk02993.txt blk02994.txt blk02995.txt blk02996.txt blk02997.txt blk02998.txt blk02999.txt blk03000.txt blk03001.txt blk03002.txt blk03003.txt blk03004.txt blk03005.txt blk03006.txt blk03007.txt blk03008.txt blk03009.txt blk03010.txt blk03011.txt blk03012.txt blk03013.txt blk03014.txt blk03015.txt blk03016.txt blk03017.txt blk03018.txt blk03019.txt blk03020.txt blk03021.txt blk03022.txt blk03023.txt blk03024.txt blk03025.txt blk03026.txt blk03027.txt blk03028.txt blk03029.txt blk03030.txt blk03031.txt blk03032.txt blk03033.txt blk03034.txt blk03035.txt blk03036.txt blk03037.txt blk03038.txt blk03039.txt blk03040.txt blk03041.txt blk03042.txt blk03043.txt blk03044.txt blk03045.txt blk03046.txt blk03047.txt blk03048.txt blk03049.txt blk03050.txt blk03051.txt blk03052.txt blk03053.txt blk03054.txt blk03055.txt blk03056.txt blk03057.txt blk03058.txt blk03059.txt blk03060.txt blk03061.txt blk03062.txt blk03063.txt blk03064.txt blk03065.txt blk03066.txt blk03067.txt blk03068.txt blk03069.txt blk03070.txt blk03071.txt blk03072.txt blk03073.txt blk03074.txt blk03075.txt blk03076.txt blk03077.txt blk03078.txt blk03079.txt blk03080.txt blk03081.txt blk03082.txt blk03083.txt blk03084.txt blk03085.txt blk03086.txt blk03087.txt blk03088.txt blk03089.txt blk03090.txt blk03091.txt blk03092.txt blk03093.txt blk03094.txt blk03095.txt blk03096.txt blk03097.txt blk03098.txt blk03099.txt blk03100.txt blk03101.txt blk03102.txt blk03103.txt blk03104.txt blk03105.txt blk03106.txt blk03107.txt blk03108.txt blk03109.txt blk03110.txt blk03111.txt blk03112.txt blk03113.txt blk03114.txt blk03115.txt blk03116.txt blk03117.txt blk03118.txt blk03119.txt blk03120.txt blk03121.txt blk03122.txt blk03123.txt blk03124.txt blk03125.txt blk03126.txt blk03127.txt blk03128.txt blk03129.txt blk03130.txt blk03131.txt blk03132.txt blk03133.txt blk03134.txt blk03135.txt blk03136.txt blk03137.txt blk03138.txt blk03139.txt blk03140.txt blk03141.txt blk03142.txt blk03143.txt blk03144.txt blk03145.txt blk03146.txt blk03147.txt blk03148.txt blk03149.txt blk03150.txt blk03151.txt blk03152.txt blk03153.txt blk03154.txt blk03155.txt blk03156.txt blk03157.txt blk03158.txt blk03159.txt blk03160.txt blk03161.txt blk03162.txt blk03163.txt blk03164.txt blk03165.txt blk03166.txt blk03167.txt blk03168.txt blk03169.txt blk03170.txt blk03171.txt blk03172.txt blk03173.txt blk03174.txt blk03175.txt blk03176.txt blk03177.txt blk03178.txt blk03179.txt blk03180.txt blk03181.txt blk03182.txt blk03183.txt blk03184.txt blk03185.txt blk03186.txt blk03187.txt blk03188.txt blk03189.txt blk03190.txt blk03191.txt blk03192.txt blk03193.txt blk03194.txt blk03195.txt blk03196.txt blk03197.txt blk03198.txt blk03199.txt blk03200.txt blk03201.txt blk03202.txt blk03203.txt blk03204.txt blk03205.txt blk03206.txt blk03207.txt blk03208.txt blk03209.txt blk03210.txt blk03211.txt blk03212.txt blk03213.txt blk03214.txt blk03215.txt blk03216.txt blk03217.txt blk03218.txt blk03219.txt blk03220.txt blk03221.txt blk03222.txt blk03223.txt blk03224.txt blk03225.txt blk03226.txt blk03227.txt blk03228.txt blk03229.txt blk03230.txt blk03231.txt blk03232.txt blk03233.txt blk03234.txt blk03235.txt blk03236.txt blk03237.txt blk03238.txt blk03239.txt blk03240.txt blk03241.txt blk03242.txt blk03243.txt blk03244.txt blk03245.txt blk03246.txt blk03247.txt blk03248.txt blk03249.txt blk03250.txt blk03251.txt blk03252.txt blk03253.txt blk03254.txt blk03255.txt blk03256.txt blk03257.txt blk03258.txt blk03259.txt blk03260.txt blk03261.txt blk03262.txt blk03263.txt blk03264.txt blk03265.txt blk03266.txt blk03267.txt blk03268.txt blk03269.txt blk03270.txt blk03271.txt blk03272.txt blk03273.txt blk03274.txt blk03275.txt blk03276.txt blk03277.txt blk03278.txt blk03279.txt blk03280.txt blk03281.txt blk03282.txt blk03283.txt blk03284.txt blk03285.txt blk03286.txt blk03287.txt blk03288.txt blk03289.txt blk03290.txt blk03291.txt blk03292.txt blk03293.txt blk03294.txt blk03295.txt blk03296.txt blk03297.txt blk03298.txt blk03299.txt blk03300.txt blk03301.txt blk03302.txt blk03303.txt blk03304.txt blk03305.txt blk03306.txt blk03307.txt blk03308.txt blk03309.txt blk03310.txt blk03311.txt blk03312.txt blk03313.txt blk03314.txt blk03315.txt blk03316.txt blk03317.txt blk03318.txt blk03319.txt blk03320.txt blk03321.txt blk03322.txt blk03323.txt blk03324.txt blk03325.txt blk03326.txt blk03327.txt blk03328.txt blk03329.txt blk03330.txt blk03331.txt blk03332.txt blk03333.txt blk03334.txt blk03335.txt blk03336.txt blk03337.txt blk03338.txt blk03339.txt blk03340.txt blk03341.txt blk03342.txt blk03343.txt blk03344.txt blk03345.txt blk03346.txt blk03347.txt blk03348.txt blk03349.txt blk03350.txt blk03351.txt blk03352.txt blk03353.txt blk03354.txt blk03355.txt blk03356.txt blk03357.txt blk03358.txt blk03359.txt blk03360.txt blk03361.txt blk03362.txt blk03363.txt blk03364.txt blk03365.txt blk03366.txt blk03367.txt blk03368.txt blk03369.txt blk03370.txt blk03371.txt blk03372.txt blk03373.txt blk03374.txt blk03375.txt blk03376.txt blk03377.txt blk03378.txt blk03379.txt blk03380.txt blk03381.txt blk03382.txt blk03383.txt blk03384.txt blk03385.txt blk03386.txt blk03387.txt blk03388.txt blk03389.txt blk03390.txt blk03391.txt blk03392.txt blk03393.txt blk03394.txt blk03395.txt blk03396.txt blk03397.txt blk03398.txt blk03399.txt blk03400.txt blk03401.txt blk03402.txt blk03403.txt blk03404.txt blk03405.txt blk03406.txt blk03407.txt blk03408.txt blk03409.txt blk03410.txt blk03411.txt blk03412.txt blk03413.txt blk03414.txt blk03415.txt blk03416.txt blk03417.txt blk03418.txt blk03419.txt blk03420.txt blk03421.txt blk03422.txt blk03423.txt blk03424.txt blk03425.txt blk03426.txt blk03427.txt blk03428.txt blk03429.txt blk03430.txt blk03431.txt blk03432.txt blk03433.txt blk03434.txt blk03435.txt blk03436.txt blk03437.txt blk03438.txt blk03439.txt blk03440.txt blk03441.txt blk03442.txt blk03443.txt blk03444.txt blk03445.txt blk03446.txt blk03447.txt blk03448.txt blk03449.txt blk03450.txt blk03451.txt blk03452.txt blk03453.txt blk03454.txt blk03455.txt blk03456.txt blk03457.txt blk03458.txt blk03459.txt blk03460.txt blk03461.txt blk03462.txt blk03463.txt blk03464.txt blk03465.txt blk03466.txt blk03467.txt blk03468.txt blk03469.txt blk03470.txt blk03471.txt blk03472.txt blk03473.txt blk03474.txt blk03475.txt blk03476.txt blk03477.txt blk03478.txt blk03479.txt blk03480.txt blk03481.txt blk03482.txt blk03483.txt blk03484.txt blk03485.txt blk03486.txt blk03487.txt blk03488.txt blk03489.txt blk03490.txt blk03491.txt blk03492.txt blk03493.txt blk03494.txt blk03495.txt blk03496.txt blk03497.txt blk03498.txt blk03499.txt blk03500.txt blk03501.txt blk03502.txt blk03503.txt blk03504.txt blk03505.txt blk03506.txt blk03507.txt blk03508.txt blk03509.txt blk03510.txt blk03511.txt blk03512.txt blk03513.txt blk03514.txt blk03515.txt blk03516.txt blk03517.txt blk03518.txt blk03519.txt blk03520.txt blk03521.txt blk03522.txt blk03523.txt blk03524.txt blk03525.txt blk03526.txt blk03527.txt blk03528.txt blk03529.txt blk03530.txt blk03531.txt blk03532.txt blk03533.txt blk03534.txt blk03535.txt blk03536.txt blk03537.txt blk03538.txt blk03539.txt blk03540.txt blk03541.txt blk03542.txt blk03543.txt blk03544.txt blk03545.txt blk03546.txt blk03547.txt blk03548.txt blk03549.txt blk03550.txt blk03551.txt blk03552.txt blk03553.txt blk03554.txt blk03555.txt blk03556.txt blk03557.txt blk03558.txt blk03559.txt blk03560.txt blk03561.txt blk03562.txt blk03563.txt blk03564.txt blk03565.txt blk03566.txt blk03567.txt blk03568.txt blk03569.txt blk03570.txt blk03571.txt blk03572.txt blk03573.txt blk03574.txt blk03575.txt blk03576.txt blk03577.txt blk03578.txt blk03579.txt blk03580.txt blk03581.txt blk03582.txt blk03583.txt blk03584.txt blk03585.txt blk03586.txt blk03587.txt blk03588.txt blk03589.txt blk03590.txt blk03591.txt blk03592.txt blk03593.txt blk03594.txt blk03595.txt blk03596.txt blk03597.txt blk03598.txt blk03599.txt blk03600.txt blk03601.txt blk03602.txt blk03603.txt blk03604.txt blk03605.txt blk03606.txt blk03607.txt blk03608.txt blk03609.txt blk03610.txt blk03611.txt blk03612.txt blk03613.txt blk03614.txt blk03615.txt blk03616.txt blk03617.txt blk03618.txt blk03619.txt blk03620.txt blk03621.txt blk03622.txt blk03623.txt blk03624.txt blk03625.txt blk03626.txt blk03627.txt blk03628.txt blk03629.txt blk03630.txt blk03631.txt blk03632.txt blk03633.txt blk03634.txt blk03635.txt blk03636.txt blk03637.txt blk03638.txt blk03639.txt blk03640.txt blk03641.txt blk03642.txt blk03643.txt blk03644.txt blk03645.txt blk03646.txt blk03647.txt blk03648.txt blk03649.txt blk03650.txt blk03651.txt blk03652.txt blk03653.txt blk03654.txt blk03655.txt blk03656.txt blk03657.txt blk03658.txt blk03659.txt blk03660.txt blk03661.txt blk03662.txt blk03663.txt blk03664.txt blk03665.txt blk03666.txt blk03667.txt blk03668.txt blk03669.txt blk03670.txt blk03671.txt blk03672.txt blk03673.txt blk03674.txt blk03675.txt blk03676.txt blk03677.txt blk03678.txt blk03679.txt blk03680.txt blk03681.txt blk03682.txt blk03683.txt blk03684.txt blk03685.txt blk03686.txt blk03687.txt blk03688.txt blk03689.txt blk03690.txt blk03691.txt blk03692.txt blk03693.txt blk03694.txt blk03695.txt blk03696.txt blk03697.txt blk03698.txt blk03699.txt blk03700.txt blk03701.txt blk03702.txt blk03703.txt blk03704.txt blk03705.txt blk03706.txt blk03707.txt blk03708.txt blk03709.txt blk03710.txt blk03711.txt blk03712.txt blk03713.txt blk03714.txt blk03715.txt blk03716.txt blk03717.txt blk03718.txt blk03719.txt blk03720.txt blk03721.txt blk03722.txt blk03723.txt blk03724.txt blk03725.txt blk03726.txt blk03727.txt blk03728.txt blk03729.txt blk03730.txt blk03731.txt blk03732.txt blk03733.txt blk03734.txt blk03735.txt blk03736.txt blk03737.txt blk03738.txt blk03739.txt blk03740.txt blk03741.txt blk03742.txt blk03743.txt blk03744.txt blk03745.txt blk03746.txt blk03747.txt blk03748.txt blk03749.txt blk03750.txt blk03751.txt blk03752.txt blk03753.txt blk03754.txt blk03755.txt blk03756.txt blk03757.txt blk03758.txt blk03759.txt blk03760.txt blk03761.txt blk03762.txt blk03763.txt blk03764.txt blk03765.txt blk03766.txt blk03767.txt blk03768.txt blk03769.txt blk03770.txt blk03771.txt blk03772.txt blk03773.txt blk03774.txt blk03775.txt blk03776.txt blk03777.txt blk03778.txt blk03779.txt blk03780.txt blk03781.txt blk03782.txt blk03783.txt blk03784.txt blk03785.txt blk03786.txt blk03787.txt blk03788.txt blk03789.txt blk03790.txt blk03791.txt blk03792.txt blk03793.txt blk03794.txt blk03795.txt blk03796.txt blk03797.txt blk03798.txt blk03799.txt blk03800.txt blk03801.txt blk03802.txt blk03803.txt blk03804.txt blk03805.txt blk03806.txt blk03807.txt blk03808.txt blk03809.txt blk03810.txt blk03811.txt blk03812.txt blk03813.txt blk03814.txt blk03815.txt blk03816.txt blk03817.txt blk03818.txt blk03819.txt blk03820.txt blk03821.txt blk03822.txt blk03823.txt blk03824.txt blk03825.txt blk03826.txt blk03827.txt blk03828.txt blk03829.txt blk03830.txt blk03831.txt blk03832.txt blk03833.txt blk03834.txt blk03835.txt blk03836.txt blk03837.txt blk03838.txt blk03839.txt blk03840.txt blk03841.txt blk03842.txt blk03843.txt blk03844.txt blk03845.txt blk03846.txt blk03847.txt blk03848.txt blk03849.txt blk03850.txt blk03851.txt blk03852.txt blk03853.txt blk03854.txt blk03855.txt blk03856.txt blk03857.txt blk03858.txt blk03859.txt blk03860.txt blk03861.txt blk03862.txt blk03863.txt blk03864.txt blk03865.txt blk03866.txt blk03867.txt blk03868.txt blk03869.txt blk03870.txt blk03871.txt blk03872.txt blk03873.txt blk03874.txt blk03875.txt blk03876.txt blk03877.txt blk03878.txt blk03879.txt blk03880.txt blk03881.txt blk03882.txt blk03883.txt blk03884.txt blk03885.txt blk03886.txt blk03887.txt blk03888.txt blk03889.txt blk03890.txt blk03891.txt blk03892.txt blk03893.txt blk03894.txt blk03895.txt blk03896.txt blk03897.txt blk03898.txt blk03899.txt blk03900.txt blk03901.txt blk03902.txt blk03903.txt blk03904.txt blk03905.txt blk03906.txt blk03907.txt blk03908.txt blk03909.txt blk03910.txt blk03911.txt blk03912.txt blk03913.txt blk03914.txt blk03915.txt blk03916.txt blk03917.txt blk03918.txt blk03919.txt blk03920.txt blk03921.txt blk03922.txt blk03923.txt blk03924.txt blk03925.txt blk03926.txt blk03927.txt blk03928.txt blk03929.txt blk03930.txt blk03931.txt blk03932.txt blk03933.txt blk03934.txt blk03935.txt blk03936.txt blk03937.txt blk03938.txt blk03939.txt blk03940.txt blk03941.txt blk03942.txt blk03943.txt blk03944.txt blk03945.txt blk03946.txt blk03947.txt blk03948.txt blk03949.txt blk03950.txt blk03951.txt blk03952.txt blk03953.txt blk03954.txt blk03955.txt blk03956.txt blk03957.txt blk03958.txt blk03959.txt blk03960.txt blk03961.txt blk03962.txt blk03963.txt blk03964.txt blk03965.txt blk03966.txt blk03967.txt blk03968.txt blk03969.txt blk03970.txt blk03971.txt blk03972.txt blk03973.txt blk03974.txt blk03975.txt blk03976.txt blk03977.txt blk03978.txt blk03979.txt blk03980.txt blk03981.txt blk03982.txt blk03983.txt blk03984.txt blk03985.txt blk03986.txt blk03987.txt blk03988.txt blk03989.txt blk03990.txt blk03991.txt blk03992.txt blk03993.txt blk03994.txt blk03995.txt blk03996.txt blk03997.txt blk03998.txt blk03999.txt blk04000.txt blk04001.txt blk04002.txt blk04003.txt blk04004.txt blk04005.txt blk04006.txt blk04007.txt blk04008.txt blk04009.txt blk04010.txt blk04011.txt blk04012.txt blk04013.txt blk04014.txt blk04015.txt blk04016.txt blk04017.txt blk04018.txt blk04019.txt blk04020.txt blk04021.txt blk04022.txt blk04023.txt blk04024.txt blk04025.txt blk04026.txt blk04027.txt blk04028.txt blk04029.txt blk04030.txt blk04031.txt blk04032.txt blk04033.txt blk04034.txt blk04035.txt blk04036.txt blk04037.txt blk04038.txt blk04039.txt blk04040.txt blk04041.txt blk04042.txt blk04043.txt blk04044.txt blk04045.txt blk04046.txt blk04047.txt blk04048.txt blk04049.txt blk04050.txt blk04051.txt blk04052.txt blk04053.txt blk04054.txt blk04055.txt blk04056.txt blk04057.txt blk04058.txt blk04059.txt blk04060.txt blk04061.txt blk04062.txt blk04063.txt blk04064.txt blk04065.txt blk04066.txt blk04067.txt blk04068.txt blk04069.txt blk04070.txt blk04071.txt blk04072.txt blk04073.txt blk04074.txt blk04075.txt blk04076.txt blk04077.txt blk04078.txt blk04079.txt blk04080.txt blk04081.txt blk04082.txt blk04083.txt blk04084.txt blk04085.txt blk04086.txt blk04087.txt blk04088.txt blk04089.txt blk04090.txt blk04091.txt blk04092.txt blk04093.txt blk04094.txt blk04095.txt blk04096.txt blk04097.txt blk04098.txt blk04099.txt blk04100.txt blk04101.txt blk04102.txt blk04103.txt blk04104.txt blk04105.txt blk04106.txt blk04107.txt blk04108.txt blk04109.txt blk04110.txt blk04111.txt blk04112.txt blk04113.txt blk04114.txt blk04115.txt blk04116.txt blk04117.txt blk04118.txt blk04119.txt blk04120.txt blk04121.txt blk04122.txt blk04123.txt blk04124.txt blk04125.txt blk04126.txt blk04127.txt blk04128.txt blk04129.txt blk04130.txt blk04131.txt blk04132.txt blk04133.txt blk04134.txt blk04135.txt blk04136.txt blk04137.txt blk04138.txt blk04139.txt blk04140.txt blk04141.txt blk04142.txt blk04143.txt blk04144.txt blk04145.txt blk04146.txt blk04147.txt blk04148.txt blk04149.txt blk04150.txt blk04151.txt blk04152.txt blk04153.txt blk04154.txt blk04155.txt blk04156.txt blk04157.txt blk04158.txt blk04159.txt blk04160.txt blk04161.txt blk04162.txt blk04163.txt blk04164.txt blk04165.txt blk04166.txt blk04167.txt blk04168.txt blk04169.txt blk04170.txt blk04171.txt blk04172.txt blk04173.txt blk04174.txt blk04175.txt blk04176.txt blk04177.txt blk04178.txt blk04179.txt blk04180.txt blk04181.txt blk04182.txt blk04183.txt blk04184.txt blk04185.txt blk04186.txt blk04187.txt blk04188.txt blk04189.txt blk04190.txt blk04191.txt blk04192.txt blk04193.txt blk04194.txt blk04195.txt blk04196.txt blk04197.txt blk04198.txt blk04199.txt blk04200.txt blk04201.txt blk04202.txt blk04203.txt blk04204.txt blk04205.txt blk04206.txt blk04207.txt blk04208.txt blk04209.txt blk04210.txt blk04211.txt blk04212.txt blk04213.txt blk04214.txt blk04215.txt blk04216.txt blk04217.txt blk04218.txt blk04219.txt blk04220.txt blk04221.txt blk04222.txt blk04223.txt blk04224.txt blk04225.txt blk04226.txt blk04227.txt blk04228.txt blk04229.txt blk04230.txt blk04231.txt blk04232.txt blk04233.txt blk04234.txt blk04235.txt blk04236.txt blk04237.txt blk04238.txt blk04239.txt blk04240.txt blk04241.txt blk04242.txt blk04243.txt blk04244.txt blk04245.txt blk04246.txt blk04247.txt blk04248.txt blk04249.txt blk04250.txt blk04251.txt blk04252.txt blk04253.txt blk04254.txt blk04255.txt blk04256.txt blk04257.txt blk04258.txt blk04259.txt blk04260.txt blk04261.txt blk04262.txt blk04263.txt blk04264.txt blk04265.txt blk04266.txt blk04267.txt blk04268.txt blk04269.txt blk04270.txt blk04271.txt blk04272.txt blk04273.txt blk04274.txt blk04275.txt blk04276.txt blk04277.txt blk04278.txt blk04279.txt blk04280.txt blk04281.txt blk04282.txt blk04283.txt blk04284.txt blk04285.txt blk04286.txt blk04287.txt blk04288.txt blk04289.txt blk04290.txt blk04291.txt blk04292.txt blk04293.txt blk04294.txt blk04295.txt blk04296.txt blk04297.txt blk04298.txt blk04299.txt blk04300.txt blk04301.txt blk04302.txt blk04303.txt blk04304.txt blk04305.txt blk04306.txt blk04307.txt blk04308.txt blk04309.txt blk04310.txt blk04311.txt blk04312.txt blk04313.txt blk04314.txt blk04315.txt blk04316.txt blk04317.txt blk04318.txt blk04319.txt blk04320.txt blk04321.txt blk04322.txt blk04323.txt blk04324.txt blk04325.txt blk04326.txt blk04327.txt blk04328.txt blk04329.txt blk04330.txt blk04331.txt blk04332.txt blk04333.txt blk04334.txt blk04335.txt blk04336.txt blk04337.txt blk04338.txt blk04339.txt blk04340.txt blk04341.txt blk04342.txt blk04343.txt blk04344.txt blk04345.txt blk04346.txt blk04347.txt blk04348.txt blk04349.txt blk04350.txt blk04351.txt blk04352.txt blk04353.txt blk04354.txt blk04355.txt blk04356.txt blk04357.txt blk04358.txt blk04359.txt blk04360.txt blk04361.txt blk04362.txt blk04363.txt blk04364.txt blk04365.txt blk04366.txt blk04367.txt blk04368.txt blk04369.txt blk04370.txt blk04371.txt blk04372.txt blk04373.txt blk04374.txt blk04375.txt blk04376.txt blk04377.txt blk04378.txt blk04379.txt blk04380.txt blk04381.txt blk04382.txt blk04383.txt blk04384.txt blk04385.txt blk04386.txt blk04387.txt blk04388.txt blk04389.txt blk04390.txt blk04391.txt blk04392.txt blk04393.txt blk04394.txt blk04395.txt blk04396.txt blk04397.txt blk04398.txt blk04399.txt blk04400.txt blk04401.txt blk04402.txt blk04403.txt blk04404.txt blk04405.txt blk04406.txt blk04407.txt blk04408.txt blk04409.txt blk04410.txt blk04411.txt blk04412.txt blk04413.txt blk04414.txt blk04415.txt blk04416.txt blk04417.txt blk04418.txt blk04419.txt blk04420.txt blk04421.txt blk04422.txt blk04423.txt blk04424.txt blk04425.txt blk04426.txt blk04427.txt blk04428.txt blk04429.txt blk04430.txt blk04431.txt blk04432.txt blk04433.txt blk04434.txt blk04435.txt blk04436.txt blk04437.txt blk04438.txt blk04439.txt blk04440.txt blk04441.txt blk04442.txt blk04443.txt blk04444.txt blk04445.txt blk04446.txt blk04447.txt blk04448.txt blk04449.txt blk04450.txt blk04451.txt blk04452.txt blk04453.txt blk04454.txt blk04455.txt blk04456.txt blk04457.txt blk04458.txt blk04459.txt blk04460.txt blk04461.txt blk04462.txt blk04463.txt blk04464.txt blk04465.txt blk04466.txt blk04467.txt blk04468.txt blk04469.txt blk04470.txt blk04471.txt blk04472.txt blk04473.txt blk04474.txt blk04475.txt blk04476.txt blk04477.txt blk04478.txt blk04479.txt blk04480.txt blk04481.txt blk04482.txt blk04483.txt blk04484.txt blk04485.txt blk04486.txt blk04487.txt blk04488.txt blk04489.txt blk04490.txt blk04491.txt blk04492.txt blk04493.txt blk04494.txt blk04495.txt blk04496.txt blk04497.txt blk04498.txt blk04499.txt blk04500.txt blk04501.txt blk04502.txt blk04503.txt blk04504.txt blk04505.txt blk04506.txt blk04507.txt blk04508.txt blk04509.txt blk04510.txt blk04511.txt blk04512.txt blk04513.txt blk04514.txt blk04515.txt blk04516.txt blk04517.txt blk04518.txt blk04519.txt blk04520.txt blk04521.txt blk04522.txt blk04523.txt blk04524.txt blk04525.txt blk04526.txt blk04527.txt blk04528.txt blk04529.txt blk04530.txt blk04531.txt blk04532.txt blk04533.txt blk04534.txt blk04535.txt blk04536.txt blk04537.txt blk04538.txt blk04539.txt blk04540.txt blk04541.txt blk04542.txt blk04543.txt blk04544.txt blk04545.txt blk04546.txt blk04547.txt blk04548.txt blk04549.txt blk04550.txt blk04551.txt blk04552.txt blk04553.txt blk04554.txt blk04555.txt blk04556.txt blk04557.txt blk04558.txt blk04559.txt blk04560.txt blk04561.txt blk04562.txt blk04563.txt blk04564.txt blk04565.txt blk04566.txt blk04567.txt blk04568.txt blk04569.txt blk04570.txt blk04571.txt blk04572.txt blk04573.txt blk04574.txt blk04575.txt blk04576.txt blk04577.txt blk04578.txt blk04579.txt blk04580.txt blk04581.txt blk04582.txt blk04583.txt blk04584.txt blk04585.txt blk04586.txt blk04587.txt blk04588.txt blk04589.txt blk04590.txt blk04591.txt blk04592.txt blk04593.txt blk04594.txt blk04595.txt blk04596.txt blk04597.txt blk04598.txt blk04599.txt blk04600.txt blk04601.txt blk04602.txt blk04603.txt blk04604.txt blk04605.txt blk04606.txt blk04607.txt blk04608.txt blk04609.txt blk04610.txt blk04611.txt blk04612.txt blk04613.txt blk04614.txt blk04615.txt blk04616.txt blk04617.txt blk04618.txt blk04619.txt blk04620.txt blk04621.txt blk04622.txt blk04623.txt blk04624.txt blk04625.txt blk04626.txt blk04627.txt blk04628.txt blk04629.txt blk04630.txt blk04631.txt blk04632.txt blk04633.txt blk04634.txt blk04635.txt blk04636.txt blk04637.txt blk04638.txt blk04639.txt blk04640.txt blk04641.txt blk04642.txt blk04643.txt blk04644.txt blk04645.txt blk04646.txt blk04647.txt blk04648.txt blk04649.txt blk04650.txt blk04651.txt blk04652.txt blk04653.txt blk04654.txt blk04655.txt blk04656.txt blk04657.txt blk04658.txt blk04659.txt blk04660.txt blk04661.txt blk04662.txt blk04663.txt blk04664.txt blk04665.txt blk04666.txt blk04667.txt blk04668.txt blk04669.txt blk04670.txt blk04671.txt blk04672.txt blk04673.txt blk04674.txt blk04675.txt blk04676.txt blk04677.txt blk04678.txt blk04679.txt blk04680.txt blk04681.txt blk04682.txt blk04683.txt blk04684.txt blk04685.txt blk04686.txt blk04687.txt blk04688.txt blk04689.txt blk04690.txt blk04691.txt blk04692.txt blk04693.txt blk04694.txt blk04695.txt blk04696.txt blk04697.txt blk04698.txt blk04699.txt blk04700.txt blk04701.txt blk04702.txt blk04703.txt blk04704.txt blk04705.txt blk04706.txt blk04707.txt blk04708.txt blk04709.txt blk04710.txt blk04711.txt blk04712.txt blk04713.txt blk04714.txt blk04715.txt blk04716.txt blk04717.txt blk04718.txt blk04719.txt blk04720.txt blk04721.txt blk04722.txt blk04723.txt blk04724.txt blk04725.txt blk04726.txt blk04727.txt blk04728.txt blk04729.txt blk04730.txt blk04731.txt blk04732.txt blk04733.txt blk04734.txt blk04735.txt blk04736.txt blk04737.txt blk04738.txt blk04739.txt blk04740.txt blk04741.txt blk04742.txt blk04743.txt blk04744.txt blk04745.txt blk04746.txt blk04747.txt blk04748.txt blk04749.txt blk04750.txt blk04751.txt blk04752.txt blk04753.txt blk04754.txt blk04755.txt blk04756.txt blk04757.txt blk04758.txt blk04759.txt blk04760.txt blk04761.txt blk04762.txt blk04763.txt blk04764.txt blk04765.txt blk04766.txt blk04767.txt blk04768.txt blk04769.txt blk04770.txt blk04771.txt blk04772.txt blk04773.txt blk04774.txt blk04775.txt blk04776.txt blk04777.txt blk04778.txt blk04779.txt blk04780.txt blk04781.txt blk04782.txt blk04783.txt blk04784.txt blk04785.txt blk04786.txt blk04787.txt blk04788.txt blk04789.txt blk04790.txt blk04791.txt blk04792.txt blk04793.txt blk04794.txt blk04795.txt blk04796.txt blk04797.txt blk04798.txt blk04799.txt blk04800.txt blk04801.txt blk04802.txt blk04803.txt blk04804.txt blk04805.txt blk04806.txt blk04807.txt blk04808.txt blk04809.txt blk04810.txt blk04811.txt blk04812.txt blk04813.txt blk04814.txt blk04815.txt blk04816.txt blk04817.txt blk04818.txt blk04819.txt blk04820.txt blk04821.txt blk04822.txt blk04823.txt blk04824.txt blk04825.txt blk04826.txt blk04827.txt blk04828.txt blk04829.txt blk04830.txt blk04831.txt blk04832.txt blk04833.txt blk04834.txt blk04835.txt blk04836.txt blk04837.txt blk04838.txt blk04839.txt blk04840.txt blk04841.txt blk04842.txt blk04843.txt blk04844.txt blk04845.txt blk04846.txt blk04847.txt blk04848.txt blk04849.txt blk04850.txt blk04851.txt blk04852.txt blk04853.txt blk04854.txt blk04855.txt blk04856.txt blk04857.txt blk04858.txt blk04859.txt blk04860.txt blk04861.txt blk04862.txt blk04863.txt blk04864.txt blk04865.txt blk04866.txt blk04867.txt blk04868.txt blk04869.txt blk04870.txt blk04871.txt blk04872.txt blk04873.txt blk04874.txt blk04875.txt blk04876.txt blk04877.txt blk04878.txt blk04879.txt blk04880.txt blk04881.txt blk04882.txt blk04883.txt blk04884.txt blk04885.txt blk04886.txt blk04887.txt blk04888.txt blk04889.txt blk04890.txt blk04891.txt blk04892.txt blk04893.txt blk04894.txt blk04895.txt blk04896.txt blk04897.txt blk04898.txt blk04899.txt blk04900.txt blk04901.txt blk04902.txt blk04903.txt blk04904.txt blk04905.txt blk04906.txt blk04907.txt blk04908.txt blk04909.txt blk04910.txt blk04911.txt blk04912.txt blk04913.txt blk04914.txt blk04915.txt blk04916.txt blk04917.txt blk04918.txt blk04919.txt blk04920.txt blk04921.txt blk04922.txt blk04923.txt blk04924.txt blk04925.txt blk04926.txt blk04927.txt blk04928.txt blk04929.txt blk04930.txt blk04931.txt blk04932.txt blk04933.txt blk04934.txt blk04935.txt blk04936.txt blk04937.txt blk04938.txt blk04939.txt blk04940.txt blk04941.txt blk04942.txt blk04943.txt blk04944.txt blk04945.txt blk04946.txt blk04947.txt blk04948.txt blk04949.txt blk04950.txt blk04951.txt blk04952.txt blk04953.txt blk04954.txt blk04955.txt blk04956.txt blk04957.txt blk04958.txt blk04959.txt blk04960.txt blk04961.txt blk04962.txt blk04963.txt blk04964.txt blk04965.txt blk04966.txt blk04967.txt blk04968.txt blk04969.txt blk04970.txt blk04971.txt blk04972.txt blk04973.txt blk04974.txt blk04975.txt blk04976.txt blk04977.txt blk04978.txt blk04979.txt blk04980.txt blk04981.txt blk04982.txt blk04983.txt blk04984.txt blk04985.txt blk04986.txt blk04987.txt blk04988.txt blk04989.txt blk04990.txt blk04991.txt blk04992.txt blk04993.txt blk04994.txt blk04995.txt blk04996.txt blk04997.txt blk04998.txt blk04999.txt blk05000.txt blk05001.txt blk05002.txt blk05003.txt blk05004.txt blk05005.txt blk05006.txt blk05007.txt blk05008.txt blk05009.txt blk05010.txt blk05011.txt blk05012.txt blk05013.txt blk05014.txt blk05015.txt blk05016.txt blk05017.txt blk05018.txt blk05019.txt blk05020.txt blk05021.txt blk05022.txt blk05023.txt blk05024.txt blk05025.txt blk05026.txt blk05027.txt blk05028.txt blk05029.txt blk05030.txt blk05031.txt blk05032.txt blk05033.txt blk05034.txt blk05035.txt blk05036.txt blk05037.txt blk05038.txt blk05039.txt blk05040.txt blk05041.txt blk05042.txt blk05043.txt blk05044.txt blk05045.txt blk05046.txt blk05047.txt blk05048.txt blk05049.txt blk05050.txt blk05051.txt blk05052.txt blk05053.txt blk05054.txt blk05055.txt blk05056.txt blk05057.txt blk05058.txt blk05059.txt blk05060.txt blk05061.txt blk05062.txt blk05063.txt blk05064.txt blk05065.txt blk05066.txt blk05067.txt blk05068.txt blk05069.txt blk05070.txt blk05071.txt blk05072.txt blk05073.txt blk05074.txt blk05075.txt blk05076.txt blk05077.txt blk05078.txt blk05079.txt blk05080.txt blk05081.txt blk05082.txt blk05083.txt blk05084.txt blk05085.txt blk05086.txt blk05087.txt blk05088.txt blk05089.txt blk05090.txt blk05091.txt blk05092.txt blk05093.txt blk05094.txt blk05095.txt blk05096.txt blk05097.txt blk05098.txt blk05099.txt blk05100.txt blk05101.txt blk05102.txt blk05103.txt blk05104.txt blk05105.txt blk05106.txt blk05107.txt blk05108.txt blk05109.txt blk05110.txt blk05111.txt blk05112.txt blk05113.txt blk05114.txt blk05115.txt blk05116.txt blk05117.txt blk05118.txt blk05119.txt blk05120.txt blk05121.txt blk05122.txt blk05123.txt blk05124.txt blk05125.txt blk05126.txt blk05127.txt blk05128.txt blk05129.txt blk05130.txt blk05131.txt blk05132.txt blk05133.txt blk05134.txt blk05135.txt blk05136.txt blk05137.txt blk05138.txt blk05139.txt blk05140.txt blk05141.txt blk05142.txt blk05143.txt blk05144.txt blk05145.txt blk05146.txt blk05147.txt blk05148.txt blk05149.txt blk05150.txt blk05151.txt blk05152.txt blk05153.txt blk05154.txt blk05155.txt blk05156.txt blk05157.txt blk05158.txt blk05159.txt blk05160.txt blk05161.txt blk05162.txt blk05163.txt blk05164.txt blk05165.txt blk05166.txt blk05167.txt blk05168.txt blk05169.txt blk05170.txt blk05171.txt blk05172.txt blk05173.txt blk05174.txt blk05175.txt blk05176.txt blk05177.txt blk05178.txt blk05179.txt blk05180.txt blk05181.txt blk05182.txt blk05183.txt blk05184.txt blk05185.txt blk05186.txt blk05187.txt blk05188.txt blk05189.txt blk05190.txt blk05191.txt blk05192.txt blk05193.txt blk05194.txt blk05195.txt blk05196.txt blk05197.txt blk05198.txt blk05199.txt blk05200.txt blk05201.txt blk05202.txt blk05203.txt blk05204.txt blk05205.txt blk05206.txt blk05207.txt blk05208.txt blk05209.txt blk05210.txt blk05211.txt blk05212.txt blk05213.txt blk05214.txt blk05215.txt blk05216.txt blk05217.txt blk05218.txt blk05219.txt blk05220.txt blk05221.txt blk05222.txt blk05223.txt blk05224.txt blk05225.txt blk05226.txt blk05227.txt blk05228.txt blk05229.txt blk05230.txt blk05231.txt blk05232.txt blk05233.txt blk05234.txt blk05235.txt blk05236.txt blk05237.txt blk05238.txt blk05239.txt blk05240.txt blk05241.txt blk05242.txt blk05243.txt blk05244.txt blk05245.txt blk05246.txt blk05247.txt blk05248.txt blk05249.txt blk05250.txt blk05251.txt blk05252.txt blk05253.txt blk05254.txt blk05255.txt blk05256.txt blk05257.txt blk05258.txt blk05259.txt blk05260.txt blk05261.txt blk05262.txt blk05263.txt blk05264.txt blk05265.txt blk05266.txt blk05267.txt blk05268.txt blk05269.txt blk05270.txt blk05271.txt blk05272.txt blk05273.txt blk05274.txt blk05275.txt blk05276.txt blk05277.txt blk05278.txt blk05279.txt blk05280.txt blk05281.txt blk05282.txt blk05283.txt blk05284.txt blk05285.txt blk05286.txt blk05287.txt blk05288.txt blk05289.txt blk05290.txt blk05291.txt blk05292.txt blk05293.txt blk05294.txt blk05295.txt blk05296.txt blk05297.txt blk05298.txt blk05299.txt blk05300.txt blk05301.txt blk05302.txt blk05303.txt blk05304.txt blk05305.txt blk05306.txt blk05307.txt blk05308.txt blk05309.txt blk05310.txt blk05311.txt blk05312.txt blk05313.txt blk05314.txt blk05315.txt blk05316.txt blk05317.txt blk05318.txt blk05319.txt blk05320.txt blk05321.txt blk05322.txt blk05323.txt blk05324.txt blk05325.txt blk05326.txt blk05327.txt blk05328.txt blk05329.txt blk05330.txt blk05331.txt blk05332.txt blk05333.txt blk05334.txt blk05335.txt blk05336.txt blk05337.txt blk05338.txt blk05339.txt blk05340.txt blk05341.txt blk05342.txt blk05343.txt blk05344.txt blk05345.txt blk05346.txt blk05347.txt blk05348.txt blk05349.txt blk05350.txt blk05351.txt blk05352.txt blk05353.txt blk05354.txt blk05355.txt blk05356.txt blk05357.txt blk05358.txt blk05359.txt blk05360.txt blk05361.txt blk05362.txt blk05363.txt blk05364.txt blk05365.txt blk05366.txt blk05367.txt blk05368.txt blk05369.txt blk05370.txt blk05371.txt blk05372.txt blk05373.txt blk05374.txt blk05375.txt blk05376.txt blk05377.txt blk05378.txt blk05379.txt blk05380.txt blk05381.txt blk05382.txt blk05383.txt blk05384.txt blk05385.txt blk05386.txt blk05387.txt blk05388.txt blk05389.txt blk05390.txt blk05391.txt blk05392.txt blk05393.txt blk05394.txt blk05395.txt blk05396.txt blk05397.txt blk05398.txt blk05399.txt blk05400.txt blk05401.txt blk05402.txt blk05403.txt blk05404.txt blk05405.txt blk05406.txt blk05407.txt blk05408.txt blk05409.txt blk05410.txt blk05411.txt blk05412.txt blk05413.txt blk05414.txt blk05415.txt blk05416.txt blk05417.txt blk05418.txt blk05419.txt blk05420.txt blk05421.txt blk05422.txt blk05423.txt blk05424.txt blk05425.txt blk05426.txt blk05427.txt blk05428.txt blk05429.txt blk05430.txt blk05431.txt blk05432.txt blk05433.txt blk05434.txt blk05435.txt blk05436.txt blk05437.txt blk05438.txt blk05439.txt blk05440.txt blk05441.txt blk05442.txt blk05443.txt blk05444.txt blk05445.txt blk05446.txt blk05447.txt blk05448.txt blk05449.txt blk05450.txt blk05451.txt blk05452.txt blk05453.txt blk05454.txt blk05455.txt blk05456.txt blk05457.txt blk05458.txt blk05459.txt blk05460.txt blk05461.txt blk05462.txt blk05463.txt blk05464.txt blk05465.txt blk05466.txt blk05467.txt blk05468.txt blk05469.txt blk05470.txt blk05471.txt blk05472.txt blk05473.txt blk05474.txt blk05475.txt blk05476.txt blk05477.txt blk05478.txt blk05479.txt blk05480.txt blk05481.txt blk05482.txt blk05483.txt blk05484.txt blk05485.txt blk05486.txt blk05487.txt blk05488.txt blk05489.txt blk05490.txt blk05491.txt blk05492.txt blk05493.txt blk05494.txt blk05495.txt blk05496.txt blk05497.txt blk05498.txt blk05499.txt blk05500.txt blk05501.txt blk05502.txt blk05503.txt blk05504.txt blk05505.txt blk05506.txt blk05507.txt blk05508.txt blk05509.txt blk05510.txt blk05511.txt blk05512.txt blk05513.txt blk05514.txt blk05515.txt blk05516.txt blk05517.txt blk05518.txt blk05519.txt blk05520.txt blk05521.txt blk05522.txt blk05523.txt blk05524.txt blk05525.txt blk05526.txt blk05527.txt blk05528.txt blk05529.txt blk05530.txt blk05531.txt blk05532.txt blk05533.txt blk05534.txt blk05535.txt blk05536.txt blk05537.txt blk05538.txt blk05539.txt blk05540.txt blk05541.txt blk05542.txt blk05543.txt blk05544.txt blk05545.txt blk05546.txt blk05547.txt blk05548.txt blk05549.txt blk05550.txt blk05551.txt blk05552.txt blk05553.txt blk05554.txt blk05555.txt blk05556.txt blk05557.txt blk05558.txt blk05559.txt blk05560.txt blk05561.txt blk05562.txt blk05563.txt blk05564.txt blk05565.txt blk05566.txt blk05567.txt blk05568.txt blk05569.txt blk05570.txt blk05571.txt blk05572.txt blk05573.txt blk05574.txt blk05575.txt blk05576.txt blk05577.txt blk05578.txt blk05579.txt blk05580.txt blk05581.txt blk05582.txt blk05583.txt blk05584.txt blk05585.txt blk05586.txt blk05587.txt blk05588.txt blk05589.txt blk05590.txt blk05591.txt blk05592.txt blk05593.txt blk05594.txt blk05595.txt blk05596.txt blk05597.txt blk05598.txt blk05599.txt blk05600.txt blk05601.txt blk05602.txt blk05603.txt blk05604.txt blk05605.txt blk05606.txt blk05607.txt blk05608.txt blk05609.txt blk05610.txt blk05611.txt blk05612.txt blk05613.txt blk05614.txt blk05615.txt blk05616.txt blk05617.txt blk05618.txt blk05619.txt blk05620.txt blk05621.txt blk05622.txt blk05623.txt blk05624.txt blk05625.txt blk05626.txt blk05627.txt blk05628.txt blk05629.txt blk05630.txt blk05631.txt blk05632.txt blk05633.txt blk05634.txt blk05635.txt blk05636.txt blk05637.txt blk05638.txt blk05639.txt blk05640.txt blk05641.txt blk05642.txt blk05643.txt blk05644.txt blk05645.txt blk05646.txt blk05647.txt blk05648.txt blk05649.txt blk05650.txt blk05651.txt blk05652.txt blk05653.txt blk05654.txt blk05655.txt blk05656.txt blk05657.txt blk05658.txt blk05659.txt blk05660.txt blk05661.txt blk05662.txt blk05663.txt blk05664.txt blk05665.txt blk05666.txt blk05667.txt blk05668.txt blk05669.txt blk05670.txt blk05671.txt blk05672.txt blk05673.txt blk05674.txt blk05675.txt blk05676.txt blk05677.txt blk05678.txt blk05679.txt blk05680.txt blk05681.txt blk05682.txt blk05683.txt blk05684.txt blk05685.txt blk05686.txt blk05687.txt blk05688.txt blk05689.txt blk05690.txt blk05691.txt blk05692.txt blk05693.txt blk05694.txt blk05695.txt blk05696.txt blk05697.txt blk05698.txt blk05699.txt blk05700.txt blk05701.txt blk05702.txt blk05703.txt blk05704.txt blk05705.txt blk05706.txt blk05707.txt blk05708.txt blk05709.txt blk05710.txt blk05711.txt blk05712.txt blk05713.txt blk05714.txt blk05715.txt blk05716.txt blk05717.txt blk05718.txt blk05719.txt blk05720.txt blk05721.txt blk05722.txt blk05723.txt blk05724.txt blk05725.txt blk05726.txt blk05727.txt blk05728.txt blk05729.txt blk05730.txt blk05731.txt blk05732.txt blk05733.txt blk05734.txt blk05735.txt blk05736.txt blk05737.txt blk05738.txt blk05739.txt blk05740.txt blk05741.txt blk05742.txt blk05743.txt blk05744.txt blk05745.txt blk05746.txt blk05747.txt blk05748.txt blk05749.txt blk05750.txt blk05751.txt blk05752.txt blk05753.txt blk05754.txt blk05755.txt blk05756.txt blk05757.txt blk05758.txt blk05759.txt blk05760.txt blk05761.txt blk05762.txt blk05763.txt blk05764.txt blk05765.txt blk05766.txt blk05767.txt blk05768.txt blk05769.txt blk05770.txt blk05771.txt blk05772.txt blk05773.txt blk05774.txt blk05775.txt blk05776.txt blk05777.txt blk05778.txt blk05779.txt blk05780.txt blk05781.txt blk05782.txt blk05783.txt blk05784.txt blk05785.txt blk05786.txt blk05787.txt blk05788.txt blk05789.txt blk05790.txt blk05791.txt blk05792.txt blk05793.txt Show all files
Advertisement: