From 5220ff1a2647aacf736b39f998deb38208d7241d Mon Sep 17 00:00:00 2001 From: Dane Strandboge Date: Mon, 12 Jul 2021 22:10:23 -0500 Subject: [PATCH] Fix many small GUI issues (#1574) --- src/main/java/gregtech/api/gui/ModularUI.java | 4 ++-- .../api/gui/widgets/CycleButtonWidget.java | 2 +- .../SimpleMachineMetaTileEntity.java | 10 ++++++---- .../multiblock/MultiblockWithDisplayBase.java | 4 ++-- .../recipes/machines/RecipeMapGroupOutput.java | 4 ++-- .../gregtech/common/covers/CoverConveyor.java | 2 +- .../common/covers/CoverFluidFilter.java | 2 +- .../common/covers/CoverItemFilter.java | 2 +- .../java/gregtech/common/covers/CoverPump.java | 2 +- .../electric/MetaTileEntityBatteryBuffer.java | 2 +- .../electric/MetaTileEntityBlockBreaker.java | 2 +- .../electric/MetaTileEntityCharger.java | 2 +- .../electric/MetaTileEntityFisher.java | 2 +- .../electric/MetaTileEntityItemCollector.java | 2 +- .../multiblockpart/MetaTileEntityItemBus.java | 15 ++++++++++----- .../storage/MetaTileEntityChest.java | 2 +- .../resources/assets/gregtech/lang/en_us.lang | 4 ++-- .../textures/gui/widget/button_overclock.png | Bin 1096 -> 153 bytes .../textures/gui/widget/button_switch_view.png | Bin 642 -> 1747 bytes 19 files changed, 35 insertions(+), 28 deletions(-) diff --git a/src/main/java/gregtech/api/gui/ModularUI.java b/src/main/java/gregtech/api/gui/ModularUI.java index 9baf7a3487..4d29a124bc 100644 --- a/src/main/java/gregtech/api/gui/ModularUI.java +++ b/src/main/java/gregtech/api/gui/ModularUI.java @@ -180,12 +180,12 @@ public Builder bindPlayerInventory(InventoryPlayer inventoryPlayer) { } public Builder bindPlayerInventory(InventoryPlayer inventoryPlayer, int startY) { - bindPlayerInventory(inventoryPlayer, GuiTextures.SLOT, 8, startY); + bindPlayerInventory(inventoryPlayer, GuiTextures.SLOT, 7, startY); return this; } public Builder bindPlayerInventory(InventoryPlayer inventoryPlayer, TextureArea imageLocation) { - return bindPlayerInventory(inventoryPlayer, imageLocation, 8, 84); + return bindPlayerInventory(inventoryPlayer, imageLocation, 7, 84); } public Builder bindPlayerInventory(InventoryPlayer inventoryPlayer, TextureArea imageLocation, int x, int y) { diff --git a/src/main/java/gregtech/api/gui/widgets/CycleButtonWidget.java b/src/main/java/gregtech/api/gui/widgets/CycleButtonWidget.java index 444922cfeb..b6e997355e 100644 --- a/src/main/java/gregtech/api/gui/widgets/CycleButtonWidget.java +++ b/src/main/java/gregtech/api/gui/widgets/CycleButtonWidget.java @@ -88,7 +88,7 @@ public void drawInBackground(int mouseX, int mouseY, IRenderContext context) { String text = I18n.format(optionNames[currentOption]); fontRenderer.drawString(text, pos.x + size.width / 2 - fontRenderer.getStringWidth(text) / 2, - pos.y + size.height / 2 - fontRenderer.FONT_HEIGHT / 2, textColor); + pos.y + size.height / 2 - fontRenderer.FONT_HEIGHT / 2 + 1, textColor); GlStateManager.color(1.0f, 1.0f, 1.0f); } diff --git a/src/main/java/gregtech/api/metatileentity/SimpleMachineMetaTileEntity.java b/src/main/java/gregtech/api/metatileentity/SimpleMachineMetaTileEntity.java index 659cdf6e79..7d34e7ab63 100644 --- a/src/main/java/gregtech/api/metatileentity/SimpleMachineMetaTileEntity.java +++ b/src/main/java/gregtech/api/metatileentity/SimpleMachineMetaTileEntity.java @@ -320,7 +320,7 @@ protected RecipeLogicEnergy createWorkable(RecipeMap recipeMap) { protected ModularUI.Builder createGuiTemplate(EntityPlayer player) { ModularUI.Builder builder = workable.recipeMap.createUITemplate(workable::getProgressPercent, importItems, exportItems, importFluids, exportFluids) - .widget(new LabelWidget(5, 5, getMetaFullName())) + .widget(new LabelWidget(7, 5, getMetaFullName())) .widget(new DischargerSlotWidget(chargerInventory, 0, 79, 62) .setBackgroundTexture(GuiTextures.SLOT, GuiTextures.CHARGER_OVERLAY)) .widget(new ImageWidget(79, 42, 18, 18, GuiTextures.INDICATOR_NO_ENERGY) @@ -328,7 +328,7 @@ protected ModularUI.Builder createGuiTemplate(EntityPlayer player) { .bindPlayerInventory(player.inventory); int leftButtonStartX = 7; - int rightButtonStartX = 176 - 7 - 24; + int rightButtonStartX = 176 - 7 - 45; if (workable.recipeMap instanceof RecipeMapWithConfigButton) { leftButtonStartX += ((RecipeMapWithConfigButton) workable.recipeMap).getLeftButtonOffset(); rightButtonStartX -= ((RecipeMapWithConfigButton) workable.recipeMap).getRightButtonOffset(); @@ -344,11 +344,13 @@ protected ModularUI.Builder createGuiTemplate(EntityPlayer player) { builder.widget(new ToggleButtonWidget(leftButtonStartX, 62, 18, 18, GuiTextures.BUTTON_FLUID_OUTPUT, this::isAutoOutputFluids, this::setAutoOutputFluids) .setTooltipText("gregtech.gui.fluid_auto_output.tooltip")); + leftButtonStartX += 18; } - builder.widget(new CycleButtonWidget(rightButtonStartX, 60, 24, 20, + builder.widget(new CycleButtonWidget(leftButtonStartX, 62, 18, 18, workable.getAvailableOverclockingTiers(), workable::getOverclockTier, workable::setOverclockTier) - .setTooltipHoverString("gregtech.gui.overclock.description")); + .setTooltipHoverString("gregtech.gui.overclock.description") + .setButtonTexture(GuiTextures.BUTTON_OVERCLOCK)); return builder; } diff --git a/src/main/java/gregtech/api/metatileentity/multiblock/MultiblockWithDisplayBase.java b/src/main/java/gregtech/api/metatileentity/multiblock/MultiblockWithDisplayBase.java index 2245e0cf2e..61b5b4251e 100644 --- a/src/main/java/gregtech/api/metatileentity/multiblock/MultiblockWithDisplayBase.java +++ b/src/main/java/gregtech/api/metatileentity/multiblock/MultiblockWithDisplayBase.java @@ -47,8 +47,8 @@ protected void handleDisplayClick(String componentData, ClickData clickData) { protected ModularUI.Builder createUITemplate(EntityPlayer entityPlayer) { ModularUI.Builder builder = ModularUI.extendedBuilder(); builder.image(7, 4, 162, 121, GuiTextures.DISPLAY); - builder.label(10, 7, getMetaFullName(), 0xFFFFFF); - builder.widget(new AdvancedTextWidget(10, 17, this::addDisplayText, 0xFFFFFF) + builder.label(11, 9, getMetaFullName(), 0xFFFFFF); + builder.widget(new AdvancedTextWidget(11, 19, this::addDisplayText, 0xFFFFFF) .setMaxWidthLimit(156) .setClickHandler(this::handleDisplayClick)); builder.bindPlayerInventory(entityPlayer.inventory, 134); diff --git a/src/main/java/gregtech/api/recipes/machines/RecipeMapGroupOutput.java b/src/main/java/gregtech/api/recipes/machines/RecipeMapGroupOutput.java index e72b00834d..4132e17b39 100644 --- a/src/main/java/gregtech/api/recipes/machines/RecipeMapGroupOutput.java +++ b/src/main/java/gregtech/api/recipes/machines/RecipeMapGroupOutput.java @@ -33,7 +33,7 @@ public Builder createUITemplate(DoubleSupplier progressSupplier, IItemHandlerMod ServerWidgetGroup itemOutputGroup = createItemOutputWidgetGroup(exportItems, new ServerWidgetGroup(() -> !booleanWrapper.getCurrentMode())); ServerWidgetGroup fluidOutputGroup = createFluidOutputWidgetGroup(exportFluids, new ServerWidgetGroup(booleanWrapper::getCurrentMode)); builder.widget(itemOutputGroup).widget(fluidOutputGroup); - ToggleButtonWidget buttonWidget = new ToggleButtonWidget(176 - 7 - 20, 60, 20, 20, + ToggleButtonWidget buttonWidget = new ToggleButtonWidget(176 - 7 - 54, 62, 18, 18, GuiTextures.BUTTON_SWITCH_VIEW, booleanWrapper::getCurrentMode, booleanWrapper::setCurrentMode) .setTooltipText("gregtech.gui.toggle_view"); builder.widget(buttonWidget); @@ -47,7 +47,7 @@ public int getLeftButtonOffset() { @Override public int getRightButtonOffset() { - return 20; + return 18; } private static class BooleanWrapper { diff --git a/src/main/java/gregtech/common/covers/CoverConveyor.java b/src/main/java/gregtech/common/covers/CoverConveyor.java index d205875a92..a6cf8b7510 100644 --- a/src/main/java/gregtech/common/covers/CoverConveyor.java +++ b/src/main/java/gregtech/common/covers/CoverConveyor.java @@ -433,7 +433,7 @@ public ModularUI createUI(EntityPlayer player) { ModularUI.Builder builder = ModularUI.builder(GuiTextures.BACKGROUND, 176, 190 + 82) .widget(primaryGroup) - .bindPlayerInventory(player.inventory, GuiTextures.SLOT, 8, 190); + .bindPlayerInventory(player.inventory, GuiTextures.SLOT, 7, 190); return buildUI(builder, player); } diff --git a/src/main/java/gregtech/common/covers/CoverFluidFilter.java b/src/main/java/gregtech/common/covers/CoverFluidFilter.java index e431812ae8..f8eff26a21 100644 --- a/src/main/java/gregtech/common/covers/CoverFluidFilter.java +++ b/src/main/java/gregtech/common/covers/CoverFluidFilter.java @@ -79,7 +79,7 @@ public ModularUI createUI(EntityPlayer player) { this.fluidFilter.initUI(45, fluidFilterGroup::addWidget); return ModularUI.builder(GuiTextures.BACKGROUND, 176, 105 + 82) .widget(fluidFilterGroup) - .bindPlayerInventory(player.inventory, GuiTextures.SLOT, 8, 105) + .bindPlayerInventory(player.inventory, GuiTextures.SLOT, 7, 105) .build(this, player); } diff --git a/src/main/java/gregtech/common/covers/CoverItemFilter.java b/src/main/java/gregtech/common/covers/CoverItemFilter.java index 9f514e7d63..dea3fa278b 100644 --- a/src/main/java/gregtech/common/covers/CoverItemFilter.java +++ b/src/main/java/gregtech/common/covers/CoverItemFilter.java @@ -82,7 +82,7 @@ public ModularUI createUI(EntityPlayer player) { return ModularUI.builder(GuiTextures.BACKGROUND, 176, 105 + 82) .widget(filterGroup) - .bindPlayerInventory(player.inventory, GuiTextures.SLOT, 8, 105) + .bindPlayerInventory(player.inventory, GuiTextures.SLOT, 7, 105) .build(this, player); } diff --git a/src/main/java/gregtech/common/covers/CoverPump.java b/src/main/java/gregtech/common/covers/CoverPump.java index 0809341c93..ccee654a9c 100644 --- a/src/main/java/gregtech/common/covers/CoverPump.java +++ b/src/main/java/gregtech/common/covers/CoverPump.java @@ -170,7 +170,7 @@ public ModularUI createUI(EntityPlayer player) { ModularUI.Builder builder = ModularUI.builder(GuiTextures.BACKGROUND, 176, 184 + 82) .widget(primaryGroup) - .bindPlayerInventory(player.inventory, GuiTextures.SLOT, 8, 184); + .bindPlayerInventory(player.inventory, GuiTextures.SLOT, 7, 184); return buildUI(builder, player); } diff --git a/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityBatteryBuffer.java b/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityBatteryBuffer.java index ea463e2ad6..a737d73e31 100644 --- a/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityBatteryBuffer.java +++ b/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityBatteryBuffer.java @@ -138,7 +138,7 @@ protected ModularUI createUI(EntityPlayer entityPlayer) { .setBackgroundTexture(GuiTextures.SLOT, GuiTextures.BATTERY_OVERLAY)); } } - builder.bindPlayerInventory(entityPlayer.inventory, GuiTextures.SLOT, 8, 18 + 18 * rowSize + 12); + builder.bindPlayerInventory(entityPlayer.inventory, GuiTextures.SLOT, 7, 18 + 18 * rowSize + 12); return builder.build(getHolder(), entityPlayer); } diff --git a/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityBlockBreaker.java b/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityBlockBreaker.java index 716ec0b09e..17f2a5b8b4 100644 --- a/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityBlockBreaker.java +++ b/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityBlockBreaker.java @@ -250,7 +250,7 @@ protected ModularUI createUI(EntityPlayer entityPlayer) { .setBackgroundTexture(GuiTextures.SLOT)); } } - builder.bindPlayerInventory(entityPlayer.inventory, GuiTextures.SLOT, 8, 18 + 18 * rowSize + 12); + builder.bindPlayerInventory(entityPlayer.inventory, GuiTextures.SLOT, 7, 18 + 18 * rowSize + 12); return builder.build(getHolder(), entityPlayer); } diff --git a/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityCharger.java b/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityCharger.java index 3a072b20d4..e8fa9c6997 100644 --- a/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityCharger.java +++ b/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityCharger.java @@ -101,7 +101,7 @@ protected ModularUI createUI(EntityPlayer entityPlayer) { .setBackgroundTexture(GuiTextures.SLOT, GuiTextures.CHARGER_OVERLAY)); } } - builder.bindPlayerInventory(entityPlayer.inventory, GuiTextures.SLOT, 8, 18 + 18 * rowSize + 12); + builder.bindPlayerInventory(entityPlayer.inventory, GuiTextures.SLOT, 7, 18 + 18 * rowSize + 12); return builder.build(getHolder(), entityPlayer); } diff --git a/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityFisher.java b/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityFisher.java index e58088ddfd..08f608c3c5 100644 --- a/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityFisher.java +++ b/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityFisher.java @@ -72,7 +72,7 @@ protected ModularUI createUI(EntityPlayer entityPlayer) { } } - builder.bindPlayerInventory(entityPlayer.inventory, GuiTextures.SLOT, 8, 18 + 18 * rowSize + 12); + builder.bindPlayerInventory(entityPlayer.inventory, GuiTextures.SLOT, 7, 18 + 18 * rowSize + 12); return builder.build(getHolder(), entityPlayer); } diff --git a/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityItemCollector.java b/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityItemCollector.java index 052bf74765..42e42d46f5 100644 --- a/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityItemCollector.java +++ b/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityItemCollector.java @@ -236,7 +236,7 @@ protected ModularUI createUI(EntityPlayer entityPlayer) { } this.itemFilter.initUI(45 + rowSize * 18 + 5, builder::widget); - builder.bindPlayerInventory(entityPlayer.inventory, GuiTextures.SLOT, 8, 45 + rowSize * 18 + 105); + builder.bindPlayerInventory(entityPlayer.inventory, GuiTextures.SLOT, 7, 45 + rowSize * 18 + 105); return builder.build(getHolder(), entityPlayer); } } diff --git a/src/main/java/gregtech/common/metatileentities/electric/multiblockpart/MetaTileEntityItemBus.java b/src/main/java/gregtech/common/metatileentities/electric/multiblockpart/MetaTileEntityItemBus.java index bc09ec4fdd..a3703f5588 100644 --- a/src/main/java/gregtech/common/metatileentities/electric/multiblockpart/MetaTileEntityItemBus.java +++ b/src/main/java/gregtech/common/metatileentities/electric/multiblockpart/MetaTileEntityItemBus.java @@ -91,19 +91,24 @@ public void registerAbilities(List abilityList) { @Override protected ModularUI createUI(EntityPlayer entityPlayer) { int rowSize = (int) Math.sqrt(getInventorySize()); - Builder builder = ModularUI.builder(GuiTextures.BACKGROUND, 176, + return createUITemplate(entityPlayer, rowSize, rowSize == 10 ? 9 : 0) + .build(getHolder(), entityPlayer); + } + + private ModularUI.Builder createUITemplate(EntityPlayer player, int rowSize, int xOffset) { + Builder builder = ModularUI.builder(GuiTextures.BACKGROUND, 176 + xOffset * 2, 18 + 18 * rowSize + 94) .label(10, 5, getMetaFullName()); for (int y = 0; y < rowSize; y++) { - for (int x = 0; x < rowSize; x++) { + for (int x = 0; x < rowSize; x ++) { int index = y * rowSize + x; - builder.widget(new SlotWidget(isExportHatch ? exportItems : importItems, index, 89 - rowSize * 9 + x * 18, 18 + y * 18, true, !isExportHatch) + builder.widget(new SlotWidget(isExportHatch ? exportItems : importItems, index, + (88 - rowSize * 9 + x * 18) + xOffset, 18 + y * 18, true, !isExportHatch) .setBackgroundTexture(GuiTextures.SLOT)); } } - builder.bindPlayerInventory(entityPlayer.inventory, GuiTextures.SLOT, 8, 18 + 18 * rowSize + 12); - return builder.build(getHolder(), entityPlayer); + return builder.bindPlayerInventory(player.inventory, GuiTextures.SLOT, 7 + xOffset, 18 + 18 * rowSize + 12); } @Override diff --git a/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityChest.java b/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityChest.java index 2aa2939e03..c44558c1c5 100644 --- a/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityChest.java +++ b/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityChest.java @@ -243,7 +243,7 @@ protected ModularUI createUI(EntityPlayer entityPlayer) { for (int y = 0; y < amountOfRows; y++) { for (int x = 0; x < rowSize; x++) { int index = y * rowSize + x; - builder.slot(inventory, index, 8 + x * 18, 18 + y * 18, GuiTextures.SLOT); + builder.slot(inventory, index, 7 + x * 18, 18 + y * 18, GuiTextures.SLOT); } } int startX = (Math.max(176, 14 + rowSize * 18) - 162) / 2; diff --git a/src/main/resources/assets/gregtech/lang/en_us.lang b/src/main/resources/assets/gregtech/lang/en_us.lang index 717a176c5b..9bf169abc6 100755 --- a/src/main/resources/assets/gregtech/lang/en_us.lang +++ b/src/main/resources/assets/gregtech/lang/en_us.lang @@ -2927,8 +2927,8 @@ gregtech.gui.toggle_view.disabled=Toggle View (Fluids) gregtech.gui.toggle_view.enabled=Toggle View (Items) gregtech.gui.overclock.enabled=Overclocking Enabled./nClick to Disable gregtech.gui.overclock.disabled=Overclocking Disabled./nClick to Enable -gregtech.gui.overclock.description=Recipes can overclock to this tier./nOFF means no overclocking is performed. -gregtech.gui.overclock.off=OFF +gregtech.gui.overclock.description=Recipes can overclock to this tier./nX means no overclocking is performed. +gregtech.gui.overclock.off=X gregtech.gui.sort=Sort gregtech.gui.fluid_auto_output.tooltip.enabled=Fluid Auto-Output Enabled gregtech.gui.fluid_auto_output.tooltip.disabled=Fluid Auto-Output Disabled diff --git a/src/main/resources/assets/gregtech/textures/gui/widget/button_overclock.png b/src/main/resources/assets/gregtech/textures/gui/widget/button_overclock.png index bbcd0194608228b9cfd19e61428f68cd085b6e16..336f63df3063716e3e48b68e37356a1c22d59d67 100644 GIT binary patch delta 122 zcmX@XF_TfRGr-TCmrII^fq{Y7)59eQNDF~53p0>h@?dfbkYX$ja(7}_cTVQzL`4z7 z0G|-o|NsAYcXykcoBzMYeQ~0pgr20Qi(`ny<>UrNH#Rp%4gskpI*O_W0YOX*T;Dj4 USiSMR2{ebn)78&qol`;+0IHTE_y7O^ literal 1096 zcmV-O1h@N%P)N2bZe?^J zG%hhNHvLWs=l}o%#z{m$R7gw3l-o;GQ5437NxUGEQWTD+%!`Q=R*pW3mk`3djm|g@ zF*J_Ks59e;m+_KKK}iHf`BET3FRAIHT0!(6K3GtYfrwrHmwxB0?KyLXc`N8+b69(= z_3gFx+Uu;Wzr}_XI|~c@EiH#7B|q}>S%+n1pRZkex45XxI>yJxO)?uW9S(0*SO2!z zGOjJBb0HdyL?YpE*zISvQ)|fR(gMT*=_*zu-^VBKaaPIH#SLE&ac~m4uO#SXErba&DOWI$Gi;uIj5fV*J zicB%tuen_5F?DjV^!l+)3;4m|hz}2M)Yc-eR97o9ufqQ6jT_Nu)Ch%OyPRA)>%znm z<>=_>)3!FY+jhGm^O)=@ERnfhJRV0Vx|Dcb=s?dsp=p=Vfg8$$+*~Vpa4?ZbkoM%{ zb`#p6kLx0L5?{&{o8XH+6N`UNtt#d#s$knD3mEt8y1i!p9Bk^U6v^rf=CF<>b7rtVCeZQnr(7L+0^G znD3O&hZ_#&Q_&>vtEz-X*cYv>TG_AO*TU*#0-~9S#r7&H@Y!}cy>E!)$ z=cH96VOi7D)3hi3hXY+aABpt!^(ivFjrYrjhJ%6v%v6hpdDPlEd+V0`7~E4z2=lSu z&x@GtNij(S-0bLBD=)_>G^5*6ydjUsqc?6SIlN6Hy3f9@#smPKx9Ak#f z%*>c%>kI>=X-Qjbg7nDN8HO-5#YFLCAQKrgFqnMF3lmE5A-E-NIEI0eYBgsJ=@*7C zMdmv+G{l8D%aS&U(LJeWn=?!=7#gfn6p;DO7(~#RvTBl?Yv?(GJEzYu&ISl%MLo$- z+9nk+<)92RjCSujnNmGHJsdAXCnFS@fU=hvCIo&uQ3{Mx{?QD}%K8J8Y~yQw9O-TV O0000xbt>Yk}?P6WKdEwqR%Q)hP0H zQEW6C$%c|-K}D1_O%stU%CZ0mA)NIh+!VZUZI>ZSLlU@t zty^8sW{vQ+SW)Ky&Ekj}JY-E0kSa)-5|VXE(G?Z8Iznxz33XuO2rm!JY}c7x4%9UD zf)_^EBeak;co3CzU0b&;MZ#F4f}BoEf;FtB1WnbjpbSeH4cnTMacD~yoX;{c9fvPI z-!5C55#Z=WNFSEfltVH$a9~NuNUA1aCuIq0ia5lQEj2?)mu*Yn!k2?<7qiByY+xjc zM2O?40##H+uu{M?oK}gTS!zng$VM3iJT}oC7Su7+iCf1ND*9f9=l)SM#%e4unGG>l z;%WwV@FMSqkha1!m*D5+4lepFmp2SI}Hs5*dULtzS)7hqNR4I@yk^D9+ zWKPt;0UfPCr2n(H#LI~f@yycFmzVheQF8-?g~loJu`^=aV%kX&|DCVayNlXU z7Y;oxUiO+RY3~s}pB#dS=hz#h(`eEC&wXz=MG$rhhDTi$i!;0bOe zkFH&OG`Fj-baZ6TzIO*tZ$7l{{_^7ayAPlf9-v^)Xx^axqbWIPfk2?{N@i{zv1VZcgP#tqGvChIyist i;rY*AerxxG#)|Zgp~;0?%5MDIDdfhp2k&^`@xKAxB0duU literal 642 zcmV-|0)737P)N2bZe?^J zG%hhNHDpIvQUCw~07*naR7gwhluK^HFc5}wy{aS5W9{ZaaTaKfj>gen9A^C^HK~A7FO$(Sop!s}0olbEUi-o>uv)K?F z4u^3Z7cfgFlgWd+Yc`uLmrFND)3T4?TdkIZ>5UMHiIN3htIy{MBeLJ`i6APIcQhI` zn@tC+ZD6KV9|!DqyPJ4|>JAvE*Xubr%Q8)y0P;M#Uhm}PQt%@Aw%ct7YtK5Ka!p{q zz{aaG%RE@SWkMvFNQ1?X$Kwz_olcCA)x_k}yfEWg#(~vpH3zG04vabN(^4=LW-yg$ z(`(x*vjTvEBKZa|HP-8Ox7!V2Bp$P}7QxXPihFHy$TqLf|nFnjdcUaeN# z9$E@g$P{6Ax7$$$RqPpA3lhL~yCtv1wdYQ!<6zxwaw8mF7&_FoDGO4Git9`1N`Mv6CY7>hoV z{Mm@BJ7ApZH_Yk;Sr{@aQuo5a+Ov))V9bbHWtMp`q*AJ;EP!FYd&5w`mNhN4%!t2#!&I}