From 11e5a4e6f8cb3fe1edf215d5eb3f53926a963654 Mon Sep 17 00:00:00 2001 From: Franz Rolfsvaag Date: Sat, 30 May 2026 20:37:42 +0200 Subject: [PATCH] Initial sanitized import --- .env.example | 39 + .gitignore | 12 + Discord profile banner.png | Bin 0 -> 1683052 bytes README.md | 61 + Twitch.png | Bin 0 -> 87072 bytes codex-guidelines | 171 + package-lock.json | 1860 +++++++ package.json | 24 + plugins/auto-vc/cmds.json | 113 + plugins/auto-vc/index.js | 1456 +++++ plugins/auto-vc/plugin.json | 7 + plugins/auto-vc/stats.js | 53 + plugins/auto-vc/stats.json | 13 + plugins/auto-vc/views/auto-vc.ejs | 560 ++ plugins/echonomy-framework/cmds.json | 120 + plugins/echonomy-framework/index.js | 2362 ++++++++ plugins/echonomy-framework/plugin.json | 7 + plugins/echonomy-framework/stats.js | 68 + plugins/echonomy-framework/stats.json | 13 + plugins/echonomy-framework/test.txt | 1 + plugins/echonomy-framework/views/banking.ejs | 481 ++ plugins/echonomy-framework/views/echonomy.ejs | 768 +++ plugins/echonomy-games/cmds.json | 36 + plugins/echonomy-games/index.js | 1218 +++++ plugins/echonomy-games/plugin.json | 7 + plugins/echonomy-games/views/games.ejs | 608 +++ plugins/expression-interaction/cmds.json | 9 + plugins/expression-interaction/index.js | 931 ++++ plugins/expression-interaction/plugin.json | 7 + .../views/expression.ejs | 259 + plugins/moderation/index.js | 1139 ++++ plugins/moderation/plugin.json | 7 + plugins/moderation/views/moderation.ejs | 591 ++ plugins/moderation/views/status.ejs | 42 + plugins/moderation/views/tos-bans.ejs | 252 + plugins/quotes/cmds.json | 55 + plugins/quotes/index.js | 794 +++ plugins/quotes/plugin.json | 7 + plugins/quotes/stats.js | 119 + plugins/quotes/stats.json | 13 + plugins/quotes/views/quotes.ejs | 203 + plugins/sample-plugin/index.js | 17 + plugins/sample-plugin/plugin.json | 7 + run.js | 65 + safe-mode.js | 216 + security-audit-findings.json | 63 + security-audit-report.md | 286 + src/main.js | 96 + src/services/auth.js | 188 + src/services/command-router.js | 237 + src/services/commands.js | 164 + src/services/config.js | 65 + src/services/db.js | 264 + src/services/discord.js | 140 + src/services/logger.js | 143 + src/services/platforms.js | 187 + src/services/plugin-stats.js | 107 + src/services/plugins.js | 229 + src/services/rbac.js | 38 + src/services/settings.js | 138 + src/services/stats.js | 48 + src/services/top.js | 487 ++ src/services/twitch.js | 95 + src/services/update-manager.js | 455 ++ src/services/updater.js | 39 + src/services/users.js | 220 + src/services/youtube.js | 285 + src/web/public/app.js | 538 ++ src/web/public/icons/nav/admin.svg | 1 + src/web/public/icons/nav/commands.svg | 1 + src/web/public/icons/nav/home.svg | 1 + src/web/public/icons/nav/leaderboards.svg | 1 + src/web/public/icons/nav/logs.svg | 1 + src/web/public/icons/nav/moderation.svg | 1 + src/web/public/icons/nav/pages.svg | 1 + src/web/public/icons/nav/plugins.svg | 1 + src/web/public/icons/nav/privileges.svg | 1 + src/web/public/icons/nav/profile.svg | 1 + src/web/public/icons/nav/settings.svg | 1 + src/web/public/icons/nav/stats.svg | 1 + src/web/public/icons/nav/theming.svg | 1 + src/web/public/icons/nav/updates.svg | 1 + src/web/public/icons/nav/users.svg | 1 + src/web/public/styles.css | 1663 ++++++ src/web/server.js | 4771 +++++++++++++++++ src/web/views/admin-commands.ejs | 197 + src/web/views/admin-dashboard.ejs | 56 + src/web/views/admin-logs.ejs | 116 + src/web/views/admin-navigation.ejs | 427 ++ src/web/views/admin-pages.ejs | 170 + src/web/views/admin-plugins.ejs | 78 + src/web/views/admin-privileges.ejs | 105 + src/web/views/admin-settings.ejs | 106 + src/web/views/admin-theme.ejs | 122 + src/web/views/admin-updates.ejs | 63 + src/web/views/admin-users.ejs | 110 + src/web/views/commands.ejs | 176 + src/web/views/custom-page.ejs | 62 + src/web/views/error.ejs | 7 + src/web/views/home.ejs | 27 + src/web/views/leaderboards.ejs | 55 + src/web/views/missing-view.ejs | 12 + src/web/views/moderator.ejs | 91 + src/web/views/mods-list.ejs | 91 + src/web/views/partials/layout-bottom.ejs | 15 + src/web/views/partials/layout-top.ejs | 141 + src/web/views/plugin-expression.ejs | 163 + src/web/views/plugin-page.ejs | 6 + src/web/views/profile.ejs | 150 + src/web/views/setup.ejs | 20 + src/web/views/stats.ejs | 119 + src/web/views/wizard-discord.ejs | 85 + src/web/views/wizard-twitch.ejs | 80 + src/web/views/wizard-youtube.ejs | 91 + 114 files changed, 28693 insertions(+) create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 Discord profile banner.png create mode 100644 README.md create mode 100644 Twitch.png create mode 100644 codex-guidelines create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 plugins/auto-vc/cmds.json create mode 100644 plugins/auto-vc/index.js create mode 100644 plugins/auto-vc/plugin.json create mode 100644 plugins/auto-vc/stats.js create mode 100644 plugins/auto-vc/stats.json create mode 100644 plugins/auto-vc/views/auto-vc.ejs create mode 100644 plugins/echonomy-framework/cmds.json create mode 100644 plugins/echonomy-framework/index.js create mode 100644 plugins/echonomy-framework/plugin.json create mode 100644 plugins/echonomy-framework/stats.js create mode 100644 plugins/echonomy-framework/stats.json create mode 100644 plugins/echonomy-framework/test.txt create mode 100644 plugins/echonomy-framework/views/banking.ejs create mode 100644 plugins/echonomy-framework/views/echonomy.ejs create mode 100644 plugins/echonomy-games/cmds.json create mode 100644 plugins/echonomy-games/index.js create mode 100644 plugins/echonomy-games/plugin.json create mode 100644 plugins/echonomy-games/views/games.ejs create mode 100644 plugins/expression-interaction/cmds.json create mode 100644 plugins/expression-interaction/index.js create mode 100644 plugins/expression-interaction/plugin.json create mode 100644 plugins/expression-interaction/views/expression.ejs create mode 100644 plugins/moderation/index.js create mode 100644 plugins/moderation/plugin.json create mode 100644 plugins/moderation/views/moderation.ejs create mode 100644 plugins/moderation/views/status.ejs create mode 100644 plugins/moderation/views/tos-bans.ejs create mode 100644 plugins/quotes/cmds.json create mode 100644 plugins/quotes/index.js create mode 100644 plugins/quotes/plugin.json create mode 100644 plugins/quotes/stats.js create mode 100644 plugins/quotes/stats.json create mode 100644 plugins/quotes/views/quotes.ejs create mode 100644 plugins/sample-plugin/index.js create mode 100644 plugins/sample-plugin/plugin.json create mode 100644 run.js create mode 100644 safe-mode.js create mode 100644 security-audit-findings.json create mode 100644 security-audit-report.md create mode 100644 src/main.js create mode 100644 src/services/auth.js create mode 100644 src/services/command-router.js create mode 100644 src/services/commands.js create mode 100644 src/services/config.js create mode 100644 src/services/db.js create mode 100644 src/services/discord.js create mode 100644 src/services/logger.js create mode 100644 src/services/platforms.js create mode 100644 src/services/plugin-stats.js create mode 100644 src/services/plugins.js create mode 100644 src/services/rbac.js create mode 100644 src/services/settings.js create mode 100644 src/services/stats.js create mode 100644 src/services/top.js create mode 100644 src/services/twitch.js create mode 100644 src/services/update-manager.js create mode 100644 src/services/updater.js create mode 100644 src/services/users.js create mode 100644 src/services/youtube.js create mode 100644 src/web/public/app.js create mode 100644 src/web/public/icons/nav/admin.svg create mode 100644 src/web/public/icons/nav/commands.svg create mode 100644 src/web/public/icons/nav/home.svg create mode 100644 src/web/public/icons/nav/leaderboards.svg create mode 100644 src/web/public/icons/nav/logs.svg create mode 100644 src/web/public/icons/nav/moderation.svg create mode 100644 src/web/public/icons/nav/pages.svg create mode 100644 src/web/public/icons/nav/plugins.svg create mode 100644 src/web/public/icons/nav/privileges.svg create mode 100644 src/web/public/icons/nav/profile.svg create mode 100644 src/web/public/icons/nav/settings.svg create mode 100644 src/web/public/icons/nav/stats.svg create mode 100644 src/web/public/icons/nav/theming.svg create mode 100644 src/web/public/icons/nav/updates.svg create mode 100644 src/web/public/icons/nav/users.svg create mode 100644 src/web/public/styles.css create mode 100644 src/web/server.js create mode 100644 src/web/views/admin-commands.ejs create mode 100644 src/web/views/admin-dashboard.ejs create mode 100644 src/web/views/admin-logs.ejs create mode 100644 src/web/views/admin-navigation.ejs create mode 100644 src/web/views/admin-pages.ejs create mode 100644 src/web/views/admin-plugins.ejs create mode 100644 src/web/views/admin-privileges.ejs create mode 100644 src/web/views/admin-settings.ejs create mode 100644 src/web/views/admin-theme.ejs create mode 100644 src/web/views/admin-updates.ejs create mode 100644 src/web/views/admin-users.ejs create mode 100644 src/web/views/commands.ejs create mode 100644 src/web/views/custom-page.ejs create mode 100644 src/web/views/error.ejs create mode 100644 src/web/views/home.ejs create mode 100644 src/web/views/leaderboards.ejs create mode 100644 src/web/views/missing-view.ejs create mode 100644 src/web/views/moderator.ejs create mode 100644 src/web/views/mods-list.ejs create mode 100644 src/web/views/partials/layout-bottom.ejs create mode 100644 src/web/views/partials/layout-top.ejs create mode 100644 src/web/views/plugin-expression.ejs create mode 100644 src/web/views/plugin-page.ejs create mode 100644 src/web/views/profile.ejs create mode 100644 src/web/views/setup.ejs create mode 100644 src/web/views/stats.ejs create mode 100644 src/web/views/wizard-discord.ejs create mode 100644 src/web/views/wizard-twitch.ejs create mode 100644 src/web/views/wizard-youtube.ejs diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..ece332b --- /dev/null +++ b/.env.example @@ -0,0 +1,39 @@ +# Server +PORT=3000 +COMMAND_PREFIX=! + +# Feature toggles +PLATFORM_DISCORD_ENABLED=true +PLATFORM_TWITCH_ENABLED=true +PLATFORM_YOUTUBE_ENABLED=false +PLATFORM_KICK_ENABLED=false + +# Discord +DISCORD_CLIENT_ID= +DISCORD_CLIENT_SECRET= +DISCORD_BOT_TOKEN= +DISCORD_GUILD_ID= +DISCORD_ADMIN_ROLE_ID= +DISCORD_MOD_ROLE_ID= +DISCORD_REDIRECT_URI=http://localhost:3000/auth/discord/callback + +# Twitch +TWITCH_CLIENT_ID= +TWITCH_CLIENT_SECRET= +TWITCH_REDIRECT_URI=http://localhost:3000/auth/twitch/callback +TWITCH_BOT_USERNAME= +TWITCH_BOT_OAUTH= +TWITCH_CHANNELS= + +# YouTube +YOUTUBE_CLIENT_ID= +YOUTUBE_CLIENT_SECRET= +YOUTUBE_REDIRECT_URI=http://localhost:3000/auth/youtube/callback +YOUTUBE_BOT_REFRESH_TOKEN= +YOUTUBE_BOT_CHANNEL_ID= + +# Updates +AUTO_UPDATE_ENABLED=false +AUTO_UPDATE_INTERVAL_MINUTES=60 +GIT_REMOTE=origin +GIT_BRANCH=main diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2b6c109 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +node_modules/ +data/ +updates/ +.env +.env.* +!.env.example +.bot details.md +*.db +*.db-* +*.sqlite +*.sqlite-* +npm-debug.log diff --git a/Discord profile banner.png b/Discord profile banner.png new file mode 100644 index 0000000000000000000000000000000000000000..77c1e66db1f56d463bf2bda9291e0b454568391f GIT binary patch literal 1683052 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
  • +ACD;R{$k4Og~EkZgPL=+8JwBl|Fm!D)$eWlqz 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�h&C6KxLSo%)R#`2 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®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

    ({+n;O(XZ&~5wCD}KeB}H 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

    WQG_x4(y3EEcC5ChF6tXJ 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 z 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
      _o$JTg9Ge&)_98q7 zksm!>jJ4JMm>5%E$2y((NF7@u#0M6n(F^`Ysbm-0xYoyS1qvT0>bdEI+dXy<_hanr zR9txJdJN5+iTdcU+UTHYZ1v_1AKz^gy}V7xp$lv=PWGN~AH?p)M(l8%4|+>^qieaE ziNnH_VS88kOO6gi=d#-Q_OaTJc+6oT4h>v?^_BSE-}>X|sq=Q2+7~>RyzOml$DZ_- zq|xfV z78n^m1iZJSfg&BG8YnyLel0=-9Mid@Z1u;7CN|c#-6?SQ*P#S}UA}!OHaaTql&5KJ zZf~i=`FPd7ghzu{;bmuYK$Uw&gTbkZ$>?lXBa>h-pkx5SdI$|v95xNy^W;|?RG3b7 zCFN!VfB~uD_@^SP%C%d`saRErcXX8T^;h=GlukvK~5yi+yN*IWE z(&!q?4iKSY&<+jWX%dg9aNqqVWbg{*i6REpi}P}08cIzF$=}ofM+W#^hC-W!(fH+d zx>DJ|;jYT=Nw9)E!I2P=H@xE2B>@l-ts2yvy?#B;pFbD-QUqSymtY{o=9w@a9Ua8R z#(F$`{Ma8txp4hz%shW3CiRS8Jg0`KiL(Gb@R1T4l(OJsPz*E&)H(HQg0r%)7)zP} z@e!rIo<1vrs=;8nT$HJ*2W;_(k7@7?1r)l=YhZ(h#Djqjt8?ffEjq|M1V;g^yzZj~8X>*E&-EOg8R2(rFQK#0W&aLakOEK`R*JJo^ zeJlF^8uhi)?XkZ}30zxkKJ73e7GKgH-FCwt@ zlW`UQFfKw>cXIRCon`wx^ZB7orWv5&KE>C_tBRA|0Q)@C1lO?msmg%c$V#ByL}t10 zR!_q;{Ka8h1URsm^gFHpN|4>~RW^Ke;^HUTzw#F!R&h}UX`HzrjJ%4iocsvT_=wlP zy#>w|0roYS%+b>3e6Y(?!kmOQEOSb4x&iQM0sMxo@TEyvN?#+)?M!g!Jq8@ctyuB| zmS{rcHbtXNPddD&~xgwGoMq}v*ua9%j7&{Ov7g&D1#|cct(?mUmOj3aT=E$ z2~VVXkkL&>KJvm~nTBTDDT%e;VGWb?`VSD}(Npqa@Rjvh4a5o#IUV1GtSYzh8B}SF zoAiXsU!?}UTej)pCV%ZY8bL;dS8Sq+Ne17UhR;FaHR2>4HWTjPx26qqJ#?R-@2g^SVk(#7bx zc0T$pXv}e5y86smv}v-qr}jdRiB2~YgpdBfEX9o;mXnjH9zUobX%`q*1Rc#U$JUJp zvGvjIXnC>}o%QZ$8K`?4NLr{NtxY8lm2qBKBIi&dPwRm)B~S4-s?A1@OlsS~$X1cB z2JR{jT$aPn8gQHIO}Go3eoPmUWNx4|NgruT+sAsQEZ~&C&`uEXE=z?7Ff%!$t9(7~ zv?*y5O`1j?GG#nKedMBw(%A;4$*+IN_XpRAt6()hNF0C@W{3YD-n-}f@jbEEGcr9D z{agVg2<}Pcb#&*e5T70<#zZB-=BaR2WJ7=YGn@#Qy#RQT5xuK8zCV_83dRRAqOn!a z($lB0zPub=Jv}}-?30h0`}FvO!0mdt`=7;3_{Vrb7UKpiGq60)Gv%9WG+1O~@w2

      (`=pSYs~L_31SlWTu*+uai63)anWL4p(a^ znv>-mNTSVeEUfuNHS^7`zU~<2utrzA=N7&rmvVp-MBuWAa<|0t{7T%u^}wfex$~M0 zC+^DU-fly>j!!&4Ou0yY+2Br>F*fj%ANW&fIMj6 zL~osY|KXzv%#ve}UFN{1RgdLB;aLPWgAU^AwVC+QAN@fLOpmEfR5i+zH_0*RT=W2W zb4~EWyN}|7_in`M%4T$TaUXsyMh5FKP^(9GXLs~T=Wa_bmY3Fo)5Y9fo{c_f;s9HB zA0N5ybDQ?~U*+{Rw=A%VUe*AZlRIAU&`kY!AxQ95>DZv~;+G!Yj5uTgOeG`DN4GzX z#kG7JW19Q^IrT68@b)^_n)GY_TG#xQ?-DYXHs$`a$&UADzU?)^==5FABAENvUtQwbVl_ za@}|XV1Lx4JE1WbqJ==lbzNlI zb1erFFM%XCTb!iKBlpHt8qD{DTj&ow%<7p`xi?XF5^ef;2Y{NjU~ac5;UHq>r8K-+%O8so!* zemjEiJ0RnhZ{-Nj*?fHN>gD*tS6+#s$$@C?QG1@5h_->6%fVGE803)6Fpsljh;xBe ze$QD&cXwyI?~&)*jy~ZpKW)rcHw)I|Ddo>Yf8%vB$q6iBBcol_H##~PXU|Q?!u(=v zu5QNJi!;%~p$>4Ml+D6iz(o&(i;vFlZ|{dB#(dn_+woOJz5T2yk=IGwxpUuF0M)vC zk{122&I8lY@zfV@)Uc_-^+z6KD~xuYi@>e1r#fJBye^$H#-@ZiMK+Es2f}GN5nhk` z;0?qc!k^qkMbEHN4&5AU_Zto3kq?YOl*-r9SC2=x9>((WT1-uh#L)Oi@)|LdY*|mW zsJ*D4K9)S}=&23&O9sTh?p%}eK^W7*!|j=!{+7$^(*?C>+7RtiZA1+3>dL%vwPc~5l9?S58WNHt=?(#Soy1vY;Xd9{>r8J;h+31kKMcxuJY3U7{hV+f%PC{3mIcA zm>XEwO!0|-!TLd7^iU1yE_F>+;|2!4>*1uo50lf*R5l+pN0(5?#>K+D9v1FPJz4*V zw`>x$DJ>#}`rsiw8v$-dv_C44G}7ZIt820Ni(f?VpyZKFZS)6J3W2h+8@;1e=CIUP z8K0)IAx#Oeg_{&fQ|fNo34U}qroERo-YEu)!^ouUwtx3aZ~Pd>AmqCnssvTy_J$O% z8mI4gGy$0ri^J?FP#z-%ul&ICY8~)g1H=XZ4T!5@jt=%bSY29Nh+Q@Sc6bH#K%Hu@ z20o*4W^ytHYXjcVK2oFSV@>4gtB0h(*wNvY7@rJqf!gI)=fRE!g)M)O$wIQZ53N+Z z!YYRNnj6{Xu#6Q60Js(II2kiv^^OAR<&~r!RU(aE(R^@=lkMCuNm5^FB!?#f5&}}g zCth>gT;7O14e;myc2?Gn*LR7D9uKet4GwYBBtee{lHf=}vMd%@2H+?P-1#PhX$F@C zp2w*&EvA%>U1#sws*xh#@DFjrfVVa|9amp{G0t5)uev{omDLpu95`_UUj!o>_S9i5 zuPh12LCjpg8r@O|eB^?=%z#;6S#iT)hmeo;vKhq3r+EGGaEI5fS7J$>10S^FelsRO zZhWGfGPr#Rk;_or>}JAO1scv2QzX+RpUUS63T1Nx(x2-ez+&X4jA>-!toQ`sz~U#! z=`yZiknsX;L>$vHEAfilv{t7h50RiNnVW(IVO4vIEhx4UlHVUeV@&W^?LChDiyrfK{MX zyKMqZLpTXO6OC;*g>Hm4yD>#BK5K-t5iUo{YVrSD8ZdyP8NZ9rz>_hJcso8P69*~M zvZ#MO&6pEsb2$Ji&JtHSt2ozt1%plc;!p6T9-Ri?*|e=f6H~fMV!IrYfyPncYc>ud z68Wg&3w_TRf*cMFDN~L7l-3jHDhz#q%TbvIk0&UZ$mxwsdeX1_;d5NVnzsbVndL~g z;}fu$CbwbJe#VfLxaMT?8?2(E5s5$BW&SkT1(9JDWF91VK1~_eO+0Ns?Bg=GCTvX}0Gnb=WN|kA{*A_TVzMmF(023VEaZ@FaBSjas^krS$=qcmuu6c_ z-U_n#?JDsGg^u*6k(>6ba)FaW008>Xg7kLFP%T<##-jcCbJ6vME72{x#$t&kKfzT1 z8o+bi01F_Dc|4w@4u#4?Cn06ROEyd-n8b71@_0oP^t%sZ`^LR!le=SdAX@6ZN?TD| z(GJPrldp=vPhkLnX#H1g$okLxGf=_E7;*dJ5OgQIV%HfX3yF zMLCs^EU*YprWG$J2ToH>kRC_b&WI|`6H@u|_3BJlZA2k^%E55Q8qX{~ei}QQo6%dZ zM@MIu-?&9z_i(aJBO|VHVX-v34{`wasj2FsQJ>0#lZiaWQ>$yP(jR?&eX*gj`0C=4 zc$FWXtZU9P*sZaQChOI86_!I`ga^#&TsA#m&#|<Z3iz zMusfQD=O3PKDp_||C;91J_G~bg@c7HG9U|1a6>;=uK12*!SG?tZRCAtTUD<)5`Z!+ zEcJ8mzvru%#DPdqr&axW9PI)?x2@ot3cN-0^{>1ZU-Ig3P!s%eN0merrSh zUZ8;vXk+0j=iVw0^-Wo%hmd86$i+Xw!7ul#Ot&Qe@*nITdOd>0Y8Llc#AJ!;{hOb} z#?F?%xiB+69%KCj(J9%jc@b9g{`L;(Ax<85_^q1Zfx#Hke3rUjT3m^_#RXsA#5WQ? z`SezN`pK<0R$UBsb%dlXCI{>BecPOYZCaeevd-Z^VTQ=VR{ae7yhOC$YJ) z6?O4*V{I?~@^|mY#}6LHXni2ApBayOM~kmjxj(xU3u~LPugcq#+;Hd;`EgZK_vGb# zSj^j(UPw9jd`x`gdSLVmHjC6;zluKLRPqj|fsr|-=iYcP;3{rd<@weZ-;CkfaI~GY z`}PDMELHoWzS6;aRBw`;Mn|r;iW5a{Yx)Ir}S8Re{b|iU$AI-Ecx?CKgCcMA1MfJ+O!Hs zbs!XeSckh#3lCK;Ii%ZE@5%>0Kri~ubtzc)Z!lTWgmrhd#@N_koH;vX*}ShY)X>mS zjLnSu)G=#TC{gx+{$HV6F*ngCiYH5k7zqm$2UGb9e?Mu+KJCw;cozP7q^}%b z?AA_B^Q*1V&kzq!lyAu@joQu8u5_#Nb-Uc!iCcgEm(p))-xFh^QI z*?wRH@p>xT2KYv1`l-rY`Td{av~f1C+WWfwh6)=$Z9ly7+>g0a5J6C{z*gM?w2Pya#0C$1$Cc*stobQ|mHxu6xb#BuW zQ!zR`;)YB4d8>d7Sg5D5b*Tg6E6yzRQ(zQNwJ_|Cg8>}n5&^_}@gMpKlOT9vqDpkf z!UCiRD2jBN63-(%2}?;7EqGq{;Weo4Zgp}Una*zlsPY&f*)5xahzHEVP27oy@nX9K z|KwmlTJ@|vd>W5#-1f;FS~>cQ*Vx>}T43}KUF3~hv{0UkR{SVZ@?>D+ohibUCyzU2 z!=O9}6C7bm@0~u^lY~isgdu?5!4xcV;&2IZ@7P3KdgZ#6Ew6F$5opq~kk9K^P{=Ef z+Z$_9S4ZB->3`+fDdA^;q8>f^H6Y?OOga&i0)o50y&Y?dYgYJ+8YG=PBPA^5!T`5L z9i8uNQ$CFadF90iqCN2tf2u`&%84VZ33{L?>BnS;mi)^4B)+%-u-}fvN&fbhaBMRq z@jYV-uF8PBfewR54=Ib&1A~*D9X(Q5C|Sw~fmI&*cM5knD0npj+4Qds{B9B;%P^8< zxiIo5qEXH&7}M-7{Bc-;wb%GWQ%P7YidIP-?4)w!ziD*{a8v{YWk3U#KVBJZZR^wk zNrBrc`y)+AKfE6s|KhFK`0suhtAF-(to{0<*tzpGj#f9LT^*TJZ!Y>n2RMvh|J14E z!Ss}}An(XJb#A#q@hc5ilJVvccSoP7qixd!yK`zZy04v!fj3`?;qQMX`hWCh^!~vY zqVpRsMf-~vqh)GXv%4-Y_MhWhY3Eb9_-RJb zaFRdfZ^Tcy9!SUlnRI1LiN}B=nP2c$aRtipX*a6OaQq}pWs;mK9d3Lw&GM{&+J_DK zHbtdFkL#`A#%-8_mp`I$H(;s<*yablAUK`^M;hnPQ|NJ8aG}#=Tldp{>5-BqWx{5z zX*Ih^j{!$U;xVpg{B{?8lR-8W#51OuzM>yIsVYHsIM_bhC=KPB0zesVsx zf$-0>{304W&bZ`3WWimvIb7-29|J4t9xp87mcAm6W^KFRH!3HuaHKINDFwGFMK#J% z;*w5d$fWQGe`Oad%LsH;Uhoi4B4QG*Dj$$e2Li_%`We&g&osqd>}QOTCy5nA;xFC| zYM4`A0teO2AXOPkQvEpI9zrn+sUi)JQ$MADv>Uwg^EQ|DG2+dTkCUc6LmGd~j7G=x zbJ6>SYf*dcO4P1jh@LYO(dx;d*sOk+KKF#TNy(1KJk^*+eF|5HXxI{6QuRlgIIZ2d z9|!jzM=vM1#)h-blN6iE?=V|9a1~Pks}PU9C{IaW8T<7#2K$x8SW(BXQ zjM>AJu_X>u*>b@z@-SQi6Ke&ir@!Au#=B=G{PB^a|&*s#a`+CZjIUb z)*AQyudS?TuE9ru*#O{!rrj~9C$C%*-%34tuHbov<{(fidUD|eekLs}`1c4m*PF1& z3LlbBio`~2u!QH6`G;|TX*TK|-SO(Bb1|WIc+6q1leW11_-Xw1{$0)8dg9uJOL1mm z+BADkrg;rl1pMUJe;rSk=QRK5iivtpyzk z*jQVOQO1!h49Iv~Dp2NIIX++$rOnsxFdt@Ny;)xJhkWF65X%=Qv7s^{f871gsq@FP z^S;l0a&pXb$@!J__~6DZO$m+5&G1u*eU7_-6`eGqPEfV{Yj=wE|X^$G+N( z-;UKEi`abhx7!E7R1Q*^rmRIEb@6?P;BTxpEzBSX|6VA1AwY$ zqlOP#uWfI{r+06~o_NRo_~)mlVpQ~T-4myaS(C^QpTZ|uqJi%#bPINDY$V3iU-0(D z-3Jfj_N_ZHH~Ta?Rm=T?9jkZ77ryvheEa)fjThd0A%-qa_!=r2Cv}IO^@&q;Zd?U| zeD;p^$N0sWn0fAEOrAdzeS$wc+V^J3{+`+t`bz~k6g|8}vc9$%(-ULSt2xiT+mGT% zd0)MBHkP+GW@O69T|;Q=|2{I{PxNAUTo|i-nuTW{$`rkv=I;=XJEQ{{gR%y~8WE@dxdsKfMqIh>XSl!ad+K=$XJTk1UVZMx z=pHk+VZN)-_g+$Bg2D|A>IJ6v{A)b zpJg0JpI;q(q@QTayXil~JGUD7S+pdKc;1%Ec%@fbZxYZyNhgAXcyB~wBj?g>CmY)u zH*Cbw%0`^5ZN-Vo-@+Q27ymc>(O*t~qd$AYlP;SiHV;`CMH8(sh5xyj8NT!T-n^q;GAmxPvAV+owMuc0>v{US z1(W?g{D65m{()8ns(fBAv%J77-Z0xYeQZ*qYgw?*H^?M_3U5(gwzaq(fBlQ!#BjY9 z*RGw7Hm(U`ETFRRO%L+)x`lMcvDyOH@gW!R1jZx#0!kZNpkMlJj_U&#)})hDA9t%Q zvkBI#@^(r-SZwDi_2D577qrEe@ZPxhB)Yo$Vr+mhY|1ZhCxV~)XI$J04+PtCC^^=6 zsa3jN!YY^}>#}a~eCo=j=#qR%8LJ#>>%4s?!=|an2BM{geiU9l=)5I)N4M-LFZj)y zjYr}a>oLbF4~zfUY-OI%PYT}-AN=Of4ucit!5ZTC{`imL^7GGGKYQIz^})e$zF&m2 z`mGYcrMp-o=DvUG$1)7ROI@0`GS)4)^`CIECI6)NbxWe9wM+aZuB^lQhFo}sfNM220Ay@Tcg+K?0 zGDUdkm|3jHZ-uK=B0aV?7?7${*_7gwFtKB~wzeLtE2|a^DwBc7)Wn1a0UDG`fw!>x zcbE!-g=;!l7XN9GGz1hE3MY3STm69;21l+K8CR-c^s65^#6Siw_NsJlaC-D>KZbZS zK{y;wI5>b8W7xRhYv?p4Du7ggu+WkV8#z$UvSWmw!KCo1d3gZ1zqP9lU@g{W7h+o- z*OvIOv$bXZ>}-f9^NW&+V}GIPu(Xb)XPBx?*_dT+GZ&`8C0%g(WLINHU4aW_f8fR_7Mg zG1sNc`M8nffd;C91NXb}DjBpN>>fyNG)URq^M|x}eRkpLyl6O(B0lH*t9w#;Ec4`1 z>W{jB`+n`lgF)mhY2X!Ir<2?m-aJcXO(W#wlH-9Vjzmrsip;1pZex-1BWRYOTQ>C__Jj+IazY{=Ul|Q3-Oa<)l zDsBE|iVROv`7488kE2T*c>E~D1XhNyf?q#?;0DCyw?E@~Bsv;M@*x`4m1sYiTZ#ah zKxMy^dynJrcQ<11r@xJrfA;fO{a5eA)<<{afH>)cR`G}ylYBuw$y1Lo^2>vmB$Fv$$;I><%;+AGqi;n258sH|555?^-+U!H-@G1e z&!3GLSBJ(a1GQP_1HG>ADp%S<;lFzJJyb!c)a2#P7p7zB#z!9|ni>Zvvp~B#M0es5 zUy|nlI7PzXr0-@t!{Cg?Na^V8fE0&a^noXUq_u7$9@|ke!bTpd2UDU}8MFabEI%D*YT!U4xBH@;_$13$+uuHtp73b(`3 zeG1)V6jgEKv*xp*$s=4@7UI2-TFPebI$kl<1M#kpEENOq(6}(h2BY=-WVBzKiLRF~ zNB70E(LFvA?L+->sD6X12=-ZcrA~RpTXoKOffI_JC@V{@Uf6y-uV*gmFIe?(cn2nW7|k;XVPJU0R|hpb#Z%rPE3d=R_=;EA-J(dp@^kB%s*#t52_`3-=Q zj9FM#kb;a{xYY{Prg|IzTEzJc~NqhfU>hwaXR@i;6!)2Z<-OT1|6X z?)^{R`Bw-`o@~pwY_65U4aLAA>%g#xJ2O2IKls5PL{Gh2@*rtO6-btSorH{aDVsjG z9>%YK@m}i;JSIFH}R4OOP@rlni!D zzpMPrXQ@lx=D_%>CofDT{a(-!@AFN30+RR8U+HVsGPsI`wnL%(28;N}2E@$=cl{>7 zpyd6+)S2k->x~|@9Tus@5y^kfKb)CDj9K`(4udO|p3KerIv_r@-7A^zmmHs;7>e)w z@Eh^!_caeWJ8J#J#+(S%oVGLCI2o@pz=K=}XOT@ZOxZ+7hw8F6HWX7A&%{}^DP*Oy zolV8vTr^glqfefw&stwyjk;)6alDC9@9v8Y%|RbNnU{EW#8`jL8)dYAPDHarzsCfs zEjLm+x#B|M@R;u$?Cf*R(7xA#coT#2SJ(frp@Ix^#SaVqd>0TK{m~|RdPV<8UoD3F z`n`F@h5}c$oEe*p>ldGku9i-3u2BCjHw$`ZYfJEv=Wfy3rShK~wZ!zf>6n-ti-oyG zzbUe|z7`wHn=vvvo=F?J=L|W}clo3|hrK^)n~ChmF(F zEbgChojkj?`micDA zhhWQ1KjgdfMLT6+Q;(DA)VDZn-7q-N7niP`^JWzrVYK~6pWKUj|3HjPjY_VOVGhG8 z54T&%i}*`h;{Y%D>}_wWtsF;(%C@t)>%~~E#qo)3$~9^%PyXT;F{n0sS?#rFNP5`vS9H(T z4mrpr9*E9O={(l;+NCGZOMbh6{sMkc2&IKrye)Y5<|C=Y)QNl$7=1(i^6eDrV^#79 zy~xYH>hjLLIrZIrF+Mb$a%tIDowA_=O_KeCE#6ewlDtbNuyN(Z6v66&ErRl?|90u9 zcJ))N!O>4cgLy_>0I0Fdn#LT9(%)_U?Y>(@Qa%`Tu!KqQO2oP@`q}MIe&X~XCbT19a61mZfLrli1C#vm zh>LC?Y=ohwygnGD-Y{7n@rq!VlPCK>;wr!G$~3!W zEMMpb^Z;$`2UlMDF*``?q_8;dMdC7uaRVv%U=T{YI-$!y1*#@v436jow)b{oab-Ey zSm<6^_3L9O0q)J4njH66|M`Fii-j~WcLHK0jT*Ue;b5fm&yI)JJh~-_3=YJ1 zu%Gcmr1@o@Ww1_p=R#j4JSQxv6o(kKs5(#DMr(g>HFxgE%l zZcwe+rXyo;x`(pWV7PU9JbGWc9E0C|J%<0zH)G)Md_8J^>nqXowHI=+e@e=ASQA)v zHoW@nd~8a7&NEArKWQr7CoTBx%_L1c`+U2VY~tYg53_xJEZSB5#dxc_F; z3_)i?h)fAQMUSJoZY%Rye^ZE%Ww|p1K0eEbQwkeU5YQ+WjwVACU5g$^=>gvARBl}q6VA+)5f0FQ-izVhi+`)uK42k;>KevCCdbsmwuCemjO46M;d3v#89+8cQ)Ezxg0%Tyc)gN zFGTy;U>s|ld!+H5=22b%<^&bR;f(-aY0#p{=j?oRPK`y^^Oscj8mlp8a{ifN{wko* zWS?n*?+U_AbSaNPh(L~ITYih2*f9Pf-f57*f=7SZL#6>Q;fRsP(3C&Zrd`@4FpT|6VLaXe zzw-r;@X}^6m0PycGCB8z7950;062k(u7?jFYK)L43Yoy=Hvoo3f+nGwh;1ydGR!c% zHvrO^`~Z*r`lF5tkNoR6LE27#)vj3>bTH}ADY%G}e_NCDwZ$bbaCFr)7E$iIYygOs z&fdBYPO!+9Y*Bjf8be~l;Lit~EUX;G?(Viv-TDfkUQX%v_-fP@O~iTIm^xykqt?|G z0}AKBg?UCk(8gF;^9trJ%uP56=hOB2^PS)5N5NGSZWa%GN|m}(crMzBGb(#$Z%=F- z@5cxC??#v4&kqmAm6uB%;|vowddG+Lqq{;CdG7j17~` z^{v=Zo}4D{t!wVc{kKZr%EKa=Y|AwKR$ajOL(z);bx7uYnpSvOxI?yARDQ0~85pel z?SF`7uFq8%%$K2&g}5YB^KKTw znp=|Fdru#_tdk=naen%Y@6TpI(Yz@5GwodA~qlHCq`O_dHqSy1}MxNrD1$?M$Qve>1@3m|Dq@)2rN9p1_Qt2m$Tb^W2h1WJ zCw6JuU2HySzTYRBI9W}((UX>0$ro>z>`O1OamgDfto3kZP@baa1?slw6F)|JS@^HV z5VEE`Sq$9t8wLAudFFgvyKqIYoO185Jd=<03^Gmm_1D$c72U)A;yLR?EipDZ8pA`w z%5x{y*4JZpZXq@|H~oQFC`2F1QcCd`hv?-kDf3gf-Cv=oJ?7JcE|e^=S))RDk+fB^ z?Gw>F;wg)y%24t9zFOySZ6l7?^=xg$iFi$%uK;2VLwNYO=E2TRUV+3TzRZc%+tS6i z7Z$we|G}e&F}t-9Tasr4H7caY*}7|HeVmezh0go}h5GT6a8m z{aTEk8I#;}Mw|MQY`=C!gLNz-AL-|Fc$3_aGugcA4m0$UIV?Y&%&AJx6 zq+Y3K`WGHHBDp)C?_UlM)MDn+q-2sSiT0y=uom+-9(lu+x4vp)b!8%yqKz7XM&7{W zO$hoIHhAbq_Br)0GFVTfKV&_sPj#LjU2T=#U5^`|-f>m&{fjQe!w2MpK8Y*F{9#~~ zXO}CdB*!)Jg!MIVj3M{p6W2=dA>AG2Kd63b@*@2b8vsIw3|KpY6?$Qu417^A{V{F9 z8%8HbK77oAG3};J{fQSd^l)0dqqQsEdFOZDfP4PhOw@+!k|FTv5iQ7&b&+JSwXY`* zw|6`q>C{-&G$5<+%n!sVNP2`TgYG|kEO}RYNjIB8d<+|m8?}Lxy;hnp&#rluR;A?zTv7Gj|TZr>+f7OffITnN3B?H{J zu%&iJn02Cb?H9lDMtuD{-%9-lLHg%S5e^aa_KVkVX~&9Sy%+kchzIhn({#{jN6QEk4CbK52Xi57;HV-T*_+ z$VzmOe_k=AxB;~l^$m^$F~aVL^ciF&j3EQzBFHl0aw>0UT*5H65>5~q0Fa%8$RSv~ z0JZ(-g)ja1P=)8z3@7j*_&~&QoraN!58O|=wXq%Rs&p3N@-<5uwK`D=2+U*mcYABw zJG4vOBQIshV6j)7*Vyn-OplNFYx*8|2&p$3^am-NAf{7C$owG&4^p5|V|Z0C16wvI zUjIute*O?>D5We8FC^Pp+-~qHzi}#%`ar?^I}B?0zH&tZXB+HJoSToe6(&w_5qx~#K?C!RjW~0DD!K;x)sd?qD!F&x#iovK)v-Db@>qEE z)SDqSe-v2qv9ugh(-Z3C_>#Mn35|jBxZO}5l}sIB{leMkyl_dKjRs6df>VdeqG4VQ zlmn!yd>EHk#)D%K10O60ZYXJEQdUR{U$RckKP8}U+^`K(!fgzkcuGBInkIbwsvU6k zkF>JK99cI|n(fmq`+XBoJ}TEpBniS ziH&1i{-$tj)6tAvZpUX>#jA=g!&gZR_xYv)-{eZ8M2$TDCexIcjD1zU4iaCm3K$lA zq-^FV|Hz8u%l$PF^7_tw{D@IyV{q#!=+Zcy!W7tOM;VeEAOx{WevBY!s${)1$Ts zNP{-RRj{%vXEF8~XTkf7X)0qyo5N&2gQp5;1Xt(^>W2Jdge&C_^NArb9{J=ET@iY3S=oFW?f*}rn!Q(s;3-CBCZagK8 zCo3`z$4(fW{8ZzkM2TFNbhH@x(O~ zvAU``MyD6b5BHB_mq{(<>FCykxIK$o9%sOh^G{mrH*WG!@x@>6|M$YE#>t%i=Q;rv zz`6f_nKuBKs4GpM@*U9lnbWLp7vO2egYm-r(iRlQy>p7W!DYIn?}* z#R~XEQs#TrTn9f3>$|G(cRu;pa^EH1zH<4J@;r`}t=;(G&V5bx4`XsNUNhHq^#qA}cSue=c514D7Vxf5FpENp6SruGb-npAj<$2gxi z$TybP{H-xQ*2@AHcW!Sf-Hx9A{ywp}-3!TFy>cvmwet-CxGEefjA`Z+CMO(Ej@#nn z4{xbX+vD!NhyHHe^$QnNpOPt+ncBdRH;bZdFl;J6uEn6v>wP`4)m}V?bqiBIS(nr! zr>}Wa0388s_;22MsQF<}?5ct}CA_}FVW|!cXM0^|%z1dbfqU8+qkFLf2FP@(JbbK{ ztAzNl@2w}AYe~irMW63oR{2;iJ#Usu$AW z&!HaS%uFykngKrKe~M*o-EEqr*O0QKRq_)4GZ#sA3od%pM;k%7R@_r zeKEhX7XQOv{j0cl?_TtZhMM3;mF^o~doAAh(YK=Og61SF#7m}FXJ7%;Z%MNe*wd@J zlq^FW4V$*<^$JOi>K6g`98hJ12b2Zb?;fbfyfL$t?A+ zIuoA8`h|*$+~M{Wz@n9Jb#Tg^IvX4vikXWuQRno#((UaZ#oFe!*P0$Zn2UAEJbYl= z0zM-196=WP#4Bo$3O>lm30%g7Yyhx$@2kporR%ox%HBiaJ=oZagSE{#Slx7Zpd0jf zQI|GJyO2)g8XFGAuB>gu!}+C{ldhi?@9!_K#>cbsaeHw&o~&=i!sb?Niw7L&?2*p9 zJU9|xoH`e;jE+Xn-m%{b+ZJv6lCfRdmh3*>z+$miX)_y6(U zkx&1#hRB;mZ0`0B*2>j6;kR1u+|{YLz{Ct-? z*U703Ik8N8Pk-Ea|I=8O3_N%3LJaXiW;P4pG2;RC*K8!9v)FiV6A_z|6%GZvFQHE0 zm-6%`14f1A(7=lNzk9bIt30_e$_5{GLci>dI_mjoUwk?78%wJjyD>O07WHoRACe`v zMZwUQyY7Y8wY0aVxLl`V1BEB=>Q`SVx_NVFPw|Y4(G~uFg2n_JkLP0k#;thp;Rmtw z_^}W7qG!3UpS6~>8FGj&6$SM|7*_%LL$vB6wis`VvFKJ#|6hIah4}6t|DpQ{#!tvA zZ|rjY68#mMuIOy{L-M2RJ0&aVO2(3w2c@z8u<*;sqF!w)AI3V_*JOQqJrq44y5K!9 zyp@&L1AEm^)PVhk|1T7l6e?5Dr|(ym0dBvMT1NUa2Ep_DpP_&F!`Ad2@zFDc%Kv+ zn*j)u?_#6kg;&i(!l*$`e}C?V$q#P+yjaN}0w_}rLcC!?_Q3I!GAFDamkT&(QUt)F znLiImRW#El8-B2R%d0i)G;_khX+T(|^>Y%n(aAV>{;URdv;JrmJcJ+EJ3CvJqe%^# z+WS<$;FQdm4s}qljXQQ19zL}a^Q$p>R@c{DH`CLT%0r3=r3AmBQFtMNs${pgLrU8X zY(pLK>Ux$#jgbukV6uD~JPEHSU8bL+z-M?<25(XrStc2HOCG>yi1W^j({^3sCN1%J zEMMRxK7$;I2RISOhg4!u3K5=HC<;wBB_UY(b9!W}${Rf37Z0sP9i8$~a!(viM?k_P z+Coqj<{-id!dK$#KX@Ys zexT>?d?RZA{`aEmJ70>nYctU@QV)%gJiyM08Gq!Ld`H&Fhp?*bX{W*6g;HWa<2@f&K(2)@R`CEz!*;!AgQc=dbi7#wyk}CkI|Q3# z;K4kTEIpv&N%R#!3B*f#FnyW7aT^Xl|G4qWU-BV7>9EiLj>C3XRbKrHt}3&C;ED4~ zWBU0quVnCJ6*xbYA;YG$Hu5Bmf+LOca(pA10h(+~!a8sN$w&t~uSUKGbXi@_LSF+_ ziFe&6BPz>j07~0V0Tw)@bD8weL<-&vtJ0KonBVgkyTIEf46Dk3D4u2mocoPu<0~5B zs{0cD6hx?FDmZ+&p&5t%8?+km)I94g2%1bu^{g>}J};&ztSQR$JY$k>XNLpZypcQq ztH{%o$N+yD54j!{?~lF8#uxp4(K0m}Et*Vsf9d(CfBB{8f8lbp&rHS1@IV|-4#emW z-;DlmzaEXFQO;6s(as9E!XdlDpHY;%O7GIx?E>Jm zjiWsHy=au-?pLccwiKa%k`SI?1zve(yJvAqkHZqy^x>DmTcN^{8)go%X~e6He&rcI zwBV@PgZbi4{?v~LyR=o~aK55T<1^x%7k=SwzzHx9E5K95YmCBN<^F>Qn!FxlSv0mC zJu?-x;UU35*Fo%TZ2OuDPGIMPHaRMN$=3OUJ1zfKAhzXCer2qIdXHSpjFkP{>v>Yq*d;@^Rp<^%Hu>rt192~q_4;@@X!1W_cdOa_IewB&qfVgUg zMGHRo>bjv0kSPj?pCIUx%rU8M?dbHP!EZkOSo%o8YHu%`zu?70PNLs_I;Sz+NnDsY zALpjdL{F#2^vX}v7}w_ZcKrIo-^SwFl7@60G2GJ;uf6(G^p1=~u$Vu;l&4#Tubl-V z5t3u%+yGczSn$4XUr}v#)#&*jBq=Vy9To?5lz1> z!N*&7cXy*l^za72!s>FYYHq_^@V4eyd>oWH(A3~SbO{&y<|`9uuQuDr>jO#|A*V-!_4M zFW9L4R&xbz1>i%VE6XdA@xvHan+3-8t}=LW3|nEWEilieO;eA^tgi;v9FH;)<}%4t z^Jp*rOQt!EyulSN;th+3tD76~!Of3lulw5sm(QK^o#WkVBW)b;EA?r<>v4P2oOE;d zApZGZ{zW`~`ZxyrdZWLyB}OH;-~9R;@yhq#jP|KP<)t<#I$6*&J+w*mG&E|m!*>GJ znA3*ORfCsJT{w;E-|drhRHw_wCRQ!ZUOW@SlI^9Z^NLcq+VZyM^qk)14HERBPfjZx zn|-j0^%ZUtK+jMf7MOifT4m*Axb>LYRGaFCtAyAL=v5kDB_1!QBIYc}4wWoHoEnSQ6wdY@qa}#Hyy+t&z04A8!o1&dEt8DGaIyy%16dC=} zUh9nxz6&53p1FE4X0BX{Gv{Z#v8zO}va%VA>ud3JZYfq)H)3gF*|!v|t#4QtbI6cQ z*Ugo+*j4!M`c~|1?N~3fK-VIh8z0_%5Fb5!6nEwp5@|z^AAG$qAF1>~)IP@6!SX^F{4rNUd zUFUMB?V&sR`fIVJ@~x_zTp4!Z(oA#?bg7S!OoEO&mr2}+9ejZ1lw-3>xV$cfK$uAnxk9pt0nX#+Ynmr7TNBZYw|Vs4bCaTdfv*YwO0#)!Fnx zkl=Pe3Y81IylHT@w^2I*Kfy5R}DWe*Rs`fJ_FD>nj{R`@2upk${f$6}>D zu?Wq$K$yLu(uV9v=eq9`zGLx}D|`0T9yrBMJsupY{UQrWLq7YPn=yaqUOc^dOYLdN zG<%a+qUTL;AhYW8#J_BB2*9dNuKDSXL&dT&$XYX-Ruj|H@q@qhqZpeQGmYp%u4&`+ ze>XCtOz4i-sDd|~-scT6^cd>G{g~y3V)(~0?u~Le7~|0Ibg0a<5$ct(6v%u7i(y6v3ToNtUb6FI|~bvOUa(bP(oz=eX=KgqBie? z7s`V?K>;HgZvv=pTH7^75$(RZltK}#c%EEOAplUtVVtbET~0l~U=yaFDhZjTv{gUY zI0*erxOl+R_T9@b{Me0%FZ@f%(MYMVeF+^M2&WFXOOaP-@q>Xk08kWk)O#xY^72|d znV*l@rKMPwk|mSTkwJC-Bfb-h*HjR2-Z0?x%vN;(oP_69z%D6uUgx7i=?Z+`mc)jg z!aOaIi|lTIFhUBzjYMuYP%(nCWEr#Zu%PV0PYZ(-26d}(|IU5yCea~MMo#4T?E*D0 z8fs3sNS_SOib#AS+5$;jS6@wyzgzssK?ur-T|`%&X!6c8sFa>XZU)=z;xTabTNMfe zbqAXsngICKLj6%b$^nkd6ch?akxEdiUC$gOumDeI&4Rz;72Ym>2r$(dVqdpeMigw}U`wVu=bPWu}Y+`A7FB`;T;<4xrKB}CeN-0=NEl?GNCjw|0H6R2sZhZ=Eg>#DK!$RV8=D-7 zAGl(iHGc_SCG$oF_x@|r!=O0h{Y$E6P06PbWAvh_f_MH|AI@6!PxB_e>X{$KneR(|n*?B0CL zSH_}UbVEP1)!O7`hUdMY^c6+11*+O6=cPx%@+iaQ}}>~ee~lT(w~m9#Ra$v($aK;lYq zTBb_4=`cMq1kt`2#ftA9NHmfQ1_bzvUU3*sJ;{#@!<5p>pX9mxilgjVR^pW2v{dHQ zW&Sn5p682oE&)_QI# zx?j2+_19mBfv>$9J#uS=uOy|cq=m-xWmYzFkbg4`;I3FibOkIMSCXG$4O;P6aL`+2 zgu#oyg0oS80~64tuA-{M6`Cq9!TSxY^p)^azZbcXWfGFMDifx{;XfJESa9%AFX|Hfy|M&HnY!Z^Xs)dRcU0NBxZJ~xISQM51?f;MQvMVPb7F!Qg3r!jSUm~v-Z zGl1y#$5=%JC-0UuC-P}T7CSfrD7fv-9WRFV)CV;FN&Ug&w-UdOTO^(ByJ$c_o%LL3P#fJi*o#EW8#w_AJZmM)P54Hi=@UPg zLwjKj`b+uX8D%i*^?;wd%un`@VqNuxK49@@et9Y0|M(+KbN1rQ_;_5JnejC^v?afB zf?g0F-2N7a^6RbF;%9Ha9Upx3fq2^+HG%Ytp09oV3-Rjrz7lPNeS+QhoXvs`0V;1k zYTL}IRLmi(-XODMzfWFdq|7ne&NYP8Bn!?+^@&Z+rllkF~;C>ulw( zS-9a@h(z3T0W;-`w^}?8SJaN=W=rMl5sTlojVWW!w+u6y?c-2-u)->@bO&Se=sZEvmCSY%dsfE!M8IGMAy>F zX53Z$dpB;!+aKSG-w4rEION z`fV{5S^4-hJV)->4A@+j?o?e&OpL_fXulWI5#*kcn(#_oIlW)&j;%*aG5>&@9cnQ= z!_`Eo*Ij>%vks66>QQ}}=-_}aLcs-HlqPpO_ zG02^W^I>5S(iFI@0~w)RBTH**n|`xuNOC|sLU*z;$dzcEM4wmv^47_jnaQY+4vHUa zya|zzurUZ-57`q+K-k9_djV@>d>d_Dp16YrFe1J^xqCnSYPgz7F@kf#g z`fu+0M<2BMBhl)+YW4Wq555;yu3wibq(2U?wenUUeYX#!>yP?0gH%V}Na#T(1uc9Y zdlh4zU<0Q(FZ;W-aDbO1ob;*qSc{bAa)CbRh@L}9}>#cbIFMk^E z{KZe=SAVAGFMk$q{pBy>?VtQA-ulTe)>pES5iQlmSKdDfs&9dB6ukVsG4 zA6$9i$5tj%kkCwrFPeO94Y0Whz;3b>iYl4Y6fl;}0$!ivo~Rpl?#83p`B+)saD|PH z4SDgu&dC%t00`$pGYl-++ZhOO;=jkQ9Nkz6JR42=9u0(H7{RJr3P7>HI0 zbFiMYdZC+2w+Nh}9(T@FIuOWs0}euup3raDu;N9?4D&mA=>XZS@Y0AFy6-_)yZ z@WV^R!K-Q)wd%M#poJ4ODu+@R8uZAIM(ojGp8FXe-o2k6*8)oPF-h6nT#M1cA%EBh zmB3(|!k|Ez$jzyKu88sWI$Z$m5g_mFZnKS#L-(H#oB-Ovv~SX|8*?=?02zy=Sj3^vWA3sKnX1c zp9kY4v^V)i6t8dL@T*VAo8Z`CK2Ya$$TuFo^g@jPyFZBGfBy&3|98I?ec%5|biI5f zTKM`rufox>h_A@3={5_pOqD)xM#Z>Z1e?M71=b#7E4%U(^Lb&eGz{UDyO<_~nN+{f zV)rwaO|u)*NK;~58k`iz;b{y}aAQ;6)7U0c0?ilP##7RNwjB0m7;#Q&{Hpx|nr%b> z>X4bRFnDy^Qkd~kC#J;#GO}sEc%82U%P*$XS7}b5ujr~^F{Zs?PCX61pGi!M!+0>n z6>!&o1!tq2NKSks186TfgVcC3&LEBSr~GLOG^lxvGn19%f@uU4Q(zsgX!KXSggHLl<;SMd*Oh6c#Q;{EX-a_qOBv9C^ktM0zwr4jDcR7|kPXs`kCih~3BK4_ zo?@KFKPrN3J;aj-e+`4P=-%|pHm(dyoK10dC(LPZ6)scJWYd&a6;{RT$#h90ur`hK z>38`XIMT8y^<0%LZNf88qcNaNiOPJj@ifI_5KwSb#xzu>Pyo%veah=9r&GWAtl$i> zL^+lH6_|`u=_eu5pRUA_&Vs1W=J0ejV9;sl&RqEOX(NU68npXRuWB&fLBA-@rplwZ z_)+_8;F9fd@^-t$UFA{?d62(D%5MR+sq|?^7ua#ZS3pRWw_28Z>6Q3}PIeX^h5wh91Tjh5?ANMn0(n^)ODv z2B_Ju`f;Arli@YaE(4>gkD{&Olp}WbcH-`X`)dB;r@}cDGkJa{di(31$MDuGiw{)u z4u_hUprcQk40OAlfZV3oo{Yn1JcXCIlrQ6GPd1f~F_iC<6|MV>bJsK}lHf|zb>?ih~(y^{)=ejxw&iK+6=4FHL(%Eb>zw_iVsyfaN4aMZxn8x|4lc#fWq`+%euEt1x$XAUZa=8Gh zaiQWqx_>jCEYC)dCidNN6kmMprKnF$$H~@iY$`qTEAq^-FnS+8w5mRjVr^k1x>_|S zW3l)^yb}J!r8VQ`XTo4;2E=0@pB$+EF24KzsYS2xyz zk6QN+)RiAPS#u2WkByIR=jv9`F%9^ zG(NudsShJx3@&St0i7};Yxhv z``?VtsbSG6y#*bj85+qK<0~QhvniJGMfh{>;j|}-B7e0=P-6>vJ7F_iw z-c0jHwZ&H!2zkSYll;3}-66f>w^Ay7WOC3WSx4O7kOvndc8~a&@NNuA2fgvi7h|wj z^(k3F?~ulINtS|DHV$joypK0*oUw2nNgimc?X}Lltw1TbN4=G+qJ{@!Z02lCUbqlr z7tY7otCwSVY9h8($a|0HVsUlTWjufNQq+eA;^wEf<2Ubq91ou^#Dgb`s{i@8edkf! zefTIozHuk+-hCJ=(%DOTZrr{f?|%GAynp*%JeEG0-`I+E(E@JXuuPiuLT!0aN0$S9~u8o(=T&_?o4f^cHvUk4}um$jrFL!pgiwwZ^>oP>M@3!G$*K>dkU@I-=68PkVQg;h#87|fyC}2D!H09fjUK>(7(zcEzunl{lD?=#r|=%C4`w5) zm&J8K&d)82uC^E+mAsr44>>JQn^GjUrC4?5wM5z^wk);!)E)A$_Q_g_bxt1}07_$B zBRwYlzpOmo{>}R_GE|Qju3z@rqT7_<4tXPOcVBdO_*xu3M$gIq-HmlG@S`Wl7j!gv z=prBVKWlrB?>~xr59U<$;4RlheBUGNGSunJLm z^q2JH_gdFBH~ejc1A@dGFZ}C4TcPVzeOZr6$7a&D_>24;>}-opVN)Dynr)(mu}v=e z=Vkzd0LC^vEc$aWnaz?N$?Kss4r{#hThG7pa(wA)UlR`XA^PLCnfWKP(pNp+B!_q( zhMlH5X(`%s`6LGCL8`dp-{c*Cp z9Z%nWC*J$Bzl`^O^7DA_=WoT$4?c>=cOJ(2%BtUp*_Zy=-#@nc=Aa36{ob$Nizgay z4)+hl=;Ww%6}Q=-lSN$i8SQ$c$4nna~gdtv?U#eXR)(}$ zSpCV3jaSA|#*^{+r12V^WkE(fZTs%!>p#vfd_&8LclX#a;Y-)MYMg%UlpUbmL+{$4 zuo*1U->+-1`034i@o;wDAHzYo&rVOo^ysi(U25m_)Mvv9Y!h15y&_FP`-zfo{;kLZg=fKg@7LfjVVO9)5iW5XB#BH18x51fSB72PH%r zKrEQ@`z-?rIv=y4k@O9y?0g4-Myv*bvLlbGvaC4q<97Z8!*dBPO0Wpcjt2SbbL!kw zHU^zT>Hw!eSif9a)Jf1FA=!9@6Z~veFktg3iP8WBAUabB$lI^K)caJYY*1wR!2?ZM zXv}f+kBvrMO8lWZNnYDxu2$o>)&*WZ>kr+nxr1! zDPjjIB@Z$I1GRJDt<3eFP_#ItSchBjM(m{(WbgS5wqhN&Wo(Gc?Gh;`{6$+Dc&vQwG)EmK zv}qhsnT#`x39U?VlgQ5IxXLt#HL!oiG!V#~@*4gZ3T-|Qd&5*HN}5Jp=a0i|r#E?O z2f~jVh!R%8$}-9-n0VJkBR~eXp&Z_zmtZ|PNX$4_8f}AqL2c48zT`I`+$n{eWE{YuAL z&k|31{OZfpS-2m_1tG-?*8Ku7dR!$&Bfnu3Z_=9bE^hOV|0=Bm9c4TQE3g>DXM$(K z9ma1JW=l9vJ!u+gPQxrycuP=4lj~A$lTJXDHUk`1l{M>6f$}?yAKUqmGVhNrH2DVu zKpOM6Gc3t(mTZI%0Qmv37r3g3%1JI zIPtrk7X3=HCII|SP|<=R+7VR%Mmbin4lij+-p|5+##VgFn4SV#K~$(3`D2^j;>LmB z_+@bOU>q+4Pdv`zK!nOjJpG9t>lzluaO=TT;Vh1E-Oq{U1;ly054_Q;9!p+s5&RRb zG0eIqr}rK{FbE>fJ>63mFXY|(M|qFE@8K0bz6HQ|lL-;Y8@$I9r|ZX#w4Vi$NB`C7 zS=?|BIbg!d+<=2JyF0tqVLLnfo+E&hZ>nkF8XerxTNXAxgS`5YDRt5mO^DyfRvz?6 z+^Nfaqf0i6JBykdP*!-`t?-drJv924YD9Ob=;{ z_cgAU4)5sfj@ys#$DIfFe63B};a+^<#p^LNtvTApPOLt7;<0^KUym3rertY;;R*__ zwOE~B@x9{Q;m(01K3ci7yc&FCj12%xH~0Q)KEMfL7AGj2$2KeqBZr4AasSSfc>CS= z;)mb;zU$~Wzxs{lC;c%x)bF_pG%z1N{Rm}yEG{j@z~DgaZ11W(hh+ocw6dss+p?%D zt~(-x1-FMP*Ub5uxF`O6c=w(cR?iL(#b8g5=O)%6=D$c*TK@?V^Hty1&f0FD>v^j`T-cM|^VkX54@LAchAAeBU>GAl3Klx77&P}N>%3pMtf2^k2z*Et&uQtiJn*M+&beL$X z#$EXR6t}}+kjgG$wMBZNgSK+iB+EU6IGM#DRH~Ikj(oI}T9H}i* zZtgSZDl^NgaJRCdH&FLtUgyw244j#c5$XHM3+Lm^`SWq*#TVjh-~Dzx|H>;dJUQXb zeLj{xFftlr(^D}#HX0LC6EQhC857eJF*rON!z07dFI;S-^wjGyHaQ+=XJ+CeC-^U( zkLRDe8rSu_^3rv`(e&zz*W&ustMSqoUW+fPeO#NGjGE@lqx&s!S^Dpq;JOATqkZB` z)Xz?9j(r^Sx9&x39r%i`m6g?4+}eswNo(hz^o%NWS$;mM%Exc(-QCfnb`8(RBxi#o zLxNO2vb3=)JBBFKkA0)zS9mR_yKWs;*T((oy|Gnu`zCy$;0{ za!ZdEe5#~E1lby>Xp@G)(?@p4#`Dz|9_|Y4e+q;hd%Ea9kebX?fm>w{Nk7I#`5x(`h%Vr z?CX=Rlb#WL)h??(mjtX8iX*YHzUAx2_)Z1ua`dq*BxEyw;HoTd?y25bSoYczdImV0l<%N}aU-i>1cdKN9jbb(} z_f;nxH0WwqTUNVWS=rDyXkY!%kl(uTn2R^46vx=ZvTPmDgK7+No!2a zoQ*fW_4TL^jd%>gy3y>zC#H8~bjZ4oaSoeRT-U}%aF6sAe5DXo-&&2`s`|6s;a0gi z)dzO)78-n)`h};gbGG!F*v?-`rs=U^lnE zK!@szH|qGX{=E9#hw8g0CdXoUc+hQ$K7jRDe*pFiuxe?H{I>to>MxO4Ar zEUvEjH7f6n(oWStWC>4eoVz#^XJ)3PG;#s7nt(Yk8SuN3D!0-g9xEH=O(P^0dMh%V{YwUw#BuVMJEt z*8`#OYIuT=_jbg?`;Xi)cXcYQl;r-tIz2x0+&>`sNTH?!-_vB^$!!g8w|9K1VDj9w z2J*eJvbY?3>f{(K45?F-%E+>lsc7OY0u+KbUL>p@Cg zGR0s0dNGT#isz2wADen34%O@XHei$47Mxd)~4YM5u-h}1nhdD`nn5ycKKfNeBTB~M1edzZe6tRy zcl^{t##c{C(`*x%Q4Rb~Zx`uh6}@I#GGaLf1$P*ixtK?Z0AdOOBDIn`DV=(sP zv|aF&ScCFI-X$F4-D*2Bx<Ckz+>MuX5mpehXphcVY}@daz_$n6XduXt-^kK29sA zag&$Tg>2lFsoV*43R{8TcKI@(3dWGjvmwPaf)c`}gjMDD4{r2N*dZe-GK z8IXZPy8Z-tMCa3|sju@D54L$!4*Fo+=+R1U;TLW_IVekfr}2e8vLgz8=WwMXUtlqX zj#GEqC8Wup{Xm7!KXzA;@-!03X?hB932(xhrWw9+7l+%noSAdwuCh;WThTVFpvbXInq+AAu19yKPE5@Q#;VWX?v; z?4_~fx^ zK2liEz(Ab6d{N`y4j)Ki5s2)Jf!A=Y%Ww$ zjZCn)E`>1`_bB`0(wg7!Q9Z_TEPk=L&SFW2=0bjB7liyc^USx(pQwtC&l=tUfDbIh zGk;=HZ(Ebs#f5pXT)JFiDHbzF>jQqH*7%F8<#;a3pBo|AT!q6o2E;4%kETLpW08(xSQL^OrBg#O2F=17P*x6Y;nux;1ZN-eO%3+e8}+N`3=Ca~Jbp ze;o8;A*5H6|K3`U=T@Cu^{TlBCv2T5kjxA8ut>(_{x|RZE|yl;?= z4>f+aoav8+FHZln@Z&{Q+7I;j0ef*nUu8;s&Ozz#vYwcK^=jVr-EV&_#?MT+Fl{P> z^%k(q%{A74|7X97zxcDC#Q`&@25PU`O{2tOyrSv+E` zfw-a30r8zpm93bcpH=g2lU%TgpgFJTqmB8k0J(jtow=>#-?UIRF(>=aQYP^$H+qh} zVZ<9U%n|p*t9O3)Zme#t`{Tc7Cdd88Om`=T6LU;ZE!aR8i|7v?KaQXO`ma5Q?p2m! zgT3*sKln!ryG}(hf0C^DFq-rLPqlzgbi;^F2RMv!r0q81KSiJm zW#?uy^JS9d9PP>72Qj<48GFaAG0 zCDXI(>v3;!As#I*N-pJZlWI={jz#=pJN{S#NO#^{x+F>!GwhNmZE^z2Mrc=@Gx>C3OjD_{L` zyz-SV#TUN*X1x058}Z7Uug8n8e^Kt&m?pLs1dpTZs<%PKR z!gF!{xyvyzQ%iLB4+b zL9D2*2Dw7!_%Ig4^VQv*IFxSc86Sv!$@t>>MrL-KlY_*UT-TFSwky5pVT{4TFMS9+eeKoj(M=tLNazo@RL8sfUOTfq zvj(R+-;>^_Oz1Jjh>bNc@=;P>PcGT!iuU*3`#|(chpO$=)b4tvZ}#^j2fMq`*PCy^ z%`L9Ro(LQo9QF4!*ldR$_xEleE`is0xxS7A2=wP{V6ZmJ0cEdo0*4MmkID(3C=0Y^ zAE7qdCHTHR&$W2tkPRkuIr1hzr}K5|qKi$%?R_?&Xx|+%pnmQPU-@#(Tsog&s*uIm z1OL7}GLYo8yS(H7BsNwzR2fULxv>@8 zB}X`4fJOoPRU&l`_cSPbD8}t6p0AZZcWx%mjgLf+n9|DNP>rTT6-UPOS8eQaiCGZK zKz!e)Oz7|teon;m`cE!Uy5kk|EJ^Y+=&1&*IjKs9?rv?x>hfaTzjHUGn$L_8_c^ z+tUE{Xk$$sD~qx4LAm9B(xV2z!d`KzptgLkoRzHTLZ0{z0I#!A$9qy>bm`DZ-JAE$H)Vjy37rTZ`$BGx)Oe6B zI(bZ^nn*!|gXfShndQs=bd(ZspDN>nC`XbzWCx){vAb;kkx3HeEq**0A+$V{U@}cP zlr5YVaA-oIg4>`V(m&~dH_duTQ{l%HJQZ%|Sb{K2ek*uvTvgr%CV=+BK(z`lWpl#^ zi2VJ)X^8?ILx(zK)!Ff1zaPv0m;Wjr{vZFJvG~t_5eMqr+f*m{lCJozvb%T`i!9BP z#7Sq%;QaVd^(r>-a{Uos;@9A4>_7Zb%=~ZvK}`JT|1bvr7k@Xp{^Tps`r=HSNP!<| zV1Kl|nYBU%Rf#MVc&|>#iz4arphD+hune!Rm)( zHu$T&c}npxj!I`5dtBIt_xE5vYaIDG5TKFe7&RW+e(HUNK`U_$dSshE+!Op)P~kNSKz{CS$|)bY0AId!CX zV6f?@{U}`Z#6qGM2nj2S$&`r~yvnK(8zavMO;Ce{18gRUOvKeka}w;NsejCL47?aD zz(;e%I0^GugcuYRG|Je*Z%=VMD#NNE`6C!CT^#yg{^lz1B~xeX(DgYws?o2Gbd<>mCiYV78=%3&f+J~VM~|L?aZ8KV{boD2UP ztjV?r9~c8xJT&hrn!pd)q*EO8l03Ptk&DX6M3$54`1ued<9+54TxsgDzi=dOJ;qBp zI3SS^NDZTKCV$RT|M-cA4&uF_@AM)`_?S;|t;vDLtbFv9ITB-A7R@>34Yz^wef|o| zgFs5JGJreFS=p!gP#-`gB#~A1WW4XcFG2*pel1`5F@6TnV`(1fLx<9ih$qa5R1N!@ zn<}$ z)s6a;EzQ^bfl`gj55<2r8hE`PKJ;<2(PfF)Ro>jkjSNE;V&k_aQI>vxMNv!6c52^S{k2{hQGW=K2Ky)PI&5*|1u{BC#HkD!Ut*tp73+3lJO1o$A?wv zV-G|F^Hs{j1b<6q^2bb-2Y1)|)TqlKYO)%VuQHSi7qY@UaZ%-)K65s1-G2~I`EG*d zzMTB;65dL`Rk}9E+;s7$^I+P?zTiH(|0s4;CZvjbOL#sC+2;)z(vmuDxssfQ$=Fjv zzJ#*5;aEj8cVmH&9L2w&t?@@$z<5$%%GvcsHK@w6X! zz}%e$)I-f#+1#Mt;2N6a^_@6eSc!v2bFu$;-uCvrN3l0MA17-Yal(f=l@1x>qvxz& zwDk5wTfG)tV`r(Q;0kJO&(y!oQJ{M8HRysmS?M@0n3 zy3z5T+{mVQzW#VI<{r#OZJ-{*XU2pt7e>|avh6`OcwM)e>!ZAdhc!OFwQ_77EjSqt z05i7k=q+QXcy#OG(^wKe!NWo^GE?1Jl6`UB9MP@1WnGbQH#5c@ z^6;==&6t38$u&d(xgW_cz`Srm`U~PHlMHV3d-kz%3lDTUJxAu6G6`RhC&ojtiMj?K?Hsgf-`vY{qW2{R`vHZ9lQYi|8FD{$vOcgBNs9mUSAcNeA-zQzz)1x|} zo=69*=bX^VhBq?Tm)2r*d^Eayx>Od8*QAU1MoD)Mo4m@K^z_qk@;f?MQ-9eNLqk0=I$DpZ>7kf9 zGZbT!{V_6LkBMpC3Q~XC)vofY{#0Ia<)FdAiRQA(c71&}{_LOsWxW6EcQuce9%jt} z{>ym%QVBfvR(s$&CDt+FPcqj(mTxSAosw`Kd93q`zbZ01jbHF2F2x%mzr>b@I;5{y z-;Be#h1k<`;;XkLCvHI5TZ!S>m_V_`eP^rr6?N{KQoU&)m;!c(#s4Q#v=U-od3^Em z`8YQ|935gthYD@=s0Qf)uJG}}1@4MMIQSR^)S?7<^@S^Aa+XW=4| zMnMQayL+?h#6J4yqj>i>@5b*wct7Um=Ts@2e8?Rq(&DE);0FsIm3aBpm;CyZ?<=z+ z5`$<+;z2T<9}I#IL1L5Wal=yjuhgG0kBKi-lMH&q_+NHiIh;s(EP zu{%{C8SuSy41{PMl)J)FonS~B((QU@7gmb#ShRamq4MSFf6}Gh7zE)bPJS01F@+9HBMc0c8%u6O5M0VYn9BtV*l{+59-{3O zebC558vQ5DMefK~eg=$^Tn#+BBQ$8)`)5Cm+5h7I6%YQe|KC{q>HE>TES{c+*7+Z+BaYk4{l^Ns*h^xWO&D>7Z-~s7zH2dnkDO%P8pcniGq@fcX`iO8!qYU{DWCAYGRcy}pLMFIz&gC){(X~4 zGp^w-{>q(r@e78i&%jhVEW?l|>9Q&frqoY^gvu_aqA%+}ZW0Qo%K^?RbLW-rEMJ;N zJ~oNV|Bk3)3q4Fa*j?Y~agbGT+5npr+FO~bL{)xv z`qzY&WMG1BKu&A1GN=BMSHn2*sk5@d(Ujk*X-@xHTm?myq?D_YDhDg5p&RTM-RdKd zAHp-K0rJ5@wx~xxgy|6=e5-KV*q=BYR#4!h7>zbZdi^I15haWO?8-PiopvkJ-5Ic8mQ9-M&q}>jd1j93#0ZYGBu^x#?ICf< z4Gz%?YdPt}INF$F{Sa~zS7@*G8YU0sT2?!{lS#Xq(!OAbm|aix$Bd$V2_X3|TIP+iSmvxPOC>TyVu5#~lcaJ|N`($a+ zhp0GtKE!oBPJzIFJePGLCVK%ACJ;!T#Kf8onDN=&l}~*M;Xz<8+ON%f!W8iu1D@dXAVvt9Ejs> z1juKu?`v~4hl7VLEKt|FqPwrlr+a%0+a8_moyxBx2KsC9;!7{akmkwv?%$8ckLN5m z$0vuH8?wl@D-w$iQ)Zs$lM#NoiSXeF`Q5Hfuy{wgH2iI1}l3kD6krmCSCZ;E&zrQ!yx>{oEXg3yiH)Bcq zXJKnI9?Z_i!>3Q<=8ccz_SGZEjI8jaUS z2jW%n{JDX?xY*krldM&Umz|QacG1OYXs)taUSEr)_4QcU+KBb-EiYbjRV;@#_^2}N zoO(dE`Xul0*L6Z+WYVtu6i)KW+JwqOeG%^JlsgwO^E5CAQ4hEFyvE>-WXZzO@$b-FifiHR^4;>WWq8Z_6a4`F4`Cd3@gp~JJ8J73So8*y#+I~w>4uZl zm59|f<)^Sc`Y-Ng?~aqF%dzpnjo7<&FIrZXqiua7TDZ?WK z5|1|5qOZ40^3-A;asZM=`Od+<*cYEp&^gG33}r83Y3P#@KiGl&F9vj*qw#q~66GHbd=u0X^?kbJf?8Jx8 zp3WE@8+2bqzvhb5L)qOgi80`G?$D-o#1(FofV#`MDL8Qp4*4cbxH@T%S1&3ZJfwe8 znKGrv7+mAECb{2}TytBAsTR%T#bdNCgK)zvg+dPxa=^lTZm=H4K020qHO;NAFW<%j zAMvX^=pn`klpP&QzsB`Xshrea;g8bs(7$7-Q~JHM3-QUn{HyrcpZ;m=EX>Eu#Ar-Uj>N>|Q1lOQD@(q4)ZMGTPW=zN7p%E4mSj}t zj~NRea>a+U;VEwPoZswF{I7rcPVB6#nV!bsVCoRvCm1o(hp_!!0uFzRhv0#4wk#+gml(&oGi@6vC4kDw&poNTW?>qvYFqZemP|< zE6lIRNjXxfboO-08157#oIC$-KYZ-L*`9=i3VY%5`8Yc|ES(`l>Hv5p6UE664TWcS z&;p_d0i^MO-;3xfn*~MG$|(J;dZ7QV4HMTB=M6CUxskp>R@dpPIkAHhXfd*%j7cf7@1JM z-M#U~AN@hR{=IJm!(;Aw=S_$k@85_|-uaMOmKwskcf60(siLrs)XB1Qxx#?VfmrW!Z4UGlaIgkwQFD=Ef1|Ka>2Y<6MR+Ap{06Cz8 z5PqL3 z{2$`+fARm0r~kMAKK9b@(sFKJ}#TvZk6~Uy@<9r=&t|m|drXjitYlM@4r?@dq`MX{FNk8eU zFrX_NPcRm+NTeo`hlKe+l?)MF5Kalx1g=k z7)BnKg|rxKJszM)=4e-z!4hu#O>pVfev4sP zON}u3CBr9MngnR@p5Nh6TaevKd)MHboq5`a=`Hx29&}g=hxgCqQ@Js~J1saULy2>| zek#0)rNrYePw_X}K^5+&a_XlcjFqYUC9EmR{DHSsy?nN8hAj#3oTW}2gq!x@=*+yJvB9Co@r{RoCO@XqQQ&+goSzc+%%h(sKgoD( z9Cz9V3U_SWH&<;(kH<;a>R&2-;`CL#WwLS$f$<8n{0-SN=3+|T35Q>g(NyFN1BI&c;X#bBdgHQQ|9fiK8w=X^Lx&Q+CfPi6Nc!38f8 zEp%Zr9tpG?8xwzXz<%k zq7g=NI@@DE_^BeC>M#I`tsugyg+|vOWhGu|c!)!1@dnee#(M`UFAK}&pW5~DPP+L< z28;Khwwnim#_gItyufn z+p+Q2zlnp7ZbxU!k>o@aZ>|f+N*q3X5=+1OUF`h!MjSp})Leu42Q(bV?%HY`EDLUR zJJ#+$@tOvkX&j_QhIe=OqD{PM>+R9}T5>C0=_^K5W?CiRK!l0(L+Gj%(aRfD;}_3G z=ftq;o<2={mM&$nvb`ogcdOr{JxDJeOYi1_q39LQ(DVB{>UYFLc>Kv*AH=6`e;P~o z7vrMjpnbG1T!+!p+d-w6r)n5+D0&wj&AV==&P{pk%Ih7}iSkt@?kh51)(}+=@sGCF z+1G2mPFp2UHra5a|GVoojwsQdWWK@2h^jReu=kFpMIv8?h}0D2c2 zI^hN3&%N-R_hq2P^(p4FxX#J{Jw5X)>vq%DCa zk0cfJmW@s6jCI!DL>u|D{^Rd0$Z*XP>$vV)8r>7Zr01{!kQ4Z#Q4Oh7t^^;oJId`4hM5nmO4;mjYHw?AC)s~_n~X# zjr@2N2pqSybWKdUYyh^Xy{>=yN&NCp|5<$W*T0C)r@*yFop5^)b{x<=9vK z9H`v933+hbsy_ZG7NsASxn4~?^jf%Jd?lLTDbu0g@r$CkfB$i8aO;3zxq*cCz{VDD z4siurZUD%wevv*jxtKC%+lo$Z3W%*IWl{1Z-Z1V4PQo1rvvYAQeUcl=3brW@!R@Pm z+q!!Dbe=sM9aB?$u*q+wwQ_QSd@woSm(Zzz+;PYqeVp__aF&GR?$f90 zR5r|n;URSh7iMBoHeVxWP`9%sCNZ$1p@UQ{jotH331l^J@B%-1DLxnL$(+I>@>Hq> zO!?w=-YV$H2@U!vHdoi<*3DaS^VY3c-jJ|^Lx8XZOwh$3C||P`ufe6p$7zli)p%Zd z@p%ceXrfXS4m~isF{qKT1?_qqq5yC~H`4Am7!=V{t4T;zp@|}4ZBjV11nGAP4VR&~ zS>*TNR6^aS4wfr{_@EKHsiwQoRBZ;3(r!o--!hLhxH06DraAJ|>9i`B;fx?3Zw9D* zZQUKw!IcSuINVaFwY@2)Is@aVu*mk7uv{HI@x~whQM~;1H)2~8f|mCDLjR{9d=mFQ zz8xD2%dyVgYbZO|NCpgs>aHeyEu;6n+&m?8Q^9cAEAKFHtN(vk*<8eGfo(;UbKoq-<8gQ*4=u5Un4 zUM0>2bR8RMEUe3iFMNryji^Mg%9<*Wi_N_eB}4Y&rzG!DZ~hb=&=^!mvT z3Heh*Q+?S8&U7}RwcF_nGOXq_pEb>K&f*lA>!`RL$uAZQFzSc$B!wRIj>74SSSVJn z?zRE_PGuTYw~DXmZSboBAO~&-D_;Q_-gTQ{1^Co}qr!v1siy(uc=66MQHA0zK#lZC z6G4r%&4>)AfA!B*-|c2annnWfRJi~QfIT+mYeOfMK;ZEsZ{Vh$Nmukuy7kys@RhVC zsp2UC4V*G^XP6wgD_XE^k+{S=qSTc9w$bCn0b^Y+Be%6D^e_?7z>SRnCfGR%BMwZ0 zFXa0vcpP5x%MJ1@d$s67KAvzC-Hh8~2XuJ_<3~wt(otn&>Iw{hr*Mj|+$FxSL57G% zP8n805Q?=qq*>PC$8-%)~{^2i={u?KiDtrn#h2H=f=a*H1l1CKotB+G#*8Ni!tO9T{{(@M14e5wrT zt9as&Q@hIpP98jrzcpUvnhH*IGlBF%)&8#9%3h(hBoq>g@wtYGQZ~Tzw7&EyHf02a zKjOio@>X@~g?+V4zlA`W1ol`5y!I-bcu#`BNjPOQuwXr?U~HsEV-%;tudxy^8g~UnuBr`17dohGLpWrzyxTErN#SaHPn3zuX_s4Tw zCDGLyE1IWqRVs@!?HUhKYb^Y*S;CbiTm^T)eb+rbF*-ctIUfg!7S~o{_U=8^v*sjB zpjF3vES!oCk8jI3mxC@grJdtb$^4scJq4uUQQ7T=?eIl)yUIpIPiIW>u~6}aYiPLt z7rwy1;Tn{NeERn@#+ma}?&D|^tz)A@F~2bH1wgLK9jf<5bysuN zb$Mhg_QFm${m#6`*-w^N{n1~pX-YZf1DUNc*k3ol@)R{FQZG2Iu@(IGl{|>!DSaxx zq#<7#GKcl}5O4K8ziLCPYP$e(U;p;jcGUZ8F+M)(la%>^UfQRoNFB68)tB79Cbz3y zx=3g`RA#>gzyUPg06_N2H}seX9UsPo@V)rr_2AxYzB~Bv>4Fa+vRTCjlou?83X|R@MQI~G?KMS5G*Rkkki48EBUJRqx(%J40X^^Miolg@-LzI`__ zJ{&c!RXNg_6Ic#CYVIQ;&U|HZPKh3nR7(G?J)DcfWzAbzfRs$-BUrV++{`L^4;e-0 zpo0i&z~my3`(VKUcXE*HH62~5ANZ|$*!CCj|&z}o~TkDkQNM>pc|qq}kVsh;}}G^bX$bl2vs*;u|e8?DNtWqBn| z78asSah+;=yg|=L$-&ckqIz3hkEPppqZOSYo}o*3G*@Qrpm%i8-_&UL!aeOvb8wZv zT@MSe-pp3}Vc~yIvNnF4vdChpWcS!tJ9EX}*!Xz#jMh_ct1SMWq}sCU z2U#Fr)g`*p_wXwpHY5(v-O|||Dj#i*E7#o54A#X1WFhPG>HJ)*3zkJ#q)db`XHKjl~ybp8X6GqSYXGG?n{|v!9NYMElcTHr}FI=YJ11* zXlI6Ldh5szCN0E3Xby2)7jM%UA=wM z-CYfSxerqD@hNc(N{>JH(hJeA@qw>sr~Z|HM{h^;4-nR_K4eSzhWZ=6w@O0Ell<`9 zV=yrV9p`mHcqbdu{T7CD;#QX4(XnXlRKKk9@h1EIx89Dw`mg`nczW|z)RgbgKs^Qq zYtcnNq&@+1dG-%ZVoUmCS-N0lb3YcA)X&bZ#nRe#Z0)eAlOu~9V-~wSumSn^6?J;3 zcX;eL(e5!S1wk*FXEMZrNj7a2dAG6dOSj)}v79PzhXJd+H#XzxyYI&K<45in+#fXR z155g&R*&v8=c4`0*=QLZiI)BWUXxLssLl&mD~tR8KgRy^$<`!E@5DT{*7D}nvZ`*W zF4bLKt*1v1W*P%5fZe4Lr18UIjo) z?pIFD5b6&tDTL(R-Pwu9PaelzO#n98XaI9SjK8D|H3v_e$m2UJjoTQ^bX*={@a6V5 z-+tY%lhhLrxdCs!TA*QE=2uvLD^75m4lx{H;pFwl0T?T#q!gv)U}PX!cW(05c$?xX z&2{3h!pXyf3pTk&W+p5&z)^1xf*56oZcd&sNv(LCgj3)uxJ@k@V}GH^Frv))^iN~S z7=$uW3R2jF4;pII1|Lg1ozR$eXDkC%-(Y<0kA6Qcz4C%j1Mop)+VkUIeiHZZ+>hq& zp4)t9ORmc2MCR_sws1H7p=fM#Yd0SNa0*9Cj1OcSGU?WU&eJnC*N-JbU7DzM@j;Ky zZr{J<@>L;k%p`fP$UdhMo<5C+WXA1>vX`qywBHTyi56{(vdaaKk(BlZCxe(_L0jCM zn8@EM5T1!fKh+!XB3qh3$;vAnw&X#Z6*@C3d{1kcC9cRJE>hw++K2wnphh1l6U3Im zi(V-4VDzeu3C#z0WBXtHc|82T{>xbXSAP|q8t{iyCkA}qJ10PtmS5u%jVJ}a2!EjR zn@lDz&BXY3-i)*V$G;b6{xAP^O#Yw$D0=_k-ROAbLd5uhc%orOlNc}RRklA^gA56C zwZ!uW4^n1}t=?1T)I3+e!kg-+9f_bls#~nflWTZ~6;r^xC@A3?pDysG(CM|Ez427= z+VT&d?T3zZPyNnT;`Cqh2@kjkW6|@(TMmIO@tI%cTUJY)ZOX2BC!6C0@syPox=dTa z*K%c|)`#QpiJ}z~4%1 zv(DXSl@Bx}cMGmUWLR{m53q>={grQ?iQ!lOcHc4G)IsrPOy*4|UE>4J*sEKNf~Ldr zoM9V}sIslNHh(Klv1BTKJlU@HW^|>Y81uTA78NZV83Qf0=qn7>QhGalt8Va}?80kZ zMm|mI>J@P<`6IvjOyUJs{$~4TK9>QmVoQqS?Q;VDn(ow$lXb{t0apMqB}h8fNo~oF zgfBG?KlPE<9~i|l;bt+!$s6QOAk?Aif#jJL830A(NWttkS0#h>w~aHPq$!m>3V2EW7dW6@WJDY9T& z(pvtSSFZflah3PvBVGSlCqR%l;K7+N#!(8+{;2<=FP)b>ZFGaf?N-9hZ(KF3Jb>e` zymLBm1wgh{ZyCn_q^H2h?{w26w^c?-H*LaUT~c6b8pf_H<35ITnLPPb;0%)T>U8~E zF41#J&n%_h#bmu@*-*l7W@a5*^)W6iV4Ay27oITh(BdklC!%X^Cc3o{2+dJ^l1cOV zBQ~nhnF^b~LgTrQbOQ5`iZ9W(JUQQBPNI2QzI6jHWNZ6tex`|_T^6x!N2Rex><0my z#$-c+x=?4O)$)D1TkyHSQW!dH;fXLwSFur&ak8S9bxdPF9{|8>Z#rqA$$=ox-Ib5c z?s|VX^B*>{ed^CJx$qUBT`z)hg$sPpm3IgWR{2;Pffq|WupAEB+S-n7t%Z)@z0znQ z>SY@6+s$^Pjo3u-M|TTu^PswhMBgA6@%dv4B4;UC1bNovy zzN@?(i}Fwt^y23}Z#HJ&D;pUsw#^I5lLZD`oW5l3#X|-1vPnhx-1FQcB5z!{6f=|4 zT10Qef%34n+ivW}j^^fUcCeY{w+)1YHwn5#%Iws%akB>6X&%PMpM0uHboie5PR;o_ z_3LjrXkEZ**dzI&ojOxCeaLM>dDzl!oYG^V?>nJ+Kn#EJyFQXLjT7ry;|>lE`0jaS z@P{Nvh6c>v1MzT&w+|#!LaQlxmmfAEb9r?s@Q|Km1bWss)@3);CR{zFwVUd|h7v}g z)+xln3-WVS%e}`BeH8?(g0^$#=Pa9S?5lE?8(X!B3Q_+O4U$j79lUj=wr;Gf`;B;Y zD!~d)GEJU*8z5m@4+5$cEc05wwFN%K<-^i^V8`6%$=!#sv9T4B(CAitxA=0d?<9Wv z%6$B{@4OXnf8`amjref)ZXEsWgV_J{PV8@TFE@8`_oQ{>;?6M1u@~A($7fVCd3Oiy+u)c^59;4eE+`pW8A;QYd-utIy3@T z5jK^XZnjLe4V56AS1^$+!w4klv{^oUk~~RgBZcS+5-A6rfXg11`wM=?86E=29!qYH zB}*sUl9ladzJ)=nnKSZyXJ3ET6b~NwLs-DEZELX3m*pVOq&=9*Az<)?!}| zUUDK^y-oE#i68yor?I`>l%Af5m)^J$-E(7pL$IT#Pka#nX$#@oTiuKe>72=#u^2ly zrMgOYi&wOkNn8r(+f`Uu7RaI<%Je#0!9(Oc|+we2gv@w7%M+uk}b#WHKI>_jjPJIJ%j6c_%6<| z%EhqvcA_z|r+-lVI}Wa`Ylug?Dq~lAXCFBb9N&hhSJ|-lhz5oSo_{Ew{Zi`4!+LZ9 za>YSW9-ekXhw4p}vuEVP1q#D4t|T9sn2f>EvFO(Pl2iDw()*dR`{MPbt5@UP#q(;P z4%Oi(28ZC4Rc#Cn5BLB%*Sj%>b@d=wNmKHy_yz2JQ1&P_2jmcSUdhKzUI!XOhN5Rg zV>oTOwH_b+>7T}5|EqtiF=SmjXduSMhy0M4xd3&*-QM2w_`WM%Z|)q#n)Kq+)!kTL z-;LFcMr^BHsdgSPN6U#a$&bfL`}5GbYGQfg05k_Bcwmj}dyWZ{sv#eI6D~g>W}HAK zAR3IStHD}7G7?7WUYOwr9Rp+Iez0PrXwT_Bv&V-b?+JH@e_7#-|oGjy0 zXWp$yC&@`Ki5bo~?sj{;x~$1t!yRH`WFXG-S3(&i_UDhta42@g1sBzPt~e!8W`XlSAaZ3r9RFks`K z$;+T7Sq%D!K`j=8Ab9h$Fj-E^ctVGvp2eRHjzJAtO(8JnGE=NO8Q@IVgqI-H{((N@}H)phxBR z@}!Urf3*Rx%<%D^?#b~OoS%&$EoOUoGVD6&pFGq>GJwpCO-;oh_gqmY(U_Rwzxa(( zCjxn=XDi+3Ks3!8p|H;p9$NIncvv~MF{o7dn^B={t#ntGOkg@ni zd30&Dm2a6CiO}Y2Pe*Et{ueIB^zXhK=lzoC~roxxhRvL&}d26`9@LS?q zF%DxDs{RUFeI?yt@L6W$R*R{8Y&SJb#sXI{r;921u!bwP-PEw$yt+pOP`uVnH#ktk$JoP8x8UyUPAG4?u-Oj|srEvJ8hYlkp6w#K*cWZP#siY)S* zF!-^lDz-hgbk1hvO2zB}?FdmzBtR>J2o3l3QEzw(sHxA7SV@UqtH zvRX9ZZ{a~_ws7ICxSX2Ch4UlJTmYRT8EEwzDpboNzvK8ZSc*%*SE3D_{2ia z@mlyHAF_FH#MQ5C;q4ncnbjDF&AfJpAC>R zQ!_CjnRS&!!|ez6C1VFMG&1aU7CQ}wk3m`TRSl}ITm}W*T(iv9EgT7^+kUmRex;k&~~0v%X*%!{GMma?i?OO zLpI-lVe^4t=Q$EQfoBBSyAXfsHuELH}*ayJChs zKKb0IyeCD^Y+pybIy?~n)hpNIyI*@Xrsu{(4dm-;q@>iEIRa_mV) z;T!6iP4eO4kds<`{BX z3J0DCyxn~RvGia$Zhd?=CZ&5`dHHgjzj?u9G8^*b_gX;t4wlwqb9E(#_~`HXGZEcv zb~1K!Mt{Hhsd#;`sk(^GJmB&NM^(mgGxr49w>jQzdb6A>w%8bMO7D@cmxrx%Y{n}9;RU6_HZ&EBwPe`^0z0tq8x)FC5mt$XLNdr2Lc1IStQ=b0bR9y2w zV~ZF_H#<7viXKk1Yc6Eo6gDNRlUKyxz%%5b$QY&zy&wyWxM>~RdPry4!hh(GXw$X% zzK#2=_;4h-pwH4eS!T+f<+DRHOW)<3BFm)Fsf*v(Gk%S8vgp*gxd}D5>Z^PbFPgz* z^Kg1>d`j{-ObN*xT5N&p-Giw%4}QZk^)UzVr=mfU%z@UUZ62D%A5Nm_pxHA7pQm&2=7%p|`uc zRSx`B+w$RV^zhd0&*KOG%l|8W@fUv)1Ijn6J~kq~#dvPXI$b{-{sVg+mKYegsf9M4s{QT%gKb1%ek~K7Kor(%B z*&2hwxFCn0YJc~7SNvYhyT{PbyTOK_lRRLWs~LX2dvWFo~W5HX0S$bOwiotw#` zq)P>}ncwF-u1ZzWxiTV1l9$3xToTjI;Lk$^7*z)Adg7uXL0(>6i}mg8XsYoJ)G4^5 z36}bVju68rSZ3ykglQ?4uYCEfc%<0%07 z#7!Mebh(1UlepT9g04yyUrdQm9>12tK!B@yxScAn-D2hE0RfXSgk^twD^7eJ5OgKY z(4PicPGV%?e0<}3zZYFn_e1_piNrLow6j%mSyA1Pxzuo;&k z;shA=$tQ54Tl_`F0krE>)mL6N!}+)^RdgI92Rz9N*tK%zU$Vm><1}E2Q=R=}S#HWU z%86bMh#0fnG?H%VPI5$F0a2RL8(L8P;!dpp^FNFG|I5FN z)$ji-jvuZ>pWwPJ>uM7@Om@h~g41`Isf`CN&c~D{if8}PZ^Xhs`=glnr@s~bzw>r< zzI0wQA1PxI!M7W{Awt^4Y(LW4aq*LROot5Rx@=H7J=4Geu1Z7E z{~0c2J0HN%QQ#6$wlA^_Kc&G7F$^>V zgHbm86yZKhR)-v8)8Yv<5~d8(;>?C|g2T8aH#AU=K@?-;r7Y(ceai1TV8{=hqB|ES zozXQh;rWuo%qxHa1E+b%$D?z2$PfHXo69q%H0Fa`tm(j`p!s(i-{J*MX*1tR>Wvoh zOz9qnI91u=x8`K(i&)by{&>S*bHOgIQPiAUt2=Kbu!zb{Ip!gSkCcVJVh&6DEC0Uc zCu~f3(*&B7&K%TpXcfVR7Wvq4=Cmk>dwlv{3pNg@m=>j57KN4iFyD6l^p9m8$->UA z)*t(g{n**sY1zF-(`AFFo~Q#BeDF5gUM?t&4_?VHn0yo9$h3KG>TZjj@qwXOU)zYL`21vPN$a>3 zuQ&O4pHIUop3S-DP9x?-4i*?Tnt)C?2@W?zV zyjJ<#;|{N?Zt*o5!pZFxUbCw0d>BS3XcJDOvJPf5tlPUPx%M0%8};dM+N8mWf9h?y z>x^CAU`a`FS#BHns=Ng8J5~6r48gD6on3FztgLOuIvYd!n;0H3KY_`I7b;&gdreZ} z%yYHXs@A|Q8MFJ$8?DgVuW_5Q2qX51C-d@f0)p_%=k)5w7{4OH4J>{hdZCvW=I3KT z{SrPKNi~GQtGe#1z3Cf0UCbS{E)yQstZ+lsFddc+!R0zh?Ll1yL)o3Zx#{QiDTe^n zw^6y>Y(Vv??7ia{8yt+cU%wfbc@v<~h$oMi;@++M@#ya3*k0KX%)aD8ZEjtoI-nb< zws7&_hWz1`->9(_e?xem$JvpvbJI{WO^i_tSVrg|qm&Z~-gV_I^FT<4~L`u(s9 zM&R0lS9#>pht#=a@v}SrX5M6ffAsAg#KnQ`_`Nq@i1QcETfa#7ef7<=hH$GtcAc4x zu7%m?K7U^Bg?KhHskL;!+N)PMr4Q79=zqA#Cu?&)Qa#+;7vs{=vl>6n4)m*>fjF=5 zdBvX-AIH13hF8C7s=iIFFa5Ag^&1}=@xA0Q7<`q_xYo~dF_s61)pE?!iPsM-wcIJ) zC%N4?B*8m)Uf{$Rj}^cI=eotEMs7zZds`>5{X}|dV>fzKC!XsZ z?MqLbh$ivH9~kZLR{Bn?K3cJE+}>`+=0?+RiqyVy$o=ZFOOKz#;*-ZAraFu+IA-6B@lP`7yT#R})WQtVA`p3HGki+@aOA>5_8;n0c;#BaJLE~xHs~ViC>T!U z2ed1S{jB|+!}#kTydQD!EUsTTE8Q_6xfoR47;n{P;Fj56T#1dvC7-IFy1bx%*%f=z z)6crNUQc7SV2>LbPoxX^-a>PA$9pf_*v)lqeH_qKnOy$^zx|L+%-q}Eivj7YjuGAt zP+e5VBlX?SKffPKE1T9My^@__(X=Cd$;Z}*q=zq_nTaXo;o<#*$IG#}x)~?p4Z4Rm zJ(6x0Y2M`J0BS?y3#Y<4sgCYtZomUB%bxg&tkAaZ?=-)xbs%y2V@?1=Jw|KJf=q(P zatc3rOG0^%cj@EusC@b#bvphH%ABmv>Hu5D4 zp)t3y8~YkZ8k?KGuYOl;nh)>uA;5&@jUyVPhDX$I2XgG?Aw4|BFh=n91p1n*sgPM7 z*d8i=PqMqOu$s^Z$<(^hD?Rbf*S`{TXXgCIh9CYP?#IJhcVqeSJpS`P|Nq4O4?l`Yjjhv@ zTzSUTMCzwo>Z9W8_Rd}`Kjl!lEFZVtEDr$o4r6a$br4S8AmQyn=1X;-IoAVf$HE8t zDgn^SWqI~w(RAfV*)JKjWVB_jLKpJq05Dz+rxpAb= z-~~vIQQI7SA0V{T$J zhBP=sJcZQ3(f3&KVmF2uLL{a)OB>AG~T=u;X` zwY&J}0Ryk_dvc--4E(){<7Jc{HF}R4oYMpYnhf`kh{1m1uZaj7BgzA3`J+BqjO!)8 zb+P=mGBrI-))!L+8ihnu&ChE>OxCedQMM$s-fEz}CsHPPLuM9i<+=&!lCuF3PR5(`~u%M%_(B#p?=nVYZ1mw)S9aiqNa zssnd`9&rz0e@~2#i=UbVH1-;blf0?UJTT(K3wh}%JRHz0--AOBuZL-nIYHi_UGy?p zJYixe`neK_??1Ty$f7!530WudHGQO-`oJnHZ3mO@@SFrI5pWYvlz!a7z+DFb#kq|v!tJe&O`(j1U!gNf2<4dvd-~Lw2{da#a z#{Svw$G{)H9dUUkqMykZC$xBNjg13MNW{O&1Jh^?Q>^3V`WLr7F5^$le<56Pw@l3| zTg#A3+f-1CUh&%?1Hjf;U)3RLOv2*L^T8m%WaiM=5{1_?Qf@(pVN5bt?kRW0H37W9EYB?DQ?MYQ~d6el#@Xl z`yGc**02S_1*hLWet?w=>5g>(zYK1>Uuk5qY30FRVx3<6O0y4`(q0u`#>-MI%eLb9aRhO4&)5)9p3qabU7j1zl(S&oOTYdu2quA5(WLt7j$L7SLKw9MkyHDaM-uQ{P zoTz$+*H632Y_|L)&r7875~qN1W|E_gGt<2wAfZ~vS1Wpq)Rd*a1xr39$++%H>*nwS zr*=K>lV0p%5}>&X^C``RwZe-Y-lAk7u0^poHccx?gsk}MnB@ZO#}+y?zwjoz@;XZS zJl3$d79IZfit1$kS)Ov<$CZg(m&n6fK8WVGk3^FnJ{J9B%lw5+B>a>?sUor^Tl(=F zT4_GbU*?tdRNIN>%JgY+`jn@vs53l&RE1M^oZx2z-XE5fyo1K|mi59;^#P8JYc_7! zz}Rc-`5K1 z#Ij5Ce}!`)nsLU@pKu&;aD=ANdWbl`rY>04Ol)5Jn`x4TeU-Z>-ZW%)G{@UGXvWHZ zBkpcKjaw^^VsUFN)->0D+SrH(n@e$b^-*jc?9%02M{1ESBnT&ZlloAWcx9Tk^zT%C z&dP-wwl{2opuqeO81(F!zj(Ym>e98`KhVkn{8~oH}>~pY4xeUO~#3Q z+S>J3c}M^>WOq{C#5d;UguE8j8pP`;cqd-r@_mN<2sZSQG2?eQJuX@%I1R06*0Fu# zLouxN-}vZ|@$QR8)-=c@d~6=E_7Oeq6Y`1>KUk4*d%JB!nc2c&CpP}}Rr3?SnZmWY zTa6uWw2Tb!fmGJg)GuX$%^qCV$Np2fO_jf~w-=pkvWZTLW?eWwUOr;0F`E;vnXk)h zTXvo*Zs`&5)5oB1XLrZE9hHt89PIZ) zqLiOff91iN(K4Gmo4Gqeu=ANW68nb+l%8##F8xySuX;O-#V`FJC8OX`bdT}zMIn(Y zh7PL%^uFL&YxzEVEbA`m0l#T2KbBMf#^-hr4p?}65M2_4{*LY#)p~ojw=-TmI~P;0 zU61amJPphVV#@2BnTR+$A8|%&ytC(`^Yt%9|JUD(>2G~4`Yv6H1I>|Q2)3%Iv7_Z!#769;symOA2!RkbF%e+1D?9#OyZTo#3|cei7{>o4TdsMxNmX4UJVKa_{{9SGpL?pYs@P zK`c|p31aQ#N3=hauHjmq!HeS2)L3*O`;48E&0#+JtRidB8z%Os9%xh+N7-7*p;Pa_tL^_j1KgwiyX(JrB&%rl`G!*6gDy-Uh!rEOyJusJOp4| zJUKb^4HSG>R%DAKYJe0OvkUpbZ!a-KVo|b6^L~;1@YA9ump?X}EX`_j<~jrDVE7I_ zjNckx-Dk-JLIG1hw+S(%$pe1IedZf=li3fEDT0SZ;ORJy%aW#oF$6G&?1SLmEGZ)t>0|e)im?N+g}U*>cj`5&PmPM+0^=S6JO#kEOMhc)GFX zH~yGg9H{Sg5BJ3z?|nJ0y!e9JUH?7Ib0lAqi@t%Lxc>4BF@JtGj@5q{GZ-%{(=?Cj zM}H@dx54~fBEeu7ACYGs`tdLrCJss`H6Aa<5C7wTj3>A5#_Y^YOifLoJz{&ODIMOh zygXgojweqyDx<72AN6?7lL%^!3X`a2&AP*eBMn%>e?X)OmTC+CXAB6rAOiLrpRr(+z4e3h_p zxRXJ%{aFfbr%$=a!<~+FU`|x?6ywS2YHX;(3snq@@iSUbjA$a>sRo*ewTN}$vln2+7B8RdQyK#VVEU?Mn3ZDZU zRzC&S5wwqZ13$pS9ryWEj*VOE9uLL`T67$1LIDaFk_Zx~OqNwls~q(_+e#a4L6~+h zkil($$AE_VNSXFZn2*%nd+OZJ4yAArVgc-JtjGT9QVKMD5Y89B{`I)|&Kq&8BA62L zRdTME=~ElisW$nDw4c6GPthQPSa|I>w3yOBam1S)$RTnG9ikDLAua{K@V!*CDoalU z@VkShEHU8#4~X&!u;fZI;Md`>O!&+L%E@}Wy#$M5Hg4!JegVNs{~$ebnXr(FJ|I7$ zD8S5Tq|jX_gbpTtr)AiMmmoB^*zXEvz)$-fmfsI0l){33Uwr!c=dtpyeh^FF|4AG@ zUX4D@EL1}y2a$>2VJ zKV8-&pe{m87nUX#y{5m=V-ic4)^R*Aw1?~V1&b*zS-n8R*8KLL=A~R4hcg}?ro52| zJZTlCgbN*prwwZwVW+8dIW-KAa|0$(R#*mj(?(py2|QtHP@)Xu81NBCLdFEK%zAi=#V_RVKZ;Mfws8*Z<#a~_fvo8D@ z1-MA4Ww&sr-|023l}45fn?}OQp0=hJm^MFrIBma-$J>G_c{!yap^wgy(dg26bt0W} ztT9V7RG$p+rgke|=5h11;m!COZu6@QbAWK+t$s2rYaTl-{VAi*$0x2Y)ThRSU-Cj3 zt@g&?6q_v|L!K7C(%u$2(twqRcEKvrsIUc*%Wo^!@%~SjQnI!(E~B_Mgk_yirrbDCH{0W;n=M>mF&?a4=NN4;roUJ4MU*{wRT*<_@ zSrVv=OiRDEG8EemtN;1{GW(@|C|fv^7Hs7|WoMp>#-_zP{g=F1U*eKChOOlgE;Jg> z@Uo@MgiT%~yl|k~ko~GBF(s{KOMd)xkF1kCjG?YqkrlzU<7m+$kgS7#h+`wB)`$F- zqmozuHn`vejsSk(+wiBYWtMbVFB?IM`bnd?%)9c^K$TZ zYlX)qyB5>Y)hiZj-le#Xu`$0%$?3zSQRu)0T89h&iBo;B@XN3m@bEUR<{R+W2A54> z&0mvO%BML6*9+unKeaihOPTX)jo{6HuOBkI+aH(`^g{qb%tgvvA8S4onxN-^jpRzZ ze(5i4)?=A>GXG<3;d|f<{Z^S+=12S7%e?PReeN>nq}qOy>w@;nJ>yy+YK{s%)*$t* z0rRWa+@Oaxs-5&fJG8j}LRTppLRmX-nz4Nj1e_1UP)<1^@3$1hKOPGBEdkbGGR$q+ zG$1ea;(li}h;)M1VDh%^`(?e=*Asi<-*U4N_qNyLgC`H;r+06~-+uC8{O!jd#E)b@ zdw4%~HNR(}&6S+Y&-W#dD~+vqyuKVwt~D^J)Q39fJcZ47cye@%%L#9_g?Pt2a(ZYu zuAVuo_2Zc87qPXuo|i26VL)jM3>!^(LKz;>)~b-mrcGJ@LStQr@BrXYZ9FwR>JdTYR&Mgh|3PqBj!oE|3MiTVNGO|f3Z!awCdX$pt_CnqMO`=~Pp_l{$}TWdVNu8fcj zX-y~C;~kYhJQ8u~T*UaO%2M*ke8l-{(Q);~=zjC6Vg;S0OSW4omu6Gj5QB_6dkzxvT)q$^H?PODnW@^?ao7GP#yQB!>ki! z4;9{H-=;T4CdZ;@awNvYs~6t;YMg!j)#y7j6T4cWA9eR@oR$ss6E!^_PvulIH(MZR zR29N$M*9B5)MSiuRS;t+^om%!vXvF($N%Y1<8eqhJJn9hcb~*B-v4EcaX43cbYy%i z247rI-%`8mOBU5$yHA#4b9pWLM~7o%VMb{^(OBDx-K||;3B}$6chm3h9(Yro@rDNj z1LIm_Nz|GfyIOJyPHla#$w#`6RX?r6)FJnzYx{xksJ5e9n?$)h)ar?oNPiJ?D z)|>&Ba%)$2))g-T3zZ;d}9||N3|0m9M=LS6@0S{eC6hdh3O_ zd}%)V`@3RiXDb%hR^s03QhffTyal+k5zB{rvDJAT+g-=8deDgFz3o`qU5~qqk78-< zsXwT`sd>Vo2p*Z1J{lg3ef5cpSFgpZZ+^-9ZRiA8;5|(7WA5y1oVhT^%M@liV|k7- zk_)T{2k9Wmjt?SJSM(C~W-h0G*K9O2PdfBI@7~gC{QUcW5sUZk#*}CnlRn~_p9fD? z;`ZI8xc_8LGWIlX-CK^^k5=Q}(po%P*^K4QhUXd$=6lk&Tqnu*N0AxEOzUg4n-5gj zroZYS??)pe@{`9`SE~OrUnAXZ?RHik9!9C1c@S>hUu6+f@L7LhslR!VxZ7cDB{-D^ z{FW`XIKNKg7ddjd;6Yaw{J2VI6w|*FIz_x(I@0p?hOgTZm?l8IF*7cqQ>Rk5*MLAl zNwoC5I~6VsYXPTmG-2w}B;S*Fg{y_AJc*5>?(h>UUO6EO<&S03!JSy(1)c`rmC4z; zY2V}TyZk&*lv57MJU%uO*REcS_rCgeyz#~>F+9*?MaBn5csiM{MCQQ5BoR8v*IeI- zhd=&#tbXuuoUCp{=Rwo2yo}6F`;`_yky1X&@@6WOyNczJ;i`0VdeFwjY8>j`wq#GkZckXtG& zz9QiAi=vVS7#rY_pLK%g+%w6^5_G+@7T&vEYTez5gv+jsqVdCyf+^!DPnL%WmIw1o z4v4EUD*f0d&l2hjhDc!Dz`qV*IWQU{6olZ`wqy6-|5dF2hrfw~Pwz*c2Dv`9EvN2~ zbYOVJoBP+EjcXu(^TjyxPkt*V|NHMn|3ChwKjiytL`qe>r?2>qMA4Ws1vlgo$=(d2 zZZ12GDQpXycDs}d?-+PWT@}Y)nxy|ULp6d0*wOm2zrrLQ_-dDQlp-$54P{p13WCi0 z1?!0*UfNav&sj_h7C6-zp>VoNs`30eJz;8I!Uqpk07!cMvDDIRu372t% zf88y<7EH@1A7~Rc(_5zIFaGD!+KjoxxTA$gHyd1|qtV5;KzJgLLNEdu6?Cev<<@w| zV6%X#>oKOiGN6`Uz_ZU_40Kvw!qm(Dl3YwhRpTp+!|kTMO#4q|GEKo>(wts&=4pH} z@;Z*6FXF}hwZauq^AI#_3E&oQnxvy;+GQ1Er_Env)2?7!JcBsJyAFhlwJEsT+XZ!4 z@uKI`Br?DOeGZ55%f*(m+~*TfF^SLVN~x`zSWc~>N>YZZ#Z(;WoEk+4Z&sziSm&fS zqcRiT8az$LSJMjwb&yM}$0q))2hvZvC#uBBK4%JIWAsl(WIJRzEmL3t%<)L+fZ>%* z=!`HOSjS;1F2y_tYfr{0NW5ji#FwOm!<2Txl>9X&^;7D_jBCT;N~8@00(U6Su5jIkCs4i7T3j%zLA+W#AH5>SGHv^fk?Ym^6^v2L!|? zTm7BREwn8Q9jm{Js|PpDaI$4m>L|89`uP1 z4AGAy7pi|3l^6ex#PaoZlk7Wy_g&S2c`o9 zAE`gzgz&-~8da7bG+@O)w}f~|yEnCtVLiwl-+5>T9Gx+{Fk{-Lrp7GGJX~N+$W>E3 zEJD=ay~|X9`g_w~)yejk(NC&S(LkL1`+{5F*-|?V#H8jXe(0e5fZ2lB&6jb!wa(SI zi(8voM*3+y!Q?w_3nFA!Hv608>{*tqe;Nq3Ld`@;j?Ebkv1jjw&<-MD(~LNxYv{Q=xNw?B^$-~UN0 zeSFJTlAt#|AD~|ur-~7;cN#ms*`U9FFh(^$%r_;dgX9L9f;7BcuU*+ZRGmFuNOqi7@;EPH>lAc=WCu9G`-%+7tKXJTfA_;v`n>!d zNAMW=?hu9zQ7nGI8mJKEo+{GTD-`Eq{(~YDA}ws1=*h&E;2<% ziSUhio7iF5LKo1^^^!D{k{3dO3zTQ^a2lEm7j-)(o+z%%g05vP9L6_j!RrceeP@=O^JVVGcj~_ zKKiG}yx*34TIA7~B^kh&AHoSmBNHPrIytVf90uf^*tC*Jg^j)jihYw6DEi)Jhp2d2}U#kQCM!5G;|G{^qNh@ zMd{6P>2=0#uBS2o0mk4^KsAJwhJ2$F>U_b`f@7R#e1o=Qjd9&Wef~gwSGRcV+f6#u z&(OCgv9-Ao4YeIILK=LVyR;Cme*3++@%!J6x$k^4#@~G}&i(Fp;+^mPZoK&3TQNF6 z8G|Dlhs4i?b8~U#+)PX_@UT_9ZEVH8jitD~z8LqmR%7{aC$>8dVk`Dz^q#H{u`slYbcB{k`9e_rCp&c>8PbM*q;DcyOXIO7hJ-=0I|Ro)cf5 ziO%B=`hdCWwxj-xpQk7PS-UHNf7%QkrFQ09POx=oXjpovD?a+sPvf&+e&{{x>6z(R z+1QPreRL~+b^Br5SzL<;PdDSq#*Xb%rETo)Yfd9smTqRRlD_E8eYNv*Z*uC-<2i-# z4~(qaiH5>Rh@hXf)dYQ2ZQ{2aO*8;X6ApBKz8S(8!FY-wF^@H3!zCWv%nnZY;xr4Z zOiff=&F2{WmRsDUA6wUau0v)vjNbs@PpZ;9F(OCS!~)OBa=!MjT&6RXyo8$0FP8@d;~H@0 z&&hv` z=uD7m_KF5~W8w0v(a$898en^PeddL$nh5vC9#7nz*J7D@^+Rnj2!QLNe|V*UVRG`D z499DMEomOXWRo89!i$m)BEsMhk9j4O2@mOHrt>58Oca^S`Uw()g$osL>*Pbmf>z4& zQ!~>qnw*?vx~+ia2ZP5}{z8{sgo(D&qJquz-SyQt+1*h5LG-AcBR-<>@UbRnQv76- zY;@0@iLXf645=d=C`>olR%hMTfY77GAFsfUsa@ei>zflIj!6wq`*;G%LIAHoP``%{ z)On%D(>VF-{jFA#{-eq%SJck~FxK(3k6iK04-;zrm7H>#Zq^ijD6!jLqYc1K9@AR#)v{!=y-FS#P}?}%3T2*>Z|kQY#p6H! zVH`YJ)_}bmdkl86JaFN|ZG?};2V?T-r?U(?oPS4c~f2Cjl#JNpm+m%)=yBd2*FXiF2p{x>i zIT-x3M=@?Q25$1;dZ3n{cv~fvFdov#-=f{|DjJmdZ9#mRr{!WPTmQ8T!@7L@#aa<5 z9)nx`m=bo2leZe;6^7>Yr)zn(KW(Mk3m@}K*2n}_`9d6C;7dN6>M!wCXJwg+lU%p+ z1hBOA^T7X-PQNrR`%6CH6fkV10aNf{+^z!hMw2Fe zzWzrOgcgkkDi&j8c=VG6@nci*TQ-E)L4JTMJgUZChy%9%m2~j9{tn32<^WcHlR*0+ zFHWcy0J*h(#W6fMWldW9WkhTJkwnH14 zfCop#L%tf9II`~%mM!IFA3KdR4Am&%%BxntBp*ip7C*4$skrSeuI9a+ocyf$;0eH` z-Qb}&8wfLBDG&Y=uRw~mPQlwMADcSGrtq3{Xf`>l4cM&nIEbZw;+Zm2rr%oBy1;a} zEl3xfaVpFLUw)5YC8||EC7Au9fqAd+GavNHDqygHny6efLlyISHh!sNKDf~$Pc->t zm*80cFo$eE=><)mcTxvX%JstyXb^hlr(PtgZ2L<-Z^{=x20xbi_@r>fr!WxU;0*w- z5yEwSD67N4ViJpJUbVcUcM1;Y2N;w@BM!Kz5nWu;^j9qU!*Yg z*CW-V^#*|JO5Ldw6%tPr2F9CM;w3etF1+2#H>jrjhvVh*m*dL(LX7hE2W^1tQ6Ir^ z8lJn8C;A6tZgj$7zP)zu@sqg!_+j+%aZ2U!=CpVMFWelWh3i@Qpz9&0XW^@eWDUB1 zAij#HJiy_qfJ45MC3!g7(^^7hqni%**vxA9j&pzLk;=F~9L3!Eh3FHWDefp%)IRMX zTDfw7jekyC9ucQ9*r4D$6x7}I7j4K7JfW@WC0tv<0~M~hSlir=!M=XkykeDl&_~>x zl(#ki0*~5qQEj@u*T_w1L9yXKDY{072EEbGy3iZ$N@c^%9}gxB9&!jj_$<=^sg8B+ zgsn159u8^sY0h-z4u)44EnTMi>HtOot`V}}(E1zXs z_>mC|8$8sNv@~iF<%O5tT*TjO#_rvRadiK2JlopzLA~QuK4!ZXV}0H6&dr-KGcI{K zK8%fx?fCGgAID$)`ya%^UwoXW=8H_y{?K`>_2}ltM(plv$58)(zX6b3gWr-H6QqzF ze9)Y{lgzu$l0Uh;mE-kj^U(5(T%|6PEYSXh(Kq6Q*I2}Zhq_{cVJ(a72o4;;_>BSd zz`kTwW#EDX|B+l>bkrJ7Q@>KeAtxl5qdnKokTxp z{Aa|^x#8jHQya2-(FaX^gTf_j#+iTQ!zZ#nCx78hgUKvbz@t!neJ=5>IbS9;HJL z)fqc_2V?f!oax(FThYhaFQM0OJX(oIKmRP&?mvp2-tIW*?2ZHRy?*uMQJ)*h%{qJMCDJo=`k^ZI(DsdnC6U5k<7p%~=4 zqCM$2S?|LLGuIfwhwfp?l*rp}9QdAgh(Fxgv5fM74f*9`uiV+*IVxBl8Sm|hzTbtrZ=JUQ6hj}F92<@?&2xCW>+#dI*y3S>cyOS0 zu`FtQq-}Y7fDgFuiO;+(#Rq8VJLpC9A3TG{%p>3t*B=q)^u6aBbOy;8I>Hb12$N5) z=Sc8D{fF^^H!65gIWsU6>TR*UvM%+-Lk?=8Kj3KO(pKo2I)9P2Zk6MCD)541T%}*| zeS_Rk7PjvEkS*hv->6hNx`=}dV-pi`u0M zzOm@O{z6>-`nz%Uy?5jMo3F>!ue=$ree1n=_qV?pZ@%~Cc=e6f(F*Z5shj{y) zlI<>yea9L*wVdu9?~fzZ<*4&n?42A)R(h20-FWw#UyHd5XXE8pUyk>_`PG=3naVL( zRve7o_3hY|p60<3SEw0C_cUWBv!T>u_J!1Nk*1b{`&52>}afRs_nR) z#NU+l+=_Xi=ulkkQ_LkOr}i(?NWY@(iGvuK>auTp{_KJp4E@jdKr&5^+BNe!zY1b5 z=Lf%x5fltk(&UnlAl75J%C6x=CevOv>BfybGByb(@mSTzSqk0um%N?+h^mNY^M6Yd zn`I4-ya~Vwf|=2gnBe2QJW*0kHlcmjpOg?fpQleb(FCaqQR6Te@G%KCbHyGvni(Ls z3O|!qPCxjgAcFDaMeshsz|&C0GJywfd~#euG#z6jV=+B89^6TPu(*BY5)S@#&uQLQ;u0wpN(3b~G`3 z^5DK{W@6i=frG^f6J9z!4@Y>Vt|drrRLV@j$<1k6LvfU8`mrt z@uWmJIU%9d#EQ2;1S9%R)bagY2=UdE(X6;^no1M+2vnIS4!&gDE1onwqV1Um7w&oV zNfpwe51arfoNcWzZ6rBzK4L09B8;DW82JlOmR1dQl@UKtj)xj(PcF{J!aw@WxbWZn zZcKdb^=M4=M?=ba{3|cT#eecUG5W{fjE*<2MQ|S^IMJlma-sud$Tfq4Xv{jg7#ll; zu^88_1_++|O`Fr@B^o%w`cFI=_GWHzlNY5-et?l7t`$!l2=GIrJjPcH{)El^W_7`x zcxCJsUh6;e<1bdG^1^8aE{$T`*s{d6;$>=GzZhTqt@bTt7?)(jWmHp>zL*~%T0m^Iiby8OhtiP;++ozXlaisuPtMLske;Xl3w{&0wO^= zi!jUwAIA8q%_t)w3|`k+rnt3jTd*>uwDeg?sM!dnzs4(2U~3<3C0Bp>wOi=O_N1*; zhr(dcAX7jaS0b@5VQXyRTWOwZ3K=dU>6gvS&$%YS<9U|fG8N|UG$fMo)JgafsCfz2 zbVp)UN7EzIlH;_$#{cSKl*PfC_t#9u8@KS7Kk|A$gRS{+u%)b4Q4*dOFN-<#l}w7T z&t=Ht#Yl}${$;s}1JE$C81R;`bw#z-K?WcJPs@PQhP56DUe$h<#JFhElP*Pr2N=y|Tvy`BOSr<= z;fH+aQ($CBv%kPqQ*rPs+&&n>$*AUD@P;PoInPOB+D(JzEjzpMOp9alp&H|pfsZaK z|FQ`AoL>PJ6@vAK8T3d;UKRaKepC`dS{=={LJZ(v~I!rq`&6ZxXg2X54RRFJz8V2adCWf;M1Ag zns=|Qti;ljC-LC^!}#=*PvWOPc|U&o{tx5lKYc&$X@0(cp!R16qes;DDgRi13}`Vw zK0g)bUc4BueC12=)!+V3{PsWmUVQI=_mAUy|II&&@BZN*#H;VT84Frp^=dA@xw9pL zRleGfkJ`ZpFVIz;x*14ivp(`Fjs-KW9Q%Re1Dm}9nAI9<%%_G~i%G`{1-$Wn;mXem z^UkAZaed)Jj17;dv`$~|@ae<*QZ4z$IHzS{q#uf?ZD4i(Am^V?VrO^H8|Ki-+r?bT zp_LFkbnUejv%cK;R({{_}Y{v)lgdRT|ECs6RiOXgkVrOoqx|Fo28L%}ixt6Z2K z^%>-ihc$j^v(t!Y`+L#bFPVDuICg&dd5j9~`o#-zZedPsdlH*lyK(pSz4+nx|2lRa zFS)Li0PN?IH{Di%BC(mI%6!Qsa5!a>YF7=D91I4ouxWm2w$I@|K zT8A&k(kFLf@T4>PI(vK)*4KCWPrPJF%KA=qcqTdG_Rt5!XUUM# z%u(9a@N$JaH}OFmpmTbT_t{C8T(PHt#E)l44Twebwfw2VLAWw9S49Dmt>BDpL(LFWg4MUOSn;N>LW5#C2V)op$?;0N(?6t1k z+vAG3lGVeVz35Z=z}S$#3ovwMCi;hmqI*DX*igIZ4_(2AV2%-x_AL6< zpGG*%F5T~qYv@OIl;-soGNZh%8;yaf6-QZ!TY!J|i(kd!y(ck0F&-oRJu#zxy|JO<%UHqAv}? zvOmIR3qfgr`O!DXyy{{3O5t|8-wc55w7>qHv!t2t#nR`|%Y2;v?wtp*vAL5vtv!5|EzkwNMAj_4DwTu0T1afml^ZoctaT>tu8arVov z#{8QvM&E@q5?0llk6TlR4)hoUiDY|hGRCi6iTSr)i*xV28CTwWJ8pdEYw`NGz7}8q zz2A)A`-guN-~RS@;`)ti!8Pa&%_;f#HE+RTpr})LU;ff-@elsVKaOvI=UXwVzVB}s ziC$(-`9>fzDxIl*vA^F4z6r{=L>SMhH+4}Zy%CNaQeXByd2`4BHln@gXdi}<{^eTn z-u?mMe-@wLx)ZnVJ@iMUfBNBP@s~gRdE9yQBzB~ud=rM+wXwJ7jsAM*gFcrV`nafW z8W>V&6KI0}Svn@$q67eJb7?Q$I2l#ndFhoKs>{CPJx>C^;R>u9+AUn73LRx^C}1+g zE0ExF6qbJQz9#Zk@EB5XxmPN#JIT;av-tu}U@%=b$7cV80{C+K;@Ya8q%*0Q8XAoG z(IHLTjx+#Cz>fCCD4tR>>DOSx9etWKxtGdX$nk6N=^jugXRuf0s}S=lB84)La`K-E zI%0$X!z7-N;`enu`omAy1dk_sL=@}I1k!;61~A!N%qYFYA83+;a1Vkk28bG#2F=K8>M#RC8? z@B>Sl=6E54dmmRl#IRgYV^MGLUdm_8-th5#OS%Xn0oz2jC|#l=(sc=p$UdZ zY>=o8$loFa$IO#!8A&=^p1m2iah94;;^jBVL=#py@YA$c173#(Q5&k3DZleMy_#%a z;;W_Ijni=AIr-Bot26`Q1)uWk&v`3;CxQ#y>9@sHKQ@8wZ}pQJZ&x0op{D{9-!deY z3?;snS)gs8FX4)*-U_6&=km~gways((*i>uvRtx|whYRW#{){qOSqQnaKTgB%;}V= zC>!AL+m&@&rw++r)-jzHrKiTcN|+4G;;-SBInCShwZUav2|Sm#v?Zpx7<cSmOJD@?P~oGjKTP!El+dX5H9sGgoFBV{b^zHIG6^|Qtq!AMLXH)##X{I z$Xr_;Tjq;VUr25l^4j7rVHw&dThpHQ65D*Gzu12on-L|p@&Wr_GJjVZSz6fJUCbBY zYcgIlHT^A9)A+GpKh(3JX|;y~j*^p}0%C)|>OgeXX*-s_L%5=Loxo8rB)ZINU#0O3L!sK$KYh%cz|xF|wIfDRlO!qw||%8;R4^s8|BtxeY-yt2@xKR*yR zEd_xbqc8aJx6;}T^f({5aMJZWN%i1l7UO=7ndJl;^X1LWh^?J`$WhT6rWoV2C-WvD zq9f~1yxY)xQoXd$%C`vtMc>F}{-XI)hrbh`6yqpp3A@fk7QC>|6yu~mAfp~NzVfRq za+q_v+M1`csrO*J$I_iL<%87rW&2j>Dton8Tovkgg{6Iwuzw;bLe_xl^Qp00|-YA%w8;|Mv zxj292Lfm-u<#_cgZ^nynzZuu%KXd6)OiWKlAK!xzJqMcGAIt8o@5EpI*m7&@P7gB=t#uGjz3HzxF~&Sl8uND6HiUg59)2heo^WSxZv2rhiDF)= z^gL~R660D&Z0zpFQ`Nh(x62=neEG^{zuM1t!n(A^@VY=nxeOJ!v9akphKEOnj1&L* z`i9>&9@JWu6RUhMkvERn7wzR5g@OK9TV9Rj#iyPQ%`eQvnAW_k4KcjNKOo-R`qk~| z8SL{((gCfDSJyWsZ`;0$d9YXON39_@cN?)IJ32h#&B$D@W&M#K{A@z4il%|l(fHX% zAH~eXRE&zh-t0xrkrDbQ1~!VPdrJF6>!(fntZ?Yx8(C*&X8hIy{Sh8G7yKZg| zMqXtAhmsb95%!z_lv!?>+F2&qK7QfqwYYZWYMi-x$*_B?YtfLral*7`NHRcycOS*pXAjjby|KIhEauOi@u^=Pplz;gMDuVjCZ;B0 z`pg`KxQ`t*nz6jJ96$g0&tqx%Y23JSEhfju{jh{Xb=FtVh-=H*Qf;DoJbtZme&`_UdMA%Jy?Tm-P4jAAb;sOPevwLss!v8pQI@r+(8X zUaR8K(cf>HPb9w_wCkK0^Xcn@$BXf7XI(s0dAmFDpgAl24iWAY$!`m3B zsV>oZxV;+(D%ba$i)J1N9Y}X`$cAr@oT$tVxp&uAqbYd43HkDkm*UK%)}pGD_f*6p zc#fc==a5-8etiQ34Zt@DgfHb(GA7$Qkeh+XgZmd9mOdtjKHVdkK`!%6h133k#}0Tg zaXX1 zceLB|_Y#m%ZcCsX=;S`}ebF}i!u9Bx7?(4_EZALfiF zJmMN39_ssqzs4HctjRYLL`Lt_WE@Iv_k?3;e8lvwFRfUYk6%=OR6k|T055KRd_Vr( zpZ{$vYs@)1d=`_^ZKLdQ(HGDiG@0O-9&9ys{U#FMWTDOBA*Lxk!8dz&Xv3`~yag~Q zo$+XKS?x3+y}YeH_RQZ58J50ae~`V)$~)3J)cv4|KI}a?#Zg}fpil8_O8ATX`eqK% z#GqmQMt_FqvRfNl(W5b=U*o_JfAR~#9LHJdAb5aW=DwWrkzd9-QGVV~qEBIXV-fYIkcGI_POwP>4yWjan^vzERUVWPD9mOv{ zn30l2M=m)O; z5zOIUQ)!#VKcMlUSN%%_i&rp6FwoBTVT8+9Nr^XH;npppt%Tc++Xz4s1;+sq<{y9X z$A2XLiSJ6x>zVW~y!NO}@PRh-kyUlWQ{s)6+;Va}7fp)s0}{iJzA zQe4W&1d|igSU(M-6Tn;*5w|96L(IcMaJy;a4GE@g|euK}5!41x| z@X&<`C+)_4g7~vZ0Hzb9Ku85D-U*pUUeiY261E{;JnR`9(%Nw=KKtO)xPR+j?C&)s zsK-*edp>pMLbTumzEcY7%isEX3{Q?|)lQN6S=58Ft*M*RYNwZ{{zd@>j!OG;OJ+ zY#Y<4fAPz-WNd*cbePxG3Wn%nfp6)%N)IyTV3wFNpda$fEzmOZk)f?@pY>DR9+KJ_TAhDjp}-#yU;6-XNW_6~##+KLBXq0J`J>i4hgo{t_X_ z>6ip>C7GmCuo4aK3W%H5?IT}>vHT-v4pul!@fW=5DqLW^A?$EEr$&G!jJz6uH6_XQ zmaTuM6-#eRzA7q5)<6vxe~rVm)vXPsO$G&Q_>#%(WlviATq`Xdo9cfKXBz-@EM=$P z9@pKp5SC4SN57UWd7MwSHMUC!)N57}U-c(k&6BzsztV-za#r*PxZ3rnb-Q(o0@hUu z7g($}MCfb4TNc{wsc~KOQ(e;e!#HSD!bE_tG=zUko)!`euEX?ES&dWPc#)1weJHv} zhE~m0I;1~2&1F7HIo5jT!dv`fY*ioQ?ZOWAGvLg3r)Pb$$f6VIi{iWSo1emGr}`CN z%5q-gk|DiiAW)9;;1YM5PC3k}eP^`hK^@H7H9s?*9+p+kelucoBc5$(5ygC{=&EE_ z^2YRt2G37R`ScZE?Wy@t<)8DA46j7HXE2(ZwrDPMZq^506OdQ)Z5|4+sl!1JYH4WZ zS)P-VM>K#8BVN^onq|wl(=r!^%gJ?;h!dQ$_YV$uj?bo|^Xt#2wV6K}5C61zDPIP^ z*9oM_`qUqP@*}(6pw{@w6)8UDhTc(mq`6$TAI+zEsM7gx=#J*PTbgfj`b?<2Y2i6M zWvQMVaH70@rEjdQ#q!cpJbv^rZr{2UpMUmQ-1_`hEG|8XMq^iEs&QRQeeTdbIB2N( znp*et#Dy#8F2+S2S55{?A&=0UAxWbhyR+BKe&5e^?jxV?T9x6XshPF z>Wr+5A-J5}hj+H{2)Pv;8v(2bxekMeF@BT6{Gq*=hG}@Saf&w#_H~FeDdJF*Othj!EluKS+LIE|W4gh)RuN37?C&9L_d!gpe+Dfc9wMHUd34Swwa?)1^0h{^A zkm>0ye$fDazHd-BoG2sPOTV(X5(Tq}c&^AfGdCCK=Fj@0!j2T5ys0TaZ)F$cPGX&{ z1$7KaPBk_Kd{5assm61{>!A7H4XQ%wglBYdpA`EwD;%kG)6=+K(KV`4Zu zM|#~%JYw@p%%tMh z8Pt(YMV~GPt|1*w9?{Rk508n;vbVh-_dmNAKl|&S#xK<`?|*(jHkQ`4X5F*Qp6nmT z=bzt=KmWIX89)5fzmENttr+g=3yxFvi4Urt*$e;BGae7Nx8wNX(`ep)9LJAV;^gzs zWB-Gn$NtZM5eFZB5RISwIGR6sKYEr|VnXf7Mt`Sd*9Yo^0~tXF66Y)4R3Ga+l?9Jz zH}?fG3jXXLYppN&<|YaBhVTD(n<7tgB^PF`Ec|X?`%6L`XZaLf^3YFwa8rL(=3C>9 z{1{FP)4p|F%Dj|`o8h!Y-Y$7{LAoo_F4Cw>nn=artDm}t+^Z)gkk2hZ!&Ue*cX+xC-{ z`04lmQuHmy!sK+UE-p!qcH`!2H{zvtZ^p&|Gn z7yqS0WPRd%#WJ>u{D`SbCOZ+2H$PrpEV;)fK zPRH4)aSO`Pel8%W3;B3@##JqRm04Ot@lxK(=Q7kF-5OZCm;{IjCKY~CQ3zuK#L0iZ z)+Y7MMnA8yc=I2Im?=fzZN(h9igcy$r?6AOe0acpW4wyhPp1=p6e|-FP92fIp$Q?c zZS{`~`y;Ss5ET)QF2T5w7)okc;D$R1q!8W|5@=!&+|(rfP?KcdWMCTWyXsLoGCW~7 z-8RZy@KnD~j)TiF>SXGK+pDYQJG|tME(8!ugL#8kH2RcyMu=ZMMOhF8QyS>2#)^xY zcoM?U%wI7sUjQJe@%9(j{$y^PTvIi2`C|0Gcr&`jC!>?L7hIi;xGf|LHm-AeT~+!01WhoM z?T^|~p4y0HlcBO}$4YdBeisZYE!UiSXWkDSf zgiAY97t;kU@BqMX!C~U%@(=;oRyozwa7~vf^f{h-m7s(n#v4N`OrRLiW&Q%=bn%FI;4sw9_*AZWcnW`N z0r5|QQ}b8XrrnRpaC=dwrov_{p<0^FbAi+J=S*8f z3sig{;C@j}RxDi^(<86j!?G!V<*P#=0G@=DOH5188>FN=SlSGHL@3@a#{L5MYo;x} zW|YV19aPwb7ipTMdeQowPK4Ye&I;@a%*K9VOy}zBTasvhW%4Pt7}7irWFh_ZGfIAfKL|LCaINN zD_rj~1#!nWI{foF_ z@KZPS$M$Ff&MK2Q6+v8U+)8NAIT-H=^H85xY7>swt{ax|8CpuYq_wIAO{EOeMa^X^qim2-;)_Wz8^_V#TXO~ZMJI2Q zvIzEqYJV?I);HqW_O2Fyn#)j}VVy&Ht3DGvdH7=t!HP#N#c73ql*hPJHifcm*@DmY zX@wIX)Th1zm!dU?XQPO_koUB(+i7ga#^$iZV^`_qZ*#*~gdwnZtkUSJg=K{u$Gw> z4@%%6%n{d;pYoeuis|g`vE_uZ--G~0H1M(Ap@G3z+1QActxeOuqw-(5a@CuXym8DM z+TK{TZ15mOGQjCpVG1gYrNQjB?(U_c` zggDE)Plk5&Mz`EgKfmi!mZMtW@9Z>UMQz8)+-a?ok*g!ovAVh*!{Rj`<@ExciYlIQ zn1=&>y}f=*;6QO7-MJI<6Vovzcz=A-p!6#dsecZsJ(3*UmRuZ_H4*EaNzu%=@HqJ9 z?uL=>qi?kOr3}1gL&6`gMNUh69Zx;46+ZB$F69BqVT=zA#n<0{H)h9Y)U~=|PO|0) zC7U~1r>@1|;DFY2yy;DU6x&#{_4fJAksp5lhwl!}{iK+^{^l=#=(=9JblF#w@bT>I z*T_=p6?7RSD9ZA@v$q$Y-McN?1S4K?aPP|eY@C~$QC*wKL&=FZW5su`yFtJ|awH^O z@V;>vdrwyVan!A+Tk-JL{b)*09PIAJ^5duR==KB2`gV+HJv=M?=P#U%iP3T2e!#W4 zLnEWA*K+*y!;fRQqc_fvO+*jn9_HAR`z#{kbC|lUD}Ep0R-#og9JbqLa%T)yS%Z#xE75k zPosNnEAId8&!TI4FGi(b_M}UBlZmT+4(0FcWPTK}aQ%X>(CL*fITFv0I=f@`t=FSR zdUQu^-`m&iD{T(84=f|xsWyyJGyz!MU#ncPuqib?F<&r%8 z{qDn!Cu{M+fBu`;SX_$hH?POg!nBA$wj|F7;uRnFRa@|&;8~N#?8>)wc28pK?jv#k zBnHpS#vyO4tZl~V?1cEU8>@?}(KkF0W0x0lk4J6IH0fXeoA1ZJ{jVFIO|=JYOg;I&%IfNtA6`Gv_&O`S ze&g~5&%^k>iN7fUc4UnHBg+H0dM7_u__%!(uM+(5|48F|A7hK;-E&4|q0ONkKi4De ziM~PgRlbYx;U~A_;o~QM17KF|M_bb;>zgj<&#J`9&l`BY_KR_p_EmkEkMLbg9$cPC zpZ1N6$J)KeaqpAQVr*XmtK3>D0zG0WLNl@r;4V~9OQU)Q}e&A zI9%C?1Nry)=(6&k>@EY^#X0u6n%TLJZR?N_xpeOSMl%u&7a1;%47o{%fST7BA?p_85b?cOpkbr zj)X1)$nit80?Uu**yNF=UN&|~qrC{=8r+5uZ<^e=aV_5a&Nn>X({2Vx#93Y`6aDG& z&uFqN$_3O>aviRDurkOZd;y?!T{@Xcx)>&lY$;sw+h58dts1;tuguQ<$&oxwDSal( z6KbGq7Z%jXI^(d(hhCbD^=>SLp2q7R9**w*0hOgj(clbID856Ju}UnR?x~XnS z_q16?wz(Q6>txshf*c_ev==T~9XR~1D{&9QwtzE%CN^vCvC=#X$mLOm!&_hVU<4jQp|~_b6)K zDqI=%Yhk%<@{V;M6f(o8h>X^c!86YFF7ygA<82LA%xNI=7kZ0>sd&F=i2Wj}jgL!Y`bZXdxE^aY>2GGuJymyBh=u8idu7)Pa1GQpHNxRb`Y zXrGG9bm32YEu*NKr#-(-&FeB{OIy}SrBj6$*J1a0xuwrJPL?5;MIJkXedRTq`}zbNNZ2eg!6JOF!6{C-|?GAz@B~ZT`|e zt<3r{zM8o`9e@(#$5~qG#8s1l=c0_e82O(oqh;E{PClg*x7}h|{x9GrHhGf%Q^2-3 zS^pXin@ISrP|t@l-68$dY^D+a^BGTJYzU;&f>B3orIU;;{x&Dkx(s3zD&@EzW6Xb| zk`96umu+buXSeQDsEjl2x5$e0q;)0n&oocaqK7v-?PqL8H>zOcRhUJbSFddN<2RgF zj;w$br!-Ct;tD1o7~ntl7!9r9OM)Gd{j$(WYSv4Z@x1g|rzk$tGl&N-#z7+}x`00z z#UhpyP@Mj1G_(-Z{7Ae2Z@WGDoazbt4OI9>065ZcIh8~`OWvB6fNe%`Io_6F zcW&}LeEK;4;)j0`KmFjR@r#c?jF0Yo62H3jX?%L`cHDY+FYYfribspw?YiV^I37QJ z5)T(2#gg1b#XVVh5|5SsKyYhot8qXZh>kPo&c^V_VC?Sh#(@^US`K=y&E^Ux&XN#l z)xWET{ui$-T==0j!#??^=sZ!TMR8M$<>sCrSm58?-Lc);-iocwO)Y5Ih|bgU;9&mQ z6#T~Oy07lp5S`mQ8?nnq|A}NR4x@jtJBCL3V|08lM&#n}*VGa#2d)_ zlDiGHKmNgieyJPQ4a%>7D5N=hRHuE(#h$_+-+K_VlT$Gx9&@k*Ft2rSsk`Dndi)^v z$S6A4&>0#Sh=ti%%LU_H3a_!7RyNRy^=7+x!$yctVXMA=5Cc6n_|we|V>ZpYVq$nC zUVq`0`10#-N`BNJ$}@Li!KZ_t?KWbEt4XwmAJjUJwVHK>*3?|<)8E+_AOG}&xN+`6 zoH;LRv7WCTfE_+op(-5!^e-} z2Y>UIzP9P&*|X6n8d-PKmhiZxZ;=5LhzgY+(BIw1cO^GRTB|Ga*+I-tj>okNXVqy` zR{{DhA@v{DjK~eAV3GRHPVt!`Vq-5>KfE1{M_LE(9L6U<|5dCnuErn-=CtmIB~ud< zab|u#X6L7(kM)#v_Ypd5XFJv&OW!?y8V|MhUfJ1Fdkw{f(NS*{vq9=|AzBt1*+lkL z#cD@37kRUdZwK(OhPM!oIUKpZ=?%eV0o(BcAN+_`yKG`uNLNUx=BBX)&PmE9EhFHEz=Xc?iQ*Am+LHKrO%4 zh3kL1`XqxY&*|bbO~9r%JVy8Qj&K(^@~=OYQwmWT>23MJE93sdrY?1se4_h(eUN}@ zLw{sl84m6*#`Y(7W9!q~(R}hWCe;Tyaeg5A=I;JJ(Z&PCZqdhgQ-)_oqp`dZCp&60 zt_2cZLpQEP_uN!)O_IwM9qfPkMh)?7acL)F zapB^uWwcxIDQ}W1HpoSH>`OkS$M>GD$Hu+K@$}=nlCP%p-mqYfV_i6B&(FrCH(!dr znGw$k+!lNsTDG~g9v^-Ghw;H*{m5g@t6zH~`WB|tplVtAAIh0u$s^YT`MN6VqPC6Z zN$jaV@~waw>59&QzSz*%GCZuZr5n~BFZvX zSXy0)Yv<3$*|`}X;HAI!_U08ct{QRPAkZVtEtXJySFpWeLxBvx)e zvR%HzL!tZe__O=*RN*Db%JPH7Sbn$|YihsMMfUa9G%wi>zVE@@rBCuVARa=?FMjs3 z*x1;J@BHR(#MPHyki2T#q8{QOw{mdc!B=WQGyI`HDjCBAw))T-KJ`#1>Gl2nT|eBL zIWy}$TV&;#^kv=mbxXiASx|8m8XuG%)>y^c9RK0p{;40%(=Ng7q`(d2}o89)PNt9I6agcrVe}OO^6*hk|{^+O~zww*jiW_gdswhz|xlTN2M`0+k z+HT-q&NFI6bxK@?$3?FhRtfrV9a64&i7WXGE?$@p{$K)yw-JD^>*~bRpYYlwuN#r^ z%EFnL86A|4X-a|Zs5460s!(-#Z|3%DfbJgTE;BW#Iudo`RZ;Gd>gwt91}kp@psW<* zQdnRy;PwD7f>5#p>g@gqgc=({U<8dr1}{3y`6M=FXb z(>vh%9@zk{mABBUve4qmkvqC$oVVhzVTJ-jmB%q^L?+n1QdGy(2jP@(^B{ygDNv_$ z`lsYC*h^g28(uJA@iqcag<99zNFkUf!fm?AtaSd`Ke9}5iL$KQ{&OANv-km06=o^ zOq2Moq0tyr*`Iv)D^CXf`mKr@>Hv>GaK9h0lI1mHt~r7_I=ZQ>b;hBR;=Ai1l6)$G z&ZJ~NnU(A^kRKhg`7b_8iIYVH#2{}c@U{xCL25u?Ky>{X^pzLGWZ5#|Je3zx*Wv+v zOtU_f$7?t|wMXfRh$5?|LwWshg=`9g+h6vEUX|sEd8tEM$`?-RVLAj$9BKM@yO0-z z_T%7@w;dOp0$6z|#}GlgPk+D zIr$-seXhRA1M}BLvRSPZD2M|FE|Sh{KVK*d)n_n zrr0`PX@}yP?~a!>98U4WejDI34>jj6)74%sKGPx8>4GEVu;_Cd7TAiry}s3JT>d#t z1Gc8sC>bQh5q9(=e3VmzY1-w{DTYg%vB|%zk^L?!?ARbbq5iBLgj=lz|q}W*t%foCP0aV>RG3jTp)) zIEbniBR5k@x()sUfP;)VPWB75`cF}<@y7;V=1+)P*lBz<#5lInYGk+>Ort<4*SvFj zjmr`+r{q>TTl%2nuYF!7`?r5GkNS{XUvYqNHDF$!qdAK6oTf=om~hC= zg%2&3Dpsxlc(vVr7J8)lnxNeL_n1w2HZ2dCTA^0k1B;HaUzYd+WCwcElX)uck{u6v zfjNoi)XX(lm}#DoqlQeu*OG%0P9$yk@WMZ*C#?I6Tpn)laKX6IL(l=fcAZzEpEHW! z?)p1-Zp9CO`F=cp@>nDu`icdvK@i3`5R&bKy;$GbjHhcW@pySL9xgqOhs#gm;nOGH z@W21~f$g0K_hNZvISvl?HKjWC)t_v{KYg+oPai$@cc`}3*R`%GG*0Iq zYR<^!d~?4UdwY#&?(KRrpDTA7J6KMrZTV#W%G0HIy7bhiDYrJ({W0Dh*-fSK2Ew-7 zy`8PtV^QANF>W@&`JgY;VHUV-#9Y34HEzE3O1vcd^4qV*OYgiEuYUEdc>U{NiPyjO zZoK^NSK<}fo9}!%Ui<3X@#}m(K#mS!Lket5TYD6dN zxQ(4Sd9obMkMG3(r*~rS!BU)%);Nrv`-`!D>t38}Zbt_j4&v7#SBpqSkVJTR|Irii z^nvexKBM&@^I*P1z-ighuKwtcZnbx3a1{<@utCrGB5KrfId85X+e6w|cw2CQpuZ^- zYdY2pL?b(f1y14o&~k@A=6L(z1IdI!lH)_Q(d##^TlW0c0L95<-VU!r*py=LW8oLe8(fhOpSzcW6#uN{X_?V|R8-(0)t8zN~d$d*=jL$y1 z8;!k#7#kmrr^_qR)Eb#L6-GyfeBINQa5Dam3=MkCT*ocuN^HOr$0p^5`2O*|`!PN= z9P{Ear&9TT9UB-NZ0i~5jZYp56YN4M|&A0N&SOyz=ko1o zwaM14@x;=jiWz55Ma&k zhX*QK?FK${$g%V;c)AC)CQQP3#e_#qal&a;$@9MYWdHPJY~6bt&HGRMJ%-KZvlzKJ z7wfAVvGQn9Z8H)J=jLO6e%`km^X&{a$6tEs27(svzyE&x^^g8G=BK7(LHy(@2{r_K zdf1CVPE#JK95R3`LqAt9Ev`O|HT8R+s#l-xm7H8Xe>VE%=0~Pkzdy75y6u%$D7^mb zR`TYp$EJN$Jlb5|h;_-`%=lQ0iNC!nk?&1#)yuJD>2Px^_Sd)KU`2Ib+K3bN>7(^V z>~HZ=(azZ9p@4WiJ3JnJVwLB8qWeJQa_>BPp|@M~OGh*t(x#$;_GJGRxj)?Hs$9v( zPSbaSbL|!zb3U2s+NXgByfvQ(H&r*`L5%pG1^u6vJwyhH6a1FOy4%vRE9wih=U{hV zymswoOpH#5NXad{6)d>KEkAhVN@;lRJ_FzRgK_*zRD5`oeIDg=;aCOe1JsGzD7XcJ zzU4L)J!GdGHn==?>9X=?v`HIkHen97&>r0AKi*azxXU3%Uyf$BpREN6UoM|#;^X-!I-~(IfgIHiVvzk$L)Psw$~4SZvV|s z;%7hjVf3nv-~RTO^m-t)S4^@Vt_xEg$(fCn0kA-ikq@$j=-v3UD|zss`vWJPkb66;Ubr6W0j zu${M}NcP1&zoms`kF@^B8V)2|v=@Hf<}<(5$9tvw*`wplg677yUjk$9(Ld4`0~$XW6VM3Ck^E3! zbGyiG?X8L*`=Xs&M0)$A`!%-z;QK$&+-%$98P^c;06<=f6)t$Itk5YMd=Nol#=Fx! z1CfF5EdC0Q$#$s064~xhhzwwR8f*Dp!tej_AI1pZZ&i8Jqv|ST*11Z4r=^FV^!gW& z0@RAZq~7w6EHqn=DxOk~#~omlZoMY2qa?$~D#q(S{uJM}Ff{Tf-0g_s98sfQRVDa( zIg_nJO{Th0aAF+OLtYc=8yT_7SGf@okJIWLYH|sZriNUL17aGDf+Xm`a!((!%=r%9 z1Q?K@p{xC7frvusV%+#xB~rH<1_&DcFrZY#PttgDjKWrD_QZ`wM*0K`%kfiPbRV2? zquQ^*QHqLtsu;A1qS5jp1m$A=<22)y%RuYKWb&%=8FX74G6fz$+MwpM&;R@+J@y0S zkn+lJ;pNXbR3~^qxrA*5Brg+ZKkP7Ui6^8$3%0hlf(&ftC$yMel__s4j&^c3|2%KN zskS@X*ogOk@YfzNVG(>n*&(d{rh~FFu#KP9Kqn>D%1eTTWNczwis(r^eZ1)Mh)ZS9 zX{RB{4f4bTj~>^C_VVcz#Q~m_<*z%4{%JpinZ*ke7wSx%Dm)(+;ifc=r4bqoJGHps z!%N2+AUhbz)Q&y@NFHOBA*1Ogka9t1VnTb&0|5CwL7@G~ghk*B22QhhK!7&+9fxQ* z`IH|n0N4tHE1TsSk{_FrRX9YCtY2rYi84r(J9Wu?nv!%mToEgZ1xH?SqcDRY@~?Eu z0$}(d+VUdT40VF@RB!TId;pdN_ah~cM%}~%c-)G|kogPvG8zcVEpRf`4@jmK1FYp% ze&{Q4Eo;aEqyH?OxKb`&Anay1%dbfZm+5J$*RBD9;UBonn*Q`}kc0%zZ8wA~h5@t1@eW%(#3%Ps?(@fJh0Wms`U1J{;p(+VdYj-U?4B{w7O zv}kpDjZG&9%wlSJ7|JwH@K%VD*p7od;J0;zY^Jq`+i`eIso@IlV2P*gGx!{A@(GXP ziYz$IHt9&(+Dyr7fPe83@J`N zEz%}o@PV`V3yi@_ejB`P^f{s}Ir9?N)<(6hl~`TODTWM_W|?+g#bxy0?N+~xQQA{1 zrY+sZVb=yvF_nV9%e1GJJdP^V>c>q0t&S&vqaXh}U>Bc_G634D9|lpiC+l8|&0P9r zlHhn*jgO4q#%sNrWw2n;tg#|We(=sVX%Oddu}pToiYzizGhu39zz{9JQyoPbc}lpZ zqiYprtZ%i0jRF-8<2qB>)4Eef^4SkKjL7zo!jx#kA4=rhnkBiieZY=dV`~R2P}8ba`KadLcRU{zABVcpxi0! zH)7dLw5yEF$E53+Kf4`N9#;zOZfl_L{PS-4pCyV^bp05bh%t#aibudV1J&=+HvBCx*rbW0ce5T05P&ayBl$ zcr{*p76&?+-o;u{^koY zd;MBWT)Y^=XU|9f%zX4u&&ZvNfvGXoU2|*R-q2i@dwSWZJMjr#-s(8;e71u-hSe6G zisLl!@$DzE^Wmql|KLeHTi-DZS0Nm1@5T1heTkn232kV5k;b8wBM}o zI$JRCap(9jK3#kq9A|Pw$~b}RPT$b$wKpY?}p@|i`_0x{e>5I4?Wj#sb06lbRAqPMF@YrEs%`w7zv zGttF|ktG|Al~tJH&7p4I*j6aSE9<7-;rQ&Yei#Gd`NgZ(yqV0VEOlm`hT(g5Tp5yY zdOJ!uE)aHJ&FJD=l>~g-F*<()!(KC*W2A2J$-$__Y1tg zP~^jW5*_@}wye1i)Go9?n{r$+%Qan>&(6i9>o#;*wH6E1H#WWDZ@Op=;)5+ z_4OE3znJ3MB+=WDT&*4L$ExUpuk;_*#oUceAM}PItW|r|Yl`adr+q4*CNR0J1+Kwerxf^oNdM|Ay$JqLaFhzLJqT6gX=M!I!jOS zaF!3n_OJ=bW~ct#Y~s)QXLqA_XE(akCi|-!F)}1L(L>+p8|{yiK85FIV&?6eG5+#3 z?}_X^S@EIJ;Y$~ye{R}WJoB~$o1EJZ7o)kl9b>Z-J}G~6a3WnY5O?oAi1$DEMXYSC zTdz^ie)TK1L^*WG__eXR7PmjX9rthDj|X=j#>$hYvGVY#OCLxVbZXA8_QdRIJVOTf25BD;57k!Q1ENjT=h*v0 z_L_nl?&lgHQ79Sn{#|KX)*L+#}E7+&;c*z_o+Ok^f{2pV#}bUKt!4(b&?6Pww1{bsvB45@DPK&Q#c|L+!egnrjFY)!nhOh*MI&OG0;C4*KS;o)$QFl z>gtWj*}1rQ{klJfJv1>M6Z3O1c4prDaTC&+Qx_Iu=F+*Cm7Te8Hl`Jxl)Q{dMu#WI z+=u+F(SF)Ve3AUYSKe;9cjs>W>VpqrOJnIvuiT6;z4sL=9lUk7c<*8S>gON$diM$G zQ)pEyn0O9Zu-6N3kJJygHK#b(+>TDgvpb8v9GcMB(#!rEHKxAFTNnjzJ*QBeQw}7? z(uq9m?$wxe>+?JDw?F)mA9#}JL+mncH*jE#3fW0(`s8NYn$p_bvicD`airx~kZHK5 zrbNhkd_pezyW{Wwqkj;uy!EQ_`{1@RvR?25VfwWUb;cw*{Sq`fO00#HR2M3X3sE&r z1VihozEnM2fdWc}FoelZP)^cQaAZVuof#bd6Ll588gp4fGbsT-krLn(jR$dc5FQ$e zb5d*?cm{`~tCx?`(wW6{o^bL2pi_!m@syp7reRY7exF{JWaUHctS9cf4yChHRf_<_;C1w}yw zmDt<}QBt7=*OL@bsc^?TAQ#+rpfMj7uwbIHRZ%)GE@1p%oF4-|93lksObZ`P%ogTm zwGi5m9q!f?|CmrP;bo#RtVv?C(Tthd>F61sQeGw<*(ThV*f}_)iA!hP`SeyCYO;4o zXFcigy@ouwWTN4xhwx8+25EQ$9Z+dm!ggPUb`j7 zJ!BG(J%Evi4SmJu)ivaURHYd?Hp^x+pUr=+7^+WtO{4J;6tHM9EZUiJrJxvCQ8>ma ziOlv<8U>sB}1M!G~$NnI~~)*d_2& z=z|AY_Y66l0-pJ5hLY}bYLb~GxA+}u<-s`NlyA8ClW@hG{#HP?0@wI-@sU=jG*qTh zOvX9zMN^_IPclBSUHMMC(kGA=L(k>W{}-xY+Q0#r+eThFHGdicM9Nzu3Ae|U`eSlXD^>t0=Ov^34ri#q$QVbv zr^2U`bZ4CVOZr;rps7V*+@i$cZ^ z2cax7nP4lG;8q?jfCaCLTjx!)4G0zx8s( zo3hmk+gmcoO+5>Yio&}8m;i%f;Dd1}K5@301TA?m!iWDfv-7reQZa^cp6Z?&(vs%3 z@~Q`1#aoTDmwws~*D{JT`FKSL@a@U}{~Kj$&sWQ;rldK#7SQIJza%k5(I6Ql)NdVs9Xc5 zwf{6&ZOWpo9aCi2WxAZx{$g1ZKw{Fb$Z?m*YN{@La!4F-h{|J1>Wfb&9_-j;*-xliu+Fj94xNJ_N@o8 zd+%}VuWUw-7Gtc{I+_P@vb+(;++V-D7stz+ak#M^9lKh$t**!3(psGCHO&JK`tPfq zwzhU+lXx~r)D8#x;=AT)kii20+K1xOmBT(X*c9gN+tDl~Ff>xPFKY8?FJ`*xL40K$GL+ZhuZh``TI2 z%Npe1M00y3Y;JBz2Kv02-^UxnYz#ps$dPfGQKdb2^d#2Sw_AT*ShTGYcIr?UU(%YN4R!|gL+*);oWRB)aS;ccXHI5bdA+bWjYrB)MvEb zQzy&$r1;d)GZ-KL;BWll$!phNR1ar^hcq^x*?JdW)F-<`&L~hg>7n z6%*qlu_ZpKvke?PW2cH)xy<=C*=T4iz?*x!Z|U9IamXeZU#%_o=d zd$3mJJ0pAQm+*04{cA${Vs3KGYfi75iY&7yVbK;IHXirYKX)ImxDDCN;)L+F`s=aQ zmb|IZr@Y2+kCBt`jcVba= z?FqIa`8p6ud+HC(ruZow;I zd+=})AtI0O=NG@Ya~!(){)2B$P@E}MTpGDT>bO#@>qQyD#X~3f+shj*k^%NJyg?{_ zZ9jYxN6Tw5B(#ekeXa&P@))z%*pGp6$(QLW+ekB3iI{V-ur z@tu?7e#^oKBqig>02}ecGgH!KYT=U(AE^A`(@)~V&pz{m6nKH2KzMp20PM%jPK*X0 zyPc2@n>#b-H+;~`m#3p>tt;KcF$Rjc^!W&!cR|$9P5UBjwc3rWpvUu>tzLDQ{77Py-a>KSOb|n9NEVy6& z;{HSRef9M(ssH;xsB|Y~FgEbvXsQcu(1qx@;{){%B^68--~sX$#-AorzYd#xifxX>w1V6(2@I_$f?FH z9zdubOjqeAp3kcZkjcYm$Cgv>`v1vazV8Qslhadvz_2OW2FAwYH~!#vG%p&@Ig-j7 z)ELE^82!q}O(R`m4r#$W%%-^34p_!IMrE9^b?OFxRK z<}rA%`0@CfdHT1@VXlI_Nv^SKH^cKoIzZHfyv2AOo2W>#ex|W_fcf3u`R(|v@BJPs zNaLe;EI?!mg#M7P@{+S1U-f61=)a^+?c8)YI#|Xe?s*sIW($q!P)8u z*6``~i6AB$qJXk8FB42^j}OL+0d|E)e&0J*7y=GIcu)voKsYRj)LW7GfgzCJG^phZ zM(Hj3fS~La4Q7-1=s`zDkmi3$@xQ)A4jYvFd$3IJQ=wDzym8}cdcv@bYH zCi9$PRa@!TysY`!elbob(YTT#y9JLSC8)rpzvNN<{J}8k^8A<<^c9#=5qJkYVdqJ& zed%|gmFDrBzjheQqfEh*o;0nXT>R#T{rZ7t#+5kpzu=_;49wbyMC%3 zBB7Kc-JZoigDMp3Z7vC#dQY#m@gTX zwk;pFrrQvKskqt=ZGD>Fjy6rn^BjuP9H)d9w;h}x<4bt+1bLL3dRvk7C(_h6Ic?gy z_K`^UQ)5a$wv0!HQ8>{vpVZum!vsc_<(MaIGT2}6kVEkf5m)%;2!>PiLni895hWSp zXybCQ$dJPBGm0k71b{y?qHnSeH4~=7rJ-K%BTtselq6@fz9v*63Ckol{58E8>O;m7 z4aZzXkMHt8t6bx5(c5lH7^gj5NFF}EA5YiUqpP0>0Gc0b9`@dE{6@^OQ8zFc(=#*P z%sYGOLM)s+7ZRm zHC}w@jd)4+#kby!SKs?eyz!lH#2erJR=oJ$SL5QBUXO*FFUREND={)RAN>jomoj*^Q%(o#>Q4?e7_g zf#FfjbBCf!^J>e1#+Cgo!D!*Tx7pBK{KO~WSRC(Zk<7uYqa&{9&;tCV(;unb<<);# zuD8;x)bn@l+XaSAZyuho>AbSN6^k3|F+4IF^JivNg_GD=+wjLq2Q-i70RRW4ye^dM zIW%E!9B_>Y__d~z%(E_m2gr^$8_k=PO?O)hRB9`PEMX*Hmg9)w{z2h9h|R{1Sl8uK z_Xh{fxPI|+a98xnNv@sXw>JspQZFA)QgB~$_tnjf7#|z;UE@BaqjG#gPh|kd6%nI?kF09Wx2v}K)uRW|6dXKeU3777A+BGz82w#6 z(cj${gS`WBc6L6#{N_9H+AA-s>`|@1dpy@Lt*T;AXP)BUl`QS;@W3be%=(P}%N_9x zGqdr|D_@FNufH5~>Tk@@dsK#HSGK8j-r%TYZ*t6}AMHxc4i3Ct=emdv_~iMha!N+; zy#M29u5QN7S6}xW#~V#*1lDBW?CS6J!y-RiF>B$gsFKXG-@qm;4+-2xtOtRxjEb(Q zi8vbInphR5`ZPZLJUW%e_XO@PEymL7dQ41D#e#GOhZDUoz#3m|czfwd+L8iszW3GjwRpO+;{5_Pn>fvSc78hg zRG!zv&MOSGon)DPfnM=`>(NR)+uDnXkrBn8#M7k}t)UxkW8|ctJ_O%O!S>T{aAj#e z^GY7i9mP`)TrR3F+*5ylw7wl{JB>J0e>gZejy=(}s_>@de_6Vu!Qo5M!gWOjwRj_3 zE>iSThKnLyBV*wMYevN;jQ-dtJXHIzS;$9z+5B%Rc}HmvRnF&YYq2do<~9(nbF&L^ z^V&_z6}m4sX{jOIuTy=h+Yd|XoUX1TykDXUBWHdiM`b~gWn5)5FGRlCU+Nt$-`voj zks~Cf5bF{BRX$Qb`Y!zQAwBUuuNVQZa2!f+a0mMGN(_jP+js8A{`zJNv5Bp=Vs0=v zJsO=86VZR^Y;<2c8;5N0EC2R`#~fqlK9=Z_OdP?>;o%sXnNZmhd(p*}#5@e+`PeY)2 zFVRB0Di19eLTR~xz-QbB(Tufw%Nke?WA4VqXl`!D&f02>otuk;jV)gXGcYzB<2TMn z=j5>Ru*upPAAJA)_#ggn|1zFvyyDFvzK6ntH6A(+v*vaC@lA+6KLFs+aGv~@Ji7g8 zf}YrJ?pYTPh|d;e84jVQ{C32?c(=Z@6a9k&;=xh8bmekfIXCaCr|ECZkMbKdYIhz` zTi=LAjbG?nc)*)7phk8W%lPOs{bhh_cq|90|Dg$e3XVhZ5i+?R=YhtEkMBH)hUBcV z*NDl{!Fb{7CG~aHM?gHtaAy7IIyoO=P(J;_`+368zNI2UEgXYWV;aMo@xf1j;RpNA zI(s#T+KMO38$2hCmtMLV`}=wQ6MWs@-?y9B@f~S;AsLbDelKS6fWu=Z_27pBT__@S z601*_sp9_KHv^)7$L1rFhZ zW`%f&{5ya2`|*2!{P+B!>u!xl{^kub1+vnifX+1snxf#hQB3tZMMmLFFT|8O+2EH0 z9(ZK>oKVx{b2<2-TC}#(GB0EqMsC;T!O=hIQO)Kx*_$37jHA6>36~fxA%a2Tvy{Dn z)nRx8pi2`F-}x_z;|T{0WkT1bLDe61Qir7g{5)Ypu<67IcfTe8!^1=3i8_lKk(1!Q zgRftMgE|$Q1wILsrE;cRMd-Wj_@m+<68zl|8l7ZCYwN!LPB{iQ+^8_NpiW* zi%o6w(zyVk-ty2&IN-!pCX^UNC+<^Y!G?!SW>^5Tfr!FWF5@*qnUXCX$f}WK#X}9Y9ah}TB@hO{72yP(XtXN(6b z@H6pfUDZ7FiJ*Sb-KEKM4rrRdG?*BR&kQ7`y~vPUQoBe-S@fXXdCF%wGYtj+L~*$C z(0<65$~oC@S_$wvnQ4*YJv!J=#QPdwH?#7i;rwSRROB_boF>mQ<7s3Z#E6o17xCRv_n!e=bF$SHoguOe5tP$V2k z7#r+9{p&$AY4&0jI1kWSZb4NHP%=cyYe}tTk%ZUvm4`YLr=Veo$CmO)C+z-R!?Lsi zvPgU)q<)ko7dW{oZ%K2)IoffR9*ieRnZ@zW2cFC+Tk6nePD7-VAGgH9Px*~SM6qer z$-^}17(aBiej{fo1AobC6eaD{5ZQ*mn53!18DY}yn0C-sR$y?ly%Gd03W#T>2R!hj z>Xm}m<_j(m_)@+zfS2^jdq>h9c=bb+F%uSW!V{6^bdxO8(pOB$V-J2TrouT5Qxno; zj*M&dK^p~>=zc?axT?D81sBosn~o}GC7ga(#n>X*EHVT)owd}X_Wc$=+H9+?@ScrG z$}Ni_%PVC$P4Z74BpvJYbSoZ@O}HWpn`zJ?3l8*l!R<8gwfZ3Gl$BxQ#xGq?Kjfh* z`jWAT`nXP5%98846&{)|IC2vrjl+(Yr@+`%IC)niGww9E{31g@1p#q2Eq&Nl7P;;N zrcvQyRI4nfnvx;^WT-Pyu0MQ`6%6&x_E3HROar!{kZBczhq8&cpU7eym-%WA{}#9e zZOdfjt%Tx~K!GcipBj=KRpF{>C7hZX^+nJxnlHjYSBW#miuTuFY62kgKbM|AzeYa> z{+IE}ycCGX8qEp(;YyF`6&ZNtFMZFpq9i{?j>}O#u03o$K%jlqC;TAUa0YB;Cu6p^ zycEgUtNDUWl@Di-E%IP`(^Jyrqu-HS`x@n7+v;ZkSBp63l9&7hN?e%(Bsd6be1f#< zTO$-sU6+0@$k*Qz8pO3w@^>}*!VXQAM`A+Z6<(1fG^H~de7NUG)53C%-psm>e>h2%#sk?!( z(HI&YiOHGin7?o#&Ro76XD(fe`AZjL;rf+WxOOeh-?$O;SFgs@mCG@H{#=ZoU5E+U z$#dso;@sI7SvV7e(^JtuH5CI>)6qLI8C?Uzk_FDLv3a0{GrA5UY{eJXuUJ)v`}j}x z*@QXJN>}qyP7Lqv#R(_%x3=R@^*LN!i-Q&Hy04cwT-%BRSw7Z#xUm~Y+gcy(YQe5` z7V}siwvbH2FHYxi@*Um9M$)0u`2Z)2YOZ|o2A$@GN0Q&;p1yddh5IwjaeXFFZFIm@ zHJYc=mV7*rJN7x4<++*s%Ue6KxXuHB5uY?=yxCaWjJ?gB=oCCxcXBG7Em{sMoG1?) zg2r{Md9VKbA!50lnrz7dj$kc*?g#RaSM=hgKJ;blWP#*{sutNpBe5!aw)Pr+)A!-y zr5F;u7tSmQmT!P*ekVNW?1QHKs>i<8mIs>mv7x-aDc-6bcnE;5XFbRXP72{Ic0O{r z&f5_?+c7&g9U~({hI9X~eV4V0e5`f2tD1D~!r$KBjg?jLN^>?gk{b=p{Y5_~O}TsC zW4`)BuI*Ge#zw^*%YJ(QZj29)#<}rvZ)hRMKf8A~mbSKBHgb0L-1&I#OK-d7g5S5MO%ZEw!C^ufEBA0J-4W3?J0%>s8%y9_00^$U0G5acH26wB1BO;EqcI#jtL2a_Hc4njf@RNJ7{oyTdn(qtG;M5Uc42ZlE-jq3%%gXFJu$ijKGDj^AA%?2&42nEf+E9%g1c%XWDFVL zri5wk@mKqEpwV*{j0#p$$Q6$5z1Y0J82!&Wqfb2EmJV2a@>IN5d#Ih+?Ce#&E&t>d z3FzZGhcb^ygDxeb6S#Fj3OY7bep3x_NjmSf*|~U8^`GeFRe zxJzHMc*L71Tz5RBKG3JJh=&DF)`Up49~g)(-WE{5?>##gy=P{;25qeE#OQ@H(J?mW z2a{c0C;ss2FF*Jwwi?^woBE1$I1d0Ohx+2%Z@n6?UOykbsz)bR*ejyR)T7R2TX?_S` zneYf_{kFla7lIoaQQLB085tD}7M;#*DSVHD_->7lAKkeZcOE^7k%=j@@!9cVTxGt& zb!sjaSrl%H2ano-w&dF@^`VDl8Bi6XS%l^z6S4esJwEv9hZ<}8Rn9)ZyreL z#oXod(LLNRsi(zK;^?#RCFPR2fqDgdhvFAk-*FA!p~j(3jfZ@b;9j{(k9__pG3~Fq z0B?k{RNovWtTe`A>r*ALXULd`aXtZ2|HPp`B~`u5uOGPKN+J+3nNI!*8 zT#u9*BFyNtbVj2}vX_}O%=P`)` zS};ubJvmW2PjTreFquY42Gc;)U6qu}D;@|pRi+`BXp)Ly66cS2X;HDq$rvd^PCPK6 z^Kn~p(P45jB)^m{$b0%UAh8)-=yidzRtTac{TaqUpBD(Cg$?B+O%lux6qe$7h~n1= zO)~k(rFu{=0zv~?@DiVj3;YS1(FqSAlRzfDp1i^nkOj*Ud06k7&_A`!YRA`s!l91jtP~2?9Yp_2so$9yDn(CjO$RJdmm0t@ak9>9BP4L6zS< zBso1$Td3WIARhq0E5Vvh!5ugDVoQs(rW6kC!(^TTz@1v@Fe7C@C$rASllO!DIFbx` zQyMyz#sUfs@JD`(WyEz53JQsfKPcHkHOu9g9ejQf@0^^Ysw0+;2HB%Xi!<#tEpea1@T)(io1Rh*e>MWoya}8C`YXw%S2~7MP@EuvG5NqmWr{}Y zLh6XYRX(Z;9mWF=>?uOyw#}F{4kR9X4R7KIrBj17s?DD!`D+<~KKQ7xLGT-W;Z5Z) zvQv;$xzBbv{Z@>jUjGbQYD z(s3T(n1~nIb6o+4HXG50(j*N>`p9_Peh9vt1WN#n0W$+JjzymFmHHZA!D&;w> z$uJ)Lr;d{xl4-?fO7d4_h`+7&BdNgAM)sCC_dkdEEoD7tz?VKiOus=DDL2a?oc^Rk z#&i&mo4mE#j?Z!811@}aY@)MY_&lbG{~4AQc$V|)CSyT%nvUDDrQ8gqn`!hnxpi#t zPj!?DS;Zy7>DBU6{pme*w1mYJ zSbmJ(9@E{S`CUwpdv1_#G)f<|c&R*~pf2V&3z00#Is;x2s>NW0zxHAH2#;3RmSbss zHI79pEEyjB|MB(TO|m9gdM9>LXGTUuYIXC9y7!irt)@pdFw-*&Uch*Ks_OtonYve|0IGtG?{t1n;58vr}oyP~=3Mf|`b0pIR|rfdKJL(^!F zv0*djg*?vy^(X-2X39}5Xqp$W6N4gC4*fB%cBvg-Hfz2WHtMHiw^}>>r$^SeHsjL# zV$5mYnj2tLS;|)Cec-}I2_Ig@+&S3Klcg+HC|}R-1e19m&y0*rPQ=#!UNq{pn4O)9 z{&S=-Cn?|u)z7ftvyjc=e^Z(T*zdG_kcl+Mk`pXkL2JGRknNSy=6Du*OpDh$ zq9==(H!iRG8JbU@K8+9WKTusNFXg*3Jsbb@_y2J$Yko8~FcOXN$yi!ii0e0Q`kQLN zWdo#=vCLJ;9~y9~dQ9~m|l2MQ)tf5c#)NHK(8&{Q8>&pI@8R#gUUHLIuYBq@5H^2KaFpE{o7Qp$3{Mg zrTSrUh;IV$&N_=l)S2lkn)<`*;H>$hWhM(b5Z&!q__2WnZfqh*CbZuFBu<`g`PRzO z;Aw0fc4DMH8CR~q5TmtP!crbA+8>F}508&ytGyp5$FUJmQ|d|8(WLzNj({jk@dQJ#X*1*to#7+*SLBW-MuxkM zD?{21Pt_c$e21dXzWndD+VQ#C<1QzURiERMH7v@(OV?Je#PuuJMLbnI{Asu}2(gax zWCOrn`L}Na# zIQEz9^QN2vy-B;fALo+eXPf)6cjrM2Xf9u$RGtXXOMo#wW+Tnbi|58n3(%JP!n|PsHcri?cDfFk^Yos{n`XRy=t8BzDA~d}9KB zLpsejC*u#k{(3CW)zuDo4vp_rjEY~!eDa@Xksu={jw&&7cJNl!gJ{P1@C`~TNp#Lqvu8^=QW=h;>< zd|X>v@|p)_MY9=IJv~Lf^o8`p(3J9dAzKmQ5m<(g$-|S4sk&)OI(XIb6@h~Z+yL+g zt%pYA!!K{g=6*Y_yzqig&U0Y)%F1FaFU`CCF)lRST@liD3m0S`_<)zniyZel=BQ{g zKOc8)KZskm?!=_zU2|?;{b9s2jVr$X?Qg}k)m5RM8vuZ$9mx=S^pC>66h7OIGsn9q z`4CTTHayq)2>s*7mWfl%h5(L0alg#LcX{`2vcnLN^|CWvlF$Lt51mWd-6Q-;y8%ICKQY74x)f6 zPXlO9!l;$P7)dM*G}I9N{=fVIO=r&lirq-pqcUdj#amG{Pm0PyHVui7zjA^ESSh5{ z=oD*E0-`HsJ343!hTw2|S*AM*RR-}v%ft8+!OU9l$rvU83;?+a0O2_y(bm9abCb8p zcH-I7XK`B%^urH7j?X^(GVa{DANTG(jJtR5$Abrt;_>6Bv9Ylk`DgB>P~J?&{qU5ILs;A49Ua7KzNgX@G(?>~xd2_Fx3 zO9QXfsbdLs35_A1+i_CrRsUiTu1XJfJ8}2(+Y%1P-T;}=V0L+VS;C!qg|;Qns%*v& zi?D@}rI=%)cw`t=PDM%6iOdes<33ZxG!j8n}zV0u+P735NJh!{C z<-soRcTq?1kQe#|7kK7F@do)r!$Db2HCW(Qfj_dVKMOoJe8n{_6;tWW=hT<%;M&)M z3)WfI^rQTAq*+i5nQmx=8>F>Q?$fb5P4PsLKgsbUU+2RhLosN>8mxKI#PAAkz(tr~ zCnj#-(Ef1C-?(!!fW-l6K0?Pr0VW+Ni(d@js{xy&w?HMVK6=hmW>Kb11~|xy_`twJ zW~K*@EE+`N;l+RWhV)e)kPCn4B`?>P2KvSWRb@~N6$-%m$Hbca1vV(s6V+~6s?M_b z$f~r^Na`!}M;SlGA-;i7%BqY6q`@E{pX(A|Rd_g#qKKzV*W&J5NC*5%$%+@c^6k?U z2jO;pH4UCg|4J2GACP{kG~f?@D5u4|5H6$21FwF4VS+1m=x3NtA$76N@vpE>@Rdq> z=tpq+{Nf1mtMVa^b+KPmq;Wl=73j374DUjGyGwZAACq>`&npAWFIXMFz@e<>6HMuT zeDJoB8YO?Mlm}P|o_H>yl{<3UB_^Iu3yvig{^@1Aec^jK9p3ksMR@rJmfVKx_L}bJ zIG1vf2X5LMrv6b_O-s8=7;$l;a8?e-`AsS#0N=?kD!B=T7DnjCT@GmL@NUOtfqx+sxRWgS=@VTh~=VRx^a0RIzvX7&mk(cWX+Ty6<6|)qe8ao)C zG`_Z@fCc~a2am%Z1!l&TUot~RM;zjX!|}83J#nCaMP|@`$kY9~{+(1mB%=Q=p5C;P z7kptJv%frm311N=aNy%S@NhV|a!>&jazg3+Q1I`?xMc3K;K;nN4K!*I3$qau8oSXK z;j2lP`+EIbUck=`z6H(j_@PW>tms}$r@X)~?SL}mf`X#x=ke3WvA(?{lv%7j_rlu3 z^sL_|X1v8d3S%0RQvDt$G?^TGpIStp~h}pJLhd>PC)kB zoj7WBq9@%w=xAcvi{n<;?~0$a4&y|Aea)i0;Gp>s=dscs?{G4o1-zX&e6|^#r|6An zKiPQ(K!o(jFVjN&_J5^2FP>X+`rfjhQ)x$TP2?AWu8>AAG~V5(U@B0L{Dgb**@&V#_o>hjH9uy`r6&yi|bde zM4dOnh2t3u*(yh`tI}$m$46FAk4`-&*>AO@E#7KOPUZr|Nz$1`;QgI;Ow2UmKyePm zAInQ~{vLpNd04m-S7oA&aIz8_@WIE)dM%obrWX|+J$@3MUQg~x&pmzWU5Pl^?Zqh- zC);1rgZcA}=15+^;>75q$MN2s+ddtO%$gh;jX(L_@5GgbWsRu^ya?HBPQ~opoHu4* z0?$JXPjJmUXbg~LLjc|yiLq(k3}1?sg$3!wSejkXoNd@Ag->`J{%lZm&>ToC$}=~# zN9NqjOIiGG&Ngz+twz}sZ*W4Ho7%iR&#hw5#)NNoZ6iMX;k)s**WZazp5LIo3y+k8 z;xSHh({7C`w2)GLpL@Mw(2J(f9KIy%Om*jjf8sUTKJ|8X?@8?c>a!SC9G-9KoE^vh z(NQ$!7Ginza=vXXy0Ey%M%BLXZJ!>;qmA`=vi3M`tX_$?UwYLaPNv@S5Fz|88LeE6 zlYZdGV@@b1s`lqO4Ho!7@!o?6>S{E{R#`X%H$UBsrtm*A&ncbC-aF{23_Zz(1Ir{f zTllWR{`P+6Eua(PKfX}{9gvOL*Fb-nxMk>HKcZ7m8g6EAo3gV>sy!c~8`0lg5 zAlN&SLp{x{M@5UeXweX^ER#`6K)ZjCo$`4Mqcr-l9sg<^gdL?Ur6os{mrwo+j{^yd zFFWn{bZawOa_e6*d?x0nX4Td@euipwVI{6#e!=u$J&46X_yHWC0dgnhpEMI6-^ia^E~bgJ7crG?O#PMDGF)jSui$`ny7?3JoCYG|_JL0FDRDT_&c|_&H@0Jt zCvEONiLUH5)hYbPcU)?c3#91{jl{_1s4p>{dR1}@LIseST_ z20WK#5beabr^n~f7O!#pXi#l*Qhj$*vZdb4Z(LA$Y+8DQmbxw{*pp784Hbu-Uq}o& zMRPPC8;@i0`1(O?KM`#d)?Ap3u?0Q^F1a9lw{G8${k={sTwjUt)%h4u8OifZvgNb) zKac30YjX_(e`JW+lCgl=3kMk(D^%sB|KOV&+%g%TpO5!``hGllyrz1ckW9Z6 zBW!pMj>bD*|7O%==h+`6HhfpBRJIABDST-w$aUpt_@2`csL03^;&%31argFZ^`nQr zHFvmw81oBru{bv$kM2E^3>=Tk*RQDUX^bfRS;wVKQwO9U6s+D}E4u2R2UXX8RYh5h zs!tu77>UWnnV4GDxI)5+LktBy!$4UcxK6X((~tR}hJsH-o1VsYj6ELQe;6Nq^oiPx z@`qQI&bJ9k4Nwa=gR~zCe}do{k5?SeAr5!i%1-{pPKa-{3CGvpd?o(vfA_Cr<;D$* z5Fa$A9Pl>dJkb=K7*|mw%dF(ZX(dOFE7EitX}4+D zFZOIV9%m6&;(I*v_RP%pmiS`61TCj&7=$UVncR7hrwV|e;p4wvj8|n)CIZ7z4M_hVPoW3#CD~MIV_X_NWl~r&G!p{@wfW>1SWWd%yZ9KK}Ug`0Vpr@x_;S zl`pKe`sOCd_PD zAuMGnfA*8IL5JPegn;LMI9Wl(IaI&>sO1+JhM6Y5c0(fN?E$4#LLi=goDP~&ISklX zfHpA+mo`&~6YP|?7mQIQeFYA?!)+r?CU7jr72~L58B+RZkDvOz(Qyp~sZ&0bGb%d+ zYfjq?NDHwdl#)N{5*SbJ-HSH6?cxXC%UsgHmcg~y)43)MR0i^;Jmf3-x;(%!9%*NA z$kjQ%=udqh$WZR&3P0e_d!Yzwjf^tAyhrHZ;U&cd;*mOzz0FNulg90A5h`xnrS60e z-yIN9BEW(VZ~WAW zSXmOLHSv={xa&hEcA^mGJn#l)LbWHjREi8R^jCqk4`l&Hg=_w#QAI5I_m#rD8Do0G zH+V=hTG0SC^TiJ%amqO9T>-WgZ#k3hMJd02{#7JY#fw&oqhHgZxUGK;SLcjh607)1 zIUWAREoCbiTmHxd54_Z&8K1AH#L@na{yc(h&aR~Aw+dD~(;F*4!~<5}LvFXPlHQrv zWj|E%8wsIv$-@nY(5z3>g*H(EwNc7Zk|$VMoSzdvR~Pdpjw7Qo-gCHpTj9+#({>TA ze4Ke&D^;OwuaX~|Vpx-Y7vL)<_R5W7a>Y|r0}W|T8>wBp%__`VJgQD!qq?%;EWqB# zF5!t&g`?E3&krRvdP}hU+`q@$1ku6%Jz}oRXB34 z-^bt!ZbfGt{VI_~P4!3pI8bqrMH$QRpQpu#iACBR9sZzAqlsr(q41KI@x!c;Bu?L6 z{ZMK<5@wZ_p9&s6@;Cnjf_NouVuLkdSY?pY*iuDF!^(Dt7rTBEy$g}e|JW-(%o4Gv z^eI@B?4IXqNBTiyjSc(#QWaLkvmbSra=`UNa0OGAe!EXZnn^Wql)rhNIEDf&xi$9YefHpLK4Y0vX=G7p zcS+C8J3TVBv+L b|F&>{N8prApu8#-FIhQyQ90Yf|5A%0hvppf}?SHUY}QocY~J zGkrA%FbkAfL5d;UXQmCY0K5)VJ~l~kdeRJt*<9#wYWLwBWzMr;OP zXH1h5Q>sJt!Hoe@QrAb_7}7+Q_rRf}GV%hEC*+E|-f73$!M+#Hmsgg8ci-37*8Fz* zn8v(}qdD0=p?M#tQVZ6Aaej<*8ULnS$3N$E{q`r^p$X+ZWo(1JqKixx&r!*@@>ls7 z4ULaY#O`6sPr7i!oTq(`k9%I!|x(pD8gdQ=ww0#N_*g3+g5?czy2Yufx_EIgo^Gzkk$8c3 z<%!1=7o^X3kEyXtPf4jao)u|pF7k^nZ^!MmXK^gr@K=+Z`QzXD1Am-%O#Cq}I-O6;C*Px;WWQVEqd85jXxDK%nf@{pIhtPT9}!hQkh3QM{4bL#Jif4o}8P0 zoW^D$+`Q*59i9~Z8ftTbW5yI+PdRliyheBrn`b^?droL}y7BRkeipC4@@mwSj~7fJ zkdzNv@!bHW^UAjr^gwp-v=C3WaYNaKV-XG|{@~Vt+mm9SZEZ*I_M zB_~!-+uF*Secv88!9Rv>l4&-by~Ah zCo1=l+KgW?kgDW0raT9P{_Yzhh| z=)wjji%C4mM7C}hWC87EL4H6A&*7yAHvMhTu8|=FaiqkDgXb|eBEFDpZFf&%Pk3!A z&#q`wQ*svmN8k%3Hy@IpOhZ$6)xTB!C*=eWvLj9|IAhP#|A#X7)ds%k9K=UEThUe^ zx2t%P=?}j3?PxX{@%YIz(RMU0EicClt5?md{dFV7r~N_ud|4sOiA;pC!HtD*HsRpw zs@(JmB+v4zOl+QrFKJKq5FpbL8|5ij)6QYi1fTFRO$cQ=0AWP0kZr{Jk$Hb0NlUXeY@G&<^oyqvE1 ze1m0lV%#Uu+v@vR|Kdqz_;FZyA*`G)<(ECjF_LR0g~I87q&-idFuebLbRL~2JF&06 z($9g-H)3>VJced#aeB~=ryqZ5o>+eAYK$z;xUAH~k$C-spM4zv{y+Xj{Opt4Ui@b- zL6T2RKKlpg#tHw1+WnYh9`$sD%-7r(e>TS^kPGl%(eMa-)8Xcp!fMD`<(KV5FrkCs zw-vtIJB*{#qj>Fw%kkRP=RA0M0>X4}0095=Nkl3=e{`8Rf=&M`QWIcJ9OTpE$B$x7{So~;R6P<8EiJBC z?or12bTjJQ5LMgsH(iPXE`1L-$PXp&ctvA`dY0z4AiO)GzNEg$6I6u;#*e-gQ%=RT zL%@u?fo9!P@2vH)`OXKPclUPV{SQ7YZBO_Mj-LxBt^Q0`>Ib-tk&1tQ@5MPfF6Abh zN>zM@r_)G2fa~(gTzu{8@5I0Ovws;k-+9FwHSnza+yVf;;-(Yr%()3?6v5vy%9s|#7>TR zzfesy!xdi^Aq#r>u@q?vD9z#x4CbqIVtN=6z<&3iMJy?IvhrtPo_7^AzQ z_JBa}%sAk!bdZeGICPvf3E6=GH8wUC=n#OdyotjApMm-D!J+cW>p?W&Z4KVNJM_tC zVvvvHgO5Io+xH&$>K!Kn7`(y!0_+N@n9iNN{t={HQEGL1@%ZU_+`fH3?tFPKb~PDT zSzd^74GvZ9NmRjbL$j4%JPoezFQWR?(Xkpgf{g({GLD!8>5Eb_(?|cn^`J+1nOWq) zzyo^u12)7H%*>05R$9uDlHA~^r>axp1Qk&;Soq3q;g2VYWyhcLJ2`$hLD1iU*JMdBLv;rd2Ax%bdQna;8<;lim5 zckblmawopfAahPPD)ETYeXR1S$kyB9kGXX)UneNJmQ&q?9c0QA#=)8I9qEHT?D2?Hn#`1Ih zmO3LGe`k~Bg1(6~Ka{iBCB(guk6n3DCQlT}*Z2}8^D+HY2hNTlCRW6OFX12JK^wy$ zQqk}YCQ9Y=_zF7cH%|Zxj?)4w;n5)7?vV@fNAMUfHDg?4lj+S1Cd}ju9|5D_iXvC% z!w>Nt4&UG`?a5&oZe3KxGvHLw8h6rIVE`#KaybYyex$K?NmI1^Dt>bu6tEQrT?N7Z zz;JLson2`sx#FULWf_Aah^%q;HJgn$8liBso(*J7&w7NeBhHto|z(HRVrPIXAp{E7^$69%5eyH zSh}&Fsf!t6A#hfMJfHH@q=k)KXv4$?`GB7{2aus7?#G?iMS0?kN@f?;MQ`G`+^Mo$ zQoo+8AHUG{D;j_3g1o_6{87aYm8@}cT7A)=7cwm5Ix~*)-e9jm4 zqsX$DyKJ|!n6g+GH%fMcybuR#KfgXQSn-oxy6;wCXbh~5UyUOd+n6kQOr>b92g8LA zfuk}21G`U^N#kZ^4Vg`RwUq&m-JbL$-w&lV=EXefs-5)&zvs;W4jpJvqqxA(ct(9_ z!YcR!+x;4zc!M)o6(7gNA_WZn8#e+fS!FGMHvRY}6EIMi8uNt4Oq9dp2+~$*$k+H3 zJ9R)fV==}F1+IUTH|>XagTH)mH?}nvXTyLf^;**>%)FQ`Fq}eW90x6#=zH9&G2}R> z&cp{~<@b-3nA82e{k(ZOGROkValReS_<~8A@Mp2D8gF>9UUrWQWw$9Ppf(uA1X&n#-euU_!7&Un;I8vq*HFE1~~k;cr=9zBVfdNZaQ4KG-+Xk4GD8E0dqvXN&Z4YtZrWpgNa$1@w(cr!#M?UZs-zKL<378&+J{*ls%knwD7!}HM>F0Xi@ofDv( z90u}XE1#C3j2uwnX8ZQeeoSbd!E+t1TH!KL8;iZIcJQscqcc91c~Br{)@j!*lQe^rqaNf3R4DFJ`F^H-Bm3DD!;k zM2I-Oc%MZbQt{DZo}*!o&XYPU%9&rKDLWq+Ul^C7|Tcj;Kr1-5W7u4?Z*RRjO=oD_M|xM`2@i~H-x>(Tq- zZuB&N9~9o)(4l<|OIGb^E`O*v3)ikHk8z2pT-6)~9ns_`lsE**h5*lOfFt}v*_DkK^H}5Hg!`klXO>^I>5k@qi&Kr5t!WOc zdE%+?;PhRmeH>bar;8 z%t6j{m6|vIKWXj9hud4xvREGTQ)Vw;y&m6s=bO&=o@jo4K4h7G?eb;et~`V<3!A_- zy~z(8(6YNOWKuNf&xb{gija5N3*z|=7WE6P2YDeDx#OtDwZcD@pkgm&H9a$C;=%fp zWX8$XUYx5vhUCNkgJ*H3J_UI)SgS|<%B2|8SeH#@WXSNPr5L$-NwQM>DtZDh>qB%@9mU?m&FE|$ST@ubnlV1Fd4c5c(fVGj-+$y2=yNYzj8$pFFO-rD-GeQORSqA;NmJH5HJXQQQugRGS7Z%0qnG zBJHh3J&0!~SjQ1>d7-|@4Em6+^bWWFj(YL>l`HYu)obP(c#v=8c>PUs%g>one~bg9 z;T6`6+#UrBb)T(QmB&cz z?(HjHFJ8WWMSeBI7qd&wDL?2Sxz8qYXFp#E@eN04r9V+5YID=k7GM4J-S;&0stdPK z^)-9(_|baQ>(g;*^|IHeax+6Ph1>~iEyyjw$u*e_gNDF%>12AGr9XEt^Oic#fy|C?}i7<1^wR z(Y;Cse)^Xk{!CeeJfdD`U$}uw-SWLuUhZI{g)zZ*P1l-)7ln_|Z-2H2n zRJ>++t8iDhXxHA{jB_?d)Sj5vIF0koGFEt62{2B>@8gNvKT48+4#E#beUl;os&m50 z!^(gPJt?8gq2F3s{@xseYELwdEb!fqjd2!GKkA@a?BtXHooCfqigD$p2tK8+a7;3% zk9;mM<+kIvoK+EQGu& z()byO_++TpjR#-eRVT;^6iuWBuUS(aLk~rBS03ra4hg3;ZeODu~P+af@2k-*6>K~KNLcxhwM(r<7c_D(l@g}|ej1GQkuY($x z5$FjANWoXQsTTwkFzg`!`frswI#lgJo>iFq&2u;$H~p&US@w)xFiczVtL$kj3QOPfc`8q=pdZ=E=$Fr#rkl9^ zg<{i_^l~X(U%omFo#9rcY&qB}c>=G3frrbjy0xFZGf%?w)8{9LmpD?!Q+}CK{`L*Z zhQ8EoJStd~8yetO{0$$Ip9F8!uS?^LMJBva>boiz z$pz8j-iV+tQy=FWW!wg29Ha!*7^?u2QFsmwKccbIrkLci$geR_>cbe&*n8lNei^xu zd;kh|%b%wR8DEemNHN}X|6o=4n!a78<)sl9-S`7<*S8SB4jvQ=vx4Jg_;yhoPe8X^6^j>_(r6u2g@VE7>{Y3$>f>^o6(UmkF7ke7j7(oGN$(! zM3YA5EAWyR?xZcVfTamX+Lg28r9sre-D zXG1gUd|Y!&KIqFW_wGqImX>CNx10Y9`KGxXcyTh9gJeBT=D9&Ipn2hh=7bYtwdkll zx4W9}sU1+GJ>~^U!(uN5V-~!&e-Q88xf5F~ri-r#uL-~Je*5?0ci;JzpM~-J^wRJp z3nH{(-up(g2+b1~@MH2U{0pwK!!y=$i;m1?;a|rST%JkgyLZ4G8PeQGGKg;>u!u6D zGUuT<77D@jR6IN6j|zK(LAahHhlVt-WB%T(B|jqrPR`@@dmm^{9)6C8_RHp&`Hl?$ zX=P{{zz>w?yerwJHaw_uKnGt_Df0yQ@$CN7*!zcfa1p zre&dT%C}?A&ee{D547-@L%c`1cz2px0Ee6i7u}ds4hi{dvr{ofHKId#TeHO#=pA+Bn5n0r!475+)s{FaoC9CR>dAC0tN`CNA$K8)wuPQpeWG}2U_`M6(>JS;K51ThmAbQl*Mkz<^cRz55cvo1t^4GEunPuAle@~Ym5 z>6wN)p&{irruo>dFK)-( z`%hwKdI3gKU$z@t+Xu0FV+QOz!YuW&pKSb&`PGF$aLig-$1={ z_fG8X?YqBhAE=L2oLAp?Gp=2K!Q&sE$(yLxVoWlZ{s4&Ng91D}bu3zSws-ve56#5Inh-{7$0&KA70=JBdA%!d1m3@YH=aIQ^B9k^64C2W zz>>0`JaNM()%PMSXR0_L?hGzy+OyJf18!9^;9vc#e;#kV^=dR{o7qOB!5hA-RKvmYtvRm1J z3c%;oVA*23cV_yYHtgcjE&-4PiBg;GezV&PdrY)FkoOq(BMpaUJ2ke*Ou7|Vez z(nRTLfHX8(8J*Y!gJk(3_P`J#F?fKG2sa7>@=i{kYFJzy8CFH}WD8IK3{N$E3joAe zoITONi|aBh!tx&G+QwGgy7wS{`r$|MtJ}BZ>F%ztz%k!q0Ri@auYjuz;KeK=#Z&$a z&Im$)L#XPMimyzmu`!Ur@7a?LI4o|yM1zpfLYSILicjZ6LsPi5!hD)Yc0})?1}oq~ z$L1#%L`M&Ls*VwXAV>*A%%`-RAmN0JKLR5m4w4xs@k0oDa7^c?^vMLmNqHg&C=(0+ zxoe*3sC(Y6TYvC0KKbC|xbx|)SiAQqHhIqHVBc4%8NirsoB(BWz_67ciTy8uS0;`V zGtF33N4IiiH5RX|M15{royeKrWTpN&@y!)9PTPA|3VKW5`}E7$lb`@+2BnR0b*|zS zUx72^3yQMZpd8Ry|4N6Saxm?og-yYR$5edNmFtP{83Uf)As>70#<=)t?#1h#%=dP7 zVpl?>C*cM^Wc@J#Po98a`0)gg^TsZr&wI6WkjE07sx0#kh#5V~>BLG73HX>E6ayksXFKvE9jhva>K(Xr%Zg}2~4Upq-4 zZKGdnsWD0r_9|_eQ;80Br>U*j5Z zP=D-p?a5gQt>D0Sz*k@6Ntv-r<(P6h3o4$VB1WtP`y!r|iP0|${#E-!W&zbWV9K}< z->QO-zu^<6bdrn=+R6!1 z77=dmOm9VS{ya|u{)+3GFF{q9qZKpr!D5$wWmbNUSS*g?A3H%O<7O1&K6#&Be zZLHL_`!l699LEJ_#?SQp^P_$YuU=O_^u0>QaW0f$U7nJ}|5a=kSEakKzX=qR@%& zNAVu4Hvlw#yHLoBaPHg6aSCwz(=i367o2m0u zvPqVHDhK0Glqc@gl^UfNZ#=iq*k1K;D!O&|TRvpeUEhhLP3estjcxZm7U!@L9}Hyj ze585Ep~BBKc4aQbQ$b^*4U0P`%4=KW+0FfZpPIjPX~`!GpFVsXW10uRXV99(l1Yu% znRr(lHPoB1a$RGhyckjVi+LK#i(10J+6U9J||{Xdkw{z%et`aQ!gPaXWH3Qn5+HZSJ<_N^Q*>P@LN3&2ZjL=H!06)fH|% zKiP1|MvQ39!u`{ogLwb$J<(aR10E2yCP&8OkAC+%@q1tUEiabxeF*r&@=r0$HySgK z)yJdOsC&c02gu+N_^PyX!_^&n*k$ zLr0zpV(vDnF@fO-98X}d=!JW@&TV+`1@3wL;%|Ns2OInG>Km{5HikEqfCc|6FJq*1 zo=YeVxBTH@Hu$JyaP#R(@dI?|e0VE551+-<8?VIJtJl09&{cir0lcBu(cEoxW;*H% z^C4*@uxDO8WYO+O<$1cZ6~FxCL!V0j#%piJRBh5cT&+)l1B-2Li=rK;|7Yf>yy4-S zDYP-g??0!dJopxXZ$cmmES{MeA9kB;?;aMJ%u_$ZUWDD_ZETgn z9}6XaSB#=acZ4r(1AfR8z>rEbQJ&aoAGXT$VySRC5zd>!V@Gq-`Kv3@79KzS__Np* zk1vW}=EdJ5z!8u1R35saidTFChlLQiM<_!XTNoi(GdJR$`+2Ii>g}Vwz4*oETI`5; zJpYUgzPz*&|Lh-THkmIeyih6?ysCJ#2m2d9!m+dPGHsftq5XW>VHEgS`~lSc1NSqv%gZ?* zb{X_XnN$f*Bl>d#XHaDwJRgdCU*1x^ZK^zH%I`#CTeKV-_D0X+w$O~)YX6v~f&jSt(h$j$oCQHS-5EISBrV%}7+AMHVX zZtFPqA8*Ir(_OcTsl}P7%}>Yh%%t(%{`^jCZ*0WMOIKs^`ehc>+$ZO?U4 z9tsG+b#7ydL;LF;9!E#AnvFA_hx6eA!GU*y$;X`;zwu3uv%%r`?9TmI-`xw@=&PiKZaR&L6R{t@_ zkNs*#PvvC;;Of<@@%3+gOKo!`4&}#FdA#NC%~60Vi|niQ56{V~r*R0+EwYD2Ufh5{ zA%j@^$!`ZJkYq|j{wSj@ntJU<3LM=~R0gQQO))mt&egAQaG|bt3Eq6q^+;n?Qdp*; zz(;?`cL39`P|uj;;l8Je>bT0Ln9$Edb=BGRtE=(v{!jlp-u}iL#?>#eNH&8Zbw~V4 zC12~`_zFI5viA=)r7@6rZfs&QW+W5&R!hJ1?(?183izqg2fP7?(`EvGu3XRLE2VJi()T!dz!h2Vb}J{+T0nx4OrHMX^aLGUo=Q+>sW89)PlqZ$ zhyh>^a@`QAV|A`_*ECqhtOka}V_?HB8bY6JNI^K)<F__a#QI+!o?UIPN@o8Yi4aV{idH#mNi>MR2`&0xnJ~{-jNi5&T;044Q?6 z>j;19lK2dKnQVX){`_U#slHqW`M@W#XCueYByxPC13siRJ(8!4pxusOCkv0}1;Iuc z@1lV1WF>A+6tIwyyfMKaKI7z*2Dr3q!{v&Y=;yqFp}1b)D(Q&_FZ0xs2l7l5u}gaZ z246y3mBS|}=@7`@pn#Jmc_D8q!Kn}e5?6RnZtygJUC7^gKvVpczMlrwkArz39vcwLaa`(&A|NRY$G?g;`N@vt*LBFQtXMXD^QVj4WE_9U-JYqN%EO@a>Li+Sp z+_WdC%*+0+BSW&A@N^fIiBso~{hrh3q5`=5$=AWoOsd4L$^s&N+!BuY3{CypFa4c= zrAqR?4`r8f6#QL4>@q7ms)CUjn%)<|+QGk*B(84r!q+%mh+A3hCwLhy2Qcw>Xe#?V zJnat00Ue54mKfB)iqo>#@e^faDvkzo!Q=w|*TkeG=$FHpf&&YH$YMFI6qGonhhbG= zB?l|ZIhm!I*}>=Ir@d)~I?;moB;R)WDV`-{Fu zu}EP>mo$#!VCYf&Q8JOiE-85tUDhf%<*gHDK>lA)ide~>(taGDNEmM8#48?F1Q1r- zln>c~8(1tzGhSq2q*BJmSlaHiiktn1_}DNU`dkqN{tBx$PXr+LOukteuq-fXX z1>%do$Yc^Ar;m>E^uCD1B+xvJ0v7!*Fqo|YTKwSW?^yT;2JoD(O!~9T{<$jnplCDJ zitAJIO31+*j|m-vJP4O*+%Qy5#v@Xhjqssgad|U-9^%MwFLWyGOk>n&wc}jlZ}b3* z|3rfZv;oSE96;k{0!==Q+bBPINL6(5_(mC!hx;T=ejh!165Fj-oXW}Jq3bW)@F{Li zmxDLsHcwWSCkK+o>yt68@u9~W6i>Kv^*$HByWVIy(OiKAZl3-b5}kd*om;}nb9`nh z26zvhakp^Ig?H@9%kTpWPAuNjemzDI&kZu}*SOXTQj&Qr$W$l#iR1S*KuFrK7^j%O z6=we|GuqeMi6>q8(a-n|S>a`P;35;Z`JS>SHBCRpm3(B6r&IU_L7NYZN+0cD?!^hW zHTK&v%psmuCkDiyEJhF2$K#AT65UR^hjGdxmjE(uWnp=AVnX5aPjlD@?aKEU2N^`#?H=OtgfyE-zUp?SwR#Nq=hG&ADmL{ ziaz_yb%X2aU>jAwBA+Q`ux$O*k_{+{uAs8jfcPcd;iEM|7pKo z1aZ4fI(gxLay%xd>QR>-Wzn7uCx~S7KTnhVCyJPt;4vsBmS*lnIiM}=RXFCm)u&Mt z9ptMff8cgLAsVq^#XOah?Ze}mGiyu$?^8Dephg?l+}d+l7UQYEq2ajw%U{Lb`cAy_ zwXZ>}rUDq64Pq1X!Rg8&(20ARh0nt;fXWOELD&t8qR#8a?s# zX{VQqn&PYNt?j5UEyaZB&4Q`FPa!;+r=JPPr}u8hhhKi~4NH-SoE$d#$c`f;ORc zCf?(48y{ajJmS;6sw2TNe+Yh0bZ)CY;1%l5>m}t6n)_qvO2so8czH8W=CSnd;90B- z(fwnU_s;!z{P0mMt6r|xCSzW78kfxEM!^Z?al=Avu@EY|+{h~0cIKr(#}RzWDjS=$ zJ@M+T)_(kS?P+YNT_J}l*L-~{{>gX#BwoCF!}1Tj#wJE$dw(yUuCIF|V|jkg^;zRI zH@xXQGjGd6c*=Q7>!0n$v+-m--hc0xlC_9ZuHa# zas%pEZOLnHra{U8(@FI>5F^0{d-tAh#rDJXI5|9trex^!>U@kZO?iXjWNSYjee_8j zN`75=^Til@VafGydNvSi4>#gJ{rTUKC*HEehe^oKb)91~G&Ep6 z4SXgw*O*ZI0Uob?&?j*thhN-L{t_43J#Wcye!VFTT8UTji0T=(K;Z7qc_7@%Gzaiv{sN#6Ogr zJ3Q<}tuZON1y5513IHi+*XiUnjWdnOMyWQ&VrmE6RwG|Fg#82%^23F9V%JM02k@;n zBZ2EpL!t@KGqnlq)FnJMGd&&qySuTsyXOrGo@pXIWybVIo>cOmwBSMul;b(S3KPa8 zlH!`@Qa#`J##`}k|BwGVZoG6OWhG^l0Y3SG{e(kiZqt;*I{P+cf_bROFHFAIFte}_ z+kV5;IIZ5&+k{fZp}zRDyvtqR!m6@9)jH}}1%dNamU zN!?z@c|c(rp%VgCL}U?@6YF%8c^aICGOC8aPJB|`gAmdw3_Fa?$D(QzWA5`kI2Skw zXGRqhxdN0HHa+J(zwPZ9WN=`)!N7ewM)JJ^lc z>3WPeref{OFXAWP|8XqNEyU!k1fn6B1)Luylbu5etwT*nd_70F4N4Db5aD zbLW=m=o<=ZbSlU6WW$ia8D^wh9>7~@3AS|q4Kv80A6Xp_1;4TpKnG2ez?~mQ%XA*3 z$j#(xBrob2IL-yDOl3sdb9qWVVu!{Ij-4CfMu@U12JOIf22T20SIT);@K7ZTsVi00 z5oE2>_4CKGf?dJHz%Ffg`f(6+G>}w|EnHEqH^+A-1p@;r24*R@fuUqNx+D1iH>(n0 z__ib*XjY{y`Sx{%ruhPXgI}<^7LvyZb6uxd@g01Y3J0)C7yyV*neEgMs^UleRrDc@ zq~vA1Nr%;lJ*SiXT!x~Y=z_aa@-hVDL3qZgpg4E@&0hr%$0d596ZKr#o$z_Q^h>P# zLsGm{G#Tkp(aIXHVkaUrDA6t|f~@ez?r>TB4_!zHoZ=?~>3+>Z*9x=?jl$r70C-2GPkA zDNST}mcZ{KtFPxhZ4H<-*i)F~lP8V9srbCeg;WJ2!m;zOJPeNzv=t5iILjzgi4~L-cKg#dER@?H>TpLyc*>Cbnc*VXAEIF zxUUv$XmOyqc7#*UOwPecxG=6bIqb#JfhK+$L%Q!`lGyGF?@A7Vr&wraDhA6_ z1(ccbOyZ<`WcPR(H+CPo;T8Z-{)pd%M_-FS3`6lM9wnXm#>50BR_w{|_*eYs@r2_% zcYlR%-FD!?;%B9~maIb}G4;~j-uFj}yIcF7GsWRi42d6xSTGWO$HiZx@ED7$st4XB zKGz(K8vq~=e{rLM^97t(Jac|3zsk)Cz3o=V&nIx`Xz3D90G-6+hfg#|(pXpVIS~ne zjZ4O5U8zo0_l&WD&6t@nt^KJ})i=d44^jr@N82?zPAi@g9jbA+Jgp&_sU?5MFFfY? zj9_qJsCRbaj{>u>)>VO?u5EY%zq~jX6O-eb_YC=)1&8XlsONDO?*wvddnXPx7h}PH zvL@Lgx=^mB=7zBAXP@8pV(Xo~c!z zHCeAIonR@QsPB0Wn@9!>j)Dc9Y1_8|F{Klz+3c_X2{--(83H7nj^VT~K-lxtjNKbG8TY7Wgo%LC1g zk#W!ly0bw<_!;%0e3+McJwqF%sPR3Pw>J$acN;$mPoeyynHncdo z|17qC_CcJ8b{rTzJ<3zQJR3YP)risGdMgIscrgZMo4IhOe3Vhbya*SiKyG90Z|(SS zXG8KMgsX`O{!%RR`u3c7Otl}I%Ks-n{z=^V{EHYK3gsEI(?AjN%!E; z&s{gh24Y!lae81lUca#vUw`9;xFpj)sNnfwLSXtArE4Rrm z@$s#D3LlRdjXBuJVC}Rc*qhtiF{S!=^_6QrEX&7*k=s0jjs2`AIneGo4eOUYRX5HD z*wuG@@bMS%S3me!)F!55a=angf?QJnw0t=(U0xL(ldjMxH;;>gFDZ^$4~uBbxJkUh zjWwl`9PP&KyZ2&eZ%26#$IkX{)Eo7AHp>QZ#ajS1e z@Qw}-V`F1WGW^7RUu}FCH~o2hCOdUyKk*{D@JDrv9sJsgV#UpuuEux%;CJHB{@Z^Q zS6{rUvI9fBY951-6+GEwg1_w;!n0a?vnIf4uqg(8qRNT9G#>ObO5->so#zQM!6nNe z6F2k`E){%3$0PzVZ3m95#H->^Km&4=5+5acd}Ds`dzUZqF5Y>xTL;-VfTa|I;|>Zj zH9S1#M!?4x00=xzQ?QT<5t7K#2u65Ad9Z`qPz5pQqA&hQx`FVZpd}`;K?1+0o}cFRD5h4B!xw@vvuDHduw&l(vy!Mi;v^ zbk^VuFTzw_7Nxw9hn;{@ukw^zf7AmA05pTB#D3I9bnF_2WFG(j$$^4^{aaE*?-FLndwq(>8>o z+f~N5vXvj%`}yl1`1UX5cihTMKJ zDgiJI4tLstZ6*8j9OUOH#Bl=K(+_(_aT*5~JW<3Y3_l_Wg&gq|Kc~f^w3J_V-Wqp5 z2hCgtg{zIT(8Qur$_scxGTU(k1X-Z=&Z%2Z-hpSB`bqGq`uUZzRCuCfx9ft}S5y_( z$z=x)CiqnD67G#pqNDAdu+iyJ$|aRF#dd*iMSaCZ9Ow=G%sZl&_{OH|7QRCx=QMdl zYl7kvl9=k(9FMVq^9P=OFXkz``9Y?~M#{&*cvbnMoF`?f(h8o^Rjz(HFl;Yc{{|yn zxgB1`x1Y4>hrM_gb+2k$!E4Sj=wq)`jbU~@Zw zci0CsAL6MAZUJy|Z}HNy(RuRdiD;`iljNAkwyH-Kwk-~YgGT5ct5a`&Iz{|#f4Sjx z{7(GDtg6aoeohzoB~Y~71C zbIs|Po}UUn_{$~$3oWyA4WIJn)c)4au1~>pDtnSs^~#%PA10@2{;=RjpM36jwO5uk z$1yUAGQa#)H-k9{1Z`TamOnhp;us52&L^qzS*tRhhCupv+n1YsI4x~H zgU1;Q!3PRw!-2&h7OF=^2Yn*~cc;_#6E|p1u4`fxqczQUL`S!u(jKT2)r{v&KBz`J z)x7wlcYhhzu3Z=Hrd3w8W91F*ejZe`q3wbu@&oOg3&KmqPChskE!fbbE!JvrUWZ4O z1|Ea&C41n*y^T!`J5FPo=MdhQ!xCzGc1Bn=*n(TW7J8?+&uy26e%&r82Jfy7A@ic0AhIiT#6iOo*o# zqERn9BHRN$+O7CEh0jYW&x+{H0Z0`k%XI+Hk%9LEo7y_$>c-@+uYlWo&8-u?FPK5 zX2ajffO@X;QWwq_T=ZALVS!IpEAtt+3nAB?@M8nWi>S<3^*xHKm6fOl40tG(A5X)3Ywe48H^EjS<`8f7>_El#iF@Jd_=5Jn&+NFiu&{G@hu5HA|mv^GQzZVNv zFU9;T*J5zK>67wzZas|u_y6aw<3IexkK*%(YyKvIZC%4ZCoZB0IW0h#0M;jlP56XLB=YFk~g%+QSsaKTvKw7af$d`^5%&C zmbl`1+A$krAAWf^9;|JtKWWCa#w={+u=w3o9-F&cFx*I&D?I+ZM>-76pW+hUJ1 z`f$;mZ;>K1cnWJ$d8z}6zxn$g3HHOdas8!Om|O6=T&*@4E32!%nE+`_Qx}qrt!!Vk z8`_T#ztXl8gAF3;;Dj-x_-0%E;DbkxylHcwKCE7^$Lp`ZrTQ9`ysAZ=S2+Z>wSOS$ zokdNu%{L&(tkf^oTql#gix7Q1QZ zv|7(=sM|8`B)2if9!yeIrU~IVB^*ap56Iq@eJJro7xsKkG4&GrE?!xnGoJkq=hHXTOuPEJApsXb(;3@ zH!@ddmP<TR=p3|sy@OK^W@Z2Yj95-M=$%9u=uAWbq49~jIw%!L!7#FF)KM)5 zl%87!&Bmk}fI1%uK9MmCt33Qf2*l7IgSW`S2s3`lkg{2Ss0h;d1HQl@nev1& z##BZ&KxhEKFEx?_GnIwi%={ov36tgz1rF4K84!k2eEeWC6kj%XCoDw+hbd3hf&b5gOR@06ss^MQ5DJ$O z5uTe0bO06-z*k)83ZBm!lI;3r0Oy-9aH2fC+bI6?cQWLG0OV~r>XUZl$xgwE1YYnt1PJC2DF6< z_L2|vq^99X6Gsa)a5N4|MMC}9 zK=tb-RUfwtapmE7u0v_c+lL^-u&eM27IZ4g{!)gDwO9%SDbi(_%Z(Pl_tTYnaypd# ziBqVR3DeM@>#hnz5#T(F?)#_l+^^D=p&#e7aVJ82lVb(MMs>sbHUB^f&SwVB$$% zBJGVO^BEgV;x%{-t-(isp_a6O7G0<>=R(HPE-P&l4NWjBbrCu6#cenki5Y{cei%yd zGg4&~`$bjyOslWtkvd^vQM}@3FvZN^5?+*TFh$n$AnPPu6Sea_;C{Qb7AkVuT+x1#&@=V1lOv{vMH zVC64IDPJ0y(h3jCBd?0)RbC#16u;l3fMUM;bsUOeEAaJS;q5r`bGlr~$~g2b>Sw$t zDw=r%Mf7z)RjCSZ(wc7Bwle?Uq{tI9^K)GpUfMG()3WgF`us286?>Jp+!aa}W2LI% zrtw_KgEaV;v?!C~g4-VO5T^ScX%fi|?Xs+Zs1gC7SW(zXTPcDCXOLTxOg7{}+Kd8h zDID;xfVH#&&aF4QsVD08 zq}Uzrd3-0vtm+Ui{TL^d0aBL^NV5bb59pshm^_4waa5W-MU-}LewqG^A#*HH^-YPB z;>qsYf5>_K`C+W2w(hvdSLjSKG=6A}kywC(-(WdUj-+w;7A&T5N!(D>4Rz!bc#^|g z+gtJR-CNN?zQ{eluoRayLFc{R6P_EQ48otHt5r#!k49};6Jg15mrC2cwr zC*e9e@NkzX*sFBu!M_8FA67U{rs|H30G`_6S);S=vETJ?t!+i;*;bsj4r5qlWG>@V z*}}P|K5v*?%RD*K?#5{g87*1F27&6B?|5ml=4S~gzpBkA{|DrEs(IGQ;HYma9jVTs z_m1X*`yCdt2V-$*!3(61?mtqZ0UrSK!iWBNx(3<9f&vQ`CoE{59E+ux^q$!5#k=!d z%w%DG`SPXU1~m&VDkTL@F{(1r2btaVL)F1Ap8LT!ax+Iso?_0Za>!j{6F~EYuFA?g z&B%S8MS1#cGoC$J6ON;?v@+*;&%ySAH<(z+;bYM}1GKxnr@8N;tB-F8oF6Ig(Sev> zo{z2lPJH^&=h0}?WBJme%i>Bh4vC+~!*UO)G;9PMh<0e+-e%#QWqqDy`QqL~zwu5= zPX5z=fA?G8j_-cwJ6`l5fWGA1Wj5a1xH^*bRE*{rhYOuyQM{RFh zb05X`hp8F&l=^j_Av!Q0aNiC+@&ZEQQ@$rv;A-Ye*%H=CUfVuN|jH>RD30~BPj;>e65K2p% zq|MO&6c@e~GkR`tE*?8kIHx*E%ISZ`7cBd2KV4UOMxrr4pC^KWt3c+$EJptHqmSYT zAN(w)8&mPd&6_bU`N0WL=7r2bjkny~WI5~|#;o8#cNQVt9>E2WDzWFs%7e6+UR2Y( zly~igwV%5=R=%Q2bS0C(b+I`ani2YBHMbWUa(i({W!~qVY{@^K|G_;j8R}OG1dqje z@Fc9IvBcB;{dl;u6ML!`@@tHW=VdZ4?<%8*EP5UF;sx>ai{gPP;XbPJvkn43fM3!^ zWmjI<@uLmH_w)wGvTUi&cRSoOkiXKNh);J^NAGW}$DMXNddPX^+bZLmFTWOl{JVeX z!olt(}*QUGv zp*wx3=fqNDYz8YWH*F}3Kp1EJOUaZwW8#v+Aq)9>PA(_y<>c1Gc=m&L<79nPZJ&?1 z3U{IAzC&%8_B-*?^%z{47cO$Cj-QX~09eeDKXu6%d4Fr$uK_f!u8LWabBe-S@>_c` z>;j#}lTYr%55NDz`25xvqTz}9t;3j^7*+UrJYL(5j@l+0T8H~xuQ_nKpYL8?pK8XN zH?I2mGS)s$&W3zImrW*aEp!h#t=)_DwN1(GCvo?SJMrlAyRr7=!`OQG%xf~^wR+57 zT8T@q+=%IGS7U5$TKG%eikFUd_oJiy+v2&&W-aEgt;WQSWnncGdylu{Z~x|}@gM)w z-^VXLyc>IJmwc2Mfemj}RHycmOy}ySM%7X+xs^U+0I=B8(&&cPMsH>$BoM>1_=dpqVNzu$QEx_BekWzN+pGiKr=Ano0b`CwH10-gBa z`MBuc5pMtSFaKV=P>;7>|7Ofg%~)oQj!wh`Yl$9z(Kb>x0mJR2Xx7mf+rZn*QK4l= zeAJOF?P$z(|G`7wUTbrpLU6wQt>2DIE2|o(?J19OZwU0niyifsRKR4TX8CF53Q@Mo z2k}jvbK7T7`LHpyx3T5t<0iN@Ao}r?UXC-uJyNYO9A->R^n+d%Q4{EF8`BmFS@M*uX`fLy#DKreaS+# z)9P?8{Z6i7CVa~}@B)_L@aOtOpgJ$N7Wd1&4!2SAP%qV6P%&;cf$1_+*F*p&{tlK( zd}%@a5B-yyFMe-QLZc-HIFf*4&U7`q*$RBfJ`;F*(k4(J>7cM`EfmCi|%0S!3~+$;*if zD;~0`x={l@j{WwL{eW3@Iso=yiq1{x@a?JrEiKN+<<(2xC1jwP3z|u2OrQ9mtOzid zSuoJ1F$4j$9at2WreXBGu_PWj5H1z0^x078Jk@bZpgEeNE5x1i7ax5VKmXY;qAP|c zH(>d8hG;M?xCGoVqARl`qy5I5p~9>=Qt`I z#T6YmUDG@2y8H|vX;|Qk5azjr-SrI()StOLr{X`Zx;4dH)FYD!53-3bxHKB$&!6&Q zSD6p3%*@S4Qvw$u3=bpNJP3r3fh)m*M4{oau`)R|DZx1*USc6j17Pt}PaU66`5AwT zPA<5VFXh64zi12{c-s&!gaCX^BL+{O%x_N7W8wXxM zAV0x*UfzE0nGa6rA{^`|kJNVg-!?o*Z{eD89I4;#{8Rj81zvjDZht${u(K$KDUQiO zAo$oHcbazFPJVbulK{_5nDI*@~N&2j+4n z0P~@Oak)c+hiC)%U&O1Vu@66_!4GE@ud=5z!-0v1VWhtmUJjRCrt91FB0syOO*g`m zm*_;CMw*V?X>2CHI3D@Hd(KbVnMu*cC=>DxS|AT7r^?%>53&MN+5<9h1AlNT6=8TT zQ{_##of(B6^2sPgRq+*(=moEY#ZQK1c+%bB{1o{3I6kVMMn6KcO6xRLUR8YBedWed z;G-~d5Q1GarQJhc`$7|F;N_T!A8>8SG=13i&UhC*(yUa4&qe=YlD1e;{FmF%}KKaf!!14wFC*5*mr?QclXi!dH2tvR2Db93;`Qs*ek9BAK3(vW58CaT zlYp9ou))#WZ^yCZ2)8b&4GvX7XWBgzZBCmWtZhYib0-EhIp)KA+aJ05#WW39~5%Cedwz2oySe0 z88l*}i4(5WEp3YhL{94R-ZQr(8ftsonBeJJWDO_z#fXy4%oQ}(7*l-K1}GP8uCBR- z`1W9HC$8MM(Z_LgGM^8kJu_CIp51?e6TGTQCI5jl`Kx_%B9`NBP$@*KJDAs%=exuku+F-`?%C z;x-@b7EP`WjmDH{I;w(FF4w7v8$GupEE<2j7i_xkbwu_l>5fs!H{X+`x1K=zPa@>_9iF5#gkk2;|KrngLwGpv1BfD_tU7WJ>FcNi}BF`Z@_lM zLzB(%sHx4(PdEHd{vZqP`+W0dKOWzE61VR?h%av6iziPv;?C`d@!;OWxP9wxJh=bJ zi~sxEyY4qumX_m%n>S+h#T&6GJ$>y;j7!GRmd`XsJvlgt-p*c}w5av)$HpfmgT@zU z#INUZu(=-}e{d`Q)1Ut!e)#UEvC|g4M%AaNF8H=0lruf}lUd1UWXbpli`CrLV2y`f zKjU)q1io)bhVYSS>XuCe_{lc_L{!!$y#cAT_<Kir$H`-rE^PN_^rMeX!EP5mN^v60D zPmEdK$qyMdBpG?<@ss%Ai+gH&W3ezhrVXi{ZHe~x4#+Ju3V=}_j;^f@z59tIQK>l-?co;>zqIeq7i8#m({?|jp;gAa+bsl+Wf zPRREZp99WpdPHw7r{H5?irJ0;+c+HhnLT)9+*>MbOT+do_@(olq z7}GwLTzJ@&rf!k%DiaI$EUeSs;E@s4x7XiPyy@Agcv0hwmE{%n>5^M}2T@la295Uj z_S}!L=-*I%uBJwx6zRkl!;ya*dN>|MLA`#ozwq-RKAxU?DgFW+I{FuE~F~J{HsC8XT%|a;>VV zLCB06RTJSRH@Kb(aQFBu_FBhkphvN}--+E;HxAV(K^F!!e1Ue^WFa4SM8c-q)#P4{ z_{EoAjHb%#jSy%i-M?C=viDCp1EXkT>mRAi!v4_3gCg=W{cUwP)$EfZ8lZ!NCt;$s znTMLSskU%T#~87pf&1V5#XrP@hfhp9m=5i9YEY9BHVx5*dgcvHzrh9qiG_@kF?cE6 zsXAPLU`xSk>U7?I=hc|z#s&*R;7l^|5ba3Adx|tn8Xh0PVgSMQKm^F3_^GYI`Te{1 zRktjRXaLXkM)6ux{KZ$lnVkCeh+y)RkY$e2b6RI+dR8=V3U{spYVt8V?Tsl0^n7Q5 z(`4LM@j|~~Gk|0#k!!z4ZN*WC*VaIl_xes~yfhr64~-}ab*wVU8+R5Cm38NuQJU(i z4t2uGf9&vv(@+_>Xt0HbrYTC+tlx}dsMH|>A)!m9kf7X7TX0Bgx+xRF9)+;+iD&Vf zmGhIP!dMh&G($v-bJc}U$M=n5GyB-wKa@Jo`LX22#u_ z0W_~1_}fl?#7X#87hyV&4ERcT;h|KCb3eW;Ueq&x6hG)nHUwuSr(Yj-`Uwl$4X*h0 z<5m8^CNtc{Zn!A?gp6euZpsC{!Pjj*VR-=^-cub^^2#7cTio_>z66vo>942~W|@Rt znkZE?+im*S9z?a9_>KTv_z`=C@s~6!@xa3q1o>6E;={sMeI8?x&I@%_e5G|cQhV`C zAnlK`xBMx$y=1phnQ8B<%8sf3i?r{DU8o~W;AFkoR?^5`rO9Z|HH!EZ?wHV`C|j$r zi|M5tX1Wy*8RTcWy1z+J_sWgi*9OgqZ<5@vNFEy=35{Uqcm`Wrv^g@2pBrctz+A}{n~FSn&C{DMmU$5LXF zzl?nMUjt{^GnszKyHdm_06)tzdz8RR$*)R-iIsR&`?q)TPsj6kQhjLZ550({0G@R~ zjxe4`9-@s<$JB3?7Q8TID%hKC*o&+stxedugjGc$9b*X73s8oMT{URgrE!=~K@F(8 zR)485pY|4?u^D&D;v@Jn5n()v0;&w;ZYlB3tgp_i%tPVyH#75iNVR5Pq&kt zMNGFVg}WRY2h-gl?>tUHrkOa@N5%tl{^a@Gzxu0Wm`vLU^Vo^7)JX@&7XE0ba6C-L zOXr${P>z$sBj0LZ1Axs|>XF-~zTGf5B65p9^5>1`BPPNsYj39&L!!li+&nu{E&ls^ z3gAyVHq%sReB_S>U&_fh*sL`U2R?Xl&7aeNVl7wg)YMd5T3+&-`Ft0QQ@q@&?TKIb z(CG_{OY!pM%ds*)AB!_Hu{=8$3)9oFFf$!98fQ+c?s&psOmnc>R3j!PCpG3jh^;4^ zh)88wh#`X;vZjmv;C+vy@rORDe8dU#@aR(ZP31W^@ARBF=6MwnELv)p zkDqSEGfs;S4a9`zI|th>%@amqYDRpexve(=4mlBd=)*h5qCNG_Er4q`ugAFNq@RBJ zc^oO6n*h)NeB4ICMQxFJ#vz*vs^{U6!Klwo$3goj-u>vK*r#1VZ?#1h+FyO~#rWU< z*?;R(uNzO-yz$VS745EEikZb3f8-ZEuDR-Pb3*NyLpmy1p;KQeFWh*UlL&{;SQwJ_ z;)G~c$v2|ggy-!j?LqC6(}mea^I#Qo{e9Kbp>Sidl$!#6cU|*lHi{C4fNL(ONr$!D zg37rdUfAE6e0#S?$Q+_JM! zP8yywUb?&_zG5B=PDvk>c~5B=w^Ta$Qz(mxIrzs3=YtlDXgnjs@RRm;60@qmDb?lP zZael44!sb{0$How4c^mcPROnGA*JC)jr#}aAb)tDCq!8It*gv+(R>WNgbyNhvwav( zJFVDPUiIOzSk(M(QvR%|d$27qp6&VrcRMd9Ddx8 zZ24?|H#XJY&sZ-|s!`3gzwz4F;+`a$t|s#VY^I zl;)ml^Lz^cx$AEr7{9~~o1ZQ*{q+x>1ut*@(|3R=C=PmaK|apU%4w2r=BG*(H++p9 z5aa{Bci(+4Hh%nb35=HWVWFFK5$YZ|EZh#NUDjWJIR@va6bFH&JSt>S6>LnhkQd{= zZo8wlQj6NklKI3ml3YKK9J=$-t@!!R-j64bpSqvh+T4%P^TBvwVJ@ysPpa+gNoEU@ z!g!Vn#rHa98k6zbnLBDYAYP=}f^~!56 z$Bh?n#^TkL^6^#G*)h-acH)F@@F4SitA@?6ff!Z$rmYT1_RyAh9EKH<15Dmr!hwRAQrMgu;CAH2FgU%FP*!O3yl6^&|=Ki_`! zwYW4hn|!2r++5n(JupAWrVISwWN^cfwPPk#eIeCVw8 z=S@l}&~QewR8KiFrl_+KQlE$(yt=g&CtDlQe)`Pi8x!C1Z4=-qYv&J`YTS#qoCUZv zbwl6JMh=I1E$csRBQx8I6C z`KNyr|MZ{!ar~n{`u%wQ?Kfgs?MEa_c<>0gAP0mIzbNBFq=Fv`x|X!E7xWjd8#E&pTV} zph1gPSB;{59NPy+YN*F?sLqRx0TWHVFa+!~f%5R;xyy~4Lw<+x@+&WTN68aHJf*Ud zl(Gm$v?~_h5~ng9*7vLYiC={wbTILSn$(f##OVvcv_N#!jKdG7O5XkP&*J^}KFUFV z&Q|-%!b~O|8sm;bHCmoON;XOSEzFBb2336FG@`)(y>rhC_G;bq08v-``FhhIyzx~cgc^-eX}D^`HPyO0AaSD0 zi%@{Km{5*4>V7})U}q;cXOzBTcrfB=DxO4QFn_qaA4lq_&r}Y=X?Vm1@2oo%0;rT- zWpXD+Jo(WnAppU_bdsOx&!k(p(D17rySy%|xNb9*zl4L@1B>21iNb(GZU#qa@-x4H zyDO#ORB(eH;FVXt7`P63qMUgN2S-YL<>B@-P*caw$$wx;kV+Cs%bo?2W^qHNgeZ#* zPA;Kp9B=^A`AhfH2|3b&15xl}(q=z}$&V*l2H;gDqT@2T!l^;`U|pSwg!KRuP?x#1 zk78EJZAf5&U$Dr$^i$yl&9kg>m-s}^lRJ3J(bpH;MC-RN-09zkTl`!f4lCZ&CmJ_- zQC69`6J9*=*AL`}UWU~F0V(}LM?0zHV#ij|+3hyl9$`4Ke^m>QlF;#N7I(4ZM83Nm zn82p)l#kt%1sP4m0>k-Rf7O~Q(;+Z0GVnrL;L3}99Pae`p^cGm;UDu!@$d7LO{K+- za5|U#5TAP?8vevC+2I8%_!CnD0VnnEvO%V`alRM_+|w|BppZ!=jr}hGgjTM1{40gKQnsf2L4hB%Ojxuz(h7Eg;S!a| z*fU<`&L1yi$j_5GCxRCUkk!1Rc$K~M;e+*YwO_Sm4U9SA#EC#A3>i5M=T_W?iLQ9h zZKw33pi`n*$!$LUif6*ozZB)OXU3J`*hI1YHz>;N0Ddy@^LW(rucgh5WC(7_%e1jd zSmq5}70-S}>mRyGdm&SCJt$Op<#PH;84mf_!T+zhD~-F4L%Q&{S;?W|er`#Aayj~8 zQnFuk3b|q?{486hbNTvySnRNN{Z;eN4g5?N6EB~cR}GcIwjC_#!r162MfGuh`e_hkTC@g zO@Y4xz-FIMQVvuwtNM}6Y5Vbt`?;)0lZE13REPeWT&V1PSkPsW-G>m=f8+L8fHq5> zl?=4}R2**J^?E*;$R??u^HLt?@;f=ym|SkgDQ>gC){k#vB~qzn_d=e$OjGg!2GLz6 zl){~c_P_^#@5jc$ju(vh=GOHWZ$z`vj3Z9TvPdWe&d3wSGrWO5GCn4-$S94?6^|PL zyn8$%z}x~DCRt^Iti}@c#hDl>r~i$b{_@1HEi6Cc2;1~2vALN4iGTvn71i2THRWI-``LeOY;ygE{`A9FagK;F^ z4&zWwP2(m`*70FNZdwnqn8;$S(sM!%es=lPevZLGbnYrI$_-upWXu@PCXI>inly`- zyItNf*F<0V(5{#tOwUcn%IYN_s#(*-ojDgD_T=XC%FJ}UdF6#@%8%3U6rJ%oPs{l2 zT}UC#IQdBNd1{7RpzWOlFS0WS;Pj-Q-GF974Kc*zxRBX2%>D^~(M|l#sp5SWTUAab z+|BxQG^d*8p_%547qE}i_k;5(PtXhxXpVOjPo8baEjV!+JKKBCjF0nj3X~7Cwp#gq zFsBxe)IK6cEcS8=)N+fqcXr~12cAYcIzEcpbi>~*`G;Tp zGVX6|#yPyE!co81E?#V)f<~*DLRubEA5coAXWevGl8^ z1%!a0g)kSK&q@_;!g2Med?XJTq`$~J^pj?Bc}Fsd=bt*gb~GjbZ(dr8)s=;K;reR4@%oGL;`OU>Wo0Rr=BHzRb}FXS z{)Q!%%W+K;;x!qoelAy3v35%YTS}c<;;D z=$yuJjK}z-`r=WQOLKW-7n=Zwg5N#mkgn=YFd+nVL9^sU*+gU^}5<1 zWTZb(V)?2M0Wa|~x5+%eR1k~(6@95&{>DrhIq`s5()9E|kU^ z6DohiPk;4E?1|48X69mw^(nz3J~z{N&Z%|SirL0Uy!H|s02-6fA0MAbXL~ocH+JIW z_$+4UrqquddVO?ay6Gph{_e-`EBZhu9;tHWos5>fA28Vf(lN|6x<`1e5=ElnD&aT?Oe2Wf#(M5DQ6&-n@qtWC^pi8l|v=rBGyb#~|);sa--}zR& z_4PMnd1+DntF|n9vCvOhAf;u7^MJd6Z)+;k@S;6wO?1Z>zxqJB(wYAege86@C-6;q zmU&Q*ILXU%c1-G5{N=ekA;>vGC@)&^cnt>_u6LW6w(qB4^Plv^F!JDu+B`(lilIMP zz4|>OfH?WF^Xs>~gct)Lh>Y;(Ehu@)n=ddk0Fs*mm?33V0f9rq9#*AHa_WAPQ!DaU zCkH}uSg^8yK>RV%A9UiF(-~r}!7;&9gXB%a6Ai|W_x3eGk>Fx?PQqrZwI6@^!ym_k zwM{h;25k@m5>XMVc-Rr^kn5dU9B}j6}UAfjBv;h7A5{%qIL<^i<%z_HnH5 z9>%^}F$>_xM}f9L;*W~9O@6M(LRe^n(4iqMFD}Hjt5-z}F}`4XfR8{@IxFZT|Fj!p znfzC#!khu&RkRXDeEZ213nLBtzne5fR!0m?X_V{NB>4Id_i4mH)&&gMqE_4eygo0;+?!sT&1{Wvil z&9DY*XYSBA0YO7y@a`Q+(figHU&g)$nJmsrti-g0{`|zGPojEpUNHRCY{4ECkJJbg zX+4QxKm|_XRf%y6C)zSPO<11!NaN zQW#NoFQAGi= z{EP7PZv|Y+qJMZX+awAoa99{U~zNql86xHL5u*=~z@<=#YPU6_K-M;-a#--qmaWOA@ zJDuR-0j;Tb=q7(F*^N80g8EgP$;B-?73v#1Em5lEMSO<|3Bw^Dl+yt#;azlRdi~?Z zCDZxgNq7~8AL)!su}j0Bu5aSthueRdj%Oi=)7RuepcTN;Sc|9dc7BcvKENa({T#(< zqydIkahr753m#ulzwRz7(-^DNh9`}x>}cbJ9aFl{*K}5P4nvs^I4Vz9*vgtnq{8mhn_I85dotDt(D(g&hSzm%R{?JPIBc;knK$eF0oW?h%o6;E+X)*ma!Wh3j+&@E?+9V_@MK}EwVnS-$dECD*M z75PyIRl6ZQ{@5j>xBeO1cdRGV5*#K0D$XhS7lPYbAy@jNDkbkHK`lY7;r>m3O;Vj z*n=@S6GMp2Tqh6ls9f})_yL=;;U>QFvs+<~M;?zCo|S(zB1y45+8_RtjD+7I_+q0ZN-5m>3eJI z(b?RMldk4Wg2_qV6P4jm@lTcZRJ1rA9g3rK;ixvnXF#vXP8?kOQjK=RaWpYi-;He+(N6P31>ID zg3CMZobH5HYyj{fSCPOlP>j>z9o}g6B%ih=#Yt)6F;(JpVWT-6%bMUfrl&RTAB&^T zNsJ5*$4ql7=7ksUNOzBU(x~MdAYH*(+un~whw$G zfK7svfm4mE2YoVs`RXN)q1%E7kGmaetjy`$L&~PPDm=H>If_63`|rnxckinnXtFAU z>SSSdHva5S|1?%tFZr8$3oA=;?WLPhpKe&Dz?a;N=Q#=9`S&6{iZVlji@H*>o5#?? zDdVPT`6TVWnaV*`0*bZ?e4>g@@E|uzn5S9dDjkd3w3&mQ125vvEzS5A0E;f(n4r%i z50p*P382byvUeDpk2d{84|T~~=3ZcA4pJ3>=xHQ=;IBI3yBF{VO_`@QpbN5tlk;r& zMYkJk_Z~%q4?l{J;jiK0f#~u?;oy0+PrC7UKmU1b?e4|5-gv`@$-J4VwnWZ;TiNi* zlcsqZGfVUSsIqTV(Vm&Vd48rj8S^s5cM+*~$(|FnL-+-CqINwrlJmiq_?#OwyqOK# zayW28Fs`l4t8AySvAHAg96V&+eWIo#Spa{id}Bi+imS1d(y=ySxhd^@oK;!ml!9Em z^WRV%aR_ir{4^=JQ_`%zAkT;o%A|!Qs0ZKy3V)vZ;rof){O4I;ub()d!8laB`-kn= z5^azdEZ5Sue&?IN6>q%shWI4mx!y?Qg*2r^&Z?ZetIhWmSzzUR8}JlQj7(@w>+eFU ztj162{fbY)3OUN6wbzyGE_j>nGRc#+BK=%$%a7P{8>W6Svn;k*K}WAKoT<&;xf8ux z_u_OA>&n3+=B?s@%!4M#5;DxTr$2h(+hul{Y9d{J)R zz&_qRh$ruT6#wuy-;XvHxH#PIo%ql;;5L{$3~A zl22!9GUJW0=%}7Hw|D)L#n)fG5%Y7+s5g0rTQt{r;N(R8z3LuXu?Wb5GA8u&x&-r4 z)g=q1tV?)A;kBydO_?G)5S$MXfOvV`CGNsgg~! z2ima`PK-~eJg2eU+BH+scf-G!)S>%B>QCASVKA91i)Mt42^Jdw&@g$Paf9kW`0~^Z zZ{7Q?e!=7W81NS38`rfWy5E&uxv30llayC=cYkL)HuewV=KONJdF@)v)F$2D`FQQF z{P*|wqgktKc*%{n6OSL+2xMU&9^Tne8`;VSLt>oZ#jhhrJ&>c@j_7*UZmsyxzEWJzl)|l4T%^|E;~2+iz{M=JxDw2?%~Z zx%0eU(a_A}PvMm}4^A~58un%^C-k8^r~OaiJ8lAAT8^=~nK%WGOOwA<>$QRrij%fW zl`|$n4rII{8yz6oD0-{dvWh2EuV*Tx*VB+bm_>^Wsu#5fwx9-v%X4D69t<4*oOOb= z-9MNp*(r0n^&^G{FNXZ+iii1;)p2nn%W_kfvdB>sG8q>eQGNzf?bz#W-~mkG#j|3Z z*hktiCj}n$o_NSDIv9W4R>-5I53tcZoyozT<5t_xo-+p+`p)Gm-*a?fM~7twA}MZr zsAChc*kuMycErXfIN2`&4&tRCn0~uXdQ=tOsE2&Tps1(?4A`P<6)gGfjy?1S>-~O_EWv67%FaZ|9%H zxCG0g#=dw!DXqr^V@&vQl8sXz7H;yd zHJUNMv}D{lQ3Ot^0Q1Wj&lriXR0w~8e{XYB6M}B$otPUX1U%)(ZVZcAm5+|gs8c@5 zu0Q+ZmWHm-lAUe7hcLz>kII06bKS~LXA7_Uoi5S|9_f98Nq>2YK=q*g?I1-4?!>9Ls&2f7*%IXzAB^#_2w1qz?54#+s_NFEDTij zB<-6Lf|JNzzzJH}A1gQ}ex96=hw{r){h|XMxdu-nj2fWq_*IKx;t>`Kz4)bc@UrPF zp~a$r^CJxD3_jqDqOhh*iI2jKCJk`yLT` zLHvrpEKV=0!SF*Ia94XIy+JCj>-mCd82rdy#RF%X1!l^+Do|yjTnaNx(}rMvh@YnM zARJeTYq$N&Ux9CL;`HMseEldd@r-!SC(!A{r*o0jCx;o-m42s!W971^AN7~zl)g}p zwmX7oVR};j3*k0#%K%Nqr@OU3xK*$!H__5aWrwtlQZD?kC`rZBhKrv)QFfFx*!4?P z+@2B9J=`iji) zs%UBiQN=X9WVh28V@YR8n&oq?E6?Y$)N%SIk%^ZcRhaGI1b(z};#7gAiA<9A@fHqP z$plzT_`qEb$FM&%O@2UMjBh)1p>3BF;i(*{SY;<2c3@XL2MonAZy9b$18$6G`+f;6 zGfP$RG2zdBt9a6cS9B;mz^y&^wP+rnR^RR!HADdx@twzWO&5x_FH=epsU2dVoa90~ zus?3KIS>3*R9{(_$$~56F7RgDfQ;nHP2h9d=d9Cwx>WOg?C)CHAlIb!NnEuHF++~ib9kE!$;xywi@MMvZgA?P^ znn#EZd^-$UGH&z7*MuvJA3o7q{7pA-E}8(wT9vyBcNtWOTn>{Kp@uYZ9@Hd$@JO(F zsvC{9SrFz;-y^ifpy*@GXO7#wIAM`h;n0mb8W)fAVclUSr{o1aDWhoS{#o^P!cEn+ z%{aLGFt%^qjjcQPqqVN_?QY8_xfs`var1R{Iz|^~)DJddK=zTtIwJe|E%{*w7ZIC~n4)D9ZDhnI)#N`Aq*YtT7Xk?5V=Bf|X z4SD9`k?istpBVQkQ$BXc^Fb4}$!Kuee|kD5ChG2wQjWl$!a;Qm?RhF;er7gin==X+ zh*rB3du`E6aW_@AgKjUnvTy9|$NJiq^POLq5niLQ&D+7p7@b>`0I01v3h+~UIw96R#Cg%jstFxXl{CVB7P8WP;)#BG_SUH{qk}giVxe| zUXlc<7XR7g03V)1nH=I#D&?heRfqJ*6;td@fa!=Le?r=t1Fm;EQB&G!m32&2z``i$ zkyqIY%?@5Pg#5Par>8i4pP~mY3LvjD^(B1#_i^tq+RBQt3Ul6N&Aq?-`+pR*G2Yas z$_iEFfUd4X#pA>=K~1%7z5xghiz|z!&DQp|7aRE|2QbVtYKOFW6wjSii?EghvS&z^ z0$B8M-XtK;!g`LB5go?}xRhz7T#UE4fzW&KFnYJ|#re*jWNcUT7i7Vru4sphJBDYc zqJHCgjNP~z=gN!4U`{rh9~i$GXwuc3OW89!!90_k?8LoW_v6m5K8>IM;3x6nFFzEF zxMr#AfcW>&s8~Fz-(8@kU~Gn9yq$vcnIoyYM{<-hbcN-HS((Z6AMrJAU@@XYrqZ z{ImG$pMMxX72c2b58`BCBk>)Hfn~Xd7%oI-TMWh9Vy-0ls7LpEgJR z-QC>u?V&fXUX2t{|lj0-JheRIQOrfI%cA{dNMxWR>d86M>Af8NM%`<084F_l;O zjftL=jVGCS)r4?oV!AOK^Xfx+_Q>)}8PK-QWbgDku`oRr zuf2H5ecpLjvQ~NTZ|quzjd7?dPGh8|x*H#hUwwKfe)-W|<-zIyCGkYfV;)+B=?U`E z?sJv?MEK){qF;hPp$&&QaI?Y7b8}~6R6h27=fOSm0cxtzjF)e`th%0b``y{zF--bj zKCpW%c}702_aU`+Hgiq)L;`#)2jr$KtW6PD#diO|m~4peC}@s8tntVA>`a`C25$dA zpgh1!hy5_+<#HH)@gvVHfBKov82=Fr--%ba*>!Rxsj6ziJ*sl>20w=^9FCv(g!RaZ zr_v-7LDE08GljQ_nE z`kl*HzsJJt5ljL~s#Oxxkhlg3a0aNpdZxm$GoBy+Wf70g1w~2KC`C+s#?+DW{Er9a z{DBB@)wuk`i3SbBz+YdB<3~?ooU|%vAYAL}T;v{6L*R<fH`G^pyY$X&mKSZCJ+O> zLBU|cz`K-OEkE($Or~WlD;(93G5)hI?TsR!F z0FjM^NpqgsS7*Qut;)rQP_;qwTqO-WFtNAd$jStbooG5lI#t&RZG-v|3@=K`1THj# zXABoD-ZB3{45$ZenJFcU+ja(2L($d%<>}*x{^&I)5D?^Jv@viOjr@HB34P!*VIS3m zeQ2Bk%9uJqby&g=+!Sh4qb7&hlxE@73-}D?)vm!=2)eEY*daBK3LDC$ID;$*pc#Dd zY>x&6)@E__$7Yv_pfR1 zq>g905{`e8IOAh?P^L|fRFw~^3U+FXaiu>> zF4dp?N$SFs6!x&wIQ0`tyR7D^VnR1}`uZ0=vkWD7-~)tT!W~!bv&8!f9GT!yrRA4w z`LSOD%J{OUTmGd#a3XtU=b3*c9!X>|?)pbzwH+_=wQnDY{z_fqDllyqPnqv9(T%!! z5q|RqvDyVETwT83pzQsd!i-Rw$xql*8on&z1eE@YEOa$blJ3eh%kH3jU^VM>83yv<8-J0$AoDtDGMAz$}XT zv9qFs=p(xEhB>q%syA^ObaaPY5qk6?5a-_Z+9d4NJ@TETNr zsw&Lsey zFh3B;qLs!LzNv&efu$me`b_-rb!yq4L&@mocT7N*^zemwgP`Kqhi?GFiGFoh6E?{l z&CbLV! zpgg2;xk}yWpSRKBDQ+FG!8E|zyP7YY?6%{0`yjgOJJQ?H(Zv7o*>)VteWYG_a@uuFe8ISv(`MtE&+vQ)ZJ^sejQx!r>8)sK(#^*s+oD0Y)sD_y%YHi#p2Y5* z2XV+vX{DK(n~k~E)tI`n5;HeeqjqU28ocp*X)#7u=3{huE+$qNV|Za!6YfR~*6J}f z(}=ODS`3L^w5!p^c+}@6V|5j?C3DI*P9zA%R zr~6fxeC!rkHN$47NY~?uAJrWPqTsJ1)z?v{jN`erA>838=3U(2o)(U?R~BO7>azG? zF&3mT`3UYj8y3P7=3yb1?}xFV<%KLbTk?Q;3MbT===&zH;)1ttF^egv$8n`yT2LO- z^L~bfrvYdR+z4n1rz7FL(>jdJ{k>?ZJYI;O7>#{}?a6(3s`;VjH;*(wx%=Q@Jbe5( z9zA**yQ*hCirQ#2bKzcX@1g4F&;RcG@$vl!aSor+=9SOt;!^zEfAeqRx4!)?@#{p? zr>0zghSw4c((EHi0vGOWL%O8iRo!(}P)WkY7E@%n}g2MwVP-<*R!%pEzTG$i@6q4vOscPBIl>uMar91ULRa!PV| zAb$S&XYs+8U&NKAmAJmN?2S6wBpXwfNy=vTuoH_nuEm7-Y<77eE?rxW;mI-IL>kvv zlK0X_8?}52Ms>rYA2?V(2yaff^6U_DjdsrMgM)TkygKR=?!1e>uQq%x^6&&mS7BEc zr(;oVcjMVc9C2Dza87tWN<0fr;HTQr98dFTH7I{aKz^9ef_WZwCeBX&hCYhFDPG;` zb}bKQ)bH?Gvgxd{dR|XjMa~6&3ZHTUGN4+>v9doFS zy7|UiUynCleoJj!HAWuFkMdV@T5sA2Mo;*#X2cUKECRCDF*+fJd#}@8>+^Z=Np-ch!%uv1`6jFzk!QVO}oEvR#V)f&QHh=AQE2{q(bF zKnazR%{%By*_q(8na_gm$oyPPUc17|Xq*Tnx6`N}o?!E)zq27@;lzTc#=c$2>x0dm zczWk?eEIp^_~gS+;@-Xc?$2(%d^6s9`>lBMt=D5#Fj>D~L$NV89Y^h>7*aoQNxZfs z*>k+ti^H8xj0>L$c$=GULT^HSNJITcSMJ+S*5bo29>$#~>+#^}roUbJY;!-h4i01I zuqT<;jjjE5>_~<^R{wHeJom-J$MNBp_u|JNeI7sm2B71^V;H+6*;V zxe4=H2)wNHzJ;UuXox5Hz&Z?C@e^sOJ0G%CU2vkjCV2_ZKnHk&Hb)h}FUbSyZ`3AP zVLB0x_ck}8E_%Iv<9aNNPsZHbjN3q4?PP6zBjtx+@?8R+RP6Bm7QtkUz#I9j4RN@W z40)!Iax*vMTQ=}IAI0T4w9#fGKKcAk{NTsG5Dp{mXBv}rC4)CKW`S1Htf#gQTd_DZ z5ih^6;*Icuf#GOv?E9&1HUo#%MtF{@Hs6dd?>~!oKlmb!hBRK7XvXa9Z26e7_)|Dq zh6@k+TIhi+@*=%>jc;(ED*1#2z~s$*Hh|b9{qn)Rc)GrBIKX@1%C)$UZzyp#El9zJdWv4)SaMWz@p|0izbMO5h7*F+?x@T2cmxkzVOc!5_91h|H!_9blvU}?(dI+YjSAmWe= zaYuQsTm0`nQsIZYyK%6w;jy9Hlo3;q3h43+Cm-Z3_`wT2kI6TsjyUz-?$8-|Obed; z4gJCDmG5O|B7&#`rD5^j(}@=ri8$n)e+CB>l*RuM78%_D^#>qn7gz`}z^aLn`5>+v zERcm9gIV&)-f@ANAF&!0Yuk2Lu7TjCU4 z6sib7zTjqjWyi%g0OsnWG20l9iP1rofm0^JS>Z0P;`Wqpt9KU9b`E1}uNyrz`s&%A zuc(p@6-)YT2+BwPRrzU{*H$n2DWG9ZJ}R8}2Oe=y(7`xn(DQiy%|BGdEG{D&T9TLJ zmlOnHq?Z-xVFm^(pMUy!eEG#~`D8t0JQEI!8QtauyBQUSqh!1azP)kqFOzcl3s0@k^?{E!$e&td$ zW@r3Sme%&JPx*LYApzyOln~up*F;PcDEO(mCdE4T^W9MJm4MYGk%2e`BM$i>{C%Rp zWrN(+phkX*1YeVu57CS>xX}RDor22aL5pZi2bUdE@;fkGALLEB04znk>rb9UYkyzuh&U>T+6>PoaSe>Ce(V@Jtpv|Rvl(ORwE5s2ZNvpvJSDckWl>a; zJQpYsycWLjlqk;P6#|Tb4V^D;HVCk*uKY2^3BmOSfb0&J1_pFC9B2Xkge!E>pODNv zgd!9`X5iiDX_U--21$582H+5+AKOWf5-g|S$MGst77O3>c6ofMUq$O;Yd2B!}P^&KglWbw%rlZ+ka`6$o)9D{2YPd<9cqO3K%ID zuwTx;n_tR`Q`$1a4O?d6#S$xTF*WNpO+Ur;;Lc{2yLu|id`a6DP0-b|YM6YV;!J(j znffu!3Oq@2Jn~@RZvInxA(SPQ7dV4oy8LS#t<#Rb4U~CCrrh?zj+Uz8P`u}!SW9jY z)BJ^Z@x$#ncBCn{@gj~R6=iy6`ZS5(hm>*UZ$7h6D$6a*DjszKe`MZCQBGzq9CXdP|P>pX-Ac6NusXW55dHiJ*Sl#*KWSzKA0nkq4BE2}l*k zhQRR-?yW};qJ6CK{rE^+y?H$@-@M`X;ai(Ke)*a^4eY`Ehcs+vynpBTf9c!VYeSZB0hUp+CbG!3CP|=QRE?i_^-J6Z%I7GMPB? zEUD~0o{rgXM{n=Ir|o;|du6eID~>n!;&|sEPTPl`RH+91=Nky3W3Ac9H=s3lAx|%A zKnL;_9VHb!8RkT^H(gZTF^%DxOA9f%G#|~C`KT|<$vq!aGtFpBPQ>)gRLrif#1!wv zUz(5eMlE7Wn$2&?rgO#dAu1NBG@oLOHdddEiH7_|%i~i`{#38^Sx(+_SVUtuF$?dr z4~-4^IhALRp2e+?Zh3=(xe#O65%C0kwj|tGL|EV4ic=Ma+taO1%ZnU*Y>@>U#;z-H`Iwkfxff?*iW>;avoU*VG3GBVs3;S0 zAli2ixb2$@{t%JFN8o1GG-t^aT(>FyY4c(>KA22=#_25hEG;g@%KTC+&d$Zm%#6gw zxfif_|GX=n-O}8l)$RK9zqriL6P%6+hD_oe9Cl)Be=i<9c@}q`J&Mn6--#!(bMWRs z6ZgOU`MdGiiZ$c$3r9+;(6w-xDdtb7?YrIl*6L zJz~)!ZvfDC5mDgE!W?r$PX2e*E~ojZ=dkKUZEsMf=k3B_eg7bS`pE}=#_8>wFUI23 zl;@L_!wXcxm5=Wp3zz@;|N4K4`70~xs*huVx9S^euWAF_qV_FE;pq0PxYeR$KDR2` zC=5IG2abm<+(-uTED_%VbfP~0Me#OpHzm7xq5?U9I0pvb18{lC zS81R(vXsTcYFz@^RxRoShwmTkDc_dj@Lhn0`U2IIVK7dn36M6^SKWwYwEX$-@1g8$ z0vsW?sRE_xsVdiwHJ?@(PqYGSQuDv>eET~wKQrgLpiaz}R6DelhPPNdVl2qUn-~A( zpQoldtXGT4$w`%4n|1u;Lfr23(aP*>Ih?J^5@)}L4;!-qEH8$(ox@+aI% z2}or*AuY5MhVX=+2h~3uK6@5td%Mw`7XK=5K0MFUL=sIZt7HcJsX6qhWN&TtQk+SS z()Jml!IOM5g?TuKKHEF{vAeMyPwqd7hqoWb{m<^j;|GtWpT_pqwh_8|bv536{k3@Y z^_RpOb>VU1P2FzqFqW@hj+M7xiAz_PW2QD1?MLfzvLjs7HxhSR?Q5Z~dAH;z-&kpA zJn`nW7vkp1Y8;DEK705qo(hMD>pSuA*+zW&<%9T4`Ty$kd-2ho2l2tJ`|-)$`|;te zd-1C~cjH&L@5SfO*5dB^c05&owtaXM9aXw|bICjC#(qa5mS+}Yu_-xRZ^R_e{)nUe zVQ}$uE@rC@AeU4}2fa?L?QV*9#1nE;-#(0htW%x&P_W#&K1d}Y*5LYcZ&)?i6qkH) zeJL%G;C<4v_|FXh+HYO)a;=0mcp9T>qh4>3cKr)h`=}Qqd;nN7VQqIWu1faaTv&=_ zHZkU=+%G*{-|~22c6x>+=GC_Pd=|V}`{cF`AC;%Q)9=AUV-sV-He#Zl3-JCf$%Jqd zFYl{=yyphc<`o75UQ+DH}oX8JhyF?Soi* zsP?CRiZw!>s2bx&g~Gv$H8T!f9I2l_lG#&V#%%@U32-X;>oTEiz+>u{paG2p<;aYW zz*qcQ=F(j{RIF3;%rAO9U_+GIKe_-$TE5Y4v*`##fm+Wy}YjT-m@D+%X|y zp)7>C#xguQkv9N9UQrV1QfR4B3GoJ3=Y%*73dS@8s-h_rc|jC}Jv&R|Tp{JU-NKAF z0EU!yPzC5nP#tV;_=6iQ4d#FH@u%^G#a-cnf(a-$*_t4B2$tzZXkwK3h2jN#u@`tYrJp^17QcM=7x9#j+?eT}(+7h( z@B)Ttl4j*!lq@tY=V{Lj?B{_$bfN(Z{)ZoY6fdizo4dT?D<(AS9JneO^{e)|gIN>Trm4wYV+zUtga0&S1ksn%qIfirm! zNO{!~Js5ztCkTGI8|)6x&BegDCW8n_fEbYS5uJS-Kr~??f_7+sE5*UBa=AY7ryRBu zrrcClD!jG*Q5HT@1z#(W&mumzTPF{Az$mxrLK+;XDz6HV!_u1mQsh^`Lpe_6A&2Uj zxI}lSSjDUIKmkHdms1WKxN#9ioQtZ&Cxlw{0+r~^LY^2p1Kn<_c2we^Q2;Kg$|J)} z0a>4SCUzHlmEP?P(++;5Di4|2{$!!bHoU*;wvvU|d6Pu#Nbm<3^w7RF zX+LkZa^YW-z;g}qeC79|s&L2*?3KzMzlLXJ;`M9cRa%voPLxF|+mSIR(jN!K!c|QaoDM}<)7DS(8$Fz1KR^n<%6h?GVlm;#*Jk^Z4S3m4Fiw#4E-3xk{-HZ3sauC88+0)ms-mV!Ay1MRmzxeG3~W1{=z zE_QIjbhvO6Jhwl)F$;an7g(fZ8jQl=4d-otCsN!hTxR7@kUcS_?JkZg43oIf$atXS zHe9(}*38p+^wZ*v9}bj4;H9z<|#w=Btz zDQ_IF!jZb9E=oEA2}h^D?2cN>gIo3G*z`#(o-l!B;x?u+!?4<1(QMMY8*$sCzQIZ< zOWp<|d(ufc%1%3F;pA*UGDm&AznMk4l7tD6aU*&0bNPy2pI+doEE&&pxFVm_6rG)4 z#;y9JoVekUG-VTjTRz!mD1KrM7Rq1IN_mhSz#@%5Iw&NO*^kzr#l2@wLcOS}e=uHt z^|hFtnThu1PV7F}^7UrMi8L9q$O9NkD~CV2%xTrVR=#_`yX$cu3reGsX*)YR8Xq18 z&$zHq&G?c9Y2L&iWfC|z?8SNFx}JoWCy~mJGI7$9Hq5Ch4w2+Xp0lko?&8TLcw$I6 zj!PCyNCr;KOvZ@DljF_F7~_h&_?2;4kL%XbCtaE9lX{13jpYtQP`%hc(yYa3QjTqo5fSPbrJQmBrnc?TK%I=Rfa&;ap9L~i9XBv+VX$;G$*i;oC+)~g!s7pATzdUR%-vjx z^SW>!Q9TIPP(8CqN&m#6Dm=^LLwBzue6~~? z#U}{m&pW?7+XZhDn_>txTipKaD6IDPkBpMi(ey*VW!hC^XZZ;SZf5Y_ zHtm2@|C9xj4WLQ!`;pqn*7~N~&6MU$ey+%ERB(ZbA}{1y=P34`?L@QQP+RPpcSj~9 z{~WiJ!9P-fp#GE>-^XCn0Xg6sV9-r4X?MHNHZ}hli3yE6dYT(4(8b{?pFz#_Kf8A) z-uvWJ&HsnuYcIYMlgwLG$6oxGB3C}rdn}ya`NKbu{AkCJ+G~BPrYzt)(O3+|O(Pai z%xuU3rDahPdC=7yG*2K8dZUr&VOnjCJ;gh<8aKoFcqvb5^kQv$(?fwX(dIy7Ql2Kh zwz?EMo4ap@X4x5pu{S+Zj6I0~mB~I(pW_ZSj=d8d{Ek0BuN;jzR zZ1bc;)+?8^D-OKfQ@(!wM+kBoKn(7>)CfAB@r)6bA~!IW=9l8Pzwz7RS3##;SwUAS z4zKjCi`K9?-y1X3Cxhanq{Q+WihLnZML>|Z{I^bs9 zmo)K)kp7To)jEv-ZBMh}6}w3z+2j5dImB%%p7Yw<^>a4h*;X6gQ-5*-y+rF{m2aTY zh>@km=uOmO|F{=B3O^Ko?JI8ePX2@25900@cjMumhw=3O)7atgq2vhTalU4myow9r?m-vF`v1{rxcuvUQx>5T&+7&N~PR%Qeap{$-s!Q=$yBCN1 zhw7V-qdqhmFR!k|YO@iO>i>84R8txYTwc5sFJF5x7G@Syu1S$Zv>q9g{G5!L>DibV zn{;`*y;FY&g=e_ARmYQMlN!5^4vs`kvVW#N9jmj;vCy1}+K|TbrvrZ4dUTKtZ0eow zI2>xIb!@rYmVKkO?eC?yKUMiK;XV2j=*zl>*GQx(JT=4OFl~%BIz6ubO@73s?yBdJ zXIxUu8uvS1-{BzW?(Tu$pZi-CR2Pfm;5@GQoQ6k6vp&iVD8^vFl-z&s zgU=OXG-f65ryA47pEPWi(4^p1`p2W=cHCHjw+ri}Ri zG4|h0wkAn>C+4X$k4UY>)umN;b$5yG9fhq)iSj_=cE>VeosW4o7DhljLi3h^6>ER@bHjtyx-lu6;D?d z57CGI&f3(77e-Kx5H)9259zBasy=61ERP4^BXn>jq_6OjULb4u)T23jRl2D*IB2~|T_bDOy-Lg5 zrw4k{x`FZ`Gqs6R^>>Ub$j5I^P&B3K<^a*Vb8G-8Lcj+{hb}yY=B{y{T%m9Rpdl0P z4*;{sD&jI|dU8QH=`qmX?T?s{CY_d7<%37U)aBFh@+*#kZ1<29fCj%kV{5KICW;ag^5Z`MrA0;GOYRPN3jl)yG?*xwn=A)-PG5e8@J-)4?p(Dc3pQ0 zcU>sUR34molFPpi=SlE6*mfevKW?1Rpj=gu#FKSRzAj(86jxt+Lju=o*F`$nk=!iA z(-0W&@`@-sa-108BSH7?-}68mPWX`=3=NOO(8!qY{vVJ6E;7boyqC!l6C*vGWTOEx zC>+ovs5U+7*Nf@oxO0(B1G7goAm^kRmb?v)3qN=L`4#6%{%U@YKjd^Q+EN+mYiH_h-M!K8Xpn8KYlhtUZDkQU3-ZZ!$mVv>d8b{kSh zs1B$qWy~8Cp6p8ru=qbPG2zqsp6HO9@d=Ok#6a9{1mG58%MeiHpGZwK;gFvn(O7JmrkVcD77u4l@LoYSsw(@V1%K^Y2s;a|JFg@9tfl%j0T!<9O9AAu?L zj32sf<@{1PoK6o;$1836lVRaVx}#GAVRt?yJhz*q57c)kA&Y#R=wb55sbIoAiBbZ; z4Wz-Z-z3Tln`ML1Hu{FPq6w2XXoN34WG3TGou%=*JjfnAOrhzwBv1j{a))Kwb99#T z9A(@IPmTw-Y=>lbJO2_-K(>;RLq#PT{LULbQokBMq_SynDVog-@zbw<0*~worzbqn zm7mnMQU>rOO-MCBv@ICxOYvQP9&mXoj2vq2xKR;`bkkv?`VQtKdNi%Rmc&1mOb+i z3t0e8ZsYNP!iyoP0jXc=lZ8GeBW^E}8{QDmgqOuO*M;Gg!1U-x|NfA-`g$+;$lWzi zi=OcbjhRQ?PEYp^UG`Ewcc`MNw1Y%bGJK4UzSxT=jK?)O;wnGu1M8YBlfWvyWy$4| zt#n=>lfV6@i{d>N6s+ZpeBpPIYcdvUjjWx=?!jJs_TBYp9`0+r(jB9d6Y=^0azKs0 z>#wU#9r+dIDd7vl;!lAGU#JLdweKHCx&BX zbt9IaF8NgL%;mXg?KYx5T#t$QG3U=>Yj35;3-{g9S6v!I_DYv=KW(qZmwu|6FxCfR zV5k;-gBlZ#XzV#si>mBCg>!Wdi}t<470p*vm-2UN4ijuJ2v<*Sz}M_>jSTY3DSL4C zgHN>d>*;1J%atNW2O0zOn);!tSaTZ95(8&0_I$Vp(FI@FK{OfD$Ui>-HICOir89QTtCvu_6RvcpE&1~hzL>@U}lT|as*jnFE-n*7ZCdbguiFH~b z*9oye&lr`D40@c)cvEu3nA(RDETic}IkL*c`%Fk!Y^(HDVz@pWqr+n{J3ANC<1;Za zIw`pujapyLA3^TU3t%kk(_Yz70vGw8ie|10YEp+P3Man@^t^EGTKtQD{?FqlKlzDi zblF5di`<+x#m#1kPf?0|79)7`l)lC$PcFNw-3h3 zG7s>9Kn8x5MDX8<)8hjIk|Ej(rwE~wrha^StwJ;|Jm(!dbh^gdig z#fB8+<&$BUgq(<4!z)T8+~ z*Z3mu=?bC~Up>viK5VZ4WxWPJkMmPqm&HvUkDF9qz7AI~<)rV4T&t$im#8^ zSY3~n^bv;;X}@fYP0dWkh0F6^^q;>l8q_bGuD;?dd{$xNl_x>L>nz6gN zWBN}d@0={JjZ|W2MtWyz)coVRBKkewsV+EGM@)_k#egfe({GWGc6@L!UYNfS*XHKq z;`D6HjEu$Q>FKyKH5V^lxD+ogT#T#J3o%w5bbdQKO|R>r+v#gZ6+S&O>g#^0Jr%bL zKGM!dpIH?4ed($nc)#6h#Ni3+geS43{&iz_C$&==DD`c*V7(1_QeB}BkZ;+n(a^84 z=7ZfYeh;fHu(1a$#WI}q1)Bpk_3gYx#o~Xj=~dmj4RFmkn`2~&PVcmw9|!?&aPf9w zRc+?-#AM7256Ar6wAy`dJX~Ck#?DSmj*W>v(I&cE>eHYb`nPtry*WsG<6$F%w^umr z&gp+>Lk9UEGyVMP=63w{lh0$bu_qdjy=gd8`|jb=dL^#3$quDPwa&ork>o`0ATZj?*?F~ zLr3aiVcU!5c|EMXE~|Q?&0@GZ4gElpLMwDJ-Yxwg^5M-@g}2w$WUOm4HI^gX^yLK0 za3!{Ny5&mxOl_S*#HW0eUHH&N9C+Zs2XBCuH;nM}CJ&g|$Tn)xQb)0_0Yx*j0RO5GWwy7UK;=I!eugd2(qCb8C^~ZVD&i6IO+g1Ozw!CUxB_g6K zePNoE5B&9&X^h!qpo4bI`Xn13n@T4j$u8p+>239;Cz5A$AazAw@9{eLB-3mJcD*w@ z`ztF?07NAOvOC4Di9aNkGa@0oa}0zSIJpQe6y>DzL6|)5(jc%aDjJZMy96zWq+oyw z!yu$n9S?a*z%&vfkzg=XgmB4UotljP(Xsga=I!|Ko0}XCumVVeni~N)GIJ>h1VghM zj0B*ABSkP-q;PlIE_d}c_3RzR^5#K2Tx-TgOC5!JMhibuCj?mX>Ph*4GgWYQ$w{T8 zIPyM;OY`&b@+&X8!W;^7pfmaOSBz7n41N$QL$Hyj6jrQ6fGdRnmFx_YOtRSx<;4Ft zUtW(-KKeXmLAdz_&ou~;?L7R?Un0d}HpMPs$)6e_VYVE{;DJ9B+5Cn1c#uEq74TfLP!kpPli*)eX7 z^-u%8Jx#I-XUtQ{e|il^^qnhzVh?tDEQdMVtw#>G55TAc36>`VxxT#l<1~V&VHmga zP#CY;Hq!G}eAw0RbWNo@p2@;eRwk{085VaLXh zf7=iBm}f{69XY>(&%{5o{oBr~q#=-C;U^q}e$kUQ0I0{rM=wG14ki^dvF{cBMPv{$ovGPPdv78bF_HH{(nb;4|qf{HK~6 zsY5tdj+_*_Ca1Ew@K*)DQ!Ltlnm($+9WLpmo+JkE8(1|U3eRvCx$wmXLt z@1VqgmxQ`edVjlu$ei9za9H1Gou8vgoAf^gB_K^)T$cqZ+n7?GTk>*NIFI191W;QnGB^G_g_Rp7AX_PC@NVBooAodp+Qn3NFiXywmX zm{O9TCs<0aqQpmEe-(EhJ+i*xYKb4e^Hxl2jK96O5xc89(W!c zT-%SH#@d6&vD;|)N*&dhPtEsok1q@A8V_~%_W6T$+bj@jZ1>!2FU0!FhUX#U)5Dq= zY67lF;Nj7M$CiE4hb)?R4WvzgevKcw^P5GQ9@#AZ^MSu^P5e9hR6ZuMJ*vSz(Jq*2O)8vR({g00|QRT3e_{V~k`RuV) z;T?ruBwn(h&l{G_GYJ5}RSoCnPt3xt*Wn^QEXOiiFXTXJKPn%x}-9R7H85Mn{HfpLwm5QQ2Np~ zyuhjYUz1+iK)or@9c0EP9zcDid{}f0daNt(~4@1L$g21aAP8 zE3Ue*8FP9psD*P=ec8~HW20j>u+6$0oz5Ix=)Kwk=U^e#;Vpj~<7k~Gq z3rSN9~Un#=(!Mc3v&vaiqVM?_akLI z&G&2A07zxlgML;Y*IHkTef4Gis{iWvsQMfAA>tAIWPPmlP`dZ#{n%9>$oCNU)Fybd zXkT*GbJ7{38k3*w9jpA(8A{cy`WY6kVf6*^?77 zQX7mFm7BMm(1ZKC2QfA{>{I_eXDr-{cC`W)N~ufaj_)+0$7u%}J6o}LB)zA8bVvQt z?qT|fEGFrwBp(HyAY{Q~D7o1jOCOY#ZWrD`4jCiQ34`+Na(_6Wv5~J@);OrDxk#BC z@UeAle>`9OWTTl4rsK2DSlrz7CNOX0ObrjlSYI_RsJ_O>#$vm5ukAaYN*=%O9+3?9%H{;gBMfEiiBlTgw zZ6N@+OWG7=Vspgb)ez9wa9_On>ZR!GJoEQ`8tPvMR98KfY85J(iJ8 zQJ^zzOwz9jxA=8*AU&Y5`_uc6=m9j}6n(yM#uEvR5tLwq{k|-l%4GxMNvW}_zy>S39RTBCkHtoB3bM)QW*=(HdNUNB(fQH0{bEhQzT?@kzH zzT47-?Z~*f76=C7P7Kq7UjtGWAWr-GovC=q*1GdOjZWrqH5cr@WqZ~*(j3l z3%u~$wRlbgkF@)pVB7O#+*rARm26C>JP4iz3#go@CzUD>X{i@y?Vn_WztDrACs%^K zu7S`u-+bo*iRp(I5>D#c1FM|Q^^AcY6PRfuoJptyFNSSo{qa;%rbTFXc6>jb?V*tmg zTTb_*z@ftmn#N4NYPx(hhE0M2CSqy~$C9}t4e*e^Np%Qg>d5_C6O#m#l@tbpa!%rz zr^|GeM@nugiwHI$sSa@4 zo9*N%at1EP$u^zf7T?lr032Ad&%r`03*bhv0?A>WH&(1knajqDg!2K@pur+2>K zRseEN6!0lCJlSsu8^aKn-RUReXanKaW85<2buNFWr#-*}@ulE%p0;v2aA1{a;=x03 zin5*R`&@V%UIw?ra(sz9N0TE;o}wpp?9b}Q;ryB&l~lUDQyp^WkOq;J0gV>b{?zU) z1Kf@2IuJg?r#y@!^CTloQ7IzjBMWchQF=^QP6v;TQYKjfEcl?e7{cEpN0X(FOgE_mk7&pnOJ{%sCXY_2YQL4gJi| zA8ylA;4%!R9cGXJ6Jl_w9Hvcm?F@y+WmO-tcaSzbG_Z49mkjW*&<|vi`Sc`ze!vGV zMWrzPW*8gj!~;GIaQHKghO@h*$-jijneaOZkAlQwzzItzvO5LhOz;`V?gE-|<*=mB zF~DUA!klM%QXqE0r$>2}GCSW4mW=!f6}ibNSjnyimnkiEP>lHG*ILnm$e?8MnXZt@ zc-}@ot1iY3{*8h=S>}Siw5fQ_l!+M=lDc~Ch!^rxlMPf{D&Kx(McIZ zj~C9w1SVdLNuZ&ORbUO{1702O)L5cxekM8=W+KpIGN&5Tv)DlSlm3H3+2)7bn%J5T zg5h-j$-#jqHUdr?T7YQ`WjQBYbfosHaPj8mgFErXjc>h>ai+Pz^RK_+k0N%R9mn44 zW^^=#uaQ2k+gw_U9_iBKtw!uTS&Vf(hrA6uIT3@?6VW%yseGOxzwycGbru#m?LRs* z;k%WGCdM@B;RB>qPewTqRH^mF9&dN5t$J+8rl`h_$e8I6_JEcwzxH3WWH{qP%KTUAFf5si(Lc0YrD)bkq^)L1dlusP9MrVfx$MDbT-1c z(|516=f!l(zWCoeRF9zr$;8}5j9i+QJt_In77+--!9Pr^?YXgd3PqB1^g+3x65T>%7tWLu|XH?|G7 z5!sV%8N#8zz|nx^w0;tAkwrEfb~ZQT@!f~9{P}+jDv(bp*dd+X4SXUI9$Y1k1z5~!$+xADKSy^;HrQ?J&SI)99GEnW0N~Ic0t1B@+GvzwsT945&u4qv`yKN+0Zu!K{{D)Q+aL^xY zgdjiQg>FuV^ELpB#C~%{4UzcOwbj^Zh~~cjv{58lX>**sZ|?8L)eCcKzP+)%wc%5o z%q_Wo2_2B;gK5$Jkh!UB=ES}lLhdqecRN-E^ZfvL&!Q^xM)(SMSXktGAWr&gwBiM0 z&%uRDnOMJhGfsXs6As09KK|Q~e4^_x%st=v**hBUN?)qp&{s(=p-F<04SZtZ7dmZ} zCp_iq3QqoWMH70K4FJnBI0Wi(pWytqgY4yip1OW)xpj5qvyYW?O33&Gnv zjab>-ibqeEVrgwX7FX9}eS16B6}HvfiS_l3*x24wJ*-(jwbZ{b9^lOz%78xSEzYyP zzUb#hfVtV2xOgEZF3rc(!gNesn2CA0=Pu60g6#QAb1^+P<@JNX(YjCPvf!V-YoUVZ zVPk^>iQSqPltq8~PRCORd;9(#M168RstdE}U=C|w^f%Hkj3YPhJ&xv+WwnJv^;yz? zmMQ5F)gw1-_-ZK07vC+RURm^|j;ghqXiolH9Hkk#m zzEDwn8LJOV?$QD>aJEIaZ$41kbfUjA8vCti9_~tpkD_(37u+k4Aovek4{2EoEXLy~ zRkvKCh122bR)dPqy<;4Qi(q0$rWCd8Q!tR#3m4QR8?B*x2QR z$80qAyRA+Q4#q@nD6U<(EI#zct=so}b=UO7gt~XN8Rfs<-1oZVp2FEkI`C~2J-$YX zH7C}H*z8u;s+unGRdT~-min;!i>vYF^}DgYvnTp`VrpW_I+22Uyd~ni-X>z8`}p`E zMhCm&#VdT2{5YDDU1;aKmZzfc(b9T+{Oz6CXdU}%y3vtQZ%lIt8v;_Fq(@~g<2m<{ zW*h5Ag2SKP@Z9S+%AdXu**TK#zVq;b>y6EKuIJ-=w%1;K&EHz^crI0xagz_5BW!d+ zhTA-HM13j`_)i`ju02-0P`8#F!O*8M&f>Z*>j(&jR`{bdw#i37_`SiW{xNMRh;Q_d z8drjs#d6;0DF2p)6IPh(LJ6xGOBl9{DJ^Nvt)GqMm1hJ+*`B~QvH2OEdjk@CRp zu+$;rcjL}s$$=XL>EV|=q2FZ?uCKqo9^ZWZos?2v%2D*uu%O>Yf#CH7)&L2{@$wT? zehD*;{7Ey=R9ydxC=ax5Y;45UOP6By$|X%+*cldW$PM^pyCb2&;3pjlT^%Ayj?Vh= z!^f5cgqwJFRL93AJ@97mNcp*&jngD3XzzGRuo)n+%Syv!lEuLLpxG1+N0M_*0ySXg z&ep0X*dtQ7w0U-kCGZ*`vLL3kG)@{6{jk#Ps#DnKq)4XqSOZBEU$5fW5Ju}S*HA9>V9rMQ`R34p79>QZ21qIqIM0|rfaxYxCt zMouF}9+ZZf0UvHq*`NfG8%IzNDp=bjAo4F82gcP76h_h^8{#{(IR#-nB_HRV>(_n- z5XX;s0f0)E%jPsV6<6A-!yJh1AE!(5MvUSNlT6zw7~?-@sDn1V^Ulx(4yy#)eLh@2 zwiSs*OG^9PO&;%kLfHpfyuVvsSl^ialjJ?yg~UnpFeTW_?@t3KS2gh{-l=( zD{=ZEkM=`51s`$wkq>`LpZugFY4Rm^#w?Q~WSq{OQi)IQHi+#KcFuMsmUtOxbG{`P z+77xZ$-gP4t!QA{p>`-mgrcCs3pLa<*av6UCvCiiA2xEAe1BjPjO#PE74z1xJz;v!N7`>K)c*Adf+f7GqBUID6ehC(RRZp zD!h?Q9QmjJwBW}gH-7pO4M6-200rQ8vk@+ri7*CA@DTb$3vI%0A%MHB%LJ>m{*Hio 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

      xLXAh+dFHj^&H3OBsS87WL~OnRM8zaW!f85158 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

      cb|-)LEv*~ioB96S||WIbbRRXEw& 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 z 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%0DGPTVM)0dZXZi`|x4qf%x?{$L4JVArCdXnn7`!@o z9GaVnBJZHFPbF|?zkL4TXZaYBc~4A?XQek2!@x36admaa4m!#cMzkzPP~+zWPk>mt z3Y1hb0Wx1Ld(#==4jq$F0M%4KjNSoQ-8It7?;768L>#+%JIh%*i`B)|vOqn%^WXBj zW8ZnSUK-aZikky(2m7KCT9eie@&F+!e)-Ur_3a~gcwlg1xQvaCW(Sn_4UUeCmB$Ys z=k7Q=zAXk@F2wYEXRC=)dEtQS?zH3BFFQN#0%t&Uu$L>V@&R6zXXyoxSW)up)oWMF zyYIeTE?zv7tD4ftZIs~ZZn4#;^K>kGx%+X{BXp-ul^#EMOPxDmFWGYM`p#bIg3mh` zeC>R8yFB~Od*%M$e78J$?}z2-Pv0*)_a2nPXU}OLI}EDep^dFff{sq2?4LQ6W72CV zXf}Ko1N<mVK0h+&{gsU5*&g<|Cd6l3j%U&I0Why!LQ=ulJ#G*BIPU zj$=;%DAdR^qAtRX2O7fAp^?`(xO>i%0$%0d1ey~xhMSKI1=b@!sm8cXSS!{a3s>C^ zP7OzS=w^UCd-+0{o1H=Vw2lwT7I+;x=%qcllfc#BdE}Qn2R7CjD8ozn=p>+mv+YKC zp~6A_W^d<{NqTH26O5ZS!oR$WRSoz%;b0>DqA-LhYH;OI9L;;+#;>vEecNbj8aQo& zxUG9_%bd7P{5Bu_omgqfl{Qr!aR&!~$vb5LhJ*d6Bh<&9yCC7qT;BscCq^>yPn~7b zQ+@+NCjTuTbe8`km-)|8GyJkLj`1VFE>HzGsllt9TrV8#u~qHCioS^Iv~R7dJ+-=^0v>zh!9ZA%5Z?TJf%I5T1#AHz~5a z(!xm<_|^QOn{84Pr61Z=ng(jMlbCSQnC1VMu>WlGY)S4j!Kl<)XO^zITDC$r0X9f3 zxg=M-KReR?X}h$t3}hK%)tCH_%u0y|;9w)>`fJ{QR7(YH-XpGS5Ha zgz)h2@bK`EN7^Sup4ZR6b356-kBXq-tjXe+-s0bmo%h7?aWc@4t6HAmXx;!< z=H$;xM7B5pbU=&0p+|184$3jO95dkFLpC{h8emZ4H54kG9=W~%-$P{ZA^q+CtF?BZ zezmcc2|w?;x9%KFse3r!o}8O*Q**P~{o<8`YIoW%&a{T^*Oq46t!4TapOu9+fSxmO2OFjImb-Env5k*=U|}Y^|H-_XomXqw zx9p${Q>Ke8^h#)$kB7@QS72y<;ws;Gogj7=8J%cFmS4YIZOuv2^{sXd477S+9JT@I zG@$I~sjGviXZ)?7)I0TA3jhwzZDW{@Z^TU{+4yqn4K z)T`AHsn@Z1wYz>IpqG~!Y{bDoPuddAVsM2r&qM#MwRZBGRp_EFV;tl=?L0P*X;N1> zl1<#ez>3aJU3$&o)9uZC^XLd2|NZygYYX!W?GS#+VlJtU51|eG=SN-D%TMW_(-wi- zm&=HeAH?so4e$7L@0KO}&7U}?9VW2)r8i~OT}cfuy*^Mot4oJFc?K5m#*=37hLg$J z_+Yc*F;63DJ5cg5ebSmn0EJ9vh)MZx`hD@vQxj80Pa1$I*QpJh;4QCIV9Jz7T#y~v zp$1<$mhwAlUgzZ^fhQ|+8iB_NmkS4Y@L=4^I2QzfA>B`qE5>($VGO=MK!-Ua%*`gA z+N=#TLmA8t4!etetWD8IuJ%3Uv)|yHe6Vqhez-QrNRN_XUZddRgSzC<=y=+=Wp{vX zIV_WPVtH&E(&tQljy%Q}7H>{_=L8fuSRJ;_P#wCJ-Y0-+L-v)P6gflhQiXEIomakP zY%n(5&MDjeI=tx#3erV)0mkr{lS!UHHv@6Hm1|7)4tKMe<@g-gdW$-tO*(O9ziAn~ zZopF`Za(_xgAb5%=pw*#V#mpUW$1+0`Ou!7xF9I9WMq7}P0dcU@o5J8JlWJk0jzxs z8J9dnT{&o%M!g;q6Mn!B|6uoYxQT!qv_u4A-eXMIMv#^X(8GoS<(JZ^D#^7@A8a(bbO-izuaiQ`cMC*O~LQ)-Min0ppT1RUMrki1;D4D zRMFhf7}J+tBRwTYg;$)s>+t7oQvJ`EMCs$;khcESyWzlx4{8j82mkVllm9PXzRYzy zKl^7tryb8{!vKs!w_aEGstYJnJt5_(2*uo*k_8B6TGyxTrX!n<5LsCU0%uJ9%*`hi9X(y=`AvbW}R>M-v`#a z`NfZaVd*aKN>%jfOy?DIeCGSQ_x>0-tS4>ES}A@zp_W!##d-ymK#E1Vk2D$JUqWu8^;D zpMRY10C?@@?%({j?S1w8HcWhZ)W!4*bgJ=(_uJ(A@3d3j8MA-;_g}ZE>8ZBQ*zX+K z^7zi(^#9XS(`_R%=R6a;5+!h|YfU>jL9bFra##EKbX^IRb{J1M)PQt1F)`xCWtm~~ zj60qDx1RjYpfX0h?Q29Lv@t>bba2Xap%oNoy<6U@<2v8Bv^-+>;KN7lLwM8gN;t;)__L4O#LQIsvW%OJ2cIS%$q3xgU3m^H z-PTw1QTRScO6!hi-SIE!Rs~Z%JIuU+eeq2T3Bk+ z)QNqwoGeX+myOr|hoAlY7v3SRFdp~rRRV2vE&#~vL4YR>5lsBBpGRZ;(()x4OfJu- zp{EsKxnq6QiT9(kw)b+aog?_&nKSANo4YDJ+CT%AXk+tpxhlca14CyBqYbal*=Q#W z=IlNOy<0x{`y&A;l=)E5bA(5(TrpdPr4Gp&rP zDL8Rf11GIJp3nDCR0tTQ0-mXA`{csv0x=7*G1IhC>O$Mjap z*!>Bl4|vPy(`B8PlGFgpWOCv0zyB3p4HLYU=Nng8~yZ_u^i9eCyStJQYuz>2|)H1R`)!c$>M z-3gcGba8pwwi)>D?(Pt;wY&H3wv{^wrh)6+lb=Ni@N{9}(@#HbKl|B_+A_*^c7oV2 z6L~(kF&||Q7 zvbEC=Hg{6)y|qm`M)D$!%GV%Dtvioy1N#tV_|OS<1i|6n9)jqijnTQgTS?)NT^f|r zj@Qz9gxtH--O*t?^GLSGenzmzU6s9mx6J^ThMBuFrxs@6MR?SXR=!YRg45Z~L5>$4 zZ|${H+}`KwMA?Z)`n@;S1pvZaAaDog331N%7|i1K{nRUxTy-SQHOkQ~%XWfNfxyeh zU}--pJ04@oU&GjXTs)x8 zh8O4BqTfikbBB&b`H;spI{DW`D@8VhQnlSP2{7i3KtrGbZ zj82@DZ(s?NmoAU^DbL~=kGGuUDSjGJ?C|6#|9SZ7tjJS$LtiLUX&Wjy(mV3ive|A? z2<=Q$UI{m%e!}!!9Ly}ZR9)RHNT_f)d4j^= zeb>?^V4#hB8{wu~o_3O$c=?DWJgF2hhsa-PVV%MMX$R8HF#n)QltA+@q_It7jQjwT z_~xa*WhRX~o5LIWRjkmZ%G%KlQ{}7R@SFV66U4l9CcMLeC*B>+V}cXLyn8=!51csb z-6TYn9^xxc4AA$x0FXrsBXs!(zIln5aI9-|3wKv$f&n{ME~#S>Cs|1X!{`URlRPJj z0;g~d8kp2!x$x&-^r4NrD6XiVt85?uKg0S&82R1_GZzj0=vA(!pw4Q-u@=X2ESo;W z9fS5G*%5+5=m+fvQ78vzCffkA*u^pjc1|+5!#E2Hkt5zMk1RSpYzLlBIy`85M+a@6 zzT@Pg`ZmksgopasIkfb86DJjw|MH3hgOQ0z`lh)yv$)u%-6grQ)F%8eJqn+vA4eAE z+VC7Y35u_ihYrMDEEt5>GpTL+lQ_MNF4e~Ai=7DZnWWCVLXQDecD&Muv?=@?FrnvU za-aA&4~ll`P~J?P09HP?zIbGs$D&K-mag&Zr2-I?G|P6J0$ratP9CbQk?cD&u~LyWzm(3HaspW)#PxsVFx4f ziD=3L>NVj;>e%Du;%xu#J++zOLKf8E&tg)J6t5PLO1@jbvgF^iLH>F^OMr6b#;C2B zju5O{GWXy)^@Y8C+Kzs+-Y$0Sdn94u+?&V%{tD-}jPK$Ge_mieK@XzjIZbl+&b{{F z;Uh#E^y=G(D5*2$Djl!UIUzH3Z1uZ0vcw(zf$Kn-5b2Q;Tllvy=zQZ&9Ffnvwrq_X zpqb$9-rt1QuX$<$D|7|d1PKq?5H7uo=4FiQUy=%+cnQZt8fB1ZkooamNeS#T>tL3< z(%ViufGJ0y6UAt5L~-*{_#6{_lug1*IJz27VDk7eT0cya%(2pWZ7%8?x(nRjqPG~Pg3lE+%COcSNr9GYHYF5WX*#SxfQ6EN!_M^Qn zI?zdm|J{Y@0-?0Goa*KFYwCOEE3I58AYvPyn95!Ma$o8Wz``v$(56Wnz1{p$x7H~= zpE`vb3V@Xlje@)15O9Z{*O2XR!k6fV%8PM7?rm9+w@&Ez9RPVpcupd&Z?3k@T~9-R zrfms5-30{~LqIHa2wv73ZRpX12W@EqIq2zD@XB4p(uMwV7NHX#_-c!Z^~8Yhr2`Uy`Pc+penGt8rO$1Y|p zezbi$-f{wBVBK=6DM|8KV4oOg#2psm%DqnA@$}v zKgm-^m!E%~-ABxO8h~CEZeroNyV-l0rPDO^_QOv;%b54c^B3(e{`xN&FQa2Zk4Lxf z<@%oqbwds9V4i+$ZfPEfN=nAWvr~+h;A!#uSZ6nG3=54DT^( zf70&G%(pv??bQkW(7t_YHnNzF`H)#p>z-0Ep-s^XR@m5Um z)}4h((DoI~3vXxI$ zp9S|#A@QS3`o*gc?;;ch3g38Vv!8PChgGTQd{`!!<^8%eEOno{N*om`@mpDL1#gq#4&dFPMd!G5Z*=J9-Xvr zzx=vQ&(E~&OrFyQ@2sS*yr+G8f4?1~H!aM~fv@e#a-^7%Y3i^S)UDr-nVy+xzx(>j z_Lsl;RW`2J{++K_oLy)iKKcMW>?f+73TMwvlIUuHjb5U^Jd*_gGO4SiY|?JBKySm( z?*Y7CeGOd(+vCUYG;mnsLJ^YqG+|@>_9x~BS-fpn*o_OhO zyiE2Iuh*;USDSK!n{7roUMnN=NtZH_&RD`H-1;d#?$T0k@eBdA%}=ZFiM$ko7H&_@ zT%8_NUw+28VDd z`d#NZecU)J&Q6pY9$k<6_IkFJd$;M+C#W0y^t15SAN~Ai@E`JjZn}N=@dwfO<=^nK z@;8W*SC?<;L;$VGZXWE^9d5@ME>?_!3z)(o&tYH)E1N~BLuIVvz2S^?3b+0VN_jeZg!Z&+ z!n`^=i_YlR>T!P4G%}EI{W2rKZ!iE_B$=3=xbFx7*cPuu+N zSx$gT_pwn=SEKKsKhEF3oBj$a+Mq(GoB;SYKlzhiSOHERj-Y6$)Vk{74y?1IqY&N6 z9~D)KlnEm5mdu0(gCaZQ>-2&&UX>aYxN|yJ@@L@WR5=-;Xincg7&@`Sr zn4ps#Us!0@Fpj$w&b)_|!RqW?Kjtyaz|w1f#xn{0?7OGXr7C6?rQ!w`^0O{v43Em> zn4Sjwicu(YXF8N)`VLga>U^qUB%$w>mMAerk!VxdB7>VR;>>Tf8+`i z4SjxY0p>o)ME=81-fxdT`#2xdMT8~W&_3l#HZZgpxyq&zcMBmr5oR}z*+-ecF^-aW za(LEO*IwmbudUUsw!OWZK|m(PX_zV~@)p`9X|HnZXKnL!J34~bsE?J~x7)*a?q~II zYs)Kkj62vC7$E%UCqHN(e(-)GD z(qOK27^bbvkp}o<-3dfI5Q_Y?zHQgq!uB+QANsox z4`^_?gRL9?=HvuQ2Nh0iYAJQeKXsJrd%An!hfwloAKq!pi;Lu;@U)YmI-#@mpKlsa z&ki^};(Bm+&^EW=t=;XmwXMCw`(}CLe{ByI&cRU>dinw<-JLMJ#h|&l0C37c*ug_rH&@Wp&dA9<+kIuP&4V0sH+W6{ z(?1Yy2dF}KBYS)_`YXqM^Pns((=7SZl9phgB{QX3p=P-cD|m>Zh=!Xy2<`qy8t zI%e9{7mN~R-#E0H>_~Sq5MEK9n2!pseVBaj2QSkf+D_z0=?ERNfEFc=aN7rM!imW& zBH(8mOFm$rjLyVb*cv~*l`Y_yMTXE7zPG$Qh=TBY;=+rWfFLj3Sx7TIa6<-v%mcrE zVMLza`hi>Puoi}hXVd^BuDHNQ z^4YC1lpPfwZItl=^a|VXpjX5YC-F%fn(;`>%cDA>WVywtSDd2*NW0_*F3_*&<75r# zMJ6pA8pcVLQV zg2&ybE`CrioG`>w-kLN(qgUya-x6OkFqnk&XqdkUw7m4WWj}Yp}eN;4!P?OdPJ5>Q`=JF5yu4q^eHq) z+BHwwo-{3Q~=%X&_m%Pp=SNOP~Oh4c?c$XWy?bbeR zAUsbN>YGmd`_NAXA2YVjtYZeT*U;)3#r78c)UAE=QtB`t90w=iI5C$+8ffOCjq+KA zJ3IYd$N^7x%}HOMUWVwdLi$)NaN^H8ubuC=vH*~s|F|7|2zyALm0!Xi;E7wKymXLa zbbZ2$7#02u2zbeFCyrWZ{ADp(c)q{5alD_j9v^ya(?W)&_G^PI)Jn{8E zeA<=EaJgGre!sibw$6^)DdicuHPk-){PXmCmc>D?bn~OUS=1}7~*%vwOa)R$r zu8|M{`%m#G*fg;DL!;5gvcNyPqghRwPLh^X}8ZFkU<=sGPQC)|S*A+V@3am)`a#QI?*&6=KJCAU^gb z^=g{vO3=B|@$N(QmYj8iOs9Y1c92T!Ho-XK`1GRfp$BEqDBab)h^JihN{^Gxjcg|I z7vSVZ6;JzSV+-y0kT&ggM4m>SnV-*hwY;O()2yCQ z5Vu@=G&WR z+r-=y&tx0%G(bM?>p&YA9T=_XlFB(`MiyP^$JA*ppw~^Q=X$M^A6Hi96#b-$4{0sG z#Kc3(p4UZAuGB@GE*8Yd4m;0ovw8g7F=54Byi4`q8f$gR%agk;VQ?u>k_daN|jKBWl zpZ{6=%@=>4n+Mw2Rr~Dy589piCAuO{)?a5lxqR;qyvn;04F(*YokXsguku-Z$yGj7 z=A<5Z*N!2SHnaJ3t^MV{|MPZdZoVy`SL8IEcmmV*nNu}0<82hZG}qKn_iNw3YTteN zHDj2Ac7JiXP1sK{Mx0n&$O6Bq&0kY(vM;p%{2AQQF?Ie{UFlo&t2Dj5{QqlA)8~T; zeXVDo8@>Y{_`|DVUc7qUUcG+RhUnLS`cHq}#?ckd>67IM+rMMzOdi3zhi*`|h}!kf5DK zRBTTZ=9>X&*F4}KIsr@ixheJn08Z*pKYExewzq%zt9JP1w{65Y>XYzu`Z(TCP`XBz zmeCg{a>DGJufL0)uyM54rp71R((HUYKsGzabwGcxwX>5efNUGp?}?Y?x`jS_){c;Y z>PVB*Q|*_({+sr9U;VDy5K-N5cW?P#PK>w+9q~coT#(&AD1F#(^)14eGqbaSt4SZE zZV1lusQsXePJQT@n8FmlEZi=e%a|80{}N=uX&DIJhKr<&n`4^d)6|i-05$){9r(AN}?{^)uZ9b zvoaM>;uOD;H)Xy!*y7oyF?yX+$vHQ7RJqKFu%)0rh2v|7cCJpZ+RLaIzPuuVR?5`O>UABcs_p?JS zogdMvV?jZbArKH_3o{w~U!GjF{a3GGvf(yyXC<&QkqZ9LzWpvc+NrHJJxzRQnLL3g zTmicy#t-Po01+x?)>;0Fvq@wQadmf37zYMP*#fWPr+l%AZ`{x$)QCSh+>|-txUbLo z0avf)2`t>&egM-|R+)Cm?;KFyi+5MrgAd+oestFz2%?(~EAUO+nZPgR6*G?mWk;g# z(9Z@Kp5t9b(SW_(oiw(sjg53Hc8HTOxOdIDtI~o0-rjaw-=Gnk9%pf2c7Cqidw3VR z4z_KCz~0V5@SH;t{QR@e+oQ+#+XQvwKq)&xz$*d=JM1Ca`q}Ve^B65?f*%ffIf&bM z5jK8gDR*=+kiS&nK@d)?EVpw2jx8^>hyUVF+sNI;cIuS{bY@%6Ubmg6tGSPCc*>Ii zlNo4jyjl+py*A40AVx;K4oao%GI#j;L>Njl7m=)Ql`ZmgqDSxSmQpzJZ{x4Qkvq-2 z^Y$bIKA%hq;VO`j`Q24-8%7P3g@iT+)o;2XEgmTE0wBC~!!7hDl)0V|S z9!iHF(9@l(KAb=mAaMqO;T1H46v~|ow&$AAM2I3huaF&njQNrQ$)0?<5C^~d;ORhPQZn*85bi#I!$rFVD zIWss0Jx3WEzb=b4~$vB47@mpr+L+BR*z9d5S4&_MXumZ#`K20k`jZRw>GcW5tt z4Cvz}0j7haNerV1!+yerOZs^iE1aOQUDJT*|Ig|z2@-)qF0BWlG@9$Px~Y%`Q6E6UD&^?9GiFe z&3Xl0}{&VcL*=q2-chJsst5_%CiJ)v4z!^uU{*^zu5mYj_VK*>2(I zk@%eak`Ev$6!T_2Cv^Z@{}KVCw@f*U+UVyY_(56E>C%gYpP0FgBSV2 z0fVfVn1NfE*gmpD**9_F(OCaApcntb)pmGwLcg@CRRa1)?;xS10@J)xmCqVpQdM`|*!|lydpa1E~=?A|7P!gj?=Nx6HIL?`J>S zuECR=Ajl-R2-;#48s*W;uo}eGyL2&L4UkO4ua9rB`Rn1lWlUQs2>b^|Iw=$SG&ga0 zuT+Hfe>ZW;?Q7?i0+^5G?gI_$>!-ZLpZ7OebjJLve45lrXw&Jmyl0X&3{hbjz~Ptp z(u26sr3~-v^qIybj@Ny8jioy=PtPvVI~aG_hC&nedrGt(e{X-SOBTp*w?KyJH(QU+A!dct`K{W&20l_5 z!Er0!?|S;;DcuXQgghN5ji5_pBa!)bkF@b|qs-LESi85f!uVkZSvuRM=4RU1%tRYt zoSNPKmaR|6lR8ZaFyP$FKKt10O0{C4on^9;)uXG-l`7$yj(@b1h0d@T{>D#u#fkod zpC^%wA2c)-HO9sBgRR~6_kaKQ?F61Ed@Ehrm7sbHzre%oq>MP#*j-@eV>X5+yEo~& z$DgE*U8WC@Jd1CnPs&C{D}7IS5MmS ze)YHQ(d|2JaelUq(s%mJ2PeTjkutZu&}Qgky>7_V_SY}Id)9W=x6^ms0f%Ag$eouH zD@*BjEn_e9l6M^W?~E>=zFsS&!>&Tb)xfvX_onx{F%mX*PvwFXfy3i?SZ{gRwyCUt z@#*q9_B2j-*!twrDK98f%<`M>zHKMyD_-BF zT)Mx6ZZb0;EDVoa79;;Vx;O`9`dnj7Ugk4CIi9wiaT@VVTd_%ve+Qy7o$H1^*d(Zu zlTf3D|C=2L&{>FD=Q+wqg< zZ5X)}&BMYdvouN9xrG$)1Q-EU-W)4zZF{rBwx82e{O?cv?K?e_d) z+uz&G)x-L~-dxY!=~IlEvygxs51WwtF@1*D`FK->SEBsIul}k%Uw?fg*WASNVC8{zC zO@8aa@%yY-U=zN%v6d6o;^5Voqv%7`msEOCN&Ay8?W6FD%rwC32kmddTa|O%sczkP zdTsvM;b}YBJIK{(jva(+f{p?yi<=~}39(BT0p!0p@I;?8pH6OiYf9#2qVw73NqZy^ z;}h@xPrX?N)1Y&Ctzy2{!8p}1_&MXMjb|_0;Q#KAe*O!O8we0|X>bVYgQK>$ww@jD z9uswdEAYNDJWk=RrTLXb8aP79NgaseZVm_hXAF3c8N40rB7lJFYT5M>0~&nONfx0B7iHjKa-GXM46oF-7g z7)CH%A&^rqz|F*hD=P>Pg@_E&-%G7Y1!y30RbDYs?|oxR79>D{?E-+47i&+RwVAss zZT``Nc1^{YSlWnt47N!#;2aoYOg-NARyW(;##UQ?_aTF_;pTDvX=wZWtMA(O<}M&S zYBJI$5wt4p;v|03*`v7A3$xYWD~IGEa;X>oRG4Hu1%&wOe={*6eikrgEC|}=eyg!m zJ4@Vz@$N2vkA>&HYlOd}$V}=)7|Q>Zuh%?zjC20>QmzSbfT2llW)1y9WBml3Hk8ot zmv?h{jZO0I;+envW*+k>@`pS7bWA&KhXLs>b#L8{dI|-hZwIllu}*{DV32;?W@c#U zmxFC)YPu~g&1a|l*7_D4KGc_<38Hoo(YNl+&}5%G1y>#>S-WYwv!`RNW9r z-IQJRpGhW&;WrDW=I7h|I}h8!$M3g=&)#phKYBOEA8W_cLf{;uT)z1AH|+|+aI$@n zj{r~2gA3`$8GIcv;M;^}JOOh=9Sr&aLP z6c#Fh=?vu^(ALlPD2`5I$y?dkO`Uo?+Onmtc(U6Oq2UBU25_`V`PBC5t|;SLKei1` z@6MYa0$PI;_*9>?!u8RR)PvM93GI>bewqGX|y_41Z(j54?tE8WV za#GZ|M{CYDg0~3bOs8-5!%|+oL6Nmw7I3FcKg0pLfvf(C=rwJi1%YV z@U#OmFLyimaqcN-J4u+~9s~2q(RgrBxp4w-Z)dOV>}=(JyA71>>};cn3_IYa+z{RW zuu6DG+SuMg7~l24_^ydp=Z6X1^z6ecA#|))ak(ik<|eK0iNm`LF1zyAPs)e0ffX4D zf210*hmcoJsDnHY^yoUD)SF7YH1!T}J5#e#7Fb_|IZdquDbk$b*4<^Ca z@WL>8Y8?H@AbA_vcMbVv5DiO;6EV^UWfC*6O(tR(ehdWG~k_5-HFD30EOBDdg)Q>RyL}n)KoKJ5`0 zsS3*}9%UTpq@B`6`$>@OxF>y1ArMx5QT^H9S|^_DaZ)%}ds$XMNNW}6EJ)Dz=bIu< zk~3)V8zY`t;k=#Nqc~nF4}~rX}jS);7N;0l_bS4wk>Tt zZ}>?Xi%}`3;?vQG1eqk)?%HnXFD%g!PxJ*BZdFFJ%O9Q7lLHVl3rMxFYn|J!E=X5{ zf$*a?{H30hcToj!`XS3_KgD0aqo(v9qZJO_OYpPJ#aKw;n9}eLM%L{igP@N-`Zym&JAuBJ)dKUI>LJ7UpBG+vdUqwL@T3v}Oiye3MSThrUI`am5EdWu&cHFD#wk7Dc)C4_6Q1JV z(C`~c3opwg{Hix)YWm^GaCk-ur3%bDHNqe8;GbNv*HCW4-^TW-r!eIoh0z>Ms%jmUxO(zZv(JDw)7g?d%%DEiBIWDa9Bbl~Wr zv-6CtCK6Yk@o{ov4814c2q2xCw*20cSD&6RraRqX+{FM>Ih;058ucOZ34Ni53v^!5 zs(z>6*%{?z&_B+2&&^`j$exj@@k|ETZ$pOA%)#s4#wM@^+8E=3V`$}-0~YM-@4jiP z>#H&o?QSreWwfp5{E=RxJNyPuJ$~?@eg5gEZJx1{6aVtRvLTxmx;l*9>g(7_#_q2` ztZOd!39r7!lNDaqq)d|+{DxWTI@L$M%EkaG9E25K<^S!+xY{|@4y-Kx5F{g&&94sQ zcf9DgB!2z3zkvt#=zr7|h-;aJM_%%wCioN-(pn4`U+8~{Ukla5^B-H(VgjqO^S4Wl z>5Vre`C7Wt_XS0q@Zbhw+x!T92lJ)8Q&Pw#Wr09M4s^;9gD|$ z&0GNfegydW>sPd!wQR8a=|B5<8^QM5MW(aedYa94izW<2!F6pf=#_HIGI3{^GHfQ{mu_gKv`k$Ljtt;o8q=F_q zY&z`df&BSiB*8!Ko+!Ov=Q3IE-I<%Hh6#fgUqiPW7`pRc;kFIq=Dov*dJ3=eCmb}f zHsm54a`AY5E8oPs*xo~LRsI(5-#pMGIhwxHL(<=L;eDITHFLJd{F%4pDMS(%7-zH} z=K<26SihZ2GMe?|Hz^iAd_Q{G_HTaIj$f^Md0)F2KyR@gtxx#Dy7VO0HDlgM+S>D% zuk(Rt$Ji&xwhte_+vdkd89pi^(u8XH$5BN%-8DxrPU#F=?I<8>zeIJ zz0PavpuYJTdZM2_zWul@OfRJWw+?d>lX7{o#H)AJp$?F1ZrEI6Y;HOyZ2kUW(Sbe$ zdOrtGb?wE4mG<5TACmtN{ATmHWXxTgl5N}0VOm$_)wjvwuj11(;e>3g^;BB2fi6zc z5-agbZy`W=Ol68EfHI`~MtT!5e|a^Izw!gNp%tYd7%p3M zDZ1E#>e_)1#@~K{A$HR9M}c~5-k7)E0>XHmoYeH0#NbzmVgolg@ZS4rbjC|ujnnz{ zW$3&nCeSG-#>407gYs9pmL{^D_ZwU+8-C6^IlhuVj9dD=EMB^*b5_PROj_q5+`OxA ztZ>WenA?x*I^I(5AEQsL+*xj0Yn%CCv8NBca%XPdg#iF`buJv+v2$U{KzGgy%XWNo zn#t(qE6u^-hIh`ca-+tvS7pp^;9_6SA zS6}4L{`#)V=?P6JgE>e3M@MqslY_fs1kL%{ zMjMIX66SS2ly!Z4*bY(pRBG~3)DZYQcx2K+VavM%!sF*_?RtHuoj!lvt~L?An+OjO z96`a$PB?d|3YuR#o~p>&g(3WS_~L(8uEM35q&Jef-ro30Y%ABVoll_v-1QEtsfj39 z#!5^p!Nk}CP9(qk`gc9p@O3$A?PkI&8DU@%!KNah07=R;iX0Gn9 zy2*^E8n8|qd%cJ8`gENg2GTAoWhnt6|KK*A$~5nNBg&)~KAxmdFlJzbj|@zVoAiZ4 zkccAdWQ8Br2{h)`}F$}`{9<%df*Ou{gb-f+HyQe4&ld}_T(EFa( z8CY%mK|VTp$|D>BsT@H4pSCZzfun6MF+CB^nfNeGWQspBzgCsT7$0Ks`iyLVAQ-G212 z-NwF)efROhcK_XX+P!ypux~$plxO+jgSLGCUR$_xr!C!C!M>ecx}y`55xnxLR|$Cn zWpi^gADGD%3Qn{{RwBo!!;<_(3h5pqXm#%;n>wT0a81v5U6R1j5f2`NeHVs~KCFY6 zK25&p6!1*+k|=pvSFx3oxMM39NDSP7Cw>O?%X4k$haa|qB|6KbqYeguL;n!jqU<#t ziBkVQ#fZTzc?wWdfRlHO?s8R_FLtUa6GoYeNpj^9VK8kb5^_o>unF(siGD{n?aH^_ zjaazh*YRMbGC!=)qvE8kB*dS>M-#k^?8LMRuJ{1Ycq-s7_PRK3*)Pq9Hk~VwJn5yP z>N{bPztT>8Oani)@v+>)ev7t!i~e?i!CM~XiTB{TXiC2@xG+PXGL?4i@jlzIyK&rY zsUq&=W#oZ$=*kH*Hm_^R<3y~J(}yR`Z}#}D4?p-Fdw0K`peQ(@T~~x1W}(45RFh?jp7e1<6JVp$Vm_B zEB?SR&fE16Sz~?nk9kXf-PWPy_Z@$RT!CRGtimeD7YHU0G_Q$R&BA6iRu7Hmd>kuEeR!8+T0i7W%w-m9B{^t)!dvAkHJ7r`^{_TZ#e8l`FjQ3em){Ei4R?F!i1f)9RU7= zJ8|nntM=u^*P3cmJhpLVQuqSCC7xlzuwDsGn(A){+6f4KyS>^jf$J%?ci(@vJ)n=1 zcP&$$d^9<_D)BGTt#;{0*MI+g+h1RAXSR8Fqf;+VHlJ+owyVR#EaVMPPnpC956B0s z%3GWwZ>5RACKOLK!Z=J9i3;k8#K|c$nyr{(GBOUsBJl(h6Mmsgg-)0^nPjK$Iyczpv+O1wSgF|mN&GBekPk#!WF zv~C7bH>54wZ-9^Wb?o4nv6egkt^4$I@V|pe>5z#YaLFla@C^NkbFyDov}SV|cz6a?X zSOv?6<>swR7u@i7oS6^vl1~<&F`;?=Crdjx@Orv+)!0pGZ zH{sAUSJ~lVKWBgY(;xn*-GA_){a^m?|JSxo+aITX#^Jkn@1ujyFSJSc)d|LN^y=mN zci|m3b`%ZArpM`TJas}@e8evZV;hHZCvHcdRLmj*X=o@~3k-!_Ja zB8C->G(GO(9RKd!H-EI_?oAQ3Jh2ld+fujb2MG#q0K@B9p1*q0Hnuj~%=~Qo$v^#h zt|`1kcK14rY3d3f+AQO&0$Xx5eJ38$#`dDr%Kix26lp|C{&Dn6wLj%QvP=6_b3r z7f*l+JpA3IuM;`QWoZf>?dO8(*=0L@{;C~sY_HkoH(UsLtC4G1k;BRbc z)3rNn$B9mc_O|}gOmwt~QaJDzeE~nm=ETf%aTkws(A(wqnK;qZ93;#~-$_k>U~i+`^y! zQo_-x?(LyZKC_M?ITmk z{A>C;=#6ga6QjeZeH^28@6i(t7gjQO3r;1=V^GgOi538f4tplF9@EPk;M?0VJxt;R zo#0+^D@=&|_0i(hr}alJ?7V%|#KDhtvgbz|Bb+Kng)3WS`?Q3_quh8TnSZo_B7MvjMuKvr;uHSIks}FaJ+xq zwl_CXYtE2sr)_=~ooEOi3Z0}S@S$_sD)P>2e>`zwzpB1f-!3IfqYD>D=BU8W`Kv?v z6mP;%pG&!fYjkaCK_O~UkTM3Z+BjtV5YB(%gmzsXeZ0~O16JTn>On{nP!U><~G6 zz1a?&%mua`)56E^wNW~%!=0UWv5OD^b?)H}8S#~leh6ZOD1=)-Mw5_4jqzQRcZi+Jx_Kv@zX)o|KD9_$UGSjN z`fyE6uyjvXc^a<^Qla$=_y_CT`7nh$O3yDmVKLsm`pp+n(%^##A9o+yND7A<2sptw zJ%{2E#xaZv*EU8MPb0HBse`M__ch_zLs7V%+F}Up#%0`;%&R+ridh0Bb;$zdL3iHZwERKKbl(2EPx&3wCf> z(Q{H3V{XCA48ftxy$tWgTjJ%T)3Q`t-9>Xz=N-D|qj~b_-f`Rb`)}ITH{ZA6(+k?t zMmy%YcC{Ja*xx*a4@MDA*QB{_qti|h(kYFOXW`=YtM$+|J9)^`k7uR9D_ybe@HBp8 zPCRmTjRKO$(rpX{+tUJ~C;#>(tp_k~(;C}&!dE$Vb=+O=E-vKQk?D=jPj((t=b3cC z-zQhaMBy6(6ubvm`67SGvfu|qXW}pKU{p$T?T=-pUR6xb8Aw~l)?uzYp*=fcQ1`Fa zWQ@wCrzUJ$mcfa&6Xb;7r8q+98P`PxuVe8F7Ox=EPh`wXA@Avee0bUc=A?JTPULh^ z9%Pxvx+$fzk~&ZLuh3v+EA_u}2?%f_$Nw+ z_@pDk9f1A_zbt>0$-&k9V+=1pTVpW{4|oNHwm4dE?pQ*j&CYm21!L5}4&Q0`4Sdoi z5P!qqweq*z4(LW;a}Qq&VEhNtbpOM^30ZFph64K2;L zK_}`xA*Y|$9{5h1@|va4Tij?*$xo?O<~YxwzeqkT351%4r(psULQCa^8DIl`9^7OnU%#+lKvBeS8tT ztSgMU zRl0~Xlngir#)nS+(`L;ga=*xJ;fr6uO<9;zS`2QcmY4EvoJ{UJn3U#}e|&thO`~&p zXJb%x(j+_&Z9}K-(Tzf>+p@>leodo^?GIr+EqVjIpeB7Si<6YLTiUmDRn}Uc@pBT) zx^kl4U691Bg&t%k;mO(48l=k=GU6$}8KS%ZP8Nr-uTH2h%9?fq?w;nzbIe2CQW=?K ziDo7oK*)RP19-R2v@_wyBb}YJPJi3cMBFWP`bGK9K2TXNuMiOVg2T4fQK#r(Ts(X# zz=<+-G4&x~^X{O7r+@cktl-{GZ(8XZZ{j2zTm4I#7!Qh#K z@X^QZ;J}Rs(3$v_ZEyq_lzsE*^Y+bO|7~0Q?pZsazp@{52j1TLX4^$y-+cwF)%A9= zwbO=dgX%frM&HjbdGbbq{1Y|rf6oFQb$;+-t*w6XP1}9;yq(Z5p6_g<|8F3VHrp|} zy>;w_b=ov(d;L-RgnxQdMNGb-H-9xrkBc%$Gat)meM%Ym`joyZ*NXo%qVtfe{9==#W>WNj;_AR=cq*(m`F< z>lP0;Hr|w(M;;9i0>={u+0AMBk)4$mS|h+u-FShF_JqOU_ylI*8qrAw9?|b)S%2x-+?d9*j%?>`JxF{0&PF!UHh!o!m zlX4eSogLf`4_-v6T$L5?W(J+WNq-kfGqx~oA4j8K@Plsj&%gSsziw-*YoWv2CcGe^ z&QzaQ>1vV@Y=EOz?>6ivUE-FXc3yG60U3`QQ*hom`aJrvUGhq>e#+BMcJjzW|LcG8 zuiN)8p11$^fB5&*4gDQ$Xc4{o(cSxPmVR&y9zKJ{i|CjOx0m1t>REb2z_D5MR~vel zS0P#9DUAQrM{jNojkdGZ-S+?efBw5R4!?i&?qkN-UfGrmj0vvKOGeSI1{JMuHT2dFfECpT6>X50UG= zENVI9h_~Uw;MZEp4pQ48vRJaz2>?%xAGH^+U$<@ayjgV6AN}b+O5fs!D%(-GRJl)E zay+FjVi#;$fk%(U9X_X>Ir0C+mtVDgbv4rN(=R-_bGO}HzLR!cG|<=a z4vvnZH%PNgmw=B8duPBrg?A>=X}9)v+TVWhTl8TkS%Yd@oL*=jJ^D~GQ+8-fy+^l_ zM!*eQECe%rR`p9d(@!omVHJ8AoyyV>aM zyoche=0E87tcaVsOAS?B#owUfCC!`s%k}nedJWTHZsMh~wY!I(w8yw@S6v$X^j6mS z*eCbn#~8zmEARQPn?b{bvGejRrT65LgTPNOG!MP_h9Pl>K-Uf_{&6?uEB z#nH}wJKo!mPT}V1wAapv^G$h)uRQ4U5SBUieW?gVP9#m2s5jzf8A*};k$jXBo{}4L z?j5;q{Yy)ATIbG=!7Jk;#@(I-8vHkZ{HMQgxABPA>;UQvVKG7@@|c7>Ib7*{@w>0u z_VbtRcz-9ygWV0d@#I;%+NXg6h%DOa{(d`Uu;Bf#E)ERPS)6X75P$Q1JAC@8H5!z= z{G7}?*+0%M3-3f$Dfiy*+_O#oR@?;*{rb>Jdj?zhT|rPM@dr=>z3xSGW_^!Mw#mo$ z+Q=P0xH}xdl!jmg+#b#tq*L4b_E|ew-6SoHzyRCb)FGHL6S)YV7ip|Jw0_gbHIO&n z4$7)Bx(2D~DktwajhQMpSU)OiNQE0Acf7e1h2P!MlXM`jprxHO996q^P?$Stg$nrz zYSSef#EH`<#t2uXxs9ReH1f4 z7?#N#c*v_9Ji_zf-rY8fGO0XRT3&2ZQxlnBv4em2{rB3V$B$@S42(Rff+ARzRQOab zn!+>X3noRktf=YG#|GM!&+=GDVx77QFcV-AcCfzHwx7IgBXnAe3$xjgezdlmN$WAc zm4HABIB4gUSZ9>UuX}sk)ZO@gtvvU4k$-k$z$5Nn_ZkQDbJx6+FeOZBjl`)tOQ}C# z%Im%I6}}f&$}Nh8zeTCCNmzkI)T{;!uWEX;E5{?5f>{|*MZFl|C_VkypLACOD ziyx9Qz|Gi_#J zzOF^0eR=)Q813Exm%QSAsySXydM5)^ejT)W2kt2YKaV3GZ0%%cqE~o0D9m?Dh*uw; z1TV3crYf-vV4SdXv1EFBx{WY^v3yQGMS)K-u9_c0^Zvy>^7gdK_SQz**xYFA8*6QS zeZ8%rXszPb&xM0S1}Enz@wr|`rOG-sZ)qh@ii1BASU&Cv-38c|LrCg_imwS{J2vF- z1#L(9o86x%`ZveW?2I~Ih{2sJEri4Wz}$2j`tY5CMc6e1rmNQ*+3hF_eY`xeOjQ2) z(>9E>;?^rH$uF7)FwMW?gEA7aT*8Puom!U!l4OUpWi*Ll;$fI{kUzDP0KdL`i9>$S zqhun%`Xyi9Rj7h*Ju!mloB|WJ9)i9^xsYFzW^}ZTz=H!zbL|>;qaEkocI3Ac%ylwg zBn!b&9N-U96|N4LtfzjriTovgHa`BNnCPdxwLng;#f`BJ8u-)(Mwo@lakws^IJa_*nAB{KM zQyT7?zeHAD^JE9T^2vobCoOsMvGhae=7c@4o4l#t5$;25C$@}-OoJe)1LcDJk`G=x zSj?n=wJdt{* zK2mSe4=Z|tJ_*Mbj!d#xnCVS}ZMYwF9)15o z8@jigZ?Q@268!Por7K73EY-VhMHwd*xM?h1Okx79Z2@62#|daC{8XFp{C;0cYI zxG}CfuXQ^?wEKF!o$MT>oYYKk_4^0jhw4J%)j7NhPq~=r#J#)4)n~FGL7CI;0UGR} zr<1D3YnyHF<;%A9{Zn{&AAa*B5$&7uogVOURUQh+f}IfZs_7t#9X#RA?K{TL@u z@Ifc<<*lCo;Y$Z*KE^wv-FQ8zJnL!NVf5^LP!wD{Od$_-PMbMd-EJFSeAib0{+qV` z)pu>@>C3kB{8c;IW?;wo#)5uv(+?x#QdW>^au10$~CHl zeU8ZQ99i!j{S%CJzIpMaef9L4MsG%1+8dGG9F?Q@xU2n&ws3KT-)w8p1s=J(ywZN~ z>E}6J5S|3Bj5i3keHtgaCA{Mf`!mL1$J^U&jBpojcAme^c4529d!xJLR8O0%*)Z{Zu_fW{<5v38x|dfWoi4k zI>^6^Ur(7d7ZuWq)Y-ffAU%RN>2CVT-Vi0J0-*9TZZBi>SFg>4Y3HYjd^K+8;Y3d4 z3Nrt}?Yr%t{>jhV|M36%f3)?j-R3>~NQ`!8ak1T7T5j`G)6rY(j~~ACs7);R?Fwi@ z6CHvtMrZsGDg8ljq_c=&haTi}W31PK;kNqackNgI=`Y)(mD}yk?IrkOIPFUPMjVgn z5B(0`1+vhqQT^cK1U!90Tie>)Y!mSI0%Hng($vaQPHtMp(AxjhLx;y7n9f5w7`IDv z6CV@Nq*I4+G_m4YUL9S_hgWzdb;h6ls}p0=%<>vn-cwE=GIn_VdbRB$XXcjY+oyl> z(>CZvGvxOWaymK}XX&90T6Xzb=$m(8S+35hvCb0y4@|sFCca&8(djKi zK;>7jec(-eY&UV(cMV?9XMFdx?f>X=``o$%2^%0=;ZF|i|2!d@>&KV3Z zFSo@X|F~UvB6w_qamPZtH8a;v2Zxc-x6=O{y?&L=w2@LI-a|IO;{DYLx+FN5=hF0S zdv}F?2>0gpRyOi_Rp9H5jkdGD+wRbQauQN}fT8|=p)O5)C(2)KthO({{VMvfG^E(= z{>r`fVEI90K;%mmE9I9CE^?2I52KPE0*f*7QGFZ|R>8 zYU2oPsdjE(wwZ<5=m#15qL=<@@}N428yd~WtDc8QkRh2#E;kltB|KVlA z`0>B!Wc~8un0}0MxOvx<{e~#@{Yx0t6WeolY0v+sfBr9i;Rgbo@b&oq5lWCd{D%Ot zkHY@?yYFZiyC|I~d~_0fYa2O2Fo4oNVrDd!ofog$<~L8<_SfIHJp|_V*H1F>zxVA^ zgyUugoWgdZ)7?0B*6xb8&_P;ept0EiT{O7bJw*6YNeT_(r9vhjO#{5#A-H$k4p7EVzJK1%UajSHgCFt9hc1C3=|jMfC^QWr`$~yN z{oGiF8Ku&d`%V0^t-3C_;`5?#lc9#-?L7ttQ}Z+J%GD!qcQxkAUw;8JjS~G9;g>M;3IcB%tBe2K?`e2f@7{kpN zrIq*?A$O*!oQT>Vl%q>aTy4|D^fWifzu3N4cx(wSU&SWAZZojnOf1W3baz&gK+{ad!4sC*L2ecnQEVMdy7NrFQ6@O>bKtA8ucE8s zo86Z{G@iR&yrcUR9&y*2yOh1_(?NEfL_jXVXP#I(agp=jFduYr63$)pUM=L#5AXYS zg;i9?T%>~t@~6CQC*xIAa}083=jO6o!U2YZS&uPVkC|Aa4S5pC4~2TVWgoe_ouiLy z`S7*ZU+vpb;jb+7`hdE7lBB8J{KuWP4xRLluk?ikYaC(m=iHHHG8F9wtLt1fy;5TSy}U6Tq{=>5jB3(?1;sBpH8FLMtuH`q0+?7X~2e^Hqe2!ZlN?C*}pF@+-UmW@}m@bu| zCl6_y@OM%*A5euq{UGG={y{#v=Lfnx6?FnmK6yv>MFEih(j8n?);-SaV{!aAR|YKz zUjU7s#0mHQ-%o=(2%uV3Ej3zbFZ$RzcrGp|i!@RDb1x1G~AeJ-~4 z@!Mw*>j%^sY?1DQey0>eXq&pU9x0=4o@~;PFI8r>rJwYqKS>;H)7$nP{Q3k4y_8$l}V;0elLTwvngc;L;P+{jt4)g~7g+SuGoJ0(xsor9h5D01cG0NtJVxhK_AEb=p`*cm=gG^q z{q!k3yHB0DAZdH1z9`qQ^aC&N$oJHqy5QL4B>fCo^Fg!TwN?)cyS_C?$H z>brLIdM)k6$rE=6I(dJvO}nDZl6`clPFAil#`xy1{x)g-4vOD6P$zLQ&HG=a`8kg} zaGm78xbzyu)0AU|G0gb#LarXOA9E5|zRQ)2;HFM6F*)5{y;yBKn|rxVA%=X@N5CVV zUh+Cr>ne-Nj4RYDgmFn-jC;ChdRl=OKih&bFa4PG1YDfSleR&7KiuA?J)Jc_cIWkF z?)c2c5^%B{E;x*$*N*YX*V!PFwgq%xMi;%Heq78Y+`DKEbBFc$8T3K6*;nm*9TM+n z$Of;$^h2y0N4xE}-+b9luIkQx+sfd8yYCoyQyy^^>Ea8^fmhEbzF=nHpU*%3q)pFE zra8-x)rKp1#u?%Yj+dL%`PbjJVRSlo^gj99FT%TCo8<{RH0}2qQ8?So~G0 zzWjK`Pu!}ki5DC?8`DobBvRs5xF%jafy+xj8SG=a;v?Rn(+xcH!B{r^l-bDxZ#Qgx z{J{sX;6VEifA;6(YrFHBkkNK`aj7lOEi_NSdq4Bs!eV>)!8>i3agYsMzM7bZ4~MKV z`3PfTNrxSpP!HN-kRlQ7>fp5f)xZ0Tw)*|c_Ti&P=;D*qnJ0by*2Nh4l@6}kZ>zZx z!qeE+$sXeZzvs0;+wlXaW7FvE$iPb&qv&6C7jkQQJI0ry#oPXI^3#P>T7RlK35v&? z2=T0tyoQ!tpqBjrZ8H5Hv`$@ib>ImHCr)=M!|cjJ`{buTYJ?js2TC zo!=#~pEG&-7M|*pD}QD3*WY~8UcG)zI~vLu$?qh*d;fl0nqQ1;h+dZ5-x%vb0Ee|G+X*9=v?;LW;I4 z7p#Bz+cr)=2Hj*4p{TP8*^B%n5ve2s8W-zUG-Wpj-^@ zj4h#~w3Bz#S`{&doD+UbTy0xM+7;=mI!Q@;sjEa}dYT1&g{P`U@7`@QAAZozkdO9; zrl#AEK43q7ytdj-tuy;tV4ni`kUXEmGdo`8Ha3hbzHIktgZCJt%14{@arPt1&JFs3 z^{vgeytLdV=zHp9NWu36fMs-p-8bKV+kXGz35bEaWkRicxOBfQ&MqPQ(HHs4BrahZ z<%enA(0B?@95TjM-`OE=@8|m9tn1LVv3a>KMYhZV#`V8K+ z3p9CFnwUPX4wq~e4c`!1Fcp~iCef=L{`66Lx3>ID`EL9uGkoH>kHS~_e`ttW<*X<0 zOrF;_@4Y*(^;2%!Ps#}`^G<&P?_JtoE0=gzx3!F>>rX6cN`6sg@Q^1c9gkaS&i7>O z!e2I+0DEq6zOBP!J8t|$zmu>1)~2Ths-%U7r1A8C!<8w&2}8K~srNc3nUe*?Q7>>I z*}79MCw=PSEh^#cajg?V;FEHIQ5UZZu6oCv_?_MJg;Aof;dqk=@7QiO6UX3*-2ydmfw5amLETEga6&X_?N#JorFjb$oqj#w-IK5@Gi!!m#-)grB!LN!-L=+hjS9! z590cTW3WfCT(uFLLsZJpDMJMYtAljn?lv1hnd%3FB8x>5Cl;tM(x>qFE7(*zZyh^G zMiHkR`FPNo#32s~Idkw$xO87*%Lfhm3}XMR`&h5(;YgyY~b3MCbLzOmKD z0q7*2cg@NSLs4pF3NptO+1{A9-EWLcRgK<1i?8Y5t2*LQZ^rc<@5HAE8&;cPFy`dl zs2@CW@&Vd@_1oWN#nXm5qe7jAt#a`eCOBtgOcWM(OPhb;(dBD|e`rikuuKv+CJosj z>akY>tQh@V;q50^b0@H6Fuh=S4KPfPSKe?}$L~}0Q4Cjjj~mgt@X)1aYW_@HatHo$ z(2TLeO$y-}AKOSOE8_Z^4s8b>b?1V(PSVKl(-BTM=>{wXgS!&^5Qa+W`yam7?%lgf zXM91!Mge31*e?L|i%SYOvx&kQEHst3e|fvXrQ8YEmR>v+hhT+m-bo2>dY#M=o#{|M zc07_vpK%6{F1{S?`EfVOP2IbTYS3$mEGvU1Kj`bE_V)}hRZCoTchEdDHQOd85NzQQ zu_(Ic1rwUaji3MEl7#@;p1ywQRv{WeDV}&%8t@L70R02g`{^CXy`#%3oxZQst$#%y zJ?iHMr17;A`36Y+D+frIdhYnr_;0UXC${klZSWRnl~pHzYEnNR7LKsDyzp4$18ISw z0^k6^0kV@dmfOjqW0cub+GVapQLzEGyEIf#a^&3dK&xC$HW1%kd2}! zIGN(n#?TUDdQS!{P?vM_a||XX+T0xPb8{%pb8P{|W_f9W@Wpo9d%&@0C#Pti*X`V$ z+R3jLBD^wacW0;V?rzgz?d1N%{jKdxZg{PcyBVCQOkG(I7Q*(7ojY!!sjK4dP|ux^ zJc(mCZ7u^EU$r}b>q)979YylkWIH-+*J~TCZSA)~;HIo^<=MAy-@_<99K)RqOFsNT zD}#J0LGQ){mU!T!TR1+ZliB1Cl(S6W*uh8n!-O$#-2kfgTocxW5pJEQeHvH1D&dVg zd1|oB?PK1!EYl60{L$uJ-hlo+j9RR_%)lx6IU$+)fhVma>NVxD4yfOrp;P9-qijx^ z!^^dMyLNZ`(fn(8?!w*SJKOC9emL3P&2>J<)QgLsxrZKjeIKhlv8VO)n~U%&OD@8@ zAmBZoStvl39=ULE;)lJCqmX-IC6By^zejYv^Ya4uH;alA1zhbnlqEF@OIgjEGCQ$z z4$ou)S2j_$+n%9|yTNibl{+Z_lbQmk?am4RQ_AB+neghWHrg@+9Y4h7F2S0-mtNIx zys0<-$v>07@_*`%N19M(?}M}+)6WpMAIO{Deo>RtFr-O;39Rhyav)>53Gs0e;+%NI zN?iR?*TJJ~2Y)$!3XT1CiaYI`{Ic(I65IGrLb!{{U50fUqb8W8mHY!%^-f%QxF%!F zv-)f|Z1~s5^cxNC4pc{zkFpb=bm~U7n}}V)l$kYYr-jk;Z*Aj3{v%&EzL7Y&rv)@co%Dvvz4vruC?Y&`Sd z+kThGI#5O%r|P-z(Vcz`nEhm=eO#I9TYR-oFiUwS!Tj`9CNFrJ(7|LjCBS33K7

      A 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%0Dp1@A8R}KC$x_yHa(u_3b7McV2Ho!Y9JWOH3j} zR%jFi(v^!~M zXd{pBKWJmXp_gxG{65)y*?#}@+q66Dy2l}8<`K6Gbt8De%~1AJ%4q8%i-6AO!220z znAUzzzOlUe@t-z#__6F4OQt9uR6252|a@4eH;?k>~! z?6$SP`=V`p@nx%x3C9OdaUB2vkb9)@hBClGL_Y`(|vawA7O+UO?yCJGK>lrz5= z93_to>rK%&u2|KtTOT)Z1lqS7ZRJ4PN!jriZtsqNSMn~5pPM-SJV4%g`h5EMMK#{@ zqfKnmWCNQOWjfkSe`T?cvLKsZ;Hl_|$qWAKU}l29D_4N(-~A>|6+U^XBbc`fMuwG) zta!>9;l*efvBR(GL%GDbk#|o#4i1i@pQFDrmf1hpho8|6;j#2tT|3ZZ;}Cz2d7V2; ze&!=yaVu-Y-3R)RSMZis~UW(MFZ!fipxw&?Q5O7TGBb`Pj zrrWze{;YlUCqHe|_wKbb2yu+Sa2Rb_Be< z#y^2M&M3T#7Y=?D%no$UiJOxGFpc*hx)bW;n8E5%De@|Jw^W{RyA#&%3$*S_%5qKv z-aEc(rwlYa3UzgS(O&=OziDfK`8WBPrG)DTXf;6hox&7tr6)f;Aut^mxQr5Sm^^aS z3qlVQHe`9uNOW?+JNfS)we!vGHi8myw7Ss-U=-tePwv6?L5@Fq6^QpvUY&Y8+6lsH zAZBR3$y%Eqadgs0`kfx0w$0ZY`4FiSk}{|!Ldi7XUuo<}EfWuU<(^((2(%VPO6WWI z>oQ9DQ`Rnh!4Z0}sW{!EyV8bFD~xx#OWwf*x9>eph6fBzXN+A ziI}>mGT5=X;_e4Sv{p0$;gl{P&!)jUdTS?r{1rM>cr4LtFxN8t5d;Z;rri@WNagvew8 zakBeDx>6Q}-x0iJ+j2KxKHP?FTg`yPeDEvUNlJJ86OOz2)JonAgrj;9ys``DCX<)#>>-}tzZOi;|Ui$tnLVV=$c6>C)H?g*=5L6CjySs zmJYUS^50$hhr0*Odw!1(7`P)y?Z6KA4l@bqZh!rp$am+Glau{*3Zh}&=B2_c?NoZD zxlG`(Llq^4qV1UYPT-wDcdtQnN5~;@_krnTpOb#ObTYdrcJAcaCm$zN%}-^>JCz&p z2gzp|U40QH-UWd%cZ(~qp^XzCUVD&EkGeibMqOSZuaUXe`GC5oCE#@O_nvtdLcE^H zwj{4x@20aHw$1RnG$%exlL2blGBo#zA5ZGU_t3(+kTCUb2O9Z+SGWPc@Cj`we!x#N zC0%gPHja;OS97r97hHJESNL|Ez7uwXXLyk4@)uvltn-O zsDrd`{IeKud&6H`l&hXfani>75x42XR$shsYdm`!n+a?15~XPqqZ5pG=Gwx-Qd>qY z-(`UK=H=mtZucf=WA`9!Pds}!e{*@&+2O1+*ofr+gt76U=R8oqAQ$IO{D~- zJ}8&GCvEIYBt|BRt$*shUraIY)GzrfAF^AP@R~HXACXE)eq-z_^n-)j2=P35F^0}D zY@Oqm_CZ4Bm~pDT;P$~UZAU+VLIGg=j?E+AswiGWcGXD=-T63a?8~}N2|1t+b$AZ% z5N{v6w~r6o7PQzwR&5<0wawFmwtBqRUhnU;S9?2c729WRf48k4Fqk~tYwL&mZ3BCo zbh~HA?Z`<}_zjAr$nsTPr{~EmH!i@h#PQDbGy50mrY=T#l!?;Vc3_#@1z!``K8g?I zqvezLfaL)7i~##7`#E(#`Ln0Di~QcA4t8X4!pnoYIuw? z$lLU_@;wox^cBqRqigsY?83duZr_^SOY#!%ZO0A{m`c`mI*sM z*}zG?%MTcPwU_-zCPHj`#LEM4`weMUllSE>4uL5S!HYEFVq9pG(;;uc@Ea38fhE0# zMc!irBRMrIpYGAWJ%9QPyxl=H6#BYL4gpMF(9NBK-uFu%;qLV;m{8`uwT-kvX`u|- zw?9+{GEnaCFIGSE!`Ki# zo^SB}5bf<2GQdp?UN3rO9}Yes5LvG5$-)?!*`E*E|KpYh;vKp|#5%FeoBSY7va)H2 zQB)Vj!qJBxWEeby(>^Z!Yr?7yneY=i#ACexxnnzduO}!RkSMUPC#8d_O~0qz^PPap$L}bFGNiow^y~ z{(Fy8UiH9B>gx317``7#*2=k@_{0QnU|7}|vldm#Ca=m!2fIgYoiVbf^7_-fH>Q%u zmd52Qdi6AScf6YwTmbNcpir9ds;lS=+M$2>1y%>=jS(>{A2T#f_nOCay}{W<`3L^y z>tg{scX`K1clDWylf)fgSU=W~legl?Bi`0io(>ju-EWwx$tn7E#t?ou)A@l+a+(K_ zY+Ft$J-mCb-9~52Tn{)LAgBN8@BS-ItaiKx4~%VBr@UbHrMuEUpua>Xrk+K`6WLy) zD&JVAeIJCtPXMx zKAxdHgZJzRvj72n^|34ajIAB?-3F~3Hw|Y_Y52W|ZSM0A!qc|Tp~d+&`O&*=>f`rX z^9nUPCU`Il{lHeo--oyMk=s5;w0U`3LXHB{lV1HIzkDqJ+Hq#%&d6vxxgKh_7FXJs zSLi{X3-8K5IwUJ^=@_pv*H2)UhqzIP5)Ih9Zg`_V8e$wcgx~Dg#LZPb>Rr}bc1uH} zv}4};x(R)87aQ?|@v5mzScdLJ|2}Tm76S@-kHa7TW5px+Sntk(s6(iij3M(r`sA}V z>O3B_a%_$$1UBK|rz}g|f=7=_egzo>3$A{S&+Yf8rY3WWB53vLL?nrVP)uOj9XIcXrplr$EP0r8IC}gFbVcrIBXME}L*G0905@3P*I}yey`q&NER(%H z@=*AQIMz@6sR!JV9Z6g9QcuF|(gxt$cHG3l+=O?ga3T!9U@c6;`L~>%v)VR}+-3qz zEOTpm;b9@nETk|Sauvcppof4)?fv?N>RH_P~tlx%&jcuUe5WI z8nG3b0d{CTXGxP>b{fomG`>e2<4c;g>B z`)cDxSlP*YC6N0qFrk0grsqj_A$VniovV`vc4X<)h^u_+l}+>OJ23x} zHuaz~OXmb$#~NWAc+^wzF)#WT3|(wM{_!#dvV|BTf0cKAHW zDs9oeVwG3yt@Ro?MNia_U4sZXes6gK!nM*yhWh^2?n$Ud2-% zj2;PZ<|t%%vctDZNanm#o^<*hy&QmP5=%Noh`?)3*z&mGaMUd{9s4kV7j8aMjUqld zGS=qk{}&dQ+S0u{ZSmgSHh2F{o5wwO?{=HLf45E3uTDI;)5h#@%cIIxi&gC+eYaVha8Z)YnDNdyETSJ z$Ey9oN9qS>?t*6kdVF%+j*h_}181lwc{Ut!nb^3SxyH=berlkYS@ zCuNK$0glg4bK=00N>1u$a0d+KkL8y#2M%O;gd3dnC!VBL3S=-VPGTz#yf_dxMlaK( zopF_orL$dd4Q?I> z1NL3!mN?SHGIj2pbcL?c))b)+F!Q~SLLs(4#!YJkwG%&1|Kb&_26ptB%8I%B_uH)z+Ogvd@{*r&`hbDc zp{H}9y^9F$SQ?-{Rvta3?T-b&8$2b3&hyJ$e{i(6nFYI0ZhWLIKDeLLNT-L#X>%8z z)PqOdg)hbD!C?x%uy*_q`?^QJU$3`8=}o&>dheY!hfK1z()Up=9~TJsSJ&J5-T`e} z1Sl@$oI!TE%htM-m(BBVy-qM#@8`r@dGw$yKlFQ4))^itKqo^|p!md9eL9A4^LKId z5PH9S^1RK?cugp@0nR1zEz=T$8W>WTkO(SJ4&x{kO7DO#@pH#JqpD;AYqY_M@!+jq z>UB?HHS&u*w7iKcPxJIRx$?%3BDsM3> zJVdJZD40w4bq zZm7U2?_M^?AF!oAmg%FGNz9JE6;ODUyTZz^(C*^UW=x~rY02#Oq?@M(AKtmw_6`^~ zBZDlL_2dzrwPv{GjR>ZA*FV#*~ra8WUy0BY6@L z-j3Xt?z}522dAdm&ePZJFaQ02X%ANJw09ppj85icz9(Si?;F(LDtwibayTi3OmK6Q zJHv%(nKB-?@S1p3ngY~;B0PBMSKj}PNnd4N;4Hk#wM@o7yqZnG`KO;A^&j7W57GHo zWCPA&x*DV?QucLpvaimgn|y6&J&iqC zeTg1#T4jQLZ1BPF%xiY&W5S=Fn0V)5oATQVOY@nCzdkx{Bg^O;=(hu;J=)mHspvF? zLN|JpCpM4NEy36Fy35|HH9e_ozR``q$uyo`G~5$+L+IX@Q!{P;r$25Z4{o{B<<-!+9tCy5nY}9vYgIiee>OSZEbZeJM9Oc!Tp7mwlq7JD2K=PkJoKt z(m5#lMriVE?Pc>+^3v@54XteFF3#EZ{^D=`vTYyjWw*5aqdZ!gTWWU}?xg;D)4S9G z-!|b5`T}`ib7vD-fi3|L-hcS0{mIY&N%I8%?$&m$3LP1BlfpT+SGUxBWv&G$ALWW| zQpC;H_uxu=>wao_y3KeM*jS}2xm$GBXoatM4Ab2|!P$qph#b&KzFne@Cxt04gp(iM zfCoNS|Kz3`ar8MpDhRyJd_Z7^o^wEKC! zdoeXJ-EE2hKIzOuIaBbFCybYzul0m+$#Yqx`bIa8IbUTt+>As(_{jN}+86{4(2a7k zK-@``a)Foc#b>xN;*bT&4i6|(WyQ~OnX#;Yvw;o25l<(f3ui(a*f*zY0nt=oKSI7Fg-ny z3YK&gTmmQr!NWM(#E3g2hM_VzC60|bOc&GH`sq&EdJk=Mix%%;rq0W!H^~oUXz=yF zi_nMJDJw7|wDG#>C}ecp@|lD58dN7Boww0Exw5&o(SH5c|22(lijK^W;;!6YZeIIj zB!!8Crg0QF7tt+y8k#iK(27LGw?e7-t1nlNW*R+D@Yby#Pyb#9AK<3Gy4RcZJSFtB zQPSv)oYW}cM%if>yK7r*_w{z-jeC#m_;|}5yHoHB?bG)B?B(nB;`wXz|_76rtG36I{n3%TFv z?kRzsSb+z#ipnEA;rBcDrDK$;F8|Q60&eoR&BYlWH+~ScKnODmPG^vN%*eO@c(3?+ zTH(wIYs348_zpO|BJ7yQyR`Gsv1A1fsiQhtm_;HdPnCT`v_*u!kIJlkQj_3=SzOCi z0pRB(ss3J{GL0hPE}8yAFexjtDRnJwna+EHJx=T~SVj`<7W7Q#Lp_i(X;tLQ?Q4F3 zqX$Ns_-;9gXL#ZoL^%zUhQ;IJ;(y_mv=~wrjC!qj0@1HGiQ;>~cgIio=@kBT!X39) z)MN*7lnE6O2bQHM2Da(JDRi>_;D1kGcxvLnMP1Tn?nU_2r@Y{RMp>Qy2)g7-7xMIe zcNL&&KTb6BK-=p4t+OC(Qrh2O1_xvCp{K^2g!e9U`A}Ys{Pdw@W?v}q8xYlh+LqF8 zu%oMEzn>JCvd+-+j4>_3n2I#F3-@gGEoR)^5AEBzsSX*19;?d^>EJv+%_ zpgKyOBJ@$V(uUwy?*eynHg(}c-PCC#c%iHR&=$As_r~a79OW|gLNgOfyiAN@uQBK7t zdYgCK1Soz94x1pw@R@iU8GM9eOKA}ddv=MyEX}31B>v;dcuU^ z4x*e;=-PMqoVYHY9MjJ0R2g*yZt4$y)9ai%U3U`h68u5azVC-W`5{%~q&R&6kTUtg zV_Wck?&zvJyX_KL2TG(FZBxrD**xPQ<`9`7th@K`w*9TmcIf^3l+XO;?%m6EKgXos zdHE`f1NI8Dx9_x>yLWPpjvtj*1+^ZegEJoo=+7g=eteTbyI4^#)~8ppqz@!sNJxUn ze)whU>C3kNYBdws(GjV`J0HBC-Id$xTUki+gx}yW`OtTH4WDvj;r?yLGSFxLpsjuV z`*wl89z4Nk{?UUr^WYxi150k(8$d2l$KZ3cxz!F|t!1$;e1i;|K_*>O9(l;R_ByuH zt=;zeoA0yB)N#$s@>09=_#UMKN7ALuS|I;BUhzGBpZtTn*Gbh^C- zcdII|TwEDjfY+y|GHG++$qelD5j;gN_z4;4-R6cFZ(y9dq%Qm@=)w9%J3BgzK4dxM z&)^VxQy1b0eI$uv92Xzl`RIrn7dV#8 z$ZL$~kBzfRpGEai0!XDZ^E zuKVi&^|D5#)-@~Wz;TrEby`x z+{hI?Z)hW@((*r1S|d;=zAFYD@E&Kzb`(#}~%&HNRcD7$a8Xn{*n}>6d!0 z_jJvs*NeyS=q~6n(INRefcCq{=RIWGgZCe{yB|CRHnw_IfQFL)>&SiA?s?{VFoUMH$CpTgb)FKKLZ##(unG0d@Ok2D;^wdwAzu+OC6Xw_?xOHjL-pm7-#!VuPq>&kTkN!YdEo77%A{9RM==Ib@ zbdw`LOrMX&qus$P;_J@)jMd01@(eVcKeNBEok=gpvbIgfp>BX19aTpgX=k*l$&Ws4 z)1Q8rIXHLzU+f;Xk*Ucxaqn)s9&@ou{&{0=+|tO0yw}!O70$W;f8g}8eQ^I#z7eJl zwomzNzuu%^YITq&t1r|4EX*tv?FbP^uMj*&xBl~A{g-xf=~XDy4v%`o zTMdOp_@C6Bm3r!paZb)p+UnM7=wqY%02%(-4}O#rLSB2#5Qut$Cm@Oo09l~(Dk&M; zyp;pknMVjM$sSm~k5Zpg&aGtfpFUB3C%oq+@zDyLILgGGVB)2{n+7l436l@2kIiig zmMamk;I~RpQ9JMC8NUiG9K^lz@xA)IDvQS79xsx1ao>cMjmtnx^1vh(>3V$o_k@@) zmTzgVyx-8yusjBW&l&B9{#;!nHu9!!g-8W=?a#P8n77C8`b8`PJMAv<;UgMpHcsM~ zwm?1FhMZ5zrpw^LZ`b~<17WIPnSXR|@PTo`snemGh=s=qpA8-2zyFG;<1#kdxOvAebTLn^-I@}pxkdFh=>Zm{n5077Ym5@itt?Us9 zUdMjTpY*1|Eg^yvb`}-Hi$|s0zrM14B>pMN-sHkun_ie{+uuKHN6%Mt-|z{HH+Xxg z4KK}Suw{Jzq>%VTdD+}(r+WvPY*C5aV~}C`DU^s=1`j8cZ*&SGQ>MMwo2j&^`I&aa zpvhfFV^e-<-|IzA+U&|wCOUFoX6`{gq(rSv6aNqf-k{TYO-FG^CA*V79|EQ<5p3dR z9bnxkfBFVz<@h-Y&rnuub7WQ;q_w3u9m7*DV3bg(bT&*~T@L@iRQz%!^_#Q;)fHM5 zgK84m0V?>FCh-ZpdB-h!Dk3%*F_8XclClk>X6!d7q62j^hXw%0b=?|$=l5a231 zqLvt3c??c8bF~q2#||nDle&q3k#+*G&_P%WM}Ss7iIc$2bk0yA<>~y)sIxNBmw>nE z6QGv4g2Y{cB^@lU6VJx+h_XlPPxsuZMq3;ojiM`@p%M5T0pWo4+wY&Y4F)aaqhsy8 zciwFi7VzTfg8A;d|T?0k`Gp%OrjZOebLSQBRaRg|ScV8ZP>ans+%r+>yR!ut+k7UB zaOcW{tBdA!DF?JW@5au(>2xB>2L+EuCr23!DiGxf2c-F+D7L(kZv=Gw5d~g?@VK*} zIwx=g5An&7D%zTpnYl|Bndpa71CzWggY|1Van9sFe!c8-Vo~KuKCsNjO*-DFiQpjG zc39fIa$~q%Ef7wIlL8#qETgcS|~fyEwm8JVpF;-lxcB2U*A_ z7j{$zrLhRgBh}H7Cv@}}c1~RcXL1EbP9hC@k27>|fsH4p$9$|a4f2=T1Wxfm(gHhh z`3rwg9%0^GtkstVv;_t`lq>uHe8~~f(XZ@+D2-Cq)j<$w} zfzgpjJjE-08h@Fjh3A}*b@$`=m>=z}o&K3TrVcYe3Ju7_^xb25^WK3LS4f>U?Wqp= zFu2f8PQAmQf!yJK-K#HN?#lAWt&{1V?wjLrhwS*$TpLz~f=7ql$+um*046v@;vHNhhq$YT(t1JACvT>qZ8w4o9Q>9O(tBy&Bc~n z_X2NPb|+KiPs8M+DDEA<7CreTZO@}Uy$!pG19}?6%Oer1UaT7a(&pn`?whEX$jHEl zALI!JK!(|m$uAiYn8tkG!bJ$wLVn-qLDi@73oK+5&oFJH>|t!=;4m~B@oa-k=;R!L%zE?L4*Pq=y;X zr};Pl34e(PIA>rZ?#7XqQ%3oOb|haUqWUNNLMFCx(22KsR=sos4eHSe?C7ebm0np0 zA#OItP{51sImQ2+%B8nxC-A2-+-dn!VtX|SSXF%Nobb}-T{^m$;uUg-wDDcasO@GF zN(wB(q3Hm6>wZpioI*ErE86T2{^-YTbkxlTCn=+gp31Q63(Bs{+SzT#TeMYZms+4- z@FTz@=%*oBhH6jjwn?q}72)AZt8CS`AAA1UQcx-O-k;moJz(Kcr30$wKlJCc7r`w%(9-^;TAD_bWRGapZFX1uV z@{x5SuUjZ}jZxa`cVGNIZPQ)28s)iz;E|chHs-{&$Gz#B)wci^`Z$qPG69~Uzdt`l zu7Z!UeApe<4uIu1WUl?+C^A(3AVK60zroACB>gsSCjz`O$v$w@jW#ngxeGfJP^q6= z$XNQtu1_v~1{nC+|Iqr{*1=x;{qraAZ?&P)g=+G@*NN2mq(S;d{49rYG|^|kJ2WD{ zNy_ojqsQ&jci(S!(0PVoL{Equt?jhUr?1-i-hLatJZlGQYwe8jmJ_>E@UD1!)#4R& zTYTqHc%ydV%WHyG<|NDH6@T5(CjmTf##|NG`t5aOD^$N?qaK#r8!KsUO#f~k(jU6H zfWEoD)_(oFzb8-{2&43dB*2tzX5#V*9$lE=$`#fMo%=9NT>1cCK%l?Hzs%cyrb3Lw zuaBXO_s>`3DDS)tKtKCj^N`2>(dR#G>)V^{1vFQ0wQac2Jda-b;O-sx2)zWJ_~U=_ z^S1Z^xd8uNAj3S()ANozBOT;p@$d7r9_q2K@Pr)d^;df*?XUl*|I`lAGd_9m{kAX< zkHa#aI8ug4+mu2aEkaj!8YhI$(Rt--zmw&Osnn%`2r#QOdFM%zxC^g0aHNC&N!anI zaN_Y+x&$Y67e8_GgE6#X#UOuP;zfA;kDRW82RpDDwgoACs|&fac&^!}rE*Ke2D zmMpuQEucGuhllJdk^RUQ=~(cr&&pYNHEz9X>*#B4pzx#IUdy7swT^r}I7Pn$mz~|+ zc9(JZ<9iRY*w;^(X$r1r0~n*OmGF+9rGLRcl&f#&`uV8)W^9VgQJz^}nP9|3Ujvrq z*Dvr1sw+kGD;Qy5A5Blv&XS7xP6+zuQBDS(x3T%T%-Pr%D4)f36rJ*xrwZ@iZDS7} zeCsQV_l#G~*}la2qj7jLx($!= zjMAiy=Xz)0jKjBAjxq17w1uDjxLuj=-a#9r4)Y<><%M>Q%=VuDj>;A-w7fC$3y<>M zG0QyhFW`}JbisG;KTH%C6%LStPL_`{_7Iel@h$*3?p>IjFFhRNuix-_vH80F^6&p9 z?L=e$FoiDm!GjOdUzu-@kC^4R92oq&SLaJTL3Z__{0p3y@;|KU$^jp*L)PCKU0 z9UFx|=__o@^2qSm5V~H;L1|a*SXm4%@&s}H){SEV$5qaCy3yIbP1&L;RKP=2pkLYt zb^^4ud;%W_dECtR7$48bWBxMEaw8b^W`7m>Ll48`_kas2s@yTw3vRswlE3u*z8fid z)YB)68C9ktguB*RQI-IDS+nMwij1 zjrgelrtRe^Sy79THGdO*rq2iXE`p_R=uFyY*QS-qUU6tVuke=U@>5@4{WA|iVX{Fh z?b^0dycaqpo&_OqWdZ*#UiHQp(oHzInSu0f7;}EedUL+~#nWf`4x|0j{Cs_rBK%d* z-_$K8V+fux+DzuhJ6yy;cFcE&BAd_^oo7eh%D|2}oo`p~a-5uN;K|SL#Jc(X7RpJ+ zF~UM0_hhV_HOEHK&CEl7A~YCvbWq-zsT<+k{hvGk<%b@p-bhc<5B{J3m;d?~Cd#A( z9e|7sigbbuC{Tv4uBdqIy^XC9%cBy;&+ZZdkj^`7x1YUkYrjW5nNi)Zc5-Mi4> zpzVJBeH%asS&{BObf?&{0|o?@R}D-o%(cnoMFwQ#0gl6d*b(8pw_RVBA3{MtLNOTw z#e=Qgl)-x^56>>z%dMTZaSWXqFnF9~b_!)0feUprXv(0PLOD2xcqv~53iT^JPAQZ1 zm)-8rAr!Iv(t^JIyaD&TB`Vj#S-Sy;oXIb=vh}3|Hm? z4}Uw4)E|$HC<-z`;;Jp4#HK9n7%D$IMxhy|S9SoxgYNA5=67FG$J7Uk$nx!F;&ua_ zFuV=O4?s<4fyBiZ`PK6G0!8eF-8X23P|+vc8MlAkTZI`MyWSISes~qlD}8Swq_n}= zPR_FDI1tesK<>QWY8x-t+V!dBO4rZeZaisJ;)J=0BKzHwr)`Tt_T2PBd-w5s;f)x| zA`Ul(toz*ia`t}p-iN-GCgmu>EPWNo-izj>s2^xjpzF3QnIxs%38yc+ket{MM*n>Q zbFuBac;N?zcffuB;1F3?X_KCOGwH@#e#pND!}3aX2^NrJk&-271M zfD_=fxl}Lw(_gET2_A8T4yUwf72)C^;M*xi`778tDWM^=$U6DZa+tY(rjf4F2;LA% zu82q+3)z*IGM(b@Hw8|hue)@m$N0o_yMO2Z$Jc*1eU@DJonSuRd;gTL>S~K_G(dm= z2!bRiQX1~WXk#XJV>J=`*S-?Gpbf>wghrGojtohGAYmJ5Q{7$N<;~;0cl-H#^WLY5 zE6wKbxzD{fZ|2F9C(k)~(qGL1Y<1L}3;@@`Q5#;Cb21>`k#_}5L)WbY>;yW|pgFDO zZsn*>BBRlLb{bfbiGYo@ETwIDCx_VyJ0JOzuF0nVD=m^g@Xw5-WTpBgzveveO@dGkJn$C67`&XZ>i)rQe_@rYf(9`%#N7+<>LxomH6o>{e(5kmN7?D$ zH_%HRKm!Y2)lVKZ-!{~Y+tMcV;S#o46i%CV9M2j#ZhzwpntG1KX&NkcMgg$&+EG3> zT1KZP%kb1x8N}G>RbM*rAswX$`N*J-2?$yq!Y_OS51nuBl#9*na<;KiPF7dT@$zap zSza%v&VIsfIB{#Um5p+`#8&_cQ%dCwW6mn4>35=ZLskIVarf14dQa1A308AtHQgo_( zyPvq7b#7VXHY{CUG{T*w*3(ae)WHsHvwj+0{li09y)`&Qxq6`5*mxPI;pTm8ViLcp zGU}NN6W*uG@EB!JxZ#AEC_~sDE|nf08Owf{Hu4=TkguHmE>8tnX=OR7`@pZRnyQ@% zem0-En-vtYG;$WSG*I09+|nTW1z2^ks}5FZzx6vg#k+pMcO_N^&M7+*4;@hEd5#?k z9A_e{GhFKK4AOMwz-vdy>IruT+}(TBE$!-R9CS4ZInyx%cFG5OLYvCfRynf(c$TZ_ zWZ>B>f|qzCAIXpZlxrKQdZ}GHqK6%*wIlhAGCb3ULw6pNpUsZ5^73G>yrj{+gblfJ za9Cd28I8;?!lOrXdST&Y`1rE(EE+I-ll$>K)kB{6#vLQZfAX?Y%VQl8w2NKUZ7eK$B%#usL@mCx4mml;HmPF=|3I5suP4!U9s(MWN{ z0iVJH``8IbI|pS18)$!fmvn2V)i64$e{{IY6PNN9n~>)N^vm|s7p03bOy_W4e;L1d zqul)FH_F!5W?6amGAnA-`+%xt44CPwi=}U5DCe21e)TAO#M{oWyhrEf%EZm<8CbV& zuboTDGQ6}~HXXFwNB2W-&u|)=MV4l#!ZVq0Vn}Sd$M^1&pM6l~9X?*XbuEJ?;T!Wn zhJ051Tl=uRsxLAI??{85&i?Y?iw9|J4-C+DiSCd$5d(C9XI&_r;^@{6FmxKqN+C(b z)h*5H>KzB{d(jp0r|>hm!L73>qZ~vXLf3fewoJ$|EWBnt>!b&_XX~d9>1^VNi*f8c zh)u}5g5+awG(GN3;&BOgQ zz|;xt1TgK;YR`ce_Y6|<7G9*T2)@z?me+RKc=V$D-M{_MrN4BSH{ZCE8Psm2>bVZF z(+QiL*KF12CRbMTyVx_%)OI^UWk6XBt)#W#rDx5yFUzJ5qd)rmlk)lF zuOjz`w~aN9?!7*DgI7FK&XwnNmwf9tABDy56dqjNS}g}h2U+#g(a~ML@!khz5*@LE z?sh^#-Exnz;BrrX+w;OmozH`ML6B*8ou6O^^pzoWiq65Md`Dkc$0(<%C}oU>KHgg0 z7d!=)XZ#wxqw9TFhcsd3At(AC>{-uie)Pvrd)Zj#-RLO?12mpKR*&|-bi&^VTTC5>@=n_71EaV)p$ml;K4nTNIL}{a*Jz{xq`S zH9Ry@CXtWI_boo8MVc+`T0J!Cf%eEj+H*K3T%4gh3wd+OX0{3?ZQH9xjHSK5SB}s* z=h!5jd%HPk{LHqowk-9QD?4Me0mEG!a;}->(df{sW6g?iJJ3%p7RJYsEXR zesdH`#g^H*J$DE!@Wv&qRN-?(HNmP7B}x;o-U(;alsgx9 zg+@X2kgyJyx*#ZyhNUyBnQdk~F-heOfY54)ij=aevw!$%nak+h+L6bt^-UT>U*&no zEr6()`!#HUVdc?-(AyBp$Q(44Co0a()wr7XN)w;VLVVhnxcU&U5Z^r3cLN$Ww8KXp z%6kpXvkIpgF)FB9MwAU;+-GuqX|3$7@039dS7-Yp1Z8}ZMj5oLd&Hln<`LWy7XQ#8@;KQ6OASEt#<}k#SP=n*;5+8>1>6E)8R@OE2>nE(hdGj z$GVk~5J<;#<-sIGf}UX!{zLx7Kk_6ZT;XFK_sXw^=exN39lZFMGIB5@I)nULv1de| zf)sZ2O0sErz$09>f#ASQ?Fg4QD}UGWFljqBjIVK`aUH%A4|xlJ>38bPc`EB28dfJ5 z#~IWlzjeklctA5@3A>i11K#G%P80c#yyTnt=R35_>~$Is9+Kz`m88%2@N~n2@?;FJ zkjj6RRF=O#=_{?|VPz>>h?rmK;_PhqL?5C7;-K@$_&D|2IL~95wQ8qaXe*e;*l_SX z1|4+vKs-B6&!|U_siSgO^g4~?t(|&K01Zti473f<&|Ks~JMsb@ouzM`*o|zuH@p1Q z5QbjA+Q zz#N#IEd7%cr5{_R4?9O&r*8}!!n=)58j!u{!)%K)NO=n%p0fkYZCyIGThJ4ptI!QE z^rRDTka~Ey3~&t*r?(3u8h3K+pjORWcegWju}_l6+DOkfYLt@5I~sw@KjGD_x~zMZBXujfhUCz?+_5`N9KN(8#d6dydDXrE$-p%K zgt24z6#oycHb^K!;btz!t9gDL-M*q*zJpxvPm7X zMZPw$9k-4h2sqBQL4LN$=QiK=$jd%ByF~zoY3ZS%-ZwT;2F52#AD8dFTzkjF+24Ur zsiR2q&RcJnx$9S{gOAd=l7=+t%d3aT_0HN_IauE+U4%`I$@d<3!I||J$f+FN+uL2v zb`Hz4Pd_Us+gqu}+=dQ=rp(>C4!nzWzS>!Cm$I{&$J|DU@7eYRuuv{?qqMu%x3e2< z2ROq#d!(Wt#!0gu9=>D*oR8vsj$Yb+@~m`F=57tp2_Fw%TP(A0-k}k6QI?-P$;@|W z7Ps|*vmGaC1B`RI3T*As6W~At@G*{^`BS%Ul(U9+qjO~t%lF`*Y(0CCfu-0Il&|NP zj3Srr>kQ*o9!B>(yZ@l{Mvssy@#pJK5Qf4Q?H2hrjh>Cc>x#(R<3J9f5Y-i?1o#xOAmg z-HwOLdquQ9OYq<$|8wslEal`js*wZY2uC?r7TY|@PufLx_8uPYm$Q!ZvU9js?mv5& zRo}J#b%GcA*g98QA$RIWon@SrN!BIN|I&#ZNPA#QA3L4<(4iCE{pHT$jWXIlOudWz zQl@U(;eP*p-Po2iun)Oh1>=eg^K0jSH+J3ht((ZnNZL+Gge&D964bKrS-;o=?Q;`E zyu~=dU%w}e^-%R`-{q0Z$nneP`kY(yjdFB<;-%%~@_c3aH9YtRjKFGOw>0yc_|)g- zo@ejMn?+gg`p9z$#=jcAxi>hr&k3G?xOmk(t5Ym7>r(Z$vlTyl`<=+guRr}HXJBMP z1A&LAZ?4WFd(=-GwBxi(zW>KRjJ;*N*Z_pL94;qN;E{Hdydv%SX|wWj$&YzP2Y&vm z-HM2EN{u!b`~O$KuF-d@tBGc!W9Nn+2L9(Y$8_|Sy(z4em* z{snf$@A6v%KYqN&HE?wG`+v{10Sqpsaj(bo*VLodi?)T8cjd`CYvPa!EhJAN^;VP)g^A*3~FO6cNnSquN(AzS>8K&Bfd?Rk;kY{y)aMUSo z&EYn`hE?Afw55x5Z2LL#p1c2~Q>fpB<4!QsY3b?&lbxKg(MA0>mqY1EH1>)%iTX2b zEohbtTNlr?>4mK=px#8~2Up*1%R{WvH8zwj__XZ?rYGQY^e*W;=+Fg?+lgTEw&>Q$ z4%D^C(g1qhZH9WV{|1nmtiYgrKrDkccKRpnWXeky3Q9sB^A`J)XY0Y8<(1;$@lNEO zo}SI5QzvIQK~HD1vJ_={|N8O9sG3R!2o{3S@MuMG=yed}Mmi6t%u_8HGM zc)e9UtV`+h=l2@*RlMM#;~sBq1bEO+|JVw=hv)fN+s9lyTj#{C7j)Y2U?}fNKJI?2 z^-}eBn;QEf<;&oWt2j4T-fR0f`U;ua!|rp%fqkHnAz;_O2z3DeN!-qGlv~=Q%AaenMWk)QdSg26$E0)e*n}cMukPf3xcYuV-f`DSzQO(b%+goz#m?l=xOM%jAN}|z8t^WSNhWA)xa?L%?h;cKy_Ks4;?@8fn=vHGpiE$)blDKc;OxK% zR|UAQvI^4~Txn#JsI$2I=5i--t_?d#DTa-+LJ{5g6JOXehWIL^VF+G~V_2UpX;%~2 zus5Cp6u}e}J{RCW@x~jaXPQRx;zAj{d#m(bTPS@qljRh~g1F~AD?^i0 zD0LNu9rz;|&F!V(-8(T#{wY_OZ+L7lG*M&=O7cV;P(Dy8e$Mu{!%3sx{h5xpG0aK8 zhJwq?Iw|D)51*E`{k^OJu!GVqfMnWs3BCf9J=a_oqfj;2rW2ugQGgshce$8~&6#U; z5TG)y!IC!v^H0B8LsTY-i+{aml(6}du&oP?8+eU(ltvr(2n7tIA8zi@pgK&)%mu>g zflga5SJGKD5XD?O4#Z9YmPVO%s{l0$z)Ci}1mnjrKv*>prTf{m6m&m3KlDE`PeF6q9FpFC*TK z($+6C$+_2jk`8*%twl86@C+37QiX=R9cv)MpTKhVlQXZQE3M!f9AJbd1JE?@^|_iA zJm=lcmik%?2~4@Hqya*?k~ZmN#t(k(!RWw>1AwOGA>vb0Q)O&)q73$7#3B#!V8yuV z?Bq$OMmwO&AY!SU(%#P*4eRE z^TJ7kL8^hqz<5I*l}eR1bV=R zT0u`-P>;GYz{YAiUoA)CUpNpTL-87VNz!s)GRGg z1y{ld(&uPGo@?iEl`VP522|d?0~;|*JpH7z@7W$hOe{|gWIN=*DF+*mjhE5uSIe*m zB+pNm{yDA%Yz>}!=B7&L#7OBHA1R$0c<7-H`32*!L)o+wuh+&qm*r~%U!zz1!H#?C zS{`z#g3Mp0shyy|xK-MTu+LnsdzXIUU+6|g9Q5?89cPS9jE`r~eH0sMWMm|EO7_%* z|D=ZvSkJ3y?GN=ywP^$}D2%{;w>)f!=I-U3_JL}gDNKiZR&%~4KOx{q}aoJ!$ z>*g7Hp68s4!E&Kah3?L*N1%<24`UbJZDRX5Eq9(m_%JP(mh)!{y*#+f1Fboe( z&Xy7E)&a_?pSqxT5ZT8*>ZhExu*p`}mNWZ$k9u|S+O=}$-M6W`kLrXMb#-vD%y~fX z?k=yTGuc7RoV`HWqw}-n9NzUDAh$2re)h6F`|R`5#k=9$l5SvPvdq76D>AnEd?_8T z7N>S;AGi%nj;DMbFofjT5a=1o<#cba>^xg4os|EvTg6}>TmWO{`jyf{K8%xg0bxba zm4aP_UH$rT4qWV4rl5V_)HL#RB`acFIGw?ymhpTjcwx#-PXsq>Fd`bmoLA1 zPzp4#!%Mz(63^6)YuNO?;avyd)5xUk&M42#$Ir8p$#=IE@xb!2xmoy)vH>6UcOQ5^ zz5lRmzFdopI3PQ9nVeuRavo4h>sp_qo~xl*^N)=jFxP>SgDRZAG`b^R8{w;uGBrj+r=P z9fD`=yFZYhEdz`N7fh?(MtqkM$ayPB{~Rx&<3=|DYUhY~qg}^mm3`&P=-K zDzkUq$iP;%vm+gGj~#*&6-ld0c{Ki}T_0;1RT?w_gFnxWU+O=-;$87iUFt6|MbmJG zG7b+lO6otiXc?x=9zJzW9mUBef_Bblw=UUv+2h3batZL z`rs`M9J@9KoL9G0f6V|Ja}7!#5rj5s{G1Fwkh>jPnk#CVQI5b*2=u$?ATQt z9OS6va>5d_stXN>D@}Y-fAE|{+IQh{*UxX&&v2w;P;7k9M;W#sVRSfynnrJJ5%Zft z5oA$&*}77mXv;9=lhk+@p16RF{39UiF$ZN_ou?h%$2VvDI_PY8^9jW0=1fQ-zJs9z zF2{r)T%1k$?!Qe?q#^>VEvLV}hKEje&C{R%JMyoYy%Xnf=H+yqHF)wMwMX?*d@Qw7AuTNBK5 zydqb6kcMTPb{2l&(Epx%}a4ptz$POfu8jayEhQ7>*keO3;ZUX~8NyIQ&3*2r!2JNgE&N9OAa zAN7rOAbD%cqn0aaV^=!(X8)9f+}baG3SUWo?vhu%5L(Ci1%CZs|M*XT((k_5G(=Q} z3V<{H`}*s_P%h0>$l6nqYjlbo1ZsEyk;yI$TbC{5fGHJqgrau*_ad}8$c|@?JLA?) z#3m2Piw6Opmm{9t|CE3!B=MzqqTemMRP+$YZwj=8(6H7x$14Va-@L5U`se4$oxk{J zrE_7boVlE$yPt*`#x%*hC%W9~Es=wa_vV3cIVc3?bBX=XER8A}YsF*pZ?%A@Bm%5x7< zqmodG*ueG>3}+|GUR21ym!)nWU8g3|>2t>>QLZ@s~jP zMk&?D!0vkyvHT35rG9>C-*%+Pe&2%56a46xu{1=~GOoq4;30(kP^VL1WrL83B}jF=7DZ77%ts`6?WL$zT1ueAdag{#E+r4c7{f@p1z--zyE{sekiWBUQSn zG1~O(5EG73>{#5SalN;(lgjP*=)4S#dyu7ys?L_NkHd=g#nMVyrqZ=zU4vv|bPTy_ zW@DSC<>HV0Rk>)&k&nU8Z-(Qazqs7YL-TI_lm}p>L)9{u{wSV|r1C88=G&}m*r}-N z%*m?Ft5I%RNi53DaE8f@OYU`MvMU7YzUc0en8Q%HOiLrjc%eVCWXG=i!Sx^uc3x_n z%j4>(ekysDtwyNE;PCKBmi)<|wY+rFz`WGF#wZazKjBsLW?oRTHAoBvpKY8vYtDNw ze5r1f)@i6D-<25;df`X(tV|Rh4DXp;c}98iQ^OxYfOj6fY#*`W8 zBzy+C?x(>ff7GU#WDI~T+t|XJ0XaXhOL7D z&I*yQHHCccP zJOd0GqPHkpx2ti6eJ^EVr(`en{=nF18JZf;Z2p0TxzclOu5`_emd;`7KzJj2$qx3V zu?Iqx9>ByRj-l5csN7*ka%S#XXZWqkY3flg?Uo^ZR@dGe^=b2laOO!IZ*FF zt@Vw5&dkzJUGKm~-^6(7#un;yn-cW=1$ngtzKh0a=g>&$rXK9ca{bZLOW6LY32d}U z=!va1Gl~7jr62Eu^Rs1eW;&hWZoy)wZ#^ihu1e|T>Kz{|{nL|W1iNu`Za#;Bx~jsv zv*`!jCX1_od?GlwlEMK5XVbe4+XeY>#`rPxUOqZ1kGHW=HrLCl2aiHW_r2FPRDXMb zqN6Qi+X#*yD(3f@ziZ&qa(3%GVn4w zUM41{$_$N@#f8N(H@kq{I0e1o9cY^YDrJw$flh4?w{v^`@>w~<{&Y}&Xkw&%^E=-T zFYmW|@6%Y4qn+gA%3Ws*o+3kT^{D{ZdFu+3!3pSYo_F@k`ojn1kZ^qj>Fyx_Hq7iB zcgoD|o3Wt});6;3iifeP7t|?3E~|z&6c@!>{hNVp8es0}@5Vztn@~QFRaBR-!Jl&W>@3Xnm9_Hd%daT=Nn{8-DeDZd z0!*7X+spCn;OxLCdd2}mzaF_*%c$_x3+`|DqJD z4pfI&mpGUt4W)xRa&KoR*YW952A}MR{QS{_azuMbJ~MCH=Y8n2)EUCUse{$kb^xU9 z$Q5$rtKk}5r3di_fpL3wvD{g>7X4+tZaGK&5ajd-zNh}~cUukk!o#u;sFdg5e!Gla zC64wT<*fYZ8Zum_nR4aj@&dnn&sW1HRDEy!^TXfzp?$9TsNdp*gG+S%d6x!3!+5@< zVi5H=Gh^fB%G?}PR!>=3 zS`_o^=Cb)g= zD!Ow7{_jki*zG&THTg;g>s9k5ohu#jFk?LDjUbkXxYSSeUvtlUebtyZYy+!ydi%Y%-bVJCc7nKCmhE$s!Alxjo}{ZSo38+GWhVVaJg2Q0d6v(~2YRFuu)5GF zaruwVPFvM{@|=!N;%eijO~A8ZjU8#bILiQg7j}$;+p*s&xEcF3P~<2=yQKnQh*c^>XSKScKO`ch$kj?2Ig)4#TuVEfZ{nA?g?F zr?c(7v|T(0OC289qzjb#j;plDlP{qOnJ+uY+tJoW+Nu46LuG7oGGQ~3jB?JFkF-hj zJG1X$eYI>-Cr`S)T5o^OA+#NF>#aAk1<e4)uG}gEeQp62q^fx8 zz%#O!=LYG>dntQIPJrFQe!w>G=_@yG-YIXq^=5X^5ZA1PuVNn?L%DYk^-TUDfx6=C zj66X@>`}pYfWP>(6RB+1npjqFaAlU|gI~OXSNX#9%{|YN zi>5sczQRmOW%gFFwyiNM;6=0$ywHYvKMriE@I zZ|Mi1&2AgjNomOopT()_0P?RM;NAG?<078AYh`Jr9G@R$yTU8;v;~|nAs-M{`h;5T zvv>InW$f9R+F)+yYrph4_;-@d8FWIsRUE)sy}GxCEFB+*4^7+Npc8ntYh<*H-?)iQ zIZ?}jvZ@mqw9B2?YMoc>LFFLtl;35aOz7L(rEOe8^X5&l%K(6lE;A6r5nx7Csae=j z$`PR2polOKIgM|DaXVb!DeI44lPx!x9?N6NG#)!pK%N1R3YFjP+E(_99>BP< z^BTgE1PY_Gr}R16JUmu*jtz-whxC5aE?S|MTokfeIhu65hNUxB=9LZ{et96>f3RfKVpP)5h|8+1c1E zdmDS@VE?G>?H!jX2ddzYgYBa-INXnYm~c(>R6eIdS$Cvgb~^j;@$-% zENaZq*9z1QBkM=Gpw$ zG`Wj^$`2ygaYds%yaG>D{^419w`_P0{mhHuk?+8=ZiWA15eNz|!>9AVLV#Yx7lxMs zgiW2~BT&KB=h~U>VC*n?86f{gv;MNv%{tlocOWy_hjKu(djt={r^a!qcAo~mB4SeKEOVamp?_bZr5Eg}KOEVq1?cJ?q)M*atpjas@Xvw{A z$XV5dqrBG8H4j~}x3*eVcc}~DJtxs2q}XMW>V+qe15+499@JwATO?3`S3g6p-cwK&h}z(cAOQi@O zzOijFFzgD2;T&9;nXCAF*1*BiT2>TzAet=djC}`dTy-!qGo5EeFZN;B^1Sqt_g&y0 z(rD|oOeqt$7#h8LrF4(Dw7aKly;v^0>zmZO@FaGm<=_g%k*Vo2f8%;td-jZUmvjDD zhsq!Lp55hOhvzqlv-p%l>SAcJ`Q&+Kb2-4}%uWXiCb2`qBLvhg?g6iL(tYvOW9pdh z4AKryjFq_?i{Yo}wkm3owf29+kxaJot{(K=JzzK2Hp|Dq_=q;bRBWWIw6m;~Z-bMD zkunGZF3#}pL>@7U)A?t;5d46v+*T>BPP+Qiz6X!j?)r;I0$L9IS}SQ zPTZPDT*@Q&O6xrP6OTY|{QgNK(S}Z3)`hVl8eN+Dtx2!aK^$>-nO5p;eJn4^)d?EX z_T!H~hL&fsdy}?78aTcSN0+h++=`>_@|jQiRNB;g6C(frPaVNi)y38JfcRRUYqxdK z9{YSe8T9&NBGkM5P8la6xt?rqu<=xuCM?KtBk zo_Aey(_PXh|8+c>SMo>7m7o0R&3hZLfvJbLO7i;bi?6MW=Y@Zj{@$yXLI2O3Ixem) zpYTMD)0U%v{As(&C-RNOva!8gR%kc&4)>QgKYTY6c_3ah0DxQ&KDY^oKkfepFmQng z>D{K*&MH?FJ$>{nZBX0S@|O0UcCh7ejJ{r7TZ@jf?ckYj3$wFjaegs%Mp#m?$g4>j zKT;E1)vZ+?^w%ynP;?7d%GkI(yIR}u(P6S4_rx*7xX4%H$&b|*)vw;G-4~m*2`?)} z&VWHempW3{cKYigOI|qX9&hf|2UiK1aK<*5rW;+xr}Rz0hfbt9*f~UBp&O|~&ftAh zq0OoM2H^a?yJFdRi4Rl3rK&SlMf%m zSe1v`I0@w6rAM%UO5*-YD&D{<6|Tn@U)=g%HJDO=lH;lIT> z62 z|F{zT>h-K(%|dMS-Ra%|amf#9*7i7e$}9uomOD6T1LdJ{p*iqddUy}@5~lif{i{Fz zXFrJ`=_h6V=m(IN0ravUbuqFO5?;NLLiPq-d-SwyJYAwNPokWRr?47Cqcm~xbE_T! zM$iQ8I|Z5!6Yj@&c^!rWX}dvaw+~98i#LACqSz?V!sAoE39#Pld;Gz`&g9|6`55tg zFIGy2r`3x$0xyEeSqh&B-i_b-=^B{-jcXHggpoiyOY0Q+ZW*Kj*)xV>j$sQ1;J8ag zczS$PhDZ9#-o|zq!nDu3ddu+KGz}CQ{V2bg`T!S?3M`vlwj1HB~ zei>S2So38^LyQ`jU%}his56OF;5)7Wc=#~+xqAItI{fWCHP3b?q~lTiaPpzsSlRj% zwE2i@Z`^a$*SPvz`QY+d8u8EfEdL8HSNgQ{vqLasBaGW=*?DONV`sJLnx7pEv$YkM zKU1#oOaG8FL;K3e#ArG)RfZuO&ImcM-PbIgh=d_VzUQKhxYbO`C&nj4D%vI?@9F&a zf*`d+&6%DW?fO^#GMoy1kc!_9|LhaWH%%1K6J9;V1xYK$5?=@zo_7qbghd z>~QuFEN9m`d(uutdAFTCPK_fXDT_4qj0+4qqw~`XJUkHT0HaF7$~|(`W9djHjQa@J zZBM$2`&8SBWykL%JmJ3o?wvS1K8{?CXJ24Dbe;W~+5gF(d86WQ-b2fV=H}my184Ch zzxD;;pH5J5=5C{1KjDPd!jO1@ML6P9Xvt^pgsZEFDh)$yVJ8Z@3>x^{ev_8+b_{Q5 z6aM4bfxg4cQaR2{N(~12^3+a7XsiKNXTmof^NFXCQ9HZ5rzgeGOxH-L(M@6XDDQgHjMDl5ZK~vo{itimFf82JjR(` zdnxakv1*v`MXeuAJG|#lJ|nE(Qs3|{O!=(B#2=ZAobsGpxk_=+PG9sTxLDWLuf`Kr zeU_Je%6^f_0|u%7Kr!u>KgHE@%Rq(YMz~8l)_;j-9N}vLxJ95dr-p_{XiyDD9tZ5O z9vwmV_rW`^>>xkt5}w_j#!hOCfs|J+c+1)T7ES2rKl5*Xl{dqHQ`v2{K-$?a7u$PT z`5-w_oET4(74T{LY%M9re&B z#&36BWf|J2YwA56`lONp6!6JP2mGQ(h;L`TgJh;=*2LLC3kUhK%?=Gm_k4D1or)nB zVU#~f+3G=ciVX+zVV%=Mqux%YJ@m)Z<(2YmZKbR`@Cc8od+o6DaN{f2uas|n=bPm_ zfBgOO%^!ciT>1X{W%$;W(&>T!@~IuU$XhP-(*=zPjDd1Sd0(8Ir#{S#pLFztqg4q} zf(v;RAM>hA`Rq@ZMoy`EQTbcnSuOjA`{aeX?CiMQdHc;WySPwxwl-o<)cVy17-gU? zN6&3Md!AJ^a=SX=m`2g|k}Ex5lzke8z34&P<-Oo%UDY!=Uar0WUg;S2FgzMT#N6A! zM#k>xf_~~J2eh>PasVxHojlYHoc*Qcvd7iOcL&Y2MYJEsuPv6*nW?P04ZoSarkJ2i z*?qB`Lmc}oSKBn$Q{y+TmTqSNQ*O@w-(A~?zW0D!XYy;C9g)V(yLXD)4Xr&fXxrviy;T z4hA^zGK`HkfBRZG*wXHG%B4P3>{rH7^`DQw8n)S)=-gCn>H(bR}7gYUcJ?9F_VwFkW_&8L;7=W{?5Y!-IonO!qmzcV&DwM1a_;UMS#9LZ@YqMb#)i{wsOjSbARa=@#|!M_!LqWt zT9&xfwR{dvaS2$%`grLG10^a9zO=Bc=Tdg9U-jlWvEr(IDm*`09q_KqHi7E_&R%>w zJ}iIm!S9v7_|cyrGV0&X@{8YnRDS){y>fxw=qi{#uEm+za&2xtohnWO+uYtN&!0TY zISoVTIkzngA4nIGs7XgA`4D+F@2M9pGZOdx3>p31Pk&jKk>k0E>2hU$j&>n-TYpbh zdm1+Il1HBE-=#~Q8jnzgFm3&mjx0Rosg@psXaZJve)}f?T5$XiVe^8k@$+Z6#@P-q zUh9=mjb9T3F!ih6Z62aOC`>z_>};2BoLI7Va8OoP*QiT-%Uj=iuk?%z21Dyo6nqW= zu5bjXKlGKR4Ln_Y?vsNBPai)gngdVN!$4BDV$aG4C>P7ox+V1o-;Q{G=hj=X1zNg= ze*j(UW%H9{0>kp|>S^k))Y16!tUZm!gi3DAVq;U7KH zJm(6)7HAVVxB9)sBdGJ}dlRZU{4Q}IQ0!KWhuTp|df@EAyU}69Jn(Sa?ak6{+UTZ{ zJ9lEo9xN}HZuCP|Tx$oRvz+v30{yd7)UTsi8IX2_zM|D4BCOZ%5YUcz&-uAPKKIu* z(^qBx%jE1_I)H6A?ZYd!x9wvBxs>hB{y|yVT*3OKK9e<}n|*HR9Q!TX0a5E0JBrZ2UZH~uRB7>+LjNtwO+R{iUzHto3TUHyV5 zaFna+)9|3_2#UO`Hwj}gIdgu`?HKVJasmx>O#S1J$jYaXoz4FOd+OJ}{$2TppZ%iz z^zZ(${NvAmS$_VDUzPh`KPu0$ftJxNPq7UjJ$_OiK6+dpJa|;@-T$h5{>A-r|BEkU zQ`wpBnG)Ir%0wn!nGQUc{+C8x+IFSS@}XsGzS8Fa=IV5}5FDmWWk-JM_sCea%U`t% zalptxBQ)^53j5P~dfooEPUK4v(lR~q(8o#0_90rg*dO)$$?E0-z~jxaP6q@yg#P52%xIwp=QWvT`3#m)Js*&~XzX z(I_7o=*?1O4O_Q|aNCF8vEl6B+CMm4e)sXmTq787V&k?MSr$ZyscQ@A5P9)}h9tBZo1KQqM`&ElmSLCKLkIWqO$y?~ zJ)K`%#|Y99aCbH-yY;Q?uWo>imDTd-!NW2N+`0LAVj%4Bod&fXFv%`37)rm6E(6usA@%YsWU4D;pfo{gj(x{`u@LgB8il=gI zRxljwWq@ZIVIP~C2%b92(k03&EcaSGK>4h#tw+&rV>s9up>mq0A#9p1!Sdi>XW^$q z6uxT9SDCbPS_Gqb?Zp7UC@SubJX-M^M*1lK%6r?9nk`faqdX>Fb5(#`Ar5@RJ+GwM zcqJdT9P2NJmKT9z{6M$bz*E^eW1X^59vc95tZ0Dxn(*OqVbpZmWu;=%^0M)~+7fLI zF<;YZlXvZ28p-fx^4icS;R2j=1Or}ZSDq{0!qfnB@G1NI!;jL)&WU3hy6#)Pzq4Dm zw>HbM19ntA&I+*8Kl>OT(J1%OB+`+d8poN%&)s5iB-jyQXZPD7ameL9%EyHFvZEjE zoaOtOV_^Ql&rSsQ=N}uNOy|GbzI1soC-gj{MJw*=Lgm6OCp@e?o#nyZt%Q!#F=UyW z7kQ}ST$lMB9C|LpEE{kuBB8 z4PMehZ(mGXKR#RN{1fy!It2Pz7Xj1HZ5lqe{FrtP4qb zk1WC$>8RvVPA@z7t+!B;_1&vGVNzbkRR`8WOV|pT=UQO7=d1~xuxJ3eXKe-vfYUKl zSA036-MT{q@6s?Ninyj6QeM*0=UNWBwoFXUN6Y;bnYApUBY{V(`i+3etW|f=0095= zNklnRwW&$2RXW7}2t$|uQdog?|b76`rAF6-+ zaHd0}{sO&ov9Uvgk^2sH!~rr%UQf36%Gu6d>2y$Fb2ozm#_upbxT9EdT{zocxRhf} z7k_25$+t7+rD<@GMqECdJOrrWn({V6%ATthPeU|r*&|ol6Sr>9=wKt|LVo2L>vH+e zGV<&J&wtRSbbG&AAAwsJjk!@9nRQDL%ijIx6__f^;)g#!c`YdL-^QQvrhSNd{@@>a;>_LE;Ua|{5K3E5df5nA&NF*nAbe^O4x68xFkIR=| ze_dAA*UK5-`$q-|=f35AW&Y}X`QSU>D)0Z`+hzVcZ8x-FEeRVvDxY`-FbJ3@ z()3#nX+7&G2V48tK(11voIy)|6h`Rk-STSi)QPJN5p_yi-`TL*+1V@`n;WTPwKZn1 zEMyR1bFJE`T1=6JIN-s1tB;;$&r-K}3~$&l+1x1|2M48-a&)UtZ5G2HQb?oMu9xXM zx3evhGUm!Xw?WukT7mD5)8TOlzbYH9{?Oh(SlP;z1c+p!x_2BE-JGU}P zM9iYolh4Y3P_66(d;i(X(nDpGJ*p{Jw|w&4t^?BSALz+y++ErLXGhSGe5ebYq3)o9 zTUxC?dC_#x$fxpQR~Z&dgS{d^@$vt8Ncs*{nqxiWdZoK!~Ps=#+ zF=9gzx;iMMjAoS~G>Z;~moh5Lfd_nZc?R?9b-UcTd4qQJIBJ0Q`EWn&Fx!68q~_0vO^#o^%abjAfUk~7M_RmU z=$0nUivjC%~poAnDYXn_CxK3OY-Iq-mW8jN{$Cg!K#n%iW2dsecHU zI-AR_TU?d9M%h_^xEkA8yVGM6<@WXK$e%5knh#;<)Eg$IZ)^tA&Y&}Joq&;S<17a- zN_`xg%|B&`xV905Aw5Dv?q019*3TkOx$+kbh!b3zu$Jj%TwM_2Rlh{8-t}|EH*zBg z-+9P4{#Dq#n6AP7<^u}o0Q-$fAU04YWl@j12e{vQW@bw7)x}IoI(@#xH}Zh4>YE%d zr_k~UAlbrjdZJuV-yHM3!6dj;2aTG1)O_;{&Fq)b*6)EP4gk3G0E8}6)LBlha01dk zZ3b5oIuX%T9m?7o?OA6*UtPFT#)n5TfHyKa5_Yp~{C7Y5ujT%eM;SbozVgJCnX6@D zWGXgu+Wie)%2s}Oco%!yK3dgoAGNf$L>O#^p8oR2n{SsZSFRJEIupKA&sYp@{Ud!H zB(fhwn5S+d2j4pL-}6ip&~%efy{F#rxzVk$s|1RZw_I@|y@V}~r7wlM`d0h2@>b{}0{J@J*+oYjmBF#`^g#v(Hq1c zpO=@|W%5aHZ&w)`87iYg!|3lJ>?YcvPM|?gyPdp!m8Q7|KRtZ#sC@m!SFtlakI)sr zulk#`?5LNyrygwV$J#Gj?Rx7)dCG|a?f_w1{g`%-1CZv^)qT<_?MUjDgtz^{x7ee~ zB9}C>OnZm0xv<2fp*ko7rhHT9xOJuj1g>sXU|&3cUY1vvXyYH0-j1HKFuNeSz>>06 z@989a?Z>D(pz0lPg1>})fSv1vL;DWw%eG(79Rbd?2wh|ZoP|O<4mLLfBD`Ie$t0>NoO#^ zr@?5&9m5+0RLa@I)ryvkDKiSS>y;i@K` zXfcfa)vdBYrPYVRar+hzM0Lh)2Q9ndxv4UKWwz|X%rOXPaE{X`9-5vkgOg)~fwwXh z2AufCh(TcNXm#5T8>Mzqc^Hi4rcjCd)5lNB>e5nX|GP)7otqxQ;Q-2j`<{}o(59jr z=SZZTP|3epF{3!|HE)E!d^RGk}u zuo5Mq?6~kBKC{&^W4PEL!!jKMcVY|%QEu)T5@G4Yi`H8!7VV;vC6{0_IwF5fah>$N8 znwF^BR%BOEhl<<2hk0~R0dQOHfGMjn{Zj82ydCLa$@K2;r>y!-SV6XXXR~g zY@nOAGQ->skDYA~TE-AWS8w6JO_)uL!cC0#wbfPl5{14rRTw zwO!88KWEAn@B7HD4WSdt-&IY!;zr(r2k?~}GiX{SXId7G&`sOteBdsx$54=9T)tZu zf>~&icY?=QBF~=pun!*l@SO6US+TgGk}Fgyn)Ut@2WR?@9}*kn5I^26); ztVyPpmp(r8WGDZ`)Jz#3pTv;HaBK3Nvoim)km5m6VOznxZ6g*`hCk z|6AWg*J78T?>w}()tBa08^$x7wqCBJ9CH2%w2^m|6XnJFAcqn|$KJW=a_yV%XWORO zb^Z~~6__?WcU_@EnYbN+v&GL2_R1l4p?m7viGRGkm5CN^*=46uud4~5yGvWc`qjZb z+et1v&vpsqMLs&AzBr}cIJ48;`b56tlVz`~lN<R^D+>bg8MM3@2T&&#JQGH&>|Bv;SVb2)(UGlpS3Ie`_q5HIcl-M;%6kDz|(EW7IOUHzvmz&n4h zhtnCX+EUd{FpRd6ZERQV%44_Y7t8m=oaov47>ITAt7d ze7&dr3hdwf{V&Te{`Mcr_`pbc91{SW9 zT%5q618v$K$LWxFg!S#;`$p-X7~u;rsE^55Y=efy!dtOlqQ5FUX?kIKVE1Y>*hW>} z-GbG&ld#%JFST9WS=Kk#Y2!EnlyVWLv%~Vuci-cC?bsJzVMtf$9s4Wv&F3oL>Uq97 z0j=haZ;_ko4BgVea24a~f;N6Fo&BGurtGTyTg%e4<$U7{KOu-`Tyex#pXzuFTpk0O zcV!}V5gx6b?JcmI^bBa{s%LF!r}j`5)&pd@j6&;u+WfZN`mbFpJ=7mZOG~9t&tz54 z;7}=UL1*Xo^mOS}->cjBmgInOnTotBjZD{kLEj8e1KT=IdiN4;ca6H7w%#CcC#I&8 zhh6GK+ZvvgsBRXf+uCjHZ6V`5<;LQ**a5Z!9EA2--`Xhu>F@tb**w@u-J}k)qxOw! zcQTM*M`_hR>N82?KmVj}#aoIWV2`}qc$vv&^5Ep;O!?mTe^|ywC$Mp7Kf=>>B@j9V z+)(4B-<^);GwL_0=Q51_?Zm7U1wYFq<=^nM^@WK>zZ!@zDPQrhtayfcypT%DUGbo< z)PD9G&lwQNbG=JvqVrtsMAOyzEkDa5u6_wWaCr{W8TNc^s2=Jh<4T*x8P>e!xdN_t z{c>;UCob0I!oj1ao6p#|)T7$(=DPtcOznU}%G%ELL3k-!{t_>%qN%6dUiZbLr{y1h z`qT37|LwmopM3Ip^vTfB0Oc`U#)b#W@KAr#;qT<0dT_t>fHLfS^Iv|EU4`?8+ZK%J|tj^41p#dZXxmmO6oyqafa85|rS zwp~%_1uQ^!0k?;;a!We52Xu>M>3wv37JgC|+pWf|Te3rlF!{+NtE(&J+4JWayl?{I zwYe*?jm4|l0a7*pl5Qwo^e@BhS= zn0-{LezY)xJd9;V?T|@hv#Fc{kjo{&8&u4v`-e2v#>(`~YbdM1%NU4C#k!aw*wHik=+y6j^N*X`f*uaTQ5WX!)1OBWZm2Rzn{nGx&A7(q++087mp8i1^ag-6tWM^Z$ zY^|(O{KyJ8*~r|t1D5=3ZS15&^~=w{D4%}(S^4BQpO$-{epNpH=(BR~o}K@X)A{N? znC_dnv9(q9P{g|qfE*v9fS|GEOg>bu-Ig6fa|Hc6dyyYYqm#;t#^~YkLD}8gNoS#h z0FI8kg_NC!dsNhW?z0DcJ1_OKBU~X<{!}U|5h-K-Gtwy^NDuQaFW?m_@hnv;Wejf! z!+C$*KOh1${(i`_|0--BD{RV&nCZ-KAhe3CzEvEA;XQi6OK8NcVJe(dhFtQ#dd6oP zey1A9b}XQD^_Sn(Kk7YcEZlZbGJ{ag^2Yde7Jp_{Lvv?RNIyG>YiIg)1^~99s{;hi zq_Fef^2y33=y-;rusX0a!997gVA4V1p|9zva4^zNeq^T?qpxn=<3X+?WpH?uN^>%+ zg2pB$sffqR)HwH%F?2+KDz*Xm+QyWfPrdH{KQI_0J^SjKHAtFKb}K#Q2|Bnpccn+o zlk#RBH3A%5+CSKXXIuqP_s-wm+YYbUV6($6d*?~Rw)~`9U_*26c5qp@SblX@@EPfl zhBNw+-^>CApA#zNtoDKCF4N0FZqRRibuFXsmW4dg8f@MK>$Cjk${H(92iY7LK_F{b z{%ja#WdXq}A5^1Gqf*{T2RrYO2z0p<#*Psyd@KG#%6@BgJ)M2764*udw|G{L#6JfP zQ=eG5%F4z~L)pLFte<>PF1Vxv>Ph!>L^q&wHDPqx6Y}O|Irx`+Ro$Sk1I=SJ%CaXTX#z4d z&n$b=^(+E$6z3Rk+(QHNYIxw}aALys^|rLs7hlYyFPQ7I?iLxaCDSpK-z4_gwf{ z79!>|I6&gyD){69Uh>S1K^ttyt9q^%Ct33SrLHY8_`{m`z5;}6fbWjhgO9lr<%B^?qmOCH3Tkd}6{WA0IH%m8p)G&3T zfILAVmQL(YDvGl6_<8o^J=oYPr`U#_(iu4C>f#mbfR*jC_Iw>3v|Uae6bkJnW=Thx zgOzq>Dx2m%^_a9#52=^%v)(fw>bKN){MI*C(Ywd7iHFCBG5}y5x4X3yS=ZV5;?GWJ zS6^&kn@SxI@U_$J7`P|g`=_U})y~l3Z1ymoed}%+zka2hic=uT4!}XLJ1}x`Ktq$d z(hj9_(yRvrua^`2+)^}y#pt-`Qqr2fd#5bE{|-E1N1>%uuasAQ&b5K2(02Xd6B>Qz zX@JV*XVeGopL{{u)&tH^b2XEzn_Qup^LWUotMP_ss8eTV;S&cY+ztUbgP*l4(>Odj zDw_`;m+c2n%Q?2)g$*gDbgC}4MUFNZYJ=9VC zVwlKLL#@llCa)=O;^ZCK_pt2;_a8(*jUg{7XZb3y(BFjZgmx#?<2Lx+f>54P7r6bM zdMbRud-SAmoAgY}q`c>!f5uhbdC!k{>FnZLD?0{H{pol7HfawyIHiqwOdZ)b++Uuo zE|urYD^^f7D@01?KlY6?1C?!cTkKGNwO*>cDBs%lsrI4axZ`JYdi3!3gtFHd2=eM0wN6pMl zmmmD-56Z%|E8(Mizq>~p=}~$4d@1#qwyxW?)s=K`0Qk8A(wWVF`Tzdk%j%=0a&zHI zxpDm}b+lW&^_IRtXHF&?l?LY3d^P1<>B4*b^A{h(q%PnWYSqv24?Xi!{1N_?cdGZL)5dpTI4ied>;vR|ePaXqpOv@1{f!*l zuI$_H&@Ql!)OHBZ2uvp*QC5{V;UnN3P|vs$z(ar~+X#9mTVQHOlaTzQo$EFl>zf;8 zoAwaQp0@TO@#LE~Zr!qJOgY!ItdC7M`Qcsqr87_zusub`{A6;2o=rwuehh8n?{{g@ zlz`v!t@`HnFpBpD@5nJoRZ{@L0>I`WnF~33r(uei`sb zcJwzb#HMsm_w7A;T25A0%J~kowe5HP8tp>p^=zp?!0_!E?Y}ZPUAm?wGnjqO_r{z` z+Pdgt%ToNoQyb5f1?RvxqE2=DrVPG7Q|sLA)s?j8Cg&GR@6bp&q&{>2T$DX1+j_zJ zec#Drdpl)uZoW)llL_C6q<~Ld{@IuJ%FjOfMJ7&3gKYmZGEr_U+zcseY4D%2X!WT& zT^DNMWe5J+=2}_XUV~RG|59$*O3Vk6^H*BQVvqM*!=Hd|~yyfa7uQsUa`>8cZT&Ao}|UA$~N*5}I8hVyQk zZM!4in=rP&PIvap=l}2v^3YX=rl`Lg(3M^lZu{QC%ztmy<1)?M#b3v#Orn8DTp`sU zlC+hf^j$fj7J1A$WZ2+3S8koq&fi#CDIfp(x8*gj=O0cD-5boO8$*{9jcLTJXl;w=qb$!8m~o{{wO{%Ic5P`G}@4o%oP;E!Q zeHL{>LM?-oV*@*Sf-;mo_LXVlcYCP0Wk#Dn1DAYrifk|ZfB5W0S^eURvh>*(W&P3P z*lTVPCAVg>?4E}M10M28HwPXvVTSz33oF>=4<9|WM9L<%?-Vkit)gz!b`i($mg$qG zWYGDXJO1gHR`&U(9qvTFBlLlNLJrOxqJQn<&?a?tt!+o`a`kS%Z6oYuXZ|~&gC|#0 z#|z)|p-=P^&tdtv=AnAm^5G@EVO{kYO||`lW&i-X*_f5sQTPILq|E|^kxU@MArLZ^ zL-jPAQU1OC{bhV%uJn!#l{1kcLnrH7rPGSV)Z__~Fg9=`epMJG1N^Wq>1niT#P^ZW zZo>70l!`Lv2H;}!aTkkhKSW&Lg-wx#Y0S7nF3xtO^-x%SQ{$y)bSRCt{Vf_xDBHdD zowSSlsSG=MDtu!nf4Mh~7vWdzeR%!ull1a|e}W49Fa4Fv>Y{_2$+qUTIj1;8cgE*-Q2JKD1YlFOOH@Q((e zE}c63(s3tD@NxwE@xw=D1fiUrcgBy0czUpBXPKOxt{s$7q|!vZ?G#iP>+*2ZmLIEZ zSnka)W#+vqP96fo%kZ^A;0~V-Q7QL%5D$1BVer_wVE?~+dD}7k@Qa7#(@#Dvzxw%a z%DvC-rP1bLDjTa?IdR_xse9Q4I!S3zna5M|m`+FK2+KnuYftM?jEG@5E`63tOUxUP=u`D&@rHhT(%y3VG0h-HO8VA%LmZ9b3 zY6k~O-S^V^#+5{FX(Y`&IM9Qj?TE=NNWwVCYyIPax5+0syQiT>tOt%d13~^3C$Y?6 zgSsT;UFA8vr_K}a4(lbEi$8Ez9@5yQ($2~aJFLtD7ZH=MI_n*StE(sZ$$`rrD(YZ_ z%V{acIv6vE-T|i!QmFHKlMnMLJ!9ZB{MzcD;HC_i2l27qG=RziCr`?o>PrVioi(7J zG_DOn{K&I73#*;6l|SIL@WS_182l8u)J3Ln8p(zcIg?L=$-Bl9&ylklC8$ZmplBSO zk@8sKRXBz*r@Ruk>KR;a1m;f8gG0@;Z{GNCeDk8ef99_Z&dWNCnte++uC(k4k>2w(FgKHx_gh)eV-^Xa8hh zSw4inaIp`_M&7x%b%-=pR+X=3PoI=eKl`*id+~yX^HJ^82M>8>c5$wJ#=6_<8u>!4|eCd?bxrwPmOD{`z*=-`Fd=*sHr+)Imqu z+tL8EMA$zNRd3i}u`Y5|TFwDNk7y%FpU5@8@G)_;DU2fzZ0)RFm(d$n)A8RoF;ULs zS#YVY+D(>(=Pfv4$V}|n>3|L6s>)dN;M*ST=b-L6I)3`@t#al4_p%DWbHZXLkazPF zxS@xBG)VE^SzamU&~N}gIu&>LYjAF+bkczJ3>_PqIj4+rJI97{o5R>4ecfg5&dsv; z=IxYs-FNsTvh51C&F4#H?W;%SfJUL)9`!h&BaMN1d_i4B9XfH%4i!5h#7X>c6g*nK zym<1Iwuh@LfPHaNW}%bYrJ4`XY@Ls_UJC0}So)*Krm-LU1j-^9ak96>ZgE+VM zic|ai3Qy}zI~C>C8}nDoAAI=TGT2Rh8=Ii7^p6fiC-n~ZrlWsk(u2MEK8lWk9{r=# z$>SrjH4vP1RGLNcu>4I!KC`Xa`iqlyX%n1s^M7@DZ2SW!|C;YUg1he-NaWdaR_8=- z8H6y>Ry#!+sx!o^mHA8j>T6!c$Ht-cQF-wANjZTJ(l+Facqc@F^1xN;Uh~u9?SJzV zUB|O^N&W7(8b;@Ld3FR6pa+AH_M`xPwCNo$@43C^;V0m@u<)$_(ZDj^|KLb+5Goh>sw3c)w@o3 z6(1j}+-3zmJY;BB9dB&X-aI?X0Kkyj$5;S`w?9MR@+ zvgh+BFKCB$l&jaSW`fy4Cc#uaX#L`0@*A`(U6o=da;<+Z%IeZ`nL^g*XBS&?lRW7+ zHd4^%$yC)P4!(vL%~P8{-2eYO;gl=l)SOgTZ2<44P}9~W94`*KIqBg7d&e{Z5?lyS zc}FZuM2PwGj&MeguB+ubiqUp*|N(^F}q+pm)}M8F6^ zsJXumtI3JuHjL_YN4jN>QG)OyZ2{9Z>d9xg!7wrQK{<`tIs2ZQI}ccXzxYDXu3l`kYlf?L*nf^*b#<(DsgqrJ$Rx;2 zkfL2Q)J$T|R&4=Rb&paXLUF5fuFr0%*<<|=90&VqihjgJ2l0lj6dlI1Htp);r={y( z{lTC7WN*9fW9(8s5O+HknOP&+hJue%Z&U$t9 zO?b`<%YmSl53t={XK>U(m2Q;xaSksf(R7AcVR*PqKb4v*BrLK%4L)e)Dg|dCds??= z7lh}`s!9_W3Y2)+0jFW(QkpM5`z#%`*Kgj;o^;MKa8}n4My0}IxtNFKM;s{sYFMAe zNReoE?xkZmbZ`XS@>lp#A}POGh7uwC!Ly3b5l#15w`pewm<`#3z1_04wo#UzEtmVB ze_bBje^?%T^(4!m+y~Qr?PjK@%MBXOS7(8@I~U+tOoe@4(h8&q4av2uNdBB5n&9C^9 zpDt*JvD^WVxf;N`Mg~DB0}c6;%=&i8wlm!`>-n(mkDEd=&y=k$G?gLnR}QQ5-hA<< zyOhVq-Yf4RKrQI+PU!z+qZdh?w0aPnsjU;X^~8eWetEJOKuB^38`f|@^gD*U0b z3P0FjFp$q0PsaDzEdiuM_Q|KRln=ASpERrxTuNTI_3`|NF3OaKq$BC@^&ke?U}o!& z;8&kL*TYN0%28ZbyVwEjU76_V>8rE#)9~S$tDmcn3T8lmjG-RV>9Ko+{J4Lr9sTaz z7h^z$FAh@^*)GE>)QZ$Ww=C@=k2ypNeyua#Xb6oArIVtUdmoi=|2PeB?gJC!Wr&J# z#Mzwisg>RN=0>@Iug3-k%HqOYIf51*aI8_*hmIN=9D&zdQ3cJRO)W>tBL!0Z)IlD! z+0NGLr*d=agMRcxzXzt1j<{QoI2hn;>cj!>K4eDPS}8lgXc?rkhd1mf${yRqQLi|I zxIMI4Sw~$;wahN-?}Mi4lvg$?d^_D7h37Hl+B)@vdjPssfJ^U;mzmzsd}em8%+D>9 znfduLJ2#Ka&Z5_6xzF*Azt_T*GK*n7!!^BlwM<`KERze1*=uuxunxLRI9TIA%-BR3 zcW?%M<-pE>JVaVQE-l3IT|#PP1^8H|vB`^r=^LZqw=SR#2{%(l}Lb zTjxf6lne5xeEY6Ur2*6A-8x#Q94QlRXdq26WTgRB4dE;+=`Vi>1V1|!kYlU|kwG`2 z6V(r$=qdbbV^KN+!0<#%gTrUjsKvWwZ<%Z7xCPp0_wJRizy6BG@?P{zyOoh0nb)r0DBu3k_sZgjZT(-66{V{M$0jDQOBOS+!d0iHD`KIKQAo={ zY$rVoa1G7Plu_)M@oQJg(Cl>Sbj2$=8Klyntt*|NbMDZUGBs%%rrm@6Wn^-aI$$Kp zMBh@r-RSY5*_mwF(?9Lt!a|vQ`^_?pt#f%kR9i?s<;I;q>1H{&@@!{iBY1R-4wV7w ztpPjQsTZY#D#F7+9cXr6RS`IbPHqKr?VWeZIJTAbx4@6xZi_gcMbIHnqf>jNiFPD* z`w8W7W=8~#_}Mq^l##jF(8+u@h*Az0)FHiDNw)IrMe1|y)G_in3+ z$I!3&g@jgWJPc4rIFV%e=}YR8iG)8x_lGA4dqN}ILmqACcqU0Y;?!y6LEhHp^;_gt z=;}3`Xqb}qfiqSe;OMY!!PY+lrmOel=je7b=`(4j6T-+`?#~N^3`%cc4|_Or4>swe z7ca`@t~e#bX~>RfFS#c#Wr(DOSJX?sRotr6uE;lk++!c2H##iKldkgC;v40b2UG&f z4xvQv?Z{S3!&9SWbb71|P7Y@u^sa&KGCBuuO^=tpQS6XOcw`)#Xt+P;>3E@Raw!IG zTSQ4D-FA??;@Mm#mIRx7<9xOB{Ii;=L7IF3R~?rb`~2FKe4(NI#V=>~P=6a$dnWo? zM-X*w9+hdzaej6-dkb%Dc=iGT3~G7-S7q3A^DPm*8r%(|KabuMqzUi0;KXA()_9Cf zeSBCZvE9!1Ps=2B;9vZ+KPzwCyaj(5POFQcC;<-;{p+9pO?kYse}*J@-T&6>I4-hQJ8lpJgqFRlm}lvE)Va2U4HwE z-;{s++kY&d{OaS>^%}i|6cCv1*w!&*X zYW}z+yQ@@dzTk78_>k|w^)5|bl^mDx_>dw=fcoxpemu6J+wa=E>bg^Sb#G-o@VclM zOi_98J!NiM&_fkqot1Dv64%(}Bw8oLR9Q}OHTg0@&nPi1JLyiIy)3);?w1Z|=Qbry zi0z{8@N(tf8N8isVrXCWUB6N;Xe*sV*I?7+S?tr6<#MpFhekrz-eEa@v0V0^Ju9c^ zTDNHtzJuv~v|k*!IoUyWp1+{IG*(7vk9dxlc7VGz*#00hDHr=>Yy(eEPNkp1^0Lik z{n-0lG%7&Yl?^Xg&wTd(qH{d}3n1SD*s5{P@sh5UH# zqHQ+^dNW9Y-dq0UM@b`8(X-Lw}vYH>0t=PiR*uztU0O_WTRe z6^AwC@awPcM~B!)I5{#_t}a{!nOFU6^-=Zrhqv$j8VxHt5?QZ*8>ncegK!5H0 zO!~!NXZ<&b&FVy(OpH|D1g>xzzRJt1cfCAsvKxEr_{GbzkB-$|=)^{JKsEt%05Xpj zm#ctwo-dV+2QNz3|Lb4;Pd{ZoMbDXx0G^!~f&(KqoSbn=fd{_$91s|@T66}|?9vj`#}7@-GLN{3t?4C3}6&MdV=Qz7!pa%vg}ZhhkHbsL@*er7>K z|332G*=xs~o#v9SDj+-aq`i#>anR^ZS#Skycp{^#Fmf6$C=EMjA3gZG-2d`^!Y$0t zXLfJ~2M{Dj_nZMFF%&HGpTmBIdG-Y)TwaIqxp9htu%1ZCOA-#(pb7nX%)D$ z2X{Aj6Lyn^<|;z>#i#emgRdW!&p-RJ-2duPdHnQww(+q+KTczLjt1--G!Wl;|E+TU z_Kh-u@}HryzwyTHa`zi=m$$$5e);APzEeK<;djeB-~V=bptaZ@*vO zdjFkr$W}`u3h1&x_k|~ zz+2Al)&O$(xdVVPUg2+fJTu#D7}?oH7zYl9kP92YL#_hIAOICuV|WY#TOH5~tn9M~ zj_NhTkBm)VG|Y&Kfe`Qb>c>~}s;eEsgeN^^ z+7(=D_wSeEmn&ruS--L{Q|8~j6L`BWDTSsQd~>tY$QliJ=v&L4aN;M`foVr(Iv6Mm52aNuW5g50Lj~P}$Ib-}!?qK`3f4}~=nu=? zt+yzvWAu@7nyq?}UDI~ffrBWM(=%nngIkA(Q}Mf{j)xXeU}bW0x-8CLE%WG>#ksjM z;{nTd*kb^=g_$c7Tsqt1>HT)tQOIc2BNg7@Z(3(i?UliAJn=d#M90NB4NX)cyX4K2R+Dtqf?mdzZhhi{yD- z=!I)#MuS(s$c=`HbdG=ZGky#^FQ4(dtXE7qY-D*=KFU1^HJ{@9>TdiP+5Y)VnV4=2 zT?)ZEC$I(MgLnP~-|#H5Yqkj+fB81w8vMXBm$11z%cH$CyySBmP1Tv7B*0_6Cr$IG zKEm7o>Z0(l{`u?-Uee90VwDeIKtj4~cZ8=td1Jv+- zB4P&f&}RWfoZ2`(Er-bW{^n*m z!bn#yXCPj^!mrwi71PYlPMK>9)(&rB8BRTe@rXaT;Gdsp5+J-182-c`7)_X0-woV` zFVQ#mzxt|t{>8nry1s%uS!Yyy+)saYW`=t98|A$pe7g)?nTefqhHZy}B;NpXK+Z#F zvAt}39d7NFy_^Ar-9@=Y21SKLO^;U+C$HZ1Z*jz<%8E2KNYh}&-_=g)gXNXwgo(|_ zpLwZtLMIqkxiAhkz{%-R+1lPN)RblaaJS4Z%$K`wzfrav^hM1`pU{Qi(E+{-({zFF zzV|sWn#11@q*+b>SWUj87$4hOmR|gcx)t+{{!NaaG%mYi0E6Vi}^& z8Rorza?;jYcut4{kQSG48^prbc)Hr^+{XFHP#L`roW;39g_>$Fnb8r>0eB~?4Aa;e znMU7Zi_P7>RR+h$iu;8-K%joMLG4y~;X>j?p4I7u=^%}M@SKHiQ@5_yLH7nRZyC5z zUm<($eY^HzC7l}PWtztC6pdeHv7r<<%8SeLYF+XbM;OA2gWLY?Zts=nkDq1$Kt1Cu zR$;jH&(Tqx`R~?RUHvvR;X&+o7bIUQkr$)-)#4x-?Jv}~9x<>l) z-9u1&MyaQVvE2sHL(SDa)Qdmyx%!AdFgcvCeIwTIghyX>+Qvn9>6D1nCFUOl#m!$U zdon<%n!9?=|J+mFI9_WzR^5oaOGDx50+Smwu5~%~D7;k%YAXL5KkaUwT`75GVWG^= z&XsX^T3d0Qc4qW7yqDmH_g#EM1;5nyJXg9R*FxuGvC@sr zJlfM&{`^NjE^pkpUF|-8=3gD-1cs+eFUnv4>~G5!{Agd19g>rSBV}%U3cG3{0|3@v z4qC<@1P3Qq3FGYOtSrA+rtSPZD{-~kW)`N)$mp2tR<^fx%Hs!5%hz8$D388=T((v= z%V1A`xdz-j*RPc+v=o+pS*mQZ7PM4{s4H`@;y8`CRck3cnho|W0m(2?8LFzO$KB1AHOqggA@k}D| zb8qp(7fa=QW3%+2@6@}gYl&1*1)CP;H?Y~L=F+N%@ zcK6Ep`bJi5bxciVP~a3fA#(JE*-w4!vJIRtI?s+umn#P!KQDX8%n3So7+LXv*8Q!` zv_twQ$D%JbS60jR_EwpuzV|##w=dkGF0p+-H0n84)(sul2PYZ0cC{G^k}kT+dR6(v z#`);e-<4l|_HojZMI7iE8<{BA7p{}nhG$7nHD22w{tL?W&b$6wdm9-5=)_jibeo-? zFYmwqVS+i?OkzrJ^-wKqV3MZ&753fr4M>{?WLu`(YMZIXQP8}nJV3}iwiC&m5S9ru zIPGy)%{_bcq^!JL$~lhN>Ezfxk}mX=6Ue$N9PMdo61&>Sm8UM#i623Nv*D^9l^3j! z-Rj0RvvygwyE0ylrD9Io$hy>TwO@hwgfU#o$h>i7Qk#PnO}!*db%f%lL?~l8(spu$ zxI|Hw{C<|mXQ;TSqIp34rG{h`&b9Co17@AO{^|TIRZD6g9#^| zYs*XJ!NaeRYxo}|#%cdwS-c7g@{r{~oCZhnik%)C6Q0FG-uD^GbF2MQ>IheFI|;>d zb_?^qq5d+V4LmxMNhzMsB2L1!+>L7zNyDUg$wgB7ccN>Lo<1+z_r56G4lH0)ydn1LYSzlx8~X{3oCm&rLA>FLPMX7G~e zVJyCdaNH}rn(<_gyB)Q<5Ulo&ms1MxqywXFe7y9{OlC&W1p+LNcH$nPWDl3u(ol2s z3}gZ?cvcLPUh>|g7uQNy5cjoxH)M5&m*?#8*;rjI8%wLD`=YZPpo}jL4zpZihen|c zU}yC4X-9dwyvnsy4#2Iycc4s9Oi>4^oJ0*A04RRu-)CLhktySaAx+y4{_|=)f}%K~ z;4<1I<2mcy4h3Mzn8LKf%|@vLZ->7fs4fv|2MCNCp60)0XFenJFp`IK$nkb=sU)PS z4Whw`F&MfxhJopdRBgCY-j)Mt#8@Hy7{K6~GAB$7E&@g|ix-uWd)Iw_@AI;@vPMu9 zflI*p%K;Uj2Of=#c_^lho|Ce*zD1ah_$g54!H(V>WCL!Qc>`Z(FG6W^Qak_cV06IC zLx=Z~371;$&}iQz&2`FhePulzp&L}&3Wn<)dM6J?Uhck%A6GI#xInYnqjjL*{8oyK5wnI3sLv!f6gIs6&r z&%f}r*QIh$0o&1RL)F108dLq_G7=G`QU^#`T|W9|ZL9e)cNlXGLKH&?Q?Q5Tp`x6ug~{WSF?unT~RMT`t2Qaek{$ zdixS?ZNA5^Mht)Zs9*eX;V~cd=Td1KRv78rpmI7*1#%J|u+!hAsdoIQb31V1Tq28m zoU9g^0S0AX2fwUvH9B3{L1S0hBH=a4-jy6yys2<$_-J6X9r|_z<>K8i%BAm_xlT9@ z2Mpnqsg9&6 zmuB3Vy3$j9g9zob}+;NomS+WXEva#VNcaeaY+j z&VCw>4g}<&UM}fY(>0p^0Hq)CQm@9ZxrFx`E?G&D^cw#b*TzM6AdBIDZ8+ctw)hgq z6=po-)jT*5AU`U*p7FCyy}9Q>f%|*ee{_3ovuw~XU0+#FJu8u16_v(6Fj}0GMlw|4 zDrc{FSrqGo4Xfml%QDkNUpC=t{wq%;zlkT`^Nb{@Kc(^GCr`@9AAek)K79h2k0MJB z#;WHXM11SLx6Av#|6!TBex-B`_h)9fGx%W8bo{##_5eF`e`6;$)X^?B6=mc~H0vAF z3o4XjE`Fg`JVmkcpIc3}+dAaE`L6!=RvTwDX5c^RXWe6&RQR=nMf)u0hS&(;CmuPo z=ET9=(=xxXQ0~6-7LDF*%Ba?Trq$9>IKsQ+E9tIl@RiS_i^4)p+4D=#CY&#A{j1&V zN*d3G8kn3YLo`_2tKSa)E_AwQK)4;04O>x2c_*US*EDj)uYNb2y4jUw{lM&Xh8^{* z^Q&t3ic1EJt@8-$>bLQ^*<5wjlz}?4g{U+1vJ_ie83HhH#KLsbflMsJy%SqVIer!4i29WK(u|Y0u4Yv-0 z7n}v#WjgW&Jc=}v=i0ea@du92LIrH{$-8poXTKz`=#y&K)Pc;%ToA5wvh1DAV&K@` zgtrn@Rg12n)DOWR+svyXmNe)h?)F@HSU zsk;ndf6b0flqqb+nemy@kF6sQW=k%0z4Z#|xwp5xp&e}J&6CG3$_9E#+-;YxuC3Ab zs^_GcxBl*dGB@dY!67op zd!F;1w}h>MQ`RkPy!5Sa3DiEt)wk-}IKs(Of;Z2)Ca|{_2f@T%aXb3VTdiX%ZgCCWUj654@^D!u&DU4&)m=hq!rPagZRq3|^vF4~WZLp@@?Vuh z0g`*}3;+x!9sDL>+(Nc6NO2q@8EImNdQawA^Bca(Q;l{=>(m1D)k6!c+LP zb9$z9Ei9s|ddlhYTDgEmz0^yEy6|GyGfJqdpq==~J|+F^f+5}Pymt$im#by(t}2LHCXi%YXdY-`15qkS1*cU|yZSPMdZz`pELrg_lFayrz8h0~N0GvcA2R z^N4!-?Q=XYZ`^*X+_-Wl6A+KH#fu8eBGA5Q>~`XLbH|BZ&-5Yvd<*YbnAO&A>rmsg zdR71QV^C+Vt*n<%fA>lG^wZDEC%^r)e0~3`^7PTu@(F&w_{U$A-~Q^O^7!Gy@(jN( zKl`F=t#6jOx#==6;tmq%YYhvtsV$j&H99?BmicQk%9A=y+tmK91LVo=uB~gc%^Tmu zQL3chv%%MTn#{${wlmoFziEXx^A6p}p!5uxeTd^Bo?PN$8%}ED+t*k5;VER>;v?o2!z9vw*=S=}xuak4Bk5Cz`poW`|z)z+?c3W+w!id(?skGKy5Io3ppEUeaC$ORd8LBknRLv13)@4V?O(}RPUOoO|4)DO zyK;ssDx;ay2GgIWpCdrh96!g-8=9F-N4fT}EaN23^y$zJcgF(xpPigdy<%Iv#VvQPOF75IR%!5;Zjll2F>m&fI`E%KZ}`n#SuCU4y`-7)1O&MZ z33T41oTgqip$j7P_B&G%11LnPBlC8eWY#M{?Z8(Ae z+^B4fpGH9IfG>m8!p;N#+wV>KGCZ#J&7c66IJ&&b5vmayG;1%HN*@;NF^%4nBWKl| zm65UG(vL!Ufl>3|`HONwVlMHWgdt+^@l(uVAd!MJ3NA^arr~oM!npkRbA1iHjguui zcuL7RS5EjoqIlS zV=(Se0cu>T#B}XaMdO;+{jFV;aGfO_<)t!^9vVF0>b6AL51#TmLSU?vazGq@%d4y9 z-WT`F(%O32Aw9SGfpN?2ySK_8{`iOG`#<z{qg+VRt{$4rIiReH&e> zi&NypLX+NB1PXbK65k<$+e=VtrNc&^VW9;`W+{*R2P$WFy0o1f=ArG#@`}t*7S2i@ zS)4Cd-+#Nj`MuvO-}uAdFK@kdHwQRxuCAjfG{{tzR7xoe!0~=^>g?#fvc0nnEbF4$ zNgmw9EM?`dao}M^WPI=<4r{Df)Kh<0vx6mUNP42N+SVVmOfg zJRck!rIRD)O~_Zmq)dn%_^rJ7v(a1!G_1(cGUizxMo!vUz0P>pLr!0=F2nad8Ax*E zUSzU@1sGmc+1t6;UH!ST7cH0D&kWkpjE=E$e|TuH40#O)8eBaZaOmw2PhvK7y;Q=|kFe$ybi=Qi;o=7j$<2G8 zmK8_OsYs`Q(?hv;ou8D>(V^0P^J?i{oGg?0A7E@Aow!Ys=Tl8(#*8v=V=kSWmUnoN zdoAjqB%YR|Gle|R)P3lVNo(`PQrX0yUj6!UIow#sP(dCs5Df33?IQ0MAw5HNV8qTr zXUmVc$LshQ4ejq9z7Jv5qRP1 z=d6$%E=v#(@iLwjw)kgeKjo7bopkmx@6z1{yK$^fC|{II4d?xp5Y#L0T-IO8sZL^9 z-h8$)RZm#9&Q5j3NPo90Of*1)!ZTLX#dYA=0g5W`ZRchjajdJ_JgHODAmFZM$gd_BT!IfU#4Yg1 zYw9Shd{+dh|4%D52&&y}e%b>DPIZ2bC)8rwp^^-2GXG8PL zcW*q0hK*mms(1Z{ZjiU4^X&*hUVOIPQvcRyiIlnnKk*2V=r``*E)k-Co9A58q46_Z zwiOC&fswYb0*L=cflhAycW8phZIJ`55Ta2WxfB|=l9B|_dY8d+gp&$!Ee$dq=UD2-h89H_pJ}g!kafs&)8tq z59HPSA8vT?9(KjfLD^Y%1)aR3Z2^4JjO_TFRK-R-L{5}~An$zVid^$cN3Avr`7^A1 zoQAHBTZKs&8v=W~={(CIwqby0`r1#{Ymr}hoH)+>Kcs$BhFq2S<~wgC9Vdr~OSJ(j z?v_P^UarVxa1leD^cLUh;@@0)*5_B@<1fu+CHYGEw(S6&?WoAg5Bzf(&(PqbEK36^ z*urVy>KEHvxj;YXEQuz5A`zpOcRccxw1vr4JHBf=^0;-b2U9zt!oi6_8vmm-tcI_0 zU763Mq8>Z(sh=w{;vs;5!SN6eMem{vVFOOg&y?94SIaQAU~mmi;>fc&wtn0Lrh%8w zJeq%PY**kt`szXI16LF}StFK?Vfo41wmY2puYH(3oTV@IVz2c%^<)O(4-QfflY5Y~ zj<6mA0_m8j_uxVN`#CHkIJ9_@t?&Wb046w`6+&H*q*f=w4M50XL(lrLjuIL&Ff%x%9$Y6vBFG!O8I(d@67mkxwUw;eCwTWl$jyq zfin1`AN_H;dE*A@ibRcP$FrCje-~Z4S>HqA>QrWPxdH)E0?ky8z6J=p;rp(h0yfQnJ0gw?V z%E05=H^a!LhnA+SO{l@`((&lKvHqq+# zdiMXf{UXo#UH&>nE_8PE+m^m@ggvhOBb{poSiCX!=vS* z9~w7!Yez-&t&`QWJJ?&;C%uPz<%ssXlivoZTl!t~Mwoq9Yasj5$Sv-ib-l9mvWy~o z1GFXffuVj-K0QM%Gsyw39pQr$)2i#pt_ta!plx;U;r;Soe)+Sq4tYe57AKaOdaYzgxT5f%b_&^AA7xP8lDa0y8=MouwImBYFVjM)RVSt5&epFDb6{_@}ayYip^pep*RXZ`dJ#6CzaC}+=d4F8%h?k3ve z!b5#G+u)?0x31JiwqMAzGs%D%ll6)#>6|E&K7i1r>SSd$0DblzfR&c5%TtqH8$kSO zXE^pBW#xB&^84EAM)|9M|JPKbr{&JIdFo|&fwpkn(ir_oo7;Yf=mEikOKZ=%ZIp18 zZ+HE0&|fkvLU>FX_XZ@pFKZr?8Z=*Wr>^!4iKY6kb~z?Xw% zj~_owpQ+kJeYh|)7hL0GxqxPLli0woDJL(!Nw8W>{D`YeijOPP?0eEyQtn14CM%-; zH*W3(2X1^r#|Ew+^x{^Z;c-5n(k9-1@v@x5Bg5CB=d3FLM2I5Q1WS6DLZYjB6O!sUJZF>2&^csTz!*8UGN>W%O?SV`ORSY5)(CJphJV1f6h+ zX)EmFC8eq%jq}|M1IHOfL(`M#%y$IH&NBC*x1-EGGWS+Dlh?8N*)n!zHv5;JKnD$1 zD}gjH?bPGm>!lxYtC3cfk%~R(akH~T#g{_i&%HlgI{f_ca|-CZOic`z6%{gc+F02l zjn1;Vx`lvumjM|61bZXj}yh~%>&h~b8rV7Ngr75?>6S^-dL1Ab1o{HwkEgVj=1&Eyo+bHKz=;PtP zE+uv##l~Cq^GC6|B+<%NB{oV$r$L?p2n-ppj*`hCuard^*2X8i2DXNFooQDM`OGZk zo3v87ZSCxok3avie188yS=rjj;FPppq*3^t?|!@d(I5Rmxq0_i89;IF?bMY7eKZ)9 ziGxF6N^j|9ZZXg<$kzo1m7NFfwc3dyE{EVn9@j}@>C?~3%TGQn>tB6c_Ewh5F|u~P zvsF6wcS{F`!ubJ>yxrZvD3qxqp_Z7lr$IWrAVC!?h}~2oyeQk?s)lOgXdP`+jEmL#Kpk_z9Smhh-*9S{-4+T>gn4_jHyc z?_!e9fAxZV?q@E^qfB^qz|z`E_6TETh`CWPAo{m89O=q*=q$|8@ z_;l9EXVPAppx@HDVtUZ79Mh10{<5ro^t-b0#TTXT_^5PQVIUW-5bIp4X5AhWIG2rQ@8k4gE|vbS9$dh5vEBTMm|- zyeLzt*c-o!D`6a&H%iL3`KDYpW!vHuoqYx@^4tkO^^FW+ERB|78v5!ux0+B+((yoe zLCfRnnea-mN0(Wy$~N~j%9^{nPySFo!;9q6C7xNm(mdPXZDkkk34LN%lD8^mupxtpChXmu_6v#nSIm_Hou9 z0Zn?s&ftZ4PyW4wuYT>fh6a~|8#L-X81RJ2Ec3c6Mvs|uRT{jhA!Tp!DRF`a`OVA_@A}JQuddh-_+OBJv_Hxi-OOc&SmHpNGwWHd)1BQkYVB-v z1>Gq++5r>mK4<3~U~jos=k~@%+1cI7KyoMckG$X+DdXCW=uB6?*r<{m+7HqG-bg=Qd!!`Q7izmtTJ! zedOenbUq@N^Vl2jfAEcR^S!%eV48;hF}x!$!YjKk*2=CnC3zQS_RtkCt~3;ZQ5#N` zA6vfHiI;MRFaC|6Xo^2^JQvB8nDTF}7YvZ>Re1bdz3Ec!^`+(1F;05WUax#^qpHfN zPJdP75%uSed-$3da`Wc9Z$;Lf@KE{FxY|I-A8Di$+l zTNl11jQ51~@+Lm{#6Q28MZBT|cu6!oQih2@u*kVS-V!-*4Hwt?8Hc;UwU;X#!|-1M z3V>T1FR%LJ86MMS>cxJe{>~sWy0^oQE9ewmExyJ}6!A^eq);KoJ9@$nVz-k?ontHl zr`-8uw9AO~30HkRYaWcb&a zo6h*`86C=g(&o*+73DXBcGmaQA;Pb=#Vg(IO&Q5Ro1Kc`!-{{lvy0x*W+PX|^$+^E z0^s1}ploB??qe@nKEiZ%;h=T81zoAfCG9MG>lu9-y5JZ7LT`>>5B!fm{6Z2wUlYyE1BJwiUXbrjlLu|2&mVkM z{_3ZHQ?@8~J81eyV*;CQu)D8}4h)y6vB_%xpeq~%9&)uKwxokXuFQ68gadS%`JI}X zNdE0G@=T^V+U)al*ohcUO3iPK;sWNl$4li9*SyF!Jxx z)h{(%`zWufe|?S}VOgfU^k|-?AK}BxufYvGKU}`Q=KRDh^5QSyTA0d&&xWh9OfMlw zzk2YN;O#qiy&8CyujfIz$Fz3y*5*zQt?wG>E$@E&y~wVxlu;*V~2Og0lLuo&-3y~!-MC8lW9P+)QQx^9tPh{z7!phFX!mNo{8zwiQGZ; z8aCm%ntCVYLp}$_M#=>``y4swzq(j1Cf$ytx17=DKYj87y-eK$PhZgHwB2NRYLm$s z&gRX8Kiqa?#`m}Ts#?DW-gWXJ{DwCdA-CsxTT&;sp|ZM{B!{B=2Ni0aD2*~z)GICnKR z4lSgVQ@sd+la}?d`dO}|R#rBb%I-dLZKo)@;aeYk2V0^meLN|5bVqCq=w>9?0HGj82z-qx=}v;hS({cdd(W8gadoqD` z@#5@kaRsLB!SoUHi_BlIep+!AKb&d!U0FMZUh=Z#tGqdZ(iI0aKgtI1j8>zD zA5ve(z{CmH8#q<{QlH%g;gocH90b34vvi<`+}b+jZ98^ly=*>uS`OAWBG)<30|x2( ze|+~xKQR;LQRo^Er{^>nc~g)TKocU}L{MQKZf%yM-5o01kup9x9wK+y*|jjwy>`}! zkU|y4iSiOgWn_ib5gv_|wsRpuo=bv}Y3>T9%LhGRI1O)dYu%@Vgw^QQ8PACP*$}ZI zxQ{|~BxsimJJY)!U~*B8c3if4RC7aqe0k7=dq!nuAq9NO-H!78 z?cMC#y0gB8A+=L>Hn!54jb?#1hNr=cvF*W&HmcmS&`Qx6a4(;~r185`dXe8PDoH!B zw>I`r((V>PBl+yOY=GbL_EuS?p`3;VnT)U@2y&(sa8-oROeJ9j5vFPeEG)dxO+nYV ztF$z~GC)r2x1r9n1uLmqCRNF~l*$<_QP_OU#j|vk!!kPqyrjL%YuuD0_Za+^3vlZo z1Le(&O4Pmi-EzUo$=QB&1wbvb8n>w^c&-B~wGxkUYQE(IV7mXh?~flnLiyfLWidTH zQ$|Ndiz8{Kt{2o9EU%Vr6rxLXTwSyB^`o*uCB8uz_g{48_y7%^ zLuk4E?0MNC?2*g(J&4IAnp`LQd*vk0joe6s7S9+ zncaH(jdJU)yJf*WG^ZxP)foWD-zoaQ^5Ew{j5E8ocDKvQ`YIrfGP6C6K=P4p7UXGqZJb03a?M9LkwIgp6e%ph4eN5Axo~=xCP1wKM)rKv~QTfB4M< zT-|$h)IHp(IECL&C1FR5vkkflD}Cy!r>g6mQL14WIgsbQ_*J9FF!+OqG>uI7YY@w< zeGMGrdN+_dprw1@<$(;EG4Al8de-e_${r2#2M@~nC!c3I>LxOEN?G=xH@nq4&`C(0 z=)@s-BOUvIIDfHJ&K^C_;lU&1Z|ea1Xh1=~k>SyFjOValXYG4em-X~!zvtTN2~^;V zm*tWUNJWjX1ET|F`u6oQ4F7dO>keU|AG#bcK*qr)GHAZsT25z!v+iMveDZ!ygE311 z;Sa+|Q#%@yu2HzGlR_z;!#BXMG{RS=;?Y@trj>yK@a`CN_6uQw7Xy(pt>ForJedhF zX!Gc$!Z!@~z}%rfh2F#?JUCWb;EaoxZ&jZ*em10h}GBc;#5J7-Ko z%RS0fL&HwX)T>71&&F3ev$;HUNcp?G?BM3EY-s4I7nKKTnEFIiyx^UxKjYQtZ1Bko z7vIv^Xnlw*8#h}5`rUtgH-2^81*D%plBqo22Gv%$3=;XxfFwFVn#qfickb!*77skD zo~dzboT_icN%4qXkv!G(eQw{4r;amC4X#t@?rKO4a90$WNy7-E)_t|UGBN#K9y-|V zo~aJb3{wUUbcsphOxrq#0+g2FEAckp$!LY2st4GYeBg5c;LrDXs=KXc_YMonvR=Fg zuA%*tS15gfO0);-I7CumO5#r%<0WQB@CvIn><2LS91)!wE0-e_(L| zCo4|8n=d>3EhC;Yn~LY!=?^KCH}EokwPh;2G=xk85?a=V;WKo%OsH3Z^Yf2>QyyUS zpPip%wq6hM9NfKi>t=cX!}rVd^#ze6E#wM)b3z@zvrPT!pa;0g8?uF+0M>6PoEqLV zEnj{lDHeECe|af>2@@(*egR*%wX-u@eBcNhiqSm-91MA^@rd6{qjHj z;UAapeehwqb?sUi9T>`f;3w2Kdz-djx60BIZIZR>BS;oeO!JYhrzU`C|ZSe8Yv}Jn-deZryv*1(#(pTb`*Y>$}&Eso6jWfJe z9QB`dq+Z0A?zLXY=LD-|QOi%zEiAt$?fQy~PySM-x_qq9#%;Y{g)smyTL0FoiPO4- zG7h-G1a;D!6FZTQeQb0G06Yi4b6!SfC!^QXc7U$o2lE3zX&*QcuZ~DEjlGbqNZ`i@ zUp*+#pS_?Arl9wD2D@yJdoc6E$B)bE>RNO|tM5~fbFZr=t1YV@U0Yu%BYi_zLfFta`p39&;z;7qw1@CL zlM|%_Tk!(fvVPy8o$u<=3;C9MxEmf$Cp*#2LCO|E+X8q$6*kC7Ro4VU`89k>k_7V1kch7cll3EYn>|oD~ zXVLEK4j=v1&;Co9?~r=-jB<`QlFx>LjW z_*8lC?f0=?+}5+|xNLm{tkkjoh}W(F=tIwR)6No(?Hwo{8d)c%oo5`wlcYA`gD<}> z|Nh_o$MT>4)8Cb^A3cs;suHrzFQ1uD`;&Z@-=u~1obX)1WS^ydYVx>)2w+w2ym>2q ziz$vKUzYbP*{v@Ad8oejk*ep66MKxbLMQMMcUQx@qlWrNSh1<{{S_}>I{ov|c(ym~ zHf&Ju_7Pg2XfIpG^upU+T|MQaU;eyoudS6?^lx8pwJoHB^|O<3(huXx*29zL(tdXv zOWTpyfL`#D0|QQ!wEk()t7yEUfzCV{rtL>`E8(4;?ef-p?`Bf3D;1T6giZNLFs=Zs zbglh4)#WpL;{qzgVFVY(b zDGU282WeM3u=(PNTYE1jZTVpzJux#mRYrzJ$wO@;%IkFisOlj5c%mav66Rb?(~qc3 za%JT>KlyAJJO-!}bFK(-Z2pYn^~%+}Cf~|GE;P~k>Z5e(?JEP+i@n%i7pecji}G`F z(#hIp*?Rn>?5(eZUr)BSbZbCYY;^tKzw@J?#6ZHs5efNAMX-rcZ>8H$Wom-%6Nbr< zrC@t7%m9Yv5De_-sRqvI!h9K+oCXvH3}PBt*?$=&V&{U!M)20CM5(x+q@7VRf=XOr z)wr<(LV-xb&q~TX3NKj#KRqBu-J%5HwSw|{{H^nLyD}V9t_u z1h?N#osKRT`3S?}C@UVidtg5Bj6yv)NCRgNrMbPjUiLRO%AupI2qcJ>owbd!^z=n$ zwrh0ffH%V10ei5sOM~zL<~l8p9zHG)A3Tn-U0>hIDESFAmc<qL*@ZcnnKF!^sl>a} zNt?aw;5$41&0h$@6*>Vgqwx(Mt${7xmU|AD0T(+M4ylA`(>}=_?gG2>^oT&gUr^%VAvUu}aS-5$l%-+0ShQ`N80;RbRZ^GN=$8Ao`d!6ZG zR%`moa0W9pV9Ag2;MOO{@bLcXYB@xP-81lTZ8bAFv&_jo(rLtvFU*!j2L#@_Q?A}} zFkqsL(4dLo3;Z0Kd~sT6gQk2uJ4ANTiG!n@@`GnKc&UV=1o5wTDiH9o!^LlItzjpd z6^f(vY5=dQM@WP#qw!6{sCIxuFUXya5W+?78~#r^=G`&}p##ct7lm&JsNb#JROlI0 zB%D0&iU5E>f4>}I%NurFTJfpZ25GGJ_SQj7BOAs}eP{K?KeBAJ|_wcp! z5uS}?2<4$k7wDxO4437f|DxFAy(3IP zSTAJDnlsAhH6z8iqG33}=qH}JlWsa$sWWUuIup;vTRK>whvXN{q;D)eYV_(10}SO+ zIDrKo8cF(zgHhDE>EyeFqaWX;rw;#wAtUmIX=JbtJhH`?QB#*lGI19LJWW5hq?GS^ zXbgFeJn^XRM8yz7J%fi&@{~BoNJG!TJ6?fhSrOM25rXxy;oyU3G7MmNjym(-)iB6M z_{OZ5Uc(FNV543TDOV7QTV`_!Ox(PD1_$eebf`-Y!cYM4z%e|*h0d*)&)8Pj5c0X( zBiXT|tS6pz*wJ3%xyrH*hCx?l)BIB|+9=NaH9mw*TH={>lz-pl)f4R|>MHn9lA5pR z73Bp`cCQLVK9CI1K)c3)il6@C7v=M> z??WyRzylxfcap)|@4Zvr`QY6$pm9xj?VW=i%F((Fn@u@MLzHA3n>^#enM9_Y`pk5~ zW8wv#VP4YLPt^Rxm3Lgb`r+gVUdKLgVo6>8FKw)&s%+?l-VC`4%}z7r#KCFr zkw1Rf+R|uEn$m827ya!3KfE^Q*+f^a#O_pAHbFzn47PH|Xe~QSYh{@R#WJ?-+OrpB z4SQz&+4Hje^m*Au2RRdc0NoT>X<(RNopzV3r!&9lD6#y2T{~t;FYoF*zNgI0b|fS5 zLnf~1pq7q$2@fx6*QQhBlY3~Ohv~JGKcZ_WtK>6qDvZEt=Fe!3{9=Eo zTLQcNP+gtbZ8~|We!%rHxW|Kcey`FGSRV41bn~jedEss&y-*%s{^sM-NnVHg2GIRm zk>S`G(hbs^PxF&i(C~842(~}At9F4aGpsi~FyFc}W&(Qe7(eYY2i+a$HofpJalBW& z8@abd#=Fm!T~_${ENpOivGgKaXtg$AR=@JyZ9B8AfIq+qzNN<{U4&aH5gqyd+i#Ws z;V=G0RtCndp}tH+b%OO`^PKS3l{y(9ck6z2g!JIu^nhVL62>%reGQLF{QCG$ot~D1 zfq9gLT7MpVP8kEgs~=l%$it-VM6?QTc-qkZBXo`H=lb*AdQJOO{iltZ@+3lwyJ^=| zImD1oTxskJ$nOn|&JNmiDj&Yh&CHa$H*b~q-gvvbbLVb(>(=dZ`|6GI#`T-!#=@0y zeQ`10|LliG)Z@q#u6U(yAH`sM&#cR)K%d2$tzu$2wk@}`NhqHcmMX6 z|5!eK{4gs|>=YS7|9kaOPY(4BmWko9+J*};T^k^Fn07IK5L_kOtSH70 z9biAr8STxV{vZFj{MY~bGupG%dDKa+5*~u)*4r*Km(D=@5|V@9>3~#E)dAWg zA_x3^;;zv4yuNrf6G`2LBAtTdN1jUCJA8MZ!3R-H`+&G@8MIlC3pw;}-Y+Tpn&W%u z+&l*W_zjbXL+Z4bzx%9oQx7?TuVaw*+|*PC0Mv7r&UA>^3-4Xf?mmJ?y2r=Mz|3rc zAu};h)LUC6I5lY0B*~w&LB8Fh!%N9M*xE%0ca@2SnR0=h(KR+!PO%Z~PqW-#0q};Uy-A2!Sua(hfU^p8(wa@H1YLG6rD2XSck8?P5x zJ*4iJ=bc1ppO}Mb8R(Yw$kyNd`sd}>Uw&H7DJ%1$4K_Y9QEpwkrJ4o3+P5ROhrIr4 zT>IQ+#|bve8%yQzxbF2oKet%kyz@@kvtyQWXxqo>cfzF|5Ners=To))9u5@sl74Mt zw4KX!Px)Feudb|>fBpaYx8)yy`J1wfo~jc@?N{A-7-eMz-HQryXj7b#k2xjJMJ zeKa~cK)Zji>>&eRLF21e=gZX8cm_($SGCJ(4y)d-<)x3S2MyA(f2rjasWnKQV*BgKg9l}MYa_hm&J){vyJfI< zFy{oCu6>4KF4E0plelVIiLd;Vm6^~f=WuD`f~)$_0c)>JWFuC1J+$GCXTe^Uv-!9XB=d!<}Vb)56ywu*&OuceoK%h4GsxptJ%h#g&l?@T{}*DdmM?gg0Q?$Y6z?| zm-|ps;vc$DDB%j;(&5EV#g;wc*EY(E9q}|+wjt0SmEq>omu2haDvh}<1cHi>_%64$ zL2QAjcHDEi2W#4yU>5k^&Q4h){_2aR^5WsMvbMZZR-Ug$!K^@wjg9rPzPesENpE#| zwLE{hR9-?y74AC5_Tj~8*>P~;g#6J+bYH4nn8PJ2E;A;RY4~Z>M!{1aJ|ELa+os{{ zz|01XEE&g&v!9B{vhhlTmp>V)I+UL;m|w;!S>xGwA-7gmEdfTdcUF*gwLUtIA7)$Rk7G;@**0uU{+kDAbt+7KnzvTUNScS*=mkv*0InXA4>CA_wS$Ra_4lKDf zmxsnqKzoa?hgLrRwCp{^FhqxqAR`yZuR~-#;>q1|=%n(T z`|gLO|LR;hLx*)zhBo3l$2~}!WYAw7Zi8_5RvKfQ=t2+vbIJSY6$52Qo#X;yhOObjjRgxdH) zuhIbQ@~jQx@vZ?C!;bf)X++{UKxU_Y@HMPBNmF$oae!Fq$oJr#1ViX1A1xAGjko%{ z`g188IxQ6agku=e&8#b*8!FY#PCN`Ny_5+9B(Gf3&jxlg(^eXpR${}~$6H&}LCe&2 z&h(aFtFf1k|G*M{y~#iR!c$!8I^P8*A8J%<5L-6Nk+V1D4dpOdr9Q8QY^7V(t2j}O zgqk0o>toWlj3W13>0tMJk~BV~;k#1bkRxfQ%q-XD-8lbWzW%F8vn5N@!&YW!tySvG zqh-}8(be74jp0ZT1c@2I2CyMP@RAq&1-$HkLh=q~P*LPT+)T%Tc(EN zjj+idFJa0D@Gbuwz#tp|2kz160EmiL=!45PDbAD|mPww3w5jQlDRh#yY9+-;xI`gY zjS$LDTXI4I)=hYW2(okz24!Lac}W{~EMMVno$%Z!+%ToM^>@Ec7#=jFkp#@#>GVG* z&c$hYh_=f<&$gYMaF9U(X99~a^UK*XmX~xgZ~*;WC2qE#%RBMm;aAB+su6b2>`*_G zPUMAI>4VOY_91SlCnqcH?(TTIG)NR2oy64jpumnP=)vx|IgLckvRQ`MpbcHA?&#y69dlnMTXVv)_IDb^YSE zzd~-E)(||QpOQ~w9Dn%9$Mw#K?^XZEP^Tjv{eUN#H`yjmNb3!^t=$=sp6TSW;;d97 z&loO#$1U#ENxN-9a9jK9TsSg;06NG(yT*`pBE9mKzinG9S`XR(pE4bv zVEo&LxXm|wAi3CP$i{r|+dbGN>|xr+^z3xK^WM9ewBca9*_f{~p4{qe{|G+)yq51j ztOIo19{l^sbBOwK09o2O-rA`RWX<8uPG&VZ!9@Kt9mRx=zSn_6xo79@8GOx254KY~ z1;wrBWI3ruI%u=`phS!9kEj29?e(zD*iKs_EqtDO z#3_vJ7A7Tawko~S8@vKg@NGQnxV4d%cT0d9cj(k7zgF%>v$m@)pYTe)0@``+UcTv_ z&)m}MAZ_VrbFaSn>t9z7L^nuVbbA-SxwSy!nc6;$XJ0^zPVDf!0%f_|>IsJ(;%;H( z_CN9j%c0(ON&(M21u zp{3SIPP@}yfxi5%T@aanStbi;s8*NZWgUD6zBvA;7Xboud-ECDgI~O@D6a4)oDPh* z-GjQMA-e5dt*e{A?}n8gOiFqW?So&#hljLCJP3$8oqe4+#tl6YubZ#_4g$EPf)lVv z4V`r`cH{iqeBD^MR(H|s-@bLbK6vZxdjG9=Y7sl$0qab@gQMmdG{Iu^OKkttrAgh%^QrdB&Q91$Mv**8uXyK8MI*a3x&%kemP3uTNob z&i3Wf-SxK~8XYxS$CEPqh&$nUcG^Ts*SlTaH2e!`G$)sc(?dUfeE;r>PmtUE6Q>g- zdYmxvyWC#TH~e(j_S_HJ@NReFM5YXmf#)rBfwhf|+E`t$VQ@7$HlFiM&Np^z54+Tr zAh9X5rxj$D`w;nqP51JPuj}9bxBs&KyZ`pTujS>HbPP*uo12@pO}Y;rJgT4n>X#V= zZ~(gTYm<;5Ra5PxzQ~q(sbSpWZRY^qKpTJS);;(E`BEljeac0U$X3GpV%rJ6{G-u# zQ77JY>Jd9CAG+aM9VKY8jHjV_G&$tY!Tz%??8H~AnIV65e!50(UawwP(E)oBGqYUK z1$T4``%l1QKlY$o`oumrESa^*2$r^!S0{Qa18L-u2=Lvr%(`}qS-0^x7hi#|g-zDo z>`ln@g#%|$3_o+QF?~Al-GhgZ>&+^*o1uW~q>p zGCZF5mOu6-cIAKb-~9LWXaD}M0nolM>dm?%obaZM9ax*2WI(R@Imj>!O^;wx4uRt# z;yR&E|6T0poz0yZ#~z+rm`UGS>N$19vwP_d=;qPN?>~Rt@ZJ1<4Zm+6T0|=ur=7_@ z!w0+wADkp?OJBEgJ-T{_{;VT!`KbQViRWy6@!Q|jzxy};rmii_!9)89V_R)!FdZQ? za;73W=pnZ|Fr1vYniscpqFxH!WadBiYIpmeMwdRj*LU#wKQ!$VKXns%v|CBr=kkLe zf0FIoBFDMJhd?#{+ewByshbB6Qwt^u=dLquzv{rHXQ{STjBb6{TN4Y|8SuNTO13Wu z{nQ;vv@c9nnu#6<{~1EA9PaJb^7Ci43xBgeaTlG~vyAL7y|r{RxwfK^4>&Wvuc13= zw!y_$Cs>Jh?K%LKZiYrjkYlt(Xwb7G1R!PQyN?u)U)=fUCt#zD`D{4dd~0?n!N^m) ztM~j$?LB{08}NXO!-G26+N!;k)zH-V;$n?mU#yEE+6?eY13mx6@BiIDF$0xFN5eEa zNT&{W59&1x(WPC(0NjTlS6M&Bz&lxMvxoP1o}V4p-obGVPfq2K!mf~_#25_jwZC3l zFJ9Gw%d1pUVMH@;->uP`H)?QczJ}&!b2zD;gzg!uvS&qvu&KoEfxtN{fI!c52g(_3fQ> z;IF)VnZ2J@F=AF;zRtdBYpWXwx}A&yNt$*Nj82T#^!!{+Ut6f@rNvsfb)yz;->9X# zw`=kCE!;P2dSSk<-MLk_?%b}K#f2Ef9$b}10MRVny;HaD-H8FL`|td(|6YCcgCEqC zhqP#L!l=){xudKSL`K_aEY``!26$cH3M0$_4MM{WdMWT?%JnYf$&ia>N+Nh@j zRp#23BIQc8Im6At8ki9IMTr)lq^TmA?QK-1VI+xQHQ7LuBNah7w`w>ASD9HTEaVeI zfglpCKUZIb=($?lmX5S%9P>UtI3a6bprL;L#h10cxm6RR6E!MkOvhmPHwHj^Lr5ZHI&%of@y%r6p+gRxQ$YJ?zby zho?uaWB(9i?F31?`+ucH4U5yXyVdF zMTlW6r{9wf@h%NHXy7s&cupSRF8F7|JTXGl*4cD=akU0fe23n-M;hP*et2~s{GOmBU!SWhbCW2_2h@)0)!X07t7JgYgx~z2Ulwi+A%OZl$q@g zW?8h9O&sXPqs{gOZ+I%iRQwE^@NcfrcA*{o+*i+r3AQ83>=VvK;uqD5I)4(DMN!z;B@oBG77X|G`!O2I^X1%-q(;hY-KB{lO`l>e8k;lL&PjetE9SwxfjAEX4!bwwc z3yNhnZ7$s&^7w`@35VaQbisX+ZNECJbR66lcH!ZUk;YSH)3hx^%X1&}WV|&~>1N z0}TFS{g6q{Y)eOy${~4cRv0AUNT%q`^Xx~c({X(K)Ixw{oVHTqSP4_k@u;Gcp1mTS|yy& zp7MnHaz(80NKXw?ez+C285|%^bST<*mT}8E(w;l=!kh5Uj6FaXJazy;S_1|tHQU?q z-PL*Od1)8&9orL`wrp)%=sd`V0}OiOskeOa;fKM~5p^29hWc%uv3w&{rN9&v^qf6DCumO7#5x9~Y_*?|GiDmz2x z_lz62u>zq@CJ;Yxk)|}>@Qf$V$PMbk8C84O1BYvy;ZIJ^08I%i4tkMo=jc%mrn$#z zJ5)H}<}!T;jKt%G6Jsdb72>F$x4Ixq3;I1r=ki^CVq*L`IC%ygKK<2~kxA;p*nPmI z4s5=yj;Xm!92uZq2i$iWIj526_f|$^FEU1*H7j-qdj+{UG(DZO+|FrpjhA)-Xt3Y{ zWb1-&p<_QZJX;w<@X?i(<$Cz|Q9AzR*UAn<+2QNqjotbaC+c3#D%7s=ph{Q!?(fsq za37*yI^d@LwS)fe0iv0>5njR#E_Vs9?k2vovH*MrzK-sx9b!J-Zp~)rT+@#Y=aVZH z-rAw^zm>9c>DLYCby=yG|5`da#YNma+b7_nZIY&kFsqkD2L{-#yfZc9OUrrh(63=hiIH~XO=@v(v$_tY|f#r?bZQJYEukbI^u(QuH*v^Hq)9)T$W5<84 z)ICphDt}H&+okQOBME2paxY;9Y5Lhdt;glHwfgxNzo~6_i`&Dv1?H&s26eBz93LFX z3IHd`3=Z~Z1;7;*Nq~sXK>avbM&7BNxVL>+TiEZzqjto#^K~XBNAqq6jxtD;MGu6A zoxl(r`X^d~noga^uZ6dK`JNIcNIdd}J9>lVq--f4Kk=P#mlwX~&#y%{rMUcvGpRKv z_up>mJdsI-3ro0Dc?JNfXcHxh&p1*`Q zuh-^-r}g01U({EB^V@p-)i?F*i?8d|Z@#EUfAgDq@XKG-Z~y$~^{c=5tNQ$xzp1ak z`nHx=*GUIG3L{1E+y&oiwG5 z8`rNldgNPn0uaxXMLM&c*nS*T@0Q(n%bM`E5yE?$Z}T;O99}#_SH5$nioC2^Z(vl9 z?VlL0QS6`orMbH5z?1wVprQS^T`|08hKfCntKjni`f-#|VY1h=?eXWo`*r<-cJ1~d##1jDgrDBMaSxf7 zDFCs@0+i*pyq)r=UOIXC*?-c|>y6jo9(|a2_wK$^w{G0YHrt+8X`MA%X!UEHPLfH- zLF8;1h71+g>Q-J3CaHtDqlw!YJ$U%I{@?%Nzsn4EC+ubA0CBxs!IL`jP99{^$;W{! z&+c<&zgszL@4Lb-aP`VRFKTspt@;PyZ_ta|P8;Vt8^juH?eY6pmkyfjltx-x==vr9 zPAtPV`$b;fxw_#6wG-A~>PoufHt$vrzNGyj>(Q+uD=3G3Q2+kl{aM|o?Yf&qPnbx9 zEB%b{Ubje+2kSmNy~w*;{#f%QHy8B$vuw5Z}r*S7Ehn=im!tZKH}`egCv|l`3AXrxV4$>9S_{D zo;ILPHzALOUx|zCc+=BYSN`k&%m4Mlr9U<@6N{Mo-U!^kk9=)iifBnlkaH#?Sr(_}e)_|mUiAz{rDrKWjXAeJ(Nk_WVP`b#WJRY3b z8U?A@2x!E82&hxSoblcL+J_)m* zJCl;OPoR~tSZ~Q6Pz+}y*L{8gA%cTLh|mL$^mhh>GmqVOZ|=^m%+!%sjt})Uz)`XEteKs1(p>ZieN0H@enT%(Bcy-HaLks>1XZVDLfu}zB zFJnwylCQUT(j#99Yn=;|3`|ASj$D$44qw*KfBy5t_wcACgxSdOm>Fj@Hw~Hk$qEPP z$$CruSVcZNa5mVW2kvA?ehQA`Bg%ZHF;8PhfqjWF`s4*hDUHY(Y-6;6rMa2<@Pl{j ztvk1~9L#za9vhOKy&EsqYi(tu~Bv8~2j(j#}%A*%AU>Zkj559@Ve9N0( z+NEJ^$Gyw+FOE*Lhq21Nv1Q~QxY~m->qF6&CH4)<+)&gVHKa{AIN`qR((d}oM&1A7 zn|k`-Il}z3mQg@0bZlY;WJ&JfMhR7dJSARB!&`fBBC?Z<$= z+evBpx&qM;-OdCPh(M76(oR}?W;3EXz*@brOpS(hiYVM0^=Xvd9YUp*$a}kDH25F?ad z16TXg@n!olASqs^OE&m-+$oQKc1nPA!ba&$#)LDCu+vmv1aEN8XlCF8Z7cBXx&bIfS|3zYgGcf9luv3R3RY+=>VtvyWvLAYyr3p zYe@eQ!uJLUH^2#xC9qTdi1wWhE~A^DJdg?>92lycLqa~0-_Wqw@9xuX{^2+B7veiv zAQJ`PX;EOMdFzMzmX}(-;2m7K^^pS*%Fh_T_?__BLGR19Q_zc(B?Q|J;^-AU@PFVK znwYGKxy2frnhcINcHse}vAD2=J~9+qwVc6;`BC2J1tjKES_&DqE+dVU>LvQj|ZHNgIN{D>oviQjd_2JO~-- zjDOu-LoS9J`cUeR`mqqwwjH6zM~5+#B1cH1i#I#^Ji|tMHcbc2L(tNZbsv15){B*A zwY>VW-duT8x9;7n|HJ?3|0q>v^{V(whoAHe?Y{c_t9tdzFRBmtEVBo(4~z`8w3DXn zRU@e3)@_yg;ODb9Z=vtMU46)$Y%>8(*{Oeu9DMrg-_@&czNsT%waq)($gA7YIDzaP z9G|G^o6ySqY-X)Gqdol7`lPH^foK24a=kVkWSKhp;QV}D|M(;1$vAugx(5E$Zywgp zlV{Bqp-h8QQ#JGUt?Gvcv)?nYOH<-JBm|9l4#d{e7xm!hzpNt+M>|gD-+!y_{=x6n z8+1c?Q6FiYuWpk5{W_yQX3^uvZr!XSaBs(uxE6m zpD#bJ-+uX<*eLP~SN9yr`v~J1DV~L8SoKibgm*Kh8+^GeZ#P%H;UQNkkNUG)Ai0gB zHeg@uHD{QQWUI=B`MH{hX6#U$otv*2+OIRvB~O@L@X^{NDU+rX+p^kFno7Rj-zy+^ z^wlTq29`mQUq(Dh@hgVz?fAd;_XM=eC)#Q(@T1YpEn;`dm)F*D1N8T@Ykl> z+1^j*&k4N8T?hW=H@~aL&!45vv@hNM(nFNTXp?qy9lBc3#Ha&#s0phNSQl$M+x2*P z8Qn;HI7bJ5MLvQncn<8TXLS9&oUG**l(tU?9-l40h+k%j^R8*z%RM_dR{!Mh|8MG@ z+i#H={wWjm3$5jRMV{IxPQr7-XUa()onl9BD09S?=>|#u@s!VWzU2M#5{Z<9lz6HU zDMPJG2T5D_B+kR2L2{?ONx%CUf79(g4Ir=2L^9Kb0Mmwzmwzp+*CjlDHfrdsmCGyN zTa@q8_r(YQEL*GdR{~!P2|5f*2y?|*dBavt5C=0aZPu~9lV9GxQ zHkeDAK$oi(fy6==lq0_@b$oVIpFjLf9iL*mAiw_jkN}yh| zXnm9<%TxQrt$h1yYHkvptCuplYl8#4y%`jc56Fw2K7Lw1|Lec5KmE7=o^Zp_`{W6E z@)J%8B+vNppMUOzFak~6`EP$uw&%s)zQ@2%h3)Pi*CzOM`?25qgP+tt{7?SFnw*`D zK5Uw<7EN7)$o9j#Q}_CdKY3p4t8Ti~p8>lx;uSqy-1!av^xdiN@h$aZMfo}U;&<_N zS|D{XOXiAZCzmKQY^(qE|Ly-?zxu`B)Z6!NAtRegmBC??B&z*t>f5HHt*E~1K>iuG zI%Rj;9|r~wkp;)WKU^ zDe@Vc9FI>8krcW zg=_PfQKUh!`FfRmC41`6-MU^Ai;Fe2v{cjAmTJh^{}GN7PGhEyw2dJ6$LHp1`nsJ$ zi#4$@hpcQ8WnYrK*1GY8D-_RiqB684-?D&s3#K0Jxox#YMsbLgz zXX_7W)Hy5F&O3>cR^kjv@D`f0`8t@O+i`6>3QmDtg0{2L4hy#{IMuM@UGP+_Jg8R1 z$7d=7CC6_Yuh;8fZ>LTU5X8VgHa1>&@7<|)-hR72{_KFT?N-;Xte!5Dr+#fFtlEEE;-7S}BX~VbQ`%!_bHi za8O$a75GiB2`9qhm-<7AcP6F&60?lBDU*f;L6)c!-Ye~yTUc9C=4v*M}@-L^^hAzd5xN^_c81eqas* z&~}#B4E5FN&LM{BYGz+fPmb2OBkPpGef~XI@yvb5oYl0pRdop6Q`QS^_wMVV{C47m zD+6!Cn~s#qf6ZxOx{u&7Z+U57f>pdaPwMKyuYOlw{rO+j>is9Rzp>dmv%sT+W0M$A zGk5RQpoTX7F3oo}hje8Jjvb_-4Ny8VIaZ4|Zq)6!@76mXy;~#Hi)VstS|)^zdqs|n z(S}G@z=R;U=Y}}~LWFCA$a-uvnof7qq&#hwB0L8i z4WsA`!&@A=cMBgGbGGtgAGF3Z49ig3^bcX5_X|)+^;?s@` zVnlhh{Y1FsNC$DO#NvjG;$|W1mGHc3=B!M3GYY+an_3}j> zfWHBFm3;RK4Ez+ud*|VU+T=cf2WJ}?`NYP0?Y??hThCwA&Wq=@0o`sre^T2oUWA6m z$#<9nIeYOO!Qg5t4=nD7M&(_b)V-ZV4nW4393HAcXx?)wPL|i|^z{~Sf@AsM`}gX~ z+_b&Rb^PpAy`eq!jE-fm%*mzMy4c^ZH3ZKgvSSlIMg`U=g7hl5J3pd~BH2PyUr}g4 zcUA#VZ_@Tvlr1zp!n9e6Ar|Xehi-?mYsK@Wjl;Xc4^IZfa4!(*N8eY(3>XZw5b$Ah#T4~%jUS6b}0ugD8bHze#%#GS1PD@3Xku) z^Idt;iIe!;;w53sgN*cZ=6`sS?GgW$Mh6b*3wPed2Z-#$z#1E$gttJqAWc~&k*5Ps z`4^s|d_V!D%{s&C3|e%_cLwV)P>vm7qphl(YdE+RRzoZX8SnaK&rQSlB%G_R;wGG( z{|C^)-u`YKkcVaW5a=-!O*>rNjv;&rdQu;726EeOh(drD5EHt}iX_^s<&e5_NPOp8 zcow(e9l$&Xc4_d8TetFoLTB$x`KEGu0{vuK-SGNSP0q~K)WQsk?{rPi&)4kIjhaJ; z8J?O#w;BrH@u2lFXN4kPqwEW(i077eTIV=$2q*7dJtF!8btBPR8qHc~ ze#RNPl&@`X?bM(C`+ry8eETi534TbI)>bnU6ZPQ_K8_qbKRTchKVY>?8X?lDVTDhBVYZ{%aNfZI zVeAO>Tq5;fd8tN-9nEP+1eL}uyLgFV%u}35=fW<1rj7~g?Ef8PiM+vWG~Rvhy_y)G z$Tm&FV#tPb?1J@;+I_tN-)ZL!IKxz=N+uWJ#qA569cX8val`KIfI>%C2HJ7w3P;Oi z$K)PH%Kcybsx}@yEeJl_5V}3$;nr?u?nzrG(Dpt&d2eeglT*~m?8Fs#?F_f_c>_Ez zKmW2`{OUJ#gbY2{+RXM8Zbvt}yDI9`bWT9z`1M72^I-VF8`|pHw~uP|>-&-6w(*f^_gdyV z^&l@(m+1r6gXPtF@mIg8PESX$6daZgzHuy#8MIdX{4KLSY)%7vs0ExI!Mif0|6$0(M&^r1^Q8a;{> z+mbZf=+*&Y)6;LDzo#}ehC>rY>Ki7d?FZxPC|d{_<~rU4Ql0zpTIbi=WqT ze)oBO^VPTY>cw(xAlIAj=c;jZTj2Lrx0T@sKHKHrx*9yWL{=U_Q0{!~R9fn)L1KXd@R>S)%RI1?ZGOIuEgGi*9LJ88%ZyjmN+ zf-Zj0ctzaU9?+fkx%z^TB{=`g$4q^-D!O?nTa-ya&bxdVm=oT3!9pTPdw=!yZ)=76 zcd*Pa*{*kRFm2v}oY8^dnpJL+mjgLt@LM}V%qN{&`~nWooIOH*nfRv;Z|5GimGmL3 zv0DkNY%^}_AZeHIcS@2lUS0a?Jp9zbRW}T7%fp|z4y}Xle6eCIb2ko-rnl*APygi+ z*Wdb=hc4;IXU8}1-@Tbn%OhdQCt3NH=lA{E)vfPKxN^6S9(5*ZT-wnd_rOh8+MMBU zF&E|+>ej96HG)lGr>R>7OB0#21-_MwhTW&F?jRG?FSMD&zc#)diG%PBw|BC0RQsrH zeR`F=PqPB3b-Kbwu`3dvda^9$ufLNUS6(mI?4*Y~Pc}Ja8%g~(I+uTjJ}d`6{X*}A zYkbM@A|TF7Y19ZE7)jf zJ;(qgnSA&FS!vxmcxqjM;yQIOlD4hA>1v$t1oE;i%YL!-}r%TAn8d9 z!eRo*oGwjeRS55HX(S%B_wz*VtsrCn?BD!Zeg4JQv2l#!O@a;HPJ$^*7iRys`@w9jA_ zV{-)-6KUR;^p}?wAoz}t`N*eCFJ%C_1UJ1VS9GVNn=*9!=Dzs#uWK7UX@s`h@C^@! zo^rkm`AIL5vUZR%O1)IwO`hV4qS$-9yDGpiS#d3_fvLgu{bz%=)xTFOV{1#=Iv(u) z*^fVoJ*8ZXeNGL%=pAju~JvUV7);b>L{UY3eJ1lx@B>DA8Y^-l8L6kb_~p}p0&?TJ$qnc zyhi8eY8ac#38N>}Yjg+kNL{L7_58D+{QjSuA2-8_uNbDzCOf1My*0fsi*h^=q7Z=9 zwUrpCGxM`GMB=ovY+I58qbxkP9r|gwxJ7J6sw|1h21;f>imJ219NFCmse2Hh%Y9d$ zy^KNNUbLPB-DX&W5gORliLn~Heyt{N+`y3Nuic%U7|`M>!i4<$Fg}N7XKHw6I__=< zcrU_Ep3dgi@L7M3q4MZSJ^bRUdVK$W zJ^cFX+E`zyW0W`r;?USo-FfeJ-MVwD<}j{RYSpY9wDCX(r(4)WiO(RgArz+F#$q&_&QfXCBCU zw6b0&Ynych-JfE#9<6TF31QA@6Wh;U1;#=5UMJsfJ+)`UpZ_lX^~hg)PZ+Kitoexn zI}3J}*K6z1%er!i0S2>>$;q7DDn~V=Jh8$sYxT@_Vkr>-E)IrJQ@<-jyt-Z3kTT=ZBf8 zygGZuI*a1(Y6%ro+JDa#=!-P_;87mNJ3BjFOG``HpWnK07TVCj5YROqf`iaH~V-G&~^q9dOgt36~fvg(k>{wT+K5?G=>kI zHEgW_qO^AGc2LyGKK%H6e@~UMdIo6UwDmstr~A(LD2GX0x;%WKu6@-{M@6Z{YG z-}4*@J917AYSaORp^-Mbl7iZKm@O4-gW*E}#y<_yHtSeOW+0PZbS2=Ik(+CpTHv8JwgZ z9HdiWn7gBHOs3w9qmxtyY5P1q=0*82jk15A` zloh1m`-L-3gpUlwSLzO4r_8m3rFHPrzIo5=Jq+mXEZGdQ%YQ9Lr)<)lhPsBhGvquJ zaU8xa?}~vV@Zwq8lg{N}9h%cmT`b@EreSCsv_9H5=^p(JJfuCQ9hhcI*1fcq4=UIY z2Qb0+!~?u;5S?vcaiRKV=c*SYv=4sTKQX~`s_m_dP6jc7Ytt7VJ1LVH6GHv=p=*ZsYeSC0S2itqlJ;cGg=n_sZbu1w7 zv=9dkBs0>UC6JMedyfdx3Aau z&7~T{;6PB**3Qz&8}!Q~NW)cy8bI0$+60H&+x6<3htZWhh|aq1aWDz?oR^aZkye4uH>0JJtyleeztz(U*Tk+ueU^&3}m(AtB4 za15c>5c-}23(`)2CSi&$1z}k2*4q8Yb(J)vy;Ep*>dwvTp{)RmKy<$aGqg*2^U=ym z^`6s?)$yS7ftji73!N22l;L!1r`EoDP&<#GMvl9x&zW<*>Ko`VZDj@pGEM6+?(baz zO@2(f2RlAi?ft1m`fhEIm22f@z&G)TQr=F zhf5z`ZDw1CCkV5C{CfHRE$!*~@~g&2NF#AcBy@_KggWg2KT>xR2UQlmK>4Sh={KL5 zkko-w9uyux>CDr1I1KL@8yn7^_7l{_2<_93Ogo;PK(dSe`FeGw9zS_j-`sytUwrvx z{qFNG>fwV&@YbX7Yi9_0Ia^bDK$xU`+D@CiPWJ7eZl8JoU$}zkhQ4l?*7?F^bez(Y zpA0JR)mD==y?{=r*Z31{7F-)X;C56)~q z&UU1&<0AAx;Ktu^+YXYVNnNDl@Raa@4_M_t@|OlelMUv0O7zd4+^-GvQEdca&Z-US zL>o?hdmNo`miFN)TIJO!vO@ZxhNGvNU$#{sz2gI9-jVdu`UE@|ARYar+w9(kN9_ym zv|r%~Twa%s&{YTEOWb{jrS65>S6~SJ+NRV$af@ivPdn;_lSWLl<=d{L9o*m_cRZ7< zFFtKAe#*a2T_!}rCO{{A=h9yok{-{zH$NW<+wtq96rStKo^*5(F00j{9|w;!J70ao zcm#GLM|3U1d*+j!dTx2FF0zXr>KSUv0cZM;!+)p8C%GqTZfdf|X>)Fin%U7L*l6*B zrquKn`+%H)vAw@Ty)+qQc|&tv;7;4~<%<{D;&&QbQktd~Ll<2h<5n@!ZYFJY+NMdg zHlzHa+;QV)9!a|8W!P@MzFg`EK09u&JUU<{p}aR7w@VMxXm9Q5SN*=LizdrSw*|hU&)v}5>P_Wg$!+WFt_>MUTl4&~c8>d}j5_5b-F|Fm{akMM(5Nkn+2CTHsIwR;3< zdT(%UT^Wztda<1fZwI|x4Q7iY4_@6`=G&Xt*>`T=tGVd~OrD*{OY0<)hDfv7dg9Q3 z)~{)+YBWBfzU}4Klg(D|t1pZ5`aB(^BWsk)$Mj zl44|1v-6t%=G|;NZ9Luy>@F-KK^nC!~+ddw7c^@)Fd$yIglOC7lR=ipt zPU3KT>A9ta@*wo*FJDnkSG-+hpmG-4Z}Ph7)7r(!3!3mLP|7PgpSJAlaRChKPYm?(!=;8brblhLbaX zb`OrS1jaqZ4t(2Z)Gc?4erhLO`ejJaduogtN|EwQvn2ue_%?5)8Gi(r8=|F zB~$2LDhSq&K22F@!Mh=>@Z7jt<25jq&chC;@v-rmnVp6B7Hf8P1}4*o@v~ho9zMgk z+^&P2ZR+U=C3vV7AkgcS3H66Yhyn$XSQqQ!ePhETn;}jJUPB#b<&{QBUd}+y?04|* zY{DbzMWZbTA={uO6p2`cpK{oMbX(R8eqabS1NJzE(E!Gv1RTSde8Sdn7+1W7Ns9<^ zVgC51bHQ+U#vns6)z8jeY3K9b{YJ^3nE@Wa=3eZ*J^jhcj$HGy;W{%Ud%=-*lu7l;wT)$qQ{qUo@d40Zm zVD8qWICR9&K%^vO4{~HwPP?1RW_VP(t|7TYa-iXadyxJo| zM@Hk4Hn$^kKWG()@r8Mq?>PA%*YQ3yVBW-aMS#puW~2fi#R30rXN9a0kOKhIxyb^qHsTwbol@#&gdT+EF9&2PS~{g*E?P~$Rc;m-;N(r_^FkhG;C z+p31LYPW+{Ii!d%@-M26y7FM-!`eOEhi`*-=+X`x!F1axJ6u)l&Y}PAR#kC z|GTSeb+mg}Bje*)jp3E_$*Fbdn+?3-=&;tGKLzGx@W?mtI5MUTM2VIs(N?VDzyr=5 zsCBmL>A`+xfI6!>9Tor*SwO#qVW0YBD?xrlFD9Y2ovGuF075+SZH!k=|M>YwYmPTTCMbI($(GZPMiaRs(iFcWQ zU}(yzaz$FoEEVY}>9+U42QQDTvF>dTID|7ZFC{bO1y5(e7$&lU^sKbF@wEIZc`Btj zQwMqA9+>V?O;*9R--wZP9Gr0v?6sAZ(27c#htzu*WcI3*zi@ZAtZN63%VWJA=xlZ1 z0f+9L>_KGCqV#sgP7YOsr#SP@J#?+Rks-pHoD!b^17U;XA+bpnrbCTjR6JlXBduF+O*EMBiYc-lHV%VA&nt}CUS3F{u^t{(J^ zAL&qd)tepoJjB@a%pyLt4s^b&+md@a8SRL+Q^wgymP?pom~aVp{3ugqV&Rq!9Sln6 zKRTZ}y5*Lq_(+*?7{~DXSytPgbbTOSL08wnR_Eh$coYeUdW>-74E)3nAZ5b6dvDc^ zo44EfIOJ(wX=~(TJbC6m#;)}s)aTISXBz}d#r=Q%j|!ihiNxNl^vhUe#M{Mu5DFD^vJ?(Q7q{0e9LyAQd8 zPNUP4IqSv2J1=>^Ti?C0th1R0u{t%)1g>J8x>w2)74KVPn6^e}aL>%n@o8*C7J zp`W&tLojUz)R}c7rMZ3A+T-WwdFX5aegQ7WNY_21&EJmvvmNZ3WoU(Rnr1)zcz9th z+ge!{z3_yUuO8Ox-+T$L-w(aH4zR~zH!MQqhDDG3&ovRtB)B)e5)1B9A zwfg{{?>Z1?dug^aF zw0`=NAJ@-*&-*9!dq4dV??0-a{P>6UgHJxL_uqf7?%uvt*X9>$64~ZT&&=!uCiOHs zWVE5|kjz#=d=EbzbYQZ#wl{a{`Sa(%dB48+{OejVpLAz?3kx4=89R69h+G z4PS9y`gPyC)pqH@qoKY<@_Sw{6X24*eC6rtL-8pekVlJOX)pC;80(vdb!fWs6KDRW z0dh52)jCpAmxPIpCisTo-AOU>FL_Bi+sQ{gURf1=8@x$7(p~t2)!Rv5K(+1VU&_JA zTRtW){w_P6cy~qo7Z2{&`py<&0-ZH@?L|%@_Y8v!7#|v~xe0g$ZB6}TY+^L&snfOm z8w~1q2iphW#C)9OMcq=5mPb25To}#)`Ah^fu72L;#qCo^*Uzilw)7xI^YdT)aPc&Z z@swH8M0CZDf2#+c#v@qTB)_C(Lf!b6Nw&1&qch**)%n++eh*xoE8$u!-`aoj&eL$; z3!BfrC*kk>l_$yt^&!);P1w09t*BG&A+t8@r$Im8LO0*T7TKk)9U!pt|4h9X!Qo)r zzib+m88og-7yqhIe;RVRdsY0|E}ZSyI0XkL8G)I#-uk zUVatbW(J*B-Xs0n$z}bv&NStelftNP;u~51Bn>O4l4?-kv*FHX7cKTfT>9z2FJ2v- zUBcACbJ|$vTj#;mzIVgsB8|XnKD14FwGn)Dvb@AgdnJtgG~pVJC2-=H_V+F$`M|#` z@1ytVpKq4WHfx)Z7M1PI&*0+5l{B82r(1rR2|CnQwgrP0#-}E+_XkNAo=tm|ckA!L zr~l&L{`d7{(<+`9fU!=2H!sUnNJt)?$yfQ%IBxO!`)ihcun2H zyRP=t^`)EGD${j{U1b@)qzh@arEOWvC)tD_NY8e(Dq}(;kf4(@Jpv4&;YaBt#jg{@f(Eoy1HVk9qQ33VaB|}ZAHAQ+gZ61^ z>*VUtrzN^fheXUfTkdpyTanwFaOrXB*YNiJEAIy5mJfFEAN+Q1+iv68jn-6P}U|X0^OS4P=E$!~5vrSqC z?a+Am9_=DJp*VtXgdVOSo2cVVzM)*|_tCjYUl}9c+uGQqT})*HC!<;1mB(d}POpC$ke4Y$cJ_K{{QGl~#$v>?I_{fZ5|TN|al?qh@4 zPSs(wKTnSi@JA*Reh}T*?Vt(V$^~zATh1%+V=1rM#=_QU&2n1*mbtYn()>?8{?VV< zkTOGq*3*Ps2_0m8O7 zwsTnPHo|0QYqv9-t?e1=Y*0I5MkW#ZlM^W1!!ZbkCdO)fdO9;%93hc;15iy~U#wY- zi@vGpjAlBs=IrD+ohWt&Vp(SC@yOC*jorRkg;MEEn5!7V19s4jkJccHwFbq+4Nrmg zz)LCzhST;H>y(=^hAmiO+);c%Qr=bQ&DQ}734r|DL7Xrgz_f8Sg{jlP@oRT$h+dcP zsa{^Z_>|8rNZhuE_9UcnNYler=24OtF^1gk;lx>?1awLIvu_{MAdYJB#!}t9b1x%k z^0o70;0L~=)5F@>+^C(M?I>d&{Ax!-Q|=&k8$5Mx$8!$oqnwseq6{%gED)cax0XS? zST~NcX6q)>P=S;|E7+R=CNA%^l%$mg=Qma~W(<67X%EW=Q=^H3wthA+*0 z{q>hQgn0&IYKn&Fp*5o}BeyZw8Es=pV?(i_Ay}W6xE40*sg3Y8MCVW>@^ZgJJD%3p zH|uYH_nUeJ?e@^YPEdAaIvudb5U0g9DIXa7~|lYFm=9~m7&HzV7^31nFfg1gtfIcKNBSe?x^vN(?+ ziD8%qE`_$MLqVYxFB#AGuh5u?i2HjNelGQw_TBDacYQk}g-h?gU4xTj;0$I@J-D@l zaG$F%NaWx!oiD`6$T+kiovCPKwTJZqel+l1+B`KsRo7tR)3j+ju{NPW2bN^23TqW+ zJNCyg_NOMOSD3pqOWYR0jxV3xj(KPDyJS1Y1m#S}SU+_Q1GfX;vU?b!t3f8GCTeDO zraX+t0fMIFLUZ6fop#nQb!kVNqsexzjXDF#+k?(2o4Ctr66o2EpLA?eZ8BtPA@$~V zLUzRY?o`8z{kC-z5+Y&A801j52S;_fvj^Tu$GwdyL)-6FFAWxQpq!TV${~svX^jt~ zPyz3ro#mT5B00j#4n!HeGde(HW(TJe$+F>}jzh}ZHMqN-swyRW2#v$@lY;6a800P9 zw2n3q3i)`SL#Ga!z7c%=$Xj6#BMAMTP>1Q{LQ%K-hg_hSQ;f9T+TY%euhao zxP?y+0VjSR{H%X;FoOXOBFJClL-NVY;>RsN)Zn(`e{gUBzv1x00r0J&+6D@!3-uSu zYa57RBjA>e{G;UhQ_iGlJmK4^0OQC@XrmYC7Z<$)Jh`1U)<-*mMy~V^)wzl!Wxwb{ z*Rr$URY1sKmz8_C+*N4Jus(Y&KRVr2;CA_`H%%ruS5emCiUFZXN0&h17o)&>Byc(q zEQ67Jq@G(_mpwS(?#vwZ2x-hZjqXL6V_YUIKg%o)^4_g`kz!s}wX^i^Kl}zA_C@vg zT+|?S)(0-!B5h)1xPI{Q4{CgLvbJfPDT9MOz~;=!bi%_AT>jf|dZnY+K({;{XpzT< zU%(G7TMSr!hRGlpPie4QRMWAXnN^FwN_uo6%InO?9Cpf`!-K^aX(@m;wB+;REi~K; z8bA5BX>Y>|)x8F&kMRL1ca=YlXAVGg=_5U_*SmLqtAur!ox8v~^0;DYU=8FpfmS76(G`m&BTw)1{Y zIVW!3sNscaU_qbJ6Z>HI)k=8%8*nuUPaQ#LKb01#v!hq5_42o$*U9oqCYRIzhT_C% zUHic&HT%|`a-ZeULM~~w=4PBpnbx zvd=Vl>2}s64`?XwI>ke>YqZ(;Vmw+R+=er*$;%_vnXHq;gZ=vQ>#yqN%a?(#ttPmD z_IXmzgsK^2@y8#%SAX~iKdXQEkN$rB{eSom>hJ#j|5g3*-~HqIt}!P)B5Zu zpVcQn__#j!=)-#d!}oH3!2RJz@7Kp4f0zM+pZxf<`h(y9z54y1{j7fc;~&*0pL|?z zzx7tlP0!W@bvOv$>W4S>Yv2M$wzvc)?Gb0Z4-C6Pf`{J|6czI%0_xjHYG-x8_0+tm#~Iszs>wZUyaA_S;FK{Y1|4E8}xX z8S*6cB6+l8M!id(U>XUNyrj*mk<*_)`X&deX9WP?ok{D!v}F>P6X+ic$jm`xkY|Ot zl2%S_+9sv0@5*wwD)P)Lz>yeZw>S$@x(kmdKkZa)_}H8QL$1_?Jzyox_*iD~?bUhc zxO94TKa;j7wLavExZCpIbe2JoDal>)rj{?iA_6Q-L-LiozB!PMgWEnj^PKi1iN zyI1f@eM61ho$}e3ItlyTm4oUJ%8xVJyX`((qVQeYVb}??(0V$mdCI>%o9SQu{NL5D zzWE$Ei%v`ZDl4RyYxCD?Y35pVP}{2bFhlD=U- zw1ubrUDm5*h`+CSh}X`0=Sp~K=rWjaT0Z`F(rHgadfU#ZSG=?#-16y9|Mj2N%KB#7 zyAyCMhm)Fe_%AfjCUEiePFY)LfBfvD!ktN4(30tzTPNqdr>^7CzQp~#fSpI$g0P;P z9M&E5zI%6WH$FjOj-8MUUbW#}RoKcPK8R!axpZ6ZxJ9&2ePL+Qc_v#@r;)LI*RFHL zZfKpb%KPr*R^!MYb#HF0*YE`T1iIvxUw@sll54hCok!QmL@O@giT?h^376^`t$vjo zxzUd@`+sB%Hi?WSOm>zaEm>!tsW_aW_cn;24Po2W#_mI>wq3-g;G2_Nd*R_(X=$Fc zpR4dgd3aWpgR_$Z`-tqjP^ZxLX!eCVjkXxcRL?*C(a-+G%+F3RX7N-R$o|`~ac7V} zMM3)dn+LVBwvnYChH;6;!s1+JojKBFVV4#c>&~5?;M7c+CxIln; zfS22qxW|zPS2YF$A}M6wu=^mjJ+E_ciS4bCPTE9kh$6fx5WcHWw8ja+_|58(kZcf+ zh-1Wfz?&Ue$2)DQ_aKHbk%HV*Vy@O`O{?1=rP40Zb}!#9{kjjH-lk{1?oTh#Y9MZ| ztY_KIDS~ouXBQ)Nqh3FHS<~|~_1=#@NN0pbXjW~|cn*&b>)`O9cDHvB0;lQ7mVm^Q zgb#ShOhs7$9FbJa_$Kkmz=R=j{7&6?8P~l$Gm8o$(+Evj2z#)%pL-t#`{2MCXsr=T zlrnY?_s9$~(zJnySC{w3fQAkf^e%}z|q?RSMk zMq0@yFi|hgCUez+Puqxx0!jy^A+>*$vrF6)`NDT+Q;1)_Ujb%-Zh~iUsBL>--Q(va zPrEoF98AeW=o}cGm_(?cU}t6^ggE%Ve7PGLZv(-`@RE*eG#q#$Ug8q4U@2ZlaHzhW|e?9ZOMTG#h?QP ziNh_8wb>F^X_uolxpb}OZ{EyIP&+Qc05u>!z!5xP<@t+Rd-bCBUZecc?t7`!tI)C? zG`5=y=nmrKT{>@Z9Ms4mstQvDIrR}f4J>vrWbm3ilx0v1GGd^{Fd*C$GY7j9UOLFY zi**B?r2SZz(g)wg=P2@LbZV{!G(N5(q#ev4m@;Eun!=b_-B`=M>*w$>h_SU7+PKQf z(f)oqq4uG@-E|Bfx4GKb2Dt(@=Rp4R#wV--&Jzok1w7#2FyM-DZnJh{V&#jDc*q;F}r^9vnSL zer}oN;K=wiH+se#O1QU!ftF3ZCI(LU3+dqJduB<B+$Q(+&^T;qk~h)zX`{dW?XT+)-KmdnBN&km_d4U|=HgO)`pKu%kw!Co zg>*cWKiegQ2hrAn)p|}xKHt@eH5z051BRgXM>mzT2#x9!~em-fwG#K=F@ zk+ya=qen?|(^KR1?)x8Pdl1iEa?nEH9O!UnyLI6{qet7j!6yPUD+q_2kx%(GE}d;? zes0%ceK{$}bljFrT}EDP`;aa?UtxE7CH!AQW^7@h#;;$ie%kOUblL~axi|6F%32+v zTMeLJcrHdCZGMb)Ck>tglLq@H>1>%6ZU?W1q36k)Hv*#r068xJoNPI`j@)jzfage` z7Lxpj-HwFtjpZQwBF8Uk4LIGRR6oxE7+YG%fUMh*fyTPP*z&9ZZ2~Ld3OsXkVX@B0 zQ_k@Ei*LBUu0iq<{il>^;nR<5{)2aEU(RA|^pTJ49}l0=ubQ^zj|H0 zgS1oliiUU#M&;WE(*Q1$$e#Lx zdGhpWJ$U@EUcX*e^DSo*%HN%gAk9vW4c8z3{*US({eyo{|L7n8gZlKdAJ(n6?qMU& zA}^?4WVN&NrP<6bSDxE$Y(vsKb>@Kh8|qLy!U3(!ibG~jK(9;anD_48tB*hVh_?Gt zeemJ?_1=5$)J=2{_0L&oNuyo9Xy=iGX|~(of{IrEb6@nA)Ze2gPwVTizNu%=U)JvK ze#$OBq%X@H+yy@($Mi&O{^A#$b^d#i!{ztpuUr$i)&m9R%9~Y2`k9GuyS6U7^@Cf_|$4B+s`(M`N0X~qTx5c6yHdc&hviVQqmx9P;4_vZF<+|3a`3(+la zd*>6k_G#M*03Zk>WUU3ar}*~rd0DUVF+}(JE)VlFcK6b4y#Iff^_skN8#dv2>qKkG z>YwC!ewVYnt($%(z|p4E3DuLeg~rE5GudEN-HqEVTs^Qk6GA4ZYQl*l=m~DOs%~WY z!xPCvJ;j`w+?S8qd5AqefV_dO_Ur>VcEXT@#nOlROv8}0E?ixlS;?YOxLhgl;?+xd z(Urhqy*TJ(JGFDpGPG6Y*l6(oPV|N&@!L?rKmMm(_}207w4LUoqYHz62GG+N{p0Aq z#@WT?rAOS&U);+t@@}3Tzm~t@goSnkp4#ho@xPz;rGKtQSKZsoXLLFe7blnX&3owD ztD6K!wSUIR3tr+b9f8U`U{SyKTpjfj(@dWVJQs#nUp)A_{`Ft|SslHxgS*j@^fWd+ zR`+haMY|pZI$#L%B60Fe{=&+`y7X$if*aiXy~*1*wXw5aJ9}I3@kU2e6Vr8L=_d8w zRy~?vTNTvWx^dH=LzUZ)*d$=>tBDKKFb!*b|+tK^)KxNcU*ar zhcFmUJ6}Kh158hyOLY2lfJ-@>Rm!C8d4<|HmiGvl-+udE-M)KE6ePc(Kzwx4_Gj2u zPtBc6hmrL6(ecjp{ddEB?@B(V&uyCF$w>ph&>(R;X-D_woBbO5@biE9-~G$l*xZRd z(Cf#B4L*;M7nalh!}PE4bRa;tx@Ks{vLsLGqzhN4t?A$OB#*c+{hR)U zE0b#$u|00zxNbv2zc~r-wU0=9)P9L>yXv+n}Pd?hhcvA2}IJn2B&vge=v;3t2gq84eVk`Hru`22a@fBd8#K7CQI*Vm}z zi<-xXUBuA8wlG(BQLH|E@9mm(HX?>$cNwR%ZUV zOT8H;V1(6+Zaq3-_3ZkIs8kk}>T>;b*m9|iZex^et*r8GpawBiGNaHm zAh5(vqFyamE1@;cj@vJtVC~&}yOA24hL^ykcTZ=(dGBuBdi!pTg997#)i+mb8)NL` z^bkXDAP2ZD+?=narA3S-moyiO)K+<}!y(GquKSq+_xh$=1g-PF7vXSf=UU(sftI7v z7$j;tQ5Cr906sa&p838X92|uJZNN6799ZZ#JGC$lY`m^SXhmvelTpiTM7}g2Q}W$3 zBx+|e+j;xtH{WC_;`HQnj7o`kXJ@B&F|f9I?(gsB(BrM`t#n#CgVM(Cp>}JlE48xn zy0$2zOWY4ph@h}j6bFo;g984gL#J~^5hGta z=0@fwYiMS&P&H!&1i+O0ypAYyR!ESiGwh}12oozQcukeH%PixO9KUz@-e^pEQpgRC z4RMcRXv;tN2E1;uWn0WFa_aC5rtG1H;-TMJYcLtlGC1Hq+}g=jMJKxlX|v93Rd6a0 zGm8lK0EYgxYfHh&ixrAFe<;aF!zUVB56=VTAVS0Fp}v)5xXuhLXIe^WQd3n{rmeka31x zb_R|pTUJR4qws;hYzsy?eRp+1X2bxq9m%czaN~CcB|C??nh)@#6`(L{DO)-!wJwfS zQs9v&;Qg+ILg^ivnS-Z{S3mfZpGa@!;nK0Tmpl1^%Z6_h66)p96++PG3G|&#eV%XN zi+1c=^MW8}@|G{!ZoKV&io4^ldKx#Zz*(QZw@!b+Rbbn8@$+eT3)1QYAxe4YZr!SJ z?$NpVn!0|yb$~9-)wmtS&in$eZq=}f!M*zIaVck+iyp>H-Q`8Ix#z6L*UFU9bAQQg}j}qEqv+Rhfe+F-6#3x zyaU>%rOE0&f1y2mQr=F7f@PL|k(Cb8B|T}GyPLkeg$M~B-eMaJp3IZ5e3#x_f#u*? zR_ll#-g`TP2EIFEVq|12#=Qen9u7VRExXD`V^Dc@ATDSRp(*Ob!TVEn1M+uv!|1rH zcqS9it-f4cFgiwh$b(VRov?F#cD8007i$W-8i#kQ7kIlgvJV)nJK=HVg9pbui^S&$ z_;r;;9|ny3;`R@EhJ~vgX0j?`(%Ek0uiKSpqrfmcNSOk|SY}M+&|30zB0>gGz)jBn z@Toz=)ANxA#z$+=RcoWt6!??B@^ru_+rRP5Y!^FTz-rMQ3t{76*ss4Jj0Iku5 zn5{2Abp3IH(@TAXx=Y8u2AiGz;HIdT0*6=UX6h<>RL}fu^-vz&SA})hy=0+z@^Fw} zetV2uKi+lguQg=f2J-iH20QGCO@}!2o*CN6KJ|j|9AFU~d5}7WJp33X)y{$_-UMhy zbF>2skv1fsw@A{bO04BdvE;Gf&$21Ul80?kyzy&>E&jl(zdXsGUroo3{KwAr{pRZ$ zAiv>0p#g*4iQ8Q7H7)^`TlZ1;qdA3M8F zcr1e*Zo;XKV@GthSQJn21pN>rF|<59*VR?(P#Qz(GtFS_lqYx7w^FaTV-VnuAzAg@8%g?wXcWu4dO*@Ldn(PDif({H#Z}AoDvYV>^J*Ghp9*@v8Pcqm1wld=E@d z*5vi2dPAARFTvB^>MFX>Udnw&dvkzbU}U)VU#--O-+f+Z=qLlGi9X?q<;71vs=?{; z7;4?llGI@;s9l$@I=H3tE}ypJ+=Hy&AgCSCby7_Tj&Ml_ytR~)K%UxM&F!PniTP`M zO0(UzXnggKZih)%S2bDBczXWwc|CaasGjj$haViDs-HHa`V@RPDTfvT-|VaZ;P3oF z{m1{&Kdjq#??3}%8IUnq+pnNVyUEjhltW~aj$Ydp@AAh?)X*&tmABgNz=dr>8^w-V zJ3&3OZfbVA7STEHU?;uz!8`T-d+*hI@4i#_-nv&e&_~?L#7^Y>9qkl&z!36=dJ<+k zNwqK5&?z3Hmpr=vkmsY?f$yp7sS7Ii)1d&(g~w19@#5`eapLZJbgt&-U#EULx4&-K z@Dl5YHk1KI`DBMaS_ty9I>lEfPUsqU>tHjfmcDhH5P_%pS%x;z$|Tea+&TlBf_G;y zMz6GtMps^8{Ky?>A&EW z^z+^clV{un>ADHm0_o=NxB~|s(uJ3G6`KzFQ2uEvXh(?KW`_-xTV*+k$gNgK;r*_> zc6Ps=U4eu@Ww-eVpLZJwAOnzK-RNgMt5Z4gaD8(<6OdvP8HY5ql?1TcX&f8@r+RsV z*NG9z%Cma<{8?n@A6W!P?d z`bGwD8$Wc|jp!eKgvLSov=cnik=rI*0-No&!`It(lh_%i!_PX=X1of|b_LJB{)<1Y z<(+jhROWR$Ondt3_R?K==w!otryT@O-TYHF>8=aAyrSuItrS9dkpY1H<2~quvQYnv z^VjO#d+!BCw;Y#1)ln>KCYa&w?Xz>XHxoG9mea_3b2c^IL_F?P`d828F zR>LT7B4O|}ufc^lgo{lxUe zxdhOX5=%P7PX}+EJj6@Bwbx7kge4vR<1}7-wyTA|#5YgN8l0PNLh!R5%pqQFKvtdX zU;fK~RlD$YCu3%C136M>+{5jiAX_91UmQ{I^~WBCT^P zC)DTq&?n^&_U(la4ml}Kd83R4Bym6h`&it*a_?X-TcbUG`J&z!fb@lDae5{zvLg$j z1-$_u^P3#96MCZ_^mkA24E3Y!4iTF-v$SwnybWFMA*F1wJ(l=Z>^zn<0 zBRx_lmd_Q<9^~DfFr;75M0wSda@kh7vw{x4^i5ip|MUkx{S%cZ1+0;tIrI9_!`ejn zI7nz|DgreJxxGck&m>Mw}Zv)*eCa5T? z4ub}_5-$y%1pG50{p3@AR#2o7@M3;eINyBpGJM=2h-wuszlS)SF+9JtlzVb^5(a;Q zQNE2`KTHGfj}X6g`+8l!v7qEmr}#dN-EBN}-H&@`tJYqxW)FO45v{JR<@SsQ@hK6i zDCST?ZX2nFyY3itz^(z3jv#0N+JgAnEV=Ayuc3d~_JG}Wf3&^*bl$svuAQ^aRNf&k zXX9;Q+->jf^S%pQd-bh`#j}@D#!ugz)=Lbi)s5Bc+xr?iSjNy>S@C{do12^2$L!_v z=k@5}{d)NDn|k`>A!VaX4g|b@RWF}CCynRz{KfNn&HKu$SG7u94?>MlrmREY?8f!Q zy0NrShtTcH%4%(|Z)SkR8RcQ{1RWXat9~kFV|g7TVY7y*2h5Y&S@8gC8a~yP?E$Q6 zXxaJ>(;|=1P#!9_A~0t zS?`wDL%a9ac5^O=v!v_<>~$6oaGhhoo4!WH^;_4$abG=u@;sfLGC;dsT)HoAW6VkW z9mee)0WI?v@!z}bWC?AAi31;SM9JVMHvH#IS_g&P-p85A*=C1ir0Fnh_>>*0*=`61 zZCKrI!J#pj10TV;e(m&sJC{VFeZ`bB0|nyAnbeepclXH_iAh@^1p5t714kJDL?1LijY;QsVuF6BG*HdWf4Ti+| z(P15cht(I)YMb`EvrM~w{-T~fd`P>0TFWn9)cV>=ZLY1?Cj888!yLWeUR}?g%x}&oU^4)dGRm7f^+S0*jMOJ;VEk2Q(wTcjqZ2wAaa$JTmNY?n)_t2L-?rBAkjvr8 zi5i}os3Gn_+&(Syh#kpu(={?Z6MkMb=I`ZERx@_fZotHLx()EhG;*UJT z(8U!V8O-BuJi@Tt5(4nqM#ZBz6J8Z^zv=d1YzG5|$H!`9q8;GwAVBh^o|_^=aQH;x zQ|{BF^BNnTs9QH~);LPj=)iD|fM55Uby>JGmh9kng^?X~y~A!dLz>{r?XheCZa?FI zT8wDnh`esw=wwfQ(r`t?VUy8-#rA@Sxych8sEW$9Qe&s zxld-nS;Kb+Pk044T|D`XaG@>eMml=4*S3VZaAn+18&vkdChOc_lBRWHd+oL>>%Ae% zk6hM`&hEFayMz1WtsnR}CI2^rBXx!HUZH$f9klR9hsmLF@MkscH_C6|db1C&hsWuR z;SR5}b3612?4g5hIpp<;4uzABcgn%lHMTSa3?C!d4=I16@rJ%O!0l`{Wrs8BchD0a zesjNm_v>HRqc6UIzZ_H#a?S03hN+XY{ZnXQv_5?Qy}E#9?QZR%!y@<8d6a>qxZwyA3R)+|Z)=NtWjG+N~6zd5sxS*Mk9K-Gn?zLmlAoSiNhT ze2*yOX&vtG)`uT|lmWFJ`O1I+x#2_;YC2ZQq=QpL*BGf!{a);300(_X&EP0|2M$z^fZ|Mw#VB(vUHH>5dz^Loz5ke0P&_Q`)AJy3ppNP6=A0eIlkUw>X} z-#)5A8nYeFy;GC5^yvpRI6v2AxuKWKJ6DI2%^zo@1?t3+W1m@K!y1@~9rj6Ogg{ z$mI+^lU!#19y`H{^sN&dZj<`fotyRhzxPx4#9X$9>VcoS!c0Rv9lu0&a)krwZ2}0i zf}i|5ki$^Boifr#Xvw-&21oDGnDyQ8wh;{Fj*cgmjIW*I>ac|yi*@&{yU_Os_5M3= z*R7kka)_yuJ+eh9D>wI_tY0Y$__trDbKTwfbAN;ZU;}kiDUU3b>7ml9vc4?uPu~W zQ6F5!6SwkP`IS>zx($DJNUC3lSAu)D`m}Szj$i2@X8>?z z5Z$&w(V~NpZo@z;gRm+G;;ToV4Su~lUf*4MQwU=i*8<6Vv-uc+-vH2S&!Mkz%*6~Q5#4&urbp!h3HieeQ-@dHp1OxBVjcv?& zlV90htuNEnUX`!Jp23cBkWf9`0f0=Fu z9zK6uC+E_DeFKdb*@@@fxCACe3wpY2!C(WGtPH;wD7)5-wBuW zTA31u`}^&s(GW2bzr}6ocE2@$-TL_=YP{0v&Yf4|c0M$kO3b_`0(OJ;m=iZ`+rnU4 zy1OfKP09W%Avif~{Y&mZ@bCZT=k@Dvzd*jWz5?T_f6PqH)zaKGXrnK3A#G1+eDLoQ zN6E)BbCX~DPWHOVLs_-HxrUrP2%qr0kGJl=S8v^WFP)eN2m92ubZK7+v_KeF01XVe zmAE&uM7}{<(mAKB!;()!)>s*K7DUI`W(FOZP35az^^k>-X>|UCPIaL-qp}y!gb1u`)MPiry&0w8;9bjCXo2hqh-AZ3lQ^0@=`!HL% zrVO3@DOBX2Nf6AZ-=ZrdiMH{bIvQCeT$2PSX*|Jahg`$T;0Mm=*SM}s6$~Xq|ZItV`@7$@oH*a8k+o6m?eoDi% zQ=W=aNLz46Ln7E6B?P!uqx?|-k>!ZPfTQ|kYy)-=Mi00=!O+-6iQL7IRB=B!?(BOE zAQ^$7fe(;pA7$8CU9)$&#zqJ0&>8G6QN&SDMrNk#Ld3UX@~?V7i4)$m3ff0;p{j4OUQk~gpN5i_Xlaz|-rA+je$NY-$n#{cGMrl5ZtL9gze_`7KC%e)fgxR&Z4OP? z3FF~_r&(E$6$N`cwYK`Y)>l`;44oac#&ZM3(7^_0@#kP@x6)W$ug#4O!mg9=M!kOZ zIs+B%#eIHyl!kG3dWdm+z*EEcn1)8QlgL&{DX;Fkv1qY0 ze&~+&tB_K}1U7;uE@@}Rvu&KV?r1EHI|t8tR>W0jmO~#j@+gXM9?JJ7XCCyv!T6%C z(!ozTrE&Q~-(YWDyL~;geqKI*mYKjB!x82vk%5EEWu$pRYYJ$YbM_g8-Ys(z+6r|` zBrbV|?SM9Dnc?!+g>^Y2igpO70V%bp8J$K0N@C@+a`#$ zv!A@WJDZOk0kT#n~F39j~jzIo;a^-_+Z&dpf&x?F`xho~eoIq5V5h z1Q6g{#Yxxz#=7MeUGgX$3exVjK3N@*N;j15hRz6EzvE6=zER_y4od3Va+*BvrY(-M zDguGz_7DfO_iYX47cXn`@zdJkxl8*#-rTG+c!gp6Xj^U*G`+M~(+dkVHa%OT3-dX6 z$J;~xrre)?Zmy<>XphjITXu~157xZ&~WeTa%%Q(HaHkqws#WwHrriaT~2M z_|4eDTn>L6;eD7kn*jjigEL}f46g?`|# zf|AZ<5!}IT>KEFPZ%0A0LZmzBE!!v9#uf4!ZW_(dK@_kMXQRixzrm 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 z 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%0A*h%`S>Gu5P^IT5| zWYH+PV@tQ_iRqw8UVS7^c?fr4YLx@2bcbujbm_E{ro%uc!9><#EK^x3u^i)GZ@q5M zo*^U8z3OACEiEmDr+V2c?`f=;d3#=ob!RNA0%8}6olk$!xzCb*ir>ZP@N!Ti9=8Wq z=t5c4zl64zqc`pO_UrZ+pZrbxmp}dU_W7%)`7X~ba>9jo#|Cu;*I%Tob653~X~y`E z9(~vzuD?Tv10ZQ8kOMh{lzMb?xVsI3Ngn3AJa^%^rzU67B^TP#!g8Bu{P%RVADPcM zF-rNAn2+Z|PkGi4nkqdfrF(Fa_S&X}jhOG8T-MwCP=NW{hwVGx{XTRqU21r8nhj4+ zw0p48H&K-_%0&t2VsNewrf;RW1HT;MS?Xq4x^1gaooI1O8_=GH=k@{GG#f9_OquV( zt|$8!7MO#gKl?q?x@xG}=nDB$*Zfc)3+G9nH!^<8vA7NoJ+Zs!80^v?i8fq1Di29E zw>+R64}Jg_9{sDo`f>aDFMdgMQBUbEZ1eYRn8P22lVB1 zO;8~${0~G(0uJb!r+#zN!$#;%(8Y~$HxsDb9eu=Cld>v%8SqV9@5kIZJ4fUQiTZ

      -exJ&O$^@%t}9xB1K^@J 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 yiZ&jd?v^c;7;lk|4E<;=BmPJBn=Z=GO1g^V6 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md new file mode 100644 index 0000000..d6d7067 --- /dev/null +++ b/README.md @@ -0,0 +1,61 @@ +# Lumi Bot + +Discord bot + WebUI with role-based access, plugin management, and self-update support. + +## Quick start + +Requires Node.js 18+. + +1. Install dependencies: + ``` + npm install + ``` +2. Run with auto-restart: + ``` + npm run run + ``` +3. Open `http://localhost:3000/setup` and enter your Discord app + bot settings. + +You can also seed local configuration with a `.env` file. Use `.env.example` +as the template; `.env` is ignored by git. + +## Discord app setup + +- OAuth2 redirect URI: `http://localhost:3000/auth/discord/callback` +- OAuth2 scopes: `identify`, `guilds`, `guilds.members.read` +- Add the bot to your server and copy the Guild ID. + +## WebUI roles + +The WebUI maps Discord roles to access levels: +- `DISCORD_ADMIN_ROLE_ID` +- `DISCORD_MOD_ROLE_ID` + +You can set these in `.env` or change role IDs in **Admin → Settings**. + +## Plugins + +Use **Admin → Plugins** to install, enable, update, or uninstall plugins. +You can also create a local plugin from the WebUI. + +## Twitch bot + +Configure Twitch chat settings in **Admin → Settings**: +- `twitch_bot_username` +- `twitch_bot_oauth` (OAuth token) +- `twitch_channels` (comma-separated) + +Custom commands can target Discord, Twitch, or both from **Admin → Commands**. + +## Users and linking + +Users have an internal UUID and username. Link Twitch accounts in **Profile** and manage usernames in **Profile** or **Admin → Users**. + +## Theming + +Use **Admin → Theming** to adjust light and dark mode colors. The UI uses your OS theme preference. + +## Notes + +- Auto-update uses `git pull` from the configured remote + branch. +- Auto-restart uses `run.js` to respawn the process after updates or crashes. diff --git a/Twitch.png b/Twitch.png new file mode 100644 index 0000000000000000000000000000000000000000..4a5f58fb31bee9e243f5c0b9ea3dbfecb379c661 GIT binary patch literal 87072 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/ (plugin.json + index.js + optional views/) +- Data: data/app.db (SQLite), snapshots, uploads (should be excluded from updates) +- Updates output: updates/ (all update zips go here) + +Platform integration (current) +- Discord, Twitch, YouTube supported; modular via src/services/platforms.js +- Wizards in /setup/*: + - /setup/discord, /setup/twitch, /setup/youtube (cancelable) +- OAuth routes in /auth/*: + - /auth/discord, /auth/twitch, /auth/youtube +- Role mapping: + - Discord roles from settings discord_admin_role_id / discord_mod_role_id (supports comma-separated) + - Twitch: broadcaster/admin/mod via tags/badges + - YouTube: chat owner/moderator flags + +WebUI key routes (core) +- / (home) +- /commands, /leaderboards, /stats, /profile +- /moderator (Mods List) +- /admin + - /admin/settings + - /admin/navigation + - /admin/theming + - /admin/privileges + - /admin/logs + - /admin/updates + - /admin/commands + - /admin/pages + - /admin/users + - /admin/plugins + +WebUI profile hook (core) +- web.addProfileSection({ id, label, view?, content?, role?, order?, locals? }) + - view: EJS include path; content: raw HTML string + - role defaults to "public" if omitted + - In profile template, sections render under "Personalized" + - Profile view receives: user, profile, accounts + section.locals + +Update system (core) +- applyBotUpdate(zipPath, { mode: "full"|"patch" }) + - Full update requires: package.json, safe-mode.js, src/main.js, src/web/server.js + - Patch mode accepts any files and overlays them (no deletes) +- applyPluginUpdate(zipPath) expects plugin.json in root + entry file +- Snapshots: data/snapshots (keeps last 20 successful) +- Safe Mode: safe-mode.js supports rollback + +Update packaging standards +- Always place update zips in updates/ +- Core full update (default): + - Zip from repo root EXCLUDING: .git, node_modules, data, plugins, updates + - Filename: updates/lumi-update-.zip +- Core patch update: + - Zip only changed files/folders + - Use Patch Mode in UI + - Filename: updates/lumi-update--patch.zip (or similar) +- Plugin update: + - Zip contents of plugins// (root = plugin folder) + - Filename: updates/lumi-plugin--vX.Y.Z.zip +- Preferred zip tool on Windows: + - tar -a -c -f -C . + +Command framework (core) +- commandRouter.registerCommands(pluginId, [{ id, triggers, platforms, handler }]) +- Platforms enumerated by services/platforms.js +- Plugins can expose cmds.json for admin command list ingestion +- Core dynamic command: !top (categories pulled from leaderboards/providers via src/services/top.js) + +Database schema (core) +- data/app.db (SQLite) +- user_profiles table includes: + - internal_username (unique, NOCASE) + - username_updated_at (added for 90‑day cooldown) +- user_identities: provider/user mapping +- plugin_settings: plugin key/value store +- plugins: plugin registry + +Profile username cooldown (core) +- User can update once every 90 days +- Stored in user_profiles.username_updated_at +- /profile/username checks cooldown server‑side +- UI: modal with disabled button + hint when on cooldown + +Sidebar UX standards (core) +- User chip is clickable to /profile +- Collapsed sidebar: + - Icons centered, tooltips on items/sections + - Subitem icons remain visible (default or admin-uploaded) + - Consistent padding/width +- Enable/disable inputs should use green/red switch toggles (not plain checkboxes) +- /admin/navigation uses drag-and-drop layout with an Advanced JSON editor + +Plugins (important) +- Plugin system loads from plugins/ directory +- Each plugin: + - plugin.json with id, name, version, main (index.js) + - index.js exports { id, init(...) } +- web.mount("/plugins/", router, navItem) to add nav entry +- Plugins should avoid core edits unless explicitly requested + +Current notable plugins +- echonomy-framework: + - Currency framework only (no items/betting) + - Banking UI: /profile/banking (plugin) + - Response templates with random/weighted replies + - Community funds (renamable) + - Commands under root (default "coins") + - Activity rewards (discord/twitch messages, discord voice) are queued per user per hour and flushed as one hourly transaction note "Activity Reward" with metadata breakdown +- echonomy-games: + - Uses echonomy-framework currency + - Hot Potato / Coinflip / Mystery Box + - Per-platform enable + configurable triggers/aliases + - Admin UI at /plugins/echonomy-games + - Stats stored in echonomy_game_stats (plays, coins won/lost, last played) +- moderation: + - Global moderation actions, notes, sanctions + - Ban/timeout UI at /plugins/moderation + - TOs & Bans view at /plugins/moderation/tos-bans + - Login gating shows moderation status screen + - Evidence uploads stored in data/moderation/evidence (download via /plugins/moderation/evidence/:id) +- quotes: + - Quote storage/search with WebUI at /plugins/quotes + - quotes table fields include quoter_user_id (internal user id) + game_name + - Stats provider adds total quotes, top quoters, and top quoted games + +Database schema (core) +- mod_role_periods table tracks mod/admin time for Mods List +- auto-vc: + - Auto VC creation based on lobby channels + - Game name detection uses Discord presence PLAYING/STREAMING/COMPETING only +- expression-interaction: + - Action commands with stats tracking + +Important settings keys (core) +- discord: discord_client_id, discord_client_secret, discord_bot_token, discord_guild_id, discord_admin_role_id, discord_mod_role_id, discord_redirect_uri +- twitch: twitch_client_id, twitch_client_secret, twitch_bot_username, twitch_bot_oauth, twitch_channels, twitch_redirect_uri +- youtube: youtube_client_id, youtube_client_secret, youtube_bot_refresh_token, youtube_bot_channel_id, youtube_redirect_uri +- site: site_title, bot_avatar_url, command_prefix +- nav: nav_item_icons (map of nav item id -> filename in data/nav-icons), nav_structure (custom sidebar layout) + +Known file locations +- Layout partials: src/web/views/partials/layout-top.ejs, layout-bottom.ejs +- Global CSS: src/web/public/styles.css +- Global JS: src/web/public/app.js + - Asset versioning: res.locals.assetVersion (cache-bust for styles/app) +- Nav icons: src/web/public/icons/nav (defaults), data/nav-icons (admin uploads) + +Packaging sanity checks (before shipping) +- Plugin zips contain plugin.json at root +- Core zip contains package.json and src/main.js +- No data/ or node_modules included +- Update zip placed in updates/ + +TODOs / Open questions +- Align plugin profile sections with new core hook (replace direct injection if used) +- Standardize plugin response templates UI to avoid duplication +- Consider centralized search API for profile user lookup +- Add docs for web.addProfileSection usage (when stable) diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..8a368ed --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1860 @@ +{ + "name": "lumi-bot", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "lumi-bot", + "version": "0.1.0", + "dependencies": { + "adm-zip": "^0.5.12", + "better-sqlite3": "^11.5.0", + "better-sqlite3-session-store": "^0.1.0", + "discord.js": "^13.17.1", + "ejs": "^3.1.10", + "express": "^4.19.2", + "express-session": "^1.18.1", + "multer": "^1.4.5-lts.1", + "tmi.js": "^1.8.5" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@discordjs/builders": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.16.0.tgz", + "integrity": "sha512-9/NCiZrLivgRub2/kBc0Vm5pMBE5AUdYbdXsLu/yg9ANgvnaJ0bZKTY8yYnLbsEc/LYUP79lEIdC73qEYhWq7A==", + "deprecated": "no longer supported", + "license": "Apache-2.0", + "dependencies": { + "@sapphire/shapeshift": "^3.5.1", + "discord-api-types": "^0.36.2", + "fast-deep-equal": "^3.1.3", + "ts-mixer": "^6.0.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/@discordjs/builders/node_modules/discord-api-types": { + "version": "0.36.3", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.36.3.tgz", + "integrity": "sha512-bz/NDyG0KBo/tY14vSkrwQ/n3HKPf87a0WFW/1M9+tXYK+vp5Z5EksawfCWo2zkAc6o7CClc0eff1Pjrqznlwg==", + "license": "MIT" + }, + "node_modules/@discordjs/collection": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.7.0.tgz", + "integrity": "sha512-R5i8Wb8kIcBAFEPLLf7LVBQKBDYUL+ekb23sOgpkpyGT+V4P7V83wTxcsqmX+PbqHt4cEHn053uMWfRqh/Z/nA==", + "deprecated": "no longer supported", + "license": "Apache-2.0", + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/@sapphire/async-queue": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.5.tgz", + "integrity": "sha512-cvGzxbba6sav2zZkH8GPf2oGk9yYoD5qrNWdu9fRehifgnFZJMV+nuy2nON2roRO4yQQ+v7MK/Pktl/HgfsUXg==", + "license": "MIT", + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@sapphire/shapeshift": { + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.9.7.tgz", + "integrity": "sha512-4It2mxPSr4OGn4HSQWGmhFMsNFGfFVhWeRPCRwbH972Ek2pzfGRZtb0pJ4Ze6oIzcyh2jw7nUDa6qGlWofgd9g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=v16" + } + }, + "node_modules/@types/node": { + "version": "25.0.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", + "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/node-fetch": { + "version": "2.6.13", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.13.tgz", + "integrity": "sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "form-data": "^4.0.4" + } + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/adm-zip": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz", + "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==", + "license": "MIT", + "engines": { + "node": ">=12.0" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", + "license": "MIT" + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/better-sqlite3": { + "version": "11.10.0", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.10.0.tgz", + "integrity": "sha512-EwhOpyXiOEL/lKzHz9AW1msWFNzGc/z+LzeB3/jnFJpxu+th2yqvzsSWas1v9jgs9+xiXJcD5A8CJxAG2TaghQ==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "bindings": "^1.5.0", + "prebuild-install": "^7.1.1" + } + }, + "node_modules/better-sqlite3-session-store": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/better-sqlite3-session-store/-/better-sqlite3-session-store-0.1.0.tgz", + "integrity": "sha512-O4EO5jOGTEa/c1DbZpP3C7VTDLSWe5lrOu1S/j86ipdGZxrSb8bSUVuRgWCgl/SCgEGmyeEqvlMY9HtyOSMOWA==", + "license": "GPL-3.0-only", + "dependencies": { + "date-fns": "2.16.1" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "license": "MIT", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/body-parser": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "license": "ISC" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/date-fns": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.16.1.tgz", + "integrity": "sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ==", + "license": "MIT", + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/discord-api-types": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.5.tgz", + "integrity": "sha512-dvO5M52v7m7Dy96+XUnzXNsQ/0npsYpU6dL205kAtEDueswoz3aU3bh1UMoK4cQmcGtB1YRyLKqp+DXi05lzFg==", + "license": "MIT" + }, + "node_modules/discord.js": { + "version": "13.17.1", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.17.1.tgz", + "integrity": "sha512-h13kUf+7ZaP5ZWggzooCxFutvJJvugcAO54oTEIdVr3zQWi0Sf/61S1kETtuY9nVAyYebXR/Ey4C+oWbsgEkew==", + "deprecated": "Version 13 is no longer supported.", + "license": "Apache-2.0", + "dependencies": { + "@discordjs/builders": "^0.16.0", + "@discordjs/collection": "^0.7.0", + "@sapphire/async-queue": "^1.5.0", + "@types/node-fetch": "^2.6.3", + "@types/ws": "^8.5.4", + "discord-api-types": "^0.33.5", + "form-data": "^4.0.0", + "node-fetch": "^2.6.7", + "ws": "^8.13.0" + }, + "engines": { + "node": ">=16.6.0", + "npm": ">=7.0.0" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "license": "(MIT OR WTFPL)", + "engines": { + "node": ">=6" + } + }, + "node_modules/express": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.12", + "proxy-addr": "~2.0.7", + "qs": "~6.14.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express-session": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.18.2.tgz", + "integrity": "sha512-SZjssGQC7TzTs9rpPDuUrR23GNZ9+2+IkA/+IJWmvQilTr5OSliEHGF+D9scbIpdC6yGtTI0/VhaHoVes2AN/A==", + "license": "MIT", + "dependencies": { + "cookie": "0.7.2", + "cookie-signature": "1.0.7", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-headers": "~1.1.0", + "parseurl": "~1.3.3", + "safe-buffer": "5.2.1", + "uid-safe": "~2.1.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "license": "MIT" + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "license": "MIT" + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/jake": { + "version": "10.9.4", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", + "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.6", + "filelist": "^1.0.4", + "picocolors": "^1.1.1" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/multer": { + "version": "1.4.5-lts.2", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.2.tgz", + "integrity": "sha512-VzGiVigcG9zUAoCNU+xShztrlr1auZOlurXynNvO9GiWD1/mTBbUljOKY+qMeazBqXgRnjzeEgJI/wyjJUHg9A==", + "deprecated": "Multer 1.x is impacted by a number of vulnerabilities, which have been patched in 2.x. You should upgrade to the latest 2.x version.", + "license": "MIT", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/napi-build-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-abi": { + "version": "3.87.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.87.0.tgz", + "integrity": "sha512-+CGM1L1CgmtheLcBuleyYOn7NWPVu0s0EJH2C4puxgEZb9h8QpR9G2dBfZJOAUhi7VQxuBPMd0hiISWcTyiYyQ==", + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/prebuild-install": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^2.0.0", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pump": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/qs": { + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tar-fs": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", + "license": "MIT", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tmi.js": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/tmi.js/-/tmi.js-1.8.5.tgz", + "integrity": "sha512-A9qrydfe1e0VWM9MViVhhxVgvLpnk7pFShVUWePsSTtoi+A1X+Zjdoa7OJd7/YsgHXGj3GkNEvnWop/1WwZuew==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.6.1", + "ws": "^8.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/ts-mixer": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.4.tgz", + "integrity": "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==", + "license": "MIT" + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "license": "MIT" + }, + "node_modules/uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "license": "MIT", + "dependencies": { + "random-bytes": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "license": "MIT" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..7b93c08 --- /dev/null +++ b/package.json @@ -0,0 +1,24 @@ +{ + "name": "lumi-bot", + "version": "0.1.0", + "private": true, + "type": "commonjs", + "scripts": { + "start": "node src/main.js", + "run": "node run.js" + }, + "engines": { + "node": ">=18" + }, + "dependencies": { + "adm-zip": "^0.5.12", + "better-sqlite3": "^11.5.0", + "better-sqlite3-session-store": "^0.1.0", + "discord.js": "^13.17.1", + "ejs": "^3.1.10", + "express": "^4.19.2", + "express-session": "^1.18.1", + "multer": "^1.4.5-lts.1", + "tmi.js": "^1.8.5" + } +} diff --git a/plugins/auto-vc/cmds.json b/plugins/auto-vc/cmds.json new file mode 100644 index 0000000..d787eb4 --- /dev/null +++ b/plugins/auto-vc/cmds.json @@ -0,0 +1,113 @@ +{ + "pluginId": "auto-vc", + "pluginName": "Auto VC", + "commands": [ + { + "id": "vc", + "trigger": "vc", + "usage": "vc", + "name": "Auto VC", + "description": "Manage Auto VC rooms. Expand to see available subcommands.", + "level": "conditional", + "levelHelp": "You must be in the Auto VC; some actions require the owner to be absent.", + "platforms": ["discord"] + }, + { + "id": "vc-claim", + "trigger": "vc", + "subcommand": "claim", + "usage": "vc claim", + "name": "Claim room", + "description": "Claim ownership if the current owner is gone.", + "level": "conditional", + "levelHelp": "You must be in the Auto VC; some actions require the owner to be absent.", + "platforms": ["discord"] + }, + { + "id": "vc-rename", + "trigger": "vc", + "subcommand": "rename", + "usage": "vc rename ", + "name": "Rename room", + "description": "Rename your Auto VC room.", + "level": "conditional", + "levelHelp": "You must be in the Auto VC; some actions require the owner to be absent.", + "platforms": ["discord"] + }, + { + "id": "vc-lock", + "trigger": "vc", + "subcommand": "lock", + "usage": "vc lock", + "name": "Lock room", + "description": "Toggle room lock to restrict entry.", + "level": "conditional", + "levelHelp": "You must be in the Auto VC; some actions require the owner to be absent.", + "platforms": ["discord"] + }, + { + "id": "vc-unlock", + "trigger": "vc", + "subcommand": "unlock", + "usage": "vc unlock", + "name": "Unlock room", + "description": "Unlock the room so anyone can join again.", + "level": "conditional", + "levelHelp": "You must be in the Auto VC; some actions require the owner to be absent.", + "platforms": ["discord"] + }, + { + "id": "vc-allow", + "trigger": "vc", + "subcommand": "allow", + "usage": "vc allow ", + "name": "Allow user", + "description": "Allow a user to join your locked room.", + "level": "conditional", + "levelHelp": "You must be in the Auto VC; some actions require the owner to be absent.", + "platforms": ["discord"] + }, + { + "id": "vc-disallow", + "trigger": "vc", + "subcommand": "disallow", + "usage": "vc disallow ", + "name": "Disallow user", + "description": "Remove a user from the allowed list or clear all.", + "level": "conditional", + "levelHelp": "You must be in the Auto VC; some actions require the owner to be absent.", + "platforms": ["discord"] + }, + { + "id": "vc-transfer", + "trigger": "vc", + "subcommand": "transfer", + "usage": "vc transfer ", + "name": "Transfer room", + "description": "Transfer room ownership to another user in the room.", + "level": "conditional", + "levelHelp": "You must be in the Auto VC; some actions require the owner to be absent.", + "platforms": ["discord"] + }, + { + "id": "vc-ban", + "trigger": "vc", + "subcommand": "ban", + "usage": "vc ban ", + "name": "Ban from Auto VC", + "description": "Prevent a user from creating Auto VC rooms.", + "level": "mod", + "platforms": ["discord"] + }, + { + "id": "vc-unban", + "trigger": "vc", + "subcommand": "unban", + "usage": "vc unban ", + "name": "Unban from Auto VC", + "description": "Allow a user to create Auto VC rooms again.", + "level": "mod", + "platforms": ["discord"] + } + ] +} diff --git a/plugins/auto-vc/index.js b/plugins/auto-vc/index.js new file mode 100644 index 0000000..4c67e29 --- /dev/null +++ b/plugins/auto-vc/index.js @@ -0,0 +1,1456 @@ +const path = require("path"); +const fs = require("fs"); +const ejs = require("ejs"); +const { Permissions } = require("discord.js"); +const { ensureUserForIdentity } = require("../../src/services/users"); + +const PLUGIN_ID = "auto-vc"; +const DEFAULT_TEMPLATE = "[username]'s room"; +const DEFAULT_TIMEOUT = 30; +const GAME_NAME_TOKEN = "[game_name]"; +const NAME_REFRESH_INTERVAL_MS = 5 * 60 * 1000; +const ALLOW_CONNECT_VIEW = + Permissions.FLAGS.CONNECT | Permissions.FLAGS.VIEW_CHANNEL; +const DEFAULT_CREATE_LIMIT = { max: 3, windowSeconds: 600 }; +const DEFAULT_ACTION_LIMIT = { max: 8, windowSeconds: 60 }; + +module.exports = { + id: PLUGIN_ID, + init({ web, discordClient, db, settings }) { + ensureTables(db); + const state = { + rooms: new Map(), + cleanupTimers: new Map(), + emptySince: new Map(), + sweepTimer: null, + nameSweepTimer: null, + rateLimits: { + create: new Map(), + action: new Map() + } + }; + + const router = web.createRouter(); + router.get("/", async (req, res) => { + const config = getConfig(db); + const user = req.session.user || null; + const stats = getStats(db); + const bans = getBans(db); + const channelOptions = getChannelOptions(discordClient); + const lobbies = await enrichLobbiesWithPermissions(discordClient, config.lobbies); + const locals = { + ...res.locals, + title: "Auto VC", + lobbies, + stats, + bans, + limits: config.limits, + voiceChannels: channelOptions.voiceChannels, + categoryChannels: channelOptions.categoryChannels, + isAdmin: Boolean(user?.isAdmin), + canModerate: Boolean(user?.isAdmin || user?.isMod) + }; + const html = await renderPage(locals); + res.send(html); + }); + + router.post("/settings", (req, res) => { + if (!req.session.user || !req.session.user.isAdmin) { + return res.status(403).render("error", { + title: "Access denied", + message: "You do not have access to that page." + }); + } + const config = parseConfigFromForm(req.body); + saveConfig(db, config); + state.rooms.clear(); + req.session.flash = { + type: "success", + message: "Auto VC settings saved." + }; + res.redirect("/plugins/auto-vc"); + }); + + router.post("/bans", (req, res) => { + if (!req.session.user || !(req.session.user.isAdmin || req.session.user.isMod)) { + return res.status(403).render("error", { + title: "Access denied", + message: "You do not have access to that page." + }); + } + const input = (req.body.ban_input || "").trim(); + const reason = (req.body.ban_reason || "").trim(); + const id = parseDiscordId(input); + if (!id) { + req.session.flash = { + type: "error", + message: "Enter a valid user ID or mention." + }; + return res.redirect("/plugins/auto-vc"); + } + banUser(db, id, reason); + req.session.flash = { + type: "success", + message: "User banned from Auto VC creation." + }; + res.redirect("/plugins/auto-vc"); + }); + + router.post("/unban", (req, res) => { + if (!req.session.user || !(req.session.user.isAdmin || req.session.user.isMod)) { + return res.status(403).render("error", { + title: "Access denied", + message: "You do not have access to that page." + }); + } + const ids = toArray(req.body.unban_ids).filter(Boolean); + ids.forEach((id) => unbanUser(db, id)); + req.session.flash = { + type: "success", + message: ids.length ? "User(s) unbanned." : "No users selected." + }; + res.redirect("/plugins/auto-vc"); + }); + + web.mount("/plugins/auto-vc", router, { + label: "Auto VC", + role: "public", + section: "plugins" + }); + + if (!discordClient) { + return; + } + + const attach = () => { + bootstrapRooms(discordClient, db, state, settings).catch((error) => { + console.error("Auto VC bootstrap failed", error); + }); + discordClient.on("voiceStateUpdate", (oldState, newState) => { + handleVoiceStateUpdate(oldState, newState, db, settings, state); + }); + discordClient.on("messageCreate", (message) => { + handleMessage(message, db, settings, state); + }); + discordClient.on("channelDelete", (channel) => { + if (channel && channel.id) { + removeRoom(db, state, channel.id); + } + }); + startSweepTimer(discordClient, db, settings, state); + startNameRefreshTimer(discordClient, db, settings, state); + }; + + if (discordClient.readyAt) { + attach(); + } else { + discordClient.once("ready", attach); + } + } +}; + +async function renderPage(locals) { + const viewsRoot = path.join(__dirname, "..", "..", "src", "web", "views"); + const layoutTop = path.join(viewsRoot, "partials", "layout-top.ejs"); + const layoutBottom = path.join(viewsRoot, "partials", "layout-bottom.ejs"); + const pagePath = path.join(__dirname, "views", "auto-vc.ejs"); + const bodyTemplate = fs.readFileSync(pagePath, "utf8"); + const body = ejs.render(bodyTemplate, locals, { filename: pagePath }); + const top = await ejs.renderFile(layoutTop, locals); + const bottom = await ejs.renderFile(layoutBottom, locals); + return `${top}${body}${bottom}`; +} + +function getChannelOptions(discordClient) { + const voiceChannels = []; + const categoryChannels = []; + if (!discordClient || !discordClient.guilds?.cache) { + return { voiceChannels, categoryChannels }; + } + for (const guild of discordClient.guilds.cache.values()) { + const channels = guild.channels?.cache; + if (!channels) { + continue; + } + channels.forEach((channel) => { + if (channel.type === "GUILD_VOICE") { + voiceChannels.push({ + id: channel.id, + label: `${guild.name} • ${channel.name}` + }); + } + if (channel.type === "GUILD_CATEGORY") { + categoryChannels.push({ + id: channel.id, + label: `${guild.name} • ${channel.name}` + }); + } + }); + } + voiceChannels.sort((a, b) => a.label.localeCompare(b.label)); + categoryChannels.sort((a, b) => a.label.localeCompare(b.label)); + return { voiceChannels, categoryChannels }; +} + +async function enrichLobbiesWithPermissions(discordClient, lobbies) { + if (!Array.isArray(lobbies)) { + return []; + } + const enriched = []; + for (const lobby of lobbies) { + const permissions = await buildLobbyPermissionChecks(discordClient, lobby); + enriched.push({ ...lobby, permissions }); + } + return enriched; +} + +async function buildLobbyPermissionChecks(discordClient, lobby) { + const baseChecks = [ + "Bot in guild", + "Lobby channel exists", + "View lobby channel", + "Connect to lobby", + "Move members", + "Target category visible", + "Manage rooms" + ]; + + if (!discordClient || !discordClient.user) { + return baseChecks.map((label) => + buildPermissionCheck( + label, + false, + "Start the Discord bot so it can evaluate permissions." + ) + ); + } + + const lobbyChannel = await resolveChannel(discordClient, lobby?.lobbyChannelId); + const categoryChannel = + (await resolveChannel(discordClient, lobby?.categoryId)) || + (lobbyChannel?.parentId + ? await resolveChannel(discordClient, lobbyChannel.parentId) + : null); + const guild = lobbyChannel?.guild || categoryChannel?.guild || null; + const botMember = guild ? await resolveBotMember(guild, discordClient) : null; + + if (!guild || !botMember) { + return baseChecks.map((label) => + buildPermissionCheck( + label, + false, + "Ensure the bot is in this server and has access to the lobby." + ) + ); + } + + const lobbyPerms = lobbyChannel ? lobbyChannel.permissionsFor(botMember) : null; + const categoryPerms = categoryChannel + ? categoryChannel.permissionsFor(botMember) + : null; + const guildPerms = botMember.permissions || null; + const lobbyIsVoice = lobbyChannel?.type === "GUILD_VOICE"; + + const canViewLobby = Boolean(lobbyPerms?.has(Permissions.FLAGS.VIEW_CHANNEL)); + const canConnectLobby = Boolean(lobbyPerms?.has(Permissions.FLAGS.CONNECT)); + const canMoveMembers = Boolean( + lobbyPerms?.has(Permissions.FLAGS.MOVE_MEMBERS) || + guildPerms?.has(Permissions.FLAGS.MOVE_MEMBERS) + ); + const canViewCategory = Boolean( + categoryChannel && categoryPerms?.has(Permissions.FLAGS.VIEW_CHANNEL) + ); + const canManageChannels = Boolean( + categoryPerms?.has(Permissions.FLAGS.MANAGE_CHANNELS) || + lobbyPerms?.has(Permissions.FLAGS.MANAGE_CHANNELS) || + guildPerms?.has(Permissions.FLAGS.MANAGE_CHANNELS) + ); + + return [ + buildPermissionCheck("Bot in guild", true, ""), + buildPermissionCheck( + "Lobby channel exists", + Boolean(lobbyChannel) && lobbyIsVoice, + lobbyChannel + ? "The lobby must be a voice channel." + : "Set a valid lobby voice channel ID and save." + ), + buildPermissionCheck( + "View lobby channel", + Boolean(lobbyChannel) && lobbyIsVoice && canViewLobby, + "Allow View Channel for the bot on the lobby channel or its category." + ), + buildPermissionCheck( + "Connect to lobby", + Boolean(lobbyChannel) && lobbyIsVoice && canConnectLobby, + "Allow Connect for the bot on the lobby channel or its category." + ), + buildPermissionCheck( + "Move members", + canMoveMembers, + "Allow Move Members for the bot role on the server or lobby channel." + ), + buildPermissionCheck( + "Target category visible", + Boolean(categoryChannel) && canViewCategory, + categoryChannel + ? "Allow View Channel for the bot on the target category." + : "Set a valid target category ID or place the lobby inside a category." + ), + buildPermissionCheck( + "Manage rooms", + canManageChannels && (categoryChannel ? canViewCategory : true), + "Allow Manage Channels (and View Channel) on the target category so the bot can create, rename, and delete rooms." + ) + ]; +} + +function buildPermissionCheck(label, granted, help) { + return { + label, + granted: Boolean(granted), + help: granted ? "" : help + }; +} + +async function resolveChannel(discordClient, channelId) { + if (!discordClient || !channelId) { + return null; + } + const cached = discordClient.channels?.cache?.get(channelId) || null; + if (cached) { + return cached; + } + if (typeof discordClient.channels?.fetch === "function") { + return discordClient.channels.fetch(channelId).catch(() => null); + } + return null; +} + +async function resolveBotMember(guild, discordClient) { + if (!guild || !discordClient?.user?.id) { + return null; + } + const cached = guild.members?.cache?.get(discordClient.user.id) || null; + if (cached) { + return cached; + } + if (typeof guild.members?.fetch === "function") { + return guild.members.fetch(discordClient.user.id).catch(() => null); + } + return null; +} + +function ensureTables(db) { + db.exec(` + CREATE TABLE IF NOT EXISTS auto_vc_rooms ( + channel_id TEXT PRIMARY KEY, + guild_id TEXT NOT NULL, + lobby_id TEXT NOT NULL, + category_id TEXT NOT NULL, + owner_discord_id TEXT NOT NULL, + owner_user_id TEXT NOT NULL, + room_number INTEGER NOT NULL, + name_template TEXT NOT NULL, + locked INTEGER NOT NULL DEFAULT 0, + allowed_user_ids TEXT NOT NULL DEFAULT '[]', + base_overwrites TEXT NOT NULL, + created_at INTEGER NOT NULL + ); + + CREATE TABLE IF NOT EXISTS auto_vc_stats ( + user_id TEXT PRIMARY KEY, + created_count INTEGER NOT NULL DEFAULT 0, + updated_at INTEGER NOT NULL + ); + + CREATE TABLE IF NOT EXISTS auto_vc_bans ( + discord_user_id TEXT PRIMARY KEY, + reason TEXT, + created_at INTEGER NOT NULL + ); + `); +} + +function getConfig(db) { + const row = db + .prepare("SELECT value FROM plugin_settings WHERE plugin_id = ? AND key = ?") + .get(PLUGIN_ID, "config"); + if (!row) { + return normalizeConfig({}); + } + try { + const parsed = JSON.parse(row.value); + return normalizeConfig(parsed); + } catch { + return normalizeConfig({}); + } +} + +function normalizeConfig(config) { + const lobbies = Array.isArray(config?.lobbies) ? config.lobbies : []; + return { + lobbies: lobbies.map((lobby) => normalizeLobby(lobby)), + limits: normalizeRateLimits(config?.limits) + }; +} + +function normalizeLobby(lobby) { + const timeout = Number(lobby?.emptyTimeoutSeconds || DEFAULT_TIMEOUT); + return { + id: lobby?.id || cryptoRandomId(), + lobbyChannelId: (lobby?.lobbyChannelId || "").toString().trim(), + categoryId: (lobby?.categoryId || "").toString().trim(), + nameTemplate: (lobby?.nameTemplate || DEFAULT_TEMPLATE).toString(), + emptyTimeoutSeconds: Number.isNaN(timeout) ? DEFAULT_TIMEOUT : Math.max(5, timeout) + }; +} + +function normalizeRateLimits(limits) { + return { + create: normalizeLimit(limits?.create, DEFAULT_CREATE_LIMIT), + action: normalizeLimit(limits?.action, DEFAULT_ACTION_LIMIT) + }; +} + +function normalizeLimit(limit, defaults) { + const max = clampNumber(limit?.max, defaults.max, 1, 100); + const windowSeconds = clampNumber( + limit?.windowSeconds, + defaults.windowSeconds, + 10, + 3600 + ); + return { max, windowSeconds }; +} + +function clampNumber(value, fallback, min, max) { + const parsed = Number(value); + if (Number.isNaN(parsed)) { + return fallback; + } + return Math.min(Math.max(parsed, min), max); +} + +function saveConfig(db, config) { + const now = Date.now(); + db.prepare( + "INSERT INTO plugin_settings (plugin_id, key, value, updated_at) VALUES (?, ?, ?, ?) " + + "ON CONFLICT(plugin_id, key) DO UPDATE SET value = excluded.value, updated_at = excluded.updated_at" + ).run(PLUGIN_ID, "config", JSON.stringify(config), now); +} + +function parseConfigFromForm(body) { + const ids = toArray(body.lobby_id); + const lobbyChannelIds = toArray(body.lobby_channel_id); + const categoryIds = toArray(body.lobby_category_id); + const templates = toArray(body.lobby_name_template); + const timeouts = toArray(body.lobby_empty_timeout); + const removeIds = new Set(toArray(body.lobby_remove)); + + const lobbies = ids.map((id, index) => { + const timeout = Number(timeouts[index] || DEFAULT_TIMEOUT); + return normalizeLobby({ + id, + lobbyChannelId: lobbyChannelIds[index] || "", + categoryId: categoryIds[index] || "", + nameTemplate: templates[index] || DEFAULT_TEMPLATE, + emptyTimeoutSeconds: Number.isNaN(timeout) ? DEFAULT_TIMEOUT : timeout + }); + }); + + const createLimit = normalizeLimit( + { + max: body.rate_create_count, + windowSeconds: body.rate_create_window + }, + DEFAULT_CREATE_LIMIT + ); + const actionLimit = normalizeLimit( + { + max: body.rate_action_count, + windowSeconds: body.rate_action_window + }, + DEFAULT_ACTION_LIMIT + ); + + return { + lobbies: lobbies.filter((lobby) => !removeIds.has(lobby.id)), + limits: { + create: createLimit, + action: actionLimit + } + }; +} + +function getStats(db) { + const rows = db + .prepare( + "SELECT auto_vc_stats.user_id AS user_id, auto_vc_stats.created_count AS created_count, user_profiles.internal_username AS username " + + "FROM auto_vc_stats " + + "LEFT JOIN user_profiles ON user_profiles.id = auto_vc_stats.user_id " + + "ORDER BY auto_vc_stats.created_count DESC LIMIT 10" + ) + .all(); + return rows.map((row) => ({ + label: row.username || row.user_id, + count: row.created_count + })); +} + +function getBans(db) { + const rows = db + .prepare("SELECT discord_user_id, reason FROM auto_vc_bans ORDER BY created_at DESC") + .all(); + return rows.map((row) => ({ + discord_user_id: row.discord_user_id, + reason: row.reason, + label: row.discord_user_id + })); +} + +function banUser(db, discordUserId, reason) { + db.prepare( + "INSERT INTO auto_vc_bans (discord_user_id, reason, created_at) VALUES (?, ?, ?) " + + "ON CONFLICT(discord_user_id) DO UPDATE SET reason = excluded.reason, created_at = excluded.created_at" + ).run(discordUserId, reason || "", Date.now()); +} + +function unbanUser(db, discordUserId) { + db.prepare("DELETE FROM auto_vc_bans WHERE discord_user_id = ?").run(discordUserId); +} + +function isBanned(db, discordUserId) { + const row = db + .prepare("SELECT discord_user_id FROM auto_vc_bans WHERE discord_user_id = ?") + .get(discordUserId); + return Boolean(row); +} + +async function bootstrapRooms(discordClient, db, state, settings) { + const rooms = db + .prepare("SELECT * FROM auto_vc_rooms") + .all(); + + for (const room of rooms) { + const guild = discordClient.guilds.cache.get(room.guild_id); + if (!guild) { + removeRoom(db, state, room.channel_id); + continue; + } + const channel = await guild.channels.fetch(room.channel_id).catch(() => null); + if (!channel || channel.type !== "GUILD_VOICE") { + removeRoom(db, state, room.channel_id); + continue; + } + if (channel.members.size === 0) { + await deleteChannel(channel); + removeRoom(db, state, room.channel_id); + continue; + } + state.rooms.set(room.channel_id, normalizeRoom(room)); + } +} + +function normalizeRoom(room) { + return { + channel_id: room.channel_id, + guild_id: room.guild_id, + lobby_id: room.lobby_id, + category_id: room.category_id, + owner_discord_id: room.owner_discord_id, + owner_user_id: room.owner_user_id, + room_number: Number(room.room_number || 1), + name_template: room.name_template, + locked: Boolean(room.locked), + allowed_user_ids: parseJsonArray(room.allowed_user_ids), + base_overwrites: room.base_overwrites, + created_at: room.created_at + }; +} + +function handleVoiceStateUpdate(oldState, newState, db, settings, state) { + const config = getConfig(db); + const lobby = config.lobbies.find( + (item) => item.lobbyChannelId && item.lobbyChannelId === newState.channelId + ); + + if (lobby && newState.channelId !== oldState.channelId) { + createRoomFromLobby(newState, lobby, db, settings, state, config).catch((error) => { + console.error("Auto VC creation failed", error); + }); + } + + if (oldState.channelId && oldState.channelId !== newState.channelId) { + const room = state.rooms.get(oldState.channelId) || getRoomById(db, oldState.channelId, state); + if (room) { + const channel = oldState.guild.channels.cache.get(oldState.channelId); + if (channel) { + scheduleCleanup(channel, room, db, state, config); + } + } + } + + if (newState.channelId) { + const room = state.rooms.get(newState.channelId) || getRoomById(db, newState.channelId, state); + if (room) { + clearCleanupTimer(state, newState.channelId); + clearEmpty(state, newState.channelId); + } + } +} + +async function createRoomFromLobby(newState, lobby, db, settings, state, config) { + const member = newState.member; + if (!member || !newState.guild) { + return; + } + if (isBanned(db, member.id)) { + await safeNotify(member, "You are banned from creating Auto VCs."); + return; + } + + const lobbyChannel = newState.guild.channels.cache.get(lobby.lobbyChannelId); + if (!lobbyChannel || lobbyChannel.type !== "GUILD_VOICE") { + return; + } + const createLimit = consumeRateLimit(state, config, "create", member.id); + if (!createLimit.ok) { + await safeNotify( + member, + `You're creating rooms too quickly. Try again in ${formatCooldown( + createLimit.retryAfter + )}.` + ); + return; + } + + const roomNumber = getNextAvailableRoomNumber(db, lobby.id); + const gameName = resolveGameName(member); + const roomName = buildRoomName(lobby.nameTemplate, member, roomNumber, gameName); + const baseOverwrites = extractOverwrites(lobbyChannel); + + const channel = await newState.guild.channels.create(roomName, { + type: "GUILD_VOICE", + parent: lobby.categoryId || lobbyChannel.parentId || null, + permissionOverwrites: baseOverwrites + }); + + const profile = ensureUserForIdentity({ + provider: "discord", + providerUserId: member.id, + displayName: member.displayName + }); + + const room = { + channel_id: channel.id, + guild_id: newState.guild.id, + lobby_id: lobby.id, + category_id: lobby.categoryId || lobbyChannel.parentId || "", + owner_discord_id: member.id, + owner_user_id: profile.id, + room_number: roomNumber, + name_template: lobby.nameTemplate, + locked: false, + allowed_user_ids: [], + base_overwrites: JSON.stringify(baseOverwrites), + created_at: Date.now() + }; + + saveRoom(db, room); + state.rooms.set(channel.id, normalizeRoom(room)); + incrementUserStat(db, profile.id); + + const moved = await moveMemberToChannel(member, channel); + if (!moved) { + await safeNotify( + member, + "I couldn't move you to the new VC. Please make sure the bot has Move Members permission." + ); + } +} + +function buildRoomName(template, member, roomNumber, gameName) { + const safeTemplate = (template || DEFAULT_TEMPLATE).toString(); + const hasGameToken = templateHasGameName(safeTemplate); + const shouldFallback = hasGameToken && !gameName; + const templateToUse = shouldFallback ? DEFAULT_TEMPLATE : safeTemplate; + const username = member.displayName || member.user?.username || "user"; + const replacements = [ + ["[username]", username], + ["[room_number]", String(roomNumber)], + ["[game_name]", gameName || ""] + ]; + let name = templateToUse; + for (const [token, value] of replacements) { + name = replaceToken(name, token, value); + } + name = name.replace(/\s{2,}/g, " ").trim(); + if (!name) { + name = `${username}'s room`; + } + return name.slice(0, 100); +} + +function templateHasGameName(template) { + if (!template) { + return false; + } + return template.toLowerCase().includes(GAME_NAME_TOKEN); +} + +function replaceToken(text, token, value) { + if (!text) { + return text; + } + const escaped = token.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + return text.replace(new RegExp(escaped, "gi"), value); +} + +function resolveGameName(member) { + const activities = member?.presence?.activities || []; + const activity = activities.find((item) => isGameActivity(item)); + return activity?.name || ""; +} + +function isGameActivity(activity) { + if (!activity || !activity.name) { + return false; + } + const type = activity.type; + if (type === "PLAYING" || type === "STREAMING" || type === "COMPETING") { + return true; + } + if (type === 0 || type === 1 || type === 5) { + return true; + } + return false; +} + +function getNextAvailableRoomNumber(db, lobbyId) { + const rows = db + .prepare("SELECT room_number FROM auto_vc_rooms WHERE lobby_id = ?") + .all(lobbyId); + const used = new Set(); + for (const row of rows) { + const value = Number(row.room_number); + if (!Number.isNaN(value) && value > 0) { + used.add(value); + } + } + let candidate = 1; + while (used.has(candidate)) { + candidate += 1; + } + return candidate; +} + +function extractOverwrites(channel) { + return channel.permissionOverwrites.cache.map((overwrite) => ({ + id: overwrite.id, + type: overwrite.type, + allow: serializeBitfield(overwrite.allow.bitfield), + deny: serializeBitfield(overwrite.deny.bitfield) + })); +} + +function saveRoom(db, room) { + db.prepare( + "INSERT INTO auto_vc_rooms (channel_id, guild_id, lobby_id, category_id, owner_discord_id, owner_user_id, room_number, name_template, locked, allowed_user_ids, base_overwrites, created_at) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) " + + "ON CONFLICT(channel_id) DO UPDATE SET owner_discord_id = excluded.owner_discord_id, owner_user_id = excluded.owner_user_id, room_number = excluded.room_number, name_template = excluded.name_template, locked = excluded.locked, allowed_user_ids = excluded.allowed_user_ids, base_overwrites = excluded.base_overwrites" + ).run( + room.channel_id, + room.guild_id, + room.lobby_id, + room.category_id, + room.owner_discord_id, + room.owner_user_id, + room.room_number, + room.name_template, + room.locked ? 1 : 0, + JSON.stringify(room.allowed_user_ids || []), + room.base_overwrites, + room.created_at + ); +} + +function updateRoom(db, room) { + db.prepare( + "UPDATE auto_vc_rooms SET owner_discord_id = ?, owner_user_id = ?, room_number = ?, name_template = ?, locked = ?, allowed_user_ids = ? WHERE channel_id = ?" + ).run( + room.owner_discord_id, + room.owner_user_id, + room.room_number, + room.name_template, + room.locked ? 1 : 0, + JSON.stringify(room.allowed_user_ids || []), + room.channel_id + ); +} + +function getRoomById(db, channelId, state) { + const row = db + .prepare("SELECT * FROM auto_vc_rooms WHERE channel_id = ?") + .get(channelId); + if (!row) { + return null; + } + const room = normalizeRoom(row); + state.rooms.set(channelId, room); + return room; +} + +function removeRoom(db, state, channelId) { + clearCleanupTimer(state, channelId); + clearEmpty(state, channelId); + state.rooms.delete(channelId); + db.prepare("DELETE FROM auto_vc_rooms WHERE channel_id = ?").run(channelId); +} + +function incrementUserStat(db, userId) { + const now = Date.now(); + db.prepare( + "INSERT INTO auto_vc_stats (user_id, created_count, updated_at) VALUES (?, 1, ?) " + + "ON CONFLICT(user_id) DO UPDATE SET created_count = created_count + 1, updated_at = excluded.updated_at" + ).run(userId, now); +} + +function consumeRateLimit(state, config, type, userId) { + const limit = config?.limits?.[type]; + const buckets = state?.rateLimits?.[type]; + if (!limit || !buckets || !userId) { + return { ok: true }; + } + const now = Date.now(); + const windowMs = Math.max(1, Number(limit.windowSeconds || 0)) * 1000; + if (!windowMs || limit.max <= 0) { + return { ok: true }; + } + const current = buckets.get(userId) || { + count: 0, + resetAt: now + windowMs + }; + if (now >= current.resetAt) { + current.count = 0; + current.resetAt = now + windowMs; + } + if (current.count >= limit.max) { + const retryAfter = Math.max(1, Math.ceil((current.resetAt - now) / 1000)); + return { ok: false, retryAfter }; + } + current.count += 1; + buckets.set(userId, current); + return { + ok: true, + remaining: Math.max(0, limit.max - current.count), + resetAt: current.resetAt + }; +} + +function formatCooldown(seconds) { + const safeSeconds = Math.max(1, Math.round(seconds || 0)); + if (safeSeconds < 60) { + return `${safeSeconds}s`; + } + const minutes = Math.ceil(safeSeconds / 60); + return `${minutes}m`; +} + +function enforceActionRateLimit(message, state, config) { + const userId = message?.member?.id; + if (!userId) { + return true; + } + const result = consumeRateLimit(state, config, "action", userId); + if (result.ok) { + return true; + } + const wait = formatCooldown(result.retryAfter); + message.reply(`Slow down a bit. Try again in ${wait}.`).catch(() => null); + return false; +} + +function scheduleCleanup(channel, room, db, state, config) { + if (!channel || channel.members.size > 0) { + clearEmpty(state, channel?.id); + return; + } + const timeout = getLobbyTimeout(config, room.lobby_id); + markEmpty(state, channel.id); + clearCleanupTimer(state, channel.id); + + const timer = setTimeout(async () => { + const refreshed = channel.guild.channels.cache.get(channel.id); + if (!refreshed || refreshed.members.size > 0) { + clearEmpty(state, channel.id); + return; + } + await deleteChannel(refreshed); + removeRoom(db, state, channel.id); + }, timeout * 1000); + + state.cleanupTimers.set(channel.id, timer); +} + +function clearCleanupTimer(state, channelId) { + const timer = state.cleanupTimers.get(channelId); + if (timer) { + clearTimeout(timer); + state.cleanupTimers.delete(channelId); + } +} + +function markEmpty(state, channelId) { + if (!state.emptySince.has(channelId)) { + state.emptySince.set(channelId, Date.now()); + } +} + +function clearEmpty(state, channelId) { + state.emptySince.delete(channelId); +} + +function getLobbyTimeout(config, lobbyId) { + const lobby = config.lobbies.find((item) => item.id === lobbyId); + return lobby ? lobby.emptyTimeoutSeconds : DEFAULT_TIMEOUT; +} + +async function deleteChannel(channel) { + try { + await channel.delete("Auto VC cleanup"); + } catch (error) { + console.error("Failed to delete Auto VC channel", error); + } +} + +function handleMessage(message, db, settings, state) { + if (!message.guild || message.author.bot) { + return; + } + const config = getConfig(db); + const prefix = settings.getSetting("command_prefix", "!"); + const content = message.content.trim(); + if (!content.toLowerCase().startsWith(`${prefix}vc`)) { + return; + } + + const tokens = content.slice(prefix.length).trim().split(/\s+/); + if (tokens[0].toLowerCase() !== "vc") { + return; + } + + const command = (tokens[1] || "").toLowerCase(); + const args = tokens.slice(2); + const member = message.member; + if (!member) { + return; + } + + if (command === "ban" || command === "unban") { + handleBanCommands(message, command, args, db, settings); + return; + } + + const voiceChannel = member.voice?.channel; + if (!voiceChannel) { + message.reply("You must be in an Auto VC to use that command.").catch(() => null); + return; + } + + const room = state.rooms.get(voiceChannel.id) || getRoomById(db, voiceChannel.id, state); + if (!room) { + message.reply("That voice channel is not managed by Auto VC.").catch(() => null); + return; + } + + const isAdminOrMod = checkIsModerator(member, settings); + const isOwner = room.owner_discord_id === member.id; + + if (command === "claim") { + handleClaim(message, room, member, db, settings, state, config); + return; + } + + if (!isOwner && !isAdminOrMod) { + message.reply("Only the room owner or moderators can use that command.").catch(() => null); + return; + } + + switch (command) { + case "rename": + handleRename(message, room, args, db, settings, state, config); + break; + case "lock": + handleLock(message, room, db, settings, state, config); + break; + case "unlock": + handleUnlock(message, room, db, settings, state, config); + break; + case "allow": + handleAllow(message, room, args, db, settings, state, config); + break; + case "disallow": + handleDisallow(message, room, args, db, settings, state, config); + break; + case "transfer": + handleTransfer(message, room, args, db, settings, state, config); + break; + default: + message + .reply( + "Available commands: rename, lock, unlock, allow, disallow, transfer, claim." + ) + .catch(() => null); + } +} + +function handleBanCommands(message, command, args, db, settings) { + const member = message.member; + if (!member || !checkIsModerator(member, settings)) { + message.reply("Only moderators and admins can manage bans.").catch(() => null); + return; + } + const targetToken = args[0] || ""; + const id = parseDiscordId(targetToken); + if (!id) { + message.reply("Provide a valid user ID or mention.").catch(() => null); + return; + } + if (command === "ban") { + banUser(db, id, ""); + message.reply("User banned from Auto VC creation.").catch(() => null); + } else { + unbanUser(db, id); + message.reply("User unbanned from Auto VC creation.").catch(() => null); + } +} + +async function handleRename(message, room, args, db, settings, state, config) { + const template = args.join(" ").trim(); + if (!template) { + message.reply("Usage: !vc rename ").catch(() => null); + return; + } + const channel = message.guild.channels.cache.get(room.channel_id); + if (!channel) { + message.reply("Channel not found.").catch(() => null); + return; + } + if (!enforceActionRateLimit(message, state, config)) { + return; + } + const gameName = resolveGameName(message.member); + const name = buildRoomName(template, message.member, room.room_number, gameName); + await channel.setName(name).catch(() => null); + room.name_template = template; + updateRoom(db, room); + state.rooms.set(room.channel_id, room); + message.reply(`Renamed this room to "${name}".`).catch(() => null); +} + +async function handleLock(message, room, db, settings, state, config) { + const channel = message.guild.channels.cache.get(room.channel_id); + if (!channel) { + message.reply("Channel not found.").catch(() => null); + return; + } + if (!enforceActionRateLimit(message, state, config)) { + return; + } + room.locked = !room.locked; + await applyRoomPermissions(channel, room, db, settings); + updateRoom(db, room); + state.rooms.set(room.channel_id, room); + message + .reply(room.locked ? "Room locked." : "Room unlocked.") + .catch(() => null); +} + +async function handleUnlock(message, room, db, settings, state, config) { + const channel = message.guild.channels.cache.get(room.channel_id); + if (!channel) { + message.reply("Channel not found.").catch(() => null); + return; + } + if (!enforceActionRateLimit(message, state, config)) { + return; + } + if (!room.locked) { + message.reply("Room is already unlocked.").catch(() => null); + return; + } + room.locked = false; + await applyRoomPermissions(channel, room, db, settings); + updateRoom(db, room); + state.rooms.set(room.channel_id, room); + message.reply("Room unlocked.").catch(() => null); +} + +async function handleAllow(message, room, args, db, settings, state, config) { + const token = args[0]; + if (!token) { + message.reply("Usage: !vc allow ").catch(() => null); + return; + } + const target = await resolveMember(message.guild, token); + if (!target) { + message.reply("User not found.").catch(() => null); + return; + } + if (!enforceActionRateLimit(message, state, config)) { + return; + } + if (!room.allowed_user_ids.includes(target.id)) { + room.allowed_user_ids.push(target.id); + } + const channel = message.guild.channels.cache.get(room.channel_id); + if (channel) { + await applyRoomPermissions(channel, room, db, settings); + } + updateRoom(db, room); + state.rooms.set(room.channel_id, room); + message.reply(`Allowed ${target.displayName} to join.`).catch(() => null); +} + +async function handleDisallow(message, room, args, db, settings, state, config) { + const token = (args[0] || "").toLowerCase(); + if (!token) { + message.reply("Usage: !vc disallow ").catch(() => null); + return; + } + if (!enforceActionRateLimit(message, state, config)) { + return; + } + if (token === "all") { + room.allowed_user_ids = []; + } else { + const target = await resolveMember(message.guild, token); + if (!target) { + message.reply("User not found.").catch(() => null); + return; + } + room.allowed_user_ids = room.allowed_user_ids.filter((id) => id !== target.id); + } + const channel = message.guild.channels.cache.get(room.channel_id); + if (channel) { + await applyRoomPermissions(channel, room, db, settings); + } + updateRoom(db, room); + state.rooms.set(room.channel_id, room); + message.reply("Access updated.").catch(() => null); +} + +async function handleTransfer(message, room, args, db, settings, state, config) { + const token = args[0]; + if (!token) { + message.reply("Usage: !vc transfer ").catch(() => null); + return; + } + const target = await resolveMember(message.guild, token); + if (!target || !message.member.voice?.channel?.members?.has(target.id)) { + message.reply("Target must be in the voice channel.").catch(() => null); + return; + } + if (!enforceActionRateLimit(message, state, config)) { + return; + } + room.owner_discord_id = target.id; + const profile = ensureUserForIdentity({ + provider: "discord", + providerUserId: target.id, + displayName: target.displayName + }); + room.owner_user_id = profile.id; + const channel = message.guild.channels.cache.get(room.channel_id); + if (channel) { + await applyRoomPermissions(channel, room, db, settings); + } + updateRoom(db, room); + state.rooms.set(room.channel_id, room); + message.reply(`Ownership transferred to ${target.displayName}.`).catch(() => null); +} + +async function handleClaim(message, room, member, db, settings, state, config) { + const channel = message.guild.channels.cache.get(room.channel_id); + if (!channel) { + message.reply("Channel not found.").catch(() => null); + return; + } + if (channel.members.has(room.owner_discord_id)) { + message.reply("The current owner is still here.").catch(() => null); + return; + } + if (!enforceActionRateLimit(message, state, config)) { + return; + } + room.owner_discord_id = member.id; + const profile = ensureUserForIdentity({ + provider: "discord", + providerUserId: member.id, + displayName: member.displayName + }); + room.owner_user_id = profile.id; + await applyRoomPermissions(channel, room, db, settings); + updateRoom(db, room); + state.rooms.set(room.channel_id, room); + message.reply("You are now the owner of this room.").catch(() => null); +} + +async function applyRoomPermissions(channel, room, db, settings) { + const base = parseJsonArray(room.base_overwrites); + const overrides = new Map(); + for (const overwrite of base) { + overrides.set(overwrite.id, { + ...overwrite, + allow: parseBitfield(overwrite.allow), + deny: parseBitfield(overwrite.deny) + }); + } + + overrides.set(room.owner_discord_id, { + id: room.owner_discord_id, + type: 1, + allow: ALLOW_CONNECT_VIEW, + deny: 0n + }); + + for (const userId of room.allowed_user_ids) { + overrides.set(userId, { + id: userId, + type: 1, + allow: ALLOW_CONNECT_VIEW, + deny: 0n + }); + } + + if (room.locked) { + const everyoneId = channel.guild.roles.everyone.id; + overrides.set(everyoneId, { + id: everyoneId, + type: 0, + allow: 0n, + deny: Permissions.FLAGS.CONNECT + }); + const { adminRoleIds, modRoleIds } = getRoleIds(settings); + for (const roleId of [...adminRoleIds, ...modRoleIds]) { + overrides.set(roleId, { + id: roleId, + type: 0, + allow: ALLOW_CONNECT_VIEW, + deny: 0n + }); + } + } + + await channel.permissionOverwrites.set(Array.from(overrides.values())).catch(() => null); +} + +function checkIsModerator(member, settings) { + const roles = member.roles.cache.map((role) => role.id); + const { adminRoleIds, modRoleIds } = getRoleIds(settings); + const isAdmin = roles.some((roleId) => adminRoleIds.includes(roleId)); + const isMod = roles.some((roleId) => modRoleIds.includes(roleId)); + return isAdmin || isMod; +} + +function getRoleIds(settings) { + const adminRoleIds = parseRoleList(settings.getSetting("discord_admin_role_id")); + const modRoleIds = parseRoleList(settings.getSetting("discord_mod_role_id")); + return { adminRoleIds, modRoleIds }; +} + +function parseRoleList(value) { + return (value || "") + .toString() + .split(/[,\s]+/) + .map((item) => item.trim()) + .filter(Boolean); +} + +async function resolveMember(guild, token) { + const id = parseDiscordId(token); + if (id) { + return guild.members.fetch(id).catch(() => null); + } + const needle = token.toLowerCase(); + return guild.members.cache.find((member) => { + const name = (member.displayName || member.user.username || "").toLowerCase(); + return name === needle; + }); +} + +function parseDiscordId(value) { + if (!value) { + return null; + } + const match = value.match(/^<@!?(\d+)>$/) || value.match(/^(\d{15,})$/); + return match ? match[1] : null; +} + +function parseJsonArray(value) { + if (!value) { + return []; + } + try { + const parsed = JSON.parse(value); + return Array.isArray(parsed) ? parsed : []; + } catch { + return []; + } +} + +function serializeBitfield(value) { + if (typeof value === "bigint") { + return value.toString(); + } + if (typeof value === "number") { + return String(value); + } + if (!value) { + return "0"; + } + return value.toString(); +} + +function parseBitfield(value) { + if (typeof value === "bigint") { + return value; + } + if (typeof value === "number") { + return BigInt(value); + } + if (typeof value === "string") { + const trimmed = value.trim(); + if (!trimmed) { + return 0n; + } + try { + return BigInt(trimmed); + } catch { + return 0n; + } + } + return 0n; +} + +function toArray(value) { + if (!value) { + return []; + } + return Array.isArray(value) ? value : [value]; +} + +function cryptoRandomId() { + return require("crypto").randomUUID(); +} + +async function safeNotify(member, message) { + try { + await member.send(message); + } catch { + // ignore + } +} + +async function moveMemberToChannel(member, channel) { + try { + await member.voice.setChannel(channel); + return true; + } catch (error) { + console.error("Failed to move member", error); + try { + await member.edit({ channel: channel.id }); + return true; + } catch (fallbackError) { + console.error("Fallback move failed", fallbackError); + return false; + } + } +} + +function startNameRefreshTimer(discordClient, db, settings, state) { + if (state.nameSweepTimer) { + clearInterval(state.nameSweepTimer); + } + const runSweep = () => { + refreshRoomNames(discordClient, db, settings, state).catch((error) => { + console.error("Auto VC name refresh failed", error); + }); + }; + runSweep(); + state.nameSweepTimer = setInterval(runSweep, NAME_REFRESH_INTERVAL_MS); +} + +async function refreshRoomNames(discordClient, db, settings, state) { + const rooms = db.prepare("SELECT * FROM auto_vc_rooms").all(); + for (const row of rooms) { + const room = normalizeRoom(row); + if (!templateHasGameName(room.name_template)) { + continue; + } + const guild = discordClient.guilds.cache.get(room.guild_id); + if (!guild) { + continue; + } + const channel = await guild.channels.fetch(room.channel_id).catch(() => null); + if (!channel || channel.type !== "GUILD_VOICE") { + continue; + } + const member = await guild.members.fetch(room.owner_discord_id).catch(() => null); + if (!member) { + continue; + } + const gameName = resolveGameName(member); + const desiredName = buildRoomName(room.name_template, member, room.room_number, gameName); + if (desiredName && desiredName !== channel.name) { + await channel.setName(desiredName).catch((error) => { + console.error("Failed to update Auto VC name", error); + }); + } + } +} + +function startSweepTimer(discordClient, db, settings, state) { + if (state.sweepTimer) { + clearInterval(state.sweepTimer); + } + const runSweep = () => { + sweepRooms(discordClient, db, state).catch((error) => { + console.error("Auto VC sweep failed", error); + }); + }; + runSweep(); + state.sweepTimer = setInterval(runSweep, 15000); +} + +async function sweepRooms(discordClient, db, state) { + const config = getConfig(db); + const rooms = db.prepare("SELECT * FROM auto_vc_rooms").all(); + for (const row of rooms) { + const room = normalizeRoom(row); + state.rooms.set(room.channel_id, room); + const guild = discordClient.guilds.cache.get(room.guild_id); + if (!guild) { + removeRoom(db, state, room.channel_id); + continue; + } + const channel = await guild.channels.fetch(room.channel_id).catch(() => null); + if (!channel || channel.type !== "GUILD_VOICE") { + removeRoom(db, state, room.channel_id); + continue; + } + if (channel.members.size === 0) { + markEmpty(state, channel.id); + const timeout = getLobbyTimeout(config, room.lobby_id); + const emptyAt = state.emptySince.get(channel.id) || Date.now(); + if (Date.now() - emptyAt >= timeout * 1000) { + await deleteChannel(channel); + removeRoom(db, state, channel.id); + } + } else { + clearCleanupTimer(state, channel.id); + clearEmpty(state, channel.id); + } + } +} diff --git a/plugins/auto-vc/plugin.json b/plugins/auto-vc/plugin.json new file mode 100644 index 0000000..50bae97 --- /dev/null +++ b/plugins/auto-vc/plugin.json @@ -0,0 +1,7 @@ +{ + "id": "auto-vc", + "name": "Auto VC", + "version": "0.1.5", + "description": "Auto-create managed voice channels from lobby rooms.", + "main": "index.js" +} diff --git a/plugins/auto-vc/stats.js b/plugins/auto-vc/stats.js new file mode 100644 index 0000000..e4a8bd6 --- /dev/null +++ b/plugins/auto-vc/stats.js @@ -0,0 +1,53 @@ +const { db } = require("../../src/services/db"); + +function getProfileStats({ userId }) { + if (!userId) { + return { stats: [] }; + } + const row = db + .prepare("SELECT created_count FROM auto_vc_stats WHERE user_id = ?") + .get(userId); + if (!row) { + return { stats: [] }; + } + return { + stats: [ + { + label: "Rooms created", + value: row.created_count + } + ] + }; +} + +function getLeaderboards({ limit = 10 }) { + const rows = db + .prepare( + "SELECT auto_vc_stats.user_id AS user_id, " + + "auto_vc_stats.created_count AS total, " + + "user_profiles.internal_username AS username " + + "FROM auto_vc_stats " + + "LEFT JOIN user_profiles ON user_profiles.id = auto_vc_stats.user_id " + + "ORDER BY auto_vc_stats.created_count DESC LIMIT ?" + ) + .all(limit); + + return { + boards: [ + { + id: "rooms-created", + title: "Most rooms created", + valueLabel: "Rooms", + rows: rows.map((row) => ({ + username: row.username || row.user_id, + value: row.total + })) + } + ] + }; +} + +module.exports = { + getProfileStats, + getLeaderboards +}; diff --git a/plugins/auto-vc/stats.json b/plugins/auto-vc/stats.json new file mode 100644 index 0000000..15e2abf --- /dev/null +++ b/plugins/auto-vc/stats.json @@ -0,0 +1,13 @@ +{ + "pluginId": "auto-vc", + "pluginName": "Auto VC", + "provider": "stats.js", + "profile": { + "title": "Auto VC", + "emptyMessage": "Create an Auto VC room to see stats here." + }, + "leaderboards": { + "title": "Auto VC", + "emptyMessage": "No Auto VC rooms created yet." + } +} diff --git a/plugins/auto-vc/views/auto-vc.ejs b/plugins/auto-vc/views/auto-vc.ejs new file mode 100644 index 0000000..1cf03e4 --- /dev/null +++ b/plugins/auto-vc/views/auto-vc.ejs @@ -0,0 +1,560 @@ +

      +

      Auto VC

      +

      Automatically create temporary voice channels when members join your lobby channels. Rooms inherit lobby permissions and can be managed with !vc commands.

      +
      + Placeholders +

      Use [username], [room_number], and [game_name] inside channel names.

      +

      [game_name] is pulled from the creator's Discord presence.

      +
      +
      + + + +
      +

      Stats

      + <% if (!stats || !stats.length) { %> +

      No rooms created yet.

      + <% } else { %> + + + + + + + + + <% stats.forEach((row) => { %> + + + + + <% }) %> + +
      UserRooms created
      <%= row.label %><%= row.count %>
      + <% } %> +
      + +<% if (isAdmin) { %> +
      +

      Lobby setup

      +
      +
      +

      Rate limits

      +
      +
      + +
      + + per + + seconds +
      +
      +
      + +
      + + per + + seconds +
      +
      +
      +

      Applies to room creation and commands that update channels or permissions.

      +
      +
      +
      + <% lobbies.forEach((lobby, index) => { %> +
      +
      +

      Lobby <%= index + 1 %>

      +
      + + +
      +
      + + <% const lobbyVoice = voiceChannels?.find((channel) => channel.id === lobby.lobbyChannelId); %> + <% const lobbyCategory = categoryChannels?.find((channel) => channel.id === lobby.categoryId); %> +
      +
      + + <% if (voiceChannels && voiceChannels.length) { %> + +
      Selected ID: <%= lobby.lobbyChannelId || "-" %>
      + <% } else { %> + + <% } %> +
      +
      + + <% if (categoryChannels && categoryChannels.length) { %> + +
      Selected ID: <%= lobby.categoryId || "-" %>
      + <% } else { %> + + <% } %> +
      +
      + + +

      Examples: [username]'s room, [game_name] [room_number]

      +
      +
      + + +
      +
      + <% if (lobby.permissions && lobby.permissions.length) { %> + <% const totalPerms = lobby.permissions.length; %> + <% const okPerms = lobby.permissions.filter((perm) => perm.granted).length; %> + <% const allOk = okPerms === totalPerms; %> +
      > + + Permissions Check (<%= okPerms %>/<%= totalPerms %> + <% if (allOk) { %> + all ok + <% } %> + ) + +
      + <% lobby.permissions.forEach((perm) => { %> +
      + + <%= perm.label %> +
      + <% }) %> +
      +

      Hover red checks to see how to fix missing permissions.

      +
      + <% } %> +
      + <% }) %> +
      +
      +
      + + +
      +
      +
      +<% } %> + +<% if (canModerate) { %> +
      +

      VC creation bans

      +
      +
      + + +
      +
      + + +
      +
      + +
      +
      +
      +

      Currently banned

      + <% if (!bans.length) { %> +

      No banned users.

      + <% } else { %> +
      + + + + + + + + + + <% bans.forEach((ban) => { %> + + + + + + <% }) %> + +
      UserReasonRemove
      <%= ban.label %><%= ban.reason || '-' %> + +
      +
      + +
      +
      + <% } %> +
      +
      +<% } %> + + + + + + diff --git a/plugins/echonomy-framework/cmds.json b/plugins/echonomy-framework/cmds.json new file mode 100644 index 0000000..8928880 --- /dev/null +++ b/plugins/echonomy-framework/cmds.json @@ -0,0 +1,120 @@ +{ + "pluginId": "echonomy-framework", + "pluginName": "Echonomy Framework", + "platformKeys": { + "discord": "platform_discord", + "twitch": "platform_twitch", + "youtube": "platform_youtube" + }, + "commands": [ + { + "id": "root", + "trigger": "coins", + "name": "Coins", + "description": "Root command for the Echonomy currency system.", + "level": "public", + "platforms": ["discord", "twitch", "youtube"], + "triggerKey": "command_root", + "usage": "coins " + }, + { + "id": "balance", + "trigger": "coins", + "subcommand": "balance", + "name": "Balance", + "description": "Show your current currency balance.", + "level": "public", + "platforms": ["discord", "twitch", "youtube"], + "triggerKey": "command_root", + "usage": "coins balance" + }, + { + "id": "pay", + "trigger": "coins", + "subcommand": "pay", + "name": "Pay", + "description": "Send currency to another user.", + "level": "public", + "platforms": ["discord", "twitch", "youtube"], + "triggerKey": "command_root", + "usage": "coins pay [note]" + }, + { + "id": "leaderboard", + "trigger": "coins", + "subcommand": "top", + "name": "Leaderboard", + "description": "View the top balances.", + "level": "public", + "platforms": ["discord", "twitch", "youtube"], + "triggerKey": "command_root", + "usage": "coins top" + }, + { + "id": "stats", + "trigger": "coins", + "subcommand": "stats", + "name": "Stats", + "description": "Show global currency stats.", + "level": "public", + "platforms": ["discord", "twitch", "youtube"], + "triggerKey": "command_root", + "usage": "coins stats" + }, + { + "id": "funds", + "trigger": "coins", + "subcommand": "funds", + "name": "Community funds", + "description": "List community funds and progress.", + "level": "public", + "platforms": ["discord", "twitch", "youtube"], + "triggerKey": "command_root", + "usage": "coins funds" + }, + { + "id": "donate", + "trigger": "coins", + "subcommand": "donate", + "name": "Donate", + "description": "Donate currency to a community fund.", + "level": "public", + "platforms": ["discord", "twitch", "youtube"], + "triggerKey": "command_root", + "usage": "coins donate " + }, + { + "id": "grant", + "trigger": "coins", + "subcommand": "grant", + "name": "Grant", + "description": "Grant currency to a user.", + "level": "mod", + "platforms": ["discord", "twitch", "youtube"], + "triggerKey": "command_root", + "usage": "coins grant [note]" + }, + { + "id": "take", + "trigger": "coins", + "subcommand": "take", + "name": "Take", + "description": "Remove currency from a user.", + "level": "mod", + "platforms": ["discord", "twitch", "youtube"], + "triggerKey": "command_root", + "usage": "coins take [note]" + }, + { + "id": "reward", + "trigger": "coins", + "subcommand": "reward", + "name": "Reward", + "description": "Award a configured event reward.", + "level": "mod", + "platforms": ["discord", "twitch", "youtube"], + "triggerKey": "command_root", + "usage": "coins reward " + } + ] +} diff --git a/plugins/echonomy-framework/index.js b/plugins/echonomy-framework/index.js new file mode 100644 index 0000000..f0dc716 --- /dev/null +++ b/plugins/echonomy-framework/index.js @@ -0,0 +1,2362 @@ + +const path = require("path"); +const fs = require("fs"); +const crypto = require("crypto"); +const express = require("express"); +const multer = require("multer"); +const EventEmitter = require("events"); +const { ensureUserForIdentity } = require("../../src/services/users"); + +const PLUGIN_ID = "echonomy-framework"; +const DEFAULT_SETTINGS = { + currency_name: "Coin", + currency_name_plural: "Coins", + currency_icon_path: "", + command_root: "coins", + command_aliases: "", + banking_label: "Banking", + banking_enabled: "1", + community_fund_name: "Community fund", + community_fund_name_plural: "Community funds", + platform_discord: "1", + platform_twitch: "1", + platform_youtube: "1", + transfer_cooldown_seconds: "10", + earn_discord_message_enabled: "1", + earn_discord_message_amount: "1", + earn_discord_message_cooldown: "30", + earn_twitch_message_enabled: "1", + earn_twitch_message_amount: "1", + earn_twitch_message_cooldown: "30", + earn_discord_voice_enabled: "0", + earn_discord_voice_amount_per_min: "2", + earn_discord_voice_tick_minutes: "1", + tier_discord_booster_multiplier: "1.25", + tier_twitch_sub_multiplier: "1.5", + tier_twitch_mod_multiplier: "1.2", + tier_twitch_vip_multiplier: "1.1", + tier_twitch_broadcaster_multiplier: "2.0", + custom_events: "[]", + response_templates: "" +}; + +const DEFAULT_RESPONSES = { + balance_self: { + label: "Balance (self)", + mode: "random", + replies: [ + { text: "Your balance is {balance_text}.", weight: 1 }, + { text: "You have {balance_text} available.", weight: 1 } + ] + }, + top_list: { + label: "Top balances", + mode: "random", + replies: [{ text: "Top balances: {lines}", weight: 1 }] + }, + top_empty: { + label: "Top balances (empty)", + mode: "random", + replies: [{ text: "No balances yet.", weight: 1 }] + }, + stats: { + label: "Global stats", + mode: "random", + replies: [ + { + text: "Total in circulation: {total_balance_text}. Total spent: {total_spent_text}.", + weight: 1 + } + ] + }, + pay_success: { + label: "Pay success", + mode: "random", + replies: [ + { text: "Sent {amount_text} to {target}.", weight: 1 }, + { text: "Transfer complete: {target} received {amount_text}.", weight: 1 } + ] + }, + pay_missing: { + label: "Pay missing arguments", + mode: "random", + replies: [{ text: "Usage: {usage}", weight: 1 }] + }, + pay_cooldown: { + label: "Pay cooldown", + mode: "random", + replies: [{ text: "Please wait {cooldown}s before sending again.", weight: 1 }] + }, + pay_self: { + label: "Pay self", + mode: "random", + replies: [{ text: "You cannot pay yourself.", weight: 1 }] + }, + pay_not_found: { + label: "Pay user not found", + mode: "random", + replies: [{ text: "I couldn't find that user.", weight: 1 }] + }, + pay_insufficient: { + label: "Pay insufficient balance", + mode: "random", + replies: [{ text: "{reason}", weight: 1 }] + }, + grant_success: { + label: "Grant success", + mode: "random", + replies: [{ text: "Granted {amount_text} to {target}.", weight: 1 }] + }, + take_success: { + label: "Take success", + mode: "random", + replies: [{ text: "Removed {amount_text} from {target}.", weight: 1 }] + }, + funds_list: { + label: "Community funds list", + mode: "random", + replies: [{ text: "{funds_label}: {lines}", weight: 1 }] + }, + funds_empty: { + label: "Community funds (empty)", + mode: "random", + replies: [{ text: "No {funds_label} are active yet.", weight: 1 }] + }, + fund_missing: { + label: "Fund missing arguments", + mode: "random", + replies: [{ text: "Usage: {usage}", weight: 1 }] + }, + fund_not_found: { + label: "Fund not found", + mode: "random", + replies: [{ text: "That {fund_label} is not active.", weight: 1 }] + }, + fund_donate_success: { + label: "Fund donation success", + mode: "random", + replies: [ + { text: "Donated {amount_text} to {fund}.", weight: 1 }, + { text: "Thanks! {amount_text} added to {fund}.", weight: 1 } + ] + }, + permission_denied: { + label: "Permission denied", + mode: "random", + replies: [{ text: "You do not have permission to do that.", weight: 1 }] + }, + reward_missing: { + label: "Event reward missing arguments", + mode: "random", + replies: [{ text: "Usage: {usage}", weight: 1 }] + }, + reward_not_found: { + label: "Event reward not found", + mode: "random", + replies: [{ text: "That event is not configured.", weight: 1 }] + }, + reward_success: { + label: "Event reward success", + mode: "random", + replies: [{ text: "Awarded {amount_text} to {target}.", weight: 1 }] + }, + help: { + label: "Help", + mode: "random", + replies: [{ text: "{help}", weight: 1 }] + } +}; + +const emitter = new EventEmitter(); +const messageCooldowns = new Map(); +const transferCooldowns = new Map(); +const voiceStates = new Map(); +let voiceTimer = null; +let activityFlushTimer = null; +let cachedConfig = null; +let cachedConfigAt = 0; +let settingsApi = null; +const ACTIVITY_REWARD_NOTE = "Activity Reward"; +const ACTIVITY_REWARD_SOURCES = { + discord_message: "Discord Message", + twitch_message: "Twitch Message", + discord_voice: "Discord Voice" +}; + +module.exports = { + id: PLUGIN_ID, + init({ + app, + web, + settings, + db, + commandRouter, + discordClient, + twitchClient + }) { + settingsApi = settings; + ensureTables(db); + ensureDefaults(db); + startActivityRewardFlusher(db); + + const api = buildApi({ db }); + registerFramework(api); + const refreshCommands = registerCommands({ db, settings, commandRouter }); + + attachDiscordListeners({ db, settings, discordClient }); + attachTwitchListeners({ db, settings, twitchClient }); + installProfileHook(app, () => getConfig(db)); + + const repoRoot = path.join(__dirname, "..", ".."); + const uploadDir = path.join(repoRoot, "data", "echonomy-framework"); + fs.mkdirSync(uploadDir, { recursive: true }); + const upload = multer({ + dest: uploadDir, + fileFilter: (_req, file, cb) => { + if (file.mimetype === "image/png") { + return cb(null, true); + } + cb(new Error("Only PNG files are allowed.")); + } + }); + + const router = web.createRouter(); + router.use("/assets", express.static(uploadDir)); + + router.get("/", (req, res) => { + const config = getConfig(db); + const user = req.session.user || null; + const isAdmin = Boolean(user?.isAdmin); + const isMod = Boolean(user?.isAdmin || user?.isMod); + const userBalance = user ? getBalance(db, user.id) : 0; + const transactions = listTransactions(db, { + userId: isAdmin ? null : user?.id, + limit: 1000 + }); + const globalStats = buildGlobalStats(db); + const topBalances = listTopBalances(db, 10); + const funds = listFunds(db); + const events = getCustomEvents(config); + const responses = Object.values(config.responses || {}); + + res.render(path.join(__dirname, "views", "echonomy.ejs"), { + title: "Echonomy Framework", + config, + user, + isAdmin, + isMod, + userBalance, + transactions, + globalStats, + topBalances, + funds, + events, + responses + }); + }); + + router.post("/settings/currency", (req, res) => { + if (!req.session.user?.isAdmin) { + return deny(res); + } + setPluginSetting(db, "currency_name", (req.body.currency_name || "").trim()); + setPluginSetting( + db, + "currency_name_plural", + (req.body.currency_name_plural || "").trim() + ); + setPluginSetting(db, "command_root", (req.body.command_root || "").trim()); + setPluginSetting(db, "command_aliases", (req.body.command_aliases || "").trim()); + invalidateConfigCache(); + if (refreshCommands) { + refreshCommands(); + } + req.session.flash = { + type: "success", + message: "Currency settings updated." + }; + res.redirect(`/plugins/${PLUGIN_ID}`); + }); + + router.post("/settings/platforms", (req, res) => { + if (!req.session.user?.isAdmin) { + return deny(res); + } + setPluginSetting(db, "platform_discord", req.body.platform_discord ? "1" : "0"); + setPluginSetting(db, "platform_twitch", req.body.platform_twitch ? "1" : "0"); + setPluginSetting(db, "platform_youtube", req.body.platform_youtube ? "1" : "0"); + invalidateConfigCache(); + if (refreshCommands) { + refreshCommands(); + } + req.session.flash = { + type: "success", + message: "Platform settings updated." + }; + res.redirect(`/plugins/${PLUGIN_ID}`); + }); + + router.post("/settings/earn", (req, res) => { + if (!req.session.user?.isAdmin) { + return deny(res); + } + setPluginSetting( + db, + "earn_discord_message_enabled", + req.body.earn_discord_message_enabled ? "1" : "0" + ); + setPluginSetting( + db, + "earn_discord_message_amount", + (req.body.earn_discord_message_amount || "0").trim() + ); + setPluginSetting( + db, + "earn_discord_message_cooldown", + (req.body.earn_discord_message_cooldown || "0").trim() + ); + setPluginSetting( + db, + "earn_twitch_message_enabled", + req.body.earn_twitch_message_enabled ? "1" : "0" + ); + setPluginSetting( + db, + "earn_twitch_message_amount", + (req.body.earn_twitch_message_amount || "0").trim() + ); + setPluginSetting( + db, + "earn_twitch_message_cooldown", + (req.body.earn_twitch_message_cooldown || "0").trim() + ); + setPluginSetting( + db, + "earn_discord_voice_enabled", + req.body.earn_discord_voice_enabled ? "1" : "0" + ); + setPluginSetting( + db, + "earn_discord_voice_amount_per_min", + (req.body.earn_discord_voice_amount_per_min || "0").trim() + ); + setPluginSetting( + db, + "earn_discord_voice_tick_minutes", + (req.body.earn_discord_voice_tick_minutes || "1").trim() + ); + invalidateConfigCache(); + req.session.flash = { + type: "success", + message: "Earning rules updated." + }; + res.redirect(`/plugins/${PLUGIN_ID}`); + }); + + router.post("/settings/tiers", (req, res) => { + if (!req.session.user?.isAdmin) { + return deny(res); + } + setPluginSetting( + db, + "tier_discord_booster_multiplier", + (req.body.tier_discord_booster_multiplier || "1").trim() + ); + setPluginSetting( + db, + "tier_twitch_sub_multiplier", + (req.body.tier_twitch_sub_multiplier || "1").trim() + ); + setPluginSetting( + db, + "tier_twitch_mod_multiplier", + (req.body.tier_twitch_mod_multiplier || "1").trim() + ); + setPluginSetting( + db, + "tier_twitch_vip_multiplier", + (req.body.tier_twitch_vip_multiplier || "1").trim() + ); + setPluginSetting( + db, + "tier_twitch_broadcaster_multiplier", + (req.body.tier_twitch_broadcaster_multiplier || "1").trim() + ); + invalidateConfigCache(); + req.session.flash = { + type: "success", + message: "Tier multipliers updated." + }; + res.redirect(`/plugins/${PLUGIN_ID}`); + }); + + router.post("/settings/banking", (req, res) => { + if (!req.session.user?.isAdmin) { + return deny(res); + } + setPluginSetting(db, "banking_label", (req.body.banking_label || "").trim()); + setPluginSetting( + db, + "banking_enabled", + req.body.banking_enabled ? "1" : "0" + ); + setPluginSetting( + db, + "community_fund_name", + (req.body.community_fund_name || "").trim() + ); + setPluginSetting( + db, + "community_fund_name_plural", + (req.body.community_fund_name_plural || "").trim() + ); + invalidateConfigCache(); + req.session.flash = { + type: "success", + message: "Banking labels updated." + }; + res.redirect(`/plugins/${PLUGIN_ID}`); + }); + + router.post("/settings/responses", (req, res) => { + if (!req.session.user?.isAdmin) { + return deny(res); + } + const key = (req.body.response_key || "").trim(); + if (!key) { + req.session.flash = { + type: "error", + message: "Response key is required." + }; + return res.redirect(`/plugins/${PLUGIN_ID}`); + } + const mode = (req.body.response_mode || "random").trim(); + const texts = Array.isArray(req.body.response_text) + ? req.body.response_text + : [req.body.response_text]; + const weights = Array.isArray(req.body.response_weight) + ? req.body.response_weight + : [req.body.response_weight]; + const replies = (texts || []) + .map((text, index) => ({ + text: (text || "").trim(), + weight: Number(weights?.[index] || 1) + })) + .filter((entry) => entry.text); + const current = getResponseTemplates(db); + current[key] = { + ...current[key], + mode: mode === "weighted" ? "weighted" : "random", + replies: replies.length ? replies : current[key]?.replies || [] + }; + setPluginSetting(db, "response_templates", JSON.stringify(current)); + invalidateConfigCache(); + req.session.flash = { + type: "success", + message: "Responses updated." + }; + res.redirect(`/plugins/${PLUGIN_ID}`); + }); + + router.post("/settings/icon", upload.single("currency_icon"), (req, res) => { + if (!req.session.user?.isAdmin) { + return deny(res); + } + if (!req.file) { + req.session.flash = { type: "error", message: "Upload a PNG icon." }; + return res.redirect(`/plugins/${PLUGIN_ID}`); + } + const ext = path.extname(req.file.originalname || "").toLowerCase(); + if (ext && ext !== ".png") { + fs.rmSync(req.file.path, { force: true }); + req.session.flash = { type: "error", message: "Only PNG files are allowed." }; + return res.redirect(`/plugins/${PLUGIN_ID}`); + } + const filename = `currency-${Date.now()}-${crypto.randomUUID()}.png`; + const targetPath = path.join(uploadDir, filename); + fs.renameSync(req.file.path, targetPath); + const relativePath = `/plugins/${PLUGIN_ID}/assets/${filename}`; + setPluginSetting(db, "currency_icon_path", relativePath); + invalidateConfigCache(); + req.session.flash = { + type: "success", + message: "Currency icon updated." + }; + res.redirect(`/plugins/${PLUGIN_ID}`); + }); + + router.post("/accounts/adjust", (req, res) => { + if (!req.session.user || !req.session.user.isMod) { + return deny(res); + } + const targetName = (req.body.username || "").trim(); + const amount = parseSignedAmount(req.body.amount); + if (!targetName || !Number.isFinite(amount)) { + req.session.flash = { + type: "error", + message: "Username and amount are required." + }; + return res.redirect(`/plugins/${PLUGIN_ID}`); + } + const target = findUserByInternalName(db, targetName); + if (!target) { + req.session.flash = { type: "error", message: "User not found." }; + return res.redirect(`/plugins/${PLUGIN_ID}`); + } + const note = (req.body.note || "").trim(); + if (amount === 0) { + req.session.flash = { + type: "error", + message: "Amount must be non-zero." + }; + return res.redirect(`/plugins/${PLUGIN_ID}`); + } + adjustBalance(db, { + userId: target.id, + amount, + note, + meta: { + actorId: req.session.user.id, + actorName: req.session.user.username + } + }); + req.session.flash = { + type: "success", + message: "Balance updated." + }; + res.redirect(`/plugins/${PLUGIN_ID}`); + }); + + router.post("/funds/create", (req, res) => { + if (!req.session.user?.isAdmin) { + return deny(res); + } + const name = (req.body.name || "").trim(); + const description = (req.body.description || "").trim(); + const target = parseInt(req.body.target_amount || "0", 10); + if (!name) { + req.session.flash = { type: "error", message: "Fund name is required." }; + return res.redirect(`/plugins/${PLUGIN_ID}`); + } + createFund(db, { + name, + description, + targetAmount: Number.isFinite(target) ? target : 0 + }); + req.session.flash = { type: "success", message: "Fund created." }; + res.redirect(`/plugins/${PLUGIN_ID}`); + }); + + router.post("/funds/:id/update", (req, res) => { + if (!req.session.user?.isAdmin) { + return deny(res); + } + updateFund(db, { + id: req.params.id, + name: (req.body.name || "").trim(), + description: (req.body.description || "").trim(), + targetAmount: parseInt(req.body.target_amount || "0", 10), + status: req.body.status || "active" + }); + req.session.flash = { type: "success", message: "Fund updated." }; + res.redirect(`/plugins/${PLUGIN_ID}`); + }); + + router.post("/events/create", (req, res) => { + if (!req.session.user?.isAdmin) { + return deny(res); + } + const name = (req.body.name || "").trim(); + const amount = parseInt(req.body.amount || "0", 10); + if (!name || !Number.isFinite(amount)) { + req.session.flash = { + type: "error", + message: "Event name and amount are required." + }; + return res.redirect(`/plugins/${PLUGIN_ID}`); + } + const config = getConfig(db); + const events = getCustomEvents(config); + events.push({ id: crypto.randomUUID(), name, amount }); + setPluginSetting(db, "custom_events", JSON.stringify(events)); + invalidateConfigCache(); + req.session.flash = { type: "success", message: "Event added." }; + res.redirect(`/plugins/${PLUGIN_ID}`); + }); + + router.post("/events/:id/delete", (req, res) => { + if (!req.session.user?.isAdmin) { + return deny(res); + } + const config = getConfig(db); + const events = getCustomEvents(config).filter( + (event) => event.id !== req.params.id + ); + setPluginSetting(db, "custom_events", JSON.stringify(events)); + invalidateConfigCache(); + req.session.flash = { type: "success", message: "Event removed." }; + res.redirect(`/plugins/${PLUGIN_ID}`); + }); + + const bankRouter = web.createRouter(); + bankRouter.use((req, res, next) => { + if (!req.session.user) { + return res.redirect("/"); + } + const config = getConfig(db); + if (!config.banking.enabled) { + return res.redirect("/profile"); + } + req.bankingConfig = config; + next(); + }); + + bankRouter.get("/", (req, res) => { + const config = req.bankingConfig || getConfig(db); + const user = req.session.user; + const userStats = buildUserStats(db, user.id); + const transactions = listTransactions(db, { + userId: user.id, + limit: 1000 + }); + const funds = listFunds(db).filter((fund) => fund.status === "active"); + const userDirectory = listUserDirectory(db); + + res.render(path.join(__dirname, "views", "banking.ejs"), { + title: config.banking.label, + config, + user, + userStats, + transactions, + funds, + userDirectory + }); + }); + + bankRouter.post("/transfer", (req, res) => { + if (!req.session.user) { + return res.redirect("/"); + } + const config = req.bankingConfig || getConfig(db); + const targetName = (req.body.username || "").trim(); + const amount = parseAmount(req.body.amount); + const note = (req.body.note || "").trim(); + if (!targetName || !Number.isFinite(amount)) { + req.session.flash = { + type: "error", + message: "Recipient and amount are required." + }; + return res.redirect("/profile/banking"); + } + const cooldownLeft = getCooldownLeft(req.session.user.id, config); + if (cooldownLeft > 0) { + req.session.flash = { + type: "error", + message: `Please wait ${cooldownLeft}s before sending again.` + }; + return res.redirect("/profile/banking"); + } + const target = findUserByInternalName(db, targetName.replace(/^@/, "")); + if (!target) { + req.session.flash = { type: "error", message: "User not found." }; + return res.redirect("/profile/banking"); + } + if (target.id === req.session.user.id) { + req.session.flash = { + type: "error", + message: "You cannot transfer funds to yourself." + }; + return res.redirect("/profile/banking"); + } + const success = transferBalance(db, { + fromUserId: req.session.user.id, + toUserId: target.id, + amount, + note, + meta: { source: "banking_ui" } + }); + if (!success.ok) { + req.session.flash = { type: "error", message: success.message }; + return res.redirect("/profile/banking"); + } + setCooldown(req.session.user.id); + req.session.flash = { type: "success", message: "Transfer completed." }; + return res.redirect("/profile/banking"); + }); + + bankRouter.post("/funds/:id/donate", (req, res) => { + if (!req.session.user) { + return res.redirect("/"); + } + const config = req.bankingConfig || getConfig(db); + const amount = parseAmount(req.body.amount); + const note = (req.body.note || "").trim(); + if (!Number.isFinite(amount)) { + req.session.flash = { + type: "error", + message: "Enter a valid amount." + }; + return res.redirect("/profile/banking"); + } + const cooldownLeft = getCooldownLeft(req.session.user.id, config); + if (cooldownLeft > 0) { + req.session.flash = { + type: "error", + message: `Please wait ${cooldownLeft}s before donating again.` + }; + return res.redirect("/profile/banking"); + } + const fund = db + .prepare("SELECT * FROM echonomy_pots WHERE id = ?") + .get(req.params.id); + if (!fund || fund.status !== "active") { + req.session.flash = { + type: "error", + message: "That fund is not active." + }; + return res.redirect("/profile/banking"); + } + const result = spendBalance(db, { + userId: req.session.user.id, + amount, + note: note || `Donation to ${fund.name}`, + meta: { fundId: fund.id, source: "banking_ui" } + }); + if (!result.ok) { + req.session.flash = { type: "error", message: result.message }; + return res.redirect("/profile/banking"); + } + addFundContribution(db, fund.id, req.session.user.id, amount); + setCooldown(req.session.user.id); + req.session.flash = { type: "success", message: "Donation completed." }; + return res.redirect("/profile/banking"); + }); + + web.mount(`/plugins/${PLUGIN_ID}`, router, { + label: "Echonomy", + role: "public", + section: "plugins" + }); + web.mount("/profile/banking", bankRouter); + } +}; + +function deny(res) { + return res.status(403).render("error", { + title: "Access denied", + message: "You do not have access to that page." + }); +} + +function ensureTables(db) { + db.exec(` + CREATE TABLE IF NOT EXISTS echonomy_accounts ( + user_id TEXT PRIMARY KEY, + balance INTEGER NOT NULL DEFAULT 0, + updated_at INTEGER NOT NULL + ); + + CREATE TABLE IF NOT EXISTS echonomy_transactions ( + id TEXT PRIMARY KEY, + type TEXT NOT NULL, + amount INTEGER NOT NULL, + from_user_id TEXT, + to_user_id TEXT, + note TEXT, + meta TEXT, + created_at INTEGER NOT NULL + ); + + CREATE TABLE IF NOT EXISTS echonomy_pots ( + id TEXT PRIMARY KEY, + name TEXT NOT NULL UNIQUE, + description TEXT, + target_amount INTEGER NOT NULL DEFAULT 0, + current_amount INTEGER NOT NULL DEFAULT 0, + status TEXT NOT NULL DEFAULT 'active', + created_at INTEGER NOT NULL, + updated_at INTEGER NOT NULL + ); + + CREATE TABLE IF NOT EXISTS echonomy_pot_contributions ( + id TEXT PRIMARY KEY, + pot_id TEXT NOT NULL, + user_id TEXT NOT NULL, + amount INTEGER NOT NULL, + created_at INTEGER NOT NULL + ); + + CREATE TABLE IF NOT EXISTS echonomy_activity_reward_hourly ( + user_id TEXT NOT NULL, + hour_start INTEGER NOT NULL, + source TEXT NOT NULL, + amount INTEGER NOT NULL DEFAULT 0, + hits INTEGER NOT NULL DEFAULT 0, + minutes INTEGER NOT NULL DEFAULT 0, + PRIMARY KEY (user_id, hour_start, source) + ); + + CREATE INDEX IF NOT EXISTS echonomy_transactions_created_at_idx + ON echonomy_transactions (created_at); + + CREATE INDEX IF NOT EXISTS echonomy_activity_reward_hourly_hour_idx + ON echonomy_activity_reward_hourly (hour_start); + `); +} + +function ensureDefaults(db) { + const existing = getPluginSettings(db); + for (const [key, value] of Object.entries(DEFAULT_SETTINGS)) { + if (existing[key] === undefined) { + setPluginSetting(db, key, value); + } + } +} + +function getPluginSettings(db) { + const rows = db + .prepare("SELECT key, value FROM plugin_settings WHERE plugin_id = ?") + .all(PLUGIN_ID); + return rows.reduce((acc, row) => { + acc[row.key] = row.value; + return acc; + }, {}); +} + +function setPluginSetting(db, key, value) { + db.prepare( + "INSERT INTO plugin_settings (plugin_id, key, value, updated_at) VALUES (?, ?, ?, ?) " + + "ON CONFLICT(plugin_id, key) DO UPDATE SET value = excluded.value, updated_at = excluded.updated_at" + ).run(PLUGIN_ID, key, value, Date.now()); +} + +function parseBoolean(value, fallback) { + if (value === undefined || value === null || value === "") { + return fallback; + } + if (typeof value === "boolean") { + return value; + } + const normalized = value.toString().toLowerCase(); + return ["1", "true", "yes", "on"].includes(normalized); +} + +function parseNumber(value, fallback) { + if (value === undefined || value === null || value === "") { + return fallback; + } + const number = Number(value); + if (!Number.isFinite(number)) { + return fallback; + } + return number; +} + +function parseJson(value, fallback) { + if (value === undefined || value === null || value === "") { + return fallback; + } + try { + return JSON.parse(value); + } catch { + return fallback; + } +} + +function parseList(value) { + return (value || "") + .split(/[\,\s]+/) + .map((item) => item.trim()) + .filter(Boolean); +} + +function normalizeCommandRoot(value) { + const raw = (value || "").trim().replace(/^!+/, ""); + if (!raw) { + return ""; + } + return raw.toLowerCase().replace(/\s+/g, "-"); +} + +function buildPlural(name) { + if (!name) { + return ""; + } + if (name.endsWith("s")) { + return name; + } + return `${name}s`; +} + +function getConfig(db) { + const now = Date.now(); + if (cachedConfig && now - cachedConfigAt < 2000) { + return cachedConfig; + } + const settings = getPluginSettings(db); + const currencyName = settings.currency_name || DEFAULT_SETTINGS.currency_name; + const currencyPlural = + settings.currency_name_plural || + buildPlural(currencyName) || + DEFAULT_SETTINGS.currency_name_plural; + const bankingLabel = + settings.banking_label || DEFAULT_SETTINGS.banking_label || "Banking"; + const bankingEnabled = parseBoolean(settings.banking_enabled, true); + const fundName = + settings.community_fund_name || DEFAULT_SETTINGS.community_fund_name; + const fundPlural = + settings.community_fund_name_plural || + buildPlural(fundName) || + DEFAULT_SETTINGS.community_fund_name_plural; + const root = normalizeCommandRoot(settings.command_root || currencyPlural); + const aliases = parseList(settings.command_aliases); + const responseTemplates = buildResponseTemplates( + parseJson(settings.response_templates, null) + ); + const config = { + currency: { + name: currencyName, + plural: currencyPlural, + icon: settings.currency_icon_path || "" + }, + banking: { + label: bankingLabel, + enabled: bankingEnabled + }, + communityFunds: { + name: fundName || "Community fund", + plural: fundPlural || "Community funds" + }, + command: { + root: root || normalizeCommandRoot(currencyPlural) || "coins", + aliases + }, + platforms: { + discord: parseBoolean(settings.platform_discord, true), + twitch: parseBoolean(settings.platform_twitch, true), + youtube: parseBoolean(settings.platform_youtube, true) + }, + cooldownSeconds: parseNumber(settings.transfer_cooldown_seconds, 10), + earn: { + discordMessage: { + enabled: parseBoolean(settings.earn_discord_message_enabled, true), + amount: parseNumber(settings.earn_discord_message_amount, 1), + cooldown: parseNumber(settings.earn_discord_message_cooldown, 30) + }, + twitchMessage: { + enabled: parseBoolean(settings.earn_twitch_message_enabled, true), + amount: parseNumber(settings.earn_twitch_message_amount, 1), + cooldown: parseNumber(settings.earn_twitch_message_cooldown, 30) + }, + discordVoice: { + enabled: parseBoolean(settings.earn_discord_voice_enabled, false), + amountPerMin: parseNumber(settings.earn_discord_voice_amount_per_min, 2), + tickMinutes: parseNumber(settings.earn_discord_voice_tick_minutes, 1) + } + }, + tiers: { + discordBooster: parseNumber(settings.tier_discord_booster_multiplier, 1.25), + twitchSub: parseNumber(settings.tier_twitch_sub_multiplier, 1.5), + twitchMod: parseNumber(settings.tier_twitch_mod_multiplier, 1.2), + twitchVip: parseNumber(settings.tier_twitch_vip_multiplier, 1.1), + twitchBroadcaster: parseNumber(settings.tier_twitch_broadcaster_multiplier, 2.0) + }, + responses: responseTemplates, + eventsRaw: settings.custom_events || "[]" + }; + cachedConfig = config; + cachedConfigAt = now; + return config; +} + +function getCustomEvents(config) { + try { + const events = JSON.parse(config.eventsRaw || "[]"); + if (Array.isArray(events)) { + return events + .map((event) => ({ + id: event.id, + name: event.name, + amount: Number(event.amount || 0) + })) + .filter((event) => event.id && event.name); + } + } catch { + // ignore invalid custom event config + } + return []; +} + +function normalizeReplies(list, fallback) { + const source = Array.isArray(list) ? list : []; + const cleaned = source + .map((entry) => ({ + text: (entry?.text || "").toString().trim(), + weight: Number(entry?.weight || 1) + })) + .filter((entry) => entry.text); + if (cleaned.length) { + return cleaned; + } + const fallbackList = Array.isArray(fallback) ? fallback : []; + return fallbackList.map((entry) => ({ + text: (entry?.text || "").toString(), + weight: Number(entry?.weight || 1) + })); +} + +function buildResponseTemplates(raw) { + const parsed = raw && typeof raw === "object" ? raw : {}; + const templates = {}; + for (const [key, base] of Object.entries(DEFAULT_RESPONSES)) { + const override = parsed[key] || {}; + templates[key] = { + key, + label: base.label || key, + mode: override.mode === "weighted" ? "weighted" : base.mode || "random", + replies: normalizeReplies(override.replies, base.replies) + }; + } + for (const [key, entry] of Object.entries(parsed)) { + if (templates[key]) { + continue; + } + templates[key] = { + key, + label: entry?.label || key, + mode: entry?.mode === "weighted" ? "weighted" : "random", + replies: normalizeReplies(entry?.replies, []) + }; + } + return templates; +} + +function getResponseTemplates(db) { + const settings = getPluginSettings(db); + return buildResponseTemplates(parseJson(settings.response_templates, {})); +} + +function invalidateConfigCache() { + cachedConfig = null; + cachedConfigAt = 0; +} + +function getHourStart(timestamp = Date.now()) { + const hourMs = 60 * 60 * 1000; + return Math.floor(timestamp / hourMs) * hourMs; +} + +function queueActivityReward( + db, + { userId, source, amount, hits = 1, minutes = 0, occurredAt = Date.now() } +) { + const numericAmount = Number(amount || 0); + if (!userId || !source || !Number.isFinite(numericAmount) || numericAmount <= 0) { + return; + } + const hourStart = getHourStart(occurredAt); + const numericHits = Number.isFinite(Number(hits)) ? Number(hits) : 0; + const numericMinutes = Number.isFinite(Number(minutes)) ? Number(minutes) : 0; + db.prepare( + "INSERT INTO echonomy_activity_reward_hourly (user_id, hour_start, source, amount, hits, minutes) " + + "VALUES (?, ?, ?, ?, ?, ?) " + + "ON CONFLICT(user_id, hour_start, source) DO UPDATE SET " + + "amount = amount + excluded.amount, " + + "hits = hits + excluded.hits, " + + "minutes = minutes + excluded.minutes" + ).run( + userId, + hourStart, + source, + Math.floor(numericAmount), + Math.max(0, Math.floor(numericHits)), + Math.max(0, Math.floor(numericMinutes)) + ); +} + +function startActivityRewardFlusher(db) { + flushActivityRewards(db); + if (activityFlushTimer) { + return; + } + activityFlushTimer = setInterval(() => { + try { + flushActivityRewards(db); + } catch (error) { + console.error("Activity reward flush failed", error); + } + }, 60 * 1000); +} + +function flushActivityRewards(db) { + const currentHourStart = getHourStart(); + const rows = db + .prepare( + "SELECT user_id, hour_start, source, amount, hits, minutes " + + "FROM echonomy_activity_reward_hourly " + + "WHERE hour_start < ? " + + "ORDER BY hour_start ASC" + ) + .all(currentHourStart); + if (!rows.length) { + return; + } + + const groups = new Map(); + rows.forEach((row) => { + const key = `${row.user_id}:${row.hour_start}`; + if (!groups.has(key)) { + groups.set(key, { + userId: row.user_id, + hourStart: row.hour_start, + rows: [] + }); + } + groups.get(key).rows.push(row); + }); + + for (const group of groups.values()) { + const rewards = group.rows.map((entry) => ({ + source: entry.source, + amount: Number(entry.amount || 0), + hits: Number(entry.hits || 0), + minutes: Number(entry.minutes || 0), + label: ACTIVITY_REWARD_SOURCES[entry.source] || entry.source + })); + const totalAmount = rewards.reduce( + (sum, entry) => sum + Math.max(0, Number(entry.amount || 0)), + 0 + ); + if (totalAmount <= 0) { + db.prepare( + "DELETE FROM echonomy_activity_reward_hourly WHERE user_id = ? AND hour_start = ?" + ).run(group.userId, group.hourStart); + continue; + } + try { + grantBalance(db, { + userId: group.userId, + amount: totalAmount, + note: ACTIVITY_REWARD_NOTE, + meta: { + source: "activity_reward", + hourStart: group.hourStart, + hourEnd: group.hourStart + 60 * 60 * 1000, + rewards + } + }); + db.prepare( + "DELETE FROM echonomy_activity_reward_hourly WHERE user_id = ? AND hour_start = ?" + ).run(group.userId, group.hourStart); + } catch (error) { + console.error("Failed to apply queued activity reward", error); + } + } +} + +function registerFramework(api) { + if (!global.lumiFrameworks) { + global.lumiFrameworks = {}; + } + global.lumiFrameworks.echonomy = api; +} + +function buildApi({ db }) { + return { + getConfig: () => getConfig(db), + getBalance: (userId) => getBalance(db, userId), + addBalance: ({ userId, amount, note, meta, allowFrozen }) => + grantBalance(db, { userId, amount, note, meta, allowFrozen }), + removeBalance: ({ userId, amount, note, meta, allowFrozen }) => + spendBalance(db, { userId, amount, note, meta, allowFrozen }), + transferBalance: ({ fromUserId, toUserId, amount, note, meta, allowFrozen }) => + transferBalance(db, { fromUserId, toUserId, amount, note, meta, allowFrozen }), + createTransaction: (payload) => applyTransaction(db, payload), + on: (event, handler) => emitter.on(event, handler), + off: (event, handler) => emitter.off(event, handler) + }; +} + +function registerCommands({ db, settings, commandRouter }) { + if (!commandRouter) { + return null; + } + const rebuild = () => { + const config = getConfig(db); + const platforms = []; + if (config.platforms.discord) { + platforms.push("discord"); + } + if (config.platforms.twitch) { + platforms.push("twitch"); + } + if (config.platforms.youtube) { + platforms.push("youtube"); + } + if (!platforms.length) { + commandRouter.registerCommands(PLUGIN_ID, []); + return; + } + const triggers = [config.command.root, ...config.command.aliases]; + commandRouter.registerCommands(PLUGIN_ID, [ + { + id: "echonomy:root", + triggers, + platforms, + handler: (ctx) => handleCoinsCommand({ ctx, db, settings }) + } + ]); + }; + rebuild(); + return rebuild; +} + +async function handleCoinsCommand({ ctx, db, settings }) { + const config = getConfig(db); + const prefix = settings.getSetting("command_prefix", "!"); + const root = config.command.root; + const subcommand = (ctx.args[0] || "balance").toLowerCase(); + const args = ctx.args.slice(1); + const usageRoot = `${prefix}${root}`; + const baseTokens = { + currency_name: config.currency.name, + currency_plural: config.currency.plural, + funds_label: config.communityFunds.plural, + fund_label: config.communityFunds.name + }; + + if (subcommand === "help") { + await respond(ctx, config, "help", { + ...baseTokens, + help: buildHelpText({ prefix, root }) + }); + return true; + } + + if (["balance", "bal", "me"].includes(subcommand)) { + const balance = getBalance(db, ctx.user.id); + await respond(ctx, config, "balance_self", { + ...baseTokens, + balance, + balance_text: formatCurrency(balance, config) + }); + return true; + } + + if (["top", "leaderboard"].includes(subcommand)) { + const top = listTopBalances(db, 5); + if (!top.length) { + await respond(ctx, config, "top_empty", baseTokens); + return true; + } + const lines = top + .map((entry, index) => `${index + 1}. ${entry.username}: ${entry.balance}`) + .join(" | "); + await respond(ctx, config, "top_list", { + ...baseTokens, + lines + }); + return true; + } + + if (subcommand === "stats") { + const stats = buildGlobalStats(db); + await respond(ctx, config, "stats", { + ...baseTokens, + total_balance: stats.totalBalance, + total_balance_text: formatCurrency(stats.totalBalance, config), + total_spent: stats.totalSpent, + total_spent_text: formatCurrency(stats.totalSpent, config) + }); + return true; + } + + if (["pay", "give", "transfer"].includes(subcommand)) { + const targetToken = args[0]; + const amount = parseAmount(args[1]); + if (!targetToken || !Number.isFinite(amount)) { + await respond(ctx, config, "pay_missing", { + ...baseTokens, + usage: `${usageRoot} pay [note]` + }); + return true; + } + const cooldownLeft = getCooldownLeft(ctx.user.id, config); + if (cooldownLeft > 0) { + await respond(ctx, config, "pay_cooldown", { + ...baseTokens, + cooldown: cooldownLeft + }); + return true; + } + const note = args.slice(2).join(" ").trim(); + const target = await resolveTargetUser(db, ctx, targetToken); + if (!target) { + await respond(ctx, config, "pay_not_found", baseTokens); + return true; + } + if (target.profile.id === ctx.user.id) { + await respond(ctx, config, "pay_self", baseTokens); + return true; + } + const success = transferBalance(db, { + fromUserId: ctx.user.id, + toUserId: target.profile.id, + amount, + note, + meta: { platform: ctx.platform } + }); + if (!success.ok) { + await respond(ctx, config, "pay_insufficient", { + ...baseTokens, + reason: success.message || "Transfer failed." + }); + return true; + } + setCooldown(ctx.user.id); + await respond(ctx, config, "pay_success", { + ...baseTokens, + amount, + amount_text: formatCurrency(amount, config), + target: target.label + }); + return true; + } + + if (["grant", "giveadmin"].includes(subcommand)) { + const role = getRoleFlags(ctx); + if (!role.isAdmin && !role.isMod) { + await respond(ctx, config, "permission_denied", baseTokens); + return true; + } + const targetToken = args[0]; + const amount = parseAmount(args[1]); + if (!targetToken || !Number.isFinite(amount)) { + await respond(ctx, config, "pay_missing", { + ...baseTokens, + usage: `${usageRoot} grant [note]` + }); + return true; + } + const note = args.slice(2).join(" ").trim(); + const target = await resolveTargetUser(db, ctx, targetToken); + if (!target) { + await respond(ctx, config, "pay_not_found", baseTokens); + return true; + } + grantBalance(db, { + userId: target.profile.id, + amount, + note, + meta: { actorId: ctx.user.id, platform: ctx.platform } + }); + await respond(ctx, config, "grant_success", { + ...baseTokens, + amount, + amount_text: formatCurrency(amount, config), + target: target.label + }); + return true; + } + + if (["take", "remove"].includes(subcommand)) { + const role = getRoleFlags(ctx); + if (!role.isAdmin && !role.isMod) { + await respond(ctx, config, "permission_denied", baseTokens); + return true; + } + const targetToken = args[0]; + const amount = parseAmount(args[1]); + if (!targetToken || !Number.isFinite(amount)) { + await respond(ctx, config, "pay_missing", { + ...baseTokens, + usage: `${usageRoot} take [note]` + }); + return true; + } + const note = args.slice(2).join(" ").trim(); + const target = await resolveTargetUser(db, ctx, targetToken); + if (!target) { + await respond(ctx, config, "pay_not_found", baseTokens); + return true; + } + spendBalance(db, { + userId: target.profile.id, + amount, + note, + meta: { actorId: ctx.user.id, platform: ctx.platform } + }); + await respond(ctx, config, "take_success", { + ...baseTokens, + amount, + amount_text: formatCurrency(amount, config), + target: target.label + }); + return true; + } + + if (["funds", "fund", "goals"].includes(subcommand)) { + const funds = listFunds(db); + if (!funds.length) { + await respond(ctx, config, "funds_empty", baseTokens); + return true; + } + const lines = funds + .map((fund) => `${fund.name}: ${fund.current_amount}/${fund.target_amount}`) + .join(" | "); + await respond(ctx, config, "funds_list", { + ...baseTokens, + lines + }); + return true; + } + + if (subcommand === "donate") { + const fundName = args[0]; + const amount = parseAmount(args[1]); + if (!fundName || !Number.isFinite(amount)) { + await respond(ctx, config, "fund_missing", { + ...baseTokens, + usage: `${usageRoot} donate ` + }); + return true; + } + const cooldownLeft = getCooldownLeft(ctx.user.id, config); + if (cooldownLeft > 0) { + await respond(ctx, config, "pay_cooldown", { + ...baseTokens, + cooldown: cooldownLeft + }); + return true; + } + const fund = findFund(db, fundName); + if (!fund || fund.status !== "active") { + await respond(ctx, config, "fund_not_found", baseTokens); + return true; + } + const success = spendBalance(db, { + userId: ctx.user.id, + amount, + note: `Donation to ${fund.name}`, + meta: { fundId: fund.id } + }); + if (!success.ok) { + await respond(ctx, config, "pay_insufficient", { + ...baseTokens, + reason: success.message || "Donation failed." + }); + return true; + } + addFundContribution(db, fund.id, ctx.user.id, amount); + setCooldown(ctx.user.id); + await respond(ctx, config, "fund_donate_success", { + ...baseTokens, + amount, + amount_text: formatCurrency(amount, config), + fund: fund.name + }); + return true; + } + + if (subcommand === "reward") { + const role = getRoleFlags(ctx); + if (!role.isAdmin && !role.isMod) { + await respond(ctx, config, "permission_denied", baseTokens); + return true; + } + const eventKey = args[0]; + const targetToken = args[1]; + if (!eventKey || !targetToken) { + await respond(ctx, config, "reward_missing", { + ...baseTokens, + usage: `${usageRoot} reward ` + }); + return true; + } + const event = getCustomEvents(config).find( + (entry) => entry.id === eventKey || entry.name.toLowerCase() === eventKey.toLowerCase() + ); + if (!event) { + await respond(ctx, config, "reward_not_found", baseTokens); + return true; + } + const target = await resolveTargetUser(db, ctx, targetToken); + if (!target) { + await respond(ctx, config, "pay_not_found", baseTokens); + return true; + } + grantBalance(db, { + userId: target.profile.id, + amount: event.amount, + note: `Event reward: ${event.name}`, + meta: { eventId: event.id } + }); + await respond(ctx, config, "reward_success", { + ...baseTokens, + amount: event.amount, + amount_text: formatCurrency(event.amount, config), + target: target.label + }); + return true; + } + + await respond(ctx, config, "help", { + ...baseTokens, + help: buildHelpText({ prefix, root }) + }); + return true; +} + +function buildHelpText({ prefix, root }) { + return ( + `Commands: ${prefix}${root} balance | ${prefix}${root} pay | ` + + `${prefix}${root} top | ${prefix}${root} stats | ${prefix}${root} funds | ` + + `${prefix}${root} donate ` + ); +} + +function getRoleFlags(ctx) { + if (ctx.platform === "discord") { + const roles = ctx.meta?.message?.member?.roles?.cache; + if (!roles) { + return { isAdmin: false, isMod: false }; + } + const adminIds = parseList(settingsApi?.getSetting?.("discord_admin_role_id")); + const modIds = parseList(settingsApi?.getSetting?.("discord_mod_role_id")); + const roleIds = Array.from(roles.keys()); + const isAdmin = roleIds.some((roleId) => adminIds.includes(roleId)); + const isMod = roleIds.some((roleId) => modIds.includes(roleId)); + return { isAdmin, isMod }; + } + if (ctx.platform === "twitch") { + const badges = ctx.meta?.tags?.badges || {}; + const isAdmin = Boolean(badges.broadcaster); + const isMod = Boolean(ctx.meta?.tags?.mod || badges.moderator); + return { isAdmin, isMod }; + } + if (ctx.platform === "youtube") { + const author = ctx.meta?.author || {}; + const isAdmin = Boolean(author.isChatOwner); + const isMod = Boolean(author.isChatModerator); + return { isAdmin, isMod }; + } + return { isAdmin: false, isMod: false }; +} + +function parseAmount(value) { + if (value === undefined || value === null) { + return NaN; + } + const number = Number(value); + if (!Number.isFinite(number)) { + return NaN; + } + if (number <= 0) { + return NaN; + } + return Math.floor(number); +} + +function parseSignedAmount(value) { + if (value === undefined || value === null) { + return NaN; + } + const number = Number(value); + if (!Number.isFinite(number)) { + return NaN; + } + if (number === 0) { + return 0; + } + const rounded = number > 0 ? Math.floor(number) : Math.ceil(number); + return rounded; +} + +function formatCurrency(amount, config) { + const name = amount === 1 ? config.currency.name : config.currency.plural; + return `${amount} ${name}`; +} + +function pickResponse(template) { + const replies = Array.isArray(template?.replies) ? template.replies : []; + if (!replies.length) { + return ""; + } + if (template.mode === "weighted") { + const total = replies.reduce( + (sum, entry) => sum + Math.max(0, Number(entry.weight || 0)), + 0 + ); + if (total > 0) { + let roll = Math.random() * total; + for (const entry of replies) { + roll -= Math.max(0, Number(entry.weight || 0)); + if (roll <= 0) { + return entry.text || ""; + } + } + } + } + const fallback = replies[Math.floor(Math.random() * replies.length)]; + return fallback?.text || ""; +} + +function renderTemplate(text, tokens) { + const safeText = (text || "").toString(); + return safeText.replace(/\{([a-zA-Z0-9_]+)\}/g, (_match, key) => { + if (Object.prototype.hasOwnProperty.call(tokens, key)) { + return tokens[key]; + } + return `{${key}}`; + }); +} + +function buildResponse(config, key, tokens) { + const template = config.responses?.[key] || DEFAULT_RESPONSES[key]; + if (!template) { + return ""; + } + const text = pickResponse(template); + if (!text) { + return ""; + } + return renderTemplate(text, tokens); +} + +async function respond(ctx, config, key, tokens) { + const message = buildResponse(config, key, tokens); + if (!message) { + return; + } + await ctx.reply(message); +} + +function escapeHtml(value) { + return (value || "") + .toString() + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """) + .replace(/'/g, "'"); +} + +function installProfileHook(app, getConfig) { + if (!app || app.__echonomyProfileHookInstalled) { + return; + } + app.__echonomyProfileHookInstalled = true; + const originalRender = app.render.bind(app); + app.render = (view, options, callback) => { + if (typeof options === "function") { + callback = options; + options = {}; + } + if (typeof callback !== "function" || view !== "profile") { + return originalRender(view, options, callback); + } + const config = getConfig ? getConfig() : null; + if (!config?.banking?.enabled) { + return originalRender(view, options, callback); + } + return originalRender(view, options, (err, html) => { + if (err) { + return callback(err); + } + try { + if (!html.includes('href="/profile/banking"')) { + const label = escapeHtml(config.banking.label || "Banking"); + const marker = ' + + + + diff --git a/src/web/views/partials/layout-top.ejs b/src/web/views/partials/layout-top.ejs new file mode 100644 index 0000000..e880081 --- /dev/null +++ b/src/web/views/partials/layout-top.ejs @@ -0,0 +1,141 @@ + + + + + + <%= title %> - <%= siteTitle %> + + <% if (theme) { %> + + <% } %> + + + <% const icons = { + home: '', + spark: '', + shield: '', + gear: '', + blocks: '' + }; %> +
      + +
      +
      + + <%= siteTitle %> +
      +
      + <% if (flash) { %> +
      <%= flash.message %>
      + <% } %> + diff --git a/src/web/views/plugin-expression.ejs b/src/web/views/plugin-expression.ejs new file mode 100644 index 0000000..27a033b --- /dev/null +++ b/src/web/views/plugin-expression.ejs @@ -0,0 +1,163 @@ +<%- include("partials/layout-top", { title }) %> +
      +

      Expression Interaction

      +

      Roleplay friendly interactions from Discord or Twitch with quick commands.

      +

      + Commands: + <% const enabledActions = actions.filter((action) => action.enabled); %> + <% if (!enabledActions.length) { %> + None enabled yet. + <% } else { %> + <%= enabledActions.map((action) => `!${action.command}`).join(", ") %> + <% } %> +

      +
      + +
      +

      Your stats

      + <% if (!stats) { %> +

      Sign in to see how many actions you have given or received.

      + <% } else { %> +
      +
      + Given + <%= stats.totals.given %> +
      +
      + Received + <%= stats.totals.received %> +
      +
      + + + + + + + + + + <% actions.forEach((action) => { %> + <% const row = stats.byAction[action.id] || { given_count: 0, received_count: 0 }; %> + + + + + + <% }) %> + +
      ActionGivenReceived
      <%= action.command %><%= row.given_count %><%= row.received_count %>
      + <% } %> +
      + +
      +

      Global stats

      +
      +
      + Total interactions + <%= globalStats.total %> +
      +
      + <% if (!globalStats.byAction.length) { %> +

      No interactions recorded yet.

      + <% } else { %> + + + + + + + + + <% globalStats.byAction.forEach((row) => { %> + <% const action = actions.find((item) => item.id === row.action); %> + + + + + <% }) %> + +
      ActionTotal
      <%= action ? action.command : row.action %><%= row.count %>
      + <% } %> +
      + +<% if (isAdmin) { %> +
      +

      Settings

      + <% if (conflicts && conflicts.length) { %> +
      + Conflicting command names: <%= conflicts.join(", ") %>. Rename the duplicates. +
      + <% } %> +
      +
      + + +
      +
      + + +
      +
      + + + + + + + + + + <% actions.forEach((action) => { %> + + + + + + <% }) %> + +
      ActionEnabledCommand name
      <%= action.id %> + + + +
      +

      Command names are lowercased; spaces become dashes.

      +
      +
      + +
      +
      +
      +<% } %> + +<%- include("partials/layout-bottom") %> diff --git a/src/web/views/plugin-page.ejs b/src/web/views/plugin-page.ejs new file mode 100644 index 0000000..2ce0537 --- /dev/null +++ b/src/web/views/plugin-page.ejs @@ -0,0 +1,6 @@ +<%- include("partials/layout-top", { title }) %> +
      +

      <%= title %>

      +

      <%= content %>

      +
      +<%- include("partials/layout-bottom") %> diff --git a/src/web/views/profile.ejs b/src/web/views/profile.ejs new file mode 100644 index 0000000..4c3f0dd --- /dev/null +++ b/src/web/views/profile.ejs @@ -0,0 +1,150 @@ +<%- include("partials/layout-top", { title }) %> +
      +
      +
      +

      Your profile

      +

      Link external accounts to unlock integrations.

      +
      +
      + +
      +
      +
      +

      Username

      +

      Shown across the bot and community features.

      +
      + <% if (canChangeUsername) { %> + + <% } else { %> + + <% } %> +
      +
      + Current username + <%= profile.internal_username %> +
      + <% if (canChangeUsername) { %> +

      You can change your username once every <%= usernameCooldownDays %> days.

      + <% } else { %> +

      Username changes are on cooldown. Try again in <%= usernameCooldownRemainingDays %> day(s).

      + <% } %> +
      + +
      +

      Link external accounts

      + <% const linkedProviders = new Set((accounts || []).map((account) => account.provider)); %> +
      + <% if (platformLinks && platformLinks.length) { %> + <% platformLinks.forEach((platform) => { %> + <% if (linkedProviders.has(platform.id)) { %> + Linked <%= platform.label %> + <% } else if (platform.configured) { %> + Link <%= platform.label %> + <% } else { %> + Link <%= platform.label %> + <% } %> + <% }) %> + <% } else { %> +

      No additional platform links are available.

      + <% } %> +
      +
      + +
      +

      Linked accounts

      + <% if (!accounts.length) { %> +

      No linked accounts yet.

      + <% } else { %> +
        + <% accounts.forEach((account) => { %> +
      • + <%= account.provider %> + <%= account.display_name || account.provider_user_id %> + <% if (account.provider !== "discord") { %> +
        + +
        + <% } %> +
      • + <% }) %> +
      + <% } %> +
      + + <% if (profileSections && profileSections.length) { %> +
      +

      Personalized

      +
      + <% profileSections.forEach((section) => { %> +
      + <% if (section.label) { %> +

      <%= section.label %>

      + <% } %> + <% if (section.view) { %> + <%- include(section.view, section.locals) %> + <% } else if (section.content) { %> + <%- section.content %> + <% } %> +
      + <% }) %> +
      +
      + <% } %> +
      + + + + + +<%- include("partials/layout-bottom") %> diff --git a/src/web/views/setup.ejs b/src/web/views/setup.ejs new file mode 100644 index 0000000..89034ac --- /dev/null +++ b/src/web/views/setup.ejs @@ -0,0 +1,20 @@ +<%- include("partials/layout-top", { title }) %> +
      +

      Initial setup

      +

      Enable the platforms you plan to use, then run each wizard to configure credentials.

      +

      Once at least one platform is configured, you can log in and manage everything from the WebUI.

      +
      + <% (platforms || []).forEach((platform) => { %> +
      +

      <%= platform.label %>

      + <% if (!platform.supported) { %> +

      Support coming soon.

      + <% } else { %> +

      Run the guided setup for <%= platform.label %>.

      + Start <%= platform.label %> setup + <% } %> +
      + <% }) %> +
      +
      +<%- include("partials/layout-bottom") %> diff --git a/src/web/views/stats.ejs b/src/web/views/stats.ejs new file mode 100644 index 0000000..9b0ce33 --- /dev/null +++ b/src/web/views/stats.ejs @@ -0,0 +1,119 @@ +<%- include("partials/layout-top", { title }) %> +<% const statsTitle = statsOwner && !statsOwner.isSelf ? `${statsOwner.username}'s stats` : "Your stats"; %> +
      +
      +

      <%= statsTitle %>

      + <% if (compare) { %> + + <% } %> +
      +
      + +
      +
      +

      Community Interaction

      + <% if (!stats) { %> +

      No stats yet. Send a message or run a command to appear here.

      + <% } else { %> +
      +
      + Messages + <%= stats.messages %> +
      +
      + Commands + <%= stats.commands %> +
      +
      + <% } %> +
      + +
      +

      Expression Interaction

      + <% if (!expression) { %> +

      This category will appear once the Expression Interaction plugin is active.

      + <% } else { %> +
      +
      + Actions given + <%= expression.totals.given %> +
      +
      + Actions received + <%= expression.totals.received %> +
      +
      + <% } %> +
      + + <% (pluginStats || []).forEach((section) => { %> +
      +

      <%= section.title %>

      + <% if (!section.stats || !section.stats.length) { %> +

      <%= section.emptyMessage %>

      + <% } else { %> +
      + <% section.stats.forEach((stat) => { %> +
      + <%= stat.label %> + <%= stat.value %> +
      + <% }) %> +
      + <% } %> +
      + <% }) %> +
      + +<% if (compare) { %> +
      +
      +

      Compare stats

      +
      + +
      +
      +
      + + + + + + + + + + + <% compare.rows.forEach((row) => { %> + + + + + + + <% }) %> + +
      SectionStat<%= compare.leftLabel %><%= compare.rightLabel %>
      <%= row.section %><%= row.label %><%= row.left ?? '-' %><%= row.right ?? '-' %>
      +
      +
      +<% } %> +<%- include("partials/layout-bottom") %> diff --git a/src/web/views/wizard-discord.ejs b/src/web/views/wizard-discord.ejs new file mode 100644 index 0000000..ff5f549 --- /dev/null +++ b/src/web/views/wizard-discord.ejs @@ -0,0 +1,85 @@ +<%- include("partials/layout-top", { title }) %> +
      +

      Discord setup wizard

      +

      Follow the steps below. We will verify your details before saving anything.

      +
        +
      1. Create a Discord application and bot in the Discord Developer Portal.
      2. +
      3. Copy the Client ID, Client Secret, Bot Token, and your Server (Guild) ID.
      4. +
      5. Paste them here and click Verify and save.
      6. +
      + + <% if (errors && errors.length) { %> +
      + We could not verify your Discord settings: +
        + <% errors.forEach((error) => { %> +
      • <%= error %>
      • + <% }) %> +
      +
      + <% } %> + + <% if (checks && checks.length) { %> +
      + Verification checks passed: +
        + <% checks.forEach((check) => { %> +
      • <%= check %>
      • + <% }) %> +
      +
      + <% } %> + +
      +
      + + + Find this in Discord Developer Portal → OAuth2 → General. +
      +
      + + + Create or copy it from OAuth2 → General. +
      +
      + + + Find this in the Bot tab (Reset Token if needed). +
      +
      + + + Enable Developer Mode in Discord, then right-click your server to copy the ID. +
      +
      + + +
      +
      + + +
      +
      + + + Use the same redirect URI in the Discord app settings. +
      +
      + Required OAuth scopes: identify, guilds, guilds.members.read. +
      + + +
      +
      +<%- include("partials/layout-bottom") %> diff --git a/src/web/views/wizard-twitch.ejs b/src/web/views/wizard-twitch.ejs new file mode 100644 index 0000000..2104fcf --- /dev/null +++ b/src/web/views/wizard-twitch.ejs @@ -0,0 +1,80 @@ +<%- include("partials/layout-top", { title }) %> +
      +

      Twitch setup wizard

      +

      We will verify your Twitch settings before saving anything.

      +
        +
      1. Create a Twitch developer app and copy the Client ID and Client Secret.
      2. +
      3. Optional: generate a bot chat token and paste it with the bot username.
      4. +
      5. Click Verify and save.
      6. +
      + + <% if (errors && errors.length) { %> +
      + We could not verify your Twitch settings: +
        + <% errors.forEach((error) => { %> +
      • <%= error %>
      • + <% }) %> +
      +
      + <% } %> + + <% if (checks && checks.length) { %> +
      + Verification checks passed: +
        + <% checks.forEach((check) => { %> +
      • <%= check %>
      • + <% }) %> +
      +
      + <% } %> + +
      +
      + + + Find this in the Twitch Developer Console for your app. +
      +
      + + + Generate it in the Twitch Developer Console. +
      +
      + + + Use the same redirect URI in the Twitch app settings. +
      + +
      + + +
      +
      + + + Get a chat token from https://twitchapps.com/tmi/ +
      +
      + + + Example: cozycarnage, anotherchannel +
      + + + +
      +
      +<%- include("partials/layout-bottom") %> diff --git a/src/web/views/wizard-youtube.ejs b/src/web/views/wizard-youtube.ejs new file mode 100644 index 0000000..56bdffd --- /dev/null +++ b/src/web/views/wizard-youtube.ejs @@ -0,0 +1,91 @@ +<%- include("partials/layout-top", { title }) %> +
      +

      YouTube setup wizard

      +

      We will verify your YouTube settings before saving anything.

      +
        +
      1. Create a Google Cloud project and enable the YouTube Data API v3.
      2. +
      3. Create OAuth credentials and add the redirect URI below.
      4. +
      5. Connect the YouTube bot account to grant chat and moderation access.
      6. +
      7. Click Verify and save.
      8. +
      + + <% if (errors && errors.length) { %> +
      + We could not verify your YouTube settings: +
        + <% errors.forEach((error) => { %> +
      • <%= error %>
      • + <% }) %> +
      +
      + <% } %> + + <% if (checks && checks.length) { %> +
      + Verification checks passed: +
        + <% checks.forEach((check) => { %> +
      • <%= check %>
      • + <% }) %> +
      +
      + <% } %> + +
      +
      + + + Copy this from Google Cloud OAuth credentials. +
      +
      + + + Use the client secret from your OAuth credentials. +
      +
      + + + Use the same redirect URI in the OAuth client settings. +
      + +
      + + <% if (botConnected) { %> + + Connected as + <%= botChannelName || "YouTube channel" %> + <% if (botChannelId) { %> + (Channel ID: <%= botChannelId %>) + <% } %> + + <% } else { %> + Not connected yet. + <% } %> +
      + +
      + +
      + + + +
      +
      +<%- include("partials/layout-bottom") %>
      '; + if (html.includes(marker)) { + html = html.replace( + marker, + `${marker}\n ${label}` + ); + } + } + } catch { + // ignore injection errors + } + return callback(null, html); + }); + }; +} + +function getCooldownLeft(userId, config) { + const last = transferCooldowns.get(userId) || 0; + const now = Date.now(); + const cooldown = (config.cooldownSeconds || 10) * 1000; + const diff = cooldown - (now - last); + return diff > 0 ? Math.ceil(diff / 1000) : 0; +} + +function setCooldown(userId) { + transferCooldowns.set(userId, Date.now()); +} + +async function resolveTargetUser(db, ctx, token) { + if (!token) { + return null; + } + if (ctx.platform === "discord") { + const message = ctx.meta?.message; + if (message?.mentions?.users?.first) { + const mention = message.mentions.users.first(); + const display = + mention.globalName || mention.username || mention.tag || mention.id; + const profile = ensureUserForIdentity({ + provider: "discord", + providerUserId: mention.id, + displayName: display, + avatar: mention.avatar + ? `https://cdn.discordapp.com/avatars/${mention.id}/${mention.avatar}.png?size=128` + : null + }); + return { profile, label: `<@${mention.id}>` }; + } + const idMatch = token.match(/^<@!?(\d+)>$/) || token.match(/^(\d{15,})$/); + if (idMatch) { + const profile = ensureUserForIdentity({ + provider: "discord", + providerUserId: idMatch[1], + displayName: idMatch[1] + }); + return { profile, label: `<@${idMatch[1]}>` }; + } + } + + const cleaned = token.replace(/^@/, "").trim(); + if (!cleaned) { + return null; + } + + const internal = findUserByInternalName(db, cleaned); + if (internal) { + return { profile: internal, label: internal.internal_username }; + } + + if (ctx.platform === "twitch") { + const profile = ensureUserForIdentity({ + provider: "twitch_login", + providerUserId: cleaned.toLowerCase(), + displayName: cleaned, + fallbackName: cleaned + }); + return { profile, label: `@${cleaned}` }; + } + + if (ctx.platform === "youtube") { + const profile = ensureUserForIdentity({ + provider: "youtube_name", + providerUserId: cleaned.toLowerCase(), + displayName: cleaned, + fallbackName: cleaned + }); + return { profile, label: cleaned }; + } + + const profile = ensureUserForIdentity({ + provider: "echonomy_name", + providerUserId: cleaned.toLowerCase(), + displayName: cleaned, + fallbackName: cleaned + }); + return { profile, label: cleaned }; +} + +function findUserByInternalName(db, name) { + return db + .prepare( + "SELECT id, internal_username FROM user_profiles WHERE lower(internal_username) = lower(?)" + ) + .get(name); +} + +function ensureAccount(db, userId) { + db.prepare( + "INSERT INTO echonomy_accounts (user_id, balance, updated_at) VALUES (?, 0, ?) " + + "ON CONFLICT(user_id) DO UPDATE SET updated_at = excluded.updated_at" + ).run(userId, Date.now()); +} + +function getBalance(db, userId) { + if (!userId) { + return 0; + } + const row = db + .prepare("SELECT balance FROM echonomy_accounts WHERE user_id = ?") + .get(userId); + return row?.balance ?? 0; +} + +function updateBalance(db, userId, delta) { + ensureAccount(db, userId); + db.prepare( + "UPDATE echonomy_accounts SET balance = balance + ?, updated_at = ? WHERE user_id = ?" + ).run(delta, Date.now(), userId); +} + +function isFrozenUser(userId) { + try { + return Boolean(global.lumiModeration?.isFrozen?.(userId)); + } catch { + return false; + } +} + +function applyTransaction(db, payload) { + const amount = Math.abs(Number(payload.amount)); + if (!Number.isFinite(amount) || amount <= 0) { + throw new Error("Invalid amount."); + } + const id = payload.id || crypto.randomUUID(); + const now = Date.now(); + const fromUserId = payload.fromUserId || null; + const toUserId = payload.toUserId || null; + const note = payload.note || null; + const meta = payload.meta ? JSON.stringify(payload.meta) : null; + if (!payload.allowFrozen) { + if (fromUserId && isFrozenUser(fromUserId)) { + throw new Error("Account is frozen."); + } + if (toUserId && isFrozenUser(toUserId)) { + throw new Error("Account is frozen."); + } + } + + db.transaction(() => { + if (fromUserId) { + ensureAccount(db, fromUserId); + const current = getBalance(db, fromUserId); + if (!payload.allowNegative && current < amount) { + throw new Error("Insufficient balance."); + } + updateBalance(db, fromUserId, -amount); + } + if (toUserId) { + ensureAccount(db, toUserId); + updateBalance(db, toUserId, amount); + } + db.prepare( + "INSERT INTO echonomy_transactions (id, type, amount, from_user_id, to_user_id, note, meta, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)" + ).run( + id, + payload.type || "transaction", + amount, + fromUserId, + toUserId, + note, + meta, + now + ); + })(); + + emitter.emit("transaction", { + id, + type: payload.type, + amount, + fromUserId, + toUserId, + note, + meta: payload.meta || null, + createdAt: now + }); + return id; +} + +function transferBalance(db, { fromUserId, toUserId, amount, note, meta, allowFrozen }) { + try { + applyTransaction(db, { + type: "transfer", + amount, + fromUserId, + toUserId, + note, + meta, + allowNegative: false, + allowFrozen: Boolean(allowFrozen) + }); + return { ok: true }; + } catch (error) { + return { ok: false, message: error.message || "Transfer failed." }; + } +} + +function grantBalance(db, { userId, amount, note, meta, allowFrozen }) { + return applyTransaction(db, { + type: "earn", + amount, + fromUserId: null, + toUserId: userId, + note, + meta, + allowNegative: true, + allowFrozen: Boolean(allowFrozen) + }); +} + +function spendBalance(db, { userId, amount, note, meta, allowFrozen }) { + try { + applyTransaction(db, { + type: "spend", + amount, + fromUserId: userId, + toUserId: null, + note, + meta, + allowNegative: false, + allowFrozen: Boolean(allowFrozen) + }); + return { ok: true }; + } catch (error) { + return { ok: false, message: error.message || "Spend failed." }; + } +} + +function adjustBalance(db, { userId, amount, note, meta }) { + if (amount === 0) { + return; + } + if (amount > 0) { + applyTransaction(db, { + type: "adjust", + amount, + fromUserId: null, + toUserId: userId, + note, + meta, + allowNegative: true + }); + return; + } + applyTransaction(db, { + type: "adjust", + amount: Math.abs(amount), + fromUserId: userId, + toUserId: null, + note, + meta, + allowNegative: true + }); +} + +function listTransactions(db, { userId, limit }) { + const params = []; + let where = ""; + if (userId) { + where = "WHERE t.from_user_id = ? OR t.to_user_id = ?"; + params.push(userId, userId); + } + params.push(limit || 100); + return db + .prepare( + "SELECT t.*, fromUser.internal_username AS from_name, toUser.internal_username AS to_name " + + "FROM echonomy_transactions t " + + "LEFT JOIN user_profiles AS fromUser ON fromUser.id = t.from_user_id " + + "LEFT JOIN user_profiles AS toUser ON toUser.id = t.to_user_id " + + `${where} ORDER BY t.created_at DESC LIMIT ?` + ) + .all(...params) + .map((row) => normalizeTransactionRow(row)); +} + +function normalizeTransactionRow(row) { + const tx = { ...row }; + const note = (row.note || "").toString(); + const meta = parseTransactionMeta(row.meta); + tx.meta_object = meta; + tx.note_display = note || "-"; + tx.note_search = note || ""; + tx.activity_reward = null; + + if (meta?.source === "activity_reward") { + const rewards = Array.isArray(meta.rewards) + ? meta.rewards + .map((entry) => ({ + source: (entry?.source || "").toString(), + label: + ACTIVITY_REWARD_SOURCES[(entry?.source || "").toString()] || + (entry?.label || entry?.source || "Activity"), + amount: Number(entry?.amount || 0), + hits: Number(entry?.hits || 0), + minutes: Number(entry?.minutes || 0) + })) + .filter((entry) => entry.amount > 0) + : []; + tx.activity_reward = { + hourStart: Number(meta.hourStart || 0), + hourEnd: Number(meta.hourEnd || 0), + rewards + }; + tx.note_display = ACTIVITY_REWARD_NOTE; + tx.note_search = [ + ACTIVITY_REWARD_NOTE, + ...rewards.map((entry) => `${entry.label} ${entry.amount} ${entry.hits} ${entry.minutes}`) + ].join(" "); + } + return tx; +} + +function parseTransactionMeta(rawMeta) { + if (!rawMeta) { + return null; + } + if (typeof rawMeta === "object") { + return rawMeta; + } + try { + return JSON.parse(rawMeta); + } catch { + return null; + } +} + +function buildGlobalStats(db) { + const totalBalance = db + .prepare("SELECT COALESCE(SUM(balance), 0) AS total FROM echonomy_accounts") + .get(); + const totalSpent = db + .prepare( + "SELECT COALESCE(SUM(amount), 0) AS total FROM echonomy_transactions " + + "WHERE from_user_id IS NOT NULL AND (to_user_id IS NULL OR to_user_id = '')" + ) + .get(); + const totalTransactions = db + .prepare("SELECT COUNT(*) AS count FROM echonomy_transactions") + .get(); + return { + totalBalance: totalBalance?.total || 0, + totalSpent: totalSpent?.total || 0, + totalTransactions: totalTransactions?.count || 0 + }; +} + +function buildUserStats(db, userId) { + if (!userId) { + return { + balance: 0, + totalEarned: 0, + totalSpent: 0, + totalReceived: 0, + totalSent: 0 + }; + } + const balance = getBalance(db, userId); + const totalEarned = db + .prepare( + "SELECT COALESCE(SUM(amount), 0) AS total FROM echonomy_transactions " + + "WHERE to_user_id = ? AND (from_user_id IS NULL OR from_user_id = '')" + ) + .get(userId); + const totalSpent = db + .prepare( + "SELECT COALESCE(SUM(amount), 0) AS total FROM echonomy_transactions " + + "WHERE from_user_id = ? AND (to_user_id IS NULL OR to_user_id = '')" + ) + .get(userId); + const totalReceived = db + .prepare( + "SELECT COALESCE(SUM(amount), 0) AS total FROM echonomy_transactions " + + "WHERE to_user_id = ? AND from_user_id IS NOT NULL AND from_user_id != ''" + ) + .get(userId); + const totalSent = db + .prepare( + "SELECT COALESCE(SUM(amount), 0) AS total FROM echonomy_transactions " + + "WHERE from_user_id = ? AND to_user_id IS NOT NULL AND to_user_id != ''" + ) + .get(userId); + return { + balance, + totalEarned: totalEarned?.total || 0, + totalSpent: totalSpent?.total || 0, + totalReceived: totalReceived?.total || 0, + totalSent: totalSent?.total || 0 + }; +} + +function listTopBalances(db, limit) { + return db + .prepare( + "SELECT user_profiles.internal_username AS username, echonomy_accounts.balance AS balance " + + "FROM echonomy_accounts " + + "JOIN user_profiles ON user_profiles.id = echonomy_accounts.user_id " + + "ORDER BY echonomy_accounts.balance DESC LIMIT ?" + ) + .all(limit); +} + +function listFunds(db) { + return db + .prepare("SELECT * FROM echonomy_pots WHERE status != 'archived' ORDER BY name") + .all(); +} + +function formatProviderLabel(provider) { + const normalized = (provider || "").toLowerCase(); + const map = { + discord: "Discord", + twitch: "Twitch", + twitch_login: "Twitch", + youtube: "YouTube", + youtube_name: "YouTube", + echonomy_name: "Internal" + }; + if (map[normalized]) { + return map[normalized]; + } + if (!normalized) { + return "Account"; + } + return normalized.charAt(0).toUpperCase() + normalized.slice(1); +} + +function listUserDirectory(db) { + const rows = db + .prepare( + "SELECT user_profiles.id AS user_id, user_profiles.internal_username AS internal_username, " + + "user_identities.provider AS provider, user_identities.display_name AS display_name, " + + "user_identities.provider_user_id AS provider_user_id " + + "FROM user_profiles " + + "LEFT JOIN user_identities ON user_identities.user_id = user_profiles.id " + + "ORDER BY user_profiles.internal_username" + ) + .all(); + const map = new Map(); + rows.forEach((row) => { + if (!map.has(row.user_id)) { + map.set(row.user_id, { + id: row.user_id, + internal: row.internal_username || "", + identities: [] + }); + } + if (row.provider) { + const display = row.display_name || row.provider_user_id || ""; + map.get(row.user_id).identities.push({ + provider: row.provider, + label: formatProviderLabel(row.provider), + display + }); + } + }); + return Array.from(map.values()); +} + +function findFund(db, name) { + return db + .prepare("SELECT * FROM echonomy_pots WHERE lower(name) = lower(?)") + .get(name); +} + +function createFund(db, { name, description, targetAmount }) { + const now = Date.now(); + db.prepare( + "INSERT INTO echonomy_pots (id, name, description, target_amount, current_amount, status, created_at, updated_at) VALUES (?, ?, ?, ?, 0, 'active', ?, ?)" + ).run(crypto.randomUUID(), name, description || "", targetAmount || 0, now, now); +} + +function updateFund(db, { id, name, description, targetAmount, status }) { + db.prepare( + "UPDATE echonomy_pots SET name = ?, description = ?, target_amount = ?, status = ?, updated_at = ? WHERE id = ?" + ).run( + name, + description || "", + Number.isFinite(targetAmount) ? targetAmount : 0, + status || "active", + Date.now(), + id + ); +} + +function addFundContribution(db, fundId, userId, amount) { + const now = Date.now(); + db.transaction(() => { + db.prepare( + "INSERT INTO echonomy_pot_contributions (id, pot_id, user_id, amount, created_at) VALUES (?, ?, ?, ?, ?)" + ).run(crypto.randomUUID(), fundId, userId, amount, now); + db.prepare( + "UPDATE echonomy_pots SET current_amount = current_amount + ?, updated_at = ? WHERE id = ?" + ).run(amount, now, fundId); + })(); +} + +function attachDiscordListeners({ db, settings, discordClient }) { + if (!discordClient) { + return; + } + discordClient.on("messageCreate", (message) => { + if (!message || message.author?.bot) { + return; + } + const config = getConfig(db); + if (!config.platforms.discord || !config.earn.discordMessage.enabled) { + return; + } + const userId = message.author.id; + const key = `discord:${userId}`; + const last = messageCooldowns.get(key) || 0; + const now = Date.now(); + if (now - last < config.earn.discordMessage.cooldown * 1000) { + return; + } + const displayName = + message.author.globalName || message.author.username || message.author.tag; + const profile = ensureUserForIdentity({ + provider: "discord", + providerUserId: userId, + displayName, + avatar: message.author.avatar + ? `https://cdn.discordapp.com/avatars/${userId}/${message.author.avatar}.png?size=128` + : null + }); + const multiplier = getDiscordTierMultiplier(message, config); + const reward = Math.max( + 0, + Math.floor(config.earn.discordMessage.amount * multiplier) + ); + if (reward > 0) { + queueActivityReward(db, { + userId: profile.id, + source: "discord_message", + amount: reward, + hits: 1 + }); + messageCooldowns.set(key, now); + } + }); + + discordClient.on("voiceStateUpdate", (_oldState, newState) => { + if (!newState?.member || newState.member.user?.bot) { + return; + } + const userId = newState.member.id; + const joined = Boolean(newState.channelId); + if (!joined) { + voiceStates.delete(userId); + return; + } + if (!voiceStates.has(userId)) { + voiceStates.set(userId, { + member: newState.member, + lastAwardAt: Date.now() + }); + } + }); + + if (!voiceTimer) { + voiceTimer = setInterval(() => { + const config = getConfig(db); + if (!config.platforms.discord || !config.earn.discordVoice.enabled) { + return; + } + const tickMs = Math.max(1, config.earn.discordVoice.tickMinutes) * 60 * 1000; + const rewardBase = config.earn.discordVoice.amountPerMin; + const now = Date.now(); + for (const [userId, state] of voiceStates.entries()) { + const elapsed = now - state.lastAwardAt; + if (elapsed < tickMs) { + continue; + } + const minutes = Math.floor(elapsed / tickMs); + const multiplier = getDiscordVoiceMultiplier(state.member, config); + const reward = Math.max(0, Math.floor(rewardBase * minutes * multiplier)); + if (reward > 0) { + const profile = ensureUserForIdentity({ + provider: "discord", + providerUserId: userId, + displayName: + state.member.user.globalName || + state.member.user.username || + state.member.user.tag + }); + queueActivityReward(db, { + userId: profile.id, + source: "discord_voice", + amount: reward, + hits: 1, + minutes: minutes * Math.max(1, config.earn.discordVoice.tickMinutes) + }); + } + state.lastAwardAt = now; + } + }, 30000); + } +} + +function getDiscordTierMultiplier(message, config) { + const boosterRoleId = message.guild?.premiumSubscriberRole?.id; + if (!boosterRoleId) { + return 1; + } + const hasBooster = message.member?.roles?.cache?.has(boosterRoleId); + return hasBooster ? config.tiers.discordBooster : 1; +} + +function getDiscordVoiceMultiplier(member, config) { + const boosterRoleId = member?.guild?.premiumSubscriberRole?.id; + if (!boosterRoleId) { + return 1; + } + const hasBooster = member.roles?.cache?.has(boosterRoleId); + return hasBooster ? config.tiers.discordBooster : 1; +} + +function attachTwitchListeners({ db, settings, twitchClient }) { + if (!twitchClient) { + return; + } + twitchClient.on("message", (_channel, tags, _message, self) => { + if (self) { + return; + } + const config = getConfig(db); + if (!config.platforms.twitch || !config.earn.twitchMessage.enabled) { + return; + } + const userId = tags["user-id"]; + if (!userId) { + return; + } + const key = `twitch:${userId}`; + const last = messageCooldowns.get(key) || 0; + const now = Date.now(); + if (now - last < config.earn.twitchMessage.cooldown * 1000) { + return; + } + const displayName = tags["display-name"] || tags.username; + const profile = ensureUserForIdentity({ + provider: "twitch", + providerUserId: userId, + displayName + }); + const multiplier = getTwitchTierMultiplier(tags, config); + const reward = Math.max(0, Math.floor(config.earn.twitchMessage.amount * multiplier)); + if (reward > 0) { + queueActivityReward(db, { + userId: profile.id, + source: "twitch_message", + amount: reward, + hits: 1 + }); + messageCooldowns.set(key, now); + } + }); +} + +function getTwitchTierMultiplier(tags, config) { + const badges = tags.badges || {}; + if (badges.broadcaster) { + return config.tiers.twitchBroadcaster; + } + if (badges.moderator || tags.mod) { + return config.tiers.twitchMod; + } + if (badges.vip) { + return config.tiers.twitchVip; + } + if (tags.subscriber) { + return config.tiers.twitchSub; + } + return 1; +} diff --git a/plugins/echonomy-framework/plugin.json b/plugins/echonomy-framework/plugin.json new file mode 100644 index 0000000..9bc74d9 --- /dev/null +++ b/plugins/echonomy-framework/plugin.json @@ -0,0 +1,7 @@ +{ + "id": "echonomy-framework", + "name": "Echonomy Framework", + "version": "0.2.6", + "description": "Cross-platform currency framework with shared balances and extensible hooks.", + "main": "index.js" +} diff --git a/plugins/echonomy-framework/stats.js b/plugins/echonomy-framework/stats.js new file mode 100644 index 0000000..caf644b --- /dev/null +++ b/plugins/echonomy-framework/stats.js @@ -0,0 +1,68 @@ +function getProfileStats({ db, userId }) { + if (!userId) { + return { stats: [] }; + } + const account = db + .prepare("SELECT balance FROM echonomy_accounts WHERE user_id = ?") + .get(userId); + const earned = db + .prepare( + "SELECT COALESCE(SUM(amount), 0) AS total FROM echonomy_transactions " + + "WHERE to_user_id = ? AND (from_user_id IS NULL OR from_user_id = '')" + ) + .get(userId); + const spent = db + .prepare( + "SELECT COALESCE(SUM(amount), 0) AS total FROM echonomy_transactions " + + "WHERE from_user_id = ? AND (to_user_id IS NULL OR to_user_id = '')" + ) + .get(userId); + const transfersOut = db + .prepare( + "SELECT COALESCE(SUM(amount), 0) AS total FROM echonomy_transactions " + + "WHERE from_user_id = ? AND to_user_id IS NOT NULL AND to_user_id != ''" + ) + .get(userId); + const transfersIn = db + .prepare( + "SELECT COALESCE(SUM(amount), 0) AS total FROM echonomy_transactions " + + "WHERE to_user_id = ? AND from_user_id IS NOT NULL AND from_user_id != ''" + ) + .get(userId); + + return { + stats: [ + { label: "Balance", value: account?.balance ?? 0 }, + { label: "Total earned", value: earned?.total ?? 0 }, + { label: "Total spent", value: spent?.total ?? 0 }, + { label: "Given to others", value: transfersOut?.total ?? 0 }, + { label: "Received from others", value: transfersIn?.total ?? 0 } + ] + }; +} + +function getLeaderboards({ db, limit = 10 }) { + const rows = db + .prepare( + "SELECT user_profiles.internal_username AS username, echonomy_accounts.balance AS value " + + "FROM echonomy_accounts " + + "JOIN user_profiles ON user_profiles.id = echonomy_accounts.user_id " + + "ORDER BY echonomy_accounts.balance DESC LIMIT ?" + ) + .all(limit); + + return { + boards: [ + { + title: "Top balances", + valueLabel: "Balance", + rows + } + ] + }; +} + +module.exports = { + getProfileStats, + getLeaderboards +}; diff --git a/plugins/echonomy-framework/stats.json b/plugins/echonomy-framework/stats.json new file mode 100644 index 0000000..49b707d --- /dev/null +++ b/plugins/echonomy-framework/stats.json @@ -0,0 +1,13 @@ +{ + "pluginId": "echonomy-framework", + "pluginName": "Echonomy Framework", + "provider": "stats.js", + "profile": { + "title": "Echonomy", + "emptyMessage": "No currency activity yet." + }, + "leaderboards": { + "title": "Echonomy", + "emptyMessage": "No currency activity yet." + } +} diff --git a/plugins/echonomy-framework/test.txt b/plugins/echonomy-framework/test.txt new file mode 100644 index 0000000..9766475 --- /dev/null +++ b/plugins/echonomy-framework/test.txt @@ -0,0 +1 @@ +ok diff --git a/plugins/echonomy-framework/views/banking.ejs b/plugins/echonomy-framework/views/banking.ejs new file mode 100644 index 0000000..1ee4525 --- /dev/null +++ b/plugins/echonomy-framework/views/banking.ejs @@ -0,0 +1,481 @@ +<%- include("../../../src/web/views/partials/layout-top", { title }) %> + + +
      +
      +
      +

      <%= config.banking.label %>

      +

      Review balances, transfer funds, and track your transaction history.

      +
      +
      + <% if (config.currency.icon) { %> + Currency icon + <% } %> + <%= config.currency.name %> +
      +
      +
      + +
      +

      Account snapshot

      +
      +
      + Current balance + <%= userStats.balance %> +
      +
      + Total earned + <%= userStats.totalEarned %> +
      +
      + Total spent + <%= userStats.totalSpent %> +
      +
      + Sent to others + <%= userStats.totalSent %> +
      +
      + Received from others + <%= userStats.totalReceived %> +
      +
      +
      + +
      +

      Transfer to another user

      +
      + +
      + + +
      +
      + + +
      + +
      +
      + +
      +
      +
      +

      <%= config.communityFunds.plural %>

      +

      Support shared community goals with direct deposits.

      +
      +
      + <% if (!funds.length) { %> +

      No <%= config.communityFunds.plural.toLowerCase() %> are active right now.

      + <% } else { %> +
      + <% funds.forEach((fund) => { %> +
      +
      + <%= fund.name %> + <%= fund.current_amount %>/<%= fund.target_amount %> +
      + <%= fund.description || '' %> +
      +
      + + +
      +
      + + +
      + +
      +
      + <% }) %> +
      + <% } %> +
      + +
      +
      +
      +

      Transaction history

      +

      All account activity with UUID records.

      +
      +
      + +
      + +
      +
      +
      +
      + + + + + + + + + + + + + + <% transactions.forEach((tx) => { %> + <% const fromName = tx.from_name || 'System'; %> + <% const toName = tx.to_name || 'System'; %> + + + + + + + + + + <% }) %> + +
      UUIDTypeAmountFromToNoteDate
      + + <%= tx.type %><%= tx.amount %><%= fromName %><%= toName %> + <% if (tx.activity_reward) { %> +
      + <%= tx.note_display %> + <% if (tx.activity_reward.hourStart && tx.activity_reward.hourEnd) { %> +
      + <%= new Date(tx.activity_reward.hourStart).toLocaleString() %> - + <%= new Date(tx.activity_reward.hourEnd).toLocaleString() %> +
      + <% } %> +
        + <% tx.activity_reward.rewards.forEach((reward) => { %> +
      • + <%= reward.label %>: <%= reward.amount %> + <% if (reward.hits > 0) { %> (<%= reward.hits %> events)<% } %> + <% if (reward.minutes > 0) { %> (<%= reward.minutes %> min)<% } %> +
      • + <% }) %> +
      +
      + <% } else { %> + <%= tx.note_display || tx.note || '-' %> + <% } %> +
      <%= new Date(tx.created_at).toLocaleString() %>
      +
      +
      + + Page 1 of 1 + +
      +
      + + + +<%- include("../../../src/web/views/partials/layout-bottom") %> diff --git a/plugins/echonomy-framework/views/echonomy.ejs b/plugins/echonomy-framework/views/echonomy.ejs new file mode 100644 index 0000000..a2ba899 --- /dev/null +++ b/plugins/echonomy-framework/views/echonomy.ejs @@ -0,0 +1,768 @@ + +<%- include("../../../src/web/views/partials/layout-top", { title }) %> + + +
      +
      +
      +

      Echonomy Framework

      +

      Unified, cross-platform currency tooling and stats.

      +
      + <% if (config.currency.icon) { %> + Currency icon + <% } %> + <%= config.currency.name %> + (<%= config.currency.plural %>) +
      +
      +
      +
      + +
      +

      Overview

      +
      +
      + Your balance + <%= userBalance %> +
      +
      + Command root + !<%= config.command.root %> +
      +
      + Cooldown + <%= config.cooldownSeconds %>s +
      + <% if (isAdmin) { %> +
      + Total in circulation + <%= globalStats.totalBalance %> +
      +
      + Total spent + <%= globalStats.totalSpent %> +
      + <% } %> +
      +
      +<% if (isAdmin) { %> +
      +

      Currency settings

      +
      +
      + + +
      +
      + + +
      +
      + + + Example: coins, souls, shards +
      +
      + + + Comma separated aliases that also trigger the root command. +
      + +
      +
      + +
      +

      Currency icon

      +
      +
      + + + PNG only. Used across the WebUI. +
      + +
      +
      + +
      +

      Banking labels

      +
      +
      + + + Shown on the profile page button and the banking page title. +
      +
      + + +
      +
      + + +
      +
      + + +
      + +
      +
      + +
      +

      Platforms

      +
      +
      + + +
      +
      + + +
      +
      + + +
      + +
      +
      + +
      +

      Currency earning rules

      +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      + +
      +
      + +
      +

      Monetization tiers

      +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      + +
      +
      + +
      +

      <%= config.communityFunds.plural %>

      + <% if (!funds.length) { %> +

      No <%= config.communityFunds.plural.toLowerCase() %> configured yet.

      + <% } else { %> +
        + <% funds.forEach((fund) => { %> +
      • + <%= fund.name %> - <%= fund.current_amount %>/<%= fund.target_amount %> + <%= fund.description || '' %> +
      • + <% }) %> +
      + <% } %> + <% if (isAdmin) { %> +

      Create <%= config.communityFunds.name %>

      +
      +
      + + +
      +
      + + +
      +
      + + +
      + +
      + +

      Update <%= config.communityFunds.plural %>

      + <% funds.forEach((fund) => { %> +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      + +
      + <% }) %> + <% } %> +
      + +<% } %> + +<% if (isAdmin) { %> +
      +

      Event rewards

      + <% if (!events.length) { %> +

      No custom events configured yet.

      + <% } else { %> +
        + <% events.forEach((event) => { %> +
      • + <%= event.name %> (<%= event.amount %>) +
        + +
        +
      • + <% }) %> +
      + <% } %> +
      +
      + + +
      +
      + + +
      + +
      +
      + +
      +
      +
      +

      Response templates

      +

      Customize bot replies. Tokens: {amount_text}, {balance_text}, {target}, {fund}, {lines}, {cooldown}, {usage}, {help}.

      +
      +
      +
      + <% responses.forEach((response) => { %> +
      + <%= response.label %> +
      + <% response.replies.slice(0, 2).forEach((reply) => { %> + • <%= reply.text %> + <% }) %> + <% if (response.replies.length > 2) { %> + …and <%= response.replies.length - 2 %> more + <% } %> +
      + +
      + + + <% }) %> +
      +
      +<% } %> + +<% if (isMod) { %> +
      +

      Adjust user balance

      +
      +
      + + +
      +
      + + +
      +
      + + +
      + +
      +
      +<% } %> +
      +
      +
      +

      Top balances

      +

      Snapshot of the richest accounts.

      +
      +
      + <% if (!topBalances.length) { %> +

      No balances yet.

      + <% } else { %> + + + + + + + + + <% topBalances.forEach((entry) => { %> + + + + + <% }) %> + +
      UserBalance
      <%= entry.username %><%= entry.balance %>
      + <% } %> +
      + +
      +
      +
      +

      Transaction history

      +

      Every change is logged with a UUID.

      +
      +
      + +
      + +
      +
      +
      +
      + + + + + + + + + + + + + + <% transactions.forEach((tx) => { %> + <% const fromName = tx.from_name || 'System'; %> + <% const toName = tx.to_name || 'System'; %> + + + + + + + + + + <% }) %> + +
      UUIDTypeAmountFromToNoteDate
      + + <%= tx.type %><%= tx.amount %><%= fromName %><%= toName %> + <% if (tx.activity_reward) { %> +
      + <%= tx.note_display %> + <% if (tx.activity_reward.hourStart && tx.activity_reward.hourEnd) { %> +
      + <%= new Date(tx.activity_reward.hourStart).toLocaleString() %> - + <%= new Date(tx.activity_reward.hourEnd).toLocaleString() %> +
      + <% } %> +
        + <% tx.activity_reward.rewards.forEach((reward) => { %> +
      • + <%= reward.label %>: <%= reward.amount %> + <% if (reward.hits > 0) { %> (<%= reward.hits %> events)<% } %> + <% if (reward.minutes > 0) { %> (<%= reward.minutes %> min)<% } %> +
      • + <% }) %> +
      +
      + <% } else { %> + <%= tx.note_display || tx.note || '-' %> + <% } %> +
      <%= new Date(tx.created_at).toLocaleString() %>
      +
      +
      + + Page 1 of 1 + +
      +
      + + + +<%- include("../../../src/web/views/partials/layout-bottom") %> diff --git a/plugins/echonomy-games/cmds.json b/plugins/echonomy-games/cmds.json new file mode 100644 index 0000000..fd9ab5c --- /dev/null +++ b/plugins/echonomy-games/cmds.json @@ -0,0 +1,36 @@ +{ + "pluginId": "echonomy-games", + "pluginName": "Echonomy Games", + "commands": [ + { + "id": "hotpotato", + "trigger": "hotpotato", + "name": "Hot Potato", + "description": "Start or toss the hot potato game.", + "level": "public", + "platforms": ["discord", "twitch", "youtube"], + "triggerKey": "hotpotato_trigger", + "usage": "hotpotato | hotpotato toss" + }, + { + "id": "coinflip", + "trigger": "coinflip", + "name": "Coinflip", + "description": "Flip a coin to double your bet.", + "level": "public", + "platforms": ["discord", "twitch", "youtube"], + "triggerKey": "coinflip_trigger", + "usage": "coinflip " + }, + { + "id": "mysterybox", + "trigger": "mysterybox", + "name": "Mystery Box", + "description": "Spend coins for a random payout.", + "level": "public", + "platforms": ["discord", "twitch", "youtube"], + "triggerKey": "mysterybox_trigger", + "usage": "mysterybox " + } + ] +} diff --git a/plugins/echonomy-games/index.js b/plugins/echonomy-games/index.js new file mode 100644 index 0000000..2e856c0 --- /dev/null +++ b/plugins/echonomy-games/index.js @@ -0,0 +1,1218 @@ +const path = require("path"); +const crypto = require("crypto"); +const { ensureUserForIdentity } = require("../../src/services/users"); + +const PLUGIN_ID = "echonomy-games"; +const DEFAULT_SETTINGS = { + hotpotato_enabled: "1", + hotpotato_platform_discord: "1", + hotpotato_platform_twitch: "1", + hotpotato_platform_youtube: "1", + hotpotato_name: "Hot Potato", + hotpotato_trigger: "hotpotato", + hotpotato_aliases: "potato", + hotpotato_min_cost: "10", + hotpotato_max_cost: "250", + hotpotato_toss_min: "10", + hotpotato_toss_max: "25", + hotpotato_loss_multiplier: "1", + hotpotato_loss_additive: "0", + hotpotato_presence_window: "300", + coinflip_enabled: "1", + coinflip_platform_discord: "1", + coinflip_platform_twitch: "1", + coinflip_platform_youtube: "1", + coinflip_name: "Coinflip", + coinflip_trigger: "coinflip", + coinflip_aliases: "flip", + coinflip_min_bet: "10", + coinflip_max_bet: "500", + coinflip_multiplier: "2", + coinflip_cooldown: "10", + mystery_enabled: "1", + mystery_platform_discord: "1", + mystery_platform_twitch: "1", + mystery_platform_youtube: "1", + mystery_name: "Mystery Box", + mystery_trigger: "mysterybox", + mystery_aliases: "box", + mystery_min_bet: "10", + mystery_max_bet: "500", + mystery_multiplier: "2", + mystery_cooldown: "10", + responses_json: "" +}; + +const DEFAULT_RESPONSES = { + hotpotato_start: [ + "{user} started {game} with {amount}. {target} has the potato! Toss within {seconds}s." + ], + hotpotato_toss: [ + "{user} tossed the potato to {target}. Toss within {seconds}s!" + ], + hotpotato_timeout: [ + "{loser} ran out of time and paid {loss} total. Winners: {winners}." + ], + hotpotato_no_targets: [ + "No active users to pass the potato to yet." + ], + hotpotato_already_active: [ + "{game} is already active. {holder} has the potato." + ], + hotpotato_not_holder: [ + "Only the current holder can toss the potato." + ], + hotpotato_not_active: [ + "{game} is not active yet. Start it with {trigger} ." + ], + hotpotato_invalid_amount: [ + "Enter an amount between {min} and {max}." + ], + coinflip_win: [ + "{user} flipped heads and won {payout}!" + ], + coinflip_lose: [ + "{user} flipped tails and lost {amount}." + ], + coinflip_invalid: [ + "Enter a bet between {min} and {max}." + ], + coinflip_cooldown: [ + "Wait {seconds}s before flipping again." + ], + coinflip_insufficient: [ + "{reason}" + ], + mystery_result: [ + "{user} opened a box and got {payout} (from {amount})." + ], + mystery_invalid: [ + "Enter a bet between {min} and {max}." + ], + mystery_cooldown: [ + "Wait {seconds}s before opening another box." + ], + mystery_insufficient: [ + "{reason}" + ] +}; + +const presence = { + discord: new Map(), + twitch: new Map(), + youtube: new Map() +}; + +const hotPotatoGames = new Map(); +const cooldowns = new Map(); +let cachedConfig = null; +let cachedConfigAt = 0; + +module.exports = { + id: PLUGIN_ID, + init({ web, settings, db, commandRouter, discordClient, twitchClient }) { + ensureDefaults(db); + ensureStatsTable(db); + const refreshCommands = registerCommands({ db, commandRouter, settings }); + + attachDiscordPresence({ discordClient }); + attachTwitchPresence({ twitchClient }); + + const router = web.createRouter(); + router.get("/", (req, res) => { + const config = getConfig(db); + const responses = buildResponses(db); + const responsesByGame = { + hotpotato: Object.values(responses).filter((entry) => entry.key.startsWith("hotpotato_")), + coinflip: Object.values(responses).filter((entry) => entry.key.startsWith("coinflip_")), + mystery: Object.values(responses).filter((entry) => entry.key.startsWith("mystery_")) + }; + const framework = getFramework(); + const currencyLabel = + framework?.getConfig?.().currency?.plural || + framework?.getConfig?.().currency?.name || + "Coins"; + const stats = { + hotpotato: getGameStatsView(db, "hotpotato"), + coinflip: getGameStatsView(db, "coinflip"), + mystery: getGameStatsView(db, "mystery") + }; + res.render(path.join(__dirname, "views", "games.ejs"), { + title: "Echonomy Games", + config, + responses, + responsesByGame, + frameworkReady: Boolean(framework), + currencyLabel, + stats + }); + }); + + router.post("/settings/hotpotato", (req, res) => { + if (!req.session.user?.isAdmin) { + return deny(res); + } + setPluginSetting(db, "hotpotato_enabled", req.body.hotpotato_enabled ? "1" : "0"); + setPluginSetting( + db, + "hotpotato_platform_discord", + req.body.hotpotato_platform_discord ? "1" : "0" + ); + setPluginSetting( + db, + "hotpotato_platform_twitch", + req.body.hotpotato_platform_twitch ? "1" : "0" + ); + setPluginSetting( + db, + "hotpotato_platform_youtube", + req.body.hotpotato_platform_youtube ? "1" : "0" + ); + setPluginSetting(db, "hotpotato_name", (req.body.hotpotato_name || "").trim()); + setPluginSetting( + db, + "hotpotato_trigger", + (req.body.hotpotato_trigger || "").trim() + ); + setPluginSetting( + db, + "hotpotato_aliases", + (req.body.hotpotato_aliases || "").trim() + ); + setPluginSetting(db, "hotpotato_min_cost", (req.body.hotpotato_min_cost || "0").trim()); + setPluginSetting(db, "hotpotato_max_cost", (req.body.hotpotato_max_cost || "0").trim()); + setPluginSetting(db, "hotpotato_toss_min", (req.body.hotpotato_toss_min || "1").trim()); + setPluginSetting(db, "hotpotato_toss_max", (req.body.hotpotato_toss_max || "1").trim()); + setPluginSetting( + db, + "hotpotato_loss_multiplier", + (req.body.hotpotato_loss_multiplier || "1").trim() + ); + setPluginSetting( + db, + "hotpotato_loss_additive", + (req.body.hotpotato_loss_additive || "0").trim() + ); + setPluginSetting( + db, + "hotpotato_presence_window", + (req.body.hotpotato_presence_window || "300").trim() + ); + invalidateConfigCache(); + refreshCommands?.(); + req.session.flash = { type: "success", message: "Hot potato updated." }; + res.redirect(`/plugins/${PLUGIN_ID}`); + }); + + router.post("/settings/coinflip", (req, res) => { + if (!req.session.user?.isAdmin) { + return deny(res); + } + setPluginSetting(db, "coinflip_enabled", req.body.coinflip_enabled ? "1" : "0"); + setPluginSetting( + db, + "coinflip_platform_discord", + req.body.coinflip_platform_discord ? "1" : "0" + ); + setPluginSetting( + db, + "coinflip_platform_twitch", + req.body.coinflip_platform_twitch ? "1" : "0" + ); + setPluginSetting( + db, + "coinflip_platform_youtube", + req.body.coinflip_platform_youtube ? "1" : "0" + ); + setPluginSetting(db, "coinflip_name", (req.body.coinflip_name || "").trim()); + setPluginSetting( + db, + "coinflip_trigger", + (req.body.coinflip_trigger || "").trim() + ); + setPluginSetting( + db, + "coinflip_aliases", + (req.body.coinflip_aliases || "").trim() + ); + setPluginSetting(db, "coinflip_min_bet", (req.body.coinflip_min_bet || "0").trim()); + setPluginSetting(db, "coinflip_max_bet", (req.body.coinflip_max_bet || "0").trim()); + setPluginSetting( + db, + "coinflip_multiplier", + (req.body.coinflip_multiplier || "2").trim() + ); + setPluginSetting( + db, + "coinflip_cooldown", + (req.body.coinflip_cooldown || "10").trim() + ); + invalidateConfigCache(); + refreshCommands?.(); + req.session.flash = { type: "success", message: "Coinflip updated." }; + res.redirect(`/plugins/${PLUGIN_ID}`); + }); + + router.post("/settings/mystery", (req, res) => { + if (!req.session.user?.isAdmin) { + return deny(res); + } + setPluginSetting(db, "mystery_enabled", req.body.mystery_enabled ? "1" : "0"); + setPluginSetting( + db, + "mystery_platform_discord", + req.body.mystery_platform_discord ? "1" : "0" + ); + setPluginSetting( + db, + "mystery_platform_twitch", + req.body.mystery_platform_twitch ? "1" : "0" + ); + setPluginSetting( + db, + "mystery_platform_youtube", + req.body.mystery_platform_youtube ? "1" : "0" + ); + setPluginSetting(db, "mystery_name", (req.body.mystery_name || "").trim()); + setPluginSetting( + db, + "mystery_trigger", + (req.body.mystery_trigger || "").trim() + ); + setPluginSetting( + db, + "mystery_aliases", + (req.body.mystery_aliases || "").trim() + ); + setPluginSetting(db, "mystery_min_bet", (req.body.mystery_min_bet || "0").trim()); + setPluginSetting(db, "mystery_max_bet", (req.body.mystery_max_bet || "0").trim()); + setPluginSetting( + db, + "mystery_multiplier", + (req.body.mystery_multiplier || "2").trim() + ); + setPluginSetting( + db, + "mystery_cooldown", + (req.body.mystery_cooldown || "10").trim() + ); + invalidateConfigCache(); + refreshCommands?.(); + req.session.flash = { type: "success", message: "Mystery box updated." }; + res.redirect(`/plugins/${PLUGIN_ID}`); + }); + + router.post("/settings/responses", (req, res) => { + if (!req.session.user?.isAdmin) { + return deny(res); + } + const existing = loadCustomResponses(db); + const payload = { ...existing }; + for (const key of Object.keys(DEFAULT_RESPONSES)) { + const field = `response_${key}`; + if (!Object.prototype.hasOwnProperty.call(req.body, field)) { + continue; + } + const raw = (req.body[field] || "").toString(); + const lines = raw + .split(/\r?\n/) + .map((line) => line.trim()) + .filter(Boolean); + if (lines.length) { + payload[key] = lines; + } else { + delete payload[key]; + } + } + setPluginSetting(db, "responses_json", JSON.stringify(payload)); + invalidateConfigCache(); + req.session.flash = { type: "success", message: "Responses updated." }; + res.redirect(`/plugins/${PLUGIN_ID}`); + }); + + web.mount(`/plugins/${PLUGIN_ID}`, router, { + label: "Echonomy Games", + role: "admin", + section: "plugins" + }); + } +}; + +function deny(res) { + return res.status(403).render("error", { + title: "Access denied", + message: "You do not have access to that page." + }); +} + +function ensureDefaults(db) { + const existing = getPluginSettings(db); + for (const [key, value] of Object.entries(DEFAULT_SETTINGS)) { + if (existing[key] === undefined) { + setPluginSetting(db, key, value); + } + } +} + +function getPluginSettings(db) { + const rows = db + .prepare("SELECT key, value FROM plugin_settings WHERE plugin_id = ?") + .all(PLUGIN_ID); + return rows.reduce((acc, row) => { + acc[row.key] = row.value; + return acc; + }, {}); +} + +function setPluginSetting(db, key, value) { + db.prepare( + "INSERT INTO plugin_settings (plugin_id, key, value, updated_at) VALUES (?, ?, ?, ?) " + + "ON CONFLICT(plugin_id, key) DO UPDATE SET value = excluded.value, updated_at = excluded.updated_at" + ).run(PLUGIN_ID, key, value, Date.now()); +} + +function parseBoolean(value, fallback) { + if (value === undefined || value === null || value === "") { + return fallback; + } + if (typeof value === "boolean") { + return value; + } + const normalized = value.toString().toLowerCase(); + return ["1", "true", "yes", "on"].includes(normalized); +} + +function parseNumber(value, fallback) { + if (value === undefined || value === null || value === "") { + return fallback; + } + const number = Number(value); + if (!Number.isFinite(number)) { + return fallback; + } + return number; +} + +function parseList(value) { + return (value || "") + .split(/[,\s]+/) + .map((item) => item.trim()) + .filter(Boolean); +} + +function normalizeCommand(value, fallback) { + const raw = (value || fallback || "").trim().replace(/^!+/, ""); + return raw.toLowerCase().replace(/\s+/g, "-"); +} + +function getConfig(db) { + const now = Date.now(); + if (cachedConfig && now - cachedConfigAt < 2000) { + return cachedConfig; + } + const settings = getPluginSettings(db); + const config = { + hotpotato: { + enabled: parseBoolean(settings.hotpotato_enabled, true), + name: settings.hotpotato_name || "Hot Potato", + trigger: normalizeCommand(settings.hotpotato_trigger, "hotpotato"), + aliases: parseList(settings.hotpotato_aliases), + minCost: parseNumber(settings.hotpotato_min_cost, 10), + maxCost: parseNumber(settings.hotpotato_max_cost, 250), + tossMin: parseNumber(settings.hotpotato_toss_min, 10), + tossMax: parseNumber(settings.hotpotato_toss_max, 25), + lossMultiplier: parseNumber(settings.hotpotato_loss_multiplier, 1), + lossAdditive: parseNumber(settings.hotpotato_loss_additive, 0), + presenceWindow: parseNumber(settings.hotpotato_presence_window, 300), + platforms: { + discord: parseBoolean(settings.hotpotato_platform_discord, true), + twitch: parseBoolean(settings.hotpotato_platform_twitch, true), + youtube: parseBoolean(settings.hotpotato_platform_youtube, true) + } + }, + coinflip: { + enabled: parseBoolean(settings.coinflip_enabled, true), + name: settings.coinflip_name || "Coinflip", + trigger: normalizeCommand(settings.coinflip_trigger, "coinflip"), + aliases: parseList(settings.coinflip_aliases), + minBet: parseNumber(settings.coinflip_min_bet, 10), + maxBet: parseNumber(settings.coinflip_max_bet, 500), + multiplier: parseNumber(settings.coinflip_multiplier, 2), + cooldown: parseNumber(settings.coinflip_cooldown, 10), + platforms: { + discord: parseBoolean(settings.coinflip_platform_discord, true), + twitch: parseBoolean(settings.coinflip_platform_twitch, true), + youtube: parseBoolean(settings.coinflip_platform_youtube, true) + } + }, + mystery: { + enabled: parseBoolean(settings.mystery_enabled, true), + name: settings.mystery_name || "Mystery Box", + trigger: normalizeCommand(settings.mystery_trigger, "mysterybox"), + aliases: parseList(settings.mystery_aliases), + minBet: parseNumber(settings.mystery_min_bet, 10), + maxBet: parseNumber(settings.mystery_max_bet, 500), + multiplier: parseNumber(settings.mystery_multiplier, 2), + cooldown: parseNumber(settings.mystery_cooldown, 10), + platforms: { + discord: parseBoolean(settings.mystery_platform_discord, true), + twitch: parseBoolean(settings.mystery_platform_twitch, true), + youtube: parseBoolean(settings.mystery_platform_youtube, true) + } + } + }; + cachedConfig = config; + cachedConfigAt = now; + return config; +} + +function invalidateConfigCache() { + cachedConfig = null; + cachedConfigAt = 0; +} + +function buildResponses(db) { + const settings = getPluginSettings(db); + const custom = loadCustomResponses(db); + const responses = {}; + for (const [key, list] of Object.entries(DEFAULT_RESPONSES)) { + const override = Array.isArray(custom[key]) ? custom[key] : []; + responses[key] = { + key, + label: toLabel(key), + lines: override.length ? override : list + }; + } + return responses; +} + +function getResponseLines(db, key) { + const custom = loadCustomResponses(db); + if (Array.isArray(custom[key]) && custom[key].length) { + return custom[key]; + } + return DEFAULT_RESPONSES[key] || []; +} + +function loadCustomResponses(db) { + const settings = getPluginSettings(db); + let custom = {}; + try { + custom = JSON.parse(settings.responses_json || "{}"); + } catch { + custom = {}; + } + return custom || {}; +} + +function ensureStatsTable(db) { + db.prepare( + "CREATE TABLE IF NOT EXISTS echonomy_game_stats (" + + "game_key TEXT PRIMARY KEY," + + "plays INTEGER NOT NULL DEFAULT 0," + + "coins_won INTEGER NOT NULL DEFAULT 0," + + "coins_lost INTEGER NOT NULL DEFAULT 0," + + "last_played_at INTEGER," + + "last_played_user_id TEXT," + + "last_played_username TEXT" + + ")" + ).run(); +} + +function getGameStats(db, gameKey) { + return db + .prepare( + "SELECT game_key, plays, coins_won, coins_lost, last_played_at, last_played_user_id, last_played_username " + + "FROM echonomy_game_stats WHERE game_key = ?" + ) + .get(gameKey); +} + +function getGameStatsView(db, gameKey) { + const stats = getGameStats(db, gameKey); + if (!stats) { + return { + plays: 0, + coinsWon: 0, + coinsLost: 0, + lastPlayedLabel: "Never", + lastPlayedUser: null + }; + } + return { + plays: stats.plays || 0, + coinsWon: stats.coins_won || 0, + coinsLost: stats.coins_lost || 0, + lastPlayedLabel: stats.last_played_at + ? new Date(stats.last_played_at).toLocaleString() + : "Never", + lastPlayedUser: stats.last_played_username || null + }; +} + +function recordGamePlay(db, gameKey, { userId, username }) { + const now = Date.now(); + db.prepare( + "INSERT INTO echonomy_game_stats " + + "(game_key, plays, coins_won, coins_lost, last_played_at, last_played_user_id, last_played_username) " + + "VALUES (?, 1, 0, 0, ?, ?, ?) " + + "ON CONFLICT(game_key) DO UPDATE SET " + + "plays = plays + 1, " + + "last_played_at = excluded.last_played_at, " + + "last_played_user_id = excluded.last_played_user_id, " + + "last_played_username = excluded.last_played_username" + ).run(gameKey, now, userId || null, username || null); +} + +function recordGameTotals(db, gameKey, { coinsWon = 0, coinsLost = 0 }) { + const won = Math.floor(coinsWon || 0); + const lost = Math.floor(coinsLost || 0); + if (!won && !lost) { + return; + } + db.prepare( + "INSERT INTO echonomy_game_stats (game_key, plays, coins_won, coins_lost) " + + "VALUES (?, 0, ?, ?) " + + "ON CONFLICT(game_key) DO UPDATE SET " + + "coins_won = coins_won + ?, " + + "coins_lost = coins_lost + ?" + ).run(gameKey, won, lost, won, lost); +} + +function pickReply(lines) { + if (!lines || !lines.length) { + return ""; + } + return lines[Math.floor(Math.random() * lines.length)]; +} + +function render(template, tokens) { + return (template || "").replace(/\{([a-zA-Z0-9_]+)\}/g, (_match, key) => { + if (Object.prototype.hasOwnProperty.call(tokens, key)) { + return tokens[key]; + } + return `{${key}}`; + }); +} + +function replyWith(db, ctx, key, tokens) { + const line = pickReply(getResponseLines(db, key)); + if (!line) { + return null; + } + return render(line, tokens); +} + +function toLabel(key) { + return key + .replace(/_/g, " ") + .replace(/\b\w/g, (match) => match.toUpperCase()); +} + +function getFramework() { + return global.lumiFrameworks?.echonomy || null; +} + +function registerCommands({ db, commandRouter, settings }) { + if (!commandRouter) { + return null; + } + const rebuild = () => { + const config = getConfig(db); + const commands = []; + + if (config.hotpotato.enabled && config.hotpotato.trigger) { + const triggers = [config.hotpotato.trigger, ...config.hotpotato.aliases]; + const platforms = platformsFromConfig(config.hotpotato.platforms); + if (platforms.length && triggers.length) { + commands.push({ + id: "echonomy-games:hotpotato", + triggers, + platforms, + handler: (ctx) => handleHotPotato({ ctx, db, settings }) + }); + } + } + + if (config.coinflip.enabled && config.coinflip.trigger) { + const triggers = [config.coinflip.trigger, ...config.coinflip.aliases]; + const platforms = platformsFromConfig(config.coinflip.platforms); + if (platforms.length && triggers.length) { + commands.push({ + id: "echonomy-games:coinflip", + triggers, + platforms, + handler: (ctx) => handleCoinflip({ ctx, db, settings }) + }); + } + } + + if (config.mystery.enabled && config.mystery.trigger) { + const triggers = [config.mystery.trigger, ...config.mystery.aliases]; + const platforms = platformsFromConfig(config.mystery.platforms); + if (platforms.length && triggers.length) { + commands.push({ + id: "echonomy-games:mystery", + triggers, + platforms, + handler: (ctx) => handleMystery({ ctx, db, settings }) + }); + } + } + + commandRouter.registerCommands(PLUGIN_ID, commands); + }; + rebuild(); + return rebuild; +} + +function platformsFromConfig(platforms) { + return Object.entries(platforms || {}) + .filter(([, enabled]) => enabled) + .map(([platform]) => platform); +} + +function getChannelKey(ctx) { + if (ctx.platform === "discord") { + return ctx.meta?.message?.channelId || "discord"; + } + if (ctx.platform === "twitch") { + return ctx.meta?.channel || "twitch"; + } + if (ctx.platform === "youtube") { + return ctx.meta?.liveChatId || "youtube"; + } + return "default"; +} + +function recordPresence(platform, channelKey, userId, name) { + if (!platform || !channelKey || !userId) { + return; + } + const channelMap = presence[platform] || new Map(); + if (!presence[platform]) { + presence[platform] = channelMap; + } + const users = channelMap.get(channelKey) || new Map(); + users.set(userId, { name: name || "User", lastSeen: Date.now() }); + channelMap.set(channelKey, users); +} + +function getActiveUsers(platform, channelKey, windowSeconds) { + const channelMap = presence[platform]; + if (!channelMap) { + return []; + } + const users = channelMap.get(channelKey); + if (!users) { + return []; + } + const now = Date.now(); + const cutoff = now - windowSeconds * 1000; + const list = []; + for (const [userId, info] of users.entries()) { + if (info.lastSeen < cutoff) { + users.delete(userId); + continue; + } + list.push({ id: userId, name: info.name || "User" }); + } + return list; +} + +function attachDiscordPresence({ discordClient }) { + if (!discordClient) { + return; + } + discordClient.on("messageCreate", (message) => { + if (!message || message.author?.bot) { + return; + } + const display = + message.member?.displayName || + message.author.globalName || + message.author.username || + message.author.tag; + const profile = ensureUserForIdentity({ + provider: "discord", + providerUserId: message.author.id, + displayName: display, + avatar: message.author.avatar + ? `https://cdn.discordapp.com/avatars/${message.author.id}/${message.author.avatar}.png?size=128` + : null + }); + recordPresence("discord", message.channelId, profile.id, display); + }); +} + +function attachTwitchPresence({ twitchClient }) { + if (!twitchClient) { + return; + } + twitchClient.on("message", (channel, tags, _message, self) => { + if (self) { + return; + } + const userId = tags["user-id"]; + if (!userId) { + return; + } + const display = tags["display-name"] || tags.username || "Twitch User"; + const profile = ensureUserForIdentity({ + provider: "twitch", + providerUserId: userId, + displayName: display + }); + recordPresence("twitch", channel, profile.id, display); + }); +} + +function recordPresenceFromCtx(ctx) { + const platform = ctx.platform; + const channelKey = getChannelKey(ctx); + const name = ctx.user.displayName || ctx.user.username || "User"; + recordPresence(platform, channelKey, ctx.user.id, name); +} + +function randomBetween(min, max) { + const low = Math.min(min, max); + const high = Math.max(min, max); + return Math.floor(Math.random() * (high - low + 1)) + low; +} + +function parseAmount(value) { + const number = Number(value); + if (!Number.isFinite(number)) { + return NaN; + } + if (number <= 0) { + return NaN; + } + return Math.floor(number); +} + +function getCooldownKey(ctx, key) { + return `${ctx.platform}:${ctx.user.id}:${key}`; +} + +function getCooldownLeft(ctx, key, cooldownSeconds) { + const lookup = getCooldownKey(ctx, key); + const last = cooldowns.get(lookup) || 0; + const diff = cooldownSeconds * 1000 - (Date.now() - last); + return diff > 0 ? Math.ceil(diff / 1000) : 0; +} + +function setCooldown(ctx, key) { + cooldowns.set(getCooldownKey(ctx, key), Date.now()); +} + +async function handleHotPotato({ ctx, db }) { + recordPresenceFromCtx(ctx); + const config = getConfig(db); + const framework = getFramework(); + if (!framework) { + await ctx.reply("Echonomy framework is not available."); + return true; + } + if (!config.hotpotato.enabled || !config.hotpotato.platforms[ctx.platform]) { + return false; + } + + const channelKey = getChannelKey(ctx); + const gameKey = `${ctx.platform}:${channelKey}`; + const current = hotPotatoGames.get(gameKey); + const sub = (ctx.args[0] || "").toLowerCase(); + const isToss = ["toss", "pass", "throw", "retoss"].includes(sub); + + if (isToss) { + if (!current) { + const msg = replyWith(db, ctx, "hotpotato_not_active", { + game: config.hotpotato.name, + trigger: config.hotpotato.trigger + }); + if (msg) { + await ctx.reply(msg); + } + return true; + } + if (current.holderId !== ctx.user.id) { + const msg = replyWith(db, ctx, "hotpotato_not_holder", {}); + if (msg) { + await ctx.reply(msg); + } + return true; + } + const next = pickRandomUser({ + platform: ctx.platform, + channelKey, + exclude: [ctx.user.id], + windowSeconds: config.hotpotato.presenceWindow + }); + if (!next) { + const msg = replyWith(db, ctx, "hotpotato_no_targets", {}); + if (msg) { + await ctx.reply(msg); + } + return true; + } + touchUser(current, ctx.user.id, ctx.user.displayName || ctx.user.username); + touchUser(current, next.id, next.name); + current.holderId = next.id; + current.holderName = next.name; + current.reply = ctx.reply; + resetHotPotatoTimer(gameKey, current, config); + const msg = replyWith(db, ctx, "hotpotato_toss", { + user: ctx.user.displayName || ctx.user.username, + target: next.name, + seconds: current.seconds + }); + if (msg) { + await ctx.reply(msg); + } + return true; + } + + if (current) { + const msg = replyWith(db, ctx, "hotpotato_already_active", { + game: config.hotpotato.name, + holder: current.holderName || "Someone" + }); + if (msg) { + await ctx.reply(msg); + } + return true; + } + + const amount = parseAmount(ctx.args[0]); + if (!Number.isFinite(amount) || + amount < config.hotpotato.minCost || + amount > config.hotpotato.maxCost) { + const msg = replyWith(db, ctx, "hotpotato_invalid_amount", { + min: config.hotpotato.minCost, + max: config.hotpotato.maxCost + }); + if (msg) { + await ctx.reply(msg); + } + return true; + } + + const stakeResult = framework.removeBalance({ + userId: ctx.user.id, + amount, + note: `${config.hotpotato.name} entry` + }); + if (stakeResult?.ok === false) { + const msg = replyWith(db, ctx, "coinflip_insufficient", { + reason: stakeResult.message || "Insufficient balance." + }); + if (msg) { + await ctx.reply(msg); + } + return true; + } + + const target = pickRandomUser({ + platform: ctx.platform, + channelKey, + exclude: [ctx.user.id], + windowSeconds: config.hotpotato.presenceWindow + }); + if (!target) { + const msg = replyWith(db, ctx, "hotpotato_no_targets", {}); + if (msg) { + await ctx.reply(msg); + } + return true; + } + + const displayName = ctx.user.displayName || ctx.user.username || "User"; + recordGamePlay(db, "hotpotato", { userId: ctx.user.id, username: displayName }); + recordGameTotals(db, "hotpotato", { coinsLost: amount }); + + const state = { + id: crypto.randomUUID(), + amount, + holderId: target.id, + holderName: target.name, + touched: new Map(), + reply: ctx.reply, + platform: ctx.platform, + channelKey, + db + }; + touchUser(state, ctx.user.id, displayName); + touchUser(state, target.id, target.name); + hotPotatoGames.set(gameKey, state); + resetHotPotatoTimer(gameKey, state, config); + + const msg = replyWith(db, ctx, "hotpotato_start", { + user: ctx.user.displayName || ctx.user.username, + target: target.name, + amount, + game: config.hotpotato.name, + seconds: state.seconds + }); + if (msg) { + await ctx.reply(msg); + } + return true; +} + +function resetHotPotatoTimer(gameKey, state, config) { + if (state.timer) { + clearTimeout(state.timer); + } + const seconds = randomBetween(config.hotpotato.tossMin, config.hotpotato.tossMax); + state.seconds = seconds; + state.deadlineAt = Date.now() + seconds * 1000; + state.timer = setTimeout(() => resolveHotPotato(gameKey, state.id), seconds * 1000); +} + +function touchUser(state, userId, name) { + if (!state.touched.has(userId)) { + state.touched.set(userId, name || "User"); + } +} + +function pickRandomUser({ platform, channelKey, exclude, windowSeconds }) { + const list = getActiveUsers(platform, channelKey, windowSeconds).filter( + (user) => !exclude.includes(user.id) + ); + if (!list.length) { + return null; + } + return list[Math.floor(Math.random() * list.length)]; +} + +async function resolveHotPotato(gameKey, gameId) { + const state = hotPotatoGames.get(gameKey); + if (!state || state.id !== gameId) { + return; + } + const framework = getFramework(); + if (!framework) { + hotPotatoGames.delete(gameKey); + return; + } + const config = getConfig(state.db); + const penaltyBase = state.amount || 0; + const lossTotal = Math.max( + 0, + Math.floor(penaltyBase * config.hotpotato.lossMultiplier + config.hotpotato.lossAdditive) + ); + const recipients = Array.from(state.touched.entries()).filter( + ([id]) => id !== state.holderId + ); + const perRecipient = + recipients.length && lossTotal > 0 ? Math.floor(lossTotal / recipients.length) : 0; + const winners = []; + if (perRecipient > 0 && recipients.length) { + for (const [userId, name] of recipients) { + try { + framework.createTransaction({ + type: "hotpotato_payout", + amount: perRecipient, + fromUserId: state.holderId, + toUserId: userId, + note: "Hot potato penalty", + meta: { game: "hotpotato" }, + allowNegative: true + }); + winners.push(name); + } catch { + // ignore individual payout failures + } + } + recordGameTotals(state.db, "hotpotato", { + coinsLost: lossTotal, + coinsWon: perRecipient * recipients.length + }); + } else if (lossTotal > 0) { + try { + framework.createTransaction({ + type: "hotpotato_penalty", + amount: lossTotal, + fromUserId: state.holderId, + toUserId: null, + note: "Hot potato penalty", + meta: { game: "hotpotato" }, + allowNegative: true + }); + } catch { + // ignore + } + recordGameTotals(state.db, "hotpotato", { coinsLost: lossTotal }); + } + + const msg = replyWith(state.db, { reply: state.reply }, "hotpotato_timeout", { + loser: state.holderName || "Someone", + loss: lossTotal, + winners: winners.length ? winners.join(", ") : "No one" + }); + if (msg && state.reply) { + try { + await state.reply(msg); + } catch { + // ignore + } + } + hotPotatoGames.delete(gameKey); +} + +async function handleCoinflip({ ctx, db }) { + recordPresenceFromCtx(ctx); + const config = getConfig(db); + const framework = getFramework(); + if (!framework) { + await ctx.reply("Echonomy framework is not available."); + return true; + } + if (!config.coinflip.enabled || !config.coinflip.platforms[ctx.platform]) { + return false; + } + + const amount = parseAmount(ctx.args[0]); + if (!Number.isFinite(amount) || amount < config.coinflip.minBet || amount > config.coinflip.maxBet) { + const msg = replyWith(db, ctx, "coinflip_invalid", { + min: config.coinflip.minBet, + max: config.coinflip.maxBet + }); + if (msg) { + await ctx.reply(msg); + } + return true; + } + + const cooldownLeft = getCooldownLeft(ctx, "coinflip", config.coinflip.cooldown); + if (cooldownLeft > 0) { + const msg = replyWith(db, ctx, "coinflip_cooldown", { + seconds: cooldownLeft + }); + if (msg) { + await ctx.reply(msg); + } + return true; + } + + const stakeResult = framework.removeBalance({ + userId: ctx.user.id, + amount, + note: `${config.coinflip.name} bet` + }); + if (stakeResult?.ok === false) { + const msg = replyWith(db, ctx, "coinflip_insufficient", { + reason: stakeResult.message || "Insufficient balance." + }); + if (msg) { + await ctx.reply(msg); + } + return true; + } + + setCooldown(ctx, "coinflip"); + const displayName = ctx.user.displayName || ctx.user.username || "User"; + recordGamePlay(db, "coinflip", { userId: ctx.user.id, username: displayName }); + const win = Math.random() >= 0.5; + if (win) { + const payout = Math.floor(amount * config.coinflip.multiplier); + framework.addBalance({ + userId: ctx.user.id, + amount: payout, + note: `${config.coinflip.name} win` + }); + recordGameTotals(db, "coinflip", { coinsLost: amount, coinsWon: payout }); + const msg = replyWith(db, ctx, "coinflip_win", { + user: displayName, + payout + }); + if (msg) { + await ctx.reply(msg); + } + return true; + } + + recordGameTotals(db, "coinflip", { coinsLost: amount, coinsWon: 0 }); + const msg = replyWith(db, ctx, "coinflip_lose", { + user: displayName, + amount + }); + if (msg) { + await ctx.reply(msg); + } + return true; +} + +async function handleMystery({ ctx, db }) { + recordPresenceFromCtx(ctx); + const config = getConfig(db); + const framework = getFramework(); + if (!framework) { + await ctx.reply("Echonomy framework is not available."); + return true; + } + if (!config.mystery.enabled || !config.mystery.platforms[ctx.platform]) { + return false; + } + + const amount = parseAmount(ctx.args[0]); + if (!Number.isFinite(amount) || amount < config.mystery.minBet || amount > config.mystery.maxBet) { + const msg = replyWith(db, ctx, "mystery_invalid", { + min: config.mystery.minBet, + max: config.mystery.maxBet + }); + if (msg) { + await ctx.reply(msg); + } + return true; + } + + const cooldownLeft = getCooldownLeft(ctx, "mystery", config.mystery.cooldown); + if (cooldownLeft > 0) { + const msg = replyWith(db, ctx, "mystery_cooldown", { + seconds: cooldownLeft + }); + if (msg) { + await ctx.reply(msg); + } + return true; + } + + const stakeResult = framework.removeBalance({ + userId: ctx.user.id, + amount, + note: `${config.mystery.name} entry` + }); + if (stakeResult?.ok === false) { + const msg = replyWith(db, ctx, "mystery_insufficient", { + reason: stakeResult.message || "Insufficient balance." + }); + if (msg) { + await ctx.reply(msg); + } + return true; + } + + setCooldown(ctx, "mystery"); + const displayName = ctx.user.displayName || ctx.user.username || "User"; + const maxPayout = Math.max(0, Math.floor(amount * config.mystery.multiplier)); + const payout = Math.floor(Math.random() * (maxPayout + 1)); + if (payout > 0) { + framework.addBalance({ + userId: ctx.user.id, + amount: payout, + note: `${config.mystery.name} payout` + }); + } + recordGamePlay(db, "mystery", { userId: ctx.user.id, username: displayName }); + recordGameTotals(db, "mystery", { coinsLost: amount, coinsWon: payout }); + const msg = replyWith(db, ctx, "mystery_result", { + user: displayName, + amount, + payout + }); + if (msg) { + await ctx.reply(msg); + } + return true; +} diff --git a/plugins/echonomy-games/plugin.json b/plugins/echonomy-games/plugin.json new file mode 100644 index 0000000..5392ece --- /dev/null +++ b/plugins/echonomy-games/plugin.json @@ -0,0 +1,7 @@ +{ + "id": "echonomy-games", + "name": "Echonomy Games", + "version": "0.1.5", + "description": "Cross-platform mini-games that use the Echonomy currency framework.", + "main": "index.js" +} diff --git a/plugins/echonomy-games/views/games.ejs b/plugins/echonomy-games/views/games.ejs new file mode 100644 index 0000000..67f2547 --- /dev/null +++ b/plugins/echonomy-games/views/games.ejs @@ -0,0 +1,608 @@ +<%- include("../../../src/web/views/partials/layout-top", { title }) %> + + +
      +
      +
      +

      Echonomy Games

      +

      Mini-games that spend and reward coins via the Echonomy framework.

      +
      + + <%= frameworkReady ? 'Framework connected' : 'Framework missing' %> + +
      +
      + +<% const renderLastPlayed = (entry) => { + if (!entry || entry.lastPlayedLabel === "Never") { + return "Never"; + } + const user = entry.lastPlayedUser ? ` (${entry.lastPlayedUser})` : ""; + return `${entry.lastPlayedLabel}${user}`; +}; %> + +
      +
      + +
      +

      <%= config.hotpotato.name %>

      +
      +
      + + <%= config.hotpotato.enabled ? 'Enabled' : 'Disabled' %> + +
      +
      + Discord + Twitch + YouTube +
      +
      +
      +
      +
      +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + + Active users are pulled from recent chatters on the same platform. +
      +
      + + +
      +
      + + +
      +
      + + +
      + +
      + +
      + Edit replies +
      +

      One reply per line. Tokens: {user}, {target}, {amount}, {payout}, {seconds}, {min}, {max}, {game}, {holder}, {loss}, {winners}, {trigger}.

      +
      + <% responsesByGame.hotpotato.forEach((response) => { %> +
      + + +
      + <% }) %> +
      + +
      +
      +
      +
      +
      +
      + +
      + +
      + +
      +

      <%= config.coinflip.name %>

      +
      +
      + + <%= config.coinflip.enabled ? 'Enabled' : 'Disabled' %> + +
      +
      + Discord + Twitch + YouTube +
      +
      +
      +
      +
      +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      + +
      + +
      + Edit replies +
      +

      One reply per line. Tokens: {user}, {amount}, {payout}, {min}, {max}, {seconds}.

      +
      + <% responsesByGame.coinflip.forEach((response) => { %> +
      + + +
      + <% }) %> +
      + +
      +
      +
      +
      +
      +
      + +
      + +
      + +
      +

      <%= config.mystery.name %>

      +
      +
      + + <%= config.mystery.enabled ? 'Enabled' : 'Disabled' %> + +
      +
      + Discord + Twitch + YouTube +
      +
      +
      +
      +
      +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      + +
      + +
      + Edit replies +
      +

      One reply per line. Tokens: {user}, {amount}, {payout}, {min}, {max}, {seconds}.

      +
      + <% responsesByGame.mystery.forEach((response) => { %> +
      + + +
      + <% }) %> +
      + +
      +
      +
      +
      +
      +
      + +
      +
      + +<%- include("../../../src/web/views/partials/layout-bottom") %> diff --git a/plugins/expression-interaction/cmds.json b/plugins/expression-interaction/cmds.json new file mode 100644 index 0000000..54a3319 --- /dev/null +++ b/plugins/expression-interaction/cmds.json @@ -0,0 +1,9 @@ +{ + "pluginId": "expression-interaction", + "pluginName": "Expression Interaction", + "platformKeys": { + "discord": "platform_discord", + "twitch": "platform_twitch" + }, + "commands": [] +} diff --git a/plugins/expression-interaction/index.js b/plugins/expression-interaction/index.js new file mode 100644 index 0000000..4acbac8 --- /dev/null +++ b/plugins/expression-interaction/index.js @@ -0,0 +1,931 @@ +const fs = require("fs"); +const path = require("path"); + +const DEFAULT_ACTIONS = [ + { id: "hug", verb: "hugs", past: "hugged" }, + { id: "bonk", verb: "bonks", past: "bonked" }, + { id: "comfort", verb: "comforts", past: "comforted" }, + { id: "pat", verb: "pats", past: "patted" }, + { id: "cuddle", verb: "cuddles", past: "cuddled" }, + { id: "boop", verb: "boops", past: "booped" }, + { id: "highfive", verb: "high-fives", past: "high-fived", aliases: ["high-five", "hf"] }, + { id: "snuggle", verb: "snuggles", past: "snuggled" }, + { id: "cheer", verb: "cheers for", past: "cheered for" }, + { id: "headpat", verb: "headpats", past: "headpatted", aliases: ["head-pat"] }, + { id: "support", verb: "supports", past: "supported" }, + { id: "encourage", verb: "encourages", past: "encouraged" }, + { id: "stalk", verb: "stalks", past: "stalked", category: "yandere" }, + { id: "kidnap", verb: "kidnaps", past: "kidnapped", category: "yandere" }, + { id: "stab", verb: "stabs", past: "stabbed", category: "yandere" }, + { id: "claim", verb: "claims", past: "claimed", category: "yandere" } +]; + +const PLUGIN_ID = "expression-interaction"; + +let cachedConfig = null; +let cachedConfigAt = 0; + +let cachedAppToken = null; +let cachedAppTokenExpiry = 0; +let refreshCommands = null; +let pluginMeta = { dir: __dirname, name: "Expression Interaction" }; + +module.exports = { + id: PLUGIN_ID, + init({ web, settings, db, commandRouter, plugin }) { + ensureTables(db); + ensureDefaultActions(db); + pluginMeta = { + dir: plugin?.dir || __dirname, + name: plugin?.name || "Expression Interaction" + }; + writeCommandsManifest(getExpressionConfig(db)); + refreshCommands = registerExpressionCommands({ commandRouter, settings, db }); + + const router = web.createRouter(); + router.get("/", (req, res) => { + const config = getExpressionConfig(db); + const user = req.session.user || null; + res.render(path.join(__dirname, "views", "expression.ejs"), { + title: "Expression Interaction", + actions: config.actions, + platforms: config.platforms, + conflicts: config.conflicts, + stats: user ? getUserStats(db, user.id) : null, + globalStats: getGlobalStats(db), + isAdmin: Boolean(user?.isAdmin) + }); + }); + router.post("/settings", (req, res) => { + if (!req.session.user || !req.session.user.isAdmin) { + return res.status(403).render("error", { + title: "Access denied", + message: "You do not have access to that page." + }); + } + savePlatformSettings(db, req.body); + if (refreshCommands) { + refreshCommands(); + } else { + writeCommandsManifest(getExpressionConfig(db)); + } + req.session.flash = { + type: "success", + message: "Expression settings updated." + }; + res.redirect("/plugins/expression-interaction"); + }); + router.post("/actions/create", (req, res) => { + if (!req.session.user || !req.session.user.isAdmin) { + return res.status(403).render("error", { + title: "Access denied", + message: "You do not have access to that page." + }); + } + const result = createExpressionAction(db, req.body); + if (!result.ok) { + req.session.flash = { type: "error", message: result.message }; + return res.redirect("/plugins/expression-interaction"); + } + if (refreshCommands) { + refreshCommands(); + } else { + writeCommandsManifest(getExpressionConfig(db)); + } + req.session.flash = { type: "success", message: "Expression added." }; + res.redirect("/plugins/expression-interaction"); + }); + router.post("/actions/:id/update", (req, res) => { + if (!req.session.user || !req.session.user.isAdmin) { + return res.status(403).render("error", { + title: "Access denied", + message: "You do not have access to that page." + }); + } + const result = updateExpressionAction(db, req.params.id, req.body); + if (!result.ok) { + req.session.flash = { type: "error", message: result.message }; + return res.redirect("/plugins/expression-interaction"); + } + if (refreshCommands) { + refreshCommands(); + } else { + writeCommandsManifest(getExpressionConfig(db)); + } + req.session.flash = { type: "success", message: "Expression updated." }; + res.redirect("/plugins/expression-interaction"); + }); + router.post("/actions/:id/toggle", (req, res) => { + if (!req.session.user || !req.session.user.isAdmin) { + return res.status(403).render("error", { + title: "Access denied", + message: "You do not have access to that page." + }); + } + toggleExpressionAction(db, req.params.id); + invalidateConfigCache(); + if (refreshCommands) { + refreshCommands(); + } else { + writeCommandsManifest(getExpressionConfig(db)); + } + res.redirect("/plugins/expression-interaction"); + }); + router.post("/actions/:id/archive", (req, res) => { + if (!req.session.user || !req.session.user.isAdmin) { + return res.status(403).render("error", { + title: "Access denied", + message: "You do not have access to that page." + }); + } + setExpressionActionArchived(db, req.params.id, true); + invalidateConfigCache(); + if (refreshCommands) { + refreshCommands(); + } else { + writeCommandsManifest(getExpressionConfig(db)); + } + res.redirect("/plugins/expression-interaction"); + }); + router.post("/actions/:id/restore", (req, res) => { + if (!req.session.user || !req.session.user.isAdmin) { + return res.status(403).render("error", { + title: "Access denied", + message: "You do not have access to that page." + }); + } + setExpressionActionArchived(db, req.params.id, false); + invalidateConfigCache(); + if (refreshCommands) { + refreshCommands(); + } else { + writeCommandsManifest(getExpressionConfig(db)); + } + res.redirect("/plugins/expression-interaction"); + }); + web.mount("/plugins/expression-interaction", router, { + label: "Expression Interaction", + role: "public", + section: "plugins" + }); + } +}; + +function ensureTables(db) { + db.exec(` + CREATE TABLE IF NOT EXISTS expression_actions ( + id TEXT PRIMARY KEY, + command TEXT NOT NULL, + verb TEXT, + past TEXT, + aliases TEXT, + enabled INTEGER NOT NULL DEFAULT 1, + archived INTEGER NOT NULL DEFAULT 0, + created_at INTEGER NOT NULL, + updated_at INTEGER NOT NULL + ); + + CREATE TABLE IF NOT EXISTS expression_interactions ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + action TEXT NOT NULL, + platform TEXT NOT NULL, + actor_user_id TEXT NOT NULL, + target_user_id TEXT NOT NULL, + created_at INTEGER NOT NULL + ); + + CREATE TABLE IF NOT EXISTS expression_pair_stats ( + action TEXT NOT NULL, + actor_user_id TEXT NOT NULL, + target_user_id TEXT NOT NULL, + count INTEGER NOT NULL DEFAULT 0, + PRIMARY KEY (action, actor_user_id, target_user_id) + ); + + CREATE TABLE IF NOT EXISTS expression_user_stats ( + action TEXT NOT NULL, + user_id TEXT NOT NULL, + given_count INTEGER NOT NULL DEFAULT 0, + received_count INTEGER NOT NULL DEFAULT 0, + PRIMARY KEY (action, user_id) + ); + `); +} + +function parseBoolean(value, fallback) { + if (value === undefined || value === null || value === "") { + return fallback; + } + if (typeof value === "boolean") { + return value; + } + const normalized = value.toString().toLowerCase(); + return ["1", "true", "yes", "on"].includes(normalized); +} + +function getPluginSettings(db) { + const rows = db + .prepare("SELECT key, value FROM plugin_settings WHERE plugin_id = ?") + .all(PLUGIN_ID); + return rows.reduce((acc, row) => { + acc[row.key] = row.value; + return acc; + }, {}); +} + +function setPluginSetting(db, key, value) { + db.prepare( + "INSERT INTO plugin_settings (plugin_id, key, value, updated_at) VALUES (?, ?, ?, ?) " + + "ON CONFLICT(plugin_id, key) DO UPDATE SET value = excluded.value, updated_at = excluded.updated_at" + ).run(PLUGIN_ID, key, value, Date.now()); +} + +function normalizeCommandName(name, fallback) { + const raw = (name || fallback || "").trim().replace(/^!+/, ""); + if (!raw) { + return (fallback || "").toLowerCase(); + } + return raw.toLowerCase().replace(/\s+/g, "-"); +} + +function normalizeActionId(name) { + const raw = (name || "").trim().replace(/^!+/, "").toLowerCase(); + if (!raw) { + return ""; + } + return raw + .replace(/[^a-z0-9-_]+/g, "-") + .replace(/-+/g, "-") + .replace(/^-+|-+$/g, ""); +} + +function conjugateVerb(name) { + const word = name.toLowerCase(); + if (word.endsWith("y") && !/[aeiou]y$/.test(word)) { + return `${word.slice(0, -1)}ies`; + } + if (/(s|x|z|ch|sh)$/.test(word)) { + return `${word}es`; + } + return `${word}s`; +} + +function conjugatePast(name) { + const word = name.toLowerCase(); + if (word.endsWith("e")) { + return `${word}d`; + } + if (word.endsWith("y") && !/[aeiou]y$/.test(word)) { + return `${word.slice(0, -1)}ied`; + } + return `${word}ed`; +} + +function parseList(value) { + return (value || "") + .toString() + .split(/[,\s]+/) + .map((item) => item.trim()) + .filter(Boolean); +} + +function parseAliasList(value) { + if (value === undefined || value === null || value === "") { + return []; + } + if (Array.isArray(value)) { + return value.map((item) => item.toString()); + } + try { + const parsed = JSON.parse(value); + if (Array.isArray(parsed)) { + return parsed.map((item) => item.toString()); + } + } catch { + // ignore invalid JSON + } + return parseList(value); +} + +function normalizeAliasList(list, command) { + const seen = new Set(); + const normalized = []; + for (const entry of list || []) { + const alias = normalizeCommandName(entry, ""); + if (!alias || alias === command || seen.has(alias)) { + continue; + } + seen.add(alias); + normalized.push(alias); + } + return normalized; +} + +function ensureDefaultActions(db) { + const existing = db + .prepare("SELECT COUNT(*) AS count FROM expression_actions") + .get(); + const rows = existing?.count || 0; + const settings = getPluginSettings(db); + const now = Date.now(); + const insert = db.prepare( + "INSERT INTO expression_actions (id, command, verb, past, aliases, enabled, archived, created_at, updated_at) " + + "VALUES (?, ?, ?, ?, ?, ?, 0, ?, ?)" + ); + + const addAction = (action) => { + const storedName = settings[`action_${action.id}_name`] || action.id; + const command = normalizeCommandName(storedName, action.id); + const enabled = parseBoolean( + settings[`action_${action.id}_enabled`], + true + ); + const useDefaultAliases = command === normalizeCommandName(action.id, action.id); + const aliases = useDefaultAliases + ? normalizeAliasList(action.aliases || [], command) + : []; + insert.run( + action.id, + command, + action.verb || "", + action.past || "", + JSON.stringify(aliases), + enabled ? 1 : 0, + now, + now + ); + }; + + if (!rows) { + DEFAULT_ACTIONS.forEach(addAction); + return; + } + + for (const action of DEFAULT_ACTIONS) { + const existingAction = db + .prepare("SELECT id FROM expression_actions WHERE id = ?") + .get(action.id); + if (!existingAction) { + addAction(action); + } + } +} + +function getExpressionActions(db) { + const rows = db + .prepare( + "SELECT id, command, verb, past, aliases, enabled, archived, created_at, updated_at " + + "FROM expression_actions ORDER BY created_at, id" + ) + .all(); + return rows.map((row) => { + const command = normalizeCommandName(row.command, row.id); + const aliasList = normalizeAliasList(parseAliasList(row.aliases), command); + const verbOverride = (row.verb || "").toString().trim(); + const pastOverride = (row.past || "").toString().trim(); + const verb = verbOverride || conjugateVerb(command); + const past = pastOverride || conjugatePast(command); + return { + id: row.id, + command, + verb, + past, + verbOverride, + pastOverride, + aliases: aliasList, + enabled: Boolean(row.enabled), + archived: Boolean(row.archived), + createdAt: row.created_at, + updatedAt: row.updated_at + }; + }); +} + +function getExpressionConfig(db) { + const now = Date.now(); + if (cachedConfig && now - cachedConfigAt < 5000) { + return cachedConfig; + } + + const settings = getPluginSettings(db); + const platforms = { + discord: parseBoolean(settings.platform_discord, true), + twitch: parseBoolean(settings.platform_twitch, true) + }; + + const conflicts = new Set(); + const actionByTrigger = new Map(); + const actions = getExpressionActions(db); + actions + .filter((action) => action.enabled && !action.archived) + .forEach((action) => { + const triggers = new Set([action.command, ...(action.aliases || [])]); + for (const trigger of triggers) { + if (actionByTrigger.has(trigger)) { + conflicts.add(trigger); + continue; + } + actionByTrigger.set(trigger, action); + } + }); + + cachedConfig = { + platforms, + actions, + actionByTrigger, + conflicts: Array.from(conflicts) + }; + cachedConfigAt = now; + return cachedConfig; +} + +function invalidateConfigCache() { + cachedConfig = null; + cachedConfigAt = 0; +} + +function savePlatformSettings(db, body) { + const platformDiscord = body.platform_discord === "on"; + const platformTwitch = body.platform_twitch === "on"; + setPluginSetting(db, "platform_discord", platformDiscord ? "1" : "0"); + setPluginSetting(db, "platform_twitch", platformTwitch ? "1" : "0"); + invalidateConfigCache(); +} + +function createExpressionAction(db, body) { + const rawId = (body.action_id || "").trim(); + const rawCommand = (body.action_command || "").trim(); + const id = normalizeActionId(rawId || rawCommand); + if (!id) { + return { ok: false, message: "Action id is required." }; + } + const existing = db + .prepare("SELECT id FROM expression_actions WHERE id = ?") + .get(id); + if (existing) { + return { ok: false, message: "That action id already exists." }; + } + const command = normalizeCommandName(rawCommand || id, id); + if (!command) { + return { ok: false, message: "Command name is required." }; + } + const verb = (body.action_verb || "").toString().trim(); + const past = (body.action_past || "").toString().trim(); + const aliases = normalizeAliasList( + parseList(body.action_aliases || ""), + command + ); + const enabled = body.action_enabled === "on"; + const now = Date.now(); + db.prepare( + "INSERT INTO expression_actions (id, command, verb, past, aliases, enabled, archived, created_at, updated_at) " + + "VALUES (?, ?, ?, ?, ?, ?, 0, ?, ?)" + ).run( + id, + command, + verb, + past, + JSON.stringify(aliases), + enabled ? 1 : 0, + now, + now + ); + invalidateConfigCache(); + return { ok: true }; +} + +function updateExpressionAction(db, id, body) { + const existing = db + .prepare("SELECT id FROM expression_actions WHERE id = ?") + .get(id); + if (!existing) { + return { ok: false, message: "Expression not found." }; + } + const rawCommand = (body.action_command || "").trim(); + const command = normalizeCommandName(rawCommand || id, id); + if (!command) { + return { ok: false, message: "Command name is required." }; + } + const verb = (body.action_verb || "").toString().trim(); + const past = (body.action_past || "").toString().trim(); + const aliases = normalizeAliasList( + parseList(body.action_aliases || ""), + command + ); + const enabled = body.action_enabled === "on"; + const now = Date.now(); + db.prepare( + "UPDATE expression_actions SET command = ?, verb = ?, past = ?, aliases = ?, enabled = ?, updated_at = ? WHERE id = ?" + ).run( + command, + verb, + past, + JSON.stringify(aliases), + enabled ? 1 : 0, + now, + id + ); + invalidateConfigCache(); + return { ok: true }; +} + +function toggleExpressionAction(db, id) { + const row = db + .prepare("SELECT enabled FROM expression_actions WHERE id = ?") + .get(id); + if (!row) { + return; + } + const next = row.enabled ? 0 : 1; + db.prepare( + "UPDATE expression_actions SET enabled = ?, updated_at = ? WHERE id = ?" + ).run(next, Date.now(), id); +} + +function setExpressionActionArchived(db, id, archived) { + db.prepare( + "UPDATE expression_actions SET archived = ?, updated_at = ? WHERE id = ?" + ).run(archived ? 1 : 0, Date.now(), id); +} + +function getUserStats(db, userId) { + const rows = db + .prepare( + "SELECT action, given_count, received_count FROM expression_user_stats WHERE user_id = ?" + ) + .all(userId); + const totals = rows.reduce( + (acc, row) => { + acc.given += row.given_count; + acc.received += row.received_count; + return acc; + }, + { given: 0, received: 0 } + ); + const byAction = rows.reduce((acc, row) => { + acc[row.action] = row; + return acc; + }, {}); + return { totals, byAction }; +} + +function getGlobalStats(db) { + const total = db + .prepare("SELECT COUNT(*) AS count FROM expression_interactions") + .get(); + const byAction = db + .prepare( + "SELECT action, COUNT(*) AS count FROM expression_interactions GROUP BY action ORDER BY count DESC" + ) + .all(); + return { + total: total?.count || 0, + byAction + }; +} + +function registerExpressionCommands({ commandRouter, settings, db }) { + if (!commandRouter) { + return null; + } + + const rebuild = () => { + const config = getExpressionConfig(db); + const platforms = []; + if (config.platforms.discord) { + platforms.push("discord"); + } + if (config.platforms.twitch) { + platforms.push("twitch"); + } + + if (!platforms.length) { + writeCommandsManifest(config); + commandRouter.registerCommands(PLUGIN_ID, []); + return; + } + + const commands = config.actions + .filter((action) => action.enabled && !action.archived) + .map((action) => { + const triggers = new Set([action.command, ...(action.aliases || [])]); + const filtered = Array.from(triggers).filter((trigger) => { + const mapped = config.actionByTrigger.get(trigger); + return mapped && mapped.id === action.id; + }); + if (!filtered.length) { + return null; + } + return { + triggers: filtered, + platforms, + handler: async (ctx) => { + return await handleExpressionCommand({ + ctx, + actionId: action.id, + settings, + db + }); + } + }; + }) + .filter(Boolean); + + commandRouter.registerCommands(PLUGIN_ID, commands); + writeCommandsManifest(config); + }; + + rebuild(); + return rebuild; +} + +function writeCommandsManifest(config) { + if (!pluginMeta?.dir) { + return; + } + const toTitle = (value) => + (value || "").replace(/(^|\s|-)(\w)/g, (_m, sep, char) => + `${sep || ""}${char.toUpperCase()}` + ); + const commands = (config.actions || []) + .filter((action) => action.enabled && !action.archived) + .map((action) => ({ + id: action.id, + trigger: action.command, + usage: `${action.command} `, + name: toTitle(action.command), + description: `Send a ${action.command} to another user.`, + level: "public", + platforms: ["discord", "twitch"], + aliases: action.aliases || [] + })); + const manifest = { + pluginId: PLUGIN_ID, + pluginName: pluginMeta?.name || "Expression Interaction", + platformKeys: { + discord: "platform_discord", + twitch: "platform_twitch" + }, + commands + }; + try { + const target = path.join(pluginMeta.dir, "cmds.json"); + fs.writeFileSync(target, JSON.stringify(manifest, null, 2), "utf8"); + } catch (error) { + console.error("Failed to write expression command manifest", error); + } +} + +async function handleExpressionCommand({ ctx, actionId, settings, db }) { + const { ensureUserForIdentity } = require("../../src/services/users"); + const config = getExpressionConfig(db); + if (!config.platforms[ctx.platform]) { + return false; + } + const action = config.actions.find((item) => item.id === actionId); + if (!action || !action.enabled || action.archived) { + return false; + } + + const prefix = settings.getSetting("command_prefix", "!"); + const targetToken = ctx.args[0]; + if (!targetToken) { + const usageTarget = ctx.platform === "discord" ? "@username" : "username"; + await ctx.reply(`Usage: ${prefix}${action.command} ${usageTarget}`); + return true; + } + + if (ctx.platform === "discord") { + const message = ctx.meta?.message; + const targetInfo = await resolveDiscordTarget( + message, + targetToken, + ensureUserForIdentity + ); + if (!targetInfo) { + await ctx.reply("I couldn't find that user. Try mentioning them."); + return true; + } + const stats = recordInteraction( + db, + action.id, + "discord", + ctx.user.id, + targetInfo.profile.id + ); + const response = buildResponse({ + action, + actorLabel: `<@${ctx.platformUser.id}>`, + targetLabel: targetInfo.label, + actorName: ctx.user.username, + targetName: targetInfo.profile.internal_username, + stats + }); + await ctx.reply(response); + return true; + } + + if (ctx.platform === "twitch") { + const targetLogin = targetToken.replace(/^@/, "").trim(); + if (!targetLogin) { + await ctx.reply(`Usage: ${prefix}${action.command} username`); + return true; + } + const targetResolved = await resolveTwitchTarget( + targetLogin, + settings, + ensureUserForIdentity + ); + const stats = recordInteraction( + db, + action.id, + "twitch", + ctx.user.id, + targetResolved.profile.id + ); + const response = buildResponse({ + action, + actorLabel: `@${ctx.platformUser.username || ctx.platformUser.displayName}`, + targetLabel: targetResolved.label, + actorName: ctx.user.username, + targetName: targetResolved.profile.internal_username, + stats + }); + await ctx.reply(response); + return true; + } + + return false; +} + +async function resolveDiscordTarget(message, token, ensureUserForIdentity) { + if (message?.mentions?.users?.first) { + const mention = message.mentions.users.first(); + if (mention) { + const display = + mention.globalName || mention.username || mention.tag || mention.id; + const profile = ensureUserForIdentity({ + provider: "discord", + providerUserId: mention.id, + displayName: display + }); + return { profile, label: `<@${mention.id}>` }; + } + } + + const idMatch = token.match(/^<@!?(\d+)>$/) || token.match(/^(\d{15,})$/); + if (idMatch && message?.client?.users?.fetch) { + const id = idMatch[1]; + const user = await message.client.users.fetch(id).catch(() => null); + if (user) { + const display = user.globalName || user.username || user.tag || user.id; + const profile = ensureUserForIdentity({ + provider: "discord", + providerUserId: user.id, + displayName: display + }); + return { profile, label: `<@${user.id}>` }; + } + } + + const name = token.replace(/^@/, "").trim(); + if (!name) { + return null; + } + const profile = ensureUserForIdentity({ + provider: "discord_name", + providerUserId: name.toLowerCase(), + displayName: name, + fallbackName: name + }); + return { profile, label: name }; +} + +function recordInteraction(db, action, platform, actorUserId, targetUserId) { + const now = Date.now(); + db.prepare( + "INSERT INTO expression_interactions (action, platform, actor_user_id, target_user_id, created_at) VALUES (?, ?, ?, ?, ?)" + ).run(action, platform, actorUserId, targetUserId, now); + + db.prepare( + "INSERT INTO expression_pair_stats (action, actor_user_id, target_user_id, count) VALUES (?, ?, ?, 1) " + + "ON CONFLICT(action, actor_user_id, target_user_id) DO UPDATE SET count = count + 1" + ).run(action, actorUserId, targetUserId); + + db.prepare( + "INSERT INTO expression_user_stats (action, user_id, given_count, received_count) VALUES (?, ?, 1, 0) " + + "ON CONFLICT(action, user_id) DO UPDATE SET given_count = given_count + 1" + ).run(action, actorUserId); + + db.prepare( + "INSERT INTO expression_user_stats (action, user_id, given_count, received_count) VALUES (?, ?, 0, 1) " + + "ON CONFLICT(action, user_id) DO UPDATE SET received_count = received_count + 1" + ).run(action, targetUserId); + + const pair = db + .prepare( + "SELECT count FROM expression_pair_stats WHERE action = ? AND actor_user_id = ? AND target_user_id = ?" + ) + .get(action, actorUserId, targetUserId); + const actorTotals = db + .prepare( + "SELECT given_count FROM expression_user_stats WHERE action = ? AND user_id = ?" + ) + .get(action, actorUserId); + const targetTotals = db + .prepare( + "SELECT received_count FROM expression_user_stats WHERE action = ? AND user_id = ?" + ) + .get(action, targetUserId); + const globalTotals = db + .prepare("SELECT COUNT(*) AS count FROM expression_interactions WHERE action = ?") + .get(action); + + return { + pairCount: pair?.count || 1, + actorTotal: actorTotals?.given_count || 1, + targetTotal: targetTotals?.received_count || 1, + globalTotal: globalTotals?.count || 1 + }; +} + +function buildResponse({ action, actorLabel, targetLabel, actorName, targetName, stats }) { + const main = `${actorLabel} ${action.verb} ${targetLabel}.`; + const options = [ + `${actorName} has ${action.past} ${targetName} ${stats.pairCount} times.`, + `${actorName} has ${action.past} ${stats.actorTotal} times total.`, + `${targetName} has been ${action.past} ${stats.targetTotal} times.`, + `This action has been used ${stats.globalTotal} times.` + ]; + const detail = options[Math.floor(Math.random() * options.length)]; + return `${main} ${detail}`; +} + +async function resolveTwitchTarget(login, settings, ensureUserForIdentity) { + const cleaned = login.toLowerCase(); + const resolved = await fetchTwitchUser(cleaned, settings); + if (resolved) { + const profile = ensureUserForIdentity({ + provider: "twitch", + providerUserId: resolved.id, + displayName: resolved.display_name + }); + return { profile, label: `@${resolved.login || cleaned}` }; + } + const profile = ensureUserForIdentity({ + provider: "twitch_login", + providerUserId: cleaned, + displayName: cleaned, + fallbackName: cleaned + }); + return { profile, label: `@${cleaned}` }; +} + +async function fetchTwitchUser(login, settings) { + const clientId = settings.getSetting("twitch_client_id"); + const clientSecret = settings.getSetting("twitch_client_secret"); + if (!clientId || !clientSecret) { + return null; + } + const token = await getTwitchAppToken(clientId, clientSecret); + if (!token) { + return null; + } + const response = await fetch( + `https://api.twitch.tv/helix/users?login=${encodeURIComponent(login)}`, + { + headers: { + "Client-Id": clientId, + Authorization: `Bearer ${token}` + } + } + ); + if (!response.ok) { + return null; + } + const data = await response.json(); + return data.data?.[0] || null; +} + +async function getTwitchAppToken(clientId, clientSecret) { + const now = Date.now(); + if (cachedAppToken && now < cachedAppTokenExpiry) { + return cachedAppToken; + } + const url = + "https://id.twitch.tv/oauth2/token" + + `?client_id=${encodeURIComponent(clientId)}` + + `&client_secret=${encodeURIComponent(clientSecret)}` + + "&grant_type=client_credentials"; + const response = await fetch(url, { method: "POST" }); + if (!response.ok) { + return null; + } + const data = await response.json(); + if (!data.access_token || !data.expires_in) { + return null; + } + cachedAppToken = data.access_token; + cachedAppTokenExpiry = now + (data.expires_in - 60) * 1000; + return cachedAppToken; +} diff --git a/plugins/expression-interaction/plugin.json b/plugins/expression-interaction/plugin.json new file mode 100644 index 0000000..d049774 --- /dev/null +++ b/plugins/expression-interaction/plugin.json @@ -0,0 +1,7 @@ +{ + "id": "expression-interaction", + "name": "Expression Interaction", + "version": "0.2.0", + "description": "Express yourself through interactions with other users, such as hugging, bonking, comforting, etc", + "main": "index.js" +} diff --git a/plugins/expression-interaction/views/expression.ejs b/plugins/expression-interaction/views/expression.ejs new file mode 100644 index 0000000..4df33df --- /dev/null +++ b/plugins/expression-interaction/views/expression.ejs @@ -0,0 +1,259 @@ +<%- include("../../../src/web/views/partials/layout-top", { title }) %> +
      +

      Expression Interaction

      +

      Roleplay friendly interactions from Discord or Twitch with quick commands.

      +

      + Commands: + <% const enabledActions = actions.filter((action) => action.enabled && !action.archived); %> + <% if (!enabledActions.length) { %> + None enabled yet. + <% } else { %> + <%= enabledActions.map((action) => `!${action.command}`).join(", ") %> + <% } %> +

      +
      + +
      +

      Your stats

      + <% if (!stats) { %> +

      Sign in to see how many actions you have given or received.

      + <% } else { %> +
      +
      + Given + <%= stats.totals.given %> +
      +
      + Received + <%= stats.totals.received %> +
      +
      + + + + + + + + + + <% const statActions = actions.filter((action) => !action.archived); %> + <% statActions.forEach((action) => { %> + <% const row = stats.byAction[action.id] || { given_count: 0, received_count: 0 }; %> + + + + + + <% }) %> + +
      ActionGivenReceived
      <%= action.command %><%= row.given_count %><%= row.received_count %>
      + <% } %> +
      + +
      +

      Global stats

      +
      +
      + Total interactions + <%= globalStats.total %> +
      +
      + <% if (!globalStats.byAction.length) { %> +

      No interactions recorded yet.

      + <% } else { %> + + + + + + + + + <% globalStats.byAction.forEach((row) => { %> + <% const action = actions.find((item) => item.id === row.action); %> + + + + + <% }) %> + +
      ActionTotal
      <%= action ? action.command : row.action %><%= row.count %>
      + <% } %> +
      + +<% if (isAdmin) { %> +
      +

      Settings

      + <% if (conflicts && conflicts.length) { %> +
      + Conflicting command names: <%= conflicts.join(", ") %>. Rename the duplicates. +
      + <% } %> +
      +
      + + +
      +
      + + +
      +
      + +
      +
      +
      + +
      +

      Expressions

      +
      +
      + + + Used for stats and tracking. Avoid changing it once created. +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + + Command names are lowercased; spaces become dashes. +
      +
      + + +
      +
      + +
      +
      + + <% if (!actions.length) { %> +

      No expressions yet.

      + <% } else { %> + + + + + + + + + + + + + + <% actions.forEach((action) => { %> + + + + + + + + + + + + + <% }) %> + +
      ActionCommandVerbPastAliasesStatusActions
      <%= action.id %><%= action.command %><%= action.verb %><%= action.past %><%= action.aliases.length ? action.aliases.join(", ") : '-' %> + <%= action.archived ? 'Archived' : action.enabled ? 'Enabled' : 'Disabled' %> + +
      + +
      + <% if (action.archived) { %> +
      + +
      + <% } else { %> +
      + +
      + <% } %> + +
      +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + + Leave tense fields blank to auto-conjugate. +
      +
      + + +
      +
      + +
      +
      +
      + <% } %> +
      +<% } %> + +<%- include("../../../src/web/views/partials/layout-bottom") %> diff --git a/plugins/moderation/index.js b/plugins/moderation/index.js new file mode 100644 index 0000000..cadd75c --- /dev/null +++ b/plugins/moderation/index.js @@ -0,0 +1,1139 @@ +const path = require("path"); +const fs = require("fs"); +const crypto = require("crypto"); +const multer = require("multer"); + +const PLUGIN_ID = "moderation"; +const EVIDENCE_DIR = path.join(__dirname, "..", "..", "data", "moderation", "evidence"); +const PRESET_DURATIONS = [ + { label: "1 hour", seconds: 60 * 60 }, + { label: "3 hours", seconds: 3 * 60 * 60 }, + { label: "6 hours", seconds: 6 * 60 * 60 }, + { label: "12 hours", seconds: 12 * 60 * 60 }, + { label: "1 day", seconds: 24 * 60 * 60 }, + { label: "7 days", seconds: 7 * 24 * 60 * 60 }, + { label: "14 days", seconds: 14 * 24 * 60 * 60 }, + { label: "1 month", seconds: 30 * 24 * 60 * 60 }, + { label: "3 months", seconds: 90 * 24 * 60 * 60 }, + { label: "6 months", seconds: 180 * 24 * 60 * 60 }, + { label: "9 months", seconds: 270 * 24 * 60 * 60 }, + { label: "1 year", seconds: 365 * 24 * 60 * 60 } +]; + +module.exports = { + id: PLUGIN_ID, + init({ app, web, db, settings, discordClient, twitchClient, youtubeClient }) { + ensureTables(db); + ensureBanPot(db); + ensureEvidenceDir(); + + const upload = multer({ + storage: multer.diskStorage({ + destination: (_req, _file, cb) => cb(null, EVIDENCE_DIR), + filename: (_req, file, cb) => { + const ext = path.extname(file.originalname || ".png").slice(0, 10); + cb(null, `${crypto.randomUUID()}${ext}`); + } + }) + }); + + installGlobalGate(app, (req, res, next) => { + if (!req.session?.user) { + return next(); + } + if (req.path.startsWith("/auth")) { + return next(); + } + if (req.path.startsWith("/moderation/status")) { + return next(); + } + linkSubjectToUser(db, req.session.user.id); + const sanction = getActiveSanctionForUser(db, req.session.user.id); + if (!sanction) { + return next(); + } + res.status(403).render(path.join(__dirname, "views", "status.ejs"), { + title: "Account restricted", + sanction + }); + }); + + const router = web.createRouter(); + + router.get("/status", (req, res) => { + if (!req.session?.user) { + return res.redirect("/"); + } + linkSubjectToUser(db, req.session.user.id); + const sanction = getActiveSanctionForUser(db, req.session.user.id); + if (!sanction) { + return res.redirect("/"); + } + res.status(403).render(path.join(__dirname, "views", "status.ejs"), { + title: "Account restricted", + sanction + }); + }); + + router.get("/", (req, res) => { + if (!req.session.user) { + return res.redirect("/"); + } + const isAdmin = Boolean(req.session.user?.isAdmin); + const isMod = Boolean(req.session.user?.isAdmin || req.session.user?.isMod); + const userDirectory = listUserDirectory(db); + const actions = listActions(db, { limit: 500 }); + const actionEvidence = listEvidenceForActions( + db, + actions.map((action) => action.id) + ); + const notes = listNotes(db, { limit: 1000 }); + const activeSanctions = listActiveSanctions(db); + const banPot = getBanPot(db); + res.render(path.join(__dirname, "views", "moderation.ejs"), { + title: "Moderation Center", + isAdmin, + isMod, + userDirectory, + actions, + actionEvidence, + notes, + activeSanctions, + banPot, + presets: PRESET_DURATIONS + }); + }); + + router.get("/tos-bans", (req, res) => { + if (!req.session.user) { + return res.redirect("/"); + } + const isAdmin = Boolean(req.session.user?.isAdmin); + const isMod = Boolean(req.session.user?.isAdmin || req.session.user?.isMod); + if (!isMod) { + return deny(res); + } + const actions = listActions(db, { limit: 500 }); + const actionEvidence = listEvidenceForActions( + db, + actions.map((action) => action.id) + ); + const activeSanctions = listActiveSanctions(db); + res.render(path.join(__dirname, "views", "tos-bans.ejs"), { + title: "TOs & Bans", + isAdmin, + isMod, + actions, + actionEvidence, + activeSanctions, + presets: PRESET_DURATIONS + }); + }); + + router.get("/evidence/:id", (req, res) => { + if (!req.session.user) { + return res.redirect("/"); + } + const isMod = Boolean(req.session.user?.isAdmin || req.session.user?.isMod); + if (!isMod) { + return deny(res); + } + const row = db + .prepare("SELECT file_path, file_name FROM moderation_evidence WHERE id = ?") + .get(req.params.id); + if (!row?.file_path) { + return res.status(404).render("error", { + title: "Not found", + message: "Evidence file not found." + }); + } + res.download(row.file_path, row.file_name || path.basename(row.file_path)); + }); + + router.post("/actions", upload.array("evidence_files", 4), async (req, res) => { + if (!req.session.user) { + return res.redirect("/"); + } + const isAdmin = Boolean(req.session.user?.isAdmin); + const isMod = Boolean(req.session.user?.isAdmin || req.session.user?.isMod); + if (!isMod) { + return deny(res); + } + + const actionType = (req.body.action_type || "").toLowerCase(); + if (actionType === "kick") { + req.session.flash = { + type: "info", + message: "Kick actions are coming soon." + }; + return res.redirect(`/plugins/${PLUGIN_ID}`); + } + + const target = resolveTarget(db, req.body); + if (!target) { + req.session.flash = { type: "error", message: "Target not found." }; + return res.redirect(`/plugins/${PLUGIN_ID}`); + } + + const reasonShort = (req.body.reason_short || "").trim(); + const reasonDetail = (req.body.reason_detail || "").trim(); + if (!reasonShort || !reasonDetail) { + req.session.flash = { + type: "error", + message: "Both summary and detailed reasons are required." + }; + return res.redirect(`/plugins/${PLUGIN_ID}`); + } + + const durationSeconds = + actionType === "timeout" + ? buildDurationSeconds(req.body, isAdmin, isMod) + : null; + const createdBy = req.session.user.username || "Moderator"; + const createdById = req.session.user.id; + const action = createAction(db, { + subjectId: target.subjectId, + actionType, + scope: "global", + platform: "global", + reasonShort, + reasonDetail, + durationSeconds, + createdById, + createdByName: createdBy, + source: "manual" + }); + + const evidenceFiles = (req.files || []).map((file) => ({ + path: file.path, + name: file.originalname + })); + evidenceFiles.forEach((file) => { + addEvidence(db, action.id, file.path, file.name, createdById); + }); + + const identities = listSubjectIdentities(db, target.subjectId); + await enforceAction({ + action, + identities, + settings, + discordClient, + twitchClient, + youtubeClient, + reasonShort, + reasonDetail + }); + + if (actionType === "ban") { + distributeBanAssets(db, target.subjectId, { reason: reasonShort }); + } + + req.session.flash = { type: "success", message: "Moderation action recorded." }; + res.redirect(`/plugins/${PLUGIN_ID}`); + }); + + router.post("/actions/:id/update-timeout", (req, res) => { + if (!req.session.user) { + return res.redirect("/"); + } + const isMod = Boolean(req.session.user?.isAdmin || req.session.user?.isMod); + if (!isMod) { + return deny(res); + } + const action = getAction(db, req.params.id); + if (!action || action.action_type !== "timeout") { + req.session.flash = { type: "error", message: "Timeout not found." }; + return res.redirect(`/plugins/${PLUGIN_ID}`); + } + const durationSeconds = buildDurationSeconds(req.body, req.session.user?.isAdmin, true); + const expiresAt = durationSeconds ? Date.now() + durationSeconds * 1000 : null; + updateActionDuration(db, action.id, durationSeconds, expiresAt); + req.session.flash = { type: "success", message: "Timeout updated." }; + res.redirect(`/plugins/${PLUGIN_ID}`); + }); + + router.post("/actions/:id/revoke", async (req, res) => { + if (!req.session.user) { + return res.redirect("/"); + } + const action = getAction(db, req.params.id); + if (!action) { + req.session.flash = { type: "error", message: "Action not found." }; + return res.redirect(`/plugins/${PLUGIN_ID}`); + } + const isAdmin = Boolean(req.session.user?.isAdmin); + const isMod = Boolean(req.session.user?.isAdmin || req.session.user?.isMod); + if (action.action_type === "ban" && !isAdmin) { + return deny(res); + } + if (action.action_type === "timeout" && !isMod) { + return deny(res); + } + setActionStatus(db, action.id, "revoked"); + + const identities = listSubjectIdentities(db, action.subject_id); + await revokeAction({ + action, + identities, + settings, + discordClient, + twitchClient, + youtubeClient + }); + + req.session.flash = { type: "success", message: "Action revoked." }; + res.redirect(`/plugins/${PLUGIN_ID}`); + }); + + router.post("/notes", (req, res) => { + if (!req.session.user) { + return res.redirect("/"); + } + const isMod = Boolean(req.session.user?.isAdmin || req.session.user?.isMod); + if (!isMod) { + return deny(res); + } + const target = resolveTarget(db, req.body); + const note = (req.body.note || "").trim(); + if (!target || !note) { + req.session.flash = { type: "error", message: "Target and note are required." }; + return res.redirect(`/plugins/${PLUGIN_ID}`); + } + addNote(db, target.subjectId, note, req.session.user.id, req.session.user.username || "Moderator"); + req.session.flash = { type: "success", message: "Note added." }; + res.redirect(`/plugins/${PLUGIN_ID}`); + }); + + web.mount(`/plugins/${PLUGIN_ID}`, router, { + label: "Moderation", + role: "mod", + section: "moderation" + }); + + web.addNavItem({ + label: "TOs & Bans", + path: `/plugins/${PLUGIN_ID}/tos-bans`, + role: "mod", + section: "moderation" + }); + + if (discordClient) { + startDiscordAuditPolling(db, settings, discordClient); + } + if (twitchClient) { + attachTwitchModerationEvents(db, twitchClient); + } + installFreezeHook(db); + } +}; + +function deny(res) { + return res.status(403).render("error", { + title: "Access denied", + message: "You do not have access to that page." + }); +} + +function ensureEvidenceDir() { + fs.mkdirSync(EVIDENCE_DIR, { recursive: true }); +} + +function ensureTables(db) { + db.exec(` + CREATE TABLE IF NOT EXISTS moderation_subjects ( + id TEXT PRIMARY KEY, + internal_user_id TEXT, + display_name TEXT, + created_at INTEGER NOT NULL + ); + + CREATE TABLE IF NOT EXISTS moderation_identities ( + id TEXT PRIMARY KEY, + subject_id TEXT NOT NULL, + platform TEXT NOT NULL, + platform_user_id TEXT, + platform_username TEXT, + created_at INTEGER NOT NULL, + UNIQUE(platform, platform_user_id) + ); + + CREATE TABLE IF NOT EXISTS moderation_actions ( + id TEXT PRIMARY KEY, + subject_id TEXT NOT NULL, + action_type TEXT NOT NULL, + scope TEXT NOT NULL, + platform TEXT, + source TEXT, + status TEXT NOT NULL, + duration_seconds INTEGER, + reason_short TEXT NOT NULL, + reason_detail TEXT NOT NULL, + created_by_user_id TEXT, + created_by_name TEXT, + created_at INTEGER NOT NULL, + expires_at INTEGER, + external_ref TEXT + ); + + CREATE TABLE IF NOT EXISTS moderation_evidence ( + id TEXT PRIMARY KEY, + action_id TEXT NOT NULL, + file_path TEXT NOT NULL, + file_name TEXT, + uploaded_by TEXT, + created_at INTEGER NOT NULL + ); + + CREATE TABLE IF NOT EXISTS moderation_notes ( + id TEXT PRIMARY KEY, + subject_id TEXT NOT NULL, + note TEXT NOT NULL, + created_by_user_id TEXT, + created_by_name TEXT, + created_at INTEGER NOT NULL + ); + + CREATE TABLE IF NOT EXISTS moderation_ban_pot ( + id INTEGER PRIMARY KEY CHECK (id = 1), + balance INTEGER NOT NULL DEFAULT 0, + updated_at INTEGER NOT NULL + ); + `); +} + +function ensureBanPot(db) { + const existing = db.prepare("SELECT id FROM moderation_ban_pot WHERE id = 1").get(); + if (!existing) { + db.prepare("INSERT INTO moderation_ban_pot (id, balance, updated_at) VALUES (1, 0, ?)") + .run(Date.now()); + } +} + +function listUserDirectory(db) { + const users = db.prepare("SELECT id, internal_username FROM user_profiles ORDER BY internal_username").all(); + const identities = db + .prepare("SELECT user_id, provider, provider_user_id, display_name FROM user_identities") + .all(); + const map = new Map(); + users.forEach((user) => { + map.set(user.id, { id: user.id, internal: user.internal_username, identities: [] }); + }); + identities.forEach((row) => { + if (!map.has(row.user_id)) { + map.set(row.user_id, { id: row.user_id, internal: row.user_id, identities: [] }); + } + map.get(row.user_id).identities.push({ + label: row.provider, + id: row.provider_user_id, + display: row.display_name || row.provider_user_id + }); + }); + return Array.from(map.values()); +} + +function resolveTarget(db, body) { + const internal = (body.target_username || "").trim(); + if (internal) { + const user = db + .prepare("SELECT id, internal_username FROM user_profiles WHERE internal_username = ?") + .get(internal); + if (user) { + const subjectId = getOrCreateSubjectByUser(db, user.id, user.internal_username); + syncSubjectIdentities(db, subjectId, user.id); + return { subjectId, internalUserId: user.id }; + } + } + + const platform = (body.target_platform || "").trim().toLowerCase(); + const platformId = (body.target_platform_id || "").trim(); + const platformUsername = (body.target_platform_username || "").trim(); + if (!platform) { + return null; + } + const key = platformId || platformUsername; + if (!key) { + return null; + } + const subjectId = getOrCreateSubjectByIdentity( + db, + platform, + key, + platformUsername || platformId + ); + return { subjectId, internalUserId: null }; +} + +function getOrCreateSubjectByUser(db, userId, displayName) { + const existing = db + .prepare("SELECT id FROM moderation_subjects WHERE internal_user_id = ?") + .get(userId); + if (existing) { + return existing.id; + } + const id = crypto.randomUUID(); + db.prepare( + "INSERT INTO moderation_subjects (id, internal_user_id, display_name, created_at) VALUES (?, ?, ?, ?)" + ).run(id, userId, displayName || null, Date.now()); + return id; +} + +function getOrCreateSubjectByIdentity(db, platform, platformUserId, platformUsername) { + const existing = db + .prepare("SELECT subject_id FROM moderation_identities WHERE platform = ? AND platform_user_id = ?") + .get(platform, platformUserId); + if (existing) { + return existing.subject_id; + } + const subjectId = crypto.randomUUID(); + db.prepare( + "INSERT INTO moderation_subjects (id, internal_user_id, display_name, created_at) VALUES (?, NULL, ?, ?)" + ).run(subjectId, platformUsername || platformUserId, Date.now()); + db.prepare( + "INSERT INTO moderation_identities (id, subject_id, platform, platform_user_id, platform_username, created_at) VALUES (?, ?, ?, ?, ?, ?)" + ).run(crypto.randomUUID(), subjectId, platform, platformUserId, platformUsername || null, Date.now()); + return subjectId; +} + +function syncSubjectIdentities(db, subjectId, userId) { + const identities = db + .prepare("SELECT provider, provider_user_id, display_name FROM user_identities WHERE user_id = ?") + .all(userId); + identities.forEach((identity) => { + const existing = db + .prepare( + "SELECT id FROM moderation_identities WHERE platform = ? AND platform_user_id = ?" + ) + .get(identity.provider, identity.provider_user_id); + if (existing) { + return; + } + db.prepare( + "INSERT INTO moderation_identities (id, subject_id, platform, platform_user_id, platform_username, created_at) VALUES (?, ?, ?, ?, ?, ?)" + ).run( + crypto.randomUUID(), + subjectId, + identity.provider, + identity.provider_user_id, + identity.display_name || identity.provider_user_id, + Date.now() + ); + }); +} + +function linkSubjectToUser(db, userId) { + const subject = db + .prepare("SELECT id FROM moderation_subjects WHERE internal_user_id = ?") + .get(userId); + if (subject) { + return subject.id; + } + const identities = db + .prepare("SELECT provider, provider_user_id, display_name FROM user_identities WHERE user_id = ?") + .all(userId); + for (const identity of identities) { + const existing = db + .prepare( + "SELECT subject_id FROM moderation_identities WHERE platform = ? AND platform_user_id = ?" + ) + .get(identity.provider, identity.provider_user_id); + if (existing) { + db.prepare( + "UPDATE moderation_subjects SET internal_user_id = ?, display_name = COALESCE(display_name, ?) WHERE id = ?" + ).run(userId, identity.display_name || identity.provider_user_id, existing.subject_id); + return existing.subject_id; + } + } + return null; +} + +function listSubjectIdentities(db, subjectId) { + return db + .prepare( + "SELECT platform, platform_user_id, platform_username FROM moderation_identities WHERE subject_id = ?" + ) + .all(subjectId); +} + +function buildDurationSeconds(body, isAdmin, isMod) { + if (body.permanent === "on") { + return null; + } + if (isAdmin && body.duration_value) { + const value = Number(body.duration_value); + const unit = (body.duration_unit || "hours").toLowerCase(); + if (Number.isFinite(value) && value > 0) { + const multipliers = { + hour: 3600, + hours: 3600, + day: 86400, + days: 86400, + week: 604800, + weeks: 604800, + month: 2592000, + months: 2592000, + year: 31536000, + years: 31536000 + }; + const multiplier = multipliers[unit] || 3600; + return Math.floor(value * multiplier); + } + } + if (isMod && body.duration_preset) { + const preset = PRESET_DURATIONS.find( + (entry) => entry.seconds.toString() === body.duration_preset.toString() + ); + return preset ? preset.seconds : null; + } + return null; +} + +function createAction(db, payload) { + if (payload.externalRef) { + const existing = db + .prepare("SELECT id FROM moderation_actions WHERE external_ref = ?") + .get(payload.externalRef); + if (existing) { + return getAction(db, existing.id); + } + } + const now = Date.now(); + const expiresAt = payload.durationSeconds ? now + payload.durationSeconds * 1000 : null; + const action = { + id: crypto.randomUUID(), + subject_id: payload.subjectId, + action_type: payload.actionType, + scope: payload.scope || "global", + platform: payload.platform || "global", + source: payload.source || "manual", + status: "active", + duration_seconds: payload.durationSeconds || null, + reason_short: payload.reasonShort, + reason_detail: payload.reasonDetail, + created_by_user_id: payload.createdById || null, + created_by_name: payload.createdByName || null, + created_at: now, + expires_at: expiresAt, + external_ref: payload.externalRef || null + }; + db.prepare( + "INSERT INTO moderation_actions (id, subject_id, action_type, scope, platform, source, status, duration_seconds, reason_short, reason_detail, created_by_user_id, created_by_name, created_at, expires_at, external_ref) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" + ).run( + action.id, + action.subject_id, + action.action_type, + action.scope, + action.platform, + action.source, + action.status, + action.duration_seconds, + action.reason_short, + action.reason_detail, + action.created_by_user_id, + action.created_by_name, + action.created_at, + action.expires_at, + action.external_ref + ); + return action; +} + +function addEvidence(db, actionId, filePath, fileName, uploadedBy) { + db.prepare( + "INSERT INTO moderation_evidence (id, action_id, file_path, file_name, uploaded_by, created_at) VALUES (?, ?, ?, ?, ?, ?)" + ).run(crypto.randomUUID(), actionId, filePath, fileName, uploadedBy, Date.now()); +} + +function addNote(db, subjectId, note, createdById, createdByName) { + db.prepare( + "INSERT INTO moderation_notes (id, subject_id, note, created_by_user_id, created_by_name, created_at) VALUES (?, ?, ?, ?, ?, ?)" + ).run(crypto.randomUUID(), subjectId, note, createdById, createdByName, Date.now()); +} + +function listActions(db, { limit = 200 } = {}) { + return db + .prepare( + "SELECT a.*, s.display_name FROM moderation_actions a " + + "LEFT JOIN moderation_subjects s ON s.id = a.subject_id " + + "ORDER BY a.created_at DESC LIMIT ?" + ) + .all(limit); +} + +function listEvidenceForActions(db, ids) { + if (!ids || !ids.length) { + return {}; + } + const rows = db + .prepare( + `SELECT id, action_id, file_name, file_path FROM moderation_evidence WHERE action_id IN (${ids + .map(() => "?") + .join(",")})` + ) + .all(...ids); + return rows.reduce((acc, row) => { + if (!acc[row.action_id]) { + acc[row.action_id] = []; + } + acc[row.action_id].push({ + id: row.id, + name: row.file_name || path.basename(row.file_path) + }); + return acc; + }, {}); +} + +function listNotes(db, { limit = 200 } = {}) { + return db + .prepare( + "SELECT n.*, s.display_name, s.internal_user_id FROM moderation_notes n " + + "LEFT JOIN moderation_subjects s ON s.id = n.subject_id " + + "ORDER BY n.created_at DESC LIMIT ?" + ) + .all(limit); +} + +function listActiveSanctions(db) { + const now = Date.now(); + return db + .prepare( + "SELECT a.*, s.display_name FROM moderation_actions a " + + "LEFT JOIN moderation_subjects s ON s.id = a.subject_id " + + "WHERE a.status = 'active' AND a.action_type IN ('ban', 'timeout') " + + "AND (a.expires_at IS NULL OR a.expires_at > ?) " + + "ORDER BY a.created_at DESC" + ) + .all(now); +} + +function getAction(db, id) { + return db + .prepare("SELECT * FROM moderation_actions WHERE id = ?") + .get(id); +} + +function updateActionDuration(db, id, durationSeconds, expiresAt) { + db.prepare( + "UPDATE moderation_actions SET duration_seconds = ?, expires_at = ? WHERE id = ?" + ).run(durationSeconds, expiresAt, id); +} + +function setActionStatus(db, id, status) { + db.prepare("UPDATE moderation_actions SET status = ? WHERE id = ?").run(status, id); +} + +function getActiveSanctionForUser(db, userId) { + const subject = db + .prepare("SELECT id FROM moderation_subjects WHERE internal_user_id = ?") + .get(userId); + if (!subject) { + return null; + } + const now = Date.now(); + const action = db + .prepare( + "SELECT a.*, s.display_name FROM moderation_actions a " + + "LEFT JOIN moderation_subjects s ON s.id = a.subject_id " + + "WHERE a.subject_id = ? AND a.status = 'active' AND a.action_type IN ('ban', 'timeout') " + + "AND (a.expires_at IS NULL OR a.expires_at > ?) " + + "ORDER BY a.created_at DESC LIMIT 1" + ) + .get(subject.id, now); + return action || null; +} + +function getBanPot(db) { + const row = db.prepare("SELECT balance FROM moderation_ban_pot WHERE id = 1").get(); + return row ? row.balance : 0; +} + +function addBanPot(db, amount) { + const current = getBanPot(db); + db.prepare("UPDATE moderation_ban_pot SET balance = ?, updated_at = ? WHERE id = 1").run( + current + amount, + Date.now() + ); +} + +async function enforceAction({ + action, + identities, + settings, + discordClient, + twitchClient, + youtubeClient, + reasonShort, + reasonDetail +}) { + const summary = reasonShort || "Moderation action"; + const detail = reasonDetail || ""; + const duration = action.duration_seconds || null; + + for (const identity of identities) { + if (identity.platform === "discord") { + await enforceDiscord( + discordClient, + settings, + identity.platform_user_id, + action.action_type, + summary, + detail, + duration + ); + } + if (identity.platform === "twitch") { + await enforceTwitch( + twitchClient, + identity.platform_username || identity.platform_user_id, + action.action_type, + summary, + duration + ); + } + if (identity.platform === "youtube") { + // Placeholder for YouTube enforcement + // Future: apply chat bans/timeouts with YouTube API + continue; + } + } +} + +async function revokeAction({ action, identities, settings, discordClient, twitchClient }) { + for (const identity of identities) { + if (identity.platform === "discord") { + if (action.action_type === "ban") { + await revokeDiscordBan(discordClient, settings, identity.platform_user_id); + } + if (action.action_type === "timeout") { + await revokeDiscordTimeout(discordClient, settings, identity.platform_user_id); + } + } + if (identity.platform === "twitch") { + if (action.action_type === "ban") { + await revokeTwitchBan(twitchClient, identity.platform_username || identity.platform_user_id); + } + if (action.action_type === "timeout") { + await revokeTwitchTimeout(twitchClient, identity.platform_username || identity.platform_user_id); + } + } + } +} + +async function enforceDiscord(client, settings, userId, actionType, reasonShort, reasonDetail, durationSeconds) { + if (!client || !userId) { + return; + } + const guildId = settings?.getSetting?.("discord_guild_id", null); + if (!guildId) { + return; + } + const guild = client.guilds?.cache?.get(guildId) || null; + if (!guild) { + return; + } + const reason = `${reasonShort}${reasonDetail ? ` | ${reasonDetail}` : ""}`.slice(0, 480); + if (actionType === "ban") { + await guild.members.ban(userId, { reason }).catch(() => null); + await notifyDiscordMember(guild, userId, reasonShort, reasonDetail, "ban"); + return; + } + if (actionType === "timeout") { + const member = await guild.members.fetch(userId).catch(() => null); + if (!member) { + return; + } + const durationMs = durationSeconds ? durationSeconds * 1000 : null; + if (durationMs) { + await member.timeout(durationMs, reason).catch(() => null); + await notifyDiscordMember(guild, userId, reasonShort, reasonDetail, "timeout"); + } + } +} + +async function revokeDiscordBan(client, settings, userId) { + if (!client || !userId) { + return; + } + const guildId = settings?.getSetting?.("discord_guild_id", null); + if (!guildId) { + return; + } + const guild = client.guilds?.cache?.get(guildId) || null; + if (!guild) { + return; + } + await guild.members.unban(userId).catch(() => null); +} + +async function revokeDiscordTimeout(client, settings, userId) { + if (!client || !userId) { + return; + } + const guildId = settings?.getSetting?.("discord_guild_id", null); + const guild = client.guilds?.cache?.get(guildId) || null; + if (!guild) { + return; + } + const member = await guild.members.fetch(userId).catch(() => null); + if (!member) { + return; + } + await member.timeout(null).catch(() => null); +} + +async function notifyDiscordMember(guild, userId, reasonShort, reasonDetail, type) { + const member = await guild.members.fetch(userId).catch(() => null); + if (!member) { + return; + } + const title = type === "ban" ? "You have been banned" : "You have been timed out"; + const message = `${title} from ${guild.name}.\nSummary: ${reasonShort}\nDetails: ${reasonDetail}`.slice(0, 1900); + await member.send(message).catch(() => null); +} + +async function enforceTwitch(client, username, actionType, reasonShort, durationSeconds) { + if (!client || !username) { + return; + } + const reason = reasonShort || "Moderation action"; + const channels = typeof client.getChannels === "function" ? client.getChannels() : []; + const channel = channels[0] || null; + if (!channel) { + return; + } + if (actionType === "ban") { + await client.ban(channel, username, reason).catch(() => null); + await tryWhisper(client, username, `You have been banned. Reason: ${reason}`); + return; + } + if (actionType === "timeout") { + const duration = durationSeconds || 3600; + await client.timeout(channel, username, duration, reason).catch(() => null); + await tryWhisper(client, username, `You have been timed out. Reason: ${reason}`); + } +} + +async function revokeTwitchBan(client, username) { + if (!client || !username) { + return; + } + const channels = typeof client.getChannels === "function" ? client.getChannels() : []; + const channel = channels[0] || null; + if (!channel) { + return; + } + await client.unban(channel, username).catch(() => null); +} + +async function revokeTwitchTimeout(client, username) { + if (!client || !username) { + return; + } + const channels = typeof client.getChannels === "function" ? client.getChannels() : []; + const channel = channels[0] || null; + if (!channel) { + return; + } + await client.unban(channel, username).catch(() => null); +} + +async function tryWhisper(client, username, message) { + if (!client || typeof client.whisper !== "function") { + return; + } + await client.whisper(username, message).catch(() => null); +} + +function distributeBanAssets(db, subjectId, { reason }) { + const framework = global.lumiFrameworks?.echonomy; + if (!framework) { + return; + } + const subject = db + .prepare("SELECT internal_user_id FROM moderation_subjects WHERE id = ?") + .get(subjectId); + if (!subject?.internal_user_id) { + return; + } + const balance = framework.getBalance(subject.internal_user_id); + if (!balance || balance <= 0) { + return; + } + const result = framework.removeBalance({ + userId: subject.internal_user_id, + amount: balance, + note: `Ban distribution${reason ? `: ${reason}` : ""}`, + meta: { source: "moderation", type: "ban" }, + allowFrozen: true + }); + if (result?.ok === false) { + return; + } + addBanPot(db, balance); +} + +function installFreezeHook(db) { + global.lumiModeration = { + isFrozen: (userId) => isUserFrozen(db, userId), + getBanPot: () => getBanPot(db) + }; +} + +function isUserFrozen(db, userId) { + const sanction = getActiveSanctionForUser(db, userId); + if (!sanction) { + return false; + } + return true; +} + +function startDiscordAuditPolling(db, settings, client) { + const poll = async () => { + if (!client?.guilds?.cache) { + return; + } + for (const guild of client.guilds.cache.values()) { + await harvestDiscordAuditLogs(db, guild, settings); + } + }; + poll(); + setInterval(poll, 60000); +} + +async function harvestDiscordAuditLogs(db, guild, settings) { + const types = [ + "MEMBER_BAN_ADD", + "MEMBER_BAN_REMOVE", + "MEMBER_KICK", + "MEMBER_UPDATE" + ]; + for (const type of types) { + const entries = await guild.fetchAuditLogs({ type, limit: 10 }).catch(() => null); + if (!entries) { + continue; + } + const lastKey = `discord_audit_${guild.id}_${type}`; + const lastIdRow = db.prepare("SELECT value FROM plugin_settings WHERE plugin_id = ? AND key = ?") + .get(PLUGIN_ID, lastKey); + const lastId = lastIdRow?.value || null; + const items = Array.from(entries.entries.values()); + for (const entry of items) { + if (lastId && entry.id === lastId) { + break; + } + const target = entry.target; + if (!target?.id) { + continue; + } + const subjectId = getOrCreateSubjectByIdentity(db, "discord", target.id, target.tag || target.username); + const actionType = mapDiscordAuditType(entry, type); + if (!actionType) { + continue; + } + const duration = actionType === "timeout" ? computeTimeoutDuration(entry) : null; + createAction(db, { + subjectId, + actionType, + scope: "global", + platform: "discord", + reasonShort: entry.reason || "Discord moderation action", + reasonDetail: entry.reason || "", + durationSeconds: duration, + createdById: entry.executor?.id || null, + createdByName: entry.executor?.tag || entry.executor?.username || null, + source: "external", + externalRef: entry.id + }); + } + if (items[0]) { + setPluginSetting(db, lastKey, items[0].id); + } + } +} + +function mapDiscordAuditType(entry, type) { + if (type === "MEMBER_BAN_ADD") { + return "ban"; + } + if (type === "MEMBER_BAN_REMOVE") { + return "unban"; + } + if (type === "MEMBER_KICK") { + return "kick"; + } + if (type === "MEMBER_UPDATE") { + const change = entry.changes?.find((item) => item.key === "communication_disabled_until"); + if (!change) { + return null; + } + if (change.new) { + return "timeout"; + } + return "untimeout"; + } + return null; +} + +function computeTimeoutDuration(entry) { + const change = entry.changes?.find((item) => item.key === "communication_disabled_until"); + if (!change || !change.new) { + return null; + } + const until = new Date(change.new).getTime(); + const now = entry.createdTimestamp || Date.now(); + const diff = Math.max(0, Math.floor((until - now) / 1000)); + return diff || null; +} + +function setPluginSetting(db, key, value) { + db.prepare( + "INSERT INTO plugin_settings (plugin_id, key, value, updated_at) VALUES (?, ?, ?, ?) " + + "ON CONFLICT(plugin_id, key) DO UPDATE SET value = excluded.value, updated_at = excluded.updated_at" + ).run(PLUGIN_ID, key, value, Date.now()); +} + +function attachTwitchModerationEvents(db, client) { + client.on("ban", (channel, username, reason, userstate) => { + const targetId = userstate?.["target-user-id"] || username; + const subjectId = getOrCreateSubjectByIdentity(db, "twitch", targetId, username); + createAction(db, { + subjectId, + actionType: "ban", + scope: "global", + platform: "twitch", + reasonShort: reason || "Twitch ban", + reasonDetail: reason || "", + durationSeconds: null, + createdById: userstate?.["room-id"] || null, + createdByName: userstate?.["display-name"] || null, + source: "external", + externalRef: `${channel}:${username}:${Date.now()}` + }); + }); + + client.on("timeout", (channel, username, reason, duration, userstate) => { + const targetId = userstate?.["target-user-id"] || username; + const subjectId = getOrCreateSubjectByIdentity(db, "twitch", targetId, username); + createAction(db, { + subjectId, + actionType: "timeout", + scope: "global", + platform: "twitch", + reasonShort: reason || "Twitch timeout", + reasonDetail: reason || "", + durationSeconds: duration || null, + createdById: userstate?.["room-id"] || null, + createdByName: userstate?.["display-name"] || null, + source: "external", + externalRef: `${channel}:${username}:${Date.now()}` + }); + }); +} + +function installGlobalGate(app, middleware) { + app.use(middleware); + const stack = app._router?.stack; + if (Array.isArray(stack) && stack.length) { + const layer = stack.pop(); + stack.unshift(layer); + } +} diff --git a/plugins/moderation/plugin.json b/plugins/moderation/plugin.json new file mode 100644 index 0000000..081489d --- /dev/null +++ b/plugins/moderation/plugin.json @@ -0,0 +1,7 @@ +{ + "id": "moderation", + "name": "Moderation Center", + "version": "0.1.3", + "description": "Cross-platform moderation actions, notes, and sanctions.", + "main": "index.js" +} diff --git a/plugins/moderation/views/moderation.ejs b/plugins/moderation/views/moderation.ejs new file mode 100644 index 0000000..c482783 --- /dev/null +++ b/plugins/moderation/views/moderation.ejs @@ -0,0 +1,591 @@ +<%- include("../../../src/web/views/partials/layout-top", { title }) %> + + +
      +
      +
      +

      Moderation Center

      +

      Global moderation actions, notes, and audit tracking.

      +
      +
      +
      + +
      +
      + +
      + Issue action + Global bans and timeouts with required reasoning. +
      + +
      +
      +
      + +
      + + +
      +
      + + + Use platform IDs when possible. Twitch can use username. +
      +
      + + +
      +
      + + +
      + <% if (!isAdmin) { %> +
      + + +
      + <% } %> + <% if (isAdmin) { %> +
      + +
      + + +
      +
      + <% } %> +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      + +
      +
      +
      + +
      +

      Ban pot

      +
      + Current balance + <%= banPot %> + Funds from bans are collected here. +
      +
      + +
      +
      +
      +

      User notes

      +

      Search or filter notes and keep context handy.

      +
      + +
      + +
      + +
      + <% const noteUsers = Array.from(new Set(notes.map((note) => (note.internal_user_id || note.display_name || note.subject_id)).filter(Boolean))).sort((a, b) => a.localeCompare(b)); %> + + +
      +
      + + <% if (!notes.length) { %> +

      No notes yet.

      + <% } else { %> +
      + + + + + + + + + + + <% notes.forEach((note) => { %> + <% const noteName = note.display_name || note.subject_id; %> + <% const noteUser = (note.internal_user_id || noteName || '').toLowerCase(); %> + + + + + + + <% }) %> + +
      UserNoteByDate
      <%= noteName %><%= note.note %><%= note.created_by_name || 'Staff' %><%= new Date(note.created_at).toLocaleString() %>
      +
      +
      + + Page 1 of 1 + +
      + <% } %> +
      +
      + + + + + +<%- include("../../../src/web/views/partials/layout-bottom") %> diff --git a/plugins/moderation/views/status.ejs b/plugins/moderation/views/status.ejs new file mode 100644 index 0000000..5e7e2e8 --- /dev/null +++ b/plugins/moderation/views/status.ejs @@ -0,0 +1,42 @@ + + + + + + <%= title %> + + + +
      +
      +

      Access restricted

      +

      Your account is currently restricted by moderation.

      +
      +
      + Action + <%= sanction.action_type %> +
      +
      + Status + <%= sanction.status %> +
      +
      + When + <%= new Date(sanction.created_at).toLocaleString() %> +
      +
      + Expires + <%= sanction.expires_at ? new Date(sanction.expires_at).toLocaleString() : 'Permanent' %> +
      +
      +
      +

      Summary

      +

      <%= sanction.reason_short %>

      +

      Details

      +

      <%= sanction.reason_detail %>

      +

      Moderator: <%= sanction.created_by_name || 'Staff' %>

      +
      +
      +
      + + diff --git a/plugins/moderation/views/tos-bans.ejs b/plugins/moderation/views/tos-bans.ejs new file mode 100644 index 0000000..df4e0c0 --- /dev/null +++ b/plugins/moderation/views/tos-bans.ejs @@ -0,0 +1,252 @@ +<%- include("../../../src/web/views/partials/layout-top", { title }) %> + + +
      +
      +
      +

      TOs & Bans

      +

      Monitor active sanctions and moderation history.

      +
      +
      +
      + +
      +

      Current Timeouts & Bans

      + <% if (!activeSanctions.length) { %> +

      No active bans or timeouts.

      + <% } else { %> + + + + + + + + + + + + <% activeSanctions.forEach((sanction) => { %> + + + + + + + + <% }) %> + +
      UserTypeReasonExpiresActions
      <%= sanction.display_name || sanction.subject_id %> + <%= sanction.action_type %> + <%= sanction.reason_short %><%= sanction.expires_at ? new Date(sanction.expires_at).toLocaleString() : "Permanent" %> +
      + <% if (sanction.action_type === 'timeout') { %> +
      + <% if (!isAdmin) { %> + + <% } %> + <% if (isAdmin) { %> +
      + + +
      + <% } %> + + +
      + <% } %> +
      + +
      +
      +
      + <% } %> +
      + +
      +
      + + History + Searchable log of every moderation action. + +
      + +
      + +
      +
      + <% if (!actions.length) { %> +

      No actions recorded.

      + <% } else { %> +
      + + + + + + + + + + + + + + <% actions.forEach((action) => { %> + <% const evidence = actionEvidence[action.id] || []; %> + <% const displayName = action.display_name || action.subject_id; %> + <% const byName = action.created_by_name || action.source || 'Staff'; %> + <% const evidenceNames = evidence.map((item) => item.name).join(' '); %> + + + + + + + + + + <% }) %> + +
      UserTypePlatformReasonByEvidenceDate
      <%= displayName %><%= action.action_type %><%= action.platform || 'global' %><%= action.reason_short %><%= byName %> + <% if (!evidence.length) { %> + None + <% } else { %> +
      + <% evidence.forEach((item) => { %> + <%= item.name %> + <% }) %> +
      + <% } %> +
      <%= new Date(action.created_at).toLocaleString() %>
      +
      +
      + + Page 1 of 1 + +
      + <% } %> +
      +
      + + + +<%- include("../../../src/web/views/partials/layout-bottom") %> diff --git a/plugins/quotes/cmds.json b/plugins/quotes/cmds.json new file mode 100644 index 0000000..03edbdc --- /dev/null +++ b/plugins/quotes/cmds.json @@ -0,0 +1,55 @@ +{ + "pluginId": "quotes", + "pluginName": "Quotes", + "commands": [ + { + "id": "quote", + "trigger": "quote", + "name": "Quote", + "description": "Show a quote by id, or use subcommands.", + "level": "public", + "platforms": ["discord", "twitch", "youtube"], + "usage": "quote " + }, + { + "id": "quote-add", + "trigger": "quote", + "subcommand": "add", + "name": "Add quote", + "description": "Add a new quote.", + "level": "mod", + "platforms": ["discord", "twitch", "youtube"], + "usage": "quote add " + }, + { + "id": "quote-search", + "trigger": "quote", + "subcommand": "search", + "name": "Search quotes", + "description": "Find the best matching quote.", + "level": "public", + "platforms": ["discord", "twitch", "youtube"], + "usage": "quote search " + }, + { + "id": "quote-remove", + "trigger": "quote", + "subcommand": "remove", + "name": "Remove quote", + "description": "Archive a quote by id.", + "level": "mod", + "platforms": ["discord", "twitch", "youtube"], + "usage": "quote remove " + }, + { + "id": "quote-random", + "trigger": "quote", + "subcommand": "random", + "name": "Random quote", + "description": "Show a random quote.", + "level": "public", + "platforms": ["discord", "twitch", "youtube"], + "usage": "quote random" + } + ] +} diff --git a/plugins/quotes/index.js b/plugins/quotes/index.js new file mode 100644 index 0000000..3f8b30e --- /dev/null +++ b/plugins/quotes/index.js @@ -0,0 +1,794 @@ +const path = require("path"); + +const PLUGIN_ID = "quotes"; + +let cachedAppToken = null; +let cachedAppTokenExpiry = 0; + +module.exports = { + id: PLUGIN_ID, + init({ web, db, settings, commandRouter }) { + ensureTables(db); + registerQuoteCommands({ db, settings, commandRouter }); + + const router = web.createRouter(); + + router.get("/", (req, res) => { + const user = req.session.user || null; + const isMod = Boolean(user?.isAdmin || user?.isMod); + if (!isMod) { + return res.status(403).render("error", { + title: "Access denied", + message: "You do not have access to that page." + }); + } + const quotes = listQuotes(db, { includeHidden: true, includeArchived: true }); + const editId = parseInt(req.query.edit, 10); + const editingQuote = Number.isFinite(editId) + ? getQuoteById(db, editId, { includeHidden: true, includeArchived: true }) + : null; + res.render(path.join(__dirname, "views", "quotes.ejs"), { + title: "Quotes", + quotes, + editingQuote, + formatDateTime, + formatDateInput + }); + }); + + router.post("/quotes/create", (req, res) => { + const user = req.session.user || null; + const isMod = Boolean(user?.isAdmin || user?.isMod); + if (!isMod) { + return res.status(403).render("error", { + title: "Access denied", + message: "You do not have access to that page." + }); + } + const quoteText = (req.body.quote_text || "").trim(); + if (!quoteText) { + req.session.flash = { type: "error", message: "Quote text is required." }; + return res.redirect(`/plugins/${PLUGIN_ID}`); + } + const quoteDatetime = parseDateInput(req.body.quote_datetime) || Date.now(); + const quoter = (req.body.quoter || user?.username || "Unknown").trim(); + const quoterUserId = resolveUserIdByUsername(db, quoter); + const gameName = (req.body.game_name || "").trim(); + const hidden = req.body.hidden === "on"; + const archived = req.body.archived === "on"; + const now = Date.now(); + addQuote(db, { + quoteText, + quoter: quoter || "Unknown", + quoterUserId, + gameName: gameName || null, + quoteDatetime, + editedBy: user?.username || "system", + editedLast: now, + hidden, + archived + }); + req.session.flash = { type: "success", message: "Quote added." }; + res.redirect(`/plugins/${PLUGIN_ID}`); + }); + + router.post("/quotes/:id/update", (req, res) => { + const user = req.session.user || null; + const isMod = Boolean(user?.isAdmin || user?.isMod); + if (!isMod) { + return res.status(403).render("error", { + title: "Access denied", + message: "You do not have access to that page." + }); + } + const id = parseInt(req.params.id, 10); + if (!Number.isFinite(id)) { + req.session.flash = { type: "error", message: "Invalid quote id." }; + return res.redirect(`/plugins/${PLUGIN_ID}`); + } + const quoteText = (req.body.quote_text || "").trim(); + if (!quoteText) { + req.session.flash = { type: "error", message: "Quote text is required." }; + return res.redirect(`/plugins/${PLUGIN_ID}?edit=${id}`); + } + const quoteDatetime = parseDateInput(req.body.quote_datetime); + const quoter = (req.body.quoter || "").trim(); + const quoterUserId = resolveUserIdByUsername(db, quoter); + const gameName = (req.body.game_name || "").trim(); + const hidden = req.body.hidden === "on"; + const archived = req.body.archived === "on"; + updateQuote(db, id, { + quoteText, + quoter: quoter || "Unknown", + quoterUserId, + gameName: gameName || null, + quoteDatetime, + hidden, + archived, + editedBy: user?.username || "system", + editedLast: Date.now() + }); + req.session.flash = { type: "success", message: "Quote updated." }; + res.redirect(`/plugins/${PLUGIN_ID}`); + }); + + router.post("/quotes/:id/hide", (req, res) => { + const user = req.session.user || null; + const isMod = Boolean(user?.isAdmin || user?.isMod); + if (!isMod) { + return res.status(403).render("error", { + title: "Access denied", + message: "You do not have access to that page." + }); + } + setQuoteHidden(db, req.params.id, true, user?.username || "system"); + res.redirect(`/plugins/${PLUGIN_ID}`); + }); + + router.post("/quotes/:id/unhide", (req, res) => { + const user = req.session.user || null; + const isMod = Boolean(user?.isAdmin || user?.isMod); + if (!isMod) { + return res.status(403).render("error", { + title: "Access denied", + message: "You do not have access to that page." + }); + } + setQuoteHidden(db, req.params.id, false, user?.username || "system"); + res.redirect(`/plugins/${PLUGIN_ID}`); + }); + + router.post("/quotes/:id/archive", (req, res) => { + const user = req.session.user || null; + const isMod = Boolean(user?.isAdmin || user?.isMod); + if (!isMod) { + return res.status(403).render("error", { + title: "Access denied", + message: "You do not have access to that page." + }); + } + setQuoteArchived(db, req.params.id, true, user?.username || "system"); + res.redirect(`/plugins/${PLUGIN_ID}`); + }); + + router.post("/quotes/:id/restore", (req, res) => { + const user = req.session.user || null; + const isMod = Boolean(user?.isAdmin || user?.isMod); + if (!isMod) { + return res.status(403).render("error", { + title: "Access denied", + message: "You do not have access to that page." + }); + } + setQuoteArchived(db, req.params.id, false, user?.username || "system"); + res.redirect(`/plugins/${PLUGIN_ID}`); + }); + + router.get("/api/quotes", (req, res) => { + const user = req.session.user || null; + const isMod = Boolean(user?.isAdmin || user?.isMod); + if (!isMod) { + return res.status(403).json({ error: "Access denied." }); + } + const quotes = listQuotes(db, { includeHidden: true, includeArchived: false }); + res.json({ quotes }); + }); + + router.get("/api/quotes/:id", (req, res) => { + const user = req.session.user || null; + const isMod = Boolean(user?.isAdmin || user?.isMod); + if (!isMod) { + return res.status(403).json({ error: "Access denied." }); + } + const id = parseInt(req.params.id, 10); + if (!Number.isFinite(id)) { + return res.status(400).json({ error: "Invalid quote id." }); + } + const quote = getQuoteById(db, id, { includeHidden: true, includeArchived: false }); + if (!quote) { + return res.status(404).json({ error: "Quote not found." }); + } + res.json({ quote }); + }); + + web.mount(`/plugins/${PLUGIN_ID}`, router, { + label: "Quotes", + role: "mod", + section: "plugins" + }); + } +}; + +function ensureTables(db) { + db.exec(` + CREATE TABLE IF NOT EXISTS quotes ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + quote_text TEXT NOT NULL, + quoter TEXT NOT NULL, + quoter_user_id TEXT, + game_name TEXT, + quote_datetime INTEGER NOT NULL, + edited_by TEXT, + edited_last INTEGER, + hidden INTEGER NOT NULL DEFAULT 0, + archived INTEGER NOT NULL DEFAULT 0 + ); + + CREATE INDEX IF NOT EXISTS quotes_archived_idx ON quotes (archived); + CREATE INDEX IF NOT EXISTS quotes_hidden_idx ON quotes (hidden); + CREATE INDEX IF NOT EXISTS quotes_quote_datetime_idx ON quotes (quote_datetime); + `); + + const columns = db + .prepare("PRAGMA table_info(quotes)") + .all() + .map((column) => column.name); + if (!columns.includes("quoter_user_id")) { + db.exec("ALTER TABLE quotes ADD COLUMN quoter_user_id TEXT"); + } + db.exec("CREATE INDEX IF NOT EXISTS quotes_quoter_user_id_idx ON quotes (quoter_user_id)"); + try { + db.prepare( + "UPDATE quotes SET quoter_user_id = (" + + "SELECT id FROM user_profiles WHERE internal_username = quotes.quoter COLLATE NOCASE LIMIT 1" + + ") WHERE quoter_user_id IS NULL" + ).run(); + } catch { + // ignore backfill errors + } +} + +function registerQuoteCommands({ db, settings, commandRouter }) { + if (!commandRouter) { + return null; + } + + const platforms = ["discord", "twitch", "youtube"]; + commandRouter.registerCommands(PLUGIN_ID, [ + { + id: "quote", + triggers: ["quote"], + platforms, + handler: async (ctx) => await handleQuoteCommand({ ctx, db, settings }) + } + ]); + return null; +} + +async function handleQuoteCommand({ ctx, db, settings }) { + const prefix = settings.getSetting("command_prefix", "!"); + const subcommand = (ctx.args[0] || "").toLowerCase(); + const role = getRoleFlags(ctx, settings); + + if (!subcommand) { + await ctx.reply( + `Usage: ${prefix}quote | ${prefix}quote random` + ); + return true; + } + + if (subcommand === "add") { + if (!role.isAdmin && !role.isMod) { + await ctx.reply("You do not have permission to add quotes."); + return true; + } + const quoteText = ctx.args.slice(1).join(" ").trim(); + if (!quoteText) { + await ctx.reply(`Usage: ${prefix}quote add `); + return true; + } + const gameName = await resolveGameName(ctx, settings); + const now = Date.now(); + const quoter = ctx.user.displayName || ctx.user.username || "Unknown"; + const editor = ctx.user.username || quoter; + const id = addQuote(db, { + quoteText, + quoter, + quoterUserId: ctx.user.id, + gameName, + quoteDatetime: now, + editedBy: editor, + editedLast: now, + hidden: false, + archived: false + }); + await ctx.reply(`Quote #${id} added.`); + return true; + } + + if (subcommand === "search") { + const searchText = ctx.args.slice(1).join(" ").trim(); + if (!searchText) { + await ctx.reply(`Usage: ${prefix}quote search `); + return true; + } + const match = searchQuotes(db, searchText); + if (!match) { + await ctx.reply("No matching quotes found."); + return true; + } + await replyWithQuote(ctx, match); + return true; + } + + if (subcommand === "remove" || subcommand === "delete") { + if (!role.isAdmin && !role.isMod) { + await ctx.reply("You do not have permission to remove quotes."); + return true; + } + const id = parseInt(ctx.args[1], 10); + if (!Number.isFinite(id)) { + await ctx.reply(`Usage: ${prefix}quote remove `); + return true; + } + const removed = setQuoteArchived(db, id, true, ctx.user.username); + if (!removed) { + await ctx.reply("Quote not found."); + return true; + } + await ctx.reply(`Quote #${id} archived.`); + return true; + } + + if (subcommand === "random") { + const quote = getRandomQuote(db); + if (!quote) { + await ctx.reply("No quotes available yet."); + return true; + } + await replyWithQuote(ctx, quote); + return true; + } + + if (/^\d+$/.test(subcommand)) { + const id = parseInt(subcommand, 10); + const quote = getQuoteById(db, id, { includeHidden: false, includeArchived: false }); + if (!quote) { + await ctx.reply("Quote not found."); + return true; + } + await replyWithQuote(ctx, quote); + return true; + } + + await ctx.reply( + `Usage: ${prefix}quote | ${prefix}quote random` + ); + return true; +} + +function getRoleFlags(ctx, settings) { + if (ctx.platform === "discord") { + const roles = ctx.meta?.message?.member?.roles?.cache; + if (!roles) { + return { isAdmin: false, isMod: false }; + } + const adminIds = parseList(settings.getSetting("discord_admin_role_id")); + const modIds = parseList(settings.getSetting("discord_mod_role_id")); + const roleIds = Array.from(roles.keys()); + const isAdmin = roleIds.some((roleId) => adminIds.includes(roleId)); + const isMod = roleIds.some((roleId) => modIds.includes(roleId)); + return { isAdmin, isMod }; + } + if (ctx.platform === "twitch") { + const badges = ctx.meta?.tags?.badges || {}; + const isAdmin = Boolean(badges.broadcaster); + const isMod = Boolean(ctx.meta?.tags?.mod || badges.moderator); + return { isAdmin, isMod }; + } + if (ctx.platform === "youtube") { + const author = ctx.meta?.author || {}; + const isAdmin = Boolean(author.isChatOwner); + const isMod = Boolean(author.isChatModerator); + return { isAdmin, isMod }; + } + return { isAdmin: false, isMod: false }; +} + +function parseList(value) { + return (value || "") + .toString() + .split(/[,\s]+/) + .map((item) => item.trim()) + .filter(Boolean); +} + +function resolveUserIdByUsername(db, username) { + const desired = (username || "").trim(); + if (!desired) { + return null; + } + const row = db + .prepare("SELECT id FROM user_profiles WHERE internal_username = ? LIMIT 1") + .get(desired); + return row?.id || null; +} + +function listQuotes(db, { includeHidden = true, includeArchived = true } = {}) { + const where = []; + if (!includeHidden) { + where.push("hidden = 0"); + } + if (!includeArchived) { + where.push("archived = 0"); + } + const clause = where.length ? `WHERE ${where.join(" AND ")}` : ""; + return db + .prepare( + "SELECT id, quote_text, quoter, quoter_user_id, game_name, quote_datetime, edited_by, edited_last, hidden, archived " + + `FROM quotes ${clause} ORDER BY quote_datetime DESC, id DESC` + ) + .all() + .map(normalizeQuoteRow); +} + +function getQuoteById(db, id, { includeHidden, includeArchived }) { + const where = ["id = ?"]; + const params = [id]; + if (!includeHidden) { + where.push("hidden = 0"); + } + if (!includeArchived) { + where.push("archived = 0"); + } + const row = db + .prepare( + `SELECT id, quote_text, quoter, quoter_user_id, game_name, quote_datetime, edited_by, edited_last, hidden, archived FROM quotes WHERE ${where.join( + " AND " + )} LIMIT 1` + ) + .get(...params); + return row ? normalizeQuoteRow(row) : null; +} + +function getRandomQuote(db) { + const row = db + .prepare( + "SELECT id, quote_text, quoter, quoter_user_id, game_name, quote_datetime, edited_by, edited_last, hidden, archived " + + "FROM quotes WHERE hidden = 0 AND archived = 0 ORDER BY RANDOM() LIMIT 1" + ) + .get(); + return row ? normalizeQuoteRow(row) : null; +} + +function addQuote(db, { + quoteText, + quoter, + quoterUserId, + gameName, + quoteDatetime, + editedBy, + editedLast, + hidden, + archived +}) { + const result = db + .prepare( + "INSERT INTO quotes (quote_text, quoter, quoter_user_id, game_name, quote_datetime, edited_by, edited_last, hidden, archived) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)" + ) + .run( + quoteText, + quoter, + quoterUserId || null, + gameName || null, + quoteDatetime || Date.now(), + editedBy || null, + editedLast || null, + hidden ? 1 : 0, + archived ? 1 : 0 + ); + return result.lastInsertRowid; +} + +function updateQuote(db, id, { + quoteText, + quoter, + quoterUserId, + gameName, + quoteDatetime, + hidden, + archived, + editedBy, + editedLast +}) { + let effectiveDatetime = quoteDatetime; + let effectiveQuoterUserId = quoterUserId; + if (!effectiveDatetime) { + const existing = db + .prepare("SELECT quote_datetime, quoter_user_id FROM quotes WHERE id = ?") + .get(id); + effectiveDatetime = existing?.quote_datetime || Date.now(); + if (effectiveQuoterUserId === undefined) { + effectiveQuoterUserId = existing?.quoter_user_id || null; + } + } else if (effectiveQuoterUserId === undefined) { + const existing = db + .prepare("SELECT quoter_user_id FROM quotes WHERE id = ?") + .get(id); + effectiveQuoterUserId = existing?.quoter_user_id || null; + } + const updates = [ + quoteText, + quoter, + effectiveQuoterUserId || null, + gameName || null, + effectiveDatetime, + editedBy || null, + editedLast || null, + hidden ? 1 : 0, + archived ? 1 : 0, + id + ]; + db.prepare( + "UPDATE quotes SET quote_text = ?, quoter = ?, quoter_user_id = ?, game_name = ?, quote_datetime = ?, edited_by = ?, edited_last = ?, hidden = ?, archived = ? WHERE id = ?" + ).run(...updates); +} + +function setQuoteHidden(db, id, hidden, editor) { + const parsed = parseInt(id, 10); + if (!Number.isFinite(parsed)) { + return false; + } + const result = db + .prepare( + "UPDATE quotes SET hidden = ?, edited_by = ?, edited_last = ? WHERE id = ?" + ) + .run(hidden ? 1 : 0, editor || null, Date.now(), parsed); + return result.changes > 0; +} + +function setQuoteArchived(db, id, archived, editor) { + const parsed = parseInt(id, 10); + if (!Number.isFinite(parsed)) { + return false; + } + const result = db + .prepare( + "UPDATE quotes SET archived = ?, edited_by = ?, edited_last = ? WHERE id = ?" + ) + .run(archived ? 1 : 0, editor || null, Date.now(), parsed); + return result.changes > 0; +} + +function searchQuotes(db, searchText, { includeHidden = false } = {}) { + const term = (searchText || "").trim().toLowerCase(); + if (!term) { + return null; + } + const tokens = term.split(/\s+/).filter(Boolean); + if (!tokens.length) { + return null; + } + const where = ["archived = 0"]; + if (!includeHidden) { + where.push("hidden = 0"); + } + const rows = db + .prepare( + "SELECT id, quote_text, quoter, quoter_user_id, game_name, quote_datetime, edited_by, edited_last, hidden, archived " + + `FROM quotes WHERE ${where.join(" AND ")}` + ) + .all() + .map(normalizeQuoteRow); + let best = null; + let bestScore = 0; + + for (const row of rows) { + const hayText = (row.quote_text || "").toLowerCase(); + const hayGame = (row.game_name || "").toLowerCase(); + const hayQuoter = (row.quoter || "").toLowerCase(); + const hayId = row.id.toString(); + const hayDate = buildSearchDate(row.quote_datetime); + + let score = 0; + let matchesAll = true; + + for (const token of tokens) { + const matchesText = hayText.includes(token); + const matchesGame = hayGame.includes(token); + const matchesQuoter = hayQuoter.includes(token); + const matchesId = hayId.includes(token); + const matchesDate = hayDate.includes(token); + if (!matchesText && !matchesGame && !matchesQuoter && !matchesId && !matchesDate) { + matchesAll = false; + break; + } + if (matchesText) score += 5; + if (matchesGame) score += 4; + if (matchesQuoter) score += 2; + if (matchesId) score += 3; + if (matchesDate) score += 1; + } + + if (!matchesAll) { + continue; + } + if (hayText.includes(term)) { + score += 6; + } + if (score > bestScore) { + bestScore = score; + best = row; + } else if (score === bestScore && best && row.quote_datetime > best.quote_datetime) { + best = row; + } + } + + return best; +} + +async function replyWithQuote(ctx, quote) { + if (ctx.platform === "discord") { + const embed = buildQuoteEmbed(quote); + await ctx.reply({ embeds: [embed] }); + return; + } + await ctx.reply(buildQuoteText(quote)); +} + +function buildQuoteText(quote) { + const dateLabel = formatDateLabel(quote.quote_datetime); + const quoter = quote.quoter || "Unknown"; + return `#${quote.id} "${quote.quote_text}" - quoted by ${quoter} ${dateLabel}`; +} + +function buildQuoteEmbed(quote) { + const fields = [ + { name: "Quoted by", value: quote.quoter || "Unknown", inline: true } + ]; + if (quote.game_name) { + fields.push({ name: "Game", value: quote.game_name, inline: true }); + } + fields.push({ + name: "Date", + value: formatDateTime(quote.quote_datetime), + inline: true + }); + return { + title: `Quote #${quote.id}`, + description: `"${quote.quote_text}"`, + fields, + timestamp: new Date(quote.quote_datetime).toISOString() + }; +} + +function normalizeQuoteRow(row) { + return { + id: row.id, + quote_text: row.quote_text, + quoter: row.quoter, + quoter_user_id: row.quoter_user_id, + game_name: row.game_name, + quote_datetime: row.quote_datetime, + edited_by: row.edited_by, + edited_last: row.edited_last, + hidden: Boolean(row.hidden), + archived: Boolean(row.archived) + }; +} + +function formatDateTime(timestamp) { + if (!timestamp) { + return "Unknown"; + } + const date = new Date(timestamp); + if (Number.isNaN(date.getTime())) { + return "Unknown"; + } + return new Intl.DateTimeFormat("en-US", { + dateStyle: "medium", + timeStyle: "short" + }).format(date); +} + +function formatDateLabel(timestamp) { + if (!timestamp) { + return ""; + } + const date = new Date(timestamp); + if (Number.isNaN(date.getTime())) { + return ""; + } + return new Intl.DateTimeFormat("en-US", { + year: "numeric", + month: "short", + day: "numeric" + }).format(date); +} + +function formatDateInput(timestamp) { + if (!timestamp) { + return ""; + } + const date = new Date(timestamp); + if (Number.isNaN(date.getTime())) { + return ""; + } + const pad = (value) => value.toString().padStart(2, "0"); + const yyyy = date.getFullYear(); + const mm = pad(date.getMonth() + 1); + const dd = pad(date.getDate()); + const hh = pad(date.getHours()); + const min = pad(date.getMinutes()); + return `${yyyy}-${mm}-${dd}T${hh}:${min}`; +} + +function parseDateInput(value) { + if (!value) { + return null; + } + const parsed = new Date(value); + if (Number.isNaN(parsed.getTime())) { + return null; + } + return parsed.getTime(); +} + +function buildSearchDate(timestamp) { + if (!timestamp) { + return ""; + } + const date = new Date(timestamp); + if (Number.isNaN(date.getTime())) { + return ""; + } + return `${date.toISOString().slice(0, 10)} ${formatDateLabel(timestamp)}`.toLowerCase(); +} + +async function resolveGameName(ctx, settings) { + if (ctx.platform !== "twitch") { + return null; + } + const roomId = ctx.meta?.tags?.["room-id"] || ctx.meta?.tags?.roomId; + if (!roomId) { + return null; + } + const clientId = settings.getSetting("twitch_client_id"); + const clientSecret = settings.getSetting("twitch_client_secret"); + if (!clientId || !clientSecret) { + return null; + } + const token = await getTwitchAppToken(clientId, clientSecret); + if (!token) { + return null; + } + const response = await fetch( + `https://api.twitch.tv/helix/channels?broadcaster_id=${encodeURIComponent(roomId)}`, + { + headers: { + "Client-Id": clientId, + Authorization: `Bearer ${token}` + } + } + ); + if (!response.ok) { + return null; + } + const data = await response.json(); + const channel = data.data?.[0]; + return channel?.game_name || null; +} + +async function getTwitchAppToken(clientId, clientSecret) { + const now = Date.now(); + if (cachedAppToken && now < cachedAppTokenExpiry) { + return cachedAppToken; + } + const url = + "https://id.twitch.tv/oauth2/token" + + `?client_id=${encodeURIComponent(clientId)}` + + `&client_secret=${encodeURIComponent(clientSecret)}` + + "&grant_type=client_credentials"; + const response = await fetch(url, { method: "POST" }); + if (!response.ok) { + return null; + } + const data = await response.json(); + if (!data.access_token || !data.expires_in) { + return null; + } + cachedAppToken = data.access_token; + cachedAppTokenExpiry = now + (data.expires_in - 60) * 1000; + return cachedAppToken; +} diff --git a/plugins/quotes/plugin.json b/plugins/quotes/plugin.json new file mode 100644 index 0000000..00d1598 --- /dev/null +++ b/plugins/quotes/plugin.json @@ -0,0 +1,7 @@ +{ + "id": "quotes", + "name": "Quotes", + "version": "0.1.1", + "description": "Store, search, and manage community quotes.", + "main": "index.js" +} diff --git a/plugins/quotes/stats.js b/plugins/quotes/stats.js new file mode 100644 index 0000000..599275d --- /dev/null +++ b/plugins/quotes/stats.js @@ -0,0 +1,119 @@ +function getProfileStats({ db, userId }) { + if (!userId) { + return { stats: [] }; + } + const row = db + .prepare( + "SELECT COUNT(*) AS total FROM quotes WHERE quoter_user_id = ? AND hidden = 0 AND archived = 0" + ) + .get(userId); + return { + stats: [ + { + label: "Quotes made", + value: row?.total || 0 + } + ] + }; +} + +function getLeaderboards({ db, limit }) { + const totalQuotes = getQuoteTotals(db); + const topQuoters = getQuoteLeaders(db, limit); + const topGames = getQuoteGameLeaders(db, limit); + return { + boards: [ + { + id: "total", + title: "Total quotes", + description: "Total quotes recorded.", + rowType: "text", + valueLabel: "Quotes", + rows: totalQuotes > 0 ? [{ label: "All quotes", value: totalQuotes }] : [], + emptyMessage: "No quotes recorded yet.", + topId: "quotes", + topAliases: ["quote", "totalquotes"] + }, + { + id: "quoters", + title: "Top quoters", + description: "Users who created the most quotes.", + rowType: "user", + valueLabel: "Quotes", + rows: topQuoters, + emptyMessage: "No quotes recorded yet.", + topId: "quoter", + topAliases: ["quoters", "quotesmade"] + }, + { + id: "games", + title: "Top quoted games", + description: "Games mentioned most in quotes.", + rowType: "game", + valueLabel: "Quotes", + rows: topGames, + emptyMessage: "No quoted games recorded yet.", + topId: "games", + topAliases: ["game", "quotegames"], + topOverride: true + } + ] + }; +} + +function getQuoteTotals(db) { + const row = db + .prepare( + "SELECT COUNT(*) AS total FROM quotes WHERE hidden = 0 AND archived = 0" + ) + .get(); + return row?.total || 0; +} + +function getQuoteLeaders(db, limit = 10) { + if (!hasColumn(db, "quotes", "quoter_user_id")) { + return []; + } + return db + .prepare( + "SELECT user_profiles.internal_username AS username, COUNT(*) AS value " + + "FROM quotes " + + "JOIN user_profiles ON user_profiles.id = quotes.quoter_user_id " + + "WHERE quotes.hidden = 0 AND quotes.archived = 0 " + + "GROUP BY quotes.quoter_user_id " + + "ORDER BY value DESC LIMIT ?" + ) + .all(limit); +} + +function getQuoteGameLeaders(db, limit = 10) { + return db + .prepare( + "SELECT game_name AS label, COUNT(*) AS value " + + "FROM quotes " + + "WHERE hidden = 0 AND archived = 0 AND game_name IS NOT NULL AND game_name != '' " + + "GROUP BY game_name " + + "ORDER BY value DESC LIMIT ?" + ) + .all(limit); +} + +function hasColumn(db, table, column) { + try { + const columns = db + .prepare(`PRAGMA table_info(${table})`) + .all() + .map((entry) => entry.name); + return columns.includes(column); + } catch { + return false; + } +} + +module.exports = { + getProfileStats, + getLeaderboards, + getQuoteTotals, + getQuoteLeaders, + getQuoteGameLeaders +}; diff --git a/plugins/quotes/stats.json b/plugins/quotes/stats.json new file mode 100644 index 0000000..4500431 --- /dev/null +++ b/plugins/quotes/stats.json @@ -0,0 +1,13 @@ +{ + "pluginId": "quotes", + "pluginName": "Quotes", + "provider": "stats.js", + "profile": { + "title": "Quotes", + "emptyMessage": "No quote stats yet." + }, + "leaderboards": { + "title": "Quotes", + "emptyMessage": "No quote data available yet." + } +} diff --git a/plugins/quotes/views/quotes.ejs b/plugins/quotes/views/quotes.ejs new file mode 100644 index 0000000..928f10f --- /dev/null +++ b/plugins/quotes/views/quotes.ejs @@ -0,0 +1,203 @@ +<%- include("../../../src/web/views/partials/layout-top", { title }) %> +
      +
      +
      +

      Quotes

      +

      Store, search, and manage memorable quotes.

      +
      +
      +
      + +<% if (editingQuote) { %> +
      +

      Edit quote #<%= editingQuote.id %>

      +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + Cancel +
      +
      +

      + Last edited by <%= editingQuote.edited_by || 'system' %> + <%= editingQuote.edited_last ? `on ${formatDateTime(editingQuote.edited_last)}` : '' %> +

      +
      +
      +
      +<% } %> + +
      +

      Add quote

      +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + +
      +
      +
      + +
      +

      All quotes

      + <% if (!quotes.length) { %> +

      No quotes recorded yet.

      + <% } else { %> +
      + +
      + + +
      +
      +
      + + + + + + + + + + + + + + <% quotes.forEach((quote) => { %> + <% const status = quote.archived ? 'archived' : quote.hidden ? 'hidden' : 'active'; %> + <% const dateLabel = formatDateTime(quote.quote_datetime); %> + + + + + + + + + + <% }) %> + +
      IDQuoteQuoted byGameDateStatusActions
      #<%= quote.id %><%= quote.quote_text %><%= quote.quoter %><%= quote.game_name || '-' %><%= dateLabel %><%= status %> + Edit + <% if (quote.hidden) { %> +
      + +
      + <% } else { %> +
      + +
      + <% } %> + <% if (quote.archived) { %> +
      + +
      + <% } else { %> +
      + +
      + <% } %> +
      +
      +
      + + Page 1 of 1 + +
      + <% } %> +
      +<%- include("../../../src/web/views/partials/layout-bottom") %> diff --git a/plugins/sample-plugin/index.js b/plugins/sample-plugin/index.js new file mode 100644 index 0000000..ed86618 --- /dev/null +++ b/plugins/sample-plugin/index.js @@ -0,0 +1,17 @@ +module.exports = { + id: "sample-plugin", + init({ web, commandRouter }) { + const router = web.createRouter(); + router.get("/", (req, res) => { + res.render("plugin-page", { + title: "Sample Plugin", + content: + "This is a starter plugin. Edit it or replace it with your own modules." + }); + }); + web.mount("/plugins/sample-plugin", router, { + label: "Sample Plugin", + role: "admin" + }); + } +}; diff --git a/plugins/sample-plugin/plugin.json b/plugins/sample-plugin/plugin.json new file mode 100644 index 0000000..f2c2b44 --- /dev/null +++ b/plugins/sample-plugin/plugin.json @@ -0,0 +1,7 @@ +{ + "id": "sample-plugin", + "name": "Sample Plugin", + "version": "0.1.0", + "description": "Example plugin with a simple page.", + "main": "index.js" +} diff --git a/run.js b/run.js new file mode 100644 index 0000000..010ad66 --- /dev/null +++ b/run.js @@ -0,0 +1,65 @@ +const path = require("path"); +const { spawn } = require("child_process"); + +const entry = path.join(__dirname, "src", "main.js"); +const safeModeEntry = path.join(__dirname, "safe-mode.js"); +const maxRestarts = Number(process.env.MAX_RESTARTS || 25); +const restartDelayMs = Number(process.env.RESTART_DELAY_MS || 1500); +const restartCodes = new Set([10, 100]); + +let restarts = 0; +let safeModeStarted = false; + +function startSafeMode() { + if (safeModeStarted) { + return; + } + safeModeStarted = true; + const child = spawn(process.execPath, [safeModeEntry], { + stdio: "inherit", + env: { ...process.env, SAFE_MODE: "1" } + }); + child.on("exit", (code) => { + safeModeStarted = false; + if (code === 10) { + restarts = 0; + startChild(); + } + }); +} + +function startChild() { + const child = spawn(process.execPath, [entry], { + stdio: "inherit", + env: { ...process.env, BOT_WRAPPER: "1" } + }); + + child.on("exit", (code, signal) => { + if (signal) { + process.exit(0); + return; + } + + const shouldRestart = + restartCodes.has(code) || (code !== 0 && restarts < maxRestarts); + + if (code === 100) { + startSafeMode(); + return; + } + + if (!shouldRestart) { + if (code && restarts >= maxRestarts) { + startSafeMode(); + return; + } + process.exit(code || 0); + return; + } + + restarts += 1; + setTimeout(startChild, restartDelayMs); + }); +} + +startChild(); diff --git a/safe-mode.js b/safe-mode.js new file mode 100644 index 0000000..e0061a7 --- /dev/null +++ b/safe-mode.js @@ -0,0 +1,216 @@ +const express = require("express"); +const crypto = require("crypto"); +const session = require("express-session"); +const BetterSqlite3Store = require("better-sqlite3-session-store")(session); + +const { db } = require("./src/services/db"); +const { getSetting, setSetting } = require("./src/services/settings"); +const { + buildDiscordAuthUrl, + exchangeDiscordCode, + fetchDiscordUser, + fetchDiscordGuildMember +} = require("./src/services/auth"); +const { getRoleFlags, hasAccess } = require("./src/services/rbac"); +const { listSnapshots, restoreSnapshot } = require("./src/services/update-manager"); +const { requestRestart } = require("./src/services/updater"); + +function ensureSessionSecret() { + let secret = getSetting("session_secret"); + if (!secret) { + secret = crypto.randomBytes(32).toString("hex"); + setSetting("session_secret", secret); + } + return secret; +} + +function isConfigured() { + return Boolean( + getSetting("discord_client_id") && + getSetting("discord_client_secret") && + getSetting("discord_guild_id") + ); +} + +function renderPage(title, content) { + return ` + + + + + ${title} + + + +
      + Safe Mode +
      +
      + ${content} +
      + +`; +} + +function buildSnapshotTable(snapshots) { + if (!snapshots.length) { + return "

      No snapshots available.

      "; + } + const rows = snapshots + .map((snap) => { + const label = snap.type === "plugin" ? `Plugin: ${snap.pluginId}` : "Bot core"; + const when = new Date(snap.createdAt).toLocaleString(); + return ` + + ${label} + ${when} + +
      + +
      + + + `; + }) + .join(""); + return ` + + + + + + + + + + ${rows} + +
      SnapshotCreatedAction
      + `; +} + +const app = express(); +const sessionStore = new BetterSqlite3Store({ client: db }); +app.use( + session({ + secret: ensureSessionSecret(), + resave: false, + saveUninitialized: false, + store: sessionStore + }) +); +app.use(express.urlencoded({ extended: false })); + +app.get("/", (req, res) => { + if (!isConfigured()) { + return res.send( + renderPage( + "Safe Mode", + `

      Discord not configured

      Discord settings are required to enter safe mode.

      ` + ) + ); + } + if (!req.session.user) { + return res.send( + renderPage( + "Safe Mode", + `

      Login required

      Authenticate with Discord to access rollback tools.

      Login with Discord
      ` + ) + ); + } + if (!hasAccess(req.session.user, "admin")) { + return res.send( + renderPage( + "Safe Mode", + `

      Access denied

      You do not have administrator access.

      ` + ) + ); + } + const snapshots = listSnapshots(); + const table = buildSnapshotTable(snapshots); + res.send( + renderPage( + "Safe Mode", + `

      Rollback snapshots

      Use these snapshots to roll back failed updates. The server will restart after rollback.

      ${table}
      ` + ) + ); +}); + +app.get("/auth/discord", (req, res) => { + if (!isConfigured()) { + return res.redirect("/"); + } + const state = crypto.randomBytes(16).toString("hex"); + req.session.discordState = state; + const baseUrl = `${req.protocol}://${req.get("host")}`; + const redirectUri = `${baseUrl}/auth/discord/callback`; + const url = buildDiscordAuthUrl(state, redirectUri); + res.redirect(url); +}); + +app.get("/auth/discord/callback", async (req, res) => { + const { code, state } = req.query; + if (!code || state !== req.session.discordState) { + return res.send(renderPage("Safe Mode", "
      Invalid login state.
      ")); + } + try { + const baseUrl = `${req.protocol}://${req.get("host")}`; + const redirectUri = `${baseUrl}/auth/discord/callback`; + const token = await exchangeDiscordCode(code, redirectUri); + const user = await fetchDiscordUser(token.access_token); + const guildId = getSetting("discord_guild_id"); + const member = guildId + ? await fetchDiscordGuildMember(token.access_token, guildId) + : null; + const roles = member?.roles || []; + const flags = getRoleFlags(roles); + req.session.user = { + id: user.id, + username: user.global_name || user.username, + roles, + ...flags + }; + res.redirect("/"); + } catch (error) { + console.error(error); + res.send(renderPage("Safe Mode", "
      Login failed.
      ")); + } +}); + +app.post("/rollback/:id", (req, res) => { + if (!req.session.user || !hasAccess(req.session.user, "admin")) { + return res.status(403).send(renderPage("Safe Mode", "
      Access denied.
      ")); + } + try { + restoreSnapshot(req.params.id); + res.send( + renderPage( + "Safe Mode", + "

      Rollback complete

      Restarting the bot now...

      " + ) + ); + requestRestart(); + } catch (error) { + res.send( + renderPage( + "Safe Mode", + `

      Rollback failed

      ${error.message}

      ` + ) + ); + } +}); + +const port = Number(process.env.SAFE_MODE_PORT || 3001); +app.listen(port, () => { + console.log(`Safe mode listening on http://localhost:${port}`); +}); diff --git a/security-audit-findings.json b/security-audit-findings.json new file mode 100644 index 0000000..aa4f854 --- /dev/null +++ b/security-audit-findings.json @@ -0,0 +1,63 @@ +[ + { + "id": "LUMI-001", + "severity": "High", + "title": "Missing CSRF protection on state-changing routes", + "affected": [ + "/admin/*", + "/profile/*", + "/auth/logout" + ], + "evidence": "No CSRF middleware in src/web/server.js; POST routes rely solely on session cookies.", + "impact": "Logged-in admins can be tricked into executing sensitive actions (plugin install/update, settings changes, restart).", + "fix": "Add CSRF tokens or Origin/Referer checks and set SameSite cookies." + }, + { + "id": "LUMI-002", + "severity": "Medium", + "title": "Session cookie missing Secure and SameSite", + "affected": [ + "/" + ], + "evidence": "Set-Cookie: connect.sid=...; Path=/; HttpOnly (no Secure/SameSite)", + "impact": "Session cookie may be sent over HTTP or cross-site requests; increases CSRF/session hijack risk.", + "fix": "Configure express-session cookie options with Secure and SameSite=Lax; set trust proxy behind TLS." + }, + { + "id": "LUMI-003", + "severity": "Medium", + "title": "Session fixation risk after OAuth login", + "affected": [ + "/auth/discord/callback", + "/auth/twitch/callback" + ], + "evidence": "Session is populated without regeneration in src/web/server.js (req.session.user set directly).", + "impact": "An attacker who can set a session ID before login could reuse it after the victim authenticates.", + "fix": "Call req.session.regenerate() before setting authenticated session data." + }, + { + "id": "LUMI-004", + "severity": "Medium", + "title": "Plugin route role not enforced", + "affected": [ + "/plugins/sample-plugin", + "/plugins/*" + ], + "evidence": "web.mount uses app.use without role guard; sample plugin labeled admin is accessible publicly.", + "impact": "Plugin pages intended for admins can be reachable by unauthenticated users.", + "fix": "Enforce navItem.role in web.mount with requireRole(role)." + }, + { + "id": "LUMI-005", + "severity": "Low", + "title": "Missing baseline security headers", + "affected": [ + "/", + "/commands", + "/leaderboards" + ], + "evidence": "No CSP/XFO/XCTO/Referrer-Policy/Permissions-Policy headers; X-Powered-By present.", + "impact": "Increases exposure to clickjacking/XSS/mime sniffing and framework fingerprinting.", + "fix": "Use helmet and disable x-powered-by." + } +] \ No newline at end of file diff --git a/security-audit-report.md b/security-audit-report.md new file mode 100644 index 0000000..4208dad --- /dev/null +++ b/security-audit-report.md @@ -0,0 +1,286 @@ +# Lumi Bot Public Surface Security Audit + +Date: 2026-01-22 +Target: https://lumi.ookamikun.tv (unauthenticated/public surface) +Scope: Public pages, unauthenticated endpoints, and code review of the local repo. + +## 0) Guardrails +- No destructive actions performed. +- No authentication performed. +- Only safe, read-only checks and code review. + +## 1) Public Attack Surface Inventory + +### Discovered public URLs (unauthenticated) +- https://lumi.ookamikun.tv/ +- https://lumi.ookamikun.tv/commands +- https://lumi.ookamikun.tv/leaderboards +- https://lumi.ookamikun.tv/plugins/expression-interaction +- https://lumi.ookamikun.tv/plugins/sample-plugin + +### Authentication entrypoints +- https://lumi.ookamikun.tv/auth/discord (302 to Discord OAuth) +- https://lumi.ookamikun.tv/auth/twitch/login (302 to Twitch OAuth) + +### Admin endpoints (unauthenticated behavior) +- https://lumi.ookamikun.tv/admin (302 to /auth/discord) +- https://lumi.ookamikun.tv/admin/commands (302 to /auth/discord) +- https://lumi.ookamikun.tv/admin/settings (302 to /auth/discord) + +### Hidden endpoint probes (all 404) +- /api, /api/, /api/v1 +- /oauth, /callback, /webhook, /webhook/discord +- /health, /metrics, /status, /debug, /logs +- /swagger, /openapi, /graphql + +### Third-party integrations observed +- Discord OAuth (authorize, token, user fetch) via /auth/discord +- Twitch OAuth (authorize, token, user fetch) via /auth/twitch/login + +### JS/CSS assets +- https://lumi.ookamikun.tv/app.js +- https://lumi.ookamikun.tv/styles.css + +### Source maps +- /app.js.map and /styles.css.map return 404 (not exposed) + +## 2) Passive Misconfiguration Checks + +### TLS +- HTTP -> HTTPS redirect observed for http://lumi.ookamikun.tv/ +- HSTS present: `Strict-Transport-Security: max-age=63072000; preload` + +### Mixed Content +- No `http://` links detected in homepage HTML. + +### Security Headers (public HTML endpoints) +Observed on `/`, `/commands`, `/leaderboards`: +- Present: `Strict-Transport-Security` +- Present: `X-Powered-By: Express` +- Missing: `Content-Security-Policy`, `X-Frame-Options`/`frame-ancestors`, `X-Content-Type-Options`, `Referrer-Policy`, `Permissions-Policy` + +### Cookies +- `connect.sid` set for public pages with `HttpOnly` only. +- Missing: `Secure`, `SameSite` + +### CORS +- No CORS headers observed on public endpoints. + +### Caching +- HTML responses do not set explicit `Cache-Control`. +- `/app.js` uses `Cache-Control: public, max-age=0`. + +### Error handling +- 404 returns default Express `Cannot GET /path` page (no stack trace or env leaks). + +## 3) OAuth Flow Hardening (Discord/Twitch) + +Checklist: +- State present and random: Yes (`crypto.randomBytes(16)`) +- State validated on callback: Yes +- Rejects missing/invalid state: Yes +- Session binding: Uses session-stored state +- Session fixation protection: Missing (no session regeneration after login) +- Redirect handling: No open redirect parameter observed + +## 4) Access Control + +Public pages returning data: +- `/commands`: command list and counts (expected public?) +- `/leaderboards`: leaderboards and expression summary +- `/plugins/expression-interaction`: public plugin page with global stats +- `/plugins/sample-plugin`: public content (despite role labeled `admin` in plugin) + +Admin endpoints: +- All `/admin/*` routes protected by `requireRole("admin")`. + +## 5) CSRF and Cross-site Request Risks +- No CSRF middleware detected for POST routes (logout, profile updates, admin actions). +- Session cookies do not set `SameSite`, increasing CSRF risk. +- High-impact admin actions include plugin install/update, updates, and restart. + +## 6) Injection Testing (safe) +- No reflected parameters observed on public pages. +- User-controlled content in HTML uses EJS escaped output (`<%= ... %>`). +- Custom pages use raw HTML (`<%- page.content %>`), but creation is admin-gated. + +## 7) Rate Limiting and Enumeration +- No rate limiting middleware observed (e.g. `express-rate-limit`). +- Public endpoints (`/commands`, `/leaderboards`) are enumerable without throttling. + +## 8) Static Asset and Source Map Leakage +- No `.map` files exposed. +- No hardcoded secrets found in `src/web/public/app.js`. + +## 9) Node/Express Pitfalls Review +- No `helmet` usage for security headers. +- `express-session` cookie flags missing. +- No CSRF protection. +- No session ID rotation after OAuth login. +- `X-Powered-By` header enabled. +- `web.mount` does not enforce `navItem.role` for plugin routes. +- Dependency audit: `npm` not available in this environment, audit not executed. + +## Findings + +| Severity | Title | Affected URL/endpoint | Evidence | Impact | Fix | +| --- | --- | --- | --- | --- | --- | +| High | Missing CSRF protection on state-changing routes | Multiple POST endpoints (e.g. `/admin/*`, `/profile/*`, `/auth/logout`) | No CSRF middleware in `src/web/server.js` and no Origin/Referer checks | Logged-in admins can be forced to install plugins, change settings, or trigger updates | Add CSRF tokens and/or Origin checks; set `SameSite=Lax` cookies | +| Medium | Session cookie missing Secure and SameSite attributes | `/` (and other public pages) | `Set-Cookie: connect.sid=...; Path=/; HttpOnly` (no `Secure`/`SameSite`) | Session cookie can be sent over HTTP or cross-site requests; increases CSRF/session hijack risk | Configure `express-session` cookie flags; enable `trust proxy` when behind TLS terminator | +| Medium | Session fixation risk after OAuth login | `/auth/discord/callback`, `/auth/twitch/callback` | Session is populated without regeneration (`req.session.user = ...`) | Attacker may fixate session ID before login and reuse it after victim authenticates | Call `req.session.regenerate()` on successful OAuth login | +| Medium | Plugin route role not enforced | `/plugins/sample-plugin` (and any plugin using `web.mount`) | `web.mount` uses `app.use` without role guard; sample plugin labeled `admin` is public | Plugin pages intended for admins can be publicly accessible | Enforce `navItem.role` in `web.mount` with `requireRole` | +| Low | Missing baseline security headers | `/`, `/commands`, `/leaderboards` | No CSP/XFO/XCTO/Referrer-Policy/Permissions-Policy; `X-Powered-By: Express` | Increases exposure to clickjacking/XSS/mime sniffing and framework fingerprinting | Use `helmet` and disable `x-powered-by` | + +## Reproduction Steps + +1) Missing CSRF protection +- Log in as admin in a normal browser session. +- Host a page that auto-submits a POST form to `https://lumi.ookamikun.tv/admin/plugins/install` with a malicious repo URL. +- Visit the page while logged in; request succeeds without CSRF token. + +2) Session cookie missing Secure/SameSite +- Run `curl -I https://lumi.ookamikun.tv/`. +- Observe `Set-Cookie: connect.sid=...; Path=/; HttpOnly` without `Secure`/`SameSite`. + +3) Session fixation risk +- Start a session and capture the `connect.sid` cookie. +- Complete OAuth login; the session ID remains the same (no regeneration). + +4) Plugin route role not enforced +- Visit `https://lumi.ookamikun.tv/plugins/sample-plugin` while unauthenticated. +- The page loads (200) despite being labeled `role: admin` in the plugin. + +5) Missing security headers +- Run `curl -I https://lumi.ookamikun.tv/`. +- Confirm absence of CSP/XFO/XCTO/Referrer-Policy/Permissions-Policy headers. + +## Suggested Patches / Config Snippets + +### A) Session cookie hardening +```diff +--- a/src/web/server.js ++++ b/src/web/server.js +@@ + const app = express(); ++ app.set("trust proxy", 1); ++ app.disable("x-powered-by"); +@@ + app.use( + session({ + secret: ensureSessionSecret(), + resave: false, + saveUninitialized: false, +- store: sessionStore ++ store: sessionStore, ++ cookie: { ++ httpOnly: true, ++ secure: true, ++ sameSite: "lax" ++ } + }) + ); +``` + +### B) Add helmet with baseline headers +```diff +--- a/src/web/server.js ++++ b/src/web/server.js +@@ +-const express = require("express"); ++const express = require("express"); ++const helmet = require("helmet"); +@@ + const app = express(); ++ ++ app.use( ++ helmet({ ++ contentSecurityPolicy: { ++ useDefaults: true, ++ directives: { ++ "script-src": ["'self'"], ++ "style-src": ["'self'", "'unsafe-inline'"] ++ } ++ }, ++ referrerPolicy: { policy: "strict-origin-when-cross-origin" } ++ }) ++ ); +``` + +### C) Rotate session ID after OAuth login +```diff +--- a/src/web/server.js ++++ b/src/web/server.js +@@ +- req.session.user = { ++ req.session.regenerate(() => { ++ req.session.user = { + id: profile.id, + username: profile.internal_username, + avatar: user.avatar, + roles, + ...flags +- }; +- req.session.discordToken = token; +- setFlash(req, "success", "Logged in."); +- res.redirect("/"); ++ }; ++ req.session.discordToken = token; ++ setFlash(req, "success", "Logged in."); ++ res.redirect("/"); ++ }); +``` + +### D) Enforce role protection for plugin mounts +```diff +--- a/src/web/server.js ++++ b/src/web/server.js +@@ +- mount: (mountPath, router, navItem) => { +- app.use(mountPath, router); ++ mount: (mountPath, router, navItem) => { ++ const role = navItem?.role || "public"; ++ const middleware = role && role !== "public" ? requireRole(role) : null; ++ if (middleware) { ++ app.use(mountPath, middleware, router); ++ } else { ++ app.use(mountPath, router); ++ } + if (navItem) { + navItems.push({ ...navItem, path: mountPath }); + } + }, +``` + +### E) CSRF protection for state-changing routes +```diff +--- a/src/web/server.js ++++ b/src/web/server.js +@@ ++const csrf = require("csurf"); +@@ + const app = express(); ++ const csrfProtection = csrf(); +@@ +- app.post("/auth/logout", (req, res) => { ++ app.post("/auth/logout", csrfProtection, (req, res) => { + req.session.destroy(() => { + res.redirect("/"); + }); + }); +``` +Add hidden `_csrf` fields in forms and/or apply CSRF middleware globally after session initialization. + +## Top 5 Fixes This Week +1) Add CSRF protections for all state-changing routes. +2) Enforce Secure/SameSite cookie flags for `connect.sid`. +3) Rotate session IDs after OAuth login to prevent fixation. +4) Add helmet (CSP/XFO/XCTO/Referrer-Policy/Permissions-Policy). +5) Enforce `navItem.role` for plugin routes. + +## Verification Checklist (Post-fix) +- `curl -I https://lumi.ookamikun.tv/` shows CSP, XFO/frame-ancestors, XCTO, Referrer-Policy, Permissions-Policy. +- `Set-Cookie` includes `Secure` and `SameSite=Lax`. +- OAuth login changes the session ID. +- CSRF token required for POST to `/admin/*` endpoints. +- `/plugins/sample-plugin` is no longer accessible without auth when role is `admin`. + diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..3b4a5fc --- /dev/null +++ b/src/main.js @@ -0,0 +1,96 @@ +const { migrate } = require("./services/db"); +const { ensureDefaults, getSetting, setSetting } = require("./services/settings"); +const { createWebServer } = require("./web/server"); +const { startBot, stopBot } = require("./services/discord"); +const { startTwitchBot, stopTwitchBot } = require("./services/twitch"); +const { startYouTubeBot, stopYouTubeBot } = require("./services/youtube"); +const { loadEnabled } = require("./services/plugins"); +const { checkForUpdates, pullUpdates, requestRestart } = require("./services/updater"); +const { createCommandRouter } = require("./services/command-router"); +const { registerTopCommand } = require("./services/top"); +const logger = require("./services/logger"); +const { isPlatformEnabled } = require("./services/platforms"); + +async function main() { + migrate(); + ensureDefaults(); + logger.hookConsole(); + + const settingsApi = { getSetting, setSetting }; + const commandRouter = createCommandRouter({ settings: settingsApi }); + registerTopCommand({ commandRouter, settings: settingsApi }); + let discordClient = null; + let twitchClient = null; + let youtubeClient = null; + + if (isPlatformEnabled("discord")) { + try { + discordClient = await startBot({ commandRouter }); + } catch (error) { + console.error("Discord bot failed to start", error); + } + } + + if (isPlatformEnabled("twitch")) { + try { + twitchClient = await startTwitchBot({ commandRouter }); + } catch (error) { + console.error("Twitch bot failed to start", error); + } + } + + if (isPlatformEnabled("youtube")) { + try { + youtubeClient = await startYouTubeBot({ commandRouter }); + } catch (error) { + console.error("YouTube bot failed to start", error); + } + } + + const app = createWebServer({ + discordClient, + loadPlugins: (appInstance, web) => { + loadEnabled({ + app: appInstance, + discordClient, + twitchClient, + youtubeClient, + settings: settingsApi, + web, + commandRouter + }); + } + }); + + const port = Number(process.env.PORT || 3000); + app.listen(port, () => { + console.log(`WebUI listening on http://localhost:${port}`); + }); + + const autoUpdateEnabled = getSetting("auto_update_enabled", false); + const intervalMinutes = getSetting("auto_update_interval_minutes", 60); + if (autoUpdateEnabled) { + const intervalMs = Math.max(5, Number(intervalMinutes)) * 60 * 1000; + setInterval(() => { + try { + const remote = getSetting("git_remote", "origin"); + const branch = getSetting("git_branch", "main"); + if (checkForUpdates(remote, branch)) { + pullUpdates(remote, branch); + requestRestart(); + } + } catch (error) { + console.error("Auto-update failed", error); + } + }, intervalMs); + } + + process.on("SIGINT", async () => { + await stopBot(); + await stopTwitchBot(); + await stopYouTubeBot(); + process.exit(0); + }); +} + +main(); diff --git a/src/services/auth.js b/src/services/auth.js new file mode 100644 index 0000000..def8fad --- /dev/null +++ b/src/services/auth.js @@ -0,0 +1,188 @@ +const { getSetting } = require("./settings"); + +const YOUTUBE_SCOPES = [ + "https://www.googleapis.com/auth/youtube", + "https://www.googleapis.com/auth/youtube.force-ssl", + "https://www.googleapis.com/auth/youtube.readonly", + "https://www.googleapis.com/auth/youtube.channel-memberships.creator" +]; + +function getDiscordRedirectUri(override) { + return override || getSetting("discord_redirect_uri", null); +} + +function buildDiscordAuthUrl(state, redirectOverride) { + const clientId = getSetting("discord_client_id"); + const redirectUri = getDiscordRedirectUri(redirectOverride); + const params = new URLSearchParams({ + client_id: clientId || "", + redirect_uri: redirectUri || "", + response_type: "code", + scope: "identify guilds guilds.members.read", + state + }); + return `https://discord.com/api/oauth2/authorize?${params.toString()}`; +} + +async function exchangeDiscordCode(code, redirectOverride) { + const clientId = getSetting("discord_client_id"); + const clientSecret = getSetting("discord_client_secret"); + const redirectUri = getDiscordRedirectUri(redirectOverride); + const body = new URLSearchParams({ + client_id: clientId || "", + client_secret: clientSecret || "", + grant_type: "authorization_code", + code, + redirect_uri: redirectUri || "" + }); + + const response = await fetch("https://discord.com/api/oauth2/token", { + method: "POST", + headers: { "Content-Type": "application/x-www-form-urlencoded" }, + body + }); + + if (!response.ok) { + throw new Error(`Discord token exchange failed: ${response.status}`); + } + + return response.json(); +} + +async function fetchDiscordUser(accessToken) { + const response = await fetch("https://discord.com/api/users/@me", { + headers: { Authorization: `Bearer ${accessToken}` } + }); + if (!response.ok) { + throw new Error(`Discord user fetch failed: ${response.status}`); + } + return response.json(); +} + +async function fetchDiscordGuildMember(accessToken, guildId) { + const response = await fetch( + `https://discord.com/api/users/@me/guilds/${guildId}/member`, + { + headers: { Authorization: `Bearer ${accessToken}` } + } + ); + if (!response.ok) { + return null; + } + return response.json(); +} + +function buildTwitchAuthUrl(state, redirectOverride) { + const clientId = getSetting("twitch_client_id"); + const redirectUri = redirectOverride || getSetting("twitch_redirect_uri"); + const params = new URLSearchParams({ + client_id: clientId || "", + redirect_uri: redirectUri || "", + response_type: "code", + scope: "user:read:email", + state + }); + return `https://id.twitch.tv/oauth2/authorize?${params.toString()}`; +} + +async function exchangeTwitchCode(code, redirectOverride) { + const clientId = getSetting("twitch_client_id"); + const clientSecret = getSetting("twitch_client_secret"); + const redirectUri = redirectOverride || getSetting("twitch_redirect_uri"); + const params = new URLSearchParams({ + client_id: clientId || "", + client_secret: clientSecret || "", + code, + grant_type: "authorization_code", + redirect_uri: redirectUri || "" + }); + const response = await fetch( + `https://id.twitch.tv/oauth2/token?${params.toString()}`, + { method: "POST" } + ); + if (!response.ok) { + throw new Error(`Twitch token exchange failed: ${response.status}`); + } + return response.json(); +} + +async function fetchTwitchUser(accessToken) { + const clientId = getSetting("twitch_client_id"); + const response = await fetch("https://api.twitch.tv/helix/users", { + headers: { + "Client-Id": clientId || "", + Authorization: `Bearer ${accessToken}` + } + }); + if (!response.ok) { + throw new Error(`Twitch user fetch failed: ${response.status}`); + } + const data = await response.json(); + return data.data?.[0] || null; +} + +function buildYouTubeAuthUrl(state, redirectOverride, options = {}) { + const clientId = getSetting("youtube_client_id"); + const redirectUri = redirectOverride || getSetting("youtube_redirect_uri"); + const scopes = options.scopes || YOUTUBE_SCOPES; + const params = new URLSearchParams({ + client_id: clientId || "", + redirect_uri: redirectUri || "", + response_type: "code", + scope: scopes.join(" "), + state, + access_type: "offline", + include_granted_scopes: "true" + }); + if (options.prompt) { + params.set("prompt", options.prompt); + } + return `https://accounts.google.com/o/oauth2/v2/auth?${params.toString()}`; +} + +async function exchangeYouTubeCode(code, redirectOverride) { + const clientId = getSetting("youtube_client_id"); + const clientSecret = getSetting("youtube_client_secret"); + const redirectUri = redirectOverride || getSetting("youtube_redirect_uri"); + const body = new URLSearchParams({ + client_id: clientId || "", + client_secret: clientSecret || "", + grant_type: "authorization_code", + code, + redirect_uri: redirectUri || "" + }); + const response = await fetch("https://oauth2.googleapis.com/token", { + method: "POST", + headers: { "Content-Type": "application/x-www-form-urlencoded" }, + body + }); + if (!response.ok) { + throw new Error(`YouTube token exchange failed: ${response.status}`); + } + return response.json(); +} + +async function fetchYouTubeChannel(accessToken) { + const response = await fetch( + "https://www.googleapis.com/youtube/v3/channels?part=snippet&mine=true", + { headers: { Authorization: `Bearer ${accessToken}` } } + ); + if (!response.ok) { + throw new Error(`YouTube channel fetch failed: ${response.status}`); + } + const data = await response.json(); + return data.items?.[0] || null; +} + +module.exports = { + buildDiscordAuthUrl, + exchangeDiscordCode, + fetchDiscordUser, + fetchDiscordGuildMember, + buildTwitchAuthUrl, + exchangeTwitchCode, + fetchTwitchUser, + buildYouTubeAuthUrl, + exchangeYouTubeCode, + fetchYouTubeChannel +}; diff --git a/src/services/command-router.js b/src/services/command-router.js new file mode 100644 index 0000000..068561d --- /dev/null +++ b/src/services/command-router.js @@ -0,0 +1,237 @@ +const { db } = require("./db"); +const { incrementCommands } = require("./stats"); +const { + buildCommandContext, + runAdvancedCommand, + normalizeCommandResult +} = require("./commands"); +const { getEnabledPlatformIds, normalizePlatformSelection } = require("./platforms"); + +function createCommandRouter({ settings }) { + const commandMap = new Map(); + const pluginCommands = new Map(); + + function clearCommands(pluginId) { + const existing = pluginCommands.get(pluginId) || []; + for (const entry of existing) { + const handlers = commandMap.get(entry.trigger) || []; + const nextHandlers = handlers.filter((handler) => handler !== entry.handler); + if (nextHandlers.length) { + commandMap.set(entry.trigger, nextHandlers); + } else { + commandMap.delete(entry.trigger); + } + } + pluginCommands.delete(pluginId); + } + + function registerCommands(pluginId, commands = []) { + if (!pluginId) { + throw new Error("Plugin id is required to register commands."); + } + clearCommands(pluginId); + const entries = []; + for (const command of commands) { + const triggers = (command.triggers || []) + .map((trigger) => trigger.toLowerCase()) + .filter(Boolean); + const handler = buildHandler(command); + for (const trigger of triggers) { + const list = commandMap.get(trigger) || []; + list.push(handler); + commandMap.set(trigger, list); + entries.push({ trigger, handler }); + } + } + pluginCommands.set(pluginId, entries); + } + + function buildHandler(command) { + const handler = async (ctx) => { + if (command.platforms && command.platforms.length) { + if (!command.platforms.includes(ctx.platform)) { + return false; + } + } + return await command.handler(ctx); + }; + handler.commandId = command.id || null; + return handler; + } + + async function handleMessage({ platform, raw, user, platformUser, reply, meta }) { + const prefix = settings.getSetting("command_prefix", "!"); + if (!raw.startsWith(prefix)) { + return false; + } + const rawCommand = raw.slice(prefix.length).trim(); + if (!rawCommand) { + return false; + } + const parts = rawCommand.split(/\s+/); + const trigger = parts[0].toLowerCase(); + const args = parts.slice(1); + const argsText = args.join(" "); + const ctx = { + platform, + trigger, + raw, + args, + argsText, + user: { + id: user.id, + username: user.internal_username || user.username, + platformId: platformUser.id, + displayName: platformUser.displayName || platformUser.username, + tag: platformUser.tag + }, + platformUser, + meta, + reply + }; + + const customHandled = await handleCustomCommand({ + trigger, + platform, + ctx, + raw, + reply + }); + if (customHandled) { + incrementCommands(user.id); + return true; + } + + const handlers = commandMap.get(trigger) || []; + for (const handler of handlers) { + try { + const result = await handler(ctx); + if (typeof result === "string" && result) { + await safeReply(reply, result); + recordCommandUsage(handler.commandId); + incrementCommands(user.id); + return true; + } + if (result === true) { + recordCommandUsage(handler.commandId); + incrementCommands(user.id); + return true; + } + } catch (error) { + console.error("Command handler failed", error); + await safeReply(reply, "Command failed to execute."); + return true; + } + } + + return false; + } + + return { + registerCommands, + clearCommands, + handleMessage + }; +} + +async function handleCustomCommand({ trigger, platform, ctx, raw, reply }) { + const row = db + .prepare( + "SELECT response, mode, language, code, platform FROM custom_commands WHERE trigger = ? AND enabled = 1" + ) + .get(trigger); + if (!row) { + return false; + } + const enabledPlatforms = getEnabledPlatformIds(); + const allowedPlatforms = normalizePlatformSelection(row.platform, enabledPlatforms); + if (!allowedPlatforms.includes(platform)) { + return false; + } + try { + if (row.mode === "advanced" && row.code) { + const messageInfo = buildMessageInfo(ctx, raw); + const commandCtx = buildCommandContext({ + platform, + user: { + id: ctx.user.id, + platformId: ctx.user.platformId, + username: ctx.user.username, + displayName: ctx.user.displayName, + tag: ctx.user.tag + }, + message: messageInfo, + args: ctx.args, + argsText: ctx.argsText + }); + const result = await runAdvancedCommand( + { code: row.code, language: row.language }, + commandCtx + ); + const output = normalizeCommandResult(result); + if (output) { + await safeReply(reply, output); + } else { + await safeReply(reply, "Command ran but returned no output."); + } + } else { + await safeReply(reply, row.response); + } + recordCommandUsage(`custom:${trigger}`); + return true; + } catch (error) { + console.error("Failed to reply to command", error); + await safeReply(reply, "Command failed to execute."); + return true; + } +} + +function buildMessageInfo(ctx, raw) { + if (ctx.platform === "discord" && ctx.meta?.message) { + const message = ctx.meta.message; + return { + id: message.id, + content: raw, + channelId: message.channelId, + guildId: message.guildId + }; + } + if (ctx.platform === "twitch") { + return { + channel: ctx.meta?.channel, + content: raw + }; + } + if (ctx.platform === "youtube") { + return { + liveChatId: ctx.meta?.liveChatId, + messageId: ctx.meta?.messageId, + channelId: ctx.meta?.author?.channelId, + content: raw + }; + } + return { content: raw }; +} + +async function safeReply(reply, content) { + try { + await reply(content); + } catch (error) { + console.error("Command reply failed", error); + } +} + +function recordCommandUsage(commandId) { + if (!commandId) { + return; + } + const now = Date.now(); + db.prepare( + "INSERT INTO command_usage (command_id, count, updated_at) VALUES (?, 1, ?) " + + "ON CONFLICT(command_id) DO UPDATE SET count = count + 1, updated_at = excluded.updated_at" + ).run(commandId, now); +} + +module.exports = { + createCommandRouter +}; diff --git a/src/services/commands.js b/src/services/commands.js new file mode 100644 index 0000000..9af9198 --- /dev/null +++ b/src/services/commands.js @@ -0,0 +1,164 @@ +const vm = require("vm"); +const { spawn } = require("child_process"); +const fs = require("fs"); +const os = require("os"); +const path = require("path"); + +function buildCommandContext({ platform, user, message, args, argsText }) { + return { + platform, + user, + message, + args: args || [], + argsText: argsText || "" + }; +} + +async function runAdvancedCommand({ code, language }, ctx) { + if (language === "python") { + return await runPythonCommand(code, ctx); + } + return await runJsCommand(code, ctx); +} + +async function runJsCommand(code, ctx) { + const logs = []; + const safeConsole = { + log: (...args) => logs.push(args.join(" ")) + }; + const sandbox = { + ctx, + console: safeConsole, + module: { exports: {} }, + exports: {} + }; + const context = vm.createContext(sandbox); + const script = new vm.Script(code, { filename: "command.js" }); + script.runInContext(context, { timeout: 1000 }); + + const handler = context.run || context.module.exports || context.exports; + if (typeof handler !== "function") { + throw new Error("Advanced commands must export a run(ctx) function."); + } + const result = handler(ctx); + if (result && typeof result.then === "function") { + return await promiseWithTimeout(result, 1500); + } + return result; +} + +async function runPythonCommand(code, ctx) { + return await new Promise((resolve, reject) => { + const payload = JSON.stringify(ctx); + const encoded = Buffer.from(code, "utf8").toString("base64"); + const script = ` +import base64, json, sys, traceback +ctx = json.loads(sys.stdin.read() or "{}") +code = base64.b64decode("${encoded}").decode("utf-8") +globals_dict = {} +try: + exec(code, globals_dict) + if "run" not in globals_dict: + raise Exception("Define a run(ctx) function.") + result = globals_dict["run"](ctx) + if result is None: + sys.exit(0) + if isinstance(result, (dict, list)): + print(json.dumps(result)) + else: + print(str(result)) +except Exception: + traceback.print_exc() + sys.exit(2) +`; + + const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "lumi-cmd-")); + const filePath = path.join(tmpDir, "runner.py"); + fs.writeFileSync(filePath, script, "utf8"); + + const child = spawn("python", ["-u", filePath], { + stdio: ["pipe", "pipe", "pipe"] + }); + let stdout = ""; + let stderr = ""; + const timeout = setTimeout(() => { + child.kill("SIGKILL"); + reject(new Error("Python command timed out.")); + }, 2000); + + child.stdout.on("data", (chunk) => { + stdout += chunk.toString(); + }); + child.stderr.on("data", (chunk) => { + stderr += chunk.toString(); + }); + child.on("error", (error) => { + clearTimeout(timeout); + cleanupTemp(tmpDir); + reject(error); + }); + child.on("close", (code) => { + clearTimeout(timeout); + cleanupTemp(tmpDir); + if (code && code !== 0) { + reject(new Error(stderr || "Python command failed.")); + return; + } + resolve(stdout.trim()); + }); + + child.stdin.write(payload); + child.stdin.end(); + }); +} + +function cleanupTemp(dir) { + try { + fs.rmSync(dir, { recursive: true, force: true }); + } catch { + // Ignore cleanup errors. + } +} + +function normalizeCommandResult(result) { + if (result === null || result === undefined) { + return ""; + } + if (typeof result === "string") { + return result; + } + if (typeof result === "number" || typeof result === "boolean") { + return String(result); + } + if (typeof result === "object" && result.content) { + return String(result.content); + } + try { + return JSON.stringify(result); + } catch { + return String(result); + } +} + +function promiseWithTimeout(promise, timeoutMs) { + return new Promise((resolve, reject) => { + const timeout = setTimeout(() => { + reject(new Error("Command timed out.")); + }, timeoutMs); + promise + .then((value) => { + clearTimeout(timeout); + resolve(value); + }) + .catch((error) => { + clearTimeout(timeout); + reject(error); + }); + }); +} + +module.exports = { + buildCommandContext, + runAdvancedCommand, + normalizeCommandResult +}; diff --git a/src/services/config.js b/src/services/config.js new file mode 100644 index 0000000..c25f422 --- /dev/null +++ b/src/services/config.js @@ -0,0 +1,65 @@ +const fs = require("fs"); +const path = require("path"); + +const envPath = path.join(__dirname, "..", "..", ".env"); + +function loadEnvFile(filePath = envPath) { + if (!fs.existsSync(filePath)) { + return; + } + + const contents = fs.readFileSync(filePath, "utf8"); + for (const line of contents.split(/\r?\n/)) { + const trimmed = line.trim(); + if (!trimmed || trimmed.startsWith("#")) { + continue; + } + + const separator = trimmed.indexOf("="); + if (separator === -1) { + continue; + } + + const key = trimmed.slice(0, separator).trim(); + let value = trimmed.slice(separator + 1).trim(); + if (!key || Object.prototype.hasOwnProperty.call(process.env, key)) { + continue; + } + + if ( + (value.startsWith('"') && value.endsWith('"')) || + (value.startsWith("'") && value.endsWith("'")) + ) { + value = value.slice(1, -1); + } + + process.env[key] = value; + } +} + +function envString(key, fallback = "") { + const value = process.env[key]; + return value === undefined ? fallback : value; +} + +function envBoolean(key, fallback = false) { + const value = process.env[key]; + if (value === undefined) { + return fallback; + } + return ["1", "true", "yes", "on"].includes(value.toLowerCase()); +} + +function envNumber(key, fallback) { + const value = Number(process.env[key]); + return Number.isFinite(value) ? value : fallback; +} + +loadEnvFile(); + +module.exports = { + envBoolean, + envNumber, + envString, + loadEnvFile +}; diff --git a/src/services/db.js b/src/services/db.js new file mode 100644 index 0000000..67accd9 --- /dev/null +++ b/src/services/db.js @@ -0,0 +1,264 @@ +const path = require("path"); +const fs = require("fs"); +const Database = require("better-sqlite3"); + +const dataDir = path.join(__dirname, "..", "..", "data"); +const dbPath = path.join(dataDir, "app.db"); + +fs.mkdirSync(dataDir, { recursive: true }); + +const db = new Database(dbPath); +db.pragma("journal_mode = WAL"); + +function migrate() { + db.exec(` + CREATE TABLE IF NOT EXISTS settings ( + key TEXT PRIMARY KEY, + value TEXT NOT NULL, + updated_at INTEGER NOT NULL + ); + + CREATE TABLE IF NOT EXISTS users ( + id TEXT PRIMARY KEY, + username TEXT NOT NULL, + avatar TEXT, + last_login INTEGER NOT NULL, + created_at INTEGER NOT NULL + ); + + CREATE TABLE IF NOT EXISTS user_profiles ( + id TEXT PRIMARY KEY, + internal_username TEXT NOT NULL UNIQUE COLLATE NOCASE, + created_at INTEGER NOT NULL, + updated_at INTEGER NOT NULL + ); + + CREATE TABLE IF NOT EXISTS user_identities ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id TEXT NOT NULL, + provider TEXT NOT NULL, + provider_user_id TEXT NOT NULL, + display_name TEXT, + avatar TEXT, + created_at INTEGER NOT NULL, + updated_at INTEGER NOT NULL, + UNIQUE(provider, provider_user_id) + ); + + CREATE TABLE IF NOT EXISTS mod_role_periods ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id TEXT NOT NULL, + start_at INTEGER NOT NULL, + end_at INTEGER + ); + + CREATE TABLE IF NOT EXISTS linked_accounts ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id TEXT NOT NULL, + provider TEXT NOT NULL, + provider_user_id TEXT NOT NULL, + display_name TEXT, + access_token TEXT, + refresh_token TEXT, + expires_at INTEGER, + created_at INTEGER NOT NULL, + updated_at INTEGER NOT NULL, + UNIQUE(user_id, provider) + ); + + CREATE TABLE IF NOT EXISTS plugins ( + id TEXT PRIMARY KEY, + name TEXT NOT NULL, + version TEXT, + enabled INTEGER NOT NULL DEFAULT 1, + source TEXT, + path TEXT NOT NULL, + installed_at INTEGER NOT NULL, + updated_at INTEGER NOT NULL + ); + + CREATE TABLE IF NOT EXISTS plugin_settings ( + plugin_id TEXT NOT NULL, + key TEXT NOT NULL, + value TEXT NOT NULL, + updated_at INTEGER NOT NULL, + PRIMARY KEY (plugin_id, key) + ); + + CREATE TABLE IF NOT EXISTS stats ( + user_id TEXT PRIMARY KEY, + messages INTEGER NOT NULL DEFAULT 0, + commands INTEGER NOT NULL DEFAULT 0, + updated_at INTEGER NOT NULL + ); + + CREATE TABLE IF NOT EXISTS custom_pages ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + slug TEXT NOT NULL UNIQUE, + title TEXT NOT NULL, + nav_label TEXT, + content TEXT NOT NULL, + content_css TEXT NOT NULL DEFAULT '', + format TEXT NOT NULL DEFAULT 'html', + role TEXT NOT NULL DEFAULT 'public', + show_in_nav INTEGER NOT NULL DEFAULT 0, + enabled INTEGER NOT NULL DEFAULT 1, + created_at INTEGER NOT NULL, + updated_at INTEGER NOT NULL + ); + + CREATE TABLE IF NOT EXISTS custom_commands ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + trigger TEXT NOT NULL UNIQUE, + response TEXT NOT NULL, + platform TEXT NOT NULL DEFAULT 'both', + mode TEXT NOT NULL DEFAULT 'plain', + language TEXT NOT NULL DEFAULT 'js', + code TEXT, + enabled INTEGER NOT NULL DEFAULT 1, + created_at INTEGER NOT NULL, + updated_at INTEGER NOT NULL + ); + + CREATE TABLE IF NOT EXISTS command_usage ( + command_id TEXT PRIMARY KEY, + count INTEGER NOT NULL DEFAULT 0, + updated_at INTEGER NOT NULL + ); + + CREATE TABLE IF NOT EXISTS logs ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + level TEXT NOT NULL, + message TEXT NOT NULL, + details TEXT, + created_at INTEGER NOT NULL + ); + + CREATE INDEX IF NOT EXISTS logs_created_at_idx ON logs (created_at); + `); + + const columns = db + .prepare("PRAGMA table_info(custom_commands)") + .all() + .map((column) => column.name); + + if (!columns.includes("mode")) { + db.exec("ALTER TABLE custom_commands ADD COLUMN mode TEXT NOT NULL DEFAULT 'plain'"); + } + if (!columns.includes("language")) { + db.exec("ALTER TABLE custom_commands ADD COLUMN language TEXT NOT NULL DEFAULT 'js'"); + } + if (!columns.includes("code")) { + db.exec("ALTER TABLE custom_commands ADD COLUMN code TEXT"); + } + if (!columns.includes("platform")) { + db.exec( + "ALTER TABLE custom_commands ADD COLUMN platform TEXT NOT NULL DEFAULT 'both'" + ); + } + + const pageColumns = db + .prepare("PRAGMA table_info(custom_pages)") + .all() + .map((column) => column.name); + + if (!pageColumns.includes("content_css")) { + db.exec( + "ALTER TABLE custom_pages ADD COLUMN content_css TEXT NOT NULL DEFAULT ''" + ); + } + if (!pageColumns.includes("format")) { + db.exec( + "ALTER TABLE custom_pages ADD COLUMN format TEXT NOT NULL DEFAULT 'html'" + ); + } + + const profileColumns = db + .prepare("PRAGMA table_info(user_profiles)") + .all() + .map((column) => column.name); + + if (!profileColumns.includes("username_updated_at")) { + db.exec("ALTER TABLE user_profiles ADD COLUMN username_updated_at INTEGER"); + } + + migrateLegacyUsers(); +} + +function migrateLegacyUsers() { + const legacyUsers = db + .prepare("SELECT id, username, avatar FROM users") + .all(); + if (!legacyUsers.length) { + return; + } + + const now = Date.now(); + const mapping = new Map(); + + for (const legacy of legacyUsers) { + const existingIdentity = db + .prepare( + "SELECT user_id FROM user_identities WHERE provider = 'discord' AND provider_user_id = ?" + ) + .get(legacy.id); + + if (existingIdentity?.user_id) { + mapping.set(legacy.id, existingIdentity.user_id); + continue; + } + + const username = generateUniqueLegacyUsername(legacy.username); + const userId = cryptoRandomId(); + db.prepare( + "INSERT INTO user_profiles (id, internal_username, created_at, updated_at) VALUES (?, ?, ?, ?)" + ).run(userId, username, now, now); + db.prepare( + "INSERT INTO user_identities (user_id, provider, provider_user_id, display_name, avatar, created_at, updated_at) VALUES (?, 'discord', ?, ?, ?, ?, ?)" + ).run(userId, legacy.id, legacy.username, legacy.avatar, now, now); + mapping.set(legacy.id, userId); + } + + for (const [legacyId, userId] of mapping.entries()) { + db.prepare("UPDATE stats SET user_id = ? WHERE user_id = ?").run( + userId, + legacyId + ); + db.prepare("UPDATE linked_accounts SET user_id = ? WHERE user_id = ?").run( + userId, + legacyId + ); + } +} + +function generateUniqueLegacyUsername(name) { + const base = (name || "user").trim() || "user"; + if (isLegacyUsernameAvailable(base)) { + return base; + } + let suffix = 2; + let candidate = `${base}-${suffix}`; + while (!isLegacyUsernameAvailable(candidate)) { + suffix += 1; + candidate = `${base}-${suffix}`; + } + return candidate; +} + +function isLegacyUsernameAvailable(name) { + const row = db + .prepare( + "SELECT id FROM user_profiles WHERE internal_username = ? LIMIT 1" + ) + .get(name); + return !row; +} + +function cryptoRandomId() { + return require("crypto").randomUUID(); +} + +module.exports = { + db, + migrate +}; diff --git a/src/services/discord.js b/src/services/discord.js new file mode 100644 index 0000000..0090143 --- /dev/null +++ b/src/services/discord.js @@ -0,0 +1,140 @@ +const discord = require("discord.js"); +const Client = discord.Client; +const GatewayIntentBits = discord.GatewayIntentBits; +const IntentsBitField = discord.IntentsBitField; +const Intents = discord.Intents; +const Partials = discord.Partials; +const { getSetting, setSetting } = require("./settings"); +const { incrementMessages } = require("./stats"); +const { ensureUserForIdentity } = require("./users"); + +let client = null; + +async function startBot({ commandRouter } = {}) { + const token = getSetting("discord_bot_token"); + if (!token) { + return null; + } + + const intents = [ + resolveIntent("Guilds", "GUILDS"), + resolveIntent("GuildMessages", "GUILD_MESSAGES"), + resolveIntent("MessageContent", "MESSAGE_CONTENT"), + resolveIntent("GuildVoiceStates", "GUILD_VOICE_STATES"), + resolveIntent("GuildPresences", "GUILD_PRESENCES") + ].filter(Boolean); + + const options = {}; + if (intents.length) { + options.intents = intents; + } + if (Partials?.Channel) { + options.partials = [Partials.Channel]; + } + + client = new Client(options); + + client.on("ready", () => { + console.log(`Discord bot ready: ${client.user?.tag}`); + const avatarUrl = getBotAvatarUrl(client.user); + if (avatarUrl) { + setSetting("bot_avatar_url", avatarUrl); + } + }); + + client.on("messageCreate", async (message) => { + if (!message.guild || message.author.bot) { + return; + } + const displayName = + message.author.globalName || message.author.username || message.author.tag; + let avatarUrl = null; + if (typeof message.author.displayAvatarURL === "function") { + try { + avatarUrl = message.author.displayAvatarURL({ format: "png", size: 128 }); + } catch { + avatarUrl = message.author.displayAvatarURL(); + } + } + const profile = ensureUserForIdentity({ + provider: "discord", + providerUserId: message.author.id, + displayName, + avatar: avatarUrl + }); + incrementMessages(profile.id); + + if (commandRouter) { + await commandRouter.handleMessage({ + platform: "discord", + raw: message.content, + user: profile, + platformUser: { + id: message.author.id, + displayName, + username: message.author.username, + tag: message.author.tag, + avatar: avatarUrl + }, + meta: { message, client }, + reply: async (content) => { + try { + await message.reply(content); + } catch (error) { + console.error("Discord command reply failed", error); + } + } + }); + } + }); + + await client.login(token); + return client; +} + +function getBotAvatarUrl(user) { + if (!user) { + return null; + } + if (typeof user.displayAvatarURL === "function") { + try { + return user.displayAvatarURL({ format: "png", size: 128 }); + } catch { + return user.displayAvatarURL(); + } + } + if (user.avatar) { + return `https://cdn.discordapp.com/avatars/${user.id}/${user.avatar}.png?size=128`; + } + return null; +} + +function resolveIntent(key, legacyKey) { + if (GatewayIntentBits?.[key]) { + return GatewayIntentBits[key]; + } + if (IntentsBitField?.Flags?.[key]) { + return IntentsBitField.Flags[key]; + } + if (Intents?.FLAGS?.[legacyKey]) { + return Intents.FLAGS[legacyKey]; + } + return null; +} + +async function stopBot() { + if (client) { + await client.destroy(); + client = null; + } +} + +function getClient() { + return client; +} + +module.exports = { + startBot, + stopBot, + getClient +}; diff --git a/src/services/logger.js b/src/services/logger.js new file mode 100644 index 0000000..c5ad3a0 --- /dev/null +++ b/src/services/logger.js @@ -0,0 +1,143 @@ +const util = require("util"); +const { db } = require("./db"); + +const LEVELS = new Set(["debug", "info", "warn", "error"]); +let consoleHooked = false; + +function log(level, ...args) { + const safeLevel = LEVELS.has(level) ? level : "info"; + const entry = normalizeArgs(args); + const createdAt = Date.now(); + try { + db.prepare( + "INSERT INTO logs (level, message, details, created_at) VALUES (?, ?, ?, ?)" + ).run(safeLevel, entry.message, entry.details, createdAt); + } catch { + // Avoid throwing from logger. + } +} + +function listLogs(options = {}) { + const limit = + Number.isFinite(options.limit) && options.limit !== null + ? Math.max(1, options.limit) + : null; + const sinceMs = + Number.isFinite(options.sinceMs) && options.sinceMs > 0 + ? options.sinceMs + : null; + const levels = Array.isArray(options.levels) + ? options.levels.filter((level) => LEVELS.has(level)) + : []; + + const clauses = []; + const params = []; + if (sinceMs) { + clauses.push("created_at >= ?"); + params.push(sinceMs); + } + if (levels.length) { + clauses.push(`level IN (${levels.map(() => "?").join(",")})`); + params.push(...levels); + } + + let query = + "SELECT id, level, message, details, created_at FROM logs"; + if (clauses.length) { + query += ` WHERE ${clauses.join(" AND ")}`; + } + query += " ORDER BY created_at DESC"; + if (limit) { + query += " LIMIT ?"; + params.push(limit); + } + + return db.prepare(query).all(...params); +} + +function hookConsole() { + if (consoleHooked) { + return; + } + consoleHooked = true; + + const original = { + log: console.log, + info: console.info || console.log, + warn: console.warn || console.log, + error: console.error || console.log + }; + + console.log = (...args) => { + log("info", ...args); + original.log.apply(console, args); + }; + console.info = (...args) => { + log("info", ...args); + original.info.apply(console, args); + }; + console.warn = (...args) => { + log("warn", ...args); + original.warn.apply(console, args); + }; + console.error = (...args) => { + log("error", ...args); + original.error.apply(console, args); + }; +} + +function normalizeArgs(args) { + if (!args || args.length === 0) { + return { message: "Log entry", details: "" }; + } + let message = ""; + const detailParts = []; + + const first = args[0]; + if (first instanceof Error) { + message = first.message || "Error"; + detailParts.push(first.stack || String(first)); + } else { + message = formatArg(first); + } + + for (const arg of args.slice(1)) { + if (arg instanceof Error) { + detailParts.push(arg.stack || arg.message || String(arg)); + if (!message) { + message = arg.message || "Error"; + } + } else { + detailParts.push(formatArg(arg)); + } + } + + if (!message) { + message = "Log entry"; + } + + return { + message, + details: detailParts.filter(Boolean).join("\n") + }; +} + +function formatArg(value) { + if (typeof value === "string") { + return value; + } + if (value instanceof Error) { + return value.stack || value.message || String(value); + } + return util.inspect(value, { + depth: 4, + maxArrayLength: 50, + breakLength: 120 + }); +} + +module.exports = { + log, + listLogs, + hookConsole +}; diff --git a/src/services/platforms.js b/src/services/platforms.js new file mode 100644 index 0000000..79edbe2 --- /dev/null +++ b/src/services/platforms.js @@ -0,0 +1,187 @@ +const { getSetting } = require("./settings"); + +const PLATFORM_DEFS = [ + { + id: "discord", + label: "Discord", + enabledKey: "platform_discord_enabled", + enabledByDefault: true, + supported: true, + supportsLogin: true, + supportsLink: true, + wizardPath: "/admin/discord-wizard", + loginPath: "/auth/discord", + linkPath: "/auth/discord", + badge: "discord", + isConfigured: () => + Boolean( + getSetting("discord_client_id") && + getSetting("discord_client_secret") && + getSetting("discord_guild_id") && + getSetting("discord_bot_token") + ) + }, + { + id: "kick", + label: "Kick", + enabledKey: "platform_kick_enabled", + enabledByDefault: false, + supported: false, + supportsLogin: false, + supportsLink: false, + wizardPath: null, + loginPath: null, + linkPath: null, + badge: "kick", + isConfigured: () => false + }, + { + id: "twitch", + label: "Twitch", + enabledKey: "platform_twitch_enabled", + enabledByDefault: true, + supported: true, + supportsLogin: true, + supportsLink: true, + wizardPath: "/admin/twitch-wizard", + loginPath: "/auth/twitch/login", + linkPath: "/auth/twitch", + badge: "twitch", + isConfigured: () => + Boolean(getSetting("twitch_client_id") && getSetting("twitch_client_secret")) + }, + { + id: "youtube", + label: "YouTube", + enabledKey: "platform_youtube_enabled", + enabledByDefault: false, + supported: true, + supportsLogin: true, + supportsLink: true, + wizardPath: "/admin/youtube-wizard", + loginPath: "/auth/youtube/login", + linkPath: "/auth/youtube", + badge: "youtube", + isConfigured: () => + Boolean(getSetting("youtube_client_id") && getSetting("youtube_client_secret")) + } +]; + +function getPlatforms() { + return PLATFORM_DEFS.slice().sort((a, b) => a.label.localeCompare(b.label)); +} + +function getPlatformById(id) { + return PLATFORM_DEFS.find((platform) => platform.id === id) || null; +} + +function isPlatformEnabled(id) { + const platform = getPlatformById(id); + if (!platform) { + return false; + } + return Boolean(getSetting(platform.enabledKey, platform.enabledByDefault)); +} + +function isPlatformConfigured(id) { + const platform = getPlatformById(id); + if (!platform || !platform.supported) { + return false; + } + if (typeof platform.isConfigured !== "function") { + return false; + } + return Boolean(platform.isConfigured()); +} + +function getPlatformStatus() { + return getPlatforms().map((platform) => ({ + ...platform, + enabled: isPlatformEnabled(platform.id), + configured: isPlatformConfigured(platform.id) + })); +} + +function getEnabledPlatforms({ supportedOnly = true } = {}) { + return getPlatforms().filter((platform) => { + if (supportedOnly && !platform.supported) { + return false; + } + return isPlatformEnabled(platform.id); + }); +} + +function getEnabledPlatformIds({ supportedOnly = true } = {}) { + return getEnabledPlatforms({ supportedOnly }).map((platform) => platform.id); +} + +function getLoginPlatforms() { + return getEnabledPlatforms({ supportedOnly: true }).filter( + (platform) => platform.supportsLogin + ); +} + +function getLinkPlatforms() { + return getEnabledPlatforms({ supportedOnly: true }).filter( + (platform) => platform.supportsLink + ); +} + +function getPlatformLabel(id) { + const platform = getPlatformById(id); + return platform?.label || id; +} + +function getPlatformBadge(id) { + const platform = getPlatformById(id); + return platform?.badge || id; +} + +function normalizePlatformSelection(value, availablePlatforms) { + const available = + Array.isArray(availablePlatforms) && availablePlatforms.length + ? availablePlatforms + : getEnabledPlatformIds(); + if (!value) { + return available; + } + const raw = value.toString().trim().toLowerCase(); + if (!raw) { + return available; + } + if (raw === "all") { + return available; + } + if (raw === "both") { + return ["discord", "twitch"].filter((platform) => available.includes(platform)); + } + const selected = raw + .split(/[,\s]+/) + .map((entry) => entry.trim()) + .filter(Boolean); + const unique = Array.from(new Set(selected)); + return unique.filter((platform) => available.includes(platform)); +} + +function serializePlatformSelection(platforms) { + if (!Array.isArray(platforms) || platforms.length === 0) { + return ""; + } + return Array.from(new Set(platforms)).join(","); +} + +module.exports = { + getPlatforms, + getPlatformById, + getPlatformStatus, + isPlatformEnabled, + isPlatformConfigured, + getEnabledPlatforms, + getEnabledPlatformIds, + getLoginPlatforms, + getLinkPlatforms, + getPlatformLabel, + getPlatformBadge, + normalizePlatformSelection, + serializePlatformSelection +}; diff --git a/src/services/plugin-stats.js b/src/services/plugin-stats.js new file mode 100644 index 0000000..9ddab35 --- /dev/null +++ b/src/services/plugin-stats.js @@ -0,0 +1,107 @@ +const fs = require("fs"); +const path = require("path"); +const { db } = require("./db"); +const { getPlugins } = require("./plugins"); + +function readJsonSafe(filePath) { + try { + const raw = fs.readFileSync(filePath, "utf8"); + return JSON.parse(raw); + } catch { + return null; + } +} + +function loadStatProviders() { + const providers = []; + const plugins = getPlugins().filter((plugin) => plugin.enabled); + for (const plugin of plugins) { + const manifestPath = path.join(plugin.path, "stats.json"); + if (!fs.existsSync(manifestPath)) { + continue; + } + const manifest = readJsonSafe(manifestPath); + if (!manifest) { + continue; + } + const providerPath = path.join( + plugin.path, + manifest.provider || "stats.js" + ); + if (!fs.existsSync(providerPath)) { + continue; + } + let provider = null; + try { + provider = require(providerPath); + } catch (error) { + console.error("Failed to load plugin stats provider", error); + continue; + } + providers.push({ plugin, manifest, provider }); + } + return providers; +} + +function buildProfileSection({ plugin, manifest, provider, userId }) { + if (!manifest.profile || typeof provider.getProfileStats !== "function") { + return null; + } + let result = null; + try { + result = provider.getProfileStats({ db, userId, plugin, manifest }); + } catch (error) { + console.error("Failed to load plugin profile stats", error); + return null; + } + const stats = Array.isArray(result?.stats) ? result.stats : []; + return { + id: manifest.pluginId || plugin.id, + title: manifest.profile.title || manifest.pluginName || plugin.name, + emptyMessage: + manifest.profile.emptyMessage || "No stats available yet.", + stats + }; +} + +function buildLeaderboardSection({ plugin, manifest, provider, limit }) { + if (!manifest.leaderboards || typeof provider.getLeaderboards !== "function") { + return null; + } + let result = null; + try { + result = provider.getLeaderboards({ db, limit, plugin, manifest }); + } catch (error) { + console.error("Failed to load plugin leaderboards", error); + return null; + } + const boards = Array.isArray(result?.boards) ? result.boards : []; + return { + id: manifest.pluginId || plugin.id, + title: + manifest.leaderboards.title || manifest.pluginName || plugin.name, + emptyMessage: + manifest.leaderboards.emptyMessage || "No data available yet.", + boards + }; +} + +function getPluginProfileStats(userId) { + if (!userId) { + return []; + } + return loadStatProviders() + .map((entry) => buildProfileSection({ ...entry, userId })) + .filter(Boolean); +} + +function getPluginLeaderboards(limit = 10) { + return loadStatProviders() + .map((entry) => buildLeaderboardSection({ ...entry, limit })) + .filter(Boolean); +} + +module.exports = { + getPluginProfileStats, + getPluginLeaderboards +}; diff --git a/src/services/plugins.js b/src/services/plugins.js new file mode 100644 index 0000000..18d8622 --- /dev/null +++ b/src/services/plugins.js @@ -0,0 +1,229 @@ +const path = require("path"); +const fs = require("fs"); +const { spawnSync } = require("child_process"); +const { db } = require("./db"); + +const pluginsDir = path.join(__dirname, "..", "..", "plugins"); + +function readJson(filePath) { + const raw = fs.readFileSync(filePath, "utf8"); + return JSON.parse(raw); +} + +function scanPluginDirectories() { + if (!fs.existsSync(pluginsDir)) { + return []; + } + const entries = fs.readdirSync(pluginsDir, { withFileTypes: true }); + const plugins = []; + for (const entry of entries) { + if (!entry.isDirectory()) { + continue; + } + const manifestPath = path.join(pluginsDir, entry.name, "plugin.json"); + if (!fs.existsSync(manifestPath)) { + continue; + } + try { + const manifest = readJson(manifestPath); + plugins.push({ + id: manifest.id, + name: manifest.name || manifest.id, + version: manifest.version || "0.0.0", + description: manifest.description || "", + main: manifest.main || "index.js", + dir: path.join(pluginsDir, entry.name) + }); + } catch { + continue; + } + } + return plugins; +} + +function syncPluginRegistry() { + const now = Date.now(); + const plugins = scanPluginDirectories(); + const insert = db.prepare( + "INSERT INTO plugins (id, name, version, enabled, source, path, installed_at, updated_at) " + + "VALUES (?, ?, ?, 1, ?, ?, ?, ?) " + + "ON CONFLICT(id) DO UPDATE SET name = excluded.name, version = excluded.version, path = excluded.path, updated_at = excluded.updated_at" + ); + + for (const plugin of plugins) { + insert.run( + plugin.id, + plugin.name, + plugin.version, + "local", + plugin.dir, + now, + now + ); + } + return plugins; +} + +function getPlugins() { + return db.prepare("SELECT * FROM plugins ORDER BY name").all(); +} + +function setPluginEnabled(id, enabled) { + db.prepare("UPDATE plugins SET enabled = ?, updated_at = ? WHERE id = ?").run( + enabled ? 1 : 0, + Date.now(), + id + ); +} + +function removePlugin(id) { + db.prepare("DELETE FROM plugins WHERE id = ?").run(id); + db.prepare("DELETE FROM plugin_settings WHERE plugin_id = ?").run(id); +} + +function clearPluginCache(pluginPath) { + for (const key of Object.keys(require.cache)) { + if (key.startsWith(pluginPath)) { + delete require.cache[key]; + } + } +} + +function loadEnabled({ + app, + discordClient, + twitchClient, + youtubeClient, + settings, + web, + commandRouter +}) { + const installed = scanPluginDirectories(); + syncPluginRegistry(); + const enabled = new Set( + db + .prepare("SELECT id FROM plugins WHERE enabled = 1") + .all() + .map((row) => row.id) + ); + + for (const plugin of installed) { + if (!enabled.has(plugin.id)) { + continue; + } + const mainPath = path.join(plugin.dir, plugin.main); + if (!fs.existsSync(mainPath)) { + continue; + } + clearPluginCache(plugin.dir); + try { + const mod = require(mainPath); + if (mod && typeof mod.init === "function") { + mod.init({ + app, + discordClient, + twitchClient, + youtubeClient, + settings, + web, + db, + plugin, + commandRouter + }); + } + } catch (error) { + console.error(`Plugin ${plugin.id} failed to load`, error); + } + } +} + +function installFromGit(url, targetFolder) { + if (!fs.existsSync(pluginsDir)) { + fs.mkdirSync(pluginsDir, { recursive: true }); + } + const folderName = + targetFolder || + url + .split("/") + .pop() + .replace(/\.git$/i, "") + .replace(/[^a-zA-Z0-9-_]/g, ""); + const targetPath = path.join(pluginsDir, folderName); + if (fs.existsSync(targetPath)) { + throw new Error("Plugin folder already exists."); + } + const result = spawnSync("git", ["clone", url, targetPath], { + stdio: "pipe", + encoding: "utf8" + }); + if (result.status !== 0) { + throw new Error(result.stderr || "Git clone failed."); + } + return targetPath; +} + +function updatePluginFromGit(pluginPath) { + const result = spawnSync("git", ["-C", pluginPath, "pull"], { + stdio: "pipe", + encoding: "utf8" + }); + if (result.status !== 0) { + throw new Error(result.stderr || "Git pull failed."); + } + return result.stdout; +} + +function createLocalPlugin({ id, name, description }) { + const safeId = id.replace(/[^a-zA-Z0-9-_]/g, ""); + if (!safeId) { + throw new Error("Invalid plugin id."); + } + const pluginDir = path.join(pluginsDir, safeId); + if (fs.existsSync(pluginDir)) { + throw new Error("Plugin already exists."); + } + fs.mkdirSync(pluginDir, { recursive: true }); + const safeName = name || safeId; + const manifest = { + id: safeId, + name: safeName, + version: "0.1.0", + description: description || "", + main: "index.js" + }; + const manifestPath = path.join(pluginDir, "plugin.json"); + fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2), "utf8"); + const mainPath = path.join(pluginDir, "index.js"); + const escapedName = safeName.replace(/\\/g, "\\\\").replace(/"/g, '\\"'); + const starter = `module.exports = { + id: "${safeId}", + init({ web, commandRouter }) { + const router = web.createRouter(); + router.get("/", (req, res) => { + res.render("plugin-page", { + title: "${escapedName}", + content: "Edit this plugin to add features." + }); + }); + web.mount("/plugins/${safeId}", router, { + label: "${escapedName}", + role: "admin" + }); + } +};\n`; + fs.writeFileSync(mainPath, starter, "utf8"); + return pluginDir; +} + +module.exports = { + pluginsDir, + scanPluginDirectories, + syncPluginRegistry, + getPlugins, + setPluginEnabled, + removePlugin, + loadEnabled, + installFromGit, + updatePluginFromGit, + createLocalPlugin +}; diff --git a/src/services/rbac.js b/src/services/rbac.js new file mode 100644 index 0000000..ea11c7f --- /dev/null +++ b/src/services/rbac.js @@ -0,0 +1,38 @@ +const { getSetting } = require("./settings"); + +function parseRoleList(value) { + return (value || "") + .toString() + .split(/[,\s]+/) + .map((item) => item.trim()) + .filter(Boolean); +} + +function getRoleFlags(roles = []) { + const adminRoleIds = parseRoleList(getSetting("discord_admin_role_id")); + const modRoleIds = parseRoleList(getSetting("discord_mod_role_id")); + const isAdmin = roles.some((role) => adminRoleIds.includes(role)); + const isMod = roles.some((role) => modRoleIds.includes(role)); + return { isAdmin, isMod }; +} + +function hasAccess(user, requiredRole) { + if (!requiredRole || requiredRole === "public") { + return true; + } + if (!user) { + return false; + } + if (requiredRole === "admin") { + return Boolean(user.isAdmin); + } + if (requiredRole === "mod") { + return Boolean(user.isAdmin || user.isMod); + } + return false; +} + +module.exports = { + getRoleFlags, + hasAccess +}; diff --git a/src/services/settings.js b/src/services/settings.js new file mode 100644 index 0000000..c1f9a74 --- /dev/null +++ b/src/services/settings.js @@ -0,0 +1,138 @@ +const { db } = require("./db"); +const { envBoolean, envNumber, envString } = require("./config"); + +const ENV_DEFAULTS = { + discord_client_id: "DISCORD_CLIENT_ID", + discord_client_secret: "DISCORD_CLIENT_SECRET", + discord_bot_token: "DISCORD_BOT_TOKEN", + discord_guild_id: "DISCORD_GUILD_ID", + discord_admin_role_id: "DISCORD_ADMIN_ROLE_ID", + discord_mod_role_id: "DISCORD_MOD_ROLE_ID", + discord_redirect_uri: "DISCORD_REDIRECT_URI", + twitch_client_id: "TWITCH_CLIENT_ID", + twitch_client_secret: "TWITCH_CLIENT_SECRET", + twitch_redirect_uri: "TWITCH_REDIRECT_URI", + twitch_bot_username: "TWITCH_BOT_USERNAME", + twitch_bot_oauth: "TWITCH_BOT_OAUTH", + twitch_channels: "TWITCH_CHANNELS", + youtube_client_id: "YOUTUBE_CLIENT_ID", + youtube_client_secret: "YOUTUBE_CLIENT_SECRET", + youtube_redirect_uri: "YOUTUBE_REDIRECT_URI", + youtube_bot_refresh_token: "YOUTUBE_BOT_REFRESH_TOKEN", + youtube_bot_channel_id: "YOUTUBE_BOT_CHANNEL_ID" +}; + +function getSetting(key, fallback = null) { + const row = db.prepare("SELECT value FROM settings WHERE key = ?").get(key); + if (!row) { + return getEnvDefault(key, fallback); + } + try { + return JSON.parse(row.value); + } catch { + return row.value; + } +} + +function setSetting(key, value) { + const now = Date.now(); + db.prepare( + "INSERT INTO settings (key, value, updated_at) VALUES (?, ?, ?) " + + "ON CONFLICT(key) DO UPDATE SET value = excluded.value, updated_at = excluded.updated_at" + ).run(key, JSON.stringify(value), now); +} + +function getAllSettings() { + const rows = db.prepare("SELECT key, value FROM settings").all(); + const settings = {}; + for (const row of rows) { + try { + settings[row.key] = JSON.parse(row.value); + } catch { + settings[row.key] = row.value; + } + } + return settings; +} + +function ensureDefaults() { + const defaults = { + site_title: "Lumi Bot", + command_prefix: envString("COMMAND_PREFIX", "!"), + discord_client_id: envString("DISCORD_CLIENT_ID", ""), + discord_client_secret: envString("DISCORD_CLIENT_SECRET", ""), + discord_bot_token: envString("DISCORD_BOT_TOKEN", ""), + discord_guild_id: envString("DISCORD_GUILD_ID", ""), + discord_admin_role_id: envString("DISCORD_ADMIN_ROLE_ID", ""), + discord_mod_role_id: envString("DISCORD_MOD_ROLE_ID", ""), + discord_redirect_uri: envString("DISCORD_REDIRECT_URI", ""), + auto_update_enabled: envBoolean("AUTO_UPDATE_ENABLED", false), + auto_update_interval_minutes: envNumber("AUTO_UPDATE_INTERVAL_MINUTES", 60), + git_remote: envString("GIT_REMOTE", "origin"), + git_branch: envString("GIT_BRANCH", "main"), + bot_avatar_url: null, + platform_discord_enabled: envBoolean("PLATFORM_DISCORD_ENABLED", true), + platform_kick_enabled: envBoolean("PLATFORM_KICK_ENABLED", false), + platform_twitch_enabled: envBoolean("PLATFORM_TWITCH_ENABLED", true), + platform_youtube_enabled: envBoolean("PLATFORM_YOUTUBE_ENABLED", false), + twitch_client_id: envString("TWITCH_CLIENT_ID", ""), + twitch_client_secret: envString("TWITCH_CLIENT_SECRET", ""), + twitch_redirect_uri: envString("TWITCH_REDIRECT_URI", ""), + twitch_bot_username: envString("TWITCH_BOT_USERNAME", ""), + twitch_bot_oauth: envString("TWITCH_BOT_OAUTH", ""), + twitch_channels: envString("TWITCH_CHANNELS", ""), + youtube_client_id: envString("YOUTUBE_CLIENT_ID", ""), + youtube_client_secret: envString("YOUTUBE_CLIENT_SECRET", ""), + youtube_redirect_uri: envString("YOUTUBE_REDIRECT_URI", ""), + youtube_bot_refresh_token: envString("YOUTUBE_BOT_REFRESH_TOKEN", ""), + youtube_bot_channel_id: envString("YOUTUBE_BOT_CHANNEL_ID", ""), + theme_light_bg_1: "#ffe5c4", + theme_light_bg_2: "#f4efe8", + theme_light_bg_3: "#e9f3f1", + theme_light_text: "#121518", + theme_light_text_muted: "#2c3137", + theme_light_accent: "#0f6a78", + theme_light_accent_alt: "#f4a340", + theme_light_danger: "#d66d5c", + theme_light_surface: "#ffffff", + theme_light_surface_2: "#fbf9f6", + theme_light_surface_3: "#f9f5ef", + theme_light_border: "#e3ddd6", + theme_dark_bg_1: "#1b1d1f", + theme_dark_bg_2: "#16181b", + theme_dark_bg_3: "#0f1113", + theme_dark_text: "#f2f0ec", + theme_dark_text_muted: "#c5bfb7", + theme_dark_accent: "#4fb6c2", + theme_dark_accent_alt: "#f1b765", + theme_dark_danger: "#e08173", + theme_dark_surface: "#232629", + theme_dark_surface_2: "#2b2f33", + theme_dark_surface_3: "#30353a", + theme_dark_border: "#34393d", + theme_role_public: "#ffffff", + theme_role_mod: "#2cb678", + theme_role_admin: "#e35678" + }; + + for (const [key, value] of Object.entries(defaults)) { + if (getSetting(key) === null) { + setSetting(key, value); + } + } +} + +function getEnvDefault(key, fallback) { + const envKey = ENV_DEFAULTS[key]; + if (!envKey) { + return fallback; + } + return envString(envKey, fallback); +} + +module.exports = { + getSetting, + setSetting, + getAllSettings, + ensureDefaults +}; diff --git a/src/services/stats.js b/src/services/stats.js new file mode 100644 index 0000000..aeb3089 --- /dev/null +++ b/src/services/stats.js @@ -0,0 +1,48 @@ +const { db } = require("./db"); + +function touchUserStats(userId) { + const now = Date.now(); + db.prepare( + "INSERT INTO stats (user_id, messages, commands, updated_at) VALUES (?, 0, 0, ?) " + + "ON CONFLICT(user_id) DO UPDATE SET updated_at = excluded.updated_at" + ).run(userId, now); +} + +function incrementMessages(userId) { + const now = Date.now(); + db.prepare( + "INSERT INTO stats (user_id, messages, commands, updated_at) VALUES (?, 1, 0, ?) " + + "ON CONFLICT(user_id) DO UPDATE SET messages = messages + 1, updated_at = excluded.updated_at" + ).run(userId, now); +} + +function incrementCommands(userId) { + const now = Date.now(); + db.prepare( + "INSERT INTO stats (user_id, messages, commands, updated_at) VALUES (?, 0, 1, ?) " + + "ON CONFLICT(user_id) DO UPDATE SET commands = commands + 1, updated_at = excluded.updated_at" + ).run(userId, now); +} + +function getLeaderboard(limit = 20) { + return db + .prepare( + "SELECT user_profiles.internal_username AS username, " + + "COALESCE(discord.avatar, twitch.avatar, youtube.avatar) AS avatar, " + + "stats.messages, stats.commands " + + "FROM stats " + + "JOIN user_profiles ON user_profiles.id = stats.user_id " + + "LEFT JOIN user_identities AS discord ON discord.user_id = user_profiles.id AND discord.provider = 'discord' " + + "LEFT JOIN user_identities AS twitch ON twitch.user_id = user_profiles.id AND twitch.provider = 'twitch' " + + "LEFT JOIN user_identities AS youtube ON youtube.user_id = user_profiles.id AND youtube.provider = 'youtube' " + + "ORDER BY stats.messages DESC LIMIT ?" + ) + .all(limit); +} + +module.exports = { + touchUserStats, + incrementMessages, + incrementCommands, + getLeaderboard +}; diff --git a/src/services/top.js b/src/services/top.js new file mode 100644 index 0000000..ce36ddd --- /dev/null +++ b/src/services/top.js @@ -0,0 +1,487 @@ +const { db } = require("./db"); +const { getSetting } = require("./settings"); +const { getEnabledPlatformIds } = require("./platforms"); +const { getPluginLeaderboards } = require("./plugin-stats"); + +const coreProviders = new Map(); +const coreOrder = []; +let coreRegistered = false; + +function registerTopProvider(provider) { + if (!provider || !provider.id) { + return; + } + const id = normalizeProviderId(provider.id); + if (!id) { + return; + } + const entry = { + id, + label: provider.label || id, + section: provider.section || "Community", + description: provider.description || "", + valueLabel: provider.valueLabel || "Total", + rowType: provider.rowType || "user", + aliases: Array.isArray(provider.aliases) ? provider.aliases : [], + order: Number.isFinite(provider.order) ? provider.order : coreOrder.length, + getRows: typeof provider.getRows === "function" ? provider.getRows : null + }; + if (!coreProviders.has(id)) { + coreOrder.push(id); + } + coreProviders.set(id, entry); +} + +function ensureCoreProviders() { + if (coreRegistered) { + return; + } + coreRegistered = true; + registerTopProvider({ + id: "messages", + label: "Top messages", + section: "Community Interaction", + valueLabel: "Messages", + description: "Users with the most messages.", + getRows: ({ limit }) => buildStatRows("messages", limit) + }); + registerTopProvider({ + id: "commands", + label: "Top commands", + section: "Community Interaction", + valueLabel: "Commands", + description: "Users who ran the most commands.", + getRows: ({ limit }) => buildStatRows("commands", limit) + }); + registerTopProvider({ + id: "modage", + label: "Top mod age", + section: "Moderation", + valueLabel: "Time", + description: "Moderators with the longest mod tenure.", + getRows: ({ limit }) => buildModAgeRows(limit) + }); + registerTopProvider({ + id: "coins", + label: "Top currency", + section: "Economy", + valueLabel: getCurrencyLabel(), + description: "Top balances from the currency framework.", + getRows: ({ limit }) => buildCurrencyRows(limit) + }); + registerTopProvider({ + id: "interactors", + label: "Top interactors", + section: "Expression Interaction", + valueLabel: "Interactions", + description: "Most interaction actions given.", + getRows: ({ limit }) => buildExpressionRows(limit, "given") + }); + registerTopProvider({ + id: "interactions_received", + label: "Top interactions received", + section: "Expression Interaction", + valueLabel: "Interactions", + description: "Most interaction actions received.", + getRows: ({ limit }) => buildExpressionRows(limit, "received") + }); + registerTopProvider({ + id: "commands_run", + label: "Top commands run", + section: "Commands", + valueLabel: "Runs", + rowType: "command", + description: "Most popular commands across platforms.", + getRows: ({ limit }) => buildCommandUsageRows(limit) + }); + registerTopProvider({ + id: "followage", + label: "Top followage", + section: "Platforms", + valueLabel: "Days", + description: "Longest follower durations.", + getRows: () => ({ + rows: [], + emptyMessage: "Followage tracking is not configured yet." + }) + }); + registerTopProvider({ + id: "watchtime", + label: "Top watchtime", + section: "Platforms", + valueLabel: "Hours", + description: "Most watch time recorded.", + getRows: () => ({ + rows: [], + emptyMessage: "Watchtime tracking is not configured yet." + }) + }); + registerTopProvider({ + id: "games", + label: "Top games", + section: "Games", + valueLabel: "Mentions", + rowType: "game", + description: "Most popular games tracked by plugins.", + getRows: () => ({ + rows: [], + emptyMessage: "Game tracking is not configured yet." + }) + }); +} + +function getTopProviders({ includePlugins = true, limit = 10 } = {}) { + ensureCoreProviders(); + const providers = coreOrder.map((id) => coreProviders.get(id)).filter(Boolean); + if (!includePlugins) { + return providers; + } + const pluginProviders = buildPluginProviders({ limit }); + return mergeProviders(providers, pluginProviders); +} + +function getTopBoards({ limit = 10 } = {}) { + const providers = getTopProviders({ includePlugins: true, limit }); + return providers.map((provider) => { + if (provider.getRows) { + const result = provider.getRows({ db, limit, settings: { getSetting } }); + return normalizeProviderResult(provider, result); + } + return normalizeProviderResult(provider, { + rows: provider.rows || [], + rowType: provider.rowType, + valueLabel: provider.valueLabel, + emptyMessage: provider.emptyMessage + }); + }); +} + +function getLeaderboardSections({ limit = 10 } = {}) { + const boards = getTopBoards({ limit }); + const sections = []; + const sectionMap = new Map(); + boards.forEach((board) => { + const title = board.section || "Leaderboards"; + if (!sectionMap.has(title)) { + sectionMap.set(title, { title, boards: [] }); + sections.push(sectionMap.get(title)); + } + sectionMap.get(title).boards.push(board); + }); + return sections; +} + +function getTopCommandOptions() { + return getTopProviders({ includePlugins: true }).map((provider) => ({ + id: provider.id, + label: provider.label, + description: provider.description || "", + aliases: provider.aliases || [] + })); +} + +function registerTopCommand({ commandRouter, settings }) { + if (!commandRouter) { + return; + } + ensureCoreProviders(); + const platforms = getEnabledPlatformIds(); + commandRouter.registerCommands("core", [ + { + id: "top", + triggers: ["top"], + platforms, + handler: (ctx) => handleTopCommand({ ctx, settings }) + } + ]); +} + +async function handleTopCommand({ ctx, settings }) { + const prefix = settings.getSetting("command_prefix", "!"); + const rawId = (ctx.args[0] || "").trim().toLowerCase(); + if (!rawId || ["help", "list"].includes(rawId)) { + await ctx.reply(buildTopHelp(prefix)); + return true; + } + const board = findTopBoard(rawId, 5); + if (!board) { + await ctx.reply(buildTopHelp(prefix)); + return true; + } + if (!board.rows.length) { + await ctx.reply(board.emptyMessage || "No data recorded yet."); + return true; + } + const list = board.rows + .slice(0, 5) + .map((entry, index) => { + const label = entry.username || entry.label || entry.name || "Unknown"; + return `${index + 1}) ${label} (${entry.value})`; + }) + .join(" | "); + await ctx.reply(`${board.label}: ${list}`); + return true; +} + +function findTopBoard(id, limit) { + const boards = getTopBoards({ limit }); + const normalized = id.toLowerCase(); + return boards.find((board) => { + if (board.id === normalized) { + return true; + } + return Array.isArray(board.aliases) + ? board.aliases.map((alias) => alias.toLowerCase()).includes(normalized) + : false; + }); +} + +function buildTopHelp(prefix) { + const options = getTopCommandOptions().map((entry) => entry.id); + if (!options.length) { + return "No top categories are available yet."; + } + return `Usage: ${prefix}top . Available: ${options.join(", ")}`; +} + +function mergeProviders(coreList, pluginList) { + const merged = coreList.slice(); + const indexMap = new Map(merged.map((provider, index) => [provider.id, index])); + for (const provider of pluginList) { + const existingIndex = indexMap.get(provider.id); + if (existingIndex !== undefined) { + if (provider.override) { + merged[existingIndex] = provider; + } + continue; + } + indexMap.set(provider.id, merged.length); + merged.push(provider); + } + return merged; +} + +function normalizeProviderResult(provider, result) { + const rows = normalizeRows(result?.rows || []); + return { + id: provider.id, + label: provider.label, + section: provider.section, + rowType: result?.rowType || provider.rowType, + valueLabel: result?.valueLabel || provider.valueLabel || "Total", + rows, + emptyMessage: + result?.emptyMessage || provider.emptyMessage || "No data recorded yet.", + aliases: result?.aliases || provider.aliases || [] + }; +} + +function normalizeRows(rows) { + return (rows || []).map((row) => { + const value = row.value ?? row.total ?? row.count ?? 0; + return { + username: row.username || row.user || row.label || row.name || null, + label: row.label || row.username || row.name || null, + value: formatNumber(value), + rawValue: Number(value) || 0 + }; + }); +} + +function buildPluginProviders({ limit }) { + const pluginSections = getPluginLeaderboards(limit); + const providers = []; + pluginSections.forEach((section) => { + const sectionId = slugify(section.id || section.title || "plugin"); + const sectionLabel = section.title || "Plugin"; + (section.boards || []).forEach((board) => { + const boardKey = slugify(board.id || board.title || "board"); + const topId = board.topId ? normalizeProviderId(board.topId) : ""; + const id = topId || `${sectionId}-${boardKey}`; + const rows = board.rows || []; + const aliases = Array.isArray(board.topAliases) + ? board.topAliases.map(normalizeProviderId).filter(Boolean) + : Array.isArray(board.aliases) + ? board.aliases.map(normalizeProviderId).filter(Boolean) + : []; + providers.push({ + id, + label: board.title || boardKey, + section: sectionLabel, + description: board.description || "", + rowType: board.rowType || "user", + valueLabel: board.valueLabel || "Total", + rows, + emptyMessage: board.emptyMessage || section.emptyMessage || "No data yet.", + aliases, + override: Boolean(board.topOverride) + }); + }); + }); + return providers; +} + +function slugify(value) { + return (value || "") + .toString() + .toLowerCase() + .replace(/[^a-z0-9]+/g, "-") + .replace(/^-+|-+$/g, "") + .trim(); +} + +function normalizeProviderId(value) { + return (value || "") + .toString() + .trim() + .toLowerCase() + .replace(/[^a-z0-9_-]+/g, "-") + .replace(/^-+|-+$/g, ""); +} + +function buildStatRows(column, limit) { + const rows = db + .prepare( + `SELECT user_profiles.internal_username AS username, stats.${column} AS value ` + + "FROM stats " + + "JOIN user_profiles ON user_profiles.id = stats.user_id " + + `ORDER BY stats.${column} DESC LIMIT ?` + ) + .all(limit); + return { rows }; +} + +function buildModAgeRows(limit) { + if (!tableExists("mod_role_periods")) { + return { rows: [], emptyMessage: "No moderator history recorded yet." }; + } + const now = Date.now(); + const rows = db + .prepare( + "SELECT mod_role_periods.user_id AS user_id, " + + "SUM(CASE WHEN mod_role_periods.end_at IS NULL THEN ? - mod_role_periods.start_at ELSE mod_role_periods.end_at - mod_role_periods.start_at END) AS total_ms " + + "FROM mod_role_periods " + + "GROUP BY mod_role_periods.user_id " + + "ORDER BY total_ms DESC LIMIT ?" + ) + .all(now, limit); + const mapped = rows + .map((row) => { + const profile = db + .prepare("SELECT internal_username FROM user_profiles WHERE id = ?") + .get(row.user_id); + return { + username: profile?.internal_username || row.user_id, + value: formatDuration(row.total_ms || 0) + }; + }) + .filter((row) => row.username); + return { rows: mapped, valueLabel: "Time" }; +} + +function buildExpressionRows(limit, type) { + if (!tableExists("expression_user_stats")) { + return { rows: [], emptyMessage: "No interactions recorded yet." }; + } + const column = type === "received" ? "received_count" : "given_count"; + const rows = db + .prepare( + `SELECT user_profiles.internal_username AS username, SUM(expression_user_stats.${column}) AS value ` + + "FROM expression_user_stats " + + "JOIN user_profiles ON user_profiles.id = expression_user_stats.user_id " + + "GROUP BY expression_user_stats.user_id " + + `ORDER BY value DESC LIMIT ?` + ) + .all(limit); + return { rows }; +} + +function buildCommandUsageRows(limit) { + if (!tableExists("command_usage")) { + return { rows: [], emptyMessage: "No command usage recorded yet." }; + } + const rows = db + .prepare("SELECT command_id, count FROM command_usage ORDER BY count DESC LIMIT ?") + .all(limit) + .map((row) => ({ + label: formatCommandId(row.command_id), + value: row.count + })); + return { rows, rowType: "command" }; +} + +function buildCurrencyRows(limit) { + if (!tableExists("echonomy_accounts")) { + return { rows: [], emptyMessage: "Currency framework not active." }; + } + const rows = db + .prepare( + "SELECT user_profiles.internal_username AS username, echonomy_accounts.balance AS value " + + "FROM echonomy_accounts " + + "JOIN user_profiles ON user_profiles.id = echonomy_accounts.user_id " + + "ORDER BY echonomy_accounts.balance DESC LIMIT ?" + ) + .all(limit); + return { rows, valueLabel: getCurrencyLabel() }; +} + +function formatCommandId(commandId) { + if (!commandId) { + return "Unknown"; + } + if (commandId.startsWith("custom:")) { + return `!${commandId.slice(7)}`; + } + return commandId; +} + +function getCurrencyLabel() { + const plural = getPluginSetting("echonomy-framework", "currency_name_plural"); + const singular = getPluginSetting("echonomy-framework", "currency_name"); + return plural || singular || "Coins"; +} + +function getPluginSetting(pluginId, key) { + const row = db + .prepare("SELECT value FROM plugin_settings WHERE plugin_id = ? AND key = ?") + .get(pluginId, key); + return row?.value ? row.value.toString() : null; +} + +function tableExists(name) { + const row = db + .prepare("SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?") + .get(name); + return Boolean(row); +} + +function formatNumber(value) { + const number = Number(value); + if (!Number.isFinite(number)) { + return value ?? "0"; + } + return number.toLocaleString("en-US"); +} + +function formatDuration(totalMs) { + const totalSeconds = Math.max(0, Math.floor(totalMs / 1000)); + const days = Math.floor(totalSeconds / 86400); + const hours = Math.floor((totalSeconds % 86400) / 3600); + const minutes = Math.floor((totalSeconds % 3600) / 60); + if (days > 0) { + return `${days}d ${hours}h`; + } + if (hours > 0) { + return `${hours}h ${minutes}m`; + } + return `${minutes}m`; +} + +module.exports = { + registerTopProvider, + getTopProviders, + getTopBoards, + getLeaderboardSections, + getTopCommandOptions, + registerTopCommand +}; diff --git a/src/services/twitch.js b/src/services/twitch.js new file mode 100644 index 0000000..d623991 --- /dev/null +++ b/src/services/twitch.js @@ -0,0 +1,95 @@ +const tmi = require("tmi.js"); +const { getSetting } = require("./settings"); +const { incrementMessages } = require("./stats"); +const { ensureUserForIdentity } = require("./users"); + +let client = null; + +function parseChannels(raw) { + return (raw || "") + .split(/[,\s]+/) + .map((entry) => entry.trim()) + .filter(Boolean) + .map((entry) => (entry.startsWith("#") ? entry : `#${entry}`)); +} + +async function startTwitchBot({ commandRouter } = {}) { + const username = getSetting("twitch_bot_username"); + const oauth = getSetting("twitch_bot_oauth"); + const channels = parseChannels(getSetting("twitch_channels")); + if (!username || !oauth || !channels.length) { + return null; + } + + const password = oauth.startsWith("oauth:") ? oauth : `oauth:${oauth}`; + client = new tmi.Client({ + options: { debug: false }, + identity: { + username, + password + }, + channels + }); + + client.on("connected", (address, port) => { + console.log(`Twitch bot connected to ${address}:${port}`); + }); + + client.on("message", async (channel, tags, message, self) => { + if (self) { + return; + } + const userId = tags["user-id"]; + if (!userId) { + return; + } + const displayName = tags["display-name"] || tags.username; + const profile = ensureUserForIdentity({ + provider: "twitch", + providerUserId: userId, + displayName + }); + incrementMessages(profile.id); + + if (commandRouter) { + await commandRouter.handleMessage({ + platform: "twitch", + raw: message, + user: profile, + platformUser: { + id: userId, + displayName, + username: tags.username + }, + meta: { channel, tags, client }, + reply: async (content) => { + try { + await client.say(channel, content); + } catch (error) { + console.error("Twitch command reply failed", error); + } + } + }); + } + }); + + await client.connect(); + return client; +} + +async function stopTwitchBot() { + if (client) { + await client.disconnect(); + client = null; + } +} + +function getClient() { + return client; +} + +module.exports = { + startTwitchBot, + stopTwitchBot, + getClient +}; diff --git a/src/services/update-manager.js b/src/services/update-manager.js new file mode 100644 index 0000000..d98f751 --- /dev/null +++ b/src/services/update-manager.js @@ -0,0 +1,455 @@ +const fs = require("fs"); +const path = require("path"); +const os = require("os"); +const crypto = require("crypto"); +let AdmZip = null; +try { + AdmZip = require("adm-zip"); +} catch { + AdmZip = null; +} +const { db } = require("./db"); + +const repoRoot = path.join(__dirname, "..", ".."); +const dataDir = path.join(repoRoot, "data"); +const snapshotsDir = path.join(dataDir, "snapshots"); +const indexPath = path.join(snapshotsDir, "index.json"); +const maxSnapshots = 20; + +function ensureSnapshotsDir() { + fs.mkdirSync(snapshotsDir, { recursive: true }); +} + +function loadIndex() { + if (!fs.existsSync(indexPath)) { + return []; + } + try { + const raw = fs.readFileSync(indexPath, "utf8"); + const data = JSON.parse(raw); + return Array.isArray(data) ? data : []; + } catch { + return []; + } +} + +function saveIndex(entries) { + ensureSnapshotsDir(); + fs.writeFileSync(indexPath, JSON.stringify(entries, null, 2), "utf8"); +} + +async function backupDatabase(targetPath) { + if (typeof db.backup === "function") { + await db.backup(targetPath); + return; + } + const source = path.join(dataDir, "app.db"); + if (fs.existsSync(source)) { + fs.copyFileSync(source, targetPath); + } +} + +async function createSnapshot({ type, pluginId }) { + ensureSnapshotsDir(); + const id = `${Date.now()}-${crypto.randomUUID()}`; + const snapshotPath = path.join(snapshotsDir, id); + fs.mkdirSync(snapshotPath, { recursive: true }); + + const dbPath = path.join(snapshotPath, "app.db"); + await backupDatabase(dbPath); + + let pluginExisted = false; + let pluginZip = null; + if (type === "bot") { + const coreZip = path.join(snapshotPath, "core.zip"); + zipCore(coreZip); + } + + if (type === "plugin" && pluginId) { + const pluginDir = path.join(repoRoot, "plugins", pluginId); + pluginExisted = fs.existsSync(pluginDir); + if (pluginExisted) { + pluginZip = path.join(snapshotPath, "plugin.zip"); + zipFolder(pluginDir, pluginZip, { base: pluginDir }); + } + } + + return { id, type, pluginId, pluginExisted, pluginZip, snapshotPath }; +} + +function finalizeSnapshot(snapshot) { + const entries = loadIndex(); + const record = { + id: snapshot.id, + type: snapshot.type, + pluginId: snapshot.pluginId || null, + pluginExisted: snapshot.pluginExisted || false, + createdAt: Date.now(), + status: "available", + path: snapshot.snapshotPath + }; + entries.push(record); + saveIndex(pruneEntries(entries)); + return record; +} + +function discardSnapshot(snapshot) { + if (!snapshot?.snapshotPath) { + return; + } + try { + fs.rmSync(snapshot.snapshotPath, { recursive: true, force: true }); + } catch { + // Ignore cleanup failures. + } +} + +function pruneEntries(entries) { + const available = entries + .filter((entry) => entry.status === "available") + .sort((a, b) => b.createdAt - a.createdAt); + const keep = new Set(available.slice(0, maxSnapshots).map((entry) => entry.id)); + const pruned = entries.filter((entry) => entry.status !== "available" || keep.has(entry.id)); + + for (const entry of entries) { + if (entry.status === "available" && !keep.has(entry.id)) { + try { + fs.rmSync(entry.path, { recursive: true, force: true }); + } catch { + // Ignore cleanup failures. + } + } + } + + return pruned; +} + +function listSnapshots() { + return loadIndex() + .filter((entry) => entry.status === "available") + .sort((a, b) => b.createdAt - a.createdAt); +} + +function markSnapshotRolledBack(id) { + const entries = loadIndex(); + const entry = entries.find((item) => item.id === id); + if (!entry) { + return null; + } + entry.status = "rolled_back"; + entry.rolledBackAt = Date.now(); + saveIndex(entries); + return entry; +} + +function extractZip(zipPath, targetDir) { + if (!AdmZip) { + throw new Error("adm-zip is not installed. Run npm install."); + } + const zip = new AdmZip(zipPath); + zip.extractAllTo(targetDir, true); +} + +function resolveZipRoot(extractedDir) { + const packagePath = path.join(extractedDir, "package.json"); + if (fs.existsSync(packagePath)) { + return extractedDir; + } + const entries = fs.readdirSync(extractedDir, { withFileTypes: true }); + const dirs = entries.filter((entry) => entry.isDirectory()); + if (dirs.length === 1) { + const candidate = path.join(extractedDir, dirs[0].name); + if (fs.existsSync(path.join(candidate, "package.json"))) { + return candidate; + } + } + return extractedDir; +} + +function resolvePatchRoot(extractedDir) { + const entries = fs.readdirSync(extractedDir, { withFileTypes: true }); + const dirs = entries.filter((entry) => entry.isDirectory()); + const files = entries.filter((entry) => entry.isFile()); + if (files.length > 0) { + return extractedDir; + } + if (dirs.length === 1) { + return path.join(extractedDir, dirs[0].name); + } + return extractedDir; +} + +function resolvePluginRoot(extractedDir) { + const pluginPath = path.join(extractedDir, "plugin.json"); + if (fs.existsSync(pluginPath)) { + return extractedDir; + } + const entries = fs.readdirSync(extractedDir, { withFileTypes: true }); + const dirs = entries.filter((entry) => entry.isDirectory()); + if (dirs.length === 1) { + const candidate = path.join(extractedDir, dirs[0].name); + if (fs.existsSync(path.join(candidate, "plugin.json"))) { + return candidate; + } + } + return extractedDir; +} + +function verifyBotPackage(rootPath) { + const required = [ + path.join(rootPath, "package.json"), + path.join(rootPath, "safe-mode.js"), + path.join(rootPath, "src", "main.js"), + path.join(rootPath, "src", "web", "server.js") + ]; + for (const filePath of required) { + if (!fs.existsSync(filePath)) { + throw new Error(`Missing required file: ${path.relative(rootPath, filePath)}`); + } + } + JSON.parse(fs.readFileSync(required[0], "utf8")); +} + +function verifyPatchPackage(rootPath) { + if (!hasAnyFiles(rootPath)) { + throw new Error("Patch archive is empty."); + } +} + +function verifyPluginPackage(rootPath) { + const pluginPath = path.join(rootPath, "plugin.json"); + if (!fs.existsSync(pluginPath)) { + throw new Error("plugin.json not found in plugin package."); + } + const manifest = JSON.parse(fs.readFileSync(pluginPath, "utf8")); + if (!manifest.id) { + throw new Error("plugin.json must include an id."); + } + const mainFile = manifest.main || "index.js"; + const mainPath = path.join(rootPath, mainFile); + if (!fs.existsSync(mainPath)) { + throw new Error(`Plugin entry ${mainFile} not found.`); + } + return manifest; +} + +function zipCore(destination) { + if (!AdmZip) { + throw new Error("adm-zip is not installed. Run npm install."); + } + const zip = new AdmZip(); + addFolder(zip, repoRoot, repoRoot, new Set([".git", "node_modules", "data", "plugins"])); + zip.writeZip(destination); +} + +function zipFolder(source, destination, options) { + if (!AdmZip) { + throw new Error("adm-zip is not installed. Run npm install."); + } + const zip = new AdmZip(); + const base = options?.base || source; + addFolder(zip, source, base, new Set(["node_modules"])); + zip.writeZip(destination); +} + +function addFolder(zip, folderPath, basePath, ignore) { + const entries = fs.readdirSync(folderPath, { withFileTypes: true }); + for (const entry of entries) { + const fullPath = path.join(folderPath, entry.name); + const relPath = path.relative(basePath, fullPath); + const topLevel = relPath.split(path.sep)[0]; + if (ignore.has(topLevel)) { + continue; + } + if (entry.isDirectory()) { + addFolder(zip, fullPath, basePath, ignore); + } else if (entry.isFile()) { + zip.addLocalFile(fullPath, path.dirname(relPath)); + } + } +} + +function resetCoreFiles() { + const ignore = new Set([".git", "node_modules", "data", "plugins"]); + const entries = fs.readdirSync(repoRoot, { withFileTypes: true }); + for (const entry of entries) { + if (ignore.has(entry.name)) { + continue; + } + const fullPath = path.join(repoRoot, entry.name); + fs.rmSync(fullPath, { recursive: true, force: true }); + } +} + +function copyDirectory(source, target, ignore) { + const entries = fs.readdirSync(source, { withFileTypes: true }); + for (const entry of entries) { + if (ignore.has(entry.name)) { + continue; + } + const srcPath = path.join(source, entry.name); + const destPath = path.join(target, entry.name); + if (entry.isDirectory()) { + fs.mkdirSync(destPath, { recursive: true }); + copyDirectory(srcPath, destPath, ignore); + } else if (entry.isFile()) { + fs.copyFileSync(srcPath, destPath); + } + } +} + +function applyCoreUpdate(rootPath) { + resetCoreFiles(); + copyDirectory( + rootPath, + repoRoot, + new Set([".git", "node_modules", "data", "plugins"]) + ); +} + +function applyCorePatch(rootPath) { + copyDirectory( + rootPath, + repoRoot, + new Set([".git", "node_modules", "data", "plugins"]) + ); +} + +function hasAnyFiles(rootPath) { + const entries = fs.readdirSync(rootPath, { withFileTypes: true }); + for (const entry of entries) { + if (entry.isFile()) { + return true; + } + if (entry.isDirectory()) { + if (hasAnyFiles(path.join(rootPath, entry.name))) { + return true; + } + } + } + return false; +} + +function applyPluginFiles(rootPath, pluginId) { + const pluginsDir = path.join(repoRoot, "plugins"); + const targetDir = path.join(pluginsDir, pluginId); + fs.rmSync(targetDir, { recursive: true, force: true }); + fs.mkdirSync(pluginsDir, { recursive: true }); + fs.mkdirSync(targetDir, { recursive: true }); + copyDirectory(rootPath, targetDir, new Set(["node_modules"])); +} + +async function applyBotUpdate(zipPath, options = {}) { + const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "lumi-update-")); + try { + extractZip(zipPath, tempDir); + const mode = options.mode === "patch" ? "patch" : "full"; + const rootPath = + mode === "patch" ? resolvePatchRoot(tempDir) : resolveZipRoot(tempDir); + if (mode === "patch") { + verifyPatchPackage(rootPath); + } else { + verifyBotPackage(rootPath); + } + + const snapshot = await createSnapshot({ type: "bot" }); + try { + if (mode === "patch") { + applyCorePatch(rootPath); + } else { + applyCoreUpdate(rootPath); + } + return finalizeSnapshot(snapshot); + } catch (error) { + discardSnapshot(snapshot); + throw error; + } + } finally { + fs.rmSync(tempDir, { recursive: true, force: true }); + } +} + +async function applyPluginUpdate(zipPath) { + const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "lumi-plugin-")); + try { + extractZip(zipPath, tempDir); + const rootPath = resolvePluginRoot(tempDir); + const manifest = verifyPluginPackage(rootPath); + + const snapshot = await createSnapshot({ type: "plugin", pluginId: manifest.id }); + try { + applyPluginFiles(rootPath, manifest.id); + return finalizeSnapshot(snapshot); + } catch (error) { + discardSnapshot(snapshot); + throw error; + } + } finally { + fs.rmSync(tempDir, { recursive: true, force: true }); + } +} + +function restoreDatabase(snapshotPath) { + const source = path.join(snapshotPath, "app.db"); + const target = path.join(dataDir, "app.db"); + if (!fs.existsSync(source)) { + throw new Error("Snapshot database not found."); + } + fs.copyFileSync(source, target); + const wal = path.join(dataDir, "app.db-wal"); + const shm = path.join(dataDir, "app.db-shm"); + fs.rmSync(wal, { force: true }); + fs.rmSync(shm, { force: true }); +} + +function restoreSnapshot(id) { + const entries = loadIndex(); + const entry = entries.find((item) => item.id === id); + if (!entry) { + throw new Error("Snapshot not found."); + } + if (entry.status !== "available") { + throw new Error("Snapshot is no longer available."); + } + + if (entry.type === "bot") { + const coreZip = path.join(entry.path, "core.zip"); + if (!fs.existsSync(coreZip)) { + throw new Error("Snapshot core archive missing."); + } + const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "lumi-restore-")); + extractZip(coreZip, tempDir); + const rootPath = resolveZipRoot(tempDir); + applyCoreUpdate(rootPath); + fs.rmSync(tempDir, { recursive: true, force: true }); + } + + if (entry.type === "plugin") { + const pluginsDir = path.join(repoRoot, "plugins"); + const targetDir = path.join(pluginsDir, entry.pluginId); + if (entry.pluginExisted) { + const pluginZip = path.join(entry.path, "plugin.zip"); + if (!fs.existsSync(pluginZip)) { + throw new Error("Snapshot plugin archive missing."); + } + const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "lumi-restore-")); + extractZip(pluginZip, tempDir); + const rootPath = resolvePluginRoot(tempDir); + applyPluginFiles(rootPath, entry.pluginId); + fs.rmSync(tempDir, { recursive: true, force: true }); + } else { + fs.rmSync(targetDir, { recursive: true, force: true }); + } + } + + restoreDatabase(entry.path); + markSnapshotRolledBack(id); + return entry; +} + +module.exports = { + applyBotUpdate, + applyPluginUpdate, + listSnapshots, + restoreSnapshot +}; diff --git a/src/services/updater.js b/src/services/updater.js new file mode 100644 index 0000000..08d58f5 --- /dev/null +++ b/src/services/updater.js @@ -0,0 +1,39 @@ +const path = require("path"); +const { spawnSync } = require("child_process"); + +const repoRoot = path.join(__dirname, "..", ".."); + +function runGit(args) { + const result = spawnSync("git", args, { + cwd: repoRoot, + encoding: "utf8" + }); + if (result.status !== 0) { + throw new Error(result.stderr || "Git command failed."); + } + return result.stdout.trim(); +} + +function checkForUpdates(remote, branch) { + runGit(["fetch", remote]); + const count = runGit([ + "rev-list", + `HEAD..${remote}/${branch}`, + "--count" + ]); + return Number(count) > 0; +} + +function pullUpdates(remote, branch) { + return runGit(["pull", remote, branch]); +} + +function requestRestart() { + setTimeout(() => process.exit(10), 500); +} + +module.exports = { + checkForUpdates, + pullUpdates, + requestRestart +}; diff --git a/src/services/users.js b/src/services/users.js new file mode 100644 index 0000000..4653453 --- /dev/null +++ b/src/services/users.js @@ -0,0 +1,220 @@ +const crypto = require("crypto"); +const { db } = require("./db"); + +function normalizeUsername(name) { + return (name || "").trim(); +} + +function isUsernameAvailable(name, excludeUserId) { + const trimmed = normalizeUsername(name); + if (!trimmed) { + return false; + } + const row = db + .prepare( + "SELECT id FROM user_profiles WHERE internal_username = ? LIMIT 1" + ) + .get(trimmed); + if (!row) { + return true; + } + return excludeUserId ? row.id === excludeUserId : false; +} + +function generateUniqueUsername(primary, fallback, excludeUserId) { + const candidates = [primary, fallback] + .map(normalizeUsername) + .filter(Boolean); + + for (const candidate of candidates) { + if (isUsernameAvailable(candidate, excludeUserId)) { + return candidate; + } + } + + const base = candidates[0] || "user"; + let suffix = 2; + let attempt = `${base}-${suffix}`; + while (!isUsernameAvailable(attempt, excludeUserId)) { + suffix += 1; + attempt = `${base}-${suffix}`; + } + return attempt; +} + +function getUserProfileById(userId) { + return db + .prepare( + "SELECT id, internal_username, username_updated_at FROM user_profiles WHERE id = ?" + ) + .get(userId); +} + +function getUserIdentities(userId) { + return db + .prepare( + "SELECT provider, provider_user_id, display_name, avatar FROM user_identities WHERE user_id = ?" + ) + .all(userId); +} + +function getIdentity(provider, providerUserId) { + return db + .prepare( + "SELECT user_id, provider, provider_user_id, display_name, avatar FROM user_identities WHERE provider = ? AND provider_user_id = ?" + ) + .get(provider, providerUserId); +} + +function createUserProfile(internalUsername) { + const now = Date.now(); + const id = crypto.randomUUID(); + db.prepare( + "INSERT INTO user_profiles (id, internal_username, created_at, updated_at) VALUES (?, ?, ?, ?)" + ).run(id, internalUsername, now, now); + return getUserProfileById(id); +} + +function updateIdentity(userId, provider, providerUserId, displayName, avatar) { + const now = Date.now(); + db.prepare( + "INSERT INTO user_identities (user_id, provider, provider_user_id, display_name, avatar, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?) " + + "ON CONFLICT(provider, provider_user_id) DO UPDATE SET user_id = excluded.user_id, display_name = excluded.display_name, avatar = excluded.avatar, updated_at = excluded.updated_at" + ).run( + userId, + provider, + providerUserId, + displayName || null, + avatar || null, + now, + now + ); +} + +function ensureUserForIdentity({ provider, providerUserId, displayName, avatar, fallbackName }) { + const existing = getIdentity(provider, providerUserId); + if (existing) { + updateIdentity( + existing.user_id, + provider, + providerUserId, + displayName, + avatar + ); + return getUserProfileById(existing.user_id); + } + + const internalUsername = generateUniqueUsername( + displayName, + fallbackName + ); + const profile = createUserProfile(internalUsername); + updateIdentity( + profile.id, + provider, + providerUserId, + displayName, + avatar + ); + return profile; +} + +function mergeUsers(fromUserId, toUserId) { + if (fromUserId === toUserId) { + return toUserId; + } + db.transaction(() => { + db.prepare("UPDATE user_identities SET user_id = ? WHERE user_id = ?").run( + toUserId, + fromUserId + ); + db.prepare("UPDATE stats SET user_id = ? WHERE user_id = ?").run( + toUserId, + fromUserId + ); + const accounts = db + .prepare("SELECT id, provider FROM linked_accounts WHERE user_id = ?") + .all(fromUserId); + for (const account of accounts) { + const existing = db + .prepare( + "SELECT id FROM linked_accounts WHERE user_id = ? AND provider = ?" + ) + .get(toUserId, account.provider); + if (existing) { + db.prepare("DELETE FROM linked_accounts WHERE id = ?").run(account.id); + } else { + db.prepare("UPDATE linked_accounts SET user_id = ? WHERE id = ?").run( + toUserId, + account.id + ); + } + } + db.prepare("DELETE FROM user_profiles WHERE id = ?").run(fromUserId); + })(); + return toUserId; +} + +function linkIdentityToUser({ userId, provider, providerUserId, displayName, avatar }) { + const existing = getIdentity(provider, providerUserId); + let targetUserId = userId; + if (existing && existing.user_id !== userId) { + targetUserId = mergeUsers(existing.user_id, userId); + } + updateIdentity( + targetUserId, + provider, + providerUserId, + displayName, + avatar + ); + return getUserProfileById(targetUserId); +} + +function updateInternalUsername(userId, desiredName) { + const trimmed = normalizeUsername(desiredName); + if (!trimmed) { + return { ok: false, reason: "Username cannot be empty." }; + } + if (!isUsernameAvailable(trimmed, userId)) { + return { ok: false, reason: "That username is already taken." }; + } + db.prepare( + "UPDATE user_profiles SET internal_username = ?, updated_at = ?, username_updated_at = ? WHERE id = ?" + ).run(trimmed, Date.now(), Date.now(), userId); + return { ok: true, username: trimmed }; +} + +function listUsersWithIdentities() { + const profiles = db + .prepare( + "SELECT id, internal_username, created_at, updated_at FROM user_profiles ORDER BY internal_username" + ) + .all(); + const identitiesByUser = new Map(); + const identities = db + .prepare( + "SELECT user_id, provider, provider_user_id, display_name FROM user_identities ORDER BY provider" + ) + .all(); + for (const identity of identities) { + if (!identitiesByUser.has(identity.user_id)) { + identitiesByUser.set(identity.user_id, []); + } + identitiesByUser.get(identity.user_id).push(identity); + } + return profiles.map((profile) => ({ + ...profile, + identities: identitiesByUser.get(profile.id) || [] + })); +} + +module.exports = { + generateUniqueUsername, + getUserProfileById, + getUserIdentities, + ensureUserForIdentity, + linkIdentityToUser, + updateInternalUsername, + listUsersWithIdentities +}; diff --git a/src/services/youtube.js b/src/services/youtube.js new file mode 100644 index 0000000..5a2c876 --- /dev/null +++ b/src/services/youtube.js @@ -0,0 +1,285 @@ +const { getSetting, setSetting } = require("./settings"); +const { incrementMessages } = require("./stats"); +const { ensureUserForIdentity } = require("./users"); + +let client = null; +let pollTimer = null; + +async function startYouTubeBot({ commandRouter } = {}) { + const clientId = getSetting("youtube_client_id"); + const clientSecret = getSetting("youtube_client_secret"); + const refreshToken = getSetting("youtube_bot_refresh_token"); + if (!clientId || !clientSecret || !refreshToken) { + return null; + } + + const state = { + clientId, + clientSecret, + refreshToken, + accessToken: null, + accessTokenExpiresAt: 0, + channelId: getSetting("youtube_bot_channel_id", "") || null, + channelName: null, + channelAvatar: null, + liveChatId: null, + nextPageToken: null, + skipHistory: true, + stopped: false, + commandRouter + }; + + client = state; + + try { + await hydrateBotChannel(state); + } catch (error) { + console.error("YouTube bot failed to load channel details", error); + } + + schedulePoll(state, 1000); + return state; +} + +async function stopYouTubeBot() { + if (pollTimer) { + clearTimeout(pollTimer); + pollTimer = null; + } + if (client) { + client.stopped = true; + } + client = null; +} + +function getClient() { + return client; +} + +function schedulePoll(state, delayMs) { + if (state.stopped) { + return; + } + if (pollTimer) { + clearTimeout(pollTimer); + } + pollTimer = setTimeout(() => { + pollTimer = null; + pollLiveChat(state).catch((error) => { + console.error("YouTube chat poll failed", error); + schedulePoll(state, 10000); + }); + }, delayMs); +} + +async function pollLiveChat(state) { + if (state.stopped) { + return; + } + const liveChatId = await ensureLiveChatId(state); + if (!liveChatId) { + schedulePoll(state, 30000); + return; + } + + const response = await listLiveChatMessages(state, liveChatId, state.nextPageToken); + state.nextPageToken = response.nextPageToken || state.nextPageToken; + if (state.skipHistory) { + state.skipHistory = false; + schedulePoll(state, response.pollingIntervalMillis || 5000); + return; + } + + const items = Array.isArray(response.items) ? response.items : []; + for (const item of items) { + await handleChatItem(state, liveChatId, item); + } + + schedulePoll(state, response.pollingIntervalMillis || 5000); +} + +async function handleChatItem(state, liveChatId, item) { + const snippet = item?.snippet; + const author = item?.authorDetails; + if (!snippet || !author) { + return; + } + const messageText = snippet.displayMessage; + if (!messageText) { + return; + } + if (state.channelId && author.channelId === state.channelId) { + return; + } + + const displayName = author.displayName || "YouTube User"; + const avatar = author.profileImageUrl || null; + const profile = ensureUserForIdentity({ + provider: "youtube", + providerUserId: author.channelId, + displayName, + avatar + }); + incrementMessages(profile.id); + + if (!state.commandRouter) { + return; + } + + await state.commandRouter.handleMessage({ + platform: "youtube", + raw: messageText, + user: profile, + platformUser: { + id: author.channelId, + displayName, + username: displayName + }, + meta: { + liveChatId, + messageId: item.id, + snippet, + author + }, + reply: async (content) => { + try { + await sendChatMessage(state, liveChatId, content); + } catch (error) { + console.error("YouTube command reply failed", error); + } + } + }); +} + +async function ensureLiveChatId(state) { + const liveChatId = state.liveChatId || (await findActiveLiveChatId(state)); + if (liveChatId && liveChatId !== state.liveChatId) { + state.liveChatId = liveChatId; + state.nextPageToken = null; + state.skipHistory = true; + } + return state.liveChatId; +} + +async function hydrateBotChannel(state) { + const channel = await fetchMyChannel(state); + if (!channel) { + return; + } + state.channelId = channel.id; + state.channelName = channel.snippet?.title || null; + state.channelAvatar = channel.snippet?.thumbnails?.default?.url || null; + if (state.channelId) { + setSetting("youtube_bot_channel_id", state.channelId); + } +} + +async function ensureAccessToken(state) { + const now = Date.now(); + if (state.accessToken && now < state.accessTokenExpiresAt) { + return state.accessToken; + } + const token = await refreshAccessToken(state); + state.accessToken = token.access_token; + const expiresIn = Number(token.expires_in || 0); + state.accessTokenExpiresAt = now + Math.max(30, expiresIn - 60) * 1000; + return state.accessToken; +} + +async function refreshAccessToken(state) { + const body = new URLSearchParams({ + client_id: state.clientId, + client_secret: state.clientSecret, + refresh_token: state.refreshToken, + grant_type: "refresh_token" + }); + const response = await fetch("https://oauth2.googleapis.com/token", { + method: "POST", + headers: { "Content-Type": "application/x-www-form-urlencoded" }, + body + }); + if (!response.ok) { + throw new Error(`YouTube token refresh failed: ${response.status}`); + } + return response.json(); +} + +async function fetchMyChannel(state) { + const accessToken = await ensureAccessToken(state); + const response = await fetch( + "https://www.googleapis.com/youtube/v3/channels?part=snippet&mine=true", + { headers: { Authorization: `Bearer ${accessToken}` } } + ); + if (!response.ok) { + throw new Error(`YouTube channel fetch failed: ${response.status}`); + } + const data = await response.json(); + return data.items?.[0] || null; +} + +async function findActiveLiveChatId(state) { + const accessToken = await ensureAccessToken(state); + const response = await fetch( + "https://www.googleapis.com/youtube/v3/liveBroadcasts?part=snippet,status&broadcastStatus=active&broadcastType=all", + { headers: { Authorization: `Bearer ${accessToken}` } } + ); + if (!response.ok) { + return null; + } + const data = await response.json(); + const broadcast = data.items?.[0]; + return broadcast?.snippet?.liveChatId || null; +} + +async function listLiveChatMessages(state, liveChatId, pageToken) { + const accessToken = await ensureAccessToken(state); + const params = new URLSearchParams({ + liveChatId, + part: "snippet,authorDetails", + maxResults: "200" + }); + if (pageToken) { + params.set("pageToken", pageToken); + } + const response = await fetch( + `https://www.googleapis.com/youtube/v3/liveChatMessages?${params.toString()}`, + { headers: { Authorization: `Bearer ${accessToken}` } } + ); + if (!response.ok) { + throw new Error(`YouTube chat fetch failed: ${response.status}`); + } + return response.json(); +} + +async function sendChatMessage(state, liveChatId, messageText) { + const accessToken = await ensureAccessToken(state); + const response = await fetch( + "https://www.googleapis.com/youtube/v3/liveChatMessages?part=snippet", + { + method: "POST", + headers: { + Authorization: `Bearer ${accessToken}`, + "Content-Type": "application/json" + }, + body: JSON.stringify({ + snippet: { + liveChatId, + type: "textMessageEvent", + textMessageDetails: { + messageText + } + } + }) + } + ); + if (!response.ok) { + throw new Error(`YouTube chat send failed: ${response.status}`); + } + return response.json(); +} + +module.exports = { + startYouTubeBot, + stopYouTubeBot, + getClient +}; diff --git a/src/web/public/app.js b/src/web/public/app.js new file mode 100644 index 0000000..c3186cf --- /dev/null +++ b/src/web/public/app.js @@ -0,0 +1,538 @@ +(() => { + const body = document.body; + const media = window.matchMedia("(max-width: 900px)"); + + document.querySelectorAll("[data-sidebar-toggle]").forEach((button) => { + button.addEventListener("click", () => { + if (media.matches) { + body.classList.toggle("sidebar-open"); + } else { + body.classList.toggle("sidebar-collapsed"); + } + }); + }); + + document.querySelectorAll(".nav-link").forEach((link) => { + link.addEventListener("click", () => { + if (body.classList.contains("sidebar-open")) { + body.classList.remove("sidebar-open"); + } + }); + }); + + const editToggles = Array.from( + document.querySelectorAll("[data-edit-toggle]") + ); + if (editToggles.length) { + const editRows = Array.from(document.querySelectorAll("[data-edit-row]")); + const updateToggleStates = () => { + editToggles.forEach((button) => { + const key = button.dataset.editToggle; + const row = editRows.find((item) => item.dataset.editRow === key); + const isOpen = row?.classList.contains("is-open"); + button.setAttribute("aria-expanded", isOpen ? "true" : "false"); + }); + }; + + editToggles.forEach((button) => { + button.addEventListener("click", () => { + const key = button.dataset.editToggle; + const target = editRows.find((item) => item.dataset.editRow === key); + const willOpen = target ? !target.classList.contains("is-open") : false; + editRows.forEach((row) => { + row.classList.remove("is-open"); + }); + if (target && willOpen) { + target.classList.add("is-open"); + } + updateToggleStates(); + }); + }); + } + + document.querySelectorAll("[data-table]").forEach((table) => { + const tbody = table.tBodies[0]; + if (!tbody) { + return; + } + let rows = Array.from(tbody.rows); + const tableId = table.getAttribute("data-table"); + const isCommandTable = tableId === "commands"; + const isPageable = + table.dataset.pageable !== undefined && table.dataset.pageable !== "false"; + const pageSizes = (table.dataset.pageSizes || "25,50,100,250") + .split(",") + .map((value) => Number(value.trim())) + .filter((value) => Number.isFinite(value) && value > 0); + const defaultSize = Number(table.dataset.pageSize) || pageSizes[0] || 25; + const sizeSelect = document.querySelector(`[data-table-size="${tableId}"]`); + const pagination = document.querySelector( + `[data-table-pagination="${tableId}"]` + ); + const prevButton = pagination?.querySelector("[data-page-prev]"); + const nextButton = pagination?.querySelector("[data-page-next]"); + const pageLabel = pagination?.querySelector("[data-page-label]"); + let currentPage = 1; + let currentPageSize = defaultSize; + + const buildCommandGroups = () => { + const groupMap = new Map(); + rows.forEach((row) => { + const key = row.dataset.commandRoot; + if (!key) { + return; + } + groupMap.set(key, { root: row, subRows: [] }); + }); + rows.forEach((row) => { + const parent = row.dataset.commandParent; + if (!parent) { + return; + } + const group = groupMap.get(parent); + if (group) { + group.subRows.push(row); + } + }); + return groupMap; + }; + + const commandGroups = isCommandTable ? buildCommandGroups() : null; + let highlightTimeout = null; + + const setGroupExpanded = (group, expanded) => { + if (!group || !group.root) { + return; + } + group.root.dataset.expanded = expanded ? "true" : "false"; + group.root.classList.toggle("is-expanded", expanded); + group.subRows.forEach((row) => { + row.classList.toggle("is-visible", expanded); + }); + const toggle = group.root.querySelector("[data-command-toggle]"); + if (toggle) { + toggle.setAttribute("aria-expanded", expanded ? "true" : "false"); + } + }; + + const clearCommandHighlights = () => { + tbody.querySelectorAll(".command-highlight").forEach((row) => { + row.classList.remove("command-highlight"); + }); + }; + + const highlightCommandRow = (row) => { + if (!row || !tbody.contains(row)) { + return; + } + clearCommandHighlights(); + row.classList.add("command-highlight"); + if (highlightTimeout) { + window.clearTimeout(highlightTimeout); + } + highlightTimeout = window.setTimeout(() => { + row.classList.remove("command-highlight"); + }, 2200); + }; + + const revealAnchorRow = () => { + if (!isCommandTable || !commandGroups) { + return; + } + const anchor = window.location.hash.slice(1); + if (!anchor) { + return; + } + const target = document.getElementById(anchor); + if (!target || !tbody.contains(target)) { + return; + } + if (target.dataset.commandParent) { + const group = commandGroups.get(target.dataset.commandParent); + if (group) { + setGroupExpanded(group, true); + } + } + highlightCommandRow(target); + }; + + if (isCommandTable && commandGroups) { + commandGroups.forEach((group) => { + setGroupExpanded(group, false); + }); + + tbody.querySelectorAll("[data-command-toggle]").forEach((button) => { + button.addEventListener("click", (event) => { + event.preventDefault(); + const rootRow = button.closest("tr"); + if (!rootRow) { + return; + } + const key = rootRow.dataset.commandRoot; + const group = key ? commandGroups.get(key) : null; + if (!group) { + return; + } + const expanded = rootRow.dataset.expanded === "true"; + setGroupExpanded(group, !expanded); + }); + }); + + revealAnchorRow(); + window.addEventListener("hashchange", () => { + revealAnchorRow(); + }); + } + + const filterInput = document.querySelector( + `[data-table-filter="${tableId}"]` + ); + const filterSelect = document.querySelector( + `[data-table-filter-select="${tableId}"]` + ); + const filterKey = filterSelect?.dataset.filterKey || "filter"; + + const refreshRows = () => { + rows = Array.from(tbody.rows); + }; + + const getFilteredRows = () => { + const term = (filterInput?.value || "").trim().toLowerCase(); + const filterValue = (filterSelect?.value || "").trim().toLowerCase(); + return rows.filter((row) => { + const haystack = (row.dataset.search || row.textContent || "") + .toLowerCase() + .trim(); + const matchesTerm = !term || haystack.includes(term); + const rowFilter = (row.dataset[filterKey] || "").toLowerCase(); + const matchesFilter = !filterValue || rowFilter === filterValue; + return matchesTerm && matchesFilter; + }); + }; + + const applyPagination = () => { + if (!isPageable || isCommandTable) { + return; + } + refreshRows(); + const filtered = getFilteredRows(); + const totalPages = Math.max( + 1, + Math.ceil(filtered.length / currentPageSize) + ); + currentPage = Math.min(currentPage, totalPages); + const start = (currentPage - 1) * currentPageSize; + const end = start + currentPageSize; + const visible = new Set(filtered.slice(start, end)); + + rows.forEach((row) => { + row.style.display = visible.has(row) ? "" : "none"; + }); + + if (pageLabel) { + pageLabel.textContent = `Page ${currentPage} of ${totalPages}`; + } + if (prevButton) { + prevButton.disabled = currentPage <= 1; + } + if (nextButton) { + nextButton.disabled = currentPage >= totalPages; + } + }; + if (filterInput) { + filterInput.addEventListener("input", () => { + const term = filterInput.value.trim().toLowerCase(); + const filterValue = (filterSelect?.value || "").trim().toLowerCase(); + if (!isCommandTable || !commandGroups) { + if (isPageable) { + currentPage = 1; + applyPagination(); + return; + } + rows.forEach((row) => { + const haystack = (row.dataset.search || row.textContent || "") + .toLowerCase() + .trim(); + const rowFilter = (row.dataset[filterKey] || "").toLowerCase(); + const matchesTerm = !term || haystack.includes(term); + const matchesFilter = !filterValue || rowFilter === filterValue; + row.style.display = matchesTerm && matchesFilter ? "" : "none"; + }); + return; + } + + commandGroups.forEach((group) => { + const root = group.root; + const rootHaystack = (root.dataset.search || root.textContent || "") + .toLowerCase() + .trim(); + const rootMatches = rootHaystack.includes(term); + const subMatches = group.subRows.filter((row) => { + const haystack = (row.dataset.search || row.textContent || "") + .toLowerCase() + .trim(); + return haystack.includes(term); + }); + + const showGroup = !term || rootMatches || subMatches.length > 0; + root.style.display = showGroup ? "" : "none"; + if (!term) { + const expanded = root.dataset.expanded === "true"; + group.subRows.forEach((row) => { + row.style.display = expanded ? "" : "none"; + }); + return; + } + if (subMatches.length > 0) { + setGroupExpanded(group, true); + } + group.subRows.forEach((row) => { + row.style.display = subMatches.includes(row) ? "" : "none"; + }); + }); + }); + } + if (filterSelect) { + filterSelect.addEventListener("change", () => { + if (isPageable) { + currentPage = 1; + applyPagination(); + } else if (filterInput) { + filterInput.dispatchEvent(new Event("input")); + } + }); + } + + const headers = table.querySelectorAll("th[data-sort]"); + headers.forEach((header) => { + header.addEventListener("click", () => { + const key = header.dataset.sort; + const currentKey = table.dataset.sortKey; + const currentDir = table.dataset.sortDir || "asc"; + const nextDir = currentKey === key && currentDir === "asc" ? "desc" : "asc"; + table.dataset.sortKey = key; + table.dataset.sortDir = nextDir; + + const compare = (a, b) => { + const aValue = (a.dataset[key] || "").toString(); + const bValue = (b.dataset[key] || "").toString(); + const aNumber = Number(aValue); + const bNumber = Number(bValue); + if (!Number.isNaN(aNumber) && !Number.isNaN(bNumber)) { + return aNumber - bNumber; + } + return aValue.localeCompare(bValue); + }; + + if (isCommandTable && commandGroups) { + const roots = Array.from(commandGroups.values()).map((group) => group.root); + const sorted = roots.slice().sort(compare); + if (nextDir === "desc") { + sorted.reverse(); + } + sorted.forEach((root) => { + const group = commandGroups.get(root.dataset.commandRoot); + tbody.appendChild(root); + group?.subRows.forEach((row) => tbody.appendChild(row)); + }); + return; + } + + const sorted = rows.slice().sort(compare); + if (nextDir === "desc") { + sorted.reverse(); + } + sorted.forEach((row) => tbody.appendChild(row)); + refreshRows(); + if (isPageable) { + currentPage = 1; + applyPagination(); + } + }); + }); + + if (isPageable && sizeSelect) { + sizeSelect.value = currentPageSize.toString(); + sizeSelect.addEventListener("change", () => { + const nextSize = Number(sizeSelect.value); + if (Number.isFinite(nextSize) && nextSize > 0) { + currentPageSize = nextSize; + currentPage = 1; + applyPagination(); + } + }); + } + + if (isPageable && prevButton && nextButton) { + prevButton.addEventListener("click", () => { + if (currentPage > 1) { + currentPage -= 1; + applyPagination(); + } + }); + nextButton.addEventListener("click", () => { + currentPage += 1; + applyPagination(); + }); + } + + if (isPageable) { + applyPagination(); + } + }); + + const logList = document.querySelector("[data-log-list]"); + if (logList) { + const entries = Array.from(logList.querySelectorAll("[data-log-entry]")); + const searchInput = document.querySelector("[data-log-search]"); + const levelSelect = document.querySelector("[data-log-level]"); + const rangeSelect = document.querySelector("[data-log-range]"); + const limitSelect = document.querySelector("[data-log-limit]"); + + const applyLogFilters = () => { + const term = (searchInput?.value || "").trim().toLowerCase(); + + entries.forEach((entry) => { + const haystack = (entry.dataset.search || entry.textContent || "") + .toLowerCase() + .trim(); + + const matchesTerm = !term || haystack.includes(term); + entry.style.display = matchesTerm ? "" : "none"; + }); + }; + + searchInput?.addEventListener("input", applyLogFilters); + + applyLogFilters(); + + const reloadLogView = () => { + const url = new URL(window.location.href); + const rangeValue = rangeSelect?.value || "all"; + const levelValue = levelSelect?.value || "all"; + const limitValue = limitSelect?.value || "50"; + url.searchParams.set("range", rangeValue); + url.searchParams.set("level", levelValue); + url.searchParams.set("limit", limitValue); + window.location.assign(url.toString()); + }; + + levelSelect?.addEventListener("change", reloadLogView); + rangeSelect?.addEventListener("change", reloadLogView); + limitSelect?.addEventListener("change", reloadLogView); + } + + const logModal = document.querySelector("[data-log-modal]"); + const logModalOpen = document.querySelector("[data-log-download]"); + if (logModal && logModalOpen) { + const closeButtons = logModal.querySelectorAll("[data-modal-close]"); + const closeModal = () => { + logModal.classList.remove("is-open"); + logModal.setAttribute("aria-hidden", "true"); + }; + const openModal = () => { + logModal.classList.add("is-open"); + logModal.setAttribute("aria-hidden", "false"); + }; + logModalOpen.addEventListener("click", openModal); + closeButtons.forEach((button) => { + button.addEventListener("click", closeModal); + }); + logModal.addEventListener("click", (event) => { + if (event.target === logModal) { + closeModal(); + } + }); + window.addEventListener("keydown", (event) => { + if (event.key === "Escape" && logModal.classList.contains("is-open")) { + closeModal(); + } + }); + } + + const compareToggle = document.querySelector("[data-compare-toggle]"); + if (compareToggle) { + const defaultLabel = compareToggle.textContent.trim(); + const altLabel = compareToggle.getAttribute("data-compare-label") || "Back"; + compareToggle.addEventListener("click", () => { + const active = document.body.classList.toggle("stats-compare-mode"); + compareToggle.textContent = active ? altLabel : defaultLabel; + }); + } + + const healthEndpoint = "/health"; + let connectionLost = false; + const checkConnection = async () => { + try { + const response = await fetch(healthEndpoint, { cache: "no-store" }); + if (response.ok) { + if (connectionLost) { + window.location.reload(); + return; + } + connectionLost = false; + } else { + connectionLost = true; + } + } catch { + connectionLost = true; + } + }; + + window.addEventListener("online", () => { + checkConnection(); + }); + + window.addEventListener("offline", () => { + connectionLost = true; + }); + + window.setInterval(checkConnection, 5000); + + document.querySelectorAll("[data-copy]").forEach((button) => { + button.addEventListener("click", async () => { + const text = button.getAttribute("data-copy") || ""; + if (!text) { + return; + } + const label = button.querySelector("[data-copy-label]"); + const originalLabel = label ? label.textContent : ""; + + const markCopied = () => { + button.classList.add("copied"); + if (label) { + label.textContent = "Copied"; + } + window.setTimeout(() => { + button.classList.remove("copied"); + if (label) { + label.textContent = originalLabel; + } + }, 1200); + }; + + try { + if (navigator.clipboard && navigator.clipboard.writeText) { + await navigator.clipboard.writeText(text); + markCopied(); + return; + } + } catch { + // Fall back to legacy copy. + } + + const tempInput = document.createElement("input"); + tempInput.value = text; + document.body.appendChild(tempInput); + tempInput.select(); + try { + document.execCommand("copy"); + markCopied(); + } catch { + // Ignore copy errors. + } finally { + tempInput.remove(); + } + }); + }); +})(); diff --git a/src/web/public/icons/nav/admin.svg b/src/web/public/icons/nav/admin.svg new file mode 100644 index 0000000..5008c3b --- /dev/null +++ b/src/web/public/icons/nav/admin.svg @@ -0,0 +1 @@ + diff --git a/src/web/public/icons/nav/commands.svg b/src/web/public/icons/nav/commands.svg new file mode 100644 index 0000000..90f0b6b --- /dev/null +++ b/src/web/public/icons/nav/commands.svg @@ -0,0 +1 @@ + diff --git a/src/web/public/icons/nav/home.svg b/src/web/public/icons/nav/home.svg new file mode 100644 index 0000000..b22f086 --- /dev/null +++ b/src/web/public/icons/nav/home.svg @@ -0,0 +1 @@ + diff --git a/src/web/public/icons/nav/leaderboards.svg b/src/web/public/icons/nav/leaderboards.svg new file mode 100644 index 0000000..256077b --- /dev/null +++ b/src/web/public/icons/nav/leaderboards.svg @@ -0,0 +1 @@ + diff --git a/src/web/public/icons/nav/logs.svg b/src/web/public/icons/nav/logs.svg new file mode 100644 index 0000000..17b3567 --- /dev/null +++ b/src/web/public/icons/nav/logs.svg @@ -0,0 +1 @@ + diff --git a/src/web/public/icons/nav/moderation.svg b/src/web/public/icons/nav/moderation.svg new file mode 100644 index 0000000..5332c0b --- /dev/null +++ b/src/web/public/icons/nav/moderation.svg @@ -0,0 +1 @@ + diff --git a/src/web/public/icons/nav/pages.svg b/src/web/public/icons/nav/pages.svg new file mode 100644 index 0000000..a7d9bb5 --- /dev/null +++ b/src/web/public/icons/nav/pages.svg @@ -0,0 +1 @@ + diff --git a/src/web/public/icons/nav/plugins.svg b/src/web/public/icons/nav/plugins.svg new file mode 100644 index 0000000..a01a1c0 --- /dev/null +++ b/src/web/public/icons/nav/plugins.svg @@ -0,0 +1 @@ + diff --git a/src/web/public/icons/nav/privileges.svg b/src/web/public/icons/nav/privileges.svg new file mode 100644 index 0000000..6c6a6c0 --- /dev/null +++ b/src/web/public/icons/nav/privileges.svg @@ -0,0 +1 @@ + diff --git a/src/web/public/icons/nav/profile.svg b/src/web/public/icons/nav/profile.svg new file mode 100644 index 0000000..75ef761 --- /dev/null +++ b/src/web/public/icons/nav/profile.svg @@ -0,0 +1 @@ + diff --git a/src/web/public/icons/nav/settings.svg b/src/web/public/icons/nav/settings.svg new file mode 100644 index 0000000..c80b5bd --- /dev/null +++ b/src/web/public/icons/nav/settings.svg @@ -0,0 +1 @@ + diff --git a/src/web/public/icons/nav/stats.svg b/src/web/public/icons/nav/stats.svg new file mode 100644 index 0000000..5956324 --- /dev/null +++ b/src/web/public/icons/nav/stats.svg @@ -0,0 +1 @@ + diff --git a/src/web/public/icons/nav/theming.svg b/src/web/public/icons/nav/theming.svg new file mode 100644 index 0000000..80f6919 --- /dev/null +++ b/src/web/public/icons/nav/theming.svg @@ -0,0 +1 @@ + diff --git a/src/web/public/icons/nav/updates.svg b/src/web/public/icons/nav/updates.svg new file mode 100644 index 0000000..797f265 --- /dev/null +++ b/src/web/public/icons/nav/updates.svg @@ -0,0 +1 @@ + diff --git a/src/web/public/icons/nav/users.svg b/src/web/public/icons/nav/users.svg new file mode 100644 index 0000000..1d720bd --- /dev/null +++ b/src/web/public/icons/nav/users.svg @@ -0,0 +1 @@ + diff --git a/src/web/public/styles.css b/src/web/public/styles.css new file mode 100644 index 0000000..e7e3f8c --- /dev/null +++ b/src/web/public/styles.css @@ -0,0 +1,1663 @@ +@import url("https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;600;700&family=Source+Sans+3:wght@400;600&display=swap"); + +:root { + --ink: #121518; + --ink-soft: #2c3137; + --cream: #f7f3ef; + --sea: #0f6a78; + --sun: #f4a340; + --rose: #d66d5c; + --card: #ffffff; + --surface-2: #fbf9f6; + --surface-3: #f9f5ef; + --border: #e3ddd6; + --bg-1: #ffe5c4; + --bg-2: #f4efe8; + --bg-3: #e9f3f1; + --role-public: #ffffff; + --role-mod: #2cb678; + --role-admin: #e35678; + --shadow: 0 18px 45px rgba(16, 20, 24, 0.12); +} + +* { + box-sizing: border-box; +} + +body { + margin: 0; + color: var(--ink); + font-family: "Source Sans 3", sans-serif; + background: radial-gradient( + circle at 20% 20%, + var(--bg-1) 0, + var(--bg-2) 45%, + var(--bg-3) 100% + ); + min-height: 100vh; +} + +.app-shell { + display: grid; + grid-template-columns: 260px 1fr; + min-height: 100vh; +} + +.sidebar { + background: var(--card); + border-right: 1px solid var(--border); + padding: 20px 16px; + position: sticky; + top: 0; + height: 100vh; + display: flex; + flex-direction: column; + gap: 18px; +} + +.sidebar-brand { + display: flex; + flex-direction: column; + align-items: stretch; + gap: 12px; +} + +.brand-link { + display: flex; + align-items: center; + gap: 12px; + width: 100%; + padding: 6px 8px; + text-decoration: none; + color: inherit; + font-family: "Space Grotesk", sans-serif; + font-weight: 700; +} + +.sidebar-toggle { + align-self: flex-start; +} + +.logo { + display: grid; + place-items: center; + width: 38px; + height: 38px; + border-radius: 12px; + background: linear-gradient(135deg, var(--sea), var(--sun)); + color: white; + font-weight: 700; + overflow: hidden; +} + +.logo-img { + width: 100%; + height: 100%; + object-fit: cover; + display: block; +} + +.sidebar-nav { + display: flex; + flex-direction: column; + gap: 12px; + flex: 1; + overflow-y: auto; + padding-right: 4px; +} + +.nav-section { + border-radius: 16px; + background: var(--surface-2); + padding: 10px 12px; + border: 1px solid transparent; +} + +.nav-section[open] { + border-color: var(--border); +} + +.nav-section summary { + display: flex; + align-items: center; + gap: 10px; + cursor: pointer; + font-weight: 700; + color: var(--ink); + list-style: none; +} + +.nav-section summary::-webkit-details-marker { + display: none; +} + +.nav-icon { + width: 22px; + height: 22px; + display: grid; + place-items: center; + color: var(--sea); +} + +.nav-icon svg { + width: 20px; + height: 20px; +} + +.nav-links { + display: flex; + flex-direction: column; + gap: 6px; + padding: 10px 0 0 32px; +} + +.nav-link { + text-decoration: none; + color: var(--ink-soft); + font-weight: 600; + display: flex; + align-items: center; + gap: 8px; + padding: 6px 10px; + border-radius: 10px; + transition: background 0.15s ease, color 0.15s ease; + min-height: 32px; +} + +.nav-link:hover { + background: var(--surface-3); + color: var(--ink); +} + +.nav-link.active { + background: color-mix(in srgb, var(--sea) 18%, transparent); + color: var(--ink); +} + +.nav-item-icon { + width: 18px; + height: 18px; + display: grid; + place-items: center; + flex-shrink: 0; +} + +.nav-item-icon img { + width: 16px; + height: 16px; + object-fit: contain; + opacity: 0.82; +} + +.nav-link.active .nav-item-icon img, +.nav-link:hover .nav-item-icon img { + opacity: 1; +} + +.nav-dot { + width: 6px; + height: 6px; + border-radius: 999px; + background: var(--sun); + flex-shrink: 0; +} + +.sidebar-footer { + display: flex; + align-items: center; + justify-content: space-between; + gap: 10px; +} + +.user-chip { + font-weight: 600; + padding: 6px 10px; + background: var(--surface-2); + border-radius: 999px; + display: flex; + align-items: center; + gap: 10px; + text-decoration: none; + color: inherit; + border: 1px solid transparent; +} + +.user-chip-link:hover { + background: var(--surface-3); + border-color: var(--border); +} + +.user-chip-link:focus-visible { + outline: 2px solid color-mix(in srgb, var(--sea) 70%, transparent); + outline-offset: 2px; +} + +.user-avatar { + width: 30px; + height: 30px; + border-radius: 50%; + overflow: hidden; + display: grid; + place-items: center; + background: linear-gradient(135deg, var(--sea), var(--sun)); + color: white; + font-weight: 700; + font-size: 0.85rem; +} + +.user-avatar img { + width: 100%; + height: 100%; + object-fit: cover; + display: block; +} + +.icon-button { + background: var(--surface-2); + border: 1px solid var(--border); + border-radius: 12px; + width: 36px; + height: 36px; + display: grid; + place-items: center; + cursor: pointer; + color: var(--ink); +} + +.icon-button svg { + width: 18px; + height: 18px; +} + +.page { + min-height: 100vh; + display: flex; + flex-direction: column; +} + +.mobile-topbar { + display: none; + align-items: center; + gap: 12px; + padding: 16px 20px; + border-bottom: 1px solid var(--border); + background: var(--card); + position: sticky; + top: 0; + z-index: 10; +} + +.mobile-title { + font-family: "Space Grotesk", sans-serif; + font-weight: 700; +} + +.content { + padding: 32px; + display: flex; + flex-direction: column; + gap: 24px; + flex: 1; +} + +.hero { + padding: 30px; + border-radius: 24px; + background: linear-gradient( + 120deg, + color-mix(in srgb, var(--sea) 18%, transparent), + color-mix(in srgb, var(--sun) 28%, transparent) + ); + box-shadow: var(--shadow); + animation: fadeInUp 0.8s ease forwards; +} + +.hero h1 { + font-family: "Space Grotesk", sans-serif; + font-size: 2.4rem; + margin-top: 0; +} + +.hero-actions { + display: flex; + gap: 12px; + margin-top: 16px; + flex-wrap: wrap; +} + +.grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); + gap: 20px; +} + +.grid .card { + animation-delay: 0.06s; +} + +.grid .card:nth-child(2) { + animation-delay: 0.12s; +} + +.grid .card:nth-child(3) { + animation-delay: 0.18s; +} + +.grid .card:nth-child(4) { + animation-delay: 0.24s; +} + +.card { + background: var(--card); + border-radius: 18px; + padding: 24px; + border: 1px solid var(--border); + box-shadow: var(--shadow); + animation: fadeInUp 0.8s ease forwards; +} + +.card h1, +.card h2 { + font-family: "Space Grotesk", sans-serif; +} + +.button { + background: var(--sea); + color: white; + padding: 10px 18px; + border-radius: 12px; + text-decoration: none; + border: none; + cursor: pointer; + font-weight: 600; +} + +.button.subtle { + background: var(--surface-2); + color: var(--ink); +} + +.button.danger { + background: var(--rose); +} + +.platform-toggle { + position: relative; + display: inline-block; + width: 100%; + max-width: 320px; +} + +.platform-checkboxes { + display: flex; + flex-wrap: wrap; + gap: 10px; +} + +.platform-check { + display: inline-flex; + align-items: center; + gap: 8px; + padding: 6px 10px; + border-radius: 999px; + border: 1px solid var(--border); + background: var(--surface-2); + font-weight: 600; +} + +.platform-check.is-disabled { + opacity: 0.6; +} + +.platform-check input { + width: 16px; + height: 16px; +} + +.platform-toggle input { + position: absolute; + opacity: 0; + pointer-events: none; +} + +.platform-track { + display: grid; + grid-template-columns: repeat(3, 1fr); + position: relative; + background: var(--surface-2); + border: 1px solid var(--border); + border-radius: 999px; + padding: 4px; + gap: 4px; + overflow: hidden; +} + +.platform-track label { + text-align: center; + font-weight: 600; + padding: 6px 8px; + cursor: pointer; + z-index: 2; + color: var(--ink-soft); +} + +.platform-thumb { + position: absolute; + top: 4px; + left: 4px; + width: calc(33.333% - 8px); + height: calc(100% - 8px); + border-radius: 999px; + background: #5865f2; + transition: transform 0.2s ease, background 0.2s ease; + z-index: 1; +} + +.platform-toggle input[value="both"]:checked ~ .platform-track .platform-thumb { + transform: translateX(100%); + background: #2cb678; +} + +.platform-toggle input[value="twitch"]:checked ~ .platform-track .platform-thumb { + transform: translateX(200%); + background: #9146ff; +} + +.platform-toggle input[value="discord"]:checked ~ .platform-track label[for^="platform-discord"], +.platform-toggle input[value="both"]:checked ~ .platform-track label[for^="platform-both"], +.platform-toggle input[value="twitch"]:checked ~ .platform-track label[for^="platform-twitch"] { + color: var(--ink); +} + +.command-meta { + display: flex; + align-items: center; + gap: 8px; +} + +.badge { + text-transform: uppercase; + font-size: 0.7rem; + letter-spacing: 0.08em; + padding: 4px 8px; + border-radius: 999px; + font-weight: 700; + color: white; +} + +.badge.discord { + background: #5865f2; +} + +.badge.both { + background: #2cb678; +} + +.badge.twitch { + background: #9146ff; +} + +.badge.kick { + background: #53fc18; + color: #0b1802; +} + +.badge.youtube { + background: #ff0000; +} + +.link { + color: var(--sea); + font-weight: 600; + text-decoration: none; +} + +.table { + width: 100%; + border-collapse: collapse; +} + +.table th, +.table td { + text-align: left; + padding: 10px; + border-bottom: 1px solid var(--border); +} + +.list { + list-style: none; + padding: 0; + margin: 0; + display: flex; + flex-direction: column; + gap: 12px; +} + +.list li { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + padding: 12px; + background: var(--surface-2); + border-radius: 12px; +} + +.table-tools { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 12px; + gap: 12px; + flex-wrap: wrap; +} + +.table-search { + padding: 10px 12px; + border-radius: 10px; + border: 1px solid var(--border); + font-family: inherit; + min-width: 220px; +} + +.table-controls { + display: flex; + align-items: center; + gap: 10px; + flex-wrap: wrap; +} + +.table-page-size { + display: inline-flex; + align-items: center; + gap: 8px; + font-weight: 600; + color: var(--ink-soft); +} + +.table-page-size select { + padding: 6px 10px; + border-radius: 10px; + border: 1px solid var(--border); + background: var(--surface-2); + color: var(--text); +} + +.table-pagination { + display: flex; + align-items: center; + justify-content: center; + gap: 10px; + margin-top: 10px; + flex-wrap: wrap; +} + +.table-page-label { + font-weight: 600; + color: var(--muted); +} + +.table-pagination .button:disabled { + opacity: 0.45; + cursor: not-allowed; + pointer-events: none; +} + +.table th[data-sort] { + cursor: pointer; +} + +.table th[data-sort]:hover { + color: var(--sea); +} + +.commands-header { + display: flex; + align-items: flex-end; + justify-content: space-between; + gap: 16px; + flex-wrap: wrap; +} + +.section-header { + display: flex; + align-items: flex-end; + justify-content: space-between; + gap: 16px; + flex-wrap: wrap; +} + +.log-controls { + display: flex; + flex-wrap: wrap; + gap: 10px; + align-items: center; + justify-content: flex-end; +} + +.command-subtitle { + margin: 6px 0 0; + color: var(--ink-soft); +} + +.table-note { + margin: 12px 0; + padding: 10px 12px; + background: var(--surface-2); + border: 1px dashed var(--border); + border-radius: 12px; + color: var(--ink-soft); +} + +.table-note code { + background: var(--surface-3); + padding: 2px 6px; + border-radius: 6px; +} + +.table-wrap { + overflow-x: auto; +} + +.commands-table th { + font-family: "Space Grotesk", sans-serif; + font-size: 0.75rem; + text-transform: uppercase; + letter-spacing: 0.08em; + color: var(--ink-soft); +} + +.commands-table td { + vertical-align: top; +} + +.command-trigger { + display: inline-flex; + align-items: center; + gap: 8px; +} + +.command-toggle { + width: 24px; + height: 24px; + border-radius: 8px; + border: 1px solid var(--border); + background: var(--surface-2); + color: var(--ink); + font-weight: 700; + cursor: pointer; + display: inline-flex; + align-items: center; + justify-content: center; +} + +.command-toggle::before { + content: "+"; +} + +.command-root.is-expanded .command-toggle::before { + content: "-"; +} + +.command-toggle.spacer { + visibility: hidden; +} + +.command-subrow { + display: none; +} + +.command-subrow.is-visible { + display: table-row; +} + +.command-subrow .command-trigger { + padding-left: 16px; +} + +.command-highlight td { + animation: commandPulse 2.4s ease-out; +} + +.command-name { + font-weight: 600; +} + +.command-desc { + display: inline-block; + max-width: 320px; + color: var(--ink-soft); + font-size: 0.9rem; +} + +.copy-pill { + display: inline-flex; + align-items: center; + gap: 8px; + padding: 6px 10px; + border-radius: 12px; + border: 1px solid var(--border); + background: var(--surface-2); + cursor: pointer; + font-family: "Space Grotesk", sans-serif; + position: relative; + color: var(--ink); +} + +.copy-pill code { + font-family: "Space Grotesk", sans-serif; + font-weight: 600; + color: inherit; +} + +.copy-pill:hover { + border-color: var(--sea); + color: var(--ink); +} + +.copy-pill.copied::after { + content: "Copied"; + position: absolute; + top: -10px; + right: -6px; + background: var(--sea); + color: white; + font-size: 0.65rem; + padding: 2px 6px; + border-radius: 999px; +} + +.copy-link { + min-width: 96px; + justify-content: center; +} + +.platform-pills { + display: flex; + gap: 6px; + flex-wrap: wrap; +} + +.level-pill, +.origin-pill { + display: inline-flex; + align-items: center; + padding: 4px 8px; + border-radius: 999px; + font-size: 0.75rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.06em; + background: var(--surface-3); + color: var(--ink-soft); + border: 1px solid var(--border); +} + +.level-pill.level-public { + background: var(--role-public); + color: #121518; + border-color: color-mix(in srgb, var(--role-public) 60%, var(--border)); +} + +.level-pill.level-mod { + background: var(--role-mod); + color: white; + border-color: color-mix(in srgb, var(--role-mod) 70%, var(--border)); +} + +.level-pill.level-admin { + background: var(--role-admin); + color: white; + border-color: color-mix(in srgb, var(--role-admin) 70%, var(--border)); +} + +.command-count { + font-weight: 700; + text-align: right; +} + +.edit-row { + display: none; +} + +.edit-row.is-open { + display: table-row; +} + +.edit-row td { + padding: 16px; + background: var(--surface-2); + border-bottom: 1px solid var(--border); +} + +@keyframes commandPulse { + 0% { + background-color: color-mix(in srgb, var(--sea) 16%, transparent); + } + 60% { + background-color: color-mix(in srgb, var(--sea) 26%, transparent); + } + 100% { + background-color: transparent; + } +} + +.conflict-card { + margin: 12px 0; + padding: 12px 14px; + border-radius: 12px; + border: 1px solid color-mix(in srgb, var(--rose) 60%, var(--border)); + background: color-mix(in srgb, var(--rose) 12%, var(--surface-2)); +} + +.conflict-card strong { + color: var(--ink); +} + +.conflict-card ul { + margin: 8px 0 0; + padding-left: 18px; +} + +.conflict-card code { + background: var(--surface-3); + padding: 2px 6px; + border-radius: 6px; +} + +.perm-toggle { + position: relative; + display: inline-flex; + align-items: center; + width: 46px; + height: 22px; + border-radius: 999px; + background: var(--rose); + border: 1px solid var(--border); + margin-right: 8px; + flex-shrink: 0; +} + +.perm-toggle.on { + background: #2cb678; +} + +.perm-thumb { + width: 18px; + height: 18px; + border-radius: 50%; + background: white; + transform: translateX(2px); + transition: transform 0.2s ease; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.18); +} + +.perm-toggle.on .perm-thumb { + transform: translateX(24px); +} + +.perm-label { + font-weight: 600; + color: var(--ink-soft); +} + +.log-window { + margin-top: 16px; + border-radius: 16px; + border: 1px solid var(--border); + background: var(--surface-2); + padding: 6px; +} + +.log-entry { + border-radius: 12px; + border: 1px solid transparent; + padding: 8px 10px; + margin-bottom: 8px; + background: var(--card); +} + +.log-entry summary { + display: flex; + align-items: center; + gap: 10px; + cursor: pointer; + list-style: none; + font-weight: 600; +} + +.log-entry summary::-webkit-details-marker { + display: none; +} + +.log-marker { + width: 10px; + height: 10px; + border-radius: 50%; + background: var(--sea); + flex-shrink: 0; +} + +.log-entry.level-error .log-marker { + background: var(--rose); +} + +.log-entry.level-warn .log-marker { + background: var(--sun); +} + +.log-entry.level-info .log-marker { + background: var(--sea); +} + +.log-entry.level-debug .log-marker { + background: color-mix(in srgb, var(--ink-soft) 60%, transparent); +} + +.log-message { + flex: 1; +} + +.log-level-pill { + text-transform: uppercase; + font-size: 0.7rem; + letter-spacing: 0.08em; + padding: 4px 8px; + border-radius: 999px; + background: var(--surface-3); + color: var(--ink-soft); + border: 1px solid var(--border); +} + +.log-time { + font-size: 0.85rem; + color: var(--ink-soft); + white-space: nowrap; +} + +.log-details { + margin-top: 10px; + padding: 10px 12px; + border-radius: 12px; + background: var(--surface-3); + border: 1px solid var(--border); + font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", + monospace; + font-size: 0.85rem; + white-space: pre-wrap; +} + +.log-details.empty { + font-family: inherit; + font-size: 0.9rem; + color: var(--ink-soft); +} + +.identity-list { + list-style: none; + padding: 0; + margin: 0; + display: flex; + flex-direction: column; + gap: 6px; +} + +.identity-list li { + display: flex; + gap: 8px; + align-items: center; +} + +.form-grid { + display: grid; + gap: 16px; +} + +.form-grid h2 { + grid-column: 1 / -1; + margin-bottom: 0; +} + +.theme-grid { + grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); +} + +.form-grid .field { + display: flex; + flex-direction: column; + gap: 6px; +} + +.form-grid .field.full { + grid-column: 1 / -1; +} + +.form-grid input, +.form-grid textarea, +.form-grid select { + padding: 10px; + border-radius: 10px; + border: 1px solid var(--border); + font-family: inherit; +} + +.platform-grid { + display: grid; + gap: 14px; + grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); + margin-top: 10px; +} + +.platform-card { + background: var(--surface-2); + border: 1px solid var(--border); + border-radius: 14px; + padding: 14px; + display: flex; + flex-direction: column; + gap: 8px; +} + +.platform-card-header { + display: flex; + align-items: center; + justify-content: space-between; +} + +.platform-toggle-row { + display: flex; + align-items: center; + gap: 10px; + font-weight: 600; +} + +.platform-meta { + display: flex; + align-items: center; + justify-content: space-between; + gap: 10px; +} + +.checkbox-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); + gap: 8px; +} + +.checkbox-grid label { + display: inline-flex; + align-items: center; + gap: 8px; + font-weight: 600; +} + +.switch { + display: inline-flex; + align-items: center; + gap: 10px; + font-weight: 600; + cursor: pointer; +} + +.switch-input { + position: absolute; + opacity: 0; + width: 1px; + height: 1px; + overflow: hidden; +} + +.switch-track { + width: 46px; + height: 26px; + border-radius: 999px; + background: rgba(255, 112, 112, 0.18); + border: 1px solid rgba(255, 112, 112, 0.5); + position: relative; + transition: background 0.2s ease, border-color 0.2s ease; +} + +.switch-track::after { + content: ""; + width: 20px; + height: 20px; + border-radius: 50%; + background: #fff; + position: absolute; + top: 2px; + left: 2px; + transition: transform 0.2s ease; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25); +} + +.switch-input:checked + .switch-track { + background: rgba(96, 211, 148, 0.25); + border-color: rgba(96, 211, 148, 0.6); +} + +.switch-input:checked + .switch-track::after { + transform: translateX(20px); +} + +.switch-input:focus-visible + .switch-track { + box-shadow: 0 0 0 3px rgba(120, 200, 255, 0.35); +} + +.switch-input:disabled + .switch-track { + opacity: 0.5; + cursor: not-allowed; +} + +.switch-text { + color: var(--text); +} + +.switch--compact .switch-text { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +.form-grid input[type="color"] { + padding: 0; + width: 56px; + height: 40px; + border-radius: 12px; + border: 1px solid var(--border); + background: transparent; + cursor: pointer; +} + +.form-grid input[type="color"]::-webkit-color-swatch-wrapper { + padding: 0; +} + +.form-grid input[type="color"]::-webkit-color-swatch { + border: none; + border-radius: 10px; +} + +.form-grid input[type="color"]::-moz-color-swatch { + border: none; + border-radius: 10px; +} + +.inline-form { + display: inline-block; + margin-right: 8px; +} + +.inline-details { + display: inline-block; + margin-right: 8px; +} + +.inline-details summary { + list-style: none; + display: inline-block; +} + +.inline-details summary::-webkit-details-marker { + display: none; +} + +.flash { + padding: 12px 16px; + border-radius: 12px; + font-weight: 600; +} + +.flash.success { + background: #e0f3ee; + color: #0b5b5f; +} + +.flash.error { + background: #ffe4df; + color: #8d3a2f; +} + +.flash.info { + background: #f0efe9; + color: var(--ink); +} + +.stat-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); + gap: 16px; +} + +.stat { + background: var(--surface-3); + border-radius: 14px; + padding: 16px; +} + +.stats-header { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + flex-wrap: wrap; +} + +.stats-compare { + display: none; +} + +body.stats-compare-mode .stats-default { + display: none; +} + +body.stats-compare-mode .stats-compare { + display: block; +} + +.stats-compare-header { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + flex-wrap: wrap; + margin-bottom: 12px; +} + +.stat-label { + display: block; + color: var(--ink-soft); +} + +.stat-value { + font-size: 2rem; + font-weight: 700; + font-family: "Space Grotesk", sans-serif; +} + +.hint { + color: var(--ink-soft); + font-size: 0.95rem; +} + +.wizard-steps { + padding-left: 20px; + margin: 0 0 16px; + color: var(--ink-soft); +} + +.wizard-list { + margin: 8px 0 0; + padding-left: 18px; +} + +.site-footer { + padding: 24px 32px 40px; + color: var(--ink-soft); +} + +.toast { + position: fixed; + right: 24px; + bottom: 24px; + background: var(--surface-2); + border: 1px solid var(--border); + border-radius: 14px; + padding: 12px 14px; + display: flex; + flex-direction: column; + gap: 4px; + box-shadow: var(--shadow); + z-index: 50; + max-width: 320px; + animation: toast-in 0.2s ease; +} + +.toast strong { + font-size: 0.9rem; +} + +.toast-error { + border-color: rgba(214, 109, 92, 0.6); + background: color-mix(in srgb, var(--rose) 12%, var(--surface-2)); +} + +.missing-block { + display: flex; + align-items: flex-start; + gap: 16px; +} + +.missing-icon { + width: 46px; + height: 46px; + border-radius: 14px; + display: grid; + place-items: center; + background: color-mix(in srgb, var(--rose) 18%, transparent); + color: var(--rose); + font-weight: 700; + font-size: 1.4rem; +} + +@keyframes toast-in { + from { + opacity: 0; + transform: translateY(8px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +.page-content { + display: grid; + gap: 12px; +} + +.custom-page-frame { + width: 100%; + border: none; + background: transparent; + display: block; +} + +.modal-backdrop { + position: fixed; + inset: 0; + background: rgba(10, 12, 14, 0.45); + display: none; + align-items: center; + justify-content: center; + z-index: 40; + padding: 24px; +} + +.modal-backdrop.is-open { + display: flex; +} + +.modal { + width: min(560px, 92vw); + background: var(--card); + border-radius: 18px; + border: 1px solid var(--border); + box-shadow: var(--shadow); + padding: 20px; + display: grid; + gap: 12px; +} + +.modal-header { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; +} + +.modal-actions { + display: flex; + justify-content: flex-end; + gap: 10px; + flex-wrap: wrap; +} + +@keyframes fadeInUp { + from { + opacity: 0; + transform: translateY(10px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +@media (max-width: 1100px) { + .app-shell { + grid-template-columns: 220px 1fr; + } +} + +@media (max-width: 900px) { + .app-shell { + grid-template-columns: 1fr; + } + + .sidebar { + position: fixed; + top: 0; + left: 0; + bottom: 0; + width: 260px; + transform: translateX(-100%); + transition: transform 0.2s ease; + z-index: 20; + } + + body.sidebar-open .sidebar { + transform: translateX(0); + } + + .mobile-topbar { + display: flex; + } + + .content { + padding: 20px; + } +} + +body.sidebar-collapsed .sidebar { + width: 90px; + padding: 18px 10px; +} + +body.sidebar-collapsed .app-shell { + grid-template-columns: 90px 1fr; +} + +body.sidebar-collapsed .brand-link .title, +body.sidebar-collapsed .nav-text, +body.sidebar-collapsed .nav-link-text, +body.sidebar-collapsed .user-name { + display: none; +} + +body.sidebar-collapsed .nav-links { + padding: 8px 0 0; + align-items: center; +} + +body.sidebar-collapsed .nav-link { + justify-content: center; + width: 100%; + padding: 6px; + gap: 0; +} + + + + +.button.disabled { + opacity: 0.6; + cursor: not-allowed; + pointer-events: none; +} + +.login-actions { + display: flex; + flex-direction: column; + gap: 10px; + width: 100%; +} + +body.sidebar-collapsed .sidebar-footer { + flex-direction: column; + align-items: center; + gap: 8px; +} + +body.sidebar-collapsed .user-chip { + padding: 6px; + border-radius: 12px; + justify-content: center; + width: 100%; +} + +body.sidebar-collapsed .sidebar-footer form { + display: flex; + justify-content: center; + width: 100%; +} + +body.sidebar-collapsed .icon-button { + width: 34px; + height: 34px; +} + +body.sidebar-collapsed .nav-section summary { + justify-content: center; +} + +body.sidebar-collapsed .nav-section { + padding: 8px; +} + +body.sidebar-collapsed .nav-dot { + width: 8px; + height: 8px; +} + +body.sidebar-collapsed .nav-item-icon { + width: 20px; + height: 20px; +} + +body.sidebar-collapsed .nav-item-icon img { + width: 18px; + height: 18px; +} + + + +.nav-link-text { + display: inline-block; + max-width: 160px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.nav-icon-grid { + display: grid; + gap: 12px; +} + +.nav-icon-row { + display: grid; + gap: 12px; + grid-template-columns: 1fr auto; + padding: 12px; + border-radius: 14px; + border: 1px solid var(--border); + background: var(--surface-2); +} + +.nav-icon-info { + display: flex; + align-items: center; + gap: 12px; + flex-wrap: wrap; +} + +.nav-icon-preview { + width: 32px; + height: 32px; + border-radius: 10px; + border: 1px solid var(--border); + background: var(--surface-3); + padding: 4px; + object-fit: contain; +} + +.nav-icon-actions { + display: flex; + flex-wrap: wrap; + gap: 8px; + align-items: center; +} + +.moderation-note { + padding: 10px 12px; + border-radius: 12px; + border: 1px solid var(--border); + background: var(--surface-3); +} + +.profile-card { + display: flex; + flex-direction: column; + gap: 24px; +} + +.profile-section { + display: flex; + flex-direction: column; + gap: 14px; +} + +.profile-actions { + display: flex; + flex-wrap: wrap; + gap: 12px; +} + +.profile-username { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + padding: 12px 14px; + border-radius: 12px; + background: var(--surface-2); +} + +.profile-username-label { + font-size: 0.85rem; + color: var(--ink-soft); + text-transform: uppercase; + letter-spacing: 0.08em; +} + +.profile-username-value { + font-weight: 700; + font-size: 1.05rem; +} + +.profile-widgets { + display: grid; + gap: 16px; +} + +.profile-widget { + background: var(--surface-2); + border-radius: 16px; + padding: 16px; + border: 1px solid var(--border); +} + +.profile-widget h3 { + margin-top: 0; + margin-bottom: 10px; + font-family: "Space Grotesk", sans-serif; +} + + + diff --git a/src/web/server.js b/src/web/server.js new file mode 100644 index 0000000..784556b --- /dev/null +++ b/src/web/server.js @@ -0,0 +1,4771 @@ +const express = require("express"); +const path = require("path"); +const crypto = require("crypto"); +const fs = require("fs"); +const { Permissions } = require("discord.js"); +let multer = null; +try { + multer = require("multer"); +} catch { + multer = null; +} +const session = require("express-session"); +const BetterSqlite3Store = require("better-sqlite3-session-store")(session); + +const { db } = require("../services/db"); +const { getSetting, setSetting, getAllSettings } = require("../services/settings"); +const { getRoleFlags, hasAccess } = require("../services/rbac"); +const { + buildDiscordAuthUrl, + exchangeDiscordCode, + fetchDiscordUser, + fetchDiscordGuildMember, + buildTwitchAuthUrl, + exchangeTwitchCode, + fetchTwitchUser, + buildYouTubeAuthUrl, + exchangeYouTubeCode, + fetchYouTubeChannel +} = require("../services/auth"); +const { getPluginProfileStats } = require("../services/plugin-stats"); +const { + getLeaderboardSections, + getTopCommandOptions +} = require("../services/top"); +const { log, listLogs } = require("../services/logger"); +const { + getPlatformStatus, + getEnabledPlatformIds, + getLoginPlatforms, + getLinkPlatforms, + getPlatformLabel, + getPlatformBadge, + isPlatformEnabled, + isPlatformConfigured, + normalizePlatformSelection, + serializePlatformSelection +} = require("../services/platforms"); +const { getClient: getTwitchClient } = require("../services/twitch"); +const { getClient: getYouTubeClient } = require("../services/youtube"); +const { + ensureUserForIdentity, + linkIdentityToUser, + getUserProfileById, + getUserIdentities, + updateInternalUsername, + listUsersWithIdentities +} = require("../services/users"); +const { + getPlugins, + syncPluginRegistry, + setPluginEnabled, + removePlugin, + installFromGit, + updatePluginFromGit, + createLocalPlugin +} = require("../services/plugins"); +const { checkForUpdates, pullUpdates, requestRestart } = require("../services/updater"); +const { + applyBotUpdate, + applyPluginUpdate, + listSnapshots +} = require("../services/update-manager"); + +function ensureSessionSecret() { + let secret = getSetting("session_secret"); + if (!secret) { + secret = crypto.randomBytes(32).toString("hex"); + setSetting("session_secret", secret); + } + return secret; +} + +function isConfigured() { + const platforms = getPlatformStatus().filter( + (platform) => platform.supported && platform.enabled + ); + if (!platforms.length) { + return false; + } + return platforms.some((platform) => platform.configured); +} + +function getPrimaryLoginPlatform() { + const platforms = getPlatformStatus().filter( + (platform) => + platform.supported && platform.enabled && platform.supportsLogin + ); + if (!platforms.length) { + return null; + } + return platforms.find((platform) => platform.configured) || platforms[0]; +} + +function getLoginRedirectPath() { + const platform = getPrimaryLoginPlatform(); + return platform?.loginPath || "/setup"; +} + +function requireConfigured(req, res, next) { + if (!isConfigured() && !req.path.startsWith("/setup")) { + return res.redirect("/setup"); + } + next(); +} + +function requireAuth(req, res, next) { + if (!req.session.user) { + return res.redirect(getLoginRedirectPath()); + } + next(); +} + +function trackModRole(db, user) { + if (!user?.id) { + return; + } + const isMod = Boolean(user.isAdmin || user.isMod); + const active = db + .prepare( + "SELECT id FROM mod_role_periods WHERE user_id = ? AND end_at IS NULL" + ) + .get(user.id); + if (isMod && !active) { + db.prepare( + "INSERT INTO mod_role_periods (user_id, start_at, end_at) VALUES (?, ?, NULL)" + ).run(user.id, Date.now()); + } else if (!isMod && active) { + db.prepare("UPDATE mod_role_periods SET end_at = ? WHERE id = ?").run( + Date.now(), + active.id + ); + } +} + +function formatDuration(totalMs) { + const totalSeconds = Math.max(0, Math.floor(totalMs / 1000)); + const days = Math.floor(totalSeconds / 86400); + const hours = Math.floor((totalSeconds % 86400) / 3600); + const minutes = Math.floor((totalSeconds % 3600) / 60); + if (days > 0) { + return `${days}d ${hours}h`; + } + if (hours > 0) { + return `${hours}h ${minutes}m`; + } + return `${minutes}m`; +} + +function requireRole(role) { + return (req, res, next) => { + if (!req.session.user) { + return res.redirect(getLoginRedirectPath()); + } + if (!hasAccess(req.session.user, role)) { + return res.status(403).render("error", { + title: "Access denied", + message: "You do not have access to that page." + }); + } + next(); + }; +} + +function storeDiscordUser(user) { + const avatar = user.avatar + ? `https://cdn.discordapp.com/avatars/${user.id}/${user.avatar}.png?size=128` + : null; + const displayName = user.global_name || user.username; + return ensureUserForIdentity({ + provider: "discord", + providerUserId: user.id, + displayName, + avatar + }); +} + +async function fetchDiscordRolesForUser(discordUserId) { + const guildId = getSetting("discord_guild_id"); + const botToken = getSetting("discord_bot_token"); + if (!guildId || !botToken || !discordUserId) { + return []; + } + try { + const response = await fetch( + `https://discord.com/api/guilds/${guildId}/members/${discordUserId}`, + { headers: { Authorization: `Bot ${botToken}` } } + ); + if (!response.ok) { + return []; + } + const member = await response.json(); + return member?.roles || []; + } catch { + return []; + } +} + +function getPreferredAvatar(userId) { + if (!userId) { + return null; + } + const identities = db + .prepare("SELECT provider, avatar FROM user_identities WHERE user_id = ?") + .all(userId); + const preferredOrder = ["discord", "twitch", "youtube"]; + for (const provider of preferredOrder) { + const match = identities.find((identity) => identity.provider === provider); + if (match?.avatar) { + return match.avatar; + } + } + const fallback = identities.find((identity) => identity.avatar); + return fallback?.avatar || null; +} + +function hasExpressionTables() { + const row = db + .prepare( + "SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'expression_user_stats'" + ) + .get(); + return Boolean(row); +} + +function getExpressionUserSummary(userId) { + if (!hasExpressionTables()) { + return null; + } + const rows = db + .prepare( + "SELECT action, given_count, received_count FROM expression_user_stats WHERE user_id = ?" + ) + .all(userId); + const totals = rows.reduce( + (acc, row) => { + acc.given += row.given_count; + acc.received += row.received_count; + return acc; + }, + { given: 0, received: 0 } + ); + return { totals }; +} + +function buildUserStatsPayload(userId) { + if (!userId) { + return { stats: null, expression: null, pluginStats: [] }; + } + const stats = db + .prepare("SELECT * FROM stats WHERE user_id = ?") + .get(userId); + return { + stats, + expression: getExpressionUserSummary(userId), + pluginStats: getPluginProfileStats(userId) + }; +} + +function buildCompareRows(leftStats, rightStats) { + const rows = []; + const pushSection = (section, leftList, rightList) => { + const leftMap = new Map((leftList || []).map((item) => [item.label, item.value])); + const rightMap = new Map((rightList || []).map((item) => [item.label, item.value])); + const labels = []; + for (const label of leftMap.keys()) { + labels.push(label); + } + for (const label of rightMap.keys()) { + if (!leftMap.has(label)) { + labels.push(label); + } + } + labels.forEach((label) => { + rows.push({ + section, + label, + left: leftMap.has(label) ? leftMap.get(label) : null, + right: rightMap.has(label) ? rightMap.get(label) : null + }); + }); + }; + + const leftCommunity = [ + { label: "Messages", value: leftStats.stats?.messages ?? 0 }, + { label: "Commands", value: leftStats.stats?.commands ?? 0 } + ]; + const rightCommunity = [ + { label: "Messages", value: rightStats.stats?.messages ?? 0 }, + { label: "Commands", value: rightStats.stats?.commands ?? 0 } + ]; + pushSection("Community Interaction", leftCommunity, rightCommunity); + + if (leftStats.expression || rightStats.expression) { + const leftExpression = leftStats.expression + ? [ + { label: "Actions given", value: leftStats.expression.totals.given }, + { label: "Actions received", value: leftStats.expression.totals.received } + ] + : []; + const rightExpression = rightStats.expression + ? [ + { label: "Actions given", value: rightStats.expression.totals.given }, + { label: "Actions received", value: rightStats.expression.totals.received } + ] + : []; + pushSection("Expression Interaction", leftExpression, rightExpression); + } + + const pluginSections = new Map(); + leftStats.pluginStats.forEach((section) => { + pluginSections.set(section.title, { + left: section.stats || [], + right: [] + }); + }); + rightStats.pluginStats.forEach((section) => { + const entry = pluginSections.get(section.title) || { left: [], right: [] }; + entry.right = section.stats || []; + pluginSections.set(section.title, entry); + }); + for (const [title, lists] of pluginSections.entries()) { + pushSection(title, lists.left, lists.right); + } + + return rows; +} + +function getExpressionLeaderboards(limit = 10) { + if (!hasExpressionTables()) { + return null; + } + const given = db + .prepare( + "SELECT user_profiles.internal_username AS username, SUM(expression_user_stats.given_count) AS total " + + "FROM expression_user_stats " + + "JOIN user_profiles ON user_profiles.id = expression_user_stats.user_id " + + "GROUP BY expression_user_stats.user_id " + + "ORDER BY total DESC LIMIT ?" + ) + .all(limit); + const received = db + .prepare( + "SELECT user_profiles.internal_username AS username, SUM(expression_user_stats.received_count) AS total " + + "FROM expression_user_stats " + + "JOIN user_profiles ON user_profiles.id = expression_user_stats.user_id " + + "GROUP BY expression_user_stats.user_id " + + "ORDER BY total DESC LIMIT ?" + ) + .all(limit); + return { given, received }; +} + +const DISCORD_PERMISSION_DETAILS = { + CREATE_INSTANT_INVITE: { + label: "Create instant invites", + description: "Create invitations to the server." + }, + KICK_MEMBERS: { + label: "Kick members", + description: "Kick members from the server." + }, + BAN_MEMBERS: { + label: "Ban members", + description: "Ban or unban members from the server." + }, + ADMINISTRATOR: { + label: "Administrator", + description: "Bypasses all permission checks and grants every permission." + }, + MANAGE_CHANNELS: { + label: "Manage channels", + description: "Create, edit, or delete channels." + }, + MANAGE_GUILD: { + label: "Manage server", + description: "Edit server settings and features." + }, + ADD_REACTIONS: { + label: "Add reactions", + description: "Add new reactions to messages." + }, + VIEW_AUDIT_LOG: { + label: "View audit log", + description: "View the server audit log." + }, + PRIORITY_SPEAKER: { + label: "Priority speaker", + description: "Use priority speaker in voice channels." + }, + STREAM: { + label: "Stream", + description: "Stream video in voice channels." + }, + VIEW_CHANNEL: { + label: "View channels", + description: "View channels and read messages." + }, + SEND_MESSAGES: { + label: "Send messages", + description: "Send messages in text channels." + }, + SEND_TTS_MESSAGES: { + label: "Send TTS messages", + description: "Send text-to-speech messages." + }, + MANAGE_MESSAGES: { + label: "Manage messages", + description: "Delete messages and manage pins." + }, + EMBED_LINKS: { + label: "Embed links", + description: "Send embedded link previews." + }, + ATTACH_FILES: { + label: "Attach files", + description: "Attach files and media." + }, + READ_MESSAGE_HISTORY: { + label: "Read message history", + description: "Read messages posted before the bot joined the channel." + }, + MENTION_EVERYONE: { + label: "Mention everyone", + description: "Use @everyone, @here, and role mentions." + }, + USE_EXTERNAL_EMOJIS: { + label: "Use external emojis", + description: "Use emojis from other servers." + }, + VIEW_GUILD_INSIGHTS: { + label: "View server insights", + description: "Access server insights." + }, + CONNECT: { + label: "Connect to voice", + description: "Join voice channels." + }, + SPEAK: { + label: "Speak in voice", + description: "Speak in voice channels." + }, + MUTE_MEMBERS: { + label: "Mute members", + description: "Server mute members in voice." + }, + DEAFEN_MEMBERS: { + label: "Deafen members", + description: "Server deafen members in voice." + }, + MOVE_MEMBERS: { + label: "Move members", + description: "Move members between voice channels." + }, + USE_VAD: { + label: "Use voice activity detection", + description: "Use voice activity detection." + }, + CHANGE_NICKNAME: { + label: "Change nickname", + description: "Change the bot's nickname." + }, + MANAGE_NICKNAMES: { + label: "Manage nicknames", + description: "Change other members' nicknames." + }, + MANAGE_ROLES: { + label: "Manage roles", + description: "Create, edit, and assign roles." + }, + MANAGE_WEBHOOKS: { + label: "Manage webhooks", + description: "Create, edit, and delete webhooks." + }, + MANAGE_EMOJIS_AND_STICKERS: { + label: "Manage emojis and stickers", + description: "Create, edit, and delete emojis or stickers." + }, + USE_APPLICATION_COMMANDS: { + label: "Use application commands", + description: "Use slash commands and context menu commands." + }, + REQUEST_TO_SPEAK: { + label: "Request to speak", + description: "Request to speak in stage channels." + }, + MANAGE_EVENTS: { + label: "Manage events", + description: "Create and manage scheduled events." + }, + MANAGE_THREADS: { + label: "Manage threads", + description: "Manage threads and thread settings." + }, + USE_PUBLIC_THREADS: { + label: "Use public threads", + description: "Use public threads (deprecated flag)." + }, + CREATE_PUBLIC_THREADS: { + label: "Create public threads", + description: "Create public threads." + }, + USE_PRIVATE_THREADS: { + label: "Use private threads", + description: "Use private threads (deprecated flag)." + }, + CREATE_PRIVATE_THREADS: { + label: "Create private threads", + description: "Create private threads." + }, + USE_EXTERNAL_STICKERS: { + label: "Use external stickers", + description: "Use stickers from other servers." + }, + SEND_MESSAGES_IN_THREADS: { + label: "Send messages in threads", + description: "Send messages in threads." + }, + START_EMBEDDED_ACTIVITIES: { + label: "Start embedded activities", + description: "Start embedded activities in voice channels." + }, + MODERATE_MEMBERS: { + label: "Moderate members", + description: "Timeout members." + }, + VIEW_CREATOR_MONETIZATION_ANALYTICS: { + label: "View monetization analytics", + description: "View creator monetization analytics." + }, + USE_SOUNDBOARD: { + label: "Use soundboard", + description: "Use the soundboard in voice." + }, + SEND_VOICE_MESSAGES: { + label: "Send voice messages", + description: "Send voice messages." + } +}; + +const TWITCH_SCOPE_DEFS = [ + { + scope: "analytics:read:extensions", + label: "Extensions analytics", + description: "Read analytics data for extensions." + }, + { + scope: "analytics:read:games", + label: "Games analytics", + description: "Read analytics data for games." + }, + { + scope: "bits:read", + label: "Bits", + description: "Read Bits leaderboard data." + }, + { + scope: "channel:bot", + label: "Channel bot", + description: "Act as a bot within a channel." + }, + { + scope: "channel:edit:commercial", + label: "Run commercials", + description: "Run commercials on a channel." + }, + { + scope: "channel:manage:ads", + label: "Manage ads", + description: "Manage ad settings for a channel." + }, + { + scope: "channel:manage:broadcast", + label: "Manage broadcast", + description: "Manage stream metadata and settings." + }, + { + scope: "channel:manage:extensions", + label: "Manage extensions", + description: "Manage channel extensions." + }, + { + scope: "channel:manage:moderators", + label: "Manage moderators", + description: "Add or remove moderators." + }, + { + scope: "channel:manage:polls", + label: "Manage polls", + description: "Create and manage polls." + }, + { + scope: "channel:manage:predictions", + label: "Manage predictions", + description: "Create and manage predictions." + }, + { + scope: "channel:manage:redemptions", + label: "Manage redemptions", + description: "Manage channel points rewards." + }, + { + scope: "channel:manage:schedule", + label: "Manage schedule", + description: "Manage channel schedule." + }, + { + scope: "channel:manage:videos", + label: "Manage videos", + description: "Manage videos for a channel." + }, + { + scope: "channel:manage:vips", + label: "Manage VIPs", + description: "Add or remove VIPs." + }, + { + scope: "channel:read:ads", + label: "Read ads", + description: "Read ad schedule data." + }, + { + scope: "channel:read:charity", + label: "Read charity", + description: "Read charity campaign data." + }, + { + scope: "channel:manage:charity", + label: "Manage charity", + description: "Manage charity campaign settings." + }, + { + scope: "channel:read:editors", + label: "Read editors", + description: "Read channel editor list." + }, + { + scope: "channel:read:goals", + label: "Read goals", + description: "Read creator goal data." + }, + { + scope: "channel:read:hype_train", + label: "Read hype train", + description: "Read hype train data." + }, + { + scope: "channel:read:polls", + label: "Read polls", + description: "Read poll data." + }, + { + scope: "channel:read:predictions", + label: "Read predictions", + description: "Read prediction data." + }, + { + scope: "channel:read:redemptions", + label: "Read redemptions", + description: "Read channel points rewards." + }, + { + scope: "channel:read:stream_key", + label: "Read stream key", + description: "Read the channel stream key." + }, + { + scope: "channel:read:subscriptions", + label: "Read subscriptions", + description: "Read subscriber data." + }, + { + scope: "channel:read:vips", + label: "Read VIPs", + description: "Read the VIP list." + }, + { + scope: "channel:moderate", + label: "Channel moderation", + description: "Perform channel moderation actions." + }, + { + scope: "chat:edit", + label: "Chat edit", + description: "Send chat messages." + }, + { + scope: "chat:read", + label: "Chat read", + description: "Read chat messages." + }, + { + scope: "clips:edit", + label: "Edit clips", + description: "Create or edit clips." + }, + { + scope: "moderation:read", + label: "Read moderation", + description: "Read moderation data." + }, + { + scope: "moderator:manage:announcements", + label: "Manage announcements", + description: "Send announcements in chat." + }, + { + scope: "moderator:manage:automod", + label: "Manage AutoMod", + description: "Manage AutoMod actions." + }, + { + scope: "moderator:manage:automod_settings", + label: "Manage AutoMod settings", + description: "Update AutoMod settings." + }, + { + scope: "moderator:manage:banned_users", + label: "Manage banned users", + description: "Ban or unban users." + }, + { + scope: "moderator:manage:blocked_terms", + label: "Manage blocked terms", + description: "Manage blocked terms." + }, + { + scope: "moderator:manage:chat_messages", + label: "Manage chat messages", + description: "Delete or manage chat messages." + }, + { + scope: "moderator:manage:chat_settings", + label: "Manage chat settings", + description: "Update chat settings." + }, + { + scope: "moderator:manage:shield_mode", + label: "Manage shield mode", + description: "Enable or disable shield mode." + }, + { + scope: "moderator:manage:shoutouts", + label: "Manage shoutouts", + description: "Send or manage shoutouts." + }, + { + scope: "moderator:read:automod_settings", + label: "Read AutoMod settings", + description: "Read AutoMod settings." + }, + { + scope: "moderator:read:blocked_terms", + label: "Read blocked terms", + description: "Read blocked terms." + }, + { + scope: "moderator:read:chat_settings", + label: "Read chat settings", + description: "Read chat settings." + }, + { + scope: "moderator:read:followers", + label: "Read followers", + description: "Read follower list." + }, + { + scope: "moderator:read:shield_mode", + label: "Read shield mode", + description: "Read shield mode status." + }, + { + scope: "moderator:read:shoutouts", + label: "Read shoutouts", + description: "Read shoutout settings." + }, + { + scope: "moderator:read:vips", + label: "Read VIPs", + description: "Read VIP list." + }, + { + scope: "user:bot", + label: "User bot", + description: "Act as a bot on behalf of a user." + }, + { + scope: "user:edit", + label: "Edit user", + description: "Edit a user's profile." + }, + { + scope: "user:edit:follows", + label: "Edit follows", + description: "Manage follows for a user." + }, + { + scope: "user:manage:blocked_users", + label: "Manage blocked users", + description: "Block or unblock users." + }, + { + scope: "user:manage:chat_color", + label: "Manage chat color", + description: "Change chat color." + }, + { + scope: "user:manage:whispers", + label: "Manage whispers", + description: "Send and manage whispers." + }, + { + scope: "user:read:blocked_users", + label: "Read blocked users", + description: "Read blocked users list." + }, + { + scope: "user:read:broadcast", + label: "Read broadcast", + description: "Read broadcast settings." + }, + { + scope: "user:read:email", + label: "Read email", + description: "Read the user's email address." + }, + { + scope: "user:read:follows", + label: "Read follows", + description: "Read the user's follows." + }, + { + scope: "user:read:subscriptions", + label: "Read subscriptions", + description: "Read user subscription data." + }, + { + scope: "user:read:chat", + label: "Read chat", + description: "Read chat messages via API." + }, + { + scope: "user:write:chat", + label: "Write chat", + description: "Send chat messages via API." + }, + { + scope: "whispers:read", + label: "Read whispers", + description: "Read whispers." + }, + { + scope: "whispers:edit", + label: "Send whispers", + description: "Send whispers." + } +]; + +function buildPrivilegeRow(id, label, description, granted) { + const safeLabel = (label || "").toString(); + const safeDescription = (description || "").toString(); + const grantedFlag = Boolean(granted); + return { + id, + label: safeLabel, + description: safeDescription, + granted: grantedFlag, + search: `${safeLabel} ${safeDescription} ${grantedFlag ? "granted" : "missing"}`.trim(), + sort: { + label: safeLabel.toLowerCase(), + description: safeDescription.toLowerCase(), + status: grantedFlag ? 1 : 0 + } + }; +} + +function parseChannelList(value) { + return (value || "") + .split(/[,\s]+/g) + .map((entry) => entry.trim()) + .filter(Boolean); +} + +async function buildDiscordPrivileges(discordClient) { + const rows = []; + const guildId = getSetting("discord_guild_id"); + const hasClient = Boolean(discordClient && discordClient.user); + + rows.push( + buildPrivilegeRow( + "discord-client-ready", + "Client connected", + "The Discord client is logged in and ready.", + hasClient + ) + ); + rows.push( + buildPrivilegeRow( + "discord-guild-configured", + "Guild configured", + "A server ID is configured in settings.", + Boolean(guildId) + ) + ); + + let guild = null; + if (hasClient && guildId) { + guild = discordClient.guilds?.cache?.get(guildId) || null; + if (!guild && typeof discordClient.guilds?.fetch === "function") { + try { + guild = await discordClient.guilds.fetch(guildId); + } catch { + guild = null; + } + } + } + + rows.push( + buildPrivilegeRow( + "discord-guild-access", + "Bot in guild", + "The bot can access the configured server.", + Boolean(guild) + ) + ); + + let permissions = null; + if (guild && discordClient?.user?.id) { + try { + const cachedMember = guild.members?.cache?.get(discordClient.user.id) || null; + const member = cachedMember || (await guild.members.fetch(discordClient.user.id)); + permissions = member?.permissions || null; + } catch { + permissions = null; + } + } + + const permissionFlags = Permissions?.FLAGS || {}; + const canCheck = Boolean(permissions && typeof permissions.has === "function"); + for (const key of Object.keys(permissionFlags)) { + const details = DISCORD_PERMISSION_DETAILS[key] || { + label: toTitleCase(key), + description: "Discord permission flag." + }; + const flag = permissionFlags[key]; + const granted = canCheck && flag ? permissions.has(flag) : false; + rows.push( + buildPrivilegeRow( + `discord-perm-${key.toLowerCase()}`, + details.label, + details.description, + granted + ) + ); + } + + return { + rows, + guildName: guild?.name || null + }; +} + +async function buildTwitchPrivileges() { + const clientId = getSetting("twitch_client_id"); + const clientSecret = getSetting("twitch_client_secret"); + const redirectUri = getSetting("twitch_redirect_uri"); + const botUsername = getSetting("twitch_bot_username"); + const botOauth = getSetting("twitch_bot_oauth"); + const channels = parseChannelList(getSetting("twitch_channels")); + const twitchClient = getTwitchClient(); + const connected = Boolean(twitchClient); + const joinedChannels = + twitchClient && typeof twitchClient.getChannels === "function" + ? twitchClient.getChannels() + : []; + + const rows = [ + buildPrivilegeRow( + "twitch-client-id", + "Client ID", + "A Twitch app client ID is configured.", + Boolean(clientId) + ), + buildPrivilegeRow( + "twitch-client-secret", + "Client secret", + "A Twitch app client secret is configured.", + Boolean(clientSecret) + ), + buildPrivilegeRow( + "twitch-redirect", + "OAuth redirect URL", + "The OAuth redirect URL is configured.", + Boolean(redirectUri) + ), + buildPrivilegeRow( + "twitch-bot-username", + "Bot username", + "The chat bot username is configured.", + Boolean(botUsername) + ), + buildPrivilegeRow( + "twitch-bot-oauth", + "Bot OAuth token", + "The chat bot OAuth token is configured.", + Boolean(botOauth) + ), + buildPrivilegeRow( + "twitch-channels-configured", + "Channels configured", + "At least one channel is configured for chat.", + channels.length > 0 + ), + buildPrivilegeRow( + "twitch-chat-connected", + "Chat connected", + "The Twitch chat client is connected.", + connected + ), + buildPrivilegeRow( + "twitch-channels-joined", + "Channels joined", + "The chat client has joined its configured channels.", + joinedChannels.length > 0 + ) + ]; + + let grantedScopes = []; + if (botOauth) { + const rawToken = botOauth.startsWith("oauth:") ? botOauth.slice(6) : botOauth; + try { + const response = await fetch("https://id.twitch.tv/oauth2/validate", { + headers: { Authorization: `OAuth ${rawToken}` } + }); + if (response.ok) { + const data = await response.json(); + if (Array.isArray(data.scopes)) { + grantedScopes = data.scopes; + } + } + } catch { + grantedScopes = []; + } + } + + const grantedSet = new Set(grantedScopes.map((scope) => scope.toLowerCase())); + const knownScopeSet = new Set(); + const scopeRows = TWITCH_SCOPE_DEFS.map((def) => { + const scopeKey = def.scope.toLowerCase(); + knownScopeSet.add(scopeKey); + return buildPrivilegeRow( + `twitch-scope-${slugify(def.scope)}`, + def.label, + def.description, + grantedSet.has(scopeKey) + ); + }); + + const unknownScopes = grantedScopes.filter( + (scope) => !knownScopeSet.has(scope.toLowerCase()) + ); + for (const scope of unknownScopes) { + scopeRows.push( + buildPrivilegeRow( + `twitch-scope-${slugify(scope)}`, + scope, + "Granted by the token but not recognized by this version of the bot.", + true + ) + ); + } + + return { + rows: [...rows, ...scopeRows], + channelCount: channels.length + }; +} + +function readJsonSafe(filePath) { + try { + const raw = fs.readFileSync(filePath, "utf8"); + return JSON.parse(raw); + } catch { + return null; + } +} + +function parseBooleanSetting(value, fallback) { + if (value === undefined || value === null || value === "") { + return fallback; + } + if (typeof value === "boolean") { + return value; + } + const normalized = value.toString().toLowerCase(); + return ["1", "true", "yes", "on"].includes(normalized); +} + +function getPluginSettingsMap(pluginId) { + const rows = db + .prepare("SELECT key, value FROM plugin_settings WHERE plugin_id = ?") + .all(pluginId); + return rows.reduce((acc, row) => { + acc[row.key] = row.value; + return acc; + }, {}); +} + +function normalizeCommandTrigger(value, fallback = "") { + const raw = (value || fallback || "").toString().trim().replace(/^!+/, ""); + if (!raw) { + return ""; + } + return raw.split(/\s+/)[0].toLowerCase(); +} + +function normalizeSubcommand(value) { + const raw = (value || "").toString().trim().replace(/^!+/, ""); + if (!raw) { + return ""; + } + return raw.split(/\s+/)[0].toLowerCase(); +} + +function buildUsage(baseTrigger, usage) { + const raw = (usage || baseTrigger || "").toString().trim().replace(/^!+/, ""); + return raw || baseTrigger; +} + +function normalizeCustomPlatforms(value, availablePlatforms) { + return normalizePlatformSelection(value, availablePlatforms); +} + +function parsePlatformSelectionFromBody(body, availablePlatforms) { + const raw = Array.isArray(body.platforms) + ? body.platforms.join(",") + : body.platforms || body.platform; + return normalizePlatformSelection(raw, availablePlatforms); +} + +function buildPlatformLabels(platforms) { + return platforms.map((platform) => ({ + key: getPlatformBadge(platform), + label: getPlatformLabel(platform) + })); +} + +const LOG_LEVELS = new Set(["debug", "info", "warn", "error"]); +const LOG_LIMITS = new Set([50, 100, 250, 500]); +const DEFAULT_LOG_RANGE_MS = 24 * 60 * 60 * 1000; + +function normalizeLogLevel(value) { + const normalized = (value || "").toString().trim().toLowerCase(); + return LOG_LEVELS.has(normalized) ? normalized : ""; +} + +function parseLogLevels(value) { + if (!value || value === "all") { + return []; + } + const raw = Array.isArray(value) ? value : value.toString().split(","); + return raw.map(normalizeLogLevel).filter(Boolean); +} + +function parseLogRange(value) { + if (value === undefined || value === null || value === "") { + return { rangeMs: DEFAULT_LOG_RANGE_MS, rangeValue: `${DEFAULT_LOG_RANGE_MS}` }; + } + const normalized = value.toString().trim().toLowerCase(); + if (normalized === "all") { + return { rangeMs: null, rangeValue: "all" }; + } + const parsed = Number(normalized); + if (!Number.isNaN(parsed) && parsed > 0) { + return { rangeMs: parsed, rangeValue: `${parsed}` }; + } + return { rangeMs: DEFAULT_LOG_RANGE_MS, rangeValue: `${DEFAULT_LOG_RANGE_MS}` }; +} + +function parseLogLimit(value, { allowAll = false } = {}) { + if (value === undefined || value === null || value === "") { + return { limit: 50, limitValue: "50" }; + } + const normalized = value.toString().trim().toLowerCase(); + if (allowAll && normalized === "all") { + return { limit: null, limitValue: "all" }; + } + const parsed = Number(normalized); + if (!Number.isNaN(parsed) && LOG_LIMITS.has(parsed)) { + return { limit: parsed, limitValue: `${parsed}` }; + } + return { limit: 50, limitValue: "50" }; +} + +function normalizePageFormat(value) { + const normalized = (value || "").toString().trim().toLowerCase(); + return normalized === "markdown" ? "markdown" : "html"; +} + +function escapeHtml(value) { + const map = { + "&": "&", + "<": "<", + ">": ">", + '"': """, + "'": "'" + }; + return (value || "").toString().replace(/[&<>"']/g, (char) => map[char]); +} + +function renderMarkdownInline(value) { + let output = escapeHtml(value); + output = output.replace(/`([^`]+)`/g, "$1"); + output = output.replace(/\[([^\]]+)\]\(([^)]+)\)/g, (match, text, url) => { + return `${text}`; + }); + output = output.replace(/\*\*([^*]+)\*\*/g, "$1"); + output = output.replace(/\*([^*]+)\*/g, "$1"); + return output; +} + +function renderMarkdown(value) { + const lines = (value || "").toString().replace(/\r\n?/g, "\n").split("\n"); + let html = ""; + let paragraph = []; + let listType = null; + let inCode = false; + let codeLang = ""; + let codeLines = []; + + const flushParagraph = () => { + if (!paragraph.length) { + return; + } + html += `

      ${renderMarkdownInline(paragraph.join(" "))}

      `; + paragraph = []; + }; + + const closeList = () => { + if (!listType) { + return; + } + html += ``; + listType = null; + }; + + lines.forEach((line) => { + const trimmed = line.trim(); + if (inCode) { + if (trimmed.startsWith("```")) { + const codeBlock = escapeHtml(codeLines.join("\n")); + const langClass = codeLang ? ` class="language-${codeLang}"` : ""; + html += `
      ${codeBlock}
      `; + inCode = false; + codeLang = ""; + codeLines = []; + return; + } + codeLines.push(line); + return; + } + + if (trimmed.startsWith("```")) { + flushParagraph(); + closeList(); + inCode = true; + codeLang = trimmed.slice(3).trim(); + return; + } + + if (!trimmed) { + flushParagraph(); + closeList(); + return; + } + + const headingMatch = trimmed.match(/^(#{1,6})\s+(.*)$/); + if (headingMatch) { + flushParagraph(); + closeList(); + const level = headingMatch[1].length; + html += `${renderMarkdownInline(headingMatch[2])}`; + return; + } + + const listMatch = trimmed.match(/^([*-]|\d+\.)\s+(.*)$/); + if (listMatch) { + flushParagraph(); + const isOrdered = listMatch[1].endsWith("."); + const nextListType = isOrdered ? "ol" : "ul"; + if (listType && listType !== nextListType) { + closeList(); + } + if (!listType) { + listType = nextListType; + html += `<${listType}>`; + } + html += `
    1. ${renderMarkdownInline(listMatch[2])}
    2. `; + return; + } + + paragraph.push(trimmed); + }); + + if (inCode) { + const codeBlock = escapeHtml(codeLines.join("\n")); + const langClass = codeLang ? ` class="language-${codeLang}"` : ""; + html += `
      ${codeBlock}
      `; + } + + flushParagraph(); + closeList(); + return html || "

      "; +} + +function buildCustomPageSrcdoc(page, theme) { + const content = (page?.content || "").toString(); + const css = (page?.content_css || "").toString(); + const themeCss = theme + ? [ + ":root {", + ` --ink: ${theme.light.text};`, + ` --ink-soft: ${theme.light.muted};`, + ` --sea: ${theme.light.accent};`, + ` --sun: ${theme.light.accentAlt};`, + ` --rose: ${theme.light.danger};`, + ` --card: ${theme.light.surface};`, + ` --surface-2: ${theme.light.surface2};`, + ` --surface-3: ${theme.light.surface3};`, + ` --border: ${theme.light.border};`, + ` --bg-1: ${theme.light.bg1};`, + ` --bg-2: ${theme.light.bg2};`, + ` --bg-3: ${theme.light.bg3};`, + "}", + "@media (prefers-color-scheme: dark) {", + " :root {", + ` --ink: ${theme.dark.text};`, + ` --ink-soft: ${theme.dark.muted};`, + ` --sea: ${theme.dark.accent};`, + ` --sun: ${theme.dark.accentAlt};`, + ` --rose: ${theme.dark.danger};`, + ` --card: ${theme.dark.surface};`, + ` --surface-2: ${theme.dark.surface2};`, + ` --surface-3: ${theme.dark.surface3};`, + ` --border: ${theme.dark.border};`, + ` --bg-1: ${theme.dark.bg1};`, + ` --bg-2: ${theme.dark.bg2};`, + ` --bg-3: ${theme.dark.bg3};`, + " }", + "}" + ].join("\n") + : ""; + const baseCss = [ + "* { box-sizing: border-box; }", + "html, body { margin: 0; padding: 0; }", + "body {", + " font-family: \"Source Sans 3\", sans-serif;", + " color: var(--ink, #121518);", + " background: transparent;", + "}" + ].join("\n"); + const fullCss = [themeCss, baseCss, css].filter(Boolean).join("\n\n"); + + return [ + "", + "", + "", + " ", + " ", + " ", + " ", + "", + "", + content, + "", + "" + ].join("\n"); +} + +function buildCommandUsageMap() { + const rows = db.prepare("SELECT command_id, count FROM command_usage").all(); + const map = new Map(); + for (const row of rows) { + map.set(row.command_id, row.count); + } + return map; +} + +function slugify(value) { + const raw = (value || "").toString().toLowerCase(); + const slug = raw.replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, ""); + return slug || "command"; +} + +function toTitleCase(value) { + const raw = (value || "").toString().replace(/[-_]+/g, " ").trim(); + if (!raw) { + return ""; + } + return raw.replace(/\b\w/g, (match) => match.toUpperCase()); +} + +function truncateText(value, maxLength) { + const raw = (value || "").toString(); + if (raw.length <= maxLength) { + return raw; + } + return `${raw.slice(0, Math.max(0, maxLength - 3))}...`; +} + +function setFlash(req, type, message) { + req.session.flash = { type, message }; +} + +function getThemeSettings() { + return { + light: { + bg1: getSetting("theme_light_bg_1", "#ffe5c4"), + bg2: getSetting("theme_light_bg_2", "#f4efe8"), + bg3: getSetting("theme_light_bg_3", "#e9f3f1"), + text: getSetting("theme_light_text", "#121518"), + muted: getSetting("theme_light_text_muted", "#2c3137"), + accent: getSetting("theme_light_accent", "#0f6a78"), + accentAlt: getSetting("theme_light_accent_alt", "#f4a340"), + danger: getSetting("theme_light_danger", "#d66d5c"), + surface: getSetting("theme_light_surface", "#ffffff"), + surface2: getSetting("theme_light_surface_2", "#fbf9f6"), + surface3: getSetting("theme_light_surface_3", "#f9f5ef"), + border: getSetting("theme_light_border", "#e3ddd6") + }, + dark: { + bg1: getSetting("theme_dark_bg_1", "#1b1d1f"), + bg2: getSetting("theme_dark_bg_2", "#16181b"), + bg3: getSetting("theme_dark_bg_3", "#0f1113"), + text: getSetting("theme_dark_text", "#f2f0ec"), + muted: getSetting("theme_dark_text_muted", "#c5bfb7"), + accent: getSetting("theme_dark_accent", "#4fb6c2"), + accentAlt: getSetting("theme_dark_accent_alt", "#f1b765"), + danger: getSetting("theme_dark_danger", "#e08173"), + surface: getSetting("theme_dark_surface", "#232629"), + surface2: getSetting("theme_dark_surface_2", "#2b2f33"), + surface3: getSetting("theme_dark_surface_3", "#30353a"), + border: getSetting("theme_dark_border", "#34393d") + }, + role: { + public: getSetting("theme_role_public", "#ffffff"), + mod: getSetting("theme_role_mod", "#2cb678"), + admin: getSetting("theme_role_admin", "#e35678") + } + }; +} + +function getDiscordSettings() { + return { + discord_client_id: getSetting("discord_client_id", ""), + discord_client_secret: getSetting("discord_client_secret", ""), + discord_redirect_uri: getSetting("discord_redirect_uri", ""), + discord_bot_token: getSetting("discord_bot_token", ""), + discord_guild_id: getSetting("discord_guild_id", ""), + discord_admin_role_id: getSetting("discord_admin_role_id", ""), + discord_mod_role_id: getSetting("discord_mod_role_id", "") + }; +} + +function getTwitchSettings() { + return { + twitch_client_id: getSetting("twitch_client_id", ""), + twitch_client_secret: getSetting("twitch_client_secret", ""), + twitch_redirect_uri: getSetting("twitch_redirect_uri", ""), + twitch_bot_username: getSetting("twitch_bot_username", ""), + twitch_bot_oauth: getSetting("twitch_bot_oauth", ""), + twitch_channels: getSetting("twitch_channels", "") + }; +} + +function getYouTubeSettings() { + return { + youtube_client_id: getSetting("youtube_client_id", ""), + youtube_client_secret: getSetting("youtube_client_secret", ""), + youtube_redirect_uri: getSetting("youtube_redirect_uri", ""), + youtube_bot_channel_id: getSetting("youtube_bot_channel_id", "") + }; +} + +function saveSettingsMap(settings) { + for (const [key, value] of Object.entries(settings)) { + setSetting(key, value ?? ""); + } +} + +function storeSnapshot(req, key, settings) { + req.session[key] = settings; +} + +function restoreSnapshot(req, key) { + const snapshot = req.session[key]; + if (!snapshot) { + return; + } + saveSettingsMap(snapshot); + delete req.session[key]; +} + +function mergeSecrets(existing, incoming, secretKeys) { + const merged = { ...existing }; + for (const [key, value] of Object.entries(incoming)) { + const trimmed = typeof value === "string" ? value.trim() : value; + if (secretKeys.has(key) && !trimmed) { + continue; + } + merged[key] = trimmed; + } + return merged; +} + +async function verifyDiscordSettings(settings) { + const errors = []; + const checks = []; + const required = [ + "discord_client_id", + "discord_client_secret", + "discord_bot_token", + "discord_guild_id" + ]; + const missing = required.filter((field) => !settings[field]); + if (missing.length) { + errors.push("Client ID, Client Secret, Bot Token, and Guild ID are required."); + return { ok: false, errors, checks }; + } + + try { + const botResponse = await fetch("https://discord.com/api/users/@me", { + headers: { Authorization: `Bot ${settings.discord_bot_token}` } + }); + if (!botResponse.ok) { + errors.push("Bot token is invalid or missing permissions."); + } else { + const botUser = await botResponse.json(); + checks.push(`Bot token verified (${botUser.username}).`); + } + } catch { + errors.push("Unable to reach Discord to verify bot token."); + } + + try { + const guildResponse = await fetch( + `https://discord.com/api/guilds/${settings.discord_guild_id}`, + { headers: { Authorization: `Bot ${settings.discord_bot_token}` } } + ); + if (!guildResponse.ok) { + errors.push("Guild ID is invalid or the bot is not in the guild."); + } else { + const guild = await guildResponse.json(); + checks.push(`Guild verified (${guild.name}).`); + } + } catch { + errors.push("Unable to verify the Discord guild."); + } + + try { + const body = new URLSearchParams({ + client_id: settings.discord_client_id, + client_secret: settings.discord_client_secret, + grant_type: "client_credentials", + scope: "identify" + }); + const tokenResponse = await fetch("https://discord.com/api/oauth2/token", { + method: "POST", + headers: { "Content-Type": "application/x-www-form-urlencoded" }, + body + }); + if (!tokenResponse.ok) { + errors.push("Client ID/Secret failed verification."); + } else { + checks.push("Client ID and secret verified."); + } + } catch { + errors.push("Unable to verify Discord client credentials."); + } + + return { ok: errors.length === 0, errors, checks }; +} + +async function verifyTwitchSettings(settings) { + const errors = []; + const checks = []; + + if (!settings.twitch_client_id || !settings.twitch_client_secret) { + errors.push("Twitch Client ID and Client Secret are required."); + return { ok: false, errors, checks }; + } + + let appToken = null; + try { + const tokenUrl = + "https://id.twitch.tv/oauth2/token" + + `?client_id=${encodeURIComponent(settings.twitch_client_id)}` + + `&client_secret=${encodeURIComponent(settings.twitch_client_secret)}` + + "&grant_type=client_credentials"; + const tokenResponse = await fetch(tokenUrl, { method: "POST" }); + if (!tokenResponse.ok) { + errors.push("Client ID/Secret failed verification."); + } else { + const data = await tokenResponse.json(); + appToken = data.access_token; + checks.push("Client ID and secret verified."); + } + } catch { + errors.push("Unable to verify Twitch client credentials."); + } + + if (settings.twitch_bot_username || settings.twitch_bot_oauth) { + if (!settings.twitch_bot_username || !settings.twitch_bot_oauth) { + errors.push("Bot username and OAuth token must both be filled in."); + } else { + const rawToken = settings.twitch_bot_oauth.startsWith("oauth:") + ? settings.twitch_bot_oauth.slice(6) + : settings.twitch_bot_oauth; + try { + const validateResponse = await fetch( + "https://id.twitch.tv/oauth2/validate", + { headers: { Authorization: `OAuth ${rawToken}` } } + ); + if (!validateResponse.ok) { + errors.push("Bot OAuth token failed validation."); + } else { + const data = await validateResponse.json(); + checks.push(`Bot token verified (${data.login}).`); + if ( + settings.twitch_bot_username && + data.login && + data.login.toLowerCase() !== settings.twitch_bot_username.toLowerCase() + ) { + errors.push("Bot username does not match the OAuth token."); + } + } + } catch { + errors.push("Unable to verify Twitch bot OAuth token."); + } + } + } + + if (appToken && settings.twitch_bot_username) { + try { + const userResponse = await fetch( + `https://api.twitch.tv/helix/users?login=${encodeURIComponent( + settings.twitch_bot_username + )}`, + { + headers: { + "Client-Id": settings.twitch_client_id, + Authorization: `Bearer ${appToken}` + } + } + ); + if (userResponse.ok) { + const data = await userResponse.json(); + if (data.data && data.data.length) { + checks.push(`Bot account found (${data.data[0].display_name}).`); + } else { + errors.push("Bot username was not found on Twitch."); + } + } + } catch { + errors.push("Unable to verify bot username with Twitch."); + } + } + + return { ok: errors.length === 0, errors, checks }; +} + +async function verifyYouTubeSettings(settings) { + const errors = []; + const checks = []; + + if (!settings.youtube_client_id || !settings.youtube_client_secret) { + errors.push("YouTube Client ID and Client Secret are required."); + return { ok: false, errors, checks }; + } + + const refreshToken = + settings.youtube_bot_refresh_token || getSetting("youtube_bot_refresh_token", ""); + if (!refreshToken) { + checks.push("Bot account not connected yet."); + return { ok: errors.length === 0, errors, checks }; + } + + try { + const body = new URLSearchParams({ + client_id: settings.youtube_client_id, + client_secret: settings.youtube_client_secret, + refresh_token: refreshToken, + grant_type: "refresh_token" + }); + const response = await fetch("https://oauth2.googleapis.com/token", { + method: "POST", + headers: { "Content-Type": "application/x-www-form-urlencoded" }, + body + }); + if (!response.ok) { + errors.push("Bot refresh token failed verification."); + return { ok: false, errors, checks }; + } + const token = await response.json(); + checks.push("Bot refresh token verified."); + const channel = await fetchYouTubeChannel(token.access_token); + if (channel?.snippet?.title) { + checks.push(`Bot channel verified (${channel.snippet.title}).`); + } else { + checks.push("Bot channel verified."); + } + return { ok: errors.length === 0, errors, checks, channel }; + } catch { + errors.push("Unable to verify YouTube bot credentials."); + return { ok: false, errors, checks }; + } +} + +function createWebServer({ loadPlugins, discordClient }) { + const app = express(); + const assetVersion = Date.now().toString(); + const sessionStore = new BetterSqlite3Store({ + client: db + }); + + app.set("view engine", "ejs"); + app.set("views", path.join(__dirname, "views")); + + const originalAppRender = app.render.bind(app); + app.render = (view, options, callback) => { + if (typeof options === "function") { + callback = options; + options = {}; + } + const safeOptions = options || {}; + const respond = (err, html) => { + if (!err) { + if (typeof callback === "function") { + return callback(null, html); + } + return html; + } + const message = err?.message || ""; + const detail = { + view, + message, + stack: err?.stack || "" + }; + const isMissing = message.includes("Failed to lookup view"); + if (!isMissing) { + log("error", "View render failed", detail); + if (typeof callback === "function") { + return callback(err); + } + throw err; + } + log("warn", "Missing view fallback", detail); + if (view === "missing-view") { + const fallback = + "Content missing

      Content unavailable

      Some content could not be loaded.

      "; + if (typeof callback === "function") { + return callback(null, fallback); + } + return fallback; + } + return originalAppRender( + "missing-view", + { + ...safeOptions, + title: "Content missing", + resource: "A page component failed to load. Please try again.", + softError: "Some content could not be loaded." + }, + callback + ); + }; + return originalAppRender(view, safeOptions, respond); + }; + + app.use( + session({ + secret: ensureSessionSecret(), + resave: false, + saveUninitialized: false, + store: sessionStore + }) + ); + app.use(express.urlencoded({ extended: false })); + app.use(express.static(path.join(__dirname, "public"))); + + const uploadDir = path.join(__dirname, "..", "..", "data", "uploads"); + fs.mkdirSync(uploadDir, { recursive: true }); + const navIconDir = path.join(__dirname, "..", "..", "data", "nav-icons"); + fs.mkdirSync(navIconDir, { recursive: true }); + app.use("/assets/nav-icons", express.static(navIconDir)); + const upload = multer ? multer({ dest: uploadDir }) : null; + const uploadSingle = (fieldName) => { + if (!upload) { + return (req, _res, next) => { + req.uploadError = "File uploads require npm install."; + next(); + }; + } + return upload.single(fieldName); + }; + const navIconUpload = + multer && + multer({ + storage: multer.diskStorage({ + destination: (_req, _file, cb) => cb(null, navIconDir), + filename: (_req, file, cb) => { + const ext = path.extname(file.originalname || ".svg").slice(0, 8); + cb(null, `${crypto.randomUUID()}${ext}`); + } + }), + fileFilter: (_req, file, cb) => { + if (file.mimetype === "image/png" || file.mimetype === "image/svg+xml") { + return cb(null, true); + } + cb(new Error("Only SVG or PNG files are allowed.")); + } + }); + const navIconSingle = (req, _res, next) => { + if (!navIconUpload) { + req.uploadError = "File uploads require npm install."; + return next(); + } + return navIconUpload.single("icon_file")(req, _res, next); + }; + + const navItems = []; + const profileSections = []; + const web = { + createRouter: () => express.Router(), + mount: (mountPath, router, navItem) => { + app.use(mountPath, router); + if (navItem) { + navItems.push({ ...navItem, path: mountPath }); + } + }, + addNavItem: (navItem) => { + navItems.push(navItem); + }, + addProfileSection: (section) => { + if (!section || (!section.view && !section.content)) { + return; + } + profileSections.push(section); + } + }; + + app.use(requireConfigured); + app.use((req, res, next) => { + res.locals.siteTitle = getSetting("site_title", "Lumi Bot"); + res.locals.assetVersion = assetVersion; + res.locals.user = req.session.user || null; + res.locals.flash = req.session.flash || null; + res.locals.softError = null; + res.locals.theme = getThemeSettings(); + res.locals.botAvatar = getSetting("bot_avatar_url", null); + const platformStatus = getPlatformStatus(); + res.locals.platforms = platformStatus; + res.locals.platformLogins = platformStatus.filter( + (platform) => platform.supported && platform.enabled && platform.supportsLogin + ); + res.locals.platformLinks = platformStatus.filter( + (platform) => platform.supported && platform.enabled && platform.supportsLink + ); + const twitchPlatform = platformStatus.find((platform) => platform.id === "twitch"); + res.locals.twitchConfigured = Boolean(twitchPlatform?.configured); + res.locals.currentPath = req.path; + res.locals.userAvatar = req.session.user + ? getPreferredAvatar(req.session.user.id) + : null; + res.locals.userInitial = req.session.user?.username + ? req.session.user.username.charAt(0).toUpperCase() + : ""; + req.session.flash = null; + trackModRole(db, req.session.user); + res.locals.navSections = buildNavSections( + req.session.user, + navItems, + req.path + ); + next(); + }); + + app.use((req, res, next) => { + const originalRender = res.render.bind(res); + res.render = (view, options, callback) => { + if (typeof options === "function") { + callback = options; + options = {}; + } + const handleError = (err) => { + if (!err) { + return; + } + const message = err?.message || ""; + const isMissing = message.includes("Failed to lookup view"); + const context = { + view, + method: req.method, + path: req.path, + userId: req.session.user?.id || null, + message, + stack: err?.stack || "" + }; + if (!isMissing) { + log("error", "Render failed", context); + return originalRender( + "error", + { + title: "Something went wrong", + message: "An unexpected error occurred. Please try again." + }, + callback + ); + } + log("warn", "Missing view fallback", context); + res.locals.softError = "Some content could not be loaded."; + if (view === "missing-view") { + return res + .status(200) + .send( + "Content missing

      Content unavailable

      Some content could not be loaded.

      " + ); + } + return originalRender( + "missing-view", + { + title: "Content missing", + resource: "A page component failed to load. Please try again." + }, + callback + ); + }; + + return originalRender(view, options, (err, html) => { + if (err) { + return handleError(err); + } + if (typeof callback === "function") { + return callback(null, html); + } + res.send(html); + }); + }; + next(); + }); + + app.get("/", (req, res) => { + res.render("home", { + title: "Home" + }); + }); + + app.get("/setup", (req, res) => { + if (isConfigured()) { + return res.redirect("/"); + } + const platforms = getPlatformStatus(); + res.render("setup", { + title: "Initial setup", + platforms + }); + }); + + app.get("/setup/discord", (req, res) => { + if (!isPlatformEnabled("discord")) { + return res.redirect("/setup"); + } + if (isConfigured()) { + return res.redirect("/"); + } + const current = getDiscordSettings(); + const baseUrl = `${req.protocol}://${req.get("host")}`; + const form = { + ...current, + discord_client_secret: "", + discord_bot_token: "", + discord_redirect_uri: + current.discord_redirect_uri || `${baseUrl}/auth/discord/callback` + }; + storeSnapshot(req, "discordWizardSnapshot", current); + res.render("wizard-discord", { + title: "Discord setup", + form, + checks: [], + errors: [], + actionBase: "/setup/discord", + cancelPath: "/setup" + }); + }); + + app.post("/setup/discord/verify", async (req, res) => { + if (!isPlatformEnabled("discord")) { + return res.redirect("/setup"); + } + if (isConfigured()) { + return res.redirect("/"); + } + const current = getDiscordSettings(); + const incoming = { + discord_client_id: req.body.discord_client_id || "", + discord_client_secret: req.body.discord_client_secret || "", + discord_redirect_uri: req.body.discord_redirect_uri || "", + discord_bot_token: req.body.discord_bot_token || "", + discord_guild_id: req.body.discord_guild_id || "", + discord_admin_role_id: req.body.discord_admin_role_id || "", + discord_mod_role_id: req.body.discord_mod_role_id || "" + }; + const merged = mergeSecrets( + current, + incoming, + new Set(["discord_client_secret", "discord_bot_token"]) + ); + if (!merged.discord_redirect_uri) { + const baseUrl = `${req.protocol}://${req.get("host")}`; + merged.discord_redirect_uri = `${baseUrl}/auth/discord/callback`; + } + const result = await verifyDiscordSettings(merged); + if (!result.ok) { + res.render("wizard-discord", { + title: "Discord setup", + form: { + ...incoming, + discord_client_secret: "", + discord_bot_token: "", + discord_redirect_uri: merged.discord_redirect_uri + }, + checks: result.checks, + errors: result.errors, + actionBase: "/setup/discord", + cancelPath: "/setup" + }); + return; + } + saveSettingsMap(merged); + delete req.session.discordWizardSnapshot; + setFlash(req, "success", "Discord setup saved. Please log in."); + res.redirect("/auth/discord"); + }); + + app.post("/setup/discord/cancel", (req, res) => { + if (!isPlatformEnabled("discord")) { + return res.redirect("/setup"); + } + if (isConfigured()) { + return res.redirect("/"); + } + restoreSnapshot(req, "discordWizardSnapshot"); + setFlash(req, "info", "Discord setup canceled."); + res.redirect("/setup"); + }); + + app.get("/setup/twitch", (req, res) => { + if (!isPlatformEnabled("twitch")) { + return res.redirect("/setup"); + } + if (isConfigured()) { + return res.redirect("/"); + } + const current = getTwitchSettings(); + const baseUrl = `${req.protocol}://${req.get("host")}`; + const form = { + ...current, + twitch_client_secret: "", + twitch_bot_oauth: "", + twitch_redirect_uri: + current.twitch_redirect_uri || `${baseUrl}/auth/twitch/callback` + }; + storeSnapshot(req, "twitchWizardSnapshot", current); + res.render("wizard-twitch", { + title: "Twitch setup", + form, + checks: [], + errors: [], + actionBase: "/setup/twitch", + cancelPath: "/setup" + }); + }); + + app.post("/setup/twitch/verify", async (req, res) => { + if (!isPlatformEnabled("twitch")) { + return res.redirect("/setup"); + } + if (isConfigured()) { + return res.redirect("/"); + } + const current = getTwitchSettings(); + const incoming = { + twitch_client_id: req.body.twitch_client_id || "", + twitch_client_secret: req.body.twitch_client_secret || "", + twitch_redirect_uri: req.body.twitch_redirect_uri || "", + twitch_bot_username: req.body.twitch_bot_username || "", + twitch_bot_oauth: req.body.twitch_bot_oauth || "", + twitch_channels: req.body.twitch_channels || "" + }; + const merged = mergeSecrets( + current, + incoming, + new Set(["twitch_client_secret", "twitch_bot_oauth"]) + ); + if (!merged.twitch_redirect_uri) { + const baseUrl = `${req.protocol}://${req.get("host")}`; + merged.twitch_redirect_uri = `${baseUrl}/auth/twitch/callback`; + } + const result = await verifyTwitchSettings(merged); + if (!result.ok) { + res.render("wizard-twitch", { + title: "Twitch setup", + form: { + ...incoming, + twitch_client_secret: "", + twitch_bot_oauth: "", + twitch_redirect_uri: merged.twitch_redirect_uri + }, + checks: result.checks, + errors: result.errors, + actionBase: "/setup/twitch", + cancelPath: "/setup" + }); + return; + } + saveSettingsMap(merged); + delete req.session.twitchWizardSnapshot; + setFlash(req, "success", "Twitch setup saved."); + res.redirect("/setup"); + }); + + app.post("/setup/twitch/cancel", (req, res) => { + if (!isPlatformEnabled("twitch")) { + return res.redirect("/setup"); + } + if (isConfigured()) { + return res.redirect("/"); + } + restoreSnapshot(req, "twitchWizardSnapshot"); + setFlash(req, "info", "Twitch setup canceled."); + res.redirect("/setup"); + }); + + app.get("/setup/youtube", (req, res) => { + if (!isPlatformEnabled("youtube")) { + return res.redirect("/setup"); + } + if (isConfigured()) { + return res.redirect("/"); + } + const current = getYouTubeSettings(); + const baseUrl = `${req.protocol}://${req.get("host")}`; + const form = { + ...current, + youtube_client_secret: "", + youtube_redirect_uri: + current.youtube_redirect_uri || `${baseUrl}/auth/youtube/callback` + }; + const snapshot = { + ...current, + youtube_bot_refresh_token: getSetting("youtube_bot_refresh_token", ""), + youtube_bot_channel_id: getSetting("youtube_bot_channel_id", "") + }; + storeSnapshot(req, "youtubeWizardSnapshot", snapshot); + res.render("wizard-youtube", { + title: "YouTube setup", + form, + checks: [], + errors: [], + actionBase: "/setup/youtube", + cancelPath: "/setup", + connectPath: "/setup/youtube/connect", + botConnected: Boolean(getSetting("youtube_bot_refresh_token", "")), + botChannelId: getSetting("youtube_bot_channel_id", ""), + botChannelName: getYouTubeClient()?.channelName || null + }); + }); + + app.post("/setup/youtube/connect", (req, res) => { + if (!isPlatformEnabled("youtube")) { + return res.redirect("/setup"); + } + if (isConfigured()) { + return res.redirect("/"); + } + const baseUrl = `${req.protocol}://${req.get("host")}`; + const clientId = (req.body.youtube_client_id || "").trim(); + const clientSecret = (req.body.youtube_client_secret || "").trim(); + const redirectUri = + (req.body.youtube_redirect_uri || "").trim() || + `${baseUrl}/auth/youtube/callback`; + if (!clientId || !clientSecret) { + setFlash(req, "error", "Client ID and Client Secret are required."); + return res.redirect("/setup/youtube"); + } + setSetting("youtube_client_id", clientId); + setSetting("youtube_client_secret", clientSecret); + setSetting("youtube_redirect_uri", redirectUri); + const state = crypto.randomBytes(16).toString("hex"); + req.session.youtubeBotState = state; + req.session.youtubeBotReturnTo = "/setup/youtube"; + const url = buildYouTubeAuthUrl(state, redirectUri, { prompt: "consent" }); + res.redirect(url); + }); + + app.post("/setup/youtube/verify", async (req, res) => { + if (!isPlatformEnabled("youtube")) { + return res.redirect("/setup"); + } + if (isConfigured()) { + return res.redirect("/"); + } + const current = getYouTubeSettings(); + const incoming = { + youtube_client_id: req.body.youtube_client_id || "", + youtube_client_secret: req.body.youtube_client_secret || "", + youtube_redirect_uri: req.body.youtube_redirect_uri || "" + }; + const merged = mergeSecrets( + current, + incoming, + new Set(["youtube_client_secret"]) + ); + if (!merged.youtube_redirect_uri) { + const baseUrl = `${req.protocol}://${req.get("host")}`; + merged.youtube_redirect_uri = `${baseUrl}/auth/youtube/callback`; + } + const result = await verifyYouTubeSettings({ + ...merged, + youtube_bot_refresh_token: getSetting("youtube_bot_refresh_token", "") + }); + if (!result.ok) { + res.render("wizard-youtube", { + title: "YouTube setup", + form: { + ...incoming, + youtube_client_secret: "", + youtube_redirect_uri: merged.youtube_redirect_uri + }, + checks: result.checks, + errors: result.errors, + actionBase: "/setup/youtube", + cancelPath: "/setup", + connectPath: "/setup/youtube/connect", + botConnected: Boolean(getSetting("youtube_bot_refresh_token", "")), + botChannelId: getSetting("youtube_bot_channel_id", ""), + botChannelName: getYouTubeClient()?.channelName || null + }); + return; + } + if (result.channel?.id) { + merged.youtube_bot_channel_id = result.channel.id; + } + saveSettingsMap(merged); + delete req.session.youtubeWizardSnapshot; + setFlash(req, "success", "YouTube setup saved."); + res.redirect("/setup"); + }); + + app.post("/setup/youtube/cancel", (req, res) => { + if (!isPlatformEnabled("youtube")) { + return res.redirect("/setup"); + } + if (isConfigured()) { + return res.redirect("/"); + } + restoreSnapshot(req, "youtubeWizardSnapshot"); + setFlash(req, "info", "YouTube setup canceled."); + res.redirect("/setup"); + }); + + app.get("/auth/discord", (req, res) => { + if (!isPlatformEnabled("discord")) { + setFlash(req, "error", "Discord is disabled in Platform Integration."); + return res.redirect("/setup"); + } + if (!isPlatformConfigured("discord")) { + setFlash(req, "error", "Discord is not configured yet."); + return res.redirect("/setup"); + } + const state = crypto.randomBytes(16).toString("hex"); + if (req.session.user) { + req.session.discordLinkState = state; + } else { + req.session.discordState = state; + } + const baseUrl = `${req.protocol}://${req.get("host")}`; + const redirectUri = + getSetting("discord_redirect_uri") || + `${baseUrl}/auth/discord/callback`; + const url = buildDiscordAuthUrl(state, redirectUri); + res.redirect(url); + }); + + app.get("/auth/discord/callback", async (req, res) => { + if (!isPlatformEnabled("discord")) { + return res.status(400).render("error", { + title: "Login failed", + message: "Discord is disabled in Platform Integration." + }); + } + const { code, state } = req.query; + const isLogin = state && state === req.session.discordState; + const isLink = state && state === req.session.discordLinkState && req.session.user; + if (!code || (!isLogin && !isLink)) { + return res.status(400).render("error", { + title: "Login failed", + message: "Invalid OAuth state." + }); + } + try { + if (isLogin) { + delete req.session.discordState; + } + if (isLink) { + delete req.session.discordLinkState; + } + const baseUrl = `${req.protocol}://${req.get("host")}`; + const redirectUri = + getSetting("discord_redirect_uri") || + `${baseUrl}/auth/discord/callback`; + const token = await exchangeDiscordCode(code, redirectUri); + const user = await fetchDiscordUser(token.access_token); + const guildId = getSetting("discord_guild_id"); + const member = guildId + ? await fetchDiscordGuildMember(token.access_token, guildId) + : null; + const roles = member?.roles || []; + const flags = getRoleFlags(roles); + if (isLink) { + const linked = linkIdentityToUser({ + userId: req.session.user.id, + provider: "discord", + providerUserId: user.id, + displayName: user.global_name || user.username, + avatar: user.avatar + ? `https://cdn.discordapp.com/avatars/${user.id}/${user.avatar}.png?size=128` + : null + }); + req.session.user = { + id: linked.id, + username: linked.internal_username, + avatar: user.avatar, + roles, + ...flags + }; + req.session.discordToken = token; + setFlash(req, "success", "Discord account linked."); + res.redirect("/profile"); + return; + } + const profile = storeDiscordUser(user); + req.session.user = { + id: profile.id, + username: profile.internal_username, + avatar: user.avatar, + roles, + ...flags + }; + req.session.discordToken = token; + setFlash(req, "success", "Logged in."); + res.redirect("/"); + } catch (error) { + console.error(error); + res.status(500).render("error", { + title: "Login failed", + message: "Discord authentication failed." + }); + } + }); + + app.post("/auth/logout", (req, res) => { + req.session.destroy(() => { + res.redirect("/"); + }); + }); + + app.get("/auth/twitch", requireAuth, (req, res) => { + if (!isPlatformEnabled("twitch")) { + setFlash(req, "error", "Twitch is disabled in Platform Integration."); + return res.redirect("/profile"); + } + if (!isPlatformConfigured("twitch")) { + setFlash(req, "error", "Twitch is not configured yet."); + return res.redirect("/profile"); + } + const state = crypto.randomBytes(16).toString("hex"); + req.session.twitchState = state; + const baseUrl = `${req.protocol}://${req.get("host")}`; + const redirectUri = + getSetting("twitch_redirect_uri") || + `${baseUrl}/auth/twitch/callback`; + const url = buildTwitchAuthUrl(state, redirectUri); + res.redirect(url); + }); + + app.get("/auth/twitch/login", (req, res) => { + if (!isPlatformEnabled("twitch")) { + setFlash(req, "error", "Twitch is disabled in Platform Integration."); + return res.redirect("/setup"); + } + if (!isPlatformConfigured("twitch")) { + setFlash(req, "error", "Twitch is not configured yet."); + return res.redirect("/setup"); + } + const state = crypto.randomBytes(16).toString("hex"); + req.session.twitchLoginState = state; + const baseUrl = `${req.protocol}://${req.get("host")}`; + const redirectUri = + getSetting("twitch_redirect_uri") || + `${baseUrl}/auth/twitch/callback`; + const url = buildTwitchAuthUrl(state, redirectUri); + res.redirect(url); + }); + + app.get("/auth/twitch/callback", async (req, res) => { + if (!isPlatformEnabled("twitch")) { + return res.status(400).render("error", { + title: "Auth failed", + message: "Twitch is disabled in Platform Integration." + }); + } + const { code, state } = req.query; + const isLogin = state && state === req.session.twitchLoginState; + const isLink = state && state === req.session.twitchState && req.session.user; + if (!code || (!isLogin && !isLink)) { + return res.status(400).render("error", { + title: "Auth failed", + message: "Invalid Twitch OAuth state." + }); + } + try { + const baseUrl = `${req.protocol}://${req.get("host")}`; + const redirectUri = + getSetting("twitch_redirect_uri") || + `${baseUrl}/auth/twitch/callback`; + const token = await exchangeTwitchCode(code, redirectUri); + const twitchUser = await fetchTwitchUser(token.access_token); + if (!twitchUser) { + throw new Error("Twitch user not found."); + } + const now = Date.now(); + if (isLogin) { + const profile = ensureUserForIdentity({ + provider: "twitch", + providerUserId: twitchUser.id, + displayName: twitchUser.display_name, + avatar: twitchUser.profile_image_url || null + }); + db.prepare( + "INSERT INTO linked_accounts (user_id, provider, provider_user_id, display_name, access_token, refresh_token, expires_at, created_at, updated_at) " + + "VALUES (?, 'twitch', ?, ?, ?, ?, ?, ?, ?) " + + "ON CONFLICT(user_id, provider) DO UPDATE SET provider_user_id = excluded.provider_user_id, display_name = excluded.display_name, access_token = excluded.access_token, refresh_token = excluded.refresh_token, expires_at = excluded.expires_at, updated_at = excluded.updated_at" + ).run( + profile.id, + twitchUser.id, + twitchUser.display_name, + token.access_token, + token.refresh_token || "", + token.expires_in ? now + token.expires_in * 1000 : null, + now, + now + ); + const discordIdentity = db + .prepare( + "SELECT provider_user_id FROM user_identities WHERE user_id = ? AND provider = 'discord'" + ) + .get(profile.id); + const roles = discordIdentity?.provider_user_id + ? await fetchDiscordRolesForUser(discordIdentity.provider_user_id) + : []; + const flags = getRoleFlags(roles); + req.session.user = { + id: profile.id, + username: profile.internal_username, + roles, + ...flags + }; + req.session.twitchToken = token; + setFlash(req, "success", "Logged in with Twitch."); + res.redirect("/"); + } else { + const profile = linkIdentityToUser({ + userId: req.session.user.id, + provider: "twitch", + providerUserId: twitchUser.id, + displayName: twitchUser.display_name, + avatar: twitchUser.profile_image_url || null + }); + db.prepare( + "INSERT INTO linked_accounts (user_id, provider, provider_user_id, display_name, access_token, refresh_token, expires_at, created_at, updated_at) " + + "VALUES (?, 'twitch', ?, ?, ?, ?, ?, ?, ?) " + + "ON CONFLICT(user_id, provider) DO UPDATE SET provider_user_id = excluded.provider_user_id, display_name = excluded.display_name, access_token = excluded.access_token, refresh_token = excluded.refresh_token, expires_at = excluded.expires_at, updated_at = excluded.updated_at" + ).run( + profile.id, + twitchUser.id, + twitchUser.display_name, + token.access_token, + token.refresh_token || "", + token.expires_in ? now + token.expires_in * 1000 : null, + now, + now + ); + req.session.user.id = profile.id; + req.session.user.username = profile.internal_username; + setFlash(req, "success", "Twitch account linked."); + res.redirect("/profile"); + } + } catch (error) { + console.error(error); + res.status(500).render("error", { + title: isLogin ? "Login failed" : "Link failed", + message: isLogin + ? "Unable to sign in with Twitch." + : "Unable to link Twitch account." + }); + } + }); + + app.get("/auth/youtube", requireAuth, (req, res) => { + if (!isPlatformEnabled("youtube")) { + setFlash(req, "error", "YouTube is disabled in Platform Integration."); + return res.redirect("/profile"); + } + if (!isPlatformConfigured("youtube")) { + setFlash(req, "error", "YouTube is not configured yet."); + return res.redirect("/profile"); + } + const state = crypto.randomBytes(16).toString("hex"); + req.session.youtubeState = state; + const baseUrl = `${req.protocol}://${req.get("host")}`; + const redirectUri = + getSetting("youtube_redirect_uri") || + `${baseUrl}/auth/youtube/callback`; + const url = buildYouTubeAuthUrl(state, redirectUri); + res.redirect(url); + }); + + app.get("/auth/youtube/login", (req, res) => { + if (!isPlatformEnabled("youtube")) { + setFlash(req, "error", "YouTube is disabled in Platform Integration."); + return res.redirect("/setup"); + } + if (!isPlatformConfigured("youtube")) { + setFlash(req, "error", "YouTube is not configured yet."); + return res.redirect("/setup"); + } + const state = crypto.randomBytes(16).toString("hex"); + req.session.youtubeLoginState = state; + const baseUrl = `${req.protocol}://${req.get("host")}`; + const redirectUri = + getSetting("youtube_redirect_uri") || + `${baseUrl}/auth/youtube/callback`; + const url = buildYouTubeAuthUrl(state, redirectUri); + res.redirect(url); + }); + + app.get("/auth/youtube/callback", async (req, res) => { + if (!isPlatformEnabled("youtube")) { + return res.status(400).render("error", { + title: "Auth failed", + message: "YouTube is disabled in Platform Integration." + }); + } + const { code, state } = req.query; + const isLogin = state && state === req.session.youtubeLoginState; + const isLink = state && state === req.session.youtubeState && req.session.user; + const isBot = state && state === req.session.youtubeBotState; + if (!code || (!isLogin && !isLink && !isBot)) { + return res.status(400).render("error", { + title: "Auth failed", + message: "Invalid YouTube OAuth state." + }); + } + try { + const baseUrl = `${req.protocol}://${req.get("host")}`; + const redirectUri = + getSetting("youtube_redirect_uri") || + `${baseUrl}/auth/youtube/callback`; + const token = await exchangeYouTubeCode(code, redirectUri); + const channel = await fetchYouTubeChannel(token.access_token); + if (!channel) { + throw new Error("YouTube channel not found."); + } + const displayName = channel.snippet?.title || "YouTube Channel"; + const avatar = channel.snippet?.thumbnails?.default?.url || null; + const now = Date.now(); + + if (isBot) { + const refreshToken = + token.refresh_token || getSetting("youtube_bot_refresh_token", ""); + if (!refreshToken) { + throw new Error("Missing YouTube refresh token."); + } + setSetting("youtube_bot_refresh_token", refreshToken); + setSetting("youtube_bot_channel_id", channel.id || ""); + req.session.youtubeBotState = null; + const returnTo = req.session.youtubeBotReturnTo || "/admin/youtube-wizard"; + req.session.youtubeBotReturnTo = null; + setFlash(req, "success", "YouTube bot connected."); + return res.redirect(returnTo); + } + + if (isLogin) { + const profile = ensureUserForIdentity({ + provider: "youtube", + providerUserId: channel.id, + displayName, + avatar + }); + db.prepare( + "INSERT INTO linked_accounts (user_id, provider, provider_user_id, display_name, access_token, refresh_token, expires_at, created_at, updated_at) " + + "VALUES (?, 'youtube', ?, ?, ?, ?, ?, ?, ?) " + + "ON CONFLICT(user_id, provider) DO UPDATE SET provider_user_id = excluded.provider_user_id, display_name = excluded.display_name, access_token = excluded.access_token, refresh_token = excluded.refresh_token, expires_at = excluded.expires_at, updated_at = excluded.updated_at" + ).run( + profile.id, + channel.id, + displayName, + token.access_token, + token.refresh_token || "", + token.expires_in ? now + token.expires_in * 1000 : null, + now, + now + ); + const discordIdentity = db + .prepare( + "SELECT provider_user_id FROM user_identities WHERE user_id = ? AND provider = 'discord'" + ) + .get(profile.id); + const roles = discordIdentity?.provider_user_id + ? await fetchDiscordRolesForUser(discordIdentity.provider_user_id) + : []; + const flags = getRoleFlags(roles); + req.session.user = { + id: profile.id, + username: profile.internal_username, + roles, + ...flags + }; + req.session.youtubeToken = token; + setFlash(req, "success", "Logged in with YouTube."); + return res.redirect("/"); + } + + const profile = linkIdentityToUser({ + userId: req.session.user.id, + provider: "youtube", + providerUserId: channel.id, + displayName, + avatar + }); + db.prepare( + "INSERT INTO linked_accounts (user_id, provider, provider_user_id, display_name, access_token, refresh_token, expires_at, created_at, updated_at) " + + "VALUES (?, 'youtube', ?, ?, ?, ?, ?, ?, ?) " + + "ON CONFLICT(user_id, provider) DO UPDATE SET provider_user_id = excluded.provider_user_id, display_name = excluded.display_name, access_token = excluded.access_token, refresh_token = excluded.refresh_token, expires_at = excluded.expires_at, updated_at = excluded.updated_at" + ).run( + profile.id, + channel.id, + displayName, + token.access_token, + token.refresh_token || "", + token.expires_in ? now + token.expires_in * 1000 : null, + now, + now + ); + req.session.user.id = profile.id; + req.session.user.username = profile.internal_username; + setFlash(req, "success", "YouTube account linked."); + res.redirect("/profile"); + } catch (error) { + console.error(error); + res.status(500).render("error", { + title: isBot ? "Bot connect failed" : isLogin ? "Login failed" : "Link failed", + message: isBot + ? "Unable to connect the YouTube bot." + : isLogin + ? "Unable to sign in with YouTube." + : "Unable to link YouTube account." + }); + } + }); + + app.get("/profile", requireAuth, (req, res) => { + const profile = getUserProfileById(req.session.user.id); + if (!profile) { + req.session.destroy(() => { + res.redirect("/"); + }); + return; + } + const accounts = getUserIdentities(req.session.user.id); + const cooldownDays = 90; + const cooldownMs = cooldownDays * 24 * 60 * 60 * 1000; + const lastUpdate = profile.username_updated_at || 0; + const nextAllowedAt = lastUpdate ? lastUpdate + cooldownMs : 0; + const canChangeUsername = !lastUpdate || Date.now() >= nextAllowedAt; + const remainingMs = canChangeUsername ? 0 : nextAllowedAt - Date.now(); + const remainingDays = canChangeUsername + ? 0 + : Math.max(1, Math.ceil(remainingMs / (24 * 60 * 60 * 1000))); + const profileWidgets = profileSections + .filter((section) => hasAccess(req.session.user, section.role || "public")) + .slice() + .sort((a, b) => (a.order || 100) - (b.order || 100)) + .map((section) => ({ + ...section, + locals: { + ...(section.locals || {}), + user: req.session.user, + profile, + accounts + } + })); + res.render("profile", { + title: "Your profile", + accounts, + profile, + profileSections: profileWidgets, + canChangeUsername, + usernameCooldownDays: cooldownDays, + usernameCooldownRemainingDays: remainingDays, + usernameNextAllowedAt: nextAllowedAt + }); + }); + + app.post("/profile/unlink/:provider", requireAuth, (req, res) => { + const provider = req.params.provider; + if (provider === "discord") { + setFlash(req, "error", "Discord cannot be unlinked from the WebUI."); + return res.redirect("/profile"); + } + db.prepare( + "DELETE FROM linked_accounts WHERE user_id = ? AND provider = ?" + ).run(req.session.user.id, provider); + db.prepare( + "DELETE FROM user_identities WHERE user_id = ? AND provider = ?" + ).run(req.session.user.id, provider); + setFlash(req, "success", "Account unlinked."); + res.redirect("/profile"); + }); + + app.post("/profile/username", requireAuth, (req, res) => { + const desired = (req.body.internal_username || "").trim(); + const profile = getUserProfileById(req.session.user.id); + const cooldownMs = 90 * 24 * 60 * 60 * 1000; + if (profile?.username_updated_at) { + const nextAllowed = profile.username_updated_at + cooldownMs; + if (Date.now() < nextAllowed) { + setFlash( + req, + "error", + "You can change your username once every 90 days." + ); + return res.redirect("/profile"); + } + } + const result = updateInternalUsername(req.session.user.id, desired); + if (!result.ok) { + setFlash(req, "error", result.reason); + return res.redirect("/profile"); + } + req.session.user.username = result.username; + setFlash(req, "success", "Username updated."); + res.redirect("/profile"); + }); + + app.get("/health", (req, res) => { + res.set("Cache-Control", "no-store"); + res.json({ ok: true, ts: Date.now() }); + }); + + app.get("/commands", (req, res) => { + const prefix = getSetting("command_prefix", "!"); + const baseUrl = `${req.protocol}://${req.get("host")}`; + const usageMap = buildCommandUsageMap(); + const commands = []; + const conflictMap = new Map(); + const enabledPlatforms = getEnabledPlatformIds(); + + const addConflictEntries = (command) => { + const triggers = command.conflictTriggers || [command.trigger]; + for (const trigger of triggers) { + for (const platform of command.platforms) { + const subcommand = command.subcommand || ""; + const key = `${platform}:${trigger}:${subcommand}`; + const entries = conflictMap.get(key) || []; + if (!entries.some((entry) => entry.id === command.id)) { + entries.push({ + id: command.id, + name: command.name, + origin: command.origin + }); + } + conflictMap.set(key, entries); + } + } + }; + + const addCommand = (command) => { + command.count = usageMap.get(command.id) || 0; + command.anchor = `cmd-${slugify(command.id)}`; + command.link = `${baseUrl}/commands#${command.anchor}`; + const subcommand = command.subcommand || ""; + command.search = [ + command.triggerDisplay, + subcommand, + command.name, + command.description, + command.origin, + command.platforms.join(" ") + ] + .join(" ") + .toLowerCase(); + command.sort = { + trigger: subcommand ? `${command.trigger} ${subcommand}` : command.trigger, + name: command.name.toLowerCase(), + description: command.description.toLowerCase(), + level: command.level.toLowerCase(), + platform: command.platforms.join(" "), + origin: command.origin.toLowerCase(), + count: command.count + }; + if (command.levelHelp) { + command.levelHelp = command.levelHelp.toString(); + } + commands.push(command); + addConflictEntries(command); + }; + + const customCommands = db + .prepare( + "SELECT id, trigger, response, mode, language, platform FROM custom_commands WHERE enabled = 1 ORDER BY trigger" + ) + .all(); + for (const row of customCommands) { + const trigger = normalizeCommandTrigger(row.trigger); + if (!trigger) { + continue; + } + const platforms = normalizeCustomPlatforms(row.platform, enabledPlatforms); + const description = + row.mode === "advanced" + ? `Advanced command (${row.language})` + : truncateText(row.response, 140); + addCommand({ + id: `custom:${trigger}`, + trigger, + triggerDisplay: `${prefix}${trigger}`, + name: toTitleCase(trigger) || trigger, + description, + level: "public", + origin: "Custom", + platforms, + platformLabels: buildPlatformLabels(platforms), + conflictTriggers: [trigger] + }); + } + + const topOptions = getTopCommandOptions(); + if (topOptions.length) { + const topPlatforms = enabledPlatforms.slice(); + const topPlatformLabels = buildPlatformLabels(topPlatforms); + const topUsage = buildUsage("top", "top "); + addCommand({ + id: "top", + trigger: "top", + triggerDisplay: `${prefix}${topUsage}`, + name: "Top", + description: "Show leaderboard rankings.", + level: "public", + origin: "Core", + platforms: topPlatforms, + platformLabels: topPlatformLabels, + conflictTriggers: ["top"] + }); + for (const option of topOptions) { + const subcommand = normalizeSubcommand(option.id); + if (!subcommand) { + continue; + } + const usage = buildUsage("top", `top ${subcommand}`); + addCommand({ + id: `top:${subcommand}`, + trigger: "top", + subcommand, + triggerDisplay: `${prefix}${usage}`, + name: option.label || toTitleCase(subcommand) || subcommand, + description: + option.description || + `Show ${option.label || toTitleCase(subcommand) || subcommand} rankings.`, + level: "public", + origin: "Core", + platforms: topPlatforms, + platformLabels: topPlatformLabels, + conflictTriggers: ["top"] + }); + } + } + + const plugins = getPlugins().filter((plugin) => plugin.enabled); + for (const plugin of plugins) { + const cmdsPath = path.join(plugin.path, "cmds.json"); + if (!fs.existsSync(cmdsPath)) { + continue; + } + const manifest = readJsonSafe(cmdsPath); + if (!manifest || !Array.isArray(manifest.commands)) { + continue; + } + const pluginSettings = getPluginSettingsMap(plugin.id); + const platformKeys = manifest.platformKeys || {}; + const platformFlags = {}; + for (const platform of enabledPlatforms) { + platformFlags[platform] = platformKeys[platform] + ? parseBooleanSetting(pluginSettings[platformKeys[platform]], true) + : true; + } + const pluginName = manifest.pluginName || plugin.name || plugin.id; + + for (const command of manifest.commands) { + if (!command || !command.trigger) { + continue; + } + const enabled = command.enabledKey + ? parseBooleanSetting(pluginSettings[command.enabledKey], true) + : true; + if (!enabled) { + continue; + } + const override = command.triggerKey + ? pluginSettings[command.triggerKey] + : ""; + const trigger = normalizeCommandTrigger(override, command.trigger); + if (!trigger) { + continue; + } + const subcommand = normalizeSubcommand(command.subcommand); + const usage = buildUsage( + trigger, + command.usage || (subcommand ? `${trigger} ${subcommand}` : trigger) + ); + const platforms = (Array.isArray(command.platforms) && command.platforms.length + ? command.platforms + : enabledPlatforms + ).filter((platform) => platformFlags[platform] && enabledPlatforms.includes(platform)); + if (!platforms.length) { + continue; + } + const defaultTrigger = normalizeCommandTrigger(command.trigger); + const useAliases = + Array.isArray(command.aliases) && + command.aliases.length && + (!command.aliasesEnabledWhenDefault || trigger === defaultTrigger); + const aliasTriggers = useAliases + ? command.aliases + .map((alias) => normalizeCommandTrigger(alias)) + .filter(Boolean) + : []; + const description = truncateText(command.description || "", 140); + addCommand({ + id: `${plugin.id}:${command.id || trigger}`, + trigger, + subcommand, + triggerDisplay: `${prefix}${usage}`, + name: command.name || toTitleCase(trigger) || trigger, + description, + level: command.level || "public", + levelHelp: command.levelHelp || "", + origin: pluginName, + platforms, + platformLabels: buildPlatformLabels(platforms), + conflictTriggers: [trigger, ...aliasTriggers] + }); + } + } + + commands.sort((a, b) => + a.triggerDisplay.localeCompare(b.triggerDisplay) + ); + + const conflicts = []; + for (const [key, entries] of conflictMap.entries()) { + if (entries.length < 2) { + continue; + } + const [platform, trigger, subcommand] = key.split(":"); + const triggerLabel = subcommand ? `${trigger} ${subcommand}` : trigger; + const sources = entries.map((entry) => { + if (entry.origin === entry.name) { + return entry.origin; + } + return `${entry.origin} (${entry.name})`; + }); + conflicts.push({ + trigger: triggerLabel, + triggerDisplay: `${prefix}${triggerLabel}`, + platform, + platformLabel: getPlatformLabel(platform), + sourcesLabel: sources.join(", ") + }); + } + conflicts.sort((a, b) => { + if (a.trigger === b.trigger) { + return a.platform.localeCompare(b.platform); + } + return a.trigger.localeCompare(b.trigger); + }); + const subcommandGroups = new Map(); + for (const command of commands) { + if (!command.subcommand) { + continue; + } + const group = subcommandGroups.get(command.trigger) || { + root: null, + subcommands: [] + }; + group.subcommands.push(command); + subcommandGroups.set(command.trigger, group); + } + + for (const command of commands) { + if (command.subcommand) { + continue; + } + const group = subcommandGroups.get(command.trigger); + if (group && !group.root) { + group.root = command; + } + } + + const buildRootFromSubcommands = (trigger, group) => { + const platforms = Array.from( + new Set(group.subcommands.flatMap((item) => item.platforms)) + ); + const origins = Array.from( + new Set(group.subcommands.map((item) => item.origin)) + ); + const levels = Array.from( + new Set(group.subcommands.map((item) => item.level)) + ); + const platformLabels = buildPlatformLabels(platforms); + const name = toTitleCase(trigger) || trigger; + const subcommandLabels = group.subcommands + .map((item) => item.subcommand) + .filter(Boolean); + const description = subcommandLabels.length + ? `Subcommands: ${subcommandLabels.join(", ")}` + : "Subcommand group."; + const origin = origins.length === 1 ? origins[0] : "Multiple"; + const level = levels.length === 1 ? levels[0] : "mixed"; + const count = group.subcommands.reduce( + (total, item) => total + (item.count || 0), + 0 + ); + const id = `group:${trigger}`; + const triggerDisplay = `${prefix}${trigger}`; + const anchor = `cmd-${slugify(id)}`; + const link = `${baseUrl}/commands#${anchor}`; + const search = [ + triggerDisplay, + name, + description, + origin, + platforms.join(" "), + subcommandLabels.join(" ") + ] + .join(" ") + .trim(); + const sort = { + trigger, + name: name.toLowerCase(), + description: description.toLowerCase(), + level: level.toLowerCase(), + platform: platforms.join(" "), + origin: origin.toLowerCase(), + count + }; + return { + id, + groupKey: trigger, + trigger, + triggerDisplay, + name, + description, + level, + origin, + platforms, + platformLabels, + count, + anchor, + link, + search, + sort + }; + }; + + const commandGroups = []; + const processed = new Set(); + for (const command of commands) { + const group = subcommandGroups.get(command.trigger); + if (!group) { + command.groupKey = command.id; + commandGroups.push({ root: command, subcommands: [] }); + continue; + } + if (processed.has(command.trigger)) { + continue; + } + const root = group.root || buildRootFromSubcommands(command.trigger, group); + root.groupKey = root.groupKey || command.trigger; + const subcommands = group.subcommands + .slice() + .sort((a, b) => a.triggerDisplay.localeCompare(b.triggerDisplay)) + .map((item) => ({ ...item, groupKey: root.groupKey })); + if (subcommands.length) { + const extraSearch = subcommands + .map((item) => [item.subcommand, item.name].filter(Boolean).join(" ")) + .join(" "); + root.search = `${root.search} ${extraSearch}`.trim(); + } + commandGroups.push({ root, subcommands }); + processed.add(command.trigger); + } + + res.render("commands", { + title: "Commands", + commandGroups, + conflicts, + isAdmin: Boolean(req.session.user?.isAdmin) + }); + }); + + app.get("/leaderboards", (req, res) => { + res.render("leaderboards", { + title: "Leaderboards", + sections: getLeaderboardSections({ limit: 25 }) + }); + }); + + app.get("/stats", requireAuth, (req, res) => { + const payload = buildUserStatsPayload(req.session.user.id); + res.render("stats", { + title: "Your stats", + stats: payload.stats, + expression: payload.expression, + pluginStats: payload.pluginStats, + statsOwner: { + username: req.session.user.username, + isSelf: true + }, + compare: null + }); + }); + + app.get("/stats/:username", (req, res) => { + const username = (req.params.username || "").trim(); + if (!username) { + return res.status(404).render("error", { + title: "Not found", + message: "User not found." + }); + } + const profile = db + .prepare( + "SELECT id, internal_username FROM user_profiles WHERE internal_username = ? LIMIT 1" + ) + .get(username); + if (!profile) { + return res.status(404).render("error", { + title: "Not found", + message: "User not found." + }); + } + + const payload = buildUserStatsPayload(profile.id); + let compare = null; + if (req.session.user && req.session.user.id !== profile.id) { + const currentPayload = buildUserStatsPayload(req.session.user.id); + compare = { + leftLabel: req.session.user.username || "You", + rightLabel: profile.internal_username, + rows: buildCompareRows(currentPayload, payload) + }; + } + + res.render("stats", { + title: `${profile.internal_username}'s stats`, + stats: payload.stats, + expression: payload.expression, + pluginStats: payload.pluginStats, + statsOwner: { + username: profile.internal_username, + isSelf: req.session.user?.id === profile.id + }, + compare + }); + }); + + app.get("/pages/:slug", (req, res) => { + const page = db + .prepare( + "SELECT * FROM custom_pages WHERE slug = ? AND enabled = 1 LIMIT 1" + ) + .get(req.params.slug); + if (!page) { + return res.status(404).render("error", { + title: "Not found", + message: "That page does not exist." + }); + } + if (!hasAccess(req.session.user, page.role)) { + return res.status(403).render("error", { + title: "Access denied", + message: "You do not have access to that page." + }); + } + const format = normalizePageFormat(page.format); + const pageData = { + ...page, + format, + content_css: page.content_css || "" + }; + const renderedContent = + format === "markdown" ? renderMarkdown(pageData.content) : ""; + const pageSrcdoc = + format === "html" ? buildCustomPageSrcdoc(pageData, res.locals.theme) : ""; + const safePageSrcdoc = pageSrcdoc.replace(/<\/script/gi, "<\\/script"); + res.render("custom-page", { + title: page.title, + page: pageData, + renderedContent, + pageSrcdoc: safePageSrcdoc + }); + }); + + app.get("/moderator", requireRole("mod"), (req, res) => { + const now = Date.now(); + const totals = db + .prepare( + "SELECT user_id, SUM(CASE WHEN end_at IS NULL THEN ? - start_at ELSE end_at - start_at END) AS total_ms " + + "FROM mod_role_periods GROUP BY user_id" + ) + .all(now); + const totalsMap = new Map( + totals.map((row) => [row.user_id, Number(row.total_ms || 0)]) + ); + const users = listUsersWithIdentities() + .filter((user) => totalsMap.has(user.id)) + .map((user) => { + const identities = (user.identities || []).map((identity) => ({ + ...identity, + label: getPlatformLabel(identity.provider) || identity.provider + })); + const aliases = identities + .map( + (identity) => + `${identity.label}: ${identity.display_name || identity.provider_user_id}` + ) + .join(" | "); + return { + id: user.id, + username: user.internal_username, + identities, + aliasText: aliases, + totalMs: totalsMap.get(user.id) || 0 + }; + }) + .sort((a, b) => b.totalMs - a.totalMs); + + res.render("moderator", { + title: "Mods List", + mods: users, + formatDuration + }); + }); + + app.get("/admin", requireRole("admin"), (req, res) => { + res.render("admin-dashboard", { + title: "Admin dashboard" + }); + }); + + app.get("/admin/settings", requireRole("admin"), (req, res) => { + res.render("admin-settings", { + title: "Settings", + settings: getAllSettings(), + platforms: getPlatformStatus(), + navIconItems: buildNavIconItems(req.session.user, navItems, req.path) + }); + }); + + app.post("/admin/settings", requireRole("admin"), (req, res) => { + const fields = [ + "site_title", + "command_prefix", + "auto_update_enabled", + "auto_update_interval_minutes", + "git_remote", + "git_branch" + ]; + for (const field of fields) { + if (req.body[field] !== undefined) { + const value = req.body[field]; + if (field === "auto_update_enabled") { + setSetting(field, value === "on"); + } else if (field === "auto_update_interval_minutes") { + setSetting(field, Number(value)); + } else { + setSetting(field, value.trim()); + } + } + } + const platformStatus = getPlatformStatus(); + const nextPlatformValues = new Map(); + for (const platform of platformStatus) { + nextPlatformValues.set(platform.id, req.body[platform.enabledKey] === "on"); + } + const hasLoginPlatform = platformStatus.some( + (platform) => + platform.supported && + platform.supportsLogin && + nextPlatformValues.get(platform.id) + ); + if (!hasLoginPlatform) { + setFlash( + req, + "error", + "At least one login platform must remain enabled." + ); + return res.redirect("/admin/settings"); + } + + let restartNeeded = false; + for (const platform of platformStatus) { + const nextValue = nextPlatformValues.get(platform.id); + const currentValue = isPlatformEnabled(platform.id); + if (nextValue !== currentValue) { + restartNeeded = true; + } + setSetting(platform.enabledKey, nextValue); + } + setFlash( + req, + "success", + restartNeeded ? "Settings saved. Restarting..." : "Settings saved." + ); + res.redirect("/admin/settings"); + if (restartNeeded) { + requestRestart(); + } + }); + + app.post( + "/admin/settings/nav-icons", + requireRole("admin"), + navIconSingle, + (req, res) => { + if (req.uploadError) { + setFlash(req, "error", req.uploadError); + return res.redirect("/admin/settings"); + } + const itemId = (req.body.item_id || "").trim(); + if (!itemId) { + setFlash(req, "error", "Missing navigation item."); + return res.redirect("/admin/settings"); + } + if (!req.file) { + setFlash(req, "error", "Upload an SVG or PNG icon."); + return res.redirect("/admin/settings"); + } + const map = getSetting("nav_item_icons", {}) || {}; + const previous = map[itemId]; + map[itemId] = req.file.filename; + setSetting("nav_item_icons", map); + if (previous) { + try { + fs.rmSync(path.join(navIconDir, previous), { force: true }); + } catch { + // ignore cleanup errors + } + } + setFlash(req, "success", "Navigation icon updated."); + res.redirect("/admin/settings"); + } + ); + + app.post("/admin/settings/nav-icons/reset", requireRole("admin"), (req, res) => { + const itemId = (req.body.item_id || "").trim(); + if (!itemId) { + setFlash(req, "error", "Missing navigation item."); + return res.redirect("/admin/settings"); + } + const map = getSetting("nav_item_icons", {}) || {}; + const previous = map[itemId]; + delete map[itemId]; + setSetting("nav_item_icons", map); + if (previous) { + try { + fs.rmSync(path.join(navIconDir, previous), { force: true }); + } catch { + // ignore cleanup errors + } + } + setFlash(req, "success", "Navigation icon reset."); + res.redirect("/admin/settings"); + }); + + app.get("/admin/navigation", requireRole("admin"), (req, res) => { + const availableItems = collectNavItems(req.session.user, navItems, req.path); + const sortedItems = availableItems + .slice() + .sort((a, b) => { + if (a.section === b.section) { + return a.label.localeCompare(b.label); + } + return a.section.localeCompare(b.section); + }); + const defaultStructure = buildDefaultNavStructure(sortedItems); + const storedStructure = normalizeNavStructure(getSetting("nav_structure", null)); + const navStructure = storedStructure || { + ...defaultStructure, + enabled: false, + includeUnassigned: true + }; + const navSections = storedStructure?.sections?.length + ? storedStructure.sections + : defaultStructure.sections; + res.render("admin-navigation", { + title: "Navigation", + navStructure, + navSectionsJson: JSON.stringify(navSections, null, 2), + navSectionsData: JSON.stringify(navSections), + defaultSectionsJson: JSON.stringify(defaultStructure.sections, null, 2), + navItems: sortedItems, + navItemsJson: JSON.stringify(sortedItems), + sectionIcons: NAV_SECTION_ICONS + }); + }); + + app.post("/admin/navigation", requireRole("admin"), (req, res) => { + const enabled = req.body.nav_enabled === "on"; + const includeUnassigned = req.body.nav_include_unassigned === "on"; + const unassignedLabel = (req.body.nav_unassigned_label || "").trim(); + const unassignedIcon = (req.body.nav_unassigned_icon || "").trim(); + const unassignedId = (req.body.nav_unassigned_id || "").trim(); + const rawSections = (req.body.nav_sections || "").trim(); + let sections = []; + if (rawSections) { + try { + sections = JSON.parse(rawSections); + } catch { + setFlash(req, "error", "Navigation JSON is invalid."); + return res.redirect("/admin/navigation"); + } + } + if (!Array.isArray(sections)) { + setFlash(req, "error", "Navigation JSON must be an array of sections."); + return res.redirect("/admin/navigation"); + } + const navStructure = normalizeNavStructure({ + enabled, + includeUnassigned, + unassignedLabel, + unassignedIcon, + unassignedId, + sections + }); + if (!navStructure) { + setFlash(req, "error", "Navigation settings could not be saved."); + return res.redirect("/admin/navigation"); + } + setSetting("nav_structure", navStructure); + setFlash(req, "success", "Navigation updated."); + res.redirect("/admin/navigation"); + }); + + app.post("/admin/navigation/reset", requireRole("admin"), (req, res) => { + setSetting("nav_structure", null); + setFlash(req, "success", "Navigation reset to default."); + res.redirect("/admin/navigation"); + }); + + app.get("/admin/discord-wizard", requireRole("admin"), (req, res) => { + if (!isPlatformEnabled("discord")) { + setFlash(req, "error", "Discord is disabled in Platform Integration."); + return res.redirect("/admin/settings"); + } + const current = getDiscordSettings(); + const baseUrl = `${req.protocol}://${req.get("host")}`; + const form = { + ...current, + discord_client_secret: "", + discord_bot_token: "", + discord_redirect_uri: + current.discord_redirect_uri || `${baseUrl}/auth/discord/callback` + }; + storeSnapshot(req, "discordWizardSnapshot", current); + res.render("wizard-discord", { + title: "Discord setup", + form, + checks: [], + errors: [], + actionBase: "/admin/discord-wizard", + cancelPath: "/admin/settings" + }); + }); + + app.post("/admin/discord-wizard/verify", requireRole("admin"), async (req, res) => { + if (!isPlatformEnabled("discord")) { + setFlash(req, "error", "Discord is disabled in Platform Integration."); + return res.redirect("/admin/settings"); + } + const current = getDiscordSettings(); + const incoming = { + discord_client_id: req.body.discord_client_id || "", + discord_client_secret: req.body.discord_client_secret || "", + discord_redirect_uri: req.body.discord_redirect_uri || "", + discord_bot_token: req.body.discord_bot_token || "", + discord_guild_id: req.body.discord_guild_id || "", + discord_admin_role_id: req.body.discord_admin_role_id || "", + discord_mod_role_id: req.body.discord_mod_role_id || "" + }; + const merged = mergeSecrets( + current, + incoming, + new Set(["discord_client_secret", "discord_bot_token"]) + ); + if (!merged.discord_redirect_uri) { + const baseUrl = `${req.protocol}://${req.get("host")}`; + merged.discord_redirect_uri = `${baseUrl}/auth/discord/callback`; + } + const result = await verifyDiscordSettings(merged); + if (!result.ok) { + res.render("wizard-discord", { + title: "Discord setup", + form: { + ...incoming, + discord_client_secret: "", + discord_bot_token: "", + discord_redirect_uri: merged.discord_redirect_uri + }, + checks: result.checks, + errors: result.errors, + actionBase: "/admin/discord-wizard", + cancelPath: "/admin/settings" + }); + return; + } + saveSettingsMap(merged); + delete req.session.discordWizardSnapshot; + setFlash(req, "success", "Discord setup saved."); + res.redirect("/admin/settings"); + }); + + app.post("/admin/discord-wizard/cancel", requireRole("admin"), (req, res) => { + if (!isPlatformEnabled("discord")) { + return res.redirect("/admin/settings"); + } + restoreSnapshot(req, "discordWizardSnapshot"); + setFlash(req, "info", "Discord setup canceled."); + res.redirect("/admin/settings"); + }); + + app.get("/admin/twitch-wizard", requireRole("admin"), (req, res) => { + if (!isPlatformEnabled("twitch")) { + setFlash(req, "error", "Twitch is disabled in Platform Integration."); + return res.redirect("/admin/settings"); + } + const current = getTwitchSettings(); + const baseUrl = `${req.protocol}://${req.get("host")}`; + const form = { + ...current, + twitch_client_secret: "", + twitch_bot_oauth: "", + twitch_redirect_uri: + current.twitch_redirect_uri || `${baseUrl}/auth/twitch/callback` + }; + storeSnapshot(req, "twitchWizardSnapshot", current); + res.render("wizard-twitch", { + title: "Twitch setup", + form, + checks: [], + errors: [], + actionBase: "/admin/twitch-wizard", + cancelPath: "/admin/settings" + }); + }); + + app.post("/admin/twitch-wizard/verify", requireRole("admin"), async (req, res) => { + if (!isPlatformEnabled("twitch")) { + setFlash(req, "error", "Twitch is disabled in Platform Integration."); + return res.redirect("/admin/settings"); + } + const current = getTwitchSettings(); + const incoming = { + twitch_client_id: req.body.twitch_client_id || "", + twitch_client_secret: req.body.twitch_client_secret || "", + twitch_redirect_uri: req.body.twitch_redirect_uri || "", + twitch_bot_username: req.body.twitch_bot_username || "", + twitch_bot_oauth: req.body.twitch_bot_oauth || "", + twitch_channels: req.body.twitch_channels || "" + }; + const merged = mergeSecrets( + current, + incoming, + new Set(["twitch_client_secret", "twitch_bot_oauth"]) + ); + if (!merged.twitch_redirect_uri) { + const baseUrl = `${req.protocol}://${req.get("host")}`; + merged.twitch_redirect_uri = `${baseUrl}/auth/twitch/callback`; + } + const result = await verifyTwitchSettings(merged); + if (!result.ok) { + res.render("wizard-twitch", { + title: "Twitch setup", + form: { + ...incoming, + twitch_client_secret: "", + twitch_bot_oauth: "", + twitch_redirect_uri: merged.twitch_redirect_uri + }, + checks: result.checks, + errors: result.errors, + actionBase: "/admin/twitch-wizard", + cancelPath: "/admin/settings" + }); + return; + } + saveSettingsMap(merged); + delete req.session.twitchWizardSnapshot; + setFlash(req, "success", "Twitch setup saved."); + res.redirect("/admin/settings"); + }); + + app.post("/admin/twitch-wizard/cancel", requireRole("admin"), (req, res) => { + if (!isPlatformEnabled("twitch")) { + return res.redirect("/admin/settings"); + } + restoreSnapshot(req, "twitchWizardSnapshot"); + setFlash(req, "info", "Twitch setup canceled."); + res.redirect("/admin/settings"); + }); + + app.get("/admin/youtube-wizard", requireRole("admin"), (req, res) => { + if (!isPlatformEnabled("youtube")) { + setFlash(req, "error", "YouTube is disabled in Platform Integration."); + return res.redirect("/admin/settings"); + } + const current = getYouTubeSettings(); + const baseUrl = `${req.protocol}://${req.get("host")}`; + const form = { + ...current, + youtube_client_secret: "", + youtube_redirect_uri: + current.youtube_redirect_uri || `${baseUrl}/auth/youtube/callback` + }; + const snapshot = { + ...current, + youtube_bot_refresh_token: getSetting("youtube_bot_refresh_token", ""), + youtube_bot_channel_id: getSetting("youtube_bot_channel_id", "") + }; + storeSnapshot(req, "youtubeWizardSnapshot", snapshot); + res.render("wizard-youtube", { + title: "YouTube setup", + form, + checks: [], + errors: [], + actionBase: "/admin/youtube-wizard", + cancelPath: "/admin/settings", + connectPath: "/admin/youtube-wizard/connect", + botConnected: Boolean(getSetting("youtube_bot_refresh_token", "")), + botChannelId: getSetting("youtube_bot_channel_id", ""), + botChannelName: getYouTubeClient()?.channelName || null + }); + }); + + app.post("/admin/youtube-wizard/connect", requireRole("admin"), (req, res) => { + if (!isPlatformEnabled("youtube")) { + setFlash(req, "error", "YouTube is disabled in Platform Integration."); + return res.redirect("/admin/settings"); + } + const baseUrl = `${req.protocol}://${req.get("host")}`; + const clientId = (req.body.youtube_client_id || "").trim(); + const clientSecret = (req.body.youtube_client_secret || "").trim(); + const redirectUri = + (req.body.youtube_redirect_uri || "").trim() || + `${baseUrl}/auth/youtube/callback`; + if (!clientId || !clientSecret) { + setFlash(req, "error", "Client ID and Client Secret are required."); + return res.redirect("/admin/youtube-wizard"); + } + setSetting("youtube_client_id", clientId); + setSetting("youtube_client_secret", clientSecret); + setSetting("youtube_redirect_uri", redirectUri); + const state = crypto.randomBytes(16).toString("hex"); + req.session.youtubeBotState = state; + req.session.youtubeBotReturnTo = "/admin/youtube-wizard"; + const url = buildYouTubeAuthUrl(state, redirectUri, { prompt: "consent" }); + res.redirect(url); + }); + + app.post("/admin/youtube-wizard/verify", requireRole("admin"), async (req, res) => { + if (!isPlatformEnabled("youtube")) { + setFlash(req, "error", "YouTube is disabled in Platform Integration."); + return res.redirect("/admin/settings"); + } + const current = getYouTubeSettings(); + const incoming = { + youtube_client_id: req.body.youtube_client_id || "", + youtube_client_secret: req.body.youtube_client_secret || "", + youtube_redirect_uri: req.body.youtube_redirect_uri || "" + }; + const merged = mergeSecrets( + current, + incoming, + new Set(["youtube_client_secret"]) + ); + if (!merged.youtube_redirect_uri) { + const baseUrl = `${req.protocol}://${req.get("host")}`; + merged.youtube_redirect_uri = `${baseUrl}/auth/youtube/callback`; + } + const result = await verifyYouTubeSettings({ + ...merged, + youtube_bot_refresh_token: getSetting("youtube_bot_refresh_token", "") + }); + if (!result.ok) { + res.render("wizard-youtube", { + title: "YouTube setup", + form: { + ...incoming, + youtube_client_secret: "", + youtube_redirect_uri: merged.youtube_redirect_uri + }, + checks: result.checks, + errors: result.errors, + actionBase: "/admin/youtube-wizard", + cancelPath: "/admin/settings", + connectPath: "/admin/youtube-wizard/connect", + botConnected: Boolean(getSetting("youtube_bot_refresh_token", "")), + botChannelId: getSetting("youtube_bot_channel_id", ""), + botChannelName: getYouTubeClient()?.channelName || null + }); + return; + } + if (result.channel?.id) { + merged.youtube_bot_channel_id = result.channel.id; + } + saveSettingsMap(merged); + delete req.session.youtubeWizardSnapshot; + setFlash(req, "success", "YouTube setup saved."); + res.redirect("/admin/settings"); + }); + + app.post("/admin/youtube-wizard/cancel", requireRole("admin"), (req, res) => { + if (!isPlatformEnabled("youtube")) { + return res.redirect("/admin/settings"); + } + restoreSnapshot(req, "youtubeWizardSnapshot"); + setFlash(req, "info", "YouTube setup canceled."); + res.redirect("/admin/settings"); + }); + + app.get("/admin/theming", requireRole("admin"), (req, res) => { + res.render("admin-theme", { + title: "Theming", + theme: getThemeSettings() + }); + }); + + app.post("/admin/theming", requireRole("admin"), (req, res) => { + const fields = [ + "theme_light_bg_1", + "theme_light_bg_2", + "theme_light_bg_3", + "theme_light_text", + "theme_light_text_muted", + "theme_light_accent", + "theme_light_accent_alt", + "theme_light_danger", + "theme_light_surface", + "theme_light_surface_2", + "theme_light_surface_3", + "theme_light_border", + "theme_dark_bg_1", + "theme_dark_bg_2", + "theme_dark_bg_3", + "theme_dark_text", + "theme_dark_text_muted", + "theme_dark_accent", + "theme_dark_accent_alt", + "theme_dark_danger", + "theme_dark_surface", + "theme_dark_surface_2", + "theme_dark_surface_3", + "theme_dark_border", + "theme_role_public", + "theme_role_mod", + "theme_role_admin" + ]; + for (const field of fields) { + if (req.body[field] !== undefined) { + setSetting(field, req.body[field].trim()); + } + } + setFlash(req, "success", "Theme updated."); + res.redirect("/admin/theming"); + }); + + app.get("/admin/logs", requireRole("admin"), (req, res) => { + const range = parseLogRange(req.query.range); + const limit = parseLogLimit(req.query.limit); + const levelValue = normalizeLogLevel(req.query.level) || "all"; + const levels = levelValue === "all" ? [] : [levelValue]; + const sinceMs = range.rangeMs ? Date.now() - range.rangeMs : null; + const logs = listLogs({ limit: limit.limit, sinceMs, levels }); + res.render("admin-logs", { + title: "Logs", + logs, + logFilters: { + range: range.rangeValue, + level: levelValue, + limit: limit.limitValue + } + }); + }); + + app.get("/admin/logs/download", requireRole("admin"), (req, res) => { + const range = parseLogRange(req.query.range); + const limit = parseLogLimit(req.query.limit, { allowAll: true }); + const levels = parseLogLevels(req.query.level); + const sinceMs = range.rangeMs ? Date.now() - range.rangeMs : null; + const logs = listLogs({ limit: limit.limit, sinceMs, levels }); + const stamp = new Date().toISOString().replace(/[:.]/g, "-"); + res.setHeader( + "Content-Disposition", + `attachment; filename="lumi-logs-${stamp}.txt"` + ); + res.setHeader("Content-Type", "text/plain; charset=utf-8"); + const lines = logs.map((log) => { + const timestamp = new Date(log.created_at).toISOString(); + const header = `${timestamp} [${log.level.toUpperCase()}] ${log.message}`; + if (log.details) { + return `${header}\n${log.details}\n`; + } + return `${header}\n`; + }); + res.send(lines.join("\n")); + }); + + app.get("/admin/privileges", requireRole("admin"), async (req, res) => { + const discord = await buildDiscordPrivileges(discordClient); + const twitch = await buildTwitchPrivileges(); + res.render("admin-privileges", { + title: "Privileges", + discord, + twitch + }); + }); + + app.get("/admin/commands", requireRole("mod"), (req, res) => { + const platformStatus = getPlatformStatus().filter((platform) => platform.supported); + const availablePlatforms = platformStatus.map((platform) => platform.id); + const commands = db + .prepare("SELECT * FROM custom_commands ORDER BY trigger") + .all() + .map((command) => ({ + ...command, + platforms: normalizeCustomPlatforms(command.platform, availablePlatforms) + })); + res.render("admin-commands", { + title: "Custom commands", + commands, + isAdmin: Boolean(req.session.user?.isAdmin), + platforms: platformStatus.map((platform) => ({ + id: platform.id, + label: platform.label, + enabled: platform.enabled + })) + }); + }); + + app.post("/admin/commands", requireRole("mod"), (req, res) => { + const isAdmin = Boolean(req.session.user?.isAdmin); + const availablePlatforms = getPlatformStatus() + .filter((platform) => platform.supported) + .map((platform) => platform.id); + const trigger = (req.body.trigger || "").trim().toLowerCase(); + const mode = (req.body.mode || "plain").trim(); + const language = (req.body.language || "js").trim(); + const response = (req.body.response || "").trim(); + const code = (req.body.code || "").trim(); + const selectedPlatforms = parsePlatformSelectionFromBody( + req.body, + availablePlatforms + ); + if (!trigger) { + setFlash(req, "error", "Trigger is required."); + return res.redirect("/admin/commands"); + } + if (!selectedPlatforms.length) { + setFlash(req, "error", "Select at least one platform."); + return res.redirect("/admin/commands"); + } + if (!isAdmin && mode === "advanced") { + setFlash(req, "error", "Advanced commands are restricted to admins."); + return res.redirect("/admin/commands"); + } + if (mode === "advanced") { + if (!code) { + setFlash(req, "error", "Advanced commands require code."); + return res.redirect("/admin/commands"); + } + } else if (!response) { + setFlash(req, "error", "Plain commands require a response."); + return res.redirect("/admin/commands"); + } + const now = Date.now(); + try { + db.prepare( + "INSERT INTO custom_commands (trigger, response, mode, language, code, platform, enabled, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, 1, ?, ?)" + ).run( + trigger, + response || "", + isAdmin ? mode : "plain", + isAdmin ? language : "js", + isAdmin && mode === "advanced" ? code : null, + serializePlatformSelection(selectedPlatforms), + now, + now + ); + setFlash(req, "success", "Command created."); + res.redirect("/admin/commands"); + } catch (error) { + setFlash(req, "error", "That command already exists."); + res.redirect("/admin/commands"); + } + }); + + app.post("/admin/commands/:id/toggle", requireRole("mod"), (req, res) => { + const row = db + .prepare("SELECT enabled FROM custom_commands WHERE id = ?") + .get(req.params.id); + if (row) { + db.prepare( + "UPDATE custom_commands SET enabled = ?, updated_at = ? WHERE id = ?" + ).run(row.enabled ? 0 : 1, Date.now(), req.params.id); + } + res.redirect("/admin/commands"); + }); + + app.post("/admin/commands/:id/delete", requireRole("mod"), (req, res) => { + db.prepare("DELETE FROM custom_commands WHERE id = ?").run(req.params.id); + setFlash(req, "success", "Command deleted."); + res.redirect("/admin/commands"); + }); + + app.post("/admin/commands/:id/update", requireRole("mod"), (req, res) => { + const isAdmin = Boolean(req.session.user?.isAdmin); + const existing = db + .prepare("SELECT mode FROM custom_commands WHERE id = ?") + .get(req.params.id); + if (existing?.mode === "advanced" && !isAdmin) { + setFlash(req, "error", "Advanced commands can only be edited by admins."); + return res.redirect("/admin/commands"); + } + const availablePlatforms = getPlatformStatus() + .filter((platform) => platform.supported) + .map((platform) => platform.id); + const trigger = (req.body.trigger || "").trim().toLowerCase(); + const mode = (req.body.mode || "plain").trim(); + const language = (req.body.language || "js").trim(); + const response = (req.body.response || "").trim(); + const code = (req.body.code || "").trim(); + const selectedPlatforms = parsePlatformSelectionFromBody( + req.body, + availablePlatforms + ); + if (!trigger) { + setFlash(req, "error", "Trigger is required."); + return res.redirect("/admin/commands"); + } + if (!selectedPlatforms.length) { + setFlash(req, "error", "Select at least one platform."); + return res.redirect("/admin/commands"); + } + if (!isAdmin && mode === "advanced") { + setFlash(req, "error", "Advanced commands are restricted to admins."); + return res.redirect("/admin/commands"); + } + if (mode === "advanced") { + if (!code) { + setFlash(req, "error", "Advanced commands require code."); + return res.redirect("/admin/commands"); + } + } else if (!response) { + setFlash(req, "error", "Plain commands require a response."); + return res.redirect("/admin/commands"); + } + try { + db.prepare( + "UPDATE custom_commands SET trigger = ?, response = ?, mode = ?, language = ?, code = ?, platform = ?, updated_at = ? WHERE id = ?" + ).run( + trigger, + response || "", + isAdmin ? mode : "plain", + isAdmin ? language : "js", + isAdmin && mode === "advanced" ? code : null, + serializePlatformSelection(selectedPlatforms), + Date.now(), + req.params.id + ); + setFlash(req, "success", "Command updated."); + res.redirect("/admin/commands"); + } catch (error) { + setFlash(req, "error", "Unable to update command."); + res.redirect("/admin/commands"); + } + }); + + app.get("/admin/pages", requireRole("admin"), (req, res) => { + const pages = db + .prepare("SELECT * FROM custom_pages ORDER BY created_at DESC") + .all(); + res.render("admin-pages", { + title: "Custom pages", + pages + }); + }); + + app.get("/admin/users", requireRole("mod"), (req, res) => { + const users = listUsersWithIdentities(); + const notes = db + .prepare( + "SELECT n.*, s.internal_user_id FROM moderation_notes n " + + "LEFT JOIN moderation_subjects s ON s.id = n.subject_id" + ) + .all(); + const notesByUser = notes.reduce((acc, note) => { + if (!note.internal_user_id) { + return acc; + } + if (!acc[note.internal_user_id]) { + acc[note.internal_user_id] = []; + } + acc[note.internal_user_id].push(note); + return acc; + }, {}); + res.render("admin-users", { + title: "Users", + users, + notesByUser, + isAdmin: Boolean(req.session.user?.isAdmin) + }); + }); + + app.post("/admin/users/:id/username", requireRole("admin"), (req, res) => { + const desired = (req.body.internal_username || "").trim(); + const result = updateInternalUsername(req.params.id, desired); + if (!result.ok) { + setFlash(req, "error", result.reason); + return res.redirect("/admin/users"); + } + setFlash(req, "success", "Username updated."); + res.redirect("/admin/users"); + }); + + app.post("/admin/pages", requireRole("admin"), (req, res) => { + const slug = (req.body.slug || "").trim(); + const title = (req.body.title || "").trim(); + const navLabel = (req.body.nav_label || "").trim(); + const content = (req.body.content || "").trim(); + const format = normalizePageFormat(req.body.format); + const contentCss = + format === "html" ? (req.body.content_css || "").trim() : ""; + const role = (req.body.role || "public").trim(); + const showInNav = req.body.show_in_nav === "on"; + if (!slug || !title || !content) { + setFlash(req, "error", "Slug, title, and content are required."); + return res.redirect("/admin/pages"); + } + const now = Date.now(); + try { + db.prepare( + "INSERT INTO custom_pages (slug, title, nav_label, content, content_css, format, role, show_in_nav, enabled, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, 1, ?, ?)" + ).run( + slug, + title, + navLabel || null, + content, + contentCss, + format, + role, + showInNav ? 1 : 0, + now, + now + ); + setFlash(req, "success", "Page created."); + res.redirect("/admin/pages"); + } catch (error) { + setFlash(req, "error", "That page already exists."); + res.redirect("/admin/pages"); + } + }); + + app.post("/admin/pages/:id/toggle", requireRole("admin"), (req, res) => { + const row = db + .prepare("SELECT enabled FROM custom_pages WHERE id = ?") + .get(req.params.id); + if (row) { + db.prepare( + "UPDATE custom_pages SET enabled = ?, updated_at = ? WHERE id = ?" + ).run(row.enabled ? 0 : 1, Date.now(), req.params.id); + } + res.redirect("/admin/pages"); + }); + + app.post("/admin/pages/:id/delete", requireRole("admin"), (req, res) => { + db.prepare("DELETE FROM custom_pages WHERE id = ?").run(req.params.id); + setFlash(req, "success", "Page deleted."); + res.redirect("/admin/pages"); + }); + + app.post("/admin/pages/:id/update", requireRole("admin"), (req, res) => { + const slug = (req.body.slug || "").trim(); + const title = (req.body.title || "").trim(); + const navLabel = (req.body.nav_label || "").trim(); + const content = (req.body.content || "").trim(); + const format = normalizePageFormat(req.body.format); + const contentCss = + format === "html" ? (req.body.content_css || "").trim() : ""; + const role = (req.body.role || "public").trim(); + const showInNav = req.body.show_in_nav === "on"; + if (!slug || !title || !content) { + setFlash(req, "error", "Slug, title, and content are required."); + return res.redirect("/admin/pages"); + } + try { + db.prepare( + "UPDATE custom_pages SET slug = ?, title = ?, nav_label = ?, content = ?, content_css = ?, format = ?, role = ?, show_in_nav = ?, updated_at = ? WHERE id = ?" + ).run( + slug, + title, + navLabel || null, + content, + contentCss, + format, + role, + showInNav ? 1 : 0, + Date.now(), + req.params.id + ); + setFlash(req, "success", "Page updated."); + res.redirect("/admin/pages"); + } catch (error) { + setFlash(req, "error", "Unable to update page."); + res.redirect("/admin/pages"); + } + }); + + app.get("/admin/plugins", requireRole("admin"), (req, res) => { + syncPluginRegistry(); + res.render("admin-plugins", { + title: "Plugins", + plugins: getPlugins() + }); + }); + + app.post("/admin/plugins/:id/toggle", requireRole("admin"), (req, res) => { + setPluginEnabled(req.params.id, req.body.enabled === "true"); + setFlash(req, "success", "Plugin updated. Restarting..."); + res.redirect("/admin/plugins"); + requestRestart(); + }); + + app.post("/admin/plugins/:id/uninstall", requireRole("admin"), (req, res) => { + const plugin = db + .prepare("SELECT path FROM plugins WHERE id = ?") + .get(req.params.id); + if (plugin?.path) { + try { + fs.rmSync(plugin.path, { recursive: true, force: true }); + } catch (error) { + console.error(error); + } + } + removePlugin(req.params.id); + setFlash(req, "success", "Plugin uninstalled. Restarting..."); + res.redirect("/admin/plugins"); + requestRestart(); + }); + + app.post( + "/admin/plugins/upload", + requireRole("admin"), + uploadSingle("plugin_zip"), + async (req, res) => { + if (req.uploadError) { + setFlash(req, "error", req.uploadError); + return res.redirect("/admin/plugins"); + } + if (!req.file) { + setFlash(req, "error", "Upload a ZIP archive."); + return res.redirect("/admin/plugins"); + } + try { + await applyPluginUpdate(req.file.path); + setFlash(req, "success", "Plugin uploaded. Restarting..."); + res.redirect("/admin/plugins"); + requestRestart(); + } catch (error) { + setFlash(req, "error", error.message); + res.redirect("/admin/plugins"); + } finally { + try { + fs.rmSync(req.file.path, { force: true }); + } catch { + // ignore cleanup errors + } + } + } + ); + + app.post("/admin/plugins/install", requireRole("admin"), (req, res) => { + const url = (req.body.url || "").trim(); + if (!url) { + setFlash(req, "error", "Plugin URL is required."); + return res.redirect("/admin/plugins"); + } + try { + installFromGit(url); + setFlash(req, "success", "Plugin installed. Restarting..."); + res.redirect("/admin/plugins"); + requestRestart(); + } catch (error) { + setFlash(req, "error", error.message); + res.redirect("/admin/plugins"); + } + }); + + app.post("/admin/plugins/create", requireRole("admin"), (req, res) => { + const id = (req.body.id || "").trim(); + const name = (req.body.name || "").trim(); + const description = (req.body.description || "").trim(); + try { + createLocalPlugin({ id, name, description }); + setFlash(req, "success", "Plugin created. Restarting..."); + res.redirect("/admin/plugins"); + requestRestart(); + } catch (error) { + setFlash(req, "error", error.message); + res.redirect("/admin/plugins"); + } + }); + + app.post("/admin/plugins/:id/update", requireRole("admin"), (req, res) => { + const plugin = db + .prepare("SELECT path FROM plugins WHERE id = ?") + .get(req.params.id); + if (!plugin?.path) { + setFlash(req, "error", "Plugin not found."); + return res.redirect("/admin/plugins"); + } + try { + updatePluginFromGit(plugin.path); + setFlash(req, "success", "Plugin updated. Restarting..."); + res.redirect("/admin/plugins"); + requestRestart(); + } catch (error) { + setFlash(req, "error", error.message); + res.redirect("/admin/plugins"); + } + }); + + app.get("/admin/updates", requireRole("admin"), (req, res) => { + res.render("admin-updates", { + title: "Updates", + snapshots: listSnapshots() + }); + }); + + app.post( + "/admin/updates/bot", + requireRole("admin"), + uploadSingle("update_zip"), + async (req, res) => { + if (req.uploadError) { + setFlash(req, "error", req.uploadError); + return res.redirect("/admin/updates"); + } + if (!req.file) { + setFlash(req, "error", "Upload a ZIP archive."); + return res.redirect("/admin/updates"); + } + try { + const patchMode = req.body.patch_mode === "1"; + await applyBotUpdate(req.file.path, { + mode: patchMode ? "patch" : "full" + }); + setFlash( + req, + "success", + patchMode ? "Patch applied. Restarting..." : "Update applied. Restarting..." + ); + res.redirect("/admin/updates"); + requestRestart(); + } catch (error) { + setFlash(req, "error", error.message); + res.redirect("/admin/updates"); + } finally { + try { + fs.rmSync(req.file.path, { force: true }); + } catch { + // ignore cleanup errors + } + } + } + ); + + app.post( + "/admin/updates/plugin", + requireRole("admin"), + uploadSingle("plugin_zip"), + async (req, res) => { + if (req.uploadError) { + setFlash(req, "error", req.uploadError); + return res.redirect("/admin/updates"); + } + if (!req.file) { + setFlash(req, "error", "Upload a ZIP archive."); + return res.redirect("/admin/updates"); + } + try { + await applyPluginUpdate(req.file.path); + setFlash(req, "success", "Plugin update applied. Restarting..."); + res.redirect("/admin/updates"); + requestRestart(); + } catch (error) { + setFlash(req, "error", error.message); + res.redirect("/admin/updates"); + } finally { + try { + fs.rmSync(req.file.path, { force: true }); + } catch { + // ignore cleanup errors + } + } + } + ); + + app.post("/admin/update", requireRole("admin"), (req, res) => { + try { + const remote = getSetting("git_remote", "origin"); + const branch = getSetting("git_branch", "main"); + pullUpdates(remote, branch); + setFlash(req, "success", "Update applied. Restarting..."); + res.redirect("/admin"); + requestRestart(); + } catch (error) { + setFlash(req, "error", error.message); + res.redirect("/admin"); + } + }); + + app.post("/admin/check-update", requireRole("admin"), (req, res) => { + try { + const remote = getSetting("git_remote", "origin"); + const branch = getSetting("git_branch", "main"); + const hasUpdate = checkForUpdates(remote, branch); + setFlash( + req, + "info", + hasUpdate ? "Updates are available." : "No updates found." + ); + res.redirect("/admin"); + } catch (error) { + setFlash(req, "error", error.message); + res.redirect("/admin"); + } + }); + + app.post("/admin/restart", requireRole("admin"), (req, res) => { + setFlash(req, "success", "Restarting..."); + res.redirect("/admin"); + requestRestart(); + }); + + app.use((err, req, res, next) => { + if (res.headersSent) { + return next(err); + } + const message = err?.message || ""; + const isViewMissing = message.includes("Failed to lookup view"); + log("error", "Unhandled error", { + path: req.path, + method: req.method, + userId: req.session.user?.id || null, + message, + stack: err?.stack || "" + }); + if (isViewMissing) { + res.locals.softError = "Some content could not be loaded."; + return res.status(200).render("missing-view", { + title: "Content missing", + resource: "A page component failed to load. Please try again." + }); + } + const status = err?.status || 500; + res.status(status).render("error", { + title: "Something went wrong", + message: "An unexpected error occurred. Please try again." + }); + }); + + if (typeof loadPlugins === "function") { + loadPlugins(app, web); + } + + return app; +} + +const NAV_SECTION_ICONS = ["home", "spark", "shield", "gear", "blocks"]; +const DEFAULT_NAV_SECTIONS = [ + { id: "overview", label: "Overview", icon: "home" }, + { id: "community", label: "Community", icon: "spark" }, + { id: "moderation", label: "Mod", icon: "shield" }, + { id: "admin", label: "Admin", icon: "gear" }, + { id: "plugins", label: "Plugins", icon: "blocks" } +]; + +function collectNavItems(user, pluginNav, currentPath) { + const iconMap = getSetting("nav_item_icons", {}) || {}; + const base = [ + { label: "Home", path: "/", role: "public", section: "overview" }, + { label: "Commands", path: "/commands", role: "public", section: "community" }, + { + label: "Leaderboards", + path: "/leaderboards", + role: "public", + section: "community" + }, + { + label: "Stats", + path: "/stats", + role: "public", + authRequired: true, + section: "community" + }, + { + label: "Profile", + path: "/profile", + role: "public", + authRequired: true, + section: "community" + }, + { label: "Mods List", path: "/moderator", role: "mod", section: "moderation" }, + { label: "Admin", path: "/admin", role: "admin", section: "admin" }, + { + label: "Settings", + path: "/admin/settings", + role: "admin", + section: "admin" + }, + { + label: "Navigation", + path: "/admin/navigation", + role: "admin", + section: "admin" + }, + { + label: "Theming", + path: "/admin/theming", + role: "admin", + section: "admin" + }, + { + label: "Privileges", + path: "/admin/privileges", + role: "admin", + section: "admin" + }, + { label: "Logs", path: "/admin/logs", role: "admin", section: "admin" }, + { label: "Updates", path: "/admin/updates", role: "admin", section: "admin" }, + { + label: "Custom commands", + path: "/admin/commands", + role: "mod", + section: "moderation" + }, + { label: "Pages", path: "/admin/pages", role: "admin", section: "admin" }, + { label: "Users", path: "/admin/users", role: "mod", section: "moderation" }, + { label: "Plugins", path: "/admin/plugins", role: "admin", section: "admin" } + ]; + const pages = db + .prepare( + "SELECT slug, title, nav_label, role FROM custom_pages WHERE show_in_nav = 1 AND enabled = 1 ORDER BY created_at ASC" + ) + .all() + .map((page) => ({ + label: page.nav_label || page.title, + path: `/pages/${page.slug}`, + role: page.role, + section: "community" + })); + const pluginItems = (pluginNav || []).map((item) => ({ + ...item, + section: item.section || "plugins" + })); + const allItems = [...base, ...pages, ...pluginItems].filter((item) => { + if (item.authRequired && !user) { + return false; + } + return hasAccess(user, item.role); + }); + return allItems.map((item) => { + const navId = buildNavItemId(item); + const customIcon = iconMap[navId] || null; + const defaultIcon = getDefaultNavIcon(item); + const icon = customIcon + ? `/assets/nav-icons/${customIcon}` + : defaultIcon + ? `/icons/nav/${defaultIcon}.svg` + : null; + return { + ...item, + navId, + icon, + active: isActivePath(item.path, currentPath) + }; + }); +} + +function buildNavSections(user, pluginNav, currentPath) { + const items = collectNavItems(user, pluginNav, currentPath); + const navStructure = normalizeNavStructure(getSetting("nav_structure", null)); + if (navStructure?.enabled && navStructure.sections.length) { + return buildNavSectionsFromStructure(items, navStructure); + } + return buildDefaultNavSections(items); +} + +function buildDefaultNavSections(items) { + const sections = DEFAULT_NAV_SECTIONS.map((section) => ({ + ...section, + items: [] + })); + const sectionMap = new Map(sections.map((section) => [section.id, section])); + + for (const item of items) { + const section = sectionMap.get(item.section); + if (section) { + section.items.push(item); + } + } + + return sections + .filter((section) => section.items.length) + .map((section) => ({ + ...section, + items: section.items.slice().sort((a, b) => a.label.localeCompare(b.label)), + open: section.items.some((item) => item.active) + })); +} + +function buildNavSectionsFromStructure(items, structure) { + const itemMap = new Map(items.map((item) => [item.navId, item])); + const used = new Set(); + const sections = []; + + const pushSection = (section, sectionItems) => { + if (!sectionItems.length) { + return; + } + sections.push({ + id: section.id, + label: section.label || toTitleCase(section.id) || section.id, + icon: normalizeNavSectionIcon(section.icon) || "blocks", + items: sectionItems, + open: sectionItems.some((item) => item.active) + }); + }; + + for (const section of structure.sections) { + if (!section?.id) { + continue; + } + const sectionItems = []; + for (const rawId of section.items || []) { + const navId = (rawId || "").toString().trim(); + if (!navId || used.has(navId)) { + continue; + } + const item = itemMap.get(navId); + if (!item) { + continue; + } + sectionItems.push(item); + used.add(navId); + } + pushSection(section, sectionItems); + } + + if (structure.includeUnassigned !== false) { + const unassigned = items.filter((item) => !used.has(item.navId)); + if (unassigned.length) { + pushSection( + { + id: structure.unassignedId || "other", + label: structure.unassignedLabel || "Other", + icon: structure.unassignedIcon || "blocks" + }, + unassigned + ); + } + } + + return sections; +} + +function buildNavIconItems(user, pluginNav, currentPath) { + return collectNavItems(user, pluginNav, currentPath).map((item) => ({ + id: item.navId, + label: item.label, + path: item.path, + icon: item.icon + })); +} + +function buildDefaultNavStructure(items) { + const sections = DEFAULT_NAV_SECTIONS.map((section) => ({ + id: section.id, + label: section.label, + icon: section.icon, + items: [] + })); + const sectionMap = new Map(sections.map((section) => [section.id, section])); + items.forEach((item) => { + const section = sectionMap.get(item.section); + if (section) { + section.items.push(item); + } + }); + sections.forEach((section) => { + section.items = section.items + .slice() + .sort((a, b) => a.label.localeCompare(b.label)) + .map((item) => item.navId); + }); + return { + enabled: false, + includeUnassigned: true, + sections + }; +} + +function normalizeNavStructure(raw) { + if (!raw) { + return null; + } + let value = raw; + if (typeof value === "string") { + try { + value = JSON.parse(value); + } catch { + return null; + } + } + if (!value || typeof value !== "object") { + return null; + } + const sections = Array.isArray(value.sections) + ? value.sections.map(normalizeNavSection).filter(Boolean) + : []; + return { + enabled: Boolean(value.enabled), + includeUnassigned: value.includeUnassigned !== false, + unassignedLabel: + typeof value.unassignedLabel === "string" && value.unassignedLabel.trim() + ? value.unassignedLabel.trim() + : null, + unassignedIcon: normalizeNavSectionIcon(value.unassignedIcon), + unassignedId: + typeof value.unassignedId === "string" && value.unassignedId.trim() + ? value.unassignedId.trim() + : null, + sections + }; +} + +function normalizeNavSection(section, index) { + if (!section || typeof section !== "object") { + return null; + } + const id = (section.id || section.label || `section-${index + 1}`) + .toString() + .trim(); + if (!id) { + return null; + } + const label = (section.label || toTitleCase(id) || id).toString().trim(); + const icon = normalizeNavSectionIcon(section.icon) || "blocks"; + const items = Array.isArray(section.items) + ? section.items.map((item) => item.toString().trim()).filter(Boolean) + : []; + return { id, label, icon, items }; +} + +function normalizeNavSectionIcon(value) { + if (!value) { + return null; + } + const normalized = value.toString().trim().toLowerCase(); + return NAV_SECTION_ICONS.includes(normalized) ? normalized : null; +} + +function buildNavItemId(item) { + const base = (item.path || item.label || "item").toString().toLowerCase(); + return base.replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, ""); +} + +function getDefaultNavIcon(item) { + const pathName = (item.path || "").toLowerCase(); + if (pathName === "/") return "home"; + if (pathName === "/commands") return "commands"; + if (pathName === "/leaderboards") return "leaderboards"; + if (pathName === "/stats") return "stats"; + if (pathName === "/profile") return "profile"; + if (pathName === "/moderator") return "users"; + if (pathName.startsWith("/pages/")) return "pages"; + if (pathName === "/admin") return "admin"; + if (pathName === "/admin/settings") return "settings"; + if (pathName === "/admin/navigation") return "settings"; + if (pathName === "/admin/theming") return "theming"; + if (pathName === "/admin/privileges") return "privileges"; + if (pathName === "/admin/logs") return "logs"; + if (pathName === "/admin/updates") return "updates"; + if (pathName === "/admin/commands") return "commands"; + if (pathName === "/admin/pages") return "pages"; + if (pathName === "/admin/users") return "users"; + if (pathName === "/admin/plugins") return "plugins"; + if (pathName === "/moderator") return "users"; + if (pathName.startsWith("/plugins/moderation/tos-bans")) return "moderation"; + if (pathName.startsWith("/plugins/moderation")) return "moderation"; + if (pathName.startsWith("/plugins")) return "plugins"; + if (pathName.startsWith("/moderator")) return "moderation"; + return "pages"; +} + +function isActivePath(itemPath, currentPath) { + if (!itemPath || !currentPath) { + return false; + } + if (itemPath === "/") { + return currentPath === "/"; + } + return currentPath === itemPath || currentPath.startsWith(`${itemPath}/`); +} + +module.exports = { + createWebServer +}; diff --git a/src/web/views/admin-commands.ejs b/src/web/views/admin-commands.ejs new file mode 100644 index 0000000..99dec17 --- /dev/null +++ b/src/web/views/admin-commands.ejs @@ -0,0 +1,197 @@ +<%- include("partials/layout-top", { title }) %> +
      +

      Custom commands

      + <% const platformLabelMap = new Map((platforms || []).map((item) => [item.id, item.label])); %> +
      +
      + + +
      +
      + +
      + <% (platforms || []).forEach((platform) => { %> + + <% }) %> +
      + <% if (!platforms || !platforms.length) { %> +

      Enable platforms in Platform Integration to assign them here.

      + <% } %> +
      + <% if (isAdmin) { %> +
      + + +
      +
      + + +
      + <% } else { %> + + + <% } %> +
      + + +
      + <% if (isAdmin) { %> +
      + + +
      + <% } %> + +
      + <% if (isAdmin) { %> +

      Advanced commands must export a run(ctx) function. Return a string to reply.

      + <% } else { %> +

      Moderators can create plain text commands only.

      + <% } %> +

      Existing commands

      + <% if (!commands.length) { %> +

      No commands created yet.

      + <% } else { %> + + + + + + + + + + + <% commands.forEach((command) => { %> + + + + + + + + + + <% }) %> + +
      TriggerResponseStatusActions
      <%= command.trigger %> +
      + + <% (command.platforms || []).forEach((platform) => { %> + <%= platformLabelMap.get(platform) || platform %> + <% }) %> + + + <%= command.mode === "advanced" ? "Advanced (" + command.language + ")" : command.response %> + +
      +
      <%= command.enabled ? "Enabled" : "Disabled" %> +
      + +
      +
      + +
      + <% if (isAdmin || command.mode === "plain") { %> + + <% } %> +
      +
      +
      + + +
      +
      + +
      + <% (platforms || []).forEach((platform) => { %> + + <% }) %> +
      +
      + <% if (isAdmin) { %> +
      + + +
      +
      + + +
      + <% } else { %> + + + <% } %> +
      + + +
      + <% if (isAdmin) { %> +
      + + +
      + <% } %> + +
      + <% if (!isAdmin && command.mode === 'advanced') { %> +

      Advanced commands can only be edited by admins.

      + <% } %> +
      + <% } %> +
      + +<%- include("partials/layout-bottom") %> diff --git a/src/web/views/admin-dashboard.ejs b/src/web/views/admin-dashboard.ejs new file mode 100644 index 0000000..b1888ca --- /dev/null +++ b/src/web/views/admin-dashboard.ejs @@ -0,0 +1,56 @@ +<%- include("partials/layout-top", { title }) %> +
      +

      Admin dashboard

      +
      +
      +

      Settings

      +

      Update site settings and automation preferences.

      + Edit settings +
      +
      +

      Theming

      +

      Adjust light and dark mode colors.

      + Edit theme +
      +
      +

      Commands

      +

      Create and manage custom bot commands.

      + Manage commands +
      +
      +

      Users

      +

      View linked accounts and manage usernames.

      + Manage users +
      +
      +

      Pages

      +

      Create public, moderator, or admin pages.

      + Manage pages +
      +
      +

      Plugins

      +

      Install, enable, and update modules.

      + Manage plugins +
      +
      +

      Updates

      +

      Upload bot or plugin ZIP updates and review snapshots.

      + Manage updates +
      +
      +
      +
      +

      Maintenance

      +
      + +
      +
      + +
      +
      + +
      +
      +<%- include("partials/layout-bottom") %> + + diff --git a/src/web/views/admin-logs.ejs b/src/web/views/admin-logs.ejs new file mode 100644 index 0000000..a3dada7 --- /dev/null +++ b/src/web/views/admin-logs.ejs @@ -0,0 +1,116 @@ +<%- include("partials/layout-top", { title }) %> +<% const filters = logFilters || { range: '86400000', level: 'all', limit: '50' }; %> +
      +
      +
      +

      Logs

      +

      Core system logs with severity, timestamps, and details.

      +
      +
      + + + + + +
      +
      +
      + <% if (!logs || !logs.length) { %> +

      No log events yet.

      + <% } else { %> + <% logs.forEach((log) => { %> +
      " + > + + + <%= log.message %> + <%= log.level %> + <%= new Date(log.created_at).toLocaleString() %> + + <% if (log.details) { %> +
      <%= log.details %>
      + <% } else { %> +
      No additional details.
      + <% } %> +
      + <% }) %> + <% } %> +
      +
      + +<%- include("partials/layout-bottom") %> diff --git a/src/web/views/admin-navigation.ejs b/src/web/views/admin-navigation.ejs new file mode 100644 index 0000000..8ec3d60 --- /dev/null +++ b/src/web/views/admin-navigation.ejs @@ -0,0 +1,427 @@ +<%- include("partials/layout-top", { title }) %> + + +
      +

      Navigation

      +

      Drag items between sections to build the sidebar layout.

      + +
      + +
      +
      + + + + + +<%- include("partials/layout-bottom") %> diff --git a/src/web/views/admin-pages.ejs b/src/web/views/admin-pages.ejs new file mode 100644 index 0000000..17fb2f1 --- /dev/null +++ b/src/web/views/admin-pages.ejs @@ -0,0 +1,170 @@ +<%- include("partials/layout-top", { title }) %> +
      +

      Custom pages

      +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      + +
      +

      Existing pages

      + <% if (!pages.length) { %> +

      No pages created yet.

      + <% } else { %> + + + + + + + + + + + + <% pages.forEach((page) => { %> + <% const pageFormat = (page.format || "html").toString().toLowerCase(); %> + + + + + + + + + + + <% }) %> + +
      SlugTitleRoleStatusActions
      <%= page.slug %><%= page.title %><%= page.role %><%= page.enabled ? "Enabled" : "Disabled" %> +
      + +
      +
      + +
      + +
      +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      + +
      +
      + <% } %> +
      + +<%- include("partials/layout-bottom") %> diff --git a/src/web/views/admin-plugins.ejs b/src/web/views/admin-plugins.ejs new file mode 100644 index 0000000..2089003 --- /dev/null +++ b/src/web/views/admin-plugins.ejs @@ -0,0 +1,78 @@ +<%- include("partials/layout-top", { title }) %> +
      +

      Plugins

      +

      Installed plugins

      + <% if (!plugins.length) { %> +

      No plugins installed.

      + <% } else { %> + + + + + + + + + + + <% plugins.forEach((plugin) => { %> + + + + + + + <% }) %> + +
      NameVersionStatusActions
      <%= plugin.name %><%= plugin.version || "-" %><%= plugin.enabled ? "Enabled" : "Disabled" %> +
      + + +
      +
      + +
      +
      + +
      +
      + <% } %> +
      +
      +

      Install plugin from ZIP

      +
      +
      + +
      + +
      +
      +
      +

      Install plugin from git

      +
      +
      + + +
      + +
      +
      +
      +

      Create local plugin

      +
      +
      + + +
      +
      + + +
      +
      + + +
      + +
      +
      +<%- include("partials/layout-bottom") %> diff --git a/src/web/views/admin-privileges.ejs b/src/web/views/admin-privileges.ejs new file mode 100644 index 0000000..494e30f --- /dev/null +++ b/src/web/views/admin-privileges.ejs @@ -0,0 +1,105 @@ +<%- include("partials/layout-top", { title }) %> +
      +
      +
      +

      Discord Privileges

      +

      Verify the bot's permissions inside the configured server.

      +

      + Guild: + <%= discord && discord.guildName ? discord.guildName : "Not connected" %> +

      +
      +
      + +
      +
      +
      + + + + + + + + + + <% (discord && discord.rows ? discord.rows : []).forEach((row) => { %> + + + + + + <% }) %> + +
      PrivilegeDetailsStatus
      <%= row.label %><%= row.description || "-" %> + " aria-hidden="true"> + + + <%= row.granted ? "Granted" : "Missing" %> +
      +
      +
      + +
      +
      +
      +

      Twitch Privileges

      +

      Confirm Twitch configuration and chat connectivity.

      +

      + Channels configured: + <%= twitch && Number.isFinite(twitch.channelCount) ? twitch.channelCount : 0 %> +

      +
      +
      + +
      +
      +
      + + + + + + + + + + <% (twitch && twitch.rows ? twitch.rows : []).forEach((row) => { %> + + + + + + <% }) %> + +
      PrivilegeDetailsStatus
      <%= row.label %><%= row.description || "-" %> + " aria-hidden="true"> + + + <%= row.granted ? "Granted" : "Missing" %> +
      +
      +
      +<%- include("partials/layout-bottom") %> diff --git a/src/web/views/admin-settings.ejs b/src/web/views/admin-settings.ejs new file mode 100644 index 0000000..fb9f613 --- /dev/null +++ b/src/web/views/admin-settings.ejs @@ -0,0 +1,106 @@ +<%- include("partials/layout-top", { title }) %> +
      +

      Settings

      +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      + +
      +

      Platform Integration

      +

      Enable or disable platform adapters and run the setup wizards.

      +
      + <% (platforms || []).forEach((platform) => { %> +
      +
      + <%= platform.label %> + <% if (!platform.supported) { %> + Coming soon + <% } %> +
      + + <% if (platform.supported) { %> +
      + Open wizard + <%= platform.configured ? 'Configured' : 'Not configured' %> +
      + <% } else { %> +

      Support planned for a future update.

      + <% } %> +
      + <% }) %> +
      +
      + + +
      +
      +
      +

      Navigation icons

      +

      Upload SVG or PNG icons for sidebar sublinks.

      + +
      +<%- include("partials/layout-bottom") %> diff --git a/src/web/views/admin-theme.ejs b/src/web/views/admin-theme.ejs new file mode 100644 index 0000000..d30847a --- /dev/null +++ b/src/web/views/admin-theme.ejs @@ -0,0 +1,122 @@ +<%- include("partials/layout-top", { title }) %> +
      +

      Theming

      +

      Update light and dark mode colors used across the WebUI.

      +
      +

      Light mode

      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      + +

      Dark mode

      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      + +

      Role colors

      +
      + + +
      +
      + + +
      +
      + + +
      + +
      +
      +<%- include("partials/layout-bottom") %> diff --git a/src/web/views/admin-updates.ejs b/src/web/views/admin-updates.ejs new file mode 100644 index 0000000..f053fe1 --- /dev/null +++ b/src/web/views/admin-updates.ejs @@ -0,0 +1,63 @@ +<%- include("partials/layout-top", { title }) %> +
      +

      Updates

      +

      Upload ZIP archives for core bot updates or plugin updates. A snapshot is taken before each update.

      +

      Rollback is handled from Safe Mode if something breaks.

      +
      + +
      +

      Upload bot update

      +
      +
      + +
      +
      + + +
      +
      + +
      +
      +
      + +
      +

      Upload plugin update

      +
      +
      + +
      +
      + +
      +
      +
      + +
      +

      Snapshots

      + <% if (!snapshots.length) { %> +

      No snapshots yet.

      + <% } else { %> + + + + + + + + + <% snapshots.forEach((snap) => { %> + + + + + <% }) %> + +
      SnapshotCreated
      <%= snap.type === 'plugin' ? `Plugin: ${snap.pluginId}` : 'Bot core' %><%= new Date(snap.createdAt).toLocaleString() %>
      + <% } %> +
      +<%- include("partials/layout-bottom") %> diff --git a/src/web/views/admin-users.ejs b/src/web/views/admin-users.ejs new file mode 100644 index 0000000..4aa0d36 --- /dev/null +++ b/src/web/views/admin-users.ejs @@ -0,0 +1,110 @@ +<%- include("partials/layout-top", { title }) %> +
      +

      Users

      + <% if (!users.length) { %> +

      No users yet.

      + <% } else { %> +
      + +
      + + + + + + + <% if (isAdmin) { %> + + <% } %> + + + + <% users.forEach((user) => { %> + <% const notes = (notesByUser && notesByUser[user.id]) ? notesByUser[user.id] : []; %> + + + + + <% if (isAdmin) { %> + + <% } %> + + <% }) %> + +
      Internal usernameIdentitiesNotesUpdate username
      <%= user.internal_username %> + <% if (!user.identities.length) { %> + None + <% } else { %> +
        + <% user.identities.forEach((identity) => { %> +
      • + <%= identity.provider %> + <%= identity.display_name || identity.provider_user_id %> +
      • + <% }) %> +
      + <% } %> +
      + <% if (notes.length) { %> + + <% } else { %> + No notes + <% } %> + +
      + + +
      +
      + <% } %> +
      + + +<%- include("partials/layout-bottom") %> diff --git a/src/web/views/commands.ejs b/src/web/views/commands.ejs new file mode 100644 index 0000000..5bfab8a --- /dev/null +++ b/src/web/views/commands.ejs @@ -0,0 +1,176 @@ +<%- include("partials/layout-top", { title }) %> +
      +
      +
      +

      Commands

      +

      Auto-updated list of core and plugin commands.

      +
      +
      + +
      +
      +

      + Usage: Use <arg> for required arguments and [arg] for optional ones. +

      + <% if (isAdmin && conflicts.length) { %> +
      + Command conflicts detected. +

      These triggers overlap on the same platform and may shadow each other.

      +
        + <% conflicts.forEach((conflict) => { %> +
      • + <%= conflict.triggerDisplay %> on <%= conflict.platformLabel %>: <%= conflict.sourcesLabel %> +
      • + <% }) %> +
      +
      + <% } %> + <% if (!commandGroups.length) { %> +

      No commands registered yet.

      + <% } else { %> +
      + + + + + + + + + + + + + + + <% commandGroups.forEach((group) => { %> + <% const root = group.root; %> + <% const subcommands = group.subcommands || []; %> + <% const hasSubcommands = subcommands.length > 0; %> + <% const rootLevelClass = (root.level || "").toString().toLowerCase().replace(/[^a-z0-9-]/g, ""); %> + + + + + + + + + + + <% subcommands.forEach((command) => { %> + <% const commandLevelClass = (command.level || "").toString().toLowerCase().replace(/[^a-z0-9-]/g, ""); %> + + + + + + + + + + + <% }) %> + <% }) %> + +
      TriggerNameDescriptionLevelPlatformOriginCountLink
      +
      + <% if (hasSubcommands) { %> + + <% } else { %> + + <% } %> + +
      +
      + <%= root.name %> + + <%= root.description || "-" %> + + title="<%= root.levelHelp %>"<% } %> + > + <%= root.level %> + + + + <% root.platformLabels.forEach((platform) => { %> + <%= platform.label %> + <% }) %> + + <%= root.origin %><%= root.count %> + +
      +
      + + +
      +
      + <%= command.name %> + + <%= command.description || "-" %> + + title="<%= command.levelHelp %>"<% } %> + > + <%= command.level %> + + + + <% command.platformLabels.forEach((platform) => { %> + <%= platform.label %> + <% }) %> + + <%= command.origin %><%= command.count %> + +
      +
      + <% } %> +
      +<%- include("partials/layout-bottom") %> diff --git a/src/web/views/custom-page.ejs b/src/web/views/custom-page.ejs new file mode 100644 index 0000000..318b27b --- /dev/null +++ b/src/web/views/custom-page.ejs @@ -0,0 +1,62 @@ +<%- include("partials/layout-top", { title }) %> +
      +

      <%= page.title %>

      + <% if (page.format === "markdown") { %> +
      <%- renderedContent %>
      + <% } else { %> +
      + +
      + + <% } %> +
      +<%- include("partials/layout-bottom") %> diff --git a/src/web/views/error.ejs b/src/web/views/error.ejs new file mode 100644 index 0000000..32bb764 --- /dev/null +++ b/src/web/views/error.ejs @@ -0,0 +1,7 @@ +<%- include("partials/layout-top", { title }) %> +
      +

      <%= title %>

      +

      <%= message %>

      + Return home +
      +<%- include("partials/layout-bottom") %> diff --git a/src/web/views/home.ejs b/src/web/views/home.ejs new file mode 100644 index 0000000..eb0f8b0 --- /dev/null +++ b/src/web/views/home.ejs @@ -0,0 +1,27 @@ +<%- include("partials/layout-top", { title }) %> +
      +

      Welcome to <%= siteTitle %>

      +

      Manage the bot, explore stats, and extend features from the WebUI.

      + +
      +
      +
      +

      Bot control

      +

      Configure settings, update the bot, and manage plugins from the dashboard.

      + Open admin dashboard +
      +
      +

      Community stats

      +

      Track activity, view leaderboards, and browse profile stats.

      + View leaderboards +
      +
      +

      Custom modules

      +

      Create commands and pages directly in the WebUI.

      + Manage commands +
      +
      +<%- include("partials/layout-bottom") %> diff --git a/src/web/views/leaderboards.ejs b/src/web/views/leaderboards.ejs new file mode 100644 index 0000000..9ad5937 --- /dev/null +++ b/src/web/views/leaderboards.ejs @@ -0,0 +1,55 @@ +<%- include("partials/layout-top", { title }) %> +
      +

      Leaderboards

      +
      + +<% if (!sections || !sections.length) { %> +
      +

      No activity recorded yet.

      +
      +<% } else { %> +<% (sections || []).forEach((section) => { %> +
      +

      <%= section.title %>

      + <% if (!section.boards || !section.boards.length) { %> +

      <%= section.emptyMessage || "No data recorded yet." %>

      + <% } else { %> + <% section.boards.forEach((board) => { %> + <% const rowType = board.rowType || "user"; %> +

      <%= board.label || board.title || "Leaderboard" %>

      + <% if (!board.rows || !board.rows.length) { %> +

      <%= board.emptyMessage || "No data recorded yet." %>

      + <% } else { %> + + + + + + + + + <% board.rows.forEach((entry) => { %> + + + + + <% }) %> + +
      + <%= rowType === "command" ? "Command" : rowType === "game" ? "Game" : rowType === "text" ? "Item" : "User" %> + <%= board.valueLabel || "Total" %>
      + <% if (rowType === "user" && entry.username) { %> + <%= entry.username %> + <% } else if (rowType === "command") { %> + <%= entry.label || entry.username || "Unknown" %> + <% } else { %> + <%= entry.label || entry.username || "Unknown" %> + <% } %> + <%= entry.value %>
      + <% } %> + <% }) %> + <% } %> +
      +<% }) %> +<% } %> +<%- include("partials/layout-bottom") %> diff --git a/src/web/views/missing-view.ejs b/src/web/views/missing-view.ejs new file mode 100644 index 0000000..f7a4f8c --- /dev/null +++ b/src/web/views/missing-view.ejs @@ -0,0 +1,12 @@ +<%- include("partials/layout-top", { title }) %> +
      +
      +
      !
      +
      +

      Content unavailable

      +

      <%= resource || "Some content could not be loaded." %>

      +

      Please refresh the page or try again in a moment.

      +
      +
      +
      +<%- include("partials/layout-bottom") %> diff --git a/src/web/views/moderator.ejs b/src/web/views/moderator.ejs new file mode 100644 index 0000000..00e8b27 --- /dev/null +++ b/src/web/views/moderator.ejs @@ -0,0 +1,91 @@ +<%- include("partials/layout-top", { title }) %> +
      +
      +
      +

      Mods List

      +

      Active moderators and admins with linked platform aliases.

      +
      +
      +
      + +
      + <% if (!mods.length) { %> +

      No moderator history recorded yet.

      + <% } else { %> +
      + +
      + +
      +
      +
      + + + + + + + + + + + <% mods.forEach((mod) => { %> + <% const platformLabels = mod.identities.map((identity) => identity.label).join(" "); %> + <% const aliasText = mod.aliasText || ""; %> + + + + + + + <% }) %> + +
      Internal usernamePlatformsAliasesMod age
      <%= mod.username %> + + <% if (!mod.identities.length) { %> + Internal + <% } else { %> + <% mod.identities.forEach((identity) => { %> + <%= identity.label %> + <% }) %> + <% } %> + + + <% if (!aliasText) { %> + No linked accounts + <% } else { %> + View aliases + <% } %> + <%= formatDuration(mod.totalMs) %>
      +
      +
      + + Page 1 of 1 + +
      + <% } %> +
      +<%- include("partials/layout-bottom") %> diff --git a/src/web/views/mods-list.ejs b/src/web/views/mods-list.ejs new file mode 100644 index 0000000..00e8b27 --- /dev/null +++ b/src/web/views/mods-list.ejs @@ -0,0 +1,91 @@ +<%- include("partials/layout-top", { title }) %> +
      +
      +
      +

      Mods List

      +

      Active moderators and admins with linked platform aliases.

      +
      +
      +
      + +
      + <% if (!mods.length) { %> +

      No moderator history recorded yet.

      + <% } else { %> +
      + +
      + +
      +
      +
      + + + + + + + + + + + <% mods.forEach((mod) => { %> + <% const platformLabels = mod.identities.map((identity) => identity.label).join(" "); %> + <% const aliasText = mod.aliasText || ""; %> + + + + + + + <% }) %> + +
      Internal usernamePlatformsAliasesMod age
      <%= mod.username %> + + <% if (!mod.identities.length) { %> + Internal + <% } else { %> + <% mod.identities.forEach((identity) => { %> + <%= identity.label %> + <% }) %> + <% } %> + + + <% if (!aliasText) { %> + No linked accounts + <% } else { %> + View aliases + <% } %> + <%= formatDuration(mod.totalMs) %>
      +
      +
      + + Page 1 of 1 + +
      + <% } %> +
      +<%- include("partials/layout-bottom") %> diff --git a/src/web/views/partials/layout-bottom.ejs b/src/web/views/partials/layout-bottom.ejs new file mode 100644 index 0000000..f1ce42d --- /dev/null +++ b/src/web/views/partials/layout-bottom.ejs @@ -0,0 +1,15 @@ + +
      + Powered by Lumi Bot
      © OokamiKunTV & Jejeee
      +
      + <% if (softError) { %> +
      + Notice + <%= softError %> +
      + <% } %> +

    Ra&NtD+35=#S@+!8kBbV_PumlCfI4& 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