122 Commits
Author SHA1 Message Date
NotCoded 73015ad263 Revert "Merge branch 'dev' into factory-api"
This reverts commit 25af9ac960, reversing
changes made to 5c8e7b5b8a.
2024-06-14 22:50:41 +02:00
NotCoded 25af9ac960 Merge branch 'dev' into factory-api 2024-06-14 22:38:02 +02:00
NotCoded 5c8e7b5b8a technically 2024-06-14 21:46:35 +02:00
NotCoded b68519e563 idk 2024-06-14 21:08:50 +02:00
NotCoded b3df7a1119 Revert "let metis do the join and leave messages"
This reverts commit cf9590ffe4.
2024-06-14 20:54:25 +02:00
NotCoded 14e02313ab Update factory-builder-0.1.13-1.16_combat-6-full.jar 2024-06-14 20:54:02 +02:00
NotCoded 21043eb96b change from metis to factory (mb) 2024-06-14 20:35:23 +02:00
NotCoded d1de6ab2e8 update factory 2024-06-14 20:19:24 +02:00
Infinityy d7205debc9 fix bugs (remove metis) 2024-06-14 18:53:30 +02:00
Infinityy 3ff03632ff temporarily disable giving people pro rank, fix booster 2024-06-14 15:27:47 +02:00
Infinityy f7381e359f thinking cap 2024-06-13 23:48:45 +02:00
Infinityy 0ec5ef70dc hmmmmmmmm 2024-06-13 23:34:53 +02:00
Infinityy 9add587313 an idiot admires complexity, a genius admires simplicity 2024-06-13 23:26:39 +02:00
Infinityy f01863c5bd okay this feels like it's getting more complicated than necessary but ok 2024-06-13 23:06:30 +02:00
Infinityy 15abe8bda7 fixes :) 2024-06-13 22:40:51 +02:00
Infinityy ef1758f2e1 ok bro 2024-06-13 22:27:19 +02:00
Infinityy 987bd54c25 rank removal 2024-06-13 22:16:27 +02:00
Infinityy cc2137766d top first player gets god rank real 2024-06-13 21:40:09 +02:00
surgeflame 045ed107ab Merge branch 'dev' of https://github.com/nexia-cts/Nexia-Mod into dev 2024-06-13 15:34:31 -04:00
surgeflame 161d71fdf7 rating fix 2024-06-13 15:34:23 -04:00
NotCoded e229a432e4 fix ranks not getting handed out°!!!! 2024-06-13 21:21:36 +02:00
surgeflame 84845640c9 Merge branch 'dev' of https://github.com/nexia-cts/Nexia-Mod into dev 2024-06-13 15:09:45 -04:00
surgeflame 6bdb81e124 aples and oranges 2024-06-13 15:09:38 -04:00
NotCoded 7754d9a326 i have made a severe lapse in my judgement 2024-06-13 20:59:10 +02:00
NotCoded 67b5d1af47 whoops 2024-06-13 20:58:22 +02:00
NotCoded 8e64062cf3 Merge branch 'dev' of github.com:nexia-cts/Nexia-Mod into dev 2024-06-13 20:55:14 +02:00
NotCoded ba4a7ff9c5 bring over infinit's rating changes!!! 2024-06-13 20:54:45 +02:00
surgeflame b024e4be52 Merge branch 'dev' of https://github.com/nexia-cts/Nexia-Mod into dev 2024-06-13 14:51:16 -04:00
NotCoded 547e4a17c8 infinity, your code is dogshit. 1hour??? fr? 2024-06-13 20:51:15 +02:00
surgeflame 77c3dca42e cllipping colosseum fix 2024-06-13 14:51:08 -04:00
NotCoded 6dd22598ba Revert "coded I swear I had to do it this way the class couldn't be static"
This reverts commit e2aa919c7a.
2024-06-13 20:31:55 +02:00
Infinityy 504284a47a Merge branch 'dev' of https://github.com/nexia-cts/nexia-mod into dev 2024-06-13 20:30:39 +02:00
Infinityy e2aa919c7a coded I swear I had to do it this way the class couldn't be static 2024-06-13 20:30:35 +02:00
surgeflame 02e94954ed better rating 2024-06-13 14:29:05 -04:00
NotCoded 1450a9d6b8 Merge branch 'dev' of github.com:nexia-cts/Nexia-Mod into dev 2024-06-13 20:06:57 +02:00
NotCoded a3c24a7f7e fix not being able to get send to uhc ffa 2024-06-13 20:06:42 +02:00
surgeflame f8f93041c7 please 2024-06-13 13:48:47 -04:00
NotCoded a593178ad3 fixed 2024-06-13 19:42:04 +02:00
Infinityy f09559145b Merge branch 'dev' of https://github.com/nexia-cts/nexia-mod into dev 2024-06-13 18:51:46 +02:00
Infinityy f441aa11bb stuffs 2024-06-13 18:51:42 +02:00
surgeflame 1e1e98b91a Merge branch 'dev' of https://github.com/nexia-cts/Nexia-Mod into dev 2024-06-13 12:33:08 -04:00
surgeflame aea96fc1a1 A 2024-06-13 12:32:20 -04:00
Infinityy 58c37704c9 null checks 2024-06-13 18:19:43 +02:00
Infinityy 56220efc6d don't make server crash and disable fire spread 2024-06-13 18:13:58 +02:00
Infinityy 4c2c0b9d3d Merge branch 'dev' of https://github.com/nexia-cts/nexia-mod into dev 2024-06-13 18:08:43 +02:00
Infinityy 5d65615685 debuggieng 2024-06-13 18:08:02 +02:00
surgeflame c6067291a9 a 2024-06-13 12:06:38 -04:00
surgeflame 05ee2b6724 cock 2024-06-13 12:05:21 -04:00
Infinityy e8e3ad4e45 bingus 2024-06-13 17:48:59 +02:00
Infinityy 122c973762 g 2024-06-13 17:36:51 +02:00
surgeflame 44a16a5af7 Merge branch 'dev' of https://github.com/nexia-cts/Nexia-Mod into dev 2024-06-13 11:34:14 -04:00
surgeflame 77636f83fe no more imagine? 2024-06-13 11:34:07 -04:00
Infinityy ec3b244baa bottom of the barrel 2024-06-13 17:31:13 +02:00
Infinityy 23c644c3db simplify this DUMB SHIT 2024-06-13 17:05:09 +02:00
Infinityy 16db949c7d adventure modeeeee 2024-06-13 16:51:03 +02:00
surgeflame 480553f088 no fake numbers 2024-06-13 10:44:11 -04:00
Infinityy 8bd539dcce COLOSSEUM ROMAN EMPIRE 2024-06-13 15:58:00 +02:00
Infinityy f6c57c3f3e apples and banas 2024-06-13 15:43:32 +02:00
surgeflame 2b6ed2675a im gonna kms istfg 2024-06-13 09:29:08 -04:00
Infinityy 94075c084f fix stats command aaaaaaaaaaaaaaaaaaa 2024-06-13 14:20:04 +02:00
surgeflame 6e3324f57c soynte got +57 from one kill 💀 2024-06-13 06:53:33 -04:00
surgeflame 28dbdbc90e oopsie 2024-06-13 05:43:08 -04:00
surgeflame 83c9907e01 no more negative rating change from winning I think 2024-06-13 05:33:26 -04:00
surgeflame b40e8defa4 tight juicy pineapple
health based rating
2024-06-12 15:53:14 -04:00
NotCoded 8365817799 whoops 2024-06-12 19:50:42 +02:00
surgeflame 92680cb79c faster 2024-06-11 18:17:32 -04:00
surgeflame 11fe172fec faster 2024-06-11 18:05:11 -04:00
Infinityy ae515ae773 highest rating 2024-06-11 22:01:30 +02:00
Infinityy 70b13d82f8 Merge remote-tracking branch 'origin/dev' into dev 2024-06-11 21:44:31 +02:00
Infinityy 752e22e224 setting defaults ohio 2024-06-11 21:44:24 +02:00
NotCoded 710f7ced46 erm what the sigma 2024-06-11 21:41:42 +02:00
Infinityy 4a7e00e410 gradients lala 2024-06-11 21:31:31 +02:00
Infinityy db338bb99d apples and bananas 2024-06-11 21:26:43 +02:00
surgeflame d0ebddb12b Merge branch 'dev' of https://github.com/nexia-cts/Nexia-Mod into dev 2024-06-11 14:53:30 -04:00
surgeflame f2b526e7b7 a 2024-06-11 14:51:39 -04:00
Infinityy d831220cce bingus? 2024-06-11 20:51:14 +02:00
Infinityy 4fe41dbc6c this is 100% wrong 2024-06-11 20:23:54 +02:00
surgeflame cc5f0a4c34 mb gang 2024-06-11 13:49:41 -04:00
Infinityy 0794f418e0 Merge remote-tracking branch 'origin/dev' into dev 2024-06-11 18:49:00 +02:00
Infinityy 9e8bdfcecd fix? 2024-06-11 18:48:53 +02:00
surgeflame d2c10c8037 5x speed 2024-06-11 12:25:01 -04:00
surgeflame 27f20c1a43 hot af 2024-06-11 11:46:54 -04:00
Infinityy 7d0ecae692 Merge remote-tracking branch 'origin/dev' into dev 2024-06-11 16:41:45 +02:00
Infinityy 755c47a864 remove times 100 2024-06-11 16:41:37 +02:00
surgeflame 24ee9ec6b3 Merge branch 'dev' of https://github.com/nexia-cts/Nexia-Mod into dev 2024-06-11 10:00:17 -04:00
surgeflame 2802474172 sahush 2024-06-11 10:00:10 -04:00
Infinityy 01828d2045 Merge branch 'dev' of https://github.com/nexia-cts/Nexia-mod into dev 2024-06-11 15:42:27 +02:00
surgeflame d195ed08b0 mb im acoustic 2024-06-11 09:41:37 -04:00
Infinityy 4e5c9f2567 fix big room coordinates 2024-06-11 15:39:12 +02:00
surgeflame f1b1d5c739 making elo more complicated for no fucking reason 2024-06-11 09:22:34 -04:00
surgeflame 4629b20ef2 fine we just using fucking elo ig 2024-06-10 21:42:50 -04:00
surgeflame 457d138343 im gonna kms 2024-06-10 19:20:59 -04:00
surgeflame 06104f542f Update RatingUtil.java 2024-06-10 18:47:10 -04:00
surgeflame afa363b885 how the fuck is it still negative 2024-06-09 21:43:18 -04:00
surgeflame 02d8b3cf93 Merge branch 'dev' of https://github.com/nexia-cts/Nexia-Mod into dev 2024-06-09 19:21:35 -04:00
surgeflame 648a9f7062 I think im autistic 2024-06-09 19:19:27 -04:00
Infinityy 94e7934a7c Merge remote-tracking branch 'origin/dev' into dev 2024-06-10 01:01:14 +02:00
Infinityy 4b8709fad2 fix relative position? 2024-06-10 01:01:06 +02:00
surgeflame 4d20fcdd36 god please 2024-06-09 18:52:12 -04:00
surgeflame c32e0193f9 Update RatingUtil.java 2024-06-09 18:35:13 -04:00
Infinityy d824efd6ae fix spawn stuff for bigroom duel map 2024-06-10 00:21:31 +02:00
Infinityy 599e5dc9ac Merge branch 'dev' of https://github.com/nexia-cts/Nexia-mod into dev 2024-06-09 23:50:56 +02:00
Infinityy d0714e9e8f fix the stats command 2024-06-09 23:47:33 +02:00
surgeflame ff79aee63d rating fix please 2024-06-09 17:40:23 -04:00
Infinityy c6c5cd3f79 remove femboy rank, add bigroom duel map, fix pro rank colors and move rating system + leaderboard from kit ffa to classic ffa (WE LIVE, WE LOVE, WE LIE) 2024-06-09 23:35:52 +02:00
NotCoded 597b5ceee3 kyori component on guis or something... 2024-06-09 20:55:26 +02:00
NotCoded d1481d0a57 femtanyl on top 2024-06-09 17:48:45 +02:00
NotCoded 9008efba05 femboy :3 2024-06-09 14:51:04 +02:00
surgeflame 347d8a0701 mb gang 2024-06-08 21:23:32 -04:00
surgeflame f5d2bd22a0 ratting? 2024-06-08 21:06:39 -04:00
Infinityy 97ae66848b fix kit bug for all the ffas (probably still possible for skywars like whaattt) 2024-06-09 01:19:49 +02:00
surgeflame eb1c0a07fa oopsie 2024-06-06 14:49:55 -04:00
NotCoded 1b66d78bf9 gog and pwo :3 2024-06-06 18:49:19 +02:00
NotCoded e5b28e09eb hellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeahhellyeah 2024-06-06 18:37:30 +02:00
NotCoded cf9590ffe4 let metis do the join and leave messages 2024-05-30 11:58:36 +02:00
NotCoded 3dfb694772 fix crash or something idk? 2024-05-30 11:58:11 +02:00
NotCoded 89cade32b5 make GameProfile argument work 2024-05-30 11:57:40 +02:00
NotCoded cf89ee2aad make ServerPlayer argument work 2024-05-30 11:49:44 +02:00
NotCoded 9c997d001e change commands or something idk 2024-05-30 11:16:57 +02:00
NotCoded 9e27a0600f permissions!! wooo 2024-05-27 17:37:56 +02:00
NotCoded 48ff57d761 hopefully fix some commands not being able to be ran??? 2024-05-27 15:47:30 +02:00
NotCoded f815d89480 METIS API BABYYYYY (not working)
- fix mixin issue/crash when starting
- port mixins to listeners
2024-05-26 19:44:38 +02:00
188 changed files with 4127 additions and 4386 deletions

No files matched your search

+1 -1
View File
@@ -36,4 +36,4 @@ jobs:
uses: actions/upload-artifact@v3
with:
name: Artifacts
path: build/${{ github.ref_name }}/libs
path: build/${{ github.ref_name }}/libs
+1
View File
@@ -93,3 +93,4 @@ bin/
# fabric
run/
.factorypath
+1
View File
@@ -4,6 +4,7 @@
<br>
# Nexia
using **Factory API**
The mod for the Nexia CTS server.
+6 -4
View File
@@ -46,6 +46,7 @@ repositories {
maven { url "https://maven.terraformersmc.com/releases/" }
maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
maven { url 'https://github.com/ricksouth/serilum-forge-maven/raw/maven/' }
maven { url 'https://repo.minebench.de/' }
}
dependencies {
@@ -54,8 +55,9 @@ dependencies {
mappings loom.officialMojangMappings()
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
modImplementation("com.combatreforged.factory:factory-api:${project.factory_version}-full")
modImplementation("com.combatreforged.factory:factory-builder:${project.factory_version}-1.16_combat-6")
modImplementation("com.combatreforged.factory:factory-builder:${project.factory_version}-${project.minecraft_version}-full")
include(implementation("com.google.code.gson:gson:${project.gson_version}"))
@@ -78,19 +80,19 @@ dependencies {
include(implementation("com.googlecode.json-simple:json-simple:${project.json_simple_version}"))
modApi("me.lucko:fabric-permissions-api:${project.fabric_permissions_api_version}")
modApi("com.nexia:gato-anticheat:${project.gato_anticheat_version}+${project.minecraft_version}")
include(modApi("net.blumbo:blfscheduler:${project.blfscheduler_version}"))
include(modApi("io.github.blumbo:inventory-merger:${project.inventory_merger_version}"))
include(modApi("net.notcoded:codelib:${project.codelib_version}+${project.minecraft_version}"))
compileOnly("net.luckperms:api:${project.luckperms_api_version}")
// discord shit
include(api("net.dv8tion:JDA:${project.jda_version}"))
include(api("club.minnced:discord-webhooks:${project.discord_webhooks_version}") { exclude(group: "org.json") })
include(api("org.json:json:${project.json_version}"))
// PSA: Some older mods, compiled on Loom 0.2.1, might have outdated Maven POMs.
// You may need to force-disable transitiveness on them.
}
+3 -3
View File
@@ -9,7 +9,7 @@ yarn_mappings=1.16_combat-6+build.2
loader_version=0.14.21
# Mod Properties
mod_version = 1.2.1
mod_version = 2.0.0
maven_group = com.nexia
archives_base_name = nexia
@@ -28,8 +28,8 @@ autoconfig1u_version=3.3.1
fabric_permissions_api_version=0.2-SNAPSHOT
blfscheduler_version=1.0.0-1.16_combat-6
inventory_merger_version=1.3.1-1.16_combat-6
codelib_version=1.0.3
gato_anticheat_version=1.0.4
codelib_version=1.0.4
luckperms_api_version=5.4
# Useless dependencies
json_simple_version=1.1.1
Binary file not shown.
Binary file not shown.
Binary file not shown.
+6 -20
View File
@@ -8,15 +8,11 @@ import com.nexia.core.listeners.ListenerHelper;
import com.nexia.core.loader.CommandLoader;
import com.nexia.core.networking.NetworkingHandler;
import com.nexia.core.utilities.misc.NxFileUtil;
import com.nexia.core.utilities.player.PlayerDataManager;
import com.nexia.core.utilities.player.anticheat.Punishment;
import com.nexia.core.utilities.time.ServerTime;
import com.nexia.gatoanticheat.events.PlayerDetectionEvent;
import me.sargunvohra.mcmods.autoconfig1u.AutoConfig;
import me.sargunvohra.mcmods.autoconfig1u.serializer.GsonConfigSerializer;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.server.level.ServerPlayer;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -34,38 +30,28 @@ public class Main implements ModInitializer, FactoryPlugin {
AutoConfig.register(ModConfig.class, GsonConfigSerializer::new);
config = AutoConfig.getConfigHolder(ModConfig.class).getConfig();
logger.info("Loading mod...");
logger.info("Registering commands....");
logger.info("Registering commands...");
CommandLoader.registerCommands();
logger.info("Registered commands.");
PlayerDetectionEvent.REACH.register((player, entity) -> {
Punishment punishment = PlayerDataManager.get(player).punishment;
punishment.reachOffences++;
punishment.check((ServerPlayer) player);
});
PlayerDetectionEvent.NO_SWING.register((player, entity) -> {
Punishment punishment = PlayerDataManager.get(player).punishment;
punishment.noSwingOffences++;
punishment.check((ServerPlayer) player);
});
networkingHandler = new NetworkingHandler();
}
@Override
@SuppressWarnings("FutureReturnValueIgnored")
public void onFactoryLoad(FactoryAPI api, FactoryServer server) {
Main.logger.info("Loading factory version...");
Main.logger.info("Loading Factory API...");
ServerTime.factoryServer = server;
ServerTime.factoryAPI = api;
ServerTime.scheduler = api.getScheduler();
Main.logger.info("Registering listeners....");
Main.logger.info("Registering listeners...");
ListenerHelper.registerListeners();
Main.logger.info("Registered listeners.");
Main.logger.info("Registering factory commands...");
CommandLoader.registerFactoryCommands();
Main.logger.info("Registered factory commands.");
}
}
@@ -1,26 +1,25 @@
package com.nexia.core.commands.player;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.player.PlayerUtil;
import com.nexia.discord.Main;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.event.ClickEvent;
import net.kyori.adventure.text.event.HoverEvent;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
public class DiscordCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register(Commands.literal("discord").executes(DiscordCommand::run));
dispatcher.register(Commands.literal("dc").executes(DiscordCommand::run));
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register(CommandUtils.literal("discord").executes(DiscordCommand::run));
dispatcher.register(CommandUtils.literal("dc").executes(DiscordCommand::run));
}
public static int run(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
PlayerUtil.getFactoryPlayer(context.getSource().getPlayerOrException()).sendMessage(
public static int run(CommandContext<CommandSourceInfo> context) throws CommandSyntaxException {
context.getSource().sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("Link to discord: ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false)
.append(Component.text(com.nexia.discord.Main.config.discordLink).color(ChatFormat.brandColor2)
@@ -1,18 +1,17 @@
package com.nexia.core.commands.player;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.player.PlayerUtil;
import net.kyori.adventure.text.Component;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
public class HelpCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register(Commands.literal("help").executes(HelpCommand::run));
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register(CommandUtils.literal("help").executes(HelpCommand::run));
}
static String commandSeparator = ": ";
@@ -38,7 +37,7 @@ public class HelpCommand {
"sprintfix" + commandSeparator + "toggle the sprint fix"
};
public static int run(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
public static int run(CommandContext<CommandSourceInfo> context) throws CommandSyntaxException {
Component message = ChatFormat.separatorLine("Commands");
@@ -58,7 +57,7 @@ public class HelpCommand {
message = message.append(Component.text("\n").append(ChatFormat.separatorLine(null)));
PlayerUtil.getFactoryPlayer(context.getSource().getPlayerOrException()).sendMessage(message);
context.getSource().sendMessage(message);
return 1;
}
@@ -1,26 +1,31 @@
package com.nexia.core.commands.player;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.games.util.LobbyUtil;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
public class LeaveCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
register(dispatcher, "leave");
register(dispatcher, "lobby");
register(dispatcher, "l");
register(dispatcher, "hub");
}
private static void register(CommandDispatcher<CommandSourceStack> dispatcher, String string) {
dispatcher.register(Commands.literal(string).executes(LeaveCommand::run));
private static void register(CommandDispatcher<CommandSourceInfo> dispatcher, String string) {
dispatcher.register(CommandUtils.literal(string).executes(LeaveCommand::run));
}
public static int run(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
LobbyUtil.leaveAllGames(context.getSource().getPlayerOrException(), true);
public static int run(CommandContext<CommandSourceInfo> context) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer player = new NexiaPlayer(CommandUtil.getPlayer(context));
LobbyUtil.returnToLobby(player, true);
return 1;
}
@@ -1,36 +1,34 @@
package com.nexia.core.commands.player;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.chat.LegacyChatFormat;
import com.nexia.core.utilities.chat.PlayerMutes;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.player.PlayerData;
import com.nexia.core.utilities.player.PlayerDataManager;
import com.nexia.core.utilities.player.PlayerUtil;
import net.kyori.adventure.text.Component;
import net.minecraft.Util;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.arguments.EntityArgument;
import net.minecraft.server.level.ServerPlayer;
public class MessageCommand {
public static void registerMsg(CommandDispatcher<CommandSourceStack> commandDispatcher, boolean bl) {
public static void registerMsg(CommandDispatcher<CommandSourceInfo> commandDispatcher) {
registerMsg(commandDispatcher, "msg");
registerMsg(commandDispatcher, "message");
registerMsg(commandDispatcher, "tell");
registerMsg(commandDispatcher, "whisper");
}
public static void registerMsg(CommandDispatcher<CommandSourceStack> commandDispatcher, String string) {
commandDispatcher.register(Commands.literal(string)
.then(Commands.argument("player", EntityArgument.player())
.then(Commands.argument("message", StringArgumentType.greedyString())
public static void registerMsg(CommandDispatcher<CommandSourceInfo> commandDispatcher, String string) {
commandDispatcher.register(CommandUtils.literal(string)
.then(CommandUtils.argument("player", EntityArgument.player())
.then(CommandUtils.argument("message", StringArgumentType.greedyString())
.executes(MessageCommand::msgCommand)
)
)
@@ -39,21 +37,22 @@ public class MessageCommand {
public static void registerReply(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register(Commands.literal("r")
.then(Commands.argument("message", StringArgumentType.greedyString())
public static void registerReply(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register(CommandUtils.literal("r")
.then(CommandUtils.argument("message", StringArgumentType.greedyString())
.executes(MessageCommand::replyCommand)
));
dispatcher.register(Commands.literal("reply")
.then(Commands.argument("message", StringArgumentType.greedyString())
dispatcher.register(CommandUtils.literal("reply")
.then(CommandUtils.argument("message", StringArgumentType.greedyString())
.executes(MessageCommand::replyCommand)
)
);
}
private static int msgCommand(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
ServerPlayer sender = context.getSource().getPlayerOrException();
ServerPlayer receiver = EntityArgument.getPlayer(context, "player");
private static int msgCommand(CommandContext<CommandSourceInfo> context) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer sender = CommandUtil.getPlayer(context);
NexiaPlayer receiver = new NexiaPlayer(context.getArgument("player", ServerPlayer.class));
String message = StringArgumentType.getString(context, "message");
sendMessage(sender, receiver, message);
@@ -61,13 +60,14 @@ public class MessageCommand {
return 1;
}
private static int replyCommand(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
ServerPlayer sender = context.getSource().getPlayerOrException();
private static int replyCommand(CommandContext<CommandSourceInfo> context) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer sender = CommandUtil.getPlayer(context);
PlayerData senderData = PlayerDataManager.get(sender);
ServerPlayer receiver = PlayerUtil.getFixedPlayer(senderData.lastMessageSender);
NexiaPlayer receiver = senderData.lastMessageSender;
if (receiver == null) {
sender.sendMessage(LegacyChatFormat.format("{s}Nobody to reply to"), Util.NIL_UUID);
sender.sendMessage(Component.text("Nobody to reply to.", ChatFormat.systemColor));
return 1;
}
@@ -77,18 +77,18 @@ public class MessageCommand {
return 1;
}
private static void sendMessage(ServerPlayer sender, ServerPlayer receiver, String message) {
if (PlayerMutes.muted(sender) || sender == receiver) return;
private static void sendMessage(NexiaPlayer sender, NexiaPlayer receiver, String message) {
if (PlayerMutes.muted(sender) || sender.equals(receiver)) return;
PlayerUtil.getFactoryPlayer(sender).sendMessage(
Component.text(String.format("To %s", receiver.getScoreboardName())).color(ChatFormat.brandColor2)
sender.sendMessage(
Component.text(String.format("To %s", receiver.getRawName())).color(ChatFormat.brandColor2)
.append(Component.text(" » ").color(ChatFormat.arrowColor)
.append(Component.text(message).color(ChatFormat.brandColor2))
));
PlayerUtil.getFactoryPlayer(receiver).sendMessage(
Component.text(String.format("From %s", sender.getScoreboardName())).color(ChatFormat.brandColor2)
receiver.sendMessage(
Component.text(String.format("From %s", sender.getRawName())).color(ChatFormat.brandColor2)
.append(Component.text(" » ").color(ChatFormat.arrowColor)
.append(Component.text(message).color(ChatFormat.brandColor2))
@@ -1,37 +1,36 @@
package com.nexia.core.commands.player;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.chat.LegacyChatFormat;
import com.nexia.core.utilities.player.PlayerUtil;
import com.nexia.core.utilities.commands.CommandUtil;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.arguments.EntityArgument;
import net.minecraft.commands.arguments.selector.EntitySelector;
import net.minecraft.server.level.ServerPlayer;
public class PingCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register(Commands.literal("ping").executes(PingCommand::run)
.then(Commands.argument("player", EntityArgument.player())
.executes(context -> PingCommand.ping(context, EntityArgument.getPlayer(context, "player")))
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register(CommandUtils.literal("ping").executes(PingCommand::run)
.then(CommandUtils.argument("player", EntityArgument.player())
.executes(context -> PingCommand.ping(context, context.getArgument("player", EntitySelector.class).findSinglePlayer(CommandUtil.getCommandSourceStack(context.getSource()))))
)
);
dispatcher.register(Commands.literal("latency").executes(PingCommand::run)
.then(Commands.argument("player", EntityArgument.player())
.executes(context -> PingCommand.ping(context, EntityArgument.getPlayer(context, "player")))
dispatcher.register(CommandUtils.literal("latency").executes(PingCommand::run)
.then(CommandUtils.argument("player", EntityArgument.player())
.executes(context -> PingCommand.ping(context, context.getArgument("player", EntitySelector.class).findSinglePlayer(CommandUtil.getCommandSourceStack(context.getSource()))))
)
);
}
public static int run(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
ServerPlayer executer = context.getSource().getPlayerOrException();
int ping = executer.latency;
public static int run(CommandContext<CommandSourceInfo> context) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
int ping = CommandUtil.getPlayer(context).unwrap().latency;
PlayerUtil.getFactoryPlayer(executer).sendMessage(
context.getSource().sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("Your ping is ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false)
.append(Component.text(ping + "ms").color(ChatFormat.brandColor2))
@@ -42,19 +41,10 @@ public class PingCommand {
return ping;
}
public static int ping(CommandContext<CommandSourceStack> context, ServerPlayer player) {
CommandSourceStack cmdExecutor = context.getSource();
ServerPlayer executor;
public static int ping(CommandContext<CommandSourceInfo> context, ServerPlayer player) {
int ping = player.latency;
try {
executor = cmdExecutor.getPlayerOrException();
} catch(Exception ignored){
cmdExecutor.sendSuccess(LegacyChatFormat.format("{b1}The ping of {} is {b2}{}ms{b1}.", player.getScoreboardName(), ping), false);
return ping;
}
PlayerUtil.getFactoryPlayer(executor).sendMessage(
context.getSource().sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("The ping of ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(player.getScoreboardName()).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, false))
@@ -1,107 +1,108 @@
package com.nexia.core.commands.player;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.games.util.LobbyUtil;
import com.nexia.core.gui.PlayGUI;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.server.level.ServerPlayer;
import com.nexia.core.utilities.commands.CommandUtil;
public class PlayCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
register(dispatcher, "play");
register(dispatcher, "join");
dispatcher.register(Commands.literal("ffa").executes(PlayCommand::openFFAGui)
.then(Commands.literal("kits").executes(PlayCommand::playKitFFA))
.then(Commands.literal("sky").executes(PlayCommand::playSkyFFA))
.then(Commands.literal("uhc").executes(PlayCommand::playUhcFFA))
.then(Commands.literal("classic").executes(PlayCommand::playNormalFFA))
dispatcher.register(CommandUtils.literal("ffa").executes(PlayCommand::openFFAGui)
.then(CommandUtils.literal("kits").executes(PlayCommand::playKitFFA))
.then(CommandUtils.literal("sky").executes(PlayCommand::playSkyFFA))
.then(CommandUtils.literal("uhc").executes(PlayCommand::playUhcFFA))
.then(CommandUtils.literal("classic").executes(PlayCommand::playNormalFFA))
);
}
private static void register(CommandDispatcher<CommandSourceStack> dispatcher, String string) {
dispatcher.register(Commands.literal(string).executes(PlayCommand::openGUI)
.then(Commands.literal("ffa").executes(PlayCommand::openFFAGui)
.then(Commands.literal("kits").executes(PlayCommand::playKitFFA))
.then(Commands.literal("sky").executes(PlayCommand::playSkyFFA))
.then(Commands.literal("uhc").executes(PlayCommand::playUhcFFA))
.then(Commands.literal("classic").executes(PlayCommand::playNormalFFA)))
.then(Commands.literal("bedwars").executes(PlayCommand::playBedWars))
.then(Commands.literal("duels").executes(PlayCommand::playDuels))
.then(Commands.literal("skywars").executes(PlayCommand::playSkywars))
.then(Commands.literal("sw").executes(PlayCommand::playSkywars))
.then(Commands.literal("football").executes(PlayCommand::playFootball))
.then(Commands.literal("oitc").executes(PlayCommand::playOITC))
.then(Commands.literal("bw").executes(PlayCommand::playBedWars)));
private static void register(CommandDispatcher<CommandSourceInfo> dispatcher, String string) {
dispatcher.register(CommandUtils.literal(string).executes(PlayCommand::openGUI)
.then(CommandUtils.literal("ffa").executes(PlayCommand::openFFAGui)
.then(CommandUtils.literal("kits").executes(PlayCommand::playKitFFA))
.then(CommandUtils.literal("sky").executes(PlayCommand::playSkyFFA))
.then(CommandUtils.literal("uhc").executes(PlayCommand::playUhcFFA))
.then(CommandUtils.literal("classic").executes(PlayCommand::playNormalFFA)))
.then(CommandUtils.literal("bedwars").executes(PlayCommand::playBedWars))
.then(CommandUtils.literal("duels").executes(PlayCommand::playDuels))
.then(CommandUtils.literal("skywars").executes(PlayCommand::playSkywars))
.then(CommandUtils.literal("sw").executes(PlayCommand::playSkywars))
.then(CommandUtils.literal("football").executes(PlayCommand::playFootball))
.then(CommandUtils.literal("oitc").executes(PlayCommand::playOITC))
.then(CommandUtils.literal("bw").executes(PlayCommand::playBedWars)));
}
private static int openGUI(CommandContext<CommandSourceStack> context) throws CommandSyntaxException{
PlayGUI.openMainGUI(context.getSource().getPlayerOrException());
private static int openGUI(CommandContext<CommandSourceInfo> context) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
PlayGUI.openMainGUI(CommandUtil.getPlayer(context).unwrap());
return 1;
}
private static int openFFAGui(CommandContext<CommandSourceStack> context) throws CommandSyntaxException{
PlayGUI.openMainGUI(context.getSource().getPlayerOrException()).setFFALayout();
private static int openFFAGui(CommandContext<CommandSourceInfo> context){
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
PlayGUI.openMainGUI(CommandUtil.getPlayer(context).unwrap()).setFFALayout();
return 1;
}
private static int playNormalFFA(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
ServerPlayer player = context.getSource().getPlayerOrException();
LobbyUtil.sendGame(player, "classic ffa", true, true);
private static int playNormalFFA(CommandContext<CommandSourceInfo> context) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
LobbyUtil.sendGame(CommandUtil.getPlayer(context), "classic ffa", true, true);
return 1;
}
private static int playKitFFA(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
ServerPlayer player = context.getSource().getPlayerOrException();
LobbyUtil.sendGame(player, "kits ffa", true, true);
private static int playKitFFA(CommandContext<CommandSourceInfo> context) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
LobbyUtil.sendGame(CommandUtil.getPlayer(context), "kits ffa", true, true);
return 1;
}
private static int playUhcFFA(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
ServerPlayer player = context.getSource().getPlayerOrException();
LobbyUtil.sendGame(player, "uhc ffa", true, true);
private static int playUhcFFA(CommandContext<CommandSourceInfo> context) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
LobbyUtil.sendGame(CommandUtil.getPlayer(context), "uhc ffa", true, true);
return 1;
}
private static int playSkyFFA(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
ServerPlayer player = context.getSource().getPlayerOrException();
LobbyUtil.sendGame(player, "sky ffa", true, true);
private static int playSkyFFA(CommandContext<CommandSourceInfo> context) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
LobbyUtil.sendGame(CommandUtil.getPlayer(context), "sky ffa", true, true);
return 1;
}
private static int playBedWars(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
ServerPlayer player = context.getSource().getPlayerOrException();
LobbyUtil.sendGame(player, "bedwars", true, true);
private static int playBedWars(CommandContext<CommandSourceInfo> context) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
LobbyUtil.sendGame(CommandUtil.getPlayer(context), "bedwars", true, true);
return 1;
}
private static int playDuels(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
ServerPlayer player = context.getSource().getPlayerOrException();
LobbyUtil.sendGame(player, "duels", true, true);
private static int playDuels(CommandContext<CommandSourceInfo> context) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
LobbyUtil.sendGame(CommandUtil.getPlayer(context), "duels", true, true);
return 1;
}
private static int playOITC(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
ServerPlayer player = context.getSource().getPlayerOrException();
LobbyUtil.sendGame(player, "oitc", true, true);
private static int playOITC(CommandContext<CommandSourceInfo> context) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
LobbyUtil.sendGame(CommandUtil.getPlayer(context), "oitc", true, true);
return 1;
}
private static int playFootball(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
ServerPlayer player = context.getSource().getPlayerOrException();
LobbyUtil.sendGame(player, "football", true, true);
private static int playFootball(CommandContext<CommandSourceInfo> context) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
LobbyUtil.sendGame(CommandUtil.getPlayer(context), "football", true, true);
return 1;
}
private static int playSkywars(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
ServerPlayer player = context.getSource().getPlayerOrException();
LobbyUtil.sendGame(player, "skywars", true, true);
private static int playSkywars(CommandContext<CommandSourceInfo> context) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
LobbyUtil.sendGame(CommandUtil.getPlayer(context), "skywars", true, true);
return 1;
}
@@ -1,21 +1,20 @@
package com.nexia.core.commands.player;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.gui.PrefixGUI;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.server.level.ServerPlayer;
import com.nexia.core.utilities.commands.CommandUtil;
public class PrefixCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register(Commands.literal("prefix").executes(PrefixCommand::run));
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register(CommandUtils.literal("prefix").executes(PrefixCommand::run));
}
public static int run(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
ServerPlayer executer = context.getSource().getPlayerOrException();
PrefixGUI.openRankGUI(executer);
public static int run(CommandContext<CommandSourceInfo> context) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
PrefixGUI.openRankGUI(CommandUtil.getPlayer(context).unwrap());
return 1;
}
}
@@ -1,23 +1,24 @@
package com.nexia.core.commands.player;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.gui.RanksGUI;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import com.nexia.core.utilities.commands.CommandUtil;
public class RanksCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register(Commands.literal("buy").executes(RanksCommand::run));
dispatcher.register(Commands.literal("store").executes(RanksCommand::run));
dispatcher.register(Commands.literal("ranks").executes(RanksCommand::run));
dispatcher.register(Commands.literal("role").executes(RanksCommand::run));
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register(CommandUtils.literal("buy").executes(RanksCommand::run));
dispatcher.register(CommandUtils.literal("store").executes(RanksCommand::run));
dispatcher.register(CommandUtils.literal("ranks").executes(RanksCommand::run));
dispatcher.register(CommandUtils.literal("role").executes(RanksCommand::run));
}
public static int run(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
RanksGUI.openMainGUI(context.getSource().getPlayerOrException());
public static int run(CommandContext<CommandSourceInfo> context) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
RanksGUI.openMainGUI(CommandUtil.getPlayer(context).unwrap());
return 1;
}
@@ -1,21 +1,21 @@
package com.nexia.core.commands.player;
import com.combatreforged.factory.api.world.entity.player.Player;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.http.DiscordWebhook;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.player.PlayerDataManager;
import com.nexia.core.utilities.player.PlayerUtil;
import com.nexia.core.utilities.time.ServerTime;
import com.nexia.discord.Main;
import me.lucko.fabric.api.permissions.v0.Permissions;
import net.kyori.adventure.text.Component;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.arguments.EntityArgument;
import net.minecraft.commands.arguments.selector.EntitySelector;
import net.minecraft.server.level.ServerPlayer;
import java.awt.*;
@@ -41,22 +41,22 @@ public class ReportCommand {
return false;
}
}
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register(Commands.literal("report")
.then(Commands.argument("player", EntityArgument.player())
.then(Commands.argument("reason", StringArgumentType.greedyString())
.executes(context -> ReportCommand.report(context, EntityArgument.getPlayer(context, "player"), StringArgumentType.getString(context, "reason")))
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register(CommandUtils.literal("report")
.then(CommandUtils.argument("player", EntityArgument.player())
.then(CommandUtils.argument("reason", StringArgumentType.greedyString())
.executes(context -> ReportCommand.report(context, context.getArgument("player", EntitySelector.class).findSinglePlayer(CommandUtil.getCommandSourceStack(context.getSource())), StringArgumentType.getString(context, "reason")))
)
)
);
}
public static int report(CommandContext<CommandSourceStack> context, ServerPlayer player, String reason) throws CommandSyntaxException {
ServerPlayer mcExecutor = context.getSource().getPlayerOrException();
Player executor = PlayerUtil.getFactoryPlayer(mcExecutor);
public static int report(CommandContext<CommandSourceInfo> context, ServerPlayer player, String reason) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer executor = CommandUtil.getPlayer(context);
if(PlayerDataManager.get(mcExecutor).savedData.isReportBanned()) {
if(PlayerDataManager.get(executor).savedData.isReportBanned()) {
executor.sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("You are report banned!").color(ChatFormat.failColor).decoration(ChatFormat.bold, false)
@@ -66,7 +66,7 @@ public class ReportCommand {
return 1;
}
if(mcExecutor.equals(player)){
if(executor.getUUID().equals(player.getUUID())){
executor.sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("You cannot report yourself!").color(ChatFormat.failColor).decoration(ChatFormat.bold, false))
@@ -98,7 +98,7 @@ public class ReportCommand {
.append(Component.text(reason).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, false));
for (ServerPlayer staffPlayer : ServerTime.minecraftServer.getPlayerList().getPlayers()){
if(Permissions.check(staffPlayer, "nexia.staff.report", 1)) PlayerUtil.getFactoryPlayer(staffPlayer).sendMessage(staffReportMessage);
if(Permissions.check(staffPlayer, "nexia.staff.report", 1)) ServerTime.factoryServer.getPlayer(staffPlayer.getUUID()).sendMessage(staffReportMessage);
}
return 1;
@@ -1,22 +1,20 @@
package com.nexia.core.commands.player;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.Main;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.player.PlayerUtil;
import net.kyori.adventure.text.Component;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
public class RulesCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register(Commands.literal("rules").executes(RulesCommand::run));
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register(CommandUtils.literal("rules").executes(RulesCommand::run));
}
public static int run(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
public static int run(CommandContext<CommandSourceInfo> context) {
/*
Apparently this just doesn't work.....
@@ -52,7 +50,7 @@ public class RulesCommand {
message = message.append(Component.text("\n").append(ChatFormat.separatorLine(null)));
PlayerUtil.getFactoryPlayer(context.getSource().getPlayerOrException()).sendMessage(message);
context.getSource().sendMessage(message);
return 1;
}
@@ -1,35 +1,29 @@
package com.nexia.core.commands.player;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.combatreforged.factory.api.world.entity.player.Player;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.chat.PlayerMutes;
import com.nexia.core.utilities.player.PlayerUtil;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.time.ServerTime;
import me.lucko.fabric.api.permissions.v0.Permissions;
import net.kyori.adventure.text.Component;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.server.level.ServerPlayer;
import java.util.HashMap;
import java.util.UUID;
public class ShoutCommand {
private static HashMap<UUID, Long> cooldownTime = new HashMap<>();
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register(Commands.literal("shout")
.requires(context -> {
try {
return Permissions.check(context.getPlayerOrException(), "nexia.prefix.supporter");
} catch (Exception ignored) { }
return false;
})
.then(Commands.argument("message", StringArgumentType.greedyString())
private static final HashMap<UUID, Long> cooldownTime = new HashMap<>();
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register(CommandUtils.literal("shout")
.requires(commandSourceInfo -> CommandUtil.hasPermission(commandSourceInfo, "nexia.prefix.supporter"))
.then(CommandUtils.argument("message", StringArgumentType.greedyString())
.executes(context -> ShoutCommand.shout(context, StringArgumentType.getString(context, "message")))
)
);
@@ -45,18 +39,18 @@ public class ShoutCommand {
}
public static int shout(CommandContext<CommandSourceStack> context, String message) throws CommandSyntaxException {
ServerPlayer executor = context.getSource().getPlayerOrException();
public static int shout(CommandContext<CommandSourceInfo> context, String message) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer executor = CommandUtil.getPlayer(context);
if (PlayerMutes.muted(executor)) return 0;
Player factoryExecutor = PlayerUtil.getFactoryPlayer(executor);
if(ShoutCommand.cooldownTime.get(executor.getUUID()) == null) ShoutCommand.cooldownTime.put(executor.getUUID(), System.currentTimeMillis());
long longTime = ShoutCommand.cooldownTime.get(executor.getUUID());
if(longTime - System.currentTimeMillis() > 0) {
String time = ShoutCommand.timeToText(longTime - System.currentTimeMillis());
factoryExecutor.sendMessage(ChatFormat.nexiaMessage.append(
executor.sendMessage(ChatFormat.nexiaMessage.append(
Component.text("You are still on cooldown, you have ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false)
.append(Component.text(time).color(ChatFormat.brandColor1).decoration(ChatFormat.bold, true))
.append(Component.text(" left!").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
@@ -64,7 +58,7 @@ public class ShoutCommand {
return 0;
}
Component cmessage = Component.text(factoryExecutor.getRawName()).color(ChatFormat.brandColor1).decoration(ChatFormat.bold, true)
Component cmessage = Component.text(executor.getRawName()).color(ChatFormat.brandColor1).decoration(ChatFormat.bold, true)
.append(Component.text( " shouts: " + message).color(ChatFormat.normalColor).decoration(ChatFormat.bold, false)
);
@@ -1,16 +1,17 @@
package com.nexia.core.commands.player;
import com.combatreforged.factory.api.world.entity.player.Player;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.combatreforged.factory.api.world.types.Minecraft;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.games.util.LobbyUtil;
import com.nexia.core.games.util.PlayerGameMode;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.player.PlayerData;
import com.nexia.core.utilities.player.PlayerDataManager;
import com.nexia.core.utilities.player.PlayerUtil;
import com.nexia.ffa.FfaUtil;
import com.nexia.minigames.games.duels.DuelGameMode;
import com.nexia.minigames.games.duels.gamemodes.GamemodeHandler;
@@ -18,47 +19,49 @@ import me.lucko.fabric.api.permissions.v0.Permissions;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.event.ClickEvent;
import net.kyori.adventure.text.event.HoverEvent;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.arguments.EntityArgument;
import net.minecraft.commands.arguments.selector.EntitySelector;
import net.minecraft.server.level.ServerPlayer;
import net.notcoded.codelib.players.AccuratePlayer;
public class SpectateCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register(Commands.literal("spectate")
.requires(commandSourceStack -> {
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register(CommandUtils.literal("spectate")
.requires(commandSourceInfo -> {
try {
com.nexia.minigames.games.duels.util.player.PlayerData playerData = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(commandSourceStack.getPlayerOrException());
PlayerData playerData1 = PlayerDataManager.get(commandSourceStack.getPlayerOrException());
if(!CommandUtil.checkPlayerInCommand(commandSourceInfo)) return false;
NexiaPlayer player = CommandUtil.getPlayer(commandSourceInfo);
assert player != null;
com.nexia.minigames.games.duels.util.player.PlayerData playerData = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player);
PlayerData playerData1 = PlayerDataManager.get(player);
return (playerData.gameMode == DuelGameMode.LOBBY && playerData1.gameMode == PlayerGameMode.LOBBY) || (playerData1.gameMode == PlayerGameMode.FFA);
} catch (Exception ignored) {
}
return false;
})
.executes(SpectateCommand::gameModeSpectate)
.then(Commands.argument("player", EntityArgument.player())
.executes(context -> SpectateCommand.spectate(context, EntityArgument.getPlayer(context, "player")))
.then(CommandUtils.argument("player", EntityArgument.player())
.executes(context -> SpectateCommand.spectate(context, context.getArgument("player", EntitySelector.class).findSinglePlayer(CommandUtil.getCommandSourceStack(context.getSource()))))
)
);
}
public static int gameModeSpectate(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
ServerPlayer executor = context.getSource().getPlayerOrException();
Player factoryExecutor = PlayerUtil.getFactoryPlayer(executor);
public static int gameModeSpectate(CommandContext<CommandSourceInfo> context) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer executor = CommandUtil.getPlayer(context);
if(PlayerDataManager.get(executor).gameMode != PlayerGameMode.FFA) {
factoryExecutor.sendMessage(ChatFormat.nexiaMessage.append(
executor.sendMessage(ChatFormat.nexiaMessage.append(
Component.text("This can only be used in FFA!").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false)
));
factoryExecutor.sendMessage(ChatFormat.nexiaMessage.append(
executor.sendMessage(ChatFormat.nexiaMessage.append(
Component.text("If you are in duels then you do /spectate <player>.").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false)
));
return 0;
}
if(!Permissions.check(executor, "nexia.prefix.supporter")) {
factoryExecutor.sendMessage(ChatFormat.nexiaMessage.append(
if(!Permissions.check(executor.unwrap(), "nexia.prefix.supporter")) {
executor.sendMessage(ChatFormat.nexiaMessage.append(
Component.text("This feature is only available for").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false)
.append(Component.text("Supporters")
.color(ChatFormat.brandColor1)
@@ -73,33 +76,34 @@ public class SpectateCommand {
);
}
if(LobbyUtil.checkGameModeBan(factoryExecutor, executor, "ffa")) {
if(LobbyUtil.checkGameModeBan(executor, "ffa")) {
return 0;
}
if(Math.round(factoryExecutor.getHealth()) < 20) {
factoryExecutor.sendMessage(ChatFormat.nexiaMessage.append(
if(Math.round(executor.getHealth()) < 20) {
executor.sendMessage(ChatFormat.nexiaMessage.append(
Component.text("You must be fully healed to go into spectator!").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
);
return 0;
}
factoryExecutor.setGameMode(Minecraft.GameMode.SPECTATOR);
executor.setGameMode(Minecraft.GameMode.SPECTATOR);
return 1;
}
public static int spectate(CommandContext<CommandSourceStack> context, ServerPlayer player) throws CommandSyntaxException {
ServerPlayer executor = context.getSource().getPlayerOrException();
Player factoryExecutor = PlayerUtil.getFactoryPlayer(executor);
public static int spectate(CommandContext<CommandSourceInfo> context, ServerPlayer player) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer nexiaExecutor = new NexiaPlayer(CommandUtil.getPlayer(context));
NexiaPlayer nexiaPlayer = new NexiaPlayer(player);
if(PlayerDataManager.get(player).gameMode == PlayerGameMode.LOBBY) {
GamemodeHandler.spectatePlayer(AccuratePlayer.create(executor), AccuratePlayer.create(player));
if(PlayerDataManager.get(nexiaPlayer).gameMode == PlayerGameMode.LOBBY) {
GamemodeHandler.spectatePlayer(nexiaExecutor, nexiaPlayer);
return 1;
}
if(!Permissions.check(executor, "nexia.prefix.supporter")) {
factoryExecutor.sendMessage(ChatFormat.nexiaMessage.append(
if(!Permissions.check(nexiaExecutor.unwrap(), "nexia.prefix.supporter")) {
nexiaExecutor.sendMessage(ChatFormat.nexiaMessage.append(
Component.text("This feature is only available for").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false)
.append(Component.text("Supporters")
.color(ChatFormat.brandColor1)
@@ -114,37 +118,37 @@ public class SpectateCommand {
);
}
if(LobbyUtil.checkGameModeBan(factoryExecutor, executor, "ffa")) {
if(LobbyUtil.checkGameModeBan(nexiaExecutor, "ffa")) {
return 0;
}
if(PlayerDataManager.get(executor).gameMode != PlayerGameMode.FFA) {
factoryExecutor.sendMessage(ChatFormat.nexiaMessage.append(
if(PlayerDataManager.get(nexiaExecutor).gameMode != PlayerGameMode.FFA) {
nexiaExecutor.sendMessage(ChatFormat.nexiaMessage.append(
Component.text("This can only be used in FFA!").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false)
));
factoryExecutor.sendMessage(ChatFormat.nexiaMessage.append(
nexiaExecutor.sendMessage(ChatFormat.nexiaMessage.append(
Component.text("If you are in duels then you do /spectate <player>.").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false)
));
return 0;
}
if(!FfaUtil.isFfaPlayer(player)) {
factoryExecutor.sendMessage(ChatFormat.nexiaMessage.append(
if(!FfaUtil.isFfaPlayer(nexiaPlayer)) {
nexiaExecutor.sendMessage(ChatFormat.nexiaMessage.append(
Component.text("That player is not in FFA!").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false)
));
}
// Check if player is in combat (or full health), then put them in spectator.
if(Math.round(factoryExecutor.getHealth()) < 20) {
factoryExecutor.sendMessage(ChatFormat.nexiaMessage.append(
if(Math.round(nexiaExecutor.getHealth()) < 20) {
nexiaExecutor.sendMessage(ChatFormat.nexiaMessage.append(
Component.text("You must be fully healed to go into spectator!").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
);
return 0;
}
factoryExecutor.setGameMode(Minecraft.GameMode.SPECTATOR);
executor.teleportTo(player.getLevel(), player.getX(), player.getY(), player.getZ(), 0, 0);
nexiaExecutor.setGameMode(Minecraft.GameMode.SPECTATOR);
nexiaExecutor.teleport(nexiaPlayer.getLocation());
return 1;
}
@@ -1,27 +1,27 @@
package com.nexia.core.commands.player;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.player.PlayerDataManager;
import com.nexia.core.utilities.player.PlayerUtil;
import com.nexia.core.utilities.player.SavedPlayerData;
import net.kyori.adventure.text.Component;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.server.level.ServerPlayer;
public class SprintFixCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register(Commands.literal("sprintfix").executes(SprintFixCommand::run));
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register(CommandUtils.literal("sprintfix").executes(SprintFixCommand::run));
}
public static int run(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
ServerPlayer player = context.getSource().getPlayerOrException();
public static int run(CommandContext<CommandSourceInfo> context) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer player = CommandUtil.getPlayer(context);
SavedPlayerData data = PlayerDataManager.get(player).savedData;
PlayerUtil.getFactoryPlayer(player).sendMessage(ChatFormat.nexiaMessage.append(Component.text((data.setSprintFix(!data.isSprintFix()) ? "Enabled" : "Disabled") + " Sprint Fix!").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false)));
player.sendMessage(ChatFormat.nexiaMessage.append(Component.text((data.setSprintFix(!data.isSprintFix()) ? "Enabled" : "Disabled") + " Sprint Fix!").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false)));
return 1;
}
@@ -1,89 +1,85 @@
package com.nexia.core.commands.player;
import com.combatreforged.factory.api.world.entity.player.Player;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.games.util.LobbyUtil;
import com.nexia.core.games.util.PlayerGameMode;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.player.PlayerData;
import com.nexia.core.utilities.player.PlayerUtil;
import com.nexia.ffa.FfaGameMode;
import com.nexia.ffa.classic.utilities.player.PlayerDataManager;
import com.nexia.ffa.classic.utilities.player.SavedPlayerData;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.SharedSuggestionProvider;
import net.minecraft.commands.arguments.EntityArgument;
import net.minecraft.commands.arguments.selector.EntitySelector;
import net.minecraft.server.level.ServerPlayer;
import java.text.DecimalFormat;
public class StatsCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register(Commands.literal("stats").executes(StatsCommand::run)
.then(Commands.argument("player", EntityArgument.player())
.then(Commands.argument("gamemode", StringArgumentType.greedyString())
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register(CommandUtils.literal("stats").executes(StatsCommand::run)
.then(CommandUtils.argument("player", EntityArgument.player())
.then(CommandUtils.argument("gamemode", StringArgumentType.greedyString())
.suggests(((context, builder) -> SharedSuggestionProvider.suggest((LobbyUtil.statsGameModes), builder)))
.executes(context -> StatsCommand.other(context, EntityArgument.getPlayer(context, "player"), StringArgumentType.getString(context, "gamemode")))))
.executes(context -> StatsCommand.other(context, context.getArgument("player", EntitySelector.class).findSinglePlayer(CommandUtil.getCommandSourceStack(context.getSource())), StringArgumentType.getString(context, "gamemode")))))
);
}
public static int run(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
ServerPlayer mcPlayer = context.getSource().getPlayerOrException();
PlayerData executerData = com.nexia.core.utilities.player.PlayerDataManager.get(mcPlayer);
Player player = PlayerUtil.getFactoryPlayer(mcPlayer);
public static int run(CommandContext<CommandSourceInfo> context) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer player = CommandUtil.getPlayer(context);
PlayerData playerData = com.nexia.core.utilities.player.PlayerDataManager.get(player);
Component start = Component.text(" »").color(NamedTextColor.GRAY);
Component user = start
.append(Component.text(" User: ").color(ChatFormat.brandColor2))
.append(Component.text(player.getRawName()).color(ChatFormat.normalColor))
;
.append(Component.text(player.getRawName()).color(ChatFormat.normalColor));
Component message;
if(executerData.gameMode == PlayerGameMode.FFA){
if(playerData.gameMode == PlayerGameMode.FFA){
message = ChatFormat.separatorLine("FFA Classic Stats");
SavedPlayerData data = PlayerDataManager.get(mcPlayer).savedData;
SavedPlayerData data = PlayerDataManager.get(player).savedData;
int kills = data.kills;
int deaths = data.deaths;
int killstreak = data.killstreak;
int bestKillstreak = data.bestKillstreak;
long rating = 0;
if(executerData.ffaGameMode == FfaGameMode.KITS) {
if(playerData.ffaGameMode == FfaGameMode.KITS) {
message = ChatFormat.separatorLine("Kit FFA Stats");
com.nexia.ffa.kits.utilities.player.SavedPlayerData kData = com.nexia.ffa.kits.utilities.player.PlayerDataManager.get(mcPlayer).savedData;
com.nexia.ffa.kits.utilities.player.SavedPlayerData kData = com.nexia.ffa.kits.utilities.player.PlayerDataManager.get(player).savedData;
kills = kData.kills;
deaths = kData.deaths;
killstreak = kData.killstreak;
bestKillstreak = kData.bestKillstreak;
rating = Math.round(kData.rating * 100);
}
if(executerData.ffaGameMode == FfaGameMode.UHC) {
if(playerData.ffaGameMode == FfaGameMode.UHC) {
message = ChatFormat.separatorLine("UHC FFA Stats");
com.nexia.ffa.uhc.utilities.player.SavedPlayerData kData = com.nexia.ffa.uhc.utilities.player.PlayerDataManager.get(mcPlayer).savedData;
com.nexia.ffa.uhc.utilities.player.SavedPlayerData kData = com.nexia.ffa.uhc.utilities.player.PlayerDataManager.get(player).savedData;
kills = kData.kills;
deaths = kData.deaths;
killstreak = kData.killstreak;
bestKillstreak = kData.bestKillstreak;
}
if(executerData.ffaGameMode == FfaGameMode.SKY) {
if(playerData.ffaGameMode == FfaGameMode.SKY) {
message = ChatFormat.separatorLine("Sky FFA Stats");
com.nexia.ffa.sky.utilities.player.SavedPlayerData kData = com.nexia.ffa.sky.utilities.player.PlayerDataManager.get(mcPlayer).savedData;
com.nexia.ffa.sky.utilities.player.SavedPlayerData kData = com.nexia.ffa.sky.utilities.player.PlayerDataManager.get(player).savedData;
kills = kData.kills;
deaths = kData.deaths;
killstreak = kData.killstreak;
@@ -112,18 +108,11 @@ public class StatsCommand {
.append(Component.text("/").color(ChatFormat.arrowColor))
.append(Component.text(bestKillstreak).color(ChatFormat.goldColor))
);
if (executerData.ffaGameMode == FfaGameMode.KITS) {
player.sendMessage(start
.append(Component.text(" Rating: ").color(ChatFormat.brandColor2))
.append(Component.text(rating).color(ChatFormat.goldColor))
);
}
}
if(executerData.gameMode == PlayerGameMode.LOBBY){
if(playerData.gameMode == PlayerGameMode.LOBBY){
message = ChatFormat.separatorLine("Duels Stats");
com.nexia.minigames.games.duels.util.player.SavedPlayerData data = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(mcPlayer).savedData;
com.nexia.minigames.games.duels.util.player.SavedPlayerData data = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player).savedData;
player.sendMessage(message);
player.sendMessage(user);
player.sendMessage(start
@@ -137,9 +126,9 @@ public class StatsCommand {
}
if(executerData.gameMode == PlayerGameMode.BEDWARS){
if(playerData.gameMode == PlayerGameMode.BEDWARS){
message = ChatFormat.separatorLine("Bedwars Stats");
com.nexia.minigames.games.bedwars.util.player.SavedPlayerData data = com.nexia.minigames.games.bedwars.util.player.PlayerDataManager.get(mcPlayer).savedData;
com.nexia.minigames.games.bedwars.util.player.SavedPlayerData data = com.nexia.minigames.games.bedwars.util.player.PlayerDataManager.get(player).savedData;
player.sendMessage(message);
player.sendMessage(user);
player.sendMessage(start
@@ -156,9 +145,9 @@ public class StatsCommand {
);
}
if(executerData.gameMode == PlayerGameMode.OITC){
if(playerData.gameMode == PlayerGameMode.OITC){
message = ChatFormat.separatorLine("OITC Stats");
com.nexia.minigames.games.oitc.util.player.SavedPlayerData data = com.nexia.minigames.games.oitc.util.player.PlayerDataManager.get(mcPlayer).savedData;
com.nexia.minigames.games.oitc.util.player.SavedPlayerData data = com.nexia.minigames.games.oitc.util.player.PlayerDataManager.get(player).savedData;
player.sendMessage(message);
player.sendMessage(user);
@@ -176,9 +165,9 @@ public class StatsCommand {
);
}
if(executerData.gameMode == PlayerGameMode.FOOTBALL){
if(playerData.gameMode == PlayerGameMode.FOOTBALL){
message = ChatFormat.separatorLine("Football Stats");
com.nexia.minigames.games.football.util.player.SavedPlayerData data = com.nexia.minigames.games.football.util.player.PlayerDataManager.get(mcPlayer).savedData;
com.nexia.minigames.games.football.util.player.SavedPlayerData data = com.nexia.minigames.games.football.util.player.PlayerDataManager.get(player).savedData;
player.sendMessage(message);
player.sendMessage(user);
@@ -196,9 +185,9 @@ public class StatsCommand {
);
}
if(executerData.gameMode == PlayerGameMode.SKYWARS){
if(playerData.gameMode == PlayerGameMode.SKYWARS){
message = ChatFormat.separatorLine("SkyWars Stats");
com.nexia.minigames.games.skywars.util.player.SavedPlayerData data = com.nexia.minigames.games.skywars.util.player.PlayerDataManager.get(mcPlayer).savedData;
com.nexia.minigames.games.skywars.util.player.SavedPlayerData data = com.nexia.minigames.games.skywars.util.player.PlayerDataManager.get(player).savedData;
player.sendMessage(message);
player.sendMessage(user);
@@ -225,11 +214,10 @@ public class StatsCommand {
return Float.parseFloat(new DecimalFormat("#.##").format((float) kills / deaths));
}
public static int other(CommandContext<CommandSourceStack> context, ServerPlayer otherPlayer, String gamemode) throws CommandSyntaxException {
ServerPlayer mcPlayer = context.getSource().getPlayerOrException();
Player player = PlayerUtil.getFactoryPlayer(mcPlayer);
public static int other(CommandContext<CommandSourceInfo> context, ServerPlayer otherPlayer, String gamemode) {
CommandSourceInfo source = context.getSource();
Component start = Component.text(" »").color(NamedTextColor.GRAY);
Component start = Component.text(" »").color(ChatFormat.arrowColor);
Component user = start
.append(Component.text(" User: ").color(ChatFormat.brandColor2))
@@ -242,27 +230,25 @@ public class StatsCommand {
if(gamemode.equalsIgnoreCase("ffa classic") || gamemode.equalsIgnoreCase("kit ffa") || gamemode.equalsIgnoreCase("sky ffa") || gamemode.equalsIgnoreCase("uhc ffa")){
message = ChatFormat.separatorLine("FFA Classic Stats");
SavedPlayerData data = PlayerDataManager.get(otherPlayer).savedData;
SavedPlayerData data = PlayerDataManager.get(otherPlayer.getUUID()).savedData;
int kills = data.kills;
int deaths = data.deaths;
int killstreak = data.killstreak;
int bestKillstreak = data.bestKillstreak;
long rating = 0;
if(gamemode.equalsIgnoreCase("kit ffa")) {
message = ChatFormat.separatorLine("Kit FFA Stats");
com.nexia.ffa.kits.utilities.player.SavedPlayerData kData = com.nexia.ffa.kits.utilities.player.PlayerDataManager.get(otherPlayer).savedData;
com.nexia.ffa.kits.utilities.player.SavedPlayerData kData = com.nexia.ffa.kits.utilities.player.PlayerDataManager.get(otherPlayer.getUUID()).savedData;
kills = kData.kills;
deaths = kData.deaths;
killstreak = kData.killstreak;
bestKillstreak = kData.bestKillstreak;
rating = Math.round(kData.rating * 100);
}
if(gamemode.equalsIgnoreCase("sky ffa")) {
message = ChatFormat.separatorLine("Sky FFA Stats");
com.nexia.ffa.sky.utilities.player.SavedPlayerData kData = com.nexia.ffa.sky.utilities.player.PlayerDataManager.get(otherPlayer).savedData;
com.nexia.ffa.sky.utilities.player.SavedPlayerData kData = com.nexia.ffa.sky.utilities.player.PlayerDataManager.get(otherPlayer.getUUID()).savedData;
kills = kData.kills;
deaths = kData.deaths;
killstreak = kData.killstreak;
@@ -271,54 +257,47 @@ public class StatsCommand {
if(gamemode.equalsIgnoreCase("uhc ffa")) {
message = ChatFormat.separatorLine("UHC FFA Stats");
com.nexia.ffa.uhc.utilities.player.SavedPlayerData kData = com.nexia.ffa.uhc.utilities.player.PlayerDataManager.get(otherPlayer).savedData;
com.nexia.ffa.uhc.utilities.player.SavedPlayerData kData = com.nexia.ffa.uhc.utilities.player.PlayerDataManager.get(otherPlayer.getUUID()).savedData;
kills = kData.kills;
deaths = kData.deaths;
killstreak = kData.killstreak;
bestKillstreak = kData.bestKillstreak;
}
player.sendMessage(message);
player.sendMessage(user);
player.sendMessage(start
source.sendMessage(message);
source.sendMessage(user);
source.sendMessage(start
.append(Component.text(" Kills: ").color(ChatFormat.brandColor2))
.append(Component.text(kills).color(ChatFormat.greenColor))
);
player.sendMessage(start
source.sendMessage(start
.append(Component.text(" Deaths: ").color(ChatFormat.brandColor2))
.append(Component.text(deaths).color(ChatFormat.failColor))
);
player.sendMessage(start
source.sendMessage(start
.append(Component.text(" KDR: ").color(ChatFormat.brandColor2))
.append(Component.text(calculateKDR(kills, deaths)).color(ChatFormat.greenColor))
);
player.sendMessage(start
source.sendMessage(start
.append(Component.text(" Killstreak: ").color(ChatFormat.brandColor2))
.append(Component.text(killstreak).color(ChatFormat.goldColor))
.append(Component.text("/").color(ChatFormat.arrowColor))
.append(Component.text(bestKillstreak).color(ChatFormat.goldColor))
);
if(gamemode.equalsIgnoreCase("kit ffa")) {
player.sendMessage(start
.append(Component.text(" Rating: ").color(ChatFormat.brandColor2))
.append(Component.text(rating).color(ChatFormat.goldColor))
);
}
}
if(gamemode.equalsIgnoreCase("duels")){
message = ChatFormat.separatorLine("Duels Stats");
com.nexia.minigames.games.duels.util.player.SavedPlayerData data = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(otherPlayer).savedData;
player.sendMessage(message);
player.sendMessage(user);
player.sendMessage(start
com.nexia.minigames.games.duels.util.player.SavedPlayerData data = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(otherPlayer.getUUID()).savedData;
source.sendMessage(message);
source.sendMessage(user);
source.sendMessage(start
.append(Component.text(" Wins: ").color(ChatFormat.brandColor2))
.append(Component.text(data.wins).color(ChatFormat.greenColor))
);
player.sendMessage(start
source.sendMessage(start
.append(Component.text(" Losses: ").color(ChatFormat.brandColor2))
.append(Component.text(data.loss).color(ChatFormat.failColor))
);
@@ -327,18 +306,18 @@ public class StatsCommand {
if(gamemode.equalsIgnoreCase("bedwars")){
message = ChatFormat.separatorLine("Bedwars Stats");
com.nexia.minigames.games.bedwars.util.player.SavedPlayerData data = com.nexia.minigames.games.bedwars.util.player.PlayerDataManager.get(otherPlayer).savedData;
player.sendMessage(message);
player.sendMessage(user);
player.sendMessage(start
com.nexia.minigames.games.bedwars.util.player.SavedPlayerData data = com.nexia.minigames.games.bedwars.util.player.PlayerDataManager.get(otherPlayer.getUUID()).savedData;
source.sendMessage(message);
source.sendMessage(user);
source.sendMessage(start
.append(Component.text(" Wins: ").color(ChatFormat.brandColor2))
.append(Component.text(data.wins).color(ChatFormat.greenColor))
);
player.sendMessage(start
source.sendMessage(start
.append(Component.text(" Losses: ").color(ChatFormat.brandColor2))
.append(Component.text(data.loss).color(ChatFormat.failColor))
);
player.sendMessage(start
source.sendMessage(start
.append(Component.text(" Beds broken: ").color(ChatFormat.brandColor2))
.append(Component.text(data.bedsBroken).color(ChatFormat.failColor))
);
@@ -346,19 +325,19 @@ public class StatsCommand {
if(gamemode.equalsIgnoreCase("oitc")){
message = ChatFormat.separatorLine("OITC Stats");
com.nexia.minigames.games.oitc.util.player.SavedPlayerData data = com.nexia.minigames.games.oitc.util.player.PlayerDataManager.get(otherPlayer).savedData;
com.nexia.minigames.games.oitc.util.player.SavedPlayerData data = com.nexia.minigames.games.oitc.util.player.PlayerDataManager.get(otherPlayer.getUUID()).savedData;
player.sendMessage(message);
player.sendMessage(user);
player.sendMessage(start
source.sendMessage(message);
source.sendMessage(user);
source.sendMessage(start
.append(Component.text(" Wins: ").color(ChatFormat.brandColor2))
.append(Component.text(data.wins).color(ChatFormat.greenColor))
);
player.sendMessage(start
source.sendMessage(start
.append(Component.text(" Losses: ").color(ChatFormat.brandColor2))
.append(Component.text(data.loss).color(ChatFormat.failColor))
);
player.sendMessage(start
source.sendMessage(start
.append(Component.text(" Kills: ").color(ChatFormat.brandColor2))
.append(Component.text(data.kills).color(ChatFormat.failColor))
);
@@ -366,19 +345,19 @@ public class StatsCommand {
if(gamemode.equalsIgnoreCase("football")){
message = ChatFormat.separatorLine("Football Stats");
com.nexia.minigames.games.football.util.player.SavedPlayerData data = com.nexia.minigames.games.football.util.player.PlayerDataManager.get(otherPlayer).savedData;
com.nexia.minigames.games.football.util.player.SavedPlayerData data = com.nexia.minigames.games.football.util.player.PlayerDataManager.get(otherPlayer.getUUID()).savedData;
player.sendMessage(message);
player.sendMessage(user);
player.sendMessage(start
source.sendMessage(message);
source.sendMessage(user);
source.sendMessage(start
.append(Component.text(" Wins: ").color(ChatFormat.brandColor2))
.append(Component.text(data.wins).color(ChatFormat.greenColor))
);
player.sendMessage(start
source.sendMessage(start
.append(Component.text(" Losses: ").color(ChatFormat.brandColor2))
.append(Component.text(data.loss).color(ChatFormat.failColor))
);
player.sendMessage(start
source.sendMessage(start
.append(Component.text(" Goals: ").color(ChatFormat.brandColor2))
.append(Component.text(data.goals).color(ChatFormat.failColor))
);
@@ -386,24 +365,24 @@ public class StatsCommand {
if(gamemode.equalsIgnoreCase("skywars")){
message = ChatFormat.separatorLine("SkyWars Stats");
com.nexia.minigames.games.skywars.util.player.SavedPlayerData data = com.nexia.minigames.games.skywars.util.player.PlayerDataManager.get(otherPlayer).savedData;
com.nexia.minigames.games.skywars.util.player.SavedPlayerData data = com.nexia.minigames.games.skywars.util.player.PlayerDataManager.get(otherPlayer.getUUID()).savedData;
player.sendMessage(message);
player.sendMessage(user);
player.sendMessage(start
source.sendMessage(message);
source.sendMessage(user);
source.sendMessage(start
.append(Component.text(" Wins: ").color(ChatFormat.brandColor2))
.append(Component.text(data.wins).color(ChatFormat.greenColor))
);
player.sendMessage(start
source.sendMessage(start
.append(Component.text(" Losses: ").color(ChatFormat.brandColor2))
.append(Component.text(data.losses).color(ChatFormat.failColor))
);
player.sendMessage(start
source.sendMessage(start
.append(Component.text(" Kills: ").color(ChatFormat.brandColor2))
.append(Component.text(data.kills).color(ChatFormat.failColor))
);
}
player.sendMessage(ChatFormat.separatorLine(null));
source.sendMessage(ChatFormat.separatorLine(null));
return 1;
}
@@ -1,44 +1,52 @@
package com.nexia.core.commands.player.duels;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.games.util.PlayerGameMode;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.player.PlayerData;
import com.nexia.core.utilities.player.PlayerDataManager;
import com.nexia.minigames.games.duels.DuelGameMode;
import com.nexia.minigames.games.duels.gamemodes.GamemodeHandler;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.arguments.EntityArgument;
import net.minecraft.commands.arguments.selector.EntitySelector;
import net.minecraft.server.level.ServerPlayer;
public class AcceptDuelCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
register(dispatcher, "acceptduel");
register(dispatcher, "acceptchallenge");
}
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, String string) {
dispatcher.register(Commands.literal(string)
.requires(commandSourceStack -> {
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher, String string) {
dispatcher.register(CommandUtils.literal(string)
.requires(commandSourceInfo -> {
try {
com.nexia.minigames.games.duels.util.player.PlayerData playerData = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(commandSourceStack.getPlayerOrException());
PlayerData playerData1 = PlayerDataManager.get(commandSourceStack.getPlayerOrException());
if(!CommandUtil.checkPlayerInCommand(commandSourceInfo)) return false;
NexiaPlayer player = CommandUtil.getPlayer(commandSourceInfo);
com.nexia.minigames.games.duels.util.player.PlayerData playerData = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player);
PlayerData playerData1 = PlayerDataManager.get(player);
return playerData.gameMode == DuelGameMode.LOBBY && playerData1.gameMode == PlayerGameMode.LOBBY;
} catch (Exception ignored) {
}
return false;
})
.then(Commands.argument("player", EntityArgument.player())
.executes(context -> AcceptDuelCommand.accept(context, EntityArgument.getPlayer(context, "player")))
.then(CommandUtils.argument("player", EntityArgument.player())
.executes(context -> AcceptDuelCommand.accept(context, context.getArgument("player", EntitySelector.class).findSinglePlayer(CommandUtil.getCommandSourceStack(context.getSource()))))
)
);
}
public static int accept(CommandContext<CommandSourceStack> context, ServerPlayer player) throws CommandSyntaxException {
GamemodeHandler.acceptDuel(context.getSource().getPlayerOrException(), player);
public static int accept(CommandContext<CommandSourceInfo> context, ServerPlayer player) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer executor = new NexiaPlayer(CommandUtil.getPlayer(context));
GamemodeHandler.acceptDuel(executor, new NexiaPlayer(player));
return 1;
}
}
@@ -1,43 +1,52 @@
package com.nexia.core.commands.player.duels;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.games.util.PlayerGameMode;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.player.PlayerData;
import com.nexia.core.utilities.player.PlayerDataManager;
import com.nexia.minigames.games.duels.DuelGameMode;
import com.nexia.minigames.games.duels.gamemodes.GamemodeHandler;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.arguments.EntityArgument;
import net.minecraft.commands.arguments.selector.EntitySelector;
import net.minecraft.server.level.ServerPlayer;
public class DeclineDuelCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
register(dispatcher, "declineduel");
register(dispatcher, "declinechallenge");
}
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, String string) {
dispatcher.register(Commands.literal(string)
.requires(commandSourceStack -> {
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher, String string) {
dispatcher.register(CommandUtils.literal(string)
.requires(commandSourceInfo -> {
try {
com.nexia.minigames.games.duels.util.player.PlayerData playerData = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(commandSourceStack.getPlayerOrException());
PlayerData playerData1 = PlayerDataManager.get(commandSourceStack.getPlayerOrException());
if(!CommandUtil.checkPlayerInCommand(commandSourceInfo)) return false;
NexiaPlayer player = CommandUtil.getPlayer(commandSourceInfo);
assert player != null;
com.nexia.minigames.games.duels.util.player.PlayerData playerData = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player);
PlayerData playerData1 = PlayerDataManager.get(player);
return playerData.gameMode == DuelGameMode.LOBBY && playerData1.gameMode == PlayerGameMode.LOBBY;
} catch (Exception ignored) {
}
return false;
})
.then(Commands.argument("player", EntityArgument.player())
.executes(context -> DeclineDuelCommand.decline(context, EntityArgument.getPlayer(context, "player")))
.then(CommandUtils.argument("player", EntityArgument.player())
.executes(context -> DeclineDuelCommand.decline(context, context.getArgument("player", EntitySelector.class).findSinglePlayer(CommandUtil.getCommandSourceStack(context.getSource()))))
)
);
}
public static int decline(CommandContext<CommandSourceStack> context, ServerPlayer player) throws CommandSyntaxException {
GamemodeHandler.declineDuel(context.getSource().getPlayerOrException(), player);
public static int decline(CommandContext<CommandSourceInfo> context, ServerPlayer player) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer executor = new NexiaPlayer(CommandUtil.getPlayer(context));
GamemodeHandler.declineDuel(executor, new NexiaPlayer(player));
return 1;
}
}
@@ -1,55 +1,69 @@
package com.nexia.core.commands.player.duels;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.games.util.PlayerGameMode;
import com.nexia.core.gui.duels.DuelGUI;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.player.PlayerData;
import com.nexia.core.utilities.player.PlayerDataManager;
import com.nexia.minigames.games.duels.DuelGameMode;
import com.nexia.minigames.games.duels.gamemodes.GamemodeHandler;
import com.nexia.minigames.games.duels.map.DuelsMap;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.SharedSuggestionProvider;
import net.minecraft.commands.arguments.EntityArgument;
import net.minecraft.commands.arguments.selector.EntitySelector;
import net.minecraft.server.level.ServerPlayer;
import org.jetbrains.annotations.Nullable;
public class DuelCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
register(dispatcher, "duel");
register(dispatcher, "challenge");
}
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, String string) {
dispatcher.register(Commands.literal(string)
.requires(commandSourceStack -> {
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher, String string) {
dispatcher.register(CommandUtils.literal(string)
.requires(commandSourceInfo -> {
try {
com.nexia.minigames.games.duels.util.player.PlayerData playerData = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(commandSourceStack.getPlayerOrException());
PlayerData playerData1 = PlayerDataManager.get(commandSourceStack.getPlayerOrException());
if(!CommandUtil.checkPlayerInCommand(commandSourceInfo)) return false;
NexiaPlayer player = CommandUtil.getPlayer(commandSourceInfo);
assert player != null;
com.nexia.minigames.games.duels.util.player.PlayerData playerData = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player);
PlayerData playerData1 = PlayerDataManager.get(player);
return playerData.gameMode == DuelGameMode.LOBBY && playerData1.gameMode == PlayerGameMode.LOBBY;
} catch (Exception ignored) {
}
return false;
})
.then(Commands.argument("player", EntityArgument.player())
.executes(context -> DuelGUI.openDuelGui(context.getSource().getPlayerOrException(), EntityArgument.getPlayer(context, "player")))
.then(Commands.argument("gamemode", StringArgumentType.string())
.then(CommandUtils.argument("player", EntityArgument.player())
.executes(context -> {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer player = new NexiaPlayer(CommandUtil.getPlayer(context));
DuelGUI.openDuelGui(player.unwrap(), context.getArgument("player", EntitySelector.class).findSinglePlayer(CommandUtil.getCommandSourceStack(context.getSource())));
return 1;
})
.then(CommandUtils.argument("gamemode", StringArgumentType.string())
.suggests(((context, builder) -> SharedSuggestionProvider.suggest((DuelGameMode.stringDuelGameModes), builder)))
.executes(context -> DuelCommand.challenge(context, EntityArgument.getPlayer(context, "player"), StringArgumentType.getString(context, "gamemode"), null))
.then(Commands.argument("map", StringArgumentType.string())
.executes(context -> DuelCommand.challenge(context, context.getArgument("player", EntitySelector.class).findSinglePlayer(CommandUtil.getCommandSourceStack(context.getSource())), StringArgumentType.getString(context, "gamemode"), null))
.then(CommandUtils.argument("map", StringArgumentType.string())
.suggests(((context, builder) -> SharedSuggestionProvider.suggest((DuelsMap.stringDuelsMaps), builder)))
.executes(context -> DuelCommand.challenge(context, EntityArgument.getPlayer(context, "player"), StringArgumentType.getString(context, "gamemode"), StringArgumentType.getString(context, "map")))
.executes(context -> DuelCommand.challenge(context, context.getArgument("player", EntitySelector.class).findSinglePlayer(CommandUtil.getCommandSourceStack(context.getSource())), StringArgumentType.getString(context, "gamemode"), StringArgumentType.getString(context, "map")))
))));
}
public static int challenge(CommandContext<CommandSourceStack> context, ServerPlayer player, String gameMode, @Nullable String map) throws CommandSyntaxException {
ServerPlayer executer = context.getSource().getPlayerOrException();
GamemodeHandler.challengePlayer(executer, player, gameMode, DuelsMap.identifyMap(map));
public static int challenge(CommandContext<CommandSourceInfo> context, ServerPlayer player, String gameMode, @Nullable String map) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer executor = new NexiaPlayer(CommandUtil.getPlayer(context));
GamemodeHandler.challengePlayer(executor, new NexiaPlayer(player), gameMode, DuelsMap.identifyMap(map));
return 1;
}
}
@@ -1,23 +1,22 @@
package com.nexia.core.commands.player.duels;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.games.util.PlayerGameMode;
import com.nexia.core.utilities.chat.LegacyChatFormat;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.item.InventoryUtil;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.player.PlayerData;
import com.nexia.core.utilities.player.PlayerDataManager;
import com.nexia.core.utilities.time.ServerTime;
import com.nexia.minigames.games.duels.DuelGameHandler;
import com.nexia.minigames.games.duels.DuelGameMode;
import io.github.blumbo.inventorymerger.saving.SavableInventory;
import net.minecraft.Util;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.kyori.adventure.text.Component;
import net.minecraft.commands.SharedSuggestionProvider;
import net.minecraft.server.level.ServerPlayer;
import org.jetbrains.annotations.NotNull;
import java.io.File;
@@ -27,20 +26,24 @@ import java.nio.file.Files;
import java.nio.file.Path;
public class KitLayoutCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register((Commands.literal("kitlayout")
.requires(commandSourceStack -> {
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register((CommandUtils.literal("kitlayout")
.requires(commandSourceInfo -> {
try {
com.nexia.minigames.games.duels.util.player.PlayerData playerData = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(commandSourceStack.getPlayerOrException());
PlayerData playerData1 = PlayerDataManager.get(commandSourceStack.getPlayerOrException());
if(!CommandUtil.checkPlayerInCommand(commandSourceInfo)) return false;
NexiaPlayer player = CommandUtil.getPlayer(commandSourceInfo);
assert player != null;
com.nexia.minigames.games.duels.util.player.PlayerData playerData = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player);
PlayerData playerData1 = PlayerDataManager.get(player);
return playerData.gameMode == DuelGameMode.LOBBY && playerData1.gameMode == PlayerGameMode.LOBBY;
} catch (Exception ignored) {}
return false;
})
.then(Commands.argument("argument", StringArgumentType.string())
.then(CommandUtils.argument("argument", StringArgumentType.string())
.suggests(((context, builder) -> SharedSuggestionProvider.suggest((new String[]{"save", "edit", "reset"}), builder)))
.executes(context -> run(context, StringArgumentType.getString(context, "argument"), ""))
.then(Commands.argument("inventory", StringArgumentType.string())
.then(CommandUtils.argument("inventory", StringArgumentType.string())
.suggests(((context, builder) -> SharedSuggestionProvider.suggest(InventoryUtil.getListOfInventories("duels"), builder)))
.executes(context -> run(context, StringArgumentType.getString(context, "argument"), StringArgumentType.getString(context, "inventory")))
)
@@ -49,25 +52,25 @@ public class KitLayoutCommand {
);
}
private static int run(CommandContext<CommandSourceStack> context, @NotNull String argument, @NotNull String inventory) throws CommandSyntaxException {
ServerPlayer player = context.getSource().getPlayerOrException();
private static int run(CommandContext<CommandSourceInfo> context, @NotNull String argument, @NotNull String inventory) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer player = new NexiaPlayer(CommandUtil.getPlayer(context));
if((inventory.trim().isEmpty() || !InventoryUtil.getListOfInventories("duels").contains(inventory.toLowerCase())) && !argument.equalsIgnoreCase("save")) {
context.getSource().sendFailure(LegacyChatFormat.format("Invalid gamemode!"));
player.sendMessage(Component.text("Invalid gamemode!", ChatFormat.failColor));
return 0;
}
if(argument.equalsIgnoreCase("save")) {
if(com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player).editingLayout.isEmpty()) {
context.getSource().sendFailure(LegacyChatFormat.format("You aren't editing a layout!"));
player.sendMessage(Component.text("You aren't editing a layout!", ChatFormat.failColor));
return 0;
}
inventory = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player).editingLayout;
String path = InventoryUtil.dirpath + File.separator + "duels" + File.separator + "custom" + File.separator + player.getStringUUID() + File.separator + "layout";
String path = InventoryUtil.dirpath + File.separator + "duels" + File.separator + "custom" + File.separator + player.getUUID() + File.separator + "layout";
Path playerPath = Path.of(path);
File playerDir = playerPath.toFile();
@@ -75,7 +78,7 @@ public class KitLayoutCommand {
if(!playerDir.exists()) Files.createDirectory(playerPath);
} catch (IOException ignored) { }
SavableInventory savableInventory = new SavableInventory(player.inventory);
SavableInventory savableInventory = new SavableInventory(player.unwrap().inventory);
String stringInventory = savableInventory.toSave();
try {
@@ -84,20 +87,20 @@ public class KitLayoutCommand {
fileWriter.write(stringInventory);
fileWriter.close();
} catch (Exception var6) {
ServerTime.minecraftServer.getCommands().performCommand(player.createCommandSourceStack(), "/hub");
player.sendMessage(LegacyChatFormat.format("{f}Failed to save your inventory as '{}'. Please try again or contact a developer.", inventory), Util.NIL_UUID);
player.runCommand("/hub", 0, false);
player.sendMessage(Component.text(String.format("Failed to save your inventory as '%s'. Please try again or contact a developer.", inventory), ChatFormat.failColor));
return 0;
}
context.getSource().sendSuccess(LegacyChatFormat.format("{b1}Successfully saved your inventory as '{}'.", inventory), false);
ServerTime.minecraftServer.getCommands().performCommand(player.createCommandSourceStack(), "/hub");
player.sendMessage(Component.text(String.format("Successfully saved your inventory as '%s'.", inventory), ChatFormat.brandColor1));
player.runCommand("/hub", 0, false);
return 1;
}
if (argument.equalsIgnoreCase("edit")) {
if(!com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player).editingLayout.isEmpty()) {
context.getSource().sendFailure(LegacyChatFormat.format("You are still editing a layout! Save it or run /hub!"));
player.sendMessage(Component.text("You are still editing a layuot! Save it run or run /hub!", ChatFormat.failColor));
return 0;
}
@@ -110,17 +113,17 @@ public class KitLayoutCommand {
if(argument.equalsIgnoreCase("reset")) {
File playerFile = new File(InventoryUtil.dirpath + File.separator + "duels" + File.separator + "custom" + File.separator + player.getStringUUID() + File.separator + "layout" + File.separator + inventory + ".json");
File playerFile = new File(InventoryUtil.dirpath + File.separator + "duels" + File.separator + "custom" + File.separator + player.getUUID() + File.separator + "layout" + File.separator + inventory + ".json");
if(playerFile.exists() && playerFile.delete()) {
context.getSource().sendSuccess(LegacyChatFormat.format("{b1}Successfully reset saved layout '{}'!", inventory), false);
player.sendMessage(Component.text(String.format("Successfully reset saved layout '%s'!", inventory), ChatFormat.brandColor1));
} else {
context.getSource().sendFailure(LegacyChatFormat.format("Saved Layout does not exist!"));
player.sendMessage(Component.text("Saved Layout does not exist!", ChatFormat.failColor));
}
return 1;
}
context.getSource().sendFailure(LegacyChatFormat.format("Invalid argument!"));
player.sendMessage(Component.text("Invalid argument!", ChatFormat.failColor));
return 1;
}
}
@@ -1,85 +1,94 @@
package com.nexia.core.commands.player.duels;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.games.util.PlayerGameMode;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.player.PlayerData;
import com.nexia.core.utilities.player.PlayerDataManager;
import com.nexia.core.utilities.player.PlayerUtil;
import com.nexia.minigames.games.duels.DuelGameMode;
import com.nexia.minigames.games.duels.team.DuelsTeam;
import net.kyori.adventure.text.Component;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.arguments.EntityArgument;
import net.minecraft.commands.arguments.selector.EntitySelector;
import net.minecraft.server.level.ServerPlayer;
import net.notcoded.codelib.players.AccuratePlayer;
public class PartyCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
register(dispatcher, "party");
register(dispatcher, "duelsteam");
}
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, String string) {
dispatcher.register(Commands.literal(string)
.requires(commandSourceStack -> {
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher, String string) {
dispatcher.register(CommandUtils.literal(string)
.requires(commandSourceInfo -> {
try {
com.nexia.minigames.games.duels.util.player.PlayerData playerData = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(commandSourceStack.getPlayerOrException());
PlayerData playerData1 = PlayerDataManager.get(commandSourceStack.getPlayerOrException());
if(!CommandUtil.checkPlayerInCommand(commandSourceInfo)) return false;
NexiaPlayer player = CommandUtil.getPlayer(commandSourceInfo);
assert player != null;
com.nexia.minigames.games.duels.util.player.PlayerData playerData = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player);
PlayerData playerData1 = PlayerDataManager.get(player);
return playerData.gameMode == DuelGameMode.LOBBY && playerData1.gameMode == PlayerGameMode.LOBBY;
} catch (Exception ignored) {
}
return false;
})
.then(Commands.literal("invite")
.then(Commands.argument("player", EntityArgument.player()).executes(context -> PartyCommand.invitePlayer(context, EntityArgument.getPlayer(context, "player"))))
.then(CommandUtils.literal("invite")
.then(CommandUtils.argument("player", EntityArgument.player()).executes(context -> PartyCommand.invitePlayer(context, context.getArgument("player", EntitySelector.class).findSinglePlayer(CommandUtil.getCommandSourceStack(context.getSource())))))
)
.then(Commands.literal("promote")
.then(Commands.argument("player", EntityArgument.player()).executes(context -> PartyCommand.promotePlayer(context, EntityArgument.getPlayer(context, "player"))))
.then(CommandUtils.literal("promote")
.then(CommandUtils.argument("player", EntityArgument.player()).executes(context -> PartyCommand.promotePlayer(context, context.getArgument("player", EntitySelector.class).findSinglePlayer(CommandUtil.getCommandSourceStack(context.getSource())))))
)
.then(Commands.literal("join")
.then(Commands.argument("player", EntityArgument.player()).executes(context -> PartyCommand.joinTeam(context, EntityArgument.getPlayer(context, "player"))))
.then(CommandUtils.literal("join")
.then(CommandUtils.argument("player", EntityArgument.player()).executes(context -> PartyCommand.joinTeam(context, context.getArgument("player", EntitySelector.class).findSinglePlayer(CommandUtil.getCommandSourceStack(context.getSource())))))
)
.then(Commands.literal("kick")
.then(Commands.argument("player", EntityArgument.player()).executes(context -> PartyCommand.kickPlayer(context, EntityArgument.getPlayer(context, "player"))))
.then(CommandUtils.literal("kick")
.then(CommandUtils.argument("player", EntityArgument.player()).executes(context -> PartyCommand.kickPlayer(context, context.getArgument("player", EntitySelector.class).findSinglePlayer(CommandUtil.getCommandSourceStack(context.getSource())))))
)
.then(Commands.literal("decline")
.then(Commands.argument("player", EntityArgument.player()).executes(context -> PartyCommand.declinePlayer(context, EntityArgument.getPlayer(context, "player"))))
.then(CommandUtils.literal("decline")
.then(CommandUtils.argument("player", EntityArgument.player()).executes(context -> PartyCommand.declinePlayer(context, context.getArgument("player", EntitySelector.class).findSinglePlayer(CommandUtil.getCommandSourceStack(context.getSource())))))
)
.then(Commands.literal("disband").executes(PartyCommand::disbandTeam))
.then(Commands.literal("create").executes(PartyCommand::createTeam))
.then(Commands.literal("list").executes(PartyCommand::listTeam))
.then(Commands.literal("leave").executes(PartyCommand::leaveTeam))
.then(CommandUtils.literal("disband").executes(PartyCommand::disbandTeam))
.then(CommandUtils.literal("create").executes(PartyCommand::createTeam))
.then(CommandUtils.literal("list").executes(PartyCommand::listTeam))
.then(CommandUtils.literal("leave").executes(PartyCommand::leaveTeam))
);
}
public static int invitePlayer(CommandContext<CommandSourceStack> context, ServerPlayer player) throws CommandSyntaxException {
ServerPlayer invitor = context.getSource().getPlayerOrException();
public static int invitePlayer(CommandContext<CommandSourceInfo> context, ServerPlayer player) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer invitor = new NexiaPlayer(CommandUtil.getPlayer(context));
com.nexia.minigames.games.duels.util.player.PlayerData data = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(invitor);
if(data.duelOptions.duelsTeam == null) {
DuelsTeam.createTeam(invitor, false);
}
data.duelOptions.duelsTeam.invitePlayer(invitor, player);
data.duelOptions.duelsTeam.invitePlayer(invitor, new NexiaPlayer(player));
return 1;
}
public static int joinTeam(CommandContext<CommandSourceStack> context, ServerPlayer player) throws CommandSyntaxException {
com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player).duelOptions.duelsTeam.joinTeam(context.getSource().getPlayerOrException());
public static int joinTeam(CommandContext<CommandSourceInfo> context, ServerPlayer player) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer executor = new NexiaPlayer(CommandUtil.getPlayer(context));
com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player.getUUID()).duelOptions.duelsTeam.joinTeam(executor);
return 1;
}
public static int listTeam(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
ServerPlayer executor = context.getSource().getPlayerOrException();
public static int listTeam(CommandContext<CommandSourceInfo> context) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer executor = new NexiaPlayer(CommandUtil.getPlayer(context));
com.nexia.minigames.games.duels.util.player.PlayerData data = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(executor);
if(data.duelOptions.duelsTeam == null) {
PlayerUtil.getFactoryPlayer(executor).sendMessage(Component.text("You aren't in a team!").color(ChatFormat.failColor));
executor.sendMessage(Component.text("You aren't in a team!").color(ChatFormat.failColor));
return 1;
}
@@ -87,68 +96,78 @@ public class PartyCommand {
return 1;
}
public static int declinePlayer(CommandContext<CommandSourceStack> context, ServerPlayer player) throws CommandSyntaxException {
com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player).duelOptions.duelsTeam.declineTeam(context.getSource().getPlayerOrException());
public static int declinePlayer(CommandContext<CommandSourceInfo> context, ServerPlayer player) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer executor = new NexiaPlayer(CommandUtil.getPlayer(context));
com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player.getUUID()).duelOptions.duelsTeam.declineTeam(executor);
return 1;
}
public static int createTeam(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
DuelsTeam.createTeam(context.getSource().getPlayerOrException(), true);
public static int createTeam(CommandContext<CommandSourceInfo> context) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer player = new NexiaPlayer(CommandUtil.getPlayer(context));
DuelsTeam.createTeam(player, true);
return 1;
}
public static int promotePlayer(CommandContext<CommandSourceStack> context, ServerPlayer player) throws CommandSyntaxException {
ServerPlayer executor = context.getSource().getPlayerOrException();
public static int promotePlayer(CommandContext<CommandSourceInfo> context, ServerPlayer player) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer executor = new NexiaPlayer(CommandUtil.getPlayer(context));
com.nexia.minigames.games.duels.util.player.PlayerData data = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(executor);
if(data.duelOptions.duelsTeam == null) {
PlayerUtil.getFactoryPlayer(executor).sendMessage(Component.text("You aren't in a team!").color(ChatFormat.failColor));
executor.sendMessage(Component.text("You aren't in a team!").color(ChatFormat.failColor));
return 1;
}
data.duelOptions.duelsTeam.replaceLeader(AccuratePlayer.create(executor), AccuratePlayer.create(player), true);
data.duelOptions.duelsTeam.replaceLeader(executor, new NexiaPlayer(player), true);
return 1;
}
public static int kickPlayer(CommandContext<CommandSourceStack> context, ServerPlayer player) throws CommandSyntaxException {
ServerPlayer executor = context.getSource().getPlayerOrException();
public static int kickPlayer(CommandContext<CommandSourceInfo> context, ServerPlayer player) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer executor = new NexiaPlayer(CommandUtil.getPlayer(context));
com.nexia.minigames.games.duels.util.player.PlayerData data = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(executor);
if(data.duelOptions.duelsTeam == null) {
PlayerUtil.getFactoryPlayer(executor).sendMessage(Component.text("You aren't in a team!").color(ChatFormat.failColor));
executor.sendMessage(Component.text("You aren't in a team!").color(ChatFormat.failColor));
return 1;
}
data.duelOptions.duelsTeam.kickPlayer(executor, player);
data.duelOptions.duelsTeam.kickPlayer(executor, new NexiaPlayer(player));
return 1;
}
public static int disbandTeam(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
ServerPlayer player = context.getSource().getPlayerOrException();
public static int disbandTeam(CommandContext<CommandSourceInfo> context) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer player = new NexiaPlayer(CommandUtil.getPlayer(context));
com.nexia.minigames.games.duels.util.player.PlayerData data = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player);
if(data.duelOptions.duelsTeam == null) {
PlayerUtil.getFactoryPlayer(player).sendMessage(Component.text("You aren't in a team!").color(ChatFormat.failColor));
player.sendMessage(Component.text("You aren't in a team!").color(ChatFormat.failColor));
return 1;
}
com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player).duelOptions.duelsTeam.disbandTeam(AccuratePlayer.create(player), true);
com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player).duelOptions.duelsTeam.disbandTeam(player, true);
return 1;
}
public static int leaveTeam(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
ServerPlayer player = context.getSource().getPlayerOrException();
public static int leaveTeam(CommandContext<CommandSourceInfo> context) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer player = new NexiaPlayer(CommandUtil.getPlayer(context));
com.nexia.minigames.games.duels.util.player.PlayerData data = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player);
if(data.duelOptions.duelsTeam == null) {
PlayerUtil.getFactoryPlayer(player).sendMessage(Component.text("You aren't in a team!").color(ChatFormat.failColor));
player.sendMessage(Component.text("You aren't in a team!").color(ChatFormat.failColor));
return 1;
}
com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player).duelOptions.duelsTeam.leaveTeam(AccuratePlayer.create(player), true);
com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player).duelOptions.duelsTeam.leaveTeam(player, true);
return 1;
}
}
@@ -1,41 +1,54 @@
package com.nexia.core.commands.player.duels;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.games.util.PlayerGameMode;
import com.nexia.core.gui.duels.QueueGUI;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.player.PlayerData;
import com.nexia.core.utilities.player.PlayerDataManager;
import com.nexia.minigames.games.duels.DuelGameMode;
import com.nexia.minigames.games.duels.gamemodes.GamemodeHandler;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.SharedSuggestionProvider;
import net.minecraft.server.level.ServerPlayer;
public class QueueCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register(Commands.literal("queue")
.requires(commandSourceStack -> {
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register(CommandUtils.literal("queue")
.requires(commandSourceInfo -> {
try {
com.nexia.minigames.games.duels.util.player.PlayerData playerData = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(commandSourceStack.getPlayerOrException());
PlayerData playerData1 = PlayerDataManager.get(commandSourceStack.getPlayerOrException());
if(!CommandUtil.checkPlayerInCommand(commandSourceInfo)) return false;
NexiaPlayer player = CommandUtil.getPlayer(commandSourceInfo);
assert player != null;
com.nexia.minigames.games.duels.util.player.PlayerData playerData = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player);
PlayerData playerData1 = PlayerDataManager.get(player);
return playerData.gameMode == DuelGameMode.LOBBY && playerData1.gameMode == PlayerGameMode.LOBBY;
} catch (Exception ignored) {}
return false;
})
.executes(context -> QueueGUI.openQueueGUI(context.getSource().getPlayerOrException()))
.then(Commands.argument("gamemode", StringArgumentType.string())
.executes(context -> {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer player = new NexiaPlayer(CommandUtil.getPlayer(context));
QueueGUI.openQueueGUI(player.unwrap());
return 1;
})
.then(CommandUtils.argument("gamemode", StringArgumentType.string())
.suggests(((context, builder) -> SharedSuggestionProvider.suggest((DuelGameMode.stringDuelGameModes), builder)))
.executes(context -> QueueCommand.queue(context, StringArgumentType.getString(context, "gamemode"))))
);
}
public static int queue(CommandContext<CommandSourceStack> context, String gameMode) throws CommandSyntaxException {
ServerPlayer executer = context.getSource().getPlayerOrException();
GamemodeHandler.joinQueue(executer, gameMode, false);
public static int queue(CommandContext<CommandSourceInfo> context, String gameMode) throws CommandSyntaxException {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer player = new NexiaPlayer(CommandUtil.getPlayer(context));
GamemodeHandler.joinQueue(player, gameMode, false);
return 1;
}
}
@@ -1,55 +1,69 @@
package com.nexia.core.commands.player.duels.custom;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.games.util.PlayerGameMode;
import com.nexia.core.gui.duels.CustomDuelGUI;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.item.InventoryUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.player.PlayerData;
import com.nexia.core.utilities.player.PlayerDataManager;
import com.nexia.minigames.games.duels.DuelGameMode;
import com.nexia.minigames.games.duels.gamemodes.GamemodeHandler;
import com.nexia.minigames.games.duels.map.DuelsMap;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.SharedSuggestionProvider;
import net.minecraft.commands.arguments.EntityArgument;
import net.minecraft.commands.arguments.selector.EntitySelector;
import net.minecraft.server.level.ServerPlayer;
import org.jetbrains.annotations.Nullable;
public class CustomDuelCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
register(dispatcher, "customduel");
register(dispatcher, "customchallenge");
}
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, String string) {
dispatcher.register(Commands.literal(string)
.requires(commandSourceStack -> {
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher, String string) {
dispatcher.register(CommandUtils.literal(string)
.requires(commandSourceInfo -> {
try {
com.nexia.minigames.games.duels.util.player.PlayerData playerData = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(commandSourceStack.getPlayerOrException());
PlayerData playerData1 = PlayerDataManager.get(commandSourceStack.getPlayerOrException());
if(!CommandUtil.checkPlayerInCommand(commandSourceInfo)) return false;
NexiaPlayer player = CommandUtil.getPlayer(commandSourceInfo);
assert player != null;
com.nexia.minigames.games.duels.util.player.PlayerData playerData = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player);
PlayerData playerData1 = PlayerDataManager.get(player);
return playerData.gameMode == DuelGameMode.LOBBY && playerData1.gameMode == PlayerGameMode.LOBBY;
} catch (Exception ignored) {
}
return false;
})
.then(Commands.argument("player", EntityArgument.player())
.executes(context -> CustomDuelGUI.openDuelGui(context.getSource().getPlayerOrException(), EntityArgument.getPlayer(context, "player")))
.then(Commands.argument("kit", StringArgumentType.string())
.suggests(((context, builder) -> SharedSuggestionProvider.suggest((InventoryUtil.getListOfInventories("duels/custom/" + context.getSource().getPlayerOrException().getStringUUID())), builder)))
.executes(context -> CustomDuelCommand.challenge(context, EntityArgument.getPlayer(context, "player"), StringArgumentType.getString(context, "kit"), null))
.then(Commands.argument("map", StringArgumentType.string())
.then(CommandUtils.argument("player", EntityArgument.player())
.executes(context -> {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer player = new NexiaPlayer(CommandUtil.getPlayer(context));
CustomDuelGUI.openDuelGui(player.unwrap(), context.getArgument("player", EntitySelector.class).findSinglePlayer(CommandUtil.getCommandSourceStack(context.getSource())));
return 1;
})
.then(CommandUtils.argument("kit", StringArgumentType.string())
.suggests(((context, builder) -> SharedSuggestionProvider.suggest((InventoryUtil.getListOfInventories("duels/custom/" + CommandUtil.getPlayer(context).getUUID())), builder)))
.executes(context -> CustomDuelCommand.challenge(context, context.getArgument("player", EntitySelector.class).findSinglePlayer(CommandUtil.getCommandSourceStack(context.getSource())), StringArgumentType.getString(context, "kit"), null))
.then(CommandUtils.argument("map", StringArgumentType.string())
.suggests(((context, builder) -> SharedSuggestionProvider.suggest((DuelsMap.stringDuelsMaps), builder)))
.executes(context -> CustomDuelCommand.challenge(context, EntityArgument.getPlayer(context, "player"), StringArgumentType.getString(context, "kit"), StringArgumentType.getString(context, "map")))
.executes(context -> CustomDuelCommand.challenge(context, context.getArgument("player", EntitySelector.class).findSinglePlayer(CommandUtil.getCommandSourceStack(context.getSource())), StringArgumentType.getString(context, "kit"), StringArgumentType.getString(context, "map")))
))));
}
public static int challenge(CommandContext<CommandSourceStack> context, ServerPlayer player, String kit, @Nullable String map) throws CommandSyntaxException {
ServerPlayer executor = context.getSource().getPlayerOrException();
GamemodeHandler.customChallengePlayer(executor, player, kit, DuelsMap.identifyMap(map));
public static int challenge(CommandContext<CommandSourceInfo> context, ServerPlayer player, String kit, @Nullable String map) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer executor = new NexiaPlayer(CommandUtil.getPlayer(context));
GamemodeHandler.customChallengePlayer(executor, new NexiaPlayer(player), kit, DuelsMap.identifyMap(map));
return 1;
}
}
@@ -1,28 +1,26 @@
package com.nexia.core.commands.player.duels.custom;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.natamus.collective_fabric.functions.PlayerFunctions;
import com.natamus.collective_fabric.functions.StringFunctions;
import com.nexia.core.games.util.PlayerGameMode;
import com.nexia.core.utilities.chat.LegacyChatFormat;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.item.InventoryUtil;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.player.PlayerData;
import com.nexia.core.utilities.player.PlayerDataManager;
import com.nexia.core.utilities.time.ServerTime;
import com.nexia.minigames.games.duels.DuelGameMode;
import com.nexia.minigames.games.duels.custom.kitroom.kitrooms.CustomKitRoom;
import com.nexia.minigames.games.duels.custom.kitroom.kitrooms.KitRoom;
import com.nexia.minigames.games.duels.custom.kitroom.kitrooms.SmpKitRoom;
import com.nexia.minigames.games.duels.custom.kitroom.kitrooms.VanillaKitRoom;
import net.minecraft.Util;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.kyori.adventure.text.Component;
import net.minecraft.commands.SharedSuggestionProvider;
import net.minecraft.server.level.ServerPlayer;
import net.notcoded.codelib.players.AccuratePlayer;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
@@ -37,20 +35,24 @@ public class KitEditorCommand {
private static final List<String> slots = Arrays.asList("1", "2", "3", "smp", "vanilla");
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register((Commands.literal("kiteditor")
.requires(commandSourceStack -> {
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register((CommandUtils.literal("kiteditor")
.requires(commandSourceInfo -> {
try {
com.nexia.minigames.games.duels.util.player.PlayerData playerData = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(commandSourceStack.getPlayerOrException());
PlayerData playerData1 = PlayerDataManager.get(commandSourceStack.getPlayerOrException());
if(!CommandUtil.checkPlayerInCommand(commandSourceInfo)) return false;
NexiaPlayer player = CommandUtil.getPlayer(commandSourceInfo);
assert player != null;
com.nexia.minigames.games.duels.util.player.PlayerData playerData = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player);
PlayerData playerData1 = PlayerDataManager.get(player);
return playerData.gameMode == DuelGameMode.LOBBY && playerData1.gameMode == PlayerGameMode.LOBBY;
} catch (Exception ignored) {}
return false;
})
.then(Commands.argument("argument", StringArgumentType.string())
.then(CommandUtils.argument("argument", StringArgumentType.string())
.suggests(((context, builder) -> SharedSuggestionProvider.suggest((new String[]{"save", "edit", "delete"}), builder)))
.executes(context -> run(context, StringArgumentType.getString(context, "argument"), ""))
.then(Commands.argument("slot", StringArgumentType.string())
.then(CommandUtils.argument("slot", StringArgumentType.string())
.suggests(((context, builder) -> SharedSuggestionProvider.suggest(slots, builder)))
.executes(context -> run(context, StringArgumentType.getString(context, "argument"), StringArgumentType.getString(context, "slot")))
)
@@ -59,11 +61,12 @@ public class KitEditorCommand {
);
}
private static int run(CommandContext<CommandSourceStack> context, @NotNull String argument, String slot) throws CommandSyntaxException {
ServerPlayer player = context.getSource().getPlayerOrException();
private static int run(CommandContext<CommandSourceInfo> context, @NotNull String argument, String slot) {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer player = new NexiaPlayer(CommandUtil.getPlayer(context));
if (!slots.contains(slot) && !argument.equalsIgnoreCase("save")) {
context.getSource().sendFailure(LegacyChatFormat.format("Invalid slot!"));
player.sendMessage(Component.text("Invalid slot!", ChatFormat.failColor));
return 0;
}
@@ -76,15 +79,15 @@ public class KitEditorCommand {
com.nexia.minigames.games.duels.util.player.PlayerData playerData = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player);
if(playerData.editingKit.isEmpty() || playerData.kitRoom == null) {
context.getSource().sendFailure(LegacyChatFormat.format("You aren't editing a kit!"));
player.sendMessage(Component.text("You aren't editing a kit!", ChatFormat.failColor));
return 0;
}
inventory = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player).editingKit;
String gearstring = PlayerFunctions.getPlayerGearString(player);
String gearstring = PlayerFunctions.getPlayerGearString(player.unwrap());
Path playerPath = Path.of(InventoryUtil.dirpath + File.separator + "duels" + File.separator + "custom" + File.separator + player.getStringUUID());
Path playerPath = Path.of(InventoryUtil.dirpath + File.separator + "duels" + File.separator + "custom" + File.separator + player.getUUID());
File playerDir = playerPath.toFile();
try {
if(!playerDir.exists()) Files.createDirectory(playerPath);
@@ -93,22 +96,21 @@ public class KitEditorCommand {
KitRoom kitRoom = playerData.kitRoom;
if (StringFunctions.sequenceCount(gearstring, "\n") < 40 || !playerDir.exists()) {
context.getSource().sendFailure(LegacyChatFormat.format("Something went wrong while generating the save file content for your inventory."));
player.sendMessage(Component.text("Something went wrong while generating the save file content for your inventory.", ChatFormat.failColor));
kitRoom.leave();
ServerTime.minecraftServer.getCommands().performCommand(player.createCommandSourceStack(), "/hub");
player.runCommand("/hub", 0, false);
return 0;
} else if (!InventoryUtil.writeGearStringToFile("duels/custom/" + player.getStringUUID(), inventory, gearstring)) {
context.getSource().sendFailure(LegacyChatFormat.format("Something went wrong while saving the content of your inventory as '{}'.", inventory));
} else if (!InventoryUtil.writeGearStringToFile("duels/custom/" + player.getUUID(), inventory, gearstring)) {
player.sendMessage(Component.text(String.format("Something went wrong while saving the content of your inventory as '%s'.", inventory), ChatFormat.failColor));
kitRoom.leave();
ServerTime.minecraftServer.getCommands().performCommand(player.createCommandSourceStack(), "/hub");
player.runCommand("/hub", 0, false);
return 0;
} else {
context.getSource().sendSuccess(LegacyChatFormat.format("{b1}Successfully saved your inventory as '{}'.", inventory),false);
player.sendMessage(Component.text(String.format("Successfully saved your inventory as '%s'.", inventory), ChatFormat.failColor));
kitRoom.leave();
ServerTime.minecraftServer.getCommands().performCommand(player.createCommandSourceStack(), "/hub");
player.runCommand("/hub", 0, false);
return 1;
}
}
@@ -116,22 +118,21 @@ public class KitEditorCommand {
if (argument.equalsIgnoreCase("edit")) {
if(!com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player).editingKit.isEmpty()) {
context.getSource().sendFailure(LegacyChatFormat.format("You are still editing a kit! Save it or run /hub!"));
player.sendMessage(Component.text("You are still editing a kit! Save it or run /hub!", ChatFormat.failColor));
return 0;
}
KitRoom kitRoom;
com.nexia.minigames.games.duels.util.player.PlayerData playerData = com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player);
AccuratePlayer accuratePlayer = AccuratePlayer.create(player);
switch (slot) {
case "1", "2", "3" -> kitRoom = new CustomKitRoom(accuratePlayer);
case "vanilla" -> kitRoom = new VanillaKitRoom(accuratePlayer);
case "smp" -> kitRoom = new SmpKitRoom(accuratePlayer);
case "1", "2", "3" -> kitRoom = new CustomKitRoom(player);
case "vanilla" -> kitRoom = new VanillaKitRoom(player);
case "smp" -> kitRoom = new SmpKitRoom(player);
default -> {
player.sendMessage(LegacyChatFormat.formatFail("Something went wrong whilst creating your kit room."), Util.NIL_UUID);
ServerTime.minecraftServer.getCommands().performCommand(player.createCommandSourceStack(), "/hub");
player.sendMessage(Component.text("Something went wrong whilst creating your kit room.", ChatFormat.failColor));
player.runCommand("/hub", 0, false);
return 0;
}
}
@@ -141,9 +142,9 @@ public class KitEditorCommand {
if(kitRoom.generate()) kitRoom.teleport();
File playerFile = new File(InventoryUtil.dirpath + File.separator + "duels" + File.separator + "custom" + File.separator + player.getStringUUID(), inventory + ".txt");
File playerFile = new File(InventoryUtil.dirpath + File.separator + "duels" + File.separator + "custom" + File.separator + player.getUUID(), inventory + ".txt");
if(playerFile.exists()) {
InventoryUtil.loadInventory(player, "duels/custom/" + player.getStringUUID(), inventory.toLowerCase());
InventoryUtil.loadInventory(player, "duels/custom/" + player.getUUID(), inventory.toLowerCase());
}
return 1;
@@ -151,17 +152,17 @@ public class KitEditorCommand {
if(argument.equalsIgnoreCase("delete")) {
File playerFile = new File(InventoryUtil.dirpath + File.separator + "duels" + File.separator + "custom" + File.separator + player.getStringUUID(), inventory + ".txt");
File playerFile = new File(InventoryUtil.dirpath + File.separator + "duels" + File.separator + "custom" + File.separator + player.getUUID(), inventory + ".txt");
if(playerFile.exists() && playerFile.delete()) {
context.getSource().sendSuccess(LegacyChatFormat.format("{b1}Successfully deleted slot '{}'!", slot), false);
player.sendMessage(Component.text(String.format("Successfully deleted slot '%s’!", slot), ChatFormat.brandColor1));
} else {
context.getSource().sendFailure(LegacyChatFormat.format("The saved kit for that slot ({}) does not exist!", slot));
player.sendMessage(Component.text(String.format("The saved kit for that slot (%s) does not exist!", slot), ChatFormat.failColor));
}
return 1;
}
context.getSource().sendFailure(LegacyChatFormat.format("Invalid argument!"));
player.sendMessage(Component.text("Invalid argument!", ChatFormat.failColor));
return 1;
}
}
@@ -1,56 +1,58 @@
package com.nexia.core.commands.player.ffa;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.games.util.LobbyUtil;
import com.nexia.core.gui.ffa.KitGUI;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.player.PlayerUtil;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.ffa.kits.FfaKit;
import com.nexia.ffa.kits.utilities.FfaKitsUtil;
import net.kyori.adventure.text.Component;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.SharedSuggestionProvider;
import net.minecraft.server.level.ServerPlayer;
public class KitCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register(Commands.literal("kit")
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register(CommandUtils.literal("kit")
.executes(context -> {
ServerPlayer player = context.getSource().getPlayerOrException();
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer player = CommandUtil.getPlayer(context);
if(!FfaKitsUtil.canGoToSpawn(player)) {
PlayerUtil.getFactoryPlayer(player).sendMessage(Component.text("You must be fully healed to change kits!").color(ChatFormat.failColor));
return 1;
player.sendMessage(Component.text("You must be fully healed to change kits!", ChatFormat.failColor));
return 0;
}
LobbyUtil.sendGame(player, "kits ffa", false, true);
run(context);
run(player.unwrap());
return 1;
})
.then(Commands.argument("inventory", StringArgumentType.greedyString())
.then(CommandUtils.argument("inventory", StringArgumentType.greedyString())
.suggests(((context, builder) -> SharedSuggestionProvider.suggest(FfaKit.stringFfaKits, builder)))
.executes(context -> {
ServerPlayer player = context.getSource().getPlayerOrException();
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
NexiaPlayer player = new NexiaPlayer(CommandUtil.getPlayer(context));
if(!FfaKitsUtil.canGoToSpawn(player)) {
PlayerUtil.getFactoryPlayer(player).sendMessage(Component.text("You must be fully healed to change kits!").color(ChatFormat.failColor));
player.sendMessage(Component.text("You must be fully healed to change kits!").color(ChatFormat.failColor));
return 1;
}
LobbyUtil.sendGame(player, "kits ffa", false, true);
selectedMap(context);
selectedMap(player.unwrap(), StringArgumentType.getString(context, "inventory"));
return 1;
})
)
);
}
public static void run(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
KitGUI.openKitGUI(context.getSource().getPlayerOrException());
public static void run(ServerPlayer player) throws CommandSyntaxException {
KitGUI.openKitGUI(player);
}
public static void selectedMap(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
KitGUI.giveKit(context.getSource().getPlayerOrException(), StringArgumentType.getString(context, "inventory"));
public static void selectedMap(ServerPlayer player, String inventory) {
KitGUI.giveKit(player, inventory);
}
}
@@ -1,19 +1,17 @@
package com.nexia.core.commands.staff;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.authlib.GameProfile;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.chat.LegacyChatFormat;
import com.nexia.core.utilities.player.PlayerUtil;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.time.ServerTime;
import me.lucko.fabric.api.permissions.v0.Permissions;
import net.kyori.adventure.text.Component;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.arguments.GameProfileArgument;
import net.minecraft.network.chat.ComponentUtils;
import net.minecraft.network.chat.TextComponent;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.server.players.UserBanList;
import net.minecraft.server.players.UserBanListEntry;
@@ -21,62 +19,54 @@ import net.minecraft.server.players.UserBanListEntry;
import java.util.Collection;
public class BanCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register(Commands.literal("ban")
.requires(commandSourceStack -> Permissions.check(commandSourceStack, "nexia.staff.ban", 3))
.then(Commands.argument("player", GameProfileArgument.gameProfile())
.executes(context -> BanCommand.ban(context.getSource(), GameProfileArgument.getGameProfiles(context, "player"), "No reason specified."))
.then(Commands.argument("reason", StringArgumentType.greedyString())
.executes(context -> BanCommand.ban(context.getSource(), GameProfileArgument.getGameProfiles(context, "player"), StringArgumentType.getString(context, "reason"))))
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register(CommandUtils.literal("ban")
.requires(commandSourceInfo -> CommandUtil.hasPermission(commandSourceInfo, "nexia.staff.ban", 3))
.then(CommandUtils.argument("player", GameProfileArgument.gameProfile())
.executes(context -> BanCommand.ban(context.getSource(), context.getArgument("player", GameProfileArgument.Result.class).getNames(CommandUtil.getCommandSourceStack(context.getSource())), "No reason specified."))
.then(CommandUtils.argument("reason", StringArgumentType.greedyString())
.executes(context -> BanCommand.ban(context.getSource(), context.getArgument("player", GameProfileArgument.Result.class).getNames(CommandUtil.getCommandSourceStack(context.getSource())), StringArgumentType.getString(context, "reason"))))
)
);
}
public static int ban(CommandSourceStack context, Collection<GameProfile> collection, String reason) {
public static int ban(CommandSourceInfo context, Collection<GameProfile> collection, String reason) {
UserBanList userBanList = ServerTime.minecraftServer.getPlayerList().getBans();
int i = 0;
ServerPlayer player = null;
try {
player = context.getPlayerOrException();
} catch (Exception ignored){ }
for (GameProfile gameProfile : collection) {
if (!userBanList.isBanned(gameProfile)) {
ServerPlayer serverPlayer = ServerTime.minecraftServer.getPlayerList().getPlayer(gameProfile.getId());
NexiaPlayer nexiaPlayer = new NexiaPlayer(serverPlayer);
UserBanListEntry userBanListEntry = new UserBanListEntry(gameProfile, null, context.getTextName(), null, reason);
UserBanListEntry userBanListEntry = new UserBanListEntry(gameProfile, null, null, null, reason);
userBanList.add(userBanListEntry);
++i;
if(player != null){
PlayerUtil.getFactoryPlayer(player).sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("You have banned ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(ComponentUtils.getDisplayName(gameProfile).getString()).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, false))
.append(Component.text(" for ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(reason).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, false))
);
context.sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("You have banned ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(ComponentUtils.getDisplayName(gameProfile).getString()).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, false))
.append(Component.text(" for ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(reason).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, false))
);
} else {
context.sendSuccess(LegacyChatFormat.format("{b1}You have banned {b2}{} {b1}for {b2}{}", ComponentUtils.getDisplayName(gameProfile).getString(), reason), true);
}
if (serverPlayer != null) {
serverPlayer.connection.disconnect(new TextComponent("§c§lYou have been banned.\n§7Reason: §d" + reason + "\n§7You can appeal your ban at §d" + com.nexia.discord.Main.config.discordLink));
nexiaPlayer.disconnect(Component.text("You have been banned.", ChatFormat.failColor)
.append(Component.text("\nReason: ", ChatFormat.systemColor))
.append(Component.text(reason, ChatFormat.brandColor2))
.append(Component.text("\nYou can appeal your ban at ", ChatFormat.systemColor))
.append(Component.text(com.nexia.discord.Main.config.discordLink, ChatFormat.brandColor2))
);
}
}
}
if (i == 0) {
if(player != null){
PlayerUtil.getFactoryPlayer(player).sendMessage(
ChatFormat.nexiaMessage.append(Component.text("That player is already banned.").color(ChatFormat.failColor))
);
} else {
context.sendFailure(LegacyChatFormat.formatFail("That player is already banned."));
}
context.sendMessage(
ChatFormat.nexiaMessage.append(Component.text("That player is already banned.").color(ChatFormat.failColor))
);
} else {
return i;
}
@@ -1,12 +1,13 @@
package com.nexia.core.commands.staff;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.time.ServerTime;
import me.lucko.fabric.api.permissions.v0.Permissions;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.phys.Vec3;
@@ -18,26 +19,27 @@ public class DetectCommand {
public static final boolean enabled = false;
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
if(!enabled) return;
dispatcher.register(Commands.literal("detect")
.requires(commandSourceStack -> Permissions.check(commandSourceStack, "nexia.dev.detect", 4))
dispatcher.register(CommandUtils.literal("detect")
.requires(commandSourceInfo -> CommandUtil.hasPermission(commandSourceInfo, "nexia.dev.detect", 4))
.executes(DetectCommand::run)
);
}
public static int run(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
if(!enabled) return 0;
detect(context.getSource().getPlayerOrException());
public static int run(CommandContext<CommandSourceInfo> context) throws CommandSyntaxException {
if(!enabled || CommandUtil.failIfNoPlayerInCommand(context)) return 0;
detect(CommandUtil.getPlayer(context));
return 1;
}
public static void detect(ServerPlayer attacker) {
public static void detect(NexiaPlayer attacker) {
String botName = ".bot";
List<Player> playersNearby = attacker.level.getEntitiesOfClass(ServerPlayer.class, attacker.getBoundingBox().inflate(12, 0.25, 12));
Vec3 eyePos = attacker.getEyePosition(1);
List<Player> playersNearby = attacker.unwrap().level.getEntitiesOfClass(ServerPlayer.class, attacker.unwrap().getBoundingBox().inflate(12, 0.25, 12));
Vec3 eyePos = attacker.unwrap().getEyePosition(1);
AtomicReference<Vec3> nearestPosition = new AtomicReference<>();
playersNearby.forEach(player -> {
Vec3 currentPos = player.getBoundingBox().getNearestPointTo(eyePos);
@@ -1,61 +1,46 @@
package com.nexia.core.commands.staff;
import com.combatreforged.factory.api.world.entity.player.Player;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.nexia.core.games.util.PlayerGameMode;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.chat.LegacyChatFormat;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.player.BanHandler;
import com.nexia.core.utilities.player.GamemodeBanHandler;
import com.nexia.core.utilities.player.PlayerUtil;
import me.lucko.fabric.api.permissions.v0.Permissions;
import com.nexia.core.utilities.player.NexiaPlayer;
import net.kyori.adventure.text.Component;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.SharedSuggestionProvider;
import net.minecraft.commands.arguments.EntityArgument;
import net.minecraft.commands.arguments.selector.EntitySelector;
import net.minecraft.server.level.ServerPlayer;
public class GamemodeBanCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register(Commands.literal("gamemodeban")
.requires(commandSourceStack -> Permissions.check(commandSourceStack, "nexia.staff.ban", 3))
.then(Commands.argument("player", EntityArgument.player())
.then(Commands.argument("gamemode", StringArgumentType.string())
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register(CommandUtils.literal("gamemodeban")
.requires(commandSourceInfo -> CommandUtil.hasPermission(commandSourceInfo, "nexia.staff.ban", 3))
.then(CommandUtils.argument("player", EntityArgument.player())
.then(CommandUtils.argument("gamemode", StringArgumentType.string())
.suggests(((context, builder) -> SharedSuggestionProvider.suggest((PlayerGameMode.stringPlayerGameModes), builder)))
.then(Commands.argument("duration", StringArgumentType.word())
.then(Commands.argument("reason", StringArgumentType.greedyString())
.executes(context -> GamemodeBanCommand.ban(context.getSource(), EntityArgument.getPlayer(context, "player"), StringArgumentType.getString(context, "gamemode"), StringArgumentType.getString(context, "reason"), StringArgumentType.getString(context, "duration"))))
.then(CommandUtils.argument("duration", StringArgumentType.word())
.then(CommandUtils.argument("reason", StringArgumentType.greedyString())
.executes(context -> GamemodeBanCommand.ban(context.getSource(), context.getArgument("player", EntitySelector.class).findSinglePlayer(CommandUtil.getCommandSourceStack(context.getSource())), StringArgumentType.getString(context, "gamemode"), StringArgumentType.getString(context, "reason"), StringArgumentType.getString(context, "duration"))))
)
)
));
}
public static int ban(CommandSourceStack sender, ServerPlayer player, String stringGameMode, String reason, String durationArg) {
ServerPlayer mcExecutor = null;
Player executor = null;
try {
mcExecutor = sender.getPlayerOrException();
} catch (Exception ignored){ }
if(mcExecutor != null) {
executor = PlayerUtil.getFactoryPlayer(mcExecutor);
}
public static int ban(CommandSourceInfo sender, ServerPlayer player, String stringGameMode, String reason, String durationArg) {
PlayerGameMode gameMode = PlayerGameMode.identifyGamemode(stringGameMode);
if(gameMode == null) {
if(executor != null) {
executor.sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("Invalid gamemode!").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
);
} else {
sender.sendFailure(LegacyChatFormat.format("{f}Invalid gamemode!"));
}
sender.sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("Invalid gamemode!").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
);
return 1;
}
@@ -64,19 +49,15 @@ public class GamemodeBanCommand {
try {
durationInSeconds = BanHandler.parseTimeArg(durationArg);
} catch (Exception e) {
if (executor != null) {
executor.sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("Invalid duration. Examples: ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text("1s / 2m / 3h / 4d / 5w").color(ChatFormat.failColor).decoration(ChatFormat.bold, false))
);
} else {
sender.sendFailure(LegacyChatFormat.format("{f}Invalid duration. Examples: 1s / 2m / 3h / 4d / 5w"));
}
sender.sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("Invalid duration. Examples: ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text("1s / 2m / 3h / 4d / 5w").color(ChatFormat.failColor).decoration(ChatFormat.bold, false))
);
return 1;
}
GamemodeBanHandler.tryGamemodeBan(sender, player, gameMode, durationInSeconds, reason);
GamemodeBanHandler.tryGamemodeBan(sender, new NexiaPlayer(player), gameMode, durationInSeconds, reason);
return 1;
}
@@ -1,34 +1,36 @@
package com.nexia.core.commands.staff;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.chat.LegacyChatFormat;
import com.nexia.core.utilities.player.PlayerUtil;
import me.lucko.fabric.api.permissions.v0.Permissions;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import net.kyori.adventure.text.Component;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.arguments.EntityArgument;
import net.minecraft.commands.arguments.selector.EntitySelector;
import net.minecraft.server.level.ServerPlayer;
public class HealCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register(Commands.literal("heal").executes(HealCommand::run)
.requires(commandSourceStack -> Permissions.check(commandSourceStack, "nexia.staff.heal", 1))
.then(Commands.argument("player", EntityArgument.player())
.executes(context -> HealCommand.heal(context, EntityArgument.getPlayer(context, "player")))
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register(CommandUtils.literal("heal").executes(HealCommand::run)
.requires(commandSourceInfo -> CommandUtil.hasPermission(commandSourceInfo, "nexia.staff.heal", 1))
.then(CommandUtils.argument("player", EntityArgument.player())
.executes(context -> HealCommand.heal(context, context.getArgument("player", EntitySelector.class).findSinglePlayer(CommandUtil.getCommandSourceStack(context.getSource()))))
)
);
}
public static int run(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
ServerPlayer executer = context.getSource().getPlayerOrException();
executer.heal(executer.getMaxHealth());
public static int run(CommandContext<CommandSourceInfo> context) throws CommandSyntaxException {
if(CommandUtil.failIfNoPlayerInCommand(context)) return 0;
PlayerUtil.getFactoryPlayer(executer).sendMessage(
NexiaPlayer executor = CommandUtil.getPlayer(context);
executor.setHealth(executor.unwrap().getMaxHealth());
executor.sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("You have been healed.").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
);
@@ -36,30 +38,19 @@ public class HealCommand {
return 1;
}
public static int heal(CommandContext<CommandSourceStack> context, ServerPlayer otherPlayer) {
CommandSourceStack executer = context.getSource();
public static int heal(CommandContext<CommandSourceInfo> context, ServerPlayer otherPlayer) {
otherPlayer.heal(otherPlayer.getMaxHealth());
ServerPlayer player = null;
try {
player = executer.getPlayerOrException();
} catch(Exception ignored) { }
context.getSource().sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("You have healed ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(otherPlayer.getScoreboardName()).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, false))
.append(Component.text(".").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
);
if(player != null){
PlayerUtil.getFactoryPlayer(player).sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("You have healed ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(otherPlayer.getScoreboardName()).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, false))
.append(Component.text(".").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
);
} else {
executer.sendSuccess(LegacyChatFormat.format("{b1}You have healed {b2}{}{b1}.", otherPlayer.getScoreboardName()), false);
}
PlayerUtil.getFactoryPlayer(otherPlayer).sendMessage(
new NexiaPlayer(otherPlayer).sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("You have been healed.").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
);
@@ -1,44 +1,42 @@
package com.nexia.core.commands.staff;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.context.CommandContext;
import com.nexia.core.utilities.chat.LegacyChatFormat;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.item.InventoryUtil;
import me.lucko.fabric.api.permissions.v0.Permissions;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import com.nexia.core.utilities.commands.CommandUtil;
import net.kyori.adventure.text.Component;
import net.minecraft.commands.SharedSuggestionProvider;
import java.io.File;
import java.util.Objects;
public class ListInventoriesCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register((Commands.literal("listinventories")
.requires(commandSourceStack -> {
try {
return Permissions.check(commandSourceStack, "nexia.inventory.list", 4);
} catch (Exception ignored) {
return false;
}
})
.then(Commands.argument("type", StringArgumentType.string())
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register((CommandUtils.literal("listinventories")
.requires(commandSourceInfo -> CommandUtil.hasPermission(commandSourceInfo, "nexia.inventory.list", 4))
.then(CommandUtils.argument("type", StringArgumentType.string())
.suggests(((context, builder) -> SharedSuggestionProvider.suggest((Objects.requireNonNull(new File(InventoryUtil.dirpath).list())), builder)))
.executes(ListInventoriesCommand::run)
)
));
}
private static int run(CommandContext<CommandSourceStack> context){
private static int run(CommandContext<CommandSourceInfo> context){
String type = StringArgumentType.getString(context, "type");
if(type.trim().isEmpty()) {
context.getSource().sendFailure(LegacyChatFormat.format("Empty type!"));
context.getSource().sendMessage(Component.text("Empty type!", ChatFormat.failColor));
return 0;
}
context.getSource().sendSuccess(LegacyChatFormat.format("{b1}Saved inventories: {b2}{}{b1}.", InventoryUtil.getListOfInventoriesString(type)), false);
context.getSource().sendMessage(Component.text("Saved Inventories:", ChatFormat.normalColor)
.append(Component.text(InventoryUtil.getListOfInventoriesString(type), ChatFormat.brandColor2))
.append(Component.text(".", ChatFormat.normalColor))
);
return 1;
}
@@ -1,25 +1,22 @@
package com.nexia.core.commands.staff;
import com.combatreforged.factory.api.world.entity.player.Player;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.context.CommandContext;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.player.PlayerUtil;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.time.ServerTime;
import me.lucko.fabric.api.permissions.v0.Permissions;
import net.kyori.adventure.text.Component;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.SharedSuggestionProvider;
import net.minecraft.core.Registry;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.Difficulty;
import net.minecraft.world.level.GameRules;
import net.minecraft.world.level.biome.Biomes;
import net.minecraft.world.level.dimension.DimensionType;
import org.apache.commons.io.FileUtils;
import xyz.nucleoid.fantasy.RuntimeWorldConfig;
@@ -29,33 +26,20 @@ import java.io.File;
import static com.nexia.core.utilities.world.WorldUtil.getChunkGenerator;
public class MapCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register((Commands.literal("map")
.requires(commandSourceStack -> {
try {
return Permissions.check(commandSourceStack, "nexia.staff.map", 2);
} catch (Exception ignored) {
return false;
}
})
.then(Commands.argument("type", StringArgumentType.string())
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register((CommandUtils.literal("map")
.requires(commandSourceInfo -> CommandUtil.hasPermission(commandSourceInfo, "nexia.staff.map", 2))
.then(CommandUtils.argument("type", StringArgumentType.string())
.suggests(((context, builder) -> SharedSuggestionProvider.suggest((new String[]{"delete", "create", "tp"}), builder)))
.then(Commands.argument("map", StringArgumentType.greedyString())
.then(CommandUtils.argument("map", StringArgumentType.greedyString())
.executes(MapCommand::run)
)
)
));
}
private static int run(CommandContext<CommandSourceStack> context) {
ServerPlayer mcPlayer = null;
Player player = null;
try {
mcPlayer = context.getSource().getPlayerOrException();
player = PlayerUtil.getFactoryPlayer(mcPlayer);
} catch (Exception ignored) { }
private static int run(CommandContext<CommandSourceInfo> context) {
NexiaPlayer player = CommandUtil.getPlayer(context);
String type = StringArgumentType.getString(context, "type");
String map = StringArgumentType.getString(context, "map");
@@ -79,7 +63,7 @@ public class MapCommand {
ServerLevel level = ServerTime.fantasy.getOrOpenPersistentWorld(ResourceKey.create(Registry.DIMENSION_REGISTRY, new ResourceLocation(mapname[0], mapname[1])).location(), (
new RuntimeWorldConfig()
.setDimensionType(DimensionType.OVERWORLD_LOCATION)
.setGenerator(getChunkGenerator(Biomes.THE_VOID))
.setGenerator(getChunkGenerator())
.setDifficulty(Difficulty.HARD)
.setGameRule(GameRules.RULE_KEEPINVENTORY, false)
.setGameRule(GameRules.RULE_MOBGRIEFING, false)
@@ -90,8 +74,8 @@ public class MapCommand {
.setGameRule(GameRules.RULE_SHOWDEATHMESSAGES, false)
.setGameRule(GameRules.RULE_SPAWN_RADIUS, 0))).asWorld();
if (mcPlayer != null && player != null) {
mcPlayer.teleportTo(level, 0, 80, 0, 0, 0);
if (player != null) {
player.unwrap().teleportTo(level, 0, 80, 0, 0, 0);
player.sendMessage(
ChatFormat.nexiaMessage
@@ -123,8 +107,8 @@ public class MapCommand {
if(type.equalsIgnoreCase("tp")) {
ServerLevel level = ServerTime.fantasy.getOrOpenPersistentWorld(ResourceKey.create(Registry.DIMENSION_REGISTRY, new ResourceLocation(mapname[0], mapname[1])).location(), null).asWorld();
if(mcPlayer != null && player != null) {
mcPlayer.teleportTo(level, 0, 80, 0, 0, 0);
if(player != null) {
player.unwrap().teleportTo(level, 0, 80, 0, 0, 0);
player.sendMessage(
ChatFormat.nexiaMessage
@@ -1,32 +1,31 @@
package com.nexia.core.commands.staff;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.StringReader;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.chat.LegacyChatFormat;
import com.nexia.core.utilities.chat.PlayerMutes;
import com.nexia.core.utilities.player.PlayerUtil;
import me.lucko.fabric.api.permissions.v0.Permissions;
import com.nexia.core.utilities.commands.CommandUtil;
import net.kyori.adventure.text.Component;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.arguments.EntityArgument;
import net.minecraft.commands.arguments.selector.EntitySelector;
import net.minecraft.server.level.ServerPlayer;
import java.util.HashMap;
public class MuteCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register(Commands.literal("mute")
.requires(commandSourceStack -> Permissions.check(commandSourceStack, "nexia.staff.mute", 1))
.then(Commands.argument("player", EntityArgument.player())
.then(Commands.argument("duration", StringArgumentType.word())
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register(CommandUtils.literal("mute")
.requires(commandSourceInfo -> CommandUtil.hasPermission(commandSourceInfo, "nexia.staff.mute", 1))
.then(CommandUtils.argument("player", EntityArgument.player())
.then(CommandUtils.argument("duration", StringArgumentType.word())
.executes(context -> MuteCommand.mute(context, StringArgumentType.getString(context, "duration"), "No reason specified."))
.then(Commands.argument("reason", StringArgumentType.greedyString())
.then(CommandUtils.argument("reason", StringArgumentType.greedyString())
.executes(context -> MuteCommand.mute(context,
StringArgumentType.getString(context, "duration"),
StringArgumentType.getString(context, "reason"))
@@ -37,20 +36,20 @@ public class MuteCommand {
);
}
public static int mute(CommandContext<CommandSourceStack> context, String durationArg, String reason) throws CommandSyntaxException {
public static int mute(CommandContext<CommandSourceInfo> context, String durationArg, String reason) throws CommandSyntaxException {
CommandSourceStack sender = context.getSource();
ServerPlayer muted = EntityArgument.getPlayer(context, "player");
CommandSourceInfo sender = context.getSource();
ServerPlayer muted = context.getArgument("player", EntitySelector.class).findSinglePlayer(CommandUtil.getCommandSourceStack(context.getSource()));
int durationInSeconds;
try {
durationInSeconds = parseTimeArg(durationArg);
} catch (Exception e) {
PlayerUtil.safeSendMessage(sender, LegacyChatFormat.format("{f}Invalid duration. Examples: 1s / 2m / 3h / 4d / 5w"),
ChatFormat.nexiaMessage
context.getSource().sendMessage(ChatFormat.nexiaMessage
.append(Component.text("Invalid duration. Examples: ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text("1s / 2m / 3h / 4d / 5w").color(ChatFormat.failColor).decoration(ChatFormat.bold, false)),false);
.append(Component.text("1s / 2m / 3h / 4d / 5w").color(ChatFormat.failColor).decoration(ChatFormat.bold, false))
);
return 1;
}
@@ -1,75 +1,68 @@
package com.nexia.core.commands.staff;
import com.combatreforged.factory.api.world.entity.player.Player;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.context.CommandContext;
import com.nexia.core.Main;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.chat.LegacyChatFormat;
import com.nexia.core.utilities.player.PlayerUtil;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.ranks.NexiaRank;
import com.nexia.core.utilities.time.ServerTime;
import me.lucko.fabric.api.permissions.v0.Permissions;
import net.kyori.adventure.text.Component;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.SharedSuggestionProvider;
import net.minecraft.commands.arguments.EntityArgument;
import net.minecraft.commands.arguments.selector.EntitySelector;
import net.minecraft.server.level.ServerPlayer;
import java.util.ArrayList;
public class RankCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register(Commands.literal("rank")
.requires(commandSourceStack -> Permissions.check(commandSourceStack, "nexia.staff.rank"))
.then(Commands.argument("player", EntityArgument.player())
.then(Commands.argument("rank", StringArgumentType.string())
.suggests(((context, builder) -> SharedSuggestionProvider.suggest((Main.config.ranks), builder)))
.executes(context -> RankCommand.give(context, EntityArgument.getPlayer(context, "player"), StringArgumentType.getString(context, "rank")))))
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
ArrayList<String> ranks = new ArrayList<>();
NexiaRank.ranks.forEach(rank -> ranks.add(rank.id));
dispatcher.register(CommandUtils.literal("rank")
.requires(commandSourceInfo -> CommandUtil.hasPermission(commandSourceInfo, "nexia.staff.rank"))
.then(CommandUtils.argument("player", EntityArgument.player())
.then(CommandUtils.argument("rank", StringArgumentType.string())
.suggests(((context, builder) -> SharedSuggestionProvider.suggest((ranks), builder)))
.executes(context -> RankCommand.give(context, context.getArgument("player", EntitySelector.class).findSinglePlayer(CommandUtil.getCommandSourceStack(context.getSource())), StringArgumentType.getString(context, "rank")))))
);
}
public static int give(CommandContext<CommandSourceStack> context, ServerPlayer player, String rank) {
CommandSourceStack executer = context.getSource();
public static int give(CommandContext<CommandSourceInfo> context, ServerPlayer player, String rank) {
NexiaPlayer otherFactoryPlayer = new NexiaPlayer(player);
Player factoryExecutor = null;
for(NexiaRank tRank : NexiaRank.ranks){
if(rank.equalsIgnoreCase(tRank.id)){
Player otherFactoryPlayer = PlayerUtil.getFactoryPlayer(player);
try {
factoryExecutor = PlayerUtil.getFactoryPlayer(context.getSource().getPlayerOrException());
} catch(Exception ignored) { }
for(String tRank : Main.config.ranks){
if(rank.equalsIgnoreCase(tRank)){
if(factoryExecutor != null){
factoryExecutor.sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("You have set the rank of ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(otherFactoryPlayer.getRawName()).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, false))
.append(Component.text(" to ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(tRank).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, true).decoration(ChatFormat.bold, false))
.append(Component.text(".").color(ChatFormat.brandColor2).decoration(ChatFormat.bold, false).decoration(ChatFormat.bold, false))
);
} else {
executer.sendSuccess(LegacyChatFormat.format("{b1}You have set the rank of {b2}{} {b1}to: {b2}{b}{}{b1}.", otherFactoryPlayer.getRawName(), tRank), false);
}
context.getSource().sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("You have set the rank of ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(otherFactoryPlayer.getRawName()).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, false))
.append(Component.text(" to ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(tRank.name).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, true).decoration(ChatFormat.bold, false))
.append(Component.text(".").color(ChatFormat.brandColor2).decoration(ChatFormat.bold, false).decoration(ChatFormat.bold, false))
);
otherFactoryPlayer.sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("Your rank has been set to: ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(tRank).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, true))
.append(Component.text(tRank.name).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, true))
.append(Component.text(".").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
);
for (String tRank2 : Main.config.ranks) {
otherFactoryPlayer.removeTag(tRank2);
for (NexiaRank tRank2 : NexiaRank.ranks) {
otherFactoryPlayer.removeTag(tRank2.id);
}
ServerTime.factoryServer.runCommand(String.format("/lp user %s parent set %s", otherFactoryPlayer.getRawName(), tRank));
ServerTime.factoryServer.runCommand(String.format("/lp user %s parent set %s", otherFactoryPlayer.getRawName(), tRank.id));
otherFactoryPlayer.addTag(tRank);
otherFactoryPlayer.addTag(tRank.id);
}
}
@@ -1,124 +1,105 @@
package com.nexia.core.commands.staff;
import com.combatreforged.factory.api.world.entity.player.Player;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.Command;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.nexia.core.Main;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.chat.LegacyChatFormat;
import com.nexia.core.utilities.player.PlayerUtil;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.ranks.NexiaRank;
import com.nexia.core.utilities.time.ServerTime;
import me.lucko.fabric.api.permissions.v0.Permissions;
import net.kyori.adventure.text.Component;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.SharedSuggestionProvider;
import net.minecraft.commands.arguments.EntityArgument;
import net.minecraft.commands.arguments.selector.EntitySelector;
import net.minecraft.server.level.ServerPlayer;
public class StaffPrefixCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
import java.util.ArrayList;
dispatcher.register(Commands.literal("staffprefix")
.requires(commandSourceStack -> Permissions.check(commandSourceStack, "nexia.staff.prefix"))
.then(Commands.argument("type", StringArgumentType.string())
public class StaffPrefixCommand {
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
ArrayList<String> ranks = new ArrayList<>();
NexiaRank.ranks.forEach(rank -> ranks.add(rank.id));
dispatcher.register(CommandUtils.literal("staffprefix")
.requires(commandSourceInfo -> CommandUtil.hasPermission(commandSourceInfo, "nexia.staff.prefix"))
.then(CommandUtils.argument("type", StringArgumentType.string())
.suggests(((context, builder) -> SharedSuggestionProvider.suggest((new String[]{"set", "add", "remove"}), builder)))
.then(Commands.argument("player", EntityArgument.player())
.then(Commands.argument("prefix", StringArgumentType.string())
.suggests(((context, builder) -> SharedSuggestionProvider.suggest((Main.config.ranks), builder)))
.then(CommandUtils.argument("player", EntityArgument.player())
.then(CommandUtils.argument("prefix", StringArgumentType.string())
.suggests(((context, builder) -> SharedSuggestionProvider.suggest((ranks), builder)))
.executes(context -> {
CommandSourceStack executor = context.getSource();
String type = StringArgumentType.getString(context, "type");
ServerPlayer mcOtherPlayer = EntityArgument.getPlayer(context, "player");
Player otherPlayer = PlayerUtil.getFactoryPlayer(mcOtherPlayer);
ServerPlayer mcOtherPlayer = context.getArgument("player", EntitySelector.class).findSinglePlayer(CommandUtil.getCommandSourceStack(context.getSource()));
NexiaPlayer otherPlayer = new NexiaPlayer(mcOtherPlayer);
String prefix = StringArgumentType.getString(context, "prefix");
ServerPlayer mcExecutor;
Player factoryExecutor = null;
try {
mcExecutor = executor.getPlayerOrException();
factoryExecutor = PlayerUtil.getFactoryPlayer(mcExecutor);
} catch(Exception ignored){ }
if(type.equalsIgnoreCase("set")){
for(String rank : Main.config.ranks){
if(prefix.equalsIgnoreCase(rank)){
for(NexiaRank rank : NexiaRank.ranks){
if(prefix.equalsIgnoreCase(rank.id)){
if(factoryExecutor != null){
factoryExecutor.sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("You have set the prefix of ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(otherPlayer.getRawName()).color(ChatFormat.brandColor2))
.append(Component.text(" to: ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(rank).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, true))
.append(Component.text(".").color(ChatFormat.normalColor).decoration(ChatFormat.bold,false).decoration(ChatFormat.bold, false))
);
} else {
executor.sendSuccess(LegacyChatFormat.format("{b1}You have set the prefix of {b2}{} {b1}to: {b2}{b}{}{b1}.", otherPlayer.getRawName(), rank), false);
}
context.getSource().sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("You have set the prefix of ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(otherPlayer.getRawName()).color(ChatFormat.brandColor2))
.append(Component.text(" to: ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(rank.name).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, true))
.append(Component.text(".").color(ChatFormat.normalColor).decoration(ChatFormat.bold,false).decoration(ChatFormat.bold, false))
);
otherPlayer.sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("Your prefix has been set to: ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(rank).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, true))
.append(Component.text(rank.name).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, true))
.append(Component.text(".").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
);
for (String tRank : Main.config.ranks) {
otherPlayer.removeTag(tRank);
for (NexiaRank tRank : NexiaRank.ranks) {
otherPlayer.removeTag(tRank.id);
}
otherPlayer.addTag(rank);
otherPlayer.addTag(rank.id);
}
}
}
if(type.equalsIgnoreCase("remove")){
for(String rank : Main.config.ranks){
if(prefix.equalsIgnoreCase(rank)){
for(NexiaRank rank : NexiaRank.ranks){
if(prefix.equalsIgnoreCase(rank.id)){
if(factoryExecutor != null){
factoryExecutor.sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("You have removed the prefix ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(rank).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, true).decoration(ChatFormat.bold, false))
.append(Component.text(" from: ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(otherPlayer.getRawName()).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, false))
.append(Component.text(".").color(ChatFormat.normalColor).decoration(ChatFormat.bold,false))
);
} else {
executor.sendSuccess(LegacyChatFormat.format("{b1}You have removed the prefix {b2}{b}{} {b1}from {b2}{}{b1}.", rank, otherPlayer.getRawName()), false);
}
context.getSource().sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("You have removed the prefix ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(rank.name).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, true).decoration(ChatFormat.bold, false))
.append(Component.text(" from: ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(otherPlayer.getRawName()).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, false))
.append(Component.text(".").color(ChatFormat.normalColor).decoration(ChatFormat.bold,false))
);
ServerTime.factoryServer.runCommand(String.format("/lp user %s permission unset nexia.prefix.%s", otherPlayer.getRawName(), rank));
ServerTime.factoryServer.runCommand(String.format("/lp user %s permission unset %s", otherPlayer.getRawName(), rank.groupID));
}
}
}
if(type.equalsIgnoreCase("add")){
for(String rank : Main.config.ranks){
if(prefix.equalsIgnoreCase(rank)){
if(factoryExecutor != null){
factoryExecutor.sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("You have added the prefix ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(rank).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, true))
.append(Component.text(" to: ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(otherPlayer.getRawName()).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, false))
.append(Component.text(".").color(ChatFormat.normalColor).decoration(ChatFormat.bold,false))
);
} else {
executor.sendSuccess(LegacyChatFormat.format("{b1}You have added the prefix {b2}{b}{} {b1}to {b2}{}{b1}.", rank, otherPlayer.getRawName()), false);
}
for(NexiaRank rank : NexiaRank.ranks){
if(prefix.equalsIgnoreCase(rank.id)){
context.getSource().sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("You have added the prefix ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(rank.name).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, true))
.append(Component.text(" to: ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(otherPlayer.getRawName()).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, false))
.append(Component.text(".").color(ChatFormat.normalColor).decoration(ChatFormat.bold,false))
);
ServerTime.factoryServer.runCommand(String.format("/lp user %s permission set nexia.prefix.%s true", otherPlayer.getRawName(), rank));
ServerTime.factoryServer.runCommand(String.format("/lp user %s permission set %s true", otherPlayer.getRawName(), rank.groupID));
}
}
}
@@ -1,103 +1,71 @@
package com.nexia.core.commands.staff;
import com.combatreforged.factory.api.world.entity.player.Player;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.Command;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.chat.LegacyChatFormat;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.player.PlayerData;
import com.nexia.core.utilities.player.PlayerDataManager;
import com.nexia.core.utilities.player.PlayerUtil;
import me.lucko.fabric.api.permissions.v0.Permissions;
import net.kyori.adventure.text.Component;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.SharedSuggestionProvider;
import net.minecraft.commands.arguments.EntityArgument;
import net.minecraft.network.chat.TextComponent;
import net.minecraft.commands.arguments.selector.EntitySelector;
import net.minecraft.server.level.ServerPlayer;
public class StaffReportCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register(Commands.literal("staffreport")
.requires(commandSourceStack -> Permissions.check(commandSourceStack, "nexia.staff.report", 1))
.then(Commands.argument("type", StringArgumentType.string())
dispatcher.register(CommandUtils.literal("staffreport")
.requires(commandSourceInfo -> CommandUtil.hasPermission(commandSourceInfo, "nexia.staff.report", 3))
.then(CommandUtils.argument("type", StringArgumentType.string())
.suggests(((context, builder) -> SharedSuggestionProvider.suggest((new String[]{"ban", "unban"}), builder)))
.then(Commands.argument("player", EntityArgument.player())
.then(CommandUtils.argument("player", EntityArgument.player())
.executes(context -> {
CommandSourceStack executor = context.getSource();
String type = StringArgumentType.getString(context, "type");
ServerPlayer mcOtherPlayer = EntityArgument.getPlayer(context, "player");
Player otherPlayer = PlayerUtil.getFactoryPlayer(mcOtherPlayer);
ServerPlayer mcOtherPlayer = context.getArgument("player", EntitySelector.class).findSinglePlayer(CommandUtil.getCommandSourceStack(context.getSource()));
NexiaPlayer otherPlayer = new NexiaPlayer(mcOtherPlayer);
Player factoryExecutor = null;
try {
factoryExecutor = PlayerUtil.getFactoryPlayer(executor.getPlayerOrException());
} catch (Exception ignored) { }
PlayerData data = PlayerDataManager.get(mcOtherPlayer);
PlayerData data = PlayerDataManager.get(mcOtherPlayer.getUUID());
if(type.equalsIgnoreCase("ban")) {
if(data.savedData.isReportBanned()) {
if(factoryExecutor != null) {
factoryExecutor.sendMessage(Component.text("That player is already report banned!").color(ChatFormat.failColor).decoration(ChatFormat.bold, false));
} else {
executor.sendFailure(new TextComponent("That player is already report banned!"));
}
context.getSource().sendMessage(Component.text("That player is already report banned!").color(ChatFormat.failColor));
return 0;
}
data.savedData.setReportBanned(true);
if(factoryExecutor != null) {
factoryExecutor.sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("You have report banned ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false)
.append(Component.text(otherPlayer.getRawName()).color(ChatFormat.brandColor1).decoration(ChatFormat.bold, true))
.append(Component.text(".")).color(ChatFormat.normalColor).decoration(ChatFormat.bold, false)
)
);
} else {
executor.sendSuccess(LegacyChatFormat.format("You have report banned {}.", otherPlayer.getRawName()), true);
}
context.getSource().sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("You have report banned ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false)
.append(Component.text(otherPlayer.getRawName()).color(ChatFormat.brandColor1).decoration(ChatFormat.bold, true))
.append(Component.text(".")).color(ChatFormat.normalColor).decoration(ChatFormat.bold, false)
)
);
return Command.SINGLE_SUCCESS;
}
if(type.equalsIgnoreCase("unban") || type.equalsIgnoreCase("pardon")) {
if(!data.savedData.isReportBanned()) {
if(factoryExecutor != null) {
factoryExecutor.sendMessage(Component.text("That player is not report banned!").color(ChatFormat.failColor).decoration(ChatFormat.bold, false));
} else {
executor.sendFailure(new TextComponent("That player is not report banned!"));
}
context.getSource().sendMessage(Component.text("That player is not report banned!").color(ChatFormat.failColor));
return 0;
}
data.savedData.setReportBanned(false);
if(factoryExecutor != null) {
factoryExecutor.sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("You have report unbanned ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false)
.append(Component.text(otherPlayer.getRawName()).color(ChatFormat.brandColor1).decoration(ChatFormat.bold, true))
.append(Component.text(".")).color(ChatFormat.normalColor).decoration(ChatFormat.bold, false)
)
);
} else {
executor.sendSuccess(LegacyChatFormat.format("You have report unbanned {}.", otherPlayer.getRawName()), true);
}
context.getSource().sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("You have report unbanned ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false)
.append(Component.text(otherPlayer.getRawName()).color(ChatFormat.brandColor1).decoration(ChatFormat.bold, true))
.append(Component.text(".")).color(ChatFormat.normalColor).decoration(ChatFormat.bold, false)
)
);
return Command.SINGLE_SUCCESS;
}
if(factoryExecutor != null) {
factoryExecutor.sendMessage(Component.text("Invalid argument").color(ChatFormat.failColor).decoration(ChatFormat.bold, false));
} else {
executor.sendFailure(new TextComponent("Invalid argument!"));
}
context.getSource().sendMessage(Component.text("Invalid argument").color(ChatFormat.failColor));
return Command.SINGLE_SUCCESS;
return 0;
}))
)
@@ -1,42 +1,40 @@
package com.nexia.core.commands.staff;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.authlib.GameProfile;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.chat.LegacyChatFormat;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.player.BanHandler;
import com.nexia.core.utilities.player.PlayerUtil;
import me.lucko.fabric.api.permissions.v0.Permissions;
import net.kyori.adventure.text.Component;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.arguments.GameProfileArgument;
import java.util.Collection;
public class TempBanCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register(Commands.literal("tempban")
.requires(commandSourceStack -> Permissions.check(commandSourceStack, "nexia.staff.ban", 3))
.then(Commands.argument("player", GameProfileArgument.gameProfile())
.then(Commands.argument("duration", StringArgumentType.word())
.then(Commands.argument("reason", StringArgumentType.greedyString())
.executes(context -> TempBanCommand.ban(context.getSource(), GameProfileArgument.getGameProfiles(context, "player"), StringArgumentType.getString(context, "reason"), StringArgumentType.getString(context, "duration"))))
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register(CommandUtils.literal("tempban")
.requires(commandSourceInfo -> CommandUtil.hasPermission(commandSourceInfo, "nexia.staff.ban", 3))
.then(CommandUtils.argument("player", GameProfileArgument.gameProfile())
.then(CommandUtils.argument("duration", StringArgumentType.word())
.then(CommandUtils.argument("reason", StringArgumentType.greedyString())
.executes(context -> TempBanCommand.ban(context.getSource(), context.getArgument("player", GameProfileArgument.Result.class).getNames(CommandUtil.getCommandSourceStack(context.getSource())), StringArgumentType.getString(context, "reason"), StringArgumentType.getString(context, "duration"))))
)
));
}
public static int ban(CommandSourceStack sender, Collection<GameProfile> collection, String reason, String durationArg) {
public static int ban(CommandSourceInfo sender, Collection<GameProfile> collection, String reason, String durationArg) {
int durationInSeconds;
try {
durationInSeconds = BanHandler.parseTimeArg(durationArg);
} catch (Exception e) {
PlayerUtil.safeSendMessage(sender, LegacyChatFormat.format("{f}Invalid duration. Examples: 1s / 2m / 3h / 4d / 5w"), ChatFormat.nexiaMessage
sender.sendMessage(ChatFormat.nexiaMessage
.append(Component.text("Invalid duration. Examples: ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text("1s / 2m / 3h / 4d / 5w").color(ChatFormat.failColor).decoration(ChatFormat.bold, false)), false);
.append(Component.text("1s / 2m / 3h / 4d / 5w").color(ChatFormat.failColor).decoration(ChatFormat.bold, false))
);
return 1;
}
@@ -1,79 +1,61 @@
package com.nexia.core.commands.staff;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.authlib.GameProfile;
import com.mojang.brigadier.CommandDispatcher;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.chat.LegacyChatFormat;
import com.nexia.core.utilities.player.PlayerUtil;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.time.ServerTime;
import me.lucko.fabric.api.permissions.v0.Permissions;
import net.kyori.adventure.text.Component;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.SharedSuggestionProvider;
import net.minecraft.commands.arguments.GameProfileArgument;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.server.players.UserBanList;
import java.util.Collection;
public class UnBanCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register(Commands.literal("unban")
.requires(commandSourceStack -> Permissions.check(commandSourceStack, "nexia.staff.ban", 3))
.then(Commands.argument("player", GameProfileArgument.gameProfile())
.suggests(((context, builder) -> SharedSuggestionProvider.suggest((context.getSource()).getServer().getPlayerList().getBans().getUserList(), builder)))
.executes(context -> UnBanCommand.unban(context.getSource(), GameProfileArgument.getGameProfiles(context, "player")))
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register(CommandUtils.literal("unban")
.requires(commandSourceInfo -> CommandUtil.hasPermission(commandSourceInfo, "nexia.staff.ban", 3))
.then(CommandUtils.argument("player", GameProfileArgument.gameProfile())
.suggests(((context, builder) -> SharedSuggestionProvider.suggest((ServerTime.minecraftServer.getPlayerList().getBans().getUserList()), builder)))
.executes(context -> UnBanCommand.unban(context.getSource(), context.getArgument("player", GameProfileArgument.Result.class).getNames(CommandUtil.getCommandSourceStack(context.getSource()))))
)
);
dispatcher.register(Commands.literal("pardon")
.requires(commandSourceStack -> Permissions.check(commandSourceStack, "nexia.staff.ban", 3))
.then(Commands.argument("player", GameProfileArgument.gameProfile())
.suggests(((context, builder) -> SharedSuggestionProvider.suggest((context.getSource()).getServer().getPlayerList().getBans().getUserList(), builder)))
.executes(context -> UnBanCommand.unban(context.getSource(), GameProfileArgument.getGameProfiles(context, "player")))
dispatcher.register(CommandUtils.literal("pardon")
.requires(commandSourceInfo -> CommandUtil.hasPermission(commandSourceInfo, "nexia.staff.ban", 3))
.then(CommandUtils.argument("player", GameProfileArgument.gameProfile())
.suggests(((context, builder) -> SharedSuggestionProvider.suggest((ServerTime.minecraftServer.getPlayerList().getBans().getUserList()), builder)))
.executes(context -> UnBanCommand.unban(context.getSource(), context.getArgument("player", GameProfileArgument.Result.class).getNames(CommandUtil.getCommandSourceStack(context.getSource()))))
)
);
}
public static int unban(CommandSourceStack context, Collection<GameProfile> collection) {
public static int unban(CommandSourceInfo context, Collection<GameProfile> collection) {
UserBanList userBanList = ServerTime.minecraftServer.getPlayerList().getBans();
int i = 0;
ServerPlayer player = null;
try {
player = context.getPlayerOrException();
} catch (Exception ignored){ }
for (GameProfile gameProfile : collection) {
if (userBanList.isBanned(gameProfile)) {
userBanList.remove(gameProfile);
++i;
if(player != null){
PlayerUtil.getFactoryPlayer(player).sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("You have unbanned ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(gameProfile.getName()).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, false))
.append(Component.text(".").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
);
} else {
context.sendSuccess(LegacyChatFormat.format("{b1}You have unbanned {b2}{}{b1}.", gameProfile.getName()), true);
}
context.getSender().sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("You have unbanned ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
.append(Component.text(gameProfile.getName()).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, false))
.append(Component.text(".").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
);
}
}
if (i == 0) {
if(player != null){
PlayerUtil.getFactoryPlayer(player).sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("That player is not banned.").color(ChatFormat.failColor))
);
} else {
context.sendSuccess(LegacyChatFormat.formatFail("That player is not banned."), false);
}
context.sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("That player is not banned.").color(ChatFormat.failColor))
);
} else {
return i;
@@ -1,31 +1,28 @@
package com.nexia.core.commands.staff;
import com.combatreforged.factory.api.world.entity.player.Player;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.games.util.PlayerGameMode;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.chat.LegacyChatFormat;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.player.GamemodeBanHandler;
import com.nexia.core.utilities.player.PlayerUtil;
import me.lucko.fabric.api.permissions.v0.Permissions;
import com.nexia.core.utilities.player.NexiaPlayer;
import net.kyori.adventure.text.Component;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.SharedSuggestionProvider;
import net.minecraft.commands.arguments.EntityArgument;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.commands.arguments.selector.EntitySelector;
public class UnGamemodeBanCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register(Commands.literal("ungamemodeban")
.requires(commandSourceStack -> Permissions.check(commandSourceStack, "nexia.staff.ban", 3))
.then(Commands.argument("player", EntityArgument.player())
.then(Commands.argument("gamemode", StringArgumentType.string())
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register(CommandUtils.literal("ungamemodeban")
.requires(commandSourceInfo -> CommandUtil.hasPermission(commandSourceInfo, "nexia.staff.ban", 3))
.then(CommandUtils.argument("player", EntityArgument.player())
.then(CommandUtils.argument("gamemode", StringArgumentType.string())
.suggests(((context, builder) -> SharedSuggestionProvider.suggest((PlayerGameMode.stringPlayerGameModes), builder)))
.executes(UnGamemodeBanCommand::unBan)
)
@@ -33,34 +30,20 @@ public class UnGamemodeBanCommand {
);
}
public static int unBan(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
CommandSourceStack sender = context.getSource();
ServerPlayer mcExecutor = null;
Player executor = null;
try {
mcExecutor = sender.getPlayerOrException();
} catch (Exception ignored){ }
if(mcExecutor != null) {
executor = PlayerUtil.getFactoryPlayer(mcExecutor);
}
public static int unBan(CommandContext<CommandSourceInfo> context) throws CommandSyntaxException {
CommandSourceInfo sender = context.getSource();
PlayerGameMode gameMode = PlayerGameMode.identifyGamemode(StringArgumentType.getString(context, "gamemode"));
if(gameMode == null) {
if(executor != null) {
executor.sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("Invalid gamemode!").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
);
} else {
sender.sendFailure(LegacyChatFormat.format("{f}Invalid gamemode!"));
}
sender.sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("Invalid gamemode!").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
);
return 1;
}
GamemodeBanHandler.tryUnGamemodeBan(sender, EntityArgument.getPlayer(context, "player"), gameMode);
GamemodeBanHandler.tryUnGamemodeBan(sender, new NexiaPlayer(context.getArgument("player", EntitySelector.class).findSinglePlayer(CommandUtil.getCommandSourceStack(context.getSource()))), gameMode);
return 1;
}
@@ -1,30 +1,30 @@
package com.nexia.core.commands.staff;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.utilities.chat.PlayerMutes;
import me.lucko.fabric.api.permissions.v0.Permissions;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import com.nexia.core.utilities.commands.CommandUtil;
import net.minecraft.commands.arguments.EntityArgument;
import net.minecraft.commands.arguments.selector.EntitySelector;
import net.minecraft.server.level.ServerPlayer;
public class UnMuteCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register(Commands.literal("unmute")
.requires(commandSourceStack -> Permissions.check(commandSourceStack, "nexia.staff.mute", 1))
.then(Commands.argument("player", EntityArgument.player())
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register(CommandUtils.literal("unmute")
.requires(commandSourceInfo -> CommandUtil.hasPermission(commandSourceInfo, "nexia.staff.mute", 1))
.then(CommandUtils.argument("player", EntityArgument.player())
.executes(UnMuteCommand::unMute)
)
);
}
public static int unMute(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
CommandSourceStack sender = context.getSource();
ServerPlayer muted = EntityArgument.getPlayer(context, "player");
public static int unMute(CommandContext<CommandSourceInfo> context) throws CommandSyntaxException {
CommandSourceInfo sender = context.getSource();
ServerPlayer muted = context.getArgument("player", EntitySelector.class).findSinglePlayer(CommandUtil.getCommandSourceStack(context.getSource()));
PlayerMutes.unMute(sender, muted);
@@ -1,30 +1,29 @@
package com.nexia.core.commands.staff;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.combatreforged.factory.api.command.CommandUtils;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.utilities.commands.CommandUtil;
import com.nexia.core.utilities.player.BanHandler;
import me.lucko.fabric.api.permissions.v0.Permissions;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.arguments.GameProfileArgument;
public class UnTempBanCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register(Commands.literal("untempban")
.requires(commandSourceStack -> Permissions.check(commandSourceStack, "nexia.staff.ban", 3))
.then(Commands.argument("player", GameProfileArgument.gameProfile())
public static void register(CommandDispatcher<CommandSourceInfo> dispatcher) {
dispatcher.register(CommandUtils.literal("untempban")
.requires(commandSourceInfo -> CommandUtil.hasPermission(commandSourceInfo, "nexia.staff.ban", 3))
.then(CommandUtils.argument("player", GameProfileArgument.gameProfile())
.executes(UnTempBanCommand::unBan)
)
);
}
public static int unBan(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
CommandSourceStack sender = context.getSource();
public static int unBan(CommandContext<CommandSourceInfo> context) throws CommandSyntaxException {
CommandSourceInfo sender = context.getSource();
BanHandler.tryUnBan(sender, GameProfileArgument.getGameProfiles(context, "player"));
BanHandler.tryUnBan(sender, context.getArgument("player", GameProfileArgument.Result.class).getNames(CommandUtil.getCommandSourceStack(context.getSource())));
return 1;
}
@@ -7,20 +7,18 @@ import com.nexia.minigames.games.bedwars.players.BwTeam;
import me.lucko.fabric.api.permissions.v0.Permissions;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.server.level.ServerPlayer;
public class BwReloadTeamColorsCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean bl) {
dispatcher.register(Commands.literal("bwreloadteamcolors").executes(BwReloadTeamColorsCommand::run)
.requires(commandSourceStack -> Permissions.check(commandSourceStack, "nexia.dev.bwreloadteamcolors", 3)));
dispatcher.register(Commands.literal("bwreloadteamcolors")
.requires(commandSourceStack -> Permissions.check(commandSourceStack, "nexia.dev.bwreloadteamcolors", 3))
.executes(BwReloadTeamColorsCommand::run)
);
}
public static int run(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
ServerPlayer player = context.getSource().getPlayerOrException();
BwTeam.reloadPlayerTeamColors(player);
BwTeam.reloadPlayerTeamColors();
return 1;
}
@@ -25,7 +25,6 @@ import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.Difficulty;
import net.minecraft.world.level.GameRules;
import net.minecraft.world.level.biome.Biomes;
import net.minecraft.world.level.dimension.DimensionType;
import xyz.nucleoid.fantasy.RuntimeWorldConfig;
@@ -61,7 +60,7 @@ public class DevExperimentalCommandsCommand {
ServerLevel level = ServerTime.fantasy.getOrOpenPersistentWorld(ResourceKey.create(Registry.DIMENSION_REGISTRY, new ResourceLocation("ffa", name)).location(), (
new RuntimeWorldConfig()
.setDimensionType(DimensionType.OVERWORLD_LOCATION)
.setGenerator(getChunkGenerator(Biomes.PLAINS))
.setGenerator(getChunkGenerator())
.setDifficulty(Difficulty.HARD)
.setGameRule(GameRules.RULE_KEEPINVENTORY, true)
.setGameRule(GameRules.RULE_MOBGRIEFING, false)
@@ -39,7 +39,10 @@ public class ForceGameEndCommand {
case "oitc" -> OitcGame.endGame(null);
case "skywars" -> SkywarsGame.winNearestCenter();
case "bedwars" -> BwGame.endBedwars();
default -> context.getSource().sendFailure(new TextComponent("Invalid game!"));
default -> {
context.getSource().sendFailure(new TextComponent("Invalid game!"));
return 0;
}
}
context.getSource().sendSuccess(new TextComponent("Game ended (if valid)."), false);
@@ -6,6 +6,7 @@ import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.nexia.core.utilities.chat.LegacyChatFormat;
import com.nexia.core.utilities.item.InventoryUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import me.lucko.fabric.api.permissions.v0.Permissions;
import net.minecraft.Util;
import net.minecraft.commands.CommandSourceStack;
@@ -65,7 +66,7 @@ public class LoadInventoryCommand {
context.getSource().sendFailure(LegacyChatFormat.format("Unable to load the content of the inventory with the name '{}' in '{}'.", inventory, type));
return 0;
} else {
InventoryUtil.loadInventory(player, type, inventory);
InventoryUtil.loadInventory(new NexiaPlayer(player), type, inventory);
context.getSource().sendSuccess(LegacyChatFormat.format("{b1}Successfully loaded '{}' in '{}' to " + ((isContextPlayer) ? "your inventory" : "the inventory of " + player.getScoreboardName()) + ".", inventory, type), false);
@@ -32,7 +32,7 @@ public class SkipQueueCommand {
private static int currentGamemode(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
ServerPlayer player = context.getSource().getPlayerOrException();
PlayerGameMode gameMode = PlayerDataManager.get(player).gameMode;
PlayerGameMode gameMode = PlayerDataManager.get(player.getUUID()).gameMode;
if(gameMode.equals(PlayerGameMode.SKYWARS)) return skywars(context);
if(gameMode.equals(PlayerGameMode.BEDWARS)) return bedwars(context);
@@ -2,41 +2,13 @@ package com.nexia.core.config;
import me.sargunvohra.mcmods.autoconfig1u.ConfigData;
import me.sargunvohra.mcmods.autoconfig1u.annotation.Config;
import me.sargunvohra.mcmods.autoconfig1u.shadowed.blue.endless.jankson.Comment;
@Config(name = "nexia-core")
public class ModConfig implements ConfigData {
@Comment("List of ranks.")
public String[] ranks = {""};
public String[] rules = {""};
public double[] lobbyPos = {
0.5,
65.0,
0.5,
};
public String serverType = "";
public boolean debugMode = false;
public Enhancements enhancements = new Enhancements();
public static class Enhancements {
@Comment("Toggles if the better shields are enabled.")
public boolean betterShields = false;
@Comment("Modifies the pearl cooldown in ticks (20 ticks = 1 second).")
public int enderpearlCooldown = 20;
@Comment("Remove Projectiles going through players [EXPERIMENTAL].")
public boolean projectilePatch = false;
@Comment("Fix Tridents doing 8 damage when thrown, instead of 6.")
public boolean tridentDamagePatch = false;
@Comment("Enables armor swapping which was introduced in 23w05a (1.19.4).")
public boolean armorSwapping = false;
}
}
@@ -1,16 +1,13 @@
package com.nexia.core.games.util;
import com.combatreforged.factory.api.world.entity.player.Player;
import com.nexia.core.Main;
import com.combatreforged.factory.api.world.types.Minecraft;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.item.ItemDisplayUtil;
import com.nexia.core.utilities.item.ItemStackUtil;
import com.nexia.core.utilities.player.BanHandler;
import com.nexia.core.utilities.player.GamemodeBanHandler;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.player.PlayerDataManager;
import com.nexia.core.utilities.player.PlayerUtil;
import com.nexia.core.utilities.pos.EntityPos;
import com.nexia.core.utilities.time.ServerTime;
import com.nexia.ffa.FfaGameMode;
import com.nexia.ffa.FfaUtil;
import com.nexia.ffa.classic.utilities.FfaAreas;
@@ -19,8 +16,6 @@ import com.nexia.ffa.kits.utilities.FfaKitsUtil;
import com.nexia.ffa.sky.utilities.FfaSkyUtil;
import com.nexia.ffa.uhc.utilities.FfaUhcUtil;
import com.nexia.minigames.games.bedwars.players.BwPlayerEvents;
import com.nexia.minigames.games.bedwars.util.BwScoreboard;
import com.nexia.minigames.games.bedwars.util.BwUtil;
import com.nexia.minigames.games.duels.DuelGameHandler;
import com.nexia.minigames.games.football.FootballGame;
import com.nexia.minigames.games.football.FootballGameMode;
@@ -31,21 +26,16 @@ import com.nexia.minigames.games.skywars.SkywarsGameMode;
import me.lucko.fabric.api.permissions.v0.Permissions;
import net.kyori.adventure.text.Component;
import net.minecraft.network.chat.TextComponent;
import net.minecraft.network.protocol.game.ClientboundStopSoundPacket;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.ai.attributes.Attributes;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.GameType;
import net.minecraft.world.level.Level;
import org.json.simple.JSONObject;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Objects;
import static com.nexia.core.utilities.player.BanHandler.getBanTime;
@@ -54,7 +44,7 @@ public class LobbyUtil {
public static String[] statsGameModes = {"FFA CLASSIC", "SKY FFA", "UHC FFA", "KIT FFA", "BEDWARS", "OITC", "DUELS", "SKYWARS", "FOOTBALL"};
public static ServerLevel lobbyWorld = null;
public static EntityPos lobbySpawn = new EntityPos(Main.config.lobbyPos[0], Main.config.lobbyPos[1], Main.config.lobbyPos[2], 0, 0);
public static EntityPos lobbySpawn = new EntityPos(0, 65, 0, 0, 0);
public static boolean isLobbyWorld(Level level) {
return level.dimension() == Level.OVERWORLD;
@@ -94,91 +84,35 @@ public class LobbyUtil {
"in_kitroom",
NO_RANK_DISPLAY_TAG,
NO_SATURATION_TAG,
NO_FALL_DAMAGE_TAG
NO_FALL_DAMAGE_TAG,
NO_DAMAGE_TAG
};
public static void leaveAllGames(ServerPlayer minecraftPlayer, boolean tp) {
Player player = PlayerUtil.getFactoryPlayer(minecraftPlayer);
if (BwUtil.isInBedWars(minecraftPlayer)) {
BwPlayerEvents.leaveInBedWars(minecraftPlayer);
}
else if (FfaUtil.isFfaPlayer(minecraftPlayer)) {
FfaUtil.leaveOrDie(minecraftPlayer, minecraftPlayer.getLastDamageSource(), true);
}
else if (PlayerDataManager.get(minecraftPlayer).gameMode == PlayerGameMode.LOBBY) {
DuelGameHandler.leave(minecraftPlayer, false);
}
else if (PlayerDataManager.get(minecraftPlayer).gameMode == PlayerGameMode.OITC) {
OitcGame.leave(minecraftPlayer);
}
else if (PlayerDataManager.get(minecraftPlayer).gameMode == PlayerGameMode.SKYWARS) {
SkywarsGame.leave(minecraftPlayer);
}
else if (PlayerDataManager.get(minecraftPlayer).gameMode == PlayerGameMode.FOOTBALL) {
FootballGame.leave(minecraftPlayer);
}
PlayerUtil.sendBossbar(SkywarsGame.BOSSBAR, minecraftPlayer, true);
BwScoreboard.removeScoreboardFor(minecraftPlayer);
minecraftPlayer.setGlowing(false);
minecraftPlayer.setGameMode(GameType.ADVENTURE);
for(String tag : LobbyUtil.removedTags) {
if(player.hasTag(tag)) player.removeTag(tag);
}
returnToLobby(minecraftPlayer, tp);
}
public static void returnToLobby(ServerPlayer minecraftPlayer, boolean tp) {
Player player = PlayerUtil.getFactoryPlayer(minecraftPlayer);
for(String tag : LobbyUtil.removedTags) {
if(player.hasTag(tag)) player.removeTag(tag);
}
minecraftPlayer.setInvulnerable(false);
minecraftPlayer.abilities.mayfly = false;
minecraftPlayer.abilities.flying = false;
Objects.requireNonNull(minecraftPlayer.getAttribute(Attributes.KNOCKBACK_RESISTANCE)).setBaseValue(0.0);
minecraftPlayer.onUpdateAbilities();
minecraftPlayer.setGlowing(false);
PlayerUtil.resetHealthStatus(player);
minecraftPlayer.setGameMode(GameType.ADVENTURE);
player.getInventory().clear();
minecraftPlayer.inventory.setCarried(ItemStack.EMPTY);
minecraftPlayer.getEnderChestInventory().clearContent();
minecraftPlayer.setExperiencePoints(0);
minecraftPlayer.setExperienceLevels(0);
public static void returnToLobby(NexiaPlayer player, boolean tp) {
player.leaveAllGames();
player.reset(true, Minecraft.GameMode.ADVENTURE);
// Duels shit
player.addTag("duels");
DuelGameHandler.leave(minecraftPlayer, false);
DuelGameHandler.leave(player, false);
if (tp) {
minecraftPlayer.setRespawnPosition(lobbyWorld.dimension(), lobbySpawn.toBlockPos(), lobbySpawn.yaw, true, false);
minecraftPlayer.teleportTo(lobbyWorld, lobbySpawn.x, lobbySpawn.y, lobbySpawn.z, lobbySpawn.pitch, lobbySpawn.yaw);
player.unwrap().setRespawnPosition(lobbyWorld.dimension(), lobbySpawn.toBlockPos(), lobbySpawn.yaw, true, false);
player.unwrap().teleportTo(lobbyWorld, lobbySpawn.x, lobbySpawn.y, lobbySpawn.z, lobbySpawn.pitch, lobbySpawn.yaw);
if(Permissions.check(minecraftPlayer, "nexia.prefix.supporter")) {
minecraftPlayer.abilities.mayfly = true;
minecraftPlayer.onUpdateAbilities();
if(Permissions.check(player.unwrap(), "nexia.prefix.supporter")) {
player.setAbleToFly(true);
}
LobbyUtil.giveItems(minecraftPlayer);
LobbyUtil.giveItems(player);
}
minecraftPlayer.connection.send(new ClientboundStopSoundPacket());
PlayerDataManager.get(minecraftPlayer).gameMode = PlayerGameMode.LOBBY;
player.removeTag(LobbyUtil.NO_RANK_DISPLAY_TAG);
player.removeTag(LobbyUtil.NO_FALL_DAMAGE_TAG);
player.removeTag(LobbyUtil.NO_DAMAGE_TAG);
ServerTime.minecraftServer.getPlayerList().sendPlayerPermissionLevel(minecraftPlayer);
PlayerDataManager.get(player).gameMode = PlayerGameMode.LOBBY;
}
public static void giveItems(ServerPlayer minecraftPlayer) {
public static void giveItems(NexiaPlayer player) {
ItemStack compass = new ItemStack(Items.COMPASS);
compass.setHoverName(new TextComponent("§eGamemode Selector"));
ItemDisplayUtil.addGlint(compass);
@@ -206,26 +140,27 @@ public class LobbyUtil {
ItemDisplayUtil.addGlint(customDuelSword);
ItemDisplayUtil.addLore(customDuelSword, "§eHit a player §7to duel them in your custom kit.", 0);
if(Permissions.check(minecraftPlayer, "nexia.prefix.supporter")) {
if(Permissions.check(player.unwrap(), "nexia.prefix.supporter")) {
ItemStack elytra = new ItemStack(Items.ELYTRA);
elytra.setHoverName(new TextComponent("§5§lSupporter Elytra"));
ItemDisplayUtil.addGlint(elytra);
elytra.getOrCreateTag().putBoolean("Unbreakable", true);
ItemDisplayUtil.addLore(elytra, "§7Thanks for supporting the server!", 0);
elytra.hideTooltipPart(ItemStack.TooltipPart.UNBREAKABLE);
minecraftPlayer.setItemSlot(EquipmentSlot.CHEST, elytra);
player.unwrap().setItemSlot(EquipmentSlot.CHEST, elytra);
}
minecraftPlayer.setSlot(0, customDuelSword); // 1st slot
minecraftPlayer.setSlot(4, compass); //middle slot
minecraftPlayer.setSlot(3, nameTag); //left
minecraftPlayer.setSlot(5, queueSword); //right
minecraftPlayer.setSlot(8, teamSword); // like right right not right
ItemStackUtil.sendInventoryRefreshPacket(minecraftPlayer);
player.unwrap().setSlot(0, customDuelSword); // 1st slot
player.unwrap().setSlot(4, compass); //middle slot
player.unwrap().setSlot(3, nameTag); //left
player.unwrap().setSlot(5, queueSword); //right
player.unwrap().setSlot(8, teamSword); // like right right not right
player.refreshInventory();
}
public static boolean checkGameModeBan(Player factoryPlayer, ServerPlayer player, String game) {
public static boolean checkGameModeBan(NexiaPlayer player, String game) {
ArrayList<PlayerGameMode> bannedGameModes = GamemodeBanHandler.getBannedGameModes(player);
if(bannedGameModes.isEmpty()) {
return false;
@@ -234,15 +169,15 @@ public class LobbyUtil {
for(PlayerGameMode gameMode : bannedGameModes) {
if(game.toLowerCase().contains(gameMode.id.toLowerCase())) {
JSONObject banJSON = GamemodeBanHandler.getBanList(player.getStringUUID(), gameMode);
JSONObject banJSON = GamemodeBanHandler.getBanList(player.getUUID(), gameMode);
if (banJSON != null) {
LocalDateTime banTime = getBanTime((String) banJSON.get("duration"));
if(LocalDateTime.now().isAfter(banTime)) {
GamemodeBanHandler.removeBanFromList(player.getStringUUID(), gameMode);
GamemodeBanHandler.removeBanFromList(player.getUUID(), gameMode);
return false;
} else {
factoryPlayer.sendMessage(
player.sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("You are gamemode (" + gameMode.name + ") banned for ").decoration(ChatFormat.bold, false))
.append(Component.text(BanHandler.banTimeToText(banTime)).color(ChatFormat.brandColor2).decoration(ChatFormat.bold, false))
@@ -252,13 +187,13 @@ public class LobbyUtil {
return true;
}
} else {
factoryPlayer.sendMessage(
player.sendMessage(
ChatFormat.nexiaMessage
.append(Component.text("You are gamemode (" + gameMode.name + ") banned!"))
);
}
factoryPlayer.runCommand("/hub");
LobbyUtil.returnToLobby(player, true);
return true;
}
@@ -267,22 +202,16 @@ public class LobbyUtil {
return false;
}
public static void sendGame(ServerPlayer minecraftPlayer, String game, boolean message, boolean tp){
Player player = PlayerUtil.getFactoryPlayer(minecraftPlayer);
public static void sendGame(NexiaPlayer player, String game, boolean message, boolean tp) {
if(checkGameModeBan(player, minecraftPlayer, game)) {
if(checkGameModeBan(player, game)) {
return;
}
minecraftPlayer.setInvulnerable(false);
minecraftPlayer.abilities.mayfly = false;
minecraftPlayer.onUpdateAbilities();
if((game.equalsIgnoreCase("classic ffa") && !FfaClassicUtil.canGoToSpawn(minecraftPlayer)) ||
(game.equalsIgnoreCase("kits ffa") && !FfaKitsUtil.canGoToSpawn(minecraftPlayer) ||
(game.equalsIgnoreCase("sky ffa") && !FfaSkyUtil.canGoToSpawn(minecraftPlayer) ||
(game.equalsIgnoreCase("uhc ffa") && !FfaUhcUtil.canGoToSpawn(minecraftPlayer))))) {
if((game.equalsIgnoreCase("classic ffa") && !FfaClassicUtil.canGoToSpawn(player)) ||
(game.equalsIgnoreCase("kits ffa") && !FfaKitsUtil.canGoToSpawn(player) ||
(game.equalsIgnoreCase("sky ffa") && !FfaSkyUtil.canGoToSpawn(player) ||
(game.equalsIgnoreCase("uhc ffa") && !FfaUhcUtil.canGoToSpawn(player))))) {
player.sendMessage(Component.text("You must be fully healed to go to spawn!").color(ChatFormat.failColor));
return;
@@ -290,95 +219,81 @@ public class LobbyUtil {
if(player.hasTag("duels")) {
player.removeTag("duels");
DuelGameHandler.leave(minecraftPlayer, true);
DuelGameHandler.leave(player, true);
}
if (!LobbyUtil.isLobbyWorld(minecraftPlayer.getLevel())) {
LobbyUtil.leaveAllGames(minecraftPlayer, false);
} else{
PlayerUtil.resetHealthStatus(player);
minecraftPlayer.setGameMode(GameType.ADVENTURE);
player.getInventory().clear();
minecraftPlayer.inventory.setCarried(ItemStack.EMPTY);
minecraftPlayer.getEnderChestInventory().clearContent();
minecraftPlayer.connection.send(new ClientboundStopSoundPacket());
player.removeTag(LobbyUtil.NO_FALL_DAMAGE_TAG);
player.removeTag(LobbyUtil.NO_DAMAGE_TAG);
player.removeTag("duels");
player.removeTag(LobbyUtil.NO_SATURATION_TAG);
}
player.reset(true, Minecraft.GameMode.ADVENTURE);
player.leaveAllGames();
if(game.equalsIgnoreCase("classic ffa") ||
game.equalsIgnoreCase("kits ffa") ||
game.equalsIgnoreCase("sky ffa") ||
game.equalsIgnoreCase("uhc ffa")) {
player.addTag(FfaUtil.FFA_TAG);
PlayerDataManager.get(minecraftPlayer).gameMode = PlayerGameMode.FFA;
PlayerDataManager.get(player).gameMode = PlayerGameMode.FFA;
if(message){ player.sendActionBarMessage(Component.text("You have joined §8🗡 §7§lFFA §b🔱")); }
}
if(game.equalsIgnoreCase("classic ffa")){
player.addTag("ffa_classic");
FfaClassicUtil.wasInSpawn.add(player.getUUID());
PlayerDataManager.get(minecraftPlayer).ffaGameMode = FfaGameMode.CLASSIC;
PlayerDataManager.get(player).ffaGameMode = FfaGameMode.CLASSIC;
if(tp){
minecraftPlayer.teleportTo(FfaAreas.ffaWorld, FfaAreas.spawn.x, FfaAreas.spawn.y, FfaAreas.spawn.z, FfaAreas.spawn.yaw, FfaAreas.spawn.pitch);
minecraftPlayer.setRespawnPosition(FfaAreas.ffaWorld.dimension(), FfaAreas.spawn.toBlockPos(), FfaAreas.spawn.yaw, true, false);
player.unwrap().teleportTo(FfaAreas.ffaWorld, FfaAreas.spawn.x, FfaAreas.spawn.y, FfaAreas.spawn.z, FfaAreas.spawn.yaw, FfaAreas.spawn.pitch);
player.unwrap().setRespawnPosition(FfaAreas.ffaWorld.dimension(), FfaAreas.spawn.toBlockPos(), FfaAreas.spawn.yaw, true, false);
}
FfaClassicUtil.clearThrownTridents(minecraftPlayer);
FfaClassicUtil.setInventory(minecraftPlayer);
FfaClassicUtil.clearThrownTridents(player);
FfaClassicUtil.setInventory(player);
}
if(game.equalsIgnoreCase("sky ffa")){
player.addTag("ffa_sky");
player.unwrap().addTag("ffa_sky");
FfaSkyUtil.wasInSpawn.add(player.getUUID());
PlayerDataManager.get(minecraftPlayer).ffaGameMode = FfaGameMode.SKY;
PlayerDataManager.get(player).ffaGameMode = FfaGameMode.SKY;
if(tp){
FfaSkyUtil.sendToSpawn(minecraftPlayer);
minecraftPlayer.setRespawnPosition(com.nexia.ffa.sky.utilities.FfaAreas.ffaWorld.dimension(), com.nexia.ffa.sky.utilities.FfaAreas.spawn.toBlockPos(), com.nexia.ffa.sky.utilities.FfaAreas.spawn.yaw, true, false);
FfaSkyUtil.sendToSpawn(player);
player.unwrap().setRespawnPosition(com.nexia.ffa.sky.utilities.FfaAreas.ffaWorld.dimension(), com.nexia.ffa.sky.utilities.FfaAreas.spawn.toBlockPos(), com.nexia.ffa.sky.utilities.FfaAreas.spawn.yaw, true, false);
}
FfaSkyUtil.joinOrRespawn(minecraftPlayer);
FfaSkyUtil.joinOrRespawn(player);
}
if(game.equalsIgnoreCase("uhc ffa")){
player.addTag("ffa_uhc");
FfaUhcUtil.wasInSpawn.add(player.getUUID());
PlayerDataManager.get(minecraftPlayer).ffaGameMode = FfaGameMode.UHC;
PlayerDataManager.get(player).ffaGameMode = FfaGameMode.UHC;
if(tp){
FfaUhcUtil.sendToSpawn(minecraftPlayer);
minecraftPlayer.setRespawnPosition(com.nexia.ffa.uhc.utilities.FfaAreas.ffaWorld.dimension(), com.nexia.ffa.uhc.utilities.FfaAreas.spawn.toBlockPos(), com.nexia.ffa.uhc.utilities.FfaAreas.spawn.yaw, true, false);
FfaUhcUtil.sendToSpawn(player);
player.unwrap().setRespawnPosition(com.nexia.ffa.uhc.utilities.FfaAreas.ffaWorld.dimension(), com.nexia.ffa.uhc.utilities.FfaAreas.spawn.toBlockPos(), com.nexia.ffa.uhc.utilities.FfaAreas.spawn.yaw, true, false);
}
FfaUhcUtil.clearArrows(minecraftPlayer);
FfaUhcUtil.clearTrident(minecraftPlayer);
FfaUhcUtil.clearArrows(player);
FfaUhcUtil.clearTrident(player);
}
if(game.equalsIgnoreCase("kits ffa")){
player.addTag("ffa_kits");
FfaKitsUtil.wasInSpawn.add(player.getUUID());
PlayerDataManager.get(minecraftPlayer).ffaGameMode = FfaGameMode.KITS;
PlayerDataManager.get(player).ffaGameMode = FfaGameMode.KITS;
if(tp){
FfaKitsUtil.sendToSpawn(minecraftPlayer);
minecraftPlayer.setRespawnPosition(com.nexia.ffa.kits.utilities.FfaAreas.ffaWorld.dimension(), com.nexia.ffa.kits.utilities.FfaAreas.spawn.toBlockPos(), com.nexia.ffa.kits.utilities.FfaAreas.spawn.yaw, true, false);
FfaKitsUtil.sendToSpawn(player);
player.unwrap().setRespawnPosition(com.nexia.ffa.kits.utilities.FfaAreas.ffaWorld.dimension(), com.nexia.ffa.kits.utilities.FfaAreas.spawn.toBlockPos(), com.nexia.ffa.kits.utilities.FfaAreas.spawn.yaw, true, false);
}
FfaKitsUtil.clearThrownTridents(minecraftPlayer);
FfaKitsUtil.clearArrows(minecraftPlayer);
FfaKitsUtil.clearSpectralArrows(minecraftPlayer);
FfaKitsUtil.clearThrownTridents(player);
FfaKitsUtil.clearArrows(player);
FfaKitsUtil.clearSpectralArrows(player);
}
if(game.equalsIgnoreCase("bedwars")){
if(message){ player.sendActionBarMessage(Component.text("You have joined §b\uD83E\uDE93 §c§lBedwars §e⚡"));}
BwPlayerEvents.tryToJoin(minecraftPlayer, false);
BwPlayerEvents.tryToJoin(player, false);
}
if(game.equalsIgnoreCase("duels")){
LobbyUtil.leaveAllGames(minecraftPlayer, tp);
LobbyUtil.returnToLobby(player, tp);
if(message){
player.sendActionBarMessage(Component.text("You have joined §f☯ §c§lDuels §7\uD83E\uDE93"));
player.sendMessage(
@@ -391,35 +306,35 @@ public class LobbyUtil {
if(game.equalsIgnoreCase("oitc")){
player.addTag(OitcGame.OITC_TAG);
PlayerDataManager.get(minecraftPlayer).gameMode = PlayerGameMode.OITC;
OitcGame.death(minecraftPlayer, minecraftPlayer.getLastDamageSource());
PlayerDataManager.get(player).gameMode = PlayerGameMode.OITC;
OitcGame.death(player, player.unwrap().getLastDamageSource());
com.nexia.minigames.games.oitc.util.player.PlayerDataManager.get(minecraftPlayer).gameMode = OitcGameMode.LOBBY;
com.nexia.minigames.games.oitc.util.player.PlayerDataManager.get(player).gameMode = OitcGameMode.LOBBY;
OitcGame.joinQueue(minecraftPlayer);
OitcGame.joinQueue(player);
if(message){player.sendActionBarMessage(Component.text("You have joined §7\uD83D\uDDE1 §f§lOITC §7\uD83C\uDFF9"));}
}
if(game.equalsIgnoreCase("football")){
player.addTag(FootballGame.FOOTBALL_TAG);
PlayerDataManager.get(minecraftPlayer).gameMode = PlayerGameMode.FOOTBALL;
com.nexia.minigames.games.football.util.player.PlayerDataManager.get(minecraftPlayer).gameMode = FootballGameMode.LOBBY;
player.unwrap().addTag(FootballGame.FOOTBALL_TAG);
PlayerDataManager.get(player).gameMode = PlayerGameMode.FOOTBALL;
com.nexia.minigames.games.football.util.player.PlayerDataManager.get(player).gameMode = FootballGameMode.LOBBY;
FootballGame.joinQueue(minecraftPlayer);
FootballGame.joinQueue(player);
if(message){player.sendActionBarMessage(Component.text("You have joined §7○ §7§lFootball §7\uD83D\uDDE1"));}
}
if(game.equalsIgnoreCase("skywars")){
player.addTag(PlayerGameMode.SKYWARS.tag);
PlayerDataManager.get(minecraftPlayer).gameMode = PlayerGameMode.SKYWARS;
SkywarsGame.death(minecraftPlayer, minecraftPlayer.getLastDamageSource());
player.unwrap().addTag(PlayerGameMode.SKYWARS.tag);
PlayerDataManager.get(player).gameMode = PlayerGameMode.SKYWARS;
SkywarsGame.death(player, player.unwrap().getLastDamageSource());
com.nexia.minigames.games.skywars.util.player.PlayerDataManager.get(minecraftPlayer).gameMode = SkywarsGameMode.LOBBY;
com.nexia.minigames.games.skywars.util.player.PlayerDataManager.get(player).gameMode = SkywarsGameMode.LOBBY;
SkywarsGame.joinQueue(minecraftPlayer);
SkywarsGame.joinQueue(player);
if(message){player.sendActionBarMessage(Component.text("You have joined §7☐ §aSkywars §7\uD83D\uDDE1"));}
}
+14 -10
View File
@@ -2,6 +2,7 @@ package com.nexia.core.gui;
import com.nexia.core.games.util.LobbyUtil;
import com.nexia.core.utilities.item.ItemDisplayUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.time.ServerTime;
import com.nexia.ffa.classic.utilities.FfaAreas;
import com.nexia.minigames.games.bedwars.areas.BwAreas;
@@ -85,7 +86,7 @@ public class PlayGUI extends SimpleGui {
int duelsPlayers = 0;
for(ServerPlayer serverPlayer : ServerTime.minecraftServer.getPlayerList().getPlayers()) {
DuelGameMode gameMode = PlayerDataManager.get(serverPlayer).gameMode;
DuelGameMode gameMode = PlayerDataManager.get(serverPlayer.getUUID()).gameMode;
if(gameMode != null && (gameMode != DuelGameMode.LOBBY && gameMode != DuelGameMode.SPECTATING)) duelsPlayers++;
}
@@ -223,23 +224,26 @@ public class PlayGUI extends SimpleGui {
if(element != null && clickType != ClickType.MOUSE_DOUBLE_CLICK) {
ItemStack itemStack = element.getItemStack();
Component name = itemStack.getHoverName();
NexiaPlayer nexiaPlayer = new NexiaPlayer(this.player);
if(name.getString().equalsIgnoreCase("§bClassic FFA")){
LobbyUtil.sendGame(this.player, "classic ffa", true, true);
LobbyUtil.sendGame(nexiaPlayer, "classic ffa", true, true);
this.close();
}
if(name.getString().equalsIgnoreCase("§fKit FFA")){
LobbyUtil.sendGame(this.player, "kits ffa", true, true);
LobbyUtil.sendGame(nexiaPlayer, "kits ffa", true, true);
this.close();
}
if(name.getString().equalsIgnoreCase("§eSky FFA")){
LobbyUtil.sendGame(this.player, "sky ffa", true, true);
LobbyUtil.sendGame(nexiaPlayer, "sky ffa", true, true);
this.close();
}
if(name.getString().equalsIgnoreCase("§6UHC FFA")){
LobbyUtil.sendGame(this.player, "uhc ffa", true, true);
LobbyUtil.sendGame(nexiaPlayer, "uhc ffa", true, true);
this.close();
}
@@ -248,27 +252,27 @@ public class PlayGUI extends SimpleGui {
}
if(name.getString().equalsIgnoreCase("§cBedwars")){
LobbyUtil.sendGame(this.player, "bedwars", true, true);
LobbyUtil.sendGame(nexiaPlayer, "bedwars", true, true);
this.close();
}
if(name.getString().equalsIgnoreCase("§aSkywars")){
LobbyUtil.sendGame(this.player, "skywars", true, true);
LobbyUtil.sendGame(nexiaPlayer, "skywars", true, true);
this.close();
}
if(name.getString().equalsIgnoreCase("§eOITC")){
LobbyUtil.sendGame(this.player, "oitc", true, true);
LobbyUtil.sendGame(nexiaPlayer, "oitc", true, true);
this.close();
}
if(name.getString().equalsIgnoreCase("§fFootball")){
LobbyUtil.sendGame(this.player, "football", true, true);
LobbyUtil.sendGame(nexiaPlayer, "football", true, true);
this.close();
}
if(name.getString().equalsIgnoreCase("§9Duels")){
LobbyUtil.sendGame(this.player, "duels", true, true);
LobbyUtil.sendGame(nexiaPlayer, "duels", true, true);
this.close();
}
+14 -13
View File
@@ -1,9 +1,8 @@
package com.nexia.core.gui;
import com.combatreforged.factory.api.world.entity.player.Player;
import com.nexia.core.Main;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.player.PlayerUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.ranks.NexiaRank;
import eu.pb4.sgui.api.ClickType;
import eu.pb4.sgui.api.elements.GuiElementInterface;
import eu.pb4.sgui.api.gui.SimpleGui;
@@ -47,28 +46,30 @@ public class PrefixGUI extends SimpleGui {
this.setSlot(airSlots, new ItemStack(Items.AIR));
airSlots++;
}
for(String rank : Main.config.ranks){
for(NexiaRank rank : NexiaRank.ranks){
if(slot == 17) {
slot = 19;
}
if(Permissions.check(player, "nexia.prefix." + rank) && player.getTags().contains(rank)){
boolean hasPermission = Permissions.check(player, rank.groupID);
if(hasPermission && player.getTags().contains(rank.id)){
ItemStack enchantedItem = new ItemStack(Items.NAME_TAG, 1);
enchantedItem.enchant(Enchantments.SHARPNESS, 1);
enchantedItem.hideTooltipPart(ItemStack.TooltipPart.ENCHANTMENTS);
enchantedItem.setHoverName(new TextComponent("§d§l" + rank));
enchantedItem.setHoverName(new TextComponent("§d§l" + rank.name));
this.setSlot(slot, enchantedItem);
slot++;
} else if(Permissions.check(player, "nexia.prefix." + rank)){
} else if(hasPermission){
ItemStack changedItem = new ItemStack(Items.NAME_TAG, 1);
changedItem.setHoverName(new TextComponent("§f" + rank));
changedItem.setHoverName(new TextComponent("§f" + rank.name));
this.setSlot(slot, changedItem);
slot++;
} else if(player.getTags().contains(rank)) {
} else if(player.getTags().contains(rank.id)) {
ItemStack enchantedItem = new ItemStack(Items.NAME_TAG, 1);
enchantedItem.enchant(Enchantments.SHARPNESS, 1);
enchantedItem.hideTooltipPart(ItemStack.TooltipPart.ENCHANTMENTS);
enchantedItem.setHoverName(new TextComponent(rank).withStyle(ChatFormatting.BOLD, ChatFormatting.LIGHT_PURPLE));
enchantedItem.setHoverName(new TextComponent(rank.name).withStyle(ChatFormatting.BOLD, ChatFormatting.LIGHT_PURPLE));
this.setSlot(slot, enchantedItem);
slot++;
}
@@ -83,7 +84,7 @@ public class PrefixGUI extends SimpleGui {
if(itemStack.getItem() != Items.BLACK_STAINED_GLASS_PANE && itemStack.getItem() != Items.AIR){
Player player = PlayerUtil.getFactoryPlayer(this.player);
NexiaPlayer player = new NexiaPlayer(this.player);
player.sendMessage(
ChatFormat.nexiaMessage
@@ -92,8 +93,8 @@ public class PrefixGUI extends SimpleGui {
.append(net.kyori.adventure.text.Component.text(".").decoration(ChatFormat.bold, false))
);
for(String rank : Main.config.ranks){
player.removeTag(rank);
for(NexiaRank rank : NexiaRank.ranks){
player.removeTag(rank.id);
}
player.addTag(name.toLowerCase());
@@ -1,9 +1,8 @@
package com.nexia.core.gui;
import com.combatreforged.factory.api.world.entity.player.Player;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.item.ItemDisplayUtil;
import com.nexia.core.utilities.player.PlayerUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.discord.Main;
import eu.pb4.sgui.api.ClickType;
import eu.pb4.sgui.api.elements.GuiElementInterface;
@@ -84,11 +83,10 @@ public class RanksGUI extends SimpleGui {
ItemStack itemStack = element.getItemStack();
Component name = itemStack.getHoverName();
Player factoryPlayer = PlayerUtil.getFactoryPlayer(this.player);
NexiaPlayer nexiaPlayer = new NexiaPlayer(this.player);
if(name.getString().equalsIgnoreCase("§5Supporter")){
// Insert supporter thing here (link to discord and patreon)
factoryPlayer.sendMessage(ChatFormat.nexiaMessage.append(
nexiaPlayer.sendMessage(ChatFormat.nexiaMessage.append(
net.kyori.adventure.text.Component.text("In order to get the ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false)
.append(net.kyori.adventure.text.Component.text("Supporter").color(ChatFormat.brandColor2).decoration(ChatFormat.bold, true))
.append(net.kyori.adventure.text.Component.text(" rank, you need to either ").color(ChatFormat.normalColor).decoration(ChatFormat.bold, false))
@@ -2,6 +2,7 @@ package com.nexia.core.gui.duels;
import com.nexia.core.utilities.item.InventoryUtil;
import com.nexia.core.utilities.item.ItemDisplayUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.player.PlayerUtil;
import com.nexia.minigames.games.duels.gamemodes.GamemodeHandler;
import com.nexia.minigames.games.duels.map.DuelsMap;
@@ -150,7 +151,7 @@ public class CustomDuelGUI extends SimpleGui {
this.kit = name.getString().toLowerCase().substring(2).replaceAll(" ", "_");
setMapLayout();
} else {
GamemodeHandler.customChallengePlayer(this.player, this.other, this.kit, DuelsMap.identifyMap(name.getString().substring(2)));
GamemodeHandler.customChallengePlayer(new NexiaPlayer(this.player), new NexiaPlayer(this.other), this.kit, DuelsMap.identifyMap(name.getString().substring(2)));
this.close();
}
@@ -1,6 +1,8 @@
package com.nexia.core.gui.duels;
import com.combatreforged.factory.api.world.types.Minecraft;
import com.nexia.core.utilities.item.ItemDisplayUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.player.PlayerUtil;
import com.nexia.minigames.games.duels.DuelGameMode;
import com.nexia.minigames.games.duels.gamemodes.GamemodeHandler;
@@ -15,7 +17,6 @@ import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.inventory.MenuType;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.GameType;
public class DuelGUI extends SimpleGui {
static final TextComponent title = new TextComponent("Duel Menu");
@@ -53,7 +54,7 @@ public class DuelGUI extends SimpleGui {
airSlots++;
}
for(DuelsMap map : DuelsMap.duelsMaps){
if(gameMode.gameMode == GameType.ADVENTURE && !map.isAdventureSupported) return;
if(gameMode.gameMode == Minecraft.GameMode.ADVENTURE && !map.isAdventureSupported) return;
this.setSlot(slot, map.item.setHoverName(new TextComponent("§f" + map.id)));
slot++;
}
@@ -116,7 +117,7 @@ public class DuelGUI extends SimpleGui {
this.kit = name.getString().substring(2).replaceAll(" ", "_");
setMapLayout(GamemodeHandler.identifyGamemode(this.kit));
} else {
GamemodeHandler.challengePlayer(this.player, this.other, this.kit, DuelsMap.identifyMap(name.getString().substring(2)));
GamemodeHandler.challengePlayer(new NexiaPlayer(this.player), new NexiaPlayer(this.other), this.kit, DuelsMap.identifyMap(name.getString().substring(2)));
this.close();
}
@@ -1,7 +1,7 @@
package com.nexia.core.gui.duels;
import com.nexia.core.games.util.LobbyUtil;
import com.nexia.core.utilities.item.ItemDisplayUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.minigames.games.duels.DuelGameMode;
import com.nexia.minigames.games.duels.gamemodes.GamemodeHandler;
import eu.pb4.sgui.api.ClickType;
@@ -57,9 +57,10 @@ public class QueueGUI extends SimpleGui {
DuelGameMode gameMode = GamemodeHandler.identifyGamemode(duel);
ItemDisplayUtil.removeLore(item, 0);
assert gameMode != null;
ItemDisplayUtil.addLore(item, "§7There are §7§l" + gameMode.queue.size() + " §7people queued up.", 0);
if(GamemodeHandler.isInQueue(player, gameMode)) {
if(GamemodeHandler.isInQueue(new NexiaPlayer(this.player), gameMode)) {
ItemDisplayUtil.removeLore(item, 1);
ItemDisplayUtil.addLore(item, "§7Click to leave the queue.", 1);
} else {
@@ -79,10 +80,13 @@ public class QueueGUI extends SimpleGui {
ItemStack itemStack = element.getItemStack();
Component name = itemStack.getHoverName();
NexiaPlayer nexiaPlayer = new NexiaPlayer(this.player);
if(itemStack.getItem() != Items.BLACK_STAINED_GLASS_PANE && itemStack.getItem() != Items.AIR){
if(name.getString().substring(4).equalsIgnoreCase("Leave ALL Queues")) {
//PlayerUtil.getFactoryPlayer(player).runCommand("/queue LEAVE", 0, false);
LobbyUtil.leaveAllGames(this.player, true);
GamemodeHandler.removeQueue(nexiaPlayer, null, false);
this.close();
return super.click(index, clickType, action);
}
@@ -90,11 +94,11 @@ public class QueueGUI extends SimpleGui {
String modifiedName = name.getString().substring(2).replaceAll(" ", "_");
DuelGameMode gameMode = GamemodeHandler.identifyGamemode(modifiedName);
if(gameMode != null && GamemodeHandler.isInQueue(player, gameMode)) {
GamemodeHandler.removeQueue(this.player, modifiedName, false);
if(gameMode != null && GamemodeHandler.isInQueue(nexiaPlayer, gameMode)) {
GamemodeHandler.removeQueue(nexiaPlayer, modifiedName, false);
this.close();
} else {
GamemodeHandler.joinQueue(this.player, modifiedName, false);
GamemodeHandler.joinQueue(nexiaPlayer, modifiedName, false);
this.close();
}
}
@@ -1,8 +1,7 @@
package com.nexia.core.gui.ffa;
import com.combatreforged.factory.api.world.entity.player.Player;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.player.PlayerUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.ffa.kits.FfaKit;
import eu.pb4.sgui.api.ClickType;
import eu.pb4.sgui.api.elements.GuiElementInterface;
@@ -57,9 +56,9 @@ public class KitGUI extends SimpleGui {
}
public static void giveKit(ServerPlayer minecraftPlayer, String name) {
Player player = PlayerUtil.getFactoryPlayer(minecraftPlayer);
NexiaPlayer player = new NexiaPlayer(minecraftPlayer);
FfaKit kit = FfaKit.identifyKit(name);
if(kit != null) kit.giveKit(minecraftPlayer, false);
if(kit != null) kit.giveKit(new NexiaPlayer(minecraftPlayer), false);
else player.sendMessage(Component.text("Invalid kit!").color(ChatFormat.failColor));
}
@@ -1,9 +1,8 @@
package com.nexia.core.gui.ffa;
import com.combatreforged.factory.api.world.entity.player.Player;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.item.ItemDisplayUtil;
import com.nexia.core.utilities.player.PlayerUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.ffa.classic.utilities.FfaAreas;
import eu.pb4.sgui.api.ClickType;
import eu.pb4.sgui.api.elements.GuiElementInterface;
@@ -110,7 +109,7 @@ public class SpawnGUI extends SimpleGui {
public static void teleportPlayer(ServerPlayer minecraftPlayer, String name) {
int[] pos = mapLocations.get(name);
Player player = PlayerUtil.getFactoryPlayer(minecraftPlayer);
NexiaPlayer player = new NexiaPlayer(minecraftPlayer);
if(pos != null){
minecraftPlayer.teleportTo(FfaAreas.ffaWorld, pos[0], pos[1], pos[2], pos[3], pos[4]);
player.sendMessage(
@@ -5,10 +5,10 @@ import com.nexia.core.listeners.factory.*;
public class ListenerHelper {
public static void registerListeners() {
// Factory Listeners
PlayerJoinListener.registerListener();
PlayerLeaveListener.registerListener();
UseItemListener.registerListener();
PlayerDropItemListener.registerListener();
PlayerRespawnListener.registerListener();
new PlayerJoinListener().registerListener();
new PlayerLeaveListener().registerListener();
new UseItemListener().registerListener();
new PlayerDropItemListener().registerListener();
new PlayerRespawnListener().registerListener();
}
}
@@ -1,22 +1,18 @@
package com.nexia.core.listeners.factory;
import com.combatreforged.factory.api.event.player.PlayerHotbarDropItemEvent;
import com.combatreforged.factory.api.world.entity.player.Player;
import com.nexia.core.utilities.item.ItemStackUtil;
import com.nexia.core.utilities.misc.EventUtil;
import com.nexia.core.utilities.player.PlayerUtil;
import net.minecraft.server.level.ServerPlayer;
import com.nexia.core.utilities.player.NexiaPlayer;
public class PlayerDropItemListener {
public static void registerListener(){
public void registerListener(){
PlayerHotbarDropItemEvent.BACKEND.register(playerDropItemEvent -> {
Player player = playerDropItemEvent.getPlayer();
ServerPlayer minecraftPlayer = PlayerUtil.getMinecraftPlayer(player);
NexiaPlayer player = new NexiaPlayer(playerDropItemEvent.getPlayer());
if (!EventUtil.dropItem(minecraftPlayer, playerDropItemEvent.getItemStack())) {
if (!EventUtil.dropItem(player, playerDropItemEvent.getItemStack())) {
playerDropItemEvent.setCancelled(true);
ItemStackUtil.sendInventoryRefreshPacket(minecraftPlayer);
player.refreshInventory();
return;
}
});
@@ -4,32 +4,28 @@ import com.combatreforged.factory.api.event.player.PlayerJoinEvent;
import com.combatreforged.factory.api.world.entity.player.Player;
import com.nexia.core.games.util.LobbyUtil;
import com.nexia.core.utilities.chat.ChatFormat;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.player.PlayerDataManager;
import com.nexia.core.utilities.player.PlayerUtil;
import com.nexia.core.utilities.time.ServerTime;
import com.nexia.discord.Main;
import com.nexia.discord.utilities.player.PlayerData;
import me.lucko.fabric.api.permissions.v0.Permissions;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Role;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.event.ClickEvent;
import net.kyori.adventure.text.event.HoverEvent;
import net.kyori.adventure.text.format.TextColor;
import net.minecraft.server.level.ServerPlayer;
import java.util.Objects;
import static com.nexia.discord.Main.jda;
public class PlayerJoinListener {
public static void registerListener() {
public void registerListener() {
PlayerJoinEvent.BACKEND.register(playerJoinEvent -> {
Player player = playerJoinEvent.getPlayer();
ServerPlayer minecraftPlayer = PlayerUtil.getMinecraftPlayer(player);
processJoin(player, minecraftPlayer);
NexiaPlayer player = new NexiaPlayer(playerJoinEvent.getPlayer());
processJoin(player);
/*
if(minecraftPlayer.getStats().getValue(Stats.CUSTOM.get(Stats.LEAVE_GAME)) <= 1) {
@@ -90,7 +86,7 @@ public class PlayerJoinListener {
player.sendMessage(ChatFormat.separatorLine(null));
}
private static void checkBooster(ServerPlayer player) {
private static void checkBooster(NexiaPlayer player) {
PlayerData playerData = com.nexia.discord.utilities.player.PlayerDataManager.get(player.getUUID());
if(!playerData.savedData.isLinked) { return; }
Member discordUser = null;
@@ -100,54 +96,55 @@ public class PlayerJoinListener {
} catch (Exception ignored) { }
if(discordUser == null) {
if(Permissions.check(player, "nexia.prefix.supporter")) {
if(Permissions.check(player, "nexia.rank")) {
ServerTime.factoryServer.runCommand("/staffprefix set " + player.getScoreboardName() + " default");
ServerTime.factoryServer.runCommand("/staffprefix remove " + player.getScoreboardName() + " supporter");
if(player.hasPermission("nexia.prefix.supporter")) {
if(player.hasPermission("nexia.rank")) {
ServerTime.factoryServer.runCommand("/staffprefix set " + player.getRawName() + " default");
ServerTime.factoryServer.runCommand("/staffprefix remove " + player.getRawName() + " supporter");
return;
}
ServerTime.factoryServer.runCommand("/rank " + player.getScoreboardName() + " default", 4, false);
ServerTime.factoryServer.runCommand("/rank " + player.getRawName() + " default", 4, false);
}
return;
}
Role supporterRole = jda.getRoleById("1107264322951979110");
boolean hasRole = discordUser.getRoles().contains(supporterRole);
boolean hasSupporterPrefix = Permissions.check(player, "nexia.prefix.supporter");
boolean hasSupporterPrefix = player.hasPermission("nexia.prefix.supporter");
if(hasRole && !hasSupporterPrefix) {
if(Permissions.check(player, "nexia.rank")) {
ServerTime.factoryServer.runCommand("/staffprefix add " + player.getScoreboardName() + " supporter", 4, false);
if(player.hasPermission("nexia.rank")) {
ServerTime.factoryServer.runCommand("/staffprefix add " + player.getRawName() + " supporter", 4, false);
return;
}
ServerTime.factoryServer.runCommand("/rank " + player.getScoreboardName() + " supporter", 4, false);
ServerTime.factoryServer.runCommand("/rank " + player.getRawName() + " supporter", 4, false);
} else if(!hasRole && hasSupporterPrefix) {
if(Permissions.check(player, "nexia.rank")) {
ServerTime.factoryServer.runCommand("/staffprefix remove " + player.getScoreboardName() + " supporter", 4, false);
ServerTime.factoryServer.runCommand("/staffprefix set " + player.getScoreboardName() + " default", 4, false);
if(player.hasPermission("nexia.rank")) {
ServerTime.factoryServer.runCommand("/staffprefix remove " + player.getRawName() + " supporter", 4, false);
ServerTime.factoryServer.runCommand("/staffprefix set " + player.getRawName() + " default", 4, false);
return;
}
ServerTime.factoryServer.runCommand("/rank " + player.getScoreboardName() + " default", 4, false);
ServerTime.factoryServer.runCommand("/rank " + player.getRawName() + " default", 4, false);
}
}
private static void processJoin(Player player, ServerPlayer minecraftPlayer) {
private static void processJoin(NexiaPlayer player) {
if(PlayerDataManager.get(player).clientType.equals(com.nexia.core.utilities.player.PlayerData.ClientType.VIAFABRICPLUS)) return;
com.nexia.ffa.classic.utilities.player.PlayerDataManager.addPlayerData(player);
com.nexia.ffa.kits.utilities.player.PlayerDataManager.addPlayerData(player);
com.nexia.ffa.uhc.utilities.player.PlayerDataManager.addPlayerData(player);
com.nexia.ffa.sky.utilities.player.PlayerDataManager.addPlayerData(player);
com.nexia.ffa.classic.utilities.player.PlayerDataManager.addPlayerData(minecraftPlayer);
com.nexia.ffa.kits.utilities.player.PlayerDataManager.addPlayerData(minecraftPlayer);
com.nexia.ffa.uhc.utilities.player.PlayerDataManager.addPlayerData(minecraftPlayer);
com.nexia.ffa.sky.utilities.player.PlayerDataManager.addPlayerData(minecraftPlayer);
com.nexia.discord.utilities.player.PlayerDataManager.addPlayerData(player.getUUID());
com.nexia.minigames.games.duels.util.player.PlayerDataManager.addPlayerData(player);
com.nexia.minigames.games.bedwars.util.player.PlayerDataManager.addPlayerData(player);
com.nexia.minigames.games.oitc.util.player.PlayerDataManager.addPlayerData(player);
com.nexia.minigames.games.football.util.player.PlayerDataManager.addPlayerData(player);
com.nexia.minigames.games.skywars.util.player.PlayerDataManager.addPlayerData(player);
com.nexia.discord.utilities.player.PlayerDataManager.addPlayerData(minecraftPlayer.getUUID());
com.nexia.minigames.games.duels.util.player.PlayerDataManager.addPlayerData(minecraftPlayer);
com.nexia.minigames.games.bedwars.util.player.PlayerDataManager.addPlayerData(minecraftPlayer);
com.nexia.minigames.games.oitc.util.player.PlayerDataManager.addPlayerData(minecraftPlayer);
com.nexia.minigames.games.football.util.player.PlayerDataManager.addPlayerData(minecraftPlayer);
com.nexia.minigames.games.skywars.util.player.PlayerDataManager.addPlayerData(minecraftPlayer);
LobbyUtil.leaveAllGames(minecraftPlayer, true);
checkBooster(minecraftPlayer);
LobbyUtil.returnToLobby(player, true);
checkBooster(player);
sendJoinMessage(player);
}
}
@@ -1,8 +1,8 @@
package com.nexia.core.listeners.factory;
import com.combatreforged.factory.api.event.player.PlayerDisconnectEvent;
import com.combatreforged.factory.api.world.entity.player.Player;
import com.nexia.core.games.util.PlayerGameMode;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.player.PlayerDataManager;
import com.nexia.core.utilities.player.PlayerUtil;
import com.nexia.ffa.FfaUtil;
@@ -18,10 +18,8 @@ public class PlayerLeaveListener {
public static void registerListener() {
PlayerDisconnectEvent.BACKEND.register(playerDisconnectEvent -> {
Player player = playerDisconnectEvent.getPlayer();
ServerPlayer minecraftPlayer = PlayerUtil.getMinecraftPlayer(player);
processDisconnect(player, minecraftPlayer);
NexiaPlayer player = new NexiaPlayer(playerDisconnectEvent.getPlayer());
processDisconnect(player);
/*
if(Main.config.events.statusMessages){
@@ -39,32 +37,31 @@ public class PlayerLeaveListener {
private static void processDisconnect(Player player, ServerPlayer minecraftPlayer){
if (BwUtil.isInBedWars(minecraftPlayer)) BwPlayerEvents.leaveInBedWars(minecraftPlayer);
else if (FfaUtil.isFfaPlayer(minecraftPlayer)) {
FfaUtil.leaveOrDie(minecraftPlayer, minecraftPlayer.getLastDamageSource(), true);
private static void processDisconnect(NexiaPlayer player){
if (BwUtil.isInBedWars(player)) BwPlayerEvents.leaveInBedWars(player);
else if (FfaUtil.isFfaPlayer(player)) {
FfaUtil.leaveOrDie(player, player.unwrap().getLastDamageSource(), true);
}
else if (PlayerDataManager.get(minecraftPlayer).gameMode == PlayerGameMode.LOBBY) DuelGameHandler.leave(minecraftPlayer, true);
else if (PlayerDataManager.get(minecraftPlayer).gameMode == PlayerGameMode.SKYWARS) SkywarsGame.leave(minecraftPlayer);
else if (PlayerDataManager.get(minecraftPlayer).gameMode == PlayerGameMode.OITC) OitcGame.leave(minecraftPlayer);
else if (PlayerDataManager.get(minecraftPlayer).gameMode == PlayerGameMode.FOOTBALL) FootballGame.leave(minecraftPlayer);
else if (PlayerDataManager.get(player).gameMode == PlayerGameMode.LOBBY) DuelGameHandler.leave(player, true);
else if (PlayerDataManager.get(player).gameMode == PlayerGameMode.SKYWARS) SkywarsGame.leave(player);
else if (PlayerDataManager.get(player).gameMode == PlayerGameMode.OITC) OitcGame.leave(player);
else if (PlayerDataManager.get(player).gameMode == PlayerGameMode.FOOTBALL) FootballGame.leave(player);
com.nexia.ffa.classic.utilities.player.PlayerDataManager.removePlayerData(minecraftPlayer);
com.nexia.ffa.kits.utilities.player.PlayerDataManager.removePlayerData(minecraftPlayer);
com.nexia.ffa.uhc.utilities.player.PlayerDataManager.removePlayerData(minecraftPlayer);
com.nexia.ffa.sky.utilities.player.PlayerDataManager.removePlayerData(minecraftPlayer);
com.nexia.ffa.classic.utilities.player.PlayerDataManager.removePlayerData(player);
com.nexia.ffa.kits.utilities.player.PlayerDataManager.removePlayerData(player);
com.nexia.ffa.uhc.utilities.player.PlayerDataManager.removePlayerData(player);
com.nexia.ffa.sky.utilities.player.PlayerDataManager.removePlayerData(player);
com.nexia.discord.utilities.player.PlayerDataManager.removePlayerData(minecraftPlayer.getUUID());
com.nexia.minigames.games.duels.util.player.PlayerDataManager.removePlayerData(minecraftPlayer);
com.nexia.minigames.games.oitc.util.player.PlayerDataManager.removePlayerData(minecraftPlayer);
com.nexia.minigames.games.football.util.player.PlayerDataManager.removePlayerData(minecraftPlayer);
com.nexia.minigames.games.bedwars.util.player.PlayerDataManager.removePlayerData(minecraftPlayer);
com.nexia.minigames.games.skywars.util.player.PlayerDataManager.removePlayerData(minecraftPlayer);
com.nexia.discord.utilities.player.PlayerDataManager.removePlayerData(player.getUUID());
com.nexia.minigames.games.duels.util.player.PlayerDataManager.removePlayerData(player);
com.nexia.minigames.games.oitc.util.player.PlayerDataManager.removePlayerData(player);
com.nexia.minigames.games.football.util.player.PlayerDataManager.removePlayerData(player);
com.nexia.minigames.games.bedwars.util.player.PlayerDataManager.removePlayerData(player);
com.nexia.minigames.games.skywars.util.player.PlayerDataManager.removePlayerData(player);
//LobbyUtil.leaveAllGames(minecraftPlayer, true);
PlayerDataManager.removePlayerData(minecraftPlayer);
PlayerDataManager.removePlayerData(player);
}
}
@@ -1,14 +1,13 @@
package com.nexia.core.listeners.factory;
import com.combatreforged.factory.api.event.player.PlayerRespawnEvent;
import com.combatreforged.factory.api.util.Identifier;
import com.combatreforged.factory.api.world.entity.player.Player;
import com.combatreforged.factory.api.world.types.Minecraft;
import com.combatreforged.factory.api.world.util.Location;
import com.nexia.core.games.util.LobbyUtil;
import com.nexia.core.games.util.PlayerGameMode;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.player.PlayerUtil;
import com.nexia.core.utilities.time.ServerTime;
import com.nexia.core.utilities.world.WorldUtil;
import com.nexia.minigames.games.duels.DuelsGame;
import com.nexia.minigames.games.duels.custom.CustomDuelsGame;
import com.nexia.minigames.games.duels.custom.team.CustomTeamDuelsGame;
@@ -17,23 +16,14 @@ import com.nexia.minigames.games.duels.util.player.PlayerData;
import com.nexia.minigames.games.duels.util.player.PlayerDataManager;
import com.nexia.minigames.games.skywars.SkywarsGame;
import com.nexia.minigames.games.skywars.SkywarsGameMode;
import com.nexia.core.utilities.world.WorldUtil;
import net.minecraft.server.level.ServerPlayer;
import java.util.Random;
public class PlayerRespawnListener {
public static void registerListener(){
public void registerListener(){
PlayerRespawnEvent.BACKEND.register((respawnEvent) -> {
Player factoryPlayer = respawnEvent.getPlayer();
if(factoryPlayer == null && respawnEvent.getEntity() instanceof Player) {
factoryPlayer = (Player) respawnEvent.getEntity();
}
if(factoryPlayer == null) return;
ServerPlayer player = ServerTime.minecraftServer.getPlayerList().getPlayer(factoryPlayer.getUUID());
if(player == null) return;
NexiaPlayer player = new NexiaPlayer(respawnEvent.getPlayer());
PlayerData duelsData = PlayerDataManager.get(player);
com.nexia.core.utilities.player.PlayerData data = com.nexia.core.utilities.player.PlayerDataManager.get(player);
@@ -51,8 +41,8 @@ public class PlayerRespawnListener {
Location respawn = new Location(0,100, 0, WorldUtil.getWorld(SkywarsGame.world));
boolean isPlaying = com.nexia.minigames.games.skywars.util.player.PlayerDataManager.get(player).gameMode == SkywarsGameMode.PLAYING;
ServerPlayer serverPlayer = PlayerUtil.getPlayerAttacker(player);
if(serverPlayer != null && serverPlayer != player && isPlaying) {
ServerPlayer serverPlayer = PlayerUtil.getPlayerAttacker(player.unwrap());
if(serverPlayer != null && serverPlayer != player.unwrap() && isPlaying) {
respawn.setX(serverPlayer.getX());
respawn.setY(serverPlayer.getY());
respawn.setZ(serverPlayer.getZ());
@@ -64,73 +54,63 @@ public class PlayerRespawnListener {
}
if(duelsGame != null && duelsGame.isEnding && duelsGame.winner != null) {
factoryPlayer.getInventory().clear();
player.getInventory().clear();
LobbyUtil.giveItems(player);
respawnEvent.setRespawnMode(Minecraft.GameMode.SPECTATOR);
respawnEvent.setSpawnpoint(new Location(duelsGame.winner.get().getX(), duelsGame.winner.get().getY(), duelsGame.winner.get().getZ(), ServerTime.factoryServer.getWorld(new Identifier("duels", WorldUtil.getIdentifierWorldName(duelsGame.level).getId()))));
respawnEvent.setSpawnpoint(duelsGame.winner.getLocation());
} else if(teamDuelsGame != null && duelsData.duelOptions.duelsTeam != null) {
factoryPlayer.getInventory().clear();
player.getInventory().clear();
LobbyUtil.giveItems(player);
respawnEvent.setRespawnMode(Minecraft.GameMode.SPECTATOR);
Location respawn = new Location(0,80, 0, ServerTime.factoryServer.getWorld(new Identifier("duels", WorldUtil.getIdentifierWorldName(teamDuelsGame.level).getId())));
Location respawn = new Location(0,80, 0, WorldUtil.getWorld(teamDuelsGame.level));
ServerPlayer player1 = null;
NexiaPlayer player1 = null;
if(duelsData.duelOptions.duelsTeam.alive.isEmpty()) {
if(teamDuelsGame.team1 == duelsData.duelOptions.duelsTeam && !teamDuelsGame.team2.alive.isEmpty()) {
player1 = teamDuelsGame.team2.alive.get(new Random().nextInt(teamDuelsGame.team2.alive.size())).get();
player1 = teamDuelsGame.team2.alive.get(new Random().nextInt(teamDuelsGame.team2.alive.size()));
} else if(teamDuelsGame.team2 == duelsData.duelOptions.duelsTeam && !teamDuelsGame.team1.alive.isEmpty()){
player1 = teamDuelsGame.team1.alive.get(new Random().nextInt(teamDuelsGame.team1.alive.size())).get();
player1 = teamDuelsGame.team1.alive.get(new Random().nextInt(teamDuelsGame.team1.alive.size()));
}
if(player1 != null) {
respawn.setX(player1.getX());
respawn.setY(player1.getY());
respawn.setZ(player1.getZ());
}
} else {
player1 = duelsData.duelOptions.duelsTeam.alive.get(new Random().nextInt(duelsData.duelOptions.duelsTeam.alive.size())).get();
player1 = duelsData.duelOptions.duelsTeam.alive.get(new Random().nextInt(duelsData.duelOptions.duelsTeam.alive.size()));
}
if(player1 != null) {
respawn = player1.getLocation();
}
respawnEvent.setSpawnpoint(respawn);
//player.teleportTo(duelsGame.level, duelsGame.winner.getX(), duelsGame.winner.getY(), duelsGame.winner.getZ(), 0, 0);
} else if(customDuelsGame != null && customDuelsGame.isEnding && customDuelsGame.winner != null) {
factoryPlayer.getInventory().clear();
player.getInventory().clear();
LobbyUtil.giveItems(player);
respawnEvent.setRespawnMode(Minecraft.GameMode.SPECTATOR);
respawnEvent.setSpawnpoint(new Location(customDuelsGame.winner.get().getX(), customDuelsGame.winner.get().getY(), customDuelsGame.winner.get().getZ(), ServerTime.factoryServer.getWorld(new Identifier("duels", WorldUtil.getIdentifierWorldName(customDuelsGame.level).getId()))));
respawnEvent.setSpawnpoint(customDuelsGame.winner.getLocation());
//player.teleportTo(duelsGame.level, duelsGame.winner.getX(), duelsGame.winner.getY(), duelsGame.winner.getZ(), 0, 0);
} else if(customTeamDuelsGame != null && duelsData.duelOptions.duelsTeam != null) {
factoryPlayer.getInventory().clear();
player.getInventory().clear();
LobbyUtil.giveItems(player);
respawnEvent.setRespawnMode(Minecraft.GameMode.SPECTATOR);
Location respawn = new Location(0,80, 0, ServerTime.factoryServer.getWorld(new Identifier("duels", WorldUtil.getIdentifierWorldName(customTeamDuelsGame.level).getId())));
Location respawn = new Location(0,80, 0, WorldUtil.getWorld(customTeamDuelsGame.level));
ServerPlayer player1 = null;
NexiaPlayer player1 = null;
if(duelsData.duelOptions.duelsTeam.alive.isEmpty()) {
if(customTeamDuelsGame.team1 == duelsData.duelOptions.duelsTeam && !customTeamDuelsGame.team2.alive.isEmpty()) {
player1 = customTeamDuelsGame.team2.alive.get(new Random().nextInt(customTeamDuelsGame.team2.alive.size())).get();
player1 = customTeamDuelsGame.team2.alive.get(new Random().nextInt(customTeamDuelsGame.team2.alive.size()));
} else if (customTeamDuelsGame.team2 == duelsData.duelOptions.duelsTeam && !customTeamDuelsGame.team1.alive.isEmpty()) {
player1 = customTeamDuelsGame.team1.alive.get(new Random().nextInt(customTeamDuelsGame.team1.alive.size())).get();
player1 = customTeamDuelsGame.team1.alive.get(new Random().nextInt(customTeamDuelsGame.team1.alive.size()));
}
if(player1 != null) {
respawn.setX(player1.getX());
respawn.setY(player1.getY());
respawn.setZ(player1.getZ());
}
} else {
player1 = duelsData.duelOptions.duelsTeam.alive.get(new Random().nextInt(duelsData.duelOptions.duelsTeam.alive.size())).get();
player1 = duelsData.duelOptions.duelsTeam.alive.get(new Random().nextInt(duelsData.duelOptions.duelsTeam.alive.size()));
}
if(player1 != null) {
respawn = player1.getLocation();
}
respawnEvent.setSpawnpoint(respawn);
}
@@ -1,27 +1,23 @@
package com.nexia.core.listeners.factory;
import com.combatreforged.factory.api.event.player.PlayerUseItemEvent;
import com.combatreforged.factory.api.world.entity.player.Player;
import com.combatreforged.factory.api.world.item.ItemStack;
import com.nexia.core.games.util.PlayerGameMode;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.player.PlayerDataManager;
import com.nexia.core.utilities.player.PlayerUtil;
import net.kyori.adventure.text.Component;
import net.minecraft.server.level.ServerPlayer;
public class UseItemListener {
public static void registerListener() {
public void registerListener() {
PlayerUseItemEvent.BACKEND.register(playerUseItemEvent -> {
Player player = playerUseItemEvent.getPlayer();
ServerPlayer minecraftPlayer = PlayerUtil.getMinecraftPlayer(player);
NexiaPlayer player = new NexiaPlayer(playerUseItemEvent.getPlayer());
ItemStack itemStack = playerUseItemEvent.getItemStack();
Component name = itemStack.getDisplayName();
PlayerGameMode gameMode = PlayerDataManager.get(minecraftPlayer).gameMode;
PlayerGameMode gameMode = PlayerDataManager.get(player).gameMode;
String sName = name.toString().toLowerCase();
if(gameMode == PlayerGameMode.LOBBY) {
@@ -1,5 +1,7 @@
package com.nexia.core.loader;
import com.combatreforged.factory.api.command.CommandSourceInfo;
import com.mojang.brigadier.CommandDispatcher;
import com.nexia.core.commands.player.*;
import com.nexia.core.commands.player.duels.*;
import com.nexia.core.commands.player.duels.custom.CustomDuelCommand;
@@ -7,6 +9,7 @@ import com.nexia.core.commands.player.duels.custom.KitEditorCommand;
import com.nexia.core.commands.player.ffa.KitCommand;
import com.nexia.core.commands.staff.*;
import com.nexia.core.commands.staff.dev.*;
import com.nexia.core.utilities.time.ServerTime;
import com.nexia.discord.commands.minecraft.LinkCommand;
import com.nexia.discord.commands.minecraft.UnLinkCommand;
import net.fabricmc.fabric.api.command.v1.CommandRegistrationCallback;
@@ -14,57 +17,65 @@ import net.fabricmc.fabric.api.event.Event;
public class CommandLoader {
public static void registerFactoryCommands() {
CommandDispatcher<CommandSourceInfo> commandDispatcher = ServerTime.factoryServer.getCommandDispatcher();
SprintFixCommand.register(commandDispatcher);
DiscordCommand.register(commandDispatcher);
LeaveCommand.register(commandDispatcher);
PrefixCommand.register(commandDispatcher);
RankCommand.register(commandDispatcher);
LinkCommand.register(commandDispatcher);
PingCommand.register(commandDispatcher);
SpectateCommand.register(commandDispatcher);
PartyCommand.register(commandDispatcher);
TempBanCommand.register(commandDispatcher);
ShoutCommand.register(commandDispatcher);
RanksCommand.register(commandDispatcher);
UnTempBanCommand.register(commandDispatcher);
UnLinkCommand.register(commandDispatcher);
GamemodeBanCommand.register(commandDispatcher);
UnGamemodeBanCommand.register(commandDispatcher);
DeclineDuelCommand.register(commandDispatcher);
AcceptDuelCommand.register(commandDispatcher);
StaffPrefixCommand.register(commandDispatcher);
KitEditorCommand.register(commandDispatcher);
KitLayoutCommand.register(commandDispatcher);
CustomDuelCommand.register(commandDispatcher);
StaffReportCommand.register(commandDispatcher);
ListInventoriesCommand.register(commandDispatcher);
DuelCommand.register(commandDispatcher);
QueueCommand.register(commandDispatcher);
MapCommand.register(commandDispatcher);
MuteCommand.register(commandDispatcher);
UnMuteCommand.register(commandDispatcher);
PlayCommand.register(commandDispatcher);
KitCommand.register(commandDispatcher);
BanCommand.register(commandDispatcher);
UnBanCommand.register(commandDispatcher);
StatsCommand.register(commandDispatcher);
SprintFixCommand.register(commandDispatcher);
RulesCommand.register(commandDispatcher);
ReportCommand.register(commandDispatcher);
SprintFixCommand.register(commandDispatcher);
SprintFixCommand.register(commandDispatcher);
MessageCommand.registerMsg(commandDispatcher);
MessageCommand.registerReply(commandDispatcher);
HealCommand.register(commandDispatcher);
DetectCommand.register(commandDispatcher);
}
public static void registerCommands() {
Event<CommandRegistrationCallback> callbackEvent = CommandRegistrationCallback.EVENT;
callbackEvent.register(SprintFixCommand::register);
callbackEvent.register(DiscordCommand::register);
callbackEvent.register(LeaveCommand::register);
callbackEvent.register(ProtectionMapCommand::register);
callbackEvent.register(PrefixCommand::register);
callbackEvent.register(RankCommand::register);
callbackEvent.register(LinkCommand::register);
callbackEvent.register(PingCommand::register);
callbackEvent.register(ForceGameEndCommand::register);
callbackEvent.register(SpectateCommand::register);
callbackEvent.register(PartyCommand::register);
callbackEvent.register(TempBanCommand::register);
callbackEvent.register(ShoutCommand::register);
callbackEvent.register(RanksCommand::register);
callbackEvent.register(UnTempBanCommand::register);
callbackEvent.register(UnLinkCommand::register);
callbackEvent.register(GamemodeBanCommand::register);
callbackEvent.register(UnGamemodeBanCommand::register);
callbackEvent.register(AcceptDuelCommand::register);
callbackEvent.register(DeclineDuelCommand::register);
callbackEvent.register(StaffPrefixCommand::register);
callbackEvent.register(ProtectionMapCommand::register);
callbackEvent.register(DevExperimentalCommandsCommand::register);
callbackEvent.register(LoadInventoryCommand::register);
callbackEvent.register(SaveInventoryCommand::register);
callbackEvent.register(ListInventoriesCommand::register);
callbackEvent.register(DeleteInventoryCommand::register);
callbackEvent.register(KitEditorCommand::register);
callbackEvent.register(KitLayoutCommand::register);
callbackEvent.register(CustomDuelCommand::register);
callbackEvent.register(StaffReportCommand::register);
callbackEvent.register(DuelCommand::register);
callbackEvent.register(QueueCommand::register);
callbackEvent.register(MapCommand::register);
callbackEvent.register(MuteCommand::register);
callbackEvent.register(UnMuteCommand::register);
callbackEvent.register(PlayCommand::register);
callbackEvent.register(KitCommand::register);
callbackEvent.register(BanCommand::register);
callbackEvent.register(UnBanCommand::register);
callbackEvent.register(StatsCommand::register);
callbackEvent.register(RulesCommand::register);
callbackEvent.register(HelpCommand::register);
callbackEvent.register(ReportCommand::register);
callbackEvent.register(MessageCommand::registerMsg);
callbackEvent.register(MessageCommand::registerReply);
callbackEvent.register(RandomCommand::register);
callbackEvent.register(HealCommand::register);
callbackEvent.register(BwReloadShopCommand::register);
callbackEvent.register(RandomCommand::register);
callbackEvent.register(BwReloadTeamColorsCommand::register);
callbackEvent.register(SkipQueueCommand::register);
}
@@ -1,6 +1,7 @@
package com.nexia.core.mixin.block;
import com.nexia.core.games.util.LobbyUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.ffa.FfaUtil;
import com.nexia.minigames.games.bedwars.util.BwUtil;
import com.nexia.minigames.games.duels.util.player.PlayerData;
@@ -25,9 +26,10 @@ public class AnvilBlockMixin {
@Inject(method = "use", cancellable = true, at = @At("HEAD"))
private void use(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult, CallbackInfoReturnable<InteractionResult> cir) {
if (!(player instanceof ServerPlayer serverPlayer)) return;
PlayerData playerData = PlayerDataManager.get(serverPlayer);
NexiaPlayer nexiaPlayer = new NexiaPlayer(serverPlayer);
PlayerData playerData = PlayerDataManager.get(nexiaPlayer);
if (BwUtil.isInBedWars(serverPlayer) || (playerData.gameOptions != null && (playerData.gameOptions.duelsGame != null || playerData.gameOptions.teamDuelsGame != null || playerData.gameOptions.customDuelsGame != null || playerData.gameOptions.customTeamDuelsGame != null)) || LobbyUtil.isLobbyWorld(serverPlayer.getLevel()) || (FfaUtil.isFfaPlayer(player) && !serverPlayer.isCreative())) {
if (BwUtil.isInBedWars(nexiaPlayer) || (playerData.gameOptions != null && (playerData.gameOptions.duelsGame != null || playerData.gameOptions.teamDuelsGame != null || playerData.gameOptions.customDuelsGame != null || playerData.gameOptions.customTeamDuelsGame != null)) || LobbyUtil.isLobbyWorld(serverPlayer.getLevel()) || (FfaUtil.isFfaPlayer(nexiaPlayer) && !serverPlayer.isCreative())) {
cir.setReturnValue(InteractionResult.FAIL);
return;
}
@@ -1,6 +1,7 @@
package com.nexia.core.mixin.block;
import com.nexia.core.games.util.LobbyUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.ffa.FfaUtil;
import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerPlayer;
@@ -20,10 +21,10 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
public class BeaconBlockMixin {
@Inject(method = "use", at = @At("HEAD"), cancellable = true)
public void onUse(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult, CallbackInfoReturnable<InteractionResult> cir) {
if(!(player instanceof ServerPlayer))
return;
if(!(player instanceof ServerPlayer serverPlayer)) return;
NexiaPlayer nexiaPlayer = new NexiaPlayer(serverPlayer);
if((FfaUtil.isFfaPlayer(player) || LobbyUtil.isLobbyWorld(player.level)) && !player.isCreative()) {
if((FfaUtil.isFfaPlayer(nexiaPlayer) || LobbyUtil.isLobbyWorld(player.level)) && !player.isCreative()) {
cir.setReturnValue(InteractionResult.FAIL);
}
}
@@ -1,7 +1,9 @@
package com.nexia.core.mixin.block;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.minigames.games.duels.custom.kitroom.kitrooms.KitRoom;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.block.ChestBlock;
@@ -33,7 +35,7 @@ public abstract class ChestBlockEntityMixin extends BlockEntity {
@Inject(method = "startOpen", at = @At("HEAD"))
public void onOpen(Player player, CallbackInfo ci) {
if (KitRoom.isInKitRoom(player)) {
if (KitRoom.isInKitRoom(new NexiaPlayer((ServerPlayer) player))) {
nbtList.put(player.getUUID(), new CompoundTag());
this.save(nbtList.get(player.getUUID()));
}
@@ -41,7 +43,7 @@ public abstract class ChestBlockEntityMixin extends BlockEntity {
@Inject(method = "stopOpen", at = @At("HEAD"))
public void onClose(Player player, CallbackInfo ci) {
if (KitRoom.isInKitRoom(player)) {
if (KitRoom.isInKitRoom(new NexiaPlayer((ServerPlayer) player))) {
BlockState blockState = this.getBlockState();
if(blockState.getBlock() instanceof ChestBlock) {
this.load(blockState, nbtList.get(player.getUUID()));
@@ -1,6 +1,7 @@
package com.nexia.core.mixin.block;
import com.nexia.core.games.util.LobbyUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.ffa.FfaUtil;
import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerPlayer;
@@ -20,10 +21,10 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
public class CraftingTableMixin {
@Inject(method = "use", at = @At("HEAD"), cancellable = true)
public void onUse(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult, CallbackInfoReturnable<InteractionResult> cir) {
if(!(player instanceof ServerPlayer))
return;
if(!(player instanceof ServerPlayer serverPlayer)) return;
NexiaPlayer nexiaPlayer = new NexiaPlayer(serverPlayer);
if((FfaUtil.isFfaPlayer(player) || LobbyUtil.isLobbyWorld(player.level)) && !player.isCreative()) {
if((FfaUtil.isFfaPlayer(nexiaPlayer) || LobbyUtil.isLobbyWorld(player.level)) && !player.isCreative()) {
cir.setReturnValue(InteractionResult.FAIL);
}
}
@@ -1,6 +1,7 @@
package com.nexia.core.mixin.block;
import com.nexia.core.games.util.LobbyUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.ffa.FfaUtil;
import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerPlayer;
@@ -20,9 +21,9 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
public class DispenserBlockMixin {
@Inject(method = "use", at = @At("HEAD"), cancellable = true)
public void onUse(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult, CallbackInfoReturnable<InteractionResult> cir) {
if(!(player instanceof ServerPlayer))
return;
if(!(player instanceof ServerPlayer serverPlayer)) return;
NexiaPlayer nexiaPlayer = new NexiaPlayer(serverPlayer);
if((FfaUtil.isFfaPlayer(player) || LobbyUtil.isLobbyWorld(player.level)) && !player.isCreative()) { cir.setReturnValue(InteractionResult.FAIL); }
if((FfaUtil.isFfaPlayer(nexiaPlayer) || LobbyUtil.isLobbyWorld(player.level)) && !player.isCreative()) { cir.setReturnValue(InteractionResult.FAIL); }
}
}
@@ -1,6 +1,7 @@
package com.nexia.core.mixin.block;
import com.nexia.core.games.util.LobbyUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.minigames.games.bedwars.util.BwUtil;
import com.nexia.minigames.games.duels.util.player.PlayerData;
import com.nexia.minigames.games.duels.util.player.PlayerDataManager;
@@ -24,9 +25,10 @@ public class GrindstoneBlockMixin {
@Inject(method = "use", cancellable = true, at = @At("HEAD"))
private void use(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult, CallbackInfoReturnable<InteractionResult> cir) {
if (!(player instanceof ServerPlayer serverPlayer)) return;
PlayerData playerData = PlayerDataManager.get(serverPlayer);
NexiaPlayer nexiaPlayer = new NexiaPlayer(serverPlayer);
PlayerData playerData = PlayerDataManager.get(nexiaPlayer);
if (BwUtil.isInBedWars(serverPlayer) || (playerData.gameOptions != null && (playerData.gameOptions.duelsGame != null || playerData.gameOptions.teamDuelsGame != null || playerData.gameOptions.customTeamDuelsGame != null || playerData.gameOptions.customDuelsGame != null)) || LobbyUtil.isLobbyWorld(serverPlayer.getLevel())) {
if (BwUtil.isInBedWars(nexiaPlayer) || (playerData.gameOptions != null && (playerData.gameOptions.duelsGame != null || playerData.gameOptions.teamDuelsGame != null || playerData.gameOptions.customTeamDuelsGame != null || playerData.gameOptions.customDuelsGame != null)) || LobbyUtil.isLobbyWorld(serverPlayer.getLevel())) {
cir.setReturnValue(InteractionResult.FAIL);
return;
}
@@ -1,6 +1,7 @@
package com.nexia.core.mixin.block;
import com.nexia.core.games.util.LobbyUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.ffa.classic.utilities.FfaAreas;
import com.nexia.minigames.games.bedwars.util.BwUtil;
import com.nexia.minigames.games.duels.custom.kitroom.kitrooms.KitRoom;
@@ -25,9 +26,10 @@ public class PotBlockMixin {
@Inject(method = "use", cancellable = true, at = @At("HEAD"))
private void use(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult, CallbackInfoReturnable<InteractionResult> cir) {
if (!(player instanceof ServerPlayer serverPlayer)) return;
PlayerData playerData = PlayerDataManager.get(serverPlayer);
NexiaPlayer nexiaPlayer = new NexiaPlayer(serverPlayer);
PlayerData playerData = PlayerDataManager.get(nexiaPlayer);
if (BwUtil.isInBedWars(serverPlayer) || KitRoom.isInKitRoom(player) || (playerData.gameOptions != null && (playerData.gameOptions.duelsGame != null || playerData.gameOptions.teamDuelsGame != null || playerData.gameOptions.customTeamDuelsGame != null || playerData.gameOptions.customDuelsGame != null)) || LobbyUtil.isLobbyWorld(serverPlayer.getLevel()) || (FfaAreas.isFfaWorld(serverPlayer.getLevel()) || com.nexia.ffa.kits.utilities.FfaAreas.isFfaWorld(serverPlayer.getLevel())) && !serverPlayer.isCreative()) {
if (BwUtil.isInBedWars(nexiaPlayer) || KitRoom.isInKitRoom(nexiaPlayer) || (playerData.gameOptions != null && (playerData.gameOptions.duelsGame != null || playerData.gameOptions.teamDuelsGame != null || playerData.gameOptions.customTeamDuelsGame != null || playerData.gameOptions.customDuelsGame != null)) || LobbyUtil.isLobbyWorld(serverPlayer.getLevel()) || (FfaAreas.isFfaWorld(serverPlayer.getLevel()) || com.nexia.ffa.kits.utilities.FfaAreas.isFfaWorld(serverPlayer.getLevel())) && !serverPlayer.isCreative()) {
cir.setReturnValue(InteractionResult.FAIL);
return;
}
@@ -1,8 +1,10 @@
package com.nexia.core.mixin.entity;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.ffa.FfaUtil;
import com.nexia.minigames.games.duels.custom.kitroom.kitrooms.KitRoom;
import com.nexia.minigames.games.football.FootballGame;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.damagesource.DamageSource;
@@ -52,8 +54,10 @@ public abstract class ArmorStandMixin extends LivingEntity {
@Inject(method = "interactAt", cancellable = true, at = @At("HEAD"))
private void canTakeItem(Player player, Vec3 vec3, InteractionHand interactionHand, CallbackInfoReturnable<InteractionResult> cir) {
NexiaPlayer nexiaPlayer = new NexiaPlayer((ServerPlayer) player);
// Disable interacting with armor stands
if ((FfaUtil.isFfaPlayer(player) || FootballGame.isFootballPlayer(player) || KitRoom.isInKitRoom(player)) && !player.isCreative()) {
if ((FfaUtil.isFfaPlayer(nexiaPlayer) || FootballGame.isFootballPlayer(nexiaPlayer) || KitRoom.isInKitRoom(nexiaPlayer)) && !player.isCreative()) {
cir.setReturnValue(InteractionResult.FAIL);
}
}
@@ -37,15 +37,13 @@ public abstract class EntityMixin implements Nameable, CommandSource {
@Shadow public float pushthrough;
@Shadow public abstract boolean isVehicle();
@Shadow public abstract void push(double d, double e, double f);
@Shadow public Level level;
@Inject(method = "isInvulnerableTo", at = @At("HEAD"), cancellable = true)
private void hurt(DamageSource damageSource, CallbackInfoReturnable<Boolean> cir) {
if ((damageSource == DamageSource.FALL && getTags().contains(LobbyUtil.NO_FALL_DAMAGE_TAG)) || (damageSource == DamageSource.FALL && getTags().contains("ffa"))) {
if ((damageSource == DamageSource.FALL && getTags().contains(LobbyUtil.NO_FALL_DAMAGE_TAG)) ||
(damageSource == DamageSource.FALL && getTags().contains("ffa"))
) {
cir.setReturnValue(true);
}
}
@@ -1,7 +1,9 @@
package com.nexia.core.mixin.entity;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.ffa.FfaUtil;
import com.nexia.minigames.games.duels.custom.kitroom.kitrooms.KitRoom;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.Entity;
@@ -23,9 +25,11 @@ public abstract class ItemFrameMixin extends Entity {
@Inject(method = "interact", cancellable = true, at = @At("HEAD"))
private void canTakeItem(Player player, InteractionHand interactionHand, CallbackInfoReturnable<InteractionResult> cir) {
if(!(player instanceof ServerPlayer serverPlayer)) return;
NexiaPlayer nexiaPlayer = new NexiaPlayer(serverPlayer);
// Disable interacting with item frames
if ((FfaUtil.isFfaPlayer(player) || KitRoom.isInKitRoom(player)) && !player.isCreative()) {
if ((FfaUtil.isFfaPlayer(nexiaPlayer) || KitRoom.isInKitRoom(nexiaPlayer)) && !player.isCreative()) {
cir.setReturnValue(InteractionResult.FAIL);
return;
}
@@ -33,7 +33,7 @@ public abstract class LivingEntityMixin {
@ModifyArg(method = "hurt", index = 1, at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;actuallyHurt(Lnet/minecraft/world/damagesource/DamageSource;F)V"))
protected float hurt(DamageSource damageSource, float value) {
if((Object) this instanceof ServerPlayer player) {
if(PlayerDataManager.get(player).gameMode == PlayerGameMode.LOBBY) {
if(PlayerDataManager.get(player.getUUID()).gameMode == PlayerGameMode.LOBBY) {
return value;
}
}
@@ -63,7 +63,7 @@ public abstract class LivingEntityMixin {
instance.hasImpulse = true;
Vec3 vec3 = instance.getDeltaMovement();
Vec3 vec32 = (new Vec3(d, 0.0, e)).normalize().scale(f);
instance.setDeltaMovement(vec3.x / 2.0 - vec32.x, instance.isOnGround() ? Math.min(0.4, (double)f * 0.75) : Math.min(0.4, vec3.y + (double)f * 0.5),vec3.z / 2.0 - vec32.z);
instance.setDeltaMovement(vec3.x / 2.0 - vec32.x, instance.isOnGround() ? Math.min(0.4, (double)f * 0.75) : Math.min(0.4, vec3.y + (double)f * 0.5), vec3.z / 2.0 - vec32.z);
}
}
@@ -1,5 +1,6 @@
package com.nexia.core.mixin.entity;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.ffa.sky.utilities.FfaSkyUtil;
import com.nexia.minigames.games.bedwars.util.BwUtil;
import net.minecraft.server.level.ServerPlayer;
@@ -21,11 +22,12 @@ public abstract class ThrownEnderpearlMixin extends ThrowableItemProjectile {
@ModifyArg(method = "onHit", index = 1, at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Entity;hurt(Lnet/minecraft/world/damagesource/DamageSource;F)Z"))
private float pearlDamage(float damage) {
if (getOwner() instanceof ServerPlayer thrower) {
NexiaPlayer nexiaPlayer = new NexiaPlayer(thrower);
if (BwUtil.isInBedWars(thrower)) {
if (BwUtil.isInBedWars(nexiaPlayer)) {
return BwUtil.getPearlDamage();
}
if (FfaSkyUtil.isFfaPlayer(thrower)) {
if (FfaSkyUtil.isFfaPlayer(nexiaPlayer)) {
return 0;
}
@@ -1,6 +1,5 @@
package com.nexia.core.mixin.entity;
import com.nexia.core.Main;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.projectile.AbstractArrow;
@@ -40,8 +39,7 @@ public abstract class ThrownTridentMixin extends AbstractArrow {
}
*/
if(Main.config.enhancements.tridentDamagePatch) bonus -= 2;
bonus -= 2;
return bonus;
}
@@ -1,6 +1,5 @@
package com.nexia.core.mixin.item;
import com.nexia.core.Main;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.entity.EquipmentSlot;
@@ -30,8 +29,6 @@ public class ArmorItemMixin {
@Inject(method = "use", at = @At("HEAD"), cancellable = true)
public void use(Level level, Player player, InteractionHand interactionHand, CallbackInfoReturnable<InteractionResultHolder<ItemStack>> cir) {
if(!Main.config.enhancements.armorSwapping) return;
ItemStack itemStack = player.getItemInHand(interactionHand);
EquipmentSlot equipmentSlot = Mob.getEquipmentSlotForItem(itemStack);
ItemStack itemStack2 = player.getItemBySlot(equipmentSlot);
@@ -1,6 +1,6 @@
package com.nexia.core.mixin.item;
import com.nexia.core.utilities.item.ItemStackUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.ffa.sky.utilities.FfaSkyUtil;
import com.nexia.ffa.uhc.utilities.FfaAreas;
import com.nexia.ffa.uhc.utilities.FfaUhcUtil;
@@ -25,27 +25,32 @@ public abstract class BlockItemMixin {
private void beforePlace(BlockPlaceContext context, CallbackInfoReturnable<InteractionResult> cir) {
ServerPlayer player = (ServerPlayer)context.getPlayer();
if (player == null) return;
NexiaPlayer nexiaPlayer = new NexiaPlayer(player);
BlockPos blockPos = context.getClickedPos();
ServerLevel level = player.getLevel();
if (BwAreas.isBedWarsWorld(player.getLevel()) && !BwPlayerEvents.beforePlace(player, context)) {
if (BwAreas.isBedWarsWorld(player.getLevel()) && !BwPlayerEvents.beforePlace(nexiaPlayer, context)) {
cir.setReturnValue(InteractionResult.PASS);
nexiaPlayer.refreshInventory();
return;
}
if (player.getLevel().equals(FootballGame.world) && !player.isCreative()) {
cir.setReturnValue(InteractionResult.PASS);
nexiaPlayer.refreshInventory();
return;
}
if (FfaAreas.isFfaWorld(level) && !FfaUhcUtil.beforeBuild(player, blockPos)) {
if (FfaAreas.isFfaWorld(level) && !FfaUhcUtil.beforeBuild(nexiaPlayer, blockPos)) {
cir.setReturnValue(InteractionResult.PASS);
ItemStackUtil.sendInventoryRefreshPacket(player);
nexiaPlayer.refreshInventory();
return;
}
if (com.nexia.ffa.sky.utilities.FfaAreas.isFfaWorld(level) && !FfaSkyUtil.beforeBuild(player, blockPos)) {
if (com.nexia.ffa.sky.utilities.FfaAreas.isFfaWorld(level) && !FfaSkyUtil.beforeBuild(nexiaPlayer, blockPos)) {
cir.setReturnValue(InteractionResult.PASS);
nexiaPlayer.refreshInventory();
return;
}
}
@@ -54,11 +59,12 @@ public abstract class BlockItemMixin {
private void afterPlace(BlockPlaceContext context, CallbackInfoReturnable<InteractionResult> cir) {
ServerPlayer player = (ServerPlayer)context.getPlayer();
if (player == null) return;
NexiaPlayer nexiaPlayer = new NexiaPlayer(player);
BlockPos blockPos = context.getClickedPos();
if (com.nexia.ffa.sky.utilities.FfaAreas.isFfaWorld(player.getLevel())) {
FfaSkyUtil.afterPlace(player, blockPos, context.getHand());
FfaSkyUtil.afterPlace(nexiaPlayer, blockPos, context.getHand());
}
}
}
@@ -1,7 +1,7 @@
package com.nexia.core.mixin.item;
import com.nexia.core.games.util.PlayerGameMode;
import com.nexia.core.utilities.item.ItemStackUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.minigames.games.duels.DuelGameMode;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.LivingEntity;
@@ -19,13 +19,15 @@ public class BowItemMixin {
@Inject(method = "releaseUsing", at = @At(value = "HEAD"), cancellable = true)
public void preventKitFFAplayers(ItemStack itemStack, Level level, LivingEntity livingEntity, int i, CallbackInfo ci) {
if(livingEntity instanceof Player player){
if((com.nexia.ffa.kits.utilities.FfaAreas.isFfaWorld(player.level) && com.nexia.ffa.kits.utilities.FfaAreas.isInFfaSpawn(player)) ||
(com.nexia.ffa.uhc.utilities.FfaAreas.isFfaWorld(player.level) && com.nexia.ffa.uhc.utilities.FfaAreas.isInFfaSpawn(player)) ||
(com.nexia.ffa.sky.utilities.FfaAreas.isFfaWorld(player.level) && com.nexia.ffa.sky.utilities.FfaAreas.isInFfaSpawn((ServerPlayer) player)) ||
(com.nexia.core.utilities.player.PlayerDataManager.get(player).gameMode.equals(PlayerGameMode.LOBBY) && com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player).gameMode.equals(DuelGameMode.LOBBY))
NexiaPlayer nexiaPlayer = new NexiaPlayer((ServerPlayer) player);
if((com.nexia.ffa.kits.utilities.FfaAreas.isFfaWorld(player.level) && com.nexia.ffa.kits.utilities.FfaAreas.isInFfaSpawn(nexiaPlayer)) ||
(com.nexia.ffa.uhc.utilities.FfaAreas.isFfaWorld(player.level) && com.nexia.ffa.uhc.utilities.FfaAreas.isInFfaSpawn(nexiaPlayer)) ||
(com.nexia.ffa.sky.utilities.FfaAreas.isFfaWorld(player.level) && com.nexia.ffa.sky.utilities.FfaAreas.isInFfaSpawn(nexiaPlayer)) ||
(com.nexia.core.utilities.player.PlayerDataManager.get(nexiaPlayer).gameMode.equals(PlayerGameMode.LOBBY) && com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(nexiaPlayer).gameMode.equals(DuelGameMode.LOBBY))
) {
ci.cancel();
ItemStackUtil.sendInventoryRefreshPacket((ServerPlayer) player);
nexiaPlayer.refreshInventory();
}
}
}
@@ -1,7 +1,7 @@
package com.nexia.core.mixin.item;
import com.nexia.core.games.util.PlayerGameMode;
import com.nexia.core.utilities.item.ItemStackUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.core.utilities.player.PlayerDataManager;
import com.nexia.ffa.uhc.utilities.FfaAreas;
import com.nexia.ffa.uhc.utilities.FfaUhcUtil;
@@ -49,9 +49,10 @@ public class BucketItemMixin extends Item {
BlockPos blockPos3 = blockState.getBlock() instanceof LiquidBlockContainer && this.content == Fluids.WATER ? blockPos : blockPos2;
if(!(player instanceof ServerPlayer serverPlayer)) return;
if((FfaAreas.isFfaWorld(level) && !FfaUhcUtil.beforeBuild(serverPlayer, blockPos3)) || (!player.isCreative() && PlayerDataManager.get(serverPlayer).gameMode.equals(PlayerGameMode.LOBBY) && com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(serverPlayer).gameMode.equals(DuelGameMode.LOBBY))) {
NexiaPlayer nexiaPlayer = new NexiaPlayer(serverPlayer);
if((FfaAreas.isFfaWorld(level) && !FfaUhcUtil.beforeBuild(nexiaPlayer, blockPos3)) || (!player.isCreative() && PlayerDataManager.get(nexiaPlayer).gameMode.equals(PlayerGameMode.LOBBY) && com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(nexiaPlayer).gameMode.equals(DuelGameMode.LOBBY))) {
cir.setReturnValue(new InteractionResultHolder<>(InteractionResult.FAIL, player.getItemInHand(interactionHand)));
ItemStackUtil.sendInventoryRefreshPacket(serverPlayer);
nexiaPlayer.refreshInventory();
}
}
}
@@ -1,6 +1,6 @@
package com.nexia.core.mixin.item;
import com.nexia.core.utilities.item.ItemStackUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.ffa.FfaUtil;
import com.nexia.minigames.games.bedwars.util.BwUtil;
import net.minecraft.server.level.ServerPlayer;
@@ -19,15 +19,12 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(CraftingMenu.class)
public class CraftingMixin {
// Set crafter to player
@Unique
private static ServerPlayer crafter;
@Inject(method = "slotChangedCraftingGrid", at = @At("HEAD"))
private static void craft(int i, Level level, Player player, CraftingContainer craftingContainer, ResultContainer resultContainer, CallbackInfo ci) {
if (player instanceof ServerPlayer serverPlayer) {
crafter = serverPlayer;
if (player instanceof ServerPlayer) {
crafter = (ServerPlayer) player;
}
}
@@ -35,9 +32,10 @@ public class CraftingMixin {
@ModifyArg(method = "slotChangedCraftingGrid", index = 1, at = @At(value = "INVOKE", target = "Lnet/minecraft/world/inventory/ResultContainer;setItem(ILnet/minecraft/world/item/ItemStack;)V"))
private static ItemStack setCraftResult(ItemStack itemStack) {
if (crafter == null) return itemStack;
NexiaPlayer nexiaPlayer = new NexiaPlayer(crafter);
if (BwUtil.isInBedWars(crafter) || FfaUtil.isFfaPlayer(crafter)) {
ItemStackUtil.sendInventoryRefreshPacket(crafter);
if (BwUtil.isInBedWars(nexiaPlayer) || FfaUtil.isFfaPlayer(nexiaPlayer)) {
nexiaPlayer.refreshInventory();
return ItemStack.EMPTY;
}
@@ -47,10 +45,9 @@ public class CraftingMixin {
@ModifyArg(method = "slotChangedCraftingGrid", index = 2, at = @At(value = "INVOKE", target = "Lnet/minecraft/network/protocol/game/ClientboundContainerSetSlotPacket;<init>(IILnet/minecraft/world/item/ItemStack;)V"))
private static ItemStack setCraftResultPacketItem(ItemStack itemStack) {
if (crafter == null) return itemStack;
NexiaPlayer nexiaPlayer = new NexiaPlayer(crafter);
if (BwUtil.isInBedWars(crafter) || FfaUtil.isFfaPlayer(crafter)) {
return ItemStack.EMPTY;
}
if (BwUtil.isInBedWars(nexiaPlayer) || FfaUtil.isFfaPlayer(nexiaPlayer)) return ItemStack.EMPTY;
return itemStack;
}
@@ -1,7 +1,7 @@
package com.nexia.core.mixin.item;
import com.nexia.core.games.util.PlayerGameMode;
import com.nexia.core.utilities.item.ItemStackUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.minigames.games.duels.DuelGameMode;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.LivingEntity;
@@ -19,12 +19,14 @@ public class CrossbowItemMixin {
@Inject(method = "releaseUsing", at = @At(value = "HEAD"), cancellable = true)
public void preventKitFFAplayers(ItemStack itemStack, Level level, LivingEntity livingEntity, int i, CallbackInfo ci) {
if(livingEntity instanceof Player player){
if((com.nexia.ffa.kits.utilities.FfaAreas.isFfaWorld(player.level) && com.nexia.ffa.kits.utilities.FfaAreas.isInFfaSpawn(player)) ||
(com.nexia.ffa.uhc.utilities.FfaAreas.isFfaWorld(player.level) && com.nexia.ffa.uhc.utilities.FfaAreas.isInFfaSpawn(player)) ||
(com.nexia.core.utilities.player.PlayerDataManager.get(player).gameMode.equals(PlayerGameMode.LOBBY) && com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player).gameMode.equals(DuelGameMode.LOBBY))
NexiaPlayer nexiaPlayer = new NexiaPlayer((ServerPlayer) player);
if((com.nexia.ffa.kits.utilities.FfaAreas.isFfaWorld(player.level) && com.nexia.ffa.kits.utilities.FfaAreas.isInFfaSpawn(nexiaPlayer)) ||
(com.nexia.ffa.uhc.utilities.FfaAreas.isFfaWorld(player.level) && com.nexia.ffa.uhc.utilities.FfaAreas.isInFfaSpawn(nexiaPlayer)) ||
(com.nexia.core.utilities.player.PlayerDataManager.get(nexiaPlayer).gameMode.equals(PlayerGameMode.LOBBY) && com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(nexiaPlayer).gameMode.equals(DuelGameMode.LOBBY))
) {
ci.cancel();
ItemStackUtil.sendInventoryRefreshPacket((ServerPlayer) player);
nexiaPlayer.refreshInventory();
}
}
}
@@ -17,7 +17,7 @@ public class DebugStickItemMixin {
target = "Lnet/minecraft/world/entity/player/Player;canUseGameMasterBlocks()Z"
)
)
public boolean vanillaPermissions_addDebugStickUsePermission(boolean original, Player player, BlockState blockState) {
public boolean addDebugStickUsePermission(boolean original, Player player, BlockState blockState) {
return Permissions.check(player,"nexia.staff.debug_stick", original);
}
}
@@ -1,7 +1,7 @@
package com.nexia.core.mixin.item;
import com.nexia.core.games.util.PlayerGameMode;
import com.nexia.core.utilities.item.ItemStackUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.minigames.games.bedwars.areas.BwAreas;
import com.nexia.minigames.games.bedwars.players.BwPlayerEvents;
import com.nexia.minigames.games.duels.DuelGameMode;
@@ -30,9 +30,11 @@ public class EggItemMixin {
@Inject(method = "use", at = @At("HEAD"), cancellable = true)
private void use(Level level, Player player, InteractionHand interactionHand, CallbackInfoReturnable<InteractionResultHolder<ItemStack>> cir) {
if((com.nexia.core.utilities.player.PlayerDataManager.get(player).gameMode.equals(PlayerGameMode.LOBBY) && com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player).gameMode.equals(DuelGameMode.LOBBY))) {
NexiaPlayer nexiaPlayer = new NexiaPlayer((ServerPlayer) player);
if((com.nexia.core.utilities.player.PlayerDataManager.get(nexiaPlayer).gameMode.equals(PlayerGameMode.LOBBY) && com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(nexiaPlayer).gameMode.equals(DuelGameMode.LOBBY))) {
cir.setReturnValue(new InteractionResultHolder<>(InteractionResult.FAIL, player.getItemInHand(interactionHand)));
ItemStackUtil.sendInventoryRefreshPacket((ServerPlayer) player);
nexiaPlayer.refreshInventory();
}
this.hand = interactionHand;
}
@@ -43,7 +45,7 @@ public class EggItemMixin {
if (livingEntity instanceof ServerPlayer player) {
if (BwAreas.isBedWarsWorld(level)) {
return BwPlayerEvents.throwEgg(player, player.getItemInHand(hand));
return BwPlayerEvents.throwEgg(new NexiaPlayer(player), player.getItemInHand(hand));
}
}
@@ -1,6 +1,5 @@
package com.nexia.core.mixin.item;
import com.nexia.core.Main;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.entity.EquipmentSlot;
@@ -30,8 +29,6 @@ public class ElytraItemMixin {
@Inject(method = "use", at = @At("HEAD"), cancellable = true)
public void use(Level level, Player player, InteractionHand interactionHand, CallbackInfoReturnable<InteractionResultHolder<ItemStack>> cir) {
if(!Main.config.enhancements.armorSwapping) return;
ItemStack itemStack = player.getItemInHand(interactionHand);
EquipmentSlot equipmentSlot = Mob.getEquipmentSlotForItem(itemStack);
ItemStack itemStack2 = player.getItemBySlot(equipmentSlot);
@@ -1,8 +1,7 @@
package com.nexia.core.mixin.item;
import com.nexia.core.Main;
import com.nexia.core.games.util.PlayerGameMode;
import com.nexia.core.utilities.item.InventoryUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.ffa.sky.utilities.FfaAreas;
import com.nexia.ffa.sky.utilities.FfaSkyUtil;
import com.nexia.minigames.games.duels.DuelGameMode;
@@ -36,10 +35,11 @@ public class EnderPearlItemMixin extends Item {
private void setPlayer(Level level, Player player, InteractionHand interactionHand, CallbackInfoReturnable<InteractionResultHolder<ItemStack>> cir) {
if (player instanceof ServerPlayer serverPlayer) {
thrower = serverPlayer;
NexiaPlayer nexiaPlayer = new NexiaPlayer(serverPlayer);
if ((FfaAreas.isFfaWorld(serverPlayer.getLevel()) && FfaSkyUtil.wasInSpawn.contains(serverPlayer.getUUID())) || (com.nexia.core.utilities.player.PlayerDataManager.get(player).gameMode.equals(PlayerGameMode.LOBBY) && com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player).gameMode.equals(DuelGameMode.LOBBY))) {
if ((FfaAreas.isFfaWorld(serverPlayer.getLevel()) && FfaSkyUtil.wasInSpawn.contains(serverPlayer.getUUID())) || (com.nexia.core.utilities.player.PlayerDataManager.get(nexiaPlayer).gameMode.equals(PlayerGameMode.LOBBY) && com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(nexiaPlayer).gameMode.equals(DuelGameMode.LOBBY))) {
cir.setReturnValue(InteractionResultHolder.pass(serverPlayer.getItemInHand(interactionHand)));
InventoryUtil.sendHandItemPacket(serverPlayer, interactionHand);
nexiaPlayer.refreshInventory();
return;
}
@@ -49,13 +49,14 @@ public class EnderPearlItemMixin extends Item {
@ModifyArg(method = "use", index = 1, at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/ItemCooldowns;addCooldown(Lnet/minecraft/world/item/Item;I)V"))
private int setPearlCooldown(int original) {
int time = Main.config.enhancements.enderpearlCooldown;
int time = original;
if (thrower == null) return time;
NexiaPlayer nexiaPlayer = new NexiaPlayer(thrower);
DuelGameMode duelGameMode = PlayerDataManager.get(thrower).gameMode;
DuelGameMode duelGameMode = PlayerDataManager.get(nexiaPlayer).gameMode;
if(duelGameMode.equals(DuelGameMode.POT) || duelGameMode.equals(DuelGameMode.NETH_POT)) time = 300;
if (FfaSkyUtil.isFfaPlayer(thrower)) time = 10;
if (FfaSkyUtil.isFfaPlayer(nexiaPlayer)) time = 10;
return time;
}
@@ -1,7 +1,7 @@
package com.nexia.core.mixin.item;
import com.nexia.core.games.util.PlayerGameMode;
import com.nexia.core.utilities.item.ItemStackUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.minigames.games.duels.DuelGameMode;
import com.nexia.minigames.games.duels.custom.kitroom.kitrooms.KitRoom;
import net.minecraft.server.level.ServerPlayer;
@@ -21,9 +21,12 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
public class ExperienceBottleItemMixin {
@Inject(method = "use", at = @At(value = "HEAD"), cancellable = true)
public void preventPlayers(Level level, Player player, InteractionHand interactionHand, CallbackInfoReturnable<InteractionResultHolder<ItemStack>> cir) {
if((com.nexia.core.utilities.player.PlayerDataManager.get(player).gameMode.equals(PlayerGameMode.LOBBY) && com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player).gameMode.equals(DuelGameMode.LOBBY) && !KitRoom.isInKitRoom(player))) {
NexiaPlayer nexiaPlayer = new NexiaPlayer((ServerPlayer) player);
if((com.nexia.core.utilities.player.PlayerDataManager.get(nexiaPlayer).gameMode.equals(PlayerGameMode.LOBBY) && com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(nexiaPlayer).gameMode.equals(DuelGameMode.LOBBY) && !KitRoom.isInKitRoom(nexiaPlayer))) {
cir.setReturnValue(new InteractionResultHolder<>(InteractionResult.FAIL, player.getItemInHand(interactionHand)));
ItemStackUtil.sendInventoryRefreshPacket((ServerPlayer) player);
nexiaPlayer.refreshInventory();
}
}
}
@@ -1,7 +1,7 @@
package com.nexia.core.mixin.item;
import com.nexia.core.games.util.PlayerGameMode;
import com.nexia.core.utilities.item.ItemStackUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.minigames.games.duels.DuelGameMode;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionHand;
@@ -20,9 +20,11 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
public class FishingRodItemMixin {
@Inject(method = "use", at = @At(value = "HEAD"), cancellable = true)
public void preventPlayers(Level level, Player player, InteractionHand interactionHand, CallbackInfoReturnable<InteractionResultHolder<ItemStack>> cir) {
if((com.nexia.core.utilities.player.PlayerDataManager.get(player).gameMode.equals(PlayerGameMode.LOBBY) && com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player).gameMode.equals(DuelGameMode.LOBBY))) {
NexiaPlayer nexiaPlayer = new NexiaPlayer((ServerPlayer) player);
if((com.nexia.core.utilities.player.PlayerDataManager.get(nexiaPlayer).gameMode.equals(PlayerGameMode.LOBBY) && com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(nexiaPlayer).gameMode.equals(DuelGameMode.LOBBY))) {
cir.setReturnValue(new InteractionResultHolder<>(InteractionResult.FAIL, player.getItemInHand(interactionHand)));
ItemStackUtil.sendInventoryRefreshPacket((ServerPlayer) player);
nexiaPlayer.refreshInventory();
}
}
}
@@ -1,7 +1,7 @@
package com.nexia.core.mixin.item;
import com.nexia.core.games.util.PlayerGameMode;
import com.nexia.core.utilities.item.ItemStackUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.minigames.games.duels.DuelGameMode;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.LivingEntity;
@@ -22,11 +22,13 @@ public class HoneyBottleItemMixin {
@Inject(method = "finishUsingItem", at = @At("HEAD"), cancellable = true)
private void finishUsingItem(ItemStack itemStack, Level level, LivingEntity livingEntity, CallbackInfoReturnable<ItemStack> cir) {
if (livingEntity instanceof ServerPlayer) {
this.player = (ServerPlayer) livingEntity;
if((com.nexia.core.utilities.player.PlayerDataManager.get(player).gameMode.equals(PlayerGameMode.LOBBY) && com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player).gameMode.equals(DuelGameMode.LOBBY))) {
if (livingEntity instanceof ServerPlayer serverPlayer) {
this.player = serverPlayer;
NexiaPlayer nexiaPlayer = new NexiaPlayer(serverPlayer);
if((com.nexia.core.utilities.player.PlayerDataManager.get(nexiaPlayer).gameMode.equals(PlayerGameMode.LOBBY) && com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(nexiaPlayer).gameMode.equals(DuelGameMode.LOBBY))) {
cir.setReturnValue(itemStack);
ItemStackUtil.sendInventoryRefreshPacket(player);
nexiaPlayer.refreshInventory();
}
}
}
@@ -1,7 +1,7 @@
package com.nexia.core.mixin.item;
import com.nexia.core.games.util.PlayerGameMode;
import com.nexia.core.utilities.item.ItemStackUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.minigames.games.duels.DuelGameMode;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionHand;
@@ -11,6 +11,7 @@ import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.LingeringPotionItem;
import net.minecraft.world.level.Level;
import net.notcoded.codelib.players.AccuratePlayer;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
@@ -20,9 +21,11 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
public class LingeringPotionItemMixin {
@Inject(method = "use", at = @At(value = "HEAD"), cancellable = true)
public void preventKitFFAplayers(Level level, Player player, InteractionHand interactionHand, CallbackInfoReturnable<InteractionResultHolder<ItemStack>> cir) {
if((com.nexia.ffa.kits.utilities.FfaAreas.isFfaWorld(player.level) && com.nexia.ffa.kits.utilities.FfaAreas.isInFfaSpawn(player)) || (com.nexia.core.utilities.player.PlayerDataManager.get(player).gameMode.equals(PlayerGameMode.LOBBY) && com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player).gameMode.equals(DuelGameMode.LOBBY))) {
NexiaPlayer nexiaPlayer = new NexiaPlayer((ServerPlayer) player);
if((com.nexia.ffa.kits.utilities.FfaAreas.isFfaWorld(player.level) && com.nexia.ffa.kits.utilities.FfaAreas.isInFfaSpawn(nexiaPlayer)) || (com.nexia.core.utilities.player.PlayerDataManager.get(nexiaPlayer).gameMode.equals(PlayerGameMode.LOBBY) && com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(nexiaPlayer).gameMode.equals(DuelGameMode.LOBBY))) {
cir.setReturnValue(new InteractionResultHolder<>(InteractionResult.FAIL, player.getItemInHand(interactionHand)));
ItemStackUtil.sendInventoryRefreshPacket((ServerPlayer) player);
nexiaPlayer.refreshInventory();
}
}
}
@@ -1,7 +1,7 @@
package com.nexia.core.mixin.item;
import com.nexia.core.games.util.PlayerGameMode;
import com.nexia.core.utilities.item.ItemStackUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.ffa.kits.utilities.FfaKitsUtil;
import com.nexia.ffa.sky.utilities.FfaSkyUtil;
import com.nexia.minigames.games.bedwars.players.BwPlayerEvents;
@@ -31,9 +31,11 @@ public class PotionItemMixin {
private void finishUsingItem(ItemStack itemStack, Level level, LivingEntity livingEntity, CallbackInfoReturnable<ItemStack> cir) {
if (livingEntity instanceof ServerPlayer) {
this.player = (ServerPlayer) livingEntity;
if((FfaKitsUtil.isFfaPlayer(player) && FfaKitsUtil.wasInSpawn.contains(player.getUUID())) || (FfaSkyUtil.isFfaPlayer(player) && FfaSkyUtil.wasInSpawn.contains(player.getUUID())) ||(com.nexia.core.utilities.player.PlayerDataManager.get(player).gameMode.equals(PlayerGameMode.LOBBY) && com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player).gameMode.equals(DuelGameMode.LOBBY))) {
NexiaPlayer nexiaPlayer = new NexiaPlayer(this.player);
if((FfaKitsUtil.isFfaPlayer(nexiaPlayer) && FfaKitsUtil.wasInSpawn.contains(player.getUUID())) || (FfaSkyUtil.isFfaPlayer(nexiaPlayer) && FfaSkyUtil.wasInSpawn.contains(player.getUUID())) ||(com.nexia.core.utilities.player.PlayerDataManager.get(nexiaPlayer).gameMode.equals(PlayerGameMode.LOBBY) && com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(nexiaPlayer).gameMode.equals(DuelGameMode.LOBBY))) {
cir.setReturnValue(itemStack);
ItemStackUtil.sendInventoryRefreshPacket(player);
nexiaPlayer.refreshInventory();
}
}
@@ -43,18 +45,20 @@ public class PotionItemMixin {
@Inject(method = "finishUsingItem", at = @At("RETURN"))
private void finishedUsingItem(ItemStack itemStack, Level level, LivingEntity livingEntity, CallbackInfoReturnable<ItemStack> cir) {
if (this.player == null) return;
NexiaPlayer nexiaPlayer = new NexiaPlayer(this.player);
if (BwUtil.isBedWarsPlayer(this.player)) {
BwPlayerEvents.drankPotion(this.player, itemStack);
if (BwUtil.isBedWarsPlayer(nexiaPlayer)) {
BwPlayerEvents.drankPotion(nexiaPlayer, itemStack);
}
}
@Redirect(method = "finishUsingItem", at = @At(value = "NEW", target = "(Lnet/minecraft/world/level/ItemLike;)Lnet/minecraft/world/item/ItemStack;"))
private ItemStack setItemAfterDrink(ItemLike itemLike) {
if (player == null) return new ItemStack(Items.GLASS_BOTTLE);
NexiaPlayer nexiaPlayer = new NexiaPlayer(this.player);
if (BwUtil.isBedWarsPlayer(player) || FfaSkyUtil.isFfaPlayer(player)) {
ItemStackUtil.sendInventoryRefreshPacket(player);
if (BwUtil.isBedWarsPlayer(nexiaPlayer) || FfaSkyUtil.isFfaPlayer(nexiaPlayer)) {
nexiaPlayer.refreshInventory();
return ItemStack.EMPTY;
}
@@ -1,7 +1,7 @@
package com.nexia.core.mixin.item;
import com.nexia.core.games.util.PlayerGameMode;
import com.nexia.core.utilities.item.ItemStackUtil;
import com.nexia.core.utilities.player.NexiaPlayer;
import com.nexia.minigames.games.duels.DuelGameMode;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionHand;
@@ -20,9 +20,11 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
public class SnowballItemMixin {
@Inject(method = "use", at = @At(value = "HEAD"), cancellable = true)
public void preventPlayers(Level level, Player player, InteractionHand interactionHand, CallbackInfoReturnable<InteractionResultHolder<ItemStack>> cir) {
if((com.nexia.core.utilities.player.PlayerDataManager.get(player).gameMode.equals(PlayerGameMode.LOBBY) && com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(player).gameMode.equals(DuelGameMode.LOBBY))) {
NexiaPlayer nexiaPlayer = new NexiaPlayer((ServerPlayer) player);
if((com.nexia.core.utilities.player.PlayerDataManager.get(nexiaPlayer).gameMode.equals(PlayerGameMode.LOBBY) && com.nexia.minigames.games.duels.util.player.PlayerDataManager.get(nexiaPlayer).gameMode.equals(DuelGameMode.LOBBY))) {
cir.setReturnValue(new InteractionResultHolder<>(InteractionResult.FAIL, player.getItemInHand(interactionHand)));
ItemStackUtil.sendInventoryRefreshPacket((ServerPlayer) player);
nexiaPlayer.refreshInventory();
}
}
}
Loaded 100 of 188 files, more files were not shown because too many files have changed in this diff. Show more