summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--assets/avatars/biggaymikey.pngbin0 -> 3199 bytes
-rw-r--r--assets/avatars/henriqmarq.pngbin0 -> 5956 bytes
-rw-r--r--assets/avatars/piet290106.pngbin0 -> 1085 bytes
-rw-r--r--assets/avatars/realnaesten.pngbin0 -> 1295 bytes
-rw-r--r--assets/avatars/sandcork.pngbin0 -> 1281 bytes
-rw-r--r--assets/avatars/saxtonhale.pngbin0 -> 6390 bytes
-rw-r--r--assets/avatars/sschr15.pngbin0 -> 3994 bytes
-rw-r--r--assets/avatars/u_danielpancake.pngbin0 -> 5418 bytes
-rw-r--r--assets/bible.txt6
-rw-r--r--assets/emotes/115849bin0 -> 1282 bytes
-rw-r--r--assets/emotes/1660776bin0 -> 2420 bytes
-rw-r--r--assets/emotes/1774927bin0 -> 1950 bytes
-rw-r--r--assets/emotes/300349835bin0 -> 549 bytes
-rw-r--r--assets/emotes/300703497bin0 -> 2182 bytes
-rw-r--r--assets/emotes/301158222bin0 -> 1932 bytes
-rw-r--r--assets/emotes/301594376bin0 -> 2305 bytes
-rw-r--r--assets/emotes/302160774bin0 -> 2360 bytes
-rw-r--r--assets/emotes/302303594bin0 -> 2548 bytes
-rw-r--r--assets/emotes/303141009bin0 -> 2697 bytes
-rw-r--r--assets/emotes/303446318bin0 -> 2616 bytes
-rw-r--r--assets/emotes/303985776bin0 -> 2663 bytes
-rw-r--r--assets/emotes/304560154bin0 -> 2867 bytes
-rw-r--r--assets/emotes/304669968bin0 -> 2145 bytes
-rw-r--r--assets/emotes/304935642bin0 -> 1447 bytes
-rw-r--r--assets/emotes/305595705bin0 -> 1476 bytes
-rw-r--r--assets/emotes/306103472bin0 -> 1738 bytes
-rw-r--r--assets/emotes/306834544bin0 -> 2601 bytes
-rw-r--r--assets/emotes/306954813bin0 -> 2128 bytes
-rw-r--r--assets/emotes/307378409bin0 -> 2493 bytes
-rw-r--r--assets/emotes/307439015bin0 -> 2054 bytes
-rw-r--r--assets/emotes/307923721bin0 -> 2308 bytes
-rw-r--r--assets/emotes/555555579bin0 -> 1350 bytes
-rw-r--r--assets/emotes/555555598bin0 -> 1220 bytes
-rw-r--r--assets/emotes/555555607bin0 -> 1008 bytes
-rw-r--r--assets/emotes/59197bin0 -> 295 bytes
-rw-r--r--assets/emotes/965074bin0 -> 2312 bytes
-rw-r--r--assets/emotes/emotesv2_00d73b20810c4a9d927504e9f6cdeb36bin0 -> 2396 bytes
-rw-r--r--assets/emotes/emotesv2_0114d29bcd9948118c18b1e109f11c4cbin0 -> 10625 bytes
-rw-r--r--assets/emotes/emotesv2_0144df8700a347f6b15a9356ab7d1c8ebin0 -> 1773 bytes
-rw-r--r--assets/emotes/emotesv2_03d86390639442619fd0622f942c733ebin0 -> 2580 bytes
-rw-r--r--assets/emotes/emotesv2_04508324c80c4a7ebd80299d3848d4f1bin0 -> 1996 bytes
-rw-r--r--assets/emotes/emotesv2_046d67d12b964cca8d0ff59fd33c772dbin0 -> 2614 bytes
-rw-r--r--assets/emotes/emotesv2_06693c5360e540cba523931b2b572067bin0 -> 17217 bytes
-rw-r--r--assets/emotes/emotesv2_085fa9bbdafb492a87ed30c5404f3351bin0 -> 2650 bytes
-rw-r--r--assets/emotes/emotesv2_09e7debf334b4468bcfafdb701cb5452bin0 -> 2201 bytes
-rw-r--r--assets/emotes/emotesv2_09f550504f554181b2872b2ad87fa87abin0 -> 33606 bytes
-rw-r--r--assets/emotes/emotesv2_0a4d775bd07e42a2b6240d1ccc2ce637bin0 -> 12585 bytes
-rw-r--r--assets/emotes/emotesv2_0b22800b20e048f0b654d9f4186021abbin0 -> 5201 bytes
-rw-r--r--assets/emotes/emotesv2_0b7f1a595597464289a76f5e314b197bbin0 -> 39110 bytes
-rw-r--r--assets/emotes/emotesv2_0d69ef6192df4046b8fca6da4628fab5bin0 -> 2605 bytes
-rw-r--r--assets/emotes/emotesv2_0db450901941479d8be1aedd71bc4219bin0 -> 2513 bytes
-rw-r--r--assets/emotes/emotesv2_0ea0ac068b5647c49c078cf5de809cffbin0 -> 2590 bytes
-rw-r--r--assets/emotes/emotesv2_0ef6f81c5cc34decba443627e6354f5fbin0 -> 11487 bytes
-rw-r--r--assets/emotes/emotesv2_0f6c6b275411418e84fcd0faaeb62b8ebin0 -> 4710 bytes
-rw-r--r--assets/emotes/emotesv2_1007959c05e1467bb909138fb87da44cbin0 -> 510 bytes
-rw-r--r--assets/emotes/emotesv2_102e30a079c54d67ab1727fbe7771d5bbin0 -> 3861 bytes
-rw-r--r--assets/emotes/emotesv2_10a256a15fa24228b668767340c56444bin0 -> 2296 bytes
-rw-r--r--assets/emotes/emotesv2_117f55be2f3846f4bf647d938e6563f7bin0 -> 2203 bytes
-rw-r--r--assets/emotes/emotesv2_127129806d4a4af09cc0b66e859fe27bbin0 -> 2449 bytes
-rw-r--r--assets/emotes/emotesv2_13e7ca6c12544488b598282afb358fb7bin0 -> 2354 bytes
-rw-r--r--assets/emotes/emotesv2_15ba288acf8d455fbf665e03ccc3e2f2bin0 -> 2533 bytes
-rw-r--r--assets/emotes/emotesv2_162a0795f3224283a4fd0570196d2ca9bin0 -> 51738 bytes
-rw-r--r--assets/emotes/emotesv2_16cdcd452c614bb4a5c99e9fb4c9ff40bin0 -> 2729 bytes
-rw-r--r--assets/emotes/emotesv2_172d963ff07a460e951db94069dcc3bebin0 -> 2261 bytes
-rw-r--r--assets/emotes/emotesv2_17a13f9699d74d4e932b977e49e9b9a5bin0 -> 1881 bytes
-rw-r--r--assets/emotes/emotesv2_196135ee78f1497a8bf66a3d2e485524bin0 -> 9547 bytes
-rw-r--r--assets/emotes/emotesv2_19dcd63feed242088d622d53c80068a6bin0 -> 2613 bytes
-rw-r--r--assets/emotes/emotesv2_1a3cf1aa33bf448588cb9954e6faf23dbin0 -> 11909 bytes
-rw-r--r--assets/emotes/emotesv2_1abce7d5e9334f94b8044e4ce81bdbd1bin0 -> 2347 bytes
-rw-r--r--assets/emotes/emotesv2_1adf9cb4c8054fdfa282f6fc174764cfbin0 -> 2567 bytes
-rw-r--r--assets/emotes/emotesv2_1bf4277cbbb24196a03a94b8132e27babin0 -> 2518 bytes
-rw-r--r--assets/emotes/emotesv2_1c43a903c5d247808fb0a081fda6f939bin0 -> 1447 bytes
-rw-r--r--assets/emotes/emotesv2_1d2fd57f591b4bd38f1e12ea73ca9d7dbin0 -> 15251 bytes
-rw-r--r--assets/emotes/emotesv2_202f6ec2051946cfad299e6950ece887bin0 -> 1001 bytes
-rw-r--r--assets/emotes/emotesv2_2072304653af4152aed66e471a958591bin0 -> 2778 bytes
-rw-r--r--assets/emotes/emotesv2_20a5c29af55240d4a276e0ffd828db3ebin0 -> 21054 bytes
-rw-r--r--assets/emotes/emotesv2_228ae199127d4ed4b9e9520816fe354cbin0 -> 1911 bytes
-rw-r--r--assets/emotes/emotesv2_229ef85e3c77488e97a1f814a38ed9b4bin0 -> 15396 bytes
-rw-r--r--assets/emotes/emotesv2_23d2f3e5baff4729ae053d9fc0199ff8bin0 -> 14094 bytes
-rw-r--r--assets/emotes/emotesv2_24203cb01ea043a78baaa72a7fc68471bin0 -> 2335 bytes
-rw-r--r--assets/emotes/emotesv2_24e7b9e915bb4ec7bd976c8772580a48bin0 -> 11702 bytes
-rw-r--r--assets/emotes/emotesv2_24efb590db6849a0bfbc7f25e64b2b3abin0 -> 46329 bytes
-rw-r--r--assets/emotes/emotesv2_24fb54e0db67481e971c8cf1744a53a7bin0 -> 2795 bytes
-rw-r--r--assets/emotes/emotesv2_250231b9fb3c4a849d15ebd7a0c923bfbin0 -> 2623 bytes
-rw-r--r--assets/emotes/emotesv2_252b80f7b02a4ffca1bd206f84981232bin0 -> 19772 bytes
-rw-r--r--assets/emotes/emotesv2_256369ace7b54ee090390d3a17461274bin0 -> 2644 bytes
-rw-r--r--assets/emotes/emotesv2_25e1eb365e5c41169c48cc7f651e473bbin0 -> 1672 bytes
-rw-r--r--assets/emotes/emotesv2_26672983fce4494589b81a85473147adbin0 -> 2005 bytes
-rw-r--r--assets/emotes/emotesv2_27d3a101f9434c23bfcd2fde7df2aaebbin0 -> 2225 bytes
-rw-r--r--assets/emotes/emotesv2_2801a662aca14585aecb9b701dabdddfbin0 -> 2606 bytes
-rw-r--r--assets/emotes/emotesv2_28d84c4284b04111b1f6d11c386cfd96bin0 -> 23868 bytes
-rw-r--r--assets/emotes/emotesv2_2b3ea10e11e943b8810abda89b760c4cbin0 -> 13660 bytes
-rw-r--r--assets/emotes/emotesv2_2cca1fc234c24812b1bfacc040a1a0cbbin0 -> 15348 bytes
-rw-r--r--assets/emotes/emotesv2_2dfde60feba94161b23e49eb008a1ae4bin0 -> 15953 bytes
-rw-r--r--assets/emotes/emotesv2_2e563f0a9d884b5a8aa5b825f4b3ba87bin0 -> 2369 bytes
-rw-r--r--assets/emotes/emotesv2_2fb3d0ac1f9f44d48a940a9974fe1be4bin0 -> 1936 bytes
-rw-r--r--assets/emotes/emotesv2_2ffb6149f5f5402f97e3934a311432e1bin0 -> 9920 bytes
-rw-r--r--assets/emotes/emotesv2_31bcf88bddb646ccbce3053f02d9153dbin0 -> 60925 bytes
-rw-r--r--assets/emotes/emotesv2_337f7545c212432db52a0ea0373ba31dbin0 -> 2605 bytes
-rw-r--r--assets/emotes/emotesv2_339c58c55dd94148844b67e9de97b2abbin0 -> 2618 bytes
-rw-r--r--assets/emotes/emotesv2_34d1f8827eb641099062e3518e340575bin0 -> 2665 bytes
-rw-r--r--assets/emotes/emotesv2_355c00cd40744178a3d05452e104e072bin0 -> 54938 bytes
-rw-r--r--assets/emotes/emotesv2_362a8e88a8dc4b3693c9aaa4a46365d6bin0 -> 2268 bytes
-rw-r--r--assets/emotes/emotesv2_3753bb482cae4446a7ca69d353916990bin0 -> 30621 bytes
-rw-r--r--assets/emotes/emotesv2_37a732dff9694b5ba621136ebbe4c90bbin0 -> 4268 bytes
-rw-r--r--assets/emotes/emotesv2_38436724a19a4a839060feab98894017bin0 -> 21128 bytes
-rw-r--r--assets/emotes/emotesv2_38f709a70a434988b3ea41dcfcde32a7bin0 -> 2331 bytes
-rw-r--r--assets/emotes/emotesv2_398073c05e6f47b18d23402be38e306cbin0 -> 3819 bytes
-rw-r--r--assets/emotes/emotesv2_3a9b8692e89440ed92db8555dd599191bin0 -> 2425 bytes
-rw-r--r--assets/emotes/emotesv2_3d0545fa611f44f6b7c25c658321fa10bin0 -> 2580 bytes
-rw-r--r--assets/emotes/emotesv2_3d0c77cd056e457685f49204e9a342f3bin0 -> 3899 bytes
-rw-r--r--assets/emotes/emotesv2_3d57a2e80de74336b0ec9f7b6a2ffdafbin0 -> 15439 bytes
-rw-r--r--assets/emotes/emotesv2_3d999db390104c24b42d10d6292290d7bin0 -> 6299 bytes
-rw-r--r--assets/emotes/emotesv2_3dfbda628997420a8d74dd0fa04d8964bin0 -> 2610 bytes
-rw-r--r--assets/emotes/emotesv2_407d9b46b9894896b60aff7c9b10534ebin0 -> 2119 bytes
-rw-r--r--assets/emotes/emotesv2_4152261ae0d0473aaa84a26fdbad9f6ebin0 -> 2516 bytes
-rw-r--r--assets/emotes/emotesv2_41cb3d8210e3480a80a4c5f2d871dda8bin0 -> 2524 bytes
-rw-r--r--assets/emotes/emotesv2_440ef982eb47436eb09e99975a59474abin0 -> 1107 bytes
-rw-r--r--assets/emotes/emotesv2_441b0cd9a965438990b5bc69a9a35507bin0 -> 74743 bytes
-rw-r--r--assets/emotes/emotesv2_4669a2ba1f7f4381a3b4b0b298e23008bin0 -> 2444 bytes
-rw-r--r--assets/emotes/emotesv2_4845aea689bd4044a2a67f9f7c950da0bin0 -> 2520 bytes
-rw-r--r--assets/emotes/emotesv2_48468328d2524efc9dede95c680200a4bin0 -> 2593 bytes
-rw-r--r--assets/emotes/emotesv2_48a1c027c57a4c42b3cf4af51863e6dfbin0 -> 2763 bytes
-rw-r--r--assets/emotes/emotesv2_48d82508ea81496c8fd108c2a376656fbin0 -> 6282 bytes
-rw-r--r--assets/emotes/emotesv2_495d3674d06e44bbbdea34244b6b5d82bin0 -> 1845 bytes
-rw-r--r--assets/emotes/emotesv2_49abeb068b5b4705bec832c4729eb794bin0 -> 8013 bytes
-rw-r--r--assets/emotes/emotesv2_4b0234918f3f4a60a32d94f31e512505bin0 -> 2416 bytes
-rw-r--r--assets/emotes/emotesv2_4c67ea457d434e3fa289ec9402a42551bin0 -> 7443 bytes
-rw-r--r--assets/emotes/emotesv2_4c682fe3720246c78ed925ab053d8766bin0 -> 2623 bytes
-rw-r--r--assets/emotes/emotesv2_4e98413cbeae4aceabf13666fee68809bin0 -> 1536 bytes
-rw-r--r--assets/emotes/emotesv2_4fd3a5d71eb84c24894ec27e3ae60ff9bin0 -> 1912 bytes
-rw-r--r--assets/emotes/emotesv2_5026c62f5a1b44fbb2b4eaab5d0656c3bin0 -> 23836 bytes
-rw-r--r--assets/emotes/emotesv2_50484a4550ad48d8a34456e1b5216cd4bin0 -> 2447 bytes
-rw-r--r--assets/emotes/emotesv2_523cbb164f4c481caba353298c0125dbbin0 -> 23552 bytes
-rw-r--r--assets/emotes/emotesv2_52dff8e1e96d4384935d49aa0d56d38bbin0 -> 2580 bytes
-rw-r--r--assets/emotes/emotesv2_536da87d32584600abde1f5af66c5288bin0 -> 2331 bytes
-rw-r--r--assets/emotes/emotesv2_53a5fea263714afc96e08711d15ea780bin0 -> 2286 bytes
-rw-r--r--assets/emotes/emotesv2_53f3c2bc4acf4735b2f79bb385b46c2dbin0 -> 2255 bytes
-rw-r--r--assets/emotes/emotesv2_547e8c955abf4137937b05933df0b772bin0 -> 2178 bytes
-rw-r--r--assets/emotes/emotesv2_54e7302e687b4b3387f469f21ef3c726bin0 -> 2492 bytes
-rw-r--r--assets/emotes/emotesv2_55129b7cd7a444a8a649f44d4ed82fa4bin0 -> 1013 bytes
-rw-r--r--assets/emotes/emotesv2_555e43b97c8a42d7aabe218a6765a108bin0 -> 2433 bytes
-rw-r--r--assets/emotes/emotesv2_55800dceae8b4a09a315a60adddd7b80bin0 -> 2577 bytes
-rw-r--r--assets/emotes/emotesv2_58606ffb5fd54f96a7734f8fe2216928bin0 -> 3102 bytes
-rw-r--r--assets/emotes/emotesv2_596ac55cb1634c03b0cd40d671f5d762bin0 -> 2614 bytes
-rw-r--r--assets/emotes/emotesv2_596bbffcdc4645e89aa802bf44043864bin0 -> 2601 bytes
-rw-r--r--assets/emotes/emotesv2_59cb01861aa6483d81b2257eb5a6e5b0bin0 -> 1735 bytes
-rw-r--r--assets/emotes/emotesv2_5ae132d15449480a9b65ed422ef93c7fbin0 -> 2601 bytes
-rw-r--r--assets/emotes/emotesv2_5b1f6b74ccb8400f8b50396a7bbc3b93bin0 -> 2664 bytes
-rw-r--r--assets/emotes/emotesv2_5b335cd372da4e3394272117135220abbin0 -> 60037 bytes
-rw-r--r--assets/emotes/emotesv2_5c57d48d429d4828be043c26addb0bcbbin0 -> 16703 bytes
-rw-r--r--assets/emotes/emotesv2_5d91d0301adb4ed7b453fa9924a6aaa1bin0 -> 2432 bytes
-rw-r--r--assets/emotes/emotesv2_5dc5c73e383f46259f45baa7b6c317ebbin0 -> 2297 bytes
-rw-r--r--assets/emotes/emotesv2_5e07afac8d504960b02ba7b036f3d6dabin0 -> 1332 bytes
-rw-r--r--assets/emotes/emotesv2_5e109c2a05094f16a46bfbc52d210f61bin0 -> 2181 bytes
-rw-r--r--assets/emotes/emotesv2_5e7b7f345e8f46d0b8f27b6a4f51f28cbin0 -> 2570 bytes
-rw-r--r--assets/emotes/emotesv2_5f69a9fed5d24dc79df25453c7d72a90bin0 -> 1973 bytes
-rw-r--r--assets/emotes/emotesv2_601930df6e434791a5873d65414a5849bin0 -> 2452 bytes
-rw-r--r--assets/emotes/emotesv2_604ae91dae224b789962e70a805f3c3fbin0 -> 2641 bytes
-rw-r--r--assets/emotes/emotesv2_6058cffdb65341feaff3d6368536464ebin0 -> 26775 bytes
-rw-r--r--assets/emotes/emotesv2_613ccd272ebf450d84c457bd16c9819cbin0 -> 19587 bytes
-rw-r--r--assets/emotes/emotesv2_61d8e83a99f849118dd5489f6cdf0929bin0 -> 7077 bytes
-rw-r--r--assets/emotes/emotesv2_62791a27ec384ccb96e27defb5277067bin0 -> 2463 bytes
-rw-r--r--assets/emotes/emotesv2_63d7f59fb61b4745b7ee62caf4ffc06fbin0 -> 21631 bytes
-rw-r--r--assets/emotes/emotesv2_6444f5cbf53640f1beccfcb29ed02ae6bin0 -> 6972 bytes
-rw-r--r--assets/emotes/emotesv2_6456fcf4f15f4f4f80eb27becc290615bin0 -> 2570 bytes
-rw-r--r--assets/emotes/emotesv2_64cf7ab508eb4947a73ef1d7a38e0984bin0 -> 2498 bytes
-rw-r--r--assets/emotes/emotesv2_64f50bf400324ec68b8207aac282e454bin0 -> 1678 bytes
-rw-r--r--assets/emotes/emotesv2_64fd59354add4e3f80fdcaf32850e761bin0 -> 12549 bytes
-rw-r--r--assets/emotes/emotesv2_65e924d6dc194a6c863845e8dfe83943bin0 -> 2118 bytes
-rw-r--r--assets/emotes/emotesv2_662145dd4e844282affbf06df8e261b8bin0 -> 18870 bytes
-rw-r--r--assets/emotes/emotesv2_66d371de61d64d32bee1d47b26dfe238bin0 -> 44755 bytes
-rw-r--r--assets/emotes/emotesv2_67d8334685e94c7380f92503a30e1c48bin0 -> 2282 bytes
-rw-r--r--assets/emotes/emotesv2_69aa5755b0454c01bebc9a35cd861722bin0 -> 2409 bytes
-rw-r--r--assets/emotes/emotesv2_69f8434749e343d8926967a564dbc908bin0 -> 57990 bytes
-rw-r--r--assets/emotes/emotesv2_6a28e3adbdfd4cf69ca4b4bcb2ac77a8bin0 -> 2628 bytes
-rw-r--r--assets/emotes/emotesv2_6a4c5a8c06dc48c5ab22210c68a52e03bin0 -> 38930 bytes
-rw-r--r--assets/emotes/emotesv2_6ad945d63ffa47aabd1ccff4871a0283bin0 -> 8001 bytes
-rw-r--r--assets/emotes/emotesv2_6b03a429ecd545ed98af41dba25f490abin0 -> 2610 bytes
-rw-r--r--assets/emotes/emotesv2_6b37b7e13bb94ffa8ac6af5740dd6e6bbin0 -> 13020 bytes
-rw-r--r--assets/emotes/emotesv2_6b94432ee31b4f909adab1058209a268bin0 -> 9249 bytes
-rw-r--r--assets/emotes/emotesv2_6ca8feb8f3f2466eb9acc98e3089911bbin0 -> 2320 bytes
-rw-r--r--assets/emotes/emotesv2_6e7afafe028d4059b7a050d00a18a401bin0 -> 5229 bytes
-rw-r--r--assets/emotes/emotesv2_6ef79d00b5e0447ca9a3c8170f3df006bin0 -> 17497 bytes
-rw-r--r--assets/emotes/emotesv2_6f1c5d88aa8b4a7eaabf306b6dc410b7bin0 -> 2618 bytes
-rw-r--r--assets/emotes/emotesv2_6f1d1da892d542748afbbfef36e0aa28bin0 -> 2611 bytes
-rw-r--r--assets/emotes/emotesv2_6f47210c1f6240458420b9db0b5ec9c5bin0 -> 5821 bytes
-rw-r--r--assets/emotes/emotesv2_703b0a29ebd843dcb9b02b415a56ab5dbin0 -> 2226 bytes
-rw-r--r--assets/emotes/emotesv2_70700345e3384219a35d7af9e75f9395bin0 -> 2129 bytes
-rw-r--r--assets/emotes/emotesv2_71276b021c024affa2a4ffab59d32c56bin0 -> 41117 bytes
-rw-r--r--assets/emotes/emotesv2_732a78769b5643fd93ab2c72821b51c4bin0 -> 7579 bytes
-rw-r--r--assets/emotes/emotesv2_73846909f8f24164b41a275b39658fd0bin0 -> 2986 bytes
-rw-r--r--assets/emotes/emotesv2_73f434f2f56f48f08367155f22cd4867bin0 -> 23839 bytes
-rw-r--r--assets/emotes/emotesv2_75d7f2d367f248d49a82f5289a7dc03d_HFbin0 -> 2197 bytes
-rw-r--r--assets/emotes/emotesv2_75eea89c64dd415188edb2d2e6ffd66ebin0 -> 2506 bytes
-rw-r--r--assets/emotes/emotesv2_75eee2ab9e8244eaae2c141dc14c62f8bin0 -> 2803 bytes
-rw-r--r--assets/emotes/emotesv2_76d148292d704c348b40c48e7a906809bin0 -> 5010 bytes
-rw-r--r--assets/emotes/emotesv2_77ce83d7905d4e09b323e4ceb0d4a94ebin0 -> 19176 bytes
-rw-r--r--assets/emotes/emotesv2_77d15834e97240049c811ed3d967b190bin0 -> 5297 bytes
-rw-r--r--assets/emotes/emotesv2_785cb1a26b244fb38f83b0278b5ff10fbin0 -> 2855 bytes
-rw-r--r--assets/emotes/emotesv2_78c9b1149e024ed1be6022f8a341e3b2bin0 -> 2793 bytes
-rw-r--r--assets/emotes/emotesv2_78f915520b4440d68e0333c7e41e9200bin0 -> 2431 bytes
-rw-r--r--assets/emotes/emotesv2_796d85ec687047b49aea8c7e74f6b58bbin0 -> 2122 bytes
-rw-r--r--assets/emotes/emotesv2_7a1f2f816fa9436cbd6579f2dbf1fa07bin0 -> 1988 bytes
-rw-r--r--assets/emotes/emotesv2_7b07e86b0efe4b5dbffae545a0a246d3bin0 -> 2476 bytes
-rw-r--r--assets/emotes/emotesv2_7c526cf20bbb4cc48d70a4ffa3e58231bin0 -> 2376 bytes
-rw-r--r--assets/emotes/emotesv2_7d4909238e2c4ff29d1035967b3320cabin0 -> 2925 bytes
-rw-r--r--assets/emotes/emotesv2_7e4fb21379b446bc917acf6da6173a26bin0 -> 11725 bytes
-rw-r--r--assets/emotes/emotesv2_8004b88a5c9c4f44bea8a5f66f2b2970bin0 -> 2616 bytes
-rw-r--r--assets/emotes/emotesv2_8064ffd3794142749a01291e77c269aabin0 -> 2582 bytes
-rw-r--r--assets/emotes/emotesv2_807683797c134435b03ce421d2a69f18bin0 -> 2014 bytes
-rw-r--r--assets/emotes/emotesv2_8235d7c49b90499687d252f5d578c4cfbin0 -> 517 bytes
-rw-r--r--assets/emotes/emotesv2_834c09086613410794fc144b05205854bin0 -> 16749 bytes
-rw-r--r--assets/emotes/emotesv2_83fd3d36e14f4b97ac7f72a2c945ff05bin0 -> 2663 bytes
-rw-r--r--assets/emotes/emotesv2_8469d0ac664e4678aad3dbdeacd74a80bin0 -> 2722 bytes
-rw-r--r--assets/emotes/emotesv2_85ce95a4b41244699ae283971f4754eabin0 -> 2010 bytes
-rw-r--r--assets/emotes/emotesv2_85faafce7d71481cb62c708820b0be84bin0 -> 13508 bytes
-rw-r--r--assets/emotes/emotesv2_867d55a7f9b644e2b15c10234383b25fbin0 -> 51288 bytes
-rw-r--r--assets/emotes/emotesv2_88ce587d51b048acabd8d332bcce95d5bin0 -> 2076 bytes
-rw-r--r--assets/emotes/emotesv2_8a69a54b34d345ae992f87e0a1a0b44cbin0 -> 2772 bytes
-rw-r--r--assets/emotes/emotesv2_8aef87f335cf4d3284a4a924b90b60debin0 -> 2305 bytes
-rw-r--r--assets/emotes/emotesv2_8bf198a0f83c4bc3acbf0882e0bbd98fbin0 -> 7721 bytes
-rw-r--r--assets/emotes/emotesv2_8bfa9bb4113b48b8ba213f404d7371c8bin0 -> 2136 bytes
-rw-r--r--assets/emotes/emotesv2_8d06d108c90a458b91457714b34d0836bin0 -> 2751 bytes
-rw-r--r--assets/emotes/emotesv2_8d31fb106b2f41aebc507189d969be11bin0 -> 8262 bytes
-rw-r--r--assets/emotes/emotesv2_8e8e19ad89ed4cdcacc666e84e3f616abin0 -> 1875 bytes
-rw-r--r--assets/emotes/emotesv2_8e90b13948ff46d88867eed684c38b9dbin0 -> 5516 bytes
-rw-r--r--assets/emotes/emotesv2_8fe388f1f47946ffa4a8b0b488616944bin0 -> 10270 bytes
-rw-r--r--assets/emotes/emotesv2_906dc8700ed74ee1bbef2df094683a8bbin0 -> 14508 bytes
-rw-r--r--assets/emotes/emotesv2_90dcebf25baa4478a43bcd86910ede62bin0 -> 2247 bytes
-rw-r--r--assets/emotes/emotesv2_90ea6219add542d0ada501643a727a27bin0 -> 12720 bytes
-rw-r--r--assets/emotes/emotesv2_916553f67e7841d3b2674fbf5aeba3cfbin0 -> 2596 bytes
-rw-r--r--assets/emotes/emotesv2_91f4334f495446b582fe77923f4589ffbin0 -> 2583 bytes
-rw-r--r--assets/emotes/emotesv2_920d701333c94fba94f5aed29053c077bin0 -> 2489 bytes
-rw-r--r--assets/emotes/emotesv2_92ebb9517ce4470ab5e574181129d4d9bin0 -> 2799 bytes
-rw-r--r--assets/emotes/emotesv2_93c07b986a8c427ba497e210b11fb84cbin0 -> 5212 bytes
-rw-r--r--assets/emotes/emotesv2_944938feb3694525b5d91dc9e52dc615bin0 -> 2604 bytes
-rw-r--r--assets/emotes/emotesv2_9458ff7ff9c74dc0975db037b7eebbeebin0 -> 2704 bytes
-rw-r--r--assets/emotes/emotesv2_949e6a7df0c74af28e829587741e338cbin0 -> 10286 bytes
-rw-r--r--assets/emotes/emotesv2_97f01191fbe24496813d18c4d98d7881bin0 -> 15642 bytes
-rw-r--r--assets/emotes/emotesv2_98bee893c21c4e1d84393278ea219e1cbin0 -> 39107 bytes
-rw-r--r--assets/emotes/emotesv2_99696770a9ed4f24bcac6bac7a97d3d4bin0 -> 35209 bytes
-rw-r--r--assets/emotes/emotesv2_997611a1e0734112a27322514282d83abin0 -> 3981 bytes
-rw-r--r--assets/emotes/emotesv2_99f3ad0175d8433aac306c020760bf23bin0 -> 32811 bytes
-rw-r--r--assets/emotes/emotesv2_9a1c64ab3e44491fb2c2b0dc7a767a90bin0 -> 23355 bytes
-rw-r--r--assets/emotes/emotesv2_9a373a06200b405e8646464f1d11ca92bin0 -> 1914 bytes
-rw-r--r--assets/emotes/emotesv2_9a3d4ab4a6364c9fa28436d9f0984739bin0 -> 16146 bytes
-rw-r--r--assets/emotes/emotesv2_9a4d0ecba81d4bd0ad65c2e1bf02e479_TKbin0 -> 2284 bytes
-rw-r--r--assets/emotes/emotesv2_9b12eb15d9e34d3a85e650a4de6fd756bin0 -> 2342 bytes
-rw-r--r--assets/emotes/emotesv2_9c59a8fafe554da1a07d34e418ec2b30bin0 -> 10086 bytes
-rw-r--r--assets/emotes/emotesv2_9c9d5e65cac84a1f8dd7e3347df51628bin0 -> 1678 bytes
-rw-r--r--assets/emotes/emotesv2_9cf6a2b276fb487f9ee404863e65fde9bin0 -> 3501 bytes
-rw-r--r--assets/emotes/emotesv2_9d24ff5266624d87ad21273ae8975c27bin0 -> 1969 bytes
-rw-r--r--assets/emotes/emotesv2_9da7d4bef516407780ce83637d00d8c0bin0 -> 9959 bytes
-rw-r--r--assets/emotes/emotesv2_9dbe9c73ba6a41aebd04b80d269b4874bin0 -> 2059 bytes
-rw-r--r--assets/emotes/emotesv2_9e52134eec8a4ebeaef76d5a01df12bbbin0 -> 18690 bytes
-rw-r--r--assets/emotes/emotesv2_9f1ab1d03bba4fb0b735a9670d3361edbin0 -> 5904 bytes
-rw-r--r--assets/emotes/emotesv2_9f799a4bba3746a188cbe06c6deb27a5bin0 -> 60331 bytes
-rw-r--r--assets/emotes/emotesv2_a08dccc1b4ad4fa5a5878fdd7b8047fbbin0 -> 2765 bytes
-rw-r--r--assets/emotes/emotesv2_a21052eac36246cc8ef494e2b4ca5bebbin0 -> 2683 bytes
-rw-r--r--assets/emotes/emotesv2_a224841e21d942a5973c8ad2db45ddf1bin0 -> 7859 bytes
-rw-r--r--assets/emotes/emotesv2_a2aa8aced4a3465fba36aababbfd18dabin0 -> 2461 bytes
-rw-r--r--assets/emotes/emotesv2_a2daa9b241b34608906b6f00f83d4ea0bin0 -> 2703 bytes
-rw-r--r--assets/emotes/emotesv2_a39d2bff69ce426e92213f2b8685d710bin0 -> 27954 bytes
-rw-r--r--assets/emotes/emotesv2_a41d9735bf524aa2bcd81171327e7376bin0 -> 9989 bytes
-rw-r--r--assets/emotes/emotesv2_a43387948f1241f78a30c33fba4f5dadbin0 -> 2338 bytes
-rw-r--r--assets/emotes/emotesv2_a439fec7855b473681dc8f797f1693ddbin0 -> 6237 bytes
-rw-r--r--assets/emotes/emotesv2_a5e4b28e4ee44206a6aa3ee557b35486bin0 -> 8039 bytes
-rw-r--r--assets/emotes/emotesv2_a859e01f62e242078bfb1002ce291e3bbin0 -> 20309 bytes
-rw-r--r--assets/emotes/emotesv2_a8661b1e6169427ca02fccaac2928837bin0 -> 1542 bytes
-rw-r--r--assets/emotes/emotesv2_a97550bc6cb0478e9c9a76724e7847edbin0 -> 2354 bytes
-rw-r--r--assets/emotes/emotesv2_aa0db43abbb34a8ba19e22242283a172bin0 -> 2141 bytes
-rw-r--r--assets/emotes/emotesv2_ab6a3b8cc3794feeaa65ddec04ecd630bin0 -> 2074 bytes
-rw-r--r--assets/emotes/emotesv2_aba4cea4561b4828996cd6891db7911cbin0 -> 2518 bytes
-rw-r--r--assets/emotes/emotesv2_ae2aab1595f14c52a2eb259a4540d695bin0 -> 17701 bytes
-rw-r--r--assets/emotes/emotesv2_ae35f69d12e94ad8b6f861d9ddac93eabin0 -> 2543 bytes
-rw-r--r--assets/emotes/emotesv2_aeaad1bf57ed41349ec000954c82c416bin0 -> 2359 bytes
-rw-r--r--assets/emotes/emotesv2_aebf67a681334939baf6fb54b31704debin0 -> 54660 bytes
-rw-r--r--assets/emotes/emotesv2_af01dc502bc04dfe9b1f4547d649555dbin0 -> 2355 bytes
-rw-r--r--assets/emotes/emotesv2_afb231ade7b84be8b91d080231c20b63bin0 -> 38510 bytes
-rw-r--r--assets/emotes/emotesv2_b0a25a30fd0340a6acefdc59848d3f66bin0 -> 5084 bytes
-rw-r--r--assets/emotes/emotesv2_b1003eb6f8ad4275ba18fddb0fb5f36dbin0 -> 8550 bytes
-rw-r--r--assets/emotes/emotesv2_b14f9e00c2ce41cea1a74d08dea2b392bin0 -> 2580 bytes
-rw-r--r--assets/emotes/emotesv2_b15a8f0ff639401eb1cc4a70f8b33dcfbin0 -> 26930 bytes
-rw-r--r--assets/emotes/emotesv2_b43ce8897c5249b79ab08c352a0d9f5ebin0 -> 4770 bytes
-rw-r--r--assets/emotes/emotesv2_b6285d5ff45a436bb84708e0207bab81bin0 -> 2612 bytes
-rw-r--r--assets/emotes/emotesv2_b6ae9db72ba241d59bd01e95c3089c3cbin0 -> 10602 bytes
-rw-r--r--assets/emotes/emotesv2_b72fd3d6129c4dea8af72a3a20d80494bin0 -> 2514 bytes
-rw-r--r--assets/emotes/emotesv2_b805a1050038436a83169e5280c9e7fcbin0 -> 8793 bytes
-rw-r--r--assets/emotes/emotesv2_b815cf0140e047b7808c811715ec63e4bin0 -> 36298 bytes
-rw-r--r--assets/emotes/emotesv2_b86fe2576197436c8840b50cf48e9ac9bin0 -> 7279 bytes
-rw-r--r--assets/emotes/emotesv2_b8a91d95fc4b40ccb2dac3bed03593b5bin0 -> 2563 bytes
-rw-r--r--assets/emotes/emotesv2_b8d7036477044b80b893a55d14f32373bin0 -> 2575 bytes
-rw-r--r--assets/emotes/emotesv2_b914697c0d4041ecba906fa112e8a0e9bin0 -> 38767 bytes
-rw-r--r--assets/emotes/emotesv2_b96b2a89b5824c3b8651446418deaa5bbin0 -> 24137 bytes
-rw-r--r--assets/emotes/emotesv2_ba495d150a3b47f883944ecec9251c8fbin0 -> 28581 bytes
-rw-r--r--assets/emotes/emotesv2_bc2f44a7844040eebdfdb68443c64b32bin0 -> 2730 bytes
-rw-r--r--assets/emotes/emotesv2_bcd077bbac71449f980047a4bf439e43bin0 -> 3568 bytes
-rw-r--r--assets/emotes/emotesv2_bcef669a36d3437ba5ba8801dfadafd7bin0 -> 2475 bytes
-rw-r--r--assets/emotes/emotesv2_c10146643c364881b52cf61cbc7e852cbin0 -> 2839 bytes
-rw-r--r--assets/emotes/emotesv2_c1e4f7725bdc4c15aac2b14dd71cb6f4bin0 -> 7150 bytes
-rw-r--r--assets/emotes/emotesv2_c2524e05d8c94909a13ae5428cfab66cbin0 -> 2765 bytes
-rw-r--r--assets/emotes/emotesv2_c4297efd1428404d907bdaef9408c5bebin0 -> 17109 bytes
-rw-r--r--assets/emotes/emotesv2_c59ad2008b3e4746b2b5f591faf1f042bin0 -> 3840 bytes
-rw-r--r--assets/emotes/emotesv2_c5e17de08a2e4cb688764d6f7cc72691bin0 -> 5180 bytes
-rw-r--r--assets/emotes/emotesv2_c7760d8993db4545b8f592f6716cdff1bin0 -> 2316 bytes
-rw-r--r--assets/emotes/emotesv2_c7fb4e9b8c8d450ab1ecb8b9928f4c5fbin0 -> 2159 bytes
-rw-r--r--assets/emotes/emotesv2_c817be650cb94acf981ae430fb0a067ebin0 -> 34423 bytes
-rw-r--r--assets/emotes/emotesv2_c9f4ba1ebad14edb842c71a76eb22058bin0 -> 2542 bytes
-rw-r--r--assets/emotes/emotesv2_ca4747f9419a48fd8466c421a1448d52bin0 -> 2418 bytes
-rw-r--r--assets/emotes/emotesv2_cb17fcc22a1e4952893c09051d7230adbin0 -> 2270 bytes
-rw-r--r--assets/emotes/emotesv2_cb977a2198cc477e8d87040dbc074e04bin0 -> 28061 bytes
-rw-r--r--assets/emotes/emotesv2_cc1244310ec64345b621b427a64b9ff0bin0 -> 3865 bytes
-rw-r--r--assets/emotes/emotesv2_cc1563a19eaf4518a93326208de941d8bin0 -> 2114 bytes
-rw-r--r--assets/emotes/emotesv2_cc4bae3dd6004ef8a668618d10226f34bin0 -> 3129 bytes
-rw-r--r--assets/emotes/emotesv2_cc58b1f534234a56b52fee76cd0b093dbin0 -> 1596 bytes
-rw-r--r--assets/emotes/emotesv2_cca96ad5b2be47d0bd59cd7dc160994abin0 -> 2334 bytes
-rw-r--r--assets/emotes/emotesv2_ce44ef87650443c79061723d9368d611bin0 -> 7595 bytes
-rw-r--r--assets/emotes/emotesv2_ceaff4832c4a44b9a77dcc2c74836c71bin0 -> 2438 bytes
-rw-r--r--assets/emotes/emotesv2_cf162aa48e9c4082bb9a6012881db79bbin0 -> 3480 bytes
-rw-r--r--assets/emotes/emotesv2_cf9337c7743e4e7ba59e83b5cdde701dbin0 -> 23772 bytes
-rw-r--r--assets/emotes/emotesv2_d01a9536e5e8435b9f290f03bf6bde66bin0 -> 2339 bytes
-rw-r--r--assets/emotes/emotesv2_d0d2ab28473d40efa93139d259a5dd43bin0 -> 2704 bytes
-rw-r--r--assets/emotes/emotesv2_d12afe51f6cb40478525b38e5a86e4e6bin0 -> 8678 bytes
-rw-r--r--assets/emotes/emotesv2_d1419b75bec14b51a65c3c18b4f63b6bbin0 -> 2390 bytes
-rw-r--r--assets/emotes/emotesv2_d25bb3397e224ad4ae183c6e1e31b43cbin0 -> 1940 bytes
-rw-r--r--assets/emotes/emotesv2_d351c5d5e9084402b30bc39eaa3d92aebin0 -> 2620 bytes
-rw-r--r--assets/emotes/emotesv2_d659f9f1b4d5497483c3d18ec0544343bin0 -> 2334 bytes
-rw-r--r--assets/emotes/emotesv2_d6a3268792a64e3aac81101ff5bb7d7abin0 -> 2420 bytes
-rw-r--r--assets/emotes/emotesv2_d8037bde20e24013bc2aa09188ee175ebin0 -> 2378 bytes
-rw-r--r--assets/emotes/emotesv2_d86b5553a51a43c4acb8628b98030882bin0 -> 2499 bytes
-rw-r--r--assets/emotes/emotesv2_d92aa17179ba4eaea5fb58424932e2abbin0 -> 3541 bytes
-rw-r--r--assets/emotes/emotesv2_d970cfcb4e9d4424ad386275f354f710bin0 -> 33702 bytes
-rw-r--r--assets/emotes/emotesv2_d997a846522c49fb897fd04ab602d400bin0 -> 3043 bytes
-rw-r--r--assets/emotes/emotesv2_d9b0ba80d3da483b9413d540f8223897bin0 -> 7117 bytes
-rw-r--r--assets/emotes/emotesv2_d9beaba77b1a4a2bb1a60f5026d6d203bin0 -> 18615 bytes
-rw-r--r--assets/emotes/emotesv2_da18fbc0476a409ab9b9993dd354b1cebin0 -> 6767 bytes
-rw-r--r--assets/emotes/emotesv2_da1b30dd1dd2434bb25aa3387ec519f2bin0 -> 11792 bytes
-rw-r--r--assets/emotes/emotesv2_dae8bd6237ce415b8fcecf152b1935d4bin0 -> 1888 bytes
-rw-r--r--assets/emotes/emotesv2_db14210d9e5c49c98052016c215851d3bin0 -> 2339 bytes
-rw-r--r--assets/emotes/emotesv2_dc26a4c918d64b7aafec8f851880fa22bin0 -> 67490 bytes
-rw-r--r--assets/emotes/emotesv2_dd46165a1b174154a5fc9c41b4b21c9bbin0 -> 15530 bytes
-rw-r--r--assets/emotes/emotesv2_dd7976287e824779bd25fe01fde35450bin0 -> 28927 bytes
-rw-r--r--assets/emotes/emotesv2_de1e958d716f4445ba071608903118acbin0 -> 49942 bytes
-rw-r--r--assets/emotes/emotesv2_df3c519594b34023a9b6c39351cde471bin0 -> 6378 bytes
-rw-r--r--assets/emotes/emotesv2_dfa6f2de3f2d409c8047cee6916177abbin0 -> 3882 bytes
-rw-r--r--assets/emotes/emotesv2_e0d815be522d4cb7981901b0ad24fc0cbin0 -> 2788 bytes
-rw-r--r--assets/emotes/emotesv2_e28989d3765a4fe09eb00b485c4b21d3bin0 -> 2593 bytes
-rw-r--r--assets/emotes/emotesv2_e3936760c213434f9a2274af69b86d52bin0 -> 31096 bytes
-rw-r--r--assets/emotes/emotesv2_e4cc68bdd50f4b5fa817a39c1368731fbin0 -> 15982 bytes
-rw-r--r--assets/emotes/emotesv2_e4e88b54d26b49f698566e5489fdcfe4bin0 -> 2597 bytes
-rw-r--r--assets/emotes/emotesv2_e5ee44dde6564706a59ff4ecb3433df9bin0 -> 2179 bytes
-rw-r--r--assets/emotes/emotesv2_e691268bfafa486992762bec2441202abin0 -> 49342 bytes
-rw-r--r--assets/emotes/emotesv2_e6afb65a90c24504b523a773874d12e1bin0 -> 5457 bytes
-rw-r--r--assets/emotes/emotesv2_e6f3731ff902411299cabaa712eea353bin0 -> 14813 bytes
-rw-r--r--assets/emotes/emotesv2_e7a36a273ffb4e57a33f226f6112800dbin0 -> 9710 bytes
-rw-r--r--assets/emotes/emotesv2_e8503f302ad9497a99000e01b7f3b8b0bin0 -> 3755 bytes
-rw-r--r--assets/emotes/emotesv2_e9a0023b833e4c13b215c41f42f5672bbin0 -> 2408 bytes
-rw-r--r--assets/emotes/emotesv2_eaafcfa9a7e746c8a349d3992da4ee3ebin0 -> 2008 bytes
-rw-r--r--assets/emotes/emotesv2_ec03f0b48fb74f16aca015c5c15e38f1bin0 -> 2323 bytes
-rw-r--r--assets/emotes/emotesv2_ec174a3989c645dd8623da27cdde7b73bin0 -> 2433 bytes
-rw-r--r--assets/emotes/emotesv2_ed0b1401df3d452a83a3d9d10828899dbin0 -> 1575 bytes
-rw-r--r--assets/emotes/emotesv2_ed166ec1ca4041dab9b057827e686741bin0 -> 8040 bytes
-rw-r--r--assets/emotes/emotesv2_ed57b8d35a5a406ebfed0f53eed4466cbin0 -> 2740 bytes
-rw-r--r--assets/emotes/emotesv2_ee5b7067a65a49b8be0a2eda1c1a7d03bin0 -> 2234 bytes
-rw-r--r--assets/emotes/emotesv2_eed4a31efd7544b39ede266baee73115bin0 -> 1260 bytes
-rw-r--r--assets/emotes/emotesv2_eeecc537c43145f494d38a56dff16919bin0 -> 2416 bytes
-rw-r--r--assets/emotes/emotesv2_ef855e8769bf443cb28346970e1b8ebdbin0 -> 2376 bytes
-rw-r--r--assets/emotes/emotesv2_f2160050c2ac44adbfaa851e162e8fc7bin0 -> 19728 bytes
-rw-r--r--assets/emotes/emotesv2_f2e3c56966434c33ab251383b47fc651bin0 -> 16703 bytes
-rw-r--r--assets/emotes/emotesv2_f2eccffec4dc4b12b804ac07c787be4abin0 -> 2773 bytes
-rw-r--r--assets/emotes/emotesv2_f3e53f09d0874f10b163eb26747af9a2bin0 -> 5080 bytes
-rw-r--r--assets/emotes/emotesv2_f3ef5dedf97e4323818c7dc0cd8b5e1bbin0 -> 2424 bytes
-rw-r--r--assets/emotes/emotesv2_f3faa6ad7aec4936bea9ac9523a3bd34bin0 -> 10823 bytes
-rw-r--r--assets/emotes/emotesv2_f4d56acaef634ceebf587b1fd39c8a8cbin0 -> 15995 bytes
-rw-r--r--assets/emotes/emotesv2_f5749d56658d44f788f345db3e1f6aa4bin0 -> 2659 bytes
-rw-r--r--assets/emotes/emotesv2_f6203bf938a5429ca692bfbcb8b2582cbin0 -> 2646 bytes
-rw-r--r--assets/emotes/emotesv2_f7eae8ef8221464b9c13018354e1cbdcbin0 -> 2757 bytes
-rw-r--r--assets/emotes/emotesv2_f89596826e504be6ac6b2664aa87de63bin0 -> 2344 bytes
-rw-r--r--assets/emotes/emotesv2_f8c4b68f134d4273a488237949d1244ebin0 -> 2138 bytes
-rw-r--r--assets/emotes/emotesv2_fb61a9ec50d146fba2ef2926505ab58bbin0 -> 2563 bytes
-rw-r--r--assets/emotes/emotesv2_fbd8e0e6e0594242b7916cf39b727d15bin0 -> 2749 bytes
-rw-r--r--assets/emotes/emotesv2_fbdeeb07569a4eb18c3d077fcbbbb40dbin0 -> 2510 bytes
-rw-r--r--assets/emotes/emotesv2_fc0f8dffa6ea4fc690999b89c69c1ae9bin0 -> 4684 bytes
-rw-r--r--assets/emotes/emotesv2_fca9eca850ae45f699ac816a023e58c3bin0 -> 15752 bytes
-rw-r--r--assets/emotes/emotesv2_fcca511b79d148a2b5737967f0755ef9bin0 -> 808 bytes
-rw-r--r--assets/emotes/emotesv2_fcf84937bf434ebfa2a9fd2ae89046e0bin0 -> 3189 bytes
-rw-r--r--assets/emotes/emotesv2_fd87dfd7b4cc429aa18c44b179299055bin0 -> 2322 bytes
-rw-r--r--assets/emotes/emotesv2_fee0414deb3c4d5fa1dac47c94413820bin0 -> 2241 bytes
-rw-r--r--assets/emotes/emotesv2_ff7f334cdeec4019a78a537ee0ba969fbin0 -> 2408 bytes
-rw-r--r--assets/emotes/emotesv2_ffb97a63f2344a479358abbe54e98f19bin0 -> 2592 bytes
-rw-r--r--assets/glossary/2025-03-14.txt1
-rw-r--r--assets/glossary/2025-03-18.txt1
-rw-r--r--assets/glossary/2025-03-21.txt1
-rw-r--r--assets/glossary/2025-03-25.txt1
-rw-r--r--assets/glossary/2025-03-28.txt1
-rw-r--r--assets/glossary/2025-04-01.txt1
-rw-r--r--assets/glossary/2025-04-04.txt1
-rw-r--r--assets/glossary/2025-04-12.txt1
-rw-r--r--assets/glossary/2025-04-15.txt1
-rw-r--r--assets/glossary/2025-04-18.txt1
-rw-r--r--assets/glossary/2025-04-22.txt1
-rw-r--r--assets/glossary/2025-04-30.txt1
-rw-r--r--assets/rats/users/GlamShatterskull.wavbin0 -> 40044 bytes
-rw-r--r--assets/rats/users/RealNaesten.wavbin0 -> 40044 bytes
-rw-r--r--src/gizmo/wasp-alert-message.el12
-rw-r--r--src/gizmo/wasp-animism.el57
-rw-r--r--src/gizmo/wasp-aoc.el60
-rw-r--r--src/gizmo/wasp-bannerads.el10
-rw-r--r--src/gizmo/wasp-biblicality.el70
-rw-r--r--src/gizmo/wasp-bless.el60
-rw-r--r--src/gizmo/wasp-chatsummary.el24
-rw-r--r--src/gizmo/wasp-copfish.el28
-rw-r--r--src/gizmo/wasp-curse.el252
-rw-r--r--src/gizmo/wasp-cyclone.el36
-rw-r--r--src/gizmo/wasp-fakechat.el4
-rw-r--r--src/gizmo/wasp-flycheck.el20
-rw-r--r--src/gizmo/wasp-friend-callout.el106
-rw-r--r--src/gizmo/wasp-friend-eating.el18
-rw-r--r--src/gizmo/wasp-friend-journalism.el45
-rw-r--r--src/gizmo/wasp-friend-music.el31
-rw-r--r--src/gizmo/wasp-friend-reading.el15
-rw-r--r--src/gizmo/wasp-friend-voice.el70
-rw-r--r--src/gizmo/wasp-friend.el562
-rw-r--r--src/gizmo/wasp-hex.el363
-rw-r--r--src/gizmo/wasp-newspaper.el3
-rw-r--r--src/gizmo/wasp-wikipedia.el34
-rw-r--r--src/wasp-ai.el19
-rw-r--r--src/wasp-audio.el27
-rw-r--r--src/wasp-chat.el10
-rw-r--r--src/wasp-db.el10
-rw-r--r--src/wasp-event-handlers.el218
-rw-r--r--src/wasp-model.el22
-rw-r--r--src/wasp-overlay.el76
-rw-r--r--src/wasp-setup.el3
-rw-r--r--src/wasp-twitch-chat-commands.el16
-rw-r--r--src/wasp-twitch-redeems.el16
-rw-r--r--src/wasp-twitch.el8
-rw-r--r--src/wasp-user-stats.el13
-rw-r--r--src/wasp-user-whitelist.el3
-rw-r--r--src/wasp-user.el20
-rw-r--r--src/wasp-utils.el8
-rw-r--r--wasp.el12
443 files changed, 1243 insertions, 1136 deletions
diff --git a/assets/avatars/biggaymikey.png b/assets/avatars/biggaymikey.png
new file mode 100644
index 00000000..563e8af0
--- /dev/null
+++ b/assets/avatars/biggaymikey.png
Binary files differ
diff --git a/assets/avatars/henriqmarq.png b/assets/avatars/henriqmarq.png
new file mode 100644
index 00000000..a5679c9b
--- /dev/null
+++ b/assets/avatars/henriqmarq.png
Binary files differ
diff --git a/assets/avatars/piet290106.png b/assets/avatars/piet290106.png
new file mode 100644
index 00000000..f5b4483b
--- /dev/null
+++ b/assets/avatars/piet290106.png
Binary files differ
diff --git a/assets/avatars/realnaesten.png b/assets/avatars/realnaesten.png
new file mode 100644
index 00000000..74a0c742
--- /dev/null
+++ b/assets/avatars/realnaesten.png
Binary files differ
diff --git a/assets/avatars/sandcork.png b/assets/avatars/sandcork.png
new file mode 100644
index 00000000..8ad78d54
--- /dev/null
+++ b/assets/avatars/sandcork.png
Binary files differ
diff --git a/assets/avatars/saxtonhale.png b/assets/avatars/saxtonhale.png
new file mode 100644
index 00000000..eb679ac5
--- /dev/null
+++ b/assets/avatars/saxtonhale.png
Binary files differ
diff --git a/assets/avatars/sschr15.png b/assets/avatars/sschr15.png
new file mode 100644
index 00000000..88048a5f
--- /dev/null
+++ b/assets/avatars/sschr15.png
Binary files differ
diff --git a/assets/avatars/u_danielpancake.png b/assets/avatars/u_danielpancake.png
new file mode 100644
index 00000000..8430afe4
--- /dev/null
+++ b/assets/avatars/u_danielpancake.png
Binary files differ
diff --git a/assets/bible.txt b/assets/bible.txt
index 42068f91..ea143757 100644
--- a/assets/bible.txt
+++ b/assets/bible.txt
@@ -99924,4 +99924,8 @@ mamimi___ mamimi___ mamimi___ mamimi___ mamimi___ mamimi___ mamimi___ mamimi___
zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae
pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray
sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772
-quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm \ No newline at end of file
+quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm
+mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon
+katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna
+timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss
+bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma \ No newline at end of file
diff --git a/assets/emotes/115849 b/assets/emotes/115849
new file mode 100644
index 00000000..0f426f45
--- /dev/null
+++ b/assets/emotes/115849
Binary files differ
diff --git a/assets/emotes/1660776 b/assets/emotes/1660776
new file mode 100644
index 00000000..3444fe40
--- /dev/null
+++ b/assets/emotes/1660776
Binary files differ
diff --git a/assets/emotes/1774927 b/assets/emotes/1774927
new file mode 100644
index 00000000..a01061b0
--- /dev/null
+++ b/assets/emotes/1774927
Binary files differ
diff --git a/assets/emotes/300349835 b/assets/emotes/300349835
new file mode 100644
index 00000000..5995781f
--- /dev/null
+++ b/assets/emotes/300349835
Binary files differ
diff --git a/assets/emotes/300703497 b/assets/emotes/300703497
new file mode 100644
index 00000000..e5ef2d4c
--- /dev/null
+++ b/assets/emotes/300703497
Binary files differ
diff --git a/assets/emotes/301158222 b/assets/emotes/301158222
new file mode 100644
index 00000000..e83fcc2d
--- /dev/null
+++ b/assets/emotes/301158222
Binary files differ
diff --git a/assets/emotes/301594376 b/assets/emotes/301594376
new file mode 100644
index 00000000..e9aec794
--- /dev/null
+++ b/assets/emotes/301594376
Binary files differ
diff --git a/assets/emotes/302160774 b/assets/emotes/302160774
new file mode 100644
index 00000000..354a5aef
--- /dev/null
+++ b/assets/emotes/302160774
Binary files differ
diff --git a/assets/emotes/302303594 b/assets/emotes/302303594
new file mode 100644
index 00000000..3f8cc955
--- /dev/null
+++ b/assets/emotes/302303594
Binary files differ
diff --git a/assets/emotes/303141009 b/assets/emotes/303141009
new file mode 100644
index 00000000..9bde288c
--- /dev/null
+++ b/assets/emotes/303141009
Binary files differ
diff --git a/assets/emotes/303446318 b/assets/emotes/303446318
new file mode 100644
index 00000000..6b9f9b06
--- /dev/null
+++ b/assets/emotes/303446318
Binary files differ
diff --git a/assets/emotes/303985776 b/assets/emotes/303985776
new file mode 100644
index 00000000..4ad33b48
--- /dev/null
+++ b/assets/emotes/303985776
Binary files differ
diff --git a/assets/emotes/304560154 b/assets/emotes/304560154
new file mode 100644
index 00000000..a250eae7
--- /dev/null
+++ b/assets/emotes/304560154
Binary files differ
diff --git a/assets/emotes/304669968 b/assets/emotes/304669968
new file mode 100644
index 00000000..8e60e8eb
--- /dev/null
+++ b/assets/emotes/304669968
Binary files differ
diff --git a/assets/emotes/304935642 b/assets/emotes/304935642
new file mode 100644
index 00000000..bec8e25b
--- /dev/null
+++ b/assets/emotes/304935642
Binary files differ
diff --git a/assets/emotes/305595705 b/assets/emotes/305595705
new file mode 100644
index 00000000..cd8805d0
--- /dev/null
+++ b/assets/emotes/305595705
Binary files differ
diff --git a/assets/emotes/306103472 b/assets/emotes/306103472
new file mode 100644
index 00000000..1265cd3d
--- /dev/null
+++ b/assets/emotes/306103472
Binary files differ
diff --git a/assets/emotes/306834544 b/assets/emotes/306834544
new file mode 100644
index 00000000..dba72d1a
--- /dev/null
+++ b/assets/emotes/306834544
Binary files differ
diff --git a/assets/emotes/306954813 b/assets/emotes/306954813
new file mode 100644
index 00000000..cbb96943
--- /dev/null
+++ b/assets/emotes/306954813
Binary files differ
diff --git a/assets/emotes/307378409 b/assets/emotes/307378409
new file mode 100644
index 00000000..d6bdff1a
--- /dev/null
+++ b/assets/emotes/307378409
Binary files differ
diff --git a/assets/emotes/307439015 b/assets/emotes/307439015
new file mode 100644
index 00000000..7c243cdc
--- /dev/null
+++ b/assets/emotes/307439015
Binary files differ
diff --git a/assets/emotes/307923721 b/assets/emotes/307923721
new file mode 100644
index 00000000..2f407040
--- /dev/null
+++ b/assets/emotes/307923721
Binary files differ
diff --git a/assets/emotes/555555579 b/assets/emotes/555555579
new file mode 100644
index 00000000..1a1451a0
--- /dev/null
+++ b/assets/emotes/555555579
Binary files differ
diff --git a/assets/emotes/555555598 b/assets/emotes/555555598
new file mode 100644
index 00000000..0ad70ccf
--- /dev/null
+++ b/assets/emotes/555555598
Binary files differ
diff --git a/assets/emotes/555555607 b/assets/emotes/555555607
new file mode 100644
index 00000000..8dbf7555
--- /dev/null
+++ b/assets/emotes/555555607
Binary files differ
diff --git a/assets/emotes/59197 b/assets/emotes/59197
new file mode 100644
index 00000000..ffc454dc
--- /dev/null
+++ b/assets/emotes/59197
Binary files differ
diff --git a/assets/emotes/965074 b/assets/emotes/965074
new file mode 100644
index 00000000..f6d6f8f1
--- /dev/null
+++ b/assets/emotes/965074
Binary files differ
diff --git a/assets/emotes/emotesv2_00d73b20810c4a9d927504e9f6cdeb36 b/assets/emotes/emotesv2_00d73b20810c4a9d927504e9f6cdeb36
new file mode 100644
index 00000000..a073f564
--- /dev/null
+++ b/assets/emotes/emotesv2_00d73b20810c4a9d927504e9f6cdeb36
Binary files differ
diff --git a/assets/emotes/emotesv2_0114d29bcd9948118c18b1e109f11c4c b/assets/emotes/emotesv2_0114d29bcd9948118c18b1e109f11c4c
new file mode 100644
index 00000000..ddddda7a
--- /dev/null
+++ b/assets/emotes/emotesv2_0114d29bcd9948118c18b1e109f11c4c
Binary files differ
diff --git a/assets/emotes/emotesv2_0144df8700a347f6b15a9356ab7d1c8e b/assets/emotes/emotesv2_0144df8700a347f6b15a9356ab7d1c8e
new file mode 100644
index 00000000..2f911b90
--- /dev/null
+++ b/assets/emotes/emotesv2_0144df8700a347f6b15a9356ab7d1c8e
Binary files differ
diff --git a/assets/emotes/emotesv2_03d86390639442619fd0622f942c733e b/assets/emotes/emotesv2_03d86390639442619fd0622f942c733e
new file mode 100644
index 00000000..e973348c
--- /dev/null
+++ b/assets/emotes/emotesv2_03d86390639442619fd0622f942c733e
Binary files differ
diff --git a/assets/emotes/emotesv2_04508324c80c4a7ebd80299d3848d4f1 b/assets/emotes/emotesv2_04508324c80c4a7ebd80299d3848d4f1
new file mode 100644
index 00000000..6f6fb0e4
--- /dev/null
+++ b/assets/emotes/emotesv2_04508324c80c4a7ebd80299d3848d4f1
Binary files differ
diff --git a/assets/emotes/emotesv2_046d67d12b964cca8d0ff59fd33c772d b/assets/emotes/emotesv2_046d67d12b964cca8d0ff59fd33c772d
new file mode 100644
index 00000000..8cfacae8
--- /dev/null
+++ b/assets/emotes/emotesv2_046d67d12b964cca8d0ff59fd33c772d
Binary files differ
diff --git a/assets/emotes/emotesv2_06693c5360e540cba523931b2b572067 b/assets/emotes/emotesv2_06693c5360e540cba523931b2b572067
new file mode 100644
index 00000000..c0d58989
--- /dev/null
+++ b/assets/emotes/emotesv2_06693c5360e540cba523931b2b572067
Binary files differ
diff --git a/assets/emotes/emotesv2_085fa9bbdafb492a87ed30c5404f3351 b/assets/emotes/emotesv2_085fa9bbdafb492a87ed30c5404f3351
new file mode 100644
index 00000000..cd4ba7c1
--- /dev/null
+++ b/assets/emotes/emotesv2_085fa9bbdafb492a87ed30c5404f3351
Binary files differ
diff --git a/assets/emotes/emotesv2_09e7debf334b4468bcfafdb701cb5452 b/assets/emotes/emotesv2_09e7debf334b4468bcfafdb701cb5452
new file mode 100644
index 00000000..e52adb6c
--- /dev/null
+++ b/assets/emotes/emotesv2_09e7debf334b4468bcfafdb701cb5452
Binary files differ
diff --git a/assets/emotes/emotesv2_09f550504f554181b2872b2ad87fa87a b/assets/emotes/emotesv2_09f550504f554181b2872b2ad87fa87a
new file mode 100644
index 00000000..1257925e
--- /dev/null
+++ b/assets/emotes/emotesv2_09f550504f554181b2872b2ad87fa87a
Binary files differ
diff --git a/assets/emotes/emotesv2_0a4d775bd07e42a2b6240d1ccc2ce637 b/assets/emotes/emotesv2_0a4d775bd07e42a2b6240d1ccc2ce637
new file mode 100644
index 00000000..d773fb1e
--- /dev/null
+++ b/assets/emotes/emotesv2_0a4d775bd07e42a2b6240d1ccc2ce637
Binary files differ
diff --git a/assets/emotes/emotesv2_0b22800b20e048f0b654d9f4186021ab b/assets/emotes/emotesv2_0b22800b20e048f0b654d9f4186021ab
new file mode 100644
index 00000000..52f2db59
--- /dev/null
+++ b/assets/emotes/emotesv2_0b22800b20e048f0b654d9f4186021ab
Binary files differ
diff --git a/assets/emotes/emotesv2_0b7f1a595597464289a76f5e314b197b b/assets/emotes/emotesv2_0b7f1a595597464289a76f5e314b197b
new file mode 100644
index 00000000..86203f8a
--- /dev/null
+++ b/assets/emotes/emotesv2_0b7f1a595597464289a76f5e314b197b
Binary files differ
diff --git a/assets/emotes/emotesv2_0d69ef6192df4046b8fca6da4628fab5 b/assets/emotes/emotesv2_0d69ef6192df4046b8fca6da4628fab5
new file mode 100644
index 00000000..13241333
--- /dev/null
+++ b/assets/emotes/emotesv2_0d69ef6192df4046b8fca6da4628fab5
Binary files differ
diff --git a/assets/emotes/emotesv2_0db450901941479d8be1aedd71bc4219 b/assets/emotes/emotesv2_0db450901941479d8be1aedd71bc4219
new file mode 100644
index 00000000..2e38cdcb
--- /dev/null
+++ b/assets/emotes/emotesv2_0db450901941479d8be1aedd71bc4219
Binary files differ
diff --git a/assets/emotes/emotesv2_0ea0ac068b5647c49c078cf5de809cff b/assets/emotes/emotesv2_0ea0ac068b5647c49c078cf5de809cff
new file mode 100644
index 00000000..f00a14cc
--- /dev/null
+++ b/assets/emotes/emotesv2_0ea0ac068b5647c49c078cf5de809cff
Binary files differ
diff --git a/assets/emotes/emotesv2_0ef6f81c5cc34decba443627e6354f5f b/assets/emotes/emotesv2_0ef6f81c5cc34decba443627e6354f5f
new file mode 100644
index 00000000..de44eade
--- /dev/null
+++ b/assets/emotes/emotesv2_0ef6f81c5cc34decba443627e6354f5f
Binary files differ
diff --git a/assets/emotes/emotesv2_0f6c6b275411418e84fcd0faaeb62b8e b/assets/emotes/emotesv2_0f6c6b275411418e84fcd0faaeb62b8e
new file mode 100644
index 00000000..af118273
--- /dev/null
+++ b/assets/emotes/emotesv2_0f6c6b275411418e84fcd0faaeb62b8e
Binary files differ
diff --git a/assets/emotes/emotesv2_1007959c05e1467bb909138fb87da44c b/assets/emotes/emotesv2_1007959c05e1467bb909138fb87da44c
new file mode 100644
index 00000000..edb5b5bb
--- /dev/null
+++ b/assets/emotes/emotesv2_1007959c05e1467bb909138fb87da44c
Binary files differ
diff --git a/assets/emotes/emotesv2_102e30a079c54d67ab1727fbe7771d5b b/assets/emotes/emotesv2_102e30a079c54d67ab1727fbe7771d5b
new file mode 100644
index 00000000..a097b206
--- /dev/null
+++ b/assets/emotes/emotesv2_102e30a079c54d67ab1727fbe7771d5b
Binary files differ
diff --git a/assets/emotes/emotesv2_10a256a15fa24228b668767340c56444 b/assets/emotes/emotesv2_10a256a15fa24228b668767340c56444
new file mode 100644
index 00000000..52b653bb
--- /dev/null
+++ b/assets/emotes/emotesv2_10a256a15fa24228b668767340c56444
Binary files differ
diff --git a/assets/emotes/emotesv2_117f55be2f3846f4bf647d938e6563f7 b/assets/emotes/emotesv2_117f55be2f3846f4bf647d938e6563f7
new file mode 100644
index 00000000..7895fb56
--- /dev/null
+++ b/assets/emotes/emotesv2_117f55be2f3846f4bf647d938e6563f7
Binary files differ
diff --git a/assets/emotes/emotesv2_127129806d4a4af09cc0b66e859fe27b b/assets/emotes/emotesv2_127129806d4a4af09cc0b66e859fe27b
new file mode 100644
index 00000000..ba6db86b
--- /dev/null
+++ b/assets/emotes/emotesv2_127129806d4a4af09cc0b66e859fe27b
Binary files differ
diff --git a/assets/emotes/emotesv2_13e7ca6c12544488b598282afb358fb7 b/assets/emotes/emotesv2_13e7ca6c12544488b598282afb358fb7
new file mode 100644
index 00000000..a48bceb7
--- /dev/null
+++ b/assets/emotes/emotesv2_13e7ca6c12544488b598282afb358fb7
Binary files differ
diff --git a/assets/emotes/emotesv2_15ba288acf8d455fbf665e03ccc3e2f2 b/assets/emotes/emotesv2_15ba288acf8d455fbf665e03ccc3e2f2
new file mode 100644
index 00000000..ace02638
--- /dev/null
+++ b/assets/emotes/emotesv2_15ba288acf8d455fbf665e03ccc3e2f2
Binary files differ
diff --git a/assets/emotes/emotesv2_162a0795f3224283a4fd0570196d2ca9 b/assets/emotes/emotesv2_162a0795f3224283a4fd0570196d2ca9
new file mode 100644
index 00000000..4d11284c
--- /dev/null
+++ b/assets/emotes/emotesv2_162a0795f3224283a4fd0570196d2ca9
Binary files differ
diff --git a/assets/emotes/emotesv2_16cdcd452c614bb4a5c99e9fb4c9ff40 b/assets/emotes/emotesv2_16cdcd452c614bb4a5c99e9fb4c9ff40
new file mode 100644
index 00000000..92059398
--- /dev/null
+++ b/assets/emotes/emotesv2_16cdcd452c614bb4a5c99e9fb4c9ff40
Binary files differ
diff --git a/assets/emotes/emotesv2_172d963ff07a460e951db94069dcc3be b/assets/emotes/emotesv2_172d963ff07a460e951db94069dcc3be
new file mode 100644
index 00000000..fe3e876c
--- /dev/null
+++ b/assets/emotes/emotesv2_172d963ff07a460e951db94069dcc3be
Binary files differ
diff --git a/assets/emotes/emotesv2_17a13f9699d74d4e932b977e49e9b9a5 b/assets/emotes/emotesv2_17a13f9699d74d4e932b977e49e9b9a5
new file mode 100644
index 00000000..75272247
--- /dev/null
+++ b/assets/emotes/emotesv2_17a13f9699d74d4e932b977e49e9b9a5
Binary files differ
diff --git a/assets/emotes/emotesv2_196135ee78f1497a8bf66a3d2e485524 b/assets/emotes/emotesv2_196135ee78f1497a8bf66a3d2e485524
new file mode 100644
index 00000000..b8b3063d
--- /dev/null
+++ b/assets/emotes/emotesv2_196135ee78f1497a8bf66a3d2e485524
Binary files differ
diff --git a/assets/emotes/emotesv2_19dcd63feed242088d622d53c80068a6 b/assets/emotes/emotesv2_19dcd63feed242088d622d53c80068a6
new file mode 100644
index 00000000..c3494392
--- /dev/null
+++ b/assets/emotes/emotesv2_19dcd63feed242088d622d53c80068a6
Binary files differ
diff --git a/assets/emotes/emotesv2_1a3cf1aa33bf448588cb9954e6faf23d b/assets/emotes/emotesv2_1a3cf1aa33bf448588cb9954e6faf23d
new file mode 100644
index 00000000..b7fccfed
--- /dev/null
+++ b/assets/emotes/emotesv2_1a3cf1aa33bf448588cb9954e6faf23d
Binary files differ
diff --git a/assets/emotes/emotesv2_1abce7d5e9334f94b8044e4ce81bdbd1 b/assets/emotes/emotesv2_1abce7d5e9334f94b8044e4ce81bdbd1
new file mode 100644
index 00000000..ee4a4cb7
--- /dev/null
+++ b/assets/emotes/emotesv2_1abce7d5e9334f94b8044e4ce81bdbd1
Binary files differ
diff --git a/assets/emotes/emotesv2_1adf9cb4c8054fdfa282f6fc174764cf b/assets/emotes/emotesv2_1adf9cb4c8054fdfa282f6fc174764cf
new file mode 100644
index 00000000..78200255
--- /dev/null
+++ b/assets/emotes/emotesv2_1adf9cb4c8054fdfa282f6fc174764cf
Binary files differ
diff --git a/assets/emotes/emotesv2_1bf4277cbbb24196a03a94b8132e27ba b/assets/emotes/emotesv2_1bf4277cbbb24196a03a94b8132e27ba
new file mode 100644
index 00000000..35c50449
--- /dev/null
+++ b/assets/emotes/emotesv2_1bf4277cbbb24196a03a94b8132e27ba
Binary files differ
diff --git a/assets/emotes/emotesv2_1c43a903c5d247808fb0a081fda6f939 b/assets/emotes/emotesv2_1c43a903c5d247808fb0a081fda6f939
new file mode 100644
index 00000000..bb64aced
--- /dev/null
+++ b/assets/emotes/emotesv2_1c43a903c5d247808fb0a081fda6f939
Binary files differ
diff --git a/assets/emotes/emotesv2_1d2fd57f591b4bd38f1e12ea73ca9d7d b/assets/emotes/emotesv2_1d2fd57f591b4bd38f1e12ea73ca9d7d
new file mode 100644
index 00000000..10855868
--- /dev/null
+++ b/assets/emotes/emotesv2_1d2fd57f591b4bd38f1e12ea73ca9d7d
Binary files differ
diff --git a/assets/emotes/emotesv2_202f6ec2051946cfad299e6950ece887 b/assets/emotes/emotesv2_202f6ec2051946cfad299e6950ece887
new file mode 100644
index 00000000..287e50d1
--- /dev/null
+++ b/assets/emotes/emotesv2_202f6ec2051946cfad299e6950ece887
Binary files differ
diff --git a/assets/emotes/emotesv2_2072304653af4152aed66e471a958591 b/assets/emotes/emotesv2_2072304653af4152aed66e471a958591
new file mode 100644
index 00000000..cdfc53b8
--- /dev/null
+++ b/assets/emotes/emotesv2_2072304653af4152aed66e471a958591
Binary files differ
diff --git a/assets/emotes/emotesv2_20a5c29af55240d4a276e0ffd828db3e b/assets/emotes/emotesv2_20a5c29af55240d4a276e0ffd828db3e
new file mode 100644
index 00000000..020ee725
--- /dev/null
+++ b/assets/emotes/emotesv2_20a5c29af55240d4a276e0ffd828db3e
Binary files differ
diff --git a/assets/emotes/emotesv2_228ae199127d4ed4b9e9520816fe354c b/assets/emotes/emotesv2_228ae199127d4ed4b9e9520816fe354c
new file mode 100644
index 00000000..e68c57e7
--- /dev/null
+++ b/assets/emotes/emotesv2_228ae199127d4ed4b9e9520816fe354c
Binary files differ
diff --git a/assets/emotes/emotesv2_229ef85e3c77488e97a1f814a38ed9b4 b/assets/emotes/emotesv2_229ef85e3c77488e97a1f814a38ed9b4
new file mode 100644
index 00000000..043a1e64
--- /dev/null
+++ b/assets/emotes/emotesv2_229ef85e3c77488e97a1f814a38ed9b4
Binary files differ
diff --git a/assets/emotes/emotesv2_23d2f3e5baff4729ae053d9fc0199ff8 b/assets/emotes/emotesv2_23d2f3e5baff4729ae053d9fc0199ff8
new file mode 100644
index 00000000..0c4cf737
--- /dev/null
+++ b/assets/emotes/emotesv2_23d2f3e5baff4729ae053d9fc0199ff8
Binary files differ
diff --git a/assets/emotes/emotesv2_24203cb01ea043a78baaa72a7fc68471 b/assets/emotes/emotesv2_24203cb01ea043a78baaa72a7fc68471
new file mode 100644
index 00000000..231e2cea
--- /dev/null
+++ b/assets/emotes/emotesv2_24203cb01ea043a78baaa72a7fc68471
Binary files differ
diff --git a/assets/emotes/emotesv2_24e7b9e915bb4ec7bd976c8772580a48 b/assets/emotes/emotesv2_24e7b9e915bb4ec7bd976c8772580a48
new file mode 100644
index 00000000..3d07f695
--- /dev/null
+++ b/assets/emotes/emotesv2_24e7b9e915bb4ec7bd976c8772580a48
Binary files differ
diff --git a/assets/emotes/emotesv2_24efb590db6849a0bfbc7f25e64b2b3a b/assets/emotes/emotesv2_24efb590db6849a0bfbc7f25e64b2b3a
new file mode 100644
index 00000000..017e8933
--- /dev/null
+++ b/assets/emotes/emotesv2_24efb590db6849a0bfbc7f25e64b2b3a
Binary files differ
diff --git a/assets/emotes/emotesv2_24fb54e0db67481e971c8cf1744a53a7 b/assets/emotes/emotesv2_24fb54e0db67481e971c8cf1744a53a7
new file mode 100644
index 00000000..866309e1
--- /dev/null
+++ b/assets/emotes/emotesv2_24fb54e0db67481e971c8cf1744a53a7
Binary files differ
diff --git a/assets/emotes/emotesv2_250231b9fb3c4a849d15ebd7a0c923bf b/assets/emotes/emotesv2_250231b9fb3c4a849d15ebd7a0c923bf
new file mode 100644
index 00000000..90bad451
--- /dev/null
+++ b/assets/emotes/emotesv2_250231b9fb3c4a849d15ebd7a0c923bf
Binary files differ
diff --git a/assets/emotes/emotesv2_252b80f7b02a4ffca1bd206f84981232 b/assets/emotes/emotesv2_252b80f7b02a4ffca1bd206f84981232
new file mode 100644
index 00000000..810ad6ca
--- /dev/null
+++ b/assets/emotes/emotesv2_252b80f7b02a4ffca1bd206f84981232
Binary files differ
diff --git a/assets/emotes/emotesv2_256369ace7b54ee090390d3a17461274 b/assets/emotes/emotesv2_256369ace7b54ee090390d3a17461274
new file mode 100644
index 00000000..1d127eb6
--- /dev/null
+++ b/assets/emotes/emotesv2_256369ace7b54ee090390d3a17461274
Binary files differ
diff --git a/assets/emotes/emotesv2_25e1eb365e5c41169c48cc7f651e473b b/assets/emotes/emotesv2_25e1eb365e5c41169c48cc7f651e473b
new file mode 100644
index 00000000..c72b4943
--- /dev/null
+++ b/assets/emotes/emotesv2_25e1eb365e5c41169c48cc7f651e473b
Binary files differ
diff --git a/assets/emotes/emotesv2_26672983fce4494589b81a85473147ad b/assets/emotes/emotesv2_26672983fce4494589b81a85473147ad
new file mode 100644
index 00000000..e6b78da1
--- /dev/null
+++ b/assets/emotes/emotesv2_26672983fce4494589b81a85473147ad
Binary files differ
diff --git a/assets/emotes/emotesv2_27d3a101f9434c23bfcd2fde7df2aaeb b/assets/emotes/emotesv2_27d3a101f9434c23bfcd2fde7df2aaeb
new file mode 100644
index 00000000..4e40242d
--- /dev/null
+++ b/assets/emotes/emotesv2_27d3a101f9434c23bfcd2fde7df2aaeb
Binary files differ
diff --git a/assets/emotes/emotesv2_2801a662aca14585aecb9b701dabdddf b/assets/emotes/emotesv2_2801a662aca14585aecb9b701dabdddf
new file mode 100644
index 00000000..8d2e5773
--- /dev/null
+++ b/assets/emotes/emotesv2_2801a662aca14585aecb9b701dabdddf
Binary files differ
diff --git a/assets/emotes/emotesv2_28d84c4284b04111b1f6d11c386cfd96 b/assets/emotes/emotesv2_28d84c4284b04111b1f6d11c386cfd96
new file mode 100644
index 00000000..ef22fa33
--- /dev/null
+++ b/assets/emotes/emotesv2_28d84c4284b04111b1f6d11c386cfd96
Binary files differ
diff --git a/assets/emotes/emotesv2_2b3ea10e11e943b8810abda89b760c4c b/assets/emotes/emotesv2_2b3ea10e11e943b8810abda89b760c4c
new file mode 100644
index 00000000..6584ad7b
--- /dev/null
+++ b/assets/emotes/emotesv2_2b3ea10e11e943b8810abda89b760c4c
Binary files differ
diff --git a/assets/emotes/emotesv2_2cca1fc234c24812b1bfacc040a1a0cb b/assets/emotes/emotesv2_2cca1fc234c24812b1bfacc040a1a0cb
new file mode 100644
index 00000000..727dfbb0
--- /dev/null
+++ b/assets/emotes/emotesv2_2cca1fc234c24812b1bfacc040a1a0cb
Binary files differ
diff --git a/assets/emotes/emotesv2_2dfde60feba94161b23e49eb008a1ae4 b/assets/emotes/emotesv2_2dfde60feba94161b23e49eb008a1ae4
new file mode 100644
index 00000000..dcd2c896
--- /dev/null
+++ b/assets/emotes/emotesv2_2dfde60feba94161b23e49eb008a1ae4
Binary files differ
diff --git a/assets/emotes/emotesv2_2e563f0a9d884b5a8aa5b825f4b3ba87 b/assets/emotes/emotesv2_2e563f0a9d884b5a8aa5b825f4b3ba87
new file mode 100644
index 00000000..dff061f4
--- /dev/null
+++ b/assets/emotes/emotesv2_2e563f0a9d884b5a8aa5b825f4b3ba87
Binary files differ
diff --git a/assets/emotes/emotesv2_2fb3d0ac1f9f44d48a940a9974fe1be4 b/assets/emotes/emotesv2_2fb3d0ac1f9f44d48a940a9974fe1be4
new file mode 100644
index 00000000..d6c6866e
--- /dev/null
+++ b/assets/emotes/emotesv2_2fb3d0ac1f9f44d48a940a9974fe1be4
Binary files differ
diff --git a/assets/emotes/emotesv2_2ffb6149f5f5402f97e3934a311432e1 b/assets/emotes/emotesv2_2ffb6149f5f5402f97e3934a311432e1
new file mode 100644
index 00000000..47aa0361
--- /dev/null
+++ b/assets/emotes/emotesv2_2ffb6149f5f5402f97e3934a311432e1
Binary files differ
diff --git a/assets/emotes/emotesv2_31bcf88bddb646ccbce3053f02d9153d b/assets/emotes/emotesv2_31bcf88bddb646ccbce3053f02d9153d
new file mode 100644
index 00000000..e65d8e3e
--- /dev/null
+++ b/assets/emotes/emotesv2_31bcf88bddb646ccbce3053f02d9153d
Binary files differ
diff --git a/assets/emotes/emotesv2_337f7545c212432db52a0ea0373ba31d b/assets/emotes/emotesv2_337f7545c212432db52a0ea0373ba31d
new file mode 100644
index 00000000..3ae02ebf
--- /dev/null
+++ b/assets/emotes/emotesv2_337f7545c212432db52a0ea0373ba31d
Binary files differ
diff --git a/assets/emotes/emotesv2_339c58c55dd94148844b67e9de97b2ab b/assets/emotes/emotesv2_339c58c55dd94148844b67e9de97b2ab
new file mode 100644
index 00000000..430aa8cd
--- /dev/null
+++ b/assets/emotes/emotesv2_339c58c55dd94148844b67e9de97b2ab
Binary files differ
diff --git a/assets/emotes/emotesv2_34d1f8827eb641099062e3518e340575 b/assets/emotes/emotesv2_34d1f8827eb641099062e3518e340575
new file mode 100644
index 00000000..cbb7afa7
--- /dev/null
+++ b/assets/emotes/emotesv2_34d1f8827eb641099062e3518e340575
Binary files differ
diff --git a/assets/emotes/emotesv2_355c00cd40744178a3d05452e104e072 b/assets/emotes/emotesv2_355c00cd40744178a3d05452e104e072
new file mode 100644
index 00000000..bd4dbb2a
--- /dev/null
+++ b/assets/emotes/emotesv2_355c00cd40744178a3d05452e104e072
Binary files differ
diff --git a/assets/emotes/emotesv2_362a8e88a8dc4b3693c9aaa4a46365d6 b/assets/emotes/emotesv2_362a8e88a8dc4b3693c9aaa4a46365d6
new file mode 100644
index 00000000..e7bc8674
--- /dev/null
+++ b/assets/emotes/emotesv2_362a8e88a8dc4b3693c9aaa4a46365d6
Binary files differ
diff --git a/assets/emotes/emotesv2_3753bb482cae4446a7ca69d353916990 b/assets/emotes/emotesv2_3753bb482cae4446a7ca69d353916990
new file mode 100644
index 00000000..c9e0b8bf
--- /dev/null
+++ b/assets/emotes/emotesv2_3753bb482cae4446a7ca69d353916990
Binary files differ
diff --git a/assets/emotes/emotesv2_37a732dff9694b5ba621136ebbe4c90b b/assets/emotes/emotesv2_37a732dff9694b5ba621136ebbe4c90b
new file mode 100644
index 00000000..2ad59a99
--- /dev/null
+++ b/assets/emotes/emotesv2_37a732dff9694b5ba621136ebbe4c90b
Binary files differ
diff --git a/assets/emotes/emotesv2_38436724a19a4a839060feab98894017 b/assets/emotes/emotesv2_38436724a19a4a839060feab98894017
new file mode 100644
index 00000000..defc311b
--- /dev/null
+++ b/assets/emotes/emotesv2_38436724a19a4a839060feab98894017
Binary files differ
diff --git a/assets/emotes/emotesv2_38f709a70a434988b3ea41dcfcde32a7 b/assets/emotes/emotesv2_38f709a70a434988b3ea41dcfcde32a7
new file mode 100644
index 00000000..7577fba3
--- /dev/null
+++ b/assets/emotes/emotesv2_38f709a70a434988b3ea41dcfcde32a7
Binary files differ
diff --git a/assets/emotes/emotesv2_398073c05e6f47b18d23402be38e306c b/assets/emotes/emotesv2_398073c05e6f47b18d23402be38e306c
new file mode 100644
index 00000000..747ca532
--- /dev/null
+++ b/assets/emotes/emotesv2_398073c05e6f47b18d23402be38e306c
Binary files differ
diff --git a/assets/emotes/emotesv2_3a9b8692e89440ed92db8555dd599191 b/assets/emotes/emotesv2_3a9b8692e89440ed92db8555dd599191
new file mode 100644
index 00000000..3afbfa0b
--- /dev/null
+++ b/assets/emotes/emotesv2_3a9b8692e89440ed92db8555dd599191
Binary files differ
diff --git a/assets/emotes/emotesv2_3d0545fa611f44f6b7c25c658321fa10 b/assets/emotes/emotesv2_3d0545fa611f44f6b7c25c658321fa10
new file mode 100644
index 00000000..9ef59808
--- /dev/null
+++ b/assets/emotes/emotesv2_3d0545fa611f44f6b7c25c658321fa10
Binary files differ
diff --git a/assets/emotes/emotesv2_3d0c77cd056e457685f49204e9a342f3 b/assets/emotes/emotesv2_3d0c77cd056e457685f49204e9a342f3
new file mode 100644
index 00000000..3ed218a7
--- /dev/null
+++ b/assets/emotes/emotesv2_3d0c77cd056e457685f49204e9a342f3
Binary files differ
diff --git a/assets/emotes/emotesv2_3d57a2e80de74336b0ec9f7b6a2ffdaf b/assets/emotes/emotesv2_3d57a2e80de74336b0ec9f7b6a2ffdaf
new file mode 100644
index 00000000..50b88767
--- /dev/null
+++ b/assets/emotes/emotesv2_3d57a2e80de74336b0ec9f7b6a2ffdaf
Binary files differ
diff --git a/assets/emotes/emotesv2_3d999db390104c24b42d10d6292290d7 b/assets/emotes/emotesv2_3d999db390104c24b42d10d6292290d7
new file mode 100644
index 00000000..7b928c0b
--- /dev/null
+++ b/assets/emotes/emotesv2_3d999db390104c24b42d10d6292290d7
Binary files differ
diff --git a/assets/emotes/emotesv2_3dfbda628997420a8d74dd0fa04d8964 b/assets/emotes/emotesv2_3dfbda628997420a8d74dd0fa04d8964
new file mode 100644
index 00000000..8566512a
--- /dev/null
+++ b/assets/emotes/emotesv2_3dfbda628997420a8d74dd0fa04d8964
Binary files differ
diff --git a/assets/emotes/emotesv2_407d9b46b9894896b60aff7c9b10534e b/assets/emotes/emotesv2_407d9b46b9894896b60aff7c9b10534e
new file mode 100644
index 00000000..a2bce04b
--- /dev/null
+++ b/assets/emotes/emotesv2_407d9b46b9894896b60aff7c9b10534e
Binary files differ
diff --git a/assets/emotes/emotesv2_4152261ae0d0473aaa84a26fdbad9f6e b/assets/emotes/emotesv2_4152261ae0d0473aaa84a26fdbad9f6e
new file mode 100644
index 00000000..beacb10e
--- /dev/null
+++ b/assets/emotes/emotesv2_4152261ae0d0473aaa84a26fdbad9f6e
Binary files differ
diff --git a/assets/emotes/emotesv2_41cb3d8210e3480a80a4c5f2d871dda8 b/assets/emotes/emotesv2_41cb3d8210e3480a80a4c5f2d871dda8
new file mode 100644
index 00000000..d46b26cc
--- /dev/null
+++ b/assets/emotes/emotesv2_41cb3d8210e3480a80a4c5f2d871dda8
Binary files differ
diff --git a/assets/emotes/emotesv2_440ef982eb47436eb09e99975a59474a b/assets/emotes/emotesv2_440ef982eb47436eb09e99975a59474a
new file mode 100644
index 00000000..8b3b2fed
--- /dev/null
+++ b/assets/emotes/emotesv2_440ef982eb47436eb09e99975a59474a
Binary files differ
diff --git a/assets/emotes/emotesv2_441b0cd9a965438990b5bc69a9a35507 b/assets/emotes/emotesv2_441b0cd9a965438990b5bc69a9a35507
new file mode 100644
index 00000000..fc1c26ff
--- /dev/null
+++ b/assets/emotes/emotesv2_441b0cd9a965438990b5bc69a9a35507
Binary files differ
diff --git a/assets/emotes/emotesv2_4669a2ba1f7f4381a3b4b0b298e23008 b/assets/emotes/emotesv2_4669a2ba1f7f4381a3b4b0b298e23008
new file mode 100644
index 00000000..c4c8959f
--- /dev/null
+++ b/assets/emotes/emotesv2_4669a2ba1f7f4381a3b4b0b298e23008
Binary files differ
diff --git a/assets/emotes/emotesv2_4845aea689bd4044a2a67f9f7c950da0 b/assets/emotes/emotesv2_4845aea689bd4044a2a67f9f7c950da0
new file mode 100644
index 00000000..f6ec2eb7
--- /dev/null
+++ b/assets/emotes/emotesv2_4845aea689bd4044a2a67f9f7c950da0
Binary files differ
diff --git a/assets/emotes/emotesv2_48468328d2524efc9dede95c680200a4 b/assets/emotes/emotesv2_48468328d2524efc9dede95c680200a4
new file mode 100644
index 00000000..5426a339
--- /dev/null
+++ b/assets/emotes/emotesv2_48468328d2524efc9dede95c680200a4
Binary files differ
diff --git a/assets/emotes/emotesv2_48a1c027c57a4c42b3cf4af51863e6df b/assets/emotes/emotesv2_48a1c027c57a4c42b3cf4af51863e6df
new file mode 100644
index 00000000..931bc335
--- /dev/null
+++ b/assets/emotes/emotesv2_48a1c027c57a4c42b3cf4af51863e6df
Binary files differ
diff --git a/assets/emotes/emotesv2_48d82508ea81496c8fd108c2a376656f b/assets/emotes/emotesv2_48d82508ea81496c8fd108c2a376656f
new file mode 100644
index 00000000..db844f23
--- /dev/null
+++ b/assets/emotes/emotesv2_48d82508ea81496c8fd108c2a376656f
Binary files differ
diff --git a/assets/emotes/emotesv2_495d3674d06e44bbbdea34244b6b5d82 b/assets/emotes/emotesv2_495d3674d06e44bbbdea34244b6b5d82
new file mode 100644
index 00000000..40a6eb00
--- /dev/null
+++ b/assets/emotes/emotesv2_495d3674d06e44bbbdea34244b6b5d82
Binary files differ
diff --git a/assets/emotes/emotesv2_49abeb068b5b4705bec832c4729eb794 b/assets/emotes/emotesv2_49abeb068b5b4705bec832c4729eb794
new file mode 100644
index 00000000..cbe22b3a
--- /dev/null
+++ b/assets/emotes/emotesv2_49abeb068b5b4705bec832c4729eb794
Binary files differ
diff --git a/assets/emotes/emotesv2_4b0234918f3f4a60a32d94f31e512505 b/assets/emotes/emotesv2_4b0234918f3f4a60a32d94f31e512505
new file mode 100644
index 00000000..c489daf8
--- /dev/null
+++ b/assets/emotes/emotesv2_4b0234918f3f4a60a32d94f31e512505
Binary files differ
diff --git a/assets/emotes/emotesv2_4c67ea457d434e3fa289ec9402a42551 b/assets/emotes/emotesv2_4c67ea457d434e3fa289ec9402a42551
new file mode 100644
index 00000000..029e11ea
--- /dev/null
+++ b/assets/emotes/emotesv2_4c67ea457d434e3fa289ec9402a42551
Binary files differ
diff --git a/assets/emotes/emotesv2_4c682fe3720246c78ed925ab053d8766 b/assets/emotes/emotesv2_4c682fe3720246c78ed925ab053d8766
new file mode 100644
index 00000000..c9cba1dd
--- /dev/null
+++ b/assets/emotes/emotesv2_4c682fe3720246c78ed925ab053d8766
Binary files differ
diff --git a/assets/emotes/emotesv2_4e98413cbeae4aceabf13666fee68809 b/assets/emotes/emotesv2_4e98413cbeae4aceabf13666fee68809
new file mode 100644
index 00000000..f874502e
--- /dev/null
+++ b/assets/emotes/emotesv2_4e98413cbeae4aceabf13666fee68809
Binary files differ
diff --git a/assets/emotes/emotesv2_4fd3a5d71eb84c24894ec27e3ae60ff9 b/assets/emotes/emotesv2_4fd3a5d71eb84c24894ec27e3ae60ff9
new file mode 100644
index 00000000..f7723f68
--- /dev/null
+++ b/assets/emotes/emotesv2_4fd3a5d71eb84c24894ec27e3ae60ff9
Binary files differ
diff --git a/assets/emotes/emotesv2_5026c62f5a1b44fbb2b4eaab5d0656c3 b/assets/emotes/emotesv2_5026c62f5a1b44fbb2b4eaab5d0656c3
new file mode 100644
index 00000000..cdf572f6
--- /dev/null
+++ b/assets/emotes/emotesv2_5026c62f5a1b44fbb2b4eaab5d0656c3
Binary files differ
diff --git a/assets/emotes/emotesv2_50484a4550ad48d8a34456e1b5216cd4 b/assets/emotes/emotesv2_50484a4550ad48d8a34456e1b5216cd4
new file mode 100644
index 00000000..e4410a75
--- /dev/null
+++ b/assets/emotes/emotesv2_50484a4550ad48d8a34456e1b5216cd4
Binary files differ
diff --git a/assets/emotes/emotesv2_523cbb164f4c481caba353298c0125db b/assets/emotes/emotesv2_523cbb164f4c481caba353298c0125db
new file mode 100644
index 00000000..80df4aa6
--- /dev/null
+++ b/assets/emotes/emotesv2_523cbb164f4c481caba353298c0125db
Binary files differ
diff --git a/assets/emotes/emotesv2_52dff8e1e96d4384935d49aa0d56d38b b/assets/emotes/emotesv2_52dff8e1e96d4384935d49aa0d56d38b
new file mode 100644
index 00000000..6ee214e0
--- /dev/null
+++ b/assets/emotes/emotesv2_52dff8e1e96d4384935d49aa0d56d38b
Binary files differ
diff --git a/assets/emotes/emotesv2_536da87d32584600abde1f5af66c5288 b/assets/emotes/emotesv2_536da87d32584600abde1f5af66c5288
new file mode 100644
index 00000000..6a466d2a
--- /dev/null
+++ b/assets/emotes/emotesv2_536da87d32584600abde1f5af66c5288
Binary files differ
diff --git a/assets/emotes/emotesv2_53a5fea263714afc96e08711d15ea780 b/assets/emotes/emotesv2_53a5fea263714afc96e08711d15ea780
new file mode 100644
index 00000000..d96d1644
--- /dev/null
+++ b/assets/emotes/emotesv2_53a5fea263714afc96e08711d15ea780
Binary files differ
diff --git a/assets/emotes/emotesv2_53f3c2bc4acf4735b2f79bb385b46c2d b/assets/emotes/emotesv2_53f3c2bc4acf4735b2f79bb385b46c2d
new file mode 100644
index 00000000..bc454e4c
--- /dev/null
+++ b/assets/emotes/emotesv2_53f3c2bc4acf4735b2f79bb385b46c2d
Binary files differ
diff --git a/assets/emotes/emotesv2_547e8c955abf4137937b05933df0b772 b/assets/emotes/emotesv2_547e8c955abf4137937b05933df0b772
new file mode 100644
index 00000000..5fe6c65f
--- /dev/null
+++ b/assets/emotes/emotesv2_547e8c955abf4137937b05933df0b772
Binary files differ
diff --git a/assets/emotes/emotesv2_54e7302e687b4b3387f469f21ef3c726 b/assets/emotes/emotesv2_54e7302e687b4b3387f469f21ef3c726
new file mode 100644
index 00000000..cb2d7b7d
--- /dev/null
+++ b/assets/emotes/emotesv2_54e7302e687b4b3387f469f21ef3c726
Binary files differ
diff --git a/assets/emotes/emotesv2_55129b7cd7a444a8a649f44d4ed82fa4 b/assets/emotes/emotesv2_55129b7cd7a444a8a649f44d4ed82fa4
new file mode 100644
index 00000000..e6432fad
--- /dev/null
+++ b/assets/emotes/emotesv2_55129b7cd7a444a8a649f44d4ed82fa4
Binary files differ
diff --git a/assets/emotes/emotesv2_555e43b97c8a42d7aabe218a6765a108 b/assets/emotes/emotesv2_555e43b97c8a42d7aabe218a6765a108
new file mode 100644
index 00000000..4e039e8a
--- /dev/null
+++ b/assets/emotes/emotesv2_555e43b97c8a42d7aabe218a6765a108
Binary files differ
diff --git a/assets/emotes/emotesv2_55800dceae8b4a09a315a60adddd7b80 b/assets/emotes/emotesv2_55800dceae8b4a09a315a60adddd7b80
new file mode 100644
index 00000000..e8027da3
--- /dev/null
+++ b/assets/emotes/emotesv2_55800dceae8b4a09a315a60adddd7b80
Binary files differ
diff --git a/assets/emotes/emotesv2_58606ffb5fd54f96a7734f8fe2216928 b/assets/emotes/emotesv2_58606ffb5fd54f96a7734f8fe2216928
new file mode 100644
index 00000000..7b1bb087
--- /dev/null
+++ b/assets/emotes/emotesv2_58606ffb5fd54f96a7734f8fe2216928
Binary files differ
diff --git a/assets/emotes/emotesv2_596ac55cb1634c03b0cd40d671f5d762 b/assets/emotes/emotesv2_596ac55cb1634c03b0cd40d671f5d762
new file mode 100644
index 00000000..c84ea089
--- /dev/null
+++ b/assets/emotes/emotesv2_596ac55cb1634c03b0cd40d671f5d762
Binary files differ
diff --git a/assets/emotes/emotesv2_596bbffcdc4645e89aa802bf44043864 b/assets/emotes/emotesv2_596bbffcdc4645e89aa802bf44043864
new file mode 100644
index 00000000..f205a4c2
--- /dev/null
+++ b/assets/emotes/emotesv2_596bbffcdc4645e89aa802bf44043864
Binary files differ
diff --git a/assets/emotes/emotesv2_59cb01861aa6483d81b2257eb5a6e5b0 b/assets/emotes/emotesv2_59cb01861aa6483d81b2257eb5a6e5b0
new file mode 100644
index 00000000..ac188541
--- /dev/null
+++ b/assets/emotes/emotesv2_59cb01861aa6483d81b2257eb5a6e5b0
Binary files differ
diff --git a/assets/emotes/emotesv2_5ae132d15449480a9b65ed422ef93c7f b/assets/emotes/emotesv2_5ae132d15449480a9b65ed422ef93c7f
new file mode 100644
index 00000000..1ddcc961
--- /dev/null
+++ b/assets/emotes/emotesv2_5ae132d15449480a9b65ed422ef93c7f
Binary files differ
diff --git a/assets/emotes/emotesv2_5b1f6b74ccb8400f8b50396a7bbc3b93 b/assets/emotes/emotesv2_5b1f6b74ccb8400f8b50396a7bbc3b93
new file mode 100644
index 00000000..240dafbc
--- /dev/null
+++ b/assets/emotes/emotesv2_5b1f6b74ccb8400f8b50396a7bbc3b93
Binary files differ
diff --git a/assets/emotes/emotesv2_5b335cd372da4e3394272117135220ab b/assets/emotes/emotesv2_5b335cd372da4e3394272117135220ab
new file mode 100644
index 00000000..4800e127
--- /dev/null
+++ b/assets/emotes/emotesv2_5b335cd372da4e3394272117135220ab
Binary files differ
diff --git a/assets/emotes/emotesv2_5c57d48d429d4828be043c26addb0bcb b/assets/emotes/emotesv2_5c57d48d429d4828be043c26addb0bcb
new file mode 100644
index 00000000..be57bd29
--- /dev/null
+++ b/assets/emotes/emotesv2_5c57d48d429d4828be043c26addb0bcb
Binary files differ
diff --git a/assets/emotes/emotesv2_5d91d0301adb4ed7b453fa9924a6aaa1 b/assets/emotes/emotesv2_5d91d0301adb4ed7b453fa9924a6aaa1
new file mode 100644
index 00000000..d506db09
--- /dev/null
+++ b/assets/emotes/emotesv2_5d91d0301adb4ed7b453fa9924a6aaa1
Binary files differ
diff --git a/assets/emotes/emotesv2_5dc5c73e383f46259f45baa7b6c317eb b/assets/emotes/emotesv2_5dc5c73e383f46259f45baa7b6c317eb
new file mode 100644
index 00000000..fb26d05a
--- /dev/null
+++ b/assets/emotes/emotesv2_5dc5c73e383f46259f45baa7b6c317eb
Binary files differ
diff --git a/assets/emotes/emotesv2_5e07afac8d504960b02ba7b036f3d6da b/assets/emotes/emotesv2_5e07afac8d504960b02ba7b036f3d6da
new file mode 100644
index 00000000..326a6dae
--- /dev/null
+++ b/assets/emotes/emotesv2_5e07afac8d504960b02ba7b036f3d6da
Binary files differ
diff --git a/assets/emotes/emotesv2_5e109c2a05094f16a46bfbc52d210f61 b/assets/emotes/emotesv2_5e109c2a05094f16a46bfbc52d210f61
new file mode 100644
index 00000000..f5af0dea
--- /dev/null
+++ b/assets/emotes/emotesv2_5e109c2a05094f16a46bfbc52d210f61
Binary files differ
diff --git a/assets/emotes/emotesv2_5e7b7f345e8f46d0b8f27b6a4f51f28c b/assets/emotes/emotesv2_5e7b7f345e8f46d0b8f27b6a4f51f28c
new file mode 100644
index 00000000..96ab4d08
--- /dev/null
+++ b/assets/emotes/emotesv2_5e7b7f345e8f46d0b8f27b6a4f51f28c
Binary files differ
diff --git a/assets/emotes/emotesv2_5f69a9fed5d24dc79df25453c7d72a90 b/assets/emotes/emotesv2_5f69a9fed5d24dc79df25453c7d72a90
new file mode 100644
index 00000000..683e45b6
--- /dev/null
+++ b/assets/emotes/emotesv2_5f69a9fed5d24dc79df25453c7d72a90
Binary files differ
diff --git a/assets/emotes/emotesv2_601930df6e434791a5873d65414a5849 b/assets/emotes/emotesv2_601930df6e434791a5873d65414a5849
new file mode 100644
index 00000000..e1d30726
--- /dev/null
+++ b/assets/emotes/emotesv2_601930df6e434791a5873d65414a5849
Binary files differ
diff --git a/assets/emotes/emotesv2_604ae91dae224b789962e70a805f3c3f b/assets/emotes/emotesv2_604ae91dae224b789962e70a805f3c3f
new file mode 100644
index 00000000..cb000fc9
--- /dev/null
+++ b/assets/emotes/emotesv2_604ae91dae224b789962e70a805f3c3f
Binary files differ
diff --git a/assets/emotes/emotesv2_6058cffdb65341feaff3d6368536464e b/assets/emotes/emotesv2_6058cffdb65341feaff3d6368536464e
new file mode 100644
index 00000000..8b360b41
--- /dev/null
+++ b/assets/emotes/emotesv2_6058cffdb65341feaff3d6368536464e
Binary files differ
diff --git a/assets/emotes/emotesv2_613ccd272ebf450d84c457bd16c9819c b/assets/emotes/emotesv2_613ccd272ebf450d84c457bd16c9819c
new file mode 100644
index 00000000..be98833f
--- /dev/null
+++ b/assets/emotes/emotesv2_613ccd272ebf450d84c457bd16c9819c
Binary files differ
diff --git a/assets/emotes/emotesv2_61d8e83a99f849118dd5489f6cdf0929 b/assets/emotes/emotesv2_61d8e83a99f849118dd5489f6cdf0929
new file mode 100644
index 00000000..dd70b6c9
--- /dev/null
+++ b/assets/emotes/emotesv2_61d8e83a99f849118dd5489f6cdf0929
Binary files differ
diff --git a/assets/emotes/emotesv2_62791a27ec384ccb96e27defb5277067 b/assets/emotes/emotesv2_62791a27ec384ccb96e27defb5277067
new file mode 100644
index 00000000..9d457bc1
--- /dev/null
+++ b/assets/emotes/emotesv2_62791a27ec384ccb96e27defb5277067
Binary files differ
diff --git a/assets/emotes/emotesv2_63d7f59fb61b4745b7ee62caf4ffc06f b/assets/emotes/emotesv2_63d7f59fb61b4745b7ee62caf4ffc06f
new file mode 100644
index 00000000..e045908f
--- /dev/null
+++ b/assets/emotes/emotesv2_63d7f59fb61b4745b7ee62caf4ffc06f
Binary files differ
diff --git a/assets/emotes/emotesv2_6444f5cbf53640f1beccfcb29ed02ae6 b/assets/emotes/emotesv2_6444f5cbf53640f1beccfcb29ed02ae6
new file mode 100644
index 00000000..da5ca976
--- /dev/null
+++ b/assets/emotes/emotesv2_6444f5cbf53640f1beccfcb29ed02ae6
Binary files differ
diff --git a/assets/emotes/emotesv2_6456fcf4f15f4f4f80eb27becc290615 b/assets/emotes/emotesv2_6456fcf4f15f4f4f80eb27becc290615
new file mode 100644
index 00000000..3b0d5f57
--- /dev/null
+++ b/assets/emotes/emotesv2_6456fcf4f15f4f4f80eb27becc290615
Binary files differ
diff --git a/assets/emotes/emotesv2_64cf7ab508eb4947a73ef1d7a38e0984 b/assets/emotes/emotesv2_64cf7ab508eb4947a73ef1d7a38e0984
new file mode 100644
index 00000000..6b35065e
--- /dev/null
+++ b/assets/emotes/emotesv2_64cf7ab508eb4947a73ef1d7a38e0984
Binary files differ
diff --git a/assets/emotes/emotesv2_64f50bf400324ec68b8207aac282e454 b/assets/emotes/emotesv2_64f50bf400324ec68b8207aac282e454
new file mode 100644
index 00000000..de009081
--- /dev/null
+++ b/assets/emotes/emotesv2_64f50bf400324ec68b8207aac282e454
Binary files differ
diff --git a/assets/emotes/emotesv2_64fd59354add4e3f80fdcaf32850e761 b/assets/emotes/emotesv2_64fd59354add4e3f80fdcaf32850e761
new file mode 100644
index 00000000..7c48f858
--- /dev/null
+++ b/assets/emotes/emotesv2_64fd59354add4e3f80fdcaf32850e761
Binary files differ
diff --git a/assets/emotes/emotesv2_65e924d6dc194a6c863845e8dfe83943 b/assets/emotes/emotesv2_65e924d6dc194a6c863845e8dfe83943
new file mode 100644
index 00000000..b878d6ef
--- /dev/null
+++ b/assets/emotes/emotesv2_65e924d6dc194a6c863845e8dfe83943
Binary files differ
diff --git a/assets/emotes/emotesv2_662145dd4e844282affbf06df8e261b8 b/assets/emotes/emotesv2_662145dd4e844282affbf06df8e261b8
new file mode 100644
index 00000000..ea50807f
--- /dev/null
+++ b/assets/emotes/emotesv2_662145dd4e844282affbf06df8e261b8
Binary files differ
diff --git a/assets/emotes/emotesv2_66d371de61d64d32bee1d47b26dfe238 b/assets/emotes/emotesv2_66d371de61d64d32bee1d47b26dfe238
new file mode 100644
index 00000000..f80e0d63
--- /dev/null
+++ b/assets/emotes/emotesv2_66d371de61d64d32bee1d47b26dfe238
Binary files differ
diff --git a/assets/emotes/emotesv2_67d8334685e94c7380f92503a30e1c48 b/assets/emotes/emotesv2_67d8334685e94c7380f92503a30e1c48
new file mode 100644
index 00000000..5b48ccd3
--- /dev/null
+++ b/assets/emotes/emotesv2_67d8334685e94c7380f92503a30e1c48
Binary files differ
diff --git a/assets/emotes/emotesv2_69aa5755b0454c01bebc9a35cd861722 b/assets/emotes/emotesv2_69aa5755b0454c01bebc9a35cd861722
new file mode 100644
index 00000000..838247eb
--- /dev/null
+++ b/assets/emotes/emotesv2_69aa5755b0454c01bebc9a35cd861722
Binary files differ
diff --git a/assets/emotes/emotesv2_69f8434749e343d8926967a564dbc908 b/assets/emotes/emotesv2_69f8434749e343d8926967a564dbc908
new file mode 100644
index 00000000..bbcb9910
--- /dev/null
+++ b/assets/emotes/emotesv2_69f8434749e343d8926967a564dbc908
Binary files differ
diff --git a/assets/emotes/emotesv2_6a28e3adbdfd4cf69ca4b4bcb2ac77a8 b/assets/emotes/emotesv2_6a28e3adbdfd4cf69ca4b4bcb2ac77a8
new file mode 100644
index 00000000..52a28887
--- /dev/null
+++ b/assets/emotes/emotesv2_6a28e3adbdfd4cf69ca4b4bcb2ac77a8
Binary files differ
diff --git a/assets/emotes/emotesv2_6a4c5a8c06dc48c5ab22210c68a52e03 b/assets/emotes/emotesv2_6a4c5a8c06dc48c5ab22210c68a52e03
new file mode 100644
index 00000000..bacfcd75
--- /dev/null
+++ b/assets/emotes/emotesv2_6a4c5a8c06dc48c5ab22210c68a52e03
Binary files differ
diff --git a/assets/emotes/emotesv2_6ad945d63ffa47aabd1ccff4871a0283 b/assets/emotes/emotesv2_6ad945d63ffa47aabd1ccff4871a0283
new file mode 100644
index 00000000..59b6a028
--- /dev/null
+++ b/assets/emotes/emotesv2_6ad945d63ffa47aabd1ccff4871a0283
Binary files differ
diff --git a/assets/emotes/emotesv2_6b03a429ecd545ed98af41dba25f490a b/assets/emotes/emotesv2_6b03a429ecd545ed98af41dba25f490a
new file mode 100644
index 00000000..df8b0de5
--- /dev/null
+++ b/assets/emotes/emotesv2_6b03a429ecd545ed98af41dba25f490a
Binary files differ
diff --git a/assets/emotes/emotesv2_6b37b7e13bb94ffa8ac6af5740dd6e6b b/assets/emotes/emotesv2_6b37b7e13bb94ffa8ac6af5740dd6e6b
new file mode 100644
index 00000000..f3ab1c26
--- /dev/null
+++ b/assets/emotes/emotesv2_6b37b7e13bb94ffa8ac6af5740dd6e6b
Binary files differ
diff --git a/assets/emotes/emotesv2_6b94432ee31b4f909adab1058209a268 b/assets/emotes/emotesv2_6b94432ee31b4f909adab1058209a268
new file mode 100644
index 00000000..449c480e
--- /dev/null
+++ b/assets/emotes/emotesv2_6b94432ee31b4f909adab1058209a268
Binary files differ
diff --git a/assets/emotes/emotesv2_6ca8feb8f3f2466eb9acc98e3089911b b/assets/emotes/emotesv2_6ca8feb8f3f2466eb9acc98e3089911b
new file mode 100644
index 00000000..9c20d63f
--- /dev/null
+++ b/assets/emotes/emotesv2_6ca8feb8f3f2466eb9acc98e3089911b
Binary files differ
diff --git a/assets/emotes/emotesv2_6e7afafe028d4059b7a050d00a18a401 b/assets/emotes/emotesv2_6e7afafe028d4059b7a050d00a18a401
new file mode 100644
index 00000000..512a6851
--- /dev/null
+++ b/assets/emotes/emotesv2_6e7afafe028d4059b7a050d00a18a401
Binary files differ
diff --git a/assets/emotes/emotesv2_6ef79d00b5e0447ca9a3c8170f3df006 b/assets/emotes/emotesv2_6ef79d00b5e0447ca9a3c8170f3df006
new file mode 100644
index 00000000..f8c6a615
--- /dev/null
+++ b/assets/emotes/emotesv2_6ef79d00b5e0447ca9a3c8170f3df006
Binary files differ
diff --git a/assets/emotes/emotesv2_6f1c5d88aa8b4a7eaabf306b6dc410b7 b/assets/emotes/emotesv2_6f1c5d88aa8b4a7eaabf306b6dc410b7
new file mode 100644
index 00000000..e19d81e9
--- /dev/null
+++ b/assets/emotes/emotesv2_6f1c5d88aa8b4a7eaabf306b6dc410b7
Binary files differ
diff --git a/assets/emotes/emotesv2_6f1d1da892d542748afbbfef36e0aa28 b/assets/emotes/emotesv2_6f1d1da892d542748afbbfef36e0aa28
new file mode 100644
index 00000000..a6af8dfc
--- /dev/null
+++ b/assets/emotes/emotesv2_6f1d1da892d542748afbbfef36e0aa28
Binary files differ
diff --git a/assets/emotes/emotesv2_6f47210c1f6240458420b9db0b5ec9c5 b/assets/emotes/emotesv2_6f47210c1f6240458420b9db0b5ec9c5
new file mode 100644
index 00000000..30957734
--- /dev/null
+++ b/assets/emotes/emotesv2_6f47210c1f6240458420b9db0b5ec9c5
Binary files differ
diff --git a/assets/emotes/emotesv2_703b0a29ebd843dcb9b02b415a56ab5d b/assets/emotes/emotesv2_703b0a29ebd843dcb9b02b415a56ab5d
new file mode 100644
index 00000000..5382a2ad
--- /dev/null
+++ b/assets/emotes/emotesv2_703b0a29ebd843dcb9b02b415a56ab5d
Binary files differ
diff --git a/assets/emotes/emotesv2_70700345e3384219a35d7af9e75f9395 b/assets/emotes/emotesv2_70700345e3384219a35d7af9e75f9395
new file mode 100644
index 00000000..4938f0b7
--- /dev/null
+++ b/assets/emotes/emotesv2_70700345e3384219a35d7af9e75f9395
Binary files differ
diff --git a/assets/emotes/emotesv2_71276b021c024affa2a4ffab59d32c56 b/assets/emotes/emotesv2_71276b021c024affa2a4ffab59d32c56
new file mode 100644
index 00000000..fba90f86
--- /dev/null
+++ b/assets/emotes/emotesv2_71276b021c024affa2a4ffab59d32c56
Binary files differ
diff --git a/assets/emotes/emotesv2_732a78769b5643fd93ab2c72821b51c4 b/assets/emotes/emotesv2_732a78769b5643fd93ab2c72821b51c4
new file mode 100644
index 00000000..bc5a3f53
--- /dev/null
+++ b/assets/emotes/emotesv2_732a78769b5643fd93ab2c72821b51c4
Binary files differ
diff --git a/assets/emotes/emotesv2_73846909f8f24164b41a275b39658fd0 b/assets/emotes/emotesv2_73846909f8f24164b41a275b39658fd0
new file mode 100644
index 00000000..c0cd34af
--- /dev/null
+++ b/assets/emotes/emotesv2_73846909f8f24164b41a275b39658fd0
Binary files differ
diff --git a/assets/emotes/emotesv2_73f434f2f56f48f08367155f22cd4867 b/assets/emotes/emotesv2_73f434f2f56f48f08367155f22cd4867
new file mode 100644
index 00000000..237f4693
--- /dev/null
+++ b/assets/emotes/emotesv2_73f434f2f56f48f08367155f22cd4867
Binary files differ
diff --git a/assets/emotes/emotesv2_75d7f2d367f248d49a82f5289a7dc03d_HF b/assets/emotes/emotesv2_75d7f2d367f248d49a82f5289a7dc03d_HF
new file mode 100644
index 00000000..cfb1ba78
--- /dev/null
+++ b/assets/emotes/emotesv2_75d7f2d367f248d49a82f5289a7dc03d_HF
Binary files differ
diff --git a/assets/emotes/emotesv2_75eea89c64dd415188edb2d2e6ffd66e b/assets/emotes/emotesv2_75eea89c64dd415188edb2d2e6ffd66e
new file mode 100644
index 00000000..0310e693
--- /dev/null
+++ b/assets/emotes/emotesv2_75eea89c64dd415188edb2d2e6ffd66e
Binary files differ
diff --git a/assets/emotes/emotesv2_75eee2ab9e8244eaae2c141dc14c62f8 b/assets/emotes/emotesv2_75eee2ab9e8244eaae2c141dc14c62f8
new file mode 100644
index 00000000..8c001ddd
--- /dev/null
+++ b/assets/emotes/emotesv2_75eee2ab9e8244eaae2c141dc14c62f8
Binary files differ
diff --git a/assets/emotes/emotesv2_76d148292d704c348b40c48e7a906809 b/assets/emotes/emotesv2_76d148292d704c348b40c48e7a906809
new file mode 100644
index 00000000..896af461
--- /dev/null
+++ b/assets/emotes/emotesv2_76d148292d704c348b40c48e7a906809
Binary files differ
diff --git a/assets/emotes/emotesv2_77ce83d7905d4e09b323e4ceb0d4a94e b/assets/emotes/emotesv2_77ce83d7905d4e09b323e4ceb0d4a94e
new file mode 100644
index 00000000..37e52407
--- /dev/null
+++ b/assets/emotes/emotesv2_77ce83d7905d4e09b323e4ceb0d4a94e
Binary files differ
diff --git a/assets/emotes/emotesv2_77d15834e97240049c811ed3d967b190 b/assets/emotes/emotesv2_77d15834e97240049c811ed3d967b190
new file mode 100644
index 00000000..ceaf503f
--- /dev/null
+++ b/assets/emotes/emotesv2_77d15834e97240049c811ed3d967b190
Binary files differ
diff --git a/assets/emotes/emotesv2_785cb1a26b244fb38f83b0278b5ff10f b/assets/emotes/emotesv2_785cb1a26b244fb38f83b0278b5ff10f
new file mode 100644
index 00000000..91cceced
--- /dev/null
+++ b/assets/emotes/emotesv2_785cb1a26b244fb38f83b0278b5ff10f
Binary files differ
diff --git a/assets/emotes/emotesv2_78c9b1149e024ed1be6022f8a341e3b2 b/assets/emotes/emotesv2_78c9b1149e024ed1be6022f8a341e3b2
new file mode 100644
index 00000000..489cfc98
--- /dev/null
+++ b/assets/emotes/emotesv2_78c9b1149e024ed1be6022f8a341e3b2
Binary files differ
diff --git a/assets/emotes/emotesv2_78f915520b4440d68e0333c7e41e9200 b/assets/emotes/emotesv2_78f915520b4440d68e0333c7e41e9200
new file mode 100644
index 00000000..a2415ee5
--- /dev/null
+++ b/assets/emotes/emotesv2_78f915520b4440d68e0333c7e41e9200
Binary files differ
diff --git a/assets/emotes/emotesv2_796d85ec687047b49aea8c7e74f6b58b b/assets/emotes/emotesv2_796d85ec687047b49aea8c7e74f6b58b
new file mode 100644
index 00000000..e1898528
--- /dev/null
+++ b/assets/emotes/emotesv2_796d85ec687047b49aea8c7e74f6b58b
Binary files differ
diff --git a/assets/emotes/emotesv2_7a1f2f816fa9436cbd6579f2dbf1fa07 b/assets/emotes/emotesv2_7a1f2f816fa9436cbd6579f2dbf1fa07
new file mode 100644
index 00000000..4d852fcc
--- /dev/null
+++ b/assets/emotes/emotesv2_7a1f2f816fa9436cbd6579f2dbf1fa07
Binary files differ
diff --git a/assets/emotes/emotesv2_7b07e86b0efe4b5dbffae545a0a246d3 b/assets/emotes/emotesv2_7b07e86b0efe4b5dbffae545a0a246d3
new file mode 100644
index 00000000..fd7f2982
--- /dev/null
+++ b/assets/emotes/emotesv2_7b07e86b0efe4b5dbffae545a0a246d3
Binary files differ
diff --git a/assets/emotes/emotesv2_7c526cf20bbb4cc48d70a4ffa3e58231 b/assets/emotes/emotesv2_7c526cf20bbb4cc48d70a4ffa3e58231
new file mode 100644
index 00000000..58c8451f
--- /dev/null
+++ b/assets/emotes/emotesv2_7c526cf20bbb4cc48d70a4ffa3e58231
Binary files differ
diff --git a/assets/emotes/emotesv2_7d4909238e2c4ff29d1035967b3320ca b/assets/emotes/emotesv2_7d4909238e2c4ff29d1035967b3320ca
new file mode 100644
index 00000000..97f3f0d2
--- /dev/null
+++ b/assets/emotes/emotesv2_7d4909238e2c4ff29d1035967b3320ca
Binary files differ
diff --git a/assets/emotes/emotesv2_7e4fb21379b446bc917acf6da6173a26 b/assets/emotes/emotesv2_7e4fb21379b446bc917acf6da6173a26
new file mode 100644
index 00000000..74bea5c7
--- /dev/null
+++ b/assets/emotes/emotesv2_7e4fb21379b446bc917acf6da6173a26
Binary files differ
diff --git a/assets/emotes/emotesv2_8004b88a5c9c4f44bea8a5f66f2b2970 b/assets/emotes/emotesv2_8004b88a5c9c4f44bea8a5f66f2b2970
new file mode 100644
index 00000000..d7cac92c
--- /dev/null
+++ b/assets/emotes/emotesv2_8004b88a5c9c4f44bea8a5f66f2b2970
Binary files differ
diff --git a/assets/emotes/emotesv2_8064ffd3794142749a01291e77c269aa b/assets/emotes/emotesv2_8064ffd3794142749a01291e77c269aa
new file mode 100644
index 00000000..01ada5da
--- /dev/null
+++ b/assets/emotes/emotesv2_8064ffd3794142749a01291e77c269aa
Binary files differ
diff --git a/assets/emotes/emotesv2_807683797c134435b03ce421d2a69f18 b/assets/emotes/emotesv2_807683797c134435b03ce421d2a69f18
new file mode 100644
index 00000000..c7e3bb03
--- /dev/null
+++ b/assets/emotes/emotesv2_807683797c134435b03ce421d2a69f18
Binary files differ
diff --git a/assets/emotes/emotesv2_8235d7c49b90499687d252f5d578c4cf b/assets/emotes/emotesv2_8235d7c49b90499687d252f5d578c4cf
new file mode 100644
index 00000000..b34450d3
--- /dev/null
+++ b/assets/emotes/emotesv2_8235d7c49b90499687d252f5d578c4cf
Binary files differ
diff --git a/assets/emotes/emotesv2_834c09086613410794fc144b05205854 b/assets/emotes/emotesv2_834c09086613410794fc144b05205854
new file mode 100644
index 00000000..8ba8fabd
--- /dev/null
+++ b/assets/emotes/emotesv2_834c09086613410794fc144b05205854
Binary files differ
diff --git a/assets/emotes/emotesv2_83fd3d36e14f4b97ac7f72a2c945ff05 b/assets/emotes/emotesv2_83fd3d36e14f4b97ac7f72a2c945ff05
new file mode 100644
index 00000000..726d2901
--- /dev/null
+++ b/assets/emotes/emotesv2_83fd3d36e14f4b97ac7f72a2c945ff05
Binary files differ
diff --git a/assets/emotes/emotesv2_8469d0ac664e4678aad3dbdeacd74a80 b/assets/emotes/emotesv2_8469d0ac664e4678aad3dbdeacd74a80
new file mode 100644
index 00000000..2ef93b6b
--- /dev/null
+++ b/assets/emotes/emotesv2_8469d0ac664e4678aad3dbdeacd74a80
Binary files differ
diff --git a/assets/emotes/emotesv2_85ce95a4b41244699ae283971f4754ea b/assets/emotes/emotesv2_85ce95a4b41244699ae283971f4754ea
new file mode 100644
index 00000000..a95d55bb
--- /dev/null
+++ b/assets/emotes/emotesv2_85ce95a4b41244699ae283971f4754ea
Binary files differ
diff --git a/assets/emotes/emotesv2_85faafce7d71481cb62c708820b0be84 b/assets/emotes/emotesv2_85faafce7d71481cb62c708820b0be84
new file mode 100644
index 00000000..2d470515
--- /dev/null
+++ b/assets/emotes/emotesv2_85faafce7d71481cb62c708820b0be84
Binary files differ
diff --git a/assets/emotes/emotesv2_867d55a7f9b644e2b15c10234383b25f b/assets/emotes/emotesv2_867d55a7f9b644e2b15c10234383b25f
new file mode 100644
index 00000000..2ab3212f
--- /dev/null
+++ b/assets/emotes/emotesv2_867d55a7f9b644e2b15c10234383b25f
Binary files differ
diff --git a/assets/emotes/emotesv2_88ce587d51b048acabd8d332bcce95d5 b/assets/emotes/emotesv2_88ce587d51b048acabd8d332bcce95d5
new file mode 100644
index 00000000..435bc5da
--- /dev/null
+++ b/assets/emotes/emotesv2_88ce587d51b048acabd8d332bcce95d5
Binary files differ
diff --git a/assets/emotes/emotesv2_8a69a54b34d345ae992f87e0a1a0b44c b/assets/emotes/emotesv2_8a69a54b34d345ae992f87e0a1a0b44c
new file mode 100644
index 00000000..b0bc459d
--- /dev/null
+++ b/assets/emotes/emotesv2_8a69a54b34d345ae992f87e0a1a0b44c
Binary files differ
diff --git a/assets/emotes/emotesv2_8aef87f335cf4d3284a4a924b90b60de b/assets/emotes/emotesv2_8aef87f335cf4d3284a4a924b90b60de
new file mode 100644
index 00000000..beb43341
--- /dev/null
+++ b/assets/emotes/emotesv2_8aef87f335cf4d3284a4a924b90b60de
Binary files differ
diff --git a/assets/emotes/emotesv2_8bf198a0f83c4bc3acbf0882e0bbd98f b/assets/emotes/emotesv2_8bf198a0f83c4bc3acbf0882e0bbd98f
new file mode 100644
index 00000000..ae70138e
--- /dev/null
+++ b/assets/emotes/emotesv2_8bf198a0f83c4bc3acbf0882e0bbd98f
Binary files differ
diff --git a/assets/emotes/emotesv2_8bfa9bb4113b48b8ba213f404d7371c8 b/assets/emotes/emotesv2_8bfa9bb4113b48b8ba213f404d7371c8
new file mode 100644
index 00000000..a6524403
--- /dev/null
+++ b/assets/emotes/emotesv2_8bfa9bb4113b48b8ba213f404d7371c8
Binary files differ
diff --git a/assets/emotes/emotesv2_8d06d108c90a458b91457714b34d0836 b/assets/emotes/emotesv2_8d06d108c90a458b91457714b34d0836
new file mode 100644
index 00000000..bb4ace8f
--- /dev/null
+++ b/assets/emotes/emotesv2_8d06d108c90a458b91457714b34d0836
Binary files differ
diff --git a/assets/emotes/emotesv2_8d31fb106b2f41aebc507189d969be11 b/assets/emotes/emotesv2_8d31fb106b2f41aebc507189d969be11
new file mode 100644
index 00000000..f68cb5b6
--- /dev/null
+++ b/assets/emotes/emotesv2_8d31fb106b2f41aebc507189d969be11
Binary files differ
diff --git a/assets/emotes/emotesv2_8e8e19ad89ed4cdcacc666e84e3f616a b/assets/emotes/emotesv2_8e8e19ad89ed4cdcacc666e84e3f616a
new file mode 100644
index 00000000..26109522
--- /dev/null
+++ b/assets/emotes/emotesv2_8e8e19ad89ed4cdcacc666e84e3f616a
Binary files differ
diff --git a/assets/emotes/emotesv2_8e90b13948ff46d88867eed684c38b9d b/assets/emotes/emotesv2_8e90b13948ff46d88867eed684c38b9d
new file mode 100644
index 00000000..52053804
--- /dev/null
+++ b/assets/emotes/emotesv2_8e90b13948ff46d88867eed684c38b9d
Binary files differ
diff --git a/assets/emotes/emotesv2_8fe388f1f47946ffa4a8b0b488616944 b/assets/emotes/emotesv2_8fe388f1f47946ffa4a8b0b488616944
new file mode 100644
index 00000000..3056b6cb
--- /dev/null
+++ b/assets/emotes/emotesv2_8fe388f1f47946ffa4a8b0b488616944
Binary files differ
diff --git a/assets/emotes/emotesv2_906dc8700ed74ee1bbef2df094683a8b b/assets/emotes/emotesv2_906dc8700ed74ee1bbef2df094683a8b
new file mode 100644
index 00000000..70dcb352
--- /dev/null
+++ b/assets/emotes/emotesv2_906dc8700ed74ee1bbef2df094683a8b
Binary files differ
diff --git a/assets/emotes/emotesv2_90dcebf25baa4478a43bcd86910ede62 b/assets/emotes/emotesv2_90dcebf25baa4478a43bcd86910ede62
new file mode 100644
index 00000000..746b1b6f
--- /dev/null
+++ b/assets/emotes/emotesv2_90dcebf25baa4478a43bcd86910ede62
Binary files differ
diff --git a/assets/emotes/emotesv2_90ea6219add542d0ada501643a727a27 b/assets/emotes/emotesv2_90ea6219add542d0ada501643a727a27
new file mode 100644
index 00000000..50891216
--- /dev/null
+++ b/assets/emotes/emotesv2_90ea6219add542d0ada501643a727a27
Binary files differ
diff --git a/assets/emotes/emotesv2_916553f67e7841d3b2674fbf5aeba3cf b/assets/emotes/emotesv2_916553f67e7841d3b2674fbf5aeba3cf
new file mode 100644
index 00000000..6504c763
--- /dev/null
+++ b/assets/emotes/emotesv2_916553f67e7841d3b2674fbf5aeba3cf
Binary files differ
diff --git a/assets/emotes/emotesv2_91f4334f495446b582fe77923f4589ff b/assets/emotes/emotesv2_91f4334f495446b582fe77923f4589ff
new file mode 100644
index 00000000..7aece3af
--- /dev/null
+++ b/assets/emotes/emotesv2_91f4334f495446b582fe77923f4589ff
Binary files differ
diff --git a/assets/emotes/emotesv2_920d701333c94fba94f5aed29053c077 b/assets/emotes/emotesv2_920d701333c94fba94f5aed29053c077
new file mode 100644
index 00000000..acb4784d
--- /dev/null
+++ b/assets/emotes/emotesv2_920d701333c94fba94f5aed29053c077
Binary files differ
diff --git a/assets/emotes/emotesv2_92ebb9517ce4470ab5e574181129d4d9 b/assets/emotes/emotesv2_92ebb9517ce4470ab5e574181129d4d9
new file mode 100644
index 00000000..7a109193
--- /dev/null
+++ b/assets/emotes/emotesv2_92ebb9517ce4470ab5e574181129d4d9
Binary files differ
diff --git a/assets/emotes/emotesv2_93c07b986a8c427ba497e210b11fb84c b/assets/emotes/emotesv2_93c07b986a8c427ba497e210b11fb84c
new file mode 100644
index 00000000..0deeb2bf
--- /dev/null
+++ b/assets/emotes/emotesv2_93c07b986a8c427ba497e210b11fb84c
Binary files differ
diff --git a/assets/emotes/emotesv2_944938feb3694525b5d91dc9e52dc615 b/assets/emotes/emotesv2_944938feb3694525b5d91dc9e52dc615
new file mode 100644
index 00000000..3316d410
--- /dev/null
+++ b/assets/emotes/emotesv2_944938feb3694525b5d91dc9e52dc615
Binary files differ
diff --git a/assets/emotes/emotesv2_9458ff7ff9c74dc0975db037b7eebbee b/assets/emotes/emotesv2_9458ff7ff9c74dc0975db037b7eebbee
new file mode 100644
index 00000000..f4c57e09
--- /dev/null
+++ b/assets/emotes/emotesv2_9458ff7ff9c74dc0975db037b7eebbee
Binary files differ
diff --git a/assets/emotes/emotesv2_949e6a7df0c74af28e829587741e338c b/assets/emotes/emotesv2_949e6a7df0c74af28e829587741e338c
new file mode 100644
index 00000000..2d67d79c
--- /dev/null
+++ b/assets/emotes/emotesv2_949e6a7df0c74af28e829587741e338c
Binary files differ
diff --git a/assets/emotes/emotesv2_97f01191fbe24496813d18c4d98d7881 b/assets/emotes/emotesv2_97f01191fbe24496813d18c4d98d7881
new file mode 100644
index 00000000..1e53c6ae
--- /dev/null
+++ b/assets/emotes/emotesv2_97f01191fbe24496813d18c4d98d7881
Binary files differ
diff --git a/assets/emotes/emotesv2_98bee893c21c4e1d84393278ea219e1c b/assets/emotes/emotesv2_98bee893c21c4e1d84393278ea219e1c
new file mode 100644
index 00000000..c2bd9ac5
--- /dev/null
+++ b/assets/emotes/emotesv2_98bee893c21c4e1d84393278ea219e1c
Binary files differ
diff --git a/assets/emotes/emotesv2_99696770a9ed4f24bcac6bac7a97d3d4 b/assets/emotes/emotesv2_99696770a9ed4f24bcac6bac7a97d3d4
new file mode 100644
index 00000000..f06aae40
--- /dev/null
+++ b/assets/emotes/emotesv2_99696770a9ed4f24bcac6bac7a97d3d4
Binary files differ
diff --git a/assets/emotes/emotesv2_997611a1e0734112a27322514282d83a b/assets/emotes/emotesv2_997611a1e0734112a27322514282d83a
new file mode 100644
index 00000000..88a25450
--- /dev/null
+++ b/assets/emotes/emotesv2_997611a1e0734112a27322514282d83a
Binary files differ
diff --git a/assets/emotes/emotesv2_99f3ad0175d8433aac306c020760bf23 b/assets/emotes/emotesv2_99f3ad0175d8433aac306c020760bf23
new file mode 100644
index 00000000..e3fbd78b
--- /dev/null
+++ b/assets/emotes/emotesv2_99f3ad0175d8433aac306c020760bf23
Binary files differ
diff --git a/assets/emotes/emotesv2_9a1c64ab3e44491fb2c2b0dc7a767a90 b/assets/emotes/emotesv2_9a1c64ab3e44491fb2c2b0dc7a767a90
new file mode 100644
index 00000000..af96715b
--- /dev/null
+++ b/assets/emotes/emotesv2_9a1c64ab3e44491fb2c2b0dc7a767a90
Binary files differ
diff --git a/assets/emotes/emotesv2_9a373a06200b405e8646464f1d11ca92 b/assets/emotes/emotesv2_9a373a06200b405e8646464f1d11ca92
new file mode 100644
index 00000000..08cb272e
--- /dev/null
+++ b/assets/emotes/emotesv2_9a373a06200b405e8646464f1d11ca92
Binary files differ
diff --git a/assets/emotes/emotesv2_9a3d4ab4a6364c9fa28436d9f0984739 b/assets/emotes/emotesv2_9a3d4ab4a6364c9fa28436d9f0984739
new file mode 100644
index 00000000..06d864ee
--- /dev/null
+++ b/assets/emotes/emotesv2_9a3d4ab4a6364c9fa28436d9f0984739
Binary files differ
diff --git a/assets/emotes/emotesv2_9a4d0ecba81d4bd0ad65c2e1bf02e479_TK b/assets/emotes/emotesv2_9a4d0ecba81d4bd0ad65c2e1bf02e479_TK
new file mode 100644
index 00000000..c60e7620
--- /dev/null
+++ b/assets/emotes/emotesv2_9a4d0ecba81d4bd0ad65c2e1bf02e479_TK
Binary files differ
diff --git a/assets/emotes/emotesv2_9b12eb15d9e34d3a85e650a4de6fd756 b/assets/emotes/emotesv2_9b12eb15d9e34d3a85e650a4de6fd756
new file mode 100644
index 00000000..8e895a43
--- /dev/null
+++ b/assets/emotes/emotesv2_9b12eb15d9e34d3a85e650a4de6fd756
Binary files differ
diff --git a/assets/emotes/emotesv2_9c59a8fafe554da1a07d34e418ec2b30 b/assets/emotes/emotesv2_9c59a8fafe554da1a07d34e418ec2b30
new file mode 100644
index 00000000..36bf94be
--- /dev/null
+++ b/assets/emotes/emotesv2_9c59a8fafe554da1a07d34e418ec2b30
Binary files differ
diff --git a/assets/emotes/emotesv2_9c9d5e65cac84a1f8dd7e3347df51628 b/assets/emotes/emotesv2_9c9d5e65cac84a1f8dd7e3347df51628
new file mode 100644
index 00000000..ca395f8a
--- /dev/null
+++ b/assets/emotes/emotesv2_9c9d5e65cac84a1f8dd7e3347df51628
Binary files differ
diff --git a/assets/emotes/emotesv2_9cf6a2b276fb487f9ee404863e65fde9 b/assets/emotes/emotesv2_9cf6a2b276fb487f9ee404863e65fde9
new file mode 100644
index 00000000..1e624e3d
--- /dev/null
+++ b/assets/emotes/emotesv2_9cf6a2b276fb487f9ee404863e65fde9
Binary files differ
diff --git a/assets/emotes/emotesv2_9d24ff5266624d87ad21273ae8975c27 b/assets/emotes/emotesv2_9d24ff5266624d87ad21273ae8975c27
new file mode 100644
index 00000000..6b5e374b
--- /dev/null
+++ b/assets/emotes/emotesv2_9d24ff5266624d87ad21273ae8975c27
Binary files differ
diff --git a/assets/emotes/emotesv2_9da7d4bef516407780ce83637d00d8c0 b/assets/emotes/emotesv2_9da7d4bef516407780ce83637d00d8c0
new file mode 100644
index 00000000..97b0e882
--- /dev/null
+++ b/assets/emotes/emotesv2_9da7d4bef516407780ce83637d00d8c0
Binary files differ
diff --git a/assets/emotes/emotesv2_9dbe9c73ba6a41aebd04b80d269b4874 b/assets/emotes/emotesv2_9dbe9c73ba6a41aebd04b80d269b4874
new file mode 100644
index 00000000..a68b48dd
--- /dev/null
+++ b/assets/emotes/emotesv2_9dbe9c73ba6a41aebd04b80d269b4874
Binary files differ
diff --git a/assets/emotes/emotesv2_9e52134eec8a4ebeaef76d5a01df12bb b/assets/emotes/emotesv2_9e52134eec8a4ebeaef76d5a01df12bb
new file mode 100644
index 00000000..29a256a0
--- /dev/null
+++ b/assets/emotes/emotesv2_9e52134eec8a4ebeaef76d5a01df12bb
Binary files differ
diff --git a/assets/emotes/emotesv2_9f1ab1d03bba4fb0b735a9670d3361ed b/assets/emotes/emotesv2_9f1ab1d03bba4fb0b735a9670d3361ed
new file mode 100644
index 00000000..396ac081
--- /dev/null
+++ b/assets/emotes/emotesv2_9f1ab1d03bba4fb0b735a9670d3361ed
Binary files differ
diff --git a/assets/emotes/emotesv2_9f799a4bba3746a188cbe06c6deb27a5 b/assets/emotes/emotesv2_9f799a4bba3746a188cbe06c6deb27a5
new file mode 100644
index 00000000..e2a1a8fd
--- /dev/null
+++ b/assets/emotes/emotesv2_9f799a4bba3746a188cbe06c6deb27a5
Binary files differ
diff --git a/assets/emotes/emotesv2_a08dccc1b4ad4fa5a5878fdd7b8047fb b/assets/emotes/emotesv2_a08dccc1b4ad4fa5a5878fdd7b8047fb
new file mode 100644
index 00000000..aa830fb5
--- /dev/null
+++ b/assets/emotes/emotesv2_a08dccc1b4ad4fa5a5878fdd7b8047fb
Binary files differ
diff --git a/assets/emotes/emotesv2_a21052eac36246cc8ef494e2b4ca5beb b/assets/emotes/emotesv2_a21052eac36246cc8ef494e2b4ca5beb
new file mode 100644
index 00000000..dadc5306
--- /dev/null
+++ b/assets/emotes/emotesv2_a21052eac36246cc8ef494e2b4ca5beb
Binary files differ
diff --git a/assets/emotes/emotesv2_a224841e21d942a5973c8ad2db45ddf1 b/assets/emotes/emotesv2_a224841e21d942a5973c8ad2db45ddf1
new file mode 100644
index 00000000..5da7b336
--- /dev/null
+++ b/assets/emotes/emotesv2_a224841e21d942a5973c8ad2db45ddf1
Binary files differ
diff --git a/assets/emotes/emotesv2_a2aa8aced4a3465fba36aababbfd18da b/assets/emotes/emotesv2_a2aa8aced4a3465fba36aababbfd18da
new file mode 100644
index 00000000..171b8b61
--- /dev/null
+++ b/assets/emotes/emotesv2_a2aa8aced4a3465fba36aababbfd18da
Binary files differ
diff --git a/assets/emotes/emotesv2_a2daa9b241b34608906b6f00f83d4ea0 b/assets/emotes/emotesv2_a2daa9b241b34608906b6f00f83d4ea0
new file mode 100644
index 00000000..22a677e5
--- /dev/null
+++ b/assets/emotes/emotesv2_a2daa9b241b34608906b6f00f83d4ea0
Binary files differ
diff --git a/assets/emotes/emotesv2_a39d2bff69ce426e92213f2b8685d710 b/assets/emotes/emotesv2_a39d2bff69ce426e92213f2b8685d710
new file mode 100644
index 00000000..bd7096e3
--- /dev/null
+++ b/assets/emotes/emotesv2_a39d2bff69ce426e92213f2b8685d710
Binary files differ
diff --git a/assets/emotes/emotesv2_a41d9735bf524aa2bcd81171327e7376 b/assets/emotes/emotesv2_a41d9735bf524aa2bcd81171327e7376
new file mode 100644
index 00000000..796f509f
--- /dev/null
+++ b/assets/emotes/emotesv2_a41d9735bf524aa2bcd81171327e7376
Binary files differ
diff --git a/assets/emotes/emotesv2_a43387948f1241f78a30c33fba4f5dad b/assets/emotes/emotesv2_a43387948f1241f78a30c33fba4f5dad
new file mode 100644
index 00000000..0cefef8c
--- /dev/null
+++ b/assets/emotes/emotesv2_a43387948f1241f78a30c33fba4f5dad
Binary files differ
diff --git a/assets/emotes/emotesv2_a439fec7855b473681dc8f797f1693dd b/assets/emotes/emotesv2_a439fec7855b473681dc8f797f1693dd
new file mode 100644
index 00000000..d1f4bd67
--- /dev/null
+++ b/assets/emotes/emotesv2_a439fec7855b473681dc8f797f1693dd
Binary files differ
diff --git a/assets/emotes/emotesv2_a5e4b28e4ee44206a6aa3ee557b35486 b/assets/emotes/emotesv2_a5e4b28e4ee44206a6aa3ee557b35486
new file mode 100644
index 00000000..59706133
--- /dev/null
+++ b/assets/emotes/emotesv2_a5e4b28e4ee44206a6aa3ee557b35486
Binary files differ
diff --git a/assets/emotes/emotesv2_a859e01f62e242078bfb1002ce291e3b b/assets/emotes/emotesv2_a859e01f62e242078bfb1002ce291e3b
new file mode 100644
index 00000000..2bc09ea5
--- /dev/null
+++ b/assets/emotes/emotesv2_a859e01f62e242078bfb1002ce291e3b
Binary files differ
diff --git a/assets/emotes/emotesv2_a8661b1e6169427ca02fccaac2928837 b/assets/emotes/emotesv2_a8661b1e6169427ca02fccaac2928837
new file mode 100644
index 00000000..24b2e97d
--- /dev/null
+++ b/assets/emotes/emotesv2_a8661b1e6169427ca02fccaac2928837
Binary files differ
diff --git a/assets/emotes/emotesv2_a97550bc6cb0478e9c9a76724e7847ed b/assets/emotes/emotesv2_a97550bc6cb0478e9c9a76724e7847ed
new file mode 100644
index 00000000..574f543f
--- /dev/null
+++ b/assets/emotes/emotesv2_a97550bc6cb0478e9c9a76724e7847ed
Binary files differ
diff --git a/assets/emotes/emotesv2_aa0db43abbb34a8ba19e22242283a172 b/assets/emotes/emotesv2_aa0db43abbb34a8ba19e22242283a172
new file mode 100644
index 00000000..297e037a
--- /dev/null
+++ b/assets/emotes/emotesv2_aa0db43abbb34a8ba19e22242283a172
Binary files differ
diff --git a/assets/emotes/emotesv2_ab6a3b8cc3794feeaa65ddec04ecd630 b/assets/emotes/emotesv2_ab6a3b8cc3794feeaa65ddec04ecd630
new file mode 100644
index 00000000..cb453e24
--- /dev/null
+++ b/assets/emotes/emotesv2_ab6a3b8cc3794feeaa65ddec04ecd630
Binary files differ
diff --git a/assets/emotes/emotesv2_aba4cea4561b4828996cd6891db7911c b/assets/emotes/emotesv2_aba4cea4561b4828996cd6891db7911c
new file mode 100644
index 00000000..a7096f76
--- /dev/null
+++ b/assets/emotes/emotesv2_aba4cea4561b4828996cd6891db7911c
Binary files differ
diff --git a/assets/emotes/emotesv2_ae2aab1595f14c52a2eb259a4540d695 b/assets/emotes/emotesv2_ae2aab1595f14c52a2eb259a4540d695
new file mode 100644
index 00000000..a03cb8bf
--- /dev/null
+++ b/assets/emotes/emotesv2_ae2aab1595f14c52a2eb259a4540d695
Binary files differ
diff --git a/assets/emotes/emotesv2_ae35f69d12e94ad8b6f861d9ddac93ea b/assets/emotes/emotesv2_ae35f69d12e94ad8b6f861d9ddac93ea
new file mode 100644
index 00000000..07906a16
--- /dev/null
+++ b/assets/emotes/emotesv2_ae35f69d12e94ad8b6f861d9ddac93ea
Binary files differ
diff --git a/assets/emotes/emotesv2_aeaad1bf57ed41349ec000954c82c416 b/assets/emotes/emotesv2_aeaad1bf57ed41349ec000954c82c416
new file mode 100644
index 00000000..770d16df
--- /dev/null
+++ b/assets/emotes/emotesv2_aeaad1bf57ed41349ec000954c82c416
Binary files differ
diff --git a/assets/emotes/emotesv2_aebf67a681334939baf6fb54b31704de b/assets/emotes/emotesv2_aebf67a681334939baf6fb54b31704de
new file mode 100644
index 00000000..65396001
--- /dev/null
+++ b/assets/emotes/emotesv2_aebf67a681334939baf6fb54b31704de
Binary files differ
diff --git a/assets/emotes/emotesv2_af01dc502bc04dfe9b1f4547d649555d b/assets/emotes/emotesv2_af01dc502bc04dfe9b1f4547d649555d
new file mode 100644
index 00000000..328947c5
--- /dev/null
+++ b/assets/emotes/emotesv2_af01dc502bc04dfe9b1f4547d649555d
Binary files differ
diff --git a/assets/emotes/emotesv2_afb231ade7b84be8b91d080231c20b63 b/assets/emotes/emotesv2_afb231ade7b84be8b91d080231c20b63
new file mode 100644
index 00000000..dbe0bda7
--- /dev/null
+++ b/assets/emotes/emotesv2_afb231ade7b84be8b91d080231c20b63
Binary files differ
diff --git a/assets/emotes/emotesv2_b0a25a30fd0340a6acefdc59848d3f66 b/assets/emotes/emotesv2_b0a25a30fd0340a6acefdc59848d3f66
new file mode 100644
index 00000000..0283ecdb
--- /dev/null
+++ b/assets/emotes/emotesv2_b0a25a30fd0340a6acefdc59848d3f66
Binary files differ
diff --git a/assets/emotes/emotesv2_b1003eb6f8ad4275ba18fddb0fb5f36d b/assets/emotes/emotesv2_b1003eb6f8ad4275ba18fddb0fb5f36d
new file mode 100644
index 00000000..08df6a0c
--- /dev/null
+++ b/assets/emotes/emotesv2_b1003eb6f8ad4275ba18fddb0fb5f36d
Binary files differ
diff --git a/assets/emotes/emotesv2_b14f9e00c2ce41cea1a74d08dea2b392 b/assets/emotes/emotesv2_b14f9e00c2ce41cea1a74d08dea2b392
new file mode 100644
index 00000000..e9fdbb5f
--- /dev/null
+++ b/assets/emotes/emotesv2_b14f9e00c2ce41cea1a74d08dea2b392
Binary files differ
diff --git a/assets/emotes/emotesv2_b15a8f0ff639401eb1cc4a70f8b33dcf b/assets/emotes/emotesv2_b15a8f0ff639401eb1cc4a70f8b33dcf
new file mode 100644
index 00000000..9052dfb3
--- /dev/null
+++ b/assets/emotes/emotesv2_b15a8f0ff639401eb1cc4a70f8b33dcf
Binary files differ
diff --git a/assets/emotes/emotesv2_b43ce8897c5249b79ab08c352a0d9f5e b/assets/emotes/emotesv2_b43ce8897c5249b79ab08c352a0d9f5e
new file mode 100644
index 00000000..93a7cf58
--- /dev/null
+++ b/assets/emotes/emotesv2_b43ce8897c5249b79ab08c352a0d9f5e
Binary files differ
diff --git a/assets/emotes/emotesv2_b6285d5ff45a436bb84708e0207bab81 b/assets/emotes/emotesv2_b6285d5ff45a436bb84708e0207bab81
new file mode 100644
index 00000000..3e2286a8
--- /dev/null
+++ b/assets/emotes/emotesv2_b6285d5ff45a436bb84708e0207bab81
Binary files differ
diff --git a/assets/emotes/emotesv2_b6ae9db72ba241d59bd01e95c3089c3c b/assets/emotes/emotesv2_b6ae9db72ba241d59bd01e95c3089c3c
new file mode 100644
index 00000000..52fe8778
--- /dev/null
+++ b/assets/emotes/emotesv2_b6ae9db72ba241d59bd01e95c3089c3c
Binary files differ
diff --git a/assets/emotes/emotesv2_b72fd3d6129c4dea8af72a3a20d80494 b/assets/emotes/emotesv2_b72fd3d6129c4dea8af72a3a20d80494
new file mode 100644
index 00000000..07159e29
--- /dev/null
+++ b/assets/emotes/emotesv2_b72fd3d6129c4dea8af72a3a20d80494
Binary files differ
diff --git a/assets/emotes/emotesv2_b805a1050038436a83169e5280c9e7fc b/assets/emotes/emotesv2_b805a1050038436a83169e5280c9e7fc
new file mode 100644
index 00000000..220a8106
--- /dev/null
+++ b/assets/emotes/emotesv2_b805a1050038436a83169e5280c9e7fc
Binary files differ
diff --git a/assets/emotes/emotesv2_b815cf0140e047b7808c811715ec63e4 b/assets/emotes/emotesv2_b815cf0140e047b7808c811715ec63e4
new file mode 100644
index 00000000..a3c98bbf
--- /dev/null
+++ b/assets/emotes/emotesv2_b815cf0140e047b7808c811715ec63e4
Binary files differ
diff --git a/assets/emotes/emotesv2_b86fe2576197436c8840b50cf48e9ac9 b/assets/emotes/emotesv2_b86fe2576197436c8840b50cf48e9ac9
new file mode 100644
index 00000000..1253562c
--- /dev/null
+++ b/assets/emotes/emotesv2_b86fe2576197436c8840b50cf48e9ac9
Binary files differ
diff --git a/assets/emotes/emotesv2_b8a91d95fc4b40ccb2dac3bed03593b5 b/assets/emotes/emotesv2_b8a91d95fc4b40ccb2dac3bed03593b5
new file mode 100644
index 00000000..1028510c
--- /dev/null
+++ b/assets/emotes/emotesv2_b8a91d95fc4b40ccb2dac3bed03593b5
Binary files differ
diff --git a/assets/emotes/emotesv2_b8d7036477044b80b893a55d14f32373 b/assets/emotes/emotesv2_b8d7036477044b80b893a55d14f32373
new file mode 100644
index 00000000..0e1a4763
--- /dev/null
+++ b/assets/emotes/emotesv2_b8d7036477044b80b893a55d14f32373
Binary files differ
diff --git a/assets/emotes/emotesv2_b914697c0d4041ecba906fa112e8a0e9 b/assets/emotes/emotesv2_b914697c0d4041ecba906fa112e8a0e9
new file mode 100644
index 00000000..7b346b1b
--- /dev/null
+++ b/assets/emotes/emotesv2_b914697c0d4041ecba906fa112e8a0e9
Binary files differ
diff --git a/assets/emotes/emotesv2_b96b2a89b5824c3b8651446418deaa5b b/assets/emotes/emotesv2_b96b2a89b5824c3b8651446418deaa5b
new file mode 100644
index 00000000..483ed25a
--- /dev/null
+++ b/assets/emotes/emotesv2_b96b2a89b5824c3b8651446418deaa5b
Binary files differ
diff --git a/assets/emotes/emotesv2_ba495d150a3b47f883944ecec9251c8f b/assets/emotes/emotesv2_ba495d150a3b47f883944ecec9251c8f
new file mode 100644
index 00000000..f7d52026
--- /dev/null
+++ b/assets/emotes/emotesv2_ba495d150a3b47f883944ecec9251c8f
Binary files differ
diff --git a/assets/emotes/emotesv2_bc2f44a7844040eebdfdb68443c64b32 b/assets/emotes/emotesv2_bc2f44a7844040eebdfdb68443c64b32
new file mode 100644
index 00000000..72c8f730
--- /dev/null
+++ b/assets/emotes/emotesv2_bc2f44a7844040eebdfdb68443c64b32
Binary files differ
diff --git a/assets/emotes/emotesv2_bcd077bbac71449f980047a4bf439e43 b/assets/emotes/emotesv2_bcd077bbac71449f980047a4bf439e43
new file mode 100644
index 00000000..a16f584e
--- /dev/null
+++ b/assets/emotes/emotesv2_bcd077bbac71449f980047a4bf439e43
Binary files differ
diff --git a/assets/emotes/emotesv2_bcef669a36d3437ba5ba8801dfadafd7 b/assets/emotes/emotesv2_bcef669a36d3437ba5ba8801dfadafd7
new file mode 100644
index 00000000..932de697
--- /dev/null
+++ b/assets/emotes/emotesv2_bcef669a36d3437ba5ba8801dfadafd7
Binary files differ
diff --git a/assets/emotes/emotesv2_c10146643c364881b52cf61cbc7e852c b/assets/emotes/emotesv2_c10146643c364881b52cf61cbc7e852c
new file mode 100644
index 00000000..1d8f33ff
--- /dev/null
+++ b/assets/emotes/emotesv2_c10146643c364881b52cf61cbc7e852c
Binary files differ
diff --git a/assets/emotes/emotesv2_c1e4f7725bdc4c15aac2b14dd71cb6f4 b/assets/emotes/emotesv2_c1e4f7725bdc4c15aac2b14dd71cb6f4
new file mode 100644
index 00000000..4e2abc11
--- /dev/null
+++ b/assets/emotes/emotesv2_c1e4f7725bdc4c15aac2b14dd71cb6f4
Binary files differ
diff --git a/assets/emotes/emotesv2_c2524e05d8c94909a13ae5428cfab66c b/assets/emotes/emotesv2_c2524e05d8c94909a13ae5428cfab66c
new file mode 100644
index 00000000..f32598a2
--- /dev/null
+++ b/assets/emotes/emotesv2_c2524e05d8c94909a13ae5428cfab66c
Binary files differ
diff --git a/assets/emotes/emotesv2_c4297efd1428404d907bdaef9408c5be b/assets/emotes/emotesv2_c4297efd1428404d907bdaef9408c5be
new file mode 100644
index 00000000..26af573a
--- /dev/null
+++ b/assets/emotes/emotesv2_c4297efd1428404d907bdaef9408c5be
Binary files differ
diff --git a/assets/emotes/emotesv2_c59ad2008b3e4746b2b5f591faf1f042 b/assets/emotes/emotesv2_c59ad2008b3e4746b2b5f591faf1f042
new file mode 100644
index 00000000..6ce1c324
--- /dev/null
+++ b/assets/emotes/emotesv2_c59ad2008b3e4746b2b5f591faf1f042
Binary files differ
diff --git a/assets/emotes/emotesv2_c5e17de08a2e4cb688764d6f7cc72691 b/assets/emotes/emotesv2_c5e17de08a2e4cb688764d6f7cc72691
new file mode 100644
index 00000000..736fc012
--- /dev/null
+++ b/assets/emotes/emotesv2_c5e17de08a2e4cb688764d6f7cc72691
Binary files differ
diff --git a/assets/emotes/emotesv2_c7760d8993db4545b8f592f6716cdff1 b/assets/emotes/emotesv2_c7760d8993db4545b8f592f6716cdff1
new file mode 100644
index 00000000..0717f6b3
--- /dev/null
+++ b/assets/emotes/emotesv2_c7760d8993db4545b8f592f6716cdff1
Binary files differ
diff --git a/assets/emotes/emotesv2_c7fb4e9b8c8d450ab1ecb8b9928f4c5f b/assets/emotes/emotesv2_c7fb4e9b8c8d450ab1ecb8b9928f4c5f
new file mode 100644
index 00000000..f4bc38e9
--- /dev/null
+++ b/assets/emotes/emotesv2_c7fb4e9b8c8d450ab1ecb8b9928f4c5f
Binary files differ
diff --git a/assets/emotes/emotesv2_c817be650cb94acf981ae430fb0a067e b/assets/emotes/emotesv2_c817be650cb94acf981ae430fb0a067e
new file mode 100644
index 00000000..aae88300
--- /dev/null
+++ b/assets/emotes/emotesv2_c817be650cb94acf981ae430fb0a067e
Binary files differ
diff --git a/assets/emotes/emotesv2_c9f4ba1ebad14edb842c71a76eb22058 b/assets/emotes/emotesv2_c9f4ba1ebad14edb842c71a76eb22058
new file mode 100644
index 00000000..27bf613a
--- /dev/null
+++ b/assets/emotes/emotesv2_c9f4ba1ebad14edb842c71a76eb22058
Binary files differ
diff --git a/assets/emotes/emotesv2_ca4747f9419a48fd8466c421a1448d52 b/assets/emotes/emotesv2_ca4747f9419a48fd8466c421a1448d52
new file mode 100644
index 00000000..e5cfde38
--- /dev/null
+++ b/assets/emotes/emotesv2_ca4747f9419a48fd8466c421a1448d52
Binary files differ
diff --git a/assets/emotes/emotesv2_cb17fcc22a1e4952893c09051d7230ad b/assets/emotes/emotesv2_cb17fcc22a1e4952893c09051d7230ad
new file mode 100644
index 00000000..4e590394
--- /dev/null
+++ b/assets/emotes/emotesv2_cb17fcc22a1e4952893c09051d7230ad
Binary files differ
diff --git a/assets/emotes/emotesv2_cb977a2198cc477e8d87040dbc074e04 b/assets/emotes/emotesv2_cb977a2198cc477e8d87040dbc074e04
new file mode 100644
index 00000000..35e8f9e5
--- /dev/null
+++ b/assets/emotes/emotesv2_cb977a2198cc477e8d87040dbc074e04
Binary files differ
diff --git a/assets/emotes/emotesv2_cc1244310ec64345b621b427a64b9ff0 b/assets/emotes/emotesv2_cc1244310ec64345b621b427a64b9ff0
new file mode 100644
index 00000000..54c85b9e
--- /dev/null
+++ b/assets/emotes/emotesv2_cc1244310ec64345b621b427a64b9ff0
Binary files differ
diff --git a/assets/emotes/emotesv2_cc1563a19eaf4518a93326208de941d8 b/assets/emotes/emotesv2_cc1563a19eaf4518a93326208de941d8
new file mode 100644
index 00000000..2dab3f3a
--- /dev/null
+++ b/assets/emotes/emotesv2_cc1563a19eaf4518a93326208de941d8
Binary files differ
diff --git a/assets/emotes/emotesv2_cc4bae3dd6004ef8a668618d10226f34 b/assets/emotes/emotesv2_cc4bae3dd6004ef8a668618d10226f34
new file mode 100644
index 00000000..ad368698
--- /dev/null
+++ b/assets/emotes/emotesv2_cc4bae3dd6004ef8a668618d10226f34
Binary files differ
diff --git a/assets/emotes/emotesv2_cc58b1f534234a56b52fee76cd0b093d b/assets/emotes/emotesv2_cc58b1f534234a56b52fee76cd0b093d
new file mode 100644
index 00000000..b6fb5d19
--- /dev/null
+++ b/assets/emotes/emotesv2_cc58b1f534234a56b52fee76cd0b093d
Binary files differ
diff --git a/assets/emotes/emotesv2_cca96ad5b2be47d0bd59cd7dc160994a b/assets/emotes/emotesv2_cca96ad5b2be47d0bd59cd7dc160994a
new file mode 100644
index 00000000..1411ce36
--- /dev/null
+++ b/assets/emotes/emotesv2_cca96ad5b2be47d0bd59cd7dc160994a
Binary files differ
diff --git a/assets/emotes/emotesv2_ce44ef87650443c79061723d9368d611 b/assets/emotes/emotesv2_ce44ef87650443c79061723d9368d611
new file mode 100644
index 00000000..bab0c22d
--- /dev/null
+++ b/assets/emotes/emotesv2_ce44ef87650443c79061723d9368d611
Binary files differ
diff --git a/assets/emotes/emotesv2_ceaff4832c4a44b9a77dcc2c74836c71 b/assets/emotes/emotesv2_ceaff4832c4a44b9a77dcc2c74836c71
new file mode 100644
index 00000000..678f6bcf
--- /dev/null
+++ b/assets/emotes/emotesv2_ceaff4832c4a44b9a77dcc2c74836c71
Binary files differ
diff --git a/assets/emotes/emotesv2_cf162aa48e9c4082bb9a6012881db79b b/assets/emotes/emotesv2_cf162aa48e9c4082bb9a6012881db79b
new file mode 100644
index 00000000..7b82c6a1
--- /dev/null
+++ b/assets/emotes/emotesv2_cf162aa48e9c4082bb9a6012881db79b
Binary files differ
diff --git a/assets/emotes/emotesv2_cf9337c7743e4e7ba59e83b5cdde701d b/assets/emotes/emotesv2_cf9337c7743e4e7ba59e83b5cdde701d
new file mode 100644
index 00000000..4603bf53
--- /dev/null
+++ b/assets/emotes/emotesv2_cf9337c7743e4e7ba59e83b5cdde701d
Binary files differ
diff --git a/assets/emotes/emotesv2_d01a9536e5e8435b9f290f03bf6bde66 b/assets/emotes/emotesv2_d01a9536e5e8435b9f290f03bf6bde66
new file mode 100644
index 00000000..ce50f2af
--- /dev/null
+++ b/assets/emotes/emotesv2_d01a9536e5e8435b9f290f03bf6bde66
Binary files differ
diff --git a/assets/emotes/emotesv2_d0d2ab28473d40efa93139d259a5dd43 b/assets/emotes/emotesv2_d0d2ab28473d40efa93139d259a5dd43
new file mode 100644
index 00000000..15f8525f
--- /dev/null
+++ b/assets/emotes/emotesv2_d0d2ab28473d40efa93139d259a5dd43
Binary files differ
diff --git a/assets/emotes/emotesv2_d12afe51f6cb40478525b38e5a86e4e6 b/assets/emotes/emotesv2_d12afe51f6cb40478525b38e5a86e4e6
new file mode 100644
index 00000000..97008679
--- /dev/null
+++ b/assets/emotes/emotesv2_d12afe51f6cb40478525b38e5a86e4e6
Binary files differ
diff --git a/assets/emotes/emotesv2_d1419b75bec14b51a65c3c18b4f63b6b b/assets/emotes/emotesv2_d1419b75bec14b51a65c3c18b4f63b6b
new file mode 100644
index 00000000..490d4a7b
--- /dev/null
+++ b/assets/emotes/emotesv2_d1419b75bec14b51a65c3c18b4f63b6b
Binary files differ
diff --git a/assets/emotes/emotesv2_d25bb3397e224ad4ae183c6e1e31b43c b/assets/emotes/emotesv2_d25bb3397e224ad4ae183c6e1e31b43c
new file mode 100644
index 00000000..048e0ffd
--- /dev/null
+++ b/assets/emotes/emotesv2_d25bb3397e224ad4ae183c6e1e31b43c
Binary files differ
diff --git a/assets/emotes/emotesv2_d351c5d5e9084402b30bc39eaa3d92ae b/assets/emotes/emotesv2_d351c5d5e9084402b30bc39eaa3d92ae
new file mode 100644
index 00000000..a714ad9c
--- /dev/null
+++ b/assets/emotes/emotesv2_d351c5d5e9084402b30bc39eaa3d92ae
Binary files differ
diff --git a/assets/emotes/emotesv2_d659f9f1b4d5497483c3d18ec0544343 b/assets/emotes/emotesv2_d659f9f1b4d5497483c3d18ec0544343
new file mode 100644
index 00000000..cb3bce4b
--- /dev/null
+++ b/assets/emotes/emotesv2_d659f9f1b4d5497483c3d18ec0544343
Binary files differ
diff --git a/assets/emotes/emotesv2_d6a3268792a64e3aac81101ff5bb7d7a b/assets/emotes/emotesv2_d6a3268792a64e3aac81101ff5bb7d7a
new file mode 100644
index 00000000..6e60fc25
--- /dev/null
+++ b/assets/emotes/emotesv2_d6a3268792a64e3aac81101ff5bb7d7a
Binary files differ
diff --git a/assets/emotes/emotesv2_d8037bde20e24013bc2aa09188ee175e b/assets/emotes/emotesv2_d8037bde20e24013bc2aa09188ee175e
new file mode 100644
index 00000000..c7ac86ba
--- /dev/null
+++ b/assets/emotes/emotesv2_d8037bde20e24013bc2aa09188ee175e
Binary files differ
diff --git a/assets/emotes/emotesv2_d86b5553a51a43c4acb8628b98030882 b/assets/emotes/emotesv2_d86b5553a51a43c4acb8628b98030882
new file mode 100644
index 00000000..92cb5e2b
--- /dev/null
+++ b/assets/emotes/emotesv2_d86b5553a51a43c4acb8628b98030882
Binary files differ
diff --git a/assets/emotes/emotesv2_d92aa17179ba4eaea5fb58424932e2ab b/assets/emotes/emotesv2_d92aa17179ba4eaea5fb58424932e2ab
new file mode 100644
index 00000000..1a56d5ae
--- /dev/null
+++ b/assets/emotes/emotesv2_d92aa17179ba4eaea5fb58424932e2ab
Binary files differ
diff --git a/assets/emotes/emotesv2_d970cfcb4e9d4424ad386275f354f710 b/assets/emotes/emotesv2_d970cfcb4e9d4424ad386275f354f710
new file mode 100644
index 00000000..44c70cdb
--- /dev/null
+++ b/assets/emotes/emotesv2_d970cfcb4e9d4424ad386275f354f710
Binary files differ
diff --git a/assets/emotes/emotesv2_d997a846522c49fb897fd04ab602d400 b/assets/emotes/emotesv2_d997a846522c49fb897fd04ab602d400
new file mode 100644
index 00000000..0ab1ee72
--- /dev/null
+++ b/assets/emotes/emotesv2_d997a846522c49fb897fd04ab602d400
Binary files differ
diff --git a/assets/emotes/emotesv2_d9b0ba80d3da483b9413d540f8223897 b/assets/emotes/emotesv2_d9b0ba80d3da483b9413d540f8223897
new file mode 100644
index 00000000..e41aac7e
--- /dev/null
+++ b/assets/emotes/emotesv2_d9b0ba80d3da483b9413d540f8223897
Binary files differ
diff --git a/assets/emotes/emotesv2_d9beaba77b1a4a2bb1a60f5026d6d203 b/assets/emotes/emotesv2_d9beaba77b1a4a2bb1a60f5026d6d203
new file mode 100644
index 00000000..33401263
--- /dev/null
+++ b/assets/emotes/emotesv2_d9beaba77b1a4a2bb1a60f5026d6d203
Binary files differ
diff --git a/assets/emotes/emotesv2_da18fbc0476a409ab9b9993dd354b1ce b/assets/emotes/emotesv2_da18fbc0476a409ab9b9993dd354b1ce
new file mode 100644
index 00000000..0428bf84
--- /dev/null
+++ b/assets/emotes/emotesv2_da18fbc0476a409ab9b9993dd354b1ce
Binary files differ
diff --git a/assets/emotes/emotesv2_da1b30dd1dd2434bb25aa3387ec519f2 b/assets/emotes/emotesv2_da1b30dd1dd2434bb25aa3387ec519f2
new file mode 100644
index 00000000..8cc936dc
--- /dev/null
+++ b/assets/emotes/emotesv2_da1b30dd1dd2434bb25aa3387ec519f2
Binary files differ
diff --git a/assets/emotes/emotesv2_dae8bd6237ce415b8fcecf152b1935d4 b/assets/emotes/emotesv2_dae8bd6237ce415b8fcecf152b1935d4
new file mode 100644
index 00000000..97452f12
--- /dev/null
+++ b/assets/emotes/emotesv2_dae8bd6237ce415b8fcecf152b1935d4
Binary files differ
diff --git a/assets/emotes/emotesv2_db14210d9e5c49c98052016c215851d3 b/assets/emotes/emotesv2_db14210d9e5c49c98052016c215851d3
new file mode 100644
index 00000000..5f751b95
--- /dev/null
+++ b/assets/emotes/emotesv2_db14210d9e5c49c98052016c215851d3
Binary files differ
diff --git a/assets/emotes/emotesv2_dc26a4c918d64b7aafec8f851880fa22 b/assets/emotes/emotesv2_dc26a4c918d64b7aafec8f851880fa22
new file mode 100644
index 00000000..808a90a5
--- /dev/null
+++ b/assets/emotes/emotesv2_dc26a4c918d64b7aafec8f851880fa22
Binary files differ
diff --git a/assets/emotes/emotesv2_dd46165a1b174154a5fc9c41b4b21c9b b/assets/emotes/emotesv2_dd46165a1b174154a5fc9c41b4b21c9b
new file mode 100644
index 00000000..f620acf6
--- /dev/null
+++ b/assets/emotes/emotesv2_dd46165a1b174154a5fc9c41b4b21c9b
Binary files differ
diff --git a/assets/emotes/emotesv2_dd7976287e824779bd25fe01fde35450 b/assets/emotes/emotesv2_dd7976287e824779bd25fe01fde35450
new file mode 100644
index 00000000..847226cb
--- /dev/null
+++ b/assets/emotes/emotesv2_dd7976287e824779bd25fe01fde35450
Binary files differ
diff --git a/assets/emotes/emotesv2_de1e958d716f4445ba071608903118ac b/assets/emotes/emotesv2_de1e958d716f4445ba071608903118ac
new file mode 100644
index 00000000..64f9b0a4
--- /dev/null
+++ b/assets/emotes/emotesv2_de1e958d716f4445ba071608903118ac
Binary files differ
diff --git a/assets/emotes/emotesv2_df3c519594b34023a9b6c39351cde471 b/assets/emotes/emotesv2_df3c519594b34023a9b6c39351cde471
new file mode 100644
index 00000000..b15656f9
--- /dev/null
+++ b/assets/emotes/emotesv2_df3c519594b34023a9b6c39351cde471
Binary files differ
diff --git a/assets/emotes/emotesv2_dfa6f2de3f2d409c8047cee6916177ab b/assets/emotes/emotesv2_dfa6f2de3f2d409c8047cee6916177ab
new file mode 100644
index 00000000..079b6dcd
--- /dev/null
+++ b/assets/emotes/emotesv2_dfa6f2de3f2d409c8047cee6916177ab
Binary files differ
diff --git a/assets/emotes/emotesv2_e0d815be522d4cb7981901b0ad24fc0c b/assets/emotes/emotesv2_e0d815be522d4cb7981901b0ad24fc0c
new file mode 100644
index 00000000..dc87de59
--- /dev/null
+++ b/assets/emotes/emotesv2_e0d815be522d4cb7981901b0ad24fc0c
Binary files differ
diff --git a/assets/emotes/emotesv2_e28989d3765a4fe09eb00b485c4b21d3 b/assets/emotes/emotesv2_e28989d3765a4fe09eb00b485c4b21d3
new file mode 100644
index 00000000..f0d84125
--- /dev/null
+++ b/assets/emotes/emotesv2_e28989d3765a4fe09eb00b485c4b21d3
Binary files differ
diff --git a/assets/emotes/emotesv2_e3936760c213434f9a2274af69b86d52 b/assets/emotes/emotesv2_e3936760c213434f9a2274af69b86d52
new file mode 100644
index 00000000..1e6fc1bd
--- /dev/null
+++ b/assets/emotes/emotesv2_e3936760c213434f9a2274af69b86d52
Binary files differ
diff --git a/assets/emotes/emotesv2_e4cc68bdd50f4b5fa817a39c1368731f b/assets/emotes/emotesv2_e4cc68bdd50f4b5fa817a39c1368731f
new file mode 100644
index 00000000..cabc6eac
--- /dev/null
+++ b/assets/emotes/emotesv2_e4cc68bdd50f4b5fa817a39c1368731f
Binary files differ
diff --git a/assets/emotes/emotesv2_e4e88b54d26b49f698566e5489fdcfe4 b/assets/emotes/emotesv2_e4e88b54d26b49f698566e5489fdcfe4
new file mode 100644
index 00000000..55d3926d
--- /dev/null
+++ b/assets/emotes/emotesv2_e4e88b54d26b49f698566e5489fdcfe4
Binary files differ
diff --git a/assets/emotes/emotesv2_e5ee44dde6564706a59ff4ecb3433df9 b/assets/emotes/emotesv2_e5ee44dde6564706a59ff4ecb3433df9
new file mode 100644
index 00000000..a2ebf40a
--- /dev/null
+++ b/assets/emotes/emotesv2_e5ee44dde6564706a59ff4ecb3433df9
Binary files differ
diff --git a/assets/emotes/emotesv2_e691268bfafa486992762bec2441202a b/assets/emotes/emotesv2_e691268bfafa486992762bec2441202a
new file mode 100644
index 00000000..1af72f0e
--- /dev/null
+++ b/assets/emotes/emotesv2_e691268bfafa486992762bec2441202a
Binary files differ
diff --git a/assets/emotes/emotesv2_e6afb65a90c24504b523a773874d12e1 b/assets/emotes/emotesv2_e6afb65a90c24504b523a773874d12e1
new file mode 100644
index 00000000..34de5e6a
--- /dev/null
+++ b/assets/emotes/emotesv2_e6afb65a90c24504b523a773874d12e1
Binary files differ
diff --git a/assets/emotes/emotesv2_e6f3731ff902411299cabaa712eea353 b/assets/emotes/emotesv2_e6f3731ff902411299cabaa712eea353
new file mode 100644
index 00000000..02ec6bc5
--- /dev/null
+++ b/assets/emotes/emotesv2_e6f3731ff902411299cabaa712eea353
Binary files differ
diff --git a/assets/emotes/emotesv2_e7a36a273ffb4e57a33f226f6112800d b/assets/emotes/emotesv2_e7a36a273ffb4e57a33f226f6112800d
new file mode 100644
index 00000000..1e5fa01e
--- /dev/null
+++ b/assets/emotes/emotesv2_e7a36a273ffb4e57a33f226f6112800d
Binary files differ
diff --git a/assets/emotes/emotesv2_e8503f302ad9497a99000e01b7f3b8b0 b/assets/emotes/emotesv2_e8503f302ad9497a99000e01b7f3b8b0
new file mode 100644
index 00000000..ff571004
--- /dev/null
+++ b/assets/emotes/emotesv2_e8503f302ad9497a99000e01b7f3b8b0
Binary files differ
diff --git a/assets/emotes/emotesv2_e9a0023b833e4c13b215c41f42f5672b b/assets/emotes/emotesv2_e9a0023b833e4c13b215c41f42f5672b
new file mode 100644
index 00000000..7e514217
--- /dev/null
+++ b/assets/emotes/emotesv2_e9a0023b833e4c13b215c41f42f5672b
Binary files differ
diff --git a/assets/emotes/emotesv2_eaafcfa9a7e746c8a349d3992da4ee3e b/assets/emotes/emotesv2_eaafcfa9a7e746c8a349d3992da4ee3e
new file mode 100644
index 00000000..3db1c06b
--- /dev/null
+++ b/assets/emotes/emotesv2_eaafcfa9a7e746c8a349d3992da4ee3e
Binary files differ
diff --git a/assets/emotes/emotesv2_ec03f0b48fb74f16aca015c5c15e38f1 b/assets/emotes/emotesv2_ec03f0b48fb74f16aca015c5c15e38f1
new file mode 100644
index 00000000..d28fcba8
--- /dev/null
+++ b/assets/emotes/emotesv2_ec03f0b48fb74f16aca015c5c15e38f1
Binary files differ
diff --git a/assets/emotes/emotesv2_ec174a3989c645dd8623da27cdde7b73 b/assets/emotes/emotesv2_ec174a3989c645dd8623da27cdde7b73
new file mode 100644
index 00000000..8471307d
--- /dev/null
+++ b/assets/emotes/emotesv2_ec174a3989c645dd8623da27cdde7b73
Binary files differ
diff --git a/assets/emotes/emotesv2_ed0b1401df3d452a83a3d9d10828899d b/assets/emotes/emotesv2_ed0b1401df3d452a83a3d9d10828899d
new file mode 100644
index 00000000..7df5e0c8
--- /dev/null
+++ b/assets/emotes/emotesv2_ed0b1401df3d452a83a3d9d10828899d
Binary files differ
diff --git a/assets/emotes/emotesv2_ed166ec1ca4041dab9b057827e686741 b/assets/emotes/emotesv2_ed166ec1ca4041dab9b057827e686741
new file mode 100644
index 00000000..d8fcfa00
--- /dev/null
+++ b/assets/emotes/emotesv2_ed166ec1ca4041dab9b057827e686741
Binary files differ
diff --git a/assets/emotes/emotesv2_ed57b8d35a5a406ebfed0f53eed4466c b/assets/emotes/emotesv2_ed57b8d35a5a406ebfed0f53eed4466c
new file mode 100644
index 00000000..261152fb
--- /dev/null
+++ b/assets/emotes/emotesv2_ed57b8d35a5a406ebfed0f53eed4466c
Binary files differ
diff --git a/assets/emotes/emotesv2_ee5b7067a65a49b8be0a2eda1c1a7d03 b/assets/emotes/emotesv2_ee5b7067a65a49b8be0a2eda1c1a7d03
new file mode 100644
index 00000000..e6531f14
--- /dev/null
+++ b/assets/emotes/emotesv2_ee5b7067a65a49b8be0a2eda1c1a7d03
Binary files differ
diff --git a/assets/emotes/emotesv2_eed4a31efd7544b39ede266baee73115 b/assets/emotes/emotesv2_eed4a31efd7544b39ede266baee73115
new file mode 100644
index 00000000..22e92df1
--- /dev/null
+++ b/assets/emotes/emotesv2_eed4a31efd7544b39ede266baee73115
Binary files differ
diff --git a/assets/emotes/emotesv2_eeecc537c43145f494d38a56dff16919 b/assets/emotes/emotesv2_eeecc537c43145f494d38a56dff16919
new file mode 100644
index 00000000..27c674fa
--- /dev/null
+++ b/assets/emotes/emotesv2_eeecc537c43145f494d38a56dff16919
Binary files differ
diff --git a/assets/emotes/emotesv2_ef855e8769bf443cb28346970e1b8ebd b/assets/emotes/emotesv2_ef855e8769bf443cb28346970e1b8ebd
new file mode 100644
index 00000000..36e59593
--- /dev/null
+++ b/assets/emotes/emotesv2_ef855e8769bf443cb28346970e1b8ebd
Binary files differ
diff --git a/assets/emotes/emotesv2_f2160050c2ac44adbfaa851e162e8fc7 b/assets/emotes/emotesv2_f2160050c2ac44adbfaa851e162e8fc7
new file mode 100644
index 00000000..02a89ce0
--- /dev/null
+++ b/assets/emotes/emotesv2_f2160050c2ac44adbfaa851e162e8fc7
Binary files differ
diff --git a/assets/emotes/emotesv2_f2e3c56966434c33ab251383b47fc651 b/assets/emotes/emotesv2_f2e3c56966434c33ab251383b47fc651
new file mode 100644
index 00000000..6fcfe5ea
--- /dev/null
+++ b/assets/emotes/emotesv2_f2e3c56966434c33ab251383b47fc651
Binary files differ
diff --git a/assets/emotes/emotesv2_f2eccffec4dc4b12b804ac07c787be4a b/assets/emotes/emotesv2_f2eccffec4dc4b12b804ac07c787be4a
new file mode 100644
index 00000000..d9b98463
--- /dev/null
+++ b/assets/emotes/emotesv2_f2eccffec4dc4b12b804ac07c787be4a
Binary files differ
diff --git a/assets/emotes/emotesv2_f3e53f09d0874f10b163eb26747af9a2 b/assets/emotes/emotesv2_f3e53f09d0874f10b163eb26747af9a2
new file mode 100644
index 00000000..242b13a6
--- /dev/null
+++ b/assets/emotes/emotesv2_f3e53f09d0874f10b163eb26747af9a2
Binary files differ
diff --git a/assets/emotes/emotesv2_f3ef5dedf97e4323818c7dc0cd8b5e1b b/assets/emotes/emotesv2_f3ef5dedf97e4323818c7dc0cd8b5e1b
new file mode 100644
index 00000000..b81cb722
--- /dev/null
+++ b/assets/emotes/emotesv2_f3ef5dedf97e4323818c7dc0cd8b5e1b
Binary files differ
diff --git a/assets/emotes/emotesv2_f3faa6ad7aec4936bea9ac9523a3bd34 b/assets/emotes/emotesv2_f3faa6ad7aec4936bea9ac9523a3bd34
new file mode 100644
index 00000000..0e5105ca
--- /dev/null
+++ b/assets/emotes/emotesv2_f3faa6ad7aec4936bea9ac9523a3bd34
Binary files differ
diff --git a/assets/emotes/emotesv2_f4d56acaef634ceebf587b1fd39c8a8c b/assets/emotes/emotesv2_f4d56acaef634ceebf587b1fd39c8a8c
new file mode 100644
index 00000000..0a81f12c
--- /dev/null
+++ b/assets/emotes/emotesv2_f4d56acaef634ceebf587b1fd39c8a8c
Binary files differ
diff --git a/assets/emotes/emotesv2_f5749d56658d44f788f345db3e1f6aa4 b/assets/emotes/emotesv2_f5749d56658d44f788f345db3e1f6aa4
new file mode 100644
index 00000000..10342a22
--- /dev/null
+++ b/assets/emotes/emotesv2_f5749d56658d44f788f345db3e1f6aa4
Binary files differ
diff --git a/assets/emotes/emotesv2_f6203bf938a5429ca692bfbcb8b2582c b/assets/emotes/emotesv2_f6203bf938a5429ca692bfbcb8b2582c
new file mode 100644
index 00000000..d42d6fd2
--- /dev/null
+++ b/assets/emotes/emotesv2_f6203bf938a5429ca692bfbcb8b2582c
Binary files differ
diff --git a/assets/emotes/emotesv2_f7eae8ef8221464b9c13018354e1cbdc b/assets/emotes/emotesv2_f7eae8ef8221464b9c13018354e1cbdc
new file mode 100644
index 00000000..49c4bf8f
--- /dev/null
+++ b/assets/emotes/emotesv2_f7eae8ef8221464b9c13018354e1cbdc
Binary files differ
diff --git a/assets/emotes/emotesv2_f89596826e504be6ac6b2664aa87de63 b/assets/emotes/emotesv2_f89596826e504be6ac6b2664aa87de63
new file mode 100644
index 00000000..78806e38
--- /dev/null
+++ b/assets/emotes/emotesv2_f89596826e504be6ac6b2664aa87de63
Binary files differ
diff --git a/assets/emotes/emotesv2_f8c4b68f134d4273a488237949d1244e b/assets/emotes/emotesv2_f8c4b68f134d4273a488237949d1244e
new file mode 100644
index 00000000..a234eb20
--- /dev/null
+++ b/assets/emotes/emotesv2_f8c4b68f134d4273a488237949d1244e
Binary files differ
diff --git a/assets/emotes/emotesv2_fb61a9ec50d146fba2ef2926505ab58b b/assets/emotes/emotesv2_fb61a9ec50d146fba2ef2926505ab58b
new file mode 100644
index 00000000..d771d621
--- /dev/null
+++ b/assets/emotes/emotesv2_fb61a9ec50d146fba2ef2926505ab58b
Binary files differ
diff --git a/assets/emotes/emotesv2_fbd8e0e6e0594242b7916cf39b727d15 b/assets/emotes/emotesv2_fbd8e0e6e0594242b7916cf39b727d15
new file mode 100644
index 00000000..8c064106
--- /dev/null
+++ b/assets/emotes/emotesv2_fbd8e0e6e0594242b7916cf39b727d15
Binary files differ
diff --git a/assets/emotes/emotesv2_fbdeeb07569a4eb18c3d077fcbbbb40d b/assets/emotes/emotesv2_fbdeeb07569a4eb18c3d077fcbbbb40d
new file mode 100644
index 00000000..2a6c3ce5
--- /dev/null
+++ b/assets/emotes/emotesv2_fbdeeb07569a4eb18c3d077fcbbbb40d
Binary files differ
diff --git a/assets/emotes/emotesv2_fc0f8dffa6ea4fc690999b89c69c1ae9 b/assets/emotes/emotesv2_fc0f8dffa6ea4fc690999b89c69c1ae9
new file mode 100644
index 00000000..6fbdc680
--- /dev/null
+++ b/assets/emotes/emotesv2_fc0f8dffa6ea4fc690999b89c69c1ae9
Binary files differ
diff --git a/assets/emotes/emotesv2_fca9eca850ae45f699ac816a023e58c3 b/assets/emotes/emotesv2_fca9eca850ae45f699ac816a023e58c3
new file mode 100644
index 00000000..c1b20773
--- /dev/null
+++ b/assets/emotes/emotesv2_fca9eca850ae45f699ac816a023e58c3
Binary files differ
diff --git a/assets/emotes/emotesv2_fcca511b79d148a2b5737967f0755ef9 b/assets/emotes/emotesv2_fcca511b79d148a2b5737967f0755ef9
new file mode 100644
index 00000000..bb82010c
--- /dev/null
+++ b/assets/emotes/emotesv2_fcca511b79d148a2b5737967f0755ef9
Binary files differ
diff --git a/assets/emotes/emotesv2_fcf84937bf434ebfa2a9fd2ae89046e0 b/assets/emotes/emotesv2_fcf84937bf434ebfa2a9fd2ae89046e0
new file mode 100644
index 00000000..bdddd432
--- /dev/null
+++ b/assets/emotes/emotesv2_fcf84937bf434ebfa2a9fd2ae89046e0
Binary files differ
diff --git a/assets/emotes/emotesv2_fd87dfd7b4cc429aa18c44b179299055 b/assets/emotes/emotesv2_fd87dfd7b4cc429aa18c44b179299055
new file mode 100644
index 00000000..2bed2058
--- /dev/null
+++ b/assets/emotes/emotesv2_fd87dfd7b4cc429aa18c44b179299055
Binary files differ
diff --git a/assets/emotes/emotesv2_fee0414deb3c4d5fa1dac47c94413820 b/assets/emotes/emotesv2_fee0414deb3c4d5fa1dac47c94413820
new file mode 100644
index 00000000..3bbed3bc
--- /dev/null
+++ b/assets/emotes/emotesv2_fee0414deb3c4d5fa1dac47c94413820
Binary files differ
diff --git a/assets/emotes/emotesv2_ff7f334cdeec4019a78a537ee0ba969f b/assets/emotes/emotesv2_ff7f334cdeec4019a78a537ee0ba969f
new file mode 100644
index 00000000..4672e3f3
--- /dev/null
+++ b/assets/emotes/emotesv2_ff7f334cdeec4019a78a537ee0ba969f
Binary files differ
diff --git a/assets/emotes/emotesv2_ffb97a63f2344a479358abbe54e98f19 b/assets/emotes/emotesv2_ffb97a63f2344a479358abbe54e98f19
new file mode 100644
index 00000000..5d1d0e59
--- /dev/null
+++ b/assets/emotes/emotesv2_ffb97a63f2344a479358abbe54e98f19
Binary files differ
diff --git a/assets/glossary/2025-03-14.txt b/assets/glossary/2025-03-14.txt
new file mode 100644
index 00000000..15f6624a
--- /dev/null
+++ b/assets/glossary/2025-03-14.txt
@@ -0,0 +1 @@
+fighting nix. big moments here as we see local streamer find a gpu-based 0-day. gameboy buttons are all you need, according to local streamer. happy pi and STL day to those celebrating. tale of twins ♊ happens while GCP spikes as bigbookofbug enters chat. \ No newline at end of file
diff --git a/assets/glossary/2025-03-18.txt b/assets/glossary/2025-03-18.txt
new file mode 100644
index 00000000..907ad71f
--- /dev/null
+++ b/assets/glossary/2025-03-18.txt
@@ -0,0 +1 @@
+pixel makes an appearance, we get a classic quote from local crab about his shell, friend presents the poop parade, clonk denies the podcast rumors, and we delve into performant nix fuckery. \ No newline at end of file
diff --git a/assets/glossary/2025-03-21.txt b/assets/glossary/2025-03-21.txt
new file mode 100644
index 00000000..a7af05ed
--- /dev/null
+++ b/assets/glossary/2025-03-21.txt
@@ -0,0 +1 @@
+database debugging session, clonk did well today, victim of spider, spaghetti and meatballs, "i'M GAMING" cries unpaid passenger to concerned flight attendant, clonks new seersucker suit, never giving up but perhaps letting down; rick astley is "low key violent", clonk just wants to whip donuts in the parking lot, drop a "ohoho" on 'em, what even is a.. boost ?! \ No newline at end of file
diff --git a/assets/glossary/2025-03-25.txt b/assets/glossary/2025-03-25.txt
new file mode 100644
index 00000000..2723da2b
--- /dev/null
+++ b/assets/glossary/2025-03-25.txt
@@ -0,0 +1 @@
+lcolonq tries smoking redeem, hits a type error with tokens, many viewers gain unique boostv2 scores, effort post archive proves useful, streamer fails to back up, titscord emerges, january rolls in, board deliberates on welfare boosts, clonk needs maude to save the day, rollback happens, stocks take a hit, major error discovered, streamer steps away from compiler work for an unexpected venture. \ No newline at end of file
diff --git a/assets/glossary/2025-03-28.txt b/assets/glossary/2025-03-28.txt
new file mode 100644
index 00000000..5d277c51
--- /dev/null
+++ b/assets/glossary/2025-03-28.txt
@@ -0,0 +1 @@
+the year of the yacht. clonk addresses the shareholders with “musk is.” backups are finally implemented as chaos reigns and the mantra of “burn it all down” surfaces. warnings of beverages on the yacht emerge. fuweh >.< \ No newline at end of file
diff --git a/assets/glossary/2025-04-01.txt b/assets/glossary/2025-04-01.txt
new file mode 100644
index 00000000..11e006fb
--- /dev/null
+++ b/assets/glossary/2025-04-01.txt
@@ -0,0 +1 @@
+real gamers play 3d pinball space cadet, plink plonk, it's clonk. is miku actually a japanese spelling of michael? we asked our best micheals for their professional opinion. freaky tuesday?? local wives prod zed pod and lala amanita swap their natures. modclonk hitting us with the mandark ohhoho. local nerd experiences aero theme for the first time. linux is gone, l:q downgraded to windows. \ No newline at end of file
diff --git a/assets/glossary/2025-04-04.txt b/assets/glossary/2025-04-04.txt
new file mode 100644
index 00000000..d263ec62
--- /dev/null
+++ b/assets/glossary/2025-04-04.txt
@@ -0,0 +1 @@
+burgle bagels is the new meta. clonk channels his inner austin tech-bro while chiptunes blare in the background, setting the perfect vibe for this session. \ No newline at end of file
diff --git a/assets/glossary/2025-04-12.txt b/assets/glossary/2025-04-12.txt
new file mode 100644
index 00000000..36e5b9cc
--- /dev/null
+++ b/assets/glossary/2025-04-12.txt
@@ -0,0 +1 @@
+fucker finders season 3 continues. LCOLONQ is now on a quest for the fucker. a hairstyle reveal turns into chaos. stale bread discourse ensues. we discuss a_tension_span's algorithm and c static links. streamer takes an oath to not end until the green hackernews website is made. master thief LeClonque is unmasked, and a thieve's guild is hinted at. \ No newline at end of file
diff --git a/assets/glossary/2025-04-15.txt b/assets/glossary/2025-04-15.txt
new file mode 100644
index 00000000..e02f1894
--- /dev/null
+++ b/assets/glossary/2025-04-15.txt
@@ -0,0 +1 @@
+emacs guy recommends emacs again. once more, the fucker returns. clonq looks up pegging on orange site live. I am orthogonal, I feel it in my bones. I am orthogonal, I ostensibly feel no hole. chicken jockey appears. mission lock-in is blasted hardcore, oath broken, unrestorable. man goes on mission to talk to people. chicken jockey returns. we need to contort ourselves into more challenging positions. oh boy we gassin today. \ No newline at end of file
diff --git a/assets/glossary/2025-04-18.txt b/assets/glossary/2025-04-18.txt
new file mode 100644
index 00000000..7b7267b0
--- /dev/null
+++ b/assets/glossary/2025-04-18.txt
@@ -0,0 +1 @@
+clonk attempts to create a new wiki by drafting a programming list, laying the groundwork for an elaborate knowledge base. \ No newline at end of file
diff --git a/assets/glossary/2025-04-22.txt b/assets/glossary/2025-04-22.txt
new file mode 100644
index 00000000..783dba16
--- /dev/null
+++ b/assets/glossary/2025-04-22.txt
@@ -0,0 +1 @@
+friend is silent in mourning. mr green's shyness is noted. clonk digs deeper into the earth while adding green to la mulana. breaking news: clonk says "fuck" in discord. earth celebrates 100 together; billions join in. clonk channels statler and waldorf for easter play. chaos ensues as the fucker escapes. \ No newline at end of file
diff --git a/assets/glossary/2025-04-30.txt b/assets/glossary/2025-04-30.txt
new file mode 100644
index 00000000..57659ab4
--- /dev/null
+++ b/assets/glossary/2025-04-30.txt
@@ -0,0 +1 @@
+local clonk enters speedrun era, struggles with coding enjoyment, misses imaginary friends on rare wednesday, fights through flu, the q stands for qlapsed, discussion on running and sports, 9 out of 10 doctors think miku, countdown to promised hour, local streamer is sick as hell, becomes pillar of salt, wants to grift, notes feeling like mice, and achieves self-clarity. \ No newline at end of file
diff --git a/assets/rats/users/GlamShatterskull.wav b/assets/rats/users/GlamShatterskull.wav
new file mode 100644
index 00000000..0d16804e
--- /dev/null
+++ b/assets/rats/users/GlamShatterskull.wav
Binary files differ
diff --git a/assets/rats/users/RealNaesten.wav b/assets/rats/users/RealNaesten.wav
new file mode 100644
index 00000000..54525879
--- /dev/null
+++ b/assets/rats/users/RealNaesten.wav
Binary files differ
diff --git a/src/gizmo/wasp-alert-message.el b/src/gizmo/wasp-alert-message.el
index fcd8f6b3..fb80f002 100644
--- a/src/gizmo/wasp-alert-message.el
+++ b/src/gizmo/wasp-alert-message.el
@@ -12,10 +12,10 @@
(defconst
w/alert-message-phrases
(list
- "hi :3"
- "Chat seems active. Considerrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr"
- "Witscord The Game 2025"
- ))
+ "hi :3"
+ "Chat seems active. Considerrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr"
+ "Witscord The Game 2025"
+ ))
(defcustom w/alert-message-buffer "*wasp-alert-message*"
"Name of buffer used to display alert message."
@@ -49,8 +49,8 @@
(cancel-timer w/alert-message-timer))
(w/render-alert-message)
(setq
- w/alert-message-timer
- (run-with-timer 10 nil #'w/run-alert-message-timer)))
+ w/alert-message-timer
+ (run-with-timer 10 nil #'w/run-alert-message-timer)))
(w/run-alert-message-timer)
(provide 'wasp-alert-message)
diff --git a/src/gizmo/wasp-animism.el b/src/gizmo/wasp-animism.el
new file mode 100644
index 00000000..80c6f70e
--- /dev/null
+++ b/src/gizmo/wasp-animism.el
@@ -0,0 +1,57 @@
+;;; wasp-animism --- Superterranean Animism Overlay -*- lexical-binding: t; -*-
+;;; Commentary:
+;;; Code:
+
+(require 'wasp-utils)
+(require 'wasp-bus)
+(require 'wasp-prod)
+
+(add-to-list 'load-path (f-canonical "~/src/animism/"))
+(require 'bulletml)
+
+;; src,Xway,fire^쾠㘽쾷ㅗ껋㾨먝乲뛏屚w㮇㸩멽ꝼ쓋♫릫m떫쓏䓳⩺䮻1㨧퉝ƭ쓐ǥᓌ㒵ᒄ먽乳俴㢈쿗峫ฐꙢ왽욍투ㅖ㨧슝呑㟪䁓Ɂy䏧呠3먫슎呒3⧘ɍy욋ᕈ00먫⇳
+;; this one is broken fix it -ellg, probably
+
+(defconst w/overlay-spellcard-names
+ '("Joel" "Pemis" "JoelTeachingHisSonJolHowToSpinWhileWideBorisPassesBy" "bugSegz"
+ "widepeepoMASTURBATION77769420GANGSHITNOMOREFORTNITE19DOLLERFORTNITECARD"
+ "Machine Made Of Fire, Heart Made Of Doves"
+ "Dream Seal" "Evil-Sealing Circle" "Dream Seal -Spread-" "Dream Seal -Concentrate-"
+ "Duplex Barrier" "Dream Orb" "Omnidirectional Oni-Binding Circle" "Yin-Yang Treasured Orb"
+ "Yin-Yang Kishin Orb" "Dream Orb String" "Yin-Yang Scattering" "Exorcising Border"
+ "Yin-Yang King Piece" "Illusionary Moon" "Flying Mysterious Shrine Maiden"
+ "Dream Seal -Blink-" "Great Duplex Barrier" "Dream Seal -Worn-" "Dream Seal -Marred-"
+ "Dream Seal -The Point Of The Mask-"
+ ))
+
+(defvar w/overlay-barrage-active nil)
+(defvar w/overlay-last-cursor nil)
+(defun w/overlay-update-cursor ()
+ "Inform the overlay about the current cursor position."
+ (when (and w/overlay-barrage-active (process-live-p (get-process w/bus-process)))
+ (when-let ((pos (window-absolute-pixel-position)))
+ (when (not (equal pos w/overlay-last-cursor))
+ (setf w/overlay-last-cursor pos)
+ (w/pub '(overlay cursor) (list (- (car pos) 1920) (cdr pos)))))))
+(add-hook 'post-command-hook #'w/overlay-update-cursor)
+
+(defun w/overlay-start-barrage (bml)
+ "Start a barrage on the overlay using the BulletML source string BML."
+ (w/pub '(overlay barrage start) (list (w/encode-string bml))))
+
+(defun w/overlay-decode-shorthand-bml (s k)
+ "Decode the shorthand BulletML string S.
+Pass the resulting BulletML XML string to K."
+ ;; (w/write-log s)
+ (w/prod-get-raw
+ (format "/api/yamame?input=%s" (url-encode-url s))
+ (lambda (data)
+ (if-let* ((bml (bml/parse-string data))
+ (b (bml/initialize bml))
+ ((bml/barrage-toplevel b)))
+ (progn
+ (funcall k data))
+ (w/write-chat-event "That spell card is too powerful... ")))))
+
+(provide 'wasp-animism)
+;;; wasp-animism.el ends here
diff --git a/src/gizmo/wasp-aoc.el b/src/gizmo/wasp-aoc.el
index 57b16c32..4c287add 100644
--- a/src/gizmo/wasp-aoc.el
+++ b/src/gizmo/wasp-aoc.el
@@ -19,23 +19,23 @@
(defvar w/aoc-user-stars nil)
(defconst w/aoc-name-map
'(("exodrifter_" . "exodrifter")
- ("cephon_altera" . "lainlayer")
- ("monochrome_0" . "monochrome")
- ("yoink2000" . "darius1702")
- ("lukeisun_" . "lukeisun")
- ("dwinkley_" . "dwinkley")
- ("lcolonq" . "llll colonq")
- ("fn_lumi" . "lumi")
- ("leadengin" . "leaden")
- ("vasher_1025" . "vash3r")
- ("andrewdtr" . "drawthatredstone")
- ("badcop_" . "cgsdev0")
- ("asrael_io" . "asrael")
- ("colinahscopy_" . "@colinahscopy")
- ("ctrl_o" . "control-o")
- ("whimsicallymade" . "aecepoglu")
- ("chromosundrift" . "christo")
- ))
+ ("cephon_altera" . "lainlayer")
+ ("monochrome_0" . "monochrome")
+ ("yoink2000" . "darius1702")
+ ("lukeisun_" . "lukeisun")
+ ("dwinkley_" . "dwinkley")
+ ("lcolonq" . "llll colonq")
+ ("fn_lumi" . "lumi")
+ ("leadengin" . "leaden")
+ ("vasher_1025" . "vash3r")
+ ("andrewdtr" . "drawthatredstone")
+ ("badcop_" . "cgsdev0")
+ ("asrael_io" . "asrael")
+ ("colinahscopy_" . "@colinahscopy")
+ ("ctrl_o" . "control-o")
+ ("whimsicallymade" . "aecepoglu")
+ ("chromosundrift" . "christo")
+ ))
(defun w/aoc-max-stars ()
"Return the maximum Advent of Code stars for today."
@@ -44,7 +44,7 @@
(defun w/aoc-lookup-stars (user)
"Retrieve the Advent of Code stars for USER."
(let* ((duser (s-downcase user))
- (cuser (s-downcase (alist-get duser w/aoc-name-map duser nil #'s-equals?))))
+ (cuser (s-downcase (alist-get duser w/aoc-name-map duser nil #'s-equals?))))
(alist-get cuser w/aoc-user-stars nil nil #'s-equals?)))
(defun w/aoc-fetch-api (k)
@@ -58,24 +58,24 @@ Pass the resulting JSON to K."
:parser #'json-parse-buffer
:success
(cl-function
- (lambda (&key data &allow-other-keys)
- (setq w/aoc-last-response data)
- (funcall k data))))
+ (lambda (&key data &allow-other-keys)
+ (setq w/aoc-last-response data)
+ (funcall k data))))
nil)
(defun w/aoc-update-user-stars ()
"Update the Advent of Code stars list."
(w/aoc-fetch-api
- (lambda (data)
- (setf
- w/aoc-user-stars
- (--map
- (cons (s-downcase (car it)) (cdr it))
- (--filter
- (stringp (car it))
+ (lambda (data)
+ (setf
+ w/aoc-user-stars
(--map
- (cons (ht-get it "name") (ht-get it "stars"))
- (ht-values (ht-get data "members")))))))))
+ (cons (s-downcase (car it)) (cdr it))
+ (--filter
+ (stringp (car it))
+ (--map
+ (cons (ht-get it "name") (ht-get it "stars"))
+ (ht-values (ht-get data "members")))))))))
;; (w/aoc-update-user-stars)
(provide 'wasp-aoc)
diff --git a/src/gizmo/wasp-bannerads.el b/src/gizmo/wasp-bannerads.el
index 70f9c8be..7d64ac1b 100644
--- a/src/gizmo/wasp-bannerads.el
+++ b/src/gizmo/wasp-bannerads.el
@@ -49,20 +49,18 @@
(cancel-timer w/banner-ad-timer))
(w/render-banner-ad)
(setq
- w/banner-ad-timer
- (run-with-timer 60 nil #'w/run-banner-ad-timer)))
-(w/run-banner-ad-timer)
-
+ w/banner-ad-timer
+ (run-with-timer 60 nil #'w/run-banner-ad-timer)))
(defun w/banner-ad-block ()
"Toggle adblock."
(setq w/banner-ad-block t)
(w/render-banner-ad)
- (w/model-toggle-set "adblock")
+ (w/model-toggle-set "adblock")
(run-with-timer 10 nil
(lambda ()
(setq w/banner-ad-block nil)
- (w/model-toggle-unset "adblock")
+ (w/model-toggle-unset "adblock")
(w/render-banner-ad)))
nil)
diff --git a/src/gizmo/wasp-biblicality.el b/src/gizmo/wasp-biblicality.el
index 317e87f7..db169337 100644
--- a/src/gizmo/wasp-biblicality.el
+++ b/src/gizmo/wasp-biblicality.el
@@ -14,17 +14,18 @@
(defun w/bible-canonize (user)
"Add USER to the bible 1000 times."
(w/append-file
- (s-concat "\n" (s-repeat 1000 (s-concat user " ")))
- (w/asset "bible.txt"))
+ (s-concat "\n" (s-repeat 1000 (s-concat user " ")))
+ (w/asset "bible.txt"))
(ht-set! w/bible-table user 1000))
(defun w/populate-bible-table ()
"Populate `w/bible-table' from the Bible text file."
(unless w/bible-table
- (let* ((bible-string (s-downcase (w/slurp (w/asset "bible.txt"))))
- (bible-string-nosyms (replace-regexp-in-string "[^[:alpha:]]" " " bible-string))
- (bible-words (s-split-words bible-string-nosyms))
- (ret (ht-create)))
+ ;; (let* ((bible-string (s-downcase (w/slurp (w/asset "bible.txt"))))
+ (let* ((bible-string (s-downcase (w/slurp (w/asset "medical.txt"))))
+ (bible-string-nosyms (replace-regexp-in-string "[^[:alpha:]]" " " bible-string))
+ (bible-words (s-split-words bible-string-nosyms))
+ (ret (ht-create)))
(--each bible-words
(let ((old (ht-get ret it)))
(ht-set! ret it (+ 1 (or old 0)))))
@@ -33,47 +34,46 @@
(defun w/bible-word-score (word)
"Return a number between 0.0 and 1.0 representing how biblical WORD is."
(if (-contains? '("Sam" "Altman") word)
- -666.0
+ -666.0
(let ((occs (ht-get w/bible-table (downcase (s-trim word))))
- (thresh 0.6))
+ (thresh 0.6))
(if occs
- ;; (+ thresh (/ (min occs 1000.0) (/ 1000.0 (- 1.0 thresh))))
- (+ thresh (/ (min occs 10.0) (/ 10.0 (- 1.0 thresh))))
+ (+ thresh (/ (min occs 1000.0) (/ 1000.0 (- 1.0 thresh))))
0.0))))
(defun w/bible-word-color (word)
"Given a WORD, return an appropriate color string."
(let* ((score (w/bible-word-score word))
- (others (truncate (+ 128.0 (* 127.0 score)))))
- ;; (others (- 255 (truncate (+ 128.0 (* 127.0 score))))))
+ (others (truncate (+ 128.0 (* 127.0 score)))))
+ ;; (others (- 255 (truncate (+ 128.0 (* 127.0 score))))))
(format "#ff%02x%02x" others others)))
- ;; (format "#00%02x%02x" others others)))
+;; (format "#00%02x%02x" others others)))
(defun w/bible-colorize-sentence (sen)
"Propertize SEN with colors representing word biblicality."
(if w/bible-table
- (let ((ret-score-total 0.0)
- (ret-score-count 0))
- (save-excursion
- (with-temp-buffer
- (insert sen)
- (goto-char (point-min))
- (while (not (eobp))
- (let ((at-word (bounds-of-thing-at-point 'word)))
- (when at-word
- (let* ((word (buffer-substring (car at-word) (cdr at-word)))
- (score (w/bible-word-score word))
- (color (w/bible-word-color word)))
- (setq ret-score-total (+ ret-score-total score))
- (cl-incf ret-score-count)
- (add-text-properties
- (car at-word) (cdr at-word)
- `(face (:foreground ,color))
- )
- (goto-char (cdr at-word))))
- (when (not (eobp))
- (forward-char 1))))
- (cons (buffer-string) (/ ret-score-total ret-score-count)))))
+ (let ((ret-score-total 0.0)
+ (ret-score-count 0))
+ (save-excursion
+ (with-temp-buffer
+ (insert sen)
+ (goto-char (point-min))
+ (while (not (eobp))
+ (let ((at-word (bounds-of-thing-at-point 'word)))
+ (when at-word
+ (let* ((word (buffer-substring (car at-word) (cdr at-word)))
+ (score (w/bible-word-score word))
+ (color (w/bible-word-color word)))
+ (setq ret-score-total (+ ret-score-total score))
+ (cl-incf ret-score-count)
+ (add-text-properties
+ (car at-word) (cdr at-word)
+ `(face (:foreground ,color))
+ )
+ (goto-char (cdr at-word))))
+ (when (not (eobp))
+ (forward-char 1))))
+ (cons (buffer-string) (/ ret-score-total ret-score-count)))))
(cons sen 0.0)))
(provide 'wasp-biblicality)
diff --git a/src/gizmo/wasp-bless.el b/src/gizmo/wasp-bless.el
index 109b2f35..c3175548 100644
--- a/src/gizmo/wasp-bless.el
+++ b/src/gizmo/wasp-bless.el
@@ -22,21 +22,21 @@
"Construct an Emacs Lisp value representation of the value J."
(let ((tag (alist-get 'tag j)))
(cond
- ((s-equals? tag "ValueInteger") (alist-get 'contents j))
- ((s-equals? tag "ValueArray")
- (-map #'w/bless-parse-value (alist-get 'contents j)))
- (t (message "Unknown Bless tag: %s" tag)))))
+ ((s-equals? tag "ValueInteger") (alist-get 'contents j))
+ ((s-equals? tag "ValueArray")
+ (-map #'w/bless-parse-value (alist-get 'contents j)))
+ (t (message "Unknown Bless tag: %s" tag)))))
(defun w/bless-parse-effect (j)
"Construct an Emacs Lisp value representation of the effect J."
(let ((tag (alist-get 'tag j))
- (c (alist-get 'contents j)))
- (cond
- ((s-equals? tag "EffectPrint") `(print ,(w/bless-parse-value c)))
- ((s-equals? tag "EffectPrintBackwards") `(print-backwards ,(w/bless-parse-value c)))
- ((s-equals? tag "EffectSoundboard") `(soundboard ,(w/bless-parse-value c)))
- ((s-equals? tag "EffectModelToggle") `(model-toggle ,(w/bless-parse-value c)))
- )))
+ (c (alist-get 'contents j)))
+ (cond
+ ((s-equals? tag "EffectPrint") `(print ,(w/bless-parse-value c)))
+ ((s-equals? tag "EffectPrintBackwards") `(print-backwards ,(w/bless-parse-value c)))
+ ((s-equals? tag "EffectSoundboard") `(soundboard ,(w/bless-parse-value c)))
+ ((s-equals? tag "EffectModelToggle") `(model-toggle ,(w/bless-parse-value c)))
+ )))
(defun w/bless-parse-stack (j)
"Construct an Emacs Lisp value representation of the stack J."
@@ -63,32 +63,32 @@ Optionally limit evaluation to FUEL steps."
(with-current-buffer buf
(erase-buffer))
(make-process
- :name "wasp-bless-eval"
- :buffer buf
- :command `("bless" "-j" "eval" ,@(if fuel (list "--fuel" (number-to-string fuel)) nil) ,str)
- :sentinel
- (lambda (_ _)
- (let* ((s (with-current-buffer buf (buffer-string)))
- (j (json-read-from-string s))
- (status (alist-get 'status j)))
- (kill-buffer buf)
- (if (s-equals? status "success")
- (funcall
+ :name "wasp-bless-eval"
+ :buffer buf
+ :command `("bless" "-j" "eval" ,@(if fuel (list "--fuel" (number-to-string fuel)) nil) ,str)
+ :sentinel
+ (lambda (_ _)
+ (let* ((s (with-current-buffer buf (buffer-string)))
+ (j (json-read-from-string s))
+ (status (alist-get 'status j)))
+ (kill-buffer buf)
+ (if (s-equals? status "success")
+ (funcall
k
(cons
- (w/bless-parse-stack (alist-get 'stack (alist-get 'data j)))
- (w/bless-parse-effects (alist-get 'effects (alist-get 'data j)))))
- (w/bless-error (alist-get 'data j))))))))
+ (w/bless-parse-stack (alist-get 'stack (alist-get 'data j)))
+ (w/bless-parse-effects (alist-get 'effects (alist-get 'data j)))))
+ (w/bless-error (alist-get 'data j))))))))
(defun w/bless (str &optional fuel)
"Run the Bless program STR and apply its side effects.
Optionally limit evaluation to FUEL steps."
(w/bless-eval
- str
- (lambda (res)
- (--each (cdr res)
- (w/bless-apply-effect it)))
- fuel))
+ str
+ (lambda (res)
+ (--each (cdr res)
+ (w/bless-apply-effect it)))
+ fuel))
(provide 'wasp-bless)
;;; wasp-bless.el ends here
diff --git a/src/gizmo/wasp-chatsummary.el b/src/gizmo/wasp-chatsummary.el
index 5a6a27ae..3087c18d 100644
--- a/src/gizmo/wasp-chatsummary.el
+++ b/src/gizmo/wasp-chatsummary.el
@@ -26,16 +26,16 @@
(defun w/update-chatsummary ()
"Update the chat summary."
(w/ai
- (w/friend-journalism-input)
- (lambda (d)
- (when-let* ((d)
- (resp (s-trim d)))
- (with-current-buffer (w/chatsummary-get-buffer)
- (let ((inhibit-read-only t))
- (erase-buffer)
- (w/write-line "Chat summary" 'bold)
- (w/write-line resp)))))
- "Given a list of recent YouTube chatter activity, produce a summary of the topics discussed. The summary should be very short, maximum two sentences total. Do not introduce yourself. Simply provide a short summary of the chat. Do not mention specific names of chatters. Keep it succinct. Do not mention that you are summarizing YouTube activity. Be laconic."))
+ (w/friend-journalism-input)
+ (lambda (d)
+ (when-let* ((d)
+ (resp (s-trim d)))
+ (with-current-buffer (w/chatsummary-get-buffer)
+ (let ((inhibit-read-only t))
+ (erase-buffer)
+ (w/write-line "Chat summary" 'bold)
+ (w/write-line resp)))))
+ "Given a list of recent YouTube chatter activity, produce a summary of the topics discussed. The summary should be very short, maximum two sentences total. Do not introduce yourself. Simply provide a short summary of the chat. Do not mention specific names of chatters. Keep it succinct. Do not mention that you are summarizing YouTube activity. Be laconic."))
(defvar w/chatsummary-timer nil)
(defun w/run-chatsummary-timer ()
@@ -44,8 +44,8 @@
(cancel-timer w/chatsummary-timer))
(w/update-chatsummary)
(setq
- w/chatsummary-timer
- (run-with-timer 120 nil #'w/run-chatsummary-timer)))
+ w/chatsummary-timer
+ (run-with-timer 120 nil #'w/run-chatsummary-timer)))
(defun w/start-chatsummary ()
"Enable fake chatters."
diff --git a/src/gizmo/wasp-copfish.el b/src/gizmo/wasp-copfish.el
index 024c27dc..7afa3414 100644
--- a/src/gizmo/wasp-copfish.el
+++ b/src/gizmo/wasp-copfish.el
@@ -28,20 +28,20 @@
:parser #'buffer-string
:success
(cl-function
- (lambda (&key data &allow-other-keys)
- (setq w/copfish-last-response data)
- (funcall k data))))
+ (lambda (&key data &allow-other-keys)
+ (setq w/copfish-last-response data)
+ (funcall k data))))
t)
(defun w/copfish-get-fish (user k)
"Retrieve USER's fish ratio from copfish API.
Pass the resulting fraction to K."
(w/copfish-get
- (s-concat "fishdex/" user)
- (lambda (s)
- (let ((sp (s-split " " s)))
- (when (= (length sp) 2)
- (funcall k (cons (string-to-number (car sp)) (string-to-number (cadr sp)))))))))
+ (s-concat "fishdex/" user)
+ (lambda (s)
+ (let ((sp (s-split " " s)))
+ (when (= (length sp) 2)
+ (funcall k (cons (string-to-number (car sp)) (string-to-number (cadr sp)))))))))
(defvar w/copfish-user-cache nil)
(defun w/copfish-update-user (user)
@@ -49,12 +49,12 @@ Pass the resulting fraction to K."
(unless (-contains? w/copfish-user-cache user)
(add-to-list 'w/copfish-user-cache user)
(w/copfish-get-fish
- user
- (lambda (ct)
- (w/user-bind
- user
- (lambda ()
- (setf (alist-get :copfish-ratio w/user-current) ct)))))))
+ user
+ (lambda (ct)
+ (w/user-bind
+ user
+ (lambda ()
+ (setf (alist-get :copfish-ratio w/user-current) ct)))))))
(provide 'wasp-copfish)
;;; wasp-copfish.el ends here
diff --git a/src/gizmo/wasp-curse.el b/src/gizmo/wasp-curse.el
index 95149fef..2b31214f 100644
--- a/src/gizmo/wasp-curse.el
+++ b/src/gizmo/wasp-curse.el
@@ -20,148 +20,148 @@
(defconst w/binary-ops
'((or . "||")
- (and . "&&")
- (> . ">")
- (>= . ">=")
- (< . "<")
- (<= . "<=")
- (= . "===")
- (% . "%")
- (/ . "/")
- (bit-or . "|")
- (bit-and . "&")
- (bit-xor . "^")))
+ (and . "&&")
+ (> . ">")
+ (>= . ">=")
+ (< . "<")
+ (<= . "<=")
+ (= . "===")
+ (% . "%")
+ (/ . "/")
+ (bit-or . "|")
+ (bit-and . "&")
+ (bit-xor . "^")))
(defun w/curse-expr (expr)
"Translate EXPR according to the nature of the curse."
(cond
- ((null expr) "(null)")
- ((listp expr)
- (pcase (car expr)
- ((or '+ '- '*)
- (format
- "(%s)"
- (s-join (format "%s" (car expr)) (-map #'w/curse-expr (cdr expr)))))
- ((pred (lambda (x) (alist-get x w/binary-ops)))
- (format
- "(%s)"
- (s-join (alist-get (car expr) w/binary-ops) (-map #'w/curse-expr (cdr expr)))))
- ((or '<< '>>)
- (format
- "(%s%s%s)"
- (w/curse-expr (cadr expr))
- (format "%s" (car expr))
- (w/curse-expr (caddr expr))))
- ('comment "(null)")
- ('lambda
- (format
- "((%s)=>(%s))"
- (s-join "," (-map #'w/curse-name (cadr expr)))
- (s-join "," (-map #'w/curse-expr (cddr expr)))))
- ('async-lambda
- (format
- "(async(%s)=>(%s))"
- (s-join "," (-map #'w/curse-name (cadr expr)))
- (s-join "," (-map #'w/curse-expr (cddr expr)))))
- ('if
- (format
- "(%s?%s:%s)"
- (w/curse-expr (cadr expr))
- (w/curse-expr (caddr expr))
- (w/curse-expr (cadddr expr))))
- ('define
- (format
- "(globalThis.%s=%s)"
- (w/curse-name (cadr expr))
- (w/curse-expr (caddr expr))))
- ('set
- (format
- "(%s=%s)"
- (w/curse-name (cadr expr))
- (w/curse-expr (caddr expr))))
- ('aset
- (format
- "(%s[%s]=%s)"
- (w/curse-name (cadr expr))
- (w/curse-expr (caddr expr))
- (w/curse-expr (cadddr expr))))
- ('new
- (format
- "(new %s(%s))"
- (w/curse-expr (cadr expr))
- (s-join "," (-map #'w/curse-expr (cddr expr)))))
- ('await
- (format
- "(await %s)"
- (w/curse-expr (cadr expr))))
- ('not
- (format
- "(!%s)"
- (w/curse-expr (cadr expr))))
- ('let
- (format
- "(((%s)=>(%s))(%s))"
- (s-join "," (--map (w/curse-name (car it)) (cadr expr)))
- (s-join "," (-map #'w/curse-expr (cddr expr)))
- (s-join "," (--map (w/curse-expr (cadr it)) (cadr expr)))))
- ('async-let
- (format
- "((async(%s)=>(%s))(%s))"
- (s-join "," (--map (w/curse-name (car it)) (cadr expr)))
- (s-join "," (-map #'w/curse-expr (cddr expr)))
- (s-join "," (--map (w/curse-expr (cadr it)) (cadr expr)))))
- ('do
- (format
- "((()=>(%s))())"
- (s-join "," (-map #'w/curse-expr (cdr expr)))))
- ('iota
- (format
- "[...Array(%s).keys()]"
- (w/curse-expr (cadr expr))))
- ('array
- (format
- "[%s]"
- (s-join "," (-map #'w/curse-expr (cdr expr)))))
- ('object
- (format
- "{%s}"
- (s-join
- ","
- (--map (format "%s:%s" (w/curse-name (car it)) (w/curse-expr (cadr it))) (cdr expr)))))
- ('@
- (format
- "((%s)[%s])"
- (w/curse-expr (cadr expr))
- (w/curse-expr (caddr expr))))
- (_
- (format
- "((%s)(%s))"
- (w/curse-expr (car expr))
- (s-join "," (-map #'w/curse-expr (cdr expr)))))
- ))
- ((symbolp expr) (w/curse-name expr))
- ((numberp expr) (format "%s" expr))
- ((stringp expr) (format "\"%s\"" expr))
- (t "(null)")))
+ ((null expr) "(null)")
+ ((listp expr)
+ (pcase (car expr)
+ ((or '+ '- '*)
+ (format
+ "(%s)"
+ (s-join (format "%s" (car expr)) (-map #'w/curse-expr (cdr expr)))))
+ ((pred (lambda (x) (alist-get x w/binary-ops)))
+ (format
+ "(%s)"
+ (s-join (alist-get (car expr) w/binary-ops) (-map #'w/curse-expr (cdr expr)))))
+ ((or '<< '>>)
+ (format
+ "(%s%s%s)"
+ (w/curse-expr (cadr expr))
+ (format "%s" (car expr))
+ (w/curse-expr (caddr expr))))
+ ('comment "(null)")
+ ('lambda
+ (format
+ "((%s)=>(%s))"
+ (s-join "," (-map #'w/curse-name (cadr expr)))
+ (s-join "," (-map #'w/curse-expr (cddr expr)))))
+ ('async-lambda
+ (format
+ "(async(%s)=>(%s))"
+ (s-join "," (-map #'w/curse-name (cadr expr)))
+ (s-join "," (-map #'w/curse-expr (cddr expr)))))
+ ('if
+ (format
+ "(%s?%s:%s)"
+ (w/curse-expr (cadr expr))
+ (w/curse-expr (caddr expr))
+ (w/curse-expr (cadddr expr))))
+ ('define
+ (format
+ "(globalThis.%s=%s)"
+ (w/curse-name (cadr expr))
+ (w/curse-expr (caddr expr))))
+ ('set
+ (format
+ "(%s=%s)"
+ (w/curse-name (cadr expr))
+ (w/curse-expr (caddr expr))))
+ ('aset
+ (format
+ "(%s[%s]=%s)"
+ (w/curse-name (cadr expr))
+ (w/curse-expr (caddr expr))
+ (w/curse-expr (cadddr expr))))
+ ('new
+ (format
+ "(new %s(%s))"
+ (w/curse-expr (cadr expr))
+ (s-join "," (-map #'w/curse-expr (cddr expr)))))
+ ('await
+ (format
+ "(await %s)"
+ (w/curse-expr (cadr expr))))
+ ('not
+ (format
+ "(!%s)"
+ (w/curse-expr (cadr expr))))
+ ('let
+ (format
+ "(((%s)=>(%s))(%s))"
+ (s-join "," (--map (w/curse-name (car it)) (cadr expr)))
+ (s-join "," (-map #'w/curse-expr (cddr expr)))
+ (s-join "," (--map (w/curse-expr (cadr it)) (cadr expr)))))
+ ('async-let
+ (format
+ "((async(%s)=>(%s))(%s))"
+ (s-join "," (--map (w/curse-name (car it)) (cadr expr)))
+ (s-join "," (-map #'w/curse-expr (cddr expr)))
+ (s-join "," (--map (w/curse-expr (cadr it)) (cadr expr)))))
+ ('do
+ (format
+ "((()=>(%s))())"
+ (s-join "," (-map #'w/curse-expr (cdr expr)))))
+ ('iota
+ (format
+ "[...Array(%s).keys()]"
+ (w/curse-expr (cadr expr))))
+ ('array
+ (format
+ "[%s]"
+ (s-join "," (-map #'w/curse-expr (cdr expr)))))
+ ('object
+ (format
+ "{%s}"
+ (s-join
+ ","
+ (--map (format "%s:%s" (w/curse-name (car it)) (w/curse-expr (cadr it))) (cdr expr)))))
+ ('@
+ (format
+ "((%s)[%s])"
+ (w/curse-expr (cadr expr))
+ (w/curse-expr (caddr expr))))
+ (_
+ (format
+ "((%s)(%s))"
+ (w/curse-expr (car expr))
+ (s-join "," (-map #'w/curse-expr (cdr expr)))))
+ ))
+ ((symbolp expr) (w/curse-name expr))
+ ((numberp expr) (format "%s" expr))
+ ((stringp expr) (format "\"%s\"" expr))
+ (t "(null)")))
(defun w/curse-current-buffer ()
"Transmute the current buffer according to the curse."
(interactive)
(let* ((srcfile (buffer-file-name))
- (jspath (s-concat (f-base srcfile) ".js"))
- (src (buffer-string)))
+ (jspath (s-concat (f-base srcfile) ".js"))
+ (src (buffer-string)))
(with-temp-buffer
(insert src)
(goto-char (point-min))
(let ((acc "")
- (line (read (current-buffer))))
+ (line (read (current-buffer))))
(while (and line (not (eobp)))
(setf acc (s-concat acc (w/curse-expr line) ";"))
(setf
- line
- (condition-case nil
- (read (current-buffer))
- (error nil))))
+ line
+ (condition-case nil
+ (read (current-buffer))
+ (error nil))))
(write-region acc nil jspath)))))
(provide 'wasp-curse)
diff --git a/src/gizmo/wasp-cyclone.el b/src/gizmo/wasp-cyclone.el
index d77061e7..0223e8bc 100644
--- a/src/gizmo/wasp-cyclone.el
+++ b/src/gizmo/wasp-cyclone.el
@@ -7,6 +7,8 @@
(require 'wasp-heartrate)
(require 'wasp-chatsummary)
(require 'wasp-alert-message)
+(require 'wasp-fakechat)
+(require 'wasp-bannerads)
(defconst w/gizmo-buffer-names
(list
@@ -23,7 +25,7 @@
(defun w/gizmo-tag-window ()
"Tag the current window as containing a gizmo."
(interactive)
- (when-let ((w (selected-window)))
+ (when-let* ((w (selected-window)))
(add-to-list 'w/gizmo-windows w)))
(defun w/gizmo-cycle-window (w)
@@ -42,6 +44,11 @@
(--each w/gizmo-windows
(w/gizmo-cycle-window it)))
+(defun w/gizmo-ensure-shown (buf)
+ "Ensure that BUF is shown in one of the windows."
+ (unless (--any (s-equals? (buffer-name (window-buffer it)) (buffer-name (get-buffer buf))) w/gizmo-windows)
+ (set-window-buffer (car w/gizmo-windows) buf)))
+
(defvar w/gizmo-cycle-timer nil)
(defun w/run-gizmo-cycle-timer ()
"Run the gizmo cycle timer."
@@ -49,9 +56,32 @@
(cancel-timer w/gizmo-cycle-timer))
(w/gizmo-cycle)
(setq
- w/gizmo-cycle-timer
- (run-with-timer 300 nil #'w/run-gizmo-cycle-timer)))
+ w/gizmo-cycle-timer
+ (run-with-timer 300 nil #'w/run-gizmo-cycle-timer)))
(w/run-gizmo-cycle-timer)
+(require 'htmlize)
+(defvar w/gizmo-html-cache (ht-create))
+(defun w/gizmo-render-html (buf)
+ "Render BUF to HTML with embedded images."
+ (let* ( (htmlize-output-type 'inline-css)
+ (htmlize-force-inline-images t)
+ (buf (htmlize-buffer buf))
+ (html (with-current-buffer buf (buffer-string))))
+ (kill-buffer buf)
+ html))
+(defun w/gizmo-upload (buf)
+ "Upload the HTML contents of BUF to the database."
+ (let* ( (b (get-buffer buf))
+ (nm (buffer-name b))
+ (render (w/gizmo-render-html b))
+ (cached (ht-get w/gizmo-html-cache nm)))
+ (unless (and cached (s-equals? cached render))
+ (ht-set w/gizmo-html-cache nm render)
+ (w/db-hset-then "gizmos" nm
+ render
+ (lambda (_)
+ (w/pub '(gizmo buffer update) (list nm)))))))
+
(provide 'wasp-cyclone)
;;; wasp-cyclone.el ends here
diff --git a/src/gizmo/wasp-fakechat.el b/src/gizmo/wasp-fakechat.el
index 27b6962b..ffdd750a 100644
--- a/src/gizmo/wasp-fakechat.el
+++ b/src/gizmo/wasp-fakechat.el
@@ -137,12 +137,12 @@
(diff (if last (time-subtract cur last) 99999999))
(d (time-convert diff 'integer)))
(+
- (if (> d 300) 0.01 0.1)
+ (if (> d 300) 0.01 0.05)
(if
(--any?
(s-contains? (w/fake-chatter-profile-username (w/fake-chatter-profile st)) (cdr it))
(-take 20 w/twitch-chat-history))
- 0.8
+ 0.1
0.0))))
(defun w/fake-chatter-elevated-likeliness (st)
diff --git a/src/gizmo/wasp-flycheck.el b/src/gizmo/wasp-flycheck.el
index 27a857b4..505ad8a3 100644
--- a/src/gizmo/wasp-flycheck.el
+++ b/src/gizmo/wasp-flycheck.el
@@ -2,16 +2,16 @@
;;; Commentary:
;;; Code:
-(require 'flycheck)
-
-(flycheck-define-generic-checker 'wasp-twitch
- "Checker to display errors from Twitch redeems."
- :start
- (lambda (c x)
- (print c)
- (print x))
- :modes '(fundamental-mode)
- )
+;; (require 'flycheck)
+;;
+;; (flycheck-define-generic-checker 'wasp-twitch
+;; "Checker to display errors from Twitch redeems."
+;; :start
+;; (lambda (c x)
+;; (print c)
+;; (print x))
+;; :modes '(fundamental-mode)
+;; )
(provide 'wasp-flycheck)
;;; wasp-flycheck.el ends here
diff --git a/src/gizmo/wasp-friend-callout.el b/src/gizmo/wasp-friend-callout.el
new file mode 100644
index 00000000..510c279c
--- /dev/null
+++ b/src/gizmo/wasp-friend-callout.el
@@ -0,0 +1,106 @@
+;;; wasp-friend-callout --- "friend" talks about things -*- lexical-binding: t; -*-
+;;; Commentary:
+;;; Code:
+
+(require 'dash)
+(require 's)
+(require 'wasp-friend)
+(require 'wasp-twitch)
+(require 'wasp-gcp)
+(require 'wasp-aoc)
+(require 'wasp-uwoomfie)
+
+(defun w/friend-callout-holiday ()
+ "Call to respond to the current holiday."
+ (w/friend-respond "We're restoring a crumbling mansion to it's former glory. Say something about that please!"))
+
+(defun w/friend-callout-hexamedia ()
+ "Call to respond to a random recent chatter's Hexamedia card collection."
+ (let* ((users (-filter #'cdr (--map (cons (car it) (alist-get :hexamedia-cards (w/user-cache-get (car it)))) (-take 10 w/twitch-chat-history))))
+ (user (and users (nth (random (length users)) users)))
+ (cards (cdr user))
+ (coll (and cards (nth (random (length cards)) cards))))
+ (when coll
+ (w/friend-respond
+ (format
+ "%s has collected %s out of 20 cards in the %s collection. Please mention the collection name and the person collecting."
+ (car user)
+ (cdr coll)
+ (car coll))))))
+
+(defun w/friend-callout-copfish ()
+ "Call to respond to a random recent chatter's Copfish ratio."
+ (let* ((users (-filter #'cdr (--map (cons (car it) (alist-get :copfish-ratio (w/user-cache-get (car it)))) (-take 10 w/twitch-chat-history))))
+ (user (and users (nth (random (length users)) users))))
+ (when user
+ (w/friend-respond
+ (format
+ "%s has collected %s out of %s fish in the Copfish fish catching collection. Please mention the collection name and the person collecting."
+ (car user)
+ (cadr user)
+ (cddr user))))))
+
+(defun w/friend-callout-uwoomfie ()
+ "Call to respond to a random recent chatter's Uwoomfie status."
+ (let* ((users
+ (-filter
+ #'cdr
+ (--map
+ (cons (car it) (w/uwoomfie-get-status (car it)))
+ (-take 10 w/twitch-chat-history))))
+ (user (and users (nth (random (length users)) users))))
+ (cl-case (cdr user)
+ (cool (w/friend-respond (format "According to UWOSLAB, %s is a very cool person. Make sure to mention their username." (car user))))
+ (honored (w/friend-respond (format "According to UWOSLAB, %s is an honorary viewer. Make sure to mention their username." (car user))))
+ (t nil))))
+
+(defun w/friend-callout-shindaggers ()
+ "Call to respond to a random recent chatter's Shindaggers knife collection."
+ (let* ((users (-filter #'cdr (--map (cons (car it) (alist-get :shindaggers-knives (w/user-cache-get (car it)))) (-take 10 w/twitch-chat-history))))
+ (user (and users (nth (random (length users)) users)))
+ (knives (cdr user))
+ (knife (and knives (nth (random (length knives)) knives))))
+ (when knife
+ (w/friend-respond
+ (format
+ "%s has collected the %s from shindig's Shindaggers knife collection. Please mention the collection name and the person collecting and the knife."
+ (car user)
+ knife)))))
+
+(defun w/friend-callout-aoc ()
+ "Call to respond to a random recent chatter's Advent of Code completion."
+ (let* ((users (-filter #'cdr (--map (cons (car it) (w/aoc-lookup-stars (car it))) (-take 10 w/twitch-chat-history))))
+ (user (and users (nth (random (length users)) users))))
+ (w/friend-respond
+ (format
+ "%s has been doing Advent of Code this year, and they've completed %d out of %d problems so far."
+ (car user)
+ (cdr user)
+ (w/aoc-max-stars)))))
+
+(defun w/friend-callout-gcp ()
+ "Call to respond to the current GCP dot."
+ (w/gcp-dot
+ (lambda (d)
+ (w/friend-respond
+ (format
+ "The Global Consciousness Project indicator is currently as follows: %s"
+ (w/gcp-describe d))))))
+
+(defun w/friend-callout-resolution ()
+ "Call to respond to a random recent chatter's resolve."
+ (when-let*
+ ((users (-filter #'cdr (--map (cons (car it) (alist-get :resolution2025 (w/user-cache-get (car it)))) (-take 10 w/twitch-chat-history))))
+ (user (and users (nth (random (length users)) users))))
+ (if (s-match (rx (one-or-more digit) (zero-or-more space) "x" (zero-or-more space) (one-or-more digit)) (cdr user))
+ (w/friend-respond
+ (format
+ "%s snarkily said that their New Year's resolution was a screen resolution. What do you think about this?" (car user)))
+ (w/friend-respond
+ (format
+ "%s made a New Year's resolution to %s. Ask them how it's going!"
+ (car user)
+ (cdr user))))))
+
+(provide 'wasp-friend-callout)
+;;; wasp-friend-callout.el ends here
diff --git a/src/gizmo/wasp-friend-eating.el b/src/gizmo/wasp-friend-eating.el
new file mode 100644
index 00000000..4bd92b8c
--- /dev/null
+++ b/src/gizmo/wasp-friend-eating.el
@@ -0,0 +1,18 @@
+;;; wasp-friend-eating --- "friend" can eat -*- lexical-binding: t; -*-
+;;; Commentary:
+;;; Code:
+(require 'wasp-friend)
+
+(defvar w/friend-tastes " You love eating cranberries and lemons.")
+
+(defun w/friend-feed (user food)
+ "Call when USER fed FOOD to \"friend\"."
+ (w/friend-personality
+ (format "%s fed you %s" user food)
+ (lambda (msg)
+ (w/friend-say msg)
+ (w/friend-set-state 'eating 6))
+ w/friend-tastes))
+
+(provide 'wasp-friend-eating)
+;;; wasp-friend-eating.el ends here
diff --git a/src/gizmo/wasp-friend-journalism.el b/src/gizmo/wasp-friend-journalism.el
new file mode 100644
index 00000000..25d18bdb
--- /dev/null
+++ b/src/gizmo/wasp-friend-journalism.el
@@ -0,0 +1,45 @@
+;;; wasp-friend-journalism --- "friend" writes the newspaper -*- lexical-binding: t; -*-
+;;; Commentary:
+;;; Code:
+
+(require 'dash)
+(require 's)
+(require 'wasp-friend)
+(require 'wasp-newspaper)
+
+(defun w/friend-journalism-input ()
+ "Collect an input for \"friend\"'s journalism based on recent activities."
+ (s-join
+ "\n"
+ (cons
+ (format "LCOLONQ: %s" (s-trim w/last-stream-transcription))
+ (--map
+ (format "%s: %s" (car it) (cdr it))
+ (reverse (-take 20 w/twitch-chat-history))))))
+
+(defun w/friend-journalism (author headline)
+ "Retrieve \"friend\"'s opinion on current events related to HEADLINE.
+AUTHOR was a contributing author btw."
+ (w/friend-personality
+ (s-concat
+ "Headline: " headline "\n\n"
+ (w/friend-journalism-input))
+ (lambda (resp)
+ (when resp
+ (w/write-chat-event (format "\"friend\" finished writing about: %s" headline))
+ (funcall
+ (if (= (random 5) 0) #'w/newspaper-screenshot (lambda (k) (funcall k nil)))
+ (lambda (img)
+ (when img
+ (w/write-chat-event "...and the article included some photojournalism"))
+ (push
+ (w/make-newspaper-article
+ :headline headline
+ :author (format "\"friend\" and %s" author)
+ :content (s-trim resp)
+ :image img)
+ w/newspaper-todays-articles)))))
+ "Given a headline of a newspaper article and a summary of recent user activity, please do your best journalist impression and produce a one paragraph article about the situation that fits the headline."))
+
+(provide 'wasp-friend-journalism)
+;;; wasp-friend-journalism.el ends here
diff --git a/src/gizmo/wasp-friend-music.el b/src/gizmo/wasp-friend-music.el
new file mode 100644
index 00000000..76e2c606
--- /dev/null
+++ b/src/gizmo/wasp-friend-music.el
@@ -0,0 +1,31 @@
+;;; wasp-friend-music --- "friend" can play music -*- lexical-binding: t; -*-
+;;; Commentary:
+;;; Code:
+(require 'wasp-friend)
+
+(defconst w/friend-composition-examples
+ '(("My Life Is Like A Video Game" . "A/A/c/c/c/dcc/c///a/a/a/f/g/f/f///a/a/a/a/g/g/ga//f//")
+ ("Super Idol" . "gg[g#]gfg[CD#cG#][D#][CG#f][Cd#][Cc]C[Cd#]/[DFfd][FA#][DA#f]D[Dg][A#f][Dd#a#]f[GBgd]B[Gd#][GDc][Gd#]G[Gd#]/[D#Gc]G[D#cg][D#g][D#g#][dg][D#f][d#d#][D#Ggc]f[D#][D#Gg][D#c][D#][D#c][d#][DFdA#]F[DA#d][Dd][Dg]/[Da#g]/[D#d#][D#][D#][D#][D#][FD#][GA#][fd#][gA#]")
+ ("Reindeer" . "FG/FD/B/A/G/////GAGAG/c/B///////FG/FD/B/A/G/////GAGAG/d/c/////|C4~~~G3~~~C4~~~G3~~~C~~~E3~D#3~D3~~~~~~~G3~~~D3~~~G3~~~D3~~~G3~~D3G3~B3/C4")))
+
+(defun w/friend-compose-song (theme)
+ "Compose a song about THEME to play on the bells."
+ (w/ai
+ theme
+ (lambda (res)
+ (let* ((sp (s-split ":" (s-trim res)))
+ (name (s-trim (car sp)))
+ (song (s-trim (cadr sp))))
+ (when (and (stringp name) (stringp song))
+ (w/friend-respond
+ (format "You just composed a song about %s called %s! Say something about it!" theme name)
+ (lambda ()
+ (w/write-chat-event (format "The song is called %s: %s" name song))
+ (w/add-song (s-concat "friend's " name) song)
+ (w/audio-muzak-enqueue "\"friend\"" song))))))
+ "Please compose a song about the provided theme. The format for the song is a sequence of characters with meanings as follows: / represents a rest, uppercase letters A through G indicate semitones, octaves are specified with a number following a semitone, ~ extends the duration of a note, square brackets like [] group notes together into a chord. The pipe character | separates tracks. Respond only with the song's name followed by a colon folowed by the song notes. Do not explain yourself. The song should ideally be 20 to 30 notes long."
+ (-map #'car w/friend-composition-examples)
+ (--map (format "%s: %s" (car it) (cdr it)) w/friend-composition-examples)))
+
+(provide 'wasp-friend-music)
+;;; wasp-friend-music.el ends here
diff --git a/src/gizmo/wasp-friend-reading.el b/src/gizmo/wasp-friend-reading.el
new file mode 100644
index 00000000..7859b2e8
--- /dev/null
+++ b/src/gizmo/wasp-friend-reading.el
@@ -0,0 +1,15 @@
+;;; wasp-friend-reading --- "friend" can read pages -*- lexical-binding: t; -*-
+;;; Commentary:
+;;; Code:
+(require 'wasp-friend)
+(require 'wasp-wikipedia)
+
+(defun w/friend-react-wikipedia (user page)
+ "Call when USER asks \"friend\" to react to PAGE on Wikipedia."
+ (w/fetch-wikipedia
+ page
+ (lambda (sum)
+ (w/friend-respond (format "%s asks you to react to the Wikipedia page for %s. The page summary is: %s" user page sum)))))
+
+(provide 'wasp-friend-reading)
+;;; wasp-friend-reading.el ends here
diff --git a/src/gizmo/wasp-friend-voice.el b/src/gizmo/wasp-friend-voice.el
new file mode 100644
index 00000000..71519e09
--- /dev/null
+++ b/src/gizmo/wasp-friend-voice.el
@@ -0,0 +1,70 @@
+;;; wasp-friend-voice --- "friend" talks -*- lexical-binding: t; -*-
+;;; Commentary:
+;;; Code:
+
+(require 'dash)
+(require 's)
+(require 'wasp-friend)
+
+(defconst w/friend-grapheme-phonemes
+ '((("b" "bb") . "bug") (("d" "dd" "ed") . "dad")
+ (("f" "ff" "ph" "gh" "lf" "ft") . "fat")
+ (("g" "gg" "gh" "gu" "gue") . "gun") (("h" "wh") . "hop")
+ (("j" "ge" "g" "dge" "di" "gg") . "jam")
+ (("k" "c" "ch" "cc" "lk" "qu" "q" "ck" "x") . "kit")
+ (("l" "ll") . "live") (("m" "mm" "mb" "mn" "lm") . "man")
+ (("n" "nn" "kn" "gn" "pn" "mn") . "net") (("p" "pp") . "pin")
+ (("r" "rr" "wr" "rh") . "run")
+ (("s" "ss" "c" "sc" "ps" "st" "ce" "se") . "sit")
+ (("t" "tt" "th" "ed") . "tip") (("v" "f" "ph" "ve") . "vine")
+ (("w" "wh" "u" "o") . "wit")
+ (("z" "zz" "s" "ss" "x" "ze" "se") . "zed")
+ (("s" "si" "z") . "treasure") (("ch" "tch" "tu" "te") . "chip")
+ (("sh" "ce" "s" "ci" "si" "ch" "sci" "ti") . "sham")
+ (("th ") . "thongs") (("th") . "leather")
+ (("ng" "n" "ngue") . "ring") (("y" "i" "j") . "you")
+ (("a" "ai" "au") . "cat")
+ (("a" "ai" "eigh" "aigh" "ay" "er" "et" "ei" "au" "ea" "ey") . "bay")
+ (("e" "ea" "u" "ie" "ai" "a" "eo" "ei" "ae") . "end")
+ (("e" "ee" "ea" "y" "ey" "oe" "ie" "i" "ei" "eo" "ay") . "be")
+ (("i" "e" "o" "u" "ui" "y" "ie") . "it")
+ (("i" "y" "igh" "ie" "uy" "ye" "ai" "is" "eigh") . "spider")
+ (("a" "ho" "au" "aw" "ough") . "swan")
+ (("o" "oa" "oe" "ow" "ough" "eau" "oo" "ew") . "open")
+ (("o" "oo" "u" "ou") . "wolf") (("u" "o" "oo" "ou") . "lug")
+ (("o" "oo" "ew" "ue" "oe" "ough" "ui" "oew" "ou") . "who")
+ (("oi" "oy" "uoy") . "join") (("ow" "ou" "ough") . "now")
+ (("a" "er" "i" "ar" "our" "ur") . "about")
+ (("air" "are" "ear" "ere" "eir" "ayer") . "chair") (("a") . "arm ")
+ (("ir" "er" "ur" "ear" "or" "our" "yr") . "bird")
+ (("aw" "a" "or" "oor" "ore" "oar" "our" "augh" "ar" "ough" "au") . "paw")
+ (("ear" "eer" "ere" "ier") . "ear") (("ure" "our") . "cure")))
+
+(defconst w/friend-phonemes
+ (-sort
+ (-on #'> (lambda (x) (length (car x))))
+ (--mapcat
+ (-map (lambda (g) (cons g (cdr it))) (car it))
+ w/friend-grapheme-phonemes)))
+
+(defun w/friend-replace-graphemes (str)
+ "Replace all graphemes with phoneme words in STR."
+ (let* ((phoneme-codes (--map-indexed (cons (cdr it) (format "%s," it-index)) w/friend-grapheme-phonemes))
+ (grapheme-codes (--map (cons (car it) (alist-get (cdr it) phoneme-codes nil nil #'s-equals?)) w/friend-phonemes))
+ (cleaned (s-downcase (replace-regexp-in-string "[^[:alpha:]]" "" str))))
+ (--map (car (nth (string-to-number it) phoneme-codes)) (-filter #'s-present? (s-split "," (s-replace-all grapheme-codes cleaned))))))
+
+(defun w/friend-phoneme-path (ph)
+ "Return a randomly chosen path to the given PH."
+ (let ((samples (f--entries (w/asset "friendvoice/") (s-contains? ph it) t)))
+ (nth (random (length samples)) samples)))
+(defun w/friend-pronounce-phonemes (ph)
+ "Say PH."
+ (let ((files (-map #'w/friend-phoneme-path ph)))
+ (apply
+ #'start-process
+ "phoneme-say" nil "playphonemes"
+ files)))
+
+(provide 'wasp-friend-voice)
+;;; wasp-friend-voice.el ends here
diff --git a/src/gizmo/wasp-friend.el b/src/gizmo/wasp-friend.el
index 0432040d..28403025 100644
--- a/src/gizmo/wasp-friend.el
+++ b/src/gizmo/wasp-friend.el
@@ -4,20 +4,13 @@
(require 'dash)
(require 's)
-(require 'flycheck)
+(require 'cl-lib)
(require 'wasp-utils)
-(require 'wasp-audio)
-(require 'wasp-ai)
(require 'wasp-chat)
+(require 'wasp-ai)
(require 'wasp-twitch)
-(require 'wasp-newspaper)
-(require 'wasp-gcp)
-(require 'wasp-aoc)
-(require 'wasp-uwoomfie)
-(require 'wasp-wikipedia)
-(require 'muzak)
-(require 'muzak-wasp)
+;;;; Buffer and mode
(defcustom w/friend-buffer "*wasp-friend*"
"Name of buffer used to display \"friend\"."
:type '(string)
@@ -29,219 +22,22 @@
(message "hi i'm \"friend\"")
(setq-local cursor-type nil))
-(defun w/get-friend-buffer ()
+(defun w/friend-get-buffer ()
"Return the \"friend\" buffer."
(unless (get-buffer w/friend-buffer)
(with-current-buffer (get-buffer-create w/friend-buffer)
(w/friend-mode)))
(get-buffer w/friend-buffer))
-(defun w/friend-journalism-input ()
- "Collect an input for \"friend\"'s journalism based on recent activities."
- (s-join
- "\n"
- (cons
- (format "LCOLONQ: %s" (s-trim w/last-stream-transcription))
- (--map
- (format "%s: %s" (car it) (cdr it))
- (reverse (-take 20 w/twitch-chat-history))))))
-
-(defun w/friend-journalism (author headline)
- "Retrieve \"friend\"'s opinion on current events related to HEADLINE.
-AUTHOR was a contributing author btw."
- (w/ai
- (s-concat
- "Headline: " headline "\n\n"
- (w/friend-journalism-input))
- (lambda (resp)
- (when resp
- (w/write-chat-event (format "\"friend\" finished writing about: %s" headline))
- (funcall
- (if (= (random 5) 0) #'w/newspaper-screenshot (lambda (k) (funcall k nil)))
- (lambda (img)
- (when img
- (w/write-chat-event "...and the article included some photojournalism"))
- (push
- (w/make-newspaper-article
- :headline headline
- :author (format "\"friend\" and %s" author)
- :content (s-trim resp)
- :image img)
- w/newspaper-todays-articles)))))
- "You are the personality of a desktop buddy named \"friend\". \"friend\" is irreverant but kind, and only speaks in lowercase. You are kind of dumb in a cute way and silly like a virtual pet. You live in the corner of LCOLONQ's stream and provide commentary on events. You like people, video games, emojis, learning, and food. Given a headline of a newspaper article and a summary of recent user activity, please do your best journalist impression and produce a one paragraph article about the situation that fits the headline."))
-
-(defconst w/friend-grapheme-phonemes
- '((("b" "bb") . "bug") (("d" "dd" "ed") . "dad")
- (("f" "ff" "ph" "gh" "lf" "ft") . "fat")
- (("g" "gg" "gh" "gu" "gue") . "gun") (("h" "wh") . "hop")
- (("j" "ge" "g" "dge" "di" "gg") . "jam")
- (("k" "c" "ch" "cc" "lk" "qu" "q" "ck" "x") . "kit")
- (("l" "ll") . "live") (("m" "mm" "mb" "mn" "lm") . "man")
- (("n" "nn" "kn" "gn" "pn" "mn") . "net") (("p" "pp") . "pin")
- (("r" "rr" "wr" "rh") . "run")
- (("s" "ss" "c" "sc" "ps" "st" "ce" "se") . "sit")
- (("t" "tt" "th" "ed") . "tip") (("v" "f" "ph" "ve") . "vine")
- (("w" "wh" "u" "o") . "wit")
- (("z" "zz" "s" "ss" "x" "ze" "se") . "zed")
- (("s" "si" "z") . "treasure") (("ch" "tch" "tu" "te") . "chip")
- (("sh" "ce" "s" "ci" "si" "ch" "sci" "ti") . "sham")
- (("th ") . "thongs") (("th") . "leather")
- (("ng" "n" "ngue") . "ring") (("y" "i" "j") . "you")
- (("a" "ai" "au") . "cat")
- (("a" "ai" "eigh" "aigh" "ay" "er" "et" "ei" "au" "ea" "ey") . "bay")
- (("e" "ea" "u" "ie" "ai" "a" "eo" "ei" "ae") . "end")
- (("e" "ee" "ea" "y" "ey" "oe" "ie" "i" "ei" "eo" "ay") . "be")
- (("i" "e" "o" "u" "ui" "y" "ie") . "it")
- (("i" "y" "igh" "ie" "uy" "ye" "ai" "is" "eigh") . "spider")
- (("a" "ho" "au" "aw" "ough") . "swan")
- (("o" "oa" "oe" "ow" "ough" "eau" "oo" "ew") . "open")
- (("o" "oo" "u" "ou") . "wolf") (("u" "o" "oo" "ou") . "lug")
- (("o" "oo" "ew" "ue" "oe" "ough" "ui" "oew" "ou") . "who")
- (("oi" "oy" "uoy") . "join") (("ow" "ou" "ough") . "now")
- (("a" "er" "i" "ar" "our" "ur") . "about")
- (("air" "are" "ear" "ere" "eir" "ayer") . "chair") (("a") . "arm ")
- (("ir" "er" "ur" "ear" "or" "our" "yr") . "bird")
- (("aw" "a" "or" "oor" "ore" "oar" "our" "augh" "ar" "ough" "au") . "paw")
- (("ear" "eer" "ere" "ier") . "ear") (("ure" "our") . "cure")))
-
-(defconst w/friend-phonemes
- (-sort
- (-on #'> (lambda (x) (length (car x))))
- (--mapcat
- (-map (lambda (g) (cons g (cdr it))) (car it))
- w/friend-grapheme-phonemes)))
-
-(defun w/friend-replace-graphemes (str)
- "Replace all graphemes with phoneme words in STR."
- (let* ((phoneme-codes (--map-indexed (cons (cdr it) (format "%s," it-index)) w/friend-grapheme-phonemes))
- (grapheme-codes (--map (cons (car it) (alist-get (cdr it) phoneme-codes nil nil #'s-equals?)) w/friend-phonemes))
- (cleaned (s-downcase (replace-regexp-in-string "[^[:alpha:]]" "" str))))
- (--map (car (nth (string-to-number it) phoneme-codes)) (-filter #'s-present? (s-split "," (s-replace-all grapheme-codes cleaned))))))
-
-(defun w/friend-phoneme-path (ph)
- "Return a randomly chosen path to the given PH."
- (let ((samples (f--entries (w/asset "friendvoice/") (s-contains? ph it) t)))
- (nth (random (length samples)) samples)))
-(defun w/friend-pronounce-phonemes (ph)
- "Say PH."
- (let ((files (-map #'w/friend-phoneme-path ph)))
- (apply
- #'start-process
- "phoneme-say" nil "playphonemes"
- files)))
-
-;; (defun w/get-friend-expensive-tastes (k)
-;; "Pass non-nil to K if \"friend\" has expensive tastes this stream.
-;; Also update the cached Amazon stock price for next stream."
-;; (fig//load-db2-entry
-;; "LCOLONQ" :amzn-price
-;; (lambda (price)
-;; (let ((prev (or price 0))
-;; (cur (fig//stock-price "AMZN")))
-;; (fig//update-db-number "LCOLONQ" :amzn-price (lambda (_) cur))
-;; (funcall k (> cur prev))))))
-
-(defvar w/friend-tastes " You love eating cranberries and lemons.")
-;; (fig//get-friend-expensive-tastes
-;; (lambda (expensive)
-;; (let ((moon (car (lunar-phase-for-date (calendar-current-date)))))
-;; (setf
-;; fig//friend-tastes
-;; (s-concat
-;; (cond
-;; ((-contains? '("New" "Waxing Crescent") moon) " You prefer warm foods like soups.")
-;; ((-contains? '("First Quarter" "Waxing Gibbous") moon) " You prefer to eat leafy greens and fruits.")
-;; ((-contains? '("Full" "Waning Gibbous") moon) " You prefer to eat barbeque and grilled meats.")
-;; ((-contains? '("Last Quarter" "Waning Crescent") moon) " You prefer to eat corn beans and squash.")
-;; (t "")
-;; )
-;; (if expensive " You have expensive taste in food and dislike any food that can be obtained cheaply." ""))))))
-
-;; states:
-;; default
-;; jumping
-;; eating, eating0, eating1, eating2
-;; chatting, chatting0
+;;;; State
(defvar w/friend-state 'default)
(defvar w/friend-emotion "neutral")
(defvar w/friend-message-cache nil)
(defvar w/friend-state-timer 0)
-
(defvar w/friend-animation 1)
(defvar w/friend-speech "")
(defvar w/friend-speech-timer 0)
-(defconst w/friend-composition-examples
- '(("My Life Is Like A Video Game" . "A/A/c/c/c/dcc/c///a/a/a/f/g/f/f///a/a/a/a/g/g/ga//f//")
- ("Super Idol" . "gg[g#]gfg[CD#cG#][D#][CG#f][Cd#][Cc]C[Cd#]/[DFfd][FA#][DA#f]D[Dg][A#f][Dd#a#]f[GBgd]B[Gd#][GDc][Gd#]G[Gd#]/[D#Gc]G[D#cg][D#g][D#g#][dg][D#f][d#d#][D#Ggc]f[D#][D#Gg][D#c][D#][D#c][d#][DFdA#]F[DA#d][Dd][Dg]/[Da#g]/[D#d#][D#][D#][D#][D#][FD#][GA#][fd#][gA#]")
- ("Reindeer" . "FG/FD/B/A/G/////GAGAG/c/B///////FG/FD/B/A/G/////GAGAG/d/c/////|C4~~~G3~~~C4~~~G3~~~C~~~E3~D#3~D3~~~~~~~G3~~~D3~~~G3~~~D3~~~G3~~D3G3~B3/C4")))
-
-(defun w/friend-compose-song (theme)
- "Compose a song about THEME to play on the bells."
- (w/ai
- theme
- (lambda (res)
- (let* ((sp (s-split ":" (s-trim res)))
- (name (s-trim (car sp)))
- (song (s-trim (cadr sp))))
- (when (and (stringp name) (stringp song))
- (w/friend-respond
- (format "You just composed a song about %s called %s! Say something about it!" theme name)
- (lambda ()
- (w/write-chat-event (format "The song is called %s: %s" name song))
- (w/add-song (s-concat "friend's " name) song)
- (muzak/play-tracks song))))))
- "Please compose a song about the provided theme. The format for the song is a sequence of characters with meanings as follows: / represents a rest, uppercase letters A through G indicate semitones, octaves are specified with a number following a semitone, ~ extends the duration of a note, square brackets like [] group notes together into a chord. The pipe character | separates tracks. Respond only with the song's name followed by a colon folowed by the song notes. Do not explain yourself. The song should ideally be 20 to 30 notes long."
- (-map #'car w/friend-composition-examples)
- (--map (format "%s: %s" (car it) (cdr it)) w/friend-composition-examples)))
-
-(defun w/friend-personality (msg k)
- "Given MSG, pass a string with more personality to K."
- (let ((call (s-concat w/friend-emotion " | " msg)))
- (w/ai
- call
- (lambda (new)
- (let ((sp (s-split "|" (s-trim new))))
- (if (= 2 (length sp))
- (progn
- (when (stringp (car sp))
- (setf w/friend-emotion (s-trim (car sp))))
- (when (stringp (cadr sp))
- (let ((resp (s-trim (cadr sp))))
- (push (cons call (s-trim new)) w/friend-message-cache)
- (funcall k resp))))
- (let ((resp (s-trim new)))
- (push (cons call (s-trim new)) w/friend-message-cache)
- (funcall k resp)))))
- (s-concat
- "You are the personality of a desktop buddy named \"friend\". \"friend\" is irreverant but kind, and only speaks in lowercase. You are kind of dumb in a cute way and silly like a virtual pet. You live in the corner of LCOLONQ's stream and provide commentary on events. Given an emotional state and a description of an event that happened to you, please respond with a new emotional state and a short message in response considering your emotional state. The message should only be one clause. You like people, video games, emojis, learning, and food."
- "The theme of LCOLONQ's stream today is " (s-trim (w/slurp "~/today.txt")) " "
- "The title of LCOLONQ's stream today is " w/twitch-current-stream-title " "
- w/friend-tastes
- )
- (cons "neutral | Mimeyu fed you an apple." (reverse (-take 5 (-map #'car w/friend-message-cache))))
- (cons "happy | yum apple so good" (reverse (-take 5 (-map #'cdr w/friend-message-cache))))
- )))
-
-(defun w/enemy-personality (msg k)
- "Given MSG, pass a string with more personality (enemy mode) to K."
- (w/ai
- (s-concat w/friend-emotion " | " msg)
- (lambda (new)
- (let ((sp (s-split "|" (s-trim new))))
- (when (= 2 (length sp))
- (when (stringp (car sp))
- (setf w/friend-emotion (s-trim (car sp))))
- (when (stringp (cadr sp))
- (funcall k (s-trim (cadr sp)))))))
- (s-concat
- "You are the personality of a desktop buddy named \"enemy\". \"enemy\" is irreverant and rude. You are very intelligent in a cute way and mean like a snake. You live in the corner of LCOLONQ's stream and provide commentary on events. Given an emotional state and a description of an event that happened to you, please respond with a new emotional state and a short message in response considering your emotional state. The message should only be one clause."
- w/friend-tastes
- )
- "neutral | notgeiser fed you bone hurting juice."
- "disdainful | I really dislike you strongly, notgeiser."
- ))
-
(defun w/friend-set-state (st &optional time)
"Set \"friend\"'s state to ST for TIME seconds."
(setf w/friend-state st)
@@ -256,24 +52,40 @@ AUTHOR was a contributing author btw."
(defun w/friend-say (msg)
"Have \"friend\" say MSG."
(w/daily-log (format "[FRIEND]: %s" msg))
+ (w/gizmo-ensure-shown (w/friend-get-buffer))
(w/friend-pronounce-phonemes (w/friend-replace-graphemes msg))
(w/friend-set-speech msg 10)
(w/friend-set-state 'chatting 10))
-(defun w/friend-feed (user food)
- "Call when USER fed FOOD to \"friend\"."
- (if (s-equals? "imgeiser" user)
- (w/enemy-personality
- (format "You dislike %s and they are your enemy. %s fed you %s" user user food)
- (lambda (msg)
- (w/friend-set-speech msg 6)
- (w/friend-set-state 'eating 6)))
- (w/friend-personality
- (format "%s fed you %s" user food)
- (lambda (msg)
- (w/friend-set-speech msg 6)
- (w/friend-set-state 'eating 6)))))
-
+;;;; Core
+(defun w/friend-personality (msg k &optional extra)
+ "Given MSG, pass a string with more personality to K.
+Append EXTRA to the personality."
+ (let ((call (s-concat w/friend-emotion " | " msg)))
+ (w/ai
+ call
+ (lambda (new)
+ (let ((sp (s-split "|" (s-trim new))))
+ (if (= 2 (length sp))
+ (progn
+ (when (stringp (car sp))
+ (setf w/friend-emotion (s-trim (car sp))))
+ (when (stringp (cadr sp))
+ (let ((resp (s-trim (cadr sp))))
+ (push (cons call (s-trim new)) w/friend-message-cache)
+ (funcall k resp))))
+ (let ((resp (s-trim new)))
+ (push (cons call (s-trim new)) w/friend-message-cache)
+ (funcall k resp)))))
+ (s-concat
+ "You are the personality of a desktop buddy named \"friend\". \"friend\" is irreverant but kind, and only speaks in lowercase. You are kind of dumb in a cute way and silly like a virtual pet. You live in the corner of LCOLONQ's stream and provide commentary on events. You never use punctuation. You are foolish. You never use metaphors or similes or idioms. You never describe something by comparing it to another thing. You never use the words \"like\" or \"as\". Given an emotional state and a description of an event that happened to you, please respond with a new emotional state and a short message in response considering your emotional state. The message should only be one clause, but you can include an occasional emoji if it is cute only. You like people, video games, emojis, learning, and food. "
+ "The theme of LCOLONQ's stream today is " (s-trim (w/slurp "~/today.txt")) " "
+ "The title of LCOLONQ's stream today is " w/twitch-current-stream-title " "
+ (or extra ""))
+ (cons "neutral | Mimeyu fed you an apple." (reverse (-take 5 (-map #'car w/friend-message-cache))))
+ (cons "happy | yum apple so good" (reverse (-take 5 (-map #'cdr w/friend-message-cache)))))))
+
+;;;; Interface
(defun w/friend-respond (ev &optional k)
"Call when an event EV happens to \"friend\".
If K is specified, call it after the response."
@@ -284,307 +96,109 @@ If K is specified, call it after the response."
(when k
(funcall k)))))
-(defun w/friend-chat (user msg)
- "Call when USER sends MSG to \"friend\"."
- (if (s-equals? user "imgeiser")
- (w/enemy-personality
- (format "You dislike %s and they are your enemy. %s says: %s" user user msg)
- (lambda (msg)
- (w/friend-set-speech msg 10)
- (w/friend-set-state 'chatting 10)))
- (w/friend-respond (format "%s says: %s" user msg))))
-
-(defun w/friend-gift (user gift)
- "Call when USER gave GIFT to \"friend\"."
- (if (s-equals? user "imgeiser")
- (w/enemy-personality
- (format "You dislike %s and they are your enemy. %s gave you %s as a Christmas present." user user gift)
- (lambda (msg)
- (w/friend-set-speech msg 6)))
- (w/friend-personality
- (format "%s gave you %s as a Christmas present." user gift)
- (lambda (msg)
- (w/friend-set-speech msg 6)))))
-
-(defun w/friend-tfig (user tfig)
- "Call when USER took TFIG from \"friend\"."
- (if (not (s-equals? "imgeiser" user))
- (w/enemy-personality
- (format "You dislike %s and they are your enemy. %s took away %s from you and stole your Christmas present." user user tfig)
- (lambda (msg)
- (w/friend-set-speech msg 6)))
- (w/friend-personality
- (format "%s took away %s from you and stole your Christmas present." user tfig)
- (lambda (msg)
- (w/friend-set-speech msg 6)))))
-
-(defun w/friend-react-wikipedia (user page)
- "Call when USER asks \"friend\" to react to PAGE on Wikipedia."
- (w/fetch-wikipedia
- page
- (lambda (sum)
- (w/friend-respond (format "%s asks you to react to the Wikipedia page for %s. The page summary is: %s" user page sum)))))
-
-(defun w/friend-callout-flycheck-error ()
- "Call to respond to a random Flycheck error in the current buffer."
- (when-let* ((errs (--filter (eq (flycheck-error-level it) 'error) flycheck-current-errors))
- (err (nth (random (length errs)) errs)))
- (w/friend-respond
- (s-concat
- "LCOLONQ made an error while programming: "
- (flycheck-error-message err)))))
-
-(defun w/friend-callout-holiday ()
- "Call to respond to the current holiday."
- (w/friend-respond "We're restoring a crumbling mansion to it's former glory. Say something about that please!"))
-
-(defun w/friend-callout-hexamedia ()
- "Call to respond to a random recent chatter's Hexamedia card collection."
- (let* ((users (-filter #'cdr (--map (cons (car it) (alist-get :hexamedia-cards (w/user-cache-get (car it)))) (-take 10 w/twitch-chat-history))))
- (user (and users (nth (random (length users)) users)))
- (cards (cdr user))
- (coll (and cards (nth (random (length cards)) cards))))
- (when coll
- (w/friend-respond
- (format
- "%s has collected %s out of 20 cards in the %s collection. Please mention the collection name and the person collecting."
- (car user)
- (cdr coll)
- (car coll))))))
-
-(defun w/friend-callout-copfish ()
- "Call to respond to a random recent chatter's Copfish ratio."
- (let* ((users (-filter #'cdr (--map (cons (car it) (alist-get :copfish-ratio (w/user-cache-get (car it)))) (-take 10 w/twitch-chat-history))))
- (user (and users (nth (random (length users)) users))))
- (when user
- (w/friend-respond
- (format
- "%s has collected %s out of %s fish in the Copfish fish catching collection. Please mention the collection name and the person collecting."
- (car user)
- (cadr user)
- (cddr user))))))
-
-(defun w/friend-callout-uwoomfie ()
- "Call to respond to a random recent chatter's Uwoomfie status."
- (let* ((users
- (-filter
- #'cdr
- (--map
- (cons (car it) (w/uwoomfie-get-status (car it)))
- (-take 10 w/twitch-chat-history))))
- (user (and users (nth (random (length users)) users))))
- (cl-case (cdr user)
- (cool (w/friend-respond (format "According to UWOSLAB, %s is a very cool person. Make sure to mention their username." (car user))))
- (honored (w/friend-respond (format "According to UWOSLAB, %s is an honorary viewer. Make sure to mention their username." (car user))))
- (t nil))))
-
-(defun w/friend-callout-shindaggers ()
- "Call to respond to a random recent chatter's Shindaggers knife collection."
- (let* ((users (-filter #'cdr (--map (cons (car it) (alist-get :shindaggers-knives (w/user-cache-get (car it)))) (-take 10 w/twitch-chat-history))))
- (user (and users (nth (random (length users)) users)))
- (knives (cdr user))
- (knife (and knives (nth (random (length knives)) knives))))
- (when knife
- (w/friend-respond
- (format
- "%s has collected the %s from shindig's Shindaggers knife collection. Please mention the collection name and the person collecting and the knife."
- (car user)
- knife)))))
-
-(defun w/friend-callout-aoc ()
- "Call to respond to a random recent chatter's Advent of Code completion."
- (let* ((users (-filter #'cdr (--map (cons (car it) (w/aoc-lookup-stars (car it))) (-take 10 w/twitch-chat-history))))
- (user (and users (nth (random (length users)) users))))
- (w/friend-respond
- (format
- "%s has been doing Advent of Code this year, and they've completed %d out of %d problems so far."
- (car user)
- (cdr user)
- (w/aoc-max-stars)))))
-
-(defun w/friend-callout-gcp ()
- "Call to respond to the current GCP dot."
- (w/gcp-dot
- (lambda (d)
- (w/friend-respond
- (format
- "The Global Consciousness Project indicator is currently as follows: %s"
- (w/gcp-describe d))))))
+;;;; Updating
+(defun w/friend-random-event ()
+ "Activate a random \"friend\" event."
+ (cl-case (random 10)
+ (9 (w/friend-set-state 'jumping))))
-(defun w/friend-callout-resolution ()
- "Call to respond to a random recent chatter's resolve."
- (when-let*
- ((users (-filter #'cdr (--map (cons (car it) (alist-get :resolution2025 (w/user-cache-get (car it)))) (-take 10 w/twitch-chat-history))))
- (user (and users (nth (random (length users)) users))))
- (if (s-match (rx (one-or-more digit) (zero-or-more space) "x" (zero-or-more space) (one-or-more digit)) (cdr user))
- (w/friend-respond
- (format
- "%s snarkily said that their New Year's resolution was a screen resolution. What do you think about this?" (car user)))
- (w/friend-respond
- (format
- "%s made a New Year's resolution to %s. Ask them how it's going!"
- (car user)
- (cdr user))))))
+(defun w/friend-update ()
+ "Update \"friend\"'s state per tick."
+ (setf w/friend-animation (% (+ w/friend-animation 1) 2))
+ (if (> w/friend-state-timer 0)
+ (cl-decf w/friend-state-timer)
+ (setf w/friend-state 'default))
+ (if (> w/friend-speech-timer 0)
+ (cl-decf w/friend-speech-timer))
+ (when (= (random 120) 0)
+ (w/friend-random-event))
+ (cl-case w/friend-state
+ (eating (setf w/friend-state 'eating0))
+ (eating0 (setf w/friend-state 'eating1))
+ (eating1 (setf w/friend-state 'eating2))
+ (eating2 (setf w/friend-state 'eating1))
+ (chatting (setf w/friend-state 'chatting0))
+ (chatting0 (setf w/friend-state 'chatting))))
-(defun w/get-friend-offset ()
+;;;; Rendering
+(defun w/friend-get-offset ()
"Return the number of newlines to print before \"friend\"."
(if (-contains? '(jumping) w/friend-state)
- w/friend-animation
+ w/friend-animation
1))
-(defun w/get-friend-face ()
+(defun w/friend-get-face ()
"Return the eyes and mouth for \"friend\" as a list of strings."
(cl-case w/friend-state
(jumping (list "^" "^" "ww"))
-
(eating (list "v" "v" "<>"))
(eating0 (list "v" "v" "<>"))
(eating1 (list "-" "-" "mw"))
(eating2 (list "-" "-" "wm"))
-
(chatting (list ">" ">" "oo"))
(chatting0 (list ">" ">" "~~"))
-
(t (list "-" "-" "ww"))))
-(defun w/get-friend-bubble ()
+(defun w/friend-get-bubble ()
"Return the text bubble for \"friend\"."
(if (> w/friend-speech-timer 0)
- w/friend-speech
+ w/friend-speech
nil))
-(defun w/friend-random-event ()
- "Activate a random \"friend\" event."
- (cl-case (random 10)
- (0 (w/friend-callout-flycheck-error))
- (1 (w/friend-callout-gcp))
- (2 (w/friend-callout-hexamedia))
- (3 (w/friend-callout-uwoomfie))
- (4 (w/friend-callout-shindaggers))
- (5 (w/friend-callout-copfish))
- (6 (w/friend-callout-resolution))
- (9 (w/friend-callout-holiday))
- (t (w/friend-set-state 'jumping))))
-
-(defun w/update-friend ()
- "Update \"friend\"'s state per tick."
- (setf w/friend-animation (% (+ w/friend-animation 1) 2))
- (if (> w/friend-state-timer 0)
- (cl-decf w/friend-state-timer)
- (setf w/friend-state 'default))
- (if (> w/friend-speech-timer 0)
- (cl-decf w/friend-speech-timer))
- (when (= (random 120) 0)
- (w/friend-random-event))
- (cl-case w/friend-state
- (eating (setf w/friend-state 'eating0))
- (eating0 (setf w/friend-state 'eating1))
- (eating1 (setf w/friend-state 'eating2))
- (eating2 (setf w/friend-state 'eating1))
-
- (chatting (setf w/friend-state 'chatting0))
- (chatting0 (setf w/friend-state 'chatting))
- ))
-
-(defun w/render-friend ()
+(defun w/friend-render ()
"Render the \"friend\" buffer."
(save-excursion
- (with-current-buffer (w/get-friend-buffer)
+ (with-current-buffer (w/friend-get-buffer)
(setq-local cursor-type nil)
(let*
- ((inhibit-read-only t)
- (face (w/get-friend-face))
- (bubble (w/get-friend-bubble)))
+ ((inhibit-read-only t)
+ (face (w/friend-get-face))
+ (bubble (w/friend-get-bubble)))
(erase-buffer)
(w/write
- (format-spec
- "%a\
+ (format-spec
+ "%a\
/----\\
/ %l %r \\
\\ %m /
+----+\
"
-;; "%a\
-;; ----
-;; / \\
-;; ----------
-;; / %l %r \\
-;; \\ %m /
-;; +----+\
-;; "
-;; "%a\
-;; oooooo
-;; oooooooo
-;; oo/----\\oo
-;; o/ %l %r \\o
-;; \\ %m /
-;; +----+\
-;; "
-;; "%a\
-;; /\\
-;; /\\/\\
-;; / :3 \\
-;; /santa!\\
-;; ~~~~~~~~~~
-;; ~~~~~~~~~~
-;; / %l %r \\
-;; \\ %m /
-;; +----+\
-;; "
-;; "%a\
-;; /\\
-;; / *\\
-;; / * \\
-;; / * * \\
-;; ----------
-;; / %l %r \\
-;; \\ %m /
-;; +----+\
-;; "
-;; "%a\
-;; ---
-;; / \\
-;; / [=] \\
-;; -----------
-;; / %l %r \\
-;; \\ %m /
-;; +----+\
-;; "
- `((?a . ,(s-repeat (w/get-friend-offset) " \n"))
- (?l . ,(car face))
- (?r . ,(cadr face))
- (?m . ,(caddr face)))))
+ `((?a . ,(s-repeat (w/friend-get-offset) " \n"))
+ (?l . ,(car face))
+ (?r . ,(cadr face))
+ (?m . ,(caddr face)))))
(goto-char (point-min))
(end-of-line)
(w/write (or bubble ""))
(forward-line)
(end-of-line)
(w/write (if bubble "/" ""))
- ))))
+ )))
+ (w/gizmo-upload (w/friend-get-buffer)))
(defvar w/friend-timer nil)
-(defun w/run-friend-timer ()
+(defun w/friend-run-timer ()
"Run the \"friend\" timer."
(when w/friend-timer
(cancel-timer w/friend-timer))
(condition-case e
- (progn
- (w/update-friend)
- (w/render-friend))
+ (progn
+ (w/friend-update)
+ (w/friend-render))
((debug error)
- (message "friend error: %s" e)
- (cancel-timer w/friend-timer)
- (setq w/friend-timer nil)))
+ (message "friend error: %s" e)
+ (cancel-timer w/friend-timer)
+ (setq w/friend-timer nil)))
(setq
- w/friend-timer
- (run-with-timer 1 nil #'w/run-friend-timer)))
+ w/friend-timer
+ (run-with-timer 1 nil #'w/friend-run-timer)))
-(defun w/start-friend ()
+(defun w/friend-start ()
"Launch \"friend\"."
(interactive)
- (w/run-friend-timer))
+ (w/friend-run-timer))
-(defun w/stop-friend ()
+(defun w/friend-stop ()
"Stop \"friend\"."
(interactive)
(cancel-timer w/friend-timer)
diff --git a/src/gizmo/wasp-hex.el b/src/gizmo/wasp-hex.el
index 81aa4f12..1417f0c9 100644
--- a/src/gizmo/wasp-hex.el
+++ b/src/gizmo/wasp-hex.el
@@ -10,34 +10,37 @@
(require 'ht)
(require 's)
(require 'rx)
+(require 'ttf)
(defconst
w/hex-types
- '(("DIGITAL" . hexadigital)
- ("ESREVER" . reverse)
- ("VANYAR" . quenya)
- ("LEONDIS" . emoji)
- ("KOBY" . clone)
- ("BIGFOOT" . hair)
- ("ALTMAN" . unbiblical)
- ("DECIBEL" . allcaps)
- ("PIQUANT" . mild)
- ("PORCINE" . piglatin)
- ("PYTHON" . oldeenglishe)
- ("MANIAC" . pokemon)
- ("ELBERETH" . counterspell)
- ("ESUNA" . decurse)
- ))
+ '( ("DIGITAL" . hexadigital)
+ ("ESREVER" . reverse)
+ ("VANYAR" . quenya)
+ ("LEONDIS" . emoji)
+ ("KOBY" . clone)
+ ("BIGFOOT" . hair)
+ ("ALTMAN" . unbiblical)
+ ("DECIBEL" . allcaps)
+ ("PIQUANT" . mild)
+ ("PORCINE" . piglatin)
+ ("PYTHON" . oldeenglishe)
+ ("MANIAC" . pokemon)
+ ("ELBERETH" . counterspell)
+ ("ESUNA" . decurse)
+ ("DECIMAL" . decimal)
+ ("DROPBEAR" . upsidedown)
+ ))
(defconst w/hex-users (ht-create 'equal))
(defconst w/hex-pokemon (w/read-sexp (w/slurp (w/asset "palcries/pokemon.eld"))))
(w/defstruct
- w/hex
- type
- caster
- (timer 0)
- data)
+ w/hex
+ type
+ caster
+ (timer 0)
+ data)
(defun w/hex-get (user)
"Return the active hexes for USER."
@@ -46,15 +49,15 @@
(defun w/hex-add (user hex)
"Add HEX to the active hexes for USER."
(let* ((key (s-downcase user))
- (cur (ht-get w/hex-users key)))
+ (cur (ht-get w/hex-users key)))
(unless (> (length cur) 10)
(cl-case (w/hex-type hex)
(decurse
- (ht-set! w/hex-users key nil))
+ (ht-set! w/hex-users key nil))
(otherwise
- (if-let ((defender (--find (eq 'counterspell (w/hex-type it)) cur)))
- (w/write-chat-event (format "%s counterspelled %s's hex on %s!" (w/hex-caster defender) (w/hex-caster hex) user))
- (ht-set! w/hex-users key (cons hex cur))))))))
+ (if-let* ((defender (--find (eq 'counterspell (w/hex-type it)) cur)))
+ (w/write-chat-event (format "%s counterspelled %s's hex on %s!" (w/hex-caster defender) (w/hex-caster hex) user))
+ (ht-set! w/hex-users key (cons hex cur))))))))
(defun w/hex-clear (user)
"Decurse USER."
@@ -63,182 +66,192 @@
(defun w/hex (user caster type)
"Record that CASTER cast a hex of TYPE on USER."
(w/hex-add
- user
- (w/make-hex
- :type type
- :caster caster
- :timer 10
- :data
- (cl-case type
- (pokemon (random (length w/hex-pokemon)))
- (t nil)))))
+ user
+ (w/make-hex
+ :type type
+ :caster caster
+ :timer 10
+ :data
+ (cl-case type
+ (pokemon (random (length w/hex-pokemon)))
+ (t nil)))))
(defun w/hex-pokemon-syllable (pkmn)
"Extract a syllable from PKMN."
(if (= (random 4) 0)
- pkmn
+ pkmn
(let ((vowels '("a" "e" "i" "o" "u" "y")))
(or
- (->>
- (-mapcat
- (lambda (idx)
- (--map
- (substring pkmn idx (+ idx it))
- (-iota (- (length pkmn) idx))))
- (-iota (length pkmn)))
- (--filter
- (and
- (s-present? it)
- (>= (length it) 2)
- (not (-contains? vowels (substring it 0 1)))
- (-contains? vowels (substring it 1 2))
- (-any (lambda (v) (s-contains? v it)) vowels)))
- (w/pick-random))
- pkmn))))
+ (->>
+ (-mapcat
+ (lambda (idx)
+ (--map
+ (substring pkmn idx (+ idx it))
+ (-iota (- (length pkmn) idx))))
+ (-iota (length pkmn)))
+ (--filter
+ (and
+ (s-present? it)
+ (>= (length it) 2)
+ (not (-contains? vowels (substring it 0 1)))
+ (-contains? vowels (substring it 1 2))
+ (-any (lambda (v) (s-contains? v it)) vowels)))
+ (w/pick-random))
+ pkmn))))
(defun w/hex-transform-pokemon (msg idx)
"Transform MSG as if it was spoken by Pokemon IDX."
(let* ((pkmn (nth (- idx 1) w/hex-pokemon)))
(s-capitalize
- (s-replace-regexp
- (rx (one-or-more alpha))
- (lambda (_) (w/hex-pokemon-syllable pkmn))
- msg))))
+ (s-replace-regexp
+ (rx (one-or-more alpha))
+ (lambda (_) (w/hex-pokemon-syllable pkmn))
+ msg))))
(defun w/hex-transform-helper (msg hexes k)
"Transform MSG according to HEXES and pass the result to K."
(cond
- ((car hexes)
- (cl-case (w/hex-type (car hexes))
- (hexadigital
- (setf (w/chat-message-user msg) "Hexadigital")
- (setf (w/chat-message-user-color msg) "#AED673")
- (setf
- (w/chat-message-text msg)
- (w/twitch-replace-emotes-randomly
- (w/chat-message-text msg)
- (-map
- #'w/twitch-emote-path
- '("emotesv2_abbaa8ac25c14148ad8c1ef8046a3659"
- "emotesv2_20b76cf83c5b431085c0f8361e3dbc92"
- "emotesv2_3cf549deb99e4d34846c0cae6648657b"
- "emotesv2_1e2390f5092f453184f8615fb899c4b5"
- "emotesv2_c088d4ad26804a51a44170b711fec283"
- "emotesv2_d9130333dfaf46a0a581bc1c814a1ce5"
- "emotesv2_bcfda5ce372f453e98cb6aa42b7d7cc3"
- "emotesv2_c333ce14069e4120a5857e121aeea046"
- "emotesv2_4e960082535a48188e139b65393aa143"
- "emotesv2_079d9054ba4f4e9881fd38a2a7e7d423"
- "emotesv2_f1e892a1d0b145f98964cfc7f84c6377"
- "emotesv2_65efa7f9a7d246c29a618bc3447b703b"
- "emotesv2_107c23f9db49457184c0b8ebebb58113"
- "emotesv2_3b74375a1ecf41b18bf04dcc6f133eb6"
- "emotesv2_38a6711524a245a3976732d08f2ca1d9"
- "emotesv2_84de70e8bc614c88a53711978c0fc64d"
- "emotesv2_18c29a371f2b4d23bcd77bba6f1d8ab3"
- "emotesv2_9d1b0530ad20434888b2e380cc7acb69"
- "emotesv2_f1dbb27287a04c5ab815e2fc703be6e4"
- "emotesv2_7e15943fdefe4a4c8d0da79202d739aa"
- "emotesv2_27453bd537c4478488abf4e0c05b3bd0"
- "emotesv2_8d844e7e064a41ed999a598a4aafadfd"
- "emotesv2_1c0fb90252b243a0a359c80c58b4cff4"))))
- (w/hex-transform-helper msg (cdr hexes) k))
- (reverse
- (setf (w/chat-message-text msg) (s-reverse (w/chat-message-text msg)))
- (w/hex-transform-helper msg (cdr hexes) k))
- (oldeenglishe
- (w/ai
- (w/chat-message-text msg)
- (lambda (new)
- (setf (w/chat-message-text msg) new)
+ ((car hexes)
+ (cl-case (w/hex-type (car hexes))
+ (hexadigital
+ (setf (w/chat-message-user msg) "Hexadigital")
+ (setf (w/chat-message-user-color msg) "#AED673")
+ (setf
+ (w/chat-message-text msg)
+ (w/twitch-replace-emotes-randomly
+ (w/chat-message-text msg)
+ (-map
+ #'w/twitch-emote-path
+ '("emotesv2_abbaa8ac25c14148ad8c1ef8046a3659"
+ "emotesv2_20b76cf83c5b431085c0f8361e3dbc92"
+ "emotesv2_3cf549deb99e4d34846c0cae6648657b"
+ "emotesv2_1e2390f5092f453184f8615fb899c4b5"
+ "emotesv2_c088d4ad26804a51a44170b711fec283"
+ "emotesv2_d9130333dfaf46a0a581bc1c814a1ce5"
+ "emotesv2_bcfda5ce372f453e98cb6aa42b7d7cc3"
+ "emotesv2_c333ce14069e4120a5857e121aeea046"
+ "emotesv2_4e960082535a48188e139b65393aa143"
+ "emotesv2_079d9054ba4f4e9881fd38a2a7e7d423"
+ "emotesv2_f1e892a1d0b145f98964cfc7f84c6377"
+ "emotesv2_65efa7f9a7d246c29a618bc3447b703b"
+ "emotesv2_107c23f9db49457184c0b8ebebb58113"
+ "emotesv2_3b74375a1ecf41b18bf04dcc6f133eb6"
+ "emotesv2_38a6711524a245a3976732d08f2ca1d9"
+ "emotesv2_84de70e8bc614c88a53711978c0fc64d"
+ "emotesv2_18c29a371f2b4d23bcd77bba6f1d8ab3"
+ "emotesv2_9d1b0530ad20434888b2e380cc7acb69"
+ "emotesv2_f1dbb27287a04c5ab815e2fc703be6e4"
+ "emotesv2_7e15943fdefe4a4c8d0da79202d739aa"
+ "emotesv2_27453bd537c4478488abf4e0c05b3bd0"
+ "emotesv2_8d844e7e064a41ed999a598a4aafadfd"
+ "emotesv2_1c0fb90252b243a0a359c80c58b4cff4"))))
(w/hex-transform-helper msg (cdr hexes) k))
- "Please translate the chat message given to ye olde Englishe. Only supply the translation without any additional context, as if it were to be substituted for the original message. Do not complain or give an explanation why you cannot do this, just do your best please."))
- (quenya
- (w/ai
- (w/chat-message-text msg)
- (lambda (new)
- (setf (w/chat-message-text msg) new)
+ (reverse
+ (setf (w/chat-message-text msg) (s-reverse (w/chat-message-text msg)))
(w/hex-transform-helper msg (cdr hexes) k))
- "Please translate the chat message given to Quenya, one of Tolkien's elvish languages. Only supply the translation without any additional context, as if it were to be substituted for the original message. Do not complain or give an explanation why you cannot do this, just do your best please. If you can't do it just make something up as long as it looks like Quenya."))
- (emoji
- (w/ai
- (w/chat-message-text msg)
- (lambda (new)
- (setf (w/chat-message-text msg) new)
+ (oldeenglishe
+ (w/ai
+ (w/chat-message-text msg)
+ (lambda (new)
+ (setf (w/chat-message-text msg) new)
+ (w/hex-transform-helper msg (cdr hexes) k))
+ "Please translate the chat message given to ye olde Englishe. Only supply the translation without any additional context, as if it were to be substituted for the original message. Do not complain or give an explanation why you cannot do this, just do your best please."))
+ (quenya
+ (w/ai
+ (w/chat-message-text msg)
+ (lambda (new)
+ (setf (w/chat-message-text msg) new)
+ (w/hex-transform-helper msg (cdr hexes) k))
+ "Please translate the chat message given to Quenya, one of Tolkien's elvish languages. Only supply the translation without any additional context, as if it were to be substituted for the original message. Do not complain or give an explanation why you cannot do this, just do your best please. If you can't do it just make something up as long as it looks like Quenya."))
+ (emoji
+ (w/ai
+ (w/chat-message-text msg)
+ (lambda (new)
+ (setf (w/chat-message-text msg) new)
+ (w/hex-transform-helper msg (cdr hexes) k))
+ "Please translate the chat message given to exclusively emoji. Do not provide any other text, only a string of emoji that somehow correspond to the message."))
+ (clone
+ (let* ((caster (w/hex-caster (car hexes)))
+ (hist (-take 10 (--filter (s-equals? (car it) caster) w/twitch-chat-history))))
+ (w/ai
+ (w/chat-message-text msg)
+ (lambda (new)
+ (setf (w/chat-message-text msg) new)
+ (w/hex-transform-helper msg (cdr hexes) k))
+ (format
+ "Please translate the given chat message from %s as if it were written by the user %s. Do not respond to the message, only create another message with similar meaning in different style. You should try to match the example messages from %s in capitalization, formatting, and tone. %s has sent messages like:\n%s"
+ (w/chat-message-user msg)
+ caster
+ caster
+ caster
+ (s-join "\n" (-map #'cdr hist))))))
+ (hair
+ (w/model-region-word "hair" (w/chat-message-text msg)))
+ (unbiblical
+ (setf (w/chat-message-biblicality msg) -666)
(w/hex-transform-helper msg (cdr hexes) k))
- "Please translate the chat message given to exclusively emoji. Do not provide any other text, only a string of emoji that somehow correspond to the message."))
- (clone
- (let* ((caster (w/hex-caster (car hexes)))
- (hist (-take 10 (--filter (s-equals? (car it) caster) w/twitch-chat-history))))
- (w/ai
- (w/chat-message-text msg)
- (lambda (new)
- (setf (w/chat-message-text msg) new)
- (w/hex-transform-helper msg (cdr hexes) k))
- (format
- "Please translate the given chat message from %s as if it were written by the user %s. Do not respond to the message, only create another message with similar meaning in different style. You should try to match the example messages from %s in capitalization, formatting, and tone. %s has sent messages like:\n%s"
- (w/chat-message-user msg)
- caster
- caster
- caster
- (s-join "\n" (-map #'cdr hist))))))
- (hair
- (w/model-region-word "hair" (w/chat-message-text msg)))
- (unbiblical
- (setf (w/chat-message-biblicality msg) -666)
- (w/hex-transform-helper msg (cdr hexes) k))
- (allcaps
- (setf (w/chat-message-text msg) (s-upcase (w/chat-message-text msg)))
- (w/hex-transform-helper msg (cdr hexes) k))
- (mild
- (w/ai
- (w/chat-message-text msg)
- (lambda (new)
- (setf (w/chat-message-text msg) new)
+ (allcaps
+ (setf (w/chat-message-text msg) (s-upcase (w/chat-message-text msg)))
(w/hex-transform-helper msg (cdr hexes) k))
- "Please censor all profanity in the given message and respond with the censored version. Censor by rewriting in a very polite way like Ned Flanders. Do not provide any other text, only a censored version of the message. If there is no profanity respond with the given message verbatim."))
- (pokemon
- (w/audio-play (w/asset (format "palcries/%d.mp3" (w/hex-data (car hexes)))) nil 50)
- (setf
- (w/chat-message-user msg)
- (s-titleize (nth (- (w/hex-data (car hexes)) 1) w/hex-pokemon)))
- (setf
- (w/chat-message-text msg)
- (w/hex-transform-pokemon (w/chat-message-text msg) (w/hex-data (car hexes))))
- (w/hex-transform-helper msg (cdr hexes) k))
- (piglatin
- (setf
- (w/chat-message-text msg)
- (s-join
- " "
- (--map
- (let* ((slice (s-slice-at (rx (any "a" "e" "i" "o" "u")) it))
- (consonant (car slice))
- (rest (s-join "" (cdr slice))))
- (s-concat rest consonant "ay"))
- (s-split-words (w/chat-message-text msg)))))
- (w/hex-transform-helper msg (cdr hexes) k))
- (t (w/hex-transform-helper msg (cdr hexes) k))))
- (t (funcall k msg))))
+ (mild
+ (w/ai
+ (w/chat-message-text msg)
+ (lambda (new)
+ (setf (w/chat-message-text msg) new)
+ (w/hex-transform-helper msg (cdr hexes) k))
+ "Please censor all profanity in the given message and respond with the censored version. Censor by rewriting in a very polite way like Ned Flanders. Do not provide any other text, only a censored version of the message. If there is no profanity respond with the given message verbatim."))
+ (pokemon
+ (w/audio-play (w/asset (format "palcries/%d.mp3" (w/hex-data (car hexes)))) nil 50)
+ (setf
+ (w/chat-message-user msg)
+ (s-titleize (nth (- (w/hex-data (car hexes)) 1) w/hex-pokemon)))
+ (setf
+ (w/chat-message-text msg)
+ (w/hex-transform-pokemon (w/chat-message-text msg) (w/hex-data (car hexes))))
+ (w/hex-transform-helper msg (cdr hexes) k))
+ (piglatin
+ (setf
+ (w/chat-message-text msg)
+ (s-join
+ " "
+ (--map
+ (let* ((slice (s-slice-at (rx (any "a" "e" "i" "o" "u")) it))
+ (consonant (car slice))
+ (rest (s-join "" (cdr slice))))
+ (s-concat rest consonant "ay"))
+ (s-split-words (w/chat-message-text msg)))))
+ (w/hex-transform-helper msg (cdr hexes) k))
+ (decimal
+ (setf
+ (w/chat-message-text msg)
+ (s-join " " (--map (format "%d" it) (w/chat-message-text msg))))
+ (w/hex-transform-helper msg (cdr hexes) k))
+ (upsidedown
+ (setf
+ (w/chat-message-text msg)
+ (ttf/flip (w/chat-message-text msg)))
+ (w/hex-transform-helper msg (cdr hexes) k))
+ (t (w/hex-transform-helper msg (cdr hexes) k))))
+ (t (funcall k msg))))
(defun w/hex-transform (user msg)
"Given MSG, write to chat based on USER's hexes."
(w/hex-transform-helper
- msg (w/hex-get user)
- (lambda (msg)
- (when msg
- (w/write-chat-message msg)))))
+ msg (w/hex-get user)
+ (lambda (msg)
+ (when msg
+ (w/write-chat-message msg)))))
(defun w/hex-tick (user)
"Decrement timers for all of USER's hexes."
- (when-let ((hexes (w/hex-get user)))
+ (when-let* ((hexes (w/hex-get user)))
(ht-set
- w/hex-users
- (s-downcase user)
- (-non-nil
- (--map
- (when (> (cl-decf (w/hex-timer it)) 0)
- it)
- hexes)))))
+ w/hex-users
+ (s-downcase user)
+ (-non-nil
+ (--map
+ (when (> (cl-decf (w/hex-timer it)) 0)
+ it)
+ hexes)))))
(provide 'wasp-hex)
;;; wasp-hex.el ends here
diff --git a/src/gizmo/wasp-newspaper.el b/src/gizmo/wasp-newspaper.el
index 4bdb9caf..74d2b97c 100644
--- a/src/gizmo/wasp-newspaper.el
+++ b/src/gizmo/wasp-newspaper.el
@@ -197,8 +197,7 @@ Pass the path of the generated PDF to K."
:sentinel
(lambda (_ _)
(w/db-set "newspaper:edition" (number-to-string (1+ edition)))
- (browse-url (format "https://pub.colonq.computer/~llll/news/%03d.pdf" edition))
- ))))))))
+ (browse-url (format "https://pub.colonq.computer/~llll/news/%03d.pdf" edition))))))))))
(provide 'wasp-newspaper)
;;; wasp-newspaper.el ends here
diff --git a/src/gizmo/wasp-wikipedia.el b/src/gizmo/wasp-wikipedia.el
index af69de07..74a6adf0 100644
--- a/src/gizmo/wasp-wikipedia.el
+++ b/src/gizmo/wasp-wikipedia.el
@@ -29,18 +29,18 @@ Pass the resulting article summary to K."
:parser #'json-parse-buffer
:success
(cl-function
- (lambda (&key data &allow-other-keys)
+ (lambda (&key data &allow-other-keys)
- (setq w/wikipedia-last-response data)
- (if-let (((ht-p w/wikipedia-last-response))
- (query (ht-get w/wikipedia-last-response "query"))
- (prepages (ht-get query "pages"))
- (pages (car (ht-values prepages)))
- (ext (ht-get pages "extract"))
- (dom (with-temp-buffer (insert ext) (libxml-parse-html-region (point-min) (point-max))))
- )
- (funcall k (s-trim (dom-texts dom)))
- (w/write-chat-event (format "Could not find Wikipedia page: %s" pagename))))))
+ (setq w/wikipedia-last-response data)
+ (if-let* ( ((ht-p w/wikipedia-last-response))
+ (query (ht-get w/wikipedia-last-response "query"))
+ (prepages (ht-get query "pages"))
+ (pages (car (ht-values prepages)))
+ (ext (ht-get pages "extract"))
+ (dom (with-temp-buffer (insert ext) (libxml-parse-html-region (point-min) (point-max))))
+ )
+ (funcall k (s-trim (dom-texts dom)))
+ (w/write-chat-event (format "Could not find Wikipedia page: %s" pagename))))))
nil))
(defcustom w/wiki-buffer "*wasp-wiki*"
@@ -62,12 +62,12 @@ Pass the resulting article summary to K."
(defun w/wikipedia-summary (page)
"Display a summary of PAGE from Wikipedia."
(w/fetch-wikipedia
- page
- (lambda (sum)
- (with-current-buffer (w/get-wiki-buffer)
- (let ((inhibit-read-only t))
- (erase-buffer)
- (w/write-line sum)))))
+ page
+ (lambda (sum)
+ (with-current-buffer (w/get-wiki-buffer)
+ (let ((inhibit-read-only t))
+ (erase-buffer)
+ (w/write-line sum)))))
)
(provide 'wasp-wikipedia)
diff --git a/src/wasp-ai.el b/src/wasp-ai.el
index 1201ca5b..e279103e 100644
--- a/src/wasp-ai.el
+++ b/src/wasp-ai.el
@@ -169,16 +169,15 @@ Double-check the output to make sure it sounds normal."
(defun w/ai-transcribe (path k)
"Transcribe the audio file at PATH and pass the resulting string to K."
- )
- ;; (let ((request-curl-options '("-F" "model=whisper-1" "-F" "language=en")))
- ;; (w/ai-openai-post-form
- ;; "/v1/audio/transcriptions"
- ;; `(("file" . ,(f-canonical path)))
- ;; (lambda (res)
- ;; (funcall
- ;; k
- ;; (-some-> res
- ;; (ht-get "text")))))))
+ (let ((request-curl-options '("-F" "model=whisper-1" "-F" "language=en")))
+ (w/ai-openai-post-form
+ "/v1/audio/transcriptions"
+ `(("file" . ,(f-canonical path)))
+ (lambda (res)
+ (funcall
+ k
+ (-some-> res
+ (ht-get "text")))))))
(provide 'wasp-ai)
;;; wasp-ai.el ends here
diff --git a/src/wasp-audio.el b/src/wasp-audio.el
index 30e2bdfe..0d509f9b 100644
--- a/src/wasp-audio.el
+++ b/src/wasp-audio.el
@@ -4,6 +4,8 @@
(require 'wasp-utils)
(require 'wasp-ai)
+(require 'wasp-db)
+(require 'wasp-overlay)
(defcustom w/audio-play-process "wasp-audio-play"
"Name of process for playing audio with mpv."
@@ -157,16 +159,16 @@ USER it's your birthday today."
(defun w/audio-muzak (user song)
"Play SONG by USER using muzak-rs courtesy The0x539."
(setq w/audio-muzak-now-playing (cons user song))
- (w/pub '(avatar overlay muzak) (list (w/encode-string user)))
+ (w/overlay-muzak user song)
(let ((proc
(make-process
:name "wasp-muzak"
:connection-type '(pipe . pty)
:buffer " *wasp-muzak-log*"
:command (list w/audio-muzak-path "play")
- :sentinel
+ :sentinel
(lambda (_ _)
- (w/pub '(avatar overlay muzak clear) (list))
+ (w/overlay-muzak-clear)
(setq w/audio-muzak-now-playing nil)))))
(process-send-string proc song)
(process-send-eof proc)))
@@ -191,5 +193,24 @@ USER it's your birthday today."
(run-with-timer 1 nil #'w/run-audio-muzak-timer)))
(w/run-audio-muzak-timer)
+(defun w/add-song (title notes-string)
+ "Add a song to wasp db.
+TITLE specifies the name of the song.
+NOTES-STRING is a string of notes and rests."
+ (let ((hash (md5 (s-downcase title))))
+ (w/db-hset "songnames" hash title)
+ (w/db-hset "songnotes" hash notes-string)))
+
+(defun w/get-song (song-name k)
+ "Look up notes of SONG-NAME from the database.
+Pass the resulting notes to K."
+ (let ((hash (md5 (s-downcase song-name))))
+ (w/db-hget
+ "songnotes" hash
+ (lambda (notes)
+ (if (and notes (stringp notes) (s-present? notes))
+ (funcall k notes)
+ (funcall k nil))))))
+
(provide 'wasp-audio)
;;; wasp-audio.el ends here
diff --git a/src/wasp-chat.el b/src/wasp-chat.el
index 10931b8d..e8feed89 100644
--- a/src/wasp-chat.el
+++ b/src/wasp-chat.el
@@ -7,6 +7,7 @@
(require 'evil)
(require 'wasp-utils)
(require 'wasp-user)
+(require 'wasp-overlay)
(defcustom w/chat-buffer "*wasp-chat*"
"Name of buffer used to store the chat log."
@@ -288,16 +289,13 @@ Optionally, return the buffer NM in chat mode."
(insert (s-replace-all w/chat-substitutions (w/. text msg)))
(when (w/. biblicality msg)
(let* ((wwidth (- (window-total-width (get-buffer-window (current-buffer))) 3))
- (bible-button-text (format "[biblicality %.2f]" (w/. biblicality msg)))
+ ;; (bible-button-text (format "[biblicality %.2f]" (w/. biblicality msg)))
+ (bible-button-text (format "[medicality %.2f]" (w/. biblicality msg)))
;; (bible-button-text (format "[pollicality %.2f]" (w/. biblicality msg)))
(msgwidth (line-beginning-position))
(lines (+ 1 (/ msgwidth wwidth))))
- (w/pub '(avatar overlay chat)
- (list
- (w/encode-string (w/. text msg))
- (format "%s" (w/unix-time))
- (format "%s" (or (w/. biblicality msg) 0.0))))
+ (w/overlay-chat msg)
(insert
(propertize
diff --git a/src/wasp-db.el b/src/wasp-db.el
index 506002a1..8900cdc1 100644
--- a/src/wasp-db.el
+++ b/src/wasp-db.el
@@ -40,7 +40,7 @@
(defun w/db-parse-value ()
"Parse a single RESP value from the current buffer."
;; (w/write-log (format "parsing: %S" (buffer-string)))
- (when-let ((c (char-after)))
+ (when-let* ((c (char-after)))
(delete-char 1)
(cl-case c
(?+ (w/db-parse-rest))
@@ -56,7 +56,7 @@
(?*
(let ((len (string-to-number (w/db-parse-rest))))
(--map (w/db-parse-value) (-iota len))))
- (otherwise (error (format "Unknown Redis sigil: %s" c))))))
+ (otherwise (error (format "Unknown Redis sigil: %s (contents: %S)" c (buffer-string)))))))
(defun w/db-parse-response ()
"Try to parse a single RESP value from the current process buffer.
@@ -144,9 +144,15 @@ If not, return nil."
"Get KEYS from Redis and pass the corresponding values to K."
(w/db-cmd `("MGET" ,@keys) k))
+(defun w/db-hset-then (key hkey val k &rest vals)
+ "Set HKEY in hash KEY to VAL in Redis.
+Afterward call K."
+ (w/db-cmd `("HSET" ,key ,hkey ,val ,@vals) k))
+
(defun w/db-hset (key hkey val &rest vals)
"Set HKEY in hash KEY to VAL in Redis."
(w/db-cmd `("HSET" ,key ,hkey ,val ,@vals) (lambda (_) nil)))
+ ;; (w/db-hset-then key hkey val (lambda (_) nil) vals))
(defun w/db-hget (key hkey k)
"Get HKEY in hash KEY from Redis and pass the corresponding value to K."
diff --git a/src/wasp-event-handlers.el b/src/wasp-event-handlers.el
index ad8c8299..0e5b8d46 100644
--- a/src/wasp-event-handlers.el
+++ b/src/wasp-event-handlers.el
@@ -10,113 +10,117 @@
(require 'wasp-overlay)
(setf
- w/bus-event-handlers
- (list
- (cons
- '(monitor nethack test)
- (lambda (data)
- (w/write-chat-event (format "Nethack says hi: %s" data))))
- (cons
- '(monitor nethack monster)
- (lambda (data)
- (when-let ((sp (s-split " " (car data))))
- (setf planet/last-monster (cons (s-join " " (cdr sp)) (string-to-number (car sp))))
- (planet/render-monster-summary))))
- (cons
- '(overlay barrage started)
- (lambda (_)
- (w/write-chat-event "It begins...")
- (setf w/overlay-barrage-active t)
- (w/overlay-update-cursor)))
- (cons
- '(overlay barrage ended)
- (lambda (msg)
- (cond
- ((s-equals? (car msg) "won") (w/write-chat-event "Fufufu... I win..."))
- (t (w/write-chat-event "that it's over")))
- (setf w/overlay-barrage-active nil)))
- (cons '(monitor twitch chat incoming) #'w/twitch-handle-incoming-chat)
- (cons '(monitor twitch redeem incoming) #'w/twitch-handle-redeem)
- (cons
- '(frontend redeem incoming)
- (lambda (msg)
- (w/twitch-handle-redeem-api msg)
- ))
- (cons
- '(monitor twitch raid)
- (lambda (msg)
- (let ((user (car msg)))
- (soundboard//play-clip "rampage.mp3")
- (w/write-chat-event (format "%s just raided!" user))
- (w/friend-respond (format "%s just came to visit" user))
- (run-with-timer
- 15 nil
- (lambda ()
- (w/twitch-get-user-recent-clips
- user
- (lambda (clips)
- (w/model-region-word "hair" (s-concat user "_"))
- (w/model-region-word "eyes" "WELCOME")
- (if clips
- (w/model-region-video "hair" (car clips))
- (w/model-region-user-avatar "hair" user)))))))))
- (cons
- '(monitor twitch follow)
- (lambda (msg)
- (let ((user (car msg)))
- (soundboard//play-clip "firstblood.mp3")
- (w/model-region-word "skin" (format "welcome_%s_" user))
- (w/friend-respond (format "%s just followed the stream" user))
- (w/write-chat-event (format "New follower: %s" user)))))
- (cons
- '(monitor twitch subscribe)
- (lambda (msg)
- (let ((user (car msg)))
- (w/thank-sub user)
- (w/model-region-word "skin" (format "thanks_%s_" user))
- (w/friend-respond (format "%s just subscribed to the stream" user))
- (w/write-chat-event (format "New subscriber: %s" user)))))
- (cons
- '(monitor twitch gift)
- (lambda (msg)
- (let ((user (car msg))
- (subs (cadr msg)))
- (unless (s-equals? user "lcolonq")
- (w/model-region-word "skin" (format "thanks_%s_" user))
- (w/friend-respond (format "%s just gifted subscriptions" user))
- (w/write-chat-event (format "%s gifted %d subs" user subs))
- (soundboard//play-monsterkill subs)))))
- (cons
- '(monitor twitch poll begin)
- (lambda (_)
- (w/write-chat-event "Poll started")
- (w/friend-respond "The chatters are doing a poll")))
- (cons
- '(monitor twitch poll end)
- (lambda (msg)
- (let ((winner (car (-max-by (-on #'> #'cadr) (cadr msg)))))
- (w/write-chat-event (format "Poll finished, winner is: %s" winner))
- (when w/twitch-current-poll-callback
- (funcall w/twitch-current-poll-callback winner))
- (setq w/twitch-current-poll-callback nil))))
- (cons
- '(monitor twitch prediction begin)
- (lambda (msg)
- (w/write-chat-event "Gamble started")
- (w/friend-respond "The chatters are gambling")
- (setq w/twitch-current-prediction-ids msg)))
- (cons
- '(monitor twitch prediction end)
- (lambda (_)
- (w/write-chat-event "Gamble finished")
- (setq w/twitch-current-prediction-ids nil)))
- ;; (cons
- ;; '(monitor discord chat incoming)
- ;; (lambda (data)
- ;; (let ((user (w/decode-string (cadr data)))
- ;; (msg (w/decode-string (cadddr data))))
- ;; (w/write-chat-event (format "discord from %s: %s" user msg)))))
- ))
+ w/bus-event-handlers
+ (list
+ (cons
+ '(monitor lamulana test)
+ (lambda (data)
+ (w/write-chat-event (format "LA-MULANA says hi: %s" data))))
+ (cons
+ '(monitor nethack test)
+ (lambda (data)
+ (w/write-chat-event (format "Nethack says hi: %s" data))))
+ (cons
+ '(monitor nethack monster)
+ (lambda (data)
+ (when-let ((sp (s-split " " (car data))))
+ (setf planet/last-monster (cons (s-join " " (cdr sp)) (string-to-number (car sp))))
+ (planet/render-monster-summary))))
+ (cons
+ '(overlay barrage started)
+ (lambda (_)
+ (w/write-chat-event "It begins...")
+ (setf w/overlay-barrage-active t)
+ (w/overlay-update-cursor)))
+ (cons
+ '(overlay barrage ended)
+ (lambda (msg)
+ (cond
+ ((s-equals? (car msg) "won") (w/write-chat-event "Fufufu... I win..."))
+ (t (w/write-chat-event "that it's over")))
+ (setf w/overlay-barrage-active nil)))
+ (cons '(monitor twitch chat incoming) #'w/twitch-handle-incoming-chat)
+ (cons '(monitor twitch redeem incoming) #'w/twitch-handle-redeem)
+ (cons
+ '(frontend redeem incoming)
+ (lambda (msg)
+ (w/twitch-handle-redeem-api msg)
+ ))
+ (cons
+ '(monitor twitch raid)
+ (lambda (msg)
+ (let ((user (car msg)))
+ (soundboard//play-clip "rampage.mp3")
+ (w/write-chat-event (format "%s just raided!" user))
+ (w/friend-respond (format "%s just came to visit" user))
+ (run-with-timer
+ 15 nil
+ (lambda ()
+ (w/twitch-get-user-recent-clips
+ user
+ (lambda (clips)
+ (w/model-region-word "hair" (s-concat user "_"))
+ (w/model-region-word "eyes" "WELCOME")
+ (if clips
+ (w/model-region-video "hair" (car clips))
+ (w/model-region-user-avatar "hair" user)))))))))
+ (cons
+ '(monitor twitch follow)
+ (lambda (msg)
+ (let ((user (car msg)))
+ (soundboard//play-clip "firstblood.mp3")
+ (w/model-region-word "skin" (format "welcome_%s_" user))
+ (w/friend-respond (format "%s just followed the stream" user))
+ (w/write-chat-event (format "New follower: %s" user)))))
+ (cons
+ '(monitor twitch subscribe)
+ (lambda (msg)
+ (let ((user (car msg)))
+ (w/thank-sub user)
+ (w/model-region-word "skin" (format "thanks_%s_" user))
+ (w/friend-respond (format "%s just subscribed to the stream" user))
+ (w/write-chat-event (format "New subscriber: %s" user)))))
+ (cons
+ '(monitor twitch gift)
+ (lambda (msg)
+ (let ((user (car msg))
+ (subs (cadr msg)))
+ (unless (s-equals? user "lcolonq")
+ (w/model-region-word "skin" (format "thanks_%s_" user))
+ (w/friend-respond (format "%s just gifted subscriptions" user))
+ (w/write-chat-event (format "%s gifted %d subs" user subs))
+ (soundboard//play-monsterkill subs)))))
+ (cons
+ '(monitor twitch poll begin)
+ (lambda (_)
+ (w/write-chat-event "Poll started")
+ (w/friend-respond "The chatters are doing a poll")))
+ (cons
+ '(monitor twitch poll end)
+ (lambda (msg)
+ (let ((winner (car (-max-by (-on #'> #'cadr) (cadr msg)))))
+ (w/write-chat-event (format "Poll finished, winner is: %s" winner))
+ (when w/twitch-current-poll-callback
+ (funcall w/twitch-current-poll-callback winner))
+ (setq w/twitch-current-poll-callback nil))))
+ (cons
+ '(monitor twitch prediction begin)
+ (lambda (msg)
+ (w/write-chat-event "Gamble started")
+ (w/friend-respond "The chatters are gambling")
+ (setq w/twitch-current-prediction-ids msg)))
+ (cons
+ '(monitor twitch prediction end)
+ (lambda (_)
+ (w/write-chat-event "Gamble finished")
+ (setq w/twitch-current-prediction-ids nil)))
+ ;; (cons
+ ;; '(monitor discord chat incoming)
+ ;; (lambda (data)
+ ;; (let ((user (w/decode-string (cadr data)))
+ ;; (msg (w/decode-string (cadddr data))))
+ ;; (w/write-chat-event (format "discord from %s: %s" user msg)))))
+ ))
(provide 'wasp-event-handlers)
;;; wasp-event-handlers.el ends here
diff --git a/src/wasp-model.el b/src/wasp-model.el
index 321f7dae..c38da58b 100644
--- a/src/wasp-model.el
+++ b/src/wasp-model.el
@@ -12,6 +12,18 @@
(require 'wasp-twitch)
(require 'wasp-user)
+(defun w/model-get-default-backgrounds (k)
+ "Retrieve the background playlist and pass it to K."
+ (w/db-get "modelbackgrounds"
+ (lambda (res)
+ (funcall k (if (s-present? res) (w/read-sexp res) nil)))))
+
+(defun w/model-add-default-background (url)
+ "Add URL to the background playlist."
+ (w/model-get-default-backgrounds
+ (lambda (cur)
+ (w/db-set "modelbackgrounds" (format "%S" (cons url cur))))))
+
(defun w/model-frame-test ()
"Submit a test frame for the new model."
(let ((data
@@ -45,12 +57,10 @@
"Reset the model palette."
(interactive)
(w/pub '(avatar reset))
- ;; (w/model-region-color "eyes" (color-values "gold"))
- ;; (w/model-region-word "eyes" "GOLDEN")
- ;; (w/model-region-video "hair" "https://www.twitch.tv/kamijoan")
- ;; (w/model-region-video "hair" "https://www.twitch.tv/kiwidancing")
- (w/model-region-video "hair" "https://www.youtube.com/watch?v=FtutLA63Cp8")
- )
+ (w/model-get-default-backgrounds
+ (lambda (bgs)
+ (when bgs
+ (w/model-region-video "hair" (w/pick-random bgs))))))
(defun w/model-toggle (toggle)
"Toggle TOGGLE on model."
diff --git a/src/wasp-overlay.el b/src/wasp-overlay.el
index 23786453..c4e63e3b 100644
--- a/src/wasp-overlay.el
+++ b/src/wasp-overlay.el
@@ -1,57 +1,49 @@
-;;; wasp-overlay --- Superterranean Animism Overlay -*- lexical-binding: t; -*-
+;;; wasp-overlay --- Fullscreen overlay -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(require 'wasp-utils)
(require 'wasp-bus)
-(require 'wasp-prod)
-
-(add-to-list 'load-path (f-canonical "~/src/animism/"))
-(require 'bulletml)
-
-;; src,Xway,fire^쾠㘽쾷ㅗ껋㾨먝乲뛏屚w㮇㸩멽ꝼ쓋♫릫m떫쓏䓳⩺䮻1㨧퉝ƭ쓐ǥᓌ㒵ᒄ먽乳俴㢈쿗峫ฐꙢ왽욍투ㅖ㨧슝呑㟪䁓Ɂy䏧呠3먫슎呒3⧘ɍy욋ᕈ00먫⇳
-;; this one is broken fix it -ellg, probably
-
-(defconst w/overlay-spellcard-names
- '("Joel" "Pemis" "JoelTeachingHisSonJolHowToSpinWhileWideBorisPassesBy" "bugSegz"
- "widepeepoMASTURBATION77769420GANGSHITNOMOREFORTNITE19DOLLERFORTNITECARD"
- "Machine Made Of Fire, Heart Made Of Doves"
- "Dream Seal" "Evil-Sealing Circle" "Dream Seal -Spread-" "Dream Seal -Concentrate-"
- "Duplex Barrier" "Dream Orb" "Omnidirectional Oni-Binding Circle" "Yin-Yang Treasured Orb"
- "Yin-Yang Kishin Orb" "Dream Orb String" "Yin-Yang Scattering" "Exorcising Border"
- "Yin-Yang King Piece" "Illusionary Moon" "Flying Mysterious Shrine Maiden"
- "Dream Seal -Blink-" "Great Duplex Barrier" "Dream Seal -Worn-" "Dream Seal -Marred-"
- "Dream Seal -The Point Of The Mask-"
- ))
-
-(defvar w/overlay-barrage-active nil)
+
+(defun w/overlay-shader (user shader)
+ "Set the overlay shader to SHADER by USER."
+ (w/pub '(avatar overlay shader)
+ (list (w/encode-string user) (w/encode-string shader))))
+
+(defun w/overlay-chat (msg)
+ "Update the overlay about chat MSG."
+ (w/pub '(avatar overlay chat)
+ (list
+ (w/encode-string (w/. user msg))
+ (w/encode-string (w/. text msg))
+ (format "%s" (w/unix-time))
+ (format "%s" (or (w/. biblicality msg) 0.0)))))
+
+(defun w/overlay-muzak (user song)
+ "Update the overlay about Muzak SONG played by USER."
+ (ignore song)
+ (w/pub '(avatar overlay muzak) (list (w/encode-string user))))
+
+(defun w/overlay-muzak-clear ()
+ "Tell the overlay that there is no Muzak song playing."
+ (w/pub '(avatar overlay muzak clear) (list)))
+
(defvar w/overlay-last-cursor nil)
(defun w/overlay-update-cursor ()
"Inform the overlay about the current cursor position."
- (when (and w/overlay-barrage-active (process-live-p (get-process w/bus-process)))
- (when-let ((pos (window-absolute-pixel-position)))
+ (when (and (process-live-p (get-process w/bus-process)))
+ (when-let* ((pos (window-absolute-pixel-position)))
(when (not (equal pos w/overlay-last-cursor))
(setf w/overlay-last-cursor pos)
- (w/pub '(overlay cursor) (list (- (car pos) 1920) (cdr pos)))))))
+ (w/pub '(avatar overlay cursor) (list (car pos) (cdr pos)))))))
(add-hook 'post-command-hook #'w/overlay-update-cursor)
-(defun w/overlay-start-barrage (bml)
- "Start a barrage on the overlay using the BulletML source string BML."
- (w/pub '(overlay barrage start) (list (w/encode-string bml))))
-
-(defun w/overlay-decode-shorthand-bml (s k)
- "Decode the shorthand BulletML string S.
-Pass the resulting BulletML XML string to K."
- ;; (w/write-log s)
- (w/prod-get-raw
- (format "/api/yamame?input=%s" (url-encode-url s))
- (lambda (data)
- (if-let* ((bml (bml/parse-string data))
- (b (bml/initialize bml))
- ((bml/barrage-toplevel b)))
- (progn
- (funcall k data))
- (w/write-chat-event "That spell card is too powerful... ")))))
+(defun w/overlay-emacs ()
+ "Update the overlay with miscellaneous data from Emacs."
+ (w/pub '(avatar overlay emacs)
+ (list
+ (w/get-heartrate)
+ )))
(provide 'wasp-overlay)
;;; wasp-overlay.el ends here
diff --git a/src/wasp-setup.el b/src/wasp-setup.el
index 6eeb5ded..e1488677 100644
--- a/src/wasp-setup.el
+++ b/src/wasp-setup.el
@@ -43,11 +43,12 @@
(w/run-audio-record-end-timer)
(w/populate-bible-table)
(w/user-cache-populate)
+ (w/run-banner-ad-timer)
(w/start-audio-record)
(w/start-chatsummary)
(w/start-fake-chatters)
- (w/start-friend)
+ (w/friend-start)
;; layout
(eyebrowse-switch-to-window-config 0)
diff --git a/src/wasp-twitch-chat-commands.el b/src/wasp-twitch-chat-commands.el
index 33435d7f..d903d93c 100644
--- a/src/wasp-twitch-chat-commands.el
+++ b/src/wasp-twitch-chat-commands.el
@@ -14,12 +14,17 @@
w/twitch-chat-commands
(list
(cons
+ "!getpaid"
+ (lambda (_ _)
+ (w/pub '(monitor lamulana msg))))
+ (cons
"!commands"
(lambda (_ _)
(w/twitch-say
- (s-concat
- "Available commands: "
- (s-join " " (--filter (s-contains? "!" it) (-map #'car w/twitch-chat-commands)))))))
+ (s-truncate 500
+ (s-concat
+ "Available commands: "
+ (s-join " " (--filter (s-contains? "!" it) (-map #'car w/twitch-chat-commands))))))))
(cons "MRBEAST" (lambda (_ _) (soundboard//play-clip "mrbeast.mp3")))
(cons "NICECOCK" (lambda (_ _) (soundboard//play-clip "pantsintoashes.mp3")))
(cons "hexadiCoding" (lambda (_ _) (soundboard//play-clip "developers.ogg")))
@@ -76,6 +81,7 @@
(cons "!pronunciation" (lambda (_ _) (w/twitch-say (w/pronuciation))))
;; (cons "!jetsWave" (lambda (_ _) (fig//twitch-say (fig/slurp "jetsWave.txt"))))
;; (cons "!forth" (lambda (_ _) (fig//twitch-say "https://github.com/lcolonq/giving")))
+ (cons "!news" (lambda (_ _) (w/twitch-say "https://news.colonq.computer")))
(cons "!oub" (lambda (_ _) (w/twitch-say "https://oub.colonq.computer")))
(cons "!cellar" (lambda (_ _) (w/twitch-say "https://pub.colonq.computer/~llll/cellar/index.html")))
(cons "!game" (lambda (_ _) (w/twitch-say "https://oub.colonq.computer")))
@@ -106,6 +112,10 @@
(lambda (user _)
(w/twitch-say (format "boost power for @%s: %s" user (alist-get :boost w/user-current)))))
(cons
+ "!tsoob"
+ (lambda (user _)
+ (w/twitch-say (format "boost power for @%s: %s" user (alist-get :boost w/user-current)))))
+ (cons
"!faction"
(lambda (user _)
(w/twitch-say (format "faction for %s: %s" user (alist-get :faction w/user-current)))))
diff --git a/src/wasp-twitch-redeems.el b/src/wasp-twitch-redeems.el
index bf7a352b..98887386 100644
--- a/src/wasp-twitch-redeems.el
+++ b/src/wasp-twitch-redeems.el
@@ -16,8 +16,6 @@
(require 'wasp-overlay)
(require 'wasp-cyclone)
(require 'wasp-bless)
-(require 'muzak)
-(require 'muzak-wasp)
(defvar w/twitch-redeem-sound-last 0)
@@ -30,7 +28,7 @@
(w/write-chat-event (format "%s threw shade" user))
(w/db-set "shader" shader)
(w/model-record-change)
- (w/pub '(avatar overlay shader) (list (w/encode-string user) (w/encode-string shader)))))
+ (w/overlay-shader user shader)))
(list
"lurker check in" 1
(lambda (user _)
@@ -174,6 +172,10 @@
(w/bless inp 50))
(w/write-chat-event (format "%s is not authorized to run code" user)))))
(list
+ "encoded clarity" 7
+ (lambda (user _)
+ (w/write-chat-event (format "%s allowed the streamer to \"drink\"" user))))
+ (list
"feed friend" 10
(lambda (user inp)
(let ((cur (float-time)))
@@ -187,7 +189,7 @@
(let ((cur (float-time)))
(when (> (- cur w/twitch-redeem-sound-last) 2)
(w/write-chat-event (s-concat user " talks to \"friend\": " inp))
- (w/friend-chat user inp)
+ (w/friend-respond (format "%s says: %s" user inp))
(setq w/twitch-redeem-sound-last cur)))))
(list
"friend composes song" 10
@@ -301,7 +303,7 @@
(w/write-chat-event (s-concat user " established spatiotemporal clarity"))
(w/obs-activate-toggle 'spatiotemporal-clarity)))
(list
- "total clarity" 5000
+ "nasal clarity" 5000
(lambda (user _)
(w/stop-all-audio)
(run-with-timer
@@ -314,6 +316,10 @@
(lambda (user _)
(w/write-chat-event (s-concat user " was canonized!"))
(w/bible-canonize user)))
+ (list
+ "cloning facility" 50000
+ (lambda (user _)
+ (w/write-chat-event (format "%s entered the cloning facility" user))))
))
(provide 'wasp-twitch-redeems)
diff --git a/src/wasp-twitch.el b/src/wasp-twitch.el
index de44c735..2ff66567 100644
--- a/src/wasp-twitch.el
+++ b/src/wasp-twitch.el
@@ -14,6 +14,7 @@
(require 'wasp-copfish)
(require 'wasp-shindaggers)
(require 'wasp-hex)
+(require 'wasp-user-stats)
;; gizmos
(require 'wasp-biblicality)
@@ -272,7 +273,7 @@ K is called when the download is finished."
"Run the shoutout timer."
(when w/twitch-shoutout-timer
(cancel-timer w/twitch-shoutout-timer))
- (when-let ((user (pop w/twitch-shoutout-queue)))
+ (when-let* ((user (pop w/twitch-shoutout-queue)))
(w/twitch-shoutout user))
(setq
w/twitch-shoutout-timer
@@ -335,7 +336,7 @@ CALLBACK will be passed the winner when the poll concludes."
(let ((pos (point-min)))
(while pos
(let ((end (next-single-property-change pos 'display)))
- (when-let ((face (get-text-property pos 'display)))
+ (when-let* ((face (get-text-property pos 'display)))
(add-text-properties
pos (or end (point-max))
`(display
@@ -529,6 +530,9 @@ CALLBACK will be passed the winner when the poll concludes."
((s-equals? name "hellpie") "🥧")
((s-equals? name "steeledshield") "⛨")
((s-equals? name "asrael_io") (propertize "Q" 'display (create-image (w/twitch-emote-path "emotesv2_a9dc5935824a4d6792f4b48f91031fcf"))))
+ ((s-equals? name "nichepenguin") "💚")
+ ;; ((s-equals? name "h_ingles") "")
+ ;; ((s-equals? name "compilingjay") "")
(t "EL.")))
(when (-contains? badges "vip/1") "💎")
(when (-contains? badges "subscriber/0") "💻")
diff --git a/src/wasp-user-stats.el b/src/wasp-user-stats.el
index 19d297a4..285754f8 100644
--- a/src/wasp-user-stats.el
+++ b/src/wasp-user-stats.el
@@ -2,6 +2,11 @@
;;; Commentary:
;;; Code:
+(require 'dash)
+(require 's)
+(require 'ht)
+(require 'wasp-user)
+
(defvar w/user-faction-exemptions
(list
"LCOLONQ"
@@ -54,7 +59,15 @@
(w/user-faction-total 'tony)
(w/user-faction-total 'lever)))
+(defun w/user-ensure-name ()
+ "Ensure that the current user has a name assigned."
+ (let ((cur (alist-get :name w/user-current)))
+ (unless cur
+ (setf (alist-get :name w/user-current) w/user-current-name))))
+
(defun w/user-stats-update ()
+ "Ensure that the current user has all stats."
+ (w/user-ensure-name)
(w/user-ensure-faction)
(w/user-ensure-element))
diff --git a/src/wasp-user-whitelist.el b/src/wasp-user-whitelist.el
index 5205e002..f23471d6 100644
--- a/src/wasp-user-whitelist.el
+++ b/src/wasp-user-whitelist.el
@@ -237,6 +237,9 @@
"quackthatsmackyo"
"thelinuxdeveloper"
"hrrawr"
+ "taske666"
+ "rat_not_like_noah"
+ "RealNaesten"
)))
(setq
diff --git a/src/wasp-user.el b/src/wasp-user.el
index 6694b2f2..08e5c971 100644
--- a/src/wasp-user.el
+++ b/src/wasp-user.el
@@ -123,5 +123,25 @@ Save it back to the database after K returns."
(print u)
(w/user-set user u))))
+(defun w/user-decrown (user)
+ "Decrement USER's equity status."
+ (w/user-get
+ user
+ (lambda (u)
+ (let ((old (or (alist-get :equity u) 0)))
+ (setf (alist-get :equity u) (- old 1)))
+ (print u)
+ (w/user-set user u))))
+
+(defun w/user-boost-compensation (user)
+ "Give USER a consolation BOOSTPOWER prize."
+ (w/user-get
+ user
+ (lambda (u)
+ (let ((old (or (alist-get :boost u) 0)))
+ (setf (alist-get :boost u) (+ old 20)))
+ (print u)
+ (w/user-set user u))))
+
(provide 'wasp-user)
;;; wasp-user.el ends here
diff --git a/src/wasp-utils.el b/src/wasp-utils.el
index 54cc3cae..8bac37ae 100644
--- a/src/wasp-utils.el
+++ b/src/wasp-utils.el
@@ -170,8 +170,8 @@ If it is C, consume it and return non-nil."
"Look at the character at point in the current buffer.
If it is C, consume it.
Otherwise, throw an error."
- (if-let ((char (char-after))
- (cont (= char c)))
+ (if-let* ( (char (char-after))
+ (cont (= char c)))
(progn
(delete-char 1)
t)
@@ -184,7 +184,7 @@ Otherwise, throw an error."
(defun w/open-link ()
"Open URL in the primary stream window."
(interactive)
- (when-let ((url (thing-at-point 'url t)))
+ (when-let* ((url (thing-at-point 'url t)))
(select-window (w/get-stream-primary-window))
(browse-url url)))
@@ -192,7 +192,7 @@ Otherwise, throw an error."
"Prevent focus from reaching popup frame E."
(not (frame-parameter (cadr e) 'wasp-prevent-focus)))
-(defconst w/asset-base-path (f-canonical "./assets/"))
+(defconst w/asset-base-path (f-canonical "/home/llll/src/wasp/assets/"))
(defun w/asset (path)
"Return the absolute path given an asset path PATH."
(f-join w/asset-base-path path))
diff --git a/wasp.el b/wasp.el
index 779afa3d..128c1682 100644
--- a/wasp.el
+++ b/wasp.el
@@ -9,8 +9,10 @@
(add-to-list 'load-path (f-canonical "./src/gizmo/"))
(add-to-list 'load-path (f-canonical "./src/contrib/"))
-(add-to-list 'load-path (f-canonical "~/src/muzak/"))
(add-to-list 'load-path (f-canonical "~/src/soundboard/"))
+(add-to-list 'load-path (f-canonical "~/src/emacs-htmlize/"))
+(add-to-list 'load-path (f-canonical "~/src/ttf.el/"))
+(setq elisp-flymake-byte-compile-load-path load-path)
;; do not open this on stream
(require 'wasp-sensitive)
@@ -38,6 +40,12 @@
(require 'wasp-glossary)
(require 'wasp-newspaper)
(require 'wasp-friend)
+(require 'wasp-friend-journalism)
+(require 'wasp-friend-voice)
+(require 'wasp-friend-callout)
+(require 'wasp-friend-reading)
+(require 'wasp-friend-eating)
+(require 'wasp-friend-music)
(require 'wasp-fakechat)
(require 'wasp-dna)
(require 'wasp-heartrate)
@@ -68,7 +76,7 @@
(require 'wasp-event-handlers)
;; user contrib
-(require 'muzak)
+;; (require 'muzak)
;; (defun w/fix-user-database-ok (user)
;; "Fix USER's database entry."