From 6d8322325ec87683b5118b3ab24c3bbdabbf465c Mon Sep 17 00:00:00 2001 From: ACGaming <4818419+ACGaming@users.noreply.github.com> Date: Tue, 4 Jun 2024 22:33:07 +0200 Subject: [PATCH] Add basic crucibles --- .../mod/emt/harkenscythe/blocks/HSBlock.java | 12 -- .../harkenscythe/blocks/HSBloodCrucible.java | 51 +++++++ .../harkenscythe/blocks/HSSoulCrucible.java | 142 ++++++++++++++++++ .../mod/emt/harkenscythe/init/HSBlocks.java | 12 +- .../harkenscythe/items/HSEssenceKeeper.java | 9 ++ .../blockstates/blood_crucible.json | 8 + .../blockstates/soul_crucible.json | 8 + .../assets/harkenscythe/lang/en_us.lang | 6 +- .../models/block/blood_crucible_empty.json | 10 ++ .../models/block/blood_crucible_level1.json | 11 ++ .../models/block/blood_crucible_level2.json | 11 ++ .../models/block/blood_crucible_level3.json | 11 ++ .../models/block/soul_crucible_empty.json | 10 ++ .../models/block/soul_crucible_level1.json | 11 ++ .../models/block/soul_crucible_level2.json | 11 ++ .../models/block/soul_crucible_level3.json | 11 ++ .../models/item/blood_crucible.json | 6 + .../models/item/soul_crucible.json | 6 + .../harkenscythe/recipes/blood_crucible.json | 21 +++ .../harkenscythe/recipes/soul_crucible.json | 21 +++ .../textures/blocks/blood_crucible_bottom.png | Bin 0 -> 320 bytes .../textures/blocks/blood_crucible_inner.png | Bin 0 -> 749 bytes .../textures/blocks/blood_crucible_liquid.png | Bin 0 -> 302 bytes .../textures/blocks/blood_crucible_side.png | Bin 0 -> 762 bytes .../textures/blocks/blood_crucible_top.png | Bin 0 -> 485 bytes .../textures/blocks/soul_crucible_bottom.png | Bin 0 -> 270 bytes .../textures/blocks/soul_crucible_inner.png | Bin 0 -> 523 bytes .../textures/blocks/soul_crucible_liquid.png | Bin 0 -> 314 bytes .../textures/blocks/soul_crucible_side.png | Bin 0 -> 520 bytes .../textures/blocks/soul_crucible_top.png | Bin 0 -> 323 bytes .../textures/items/blood_crucible.png | Bin 0 -> 567 bytes .../textures/items/soul_crucible.png | Bin 0 -> 386 bytes 32 files changed, 371 insertions(+), 17 deletions(-) delete mode 100644 src/main/java/mod/emt/harkenscythe/blocks/HSBlock.java create mode 100644 src/main/java/mod/emt/harkenscythe/blocks/HSBloodCrucible.java create mode 100644 src/main/java/mod/emt/harkenscythe/blocks/HSSoulCrucible.java create mode 100644 src/main/resources/assets/harkenscythe/blockstates/blood_crucible.json create mode 100644 src/main/resources/assets/harkenscythe/blockstates/soul_crucible.json create mode 100644 src/main/resources/assets/harkenscythe/models/block/blood_crucible_empty.json create mode 100644 src/main/resources/assets/harkenscythe/models/block/blood_crucible_level1.json create mode 100644 src/main/resources/assets/harkenscythe/models/block/blood_crucible_level2.json create mode 100644 src/main/resources/assets/harkenscythe/models/block/blood_crucible_level3.json create mode 100644 src/main/resources/assets/harkenscythe/models/block/soul_crucible_empty.json create mode 100644 src/main/resources/assets/harkenscythe/models/block/soul_crucible_level1.json create mode 100644 src/main/resources/assets/harkenscythe/models/block/soul_crucible_level2.json create mode 100644 src/main/resources/assets/harkenscythe/models/block/soul_crucible_level3.json create mode 100644 src/main/resources/assets/harkenscythe/models/item/blood_crucible.json create mode 100644 src/main/resources/assets/harkenscythe/models/item/soul_crucible.json create mode 100644 src/main/resources/assets/harkenscythe/recipes/blood_crucible.json create mode 100644 src/main/resources/assets/harkenscythe/recipes/soul_crucible.json create mode 100644 src/main/resources/assets/harkenscythe/textures/blocks/blood_crucible_bottom.png create mode 100644 src/main/resources/assets/harkenscythe/textures/blocks/blood_crucible_inner.png create mode 100644 src/main/resources/assets/harkenscythe/textures/blocks/blood_crucible_liquid.png create mode 100644 src/main/resources/assets/harkenscythe/textures/blocks/blood_crucible_side.png create mode 100644 src/main/resources/assets/harkenscythe/textures/blocks/blood_crucible_top.png create mode 100644 src/main/resources/assets/harkenscythe/textures/blocks/soul_crucible_bottom.png create mode 100644 src/main/resources/assets/harkenscythe/textures/blocks/soul_crucible_inner.png create mode 100644 src/main/resources/assets/harkenscythe/textures/blocks/soul_crucible_liquid.png create mode 100644 src/main/resources/assets/harkenscythe/textures/blocks/soul_crucible_side.png create mode 100644 src/main/resources/assets/harkenscythe/textures/blocks/soul_crucible_top.png create mode 100644 src/main/resources/assets/harkenscythe/textures/items/blood_crucible.png create mode 100644 src/main/resources/assets/harkenscythe/textures/items/soul_crucible.png diff --git a/src/main/java/mod/emt/harkenscythe/blocks/HSBlock.java b/src/main/java/mod/emt/harkenscythe/blocks/HSBlock.java deleted file mode 100644 index b7fd711..0000000 --- a/src/main/java/mod/emt/harkenscythe/blocks/HSBlock.java +++ /dev/null @@ -1,12 +0,0 @@ -package mod.emt.harkenscythe.blocks; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; - -public class HSBlock extends Block -{ - public HSBlock() - { - super(Material.ROCK); - } -} diff --git a/src/main/java/mod/emt/harkenscythe/blocks/HSBloodCrucible.java b/src/main/java/mod/emt/harkenscythe/blocks/HSBloodCrucible.java new file mode 100644 index 0000000..ee3390e --- /dev/null +++ b/src/main/java/mod/emt/harkenscythe/blocks/HSBloodCrucible.java @@ -0,0 +1,51 @@ +package mod.emt.harkenscythe.blocks; + +import java.util.Random; +import net.minecraft.block.BlockCauldron; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +public class HSBloodCrucible extends BlockCauldron +{ + public HSBloodCrucible() + { + super(); + } + + @Override + public void onEntityCollision(World worldIn, BlockPos pos, IBlockState state, Entity entityIn) + { + + } + + @Override + public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) + { + return false; + } + + @Override + public void fillWithRain(World world, BlockPos pos) + { + + } + + @Override + public Item getItemDropped(IBlockState state, Random rand, int fortune) + { + return Item.getItemFromBlock(this); + } + + @Override + public ItemStack getItem(World world, BlockPos pos, IBlockState state) + { + return new ItemStack(Item.getItemFromBlock(this)); + } +} diff --git a/src/main/java/mod/emt/harkenscythe/blocks/HSSoulCrucible.java b/src/main/java/mod/emt/harkenscythe/blocks/HSSoulCrucible.java new file mode 100644 index 0000000..f96f63c --- /dev/null +++ b/src/main/java/mod/emt/harkenscythe/blocks/HSSoulCrucible.java @@ -0,0 +1,142 @@ +package mod.emt.harkenscythe.blocks; + +import java.util.Random; +import mod.emt.harkenscythe.init.HSItems; +import net.minecraft.block.BlockCauldron; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.SoundEvents; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +public class HSSoulCrucible extends BlockCauldron +{ + public HSSoulCrucible() + { + super(); + } + + @Override + public void onEntityCollision(World worldIn, BlockPos pos, IBlockState state, Entity entityIn) + { + + } + + // TODO: Works, but needs refactoring + @Override + public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) + { + if (world.isRemote) + { + return false; + } + ItemStack stack = player.getHeldItem(hand); + if (!stack.isEmpty()) + { + int level = state.getValue(LEVEL); + Item item = stack.getItem(); + + if (item == HSItems.essence_keeper || item == HSItems.essence_vessel || item == HSItems.essence_keeper_soul || item == HSItems.essence_vessel_soul) + { + // Filling the crucible + if (level < 3 && !player.isSneaking()) + { + if (item == HSItems.essence_keeper_soul || item == HSItems.essence_vessel_soul) + { + if (!player.capabilities.isCreativeMode) + { + if (stack.getItemDamage() + 20 < stack.getMaxDamage()) + { + stack.setItemDamage(stack.getItemDamage() + 20); + } + else if (item == HSItems.essence_keeper_soul) + { + stack.shrink(1); + player.setHeldItem(hand, new ItemStack(HSItems.essence_keeper)); + } + else if (item == HSItems.essence_vessel_soul) + { + stack.shrink(1); + player.setHeldItem(hand, new ItemStack(HSItems.essence_vessel)); + } + } + + world.playSound(null, pos, SoundEvents.ITEM_BOTTLE_EMPTY, SoundCategory.BLOCKS, 1.0F, 1.0F); + this.setWaterLevel(world, pos, state, level + 1); + } + } + // Emptying the crucible + else if (level > 0 && player.isSneaking()) + { + if (!player.capabilities.isCreativeMode) + { + if (item == HSItems.essence_keeper || item == HSItems.essence_vessel) + { + stack.shrink(1); + if (item == HSItems.essence_keeper) + { + ItemStack newEssenceKeeperSoul = new ItemStack(HSItems.essence_keeper_soul); + player.setHeldItem(hand, newEssenceKeeperSoul); + } + else if (item == HSItems.essence_vessel) + { + ItemStack newEssenceVesselSoul = new ItemStack(HSItems.essence_vessel_soul); + newEssenceVesselSoul.setItemDamage(newEssenceVesselSoul.getItemDamage() + 20); + player.setHeldItem(hand, newEssenceVesselSoul); + } + } + else if (item == HSItems.essence_keeper_soul || item == HSItems.essence_vessel_soul) + { + if (stack.getItemDamage() <= 0) + { + return false; + } + else if (stack.getItemDamage() - 20 < 0) + { + stack.setItemDamage(stack.getItemDamage() - 20); + } + else if (item == HSItems.essence_keeper_soul) + { + stack.shrink(1); + player.setHeldItem(hand, new ItemStack(HSItems.essence_keeper_soul)); + } + else if (item == HSItems.essence_vessel_soul) + { + stack.shrink(1); + player.setHeldItem(hand, new ItemStack(HSItems.essence_vessel_soul)); + } + } + } + world.playSound(null, pos, SoundEvents.ITEM_BOTTLE_FILL, SoundCategory.BLOCKS, 1.0F, 1.0F); + this.setWaterLevel(world, pos, state, level - 1); + } + return true; + } + } + return false; + } + + @Override + public void fillWithRain(World world, BlockPos pos) + { + + } + + @Override + public Item getItemDropped(IBlockState state, Random rand, int fortune) + { + return Item.getItemFromBlock(this); + } + + @Override + public ItemStack getItem(World world, BlockPos pos, IBlockState state) + { + return new ItemStack(Item.getItemFromBlock(this)); + } +} diff --git a/src/main/java/mod/emt/harkenscythe/init/HSBlocks.java b/src/main/java/mod/emt/harkenscythe/init/HSBlocks.java index 95e2d83..cad1e7d 100644 --- a/src/main/java/mod/emt/harkenscythe/init/HSBlocks.java +++ b/src/main/java/mod/emt/harkenscythe/init/HSBlocks.java @@ -2,7 +2,8 @@ import javax.annotation.Nonnull; import mod.emt.harkenscythe.HarkenScythe; -import mod.emt.harkenscythe.blocks.HSBlock; +import mod.emt.harkenscythe.blocks.HSBloodCrucible; +import mod.emt.harkenscythe.blocks.HSSoulCrucible; import net.minecraft.block.Block; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.fml.common.Mod; @@ -14,8 +15,10 @@ @GameRegistry.ObjectHolder(HarkenScythe.MOD_ID) public class HSBlocks { - @GameRegistry.ObjectHolder("block") - public static HSBlock block; + @GameRegistry.ObjectHolder("blood_crucible") + public static HSBloodCrucible blood_crucible; + @GameRegistry.ObjectHolder("soul_crucible") + public static HSSoulCrucible soul_crucible; @SubscribeEvent public static void onRegisterBlocksEvent(@Nonnull final RegistryEvent.Register event) @@ -25,7 +28,8 @@ public static void onRegisterBlocksEvent(@Nonnull final RegistryEvent.Register zzJ0&FBeRi(#lPpTwEz1X88Jy8O5jlG%FW@(a$z@fXujjf7QxJEZfZJ-_r;Uv|MOXl z5=45K1R7LRHKu1=kWOIt^e}F4+1$^6lI@Cx)xU6d$pkJH6IRy$s|$<%#m}GTcVWRw zLBaplHa7oWcXv4OG^D1wD_mpZ6kw2YFrDSVvnX0Z;vX}E*b9#vcca!#1v;I<)78&q Iol`;+0QW*@YybcN literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/harkenscythe/textures/blocks/blood_crucible_inner.png b/src/main/resources/assets/harkenscythe/textures/blocks/blood_crucible_inner.png new file mode 100644 index 0000000000000000000000000000000000000000..fb3e64f175efd24ff1dfb986f82a0d94192f80ff GIT binary patch literal 749 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv00079NklC0ux%bZZJLi7)9O@I@Fh`M$b&@DdbjBPR^8~+A=C)>Tjqh!xGRO1# zi;G@KDg=XHy4{}BiN$q}J1Cbi-x7p&WNcN_z|bU7H=Tw$q$mrj3MqgZ$N2{b-IBDM z%>o!79$uN6N(;h80OyD<1OjeR#L+ulZ%t3Xsnt$870u(h?Ds>O^m>u)Q@i~{mNfu> zh!FC5aRvYuFG{65EbAsZ&oB>I_MlKWs@HQq-*NluuG47%un5uJR0_cDM54~~j(Ak< z-y7X(VWBe&Y#d(8Rbw%iBn2!FFaR3>W^FczhH6U_-#*wEvRGi-VA)1222F+ILICiN z*o-SmDID&xEMh~=B`2AH&tf_(3*WFb%k!52B#4j;;h)O#%D@0_0v*)<0nKKMjEqQ< z^kZ-DH-H%;>+K)Qa*oKl5~LWpC95!d@xL$MtoD?c*XO^g@c_R`w`=uievS3j3^P6Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv0007MNkl-Aj{k6vv+{U*;R4BGLv% zbI!ochPk<>Z06L|=2n}zbW2@r!5WqlLZ#3qW%g)S< zIBYhFb$83RwKb_UH0b-ysw&x?oz?ShO^uYi=VaOEQ;2Z^YAqB}XLn1BT$Wj4p z7LD%*gKB&)5RjbN4@PISpXIVVot)G@?A;iZOn<+$qAV8y>;aA02Lk3j9itwGsNEen^Gu^3ZUQ(mUi6@WNjSevrL+vzdKu|1`Tf!h0D;yd_#Q@v;YmONbu-NA-SN3IG5A07*qoM6N<$f@|JVIRF3v literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/harkenscythe/textures/blocks/blood_crucible_top.png b/src/main/resources/assets/harkenscythe/textures/blocks/blood_crucible_top.png new file mode 100644 index 0000000000000000000000000000000000000000..41e4eff8b7e9b500b4740de8b683e2cfb769db9e GIT binary patch literal 485 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv00040NklYU6vpq=f3%cBR;OZW zMJ)z|sG*oajZkcdQW}L0g498mW>g&74s{Sg5PSmHzJqV!gE$|*@8)K|@xXU(`;q)O zIpvArW!3M?Mx`Q`t(JTzi7aY0{rjp= zkoVC@pLeB_Jan3J<9QmQ_K}hx5S23mfX)dxMmlrd+<=#QT|5HtrY_g`*71zb(*QQ> zZ8*#gaL_B40QP{*Gro1iXy_IJ9NB*WCz#p=0X`DTF}`*D%;)k;Ko^O#HokRmC;0h_ zTlHA2<_64AbwB_|!KE<1b?}`Q0of`W-#T6g-E2eik^lMRZU&Oygz;} zoxm%=F3se1KcI3B!xA?KhfntQ_8QEGJ~IVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv0004cNkl$J=(aHWTj#vTgynLt$O4-Tyo)|M`)tCe_{vbW*bn+-7 ztk8rrf+5(-$Do~yX>v7rCWA?aZpPZaI6~06P0hJA=XzKa@}|~WadNFYRISYb)C5tP zXx)X$XW?nN{r;N2z2Kl$s{ECT)S3{-@j6+A0&-7xhhLxVn@b!*!9~CzHyso?QNrJ# zSI&->cQ!o-KsmZz9NNcBh7xd~=Lk`r?D+*W9mEEx@{)jJA3xuOK@bZ%5g`pB<9okE z&zTNDW=N71Hw$;XEQ=|_Guvv!!E7Zde+BKPEQl%LPW32h4I-P43uDDoa^u6F2hu;rOivFiJG z!ANJ(H`TTWSnqwgpJ8xz`LA1t<>MP~IU8C&<-B*{ ze>0aKbLO-(3&ux0%{FVdQ&MBb@ E05XDbfB*mh literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/harkenscythe/textures/blocks/soul_crucible_side.png b/src/main/resources/assets/harkenscythe/textures/blocks/soul_crucible_side.png new file mode 100644 index 0000000000000000000000000000000000000000..ee51f1e886158a33faa0a78ad6b1fd2df79621e0 GIT binary patch literal 520 zcmV+j0{8uiP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv0004ZNkln-QN1L?7h~ANit#w0tEvX z{g%nrx&Z56_Fs$x5=TWvsBS*&2Z1a*BgxuDKuzczYa7UB*!O`~l4nduZW55*nn0*1 zCVptHxRZ9^4S4uTj3oi*om=uU`Ve7EO)=~x3Buyrr~;)_D!Xs4S?b(vd{r$|i{S1y zuM~^tWMT}8L7m^M?|DX5Vj#w+lQ?3d3IuB=;9cN+xx5R4Eh|GS)2SPh8{YpC==k?I zE;wxre38*f{EBBxVG3^uqsbs-QlfWSc-oM|NpZjkU!ylVV{kM4l0000< KMNUMnLSTaSY|YI8 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/harkenscythe/textures/blocks/soul_crucible_top.png b/src/main/resources/assets/harkenscythe/textures/blocks/soul_crucible_top.png new file mode 100644 index 0000000000000000000000000000000000000000..7ede4770b8f3c7d237043f4f8740d23e41d60216 GIT binary patch literal 323 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL8%hgh?3y^w370~qEv=}#LT=BJwMkFg)(D3 zQ$0figD*u3fvPrnx;Tbd_$NPj@ZhIEkC=eK0WCf=2L}h46Azh__4MjCB-PbLD(Etb zJpP-%Oq3zbd4o>G;$BCILkxU;|Nir+Fj;curZE5TFk^URwSsZZoI5EJ3Y`WFDN-SG zG7cP9@5*UVILX#lmK&GRnCTYq}230W)vj!Rc1ucvkkxoZD*)lGA>=OU+bLj+L z0d{GoA~B8D#v3*^hYs+to=W-if2qrrgGB~BLCh1I+ZlJxcy7-y%ckkif{GbNK-V*P My85}Sb4q9e0JpVj(f|Me literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/harkenscythe/textures/items/blood_crucible.png b/src/main/resources/assets/harkenscythe/textures/items/blood_crucible.png new file mode 100644 index 0000000000000000000000000000000000000000..ad91851287862a1f759b54c0d7ecbe09d8b296f0 GIT binary patch literal 567 zcmV-70?7S|P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv0004|NklyzKOB^ST5$B21M9z`Z2f;~PK*wLn4Qk)#LBuJ@0^E67 zCU@u98Zkl45hsazM7gYwAYb_XI0^=_KQx4^R0>|R8Qn?+AI&Dt6A9d8GPvE2_9h*~ zoGh^GcEh64NX45@Ck{wZRIBkMijru_=R;IUfX&&W;=6PjZ}mEo4hI&kRulpOxJZBn zd4e643JxU!9_!j*KufR3V=aqLVFmZuES}3{9EU>KplRZEJElw~j4BDRd6y)Rrw##& zMJiq*FFqgIXvJc9Z5~Q1u9Hw#Nq`;Z9qZvRhRFjK;Bzl_8i`2W6nP~jfg%Ol$t3a~ zkCfOe?BsINbHZqZm%MnXR+RYMD zoauBwFJ-VGPsG2p9O{E7DDf0ZmojGQZk4F`AN&o1@CDl1;qHW}J}3YH002ovPDHLk FV1n$8;xPaK literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/harkenscythe/textures/items/soul_crucible.png b/src/main/resources/assets/harkenscythe/textures/items/soul_crucible.png new file mode 100644 index 0000000000000000000000000000000000000000..e6f25292d4d50300644d956bcc41faccac35a5c7 GIT binary patch literal 386 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL8%hgh?3y^w370~qEv=}#LT=BJwMkFg)(D3 zQ$0figD*u3fvP@wx;Tbd_@52j&3DLv=S`SE?wl!3r-L7DRGfNF)R@^g>Dm8!r6+Ty zta4Dgv7y9k?q>aT^Iz*Fc!d6P2Azs~cj|YdC!-O^dJpfKL#vq&Y%NXXytMq+F@dC{ zqJ`I=I;P)rTCVx2<#R*Bh1ssDvzGsPwR2~2^I7j_Z(j;BSjzPAx-HXq%J#Zt#^j=B zMe7?LEh^(-aJuUuuylgM%F8Oxg|BgMO*emg=j%VAdyQLnriuT!r`NCJG3B*I*qxr= z3m5_qdMnS8*6}s`)}Z=s20vFq*dNvojg60X&VKc)=4ZF+t($kRMmsQ^+ry-L=W29K e@aJTgi_8;#uDaFqT(TADc?M5cKbLh*2~7YmC7>k$ literal 0 HcmV?d00001