From fba6ffacd43c0a528bf2b3eb6d19435e83fe6811 Mon Sep 17 00:00:00 2001 From: rardog Date: Thu, 24 Sep 2026 13:00:20 +0300 Subject: [PATCH] Initial commit: recovered Forge 1.16.5 project, improved GUI, added WAV/MP3 support --- .gitignore | 13 + build.gradle | 72 + gradle.properties | 2 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 47505 bytes gradle/wrapper/gradle-wrapper.properties | 9 + gradlew | 248 +++ gradlew.bat | 82 + soundmod-1.0.4.jar | Bin 0 -> 175952 bytes .../java/com/example/soundmod/SoundMod.java | 84 + .../example/soundmod/client/ClientHooks.java | 66 + .../client/audio/AudioPlaybackService.java | 652 ++++++++ .../client/debug/DebugOverlayRenderer.java | 119 ++ .../soundmod/client/debug/DebugState.java | 20 + .../client/screen/SoundPlayerScreen.java | 1377 +++++++++++++++++ .../example/soundmod/command/ModCommands.java | 204 +++ .../soundmod/common/ActivationMode.java | 13 + .../soundmod/common/AttenuationMode.java | 13 + .../example/soundmod/common/RedstoneMode.java | 11 + .../soundmod/common/ScenarioQueue.java | 63 + .../soundmod/common/SoundCategoryEx.java | 15 + .../soundmod/common/SoundManifestEntry.java | 55 + .../soundmod/common/SoundSettings.java | 189 +++ .../common/ZoneIntersectionPolicy.java | 12 + .../example/soundmod/common/ZoneShape.java | 11 + .../example/soundmod/core/CommonEvents.java | 66 + .../com/example/soundmod/core/ModConfig.java | 56 + .../com/example/soundmod/core/SoundDebug.java | 96 ++ .../gameplay/block/SoundPlayerBlock.java | 75 + .../container/SoundPlayerContainer.java | 55 + .../gameplay/scenario/ScenarioManager.java | 41 + .../gameplay/tile/SoundPlayerTileEntity.java | 575 +++++++ .../soundmod/gameplay/zone/ZoneManager.java | 233 +++ .../soundmod/net/ClientTransferManager.java | 164 ++ .../example/soundmod/net/NetworkHandler.java | 64 + .../soundmod/net/SoundTransferManager.java | 278 ++++ .../net/packet/C2SCacheReportPacket.java | 65 + .../net/packet/C2SClientDiagReportPacket.java | 60 + .../net/packet/C2SFileChunkAckPacket.java | 45 + .../C2SFileTransferCompleteAckPacket.java | 45 + .../net/packet/C2SRequestSoundPacket.java | 44 + .../net/packet/C2SUpdateConfigPacket.java | 62 + .../net/packet/S2CBlockStateSyncPacket.java | 80 + .../net/packet/S2CClearCachePacket.java | 28 + .../packet/S2CClientDiagRequestPacket.java | 62 + .../net/packet/S2CDebugTogglePacket.java | 35 + .../net/packet/S2CFileChunkPacket.java | 46 + .../packet/S2CFileTransferBeginPacket.java | 47 + .../net/packet/S2CFileTransferEndPacket.java | 44 + .../packet/S2CFileTransferErrorPacket.java | 38 + .../net/packet/S2CPlaySoundPacket.java | 49 + .../net/packet/S2CSoundDebugLevelPacket.java | 35 + .../net/packet/S2CSoundManifestPacket.java | 66 + .../net/packet/S2CStopSoundPacket.java | 35 + .../net/packet/S2CZoneStateSyncPacket.java | 55 + .../example/soundmod/registry/ModBlocks.java | 31 + .../soundmod/registry/ModContainers.java | 29 + .../example/soundmod/registry/ModItems.java | 34 + .../soundmod/registry/ModTileEntities.java | 31 + .../sounddata/client/ClientSoundCache.java | 255 +++ .../server/ServerSoundRepository.java | 209 +++ .../sounddata/server/WorldSoundIndex.java | 144 ++ .../com/example/soundmod/util/HashUtil.java | 44 + .../com/example/soundmod/util/PathSafety.java | 21 + src/main/java/summary.txt | 9 + src/main/resources/META-INF/MANIFEST.MF | 8 + src/main/resources/META-INF/mods.toml | 26 + .../soundmod/blockstates/sound_player.json | 5 + .../resources/assets/soundmod/lang/en_us.json | 8 + .../soundmod/models/block/sound_player.json | 6 + .../soundmod/models/item/sound_player.json | 3 + .../loot_tables/blocks/sound_player.json | 14 + .../data/soundmod/recipes/sound_player.json | 17 + src/main/resources/pack.mcmeta | 6 + 73 files changed, 6874 insertions(+) create mode 100644 .gitignore create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 soundmod-1.0.4.jar create mode 100644 src/main/java/com/example/soundmod/SoundMod.java create mode 100644 src/main/java/com/example/soundmod/client/ClientHooks.java create mode 100644 src/main/java/com/example/soundmod/client/audio/AudioPlaybackService.java create mode 100644 src/main/java/com/example/soundmod/client/debug/DebugOverlayRenderer.java create mode 100644 src/main/java/com/example/soundmod/client/debug/DebugState.java create mode 100644 src/main/java/com/example/soundmod/client/screen/SoundPlayerScreen.java create mode 100644 src/main/java/com/example/soundmod/command/ModCommands.java create mode 100644 src/main/java/com/example/soundmod/common/ActivationMode.java create mode 100644 src/main/java/com/example/soundmod/common/AttenuationMode.java create mode 100644 src/main/java/com/example/soundmod/common/RedstoneMode.java create mode 100644 src/main/java/com/example/soundmod/common/ScenarioQueue.java create mode 100644 src/main/java/com/example/soundmod/common/SoundCategoryEx.java create mode 100644 src/main/java/com/example/soundmod/common/SoundManifestEntry.java create mode 100644 src/main/java/com/example/soundmod/common/SoundSettings.java create mode 100644 src/main/java/com/example/soundmod/common/ZoneIntersectionPolicy.java create mode 100644 src/main/java/com/example/soundmod/common/ZoneShape.java create mode 100644 src/main/java/com/example/soundmod/core/CommonEvents.java create mode 100644 src/main/java/com/example/soundmod/core/ModConfig.java create mode 100644 src/main/java/com/example/soundmod/core/SoundDebug.java create mode 100644 src/main/java/com/example/soundmod/gameplay/block/SoundPlayerBlock.java create mode 100644 src/main/java/com/example/soundmod/gameplay/container/SoundPlayerContainer.java create mode 100644 src/main/java/com/example/soundmod/gameplay/scenario/ScenarioManager.java create mode 100644 src/main/java/com/example/soundmod/gameplay/tile/SoundPlayerTileEntity.java create mode 100644 src/main/java/com/example/soundmod/gameplay/zone/ZoneManager.java create mode 100644 src/main/java/com/example/soundmod/net/ClientTransferManager.java create mode 100644 src/main/java/com/example/soundmod/net/NetworkHandler.java create mode 100644 src/main/java/com/example/soundmod/net/SoundTransferManager.java create mode 100644 src/main/java/com/example/soundmod/net/packet/C2SCacheReportPacket.java create mode 100644 src/main/java/com/example/soundmod/net/packet/C2SClientDiagReportPacket.java create mode 100644 src/main/java/com/example/soundmod/net/packet/C2SFileChunkAckPacket.java create mode 100644 src/main/java/com/example/soundmod/net/packet/C2SFileTransferCompleteAckPacket.java create mode 100644 src/main/java/com/example/soundmod/net/packet/C2SRequestSoundPacket.java create mode 100644 src/main/java/com/example/soundmod/net/packet/C2SUpdateConfigPacket.java create mode 100644 src/main/java/com/example/soundmod/net/packet/S2CBlockStateSyncPacket.java create mode 100644 src/main/java/com/example/soundmod/net/packet/S2CClearCachePacket.java create mode 100644 src/main/java/com/example/soundmod/net/packet/S2CClientDiagRequestPacket.java create mode 100644 src/main/java/com/example/soundmod/net/packet/S2CDebugTogglePacket.java create mode 100644 src/main/java/com/example/soundmod/net/packet/S2CFileChunkPacket.java create mode 100644 src/main/java/com/example/soundmod/net/packet/S2CFileTransferBeginPacket.java create mode 100644 src/main/java/com/example/soundmod/net/packet/S2CFileTransferEndPacket.java create mode 100644 src/main/java/com/example/soundmod/net/packet/S2CFileTransferErrorPacket.java create mode 100644 src/main/java/com/example/soundmod/net/packet/S2CPlaySoundPacket.java create mode 100644 src/main/java/com/example/soundmod/net/packet/S2CSoundDebugLevelPacket.java create mode 100644 src/main/java/com/example/soundmod/net/packet/S2CSoundManifestPacket.java create mode 100644 src/main/java/com/example/soundmod/net/packet/S2CStopSoundPacket.java create mode 100644 src/main/java/com/example/soundmod/net/packet/S2CZoneStateSyncPacket.java create mode 100644 src/main/java/com/example/soundmod/registry/ModBlocks.java create mode 100644 src/main/java/com/example/soundmod/registry/ModContainers.java create mode 100644 src/main/java/com/example/soundmod/registry/ModItems.java create mode 100644 src/main/java/com/example/soundmod/registry/ModTileEntities.java create mode 100644 src/main/java/com/example/soundmod/sounddata/client/ClientSoundCache.java create mode 100644 src/main/java/com/example/soundmod/sounddata/server/ServerSoundRepository.java create mode 100644 src/main/java/com/example/soundmod/sounddata/server/WorldSoundIndex.java create mode 100644 src/main/java/com/example/soundmod/util/HashUtil.java create mode 100644 src/main/java/com/example/soundmod/util/PathSafety.java create mode 100644 src/main/java/summary.txt create mode 100644 src/main/resources/META-INF/MANIFEST.MF create mode 100644 src/main/resources/META-INF/mods.toml create mode 100644 src/main/resources/assets/soundmod/blockstates/sound_player.json create mode 100644 src/main/resources/assets/soundmod/lang/en_us.json create mode 100644 src/main/resources/assets/soundmod/models/block/sound_player.json create mode 100644 src/main/resources/assets/soundmod/models/item/sound_player.json create mode 100644 src/main/resources/data/soundmod/loot_tables/blocks/sound_player.json create mode 100644 src/main/resources/data/soundmod/recipes/sound_player.json create mode 100644 src/main/resources/pack.mcmeta diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ba2cf0d --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +.gradle/ +build/ +run/ +out/ +.idea/ +*.ipr +*.iws +*.iml +.project +.classpath +.settings/ +*.log +bin/ diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..f5663e2 --- /dev/null +++ b/build.gradle @@ -0,0 +1,72 @@ +buildscript { + repositories { + maven { url = 'https://maven.minecraftforge.net' } + mavenCentral() + } + dependencies { + classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true + } +} +apply plugin: 'net.minecraftforge.gradle' +apply plugin: 'eclipse' +apply plugin: 'maven-publish' + +version = '1.0.4' +group = 'com.example.soundmod' +archivesBaseName = 'soundmod' + +java.toolchain.languageVersion = JavaLanguageVersion.of(8) + +minecraft { + mappings channel: 'official', version: '1.16.5' + + runs { + client { + workingDirectory project.file('run') + property 'forge.logging.markers', 'REGISTRIES' + property 'forge.logging.console.level', 'debug' + mods { + soundmod { + source sourceSets.main + } + } + } + server { + workingDirectory project.file('run') + property 'forge.logging.markers', 'REGISTRIES' + property 'forge.logging.console.level', 'debug' + mods { + soundmod { + source sourceSets.main + } + } + } + } +} + +configurations { + shade + implementation.extendsFrom shade +} + +dependencies { + minecraft 'net.minecraftforge:forge:1.16.5-36.2.39' + shade 'javazoom:jlayer:1.0.1' +} + +jar { + from { + configurations.shade.collect { it.isDirectory() ? it : zipTree(it) } + } + manifest { + attributes([ + "Specification-Title": "soundmod", + "Specification-Vendor": "Codex", + "Specification-Version": "1", + "Implementation-Title": project.name, + "Implementation-Version": "${version}", + "Implementation-Vendor": "Codex", + "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") + ]) + } +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..29b2ac4 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,2 @@ +org.gradle.jvmargs=-Xmx3G +org.gradle.daemon=false diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..eddabd2eef8d94a5437d6168ff9c87a78ff725b3 GIT binary patch literal 47505 zcma%jV|XRZx@BzJPRF)w+qP|W2RrDP9UC1d9oxo^)3I%LIQh<*=g!Qz_k45q^VI&e z|5VkgwQ8;Rt*tBv4uJsz0|NsB0z&#Z{?7*m1QtX=LS2MGMp2SUUPeqpQB6Wa9TEie zub-^z>bb3QVg*ju^jKS3o#9H#w4Yxz1*n>pYH+2nC3dC@ic(OUh@sI7>n^@O3t+EN zk19TR2&69-M23X8{h9JYx|8)kwwf7ttr>teD4+VN#nkbK$s(IG`^odY38j0~G5LYI zE8yj!-3t3WJpbc*GP8f1Ijv!GZFxNt(Cq4DxZU@%dVh&ur@bEGnl2N^*QNXDgt%%uIzL8-|f9*0a_P$gWq1W= zyYFqsd}OSk24kb~1dN}B%z?^{HGmwKoogz&O?>^nlNT;9zKwXe(^*#}CA6|3JU~$) z84gW6*^!J(I2cJ6Fex`F@*8Z;s#mTo^y2AJ6hSf>Ei3lYhvt>4{wrqH*`8wlt+NqV zs$Y#ZDUzSWF!beISEBi0Dvx#amw4A=5p>tM)l(wMg*GU=hp|-Z=aZM_pw^OegdgFE z#1Jtd_&p~_;Lb@JjM5MZdJErBWf7~hq^IxX89(}?*<2v)uDSTyr#g{7fM4R;@KjPU zef+&aPhcAskT5|z_09<(`3G^SKwJ0e=Q(TjU}<2E7jh(ZoiwT{!}jl%GU(rNo2?a! zx2+TFX}Pt%EZ7ohNMI$bpk|IVcQ3Z2tWLJSZtq)*Im<#WBDYEfci;r(!~8KiUAI2I z+)9QJ;|lF-J*nrrVRIf{Rt}tBY`7YBW#R+!Qox8y99}8lf<@)9znd`>8Q;dY znEDDc?e6`E=jWxW%O= z*dn!&=MGIsRTcKy#$f?nc7NBdssxcHDt6p!g8h@bt@_P63RGK`SeA81RG5nyyn|pn zh5?evjH@qk|v=A$Ff0_lB8|p@3G{6%UYG`sujf7mV;X1<41iQ?RY8pV7 z+JTVijVDHlCoGIu&$AT+dB^5QPcKo%0%E$4uIC6MXfn^S5s%Or=V!~H;WD2>O)~K>|X>YMP=}Y_0pejZk-6r@uWi|+^N62^lykrsvI-LZ#)+m^*{7pxuE$-YJPa6ES98M;^-kOi6XZp$Mun zVh_^?Hp<}gH$rrm9(0RoI9SWRQ6R)wVQt0P3)HH@+_$;Wu?Pdh#`*-jv&l=#aB#ZB z__a1vF1``N!=i=c>_*5tSi+du{D=L>p#AE6M9%CROw=u892xWbhBJ2&ZWOPUu9e_t z`J0llKMY7mQOc(WraFZmW=wk^KbcDk)u1}fF!vO9a$)!UcLP)4H1`%4xgRqS0K?Ri z5wDR#A&14*d%ZEfJ%yaM!xA9$SjkFRTM(E=VBF=fl`Xebo{4H-4hj0}f`xQV%Siw~ zm)X(4E#M~0rjvozMFh8$OtrMtNIwdWI#K9mA^S9Y`%(O7+DH&z2BPw}+FP|N{8`yc ztMq*2M?9lMzlQKSXTlP7_S}q6O5>aSLKTkPfx$(5-5iMGcgSoF6$&wzunij_p=r=9 zULJ3>$)nnNCaOIhR<^3ydE|tmD2_eJi2rKJ>=4lfdXl%T^<`2cL8Qnr#g}u6)mqEfkdy^j(pd_;1LfQq)~T z)#*RRvAV3a;5g%FsE=#2$4c)4WyUl~Bx{f3L=Y&s6_!#gFQs!SM z%Ptu1IMS7C?+LldgwXHRxHrmZ7c|W9txqXT!D^j9u-AN|Y|OWq2SC{L<-cTTicAmi z_r#W74+DHIHg*akRkcJKQULezAc{~%>2%5wLQ>VNv3usWH7RnZ2Gz-YT0A%><>0c`H5JO8&DXi*zR64@Cim$sxd2bU<1bGfQN zYN$wwe1Suk{w@!&Grd0uH@kI*wheyqH}Pu37`unlXJ3eVY_&RLtw?MtwCC}kX& z2r=ymZ+8nA9_W&_-!Uk78%AX;0kBIr^@FWC=Iq?}st>4E&+p_%duBh3kVNp=krEPD z)GOWz8oLGhf-icgv}Z?)m7f&8FU^%9YU6rK!9w3vM<_rm+D;$*BFzlm^yg?%23uAQ z%KeUiUgps!x2o$8_73aGGei+l?ijb$qk0&_pcxE$L&m{m1E)z5{%6fgW`S-VGaRav z!S?Iw_l z8bcI?Ymm-FZKn!Np;!~O96H)0IY%e2ReRm7kG<82Fn{mNbwWMVA4 z>uZy@Ye%>7g;Xba{0<$EH@{`|xhnAW31=;CMC_|9j?M+?>Ej*_aqKS9>ogRu%(R<^ z8J;b1?=_I671Vk@wUgy9Y-KNgni)d}*j0y<^urrM2Uk2lFt7uFt`+!g{6?nxn8HDA z-|mcYugdaGsE%N=JvnV*xpYv3#ROT8=BsCVx@0{J239XjS;u0Ma+!u+Fwr5ij=6m0 zLSvIxxB1C7^gHZ#DcL&5(^lO35rh)6% zTsaD~2LM9BOvklgrH#EyzGJ%@S_@lewSL>+u5R+Tiq+s>wC&&!bZ{TdFdO)hkb5-6 z$JW2#Z|Z!%lkE+Ji(AJ*TFz!!5aIfBcEyHaG53g88ae_isos&=hRdKu{(IgmZ3Gds z7k(3>R}TbXV~wbz&J~3lCtMn+1npudNl-F=qB2KmbKczrin|qq(zUiV=mz!5jQt(W z4osJngz2I~I*eB?O3AP2V$NNllivTjjiDCk>V%*qVl&IrYG0a8ch#hengcSQ0H~+K zBrZ5)DU<3ZAI!Gpd$pCpi>TAd%xh;}9a74VXzmbM7C9K#VsIv!z}_@E{+d_U`?Nq% zi@u}DiWhyB4y$-r=+xk@;E9jM)7*`fPg)%mEu3MTd`DT51r_)uS|F(! zH_LOl6m)}??`_oHJ&>D)Os*^s<836X+kL$G%25M*fJ%&Z1B&T zx8I#PIpI+RmNaLK`Fp&CnIwK8BSBAd1%72kS{KygNw=~bG)!%CA<;1+2uK$d2#E5( z^@|w)w_j8cQIwICP*Z1Ako+&t$S^qx7s8AJvE@f{8IQdTeE6YPrV5cF8dS5|VoNd< zANp`#(YR!CkO|d!PGixcChz$md$u3@%N8#7%MI==THk`Dlx!B6XY2sEDGUZrd)9ZV z`Neo82#w}>2PYcZeDI8fty)z?U1X_n8XA^i5hNk;Ku&STgIxXgtP~=n*gS)-O^6j7 z-R8FH?Zu`x8u%&h7qGwPXFENvoAPODTR+FYpC8NT{G42^n5yv;0}-EEv48O`iX+}!?a@(PLya{a<6*$#GkW&+gS*DX|y z3T|bC+7j^vr8&A+T^EY8jqRDWGEpR0uQE9h$nPLQ$=sk4R$IL5iqjzJwhACddroj?Br~lT+S2>vo<5ZJwlL{#iW=$)A*+<(iFSGBZie!dF^3DNh z?&VkWO=0E?+KTHCe{4{tuuxRaV9(2n@)ICSnZ2(;4v}b^r=)pTAhI4=3C5^0CHG3> z5h}3Rg{iTfU#*m;NN8>F%TAm=@&ZkrpGX$TSo?}+I$VpJo~E7Htc`3-$LXM;rG9lE z72K^9V-I@?9QApE5W?Uzl-x0%^3DO@2O@e?1gXf|5|#& zaPJKC&qP7%bNu_I|MIs>uk=5yw}q;n61oV+J0O+OAx&;v;wres&^q5jLs*uj3x$aS zGMW-4nrUu5pKw|3SGz<^!a(je)0GZ68as>N3*RexSA-RI0-B-a6wht;CExAj>+9`3 z-&b6E=8n}>KTY4lg_b&U0yR3jp;S#E!jhxxcj#Giw&7vWgRckGs5^*u)}A0>LkQ!I{?^dBG~R6ZVjsS)_$H=G&-0-z@Z^T z;gk9U-en=IA!lcEox4>qLD#kR4LdF1skHspDSpcDCtJ+ybScF*(D?T!p(2YlA*vwq zAJ4-kR{A+sw33EEiS2Z`n_qo}aC3;lJcfq<;{niS?5-}rPRGD7m$_b3hl5hZ5!aN! zPLy%q0TY}4dDKRy07;H;-8fl_tf4Q;8~MGZk_=Na8%JZtZH-%UH;0oEvTv6|jv9#5 zX8r@RdYCzRycx0WuBIz*2gC5y z)@!vL!f>yhNfq-Oz{~es!{ua*4Ca!K4t`s7c z?iQ~9gtptia7l`q!C%-Gm`i0ekj*E1s%i;tDz+ew*Y5eDj+TqZT=3(@w4{BmzLsxw z!coPP;`-z1E39lmq)-pBMaMZ-6|l&KD!tY3aLsLct@ZYHshJprsG#TS`shgFPp8V^ zVpn`qovk)vp|y6`lB+%uZx_8!7sE(RD4jQnwOblArJa`ci^wW`^a7L@xC*=OWa6+M zWodt%>31m$zsTBhf2>XGc19kgP`HQ`g8jk$!D5TuerlYMuKnf|${e0*W9mQUHk_Ev z1}3`IX4Nk_!^H+3Mcz{yB=h>ksBn$HPmbW(DR831#0o6v_VR)8<~YCJMRB4}c!C+% zE(&$bqy;^T&;?C?Oe2OLHskKJzIx*E&hoNHm$F2u!;$|m{&DwYVi1pqDLHKXV@l)k z36#r#G4nvPjNrHa_$71n%MJ0`6v*1wky|(>O$xHJ3V1>n3+s8hR;IV+8_`;T4HS#? zDo_Bx04bO z85- z>;Zba zyPAjT{}#u8!EU35gBrRPMj#^z{$d`Qa77h|qZ+tOsx>Oi09Oxo`F3$}U#JV9^|yXv z%A}*E7r7^|M~P73<_q|I9kZF`ywlWE;ry@m88DGWrtFD}gPfNvw_Lvqx2b@~_kB8$ zv}^c&Bc+_zj2AH)7YDT;78bHIoXODzI*o0P&RWg#jg~2pza30qE?_b$U8NSvMOWSN zIHb~7wgBX;vYiEs-UbVuI7t>P33PF2i&FtNo7Ol`xJ0n4`DNxKG0`#6u{1%FJve(7 z6()8&O^z@Cm+@+II!-2hvI<;Z&&BeE79GZ;678KP^0R^Hc#^~cNY23 zXU4@&2L&gWb_*TPRyqoIHurXobs2qgWjGU)o6xR;%r?K6?I~q$f1y6EG_UQOemWI# z;9LlKge2*183ODujxR$J&WdACrinw@RlLxSPDp0TS-stiKl>_9aEFlWBz z4o))x#Y{SoFc;HF37qwrWdsFTPqL2&u$$VQ%699A5}Gdrv*zqU&NrNW!e4V($Q{Eb z@C3EVde^8R$2|_zL1pX@TNlTcLk>Go%~+9F$r95adgKnGo+d#?3nbB8W3H@vIViDl zNdLBOVr-}K8UauAi=yA$+Vt`1QsscTU*%lr74*hlOAW)u+*ewJHiY{qRFpgv-n!X6 z_;zwk`r8TBo5iM0`)nEPT<5(udKJd|fU~VoZ#uv+S%6UAl6zHFp(6!iA&>i7nBdwR zVizF<+MXpZIf(@zQ?6-PqZUpc89rh>{hU0^U+qm=&FW4eMb^^A)OYC1N8i_gZ2}ej=NJx2ZmfOOT*an@)`UG zxzAZ?M}$(t(9tj7<>m>lztI~ccK3!lUGWUVI7hb(jhyn=Db4=)<98-}DD~I5R(Hl! zu=tcAAoSmzYk~jdT+2B+c{%=5ivB51YVIcP7XNavQ#5tFFc$FEsg9Lp)X1_y&>(5_ zm}QV7ql95XLL;J%DXim{al&MmWJ;wyH1ssGQJ^snbuK-`JJ)2kkxp(l7LMsH7%l^D zdcEGjpSO^m8N$PcF4Z-{ISCPcj;hrT{jGA}&YigL|4irl!)-zNk2v29MDpKk&YYc)@pPt9^quC8sB_uIJ0dnBf_RA0`WT0W5c1_q%Q*_If_syb&1MJXv$6n=m^YAi88`5kqcgxE zHT!&IrQGr=Hag$yPP;YB)|O^{4_bY7`(em%E`uHVCOB7!?WmkF4aKx2aAp$zOmB!p zZ{sfS^NgnElY1m^zXJ#n#{EG6N0;{ZkMZ|66Jeu}P2N)0nD{nw+2kXv4NQtveLTJP zq8xB*CfeD&C5mN)kXl^4Z4P?bvd6J>2%aY;7Z;Y^%^s1COcy6RISiB8O=1X*RSx0i z?4}wxXqs&73|pz8<9*uS7g#mPX20_4GZqpdnl>m(;*1X-$>OpyqLNDt!RgaVs*FjF zpEdmoBj7RsbXIlQ0&Fe$z?xT6@xUxtvMKb%c*>wkiL%Dj^2jlvA92ce&*EpInxGm; zhH7{Ec1Y!xC@645q356GIhKr&|SNuCtFCPPwT=qG!zQi zf8Kc;@8L|h@U0+?F9Q@wk3E%0Zb+P*6XKSd7*&vP`D)qZRWD5=J|3oAVIByluY?Qn zaTzl&XEuTzt=Ce4lfd5&wESsarOEY)V?`&_KC2l(j%u31)GCOuH1;Ey!5W?7Vj_Xt zS4OE7xrP9fv%yJ3Omk^Q3YCS6uXsHEbPwgAMwF8pEvx8E&(v)9uug;#Cz* ztJ87q7^qM(UJtO5ooD%#E%^OpbQdPeZPr+K$FX7iabuC5c347c59={zQ8Pe>{&Yu9TjzTlu^n?A=u%gzT@W990w?gVu|$m zb(Z2_!!&KO#AqU)nWBhA?z58zl?8E1*)_fFj&LVdsmEoS{}-HEK0Sk_U8K$ROo zS&f4BHBE!>^LlF4XqTaHz5IW!xN}gFbBh|v4AZXIDft4ciGxcpM@8SE_G z55YtvyO15!XNCpN<_;C{#Iq8G4&@}mG`yT6VdunGQVCu)$`v)bsaLu+KjYuUhhBT!VVve9>y&;aOKnTM6I zQAh0so87UGBP+SH2bI&$iytVb?!=+KN91was;F!4qK=`f&F&b|Hhs3ne?s#TT5~1M*dJ28dCgdFYel( zZrY0cdX2WeD8+cJyDiA^@2KQf7isPl5`DoEApxq~m(&%E7-A{hS&M$ot5)&h%5sxZH zFG{L0Hlk06rNVQwz+^BQ1Q&~W)Hss4(u%aMV(LR}xhAKSFIId1iF`r3W8z!MhgYDF zWX+MoA7WuOqlsBFj1^Ume5Y=-W5z#SmX)!~?wh{-G5-k5Pvg3GcD5w=P(j&|5Cxt3 zQ=7lm{+K-Rt*>7Q5%U_Gm9~E}Fd-}C6b|$H@jw~YN^vqUg?=a3^py$hBeAEZ3uR&5 z`iBIz?dc4?iGG0`(ytbziHhj+!#bJ1$lG`d{#)>B{y1jDz&^?6H038ESfDq=J0KJYh!xV`Y3P4+H&(E5bF*=@`lpJ1hDHCAgk~pQD$NPw z40kv8^2$=JVqga4V>Y}DMt_xO#v^^U4R(PdzjQozP+vKn^`sb*-uc*tmvR5nb%lHt z$12E>4JsB4l)I>2ntpuI|GX0~T@nj{(&vp`**INl?1pR{9K^<_c2#B)c9v)6to|Y- zTFI$w&7rhj$By0lmKV3mUzWbww+8#{n8)PRf*w)6ak{9#QSm!rSWJ$dqteIpZAf|Z zm=B5J3{HqdOV@gWVQP};g!q>+g6;U}ONqB5U-0&~L$6bVT)o(`%vb}XTm3Y-3LClW z#FuYZR))(W#^V=~Oe@=J-K%gu)ELps>PquO2$5v{@z^P{hJQ$FQ zA$l?64|d3fqh1D<`F~*mByhB0BB0Oo`EEMEe{eYQfkE!AnGki+tav2&1Uy+^%* zG}A7CItGc{VK9gMhRBrXA1140{mLRP3w$R_@CuHf%Y4HzsSAKR7WxaR_N#TtT%Rs3 z_-|d@e{|dX-w^dOakcpOx4kg6V?}fojCaP>hGOlpFA?yuc?|2y!eeAbXzX7aQLHKM zkz2D{8Nk`*4yG_jCDAsAiEXvf6#PMm$Gl4*E#!EU*7mb5{jEB?KVF|8jp5`Fa*>gj z=7<-_mOR6%D%{F7Rd>rZ>&gM628E_nl~Ih+jA1k_u z=u5{EPfMh2N)mLdwXvG-D^0$0FcOkVX;m0nrz7j<$Z+akz(G17T$c=`(evW)Hh!Q$ zarlMhAuTZhC)nIuRsn3hF5u4@e8`=~%YgQgE8baxjkSO~0~ApA=b2bNgeufaB5^Me zxIU4mtw;7wgmo+-YPd1AwisWQJE?j;|F}|l$22wkYWA}m|2u&YG#%H1Nb`yCRdX-Q z0^g-5rq~HhtKuB8_-9sa?US06o*q6n^q?4!PxO zu}BX6CH;PRi=sVfoqm_Y5asKUxNsbcqfXGgEf&o9)8~}2N-VF?167OQ2ok&=^k}2F zGuwwF+n-g1m*lilI2*MHnW9%|;~mv)d{k=h zp)ERiuitw}7QgW$4I}CqDS~O_p_wBO5h68aVzYH4HCx#Mh^N z22nRj9@@2gd;n|78D!eTtXQr_@BcQ;F3i$A_gksSU;rpphqy>tbuX{`@sHI1&hY0> z_vewJgZw*k=l)L&(*M^RDJ#fQ*2MWE-69f3CgR(HCNthHdih1BKh!BMRJL|>HxDzag_13XftbrL zFx*$+GE+!4g=`B;L9`s=Ze`uGbex#B2S+_z#g?Bx5e~Of>WecNxqnz}X^|UFSUxb& z$d(`Ti^wnj2sS&TK_J|B3mhxuZmi}$6;bG^o=(Z>)ck?G2D-)uKLog#lr;S z$`;Ds*e5gAmtAHxs_t;uSO@AmP0cLyOrJA$h)6X~P4FzVAt; z*c%;$MBvgjG~`{2tGzq*S1{zontJgj_F9pC`Q(f{pU@~1g!EDUMT|yoH}+ni#RZiH*5Cb7gc>ThK55;4FizECc1M}Y7 zIO2uDEXmcvPInW3nGZ`8pi{@7XKkDifh1TTv?--O{*mwEMQP9a3Yh_Yw{rQQTfOOP6oi8_C?I((#u)D zzCZp>l3~Qhx>fTjB40m!GE<@)dcH|jK-n4fH-c(Q5lKuKq<&99@We75bCH;nes8V% z&nYvMxdwK|4~YQZd^!qg6jxlRn#$VgTK;g|`^I2Q{qZf@YPRI}7$G9aG^pwL??VsvTkc{0 zqwO=^zs}{&g2mFZ`FOrrD=FijMlju^$+Zlqc^dGb>eJD}p4fl=OLGcPN^B1=PTY3)_ zim|pf{}oa7CeFgkAd#VjOi=Sg&F~KY7Xp{eK~r%)(WmpbH38QDglGOnk5v?uz&;tK z+#iPQ$>Xm6`YY5jI2vj+bWBbJ9t%;2hgWzb&_TwFltmIf2#pH;AN55S&lot^NCnDR)(w}I+N)Fq5zwHj< zRhHgfZr*OJd>^S-4BQ&hnIeW2@Ku31yy=g{A7NIMa=HpCQ^~`|$H`y%@^HYh3wuP| z`UxZFhcFtc3~7vAnnxU!8x(Q|k2dJ`sN9WfWjM2YqGvVpK&~+~^M5>{RZ>>o8%2tu z&E-%$v!m9-*FHi1wbRKjDWl&$xhCpwxkl(e*=Y?&yZ6z(==~h-wAFprs_&sJ5tp0rb{sw;v7C%E(eK7;od&0)DlN_~Xdm`-|Jy(7)Wqmk3 zXCr0Tv=_<%t)rK~{_BNeLdTbavc<{7{!>c2J#F>@(ZL^ux;i}lm+bbLV9=t^1G3*_ zeY*I$Y68!}&7>W?5r2L^Ol82q60or?*#j`JuQxSlOuMw$sWWJG?95`jK3BD0`Vz0- z`<7j?H=$k$Q=nRT&tqp%qg1GA!-ZqQLE^;b11&}l>?j~Bg>evf8%g8S-Tt-;5Q!e zq?RVbekTKnK%DO^+4+egr{1o@!TpdSjUyBDPjQ6rH>NhN+MW;f@3(6b21q6p@!^xl zO$B$zdn+astC3}b&xkB(; zeuI6w|9XMzOJVUKc=Rg$k`y@%Md!n^l$^fxCim(6yFDIX(i6yN%%-LcoPgg0&iRqy z#EQzkO9M|ct(EMUNby3__P=2;;2}vLkpBX=0fxG%)hDo9{?=jqeWm`N{Pi!|8K9x( zg|30|jwF-L4v|lT9U?Ic^QE&$1+J-KO_W;ICP@~aLpi#Xt#lMPD*q!LsL2TT4DF9j z6tF$m*zuKSO!w#)li(ltS3=##boOGcHchI-vp-YKkM9qHe($fB&1oR9+jIcv$4jG& zZuHE9lS<~sWnua3NRMIl3jG!OiDB&!~G>u-3t;Kx8_1xTR_8HrW!30g~OR0M@Ht4>i|X~psU;366z&XCQ64|PT^JwiqOMb#j;qn4m&QcY{aY)&hYvf zD|U3I8KT>p9I;^AqYlZuWD7gUa9d2Y-Lxij<}%pa?%5Dll|D1$9Lp<8-fBQCe0zv8 zun$=OO-#fN#Se%k3d5H<6B>Z`h(ZatK5~!;m5*F=P6x<`L?8$6v#QkOLM$TFCT(zCtaEF z=)g!t{K*P}r#+1ejMSAQN;oPq=~qi!dFW9!?6iC)mjJe=D!;sH=Ho80M)|bU5;qxo z<}(9A^-glAVl^neEeF~sr4T>_59 z#VlnluCJCE8>M61cRdZ0a#M5}$RG&QjV< z`cWhti_T3O>E*qw4KZ`L;ifnuw2Gap%keWP1eF9bw@YkVRjO@fd?^dAK^W~5+LpSp zLvZ?-HDa}B+35^dq3}CZr_z|oXe4nN2MX6BU4L!srpV1{M=)x!kHyGFsyV^wX%*5& zj%l1whJO)b&x!UE3iDP1;c26;UTDejL&INB+KhA2c_u_ABi|LOpJ`R^s|a$BJz+9H zdDPgMs*=8il|hd?aR=5yE@2g9{K&VQhmkHU@JJ%kWWHa~N!4RqD2++I^CfXu_5W7= zWTk3tCGMpkrLQ||A!_pX76azn6v}?&m zYQ-f_=UbI0KX#;!e4*5&u6Y4`Ry>`fcNUITi@8o*gJa5aeV6c`HvMty;0pyA@p^8!VNIkd?eT4z8 zrD%+4j?eWy&|Bxv6a&-d;v%xldoCgfYRqjCk}?BvH?AH8b!P@j57Qd_R#(Bdr(VhW zm};qlY*799f_mR`Nj|{5-5~v7R{8DiT7CkW-;i_3@L~m|c4&A{x14}s7ra02XJ)?C zzpdZjBwyb3HeFshSS|Gyg1=iW6JIY~ZJ0$w2>CYv-iNub*?5bu%@L2Ktlw9LbLijh z!O~yh5%x>T-bJ7KCH&RJJX!g_4{SK)86cCLHl8<* zbAOBC0Z4HJWh(d(g0{3%`xHHwt_Js#ii6sMiUyjtK?SBo|6nUbGvqJHrA0X-SUVYs z@-@*|t2%>gi_-aT0C*cn9>b+Qz3upmK1k{Ul=|MbXwGhz13tk2;#plrA_n+RONs#d zcZTJE;MsqWtNH)clJ+k=o1$T$g>QipXo#i_^DVVO*;-<@;U)pubXTFAK}q;>bQD>?zpq^&Ue|EEJ0M5QW-U|Vogtf zO!qm+e!IUU4uoKiE=4dB@Z%JEplBeo;%uo79TH1lP-ahNarMzia##SG@rZ4kbF~gx ze4mT6tH&I#yq*APjOgTFYv}y)W>20Ta&;9fi6YR#478BPB{OoXBP2E+n z3(*@bSTGA4mBAV_5E}6`Uv787C%(r+3VmTdF1&t@&mTSi z;O^Ba&{KmCbHkq{yCc=WL?r6AC3F2K5)y%d=IIMAEbX-Q_;TH2CW2DS=me;2R8_K#I;Xzzq@cu=| zh0fety|9RjuDp6b2*aRGT{cAr4Z-Tg0ZTop6hT1ZbTv*v#et}ST-Q*Fn{EV)yo4G( zV+g3hbC`0g0B-`H%Tf5%K^I2t&NNRPp0m@>`nLc|h#b5=h#aOX-I_bSbs=ctk;gt| z%p!@6gXs*CNlf4iqMpeVKMsV5*`e4wz%7j61` zci7{#@grsvJeVFnKUzsTcy)y1VP);2Ge|QtcOl%o2 z`;5@w*}C%tJN!cJb&HH*`H{-@JMbM#z^#Q;aNK0=LFveZeaa}Pf{@xWg+!__ClNLG zf4!uz_f%ieC>cz?La+)-i~kh={c$GpMkXp5+OrIU zDD@HaU132fuzGTT&236x&96I1unQ#1GYeAuK9Qo)CS z$Ao}+Qtk_mhWvN6a)O|-*VZvn3$I~y>cxhnNc7o(?bGPnuh~8#dVa-^TtZW!z=2?y zVl|HKM&2sV;XsKuVYv6YhCc$9DD!in30aDM8rNFbJE|o|NculXXE(U8R=+Z&tz%y*@vxc;%=?( zYT{|(>SkguW^G|+XW{xUn-!z6?)K?0KGw089ooX`{pG?asYBTv#Ho{S@==5fZA8H4 zjT_e-9g~VP*Dbu}R8cXyuadOF1+RxHcI0V2CH>v!u{Ztaao^#r*mK%#tjGAOO};}R-9`trXm}wK zb+kLrNB7I)NF%jg98;g>lgynW3wQwI5>v69Akzw&15f@Hp<}6(Op4%S|BX(r9Ezir zIZ~fiZFK${8u6h`CSUR0&jh(X1k6g3dHX&;qtc)*)Pj3< zyq;oDt&a&%KK;eVrInUIjUXB4v`)m-o?^Nos`Lm^WaNz*r=gFvzpWVUOAQh~LuXU` zQaoG;5nj5Eqpqg9NLD@r3els_(KG88TuXNT5G%b}LcSxKt}A;-RfR<=)^tkSJkoCl ztdfZ)gQVkiedHerQ$C0^?t?JRnet*>AHFkyspjqago(grubp*JS8jp5zvTjm zIm}`i&UQxljc1l)765=_10+O%uia8}i%FTnT22Pf%t@&v5?S~l3^=Pi59LZbNMR)?l z+zWl7Sk%pZPe|u-vLQ`3eaOP`-R1BxwTL$Hl0>L!;WjL-DHn4d43wU>ivV6gynYS+ z%wMrjscs64!w&|wXFR$FzK(UVuHD}r^{$8nNd|zEt>}Hzz`($Uc`RKfnZ~%Qx}si% zG2cGds0;DD9km@-02b#tylF7c;&kUPe{sfr4W4mS@P)C6D{@$d^?l_dt5B1qH7|F& z0ycnVqQBx!jr5BAM;eu#wm_KBg~_CYwM>8kVrI#ep6aH4|02z6@_e&I8Z_H-PJ4KE zSpT`0S1s%BoQtyjUmuK`UJa#}TbA_!)M)Nls&mpywWaZyB1-w)w}RGUO1mQg1ZE>M zhjIwbbu<#qTDXA&?=Reg%3^_6j&COAfM2(q?T7L!aBt6l@Zi+AN#-g)(q}j0bMH3` z$Mw{fJ)7U{ZccIa=_ibffGm~RrKGmCwk_;2EMuK$G=RkZHhh~`5rJeYbL9Y(ltXyl zaA5tr6NLtac6Rw@WnRpMJD7)kWEUoZmUZP}H_J;Sf&wDL752lz&#C$@)nBOeqCIJM z&0%LYWY#8JGdFfaxUL-%lh2TJSMlz&Lo74aXbAPB5S0s5-Tn7|PqhH0yXi8qP18v( z;rWdN>c@j1(7!AOyq@tX!l%XH{QT30e_s<3`G2+X|7Bf!Co{XxG6>V>a~FFLHyh8- zu3vi#5i>IjH#Y?nM-!|6#=#b!0X2pQO2A|w0zDriU4dc81S}`Lo3J~inP^0ga3K!= z{cuNH1~mqC7LvnV82yg;tGGdC>c_3-}fd5xjqE+cR@3 z0@+W?15d68AKVT2&6CgvpLMa~37Bb+;AG5---?ictL zTRtwRS=$f|3IMD4kgqkMJ+biB#|e@9lzG z#r@ba+vb8^yumT6UEp7R{)h9_1}pW+{S;!lzm2c|l&7i}-xsNYy&%QH{YvGn{Oy zPq=&X+myyA+I zAv=N2kQwUZt4_Uopz<7#*hGUQdSPnff=_|Dov$dHy(4Z^4!0vs7+7-~L(V>+O2rb^ z5wL~3-;oH!G-IC;as^a0h3+E|troGdgwDC0fUeF)&vYWtNhTMRAYrzqu)BWgzX{05 z{|$|kQTTllTTVBYrKNyj7_6)xPKcrsp$9$}nFs>>N=wrOkkZ5v7_llvpJcqciy)?i z*+u3ul|zSHUM99<>`~WTyyz1QZ-KVRDviZ-6eXKg9pmY>To&pv1bhK^FdQ)#>G|BwJ!eTd{hJT2-=pKbnbv-;k#;R z7^r3)5}6rCDM2Kh!g**LU15ynMg2NO@YPt;p|X?$i70BJu9QKRRmvJ|g(eLD~UeHUOQ?CUCU1e`G4CE@Dk4rdOZ?r3fXIq91eUdt^e6;A5DU&_+sM781%z1TKeEq3d#`tAgwtW;Ya`{b)Vz~!WyS2Smz~}9MA3v zR~!WPkSc>L7=7%t5Pv6v9B-+dS0kyIf!{&jm3Vx>y4*8Eiuh0H(o|a*%p%&`L_Mee z+(mwJNTSL_q+Rd&%*o=>zeJEI+*{TXC$e}Qa`GY`;X%=+HoPdSdyC>*Mb!k+mHjAU zB4X*fYD{aBYHwU{dWP758w6({F&Q7JK`@X%N9!o7F}iA#@OD#(1j2GS!@qLXMX5Z2 zEKm^X@IQ56Ju%?(X0FX!5oq5)RmajNiB*TM2p2uk9((z{U+XZfDndv>kVCrfke`~z z`&)MGF|h26q%dYmaq~Ec;6k-X=QKy4`db)VM$HvQuHILAq2cD@BxL%D@ zdsGU8a$%Pk_c}o8lDnXCMqR#*|S% z!ngc|i-5-$=Sq_Aj8sRg0XNGjjFVLhh(nnEYYicDz?Sp0z0T~#j2f-Y5N;P?#puBc z?$~bt(?8Pnaaz`KJ80cy!o?~D5pN@3Y(>%zpt$XKZSVTqRK-Zh}rK2;J$;5~P*VP4G6sd>hdfOz(NvIg^jyz=U`Y z4ekZ`{@|oP)`DN8^<&MHi8rC5t!pmr{ylHMVW?INQtbIA#aUFIH{Ld*f~Mnh-A@JO zkc$+xpK1}kDKpLF4Y+7DVC%>tD0`1>0ghhAeG`#8xqI-7x%-+HVmwR2J_iVCEhPPu zZ}Fi()c_KiK!@)Ti@)NYsF=iF<-@cu-|a>OeJbyII@cc5=0_ADx(SnZ|#Le@Wmu$BP8{IY4WV=p^mVEy}%M2GSB{D&!Rf-@q-#@)w6@|CzBF9 zSiQKDKvcKSlsl394^`g_A|P|rcJjx85)=<*^;=!OX8pXszN7scIiq9OQvtc$NPvVE zlGqFbuf9sJ(yTEuV=Xr|xEDdXg0Q8a{4bZ4@>Q%2Is-s60I9CsUCQ!@4uNxSQ)w6+ zwRrVzsz=DtrQZ4Ko?z7F&sW;;*wlL_Ph8HLuUB3>;KM+M1OI6#XB2sl@cTg;Apa3* z{2KuM??o2=X-2WOGcYC=HZe7Dv3CCNxxAyDnd1-sl(ukkHnIJG0BE$5j@^PPx-V?_ z{)p3h603X}ex;a30xL{a6AX+sKZc^DdMPN1NCt4}Q~3UJJ(FLP_(ELCrb9iIZQClX zTXa)OghbyG>1FN(-bKVE52z>`1G5zG^{B_z%;?wUaAN7NX@m6LOt0r-oI|zxEwudr>`mae)!t`LISBexT=#i^sNJJXqZwsS0RQYC+o?$*J{}5 z`&}fcR?FB1fotb4vKJi(E2skE8e9s+H74LPu>M*1ouJF8PBD79far!}&!r2wKNlJ(do0baXaXkWGtz zRJRU3>!<*O!uK>F8Dl2d27Lt*Hn<8zXxpG4z1i{=g`fP^T)x;}(Fn{%Xbg3rk52u! zStmvziNkKp%9>{4C{pK~A#n?NhQg!28Z^k!m-2Uc$`4&m(392_Lb@I+G^zF!uxZ^a z;06rkBdDl~A18}h6G9D6rZQ}A$}0DOlh1BD5!cLXA$*A z2AD)X_5CLxGVIy{A|?we@&lNZi`qV57sU`+M(H!~v3u9lKObr+-tIcp7-sB0WKJ|M zL}cZ#+w_dl`Bv7aY|-JbdzYr3rs|{Ha^}2HU)hB1 zlt3Gy6OT+*V|C@OpcAx7N*9Y0jZ0v~2a#klF>mf>K0n z&t;4p@ZM9C?BQ*g#L;^=KNPGOnxNo%V6YC)uVUd>Pv30Ot6_(QPz`z*qk?ES?SJUY z`yvD#$(!~PFcomP7jMHL{OSQDK;p?43YKqz&GyfR>Rl2x-y<$q~x>h6)0f7x)k)~|ABym(65 zt_S@XE)r4}ufCWksFaUiLlE-h+EkFZt1kfDxbdvUW3d!m%84P15q`?o{)ri{3NdH)wI z8?jYqaB#Z?;u4t@;sD-oJ$?B;v}U(xzeGq(oxwa5_kt7plPwn4295C%kc947KgC1E ztV2eAsRoxqJ&x4ud5($!zHBX8!%#E2;)tvoSGV1&QXKJ{Alj#JzcWYCasZt%v_**e zj!ghd78DbMeGb7EKNbj(FjPhGnmXR|*1VAcD2zj^Fea!&d7!9WnCEg-%DR!To!HPx>;TW-g7U1c1I1VI_f5@N5<5Si7UsSP0uP02gm*qy+I**O}9grWeucd^DpTstbRXRG>bZ<7<%*_*z`=?=(}WV z?kch13Hn3FEvTG75{&0d09ztoOhBkv$?*1%KSsnkLm>E1$VvXkkR$ldA@^?ps8}89 zx3Zbb7wqIkHy4)y-XIYWF$U`p^?Q^6AO?6miNR_eb`d#v(=l5(cGgmV_0V|JbqgO-DZETztMUT#I4z~ID7DpV3Vh6KD2%g4YMMvp?XA$&hs{-L&uf{7r7^Q z(&T1DQ15_{!exd^DiagYjwfsm%TXv$OW;a0_GK=oY2?MC1|p)CL992_mGxsnH;RfN&$K%VgeV>M9G4N$L<=r0YVe}eI~xhpgy8Cc zOwAes{p*g;q&Y1vTSJhUEmJ~nscIlvC{R_18mxM#r7rF5hMI`X^yDdljo(;6>d~3N z(M(*fny(6X*80)<4ig=p0@Q<30L(_!_{?5f{hSF6FkRC6Yv}<_j(sKi(T!I`5opc& zI=@;Ak~gL_8E2;(#{w?ZgQ;cey_Z+F7;}I*=Tt&rH%P&IiwdAOc(urCfY76`n5W1r zcVI1(>*wrp$=ecep$(C)ss=@cL3*Mhbu|sj#y!TSQ8$X;Tc+p1lUts2RRaCh=3AHt zY2S_EH#^+0T9jr5m-j7bHybKJ9q3$v_47i#JiL38Dc1xZJb|x>5;-2TWN7X+GGaC2 zu6Zw1rJl}7tOCLFYEXSQ@Py(2o?7FFk!)F$hlw(uUi{X-|0d#x9s*|5o#^F3^P>M9 z$c`+`gZZ$m28J-8nB5)H&!kCyz=_dLCJTFLGdhHDW+jDw_| zzT8z!+aJ0E90wG*`bTTe=w4T8HW zeVF!Q@(43&hmO`W&>cs&mMS(`t!ls=-tNJ*ckF)YJ+ei}%&#%@gF^r( zo(tQGSVkehy)x7<6aO#c_N^bL^!1GEWaB8;!=0Pr)DkBKdpdOkGz^ z7C~LDI9AbR#bd5n+jX7#9b&v7YeHjI7Y+dq(lt_(u2xmQ0-2X~qe*)HGuVwTx4;s~ zxa`sLZw=IkJmVIr$P3eIfPTv;f3k`8Eyps$T0}PGdC5a{c)Wp7pcfJEAPfqg6mia1 zeBKZ)lt+jDHGp-4;8=Fo{1apHztjEw-9dNl)*%DKtB}G(q`U~i2%~_|BYFrgP^pAySYkZ7C3y9Vp^NL~>jq;!-cE$St{(I({?Gpm)oH6q3}FBQ$( z;5$t287%sy&2PpYe;Wb3F?%_k-nPMXWB-!U| zsD}%yD0hhcr7^F0bxtak@K#NJ)}j`6phBT*P-+z$W^#Y0O+LSEl3koj z0Ap7-#_zRc7sGys6;yfRDvE4LBJAZwK-yPoL0pDpU+3#A4?|cx)2>)w( zA89QE{E1e9;UtyuciL)kC1s0@wJJ$;6{xO{?Hixw>t3c=G3{@C7P^PkbcCtT?|je? zz%Qk`lYUzuzP!O3^yV`=k2)==5x;#uz@L7&ModOVYb&#FBhni8xw)pp{G%r!Tvw;K z>>6Ntl1O*_^lK8R7^O*+3t@ThjKPwj>(DQYU*;c@v^eDI!G^x?E{h2SocpqIF)Qw#oP^5N3Yryx8Pa#q_9hZij1Dkm_EJxL5hQ;V>c+zG4*H8dYXq* zpEytZ?0u@8r!9(g=WE&6z%y@-Fq|2ksJTqt9yLyhAgo$->O!j7-%}Dp>ac31X7GXa zYI^d$W5`4s!?RUGvekTT^jNu6Cv`gOW;og18O^?}Be#aGczMeMF_g8x&_;cse{0wG1=-~tSRKgO=ct76udVWRm#_!U2&xljR94c8MlMpA52#~sSL#RZs1w~NiHE`fGJck1TU zE9!uCRj+G|H$!StbgaX6VC8c0xT*kPzVS7=(d8!u>xwogc>>K7JzLQBRyFoWvbEBq z2)&*9ngDFF>OCnAnhfbu?!CKS@i8R{wF6Kc5V-5pySN47SAQ*txc zD9&_)1!2p2$c%K$8T>keaJ1jr@MNJT^sK)b9vlBGV505^ENOc2W%ve8G&#uZY}N>Z z!f;HI&b__j%RBtaECh4x9ov}3a%Q!GlbST@Nn?-wO6Vrm6UFh?d}P33b+De!XM4P* zX_#x%(bH>TvdHHDhd9GX;rplBkblXoOB=QvWHlX_eiV4Jyt)|>xq=!g5`C}#kXpxN znKMe;Z?Y)4$R7Asw>!{b81!ktWSvxZ+?QT{Jn*%=RL$T!*s~n7+_LO&!4v9pOz#f+ zKC|mDfgRNxy{~d?|AJjr;toNS>Y%f-opf-4ct*xBGPwUoI`0O$U6=TJ=NaF!#2zRL zGjMpJ5A<2D(LcH`cGg563qfg7;j#;63;P8iKxswN0IC!73VuQ+a@>v#2&msZ+{*a2Zin%!j0lASc8Bzk+1)r zsDouA38LvlZBSXNbn%lmv=}+rq{7C34mX7?6f0a7e%P`s^amO!&mf8GNQHE~_OXhP%m$R3>J-gnfUT z!Jk)605keLTu(FSd}t}RV?54EfAbtQdCA!wjtx3c36(PB2{#W7nWF8kpd)rLjcR1{ zhHxRkSlZAJIWS-RyEcM9&?=a4cV!mV?3P6ArjWH#lW;I5U?l;GomOaSIf%QcJFF`7 zByCW8miaAP=7l~F^a1~Ms1}}pyNyf~Q&Ydy2c_+*R!bQWTo~RV3UaDhlw30>9Jw(P zV9#drjd|ss*5Vbw`U>7E+c%_U(RgjISNJ8X)Ph+zPt!tYna?gf7<{neajHG!*kOV$BWdc9pJcS|6^D3Tm^jYp+&rB(0ErnDqv7I-#1 z6^P|h^VwO(<1(-jd6RO9PCbrze_c`2^-G4AB6}@MtWkb;cK*6-(3VQRIr-9zAy6T7 z;^;>ZSAtkiqnk7J#$q4);DxG>SL5c&^#wCqE9RqYr;44c>$C1M#(4C0m}*7fAHQ*Z z+cw6qfCmhrng;Ja`g^yzd+NBHSx`yneXPMX#F{+yKHwV01EvJk%Xn6#zhCl8oHB|C zm}!ROZ-hR@C{u|!jMS>MR2n_ll)Id^$n?<|mfY&12MjCU!Jp;nuRI%g_;^YBgt?>WM;M}dvzhZ(qx!RahC{OL`6dOw2{)k*Xbgg= z^{=2vVfhRjw7-H@oi=EJ01KNf`AdTx`!?s zifxjbfFKyc|L*kx-N=LgxVut+=YD?QJQ9%P#0SE#< z9a!==`|p9NNf|~)Cbnt7A)IOzE3Hm$E2Yaysr4pW6^adrk_b&HAIWN;<+b58pT=sP zi-PKeob7I=F=Ph z`V3esaeWxQOQTnDAISDrrkGA{^CfFj*)o|4m~?w4_IY zBYVdh9jtO52)AIAq|dI?w^WCyy0!40#as@jVAy?t5R1BGbU+(7o*bec$QsKd&Jraz zXz-;mUx`9VB*9cljMid%PoKqZGnpLG4q$Q<8#oOrC~9$WItOl271jD3%y=}I7`sfF zA0R(z=2}N3tP!Q5v8Zjsr4Y_!Og)lroovfm1GMC!%Ct+oh&f0c21fCKpNkPn1Z zdU27d=Ruh+x^NZ!lVcTmKjTYUCZH|pZdVl>`ov|%uEmt)vnCA+RP)fjruM+AMzQH1 z$+kFr2r*;WEOnbRTNoxsU3OI296njLLfT7VsO53<0nUMkp0>5pp~if{6=ibhyW;ZO zT*)C7R*ag-hSoho43QQ7GB3C=#5HwJ7d|fg1Q*L{)F`{562zwc&!BcAX-m4)$D+3ha}ldYQ6mT75%;fYvxLS$V@F@8wa~3wUBzL~0cnSZ&T2!DU$` z#T6QIa$qqqlS-(95z0H{86PvLc2a%G$>gdyx|;H0(8jpYbA{{l~;m@Vcf0RKD0l}ku9DGL>RgrM}L;;zxvSXhkQNw&As`7h0 z<>XMk#l5jYmZsD7qCEx)xqW1jw+)1r?J)1&=RLX3jz%#VD(p>J20YxhyHM*MxUFat{F?n!b2wjwro& zwrpXxSRH!PG$aMt*4NzV4eu2NFuO2yre_iFjuQToRXOI1zs2+&XY}mmqSbMc z$Ohs&PAy9~=%Lviq61-bc|k!75w4($ceuVgTMlS{V|%Io{e^R^Lz6;w`J_bsiwtFn zIL(NI_v!g1P<|B;LTZbvCy38MbfS)`Y6IB}Vq47zvg^R<7VSf2B=?q7sj>%OA#v`w zB19AHYnl>fRPgL8dh>#*s!NsZE4($RW(&1vgEO7;n}&aD_f;&C#YBN(iJf4N?tnN`;ixQ3$pv)KE1W;Bp)j;xP6>74 z!k}E8R3m97A#Vgnf<0v=?}=-S!t-&EIeO-q(;T!i>YSOZv?@+EBODFHk5{|K2vVq@KUoxkjo+`?w64uX86w$(`&t>9iy&^Kf=R_*uy{C#Ne)J=fQdcjW8YGvg!NQeMcPc!#WiaTEUrwo zgfsrgJUOr{u?T6`bdmgFU=R+wDX4iV6>~e*EZz9w(NMNe046i%(Nl zT|1kPM|!>>J{F5XQ=*KPp2!-LghIT^tXiavpit!qd&}Sf&4@lIcz=4523GX480thY zeY%u%`fh2TRmOE0ygXyIR$V|QJ}hxLL+V`gy&ZIJh6Vi-`lfNBPGE-kEI$B(stk;^o_0_`? z47NlRk{KQp2}>XBfwBwTU%=Ho1TW+dZ9c5%7qh3^^_`ccdvh5IpRl0VaI#wZf#^F`h)cl_Pnuy zw!6M*BvxmV<_Ne4(Up)LOKF&=gIRurnz4zz5zPU?>qE`czOrT)Ie2Igz2Uq9W#srG zM;&>?Z8-2Q!C)yG!A&G{rN$jX#`hHg9_C$+GQrS)oVjkxjMxr|kh|{w(ASd|0u4{T zJEQruq|JGNXQ=%uPaho)D+wa*=&XZ6E1;a~#=hX5xL(-vY6&W=AZ=iE$bRSc$xpi~ zq{HN}Q*^4eW;uLIkba&`m8uV?=PD5H6qGdi`jjI<3t5Lm#4No{4z>*^WPO8CSX(TbuLe$U_YKEAG>?g)fsZ*B zbpnlL@NACLkVQ;3Z6TM>B^5$edib_k;C8g!$O!MWN)j(3qJCp}qr^!##m6yCJ_*|W z)+6PxIKy;1%e=Kbb`>{$|4yiT7k-o-Jz?St&SXKIv@s+~n!-SPbZWLt9F8l%K%5k=pV`YFF zb4Z0~CF=o)$>aOyWE;THs^uo)*ci!Ndmy9fy&9&bF z>XDhYhA7r_4z9fclE0abEorHGvvekJ9G~OiVXqHZ1QRhIwLb#pOx5>n>Du{o51G9b zT~>Ux7(V+}cWqN7|FxhZ6p8 zECYb`dV+;#(IjQ+m5J_JjD>*+*tgI+EF(junl46;B#T}tGUKFK@h$!gI1-I8r?7P0(Ze|D0d@)4v8R62%3)G1 zYE<0N$N&VId`=ofxx|Nx;6qD|!eT-KA{UJ8#50Mfid9>RN|_lEnM|jQGI{ll8t39D zR;i+1&`^=192xIXqkE?n;O86kIuU2@4a0DX1|F14#r^c;`Fe6DVwoFrJz$8vT$Ew^ z8@~qj*Gm-Nmb>k;O7T%>oI}o|Q+4E<^D@V!6LV~Sn@#v>9>ARGk3f4D*g}d~)zU(a z=*LIj`cuAusUWe?dJ_658~<#VPHnVOgjolPQmfRM8d)4m%uO*i@US)JC+y(h*sK_Q zPX@T;vJsFv^^)-G$-3wps!F@$pkaInv?%(#*Dc^EepBuG;aFTz{V?4L=fDj3z^Om) zm9HA8dO6Yr8drwCp*D3bv=cs2-+EV)ZHk<43vH64%}23*=wLr$!j@8pz)N~tN>6MT z|KCe4QlV2WR-rNL+Ag6EUapU@x;XHa*{jK19*2#FBs*`|Kpj^cQFPF|{s!F0H>)AH z_I+O9dP@$((Y3`6&ggO=-XglKG|^@;I~)NsS1ot|X43$kTROx!y<+YO67R$~eAs#K zn+fMCgXB!1x0w5oi@7i{*vF50Cohk`Hlj%DDfHZ=s@~X~Kc>`}+3)bLzXwb7};aNC44e@(+hDyo4?~r zhDg8`l^>L)-l8ua>$h*hW|zR}r{Isw6mG~on})qdfGF1kxDVm z4rRIr9xj(#|1#0gkP(%|cDjGF=qV^Dj&Tgtnzy*>CWGyW9LH(d6kKr(C8(Y;m~}Z= zU|BIR4sqb}mNu|IfM{8g@wkB83nX)unbrU`Oy-}n=yB(rutBo+2ytMa%_$M7;c}_q z7G~jGYJ825wld0gA75M36@}redOsKg;M}&Vm+9^Lm!@m_%dF13{L*t*@F>!-6RvU7b$_ZtDU8BN5!0vVY7H2vmuSTpvF|C>Qa;OF;(MaMn7kL@7+ zCX)I6GHyXX^QPW)%U>SRSb*3tZ*wnfMg73$p2DaeRW4z<2;s5tN%2r;ELpt%?zqVZ zvk&aJo4BBTMBQIo{fZDSP&4J20_ozHL|JFpAO;xHzt!%x5vr(uJseZdf*+6Xjr|y* z+l6qi_Pi4PHkAV;Zm0*SGpCdllLvf1VV#tz=cY5$7%(sjwCITx?cdZ&qf-{t60MUs z5kfsQ1O&7JKxNQ}pzDsrblMlh+;vPUH1ANTvrNh|DQH5U5iRBj^Q>Xm0Jysz?ppeV zm16Iq1H-kq#qZ8Y{yqRWpIdZyONx$uhgQ}i8EO?%Ivm!f4xDKeia#pvp z945KWm}S6)XSPNwnoJXJx$e8TQX^7*>AARSYvgOfAey-phdo)CeaOx#EeB@lR$s}B zw1VHDoY8YyEwkWsQP0_3CjhLGSKSh&dw|Zw-4%lKSqz{|KR)5#!t4{f?T2p86*B)u zX6+_a(@JZBb)eB*{e{jMa=O$v4Fi2^lxqm z^2TVVv(RH+pg9?=22$L3XPOX2Ixtp2gQ7Q-kdvDv2IkF73dUw?wK^1Cvq z)5&S}ft3@wvVBF;X~pt>#S&`OGWD)=_ypsn)dck0C4d};iibaT7U=sQ0?{@6_%#mk z*RL1S|3r8Z{?CM$#D6Oz|BdKkiR!i;phpg_&4(Xa1UorM-|;U9nM6@6l{|!?eUbs+ z7)r^`1waY^do~MpBBX+@!ZV1`bANyT{s{AHh91ejTbs9`aifq|!N{1_g#b-)eN83G z#w4?;C4}&KD9GQ?y)W(z=v3+C4F4XGV^*+(v3jm}>C?#QgoLSb<#F}9=Om5jWGwUr z^G88Sr)Kra0YsqR)0qAD2T22SYv@(X7aAxAiXH!{Y*pi8ww@!t!QZ(JW3D*_>aeI{V$ZfgsqdafweX9{~iBn^!~RS zW)eRk3B-UL@~z(79MfE#8r`WdYq_qmXxP0Y3J)S8PwtFiHg92lB*<6|Rlh^jP96Y- z*B6R7qbwo}OMIN=eGEl>jaO^;%e8*|h8a_*7575x>Ph5e6|7~wxv~Wdq+XdjUO^p- zP)=SCilhy}d1b%k=qYHOEwFC|Os6KQY^`1o%3V9L+-Mugi>6kf%Jy^84NOwuhk7TV zV$pmw?VfAGbJB-?%{0%`aiC1rUy1sMiI@C2aCEeOcG|-nv1W1P**9S;cbHk|HU_S} z(EWrYDE)`I{88Ta6vHk(Gh)MLNNEyf_1pTTM#Y~31!0rfKn2Ihz5m; zxfwDls<}?SB@70nzC-7Nhk%1wl%q@3p_zVwDQU#yKSr7ZwA${PKZNe|ez22bDc;YLj; zB`Stk%1lL7rDwO+qyuzF9@SxGkvWTx#TZkKRVQG#G7d^r>`W8fQZ-v$Ot5wB@!gU2 z=d{NckJ$5ZYv%JKNA0yV5spt%_*(JWq~mm_|MGmh(;FXg(})x_H8e#mGzBbGERm?N z-klgpiZnwsA&_)L$#f&CNJbh~Y+h#0fT@El8%Kf;4n}0pf~n2h*=<4GxQT+)Oq<@k zMvJcv)Jo|b>OHjKmL2pdqnufGxbN+#dCF>;_UF9Gw6TTE$&!MjBlQhq%_Qkd+tus{ z=#i-upYlH^W$Biu(nU=1?i=`AN>h*V-SH{z#Pyvf>wS-=%tmpEV;FK*TQ((WsBS7N z+r?yT^zERD?})d?#&M@rl2BZ1N5}Q9%jU#P8!57xL_iK49v;OoYDu;IB_c;(=G>Vv zmrEN>B88@$n>Z4}%r;0?H_nwRy2b-E}q^$T-tmCa%os+He(WH<%*%s9f zwit7hUt5GG(e@rva!qC(!B;k7xfU|ME4!K!R6Wc=vYDn%sv@B)jP6bqX3^|U#Ygt* zMC3DA%lyY|Vxmk(I_xnQHagyF<|Q%KcZ%^@Jj&uT>X~B@2mqd^%PV_5IU{vBQ>T$A zr_CyOO{VkQ7?x6EY^90`-(&+dd75OA)lj7DqKf%77+H>rp{PRy_30VG@ott}vd?6& zf^MNs30L8yGI_G?18Ged4NqkTvQyVAR8X1~z!n0OKo)bNhrvW%Gwr8LH1YiV8G}Jp zJ5L&v$jMLSGj&TtSr-mx!%ye|3^OTdcx=f1=nj@eHXViGl#b8(^yj6)5XYqPGo+0P z>xJK}P z(~9iD8Nh&0ct_%;>0kn;iBnIc?nSAIuI*VDqQ>iM6$y3;S>VO)Y5bf=3$ zDi|MnfWml@lcs3$Wxom=3kyn!0xE)}t`M;er!Oa!t6qf{1(g;g0HILBMUhA{km8|n z-BCna*nlv-?_2t-J=j`Uar)U*MiN7vl2|Zh$P66vR;mx@q>C<sLT!M1{%^%Bu#W2DLA?S-jnwoxuJ zob4B+rkFmn{xK{$C*sZ2AcoM;@!#5JUJRT zTtGvAK$AW@a}E50o5Uds1B&UWTp!-ylg7K91v@Q-=XZ6cPw>Zvk#=#7Nc7I)C75q- zwy#RLh}l(k)HCJ}_$;-TWzLb#)O~9*ZikyUv!BjGrL`4Aw|$=1n?F8?8{C_yo8>4@ zNb=XdKsLgfeG1N@}PGE!YqR(Y$`QOSjoebdU^ z$m+=>=3iO-YV(NkEZWd%ASYOmRl3Q#-IQ~vQ~U%bgZ>{w$@R|ENa)kXq6_&c-qhA9 zb!nmVB=DPr2on*a84r6w=42eeI>Yut?Jw~CT%pt!Fk$h)4HjW!h+zQ|by_{l=;E0r zs*?CA5|K^MBl^l={$d84LSu{Kz)!vc!7olOAm;L8b-evqKa7>r4& zG%Q4o`zVDJKI{673e738BaluHk0LfC{bn|Aqlm|0P+Gg-e{?(PZ20n8przC@oQ2yt zD;w=dq;OK&!0s;(gPwsP^-B4|@TV}inmHho4W=AM{u1)kP5Gv37`3>t223{s?fw;k zpx_x7-~DinD4|<~2M{}@jwC+08XqCvj8?xB9W;&yHgV{a;GZ-OcU10!^KSOZ?46vlp>-VSQIxf4wg>)zTl+(Dv)=b z`amUN*ozvhs%wPN=jVCi@&+?sKK*4<)U@cLlJXVhaZmGBtv>1}P@hc8eBwrb=)(^? zySknL?I-6K7d!KZ_JC6kd19z|KIL1D-`YpDQt0){dW-hF6wB2lNXw$MzwDv=upYwk z&&1kf)5XSCd;bJ$OQ%LX5Iz>++0U7n_6chiDV1RLi~490O0H;UZ65@nY8posNO&^= z?G34BOb(HeRy)Wmu&Zzx@2xOX^1jZV9<+Z6%Wk<#`tT}KVRB-BB~QZ^J-X7-B}wbe z_-e0S>a8elp>i&^3A)(wFMzN(RA`ArD5$85Dqa1No-E_`h%B37U>>3!Ha3?Xe zAzfWwpIcqcEWN;%Lazk)+sRhr;=m(qd>k_+bFQ;tF45&fO=Mue|$|GA@+-8qD#m@1TWKT)cn`^<;QcAI4;zFqc)OO#MjZR;= zas*|)Ri~%iDD>y&mhmYh>8Y2-ywjT`+2oq^E2-Bncly z^h)%aOre#rZ%q$}7HLw4?!mlbQpD8vEZLB~d#^KM=V$}jfgTl5SOvihf<|E*SaxK9MU0 zL~bDeRutdKkcElv;_jPk7lwXdmIC8UPsQry9x@;n-lEY!pjg|&j=gfYeUv_SC2sr` z@dhHCsjshWN44}0@Voza*O3PM&ja4)6oZ0+o#E5O8XDbeNdGsP8exL?RamroEmEo% z$FK$5b{_`VnBUT6>RMQ?PnUeGpy7Ic_d(dBeVGArEXq}?GB!>OF`_AVHOabx3$(8t zfOAd@@QqJw|FzI<+S>6R-~A1MN9v8ZVton&4OMLlRW_W&H;3OZEsUjde`D%U$zM4Z zxsyfeHU?@_nWI}>EW@-hE%NQ;eZ>5a7<^buOD+3j39)pBp}|{ z2y8fPQwkKabg74}cVs*t5MRiX0Pr!19~SWGbhKR`8pzGwao>ozRF>kVOo}pXFLlV7 zC=Ci4^<%AtE5^tzGyogXmcSx9#3}LPlF~&leK=v}CK`6)4opD{*TPk)zsa{1PE{qE zQ)DhA@Dtl#ax9wN%b9n20cA+;f%8PF3DwE;O_YfhlzU*9cqf$0uq|Jt$l1`B>ct8@ zD311YJtMvp0CztR?O@i&!Cx_j^$3Npfr-TM9S!D(;eKsTyca*k|?b6Y`1 zr1R+%zAi#ZeQp%-!NpukELW2_yOG1^&Q1?qOoRNA#NtuB<3xz#%S(4$1z6VZR) zWH~;#jg)ln^M}0{56X?W`=d(Pf$D{$ucbv=G-sz@6pFnbmpKCn#HC8I^F^;pUAQQ( z^@w=ypts-K$bu@Nr%Vd!%Z(1iJY9WCs(`QB-5*WY7X#h@?S*W`xbW9?#LT{uU9xhNul6+ z4ylUN zeg3Ll*yYjJNPhcjU4@Zm{2bmHKo+kdKq86!6eUUH5% z;tYcI8~OmpEjc}%f;WoWqi{3|%820I2bDG?U+y$v_VJ@juTV5dgK%QQ=iub1j<9@|6bV}1kv`DR6hW@AxGH_R&8g;`QqPVS zLy4eMh*4%ZI|X6_sc09qDkZ#41;k9f@t|DnE~UKCDB7;*ZrR4#nk{#@ta!b7RgvQo zh8SDLNv)*oOtpLXE(2-bS7YWHuq zChacV4;|i-b19-gDay+07AU*08=)rEoMz9UM4PU%zJrU9^ByS|BTJdJ#GR1H(RArR zT6Z5MZV|~+@bf{T8V>1z8cH6t78?+T!sdG<-7TOf5m7*4UlgQW#OfGRBTtRMQ5YXs z3ylbh1^c}M3glR!7r#ly#!Qfak1a6@gl@rnGQOjz(OFKxjd+w9EckGCm;M4WCwVI%HOZu9856^>RNR+x<{DN7fdn)! zyO+ItWnX?2pRbp|cTIji)_f=%8#EQukLaGCjUU_uNh-&tJTVt-RHDiN)jGa1#jA*( z6o6})GUli)4>6HV(;dc5&#fG~kv>?p(R|x(CkrzY1uL&*uS9rxDpVY5KjdA#Z^gB% z(kvnhNb)sWOo~iZTRuv5HMlKmq3-gjum^a&YWHve^G{QN&ElP;I{{YCJq0;U_QC1= zp|uhBeCp;?@?wIuh+O3w23K6CyapDjJMwk?PteYHrE%PW=} z{eu)JF+wa61|2r~wb7bRb=X-$H}nmWw+~V;pSTk#RRkdyM_^sBSq&geW~03{>?4oD zV||Xx!wy%#E2kj^ep-`nK3BoUZwxhduPSTcn%2$CfM|3B$i@i}&ZA0oZvqRd&nag$Row}Z3 znrnObbTaJ?E`+wb$PdL=#kINI_CDQM>`=djl<~c4k)`f38xUY&z9HIAp4l5&3&o`m zR++1w`y&3GltE>PcFkxn?J>!O`@s?YJyCuegyg6GLD3G0&I!L%p|CrWZPE-tC=+Ek}kmaSV;ypJmXA6&fBoMRmBs z+@f(Z^d8kPeE_Z%lmyAN_>XJcxpg1KYni5((`8JcwNp=J>|u!q>UQ=C zdR1Z>*Y-iEb}&WJN@u2h;c*=jb)&r8j>SHKtjW4fmXGdDQG*+p_0TAE9?#kXi*SFk20jj@E>g3@KP4`)kA4wz0u)PJZTO8T*qoYP>&Y|g^0SV{HEpHX7FC{g% zT%XDwcI=y>K6CD-B*CZdS8e*}nf^$Kos2XTVPW@S)6sn%&M@TRee^siXxFSZ;+ktC zl+G1#<3j7mIud$x)M%^or@aR^g!3=DU0=>bT6nR;9*JPOp6e`}K1kKGuCJ=7sBTU+ z@bBXU@y)Tc==nshwQkEE-&E-dJ9@YoR@8+ z4Ppp_4Q+W>)d0^dXlZaCF%yG5CV!zIzi(^i2sNs9BZ5b5G&q zzVyN_ViL%XoqLb<#5)3B>f$|>dY9zvprkyS)Z@`Wcu40evAPz72sLS7OR^VXX9v5P z#kr8xx&M{J>uBGLSVQE*OC%#@o^xyN8f&g5T|XE5YC*lcm0jV_1`i8(Z$BtQ`9Vij z0Z{~b;pg*VERejW(Iwzm#}>30H?$+zYhmia1{EZA0+DP@VX>E33mtjQ(ESwh4Uw1! zN)o4(qb%W2CHXa8{74lbg&owx1D4)(Gjr(MRO~|H!#sHHH-Nm)TcR_Z;&Up8f@Fcb zZ%8Kwann~yiBV43gJK4ko^x?&A|rsVP`uzDWKbn>uDCsEs=Z%Ck~DfHVUMH_OPy!E zP`X@sjcq<*oy{q(o6dlwj6UN|7T29L$F$gKP&Z*VKCkU~R;+qC1V4lBFe9V_x~f9N z4hlEiq`VdGq$LRvUT%%;UUNOUCwVe<81I9_LbgEv!9Qf*huZv7ygTNSVd#?Kp1(5y zl2neJowGcPe0w^?NkGublY1|9g~HOvUC_H0Q^8;Q=>7Ko5o26*pWHlSr^)7Wz05wt zt)Tc!s@Nn<q~^B_&I^ha|s$Bh-xFc84FI%B26gnErYyn=OnpN=N#Lo{*weM|{z^XL||%xp)ebaU)aTI#SU)5l}# z=kKnLyi*=ozi3QWRgZ{562J1VlyEm*1fYkPtNIL7Fm$Yj+GdY{yh+~;zRAn|qD!Nc zLTd0v^=8l@L6wFvTIMjO?H-gaG?ZHaHYI&^3lJ^$ts9-4SYh)Tn0}ef6qA#O4gF9nK#?RAS%>siYM`ywu9K0< zp{Qd_bG7KueJ|(Zbx0|aO1YYn`l{!Sx?Ey*ogM5Ta_ zq*&hB!;efrVT!%ISp{pM$c*-`R4;Lo?(6%z@sSfRcI~@+sh|(ogV0rN2-PA4Z3_;) z1mPZ!gx`0TlN-&GP!{A_+8qzaT!)aAg_l?0BmA~~PK`cuQSB86=uaIsB9%!}A1Vc6 z=tsIWNbBGLoM*ebz1wZ5)et4n{b*eV8BGU|U^CvS^u}-1BaGChPbm~JeJOYvm6i#T zN(O3scr*g~P@} zTEwv4f+8}%8=tUdTS3H*Q4V#koD!P=t_u4x=*`0I=S+1X!LidJ>g%pTesoB?jZjV+ zflU!BZ^*n-=GhBM`U@V~MP?RBP64TD6e=)zgOd0@D+WZ_p(bt(mqqDule17G%F`f- zb|TT`iJs4Df~taED&%}J4`Np3pm7C^>PozA!-#y-PZBXCMvYp5k! zKHWZf+^AFKx<6an5E`>_g6k_?HNW)rFeWax5z=}7M*fV$2jzPFjB&F_YoxX-4eh1)VI(l=kBfZamb!D z{Wa&Pu{& zbW+viAKnvYT;UsVR5K3jp3@^#60~AVhY5VBINdL})kALb%rg_N8&n8uwpO;L&njf7 z&e-!+b-Z(i+eE7~75eR$9lUc-Eeq-0qzvOTJ)e=`QAw@R`cZqQFp&Mv0q%IAH`*)8Eko-E8Dr0N*pWStX<9FpSgfK(q z{ac^YCOnVO7qVBeeqi!Kke=f)@a28U>o5-7bIw`R?pB{N5?mw7gQxXK9GV!uZqT}M z7j14p#^)7@89SyY8AtW&GJQQ&dU}ob)Z38S((>}C->O+=Y+troydx-V%wsC3wekdh z79MsEubf7IbJ_Zc551zgJ21DA9(+w&4&!VTs^zb)_$<%dvD92DW*Wu5Xhi+3dXrPn zSCJ&q)|`D92dbQk`o{X&l1ActMq%SKo#UUqhaVxcmDrkx^b;fv=$_3S1(mAkw4pZ! z;I^F+3#>pO?82VP^B5lQ^kd1qbLS{pE%s}vFp*i22}OX2coR?C7Knyf+v#nVpawqvjRlipV)kI z0(D@LJff=Bky{`HhO!3Zg>*4NBb6hEQ^R#j>Z5LQncDkHtrhP=AonG2%e${rxx#|- zA{-j0Y>rIecNtc)$k%he)W609fQ>mhJs;QmJRPB04Uln@_fE5_y$)9d2`IjPd*#tr<|?ne$)N%$&l>S~tzOtVh)&24g%jg}sp# zDfInFUnO>Ufj;E-qkw@Tk{UePyIeCOk?<^&F1U%PA01^^ZVu1nMqY~hc2msPg7o zwXrN7z4+*mW4tPFgsu5r1@^_K;A|Qsru;4&{0yg78O?_;_T#j}7FrSZb3RRnM>s6@ zHJCLz>aSg{A3bP(iVdf$r^`ejuPYsLIucb6#HnmZ#o1z)PUyjyJys%mxE+EiDeW~G zH-^TGIXA6q*mLw@oG}$wE&5Dl99Kj+x2#2v=U_K$(ce3#o)Qp@wa;^H-!5AWvmf{PxKVreFV@K)SI(8a6vwm^j{b@Rl$D z82{%l!9t$pvP<q*| z(Z0^>eeoipH^0EI3NI^2)(xjJs?~8uR>BCed0Xfb7eBlDc$`m8U-U@PBY4{?Q}5VN ziK-Xu_GB$VNu^g3?@7mJ@}^i?x!BUQ$r$Eypk#>io<~9=a>_y1!OO0R7%~=k4ztUW zK3n|9W?|C+ZXFj;Zr3nD$r{&;?7WLj?fpQ{Av4vFh)!5eEKa4C+nQ4&?;SkKK74V` z$&Syd>JbHWW7JQD8FLZz!_S3eBv~*;?KNJsvJ4-kI=&em_;Pt zP<+^KA95qMQ(=>;oPxSWyJ3oWP)JcpL($fC)C^)?pQqG0oCCzCLvjn#}xs_wvo|g?Ntuige(3spM;T? z>0U{&Ie`R`<|t56T6AP5nA!@GCTgDXQYAN^v&?l+3ilgmx4^*%kJL7Eio)UyVu`^k zi3EzmFZl>q#k^h~;R?1o65uWg*sysjkRCGFw>$J!Y z)ljpmxzUHbi}hOyb(DJ9Ybf`*<1A>Aqo3K$lM&pp9=$^r;l9}*sGT-L*Zqkyr3MkO ztaP6N^lm5QVW+ZV6(&QxnTAhV+?fG+^vW8ls6}x9vOBYePh&^f$?f;@r^X^O-V-PKI^TSxDF+S350;cZmjXSiBZbUTNxPj zLq-E-cO`ub-_}(1#ytYl7bOHsE^h74Hk`FD7FCs_F z&?=bN_*&Zrn&pyF|aSub&v_bPom|X`{_O6NI$#(g$*n)+ak!HHQT<; zi~FTNhU)00jfj<7QHZMxOKKAc#lh#4n_oX!o*#j6rXx8wv6XIk! zDdZaBhw!_V&VPC2@9!F5VOxNyg_*O1!7r++brfxEhZHb>ey5$GPFC1WMfHHXfLAbkNnrnh z&=LWM(O%*z?H9@&*F#}3(xw{+Bk1yl?eL>twlsYEs~8?d2Rn5o23bNH550S*_evkR zAZb}zr=Fd$MZwNkZ(ACm{+u_?iw|4TlVma4=(MMinYxGy-K>-Fz^FuHX3r{WFK(a# zb`2M^&FPti%k_t7GMy~t$=2bi-UhP~jFMbS~1)dv_swc+;yR zaRvm%=}>iV=Kkbt>})^w6KJFZsG>3`w2wQkenXu4OW1iwgoc0dEyi%`m>xk^FVMdw zF4O$_g7|mTiMp8>Isc+Jsj7{&(m0+EYNb&}1Dqj0iU~(Z>?e`~^VCQ87%gbtYe;6} zZXj!XB)FWY`E#g zKgk=qkx8vUvoPte87D(cwkTh5oImAT_s%-XJoWBB--y@qfm+b5r{3SGaSXl8jEvr% zl+@@Gz08~RVt?41`ZoN z&&%Jay$UHWW21HjuX==mF0jYetv-`u<-b*Vt3r2C>sjaNktdHp3L9YY(bQzsCyxd$ z7pNkE#qdlmp@3GpRQXM!M-S0yM%-koji!$qoNDHX{B}XEF4G&-=&S^d=@{(PLiNXS zm1ITttkAfUQ*AJnLIE4D_Zjp=YUEzmNwmq(ri3NE*XSdF^Dlv^TK_oSGQvQuY&i(X zvz|ahbaG+>ji-x`vqH<8jkBV3mpwrgn5sU!1+R4!lB(v(28QrzEw*W*Kvxu&9^(g8 z3wzt358%6>+2crlVG|oI;VFr+I>X#UHN+slw~e18yeiczH=Q&h?IQv=1(=HK_OL?N z8esZRJ9%@pfxeF|`;7X7kG*@KNrx1Up^y_f(}%+QpJLwlF>A3GDGEyk7Z7A&tH&)9 zGZ@ta4edwh;O%0XiQp{8XS1*-R9!cX5u@-{TT4o`RPgC@)E-vL>zl<>Rar*Qw@c~8 zlFifF<>%&Tm0Q=>&;Fk^a@YpH(y%p!E@=vX;9c2clD0#e~7?+G%>`kVe5Pwmh0u0Z;-Y!^`Vr< zvzDku2#)8IHwW=R)P<%9u~=>5xo40meq5mS6X*|2&wE{*k+YN{o^UeqyqU&;P9Lyq z&A8=ro#o2P9QeA~z^p?L#{x9yf!ka;3wj~>F+*b9O0`)&>JhsHPNJ<~4dAhM!Xx%{ zrx)=vq*YH%G~>l1U$I-cKv6-nzR7`ABBPVONUS3hV3^`5#<4oo*Uh+87|yGB@gO&R z_`BL%Z_wN$X*d#BBiMNsb>qnjOIMx@_FrUSY|0ZiGBls!InsCvpl zSt{+RX0=hww9oZ)pPLV`y9<9{eAW@h9ki7?9h;k9y0|Umg*C5_&L9bT55FG}f-@7= z(3wnkJSn6rhj4Um(AW5W(Zuyc>%nX*YwcGVRn?i2GaG-D2#ioGlQe`OmRll!1o56Q zjN{G(19_3htCJGqo*)WE=WXFNaxrejuMKgZBgkKw*>iR7LFt;2^ropwR;9T{VW7~R zx>(M6GA*KDb#n%~$*Q=tWk$=WuO;w9^0BUPk34%dS#fC7TtqlVfMAA?6@p(q@0H!o zb_0@2aZb@N16?OePY+v7(WIx5FF)vV=d$cnAw-rF79_U6T{RzQ*Ii#{Yi(nmhZ-dVG3&twm6NnLT_ObNI8D z?$%vkPYeUw$NUjCY!W^Cp6|@yc}o_T-55qF>e)6(GFxD-=iHHvpIkS7VmRqrU?VY{ z<$G$<+KA`%bcZMnPAKN&(lDiGW5fK(PFnlmfKk_}y*8diwCu8*dBW22gQevhW(C62 zkGU+iy=cKm ziKR>`jUIR~ZLiCmiAznM<9Ig(2*lq%c55G+bMrv8?Ooa}GH9*RQ-LZ?B|i8xob#2M zy9@Vff2$vFji&NtZ*_Boa~&I?qrtG*{b1K+<(bv+mQ6G}ra=c0>Z7%WD{}d(2ohFk5GQjh zzG|CYxM@?dHVc%Y3IIpv^VG;b1nQo!)`Toj36NwO9`dz~uBTY{v(9Fkl{a)cc?MrL zG&|LOQud7KIzd%k(g7}bA}&&^2WQ2NF@Jz}RF81KID^_gunIaLlk^UXIz!oOwUyj) z^+LFYc3qAMTacfK6krSYC5w+K!}1m7y$P{71~+3rm-PqDl4Ffj7kXRkoE0c}Q6Fxd0JzFy#jzttYd5r2)Z**Zu6(rTZo z#JUzXt2$RM*)J-lT7#v>@uYnyC*q|CF&7pP)ewcxhAv%~I$edQrHQ7{yi#F-c7NS| zA@la$-Q7NgLAu}|gt>6_FXjUDJxnM}C`3dE914mI>O)l?@g@osR3kMM6guRJ`J>5- zDhn}6%84<{ND7O}DT%5m!$CprLhlxPKf1B(@77F&d|m^2VgBHT1=6JH|J=w5$w`Wd zDk(F`iv3qtM4@h}cb#R_Ag{ZgJl_l*4GPNE!Hn7LU+tTijjS!0zr*1QIhZ-yKzfct zkX0sjzgSEDe8^N|&?OF#RYW>u6>*2#{bmv9ztj08FY;&SQSWJQB_Yn!AdBNWyx}*~ z#Q2@_zX`wx_!o0!@ zhJR1zPjwtWOAZQ?S`9$r$qaI8pZy@YiuVVS(f|nI;jh8{HCzbE!^z|yG_9x05;!3f z8UUHlABRax_6M4>7LJY(p4nfjkVyFxNw99gQWHdy9@3lp$6*dr{DI`(TCN5TCVxIm zz3W43S4iMc+V&iDsHDgdkhpYZ&i>iy%7 z2?xtRtNz2>eb2i6(Rl{Pe>nfwO#KEE{_~gldqnFUF87@w`o4YS9bMs@6)F8z>K{V=`&NT@+g{&n#qgJY|DYA+&&U3K`@J874c+878h>wm z{Pz}yKkIy7^?cXN@0;nH{+Z4{OxE`W!*|8g-|U6^F9rTvDfQ1s{(UX$k7vQvYMdv{Mz{+/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..8508ef6 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,82 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem gradlew startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables, and ensure extensions are enabled +setlocal EnableExtensions + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +"%COMSPEC%" /c exit 1 + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +"%COMSPEC%" /c exit 1 + +:execute +@rem Setup the command line + + + +@rem Execute gradlew +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel + +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% diff --git a/soundmod-1.0.4.jar b/soundmod-1.0.4.jar new file mode 100644 index 0000000000000000000000000000000000000000..d22390fbf457a995c261deeabc187ef8cac47932 GIT binary patch literal 175952 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�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 ClientHooks::register); + } + + private void commonSetup(FMLCommonSetupEvent event) { + event.enqueueWork(NetworkHandler::register); + } + + private void onServerStarted(FMLServerStartedEvent event) { + ServerSoundRepository.get().bindServer(event.getServer()); + } + + private void onServerStopping(FMLServerStoppingEvent event) { + ServerSoundRepository.get().unbindServer(); + } + + private void onRegisterCommands(RegisterCommandsEvent event) { + ModCommands.register((CommandDispatcher)event.getDispatcher()); + } +} + diff --git a/src/main/java/com/example/soundmod/client/ClientHooks.java b/src/main/java/com/example/soundmod/client/ClientHooks.java new file mode 100644 index 0000000..cbbcb3a --- /dev/null +++ b/src/main/java/com/example/soundmod/client/ClientHooks.java @@ -0,0 +1,66 @@ +/* + * Decompiled with CFR 0.152. + * + * Could not load the following classes: + * net.minecraft.client.gui.ScreenManager + * net.minecraft.inventory.container.ContainerType + * net.minecraftforge.api.distmarker.Dist + * net.minecraftforge.client.event.RenderGameOverlayEvent$Text + * net.minecraftforge.client.event.RenderWorldLastEvent + * net.minecraftforge.event.TickEvent$ClientTickEvent + * net.minecraftforge.event.TickEvent$Phase + * net.minecraftforge.eventbus.api.SubscribeEvent + * net.minecraftforge.fml.common.Mod$EventBusSubscriber + * net.minecraftforge.fml.common.Mod$EventBusSubscriber$Bus + * net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent + */ +package com.example.soundmod.client; + +import com.example.soundmod.client.audio.AudioPlaybackService; +import com.example.soundmod.client.debug.DebugOverlayRenderer; +import com.example.soundmod.client.screen.SoundPlayerScreen; +import com.example.soundmod.registry.ModContainers; +import net.minecraft.client.gui.ScreenManager; +import net.minecraft.inventory.container.ContainerType; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.client.event.RenderGameOverlayEvent; +import net.minecraftforge.client.event.RenderWorldLastEvent; +import net.minecraftforge.event.TickEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; + +@Mod.EventBusSubscriber(modid="soundmod", value={Dist.CLIENT}, bus=Mod.EventBusSubscriber.Bus.MOD) +public final class ClientHooks { + private ClientHooks() { + } + + public static void register() { + } + + @SubscribeEvent + public static void onClientSetup(FMLClientSetupEvent event) { + ScreenManager.register((ContainerType)((ContainerType)ModContainers.SOUND_PLAYER.get()), SoundPlayerScreen::new); + } + + @Mod.EventBusSubscriber(modid="soundmod", value={Dist.CLIENT}) + public static class ClientForgeEvents { + @SubscribeEvent + public static void onClientTick(TickEvent.ClientTickEvent event) { + if (event.phase == TickEvent.Phase.END) { + AudioPlaybackService.get().tick(); + } + } + + @SubscribeEvent + public static void onRenderWorld(RenderWorldLastEvent event) { + DebugOverlayRenderer.render(event.getMatrixStack(), event.getPartialTicks()); + } + + @SubscribeEvent + public static void onRenderHud(RenderGameOverlayEvent.Text event) { + DebugOverlayRenderer.renderHud(event.getMatrixStack()); + } + } +} + diff --git a/src/main/java/com/example/soundmod/client/audio/AudioPlaybackService.java b/src/main/java/com/example/soundmod/client/audio/AudioPlaybackService.java new file mode 100644 index 0000000..6cb7262 --- /dev/null +++ b/src/main/java/com/example/soundmod/client/audio/AudioPlaybackService.java @@ -0,0 +1,652 @@ +/* + * Decompiled with CFR 0.152. + * + * Could not load the following classes: + * net.minecraft.client.Minecraft + * net.minecraft.client.entity.player.ClientPlayerEntity + * net.minecraft.entity.Entity + * net.minecraft.util.math.BlockPos + * net.minecraft.util.math.BlockRayTraceResult + * net.minecraft.util.math.RayTraceContext + * net.minecraft.util.math.RayTraceContext$BlockMode + * net.minecraft.util.math.RayTraceContext$FluidMode + * net.minecraft.util.math.RayTraceResult$Type + * net.minecraft.util.math.vector.Vector3d + * org.lwjgl.BufferUtils + * org.lwjgl.openal.AL10 + * org.lwjgl.stb.STBVorbis + * org.lwjgl.stb.STBVorbisInfo + * org.lwjgl.system.MemoryStack + * org.lwjgl.system.MemoryUtil + */ +package com.example.soundmod.client.audio; + +import com.example.soundmod.SoundMod; +import com.example.soundmod.common.AttenuationMode; +import com.example.soundmod.common.SoundSettings; +import com.example.soundmod.core.ModConfig; +import com.example.soundmod.core.SoundDebug; +import com.example.soundmod.net.NetworkHandler; +import com.example.soundmod.net.packet.C2SRequestSoundPacket; +import com.example.soundmod.sounddata.client.ClientSoundCache; +import java.io.BufferedInputStream; +import java.io.ByteArrayOutputStream; +import java.io.InputStream; +import java.io.IOException; +import java.nio.Buffer; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.IntBuffer; +import java.nio.ShortBuffer; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; +import javax.sound.sampled.AudioFormat; +import javax.sound.sampled.AudioInputStream; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.UnsupportedAudioFileException; +import javazoom.jl.decoder.Bitstream; +import javazoom.jl.decoder.Decoder; +import javazoom.jl.decoder.Header; +import javazoom.jl.decoder.JavaLayerException; +import javazoom.jl.decoder.SampleBuffer; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.player.ClientPlayerEntity; +import net.minecraft.entity.Entity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.util.math.RayTraceContext; +import net.minecraft.util.math.RayTraceResult; +import net.minecraft.util.math.vector.Vector3d; +import org.lwjgl.BufferUtils; +import org.lwjgl.openal.AL10; +import org.lwjgl.stb.STBVorbis; +import org.lwjgl.stb.STBVorbisInfo; +import org.lwjgl.system.MemoryStack; +import org.lwjgl.system.MemoryUtil; + +public final class AudioPlaybackService { + private static final int REPLAY_DEBOUNCE_TICKS = 6; + private static final AudioPlaybackService INSTANCE = new AudioPlaybackService(); + private final Map active = new HashMap(); + + public static AudioPlaybackService get() { + return INSTANCE; + } + + private AudioPlaybackService() { + } + + public synchronized void play(String sourceId, BlockPos pos, SoundSettings settings) { + long gameTime; + SoundSettings safe = SoundSettings.sanitizedCopy(settings); + if (safe.volume != settings.volume || safe.pitch != settings.pitch || safe.radius != settings.radius) { + SoundDebug.warn(SoundDebug.Level.L1, "PLAYBACK", sourceId, "sanitized params vol={}=>{} pitch={}=>{} radius={}=>{}", Float.valueOf(settings.volume), Float.valueOf(safe.volume), Float.valueOf(settings.pitch), Float.valueOf(safe.pitch), Float.valueOf(settings.radius), Float.valueOf(safe.radius)); + } + SoundDebug.log(SoundDebug.Level.L1, "PLAYBACK", sourceId, "play request soundId={} pos={} {} {} vol={} pitch={} loop={} radius={}", safe.soundId, pos.getX(), pos.getY(), pos.getZ(), Float.valueOf(safe.volume), Float.valueOf(safe.pitch), safe.loop, Float.valueOf(safe.radius)); + Path file = ClientSoundCache.get().resolveBySoundId(safe.soundId); + if (file == null) { + SoundDebug.warn(SoundDebug.Level.L1, "PLAYBACK", sourceId, "cache miss soundId={} -> request from server", safe.soundId); + NetworkHandler.CHANNEL.sendToServer((Object)new C2SRequestSoundPacket(safe.soundId)); + return; + } + SoundDebug.log(SoundDebug.Level.L2, "PLAYBACK", sourceId, "resolved cache file={}", file); + PlayingSource current = this.active.get(sourceId); + long l = gameTime = Minecraft.getInstance().level != null ? Minecraft.getInstance().level.getGameTime() : Long.MIN_VALUE; + if (!safe.crossfade && current != null && current.settings.soundId.equals(safe.soundId) && gameTime != Long.MIN_VALUE && gameTime - current.startedAtTick <= 6L) { + SoundDebug.log(SoundDebug.Level.L3, "PLAYBACK", sourceId, "replay suppressed soundId={} dt={}", safe.soundId, gameTime - current.startedAtTick); + return; + } + if (safe.crossfade && current != null) { + current.fadeOutTicks = Math.max(1, safe.fadeOutTicks); + SoundDebug.log(SoundDebug.Level.L2, "PLAYBACK", sourceId, "crossfade enabled fadeOutTicks={}", safe.fadeOutTicks); + } else { + this.stop(sourceId); + } + try { + this.enforceActiveLimit(safe.priority); + DecodedPcm pcm = this.decodeAudio(file); + int buffer = AL10.alGenBuffers(); + int alErr1 = AL10.alGetError(); + if (alErr1 != 0) { + SoundDebug.warn(SoundDebug.Level.L1, "PLAYBACK", sourceId, "alGenBuffers error={}", alErr1); + } + int format = pcm.channels == 1 ? 4353 : 4355; + AL10.alBufferData((int)buffer, (int)format, (ShortBuffer)pcm.samples, (int)pcm.sampleRate); + int alErr2 = AL10.alGetError(); + if (alErr2 != 0) { + SoundDebug.warn(SoundDebug.Level.L1, "PLAYBACK", sourceId, "alBufferData error={} format={} channels={} sampleRate={} samples={}", alErr2, format, pcm.channels, pcm.sampleRate, pcm.samples.remaining()); + } + int source = AL10.alGenSources(); + int alErr3 = AL10.alGetError(); + if (alErr3 != 0) { + SoundDebug.warn(SoundDebug.Level.L1, "PLAYBACK", sourceId, "alGenSources error={}", alErr3); + } + AL10.alSourcei((int)source, (int)4105, (int)buffer); + AL10.alSourcef((int)source, (int)4106, (float)safe.volume); + AL10.alSourcef((int)source, (int)4099, (float)safe.pitch); + AL10.alSourcei((int)source, (int)4103, (int)(safe.loop ? 1 : 0)); + this.configureSpatial(source, pos, safe.use3d); + AL10.alSourcePlay((int)source); + int alErr4 = AL10.alGetError(); + if (alErr4 != 0) { + SoundDebug.warn(SoundDebug.Level.L1, "PLAYBACK", sourceId, "alSourcePlay error={}", alErr4); + } + SoundDebug.log(SoundDebug.Level.L1, "PLAYBACK", sourceId, "play started source={} buffer={} channels={} sampleRate={} frames={}", source, buffer, pcm.channels, pcm.sampleRate, pcm.frames); + PlayingSource src = new PlayingSource(sourceId, source, buffer, pos, safe, gameTime); + src.fadeInTicks = safe.fadeInTicks; + src.targetGain = safe.volume; + if (safe.reverb && safe.reverbStrength > 0.01f) { + src.reverbSource = this.createReverbSource(sourceId, pos, safe, buffer); + } + if (src.fadeInTicks > 0) { + AL10.alSourcef((int)source, (int)4106, (float)0.0f); + } + this.active.put(sourceId, src); + } + catch (Exception e) { + SoundMod.LOGGER.error("Failed to play custom sound {}", (Object)safe.soundId, (Object)e); + SoundDebug.warn(SoundDebug.Level.L1, "PLAYBACK", sourceId, "play failed soundId={} reason={}", safe.soundId, e.getMessage()); + } + } + + public synchronized void updateLive(String sourceId, BlockPos pos, SoundSettings settings) { + SoundSettings safe = SoundSettings.sanitizedCopy(settings); + PlayingSource current = this.active.get(sourceId); + if (current == null) { + SoundDebug.log(SoundDebug.Level.L2, "PLAYBACK", "LIVE", "source missing -> fallback play sourceId={} soundId={}", sourceId, safe.soundId); + this.play(sourceId, pos, safe); + return; + } + if (!current.settings.soundId.equals(safe.soundId)) { + SoundDebug.log(SoundDebug.Level.L1, "PLAYBACK", "LIVE", "restart reason=soundId_change sourceId={} old={} new={} crossfade={}", sourceId, current.settings.soundId, safe.soundId, safe.crossfade); + if (safe.crossfade) { + current.fadeOutTicks = Math.max(1, safe.fadeOutTicks); + } else { + this.stop(sourceId); + } + this.play(sourceId, pos, safe); + return; + } + current.settings = safe; + current.pos = pos; + current.targetGain = safe.volume; + current.fadeInTicks = Math.max(0, current.fadeInTicks); + this.configureSpatial(current.source, pos, safe.use3d); + AL10.alSourcei((int)current.source, (int)4103, (int)(safe.loop ? 1 : 0)); + if (safe.reverb && safe.reverbStrength > 0.01f) { + if (current.reverbSource <= 0) { + current.reverbSource = this.createReverbSource(sourceId, pos, safe, current.buffer); + } else { + this.configureSpatial(current.reverbSource, pos, safe.use3d); + } + } else if (current.reverbSource > 0) { + AL10.alSourceStop((int)current.reverbSource); + AL10.alDeleteSources((int)current.reverbSource); + current.reverbSource = 0; + } + current.lastLiveUpdateTick = this.currentGameTime(); + SoundDebug.log(SoundDebug.Level.L2, "PLAYBACK", "LIVE", "updated sourceId={} soundId={} vol={} pitch={} radius={} attn={} use3d={} doppler={} occlusion={} reverb={}", sourceId, safe.soundId, Float.valueOf(safe.volume), Float.valueOf(safe.pitch), Float.valueOf(safe.radius), safe.attenuationMode.name(), safe.use3d, safe.doppler, safe.occlusion, safe.reverb); + } + + public synchronized void stop(String sourceId) { + PlayingSource src = this.active.remove(sourceId); + if (src == null) { + return; + } + SoundDebug.log(SoundDebug.Level.L2, "PLAYBACK", sourceId, "stop source={} buffer={}", src.source, src.buffer); + AL10.alSourceStop((int)src.source); + AL10.alDeleteSources((int)src.source); + if (src.reverbSource > 0) { + AL10.alSourceStop((int)src.reverbSource); + AL10.alDeleteSources((int)src.reverbSource); + } + AL10.alDeleteBuffers((int)src.buffer); + } + + public synchronized boolean isPlaying(String sourceId) { + return this.active.containsKey(sourceId); + } + + public synchronized void tick() { + if (this.active.isEmpty()) { + return; + } + Minecraft mc = Minecraft.getInstance(); + ClientPlayerEntity player = mc.player; + if (player == null || mc.level == null) { + return; + } + Vector3d playerPos = player.position(); + ArrayList remove = new ArrayList(); + int topPriority = Integer.MIN_VALUE; + String dominantCategory = "ambient"; + for (PlayingSource src : this.active.values()) { + if (src.settings.priority > topPriority) { + topPriority = src.settings.priority; + dominantCategory = src.settings.category; + continue; + } + if (src.settings.priority != topPriority || this.categoryRank(src.settings.category) <= this.categoryRank(dominantCategory)) continue; + dominantCategory = src.settings.category; + } + for (PlayingSource src : this.active.values()) { + int state = AL10.alGetSourcei((int)src.source, (int)4112); + if (SoundDebug.enabled(SoundDebug.Level.L3)) { + SoundDebug.log(SoundDebug.Level.L3, "PLAYBACK", src.sourceId, "tick state={} gainTarget={}", state, Float.valueOf(src.targetGain)); + } + if (state == 4116 && !src.settings.loop) { + remove.add(src.sourceId); + continue; + } + float gain = this.computeAttenuatedGain(src, playerPos); + float occlusionFactor = this.computeOcclusionFactor(src, playerPos); + gain *= occlusionFactor; + gain = this.applyFades(src, gain); + gain = this.applyPriorityDucking(src, gain, topPriority, dominantCategory); + AL10.alSourcef((int)src.source, (int)4106, (float)Math.max(0.0f, gain)); + float pitch = src.settings.pitch; + if (src.settings.occlusion && src.settings.use3d && occlusionFactor < 0.999f && !"voice".equals(src.settings.category)) { + pitch *= Math.max(0.9f, 1.0f - src.settings.occlusionStrength * 0.12f); + } + if (src.settings.doppler && src.settings.use3d) { + Vector3d velocity = player.getDeltaMovement(); + Vector3d sourceDir = new Vector3d((double)src.pos.getX() + 0.5 - playerPos.x, (double)src.pos.getY() + 0.5 - playerPos.y, (double)src.pos.getZ() + 0.5 - playerPos.z); + double len = Math.max(1.0E-4, sourceDir.length()); + double radial = (velocity.x * sourceDir.x + velocity.y * sourceDir.y + velocity.z * sourceDir.z) / len; + float dopplerPitch = (float)Math.max(0.75, Math.min(1.25, 1.0 + radial * 0.04)); + pitch *= dopplerPitch; + } + AL10.alSourcef((int)src.source, (int)4099, (float)pitch); + if (src.reverbSource <= 0) continue; + float wetGain = Math.max(0.0f, gain * src.settings.reverbStrength * 0.45f); + AL10.alSourcef((int)src.reverbSource, (int)4106, (float)wetGain); + } + for (String id : remove) { + this.stop(id); + } + } + + private float applyFades(PlayingSource src, float gain) { + if (src.fadeInTicks > 0) { + int elapsed = src.settings.fadeInTicks - src.fadeInTicks; + float alpha = src.settings.fadeInTicks <= 0 ? 1.0f : (float)elapsed / (float)src.settings.fadeInTicks; + --src.fadeInTicks; + return gain * Math.min(1.0f, alpha); + } + if (src.fadeOutTicks > 0) { + float alpha = (float)src.fadeOutTicks / (float)Math.max(1, src.settings.fadeOutTicks); + --src.fadeOutTicks; + if (src.fadeOutTicks <= 0) { + this.stop(src.sourceId); + return 0.0f; + } + return gain * alpha; + } + return gain; + } + + private float computeOcclusionFactor(PlayingSource src, Vector3d playerPos) { + if (!src.settings.occlusion || !src.settings.use3d) { + return 1.0f; + } + Minecraft mc = Minecraft.getInstance(); + BlockRayTraceResult trace = mc.level.clip(new RayTraceContext(playerPos, new Vector3d((double)src.pos.getX() + 0.5, (double)src.pos.getY() + 0.5, (double)src.pos.getZ() + 0.5), RayTraceContext.BlockMode.COLLIDER, RayTraceContext.FluidMode.NONE, (Entity)mc.player)); + if (trace.getType() != RayTraceResult.Type.MISS) { + float damp = Math.max(0.0f, 1.0f - src.settings.occlusionStrength); + return damp; + } + return 1.0f; + } + + private float computeAttenuatedGain(PlayingSource src, Vector3d playerPos) { + double atten; + if (!src.settings.use3d) { + return src.targetGain; + } + double dx = playerPos.x - ((double)src.pos.getX() + 0.5); + double dy = playerPos.y - ((double)src.pos.getY() + 0.5); + double dz = playerPos.z - ((double)src.pos.getZ() + 0.5); + double distance = Math.sqrt(dx * dx + dy * dy + dz * dz); + if (src.settings.attenuationMode == AttenuationMode.NONE || src.settings.radius <= 0.1f) { + return src.targetGain; + } + double t = Math.min(1.0, distance / (double)src.settings.radius); + switch (src.settings.attenuationMode) { + case EXPONENTIAL: { + atten = Math.pow(1.0 - t, 2.0); + break; + } + case LOGARITHMIC: { + atten = 1.0 - Math.log10(1.0 + 9.0 * t); + break; + } + default: { + atten = 1.0 - t; + } + } + return (float)Math.max(0.0, (double)src.targetGain * atten); + } + + public synchronized Collection snapshot() { + ArrayList out = new ArrayList(); + long nowTick = this.currentGameTime(); + for (PlayingSource src : this.active.values()) { + int alState = AL10.alGetSourcei((int)src.source, (int)4112); + ClientSoundCache.Status status = ClientSoundCache.get().status(src.settings.soundId); + boolean liveUpdated = nowTick != Long.MIN_VALUE && src.lastLiveUpdateTick != Long.MIN_VALUE && nowTick - src.lastLiveUpdateTick <= 40L; + out.add(new PlayingSourceView(src.sourceId, src.settings.soundId, (double)src.pos.getX() + 0.5, (double)src.pos.getY() + 0.5, (double)src.pos.getZ() + 0.5, src.settings.radius, src.settings.priority, status.name(), alState, liveUpdated)); + } + return out; + } + + private float applyPriorityDucking(PlayingSource src, float gain, int topPriority, String dominantCategory) { + if (topPriority == Integer.MIN_VALUE || src.settings.priority >= topPriority) { + return gain; + } + double strength = (Double)ModConfig.DUCKING_STRENGTH.get(); + double base = Math.max(0.05, 1.0 - strength); + double categoryFactor = this.categoryDuckingFactor(src.settings.category, dominantCategory); + return (float)((double)gain * base * categoryFactor); + } + + private double categoryDuckingFactor(String sourceCategory, String dominantCategory) { + boolean sourceForeground = this.isForegroundCategory(sourceCategory); + boolean dominantForeground = this.isForegroundCategory(dominantCategory); + if (dominantForeground && !sourceForeground) { + return 0.55; + } + if (!dominantForeground && sourceForeground) { + return 0.9; + } + return 0.78; + } + + private boolean isForegroundCategory(String category) { + return "voice".equals(category) || "effect".equals(category); + } + + private int categoryRank(String category) { + if ("voice".equals(category)) { + return 4; + } + if ("effect".equals(category)) { + return 3; + } + if ("ambient".equals(category)) { + return 2; + } + if ("music".equals(category)) { + return 1; + } + return 0; + } + + private void enforceActiveLimit(int incomingPriority) { + int maxActive = (Integer)ModConfig.MAX_ACTIVE_SOURCES.get(); + if (this.active.size() < maxActive) { + return; + } + String victimId = null; + PlayingSource victim = null; + for (Map.Entry e : this.active.entrySet()) { + PlayingSource src = e.getValue(); + if (victim != null && src.settings.priority >= victim.settings.priority && (src.settings.priority != victim.settings.priority || src.startedAtTick >= victim.startedAtTick)) continue; + victimId = e.getKey(); + victim = src; + } + if (victim != null && victimId != null && victim.settings.priority <= incomingPriority) { + SoundDebug.log(SoundDebug.Level.L2, "PLAYBACK", victimId, "evict by limiter incomingPriority={} victimPriority={}", incomingPriority, victim.settings.priority); + this.stop(victimId); + } + } + + private void configureSpatial(int source, BlockPos pos, boolean use3d) { + AL10.alSourcef((int)source, (int)4129, (float)0.0f); + if (use3d) { + AL10.alSourcei((int)source, (int)514, (int)0); + AL10.alSource3f((int)source, (int)4100, (float)((float)pos.getX() + 0.5f), (float)((float)pos.getY() + 0.5f), (float)((float)pos.getZ() + 0.5f)); + } else { + AL10.alSourcei((int)source, (int)514, (int)1); + AL10.alSource3f((int)source, (int)4100, (float)0.0f, (float)0.0f, (float)0.0f); + } + } + + private int createReverbSource(String sourceId, BlockPos pos, SoundSettings safe, int buffer) { + int wet = AL10.alGenSources(); + int err = AL10.alGetError(); + if (err != 0) { + SoundDebug.warn(SoundDebug.Level.L1, "PLAYBACK", sourceId, "reverb source create error={}", err); + return 0; + } + AL10.alSourcei((int)wet, (int)4105, (int)buffer); + AL10.alSourcei((int)wet, (int)4103, (int)(safe.loop ? 1 : 0)); + AL10.alSourcef((int)wet, (int)4106, (float)Math.max(0.0f, safe.volume * safe.reverbStrength * 0.45f)); + AL10.alSourcef((int)wet, (int)4099, (float)Math.max(0.5f, safe.pitch * 0.97f)); + this.configureSpatial(wet, pos, safe.use3d); + if (safe.use3d) { + float ox = (float)((sourceId.hashCode() >> 2 & 7) - 3) * 0.12f; + float oy = (float)((sourceId.hashCode() >> 5 & 7) - 3) * 0.06f; + float oz = (float)((sourceId.hashCode() >> 8 & 7) - 3) * 0.12f; + AL10.alSource3f((int)wet, (int)4100, (float)((float)pos.getX() + 0.5f + ox), (float)((float)pos.getY() + 0.5f + oy), (float)((float)pos.getZ() + 0.5f + oz)); + } + AL10.alSourcePlay((int)wet); + int playErr = AL10.alGetError(); + if (playErr != 0) { + SoundDebug.warn(SoundDebug.Level.L1, "PLAYBACK", sourceId, "reverb play error={}", playErr); + AL10.alDeleteSources((int)wet); + return 0; + } + return wet; + } + + private long currentGameTime() { + return Minecraft.getInstance().level != null ? Minecraft.getInstance().level.getGameTime() : Long.MIN_VALUE; + } + + /* + * Loose catch block + */ + private DecodedPcm decodeVorbis(Path file) throws IOException { + byte[] data = Files.readAllBytes(file); + SoundDebug.log(SoundDebug.Level.L2, "PLAYBACK", "DECODE", "read file={} bytes={}", file, data.length); + ByteBuffer ogg = MemoryUtil.memAlloc((int)data.length); + ogg.put(data); + ogg.flip(); + try { + try (MemoryStack stack = MemoryStack.stackPush();){ + IntBuffer error = stack.mallocInt(1); + long decoder = STBVorbis.stb_vorbis_open_memory((ByteBuffer)ogg, (IntBuffer)error, null); + if (decoder == 0L) { + SoundDebug.warn(SoundDebug.Level.L1, "PLAYBACK", "DECODE", "stb_vorbis_open_memory failed file={} code={}", file, error.get(0)); + throw new IOException("stb_vorbis_open_memory failed: " + error.get(0)); + } + STBVorbisInfo info = STBVorbisInfo.mallocStack((MemoryStack)stack); + STBVorbis.stb_vorbis_get_info((long)decoder, (STBVorbisInfo)info); + int channels = info.channels(); + int sampleRate = info.sample_rate(); + int estimatedFrames = STBVorbis.stb_vorbis_stream_length_in_samples((long)decoder); + ShortBuffer pcm = BufferUtils.createShortBuffer((int)Math.max(1, estimatedFrames * channels)); + int decodedFrames = STBVorbis.stb_vorbis_get_samples_short_interleaved((long)decoder, (int)channels, (ShortBuffer)pcm); + STBVorbis.stb_vorbis_close((long)decoder); + if (decodedFrames <= 0) { + SoundDebug.warn(SoundDebug.Level.L1, "PLAYBACK", "DECODE", "decode produced no samples file={} decodedFrames={}", file, decodedFrames); + throw new IOException("stb_vorbis_get_samples_short_interleaved returned " + decodedFrames); + } + int decodedShorts = decodedFrames * channels; + pcm.position(0); + pcm.limit(decodedShorts); + SoundDebug.log(SoundDebug.Level.L1, "PLAYBACK", "DECODE", "decode ok channels={} sampleRate={} frames={} pcmShorts={}", channels, sampleRate, decodedFrames, pcm.remaining()); + DecodedPcm decodedPcm = new DecodedPcm(pcm, channels, sampleRate, decodedFrames); + return decodedPcm; + } + } + finally { + MemoryUtil.memFree((Buffer)ogg); + } + } + + private DecodedPcm decodeAudio(Path file) throws IOException { + String name = file.getFileName().toString().toLowerCase(Locale.ROOT); + if (name.endsWith(".wav")) { + return this.decodeWav(file); + } else if (name.endsWith(".mp3")) { + return this.decodeMp3(file); + } else { + return this.decodeVorbis(file); + } + } + + private DecodedPcm decodeWav(Path file) throws IOException { + try { + AudioInputStream stream = AudioSystem.getAudioInputStream(file.toFile()); + AudioFormat baseFormat = stream.getFormat(); + int channels = baseFormat.getChannels(); + int sampleRate = (int) baseFormat.getSampleRate(); + AudioFormat decodedFormat = new AudioFormat( + AudioFormat.Encoding.PCM_SIGNED, + baseFormat.getSampleRate(), + 16, + baseFormat.getChannels(), + baseFormat.getChannels() * 2, + baseFormat.getSampleRate(), + false + ); + AudioInputStream pcmStream = AudioSystem.getAudioInputStream(decodedFormat, stream); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + byte[] buf = new byte[4096]; + int n; + while ((n = pcmStream.read(buf)) != -1) { + out.write(buf, 0, n); + } + pcmStream.close(); + stream.close(); + + byte[] pcmBytes = out.toByteArray(); + ShortBuffer shortBuf = BufferUtils.createShortBuffer(pcmBytes.length / 2); + ByteBuffer byteBuffer = ByteBuffer.wrap(pcmBytes).order(ByteOrder.LITTLE_ENDIAN); + while (byteBuffer.remaining() >= 2) { + shortBuf.put(byteBuffer.getShort()); + } + shortBuf.flip(); + int frames = shortBuf.remaining() / channels; + SoundDebug.log(SoundDebug.Level.L1, "PLAYBACK", "DECODE", "wav decode ok channels={} sampleRate={} frames={} pcmShorts={}", channels, sampleRate, frames, shortBuf.remaining()); + return new DecodedPcm(shortBuf, channels, sampleRate, frames); + } catch (UnsupportedAudioFileException e) { + throw new IOException("Unsupported WAV file: " + e.getMessage(), e); + } + } + + private DecodedPcm decodeMp3(Path file) throws IOException { + try (InputStream in = Files.newInputStream(file); + BufferedInputStream bin = new BufferedInputStream(in)) { + Bitstream bitstream = new Bitstream(bin); + Decoder decoder = new Decoder(); + + Header header = bitstream.readFrame(); + if (header == null) { + throw new IOException("Empty or invalid MP3 file: " + file); + } + + int channels = (header.mode() == Header.SINGLE_CHANNEL) ? 1 : 2; + int sampleRate = header.frequency(); + + ByteArrayOutputStream out = new ByteArrayOutputStream(); + + while (header != null) { + SampleBuffer output = (SampleBuffer) decoder.decodeFrame(header, bitstream); + short[] pcm = output.getBuffer(); + int len = output.getBufferLength(); + for (int i = 0; i < len; i++) { + short s = pcm[i]; + out.write(s & 0xFF); + out.write((s >> 8) & 0xFF); + } + bitstream.closeFrame(); + header = bitstream.readFrame(); + } + + byte[] pcmBytes = out.toByteArray(); + ShortBuffer shortBuf = BufferUtils.createShortBuffer(pcmBytes.length / 2); + ByteBuffer byteBuffer = ByteBuffer.wrap(pcmBytes).order(ByteOrder.LITTLE_ENDIAN); + while (byteBuffer.remaining() >= 2) { + shortBuf.put(byteBuffer.getShort()); + } + shortBuf.flip(); + int frames = shortBuf.remaining() / channels; + SoundDebug.log(SoundDebug.Level.L1, "PLAYBACK", "DECODE", "mp3 decode ok channels={} sampleRate={} frames={} pcmShorts={}", channels, sampleRate, frames, shortBuf.remaining()); + return new DecodedPcm(shortBuf, channels, sampleRate, frames); + } catch (JavaLayerException e) { + throw new IOException("Failed to decode MP3 file: " + e.getMessage(), e); + } + } + + private static class PlayingSource { + final String sourceId; + final int source; + final int buffer; + BlockPos pos; + SoundSettings settings; + final long startedAtTick; + float targetGain; + int fadeInTicks; + int fadeOutTicks; + int reverbSource; + long lastLiveUpdateTick = Long.MIN_VALUE; + + PlayingSource(String sourceId, int source, int buffer, BlockPos pos, SoundSettings settings, long startedAtTick) { + this.sourceId = sourceId; + this.source = source; + this.buffer = buffer; + this.pos = pos; + this.settings = settings; + this.startedAtTick = startedAtTick; + this.targetGain = settings.volume; + } + } + + private static class DecodedPcm { + final ShortBuffer samples; + final int channels; + final int sampleRate; + final int frames; + + DecodedPcm(ShortBuffer samples, int channels, int sampleRate, int frames) { + this.samples = samples; + this.channels = channels; + this.sampleRate = sampleRate; + this.frames = frames; + } + } + + public static final class PlayingSourceView { + public final String sourceId; + public final String soundId; + public final double x; + public final double y; + public final double z; + public final float radius; + public final int priority; + public final String cacheStatus; + public final int alState; + public final boolean liveUpdated; + + private PlayingSourceView(String sourceId, String soundId, double x, double y, double z, float radius, int priority, String cacheStatus, int alState, boolean liveUpdated) { + this.sourceId = sourceId; + this.soundId = soundId; + this.x = x; + this.y = y; + this.z = z; + this.radius = radius; + this.priority = priority; + this.cacheStatus = cacheStatus; + this.alState = alState; + this.liveUpdated = liveUpdated; + } + } +} + diff --git a/src/main/java/com/example/soundmod/client/debug/DebugOverlayRenderer.java b/src/main/java/com/example/soundmod/client/debug/DebugOverlayRenderer.java new file mode 100644 index 0000000..1f405ae --- /dev/null +++ b/src/main/java/com/example/soundmod/client/debug/DebugOverlayRenderer.java @@ -0,0 +1,119 @@ +/* + * Decompiled with CFR 0.152. + * + * Could not load the following classes: + * com.mojang.blaze3d.matrix.MatrixStack + * com.mojang.blaze3d.vertex.IVertexBuilder + * net.minecraft.client.Minecraft + * net.minecraft.client.renderer.IRenderTypeBuffer$Impl + * net.minecraft.client.renderer.RenderType + * net.minecraft.client.renderer.WorldRenderer + * net.minecraft.util.math.AxisAlignedBB + * net.minecraft.util.math.vector.Vector3d + * net.minecraft.util.text.ITextComponent + * net.minecraft.util.text.StringTextComponent + */ +package com.example.soundmod.client.debug; + +import com.example.soundmod.client.audio.AudioPlaybackService; +import com.example.soundmod.client.debug.DebugState; +import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.vertex.IVertexBuilder; +import java.util.ArrayList; +import java.util.Collection; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.IRenderTypeBuffer; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.WorldRenderer; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.vector.Vector3d; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.StringTextComponent; + +public final class DebugOverlayRenderer { + private DebugOverlayRenderer() { + } + + public static void render(MatrixStack stack, float partialTicks) { + if (!DebugState.isEnabled()) { + return; + } + Minecraft mc = Minecraft.getInstance(); + if (mc.player == null || mc.level == null) { + return; + } + Vector3d camera = mc.gameRenderer.getMainCamera().getPosition(); + Collection sources = AudioPlaybackService.get().snapshot(); + IRenderTypeBuffer.Impl bufferSource = mc.renderBuffers().bufferSource(); + IVertexBuilder lineBuilder = bufferSource.getBuffer(RenderType.lines()); + for (AudioPlaybackService.PlayingSourceView source : sources) { + float[] color = DebugOverlayRenderer.colorFor(source); + AxisAlignedBB bb = new AxisAlignedBB(source.x - (double)source.radius - camera.x, source.y - (double)source.radius - camera.y, source.z - (double)source.radius - camera.z, source.x + (double)source.radius - camera.x, source.y + (double)source.radius - camera.y, source.z + (double)source.radius - camera.z); + WorldRenderer.renderLineBox((MatrixStack)stack, (IVertexBuilder)lineBuilder, (AxisAlignedBB)bb, (float)color[0], (float)color[1], (float)color[2], (float)0.85f); + } + bufferSource.endBatch(RenderType.lines()); + } + + public static void renderHud(MatrixStack stack) { + if (!DebugState.isEnabled()) { + return; + } + Minecraft mc = Minecraft.getInstance(); + if (mc.player == null || mc.level == null || mc.font == null) { + return; + } + Collection snapshot = AudioPlaybackService.get().snapshot(); + ArrayList sources = new ArrayList(snapshot); + sources.sort((a, b) -> Integer.compare(b.priority, a.priority)); + int x = 8; + int y = 8; + mc.font.drawShadow(stack, (ITextComponent)new StringTextComponent("SOUNDDBG Active Sources: " + sources.size()), (float)x, (float)y, 0xFFFFFF); + y += 10; + int limit = Math.min(8, sources.size()); + for (int i = 0; i < limit; ++i) { + AudioPlaybackService.PlayingSourceView s = (AudioPlaybackService.PlayingSourceView)sources.get(i); + int color = DebugOverlayRenderer.colorIntFor(s); + String line = String.format("#%d p=%d %s sid=%s st=%s cache=%s%s", i + 1, s.priority, s.sourceId, s.soundId, DebugOverlayRenderer.alStateName(s.alState), s.cacheStatus, s.liveUpdated ? " LIVE-UPDATED" : ""); + mc.font.drawShadow(stack, (ITextComponent)new StringTextComponent(line), (float)x, (float)y, color); + y += 10; + } + } + + private static float[] colorFor(AudioPlaybackService.PlayingSourceView source) { + if ("ERROR".equals(source.cacheStatus) || "MISSING".equals(source.cacheStatus)) { + return new float[]{0.95f, 0.15f, 0.15f}; + } + if ("TRANSFERRING".equals(source.cacheStatus)) { + return new float[]{0.95f, 0.85f, 0.2f}; + } + if (source.alState == 4114) { + return new float[]{0.2f, 0.9f, 0.25f}; + } + return new float[]{0.2f, 0.9f, 1.0f}; + } + + private static int colorIntFor(AudioPlaybackService.PlayingSourceView source) { + float[] c = DebugOverlayRenderer.colorFor(source); + int r = (int)(Math.max(0.0f, Math.min(1.0f, c[0])) * 255.0f); + int g = (int)(Math.max(0.0f, Math.min(1.0f, c[1])) * 255.0f); + int b = (int)(Math.max(0.0f, Math.min(1.0f, c[2])) * 255.0f); + return r << 16 | g << 8 | b; + } + + private static String alStateName(int state) { + if (state == 4114) { + return "PLAYING"; + } + if (state == 4115) { + return "PAUSED"; + } + if (state == 4116) { + return "STOPPED"; + } + if (state == 4113) { + return "INITIAL"; + } + return Integer.toString(state); + } +} + diff --git a/src/main/java/com/example/soundmod/client/debug/DebugState.java b/src/main/java/com/example/soundmod/client/debug/DebugState.java new file mode 100644 index 0000000..f58db63 --- /dev/null +++ b/src/main/java/com/example/soundmod/client/debug/DebugState.java @@ -0,0 +1,20 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.example.soundmod.client.debug; + +public final class DebugState { + private static boolean enabled; + + private DebugState() { + } + + public static boolean isEnabled() { + return enabled; + } + + public static void setEnabled(boolean enabled) { + DebugState.enabled = enabled; + } +} + diff --git a/src/main/java/com/example/soundmod/client/screen/SoundPlayerScreen.java b/src/main/java/com/example/soundmod/client/screen/SoundPlayerScreen.java new file mode 100644 index 0000000..492e43b --- /dev/null +++ b/src/main/java/com/example/soundmod/client/screen/SoundPlayerScreen.java @@ -0,0 +1,1377 @@ +package com.example.soundmod.client.screen; + +import com.example.soundmod.client.audio.AudioPlaybackService; +import com.example.soundmod.common.ActivationMode; +import com.example.soundmod.common.AttenuationMode; +import com.example.soundmod.common.RedstoneMode; +import com.example.soundmod.common.ScenarioQueue; +import com.example.soundmod.common.SoundManifestEntry; +import com.example.soundmod.common.SoundSettings; +import com.example.soundmod.common.ZoneIntersectionPolicy; +import com.example.soundmod.common.ZoneShape; +import com.example.soundmod.core.SoundDebug; +import com.example.soundmod.gameplay.container.SoundPlayerContainer; +import com.example.soundmod.gameplay.tile.SoundPlayerTileEntity; +import com.example.soundmod.net.ClientTransferManager; +import com.example.soundmod.net.NetworkHandler; +import com.example.soundmod.net.packet.C2SUpdateConfigPacket; +import com.example.soundmod.sounddata.client.ClientSoundCache; +import com.mojang.blaze3d.matrix.MatrixStack; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Base64; +import java.util.Collections; +import java.util.List; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.player.ClientPlayerEntity; +import net.minecraft.client.gui.screen.inventory.ContainerScreen; +import net.minecraft.client.gui.widget.TextFieldWidget; +import net.minecraft.client.gui.widget.Widget; +import net.minecraft.client.gui.widget.button.Button; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.inventory.container.Container; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.nbt.INBT; +import net.minecraft.nbt.JsonToNBT; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.StringTextComponent; + +public class SoundPlayerScreen extends ContainerScreen { + + // Palette + private static final int COLOR_BG_SHADOW = 0x90000000; + private static final int COLOR_BG_MAIN = 0xEE161B22; + private static final int COLOR_BG_INNER = 0xEE1F242C; + private static final int COLOR_BG_BOX = 0xCC11141B; + private static final int COLOR_ACCENT = 0xFF388BFD; + private static final int COLOR_ACCENT_HOVER = 0xFF58A6FF; + private static final int COLOR_TEXT_TITLE = 0xFFFFFF; + private static final int COLOR_TEXT_LABEL = 0xFFA0A6B2; + private static final int COLOR_TEXT_MUTED = 0xFF767F8D; + private static final int COLOR_GREEN = 0xFF3FB950; + private static final int COLOR_YELLOW = 0xFFD29922; + private static final int COLOR_RED = 0xFFF85149; + + private static final String[] CATEGORIES = new String[]{"music", "ambient", "effect", "voice"}; + private static final int SOUND_LIST_ROWS = 5; + private static final int ROW_HEIGHT = 12; + + private Tab activeTab = Tab.BASIC; + private SoundSettings localSettings = new SoundSettings(); + private final List sourceScenarioSteps = new ArrayList<>(); + private final List zoneScenarioSteps = new ArrayList<>(); + private boolean sourceScenarioLoop; + private boolean zoneScenarioLoop; + private boolean editingZoneScenario; + private boolean sourceEnabled = true; + private boolean zoneEnabled = true; + private boolean wizardCompleted = true; + private ZoneShape zoneShape = ZoneShape.SPHERE; + private float zoneRadius = 12.0f; + private float zoneBoxX = 8.0f; + private float zoneBoxY = 4.0f; + private float zoneBoxZ = 8.0f; + private boolean zoneAutoStartOnEnter = true; + private boolean zoneStopOnExit = true; + private ZoneIntersectionPolicy zonePolicy = ZoneIntersectionPolicy.HIGHEST_PRIORITY; + private boolean zoneUseCustomCoords; + private int zoneSourceX; + private int zoneSourceY; + private int zoneSourceZ; + + // Controls - Basic + private TextFieldWidget soundIdField; + private TextFieldWidget searchField; + private TextFieldWidget volumeField; + private TextFieldWidget pitchField; + private TextFieldWidget radiusField; + private TextFieldWidget priorityField; + private Button previewButton; + private Button loopButton; + private Button categoryButton; + private Button clearFilterButton; + private Button volMinusBtn; + private Button volPlusBtn; + private Button pitchMinusBtn; + private Button pitchPlusBtn; + + // Controls - Effects + private Button use3dButton; + private Button attenuationButton; + private Button occlusionButton; + private Button reverbButton; + private Button dopplerButton; + private Button crossfadeButton; + private TextFieldWidget occlusionStrengthField; + private TextFieldWidget reverbStrengthField; + private TextFieldWidget fadeInField; + private TextFieldWidget fadeOutField; + + // Controls - Trigger + private Button activationModeButton; + private Button redstoneModeButton; + private Button sourceEnabledButton; + private Button zoneEnabledButton; + private TextFieldWidget startDelayField; + private TextFieldWidget repeatDelayField; + + // Controls - Zone + private Button zoneShapeButton; + private Button zonePolicyButton; + private Button zoneAutoStartButton; + private Button zoneStopOnExitButton; + private Button zoneUseCustomCoordsButton; + private Button myPosButton; + private TextFieldWidget zoneRadiusField; + private TextFieldWidget zoneBoxXField; + private TextFieldWidget zoneBoxYField; + private TextFieldWidget zoneBoxZField; + private TextFieldWidget zoneSourceXField; + private TextFieldWidget zoneSourceYField; + private TextFieldWidget zoneSourceZField; + + // Controls - Scenario + private Button scenarioTargetButton; + private Button scenarioLoopButton; + private TextFieldWidget scenarioSoundField; + private TextFieldWidget scenarioDelayField; + private Button scenarioUseCurrentBtn; + private Button scenarioAddButton; + private Button scenarioRemoveButton; + private Button scenarioUpButton; + private Button scenarioDownButton; + + // Fixed bottom bar controls + private Button saveButton; + private Button copyConfigButton; + private Button pasteConfigButton; + private Button playNowButton; + private Button stopNowButton; + + // Tab buttons + private final List