From 0c67a429edb86d48040e39610ba6bb94a0c317c9 Mon Sep 17 00:00:00 2001 From: lc-1337 <62835225+lc-1337@users.noreply.github.com> Date: Sat, 27 Dec 2025 11:40:12 +0200 Subject: [PATCH] remove pattern refill card (#984) Co-authored-by: Kogepan229 <73163994+Kogepan229@users.noreply.github.com> --- src/main/java/appeng/api/config/Upgrades.java | 1 - .../appeng/api/definitions/IMaterials.java | 2 -- .../ContainerMEMonitorable.java | 1 - .../implementations/ContainerPatternTerm.java | 3 -- src/main/java/appeng/core/Registration.java | 4 --- .../core/api/definitions/ApiMaterials.java | 8 ----- .../items/materials/ItemMultiMaterial.java | 1 - .../appeng/items/materials/MaterialType.java | 1 - src/main/java/appeng/parts/AEBasePart.java | 3 +- .../parts/reporting/AbstractPartTerminal.java | 31 ------------------ .../textures/guis/pattern.png | Bin 1354 -> 2181 bytes .../textures/guis/pattern2.png | Bin 1346 -> 2173 bytes .../textures/guis/pattern3.png | Bin 1471 -> 2388 bytes .../textures/guis/pattern4.png | Bin 1453 -> 2455 bytes 14 files changed, 2 insertions(+), 53 deletions(-) diff --git a/src/main/java/appeng/api/config/Upgrades.java b/src/main/java/appeng/api/config/Upgrades.java index 36b5d5f03..d81799074 100644 --- a/src/main/java/appeng/api/config/Upgrades.java +++ b/src/main/java/appeng/api/config/Upgrades.java @@ -31,7 +31,6 @@ public enum Upgrades { CAPACITY(0), REDSTONE(0), CRAFTING(0), - PATTERN_REFILLER(0), STICKY(0), VOID_OVERFLOW(0), /** diff --git a/src/main/java/appeng/api/definitions/IMaterials.java b/src/main/java/appeng/api/definitions/IMaterials.java index c45249e4d..fb6fe9987 100644 --- a/src/main/java/appeng/api/definitions/IMaterials.java +++ b/src/main/java/appeng/api/definitions/IMaterials.java @@ -144,8 +144,6 @@ public interface IMaterials { IItemDefinition cardOreFilter(); - IItemDefinition cardPatternRefiller(); - IItemDefinition cardAdvancedBlocking(); IItemDefinition cardLockCrafting(); diff --git a/src/main/java/appeng/container/implementations/ContainerMEMonitorable.java b/src/main/java/appeng/container/implementations/ContainerMEMonitorable.java index b6c915afe..be4d806a9 100644 --- a/src/main/java/appeng/container/implementations/ContainerMEMonitorable.java +++ b/src/main/java/appeng/container/implementations/ContainerMEMonitorable.java @@ -120,7 +120,6 @@ public class ContainerMEMonitorable extends AEBaseContainer private IConfigManagerHost gui; private IConfigManager serverCM; private IGridNode networkNode; - protected SlotRestrictedInput patternRefiller = null; public ContainerMEMonitorable(final InventoryPlayer ip, final ITerminalHost monitorable) { this(ip, monitorable, true); diff --git a/src/main/java/appeng/container/implementations/ContainerPatternTerm.java b/src/main/java/appeng/container/implementations/ContainerPatternTerm.java index af04d47ec..9ea8c9016 100644 --- a/src/main/java/appeng/container/implementations/ContainerPatternTerm.java +++ b/src/main/java/appeng/container/implementations/ContainerPatternTerm.java @@ -519,9 +519,6 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA if (s == this.patternSlotOUT) { this.isFirstUpdate = true; this.detectAndSendChanges(); - } else if (s == patternRefiller && patternRefiller.getStack() != null) { - refillBlankPatterns(patternSlotIN); - detectAndSendChanges(); } } diff --git a/src/main/java/appeng/core/Registration.java b/src/main/java/appeng/core/Registration.java index 66a278f2c..8938837a5 100644 --- a/src/main/java/appeng/core/Registration.java +++ b/src/main/java/appeng/core/Registration.java @@ -776,10 +776,6 @@ public final class Registration { // Inscriber Upgrades.SPEED.registerItem(blocks.inscriber(), 3); - // Terminals - Upgrades.PATTERN_REFILLER.registerItem(parts.patternTerminal(), 1); - Upgrades.PATTERN_REFILLER.registerItem(parts.patternTerminalEx(), 1); - for (final Item wirelessTerminalItem : items.wirelessTerminal().maybeItem().asSet()) { registries.wireless().registerWirelessHandler((IWirelessTermHandler) wirelessTerminalItem); } diff --git a/src/main/java/appeng/core/api/definitions/ApiMaterials.java b/src/main/java/appeng/core/api/definitions/ApiMaterials.java index 8be1cad94..98c3d715c 100644 --- a/src/main/java/appeng/core/api/definitions/ApiMaterials.java +++ b/src/main/java/appeng/core/api/definitions/ApiMaterials.java @@ -74,7 +74,6 @@ public final class ApiMaterials implements IMaterials { private final IItemDefinition cardInverter; private final IItemDefinition cardCrafting; private final IItemDefinition cardOreFilter; - private final IItemDefinition cardPatternRefiller; private final IItemDefinition cardAdvancedBlocking; private final IItemDefinition cardLockCrafting; private final IItemDefinition cardFakeCrafting; @@ -181,8 +180,6 @@ public final class ApiMaterials implements IMaterials { this.cardInverter = new DamagedItemDefinition(itemMultiMaterial.createMaterial(MaterialType.CardInverter)); this.cardCrafting = new DamagedItemDefinition(itemMultiMaterial.createMaterial(MaterialType.CardCrafting)); this.cardOreFilter = new DamagedItemDefinition(itemMultiMaterial.createMaterial(MaterialType.CardOreFilter)); - this.cardPatternRefiller = new DamagedItemDefinition( - itemMultiMaterial.createMaterial(MaterialType.CardPatternRefiller)); this.cardAdvancedBlocking = new DamagedItemDefinition( itemMultiMaterial.createMaterial(MaterialType.CardAdvancedBlocking)); this.cardLockCrafting = new DamagedItemDefinition( @@ -544,11 +541,6 @@ public final class ApiMaterials implements IMaterials { return this.blankPattern; } - @Override - public IItemDefinition cardPatternRefiller() { - return this.cardPatternRefiller; - } - @Override public IItemDefinition cardAdvancedBlocking() { return this.cardAdvancedBlocking; diff --git a/src/main/java/appeng/items/materials/ItemMultiMaterial.java b/src/main/java/appeng/items/materials/ItemMultiMaterial.java index 79f407f0a..d118750c7 100644 --- a/src/main/java/appeng/items/materials/ItemMultiMaterial.java +++ b/src/main/java/appeng/items/materials/ItemMultiMaterial.java @@ -141,7 +141,6 @@ public final class ItemMultiMaterial extends AEBaseItem implements IStorageCompo case CardSuperSpeed -> Upgrades.SUPERSPEED; case CardInverter -> Upgrades.INVERTER; case CardCrafting -> Upgrades.CRAFTING; - case CardPatternRefiller -> Upgrades.PATTERN_REFILLER; case CardAdvancedBlocking -> Upgrades.ADVANCED_BLOCKING; case CardLockCrafting -> Upgrades.LOCK_CRAFTING; case CardSticky -> Upgrades.STICKY; diff --git a/src/main/java/appeng/items/materials/MaterialType.java b/src/main/java/appeng/items/materials/MaterialType.java index 2c6e56603..c99857ea9 100644 --- a/src/main/java/appeng/items/materials/MaterialType.java +++ b/src/main/java/appeng/items/materials/MaterialType.java @@ -114,7 +114,6 @@ public enum MaterialType { Cell4096kPart(59, AEFeature.XtremeStorageCells), Cell16384kPart(60, AEFeature.XtremeStorageCells), EmptyAdvancedStorageCell(61, AEFeature.XtremeStorageCells), - CardPatternRefiller(62), CardAdvancedBlocking(63), CardSticky(64), CardLockCrafting(65), diff --git a/src/main/java/appeng/parts/AEBasePart.java b/src/main/java/appeng/parts/AEBasePart.java index 32f76aa5a..4f40ac2c7 100644 --- a/src/main/java/appeng/parts/AEBasePart.java +++ b/src/main/java/appeng/parts/AEBasePart.java @@ -391,7 +391,8 @@ public abstract class AEBasePart implements IPart, IGridProxyable, IActionHost, if (data != null) { memoryCard.setMemoryCardContents(memCardIS, name, data); - ToolMemoryCard.setUpgradesInfo(data, (UpgradeInventory) this.getInventoryByName("upgrades")); + if (this.getInventoryByName("upgrades") instanceof UpgradeInventory ui) + ToolMemoryCard.setUpgradesInfo(data, ui); memoryCard.notifyUser(player, MemoryCardMessages.SETTINGS_SAVED); } diff --git a/src/main/java/appeng/parts/reporting/AbstractPartTerminal.java b/src/main/java/appeng/parts/reporting/AbstractPartTerminal.java index 508a7b01a..e4ca6a6cc 100644 --- a/src/main/java/appeng/parts/reporting/AbstractPartTerminal.java +++ b/src/main/java/appeng/parts/reporting/AbstractPartTerminal.java @@ -18,7 +18,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Vec3; -import appeng.api.AEApi; import appeng.api.config.Settings; import appeng.api.config.SortDir; import appeng.api.config.SortOrder; @@ -61,7 +60,6 @@ public abstract class AbstractPartTerminal extends AbstractPartDisplay implement private final IConfigManager cm = new ConfigManager(this); private final AppEngInternalInventory viewCell = new AppEngInternalInventory(this, 5); private final PinsHolder pinsInv = new PinsHolder(this); - private final AppEngInternalInventory upgrades = new RefillerInventory(this); public AbstractPartTerminal(final ItemStack is) { super(is); @@ -81,8 +79,6 @@ public abstract class AbstractPartTerminal extends AbstractPartDisplay implement drops.add(is); } } - ItemStack u = upgrades.getStackInSlot(0); - if (u != null) drops.add(u); } @Override @@ -96,7 +92,6 @@ public abstract class AbstractPartTerminal extends AbstractPartDisplay implement this.cm.readFromNBT(data); this.viewCell.readFromNBT(data, "viewCell"); pinsInv.readFromNBT(data, "pins"); - upgrades.readFromNBT(data, "upgrades"); } @Override @@ -105,7 +100,6 @@ public abstract class AbstractPartTerminal extends AbstractPartDisplay implement this.cm.writeToNBT(data); this.viewCell.writeToNBT(data, "viewCell"); pinsInv.writeToNBT(data, "pins"); - upgrades.writeToNBT(data, "upgrades"); } @Override @@ -172,30 +166,5 @@ public abstract class AbstractPartTerminal extends AbstractPartDisplay implement this.getHost().markForSave(); } - @Override - public IInventory getInventoryByName(final String name) { - if (name.equals("upgrades")) { - return this.upgrades; - } - return super.getInventoryByName(name); - } - - public boolean hasRefillerUpgrade() { - return upgrades.getStackInSlot(0) != null; - } - - static class RefillerInventory extends AppEngInternalInventory { - - public RefillerInventory(final IAEAppEngInventory parent) { - super(parent, 1, 1); - setTileEntity(parent); - } - - public boolean isItemValidForSlot(final int i, final ItemStack itemstack) { - return i == 0 && getStackInSlot(0) == null - && AEApi.instance().definitions().materials().cardPatternRefiller().isSameAs(itemstack); - } - } - public abstract ItemStack getPrimaryGuiIcon(); } diff --git a/src/main/resources/assets/appliedenergistics2/textures/guis/pattern.png b/src/main/resources/assets/appliedenergistics2/textures/guis/pattern.png index 2c6a44215bb2615ae6c240a9291fc58637f8743c..6e94f610f963f1e25e97b8048d53be25c93d9286 100644 GIT binary patch literal 2181 zcmcJRd0bOh7ROIE8lV&cg-8g9V+(Z!1tl!0L7+efD2tUS0fM6iftG{_Df<&GR*T>? zjG{!6er$`%HW(;6K$9s#WY{ug$*{^aMamKo1R@ZiL9Byz=FfSb&s)yDpLfo==lt&X zz4QKlo_abY9RSet_HqvdKxrOPfY;L881XkhTC+HTo(G|KodpwOpR%y!>6j-bU)J(5HT?Lni6zFh zl$FgZi|vm>AFvbV>~UFEgWe+zh3zK@tLo~j>ify5sU;3IR+6TXh6f{e@^80>+srPh zrV3O;GieJm!=p-hdH8s1v*3Gc0dcFK`PhmM(v(p<5=UxITAEiD_x1I)dVXwfhy=Cj zq9|^2zQyKw!>Q`0?20ryDkSIuei+ZR@`UDbC4Q*>oPL4o+Z5I0z^Y$NHwA5gT*Wez zs9Hj+$K;x@4ibu`1AoUtrZ!-W0B;2bK46*OhuBeFTwDfzj5zWMX15!BZUrf5+1Rb3 zrKP1-&kobb{tM=!h#ju84|Fz!RD^9t5sW32xis*h^W&d>vd%S?XPES z&@1W%&JzpmFmZZaQu%@1=H6OauNlkiK6HKWvvPn3Pt zt)5r05)azYx=bm7<}30oYJMpZ4W74)jK|e!liix0txLt}ajNd)PM6ngg^kl>+AIf# zbj8*WPV!@Ch^S4LAjL6ni7$(qNx3ay z+l#=S?X7C$X{yiBu@zPaA&VrNZ@xcVlRmeQAA|(O>&SB8^XRAz!W9!q;8<1n`}H++ec|qpoR(dF`vV6Lj+ZaW9p$<3;j5zjQ&)$>_6m!hZ~8$r+BOJcu46w zn{kir_$p>z2>IDWN|z0;uKzCCH{DEjfp#S(>IeC|6|*Egr9?jZw>r%4)^Q5nrE{{YFQU;jSV1@b)G-C){}6F3Np^120Fqpc zwvlf8ublf|y7_lB6|wFsE8s-ApigX literal 1354 zcmZuwYfw{H5Z;@FhanL`MMT8lG~feJ+6XNQ1csD{fq|G<0@6Ytl|so_iNJu=s{)P& z5tXQ=ptN8D2BMh(qM^mBVk{knj3Q{LJVb%;7^2mRFVcIh`l~y0&hB?+_dDO5-E%ND zCY(-np#lIsG9ruzfZ!nlwq)F8HpcS_l+6nd1$CFJ2?vzzA<-cKnj>~^Qmk<79Lwc% zaBs0#^m@HOAdtyq{{H@2trkBVXm0GlovoA?vjtBe3&dav1wSF`(W_8C_*+T6PdmN=}pQ(&F zpPuXE;(JCt(_UGo(E7;)d(}@~?kT)sYU)}^7e-KKC7&M&KQ%Dnb-TQn0*6({4+u`b zLTb}sy8BTYs*H0oQUFD;Ge10>)GtK!qaAB-W#t|lm*B3(2m5SpF2&(38Yi*Yk#i0i z?`?S0kkxrz9(i(q|8Fi3z#N;D5a2%XWXG?$LxsB?GE@tS+!XO2p+Qqr=dmSgLtBi^ zDz2^yF&wSBQeKQ_0u+USYv#nwKkGI_=vf!+na6}gZaC|XN~)u1eL2nE_XP)&GDN;| zL>g5#e0_K0rzS@qb*?(NILRe1QUIP1!y-dgadI_4C(;;<5=o zxXOUC4ZFS--)6!uJbF#9?r@UWD6Z#|(>DMNEgKr9G2U{jU*wSt6@!kRV>awPE3(R2 z^kA4MSaeH-(>b8Md!v5Ttn3N%L!^(#F1C?aGp?|;n~DHRGrzc6U)*$xR4`|y8 z!}p{&eTT{ezH>UBA;!zp+f!wLe2 zS3#W{F(=QHyook~sq^j?F*F=l2B(^Ao5G|2f}zSfH_4Mp^M=Sk0JH!-TYOF0gJAhw z#Ak7=U82S+oq^Y(uhdRNJp>kz3BI1(7GOYOzY6ciwPtVM#&~kNiMhQ`H2c%ycX{~6 zF8s>wLkyT^rleZvYi-bNJ~(VFYh|{r=>^^GchmR(73hPgn5IL%Xm8SoKcKNT$WNr^ z`L0lXq@8F>_!z^~)}0xGQp8Anftq&JV;gqnd1lFEoAJcdxp?yU9giDk@-#jJ?=5!l zE-_jES+ce=Q6-`oz68MhF@5mSpbE*z<(xrpYfxEQUP~H+EMU%G$~xX7z2&?~oQSX! dweOeG^m@;hW8C3VQ~d>kERquwrVdTs_b;0J8pZ$s diff --git a/src/main/resources/assets/appliedenergistics2/textures/guis/pattern2.png b/src/main/resources/assets/appliedenergistics2/textures/guis/pattern2.png index d5a999ad61a6c82556419e414369031be71e20a6..e495ad6d0c6005fceba5edecdcd7a57cc16b8188 100644 GIT binary patch literal 2173 zcma);2~<;88prQT9wAszP^KVTz)s<4*(z!wl}Qj=pjEIy%2JkqKv;*cBt<5`6G6*p z15%6J-enX(0)_^HAW7GxnT$=e+ao_uf7Ce#`&+ z-IsOB)k$NA-VOkOhKuuYcK{%42mvAid-%ok!#1o0cc){ZTx>9f88E})qyqqz+3&0d zsbIDm)7d8hfSuJFH&l5f*&G1kZkOW@o=E{S!(%Z|eRT=+WF5Lz>JI{cJi#Fttb1fR zOak-ARp6pEq)dIk$HIiYd!^6r(aO>9dNMvEeJh<;EcUI%%VlZJM*>YAwSQRAo+k|+ z?RqjapSCzn$-j^zmB}KA>KZ@MM6E^FL$zM63iqx)Nak>ETQv|+nKbwr!{@}UPLkEa zitFj!>+1a3J#S}M&|R|;zycNR%8kVd;WHrBaU7c zX9C2h8Y5UpRY5k1V#$vFQI%Q-fg2ql>>%DdAl3%iMfy{;(Mjd(a6_|el(wmUc4|jH<##gA+%1tRvn@qf-1~_@31^E zEv@;?kwUW6vQDhQoCF_$dw-=crZWNZUQeS2>r8@}{q@(v61Fc6nDTwlg0ibV$bWnD+O--XiCTKa zizPirzTdrDx=6-UlFbQhUxt@c@v`zX5otEm1{ML)!|QzUpJkUy$rgmM za`F^J*Z9v6UoC3u?ho;4t9D;m!N8zoHiqAxpHNfpAW;2(yg|5BY4_e<0XG%2_vr(9 z@Pwf7mbBBF)kZTkJbNYX6sS(BWUc%_ZYZ%SmsRU#G{|nMB8Rt=yp?f@GfSoT%U>s= z8#Mv*X1(x+WvsYgMkp~Ng52UTD4`}G4BDFeW~ur{QUMwFtp~%elsqUJ@0Pk#5Xy`O zs14Ce2bHf9{~)<2-s~;`^@+4kDud8#-a&IBYrN!_=(QiCgL);|xeyVE#h>9rnSRyv zAAJf?n70$jgF0w7-^{puyc;kPBOJQVn5ozFi^k7y{2N$is9(kAZ!?%<7y!96Iv~C#fBG=O(C@8-G(^J3la0-^<QDer;;&o54hEz3ENYo|y;$rQxB#{Ib z#$@B;Ve?GGsGaM<1Zz|sRhMLr;zJBeHP-h50uhno=p}CL{m-?99RUY;;82`PZ`) z7lg<892h%DUsDw6o7)Ev{4RrVkshk%Nu=(A(JUf_IqvFAWJcm74>ADnkAQ3p+x`Kv z{z7A5|6oq#ixzj7>XZSZ_5i~vdE0xIS3xeHF#UbZ!#*W_Kdu;0pz!tq*AB_V_b{rq zceNl7*lL}-ZbU@(ST9ax0`F@rZfonr$bG=)C8?@C5lK30 zU?Ae3njz)M_gOIcgq7i0Uykm>oE^0{q+fvQr{-YXh$uh5LeIIs@I=cQ6i}iz`x-5- z^k`1uWfrJHDBmAHENM2tA&rq}^H8n9+m*Xb9EE`LPHJ789p>0$t#JP+7JR@F-^9&& zH%0CIq-q7%6hcD>l!F0|Ir9_R+x>eO5N5u@CnY6?SLxb4&_jR2RF>TM%nS_JO=_d} zMmLpMY!(J)yy1*D;r4cq`X)(uT9>d+z!+LvTO03BlwE3gMivT%`HbeJ)5Yu!*gy%M z_rIB*j$#q`SVu>bu40nrZL#eQ(EYwKCLp1gMIsTUrt3N-w#g=&j6p=0;@6b+ay_E- zv{Gr(;Yr4wyeY1|!b*gFxm@ZV3?HEzL^=Jx0NVog+hg*RScxhDT#xO> zdV3_>df5z^*|SUXh^?dzM~blQ&_c#bX#eJ!!~C*{_p>}Vu760(#1shdcLim45O?KT$({($ zn}brcUP$4*?ut0!0JR(d2+QC}fQa(^$wl_AQ|MwYKjXjSot<5qNB?#}jCyGt3Okuh zn%aGX&hfX5&v;wdh3bMtU04x_3&HcK*bk74L2pz?PUP|In6&{iYrGPo{2*2DJ#^v} zdj-5*SB1vzb?Jzx8jw`mn&}8D>1*iiRpgMR@pWGq-1da?;jw9<)>8TxUus$hmj?-& z8WY!3mh<*%yS=&mc)dF>DA;e*?#?AwqO@iLtG*7svZ{`lSxFL?mk}AmP6BlNC)(Vt zQU9ahaH-ov8lJ%oO@B0+P~f2MGS*-BNLR4?$c*(3{#_=Ni_I<>F;BApRM$72oc84Tv%87`GQC1Ox8nsvV1V)Nmj|8Ep|94Y zZxofqRi0kt*PMORt~c`Z>v?x=MMb|NWTWRAxgQ#^P*M|G&ClH_LQ8-8RiTNANsT5>ftkJner ztW7CJ%Cpf104vx8=+Sc<^6~wDz=cNgg5C}rdLTi}+`FzvHDD%@J+P5GLwnT;( z>tRjFox>X_8bPnTsMPqB>W8(~NOntHNqF=ez!ko9`S*}WYK-OC;8PdB*nt}!x}=jp zMFHZL?@whxv%|3|gZV~9q*H9ORpT3nUxp~b=W#LOu2?ra81s_G{4wTzmrI`PniQS& zvNevEloV~EXF?A$78-9|ZvDR_d77G7dMY&8vHX+to2}9tM7Zop*j4=apMNvM#*H!e zb9Zf%d}B2Y;bYS5>HS{J^#!fCxMk;Ust4na$d2LRJ1t$GgP X{2CswK8O5(y?eN@D%fgo5d-aKz0Vo|X3EMBhcSpP7ff*r z0YKr`g%eWI-3tSNeQUeh`ar~?i2<*ZecdXu-o;-%-t(?=E#+#U8Hwmld57QRVC;GJ z?0BBR)e~APrx=)jY9F#DkhSfP?rFI8IBI?3h!|e^gc+hwZLsp%KP=$pOkVskSS^Gn zy}KblMzgZ#M3^vk4I}D~P#PY-F=dNG4J|iIHl~W5q@7ZztHF~a4-_`To_cZ9>J zt&I`P#LY>ir6M_A9qM{u;cEr&iWKIq6cK4c#tQ8Bf<<7z^ z!M`%LovM=d37FXgz7M$Uhj<01~> zn%vO6;HlBvu4K?HZP(=V#Da0oWQ0A2gb_5iq}mcEhnj+F0xJxFXjUe7+XG8F1hyKz zRb|~o-+YS8Z7jS61{vs&!%*-g(Z+8K~8;_tI)@xcucRQDk^{c=DR!MNS*&#Yo z*qcm83?>S0E(cmhTLI-M4k#to&M74GL&QxI;Xfd@Or~!7L4oD=!0KMpdfU_dGeF=n zxJF>=-NaA(4`@*W1v-F^W{uSbg$Y~4e`rb@M8Y^}mDt}rw5`*lxXFR&TW@}V46^Y+ z(7bOob+~C>5;VHXu~>g}y0+b@?~j{=9vPN3iDCyxM^HdX8C=Z-a5EZYm(=IPwYlOT z;FnmtO2{eGG&ap@uju7$2HxjgF?Q>zZWt{1%x#kn&|>CGKtOdv;#dWDeUbh3SP-Zt z57gr?me5?P*f;4U!Q==YSP}F9J0?&3I-yJ8n@Kq8)QZcMZ$)5$K!V(|?*y?E)cC{zYDZ{s|zs~-NyZ`kVtJW^~#*dRQ^hq=N(Rtc+X1JxcYK+dc>(d^0~BbA^IWMUwf)%}nNKqv%Zd9DnwpxbY;-v3z_1(`aL-|=112i-8yCE!DQvn!=G9o&?LK!b zRX%<*8a@ZJ9(^p_rm!ikSGT32z$oITdHt#;KP&xF^QhSqLMLMDp<-H^M%g)d%nEC! z3YdpiC5%-{EX0SM{OI8a=#BQpx)v_bD^Fnd1R<18irK@9XXHR>0{3y+>ax}U-uw~f z&&Z<3MqM$UE4osM2f;yJJ|Q{VW?zvYh!@>I%d4fveF4iTK#Z$6v{hZ zUwl1jiK?p82!-l}`7cK9siEM!UCIN)UWyRQ$>?{X?AXSo>QGKhm$0e{BjwfXG+Mj^ z_rCTsqwV%K8cJ4Of2nY5HqL`na2zU1oMg_@Nd}L`Ot@*S-vGm*0+1 z9NdN!B!jcOq1058t!Eb^=@LwSzrc#bf)zjM+{e4he(G^Hx}R3X-oQqi*D&HjLaHRv zTV~3Y7F)rdqz4isTX*^1PsCo3mUEM+>=(z1Tt>31JFma-gge#a(<5sb;n3(#Re(pc zL_L`0eQJRNT@f8jgW)NjCm8Vxk!x7#nBw_gDm?OpyMl(s`N`|L%5Kka;!2FmeQ(?w zk6?Jhk@OX$20&{rDgF7Op73Y5d`6QR8pDTKo z4V|$m{&`W1G6*PczVt--`FXi2WW1lgyIKFy=yJWZBMleqL`^-(07(vBg+P)tQ}Hy)i%*>yE?9JM&Q zJkn0iIj9fJ)6_f!!>66pWHKv|8GlCb`VrqypYg!WKyU25IJ16v#W-4)+^pZybaMcPCF literal 1471 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 axjbiN-a=awN4eaq8SwK7@Mdp{KKXBLNc!&p literal 1453 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5D>38$lZxy-8q?;Kn_c~qpu?a z!^VE@KZ&eBzHxw0h%1o(|NnnaPtWn=$3sFwPMkP#?AWp3;NZ~E(B9r&b93|V?rwcU zgB?3|?A*E2$ix_^J}E;<97qY41o;I6^`Za<)wMH|fRdaA9+AZi417mGm~pB$pES_^ zXPz#OAr*0N=OoUaWhLNt_13Pk>inPo_it0H^yTVw+APUfd~W)NX8tpCWW!{>eKg={ zk2U7_8{xEmNAZ_ATV&dtZ`{(>dLJn&%zQk*@AJne7V>3r|3B{5f1fF8e~hi~eqO6J zx&hFhtt+U6#}*HFcN5B2-gx`sOi%JWU(kP0PS$l*ybXVV16=F zv@lYN>%tw?M2p)OXGMs7j9gXbpUh~Lb!5ZL*GiGoI0^(o8rJauT`={OO9q#)BE$d& zCINviT|w3xzC}^4pLAlE%xu`(#K7`J_rax^4Ig@~lBw=Ctd0L4#Jrj5%Fl_ZvOwp#OgZ;Du+>=MfY*Wi z!b_Wf90}!o_JXzZ)bW20GgcL_Su_6gZuMJ!NJ8mJ_=3DuA78MnDrmD~Sz#*l^0bMy z-~!u;C9AuDo^+`6cL2H(Xkdtc%RP4oNfw0#(u`8AYSZ{!@4Gep`{7>mC7$Jp|5N8W z)>m?$?5!HLO4evO%s(Kk?bC8ibV0FO*bbIYY8U(BSZo+UQS)gYB<$7;PI$*tEh@lU zqWvImK|G_;g^djf3EfO_1|qzH+qb$hrtZ^nh*rKA=8&1N*ys42LsgE8^fu`-N?lfo zS*n^RYq0dH%L~p>CcCN~EN#uJKP$!y8z{Nly|#^ohy7~QBhSC3OnqZw}*2rc;Drui%Upf1OSEH#IRoK+?p7#TZv70J(45b0oGN%_tE zUf+T3(_%I&fd{-IeNrzR9TaZMg974%6k|V|8S5>-mUnA(9k$==EO~A1s_#*gsZ^3) z%4n6iWV?5Q-v0e7w9DVI-24a9@Q*2`(UzM-^qaPV$O#(;Mv&;CdweWU=8G~V=Cd=+ zYX%3iIWuG20nhsE>$5pl9+Eu6;^Jhcy?`s-pLxK@i~&=Qi^C7Ev!S9Z4p^>X zc>@ygX^;z1)sipC^fl>@;J&c7a>=K2_w<122b?$=n5L8)!;>llQt^gR4+&)I92wrX1tqZFz0QCuTED4cffL2p4mHb+VMusa;?%a zrf-a(H1qUs&u)gZal&n%W7l@N3T87_ZSR!WxA3Yf+))jm^4P$s3v6k_U6bvhM0g3TqB-(hPi52 Vl~*aTz5^D644$rjF6*2UngFGJHkkkb