From 264bea3c8b395bbf2ea58b1064b189bea4a1c25f Mon Sep 17 00:00:00 2001 From: Lorenzune Date: Mon, 16 Mar 2026 15:12:42 +0100 Subject: [PATCH 01/12] feat(wired): add antenna signals and selector-aware snapshots --- .../habbo/habbohotel/items/ItemManager.java | 1 + .../WiredConditionMatchStatePosition.java | 113 ++++---- .../wired/effects/WiredEffectMatchFurni.java | 139 ++++++---- .../wired/effects/WiredEffectSendSignal.java | 255 +++++++++++++----- .../selector/WiredEffectFurniByType.java | 18 +- .../triggers/WiredTriggerReceiveSignal.java | 119 +++++++- .../habbohotel/wired/core/WiredEngine.java | 50 ++-- .../wired/WiredTriggerSaveDataEvent.java | 22 +- .../wired/WiredTriggerSaveException.java | 7 + 9 files changed, 503 insertions(+), 221 deletions(-) create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/incoming/wired/WiredTriggerSaveException.java diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java index 50928f05..2a944f95 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java @@ -202,6 +202,7 @@ public class ItemManager { this.interactionsList.add(new ItemInteraction("random_state", InteractionRandomState.class)); this.interactionsList.add(new ItemInteraction("vendingmachine_no_sides", InteractionNoSidesVendingMachine.class)); this.interactionsList.add(new ItemInteraction("tile_walkmagic", InteractionTileWalkMagic.class)); + this.interactionsList.add(new ItemInteraction("antenna", InteractionDefault.class)); this.interactionsList.add(new ItemInteraction("game_timer", InteractionGameTimer.class)); diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionMatchStatePosition.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionMatchStatePosition.java index bc965875..7966d563 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionMatchStatePosition.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionMatchStatePosition.java @@ -19,9 +19,7 @@ import gnu.trove.set.hash.THashSet; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; -import java.util.Set; public class WiredConditionMatchStatePosition extends InteractionWiredCondition implements InteractionWiredMatchFurniSettings { public static final WiredConditionType type = WiredConditionType.MATCH_SSHOT; @@ -92,14 +90,12 @@ public class WiredConditionMatchStatePosition extends InteractionWiredCondition this.settings.clear(); - if (this.furniSource == WiredSourceUtil.SOURCE_SELECTED) { - for (int i = 0; i < count; i++) { - int itemId = settings.getFurniIds()[i]; - HabboItem item = room.getHabboItem(itemId); + for (int i = 0; i < count; i++) { + int itemId = settings.getFurniIds()[i]; + HabboItem item = room.getHabboItem(itemId); - if (item != null) - this.settings.add(new WiredMatchFurniSetting(item.getId(), item.getExtradata(), item.getRotation(), item.getX(), item.getY())); - } + if (item != null) + this.settings.add(new WiredMatchFurniSetting(item.getId(), item.getExtradata(), item.getRotation(), item.getX(), item.getY())); } return true; @@ -108,65 +104,71 @@ public class WiredConditionMatchStatePosition extends InteractionWiredCondition @Override public boolean evaluate(WiredContext ctx) { Room room = ctx.room(); + this.refresh(); + if (this.settings.isEmpty()) return true; - List targets = null; - Set targetIds = null; - if (this.furniSource != WiredSourceUtil.SOURCE_SELECTED) { - targets = WiredSourceUtil.resolveItems(ctx, this.furniSource, null); + List targets = WiredSourceUtil.resolveItems(ctx, this.furniSource, null); if (targets.isEmpty()) return false; - targetIds = new HashSet<>(); - for (HabboItem item : targets) { - if (item != null) targetIds.add(item.getId()); - } - if (targetIds.isEmpty()) return false; - } - THashSet toRemove = new THashSet<>(); - Set settingsIds = new HashSet<>(); + for (HabboItem item : targets) { + if (item == null) return false; + + WiredMatchFurniSetting setting = this.resolveSettingForTarget(room, item); + if (setting == null) { + return false; + } + + if (!this.matchesSetting(item, setting)) { + return false; + } + } + + return true; + } for (WiredMatchFurniSetting setting : this.settings) { - if (targetIds != null && !targetIds.contains(setting.item_id)) { - continue; - } HabboItem item = room.getHabboItem(setting.item_id); - - if (item != null) { - settingsIds.add(setting.item_id); - if (this.state) { - if (!item.getExtradata().equals(setting.state)) - return false; - } - - if (this.position) { - if (!(setting.x == item.getX() && setting.y == item.getY())) - return false; - } - - if (this.direction) { - if (setting.rotation != item.getRotation()) - return false; - } - } else { - toRemove.add(setting); - } - } - - if (targetIds != null && !settingsIds.containsAll(targetIds)) { - return false; - } - - if (!toRemove.isEmpty()) { - for (WiredMatchFurniSetting setting : toRemove) { - this.settings.remove(setting); - } + if (item == null) continue; + if (!this.matchesSetting(item, setting)) + return false; } return true; } + private WiredMatchFurniSetting resolveSettingForTarget(Room room, HabboItem target) { + WiredMatchFurniSetting fallback = null; + + for (WiredMatchFurniSetting setting : this.settings) { + HabboItem sourceItem = room.getHabboItem(setting.item_id); + if (sourceItem == null) continue; + if (sourceItem.getBaseItem().getId() != target.getBaseItem().getId()) continue; + + if (setting.state.equals(target.getExtradata())) { + return setting; + } + + if (fallback == null) { + fallback = setting; + } + } + + return fallback; + } + + private boolean matchesSetting(HabboItem item, WiredMatchFurniSetting setting) { + if (this.state && !item.getExtradata().equals(setting.state)) + return false; + + if (this.position && !(setting.x == item.getX() && setting.y == item.getY())) + return false; + + return !this.direction || setting.rotation == item.getRotation(); + } + @Deprecated @Override public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { @@ -214,9 +216,6 @@ public class WiredConditionMatchStatePosition extends InteractionWiredCondition this.position = data[4].equals("1"); this.furniSource = this.settings.isEmpty() ? WiredSourceUtil.SOURCE_TRIGGER : WiredSourceUtil.SOURCE_SELECTED; } - if (this.furniSource == WiredSourceUtil.SOURCE_TRIGGER && !this.settings.isEmpty()) { - this.furniSource = WiredSourceUtil.SOURCE_SELECTED; - } } @Override diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMatchFurni.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMatchFurni.java index bab1896a..90348f35 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMatchFurni.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMatchFurni.java @@ -50,6 +50,7 @@ public class WiredEffectMatchFurni extends InteractionWiredEffect implements Int @Override public void execute(WiredContext ctx) { Room room = ctx.room(); + this.refresh(); if(this.settings.isEmpty()) return; @@ -57,54 +58,80 @@ public class WiredEffectMatchFurni extends InteractionWiredEffect implements Int if (room.getLayout() == null) return; - java.util.Set allowedItemIds = null; - if (this.furniSource != WiredSourceUtil.SOURCE_SELECTED) { - allowedItemIds = new java.util.HashSet<>(); - for (HabboItem si : WiredSourceUtil.resolveItems(ctx, this.furniSource, null)) { - if (si != null) { - allowedItemIds.add(si.getId()); + if (this.furniSource == WiredSourceUtil.SOURCE_SELECTED) { + for (WiredMatchFurniSetting setting : this.settings) { + HabboItem item = room.getHabboItem(setting.item_id); + if (item != null) { + this.applySetting(room, item, setting); } } - if (allowedItemIds.isEmpty()) { - return; + + return; + } + + List targets = WiredSourceUtil.resolveItems(ctx, this.furniSource, null); + if (targets.isEmpty()) { + return; + } + + for (HabboItem item : targets) { + if (item == null) continue; + + WiredMatchFurniSetting setting = this.resolveSettingForTarget(room, item); + if (setting == null) continue; + + this.applySetting(room, item, setting); + } + } + + private WiredMatchFurniSetting resolveSettingForTarget(Room room, HabboItem target) { + WiredMatchFurniSetting fallback = null; + + for (WiredMatchFurniSetting setting : this.settings) { + HabboItem sourceItem = room.getHabboItem(setting.item_id); + if (sourceItem == null) continue; + if (sourceItem.getBaseItem().getId() != target.getBaseItem().getId()) continue; + + if (setting.state.equals(target.getExtradata())) { + return setting; + } + + if (fallback == null) { + fallback = setting; } } - for (WiredMatchFurniSetting setting : this.settings) { - if (allowedItemIds != null && !allowedItemIds.contains(setting.item_id)) continue; + return fallback; + } - HabboItem item = room.getHabboItem(setting.item_id); - if (item != null) { - if (this.state && (this.checkForWiredResetPermission && item.allowWiredResetState())) { - if (!setting.state.equals(" ") && !item.getExtradata().equals(setting.state)) { - item.setExtradata(setting.state); - room.updateItemState(item); + private void applySetting(Room room, HabboItem item, WiredMatchFurniSetting setting) { + if (this.state && (this.checkForWiredResetPermission && item.allowWiredResetState())) { + if (!setting.state.equals(" ") && !item.getExtradata().equals(setting.state)) { + item.setExtradata(setting.state); + room.updateItemState(item); + } + } + + RoomTile oldLocation = room.getLayout().getTile(item.getX(), item.getY()); + if (oldLocation == null) return; + double oldZ = item.getZ(); + + if(this.direction && !this.position) { + if(item.getRotation() != setting.rotation && room.furnitureFitsAt(oldLocation, item, setting.rotation, false) == FurnitureMovementError.NONE) { + room.moveFurniTo(item, oldLocation, setting.rotation, null, true); + } + } + else if(this.position) { + boolean slideAnimation = !this.direction || item.getRotation() == setting.rotation; + RoomTile newLocation = room.getLayout().getTile((short) setting.x, (short) setting.y); + int newRotation = this.direction ? setting.rotation : item.getRotation(); + + if(newLocation != null && newLocation.state != RoomTileState.INVALID && (newLocation != oldLocation || newRotation != item.getRotation()) && room.furnitureFitsAt(newLocation, item, newRotation, true) == FurnitureMovementError.NONE) { + if(room.moveFurniTo(item, newLocation, newRotation, null, !slideAnimation) == FurnitureMovementError.NONE) { + if(slideAnimation) { + room.sendComposer(new FloorItemOnRollerComposer(item, null, oldLocation, oldZ, newLocation, item.getZ(), 0, room).compose()); } } - - RoomTile oldLocation = room.getLayout().getTile(item.getX(), item.getY()); - if (oldLocation == null) continue; - double oldZ = item.getZ(); - - if(this.direction && !this.position) { - if(item.getRotation() != setting.rotation && room.furnitureFitsAt(oldLocation, item, setting.rotation, false) == FurnitureMovementError.NONE) { - room.moveFurniTo(item, oldLocation, setting.rotation, null, true); - } - } - else if(this.position) { - boolean slideAnimation = !this.direction || item.getRotation() == setting.rotation; - RoomTile newLocation = room.getLayout().getTile((short) setting.x, (short) setting.y); - int newRotation = this.direction ? setting.rotation : item.getRotation(); - - if(newLocation != null && newLocation.state != RoomTileState.INVALID && (newLocation != oldLocation || newRotation != item.getRotation()) && room.furnitureFitsAt(newLocation, item, newRotation, true) == FurnitureMovementError.NONE) { - if(room.moveFurniTo(item, newLocation, newRotation, null, !slideAnimation) == FurnitureMovementError.NONE) { - if(slideAnimation) { - room.sendComposer(new FloorItemOnRollerComposer(item, null, oldLocation, oldZ, newLocation, item.getZ(), 0, room).compose()); - } - } - } - } - } } } @@ -134,9 +161,6 @@ public class WiredEffectMatchFurni extends InteractionWiredEffect implements Int this.settings.clear(); this.settings.addAll(data.items); this.furniSource = data.furniSource; - if (this.furniSource == WiredSourceUtil.SOURCE_TRIGGER && !this.settings.isEmpty()) { - this.furniSource = WiredSourceUtil.SOURCE_SELECTED; - } } else { String[] data = set.getString("wired_data").split(":"); @@ -221,23 +245,22 @@ public class WiredEffectMatchFurni extends InteractionWiredEffect implements Int if (room == null) throw new WiredSaveException("Trying to save wired in unloaded room"); + int itemsCount = settings.getFurniIds().length; + + if(itemsCount > Emulator.getConfig().getInt("hotel.wired.furni.selection.count")) { + throw new WiredSaveException("Too many furni selected"); + } + List newSettings = new ArrayList<>(); - if (this.furniSource == WiredSourceUtil.SOURCE_SELECTED) { - int itemsCount = settings.getFurniIds().length; - if(itemsCount > Emulator.getConfig().getInt("hotel.wired.furni.selection.count")) { - throw new WiredSaveException("Too many furni selected"); - } + for (int i = 0; i < itemsCount; i++) { + int itemId = settings.getFurniIds()[i]; + HabboItem it = room.getHabboItem(itemId); - for (int i = 0; i < itemsCount; i++) { - int itemId = settings.getFurniIds()[i]; - HabboItem it = room.getHabboItem(itemId); + if(it == null) + throw new WiredSaveException(String.format("Item %s not found", itemId)); - if(it == null) - throw new WiredSaveException(String.format("Item %s not found", itemId)); - - newSettings.add(new WiredMatchFurniSetting(it.getId(), this.checkForWiredResetPermission && it.allowWiredResetState() ? it.getExtradata() : " ", it.getRotation(), it.getX(), it.getY())); - } + newSettings.add(new WiredMatchFurniSetting(it.getId(), this.checkForWiredResetPermission && it.allowWiredResetState() ? it.getExtradata() : " ", it.getRotation(), it.getX(), it.getY())); } int delay = settings.getDelay(); @@ -249,9 +272,7 @@ public class WiredEffectMatchFurni extends InteractionWiredEffect implements Int this.direction = setDirection; this.position = setPosition; this.settings.clear(); - if (this.furniSource == WiredSourceUtil.SOURCE_SELECTED) { - this.settings.addAll(newSettings); - } + this.settings.addAll(newSettings); this.setDelay(delay); return true; diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectSendSignal.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectSendSignal.java index 66a4429d..82bdd99c 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectSendSignal.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectSendSignal.java @@ -24,6 +24,7 @@ import org.slf4j.LoggerFactory; import java.sql.ResultSet; import java.sql.SQLException; import java.util.*; +import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; @@ -36,14 +37,16 @@ public class WiredEffectSendSignal extends InteractionWiredEffect { private static final int ANTENNA_PICKED = 0; private static final int ANTENNA_TRIGGER = 1; - - private static final int FORWARD_NONE = 0; - private static final int FORWARD_TRIGGER = 1; + private static final String ANTENNA_INTERACTION = "antenna"; + private static final String FORWARD_ITEM_SPLIT_REGEX = "[;,\\t]"; + private static final long ANTENNA_PULSE_MS = 300L; + private static final ConcurrentHashMap ANTENNA_PULSE_TOKENS = new ConcurrentHashMap<>(); private THashSet items; + private THashSet forwardItems; private int antennaSource = ANTENNA_PICKED; - private int furniForward = FORWARD_NONE; - private int userForward = FORWARD_NONE; + private int furniForward = WiredSourceUtil.SOURCE_TRIGGER; + private int userForward = WiredSourceUtil.SOURCE_TRIGGER; private boolean signalPerFurni = false; private boolean signalPerUser = false; private int channel = 0; @@ -51,11 +54,13 @@ public class WiredEffectSendSignal extends InteractionWiredEffect { public WiredEffectSendSignal(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); this.items = new THashSet<>(); + this.forwardItems = new THashSet<>(); } public WiredEffectSendSignal(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); this.items = new THashSet<>(); + this.forwardItems = new THashSet<>(); } @Override @@ -77,73 +82,68 @@ public class WiredEffectSendSignal extends InteractionWiredEffect { .map(Collections::singleton) .orElse(Collections.emptySet()); } else { - antennas = ctx.targets().isItemsModifiedBySelector() - ? new ArrayList<>(ctx.targets().items()) - : new ArrayList<>(this.items); + Collection baseAntennas = new ArrayList<>(this.items); + + if (baseAntennas.isEmpty() && antennaSource > ANTENNA_TRIGGER) { + HabboItem antenna = room.getHabboItem(antennaSource); + antennas = (antenna != null) ? Collections.singleton(antenna) : Collections.emptySet(); + } else { + antennas = baseAntennas; + } } - if (antennas.isEmpty()) { + List resolvedAntennas = antennas.stream() + .filter(Objects::nonNull) + .filter(this::isAntennaItem) + .collect(Collectors.toList()); + + if (resolvedAntennas.isEmpty()) { LOGGER.debug("[SendSignal] No antennas resolved, aborting. antennaSource={}, selectorModified={}", antennaSource, ctx.targets().isItemsModifiedBySelector()); return; } - LOGGER.debug("[SendSignal] Resolved {} antenna(s), firing signals", antennas.size()); + LOGGER.debug("[SendSignal] Resolved {} antenna(s), firing signals", resolvedAntennas.size()); - RoomUnit forwardedUser = null; - if (userForward == FORWARD_TRIGGER) { - forwardedUser = ctx.actor().orElse(null); - } + List forwardedUsers = WiredSourceUtil.resolveUsers(ctx, this.userForward); + List forwardedFurni = WiredSourceUtil.resolveItems(ctx, this.furniForward, this.forwardItems); - HabboItem forwardedFurni = null; - if (furniForward == FORWARD_TRIGGER) { - forwardedFurni = ctx.sourceItem().orElse(null); - } + RoomUnit defaultUser = forwardedUsers.isEmpty() ? null : forwardedUsers.get(0); + HabboItem defaultFurni = forwardedFurni.isEmpty() ? null : forwardedFurni.get(0); - Set visitedTiles = new HashSet<>(); - List antennaTiles = new ArrayList<>(); - for (HabboItem antenna : antennas) { - if (antenna == null) continue; - String key = antenna.getX() + "," + antenna.getY(); - if (visitedTiles.add(key)) { - RoomTile tile = room.getLayout().getTile(antenna.getX(), antenna.getY()); - if (tile != null) { - antennaTiles.add(tile); - } - } - } + Collection usersToSend = (signalPerUser && !forwardedUsers.isEmpty()) + ? forwardedUsers + : Collections.singletonList(defaultUser); + + Collection furniToSend = (signalPerFurni && !forwardedFurni.isEmpty()) + ? forwardedFurni + : Collections.singletonList(defaultFurni); int nextDepth = currentDepth + 1; - if (signalPerFurni || signalPerUser) { - if (signalPerFurni) { - for (RoomTile tile : antennaTiles) { - fireSignalAtTile(room, tile, forwardedUser, forwardedFurni, nextDepth); + for (RoomUnit user : usersToSend) { + for (HabboItem sourceItem : furniToSend) { + for (HabboItem antenna : resolvedAntennas) { + fireSignalAtAntenna(room, antenna, user, sourceItem, nextDepth); } } - if (signalPerUser && ctx.targets().hasUsers()) { - for (RoomUnit user : ctx.targets().users()) { - for (RoomTile tile : antennaTiles) { - fireSignalAtTile(room, tile, user, forwardedFurni, nextDepth); - } - } - } else if (!signalPerFurni) { - for (RoomTile tile : antennaTiles) { - fireSignalAtTile(room, tile, forwardedUser, forwardedFurni, nextDepth); - } - } - } else { - for (RoomTile tile : antennaTiles) { - fireSignalAtTile(room, tile, forwardedUser, forwardedFurni, nextDepth); - } } } - private void fireSignalAtTile(Room room, RoomTile tile, RoomUnit actor, HabboItem sourceItem, int depth) { - LOGGER.debug("[SendSignal] fireSignalAtTile: tile={},{} depth={} channel={} actor={} sourceItem={}", tile.x, tile.y, depth, channel, actor != null ? actor.getId() : "null", sourceItem != null ? sourceItem.getId() : "null"); + private void fireSignalAtAntenna(Room room, HabboItem antenna, RoomUnit actor, HabboItem sourceItem, int depth) { + if (antenna == null) return; + RoomTile tile = room.getLayout().getTile(antenna.getX(), antenna.getY()); + if (tile == null) return; + + pulseAntenna(room, antenna); + + int signalChannel = antenna.getId(); + + LOGGER.debug("[SendSignal] fireSignalAtAntenna: antennaId={} tile={},{} depth={} channel={} actor={} sourceItem={}", + signalChannel, tile.x, tile.y, depth, signalChannel, actor != null ? actor.getId() : "null", sourceItem != null ? sourceItem.getId() : "null"); WiredEvent.Builder builder = WiredEvent.builder(WiredEvent.Type.SIGNAL_RECEIVED, room) .tile(tile) .callStackDepth(depth) - .signalChannel(this.channel) + .signalChannel(signalChannel) .triggeredByEffect(true); if (actor != null) builder.actor(actor); @@ -153,6 +153,33 @@ public class WiredEffectSendSignal extends InteractionWiredEffect { LOGGER.debug("[SendSignal] handleEvent returned: {}", result); } + private void pulseAntenna(Room room, HabboItem antenna) { + if (room == null || antenna == null || antenna.getBaseItem() == null) return; + if (antenna.getBaseItem().getStateCount() <= 1) return; + + final long token = System.currentTimeMillis(); + ANTENNA_PULSE_TOKENS.put(antenna.getId(), token); + + if ("1".equals(antenna.getExtradata())) { + antenna.setExtradata("0"); + room.updateItemState(antenna); + } + + antenna.setExtradata("1"); + room.updateItemState(antenna); + + Emulator.getThreading().run(() -> { + if (!room.isLoaded()) return; + + Long currentToken = ANTENNA_PULSE_TOKENS.get(antenna.getId()); + if (currentToken == null || currentToken.longValue() != token) return; + + antenna.setExtradata("0"); + room.updateItemState(antenna); + ANTENNA_PULSE_TOKENS.remove(antenna.getId(), token); + }, ANTENNA_PULSE_MS); + } + @Override public void serializeWiredData(ServerMessage message, Room room) { List itemsSnapshot = new ArrayList<>(this.items); @@ -161,6 +188,16 @@ public class WiredEffectSendSignal extends InteractionWiredEffect { item.getRoomId() != this.getRoomId() || room.getHabboItem(item.getId()) == null); this.items.retainAll(itemsSnapshot); + List forwardSnapshot = new ArrayList<>(this.forwardItems); + forwardSnapshot.removeIf(item -> + item.getRoomId() != this.getRoomId() || room.getHabboItem(item.getId()) == null); + this.forwardItems.retainAll(forwardSnapshot); + + String forwardString = forwardSnapshot.stream() + .filter(Objects::nonNull) + .map(item -> Integer.toString(item.getId())) + .collect(Collectors.joining(";")); + message.appendBoolean(false); message.appendInt(WiredManager.MAXIMUM_FURNI_SELECTION); message.appendInt(itemsSnapshot.size()); @@ -169,7 +206,7 @@ public class WiredEffectSendSignal extends InteractionWiredEffect { } message.appendInt(this.getBaseItem().getSpriteId()); message.appendInt(this.getId()); - message.appendString(""); + message.appendString(forwardString); message.appendInt(6); message.appendInt(antennaSource); @@ -219,6 +256,12 @@ public class WiredEffectSendSignal extends InteractionWiredEffect { newItems.add(it); } + for (HabboItem receiver : newItems) { + if (!isAntennaItem(receiver)) { + throw new WiredSaveException("Only antenna furni can be selected"); + } + } + if (room != null && room.getRoomSpecialTypes() != null) { for (HabboItem receiver : newItems) { int count = room.getRoomSpecialTypes().countSendersTargetingReceiver(receiver.getId(), this); @@ -234,18 +277,36 @@ public class WiredEffectSendSignal extends InteractionWiredEffect { } int[] params = settings.getIntParams(); - this.antennaSource = params.length > 0 ? params[0] : ANTENNA_PICKED; - this.furniForward = params.length > 1 ? params[1] : FORWARD_NONE; - this.userForward = params.length > 2 ? params[2] : FORWARD_NONE; + int requestedAntennaSource = params.length > 0 ? params[0] : ANTENNA_PICKED; + this.furniForward = normalizeSource(params.length > 1 ? params[1] : WiredSourceUtil.SOURCE_TRIGGER); + this.userForward = normalizeSource(params.length > 2 ? params[2] : WiredSourceUtil.SOURCE_TRIGGER); this.signalPerFurni = params.length > 3 && params[3] == 1; this.signalPerUser = params.length > 4 && params[4] == 1; this.channel = params.length > 5 ? params[5] : 0; + this.antennaSource = requestedAntennaSource; + if (!newItems.isEmpty()) { + this.antennaSource = newItems.get(0).getId(); + } + + List newForwardItems = new ArrayList<>(); + if (this.furniForward == WiredSourceUtil.SOURCE_SELECTED && room != null) { + newForwardItems = parseForwardItems(settings.getStringParam(), room); + } + if (newForwardItems.size() > Emulator.getConfig().getInt("hotel.wired.furni.selection.count")) { + throw new WiredSaveException("Too many furni selected"); + } + this.items.clear(); this.items.addAll(newItems); + + this.forwardItems.clear(); + if (this.furniForward == WiredSourceUtil.SOURCE_SELECTED) { + this.forwardItems.addAll(newForwardItems); + } this.setDelay(delay); - LOGGER.debug("[SendSignal] saveData: antennaSource={}, furniForward={}, userForward={}, signalPerFurni={}, signalPerUser={}, channel={}, items={}", - antennaSource, furniForward, userForward, signalPerFurni, signalPerUser, channel, items.size()); + LOGGER.debug("[SendSignal] saveData: antennaSource={}, furniForward={}, userForward={}, signalPerFurni={}, signalPerUser={}, channel={}, items={}, forwardItems={}", + antennaSource, furniForward, userForward, signalPerFurni, signalPerUser, channel, items.size(), forwardItems.size()); return true; } @@ -259,9 +320,11 @@ public class WiredEffectSendSignal extends InteractionWiredEffect { @Override public String getWiredData() { List itemsSnapshot = new ArrayList<>(this.items); + List forwardSnapshot = new ArrayList<>(this.forwardItems); return WiredManager.getGson().toJson(new JsonData( this.getDelay(), itemsSnapshot.stream().map(HabboItem::getId).collect(Collectors.toList()), + forwardSnapshot.stream().map(HabboItem::getId).collect(Collectors.toList()), antennaSource, furniForward, userForward, signalPerFurni, signalPerUser, channel )); } @@ -269,14 +332,15 @@ public class WiredEffectSendSignal extends InteractionWiredEffect { @Override public void loadWiredData(ResultSet set, Room room) throws SQLException { this.items = new THashSet<>(); + this.forwardItems = new THashSet<>(); String wiredData = set.getString("wired_data"); if (wiredData != null && wiredData.startsWith("{")) { JsonData data = WiredManager.getGson().fromJson(wiredData, JsonData.class); this.setDelay(data.delay); this.antennaSource = data.antennaSource; - this.furniForward = data.furniForward; - this.userForward = data.userForward; + this.furniForward = normalizeSource(data.furniForward); + this.userForward = normalizeSource(data.userForward); this.signalPerFurni = data.signalPerFurni; this.signalPerUser = data.signalPerUser; this.channel = data.channel; @@ -286,21 +350,84 @@ public class WiredEffectSendSignal extends InteractionWiredEffect { if (item != null) this.items.add(item); } } + if (data.forwardItemIds != null) { + for (Integer id : data.forwardItemIds) { + HabboItem item = room.getHabboItem(id); + if (item != null) this.forwardItems.add(item); + } + } + + if (this.antennaSource <= ANTENNA_TRIGGER && !this.items.isEmpty()) { + HabboItem first = this.items.iterator().next(); + if (first != null) this.antennaSource = first.getId(); + } } } @Override public void onPickUp() { this.items.clear(); + this.forwardItems.clear(); this.antennaSource = ANTENNA_PICKED; - this.furniForward = FORWARD_NONE; - this.userForward = FORWARD_NONE; + this.furniForward = WiredSourceUtil.SOURCE_TRIGGER; + this.userForward = WiredSourceUtil.SOURCE_TRIGGER; this.signalPerFurni = false; this.signalPerUser = false; this.channel = 0; this.setDelay(0); } + private int normalizeSource(int source) { + if (source == 1) return WiredSourceUtil.SOURCE_TRIGGER; + if (source == WiredSourceUtil.SOURCE_TRIGGER + || source == WiredSourceUtil.SOURCE_SELECTED + || source == WiredSourceUtil.SOURCE_SELECTOR + || source == WiredSourceUtil.SOURCE_SIGNAL) { + return source; + } + return WiredSourceUtil.SOURCE_TRIGGER; + } + + private List parseForwardItems(String data, Room room) throws WiredSaveException { + List results = new ArrayList<>(); + if (data == null || data.trim().isEmpty() || room == null) return results; + + Set seen = new HashSet<>(); + String[] parts = data.split(FORWARD_ITEM_SPLIT_REGEX); + + for (String part : parts) { + if (part == null) continue; + + String trimmed = part.trim(); + if (trimmed.isEmpty()) continue; + + int itemId; + try { + itemId = Integer.parseInt(trimmed); + } catch (NumberFormatException e) { + continue; + } + + if (itemId <= 0 || !seen.add(itemId)) continue; + + HabboItem item = room.getHabboItem(itemId); + if (item == null) throw new WiredSaveException(String.format("Item %s not found", itemId)); + + results.add(item); + } + + return results; + } + + private boolean isAntennaItem(HabboItem item) { + if (item == null || item.getBaseItem() == null || item.getBaseItem().getInteractionType() == null) return false; + String interaction = item.getBaseItem().getInteractionType().getName(); + if (interaction == null) return false; + + String normalized = interaction.toLowerCase(); + return normalized.equals(ANTENNA_INTERACTION); + } + @Override public WiredEffectType getType() { return type; @@ -328,6 +455,7 @@ public class WiredEffectSendSignal extends InteractionWiredEffect { static class JsonData { int delay; List itemIds; + List forwardItemIds; int antennaSource; int furniForward; int userForward; @@ -335,10 +463,11 @@ public class WiredEffectSendSignal extends InteractionWiredEffect { boolean signalPerUser; int channel; - public JsonData(int delay, List itemIds, int antennaSource, int furniForward, + public JsonData(int delay, List itemIds, List forwardItemIds, int antennaSource, int furniForward, int userForward, boolean signalPerFurni, boolean signalPerUser, int channel) { this.delay = delay; this.itemIds = itemIds; + this.forwardItemIds = forwardItemIds; this.antennaSource = antennaSource; this.furniForward = furniForward; this.userForward = userForward; diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/selector/WiredEffectFurniByType.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/selector/WiredEffectFurniByType.java index 5edfed63..14bae162 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/selector/WiredEffectFurniByType.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/selector/WiredEffectFurniByType.java @@ -112,17 +112,17 @@ public class WiredEffectFurniByType extends InteractionWiredEffect { @Override public boolean saveData(WiredSettings settings, GameClient gameClient) throws WiredSaveException { int[] params = settings.getIntParams(); - if (params == null || params.length < 1) { - throw new WiredSaveException("wf_slc_furni_bytype: intParams must have at least 1 element"); + if (params == null || params.length < 4) { + throw new WiredSaveException("wf_slc_furni_bytype: intParams must have at least 4 elements"); } - this.sourceType = params[0]; + this.sourceType = SOURCE_FURNI_PICKED; this.matchState = params.length > 1 && params[1] == 1; this.filterExisting = params.length > 2 && params[2] == 1; this.invert = params.length > 3 && params[3] == 1; this.pickedFurniIds = new ArrayList<>(); - if (this.sourceType == SOURCE_FURNI_PICKED && settings.getFurniIds() != null) { + if (settings.getFurniIds() != null) { for (int id : settings.getFurniIds()) { if (pickedFurniIds.size() >= MAX_PICKED_FURNI) break; pickedFurniIds.add(id); @@ -135,12 +135,10 @@ public class WiredEffectFurniByType extends InteractionWiredEffect { @Override public void serializeWiredData(ServerMessage message, Room room) { - boolean pickMode = (sourceType == SOURCE_FURNI_PICKED); + message.appendBoolean(true); + message.appendInt(MAX_PICKED_FURNI); - message.appendBoolean(pickMode); - message.appendInt(pickMode ? MAX_PICKED_FURNI : 0); - - if (pickMode && !pickedFurniIds.isEmpty()) { + if (!pickedFurniIds.isEmpty()) { message.appendInt(pickedFurniIds.size()); pickedFurniIds.forEach(message::appendInt); } else { @@ -152,7 +150,7 @@ public class WiredEffectFurniByType extends InteractionWiredEffect { message.appendString(""); message.appendInt(4); - message.appendInt(sourceType); + message.appendInt(SOURCE_FURNI_PICKED); message.appendInt(matchState ? 1 : 0); message.appendInt(filterExisting ? 1 : 0); message.appendInt(invert ? 1 : 0); diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerReceiveSignal.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerReceiveSignal.java index c2e96e93..13463c7b 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerReceiveSignal.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerReceiveSignal.java @@ -1,5 +1,6 @@ package com.eu.habbo.habbohotel.items.interactions.wired.triggers; +import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; @@ -11,27 +12,49 @@ import com.eu.habbo.habbohotel.wired.WiredTriggerType; import com.eu.habbo.habbohotel.wired.core.WiredEvent; import com.eu.habbo.habbohotel.wired.core.WiredManager; import com.eu.habbo.messages.ServerMessage; +import com.eu.habbo.messages.incoming.wired.WiredTriggerSaveException; +import com.eu.habbo.messages.outgoing.rooms.items.ItemStateComposer; +import gnu.trove.set.hash.THashSet; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.List; +import java.util.concurrent.atomic.AtomicLong; +import java.util.stream.Collectors; public class WiredTriggerReceiveSignal extends InteractionWiredTrigger { public static final WiredTriggerType type = WiredTriggerType.RECEIVE_SIGNAL; + private static final String ANTENNA_INTERACTION = "antenna"; + private static final long ACTIVATION_PULSE_MS = 300L; + private int channel = 0; // signal channel (0-based) + private THashSet items; + private final AtomicLong activationToken = new AtomicLong(); public WiredTriggerReceiveSignal(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); + this.items = new THashSet<>(); } public WiredTriggerReceiveSignal(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); + this.items = new THashSet<>(); } @Override public boolean matches(HabboItem triggerItem, WiredEvent event) { - return event.getType() == WiredEvent.Type.SIGNAL_RECEIVED - && event.getSignalChannel() == this.channel; + if (event.getType() != WiredEvent.Type.SIGNAL_RECEIVED) return false; + + if (!this.items.isEmpty()) { + int signalChannel = event.getSignalChannel(); + for (HabboItem antenna : this.items) { + if (antenna != null && antenna.getId() == signalChannel) return true; + } + return false; + } + + return event.getSignalChannel() == this.channel; } public int getChannel() { @@ -59,14 +82,33 @@ public class WiredTriggerReceiveSignal extends InteractionWiredTrigger { int senderCount = 0; try { if (room != null && room.getRoomSpecialTypes() != null) { - senderCount = room.getRoomSpecialTypes().countSendersTargetingReceiver(this.getId()); + if (!this.items.isEmpty()) { + for (HabboItem item : this.items) { + senderCount += room.getRoomSpecialTypes().countSendersTargetingReceiver(item.getId()); + } + } else { + senderCount = room.getRoomSpecialTypes().countSendersTargetingReceiver(this.getId()); + } } } catch (Exception e) { } + THashSet itemsToRemove = new THashSet<>(); + for (HabboItem item : this.items) { + if (item.getRoomId() != this.getRoomId() || room.getHabboItem(item.getId()) == null) { + itemsToRemove.add(item); + } + } + for (HabboItem item : itemsToRemove) { + this.items.remove(item); + } + message.appendBoolean(false); - message.appendInt(0); - message.appendInt(0); + message.appendInt(WiredManager.MAXIMUM_FURNI_SELECTION); + message.appendInt(this.items.size()); + for (HabboItem item : this.items) { + message.appendInt(item.getId()); + } message.appendInt(this.getBaseItem().getSpriteId()); message.appendInt(this.getId()); message.appendString(""); @@ -82,37 +124,100 @@ public class WiredTriggerReceiveSignal extends InteractionWiredTrigger { @Override public boolean saveData(WiredSettings settings) { + this.items.clear(); + + Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()); + int count = settings.getFurniIds().length; + + for (int i = 0; i < count; i++) { + HabboItem item = room.getHabboItem(settings.getFurniIds()[i]); + if (item == null) continue; + if (!isAntennaItem(item)) throw new WiredTriggerSaveException("wiredfurni.error.require_antenna_furni"); + this.items.add(item); + } + int[] params = settings.getIntParams(); this.channel = params.length > 0 ? params[0] : 0; return true; } + @Override + public void activateBox(Room room, RoomUnit roomUnit, long millis) { + if (roomUnit != null) { + this.addUserExecutionCache(roomUnit.getId(), millis); + } + + if (room == null || room.isHideWired() || this.getBaseItem().getStateCount() <= 1) { + return; + } + + final long token = this.activationToken.incrementAndGet(); + + if ("1".equals(this.getExtradata())) { + this.setExtradata("0"); + room.sendComposer(new ItemStateComposer(this).compose()); + } + + this.setExtradata("1"); + room.sendComposer(new ItemStateComposer(this).compose()); + + Emulator.getThreading().run(() -> { + if (!room.isLoaded()) return; + if (this.activationToken.get() != token) return; + + this.setExtradata("0"); + room.sendComposer(new ItemStateComposer(this).compose()); + }, ACTIVATION_PULSE_MS); + } + @Override public String getWiredData() { - return WiredManager.getGson().toJson(new JsonData(channel)); + return WiredManager.getGson().toJson(new JsonData( + channel, + this.items.stream().map(HabboItem::getId).collect(Collectors.toList()) + )); } @Override public void loadWiredData(ResultSet set, Room room) throws SQLException { + this.items = new THashSet<>(); String wiredData = set.getString("wired_data"); if (wiredData != null && wiredData.startsWith("{")) { JsonData data = WiredManager.getGson().fromJson(wiredData, JsonData.class); this.channel = data.channel; + if (data.itemIds != null) { + for (Integer id : data.itemIds) { + HabboItem item = room.getHabboItem(id); + if (item != null) this.items.add(item); + } + } } } @Override public void onPickUp() { this.channel = 0; + this.items.clear(); + } + + private boolean isAntennaItem(HabboItem item) { + if (item == null || item.getBaseItem() == null || item.getBaseItem().getInteractionType() == null) return false; + String interaction = item.getBaseItem().getInteractionType().getName(); + if (interaction == null) return false; + + String normalized = interaction.toLowerCase(); + return normalized.equals(ANTENNA_INTERACTION); } static class JsonData { int channel; + List itemIds; public JsonData() {} - public JsonData(int channel) { + public JsonData(int channel, List itemIds) { this.channel = channel; + this.itemIds = itemIds; } } } diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredEngine.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredEngine.java index 28300ca6..0cc66859 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredEngine.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredEngine.java @@ -214,24 +214,16 @@ public final class WiredEngine { // Initial step for trigger state.step(); - // Activate the trigger box animation - if (stack.triggerItem() instanceof InteractionWiredTrigger) { - InteractionWiredTrigger trigger = (InteractionWiredTrigger) stack.triggerItem(); - trigger.activateBox(room, event.getActor().orElse(null), currentTime); - } - debug(room, "Trigger matched: {} at item {} (conditions: {}, effects: {})", event.getType(), stack.triggerItem() != null ? stack.triggerItem().getId() : "null", stack.conditions().size(), stack.effects().size()); - - // Activate extras (for their animation) - activateExtras(room, stack.triggerItem(), event.getActor().orElse(null), currentTime); // Run selectors before conditions so targets are available + List executedSelectors = Collections.emptyList(); if (stack.hasEffects()) { - executeSelectors(stack, ctx, currentTime); + executedSelectors = executeSelectors(stack, ctx); } // Evaluate conditions @@ -253,6 +245,17 @@ public final class WiredEngine { return false; } + RoomUnit actor = event.getActor().orElse(null); + + // Only show the trigger/selector activation when the stack is actually allowed to continue. + if (stack.triggerItem() instanceof InteractionWiredTrigger) { + InteractionWiredTrigger trigger = (InteractionWiredTrigger) stack.triggerItem(); + trigger.activateBox(room, actor, currentTime); + } + + activateExtras(room, stack.triggerItem(), actor, currentTime); + finalizeSelectors(executedSelectors, ctx, currentTime); + // Execute effects if (stack.hasEffects()) { executeEffects(stack, ctx, currentTime); @@ -420,9 +423,11 @@ public final class WiredEngine { /** * Execute selector effects before conditions so ctx.targets() is populated. */ - private void executeSelectors(WiredStack stack, WiredContext ctx, long currentTime) { + private List executeSelectors(WiredStack stack, WiredContext ctx) { List effects = stack.effects(); - if (effects.isEmpty()) return; + if (effects.isEmpty()) return Collections.emptyList(); + + List executedSelectors = new ArrayList<>(); for (IWiredEffect effect : effects) { if (!effect.isSelector()) continue; @@ -433,16 +438,29 @@ public final class WiredEngine { ctx.state().step(); try { effect.execute(ctx); - if (effect instanceof InteractionWiredEffect) { - InteractionWiredEffect wiredEffect = (InteractionWiredEffect) effect; - wiredEffect.setCooldown(currentTime); - wiredEffect.activateBox(ctx.room(), ctx.actor().orElse(null), currentTime); + executedSelectors.add((InteractionWiredEffect) effect); } } catch (Exception e) { LOGGER.warn("Error executing selector: {}", e.getMessage()); } } + + return executedSelectors; + } + + private void finalizeSelectors(List executedSelectors, WiredContext ctx, long currentTime) { + if (executedSelectors == null || executedSelectors.isEmpty()) { + return; + } + + Room room = ctx.room(); + RoomUnit actor = ctx.actor().orElse(null); + + for (InteractionWiredEffect wiredEffect : executedSelectors) { + wiredEffect.setCooldown(currentTime); + wiredEffect.activateBox(room, actor, currentTime); + } } /** diff --git a/Emulator/src/main/java/com/eu/habbo/messages/incoming/wired/WiredTriggerSaveDataEvent.java b/Emulator/src/main/java/com/eu/habbo/messages/incoming/wired/WiredTriggerSaveDataEvent.java index 83da31e5..bf27dc0e 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/incoming/wired/WiredTriggerSaveDataEvent.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/incoming/wired/WiredTriggerSaveDataEvent.java @@ -34,17 +34,21 @@ public class WiredTriggerSaveDataEvent extends MessageHandler { if (saveMethod.get().getParameterTypes()[0] == WiredSettings.class) { WiredSettings settings = InteractionWired.readSettings(this.packet, false); - if (trigger.saveData(settings)) { - this.client.sendResponse(new WiredSavedComposer()); + try { + if (trigger.saveData(settings)) { + this.client.sendResponse(new WiredSavedComposer()); - trigger.needsUpdate(true); + trigger.needsUpdate(true); - Emulator.getThreading().run(trigger); - - // Invalidate wired cache when trigger is saved - WiredManager.invalidateRoom(room); - } else { - this.client.sendResponse(new UpdateFailedComposer("There was an error while saving that trigger")); + Emulator.getThreading().run(trigger); + + // Invalidate wired cache when trigger is saved + WiredManager.invalidateRoom(room); + } else { + this.client.sendResponse(new UpdateFailedComposer("There was an error while saving that trigger")); + } + } catch (WiredTriggerSaveException e) { + this.client.sendResponse(new UpdateFailedComposer(e.getMessage())); } } else { if ((boolean) saveMethod.get().invoke(trigger, this.packet)) { diff --git a/Emulator/src/main/java/com/eu/habbo/messages/incoming/wired/WiredTriggerSaveException.java b/Emulator/src/main/java/com/eu/habbo/messages/incoming/wired/WiredTriggerSaveException.java new file mode 100644 index 00000000..63fc33a2 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/messages/incoming/wired/WiredTriggerSaveException.java @@ -0,0 +1,7 @@ +package com.eu.habbo.messages.incoming.wired; + +public class WiredTriggerSaveException extends RuntimeException { + public WiredTriggerSaveException(String message) { + super(message); + } +} From fb280c091238d895214d4149a0601dae282b64ea Mon Sep 17 00:00:00 2001 From: Lorenzune Date: Wed, 18 Mar 2026 17:01:10 +0100 Subject: [PATCH 02/12] fix(wired): improve rewards and room mute feedback --- .../habbohotel/commands/UnmuteCommand.java | 4 +- .../wired/effects/WiredEffectGiveReward.java | 9 - .../com/eu/habbo/habbohotel/rooms/Room.java | 8 +- .../habbohotel/rooms/RoomChatManager.java | 14 +- .../habbo/habbohotel/wired/WiredHandler.java | 167 ++++++++------- .../habbohotel/wired/core/WiredManager.java | 192 +++++++++++------- .../outgoing/users/MutedWhisperComposer.java | 2 +- 7 files changed, 239 insertions(+), 157 deletions(-) diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/commands/UnmuteCommand.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/commands/UnmuteCommand.java index 376f8b94..7cd922e9 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/commands/UnmuteCommand.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/commands/UnmuteCommand.java @@ -29,7 +29,7 @@ public class UnmuteCommand extends Command { } if (habbo.getHabboInfo().getCurrentRoom() != null && habbo.getHabboInfo().getCurrentRoom().isMuted(habbo)) { - habbo.getHabboInfo().getCurrentRoom().muteHabbo(habbo, 1); + habbo.getHabboInfo().getCurrentRoom().unmuteHabbo(habbo); } gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_unmute").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT); @@ -41,4 +41,4 @@ public class UnmuteCommand extends Command { return true; } -} \ No newline at end of file +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveReward.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveReward.java index a2df0c12..e57bc582 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveReward.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveReward.java @@ -140,15 +140,6 @@ public class WiredEffectGiveReward extends InteractionWiredEffect { return type; } - @Override - public void onClick(GameClient client, Room room, Object[] objects) throws Exception { - super.onClick(client, room, objects); - - if (client.getHabbo().hasPermission(Permission.ACC_SUPERWIRED)) { - client.getHabbo().whisper(Emulator.getTexts().getValue("hotel.wired.superwired.info"), RoomChatMessageBubbles.BOT); - } - } - @Override public void serializeWiredData(ServerMessage message, Room room) { message.appendBoolean(false); diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java index 01e81ce6..2f468c1c 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java @@ -1874,11 +1874,15 @@ public class Room implements Comparable, ISerialize, Runnable { } public void muteHabbo(Habbo habbo, int minutes) { - this.rightsManager.muteHabbo(habbo, minutes); + this.chatManager.muteHabbo(habbo, minutes); + } + + public void unmuteHabbo(Habbo habbo) { + this.chatManager.unmuteHabbo(habbo); } public boolean isMuted(Habbo habbo) { - return this.rightsManager.isMuted(habbo); + return this.chatManager.isMuted(habbo); } public void habboEntered(Habbo habbo) { diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/RoomChatManager.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/RoomChatManager.java index 3665aca1..dae39207 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/RoomChatManager.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/RoomChatManager.java @@ -156,6 +156,15 @@ public class RoomChatManager { } } + /** + * Removes a room mute from a Habbo. + */ + public void unmuteHabbo(Habbo habbo) { + synchronized (this.mutedHabbos) { + this.mutedHabbos.remove(habbo.getHabboInfo().getId()); + } + } + /** * Checks if a Habbo is muted. */ @@ -183,7 +192,8 @@ public class RoomChatManager { */ public int getMuteTimeRemaining(Habbo habbo) { if (this.mutedHabbos.containsKey(habbo.getHabboInfo().getId())) { - return this.mutedHabbos.get(habbo.getHabboInfo().getId()) - Emulator.getIntUnixTimestamp(); + return Math.max(0, + this.mutedHabbos.get(habbo.getHabboInfo().getId()) - Emulator.getIntUnixTimestamp()); } return 0; } @@ -298,7 +308,7 @@ public class RoomChatManager { if (this.isMuted(habbo)) { habbo.getClient().sendResponse(new MutedWhisperComposer( - this.mutedHabbos.get(habbo.getHabboInfo().getId()) - Emulator.getIntUnixTimestamp())); + Math.max(1, this.getMuteTimeRemaining(habbo)))); return; } } diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredHandler.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredHandler.java index 6aab1031..fd917afe 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredHandler.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredHandler.java @@ -285,88 +285,115 @@ public class WiredHandler { } } - private static void giveReward(Habbo habbo, WiredEffectGiveReward wiredBox, WiredGiveRewardItem reward) { - if (wiredBox.limit > 0) - wiredBox.given++; - + private static void persistReward(int wiredId, int habboId, int rewardId, int timestamp) { try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("INSERT INTO wired_rewards_given (wired_item, user_id, reward_id, timestamp) VALUES ( ?, ?, ?, ?)")) { - statement.setInt(1, wiredBox.getId()); - statement.setInt(2, habbo.getHabboInfo().getId()); - statement.setInt(3, reward.id); - statement.setInt(4, Emulator.getIntUnixTimestamp()); + statement.setInt(1, wiredId); + statement.setInt(2, habboId); + statement.setInt(3, rewardId); + statement.setInt(4, timestamp); statement.execute(); } catch (SQLException e) { LOGGER.error("Caught SQL exception", e); } + } + private static void completeReward(Habbo habbo, WiredEffectGiveReward wiredBox, WiredGiveRewardItem reward, int successCode) { + if (wiredBox.limit > 0) + wiredBox.given++; + + persistReward(wiredBox.getId(), habbo.getHabboInfo().getId(), reward.id, Emulator.getIntUnixTimestamp()); + habbo.getClient().sendResponse(new WiredRewardAlertComposer(successCode)); + } + + private static boolean giveReward(Habbo habbo, WiredEffectGiveReward wiredBox, WiredGiveRewardItem reward) { if (reward.badge) { UserWiredRewardReceived rewardReceived = new UserWiredRewardReceived(habbo, wiredBox, "badge", reward.data); if (Emulator.getPluginManager().fireEvent(rewardReceived).isCancelled()) - return; + return false; if (rewardReceived.value.isEmpty()) - return; + return false; - if (habbo.getInventory().getBadgesComponent().hasBadge(rewardReceived.value)) - return; + if (habbo.getInventory().getBadgesComponent().hasBadge(rewardReceived.value)) { + habbo.getClient().sendResponse(new WiredRewardAlertComposer(WiredRewardAlertComposer.REWARD_ALREADY_RECEIVED)); + return false; + } HabboBadge badge = new HabboBadge(0, rewardReceived.value, 0, habbo); Emulator.getThreading().run(badge); habbo.getInventory().getBadgesComponent().addBadge(badge); habbo.getClient().sendResponse(new AddUserBadgeComposer(badge)); - habbo.getClient().sendResponse(new WiredRewardAlertComposer(WiredRewardAlertComposer.REWARD_RECEIVED_BADGE)); - } else { - String[] data = reward.data.split("#"); - - if (data.length == 2) { - UserWiredRewardReceived rewardReceived = new UserWiredRewardReceived(habbo, wiredBox, data[0], data[1]); - if (Emulator.getPluginManager().fireEvent(rewardReceived).isCancelled()) - return; - - if (rewardReceived.value.isEmpty()) - return; - - if (rewardReceived.type.equalsIgnoreCase("credits")) { - int credits = Integer.parseInt(rewardReceived.value); - habbo.giveCredits(credits); - } else if (rewardReceived.type.equalsIgnoreCase("pixels")) { - int pixels = Integer.parseInt(rewardReceived.value); - habbo.givePixels(pixels); - } else if (rewardReceived.type.startsWith("points")) { - int points = Integer.parseInt(rewardReceived.value); - int type = 5; - - try { - type = Integer.parseInt(rewardReceived.type.replace("points", "")); - } catch (Exception e) { - } - - habbo.givePoints(type, points); - } else if (rewardReceived.type.equalsIgnoreCase("furni")) { - Item baseItem = Emulator.getGameEnvironment().getItemManager().getItem(Integer.parseInt(rewardReceived.value)); - if (baseItem != null) { - HabboItem item = Emulator.getGameEnvironment().getItemManager().createItem(habbo.getHabboInfo().getId(), baseItem, 0, 0, ""); - - if (item != null) { - habbo.getClient().sendResponse(new AddHabboItemComposer(item)); - habbo.getClient().getHabbo().getInventory().getItemsComponent().addItem(item); - habbo.getClient().sendResponse(new PurchaseOKComposer(null)); - habbo.getClient().sendResponse(new InventoryRefreshComposer()); - habbo.getClient().sendResponse(new WiredRewardAlertComposer(WiredRewardAlertComposer.REWARD_RECEIVED_ITEM)); - } - } - } else if (rewardReceived.type.equalsIgnoreCase("respect")) { - habbo.getHabboStats().respectPointsReceived += Integer.parseInt(rewardReceived.value); - } else if (rewardReceived.type.equalsIgnoreCase("cata")) { - CatalogItem item = Emulator.getGameEnvironment().getCatalogManager().getCatalogItem(Integer.parseInt(rewardReceived.value)); - - if (item != null) { - Emulator.getGameEnvironment().getCatalogManager().purchaseItem(null, item, habbo, 1, "", true); - } - habbo.getClient().sendResponse(new WiredRewardAlertComposer(WiredRewardAlertComposer.REWARD_RECEIVED_ITEM)); - } - } + completeReward(habbo, wiredBox, reward, WiredRewardAlertComposer.REWARD_RECEIVED_BADGE); + return true; } + + String[] data = reward.data.split("#"); + + if (data.length != 2) + return false; + + UserWiredRewardReceived rewardReceived = new UserWiredRewardReceived(habbo, wiredBox, data[0], data[1]); + if (Emulator.getPluginManager().fireEvent(rewardReceived).isCancelled()) + return false; + + if (rewardReceived.value.isEmpty()) + return false; + + if (rewardReceived.type.equalsIgnoreCase("credits")) { + habbo.giveCredits(Integer.parseInt(rewardReceived.value)); + completeReward(habbo, wiredBox, reward, WiredRewardAlertComposer.REWARD_RECEIVED_ITEM); + return true; + } else if (rewardReceived.type.equalsIgnoreCase("diamonds") || rewardReceived.type.equalsIgnoreCase("diamond")) { + habbo.givePoints(5, Integer.parseInt(rewardReceived.value)); + completeReward(habbo, wiredBox, reward, WiredRewardAlertComposer.REWARD_RECEIVED_ITEM); + return true; + } else if (rewardReceived.type.equalsIgnoreCase("pixels")) { + habbo.givePixels(Integer.parseInt(rewardReceived.value)); + completeReward(habbo, wiredBox, reward, WiredRewardAlertComposer.REWARD_RECEIVED_ITEM); + return true; + } else if (rewardReceived.type.startsWith("points")) { + int points = Integer.parseInt(rewardReceived.value); + int type = 5; + + try { + type = Integer.parseInt(rewardReceived.type.replace("points", "")); + } catch (Exception e) { + } + + habbo.givePoints(type, points); + completeReward(habbo, wiredBox, reward, WiredRewardAlertComposer.REWARD_RECEIVED_ITEM); + return true; + } else if (rewardReceived.type.equalsIgnoreCase("furni")) { + Item baseItem = Emulator.getGameEnvironment().getItemManager().getItem(Integer.parseInt(rewardReceived.value)); + if (baseItem == null) + return false; + + HabboItem item = Emulator.getGameEnvironment().getItemManager().createItem(habbo.getHabboInfo().getId(), baseItem, 0, 0, ""); + if (item == null) + return false; + + habbo.getClient().sendResponse(new AddHabboItemComposer(item)); + habbo.getClient().getHabbo().getInventory().getItemsComponent().addItem(item); + habbo.getClient().sendResponse(new PurchaseOKComposer(null)); + habbo.getClient().sendResponse(new InventoryRefreshComposer()); + completeReward(habbo, wiredBox, reward, WiredRewardAlertComposer.REWARD_RECEIVED_ITEM); + return true; + } else if (rewardReceived.type.equalsIgnoreCase("respect")) { + habbo.getHabboStats().respectPointsReceived += Integer.parseInt(rewardReceived.value); + completeReward(habbo, wiredBox, reward, WiredRewardAlertComposer.REWARD_RECEIVED_ITEM); + return true; + } else if (rewardReceived.type.equalsIgnoreCase("cata")) { + CatalogItem item = Emulator.getGameEnvironment().getCatalogManager().getCatalogItem(Integer.parseInt(rewardReceived.value)); + + if (item == null) + return false; + + Emulator.getGameEnvironment().getCatalogManager().purchaseItem(null, item, habbo, 1, "", true); + completeReward(habbo, wiredBox, reward, WiredRewardAlertComposer.REWARD_RECEIVED_ITEM); + return true; + } + + return false; } public static boolean getReward(Habbo habbo, WiredEffectGiveReward wiredBox) { @@ -433,22 +460,26 @@ public class WiredHandler { } if (!found) { - giveReward(habbo, wiredBox, item); - return true; + return giveReward(habbo, wiredBox, item); } } + + habbo.getClient().sendResponse(new WiredRewardAlertComposer(WiredRewardAlertComposer.REWARD_ALL_COLLECTED)); + return false; } else { int randomNumber = Emulator.getRandom().nextInt(101); int count = 0; for (WiredGiveRewardItem item : wiredBox.rewardItems) { if (randomNumber >= count && randomNumber <= (count + item.probability)) { - giveReward(habbo, wiredBox, item); - return true; + return giveReward(habbo, wiredBox, item); } count += item.probability; } + + habbo.getClient().sendResponse(new WiredRewardAlertComposer(WiredRewardAlertComposer.UNLUCKY_NO_REWARD)); + return false; } } } diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredManager.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredManager.java index e31b948c..4744ba9e 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredManager.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredManager.java @@ -687,17 +687,9 @@ public final class WiredManager { }); } - private static void giveReward(Habbo habbo, WiredEffectGiveReward wiredBox, WiredGiveRewardItem reward) { - if (wiredBox.getLimit() > 0) - wiredBox.incrementGiven(); - - final int wiredId = wiredBox.getId(); - final int habboId = habbo.getHabboInfo().getId(); - final int rewardId = reward.id; - final int timestamp = Emulator.getIntUnixTimestamp(); - + private static void persistReward(int wiredId, int habboId, int rewardId, int timestamp) { Emulator.getThreading().run(() -> { - try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); + try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("INSERT INTO wired_rewards_given (wired_item, user_id, reward_id, timestamp) VALUES ( ?, ?, ?, ?)")) { statement.setInt(1, wiredId); statement.setInt(2, habboId); @@ -708,75 +700,125 @@ public final class WiredManager { LOGGER.error("Caught SQL exception", e); } }); + } + private static void completeReward(Habbo habbo, WiredEffectGiveReward wiredBox, WiredGiveRewardItem reward, int successCode) { + if (wiredBox.getLimit() > 0) { + wiredBox.incrementGiven(); + } + + persistReward(wiredBox.getId(), habbo.getHabboInfo().getId(), reward.id, Emulator.getIntUnixTimestamp()); + habbo.getClient().sendResponse(new WiredRewardAlertComposer(successCode)); + } + + private static boolean giveReward(Habbo habbo, WiredEffectGiveReward wiredBox, WiredGiveRewardItem reward) { if (reward.badge) { UserWiredRewardReceived rewardReceived = new UserWiredRewardReceived(habbo, wiredBox, "badge", reward.data); - if (Emulator.getPluginManager().fireEvent(rewardReceived).isCancelled()) - return; + if (Emulator.getPluginManager().fireEvent(rewardReceived).isCancelled()) { + return false; + } - if (rewardReceived.value.isEmpty()) - return; - - if (habbo.getInventory().getBadgesComponent().hasBadge(rewardReceived.value)) - return; + if (rewardReceived.value.isEmpty()) { + return false; + } + + if (habbo.getInventory().getBadgesComponent().hasBadge(rewardReceived.value)) { + habbo.getClient().sendResponse(new WiredRewardAlertComposer(WiredRewardAlertComposer.REWARD_ALREADY_RECEIVED)); + return false; + } HabboBadge badge = new HabboBadge(0, rewardReceived.value, 0, habbo); Emulator.getThreading().run(badge); habbo.getInventory().getBadgesComponent().addBadge(badge); habbo.getClient().sendResponse(new AddUserBadgeComposer(badge)); - habbo.getClient().sendResponse(new WiredRewardAlertComposer(WiredRewardAlertComposer.REWARD_RECEIVED_BADGE)); - } else { - String[] data = reward.data.split("#"); - - if (data.length == 2) { - UserWiredRewardReceived rewardReceived = new UserWiredRewardReceived(habbo, wiredBox, data[0], data[1]); - if (Emulator.getPluginManager().fireEvent(rewardReceived).isCancelled()) - return; - - if (rewardReceived.value.isEmpty()) - return; - - if (rewardReceived.type.equalsIgnoreCase("credits")) { - int credits = Integer.parseInt(rewardReceived.value); - habbo.giveCredits(credits); - } else if (rewardReceived.type.equalsIgnoreCase("pixels")) { - int pixels = Integer.parseInt(rewardReceived.value); - habbo.givePixels(pixels); - } else if (rewardReceived.type.startsWith("points")) { - int points = Integer.parseInt(rewardReceived.value); - int type = 5; - - try { - type = Integer.parseInt(rewardReceived.type.replace("points", "")); - } catch (Exception e) { - } - - habbo.givePoints(type, points); - } else if (rewardReceived.type.equalsIgnoreCase("furni")) { - Item baseItem = Emulator.getGameEnvironment().getItemManager().getItem(Integer.parseInt(rewardReceived.value)); - if (baseItem != null) { - HabboItem item = Emulator.getGameEnvironment().getItemManager().createItem(habbo.getHabboInfo().getId(), baseItem, 0, 0, ""); - - if (item != null) { - habbo.getClient().sendResponse(new AddHabboItemComposer(item)); - habbo.getClient().getHabbo().getInventory().getItemsComponent().addItem(item); - habbo.getClient().sendResponse(new PurchaseOKComposer(null)); - habbo.getClient().sendResponse(new InventoryRefreshComposer()); - habbo.getClient().sendResponse(new WiredRewardAlertComposer(WiredRewardAlertComposer.REWARD_RECEIVED_ITEM)); - } - } - } else if (rewardReceived.type.equalsIgnoreCase("respect")) { - habbo.getHabboStats().respectPointsReceived += Integer.parseInt(rewardReceived.value); - } else if (rewardReceived.type.equalsIgnoreCase("cata")) { - CatalogItem item = Emulator.getGameEnvironment().getCatalogManager().getCatalogItem(Integer.parseInt(rewardReceived.value)); - - if (item != null) { - Emulator.getGameEnvironment().getCatalogManager().purchaseItem(null, item, habbo, 1, "", true); - } - habbo.getClient().sendResponse(new WiredRewardAlertComposer(WiredRewardAlertComposer.REWARD_RECEIVED_ITEM)); - } - } + completeReward(habbo, wiredBox, reward, WiredRewardAlertComposer.REWARD_RECEIVED_BADGE); + return true; } + + String[] data = reward.data.split("#"); + + if (data.length != 2) { + return false; + } + + UserWiredRewardReceived rewardReceived = new UserWiredRewardReceived(habbo, wiredBox, data[0], data[1]); + if (Emulator.getPluginManager().fireEvent(rewardReceived).isCancelled()) { + return false; + } + + if (rewardReceived.value.isEmpty()) { + return false; + } + + if (rewardReceived.type.equalsIgnoreCase("credits")) { + habbo.giveCredits(Integer.parseInt(rewardReceived.value)); + completeReward(habbo, wiredBox, reward, WiredRewardAlertComposer.REWARD_RECEIVED_ITEM); + return true; + } + + if (rewardReceived.type.equalsIgnoreCase("diamonds") || rewardReceived.type.equalsIgnoreCase("diamond")) { + habbo.givePoints(5, Integer.parseInt(rewardReceived.value)); + completeReward(habbo, wiredBox, reward, WiredRewardAlertComposer.REWARD_RECEIVED_ITEM); + return true; + } + + if (rewardReceived.type.equalsIgnoreCase("pixels")) { + habbo.givePixels(Integer.parseInt(rewardReceived.value)); + completeReward(habbo, wiredBox, reward, WiredRewardAlertComposer.REWARD_RECEIVED_ITEM); + return true; + } + + if (rewardReceived.type.startsWith("points")) { + int points = Integer.parseInt(rewardReceived.value); + int type = 5; + + try { + type = Integer.parseInt(rewardReceived.type.replace("points", "")); + } catch (Exception e) { + } + + habbo.givePoints(type, points); + completeReward(habbo, wiredBox, reward, WiredRewardAlertComposer.REWARD_RECEIVED_ITEM); + return true; + } + + if (rewardReceived.type.equalsIgnoreCase("furni")) { + Item baseItem = Emulator.getGameEnvironment().getItemManager().getItem(Integer.parseInt(rewardReceived.value)); + if (baseItem == null) { + return false; + } + + HabboItem item = Emulator.getGameEnvironment().getItemManager().createItem(habbo.getHabboInfo().getId(), baseItem, 0, 0, ""); + if (item == null) { + return false; + } + + habbo.getClient().sendResponse(new AddHabboItemComposer(item)); + habbo.getClient().getHabbo().getInventory().getItemsComponent().addItem(item); + habbo.getClient().sendResponse(new PurchaseOKComposer(null)); + habbo.getClient().sendResponse(new InventoryRefreshComposer()); + completeReward(habbo, wiredBox, reward, WiredRewardAlertComposer.REWARD_RECEIVED_ITEM); + return true; + } + + if (rewardReceived.type.equalsIgnoreCase("respect")) { + habbo.getHabboStats().respectPointsReceived += Integer.parseInt(rewardReceived.value); + completeReward(habbo, wiredBox, reward, WiredRewardAlertComposer.REWARD_RECEIVED_ITEM); + return true; + } + + if (rewardReceived.type.equalsIgnoreCase("cata")) { + CatalogItem item = Emulator.getGameEnvironment().getCatalogManager().getCatalogItem(Integer.parseInt(rewardReceived.value)); + if (item == null) { + return false; + } + + Emulator.getGameEnvironment().getCatalogManager().purchaseItem(null, item, habbo, 1, "", true); + completeReward(habbo, wiredBox, reward, WiredRewardAlertComposer.REWARD_RECEIVED_ITEM); + return true; + } + + return false; } public static boolean getReward(Habbo habbo, WiredEffectGiveReward wiredBox) { @@ -843,22 +885,26 @@ public final class WiredManager { } if (!found) { - giveReward(habbo, wiredBox, item); - return true; + return giveReward(habbo, wiredBox, item); } } + + habbo.getClient().sendResponse(new WiredRewardAlertComposer(WiredRewardAlertComposer.REWARD_ALL_COLLECTED)); + return false; } else { int randomNumber = Emulator.getRandom().nextInt(101); int count = 0; for (WiredGiveRewardItem item : wiredBox.getRewardItems()) { if (randomNumber >= count && randomNumber <= (count + item.probability)) { - giveReward(habbo, wiredBox, item); - return true; + return giveReward(habbo, wiredBox, item); } count += item.probability; } + + habbo.getClient().sendResponse(new WiredRewardAlertComposer(WiredRewardAlertComposer.UNLUCKY_NO_REWARD)); + return false; } } } diff --git a/Emulator/src/main/java/com/eu/habbo/messages/outgoing/users/MutedWhisperComposer.java b/Emulator/src/main/java/com/eu/habbo/messages/outgoing/users/MutedWhisperComposer.java index bae0cc7a..ef24051a 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/outgoing/users/MutedWhisperComposer.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/outgoing/users/MutedWhisperComposer.java @@ -8,7 +8,7 @@ public class MutedWhisperComposer extends MessageComposer { private final int seconds; public MutedWhisperComposer(int seconds) { - this.seconds = seconds; + this.seconds = Math.max(0, seconds); } @Override From 13669ba8ce57dad95402820c863e7fd407aade35 Mon Sep 17 00:00:00 2001 From: Lorenzune Date: Tue, 17 Mar 2026 01:34:18 +0100 Subject: [PATCH 03/12] feat(wired): add leave/click/action/short-period triggers - add wf_trg_leave_room, wf_trg_stuff_state, wf_trg_period_short, wf_trg_click_furni, wf_trg_click_tile, wf_trg_click_user and wf_trg_user_performs_action\n- add interaction type room_invisible_click_tile\n- persist selector-driven MatchFurni and ToggleRandom state changes\n- use configured duration in WiredEffectMuteHabbo --- .../habbo/habbohotel/items/ItemManager.java | 8 + .../wired/effects/WiredEffectMatchFurni.java | 1 + .../wired/effects/WiredEffectMuteHabbo.java | 2 +- .../effects/WiredEffectToggleRandom.java | 1 + .../WiredTriggerFurniStateToggled.java | 169 +++++++++++--- .../WiredTriggerHabboClicksFurni.java | 164 +++++++++++++ .../triggers/WiredTriggerHabboClicksTile.java | 47 ++++ .../triggers/WiredTriggerHabboClicksUser.java | 80 +++++++ .../triggers/WiredTriggerHabboLeavesRoom.java | 116 ++++++++++ .../WiredTriggerHabboPerformsAction.java | 217 ++++++++++++++++++ .../triggers/WiredTriggerRepeaterLong.java | 2 +- .../triggers/WiredTriggerRepeaterShort.java | 125 ++++++++++ .../com/eu/habbo/habbohotel/rooms/Room.java | 10 + .../habbohotel/rooms/RoomUnitManager.java | 10 + .../habbo/habbohotel/wired/WiredHandler.java | 2 +- .../habbohotel/wired/WiredTriggerType.java | 6 + .../habbohotel/wired/WiredUserActionType.java | 18 ++ .../habbohotel/wired/core/WiredEvent.java | 42 ++++ .../habbohotel/wired/core/WiredManager.java | 84 +++++++ .../habbohotel/wired/migrate/WiredEvents.java | 89 +++++++ .../com/eu/habbo/messages/PacketManager.java | 4 +- .../eu/habbo/messages/incoming/Incoming.java | 2 + .../incoming/rooms/items/ClickFurniEvent.java | 43 ++++ .../incoming/rooms/users/ClickUserEvent.java | 33 +++ .../rooms/users/RoomUserActionEvent.java | 28 +++ .../rooms/users/RoomUserDanceEvent.java | 13 +- .../rooms/users/RoomUserSignEvent.java | 3 + .../rooms/users/RoomUserSitEvent.java | 9 +- 28 files changed, 1283 insertions(+), 45 deletions(-) create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboClicksFurni.java create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboClicksTile.java create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboClicksUser.java create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboLeavesRoom.java create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboPerformsAction.java create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRepeaterShort.java create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredUserActionType.java create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/items/ClickFurniEvent.java create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/users/ClickUserEvent.java diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java index 2a944f95..78bdda77 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java @@ -203,16 +203,24 @@ public class ItemManager { this.interactionsList.add(new ItemInteraction("vendingmachine_no_sides", InteractionNoSidesVendingMachine.class)); this.interactionsList.add(new ItemInteraction("tile_walkmagic", InteractionTileWalkMagic.class)); this.interactionsList.add(new ItemInteraction("antenna", InteractionDefault.class)); + this.interactionsList.add(new ItemInteraction("room_invisible_click_tile", InteractionDefault.class)); this.interactionsList.add(new ItemInteraction("game_timer", InteractionGameTimer.class)); this.interactionsList.add(new ItemInteraction("wf_trg_walks_on_furni", WiredTriggerHabboWalkOnFurni.class)); this.interactionsList.add(new ItemInteraction("wf_trg_walks_off_furni", WiredTriggerHabboWalkOffFurni.class)); + this.interactionsList.add(new ItemInteraction("wf_trg_click_furni", WiredTriggerHabboClicksFurni.class)); + this.interactionsList.add(new ItemInteraction("wf_trg_click_tile", WiredTriggerHabboClicksTile.class)); + this.interactionsList.add(new ItemInteraction("wf_trg_click_user", WiredTriggerHabboClicksUser.class)); + this.interactionsList.add(new ItemInteraction("wf_trg_user_performs_action", WiredTriggerHabboPerformsAction.class)); this.interactionsList.add(new ItemInteraction("wf_trg_enter_room", WiredTriggerHabboEntersRoom.class)); + this.interactionsList.add(new ItemInteraction("wf_trg_leave_room", WiredTriggerHabboLeavesRoom.class)); this.interactionsList.add(new ItemInteraction("wf_trg_says_something", WiredTriggerHabboSaysKeyword.class)); this.interactionsList.add(new ItemInteraction("wf_trg_periodically", WiredTriggerRepeater.class)); + this.interactionsList.add(new ItemInteraction("wf_trg_period_short", WiredTriggerRepeaterShort.class)); this.interactionsList.add(new ItemInteraction("wf_trg_period_long", WiredTriggerRepeaterLong.class)); this.interactionsList.add(new ItemInteraction("wf_trg_state_changed", WiredTriggerFurniStateToggled.class)); + this.interactionsList.add(new ItemInteraction("wf_trg_stuff_state", WiredTriggerFurniStateToggled.class)); this.interactionsList.add(new ItemInteraction("wf_trg_at_given_time", WiredTriggerAtSetTime.class)); this.interactionsList.add(new ItemInteraction("wf_trg_at_time_long", WiredTriggerAtTimeLong.class)); this.interactionsList.add(new ItemInteraction("wf_trg_collision", WiredTriggerCollision.class)); diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMatchFurni.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMatchFurni.java index 90348f35..e075f486 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMatchFurni.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMatchFurni.java @@ -108,6 +108,7 @@ public class WiredEffectMatchFurni extends InteractionWiredEffect implements Int if (this.state && (this.checkForWiredResetPermission && item.allowWiredResetState())) { if (!setting.state.equals(" ") && !item.getExtradata().equals(setting.state)) { item.setExtradata(setting.state); + item.needsUpdate(true); room.updateItemState(item); } } diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMuteHabbo.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMuteHabbo.java index 41acb60e..443cb24c 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMuteHabbo.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMuteHabbo.java @@ -76,7 +76,7 @@ public class WiredEffectMuteHabbo extends InteractionWiredEffect { if (room.hasRights(habbo)) continue; - room.muteHabbo(habbo, 60); + room.muteHabbo(habbo, Math.max(1, this.length)); habbo.getClient().sendResponse(new RoomUserWhisperComposer(new RoomChatMessage(this.message.replace("%user%", habbo.getHabboInfo().getUsername()).replace("%online_count%", Emulator.getGameEnvironment().getHabboManager().getOnlineCount() + "").replace("%room_count%", Emulator.getGameEnvironment().getRoomManager().getActiveRooms().size() + ""), habbo, habbo, RoomChatMessageBubbles.WIRED))); } diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectToggleRandom.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectToggleRandom.java index 370655af..8ba458c2 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectToggleRandom.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectToggleRandom.java @@ -197,6 +197,7 @@ public class WiredEffectToggleRandom extends InteractionWiredEffect { try { item.setExtradata(Emulator.getRandom().nextInt(item.getBaseItem().getStateCount() + 1) + ""); + item.needsUpdate(true); room.updateItem(item); } catch (Exception e) { LOGGER.error("Caught exception", e); diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerFurniStateToggled.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerFurniStateToggled.java index 4f4a82f4..6c15531f 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerFurniStateToggled.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerFurniStateToggled.java @@ -15,36 +15,48 @@ import gnu.trove.set.hash.THashSet; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; public class WiredTriggerFurniStateToggled extends InteractionWiredTrigger { private static final WiredTriggerType type = WiredTriggerType.STATE_CHANGED; + private static final int MODE_ALL_STATES = 0; + private static final int MODE_SAVED_STATE = 1; - private THashSet items; + private THashSet snapshots; + private int triggerMode = MODE_ALL_STATES; public WiredTriggerFurniStateToggled(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); - this.items = new THashSet<>(); + this.snapshots = new THashSet<>(); } public WiredTriggerFurniStateToggled(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); - this.items = new THashSet<>(); + this.snapshots = new THashSet<>(); } @Override public boolean matches(HabboItem triggerItem, WiredEvent event) { - // Reject if this was triggered by a wired effect (to prevent loops) if (event.isTriggeredByEffect()) { return false; } HabboItem sourceItem = event.getSourceItem().orElse(null); - if (sourceItem != null) { - return this.items.contains(sourceItem); + if (sourceItem == null) { + return false; } - return false; + + StateSnapshot snapshot = this.getSnapshot(sourceItem.getId()); + if (snapshot == null) { + return false; + } + + if (this.triggerMode == MODE_SAVED_STATE) { + return snapshot.state.equals(this.normalizeState(sourceItem.getExtradata())); + } + + return true; } @Deprecated @@ -56,21 +68,36 @@ public class WiredTriggerFurniStateToggled extends InteractionWiredTrigger { @Override public String getWiredData() { return WiredManager.getGson().toJson(new JsonData( - this.items.stream().map(HabboItem::getId).collect(Collectors.toList()) + this.triggerMode, + new ArrayList<>(this.snapshots) )); } @Override public void loadWiredData(ResultSet set, Room room) throws SQLException { - this.items = new THashSet<>(); + this.snapshots = new THashSet<>(); + this.triggerMode = MODE_ALL_STATES; String wiredData = set.getString("wired_data"); - if (wiredData.startsWith("{")) { + if (wiredData != null && wiredData.startsWith("{")) { JsonData data = WiredManager.getGson().fromJson(wiredData, JsonData.class); - for (Integer id: data.itemIds) { - HabboItem item = room.getHabboItem(id); - if (item != null) { - this.items.add(item); + this.triggerMode = (data != null) ? data.triggerMode : MODE_ALL_STATES; + + if (data != null && data.snapshots != null && !data.snapshots.isEmpty()) { + for (StateSnapshot snapshot : data.snapshots) { + if (snapshot == null) continue; + + HabboItem item = room.getHabboItem(snapshot.itemId); + if (item != null) { + this.snapshots.add(new StateSnapshot(item.getId(), snapshot.state)); + } + } + } else if (data != null && data.itemIds != null) { + for (Integer id : data.itemIds) { + HabboItem item = room.getHabboItem(id); + if (item != null) { + this.snapshots.add(this.captureSnapshot(item)); + } } } } else { @@ -79,10 +106,15 @@ public class WiredTriggerFurniStateToggled extends InteractionWiredTrigger { if (!wiredData.split(":")[2].equals("\t")) { for (String s : wiredData.split(":")[2].split(";")) { + if (s.isEmpty()) { + continue; + } + HabboItem item = room.getHabboItem(Integer.parseInt(s)); - if (item != null) - this.items.add(item); + if (item != null) { + this.snapshots.add(this.captureSnapshot(item)); + } } } } @@ -91,7 +123,8 @@ public class WiredTriggerFurniStateToggled extends InteractionWiredTrigger { @Override public void onPickUp() { - this.items.clear(); + this.snapshots.clear(); + this.triggerMode = MODE_ALL_STATES; } @Override @@ -101,33 +134,31 @@ public class WiredTriggerFurniStateToggled extends InteractionWiredTrigger { @Override public void serializeWiredData(ServerMessage message, Room room) { - THashSet items = new THashSet<>(); + THashSet snapshotsToRemove = new THashSet<>(); - for (HabboItem item : this.items) { - if (item.getRoomId() != this.getRoomId()) { - items.add(item); + for (StateSnapshot snapshot : this.snapshots) { + HabboItem item = room.getHabboItem(snapshot.itemId); + if (item == null || item.getRoomId() != this.getRoomId()) { + snapshotsToRemove.add(snapshot); continue; } - - if (room.getHabboItem(item.getId()) == null) { - items.add(item); - } } - for (HabboItem item : items) { - this.items.remove(item); + for (StateSnapshot snapshot : snapshotsToRemove) { + this.snapshots.remove(snapshot); } message.appendBoolean(false); message.appendInt(WiredManager.MAXIMUM_FURNI_SELECTION); - message.appendInt(this.items.size()); - for (HabboItem item : this.items) { - message.appendInt(item.getId()); + message.appendInt(this.snapshots.size()); + for (StateSnapshot snapshot : this.snapshots) { + message.appendInt(snapshot.itemId); } message.appendInt(this.getBaseItem().getSpriteId()); message.appendInt(this.getId()); message.appendString(""); - message.appendInt(0); + message.appendInt(1); + message.appendInt(this.triggerMode); message.appendInt(0); message.appendInt(this.getType().code); message.appendInt(0); @@ -135,14 +166,22 @@ public class WiredTriggerFurniStateToggled extends InteractionWiredTrigger { @Override public boolean saveData(WiredSettings settings) { - this.items.clear(); + this.snapshots.clear(); + this.triggerMode = (settings.getIntParams().length > 0 && settings.getIntParams()[0] == MODE_SAVED_STATE) + ? MODE_SAVED_STATE + : MODE_ALL_STATES; + + Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()); + if (room == null) { + return true; + } int count = settings.getFurniIds().length; for (int i = 0; i < count; i++) { - HabboItem item = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()).getHabboItem(settings.getFurniIds()[i]); + HabboItem item = room.getHabboItem(settings.getFurniIds()[i]); if (item != null) { - this.items.add(item); + this.snapshots.add(this.captureSnapshot(item)); } } @@ -154,11 +193,71 @@ public class WiredTriggerFurniStateToggled extends InteractionWiredTrigger { return true; } + private StateSnapshot captureSnapshot(HabboItem item) { + return new StateSnapshot(item.getId(), this.normalizeState(item.getExtradata())); + } + + private StateSnapshot getSnapshot(int itemId) { + for (StateSnapshot snapshot : this.snapshots) { + if (snapshot.itemId == itemId) { + return snapshot; + } + } + + return null; + } + + private String normalizeState(String state) { + return (state == null) ? "" : state; + } + static class JsonData { + int triggerMode; + List snapshots; List itemIds; + public JsonData() { + } + public JsonData(List itemIds) { this.itemIds = itemIds; } + + public JsonData(int triggerMode, List snapshots) { + this.triggerMode = triggerMode; + this.snapshots = snapshots; + } + } + + static class StateSnapshot { + int itemId; + String state; + + public StateSnapshot() { + } + + public StateSnapshot(int itemId, String state) { + this.itemId = itemId; + this.state = (state == null) ? "" : state; + } + + @Override + public int hashCode() { + return Integer.hashCode(this.itemId); + } + + @Override + public boolean equals(Object object) { + if (this == object) { + return true; + } + + if (!(object instanceof StateSnapshot)) { + return false; + } + + StateSnapshot that = (StateSnapshot) object; + return this.itemId == that.itemId; + } } } diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboClicksFurni.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboClicksFurni.java new file mode 100644 index 00000000..9bf25e62 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboClicksFurni.java @@ -0,0 +1,164 @@ +package com.eu.habbo.habbohotel.items.interactions.wired.triggers; + +import com.eu.habbo.Emulator; +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; +import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.wired.WiredTriggerType; +import com.eu.habbo.habbohotel.wired.core.WiredEvent; +import com.eu.habbo.habbohotel.wired.core.WiredManager; +import com.eu.habbo.messages.ServerMessage; +import gnu.trove.set.hash.THashSet; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; +import java.util.stream.Collectors; + +public class WiredTriggerHabboClicksFurni extends InteractionWiredTrigger { + public static final WiredTriggerType type = WiredTriggerType.CLICKS_FURNI; + + private THashSet items; + + public WiredTriggerHabboClicksFurni(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + this.items = new THashSet<>(); + } + + public WiredTriggerHabboClicksFurni(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + super(id, userId, item, extradata, limitedStack, limitedSells); + this.items = new THashSet<>(); + } + + @Override + public boolean matches(HabboItem triggerItem, WiredEvent event) { + HabboItem sourceItem = event.getSourceItem().orElse(null); + return sourceItem != null && this.items.contains(sourceItem); + } + + @Deprecated + @Override + public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { + return false; + } + + @Override + public WiredTriggerType getType() { + return type; + } + + @Override + public void serializeWiredData(ServerMessage message, Room room) { + THashSet items = new THashSet<>(); + + if (Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()) == null) { + items.addAll(this.items); + } else { + for (HabboItem item : this.items) { + if (Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()).getHabboItem(item.getId()) == null) { + items.add(item); + } + } + } + + for (HabboItem item : items) { + this.items.remove(item); + } + + message.appendBoolean(false); + message.appendInt(WiredManager.MAXIMUM_FURNI_SELECTION); + message.appendInt(this.items.size()); + for (HabboItem item : this.items) { + message.appendInt(item.getId()); + } + message.appendInt(this.getBaseItem().getSpriteId()); + message.appendInt(this.getId()); + message.appendString(""); + message.appendInt(0); + message.appendInt(0); + message.appendInt(this.getType().code); + message.appendInt(0); + message.appendInt(0); + } + + @Override + public boolean saveData(WiredSettings settings) { + this.items.clear(); + + int count = settings.getFurniIds().length; + + for (int i = 0; i < count; i++) { + HabboItem item = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()).getHabboItem(settings.getFurniIds()[i]); + if (item != null) { + this.items.add(item); + } + } + + return true; + } + + @Override + public String getWiredData() { + return WiredManager.getGson().toJson(new JsonData( + this.items.stream().map(HabboItem::getId).collect(Collectors.toList()) + )); + } + + @Override + public void loadWiredData(ResultSet set, Room room) throws SQLException { + this.items.clear(); + String wiredData = set.getString("wired_data"); + + if (wiredData.startsWith("{")) { + JsonData data = WiredManager.getGson().fromJson(wiredData, JsonData.class); + for (Integer id : data.itemIds) { + HabboItem item = room.getHabboItem(id); + if (item != null) { + this.items.add(item); + } + } + } else { + if (wiredData.split(":").length >= 3) { + super.setDelay(Integer.parseInt(wiredData.split(":")[0])); + + if (!wiredData.split(":")[2].equals("\t")) { + for (String s : wiredData.split(":")[2].split(";")) { + if (s.isEmpty()) { + continue; + } + + try { + HabboItem item = room.getHabboItem(Integer.parseInt(s)); + + if (item != null) { + this.items.add(item); + } + } catch (Exception e) { + } + } + } + } + } + } + + @Override + public void onPickUp() { + this.items.clear(); + } + + @Override + public boolean isTriggeredByRoomUnit() { + return true; + } + + static class JsonData { + List itemIds; + + public JsonData(List itemIds) { + this.itemIds = itemIds; + } + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboClicksTile.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboClicksTile.java new file mode 100644 index 00000000..6ddcc503 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboClicksTile.java @@ -0,0 +1,47 @@ +package com.eu.habbo.habbohotel.items.interactions.wired.triggers; + +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.wired.WiredTriggerType; +import com.eu.habbo.habbohotel.wired.core.WiredEvent; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class WiredTriggerHabboClicksTile extends WiredTriggerHabboClicksFurni { + public static final WiredTriggerType type = WiredTriggerType.CLICKS_TILE; + + private static final String CLICK_TILE_INTERACTION = "room_invisible_click_tile"; + + public WiredTriggerHabboClicksTile(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + } + + public WiredTriggerHabboClicksTile(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + super(id, userId, item, extradata, limitedStack, limitedSells); + } + + @Override + public boolean matches(HabboItem triggerItem, WiredEvent event) { + if (!super.matches(triggerItem, event)) { + return false; + } + + HabboItem sourceItem = event.getSourceItem().orElse(null); + return isClickTileItem(sourceItem); + } + + @Override + public WiredTriggerType getType() { + return type; + } + + private boolean isClickTileItem(HabboItem item) { + if (item == null || item.getBaseItem() == null || item.getBaseItem().getInteractionType() == null) { + return false; + } + + String interaction = item.getBaseItem().getInteractionType().getName(); + return interaction != null && interaction.equalsIgnoreCase(CLICK_TILE_INTERACTION); + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboClicksUser.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboClicksUser.java new file mode 100644 index 00000000..f64ca1c0 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboClicksUser.java @@ -0,0 +1,80 @@ +package com.eu.habbo.habbohotel.items.interactions.wired.triggers; + +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; +import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.wired.WiredTriggerType; +import com.eu.habbo.habbohotel.wired.core.WiredEvent; +import com.eu.habbo.messages.ServerMessage; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class WiredTriggerHabboClicksUser extends InteractionWiredTrigger { + public static final WiredTriggerType type = WiredTriggerType.CLICKS_USER; + + public WiredTriggerHabboClicksUser(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + } + + public WiredTriggerHabboClicksUser(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + super(id, userId, item, extradata, limitedStack, limitedSells); + } + + @Override + public boolean matches(HabboItem triggerItem, WiredEvent event) { + return event.getActor().isPresent(); + } + + @Deprecated + @Override + public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { + return false; + } + + @Override + public String getWiredData() { + return ""; + } + + @Override + public void loadWiredData(ResultSet set, Room room) throws SQLException { + } + + @Override + public void onPickUp() { + } + + @Override + public WiredTriggerType getType() { + return type; + } + + @Override + public void serializeWiredData(ServerMessage message, Room room) { + message.appendBoolean(false); + message.appendInt(5); + message.appendInt(0); + message.appendInt(this.getBaseItem().getSpriteId()); + message.appendInt(this.getId()); + message.appendString(""); + message.appendInt(0); + message.appendInt(0); + message.appendInt(this.getType().code); + message.appendInt(0); + message.appendInt(0); + } + + @Override + public boolean saveData(WiredSettings settings) { + return true; + } + + @Override + public boolean isTriggeredByRoomUnit() { + return true; + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboLeavesRoom.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboLeavesRoom.java new file mode 100644 index 00000000..36583ce3 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboLeavesRoom.java @@ -0,0 +1,116 @@ +package com.eu.habbo.habbohotel.items.interactions.wired.triggers; + +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; +import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.users.Habbo; +import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.wired.core.WiredManager; +import com.eu.habbo.habbohotel.wired.WiredTriggerType; +import com.eu.habbo.habbohotel.wired.core.WiredEvent; +import com.eu.habbo.messages.ServerMessage; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class WiredTriggerHabboLeavesRoom extends InteractionWiredTrigger { + public static final WiredTriggerType type = WiredTriggerType.LEAVE_ROOM; + + private String username = ""; + + public WiredTriggerHabboLeavesRoom(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + } + + public WiredTriggerHabboLeavesRoom(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + super(id, userId, item, extradata, limitedStack, limitedSells); + } + + @Override + public boolean matches(HabboItem triggerItem, WiredEvent event) { + RoomUnit roomUnit = event.getActor().orElse(null); + Room room = event.getRoom(); + Habbo habbo = room.getHabbo(roomUnit); + + if (habbo != null) { + if (this.username.length() > 0) { + return habbo.getHabboInfo().getUsername().equalsIgnoreCase(this.username); + } + + return true; + } + return false; + } + + @Deprecated + @Override + public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { + return false; + } + + @Override + public String getWiredData() { + return WiredManager.getGson().toJson(new JsonData( + this.username + )); + } + + @Override + public void loadWiredData(ResultSet set, Room room) throws SQLException { + String wiredData = set.getString("wired_data"); + + if (wiredData.startsWith("{")) { + JsonData data = WiredManager.getGson().fromJson(wiredData, JsonData.class); + this.username = data.username; + } else { + this.username = wiredData; + } + } + + @Override + public void onPickUp() { + this.username = ""; + } + + @Override + public WiredTriggerType getType() { + return type; + } + + @Override + public void serializeWiredData(ServerMessage message, Room room) { + message.appendBoolean(false); + message.appendInt(5); + message.appendInt(0); + message.appendInt(this.getBaseItem().getSpriteId()); + message.appendInt(this.getId()); + message.appendString(this.username); + message.appendInt(0); + message.appendInt(0); + message.appendInt(this.getType().code); + message.appendInt(0); + message.appendInt(0); + } + + @Override + public boolean saveData(WiredSettings settings) { + this.username = settings.getStringParam(); + + return true; + } + + @Override + public boolean isTriggeredByRoomUnit() { + return true; + } + + static class JsonData { + String username; + + public JsonData(String username) { + this.username = username; + } + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboPerformsAction.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboPerformsAction.java new file mode 100644 index 00000000..07b2195d --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboPerformsAction.java @@ -0,0 +1,217 @@ +package com.eu.habbo.habbohotel.items.interactions.wired.triggers; + +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; +import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.wired.WiredTriggerType; +import com.eu.habbo.habbohotel.wired.WiredUserActionType; +import com.eu.habbo.habbohotel.wired.core.WiredEvent; +import com.eu.habbo.habbohotel.wired.core.WiredManager; +import com.eu.habbo.messages.ServerMessage; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class WiredTriggerHabboPerformsAction extends InteractionWiredTrigger { + private static final WiredTriggerType type = WiredTriggerType.USER_PERFORMS_ACTION; + private static final int DEFAULT_ACTION = WiredUserActionType.WAVE; + + private int selectedAction = DEFAULT_ACTION; + private boolean signFilterEnabled = false; + private int signId = 0; + private boolean danceFilterEnabled = false; + private int danceId = 1; + + public WiredTriggerHabboPerformsAction(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + } + + public WiredTriggerHabboPerformsAction(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + super(id, userId, item, extradata, limitedStack, limitedSells); + } + + @Override + public boolean matches(HabboItem triggerItem, WiredEvent event) { + if (!event.getActor().isPresent()) { + return false; + } + + if (event.getActionId() != this.selectedAction) { + return false; + } + + if (this.selectedAction == WiredUserActionType.SIGN && this.signFilterEnabled) { + return event.getActionParameter() == this.signId; + } + + if (this.selectedAction == WiredUserActionType.DANCE && this.danceFilterEnabled) { + return event.getActionParameter() == this.danceId; + } + + return true; + } + + @Deprecated + @Override + public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { + return false; + } + + @Override + public String getWiredData() { + return WiredManager.getGson().toJson(new JsonData( + this.selectedAction, + this.signFilterEnabled, + this.signId, + this.danceFilterEnabled, + this.danceId + )); + } + + @Override + public void loadWiredData(ResultSet set, Room room) throws SQLException { + this.resetSettings(); + + String wiredData = set.getString("wired_data"); + + if (wiredData != null && wiredData.startsWith("{")) { + JsonData data = WiredManager.getGson().fromJson(wiredData, JsonData.class); + + if (data == null) { + return; + } + + this.selectedAction = normalizeAction(data.selectedAction); + this.signFilterEnabled = data.signFilterEnabled; + this.signId = normalizeSignId(data.signId); + this.danceFilterEnabled = data.danceFilterEnabled; + this.danceId = normalizeDanceId(data.danceId); + } + } + + @Override + public void onPickUp() { + this.resetSettings(); + } + + @Override + public WiredTriggerType getType() { + return type; + } + + @Override + public void serializeWiredData(ServerMessage message, Room room) { + message.appendBoolean(false); + message.appendInt(5); + message.appendInt(0); + message.appendInt(this.getBaseItem().getSpriteId()); + message.appendInt(this.getId()); + message.appendString(""); + message.appendInt(5); + message.appendInt(this.selectedAction); + message.appendInt(this.signFilterEnabled ? 1 : 0); + message.appendInt(this.signId); + message.appendInt(this.danceFilterEnabled ? 1 : 0); + message.appendInt(this.danceId); + message.appendInt(0); + message.appendInt(this.getType().code); + message.appendInt(0); + message.appendInt(0); + } + + @Override + public boolean saveData(WiredSettings settings) { + int[] intParams = settings.getIntParams(); + + this.resetSettings(); + + if (intParams.length > 0) { + this.selectedAction = normalizeAction(intParams[0]); + } + + if (intParams.length > 1) { + this.signFilterEnabled = (intParams[1] == 1); + } + + if (intParams.length > 2) { + this.signId = normalizeSignId(intParams[2]); + } + + if (intParams.length > 3) { + this.danceFilterEnabled = (intParams[3] == 1); + } + + if (intParams.length > 4) { + this.danceId = normalizeDanceId(intParams[4]); + } + + return true; + } + + @Override + public boolean isTriggeredByRoomUnit() { + return true; + } + + private void resetSettings() { + this.selectedAction = DEFAULT_ACTION; + this.signFilterEnabled = false; + this.signId = 0; + this.danceFilterEnabled = false; + this.danceId = 1; + } + + private int normalizeAction(int action) { + switch (action) { + case WiredUserActionType.WAVE: + case WiredUserActionType.BLOW_KISS: + case WiredUserActionType.LAUGH: + case WiredUserActionType.AWAKE: + case WiredUserActionType.RELAX: + case WiredUserActionType.SIT: + case WiredUserActionType.STAND: + case WiredUserActionType.LAY: + case WiredUserActionType.SIGN: + case WiredUserActionType.DANCE: + case WiredUserActionType.THUMB_UP: + return action; + default: + return DEFAULT_ACTION; + } + } + + private int normalizeSignId(int signId) { + if (signId < 0 || signId > 17) { + return 0; + } + + return signId; + } + + private int normalizeDanceId(int danceId) { + if (danceId < 1 || danceId > 4) { + return 1; + } + + return danceId; + } + + static class JsonData { + int selectedAction; + boolean signFilterEnabled; + int signId; + boolean danceFilterEnabled; + int danceId; + + public JsonData(int selectedAction, boolean signFilterEnabled, int signId, boolean danceFilterEnabled, int danceId) { + this.selectedAction = selectedAction; + this.signFilterEnabled = signFilterEnabled; + this.signId = signId; + this.danceFilterEnabled = danceFilterEnabled; + this.danceId = danceId; + } + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRepeaterLong.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRepeaterLong.java index f9094c09..dadac6be 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRepeaterLong.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRepeaterLong.java @@ -139,7 +139,7 @@ public class WiredTriggerRepeaterLong extends InteractionWiredTrigger implements // Fire when elapsed time is a multiple of repeat time if (elapsedMs % this.repeatTime == 0) { if (this.getRoomId() != 0 && room.isLoaded()) { - WiredManager.triggerTimerRepeat(room, this); + WiredManager.triggerTimerRepeatLong(room, this); } } } diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRepeaterShort.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRepeaterShort.java new file mode 100644 index 00000000..00800e67 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerRepeaterShort.java @@ -0,0 +1,125 @@ +package com.eu.habbo.habbohotel.items.interactions.wired.triggers; + +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; +import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.wired.WiredTriggerType; +import com.eu.habbo.habbohotel.wired.core.WiredManager; +import com.eu.habbo.messages.ServerMessage; +import gnu.trove.procedure.TObjectProcedure; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +public class WiredTriggerRepeaterShort extends WiredTriggerRepeater { + public static final WiredTriggerType type = WiredTriggerType.PERIODICALLY_SHORT; + public static final int STEP_MS = 50; + public static final int DEFAULT_DELAY = 10 * STEP_MS; + public static final int MIN_DELAY = STEP_MS; + public static final int MAX_DELAY = 10 * STEP_MS; + + public WiredTriggerRepeaterShort(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + this.repeatTime = DEFAULT_DELAY; + } + + public WiredTriggerRepeaterShort(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + super(id, userId, item, extradata, limitedStack, limitedSells); + this.repeatTime = DEFAULT_DELAY; + } + + @Override + public void loadWiredData(ResultSet set, Room room) throws SQLException { + String wiredData = set.getString("wired_data"); + + if (wiredData != null && wiredData.startsWith("{")) { + JsonData data = WiredManager.getGson().fromJson(wiredData, JsonData.class); + this.repeatTime = (data != null) ? data.repeatTime : DEFAULT_DELAY; + } else if (wiredData != null && wiredData.length() >= 1) { + this.repeatTime = Integer.parseInt(wiredData); + } else { + this.repeatTime = DEFAULT_DELAY; + } + + this.repeatTime = clampRepeatTime(this.repeatTime); + } + + @Override + public void onPickUp() { + this.repeatTime = DEFAULT_DELAY; + } + + @Override + public WiredTriggerType getType() { + return type; + } + + @Override + public void serializeWiredData(ServerMessage message, Room room) { + message.appendBoolean(false); + message.appendInt(5); + message.appendInt(0); + message.appendInt(this.getBaseItem().getSpriteId()); + message.appendInt(this.getId()); + message.appendString(""); + message.appendInt(1); + message.appendInt(this.repeatTime / STEP_MS); + message.appendInt(0); + message.appendInt(this.getType().code); + + if (!this.isTriggeredByRoomUnit()) { + List invalidTriggers = new ArrayList<>(); + room.getRoomSpecialTypes().getEffects(this.getX(), this.getY()).forEach(new TObjectProcedure() { + @Override + public boolean execute(InteractionWiredEffect object) { + if (object.requiresTriggeringUser()) { + invalidTriggers.add(object.getBaseItem().getSpriteId()); + } + return true; + } + }); + message.appendInt(invalidTriggers.size()); + for (Integer i : invalidTriggers) { + message.appendInt(i); + } + } else { + message.appendInt(0); + } + } + + @Override + public boolean saveData(WiredSettings settings) { + if (settings.getIntParams().length < 1) return false; + + int newRepeatTime = settings.getIntParams()[0] * STEP_MS; + this.repeatTime = clampRepeatTime(newRepeatTime); + + return true; + } + + @Override + public void onWiredTick(Room room, long tickCount, int tickIntervalMs) { + long elapsedMs = tickCount * tickIntervalMs; + + if (elapsedMs % this.repeatTime == 0) { + if (this.getRoomId() != 0 && room.isLoaded()) { + WiredManager.triggerTimerRepeatShort(room, this); + } + } + } + + private int clampRepeatTime(int repeatTime) { + if (repeatTime < MIN_DELAY) { + return DEFAULT_DELAY; + } + + if (repeatTime > MAX_DELAY) { + return MAX_DELAY; + } + + return repeatTime; + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java index 01e81ce6..6746c59d 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java @@ -15,6 +15,8 @@ import com.eu.habbo.habbohotel.pets.PetManager; import com.eu.habbo.habbohotel.users.DanceType; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.wired.WiredUserActionType; +import com.eu.habbo.habbohotel.wired.core.WiredManager; import com.eu.habbo.messages.ISerialize; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.guilds.GuildInfoComposer; @@ -2162,6 +2164,7 @@ public class Room implements Comparable, ISerialize, Runnable { - habbo.getRoomUnit().getBodyRotation().getValue() % 2]); habbo.getRoomUnit().setStatus(RoomUnitStatus.SIT, 0.5 + ""); this.sendComposer(new RoomUserStatusComposer(habbo.getRoomUnit()).compose()); + WiredManager.triggerUserPerformsAction(this, habbo.getRoomUnit(), WiredUserActionType.SIT, -1); } public void makeStand(Habbo habbo) { @@ -2171,12 +2174,19 @@ public class Room implements Comparable, ISerialize, Runnable { HabboItem item = this.getTopItemAt(habbo.getRoomUnit().getX(), habbo.getRoomUnit().getY()); if (item == null || !item.getBaseItem().allowSit() || !item.getBaseItem().allowLay()) { + boolean wasSittingOrLaying = habbo.getRoomUnit().hasStatus(RoomUnitStatus.SIT) + || habbo.getRoomUnit().hasStatus(RoomUnitStatus.LAY); habbo.getRoomUnit().cmdStand = true; habbo.getRoomUnit().setBodyRotation( RoomUserRotation.values()[habbo.getRoomUnit().getBodyRotation().getValue() - habbo.getRoomUnit().getBodyRotation().getValue() % 2]); habbo.getRoomUnit().removeStatus(RoomUnitStatus.SIT); + habbo.getRoomUnit().removeStatus(RoomUnitStatus.LAY); this.sendComposer(new RoomUserStatusComposer(habbo.getRoomUnit()).compose()); + + if (wasSittingOrLaying) { + WiredManager.triggerUserPerformsAction(this, habbo.getRoomUnit(), WiredUserActionType.STAND, -1); + } } } diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnitManager.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnitManager.java index 9ac9c726..7a33df06 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnitManager.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnitManager.java @@ -13,6 +13,7 @@ import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboGender; import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.habbohotel.wired.core.WiredManager; +import com.eu.habbo.habbohotel.wired.WiredUserActionType; import com.eu.habbo.messages.outgoing.generic.alerts.GenericErrorMessagesComposer; import com.eu.habbo.messages.outgoing.inventory.AddPetComposer; import com.eu.habbo.messages.outgoing.rooms.pets.RoomPetComposer; @@ -217,6 +218,10 @@ public class RoomUnitManager { return; } + if (habbo.getRoomUnit() != null) { + WiredManager.triggerUserLeavesRoom(this.room, habbo.getRoomUnit()); + } + if (habbo.getRoomUnit() != null && habbo.getRoomUnit().getCurrentLocation() != null) { habbo.getRoomUnit().getCurrentLocation().removeUnit(habbo.getRoomUnit()); } @@ -352,6 +357,7 @@ public class RoomUnitManager { } double z = habbo.getRoomUnit().getCurrentLocation().getStackHeight(); + boolean hadLayStatus = habbo.getRoomUnit().hasStatus(RoomUnitStatus.LAY); if (habbo.getRoomUnit().hasStatus(RoomUnitStatus.SIT) || (topItem != null && topItem.getBaseItem().allowSit())) { @@ -413,6 +419,10 @@ public class RoomUnitManager { } habbo.getRoomUnit().statusUpdate(true); + + if (!hadLayStatus && habbo.getRoomUnit().hasStatus(RoomUnitStatus.LAY)) { + WiredManager.triggerUserPerformsAction(this.room, habbo.getRoomUnit(), WiredUserActionType.LAY, -1); + } } if (!habbos.isEmpty()) { diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredHandler.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredHandler.java index 6aab1031..b837f0c0 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredHandler.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredHandler.java @@ -466,7 +466,7 @@ public class WiredHandler { room.getRoomSpecialTypes().getTriggers().forEach(t -> { if (t == null) return; - if (t.getType() == WiredTriggerType.AT_GIVEN_TIME || t.getType() == WiredTriggerType.PERIODICALLY || t.getType() == WiredTriggerType.PERIODICALLY_LONG) { + if (t.getType() == WiredTriggerType.AT_GIVEN_TIME || t.getType() == WiredTriggerType.PERIODICALLY || t.getType() == WiredTriggerType.PERIODICALLY_LONG || t.getType() == WiredTriggerType.PERIODICALLY_SHORT) { ((WiredTriggerReset) t).resetTimer(); } }); diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredTriggerType.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredTriggerType.java index e1767c1b..2672758b 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredTriggerType.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredTriggerType.java @@ -15,6 +15,12 @@ public enum WiredTriggerType { PERIODICALLY_LONG(12), BOT_REACHED_STF(13), BOT_REACHED_AVTR(14), + LEAVE_ROOM(16), + PERIODICALLY_SHORT(17), + CLICKS_FURNI(18), + CLICKS_TILE(19), + CLICKS_USER(20), + USER_PERFORMS_ACTION(21), SAY_COMMAND(0), IDLES(11), UNIDLES(11), diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredUserActionType.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredUserActionType.java new file mode 100644 index 00000000..eaf12377 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredUserActionType.java @@ -0,0 +1,18 @@ +package com.eu.habbo.habbohotel.wired; + +public final class WiredUserActionType { + public static final int WAVE = 1; + public static final int BLOW_KISS = 2; + public static final int LAUGH = 3; + public static final int AWAKE = 4; + public static final int RELAX = 5; + public static final int SIT = 6; + public static final int STAND = 7; + public static final int LAY = 8; + public static final int SIGN = 9; + public static final int DANCE = 10; + public static final int THUMB_UP = 11; + + private WiredUserActionType() { + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredEvent.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredEvent.java index ca3c543b..369d7fba 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredEvent.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredEvent.java @@ -42,6 +42,18 @@ public final class WiredEvent { /** User walks off furniture */ USER_WALKS_OFF(WiredTriggerType.WALKS_OFF_FURNI), + + /** User clicks furniture */ + USER_CLICKS_FURNI(WiredTriggerType.CLICKS_FURNI), + + /** User clicks invisible click tile furniture */ + USER_CLICKS_TILE(WiredTriggerType.CLICKS_TILE), + + /** User clicks another user */ + USER_CLICKS_USER(WiredTriggerType.CLICKS_USER), + + /** User performs an avatar action */ + USER_PERFORMS_ACTION(WiredTriggerType.USER_PERFORMS_ACTION), /** Furniture state is toggled/changed */ FURNI_STATE_CHANGED(WiredTriggerType.STATE_CHANGED), @@ -54,9 +66,15 @@ public final class WiredEvent { /** Long timer repeat */ TIMER_REPEAT_LONG(WiredTriggerType.PERIODICALLY_LONG), + + /** Short timer repeat */ + TIMER_REPEAT_SHORT(WiredTriggerType.PERIODICALLY_SHORT), /** User enters the room */ USER_ENTERS_ROOM(WiredTriggerType.ENTER_ROOM), + + /** User leaves the room */ + USER_LEAVES_ROOM(WiredTriggerType.LEAVE_ROOM), /** Game starts */ GAME_STARTS(WiredTriggerType.GAME_STARTS), @@ -141,6 +159,8 @@ public final class WiredEvent { private final boolean triggeredByEffect; // true if triggered by a wired effect (to prevent loops) private final int callStackDepth; // recursion depth for trigger stacks effect private final int signalChannel; // channel for signal routing (0-based) + private final int actionId; // user action id for USER_PERFORMS_ACTION + private final int actionParameter; // sign/dance parameter when relevant private final long createdAtMs; private WiredEvent(Builder builder) { @@ -156,6 +176,8 @@ public final class WiredEvent { this.triggeredByEffect = builder.triggeredByEffect; this.callStackDepth = builder.callStackDepth; this.signalChannel = builder.signalChannel; + this.actionId = builder.actionId; + this.actionParameter = builder.actionParameter; this.createdAtMs = builder.createdAtMs; } @@ -258,6 +280,14 @@ public final class WiredEvent { return signalChannel; } + public int getActionId() { + return actionId; + } + + public int getActionParameter() { + return actionParameter; + } + /** * Get the timestamp when this event was created. * @return milliseconds since epoch @@ -313,6 +343,8 @@ public final class WiredEvent { private boolean triggeredByEffect; private int callStackDepth; private int signalChannel; + private int actionId; + private int actionParameter = -1; private long createdAtMs = System.currentTimeMillis(); private Builder(Type type, Room room) { @@ -417,6 +449,16 @@ public final class WiredEvent { return this; } + public Builder actionId(int actionId) { + this.actionId = actionId; + return this; + } + + public Builder actionParameter(int actionParameter) { + this.actionParameter = actionParameter; + return this; + } + /** * Set a custom creation timestamp. * @param createdAtMs milliseconds since epoch diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredManager.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredManager.java index e31b948c..e758edf8 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredManager.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredManager.java @@ -235,6 +235,54 @@ public final class WiredManager { return handleEvent(event); } + /** + * Trigger when a user clicks furniture. + */ + public static boolean triggerUserClicksFurni(Room room, RoomUnit user, HabboItem item) { + if (!isEnabled() || room == null || user == null || item == null) { + return false; + } + + WiredEvent event = WiredEvents.userClicksFurni(room, user, item); + return handleEvent(event); + } + + /** + * Trigger when a user clicks invisible click tile furniture. + */ + public static boolean triggerUserClicksTile(Room room, RoomUnit user, HabboItem item) { + if (!isEnabled() || room == null || user == null || item == null) { + return false; + } + + WiredEvent event = WiredEvents.userClicksTile(room, user, item); + return handleEvent(event); + } + + /** + * Trigger when a user clicks another user. + */ + public static boolean triggerUserClicksUser(Room room, RoomUnit clickingUser, RoomUnit clickedUser) { + if (!isEnabled() || room == null || clickingUser == null || clickedUser == null) { + return false; + } + + WiredEvent event = WiredEvents.userClicksUser(room, clickingUser, clickedUser); + return handleEvent(event); + } + + /** + * Trigger when a user performs an avatar action. + */ + public static boolean triggerUserPerformsAction(Room room, RoomUnit user, int actionId, int actionParameter) { + if (!isEnabled() || room == null || user == null) { + return false; + } + + WiredEvent event = WiredEvents.userPerformsAction(room, user, actionId, actionParameter); + return handleEvent(event); + } + /** * Trigger when a user says something. */ @@ -259,6 +307,18 @@ public final class WiredManager { return handleEvent(event); } + /** + * Trigger when a user leaves the room. + */ + public static boolean triggerUserLeavesRoom(Room room, RoomUnit user) { + if (!isEnabled() || room == null || user == null) { + return false; + } + + WiredEvent event = WiredEvents.userLeavesRoom(room, user); + return handleEvent(event); + } + /** * Trigger when furniture state changes. */ @@ -295,6 +355,30 @@ public final class WiredManager { return handleEvent(event); } + /** + * Trigger a long periodic timer. + */ + public static boolean triggerTimerRepeatLong(Room room, HabboItem timerItem) { + if (!isEnabled() || room == null) { + return false; + } + + WiredEvent event = WiredEvents.timerRepeatLong(room, timerItem); + return handleEvent(event); + } + + /** + * Trigger a short periodic timer. + */ + public static boolean triggerTimerRepeatShort(Room room, HabboItem timerItem) { + if (!isEnabled() || room == null) { + return false; + } + + WiredEvent event = WiredEvents.timerRepeatShort(room, timerItem); + return handleEvent(event); + } + /** * Trigger game start. */ diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/migrate/WiredEvents.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/migrate/WiredEvents.java index 91bba744..e93072b2 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/migrate/WiredEvents.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/migrate/WiredEvents.java @@ -67,6 +67,70 @@ public final class WiredEvents { .build(); } + /** + * Create an event for when a user clicks furniture. + * @param room the room + * @param user the clicking user + * @param item the clicked furniture + * @return the event + */ + public static WiredEvent userClicksFurni(Room room, RoomUnit user, HabboItem item) { + RoomTile tile = room.getLayout().getTile(item.getX(), item.getY()); + return WiredEvent.builder(WiredEvent.Type.USER_CLICKS_FURNI, room) + .actor(user) + .sourceItem(item) + .tile(tile) + .build(); + } + + /** + * Create an event for when a user clicks invisible click tile furniture. + * @param room the room + * @param user the clicking user + * @param item the clicked furniture + * @return the event + */ + public static WiredEvent userClicksTile(Room room, RoomUnit user, HabboItem item) { + RoomTile tile = room.getLayout().getTile(item.getX(), item.getY()); + return WiredEvent.builder(WiredEvent.Type.USER_CLICKS_TILE, room) + .actor(user) + .sourceItem(item) + .tile(tile) + .build(); + } + + /** + * Create an event for when a user clicks another user. + * @param room the room + * @param clickingUser the user performing the click + * @param clickedUser the user who was clicked + * @return the event + */ + public static WiredEvent userClicksUser(Room room, RoomUnit clickingUser, RoomUnit clickedUser) { + return WiredEvent.builder(WiredEvent.Type.USER_CLICKS_USER, room) + .actor(clickedUser) + .targetUnit(clickingUser) + .tile(clickedUser.getCurrentLocation()) + .build(); + } + + /** + * Create an event for when a user performs an avatar action. + * @param room the room + * @param user the acting user + * @param actionId the wired action id + * @param actionParameter sign/dance parameter, or -1 when unused + * @return the event + */ + public static WiredEvent userPerformsAction(Room room, RoomUnit user, int actionId, int actionParameter) { + return WiredEvent.builder(WiredEvent.Type.USER_PERFORMS_ACTION, room) + .actor(user) + .tile(user.getCurrentLocation()) + .actionId(actionId) + .actionParameter(actionParameter) + .build(); + } + /** * Create an event for when a user enters the room. * @param room the room @@ -80,6 +144,19 @@ public final class WiredEvents { .build(); } + /** + * Create an event for when a user leaves the room. + * @param room the room + * @param user the user who left + * @return the event + */ + public static WiredEvent userLeavesRoom(Room room, RoomUnit user) { + return WiredEvent.builder(WiredEvent.Type.USER_LEAVES_ROOM, room) + .actor(user) + .tile(user.getCurrentLocation()) + .build(); + } + // ========== User Interaction Events ========== /** @@ -153,6 +230,18 @@ public final class WiredEvents { .build(); } + /** + * Create an event for a short periodic timer. + * @param room the room + * @param timerItem the timer furniture + * @return the event + */ + public static WiredEvent timerRepeatShort(Room room, HabboItem timerItem) { + return WiredEvent.builder(WiredEvent.Type.TIMER_REPEAT_SHORT, room) + .sourceItem(timerItem) + .build(); + } + // ========== Game Events ========== /** diff --git a/Emulator/src/main/java/com/eu/habbo/messages/PacketManager.java b/Emulator/src/main/java/com/eu/habbo/messages/PacketManager.java index 6bd33db3..757e1636 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/PacketManager.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/PacketManager.java @@ -387,6 +387,8 @@ public class PacketManager { this.registerHandler(Incoming.RoomPlacePaintEvent, RoomPlacePaintEvent.class); this.registerHandler(Incoming.RoomUserStartTypingEvent, RoomUserStartTypingEvent.class); this.registerHandler(Incoming.RoomUserStopTypingEvent, RoomUserStopTypingEvent.class); + this.registerHandler(Incoming.ClickFurniEvent, ClickFurniEvent.class); + this.registerHandler(Incoming.ClickUserEvent, ClickUserEvent.class); this.registerHandler(Incoming.ToggleFloorItemEvent, ToggleFloorItemEvent.class); this.registerHandler(Incoming.ToggleWallItemEvent, ToggleWallItemEvent.class); this.registerHandler(Incoming.RoomBackgroundEvent, RoomBackgroundEvent.class); @@ -647,4 +649,4 @@ public class PacketManager { this.registerHandler(Incoming.GameCenterEvent, GameCenterEvent.class); this.registerHandler(Incoming.GameCenterRequestGameStatusEvent, GameCenterRequestGameStatusEvent.class); } -} \ No newline at end of file +} diff --git a/Emulator/src/main/java/com/eu/habbo/messages/incoming/Incoming.java b/Emulator/src/main/java/com/eu/habbo/messages/incoming/Incoming.java index 8c9625e7..5bdc6847 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/incoming/Incoming.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/incoming/Incoming.java @@ -205,6 +205,7 @@ public class Incoming { public static final int RequestRoomDataEvent = 2230; public static final int RequestRoomHeightmapEvent = 2300; public static final int RequestGuildFurniWidgetEvent = 2651; + public static final int ClickFurniEvent = 6002; public static final int RequestOwnItemsEvent = 2105; public static final int RequestReportRoomEvent = 3267; public static final int ReportEvent = 1691; @@ -407,6 +408,7 @@ public class Incoming { // CUSTOM public static final int UpdateFurniturePositionEvent = 10019; + public static final int ClickUserEvent = 10020; public static final int RequestInventoryPetDelete = 10030; public static final int RequestInventoryBadgeDelete = 10031; } diff --git a/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/items/ClickFurniEvent.java b/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/items/ClickFurniEvent.java new file mode 100644 index 00000000..6ae99006 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/items/ClickFurniEvent.java @@ -0,0 +1,43 @@ +package com.eu.habbo.messages.incoming.rooms.items; + +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.wired.core.WiredManager; +import com.eu.habbo.messages.incoming.MessageHandler; + +public class ClickFurniEvent extends MessageHandler { + private static final String CLICK_TILE_INTERACTION = "room_invisible_click_tile"; + + @Override + public void handle() throws Exception { + Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + + if (room == null) { + return; + } + + int itemId = Math.abs(this.packet.readInt()); + this.packet.readInt(); + + HabboItem item = room.getHabboItem(itemId); + + if (item == null) { + return; + } + + WiredManager.triggerUserClicksFurni(room, this.client.getHabbo().getRoomUnit(), item); + + if (isClickTileItem(item)) { + WiredManager.triggerUserClicksTile(room, this.client.getHabbo().getRoomUnit(), item); + } + } + + private boolean isClickTileItem(HabboItem item) { + if (item == null || item.getBaseItem() == null || item.getBaseItem().getInteractionType() == null) { + return false; + } + + String interaction = item.getBaseItem().getInteractionType().getName(); + return interaction != null && interaction.equalsIgnoreCase(CLICK_TILE_INTERACTION); + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/users/ClickUserEvent.java b/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/users/ClickUserEvent.java new file mode 100644 index 00000000..5426e842 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/users/ClickUserEvent.java @@ -0,0 +1,33 @@ +package com.eu.habbo.messages.incoming.rooms.users; + +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.users.Habbo; +import com.eu.habbo.habbohotel.wired.core.WiredManager; +import com.eu.habbo.messages.incoming.MessageHandler; + +public class ClickUserEvent extends MessageHandler { + @Override + public void handle() throws Exception { + Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + + if (room == null) { + return; + } + + RoomUnit clickingUser = this.client.getHabbo().getRoomUnit(); + + if (clickingUser == null) { + return; + } + + int roomUnitId = this.packet.readInt(); + Habbo clickedHabbo = room.getHabboByRoomUnitId(roomUnitId); + + if (clickedHabbo == null || clickedHabbo.getRoomUnit() == null) { + return; + } + + WiredManager.triggerUserClicksUser(room, clickingUser, clickedHabbo.getRoomUnit()); + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserActionEvent.java b/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserActionEvent.java index 41c29f25..bc32465b 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserActionEvent.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserActionEvent.java @@ -4,6 +4,8 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomUserAction; import com.eu.habbo.habbohotel.users.Habbo; +import com.eu.habbo.habbohotel.wired.WiredUserActionType; +import com.eu.habbo.habbohotel.wired.core.WiredManager; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.rooms.users.RoomUserActionComposer; import com.eu.habbo.plugin.events.users.UserIdleEvent; @@ -26,6 +28,7 @@ public class RoomUserActionEvent extends MessageHandler { } int action = this.packet.readInt(); + int wiredAction = 0; if (action == 5) { UserIdleEvent event = new UserIdleEvent(this.client.getHabbo(), UserIdleEvent.IdleReason.ACTION, true); @@ -34,8 +37,10 @@ public class RoomUserActionEvent extends MessageHandler { if (!event.isCancelled()) { if (event.idle) { room.idle(habbo); + wiredAction = WiredUserActionType.RELAX; } else { room.unIdle(habbo); + wiredAction = WiredUserActionType.AWAKE; } } } else { @@ -51,6 +56,29 @@ public class RoomUserActionEvent extends MessageHandler { } room.sendComposer(new RoomUserActionComposer(habbo.getRoomUnit(), RoomUserAction.fromValue(action)).compose()); + + if (wiredAction == 0) { + switch (action) { + case 1: + wiredAction = WiredUserActionType.WAVE; + break; + case 2: + wiredAction = WiredUserActionType.BLOW_KISS; + break; + case 3: + wiredAction = WiredUserActionType.LAUGH; + break; + case 7: + wiredAction = WiredUserActionType.THUMB_UP; + break; + default: + break; + } + } + + if (wiredAction != 0) { + WiredManager.triggerUserPerformsAction(room, habbo.getRoomUnit(), wiredAction, -1); + } } } } diff --git a/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserDanceEvent.java b/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserDanceEvent.java index bafd54dd..bda9bd4e 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserDanceEvent.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserDanceEvent.java @@ -3,8 +3,9 @@ package com.eu.habbo.messages.incoming.rooms.users; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.users.DanceType; import com.eu.habbo.habbohotel.users.Habbo; +import com.eu.habbo.habbohotel.wired.WiredUserActionType; +import com.eu.habbo.habbohotel.wired.core.WiredManager; import com.eu.habbo.messages.incoming.MessageHandler; -import com.eu.habbo.messages.outgoing.rooms.users.RoomUserDanceComposer; import com.eu.habbo.plugin.events.users.UserIdleEvent; public class RoomUserDanceEvent extends MessageHandler { @@ -14,7 +15,7 @@ public class RoomUserDanceEvent extends MessageHandler { return; int danceId = this.packet.readInt(); - if (danceId >= 0 && danceId <= 5) { + if (danceId >= 0 && danceId <= 4) { if (this.client.getHabbo().getRoomUnit().isInRoom()) { Habbo habbo = this.client.getHabbo(); @@ -29,8 +30,6 @@ public class RoomUserDanceEvent extends MessageHandler { } } - habbo.getRoomUnit().setDanceType(DanceType.values()[danceId]); - UserIdleEvent event = new UserIdleEvent(this.client.getHabbo(), UserIdleEvent.IdleReason.DANCE, false); Emulator.getPluginManager().fireEvent(event); @@ -40,7 +39,11 @@ public class RoomUserDanceEvent extends MessageHandler { } } - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new RoomUserDanceComposer(habbo.getRoomUnit()).compose()); + this.client.getHabbo().getHabboInfo().getCurrentRoom().dance(habbo, DanceType.values()[danceId]); + + if (danceId > 0) { + WiredManager.triggerUserPerformsAction(this.client.getHabbo().getHabboInfo().getCurrentRoom(), habbo.getRoomUnit(), WiredUserActionType.DANCE, danceId); + } } } } diff --git a/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserSignEvent.java b/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserSignEvent.java index 3b2aaf93..fba5fccf 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserSignEvent.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserSignEvent.java @@ -5,6 +5,8 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionVoteCounter; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.wired.WiredUserActionType; +import com.eu.habbo.habbohotel.wired.core.WiredManager; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.plugin.events.users.UserSignEvent; @@ -22,6 +24,7 @@ public class RoomUserSignEvent extends MessageHandler { if (!Emulator.getPluginManager().fireEvent(event).isCancelled()) { this.client.getHabbo().getRoomUnit().setStatus(RoomUnitStatus.SIGN, event.sign + ""); this.client.getHabbo().getHabboInfo().getCurrentRoom().unIdle(this.client.getHabbo()); + WiredManager.triggerUserPerformsAction(room, this.client.getHabbo().getRoomUnit(), WiredUserActionType.SIGN, event.sign); if(signId <= 10) { diff --git a/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserSitEvent.java b/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserSitEvent.java index f3c8df7f..debdb49c 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserSitEvent.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserSitEvent.java @@ -7,11 +7,18 @@ import com.eu.habbo.plugin.events.users.UserIdleEvent; public class RoomUserSitEvent extends MessageHandler { @Override public void handle() throws Exception { + int posture = this.packet.readInt(); + if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != null) { if (this.client.getHabbo().getRoomUnit().isWalking()) { this.client.getHabbo().getRoomUnit().stopWalking(); } - this.client.getHabbo().getHabboInfo().getCurrentRoom().makeSit(this.client.getHabbo()); + + if (posture == 0) { + this.client.getHabbo().getHabboInfo().getCurrentRoom().makeStand(this.client.getHabbo()); + } else { + this.client.getHabbo().getHabboInfo().getCurrentRoom().makeSit(this.client.getHabbo()); + } UserIdleEvent event = new UserIdleEvent(this.client.getHabbo(), UserIdleEvent.IdleReason.WALKED, false); Emulator.getPluginManager().fireEvent(event); From d8a68ad8d33c580d48eae31bdc53f1e3c0261937 Mon Sep 17 00:00:00 2001 From: Lorenzune Date: Tue, 17 Mar 2026 03:27:55 +0100 Subject: [PATCH 04/12] feat(wired): add freeze and furni movement effects - register interaction types wf_act_freeze, wf_act_unfreeze, wf_act_furni_to_user, wf_act_user_to_furni and wf_act_furni_to_furni - add effect types FREEZE, UNFREEZE, FURNI_TO_USER, USER_TO_FURNI and FURNI_TO_FURNI - add freeze handling with cancel-on-teleport and cleanup on teleport or room leave - support furni-to-furni secondary target selection and immediate furni position persistence - prevent frozen users from walking until they are unfrozen or moved out of the frozen state --- .../habbo/habbohotel/items/ItemManager.java | 5 + .../wired/effects/WiredEffectFreeze.java | 175 +++++++++ .../effects/WiredEffectFurniToFurni.java | 354 ++++++++++++++++++ .../wired/effects/WiredEffectFurniToUser.java | 57 +++ .../wired/effects/WiredEffectUnfreeze.java | 149 ++++++++ .../effects/WiredEffectUserFurniBase.java | 260 +++++++++++++ .../wired/effects/WiredEffectUserToFurni.java | 48 +++ .../habbohotel/rooms/RoomUnitManager.java | 10 + .../habbohotel/wired/WiredEffectType.java | 7 +- .../wired/core/WiredFreezeUtil.java | 74 ++++ .../rooms/users/RoomUserWalkEvent.java | 3 +- .../threading/runnables/RoomUnitTeleport.java | 4 + .../teleport/TeleportActionFive.java | 4 + .../teleport/TeleportActionFour.java | 3 +- .../runnables/teleport/TeleportActionOne.java | 3 +- .../teleport/TeleportActionThree.java | 3 +- .../runnables/teleport/TeleportActionTwo.java | 3 +- 17 files changed, 1156 insertions(+), 6 deletions(-) create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectFreeze.java create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectFurniToFurni.java create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectFurniToUser.java create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectUnfreeze.java create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectUserFurniBase.java create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectUserToFurni.java create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredFreezeUtil.java diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java index 2a944f95..15f04d91 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java @@ -256,6 +256,11 @@ public class ItemManager { this.interactionsList.add(new ItemInteraction("wf_act_alert", WiredEffectAlert.class)); this.interactionsList.add(new ItemInteraction("wf_act_give_handitem", WiredEffectGiveHandItem.class)); this.interactionsList.add(new ItemInteraction("wf_act_give_effect", WiredEffectGiveEffect.class)); + this.interactionsList.add(new ItemInteraction("wf_act_freeze", WiredEffectFreeze.class)); + this.interactionsList.add(new ItemInteraction("wf_act_unfreeze", WiredEffectUnfreeze.class)); + this.interactionsList.add(new ItemInteraction("wf_act_furni_to_user", WiredEffectFurniToUser.class)); + this.interactionsList.add(new ItemInteraction("wf_act_user_to_furni", WiredEffectUserToFurni.class)); + this.interactionsList.add(new ItemInteraction("wf_act_furni_to_furni", WiredEffectFurniToFurni.class)); this.interactionsList.add(new ItemInteraction("wf_slc_furni_area", WiredEffectFurniArea.class)); this.interactionsList.add(new ItemInteraction("wf_slc_furni_neighborhood", WiredEffectFurniNeighborhood.class)); this.interactionsList.add(new ItemInteraction("wf_slc_furni_bytype", WiredEffectFurniByType.class)); diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectFreeze.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectFreeze.java new file mode 100644 index 00000000..66f11eae --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectFreeze.java @@ -0,0 +1,175 @@ +package com.eu.habbo.habbohotel.items.interactions.wired.effects; + +import com.eu.habbo.Emulator; +import com.eu.habbo.habbohotel.gameclients.GameClient; +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; +import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; +import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.wired.WiredEffectType; +import com.eu.habbo.habbohotel.wired.core.WiredContext; +import com.eu.habbo.habbohotel.wired.core.WiredFreezeUtil; +import com.eu.habbo.habbohotel.wired.core.WiredManager; +import com.eu.habbo.habbohotel.wired.core.WiredSourceUtil; +import com.eu.habbo.messages.ServerMessage; +import com.eu.habbo.messages.incoming.wired.WiredSaveException; +import gnu.trove.procedure.TObjectProcedure; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +public class WiredEffectFreeze extends InteractionWiredEffect { + private static final Set ALLOWED_EFFECT_IDS = Set.of(218, 12, 11, 53, 163); + public static final WiredEffectType type = WiredEffectType.FREEZE; + + private int effectId = 218; + private boolean cancelOnTeleport = false; + private int userSource = WiredSourceUtil.SOURCE_TRIGGER; + + public WiredEffectFreeze(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + } + + public WiredEffectFreeze(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + super(id, userId, item, extradata, limitedStack, limitedSells); + } + + @Override + public void execute(WiredContext ctx) { + Room room = ctx.room(); + + for (RoomUnit roomUnit : WiredSourceUtil.resolveUsers(ctx, this.userSource)) { + if (room.getHabbo(roomUnit) == null) { + continue; + } + + WiredFreezeUtil.freeze(room, roomUnit, this.effectId, this.cancelOnTeleport); + } + } + + @Deprecated + @Override + public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { + return false; + } + + @Override + public String getWiredData() { + return WiredManager.getGson().toJson(new JsonData(this.effectId, this.cancelOnTeleport, this.getDelay(), this.userSource)); + } + + @Override + public void loadWiredData(ResultSet set, Room room) throws SQLException { + String wiredData = set.getString("wired_data"); + + if (wiredData.startsWith("{")) { + JsonData data = WiredManager.getGson().fromJson(wiredData, JsonData.class); + this.effectId = ALLOWED_EFFECT_IDS.contains(data.effectId) ? data.effectId : 218; + this.cancelOnTeleport = data.cancelOnTeleport; + this.setDelay(data.delay); + this.userSource = data.userSource; + } else { + this.effectId = 218; + this.cancelOnTeleport = false; + this.setDelay(0); + this.userSource = WiredSourceUtil.SOURCE_TRIGGER; + } + } + + @Override + public void onPickUp() { + this.effectId = 218; + this.cancelOnTeleport = false; + this.setDelay(0); + this.userSource = WiredSourceUtil.SOURCE_TRIGGER; + } + + @Override + public WiredEffectType getType() { + return type; + } + + @Override + public void serializeWiredData(ServerMessage message, Room room) { + message.appendBoolean(false); + message.appendInt(5); + message.appendInt(0); + message.appendInt(this.getBaseItem().getSpriteId()); + message.appendInt(this.getId()); + message.appendString(""); + message.appendInt(3); + message.appendInt(this.effectId); + message.appendInt(this.cancelOnTeleport ? 1 : 0); + message.appendInt(this.userSource); + message.appendInt(0); + message.appendInt(this.getType().code); + message.appendInt(this.getDelay()); + + if (this.requiresTriggeringUser()) { + List invalidTriggers = new ArrayList<>(); + room.getRoomSpecialTypes().getTriggers(this.getX(), this.getY()).forEach(new TObjectProcedure() { + @Override + public boolean execute(InteractionWiredTrigger object) { + if (!object.isTriggeredByRoomUnit()) { + invalidTriggers.add(object.getBaseItem().getSpriteId()); + } + return true; + } + }); + message.appendInt(invalidTriggers.size()); + for (Integer i : invalidTriggers) { + message.appendInt(i); + } + } else { + message.appendInt(0); + } + } + + @Override + public boolean saveData(WiredSettings settings, GameClient gameClient) throws WiredSaveException { + if (settings.getIntParams().length < 3) { + throw new WiredSaveException("Invalid data"); + } + + int nextEffectId = settings.getIntParams()[0]; + if (!ALLOWED_EFFECT_IDS.contains(nextEffectId)) { + throw new WiredSaveException("Invalid freeze effect"); + } + + int delay = settings.getDelay(); + if (delay > Emulator.getConfig().getInt("hotel.wired.max_delay", 20)) { + throw new WiredSaveException("Delay too long"); + } + + this.effectId = nextEffectId; + this.cancelOnTeleport = settings.getIntParams()[1] == 1; + this.userSource = settings.getIntParams()[2]; + this.setDelay(delay); + + return true; + } + + @Override + public boolean requiresTriggeringUser() { + return this.userSource == WiredSourceUtil.SOURCE_TRIGGER; + } + + static class JsonData { + int effectId; + boolean cancelOnTeleport; + int delay; + int userSource; + + public JsonData(int effectId, boolean cancelOnTeleport, int delay, int userSource) { + this.effectId = effectId; + this.cancelOnTeleport = cancelOnTeleport; + this.delay = delay; + this.userSource = userSource; + } + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectFurniToFurni.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectFurniToFurni.java new file mode 100644 index 00000000..bdaa461b --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectFurniToFurni.java @@ -0,0 +1,354 @@ +package com.eu.habbo.habbohotel.items.interactions.wired.effects; + +import com.eu.habbo.Emulator; +import com.eu.habbo.habbohotel.gameclients.GameClient; +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; +import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; +import com.eu.habbo.habbohotel.rooms.FurnitureMovementError; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.wired.WiredEffectType; +import com.eu.habbo.habbohotel.wired.core.WiredContext; +import com.eu.habbo.habbohotel.wired.core.WiredManager; +import com.eu.habbo.habbohotel.wired.core.WiredSourceUtil; +import com.eu.habbo.messages.ServerMessage; +import com.eu.habbo.messages.incoming.wired.WiredSaveException; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +public class WiredEffectFurniToFurni extends InteractionWiredEffect { + private static final int SOURCE_SECONDARY_SELECTED = 101; + private static final String FURNI_SPLIT_REGEX = "[;,\\t]"; + private static final String FURNI_DELIMITER = ";"; + + public static final WiredEffectType type = WiredEffectType.FURNI_TO_FURNI; + + private final List moveItems = new ArrayList<>(); + private final List targetItems = new ArrayList<>(); + private int moveSource = WiredSourceUtil.SOURCE_TRIGGER; + private int targetSource = WiredSourceUtil.SOURCE_TRIGGER; + + public WiredEffectFurniToFurni(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + } + + public WiredEffectFurniToFurni(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + super(id, userId, item, extradata, limitedStack, limitedSells); + } + + @Override + public void execute(WiredContext ctx) { + Room room = ctx.room(); + + if (room == null) { + return; + } + + HabboItem moveItem = this.resolveLastMoveItem(ctx); + HabboItem targetItem = this.resolveLastTargetItem(ctx); + + if (moveItem == null || targetItem == null || moveItem.getId() == targetItem.getId()) { + return; + } + + RoomTile targetTile = room.getLayout().getTile(targetItem.getX(), targetItem.getY()); + if (targetTile == null) { + return; + } + + FurnitureMovementError error = room.moveFurniTo(moveItem, targetTile, moveItem.getRotation(), null, true, false); + if (error != FurnitureMovementError.NONE) { + room.moveFurniTo(moveItem, targetTile, moveItem.getRotation(), targetItem.getZ(), null, true, false); + } + } + + @Deprecated + @Override + public boolean execute(com.eu.habbo.habbohotel.rooms.RoomUnit roomUnit, Room room, Object[] stuff) { + return false; + } + + @Override + public String getWiredData() { + return WiredManager.getGson().toJson(new JsonData( + this.getDelay(), + this.moveItems.stream().map(HabboItem::getId).collect(Collectors.toList()), + this.targetItems.stream().map(HabboItem::getId).collect(Collectors.toList()), + this.moveSource, + this.targetSource + )); + } + + @Override + public void loadWiredData(ResultSet set, Room room) throws SQLException { + this.moveItems.clear(); + this.targetItems.clear(); + + String wiredData = set.getString("wired_data"); + + if (wiredData != null && wiredData.startsWith("{")) { + JsonData data = WiredManager.getGson().fromJson(wiredData, JsonData.class); + + this.setDelay(data.delay); + this.moveSource = data.moveSource; + this.targetSource = this.normalizeTargetSource(data.targetSource); + + this.loadItems(room, data.itemIds, this.moveItems); + this.loadItems(room, data.targetItemIds, this.targetItems); + + if (this.moveSource == WiredSourceUtil.SOURCE_TRIGGER && !this.moveItems.isEmpty()) { + this.moveSource = WiredSourceUtil.SOURCE_SELECTED; + } + + if (this.targetSource == WiredSourceUtil.SOURCE_TRIGGER && !this.targetItems.isEmpty()) { + this.targetSource = SOURCE_SECONDARY_SELECTED; + } + + return; + } + + if (wiredData != null && !wiredData.isEmpty()) { + String[] wiredDataOld = wiredData.split("\t"); + + if (wiredDataOld.length >= 1) { + this.setDelay(Integer.parseInt(wiredDataOld[0])); + } + + if (wiredDataOld.length >= 2 && !wiredDataOld[1].trim().isEmpty()) { + this.loadItems(room, this.parseIds(wiredDataOld[1], room), this.moveItems); + } + } + + this.moveSource = this.moveItems.isEmpty() ? WiredSourceUtil.SOURCE_TRIGGER : WiredSourceUtil.SOURCE_SELECTED; + this.targetSource = this.targetItems.isEmpty() ? WiredSourceUtil.SOURCE_TRIGGER : SOURCE_SECONDARY_SELECTED; + } + + @Override + public void onPickUp() { + this.moveItems.clear(); + this.targetItems.clear(); + this.moveSource = WiredSourceUtil.SOURCE_TRIGGER; + this.targetSource = WiredSourceUtil.SOURCE_TRIGGER; + this.setDelay(0); + } + + @Override + public void serializeWiredData(ServerMessage message, Room room) { + this.validateItems(this.moveItems); + this.validateItems(this.targetItems); + + message.appendBoolean(false); + message.appendInt(WiredManager.MAXIMUM_FURNI_SELECTION); + message.appendInt(this.moveItems.size()); + + for (HabboItem item : this.moveItems) { + message.appendInt(item.getId()); + } + + message.appendInt(this.getBaseItem().getSpriteId()); + message.appendInt(this.getId()); + message.appendString(this.serializeIds(this.targetItems)); + message.appendInt(2); + message.appendInt(this.moveSource); + message.appendInt(this.targetSource); + message.appendInt(0); + message.appendInt(this.getType().code); + message.appendInt(this.getDelay()); + message.appendInt(0); + } + + @Override + public boolean saveData(WiredSettings settings, GameClient gameClient) throws WiredSaveException { + this.moveSource = (settings.getIntParams().length > 0) ? settings.getIntParams()[0] : WiredSourceUtil.SOURCE_TRIGGER; + this.targetSource = this.normalizeTargetSource((settings.getIntParams().length > 1) ? settings.getIntParams()[1] : WiredSourceUtil.SOURCE_TRIGGER); + + Room room = this.getRoom(); + if (room == null) { + throw new WiredSaveException("Room not found"); + } + + List newMoveItems = new ArrayList<>(); + if (this.moveSource == WiredSourceUtil.SOURCE_SELECTED) { + for (int itemId : settings.getFurniIds()) { + HabboItem item = room.getHabboItem(itemId); + + if (item == null) { + throw new WiredSaveException(String.format("Item %s not found", itemId)); + } + + newMoveItems.add(item); + } + } + + if (newMoveItems.size() > Emulator.getConfig().getInt("hotel.wired.furni.selection.count")) { + throw new WiredSaveException("Too many furni selected"); + } + + List newTargetItems = new ArrayList<>(); + if (this.targetSource == SOURCE_SECONDARY_SELECTED) { + newTargetItems.addAll(this.parseItems(settings.getStringParam(), room)); + } + + if (newTargetItems.size() > Emulator.getConfig().getInt("hotel.wired.furni.selection.count")) { + throw new WiredSaveException("Too many furni selected"); + } + + int delay = settings.getDelay(); + if (delay > Emulator.getConfig().getInt("hotel.wired.max_delay", 20)) { + throw new WiredSaveException("Delay too long"); + } + + this.moveItems.clear(); + this.moveItems.addAll(newMoveItems); + + this.targetItems.clear(); + this.targetItems.addAll(newTargetItems); + + this.setDelay(delay); + + return true; + } + + @Override + public WiredEffectType getType() { + return type; + } + + @Override + protected long requiredCooldown() { + return COOLDOWN_MOVEMENT; + } + + private HabboItem resolveLastMoveItem(WiredContext ctx) { + return this.resolveLastItem(ctx, this.moveSource, this.moveItems); + } + + private HabboItem resolveLastTargetItem(WiredContext ctx) { + int source = (this.targetSource == SOURCE_SECONDARY_SELECTED) ? WiredSourceUtil.SOURCE_SELECTED : this.targetSource; + return this.resolveLastItem(ctx, source, this.targetItems); + } + + private HabboItem resolveLastItem(WiredContext ctx, int source, List items) { + if (source == WiredSourceUtil.SOURCE_SELECTED) { + this.validateItems(items); + } + + List resolvedItems = WiredSourceUtil.resolveItems(ctx, source, items); + + if (resolvedItems.isEmpty()) { + return null; + } + + for (int index = resolvedItems.size() - 1; index >= 0; index--) { + HabboItem item = resolvedItems.get(index); + + if (item != null) { + return item; + } + } + + return null; + } + + private List parseItems(String data, Room room) throws WiredSaveException { + List items = new ArrayList<>(); + if (data == null || data.trim().isEmpty() || room == null) { + return items; + } + + Set seen = new HashSet<>(); + + for (String part : data.split(FURNI_SPLIT_REGEX)) { + if (part == null) { + continue; + } + + String trimmed = part.trim(); + if (trimmed.isEmpty()) { + continue; + } + + int itemId; + try { + itemId = Integer.parseInt(trimmed); + } catch (NumberFormatException e) { + continue; + } + + if (itemId <= 0 || !seen.add(itemId)) { + continue; + } + + HabboItem item = room.getHabboItem(itemId); + if (item == null) { + throw new WiredSaveException(String.format("Item %s not found", itemId)); + } + + items.add(item); + } + + return items; + } + + private List parseIds(String data, Room room) { + try { + return this.parseItems(data, room).stream().map(HabboItem::getId).collect(Collectors.toList()); + } catch (WiredSaveException e) { + return new ArrayList<>(); + } + } + + private void loadItems(Room room, List itemIds, List target) { + if (room == null || itemIds == null || itemIds.isEmpty()) { + return; + } + + for (Integer itemId : itemIds) { + HabboItem item = room.getHabboItem(itemId); + + if (item != null) { + target.add(item); + } + } + } + + private int normalizeTargetSource(int source) { + return (source == WiredSourceUtil.SOURCE_SELECTED) ? SOURCE_SECONDARY_SELECTED : source; + } + + private String serializeIds(List items) { + if (items == null || items.isEmpty()) { + return ""; + } + + return items.stream() + .map(HabboItem::getId) + .distinct() + .map(String::valueOf) + .collect(Collectors.joining(FURNI_DELIMITER)); + } + + static class JsonData { + int delay; + List itemIds; + List targetItemIds; + int moveSource; + int targetSource; + + public JsonData(int delay, List itemIds, List targetItemIds, int moveSource, int targetSource) { + this.delay = delay; + this.itemIds = itemIds; + this.targetItemIds = targetItemIds; + this.moveSource = moveSource; + this.targetSource = targetSource; + } + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectFurniToUser.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectFurniToUser.java new file mode 100644 index 00000000..62df4762 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectFurniToUser.java @@ -0,0 +1,57 @@ +package com.eu.habbo.habbohotel.items.interactions.wired.effects; + +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.rooms.FurnitureMovementError; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.users.Habbo; +import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.wired.WiredEffectType; +import com.eu.habbo.habbohotel.wired.core.WiredContext; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class WiredEffectFurniToUser extends WiredEffectUserFurniBase { + public static final WiredEffectType type = WiredEffectType.FURNI_TO_USER; + + public WiredEffectFurniToUser(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + } + + public WiredEffectFurniToUser(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + super(id, userId, item, extradata, limitedStack, limitedSells); + } + + @Override + public void execute(WiredContext ctx) { + Room room = ctx.room(); + HabboItem item = this.resolveLastItem(ctx); + Habbo habbo = this.resolveLastHabbo(room, ctx); + + if (room == null || item == null || habbo == null || habbo.getRoomUnit() == null) { + return; + } + + RoomTile targetTile = habbo.getRoomUnit().getCurrentLocation(); + if (targetTile == null) { + return; + } + + FurnitureMovementError error = room.moveFurniTo(item, targetTile, item.getRotation(), null, true, false); + if (error != FurnitureMovementError.NONE && item.getBaseItem().getStateCount() > 0) { + room.moveFurniTo(item, targetTile, item.getRotation(), item.getZ(), null, true, false); + } + } + + @Deprecated + @Override + public boolean execute(com.eu.habbo.habbohotel.rooms.RoomUnit roomUnit, Room room, Object[] stuff) { + return false; + } + + @Override + public WiredEffectType getType() { + return type; + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectUnfreeze.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectUnfreeze.java new file mode 100644 index 00000000..40978a4b --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectUnfreeze.java @@ -0,0 +1,149 @@ +package com.eu.habbo.habbohotel.items.interactions.wired.effects; + +import com.eu.habbo.Emulator; +import com.eu.habbo.habbohotel.gameclients.GameClient; +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; +import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; +import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.wired.WiredEffectType; +import com.eu.habbo.habbohotel.wired.core.WiredContext; +import com.eu.habbo.habbohotel.wired.core.WiredFreezeUtil; +import com.eu.habbo.habbohotel.wired.core.WiredManager; +import com.eu.habbo.habbohotel.wired.core.WiredSourceUtil; +import com.eu.habbo.messages.ServerMessage; +import com.eu.habbo.messages.incoming.wired.WiredSaveException; +import gnu.trove.procedure.TObjectProcedure; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +public class WiredEffectUnfreeze extends InteractionWiredEffect { + public static final WiredEffectType type = WiredEffectType.UNFREEZE; + + private int userSource = WiredSourceUtil.SOURCE_TRIGGER; + + public WiredEffectUnfreeze(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + } + + public WiredEffectUnfreeze(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + super(id, userId, item, extradata, limitedStack, limitedSells); + } + + @Override + public void execute(WiredContext ctx) { + Room room = ctx.room(); + + for (RoomUnit roomUnit : WiredSourceUtil.resolveUsers(ctx, this.userSource)) { + if (room.getHabbo(roomUnit) == null || !WiredFreezeUtil.isFrozen(roomUnit)) { + continue; + } + + WiredFreezeUtil.unfreeze(room, roomUnit); + } + } + + @Deprecated + @Override + public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { + return false; + } + + @Override + public String getWiredData() { + return WiredManager.getGson().toJson(new JsonData(this.getDelay(), this.userSource)); + } + + @Override + public void loadWiredData(ResultSet set, Room room) throws SQLException { + String wiredData = set.getString("wired_data"); + + if (wiredData.startsWith("{")) { + JsonData data = WiredManager.getGson().fromJson(wiredData, JsonData.class); + this.setDelay(data.delay); + this.userSource = data.userSource; + } else { + this.setDelay(0); + this.userSource = WiredSourceUtil.SOURCE_TRIGGER; + } + } + + @Override + public void onPickUp() { + this.setDelay(0); + this.userSource = WiredSourceUtil.SOURCE_TRIGGER; + } + + @Override + public WiredEffectType getType() { + return type; + } + + @Override + public void serializeWiredData(ServerMessage message, Room room) { + message.appendBoolean(false); + message.appendInt(5); + message.appendInt(0); + message.appendInt(this.getBaseItem().getSpriteId()); + message.appendInt(this.getId()); + message.appendString(""); + message.appendInt(1); + message.appendInt(this.userSource); + message.appendInt(0); + message.appendInt(this.getType().code); + message.appendInt(this.getDelay()); + + if (this.requiresTriggeringUser()) { + List invalidTriggers = new ArrayList<>(); + room.getRoomSpecialTypes().getTriggers(this.getX(), this.getY()).forEach(new TObjectProcedure() { + @Override + public boolean execute(InteractionWiredTrigger object) { + if (!object.isTriggeredByRoomUnit()) { + invalidTriggers.add(object.getBaseItem().getSpriteId()); + } + return true; + } + }); + message.appendInt(invalidTriggers.size()); + for (Integer i : invalidTriggers) { + message.appendInt(i); + } + } else { + message.appendInt(0); + } + } + + @Override + public boolean saveData(WiredSettings settings, GameClient gameClient) throws WiredSaveException { + int[] params = settings.getIntParams(); + this.userSource = (params.length > 0) ? params[0] : WiredSourceUtil.SOURCE_TRIGGER; + + int delay = settings.getDelay(); + if (delay > Emulator.getConfig().getInt("hotel.wired.max_delay", 20)) { + throw new WiredSaveException("Delay too long"); + } + + this.setDelay(delay); + return true; + } + + @Override + public boolean requiresTriggeringUser() { + return this.userSource == WiredSourceUtil.SOURCE_TRIGGER; + } + + static class JsonData { + int delay; + int userSource; + + public JsonData(int delay, int userSource) { + this.delay = delay; + this.userSource = userSource; + } + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectUserFurniBase.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectUserFurniBase.java new file mode 100644 index 00000000..bc86f16d --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectUserFurniBase.java @@ -0,0 +1,260 @@ +package com.eu.habbo.habbohotel.items.interactions.wired.effects; + +import com.eu.habbo.Emulator; +import com.eu.habbo.habbohotel.gameclients.GameClient; +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; +import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; +import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.users.Habbo; +import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.wired.WiredEffectType; +import com.eu.habbo.habbohotel.wired.core.WiredContext; +import com.eu.habbo.habbohotel.wired.core.WiredManager; +import com.eu.habbo.habbohotel.wired.core.WiredSourceUtil; +import com.eu.habbo.messages.ServerMessage; +import com.eu.habbo.messages.incoming.wired.WiredSaveException; +import gnu.trove.procedure.TObjectProcedure; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +public abstract class WiredEffectUserFurniBase extends InteractionWiredEffect { + protected final List items = new ArrayList<>(); + protected int furniSource = WiredSourceUtil.SOURCE_TRIGGER; + protected int userSource = WiredSourceUtil.SOURCE_TRIGGER; + + public WiredEffectUserFurniBase(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + } + + public WiredEffectUserFurniBase(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + super(id, userId, item, extradata, limitedStack, limitedSells); + } + + protected HabboItem resolveLastItem(WiredContext ctx) { + Room room = ctx.room(); + List effectiveItems = WiredSourceUtil.resolveItems(ctx, this.furniSource, this.items); + + if (this.furniSource == WiredSourceUtil.SOURCE_SELECTED && room != null) { + this.items.removeIf(item -> item == null + || item.getRoomId() != this.getRoomId() + || room.getHabboItem(item.getId()) == null); + } + + if (effectiveItems.isEmpty()) { + return null; + } + + for (int index = effectiveItems.size() - 1; index >= 0; index--) { + HabboItem item = effectiveItems.get(index); + + if (item != null) { + return item; + } + } + + return null; + } + + protected Habbo resolveLastHabbo(Room room, WiredContext ctx) { + Habbo targetHabbo = null; + + for (RoomUnit unit : WiredSourceUtil.resolveUsers(ctx, this.userSource)) { + Habbo habbo = room.getHabbo(unit); + + if (habbo != null) { + targetHabbo = habbo; + } + } + + return targetHabbo; + } + + protected List resolveHabbos(Room room, WiredContext ctx) { + List habbos = new ArrayList<>(); + + for (RoomUnit unit : WiredSourceUtil.resolveUsers(ctx, this.userSource)) { + Habbo habbo = room.getHabbo(unit); + + if (habbo != null) { + habbos.add(habbo); + } + } + + return habbos; + } + + @Override + public String getWiredData() { + return WiredManager.getGson().toJson(new JsonData( + this.getDelay(), + this.items.stream().map(HabboItem::getId).collect(Collectors.toList()), + this.furniSource, + this.userSource + )); + } + + @Override + public void loadWiredData(ResultSet set, Room room) throws SQLException { + this.items.clear(); + String wiredData = set.getString("wired_data"); + + if (wiredData.startsWith("{")) { + JsonData data = WiredManager.getGson().fromJson(wiredData, JsonData.class); + this.setDelay(data.delay); + this.furniSource = data.furniSource; + this.userSource = data.userSource; + + if (data.itemIds != null) { + for (Integer id : data.itemIds) { + HabboItem item = room.getHabboItem(id); + + if (item != null) { + this.items.add(item); + } + } + } + + if (this.furniSource == WiredSourceUtil.SOURCE_TRIGGER && !this.items.isEmpty()) { + this.furniSource = WiredSourceUtil.SOURCE_SELECTED; + } + } else { + String[] wiredDataOld = wiredData.split("\t"); + + if (wiredDataOld.length >= 1) { + this.setDelay(Integer.parseInt(wiredDataOld[0])); + } + + if (wiredDataOld.length == 2 && wiredDataOld[1].contains(";")) { + for (String s : wiredDataOld[1].split(";")) { + HabboItem item = room.getHabboItem(Integer.parseInt(s)); + + if (item != null) { + this.items.add(item); + } + } + } + + this.furniSource = this.items.isEmpty() ? WiredSourceUtil.SOURCE_TRIGGER : WiredSourceUtil.SOURCE_SELECTED; + this.userSource = WiredSourceUtil.SOURCE_TRIGGER; + } + } + + @Override + public void onPickUp() { + this.items.clear(); + this.furniSource = WiredSourceUtil.SOURCE_TRIGGER; + this.userSource = WiredSourceUtil.SOURCE_TRIGGER; + this.setDelay(0); + } + + @Override + public void serializeWiredData(ServerMessage message, Room room) { + List itemsSnapshot = new ArrayList<>(this.items); + itemsSnapshot.removeIf(item -> item == null + || item.getRoomId() != this.getRoomId() + || room.getHabboItem(item.getId()) == null); + this.items.clear(); + this.items.addAll(itemsSnapshot); + + message.appendBoolean(false); + message.appendInt(WiredManager.MAXIMUM_FURNI_SELECTION); + message.appendInt(itemsSnapshot.size()); + for (HabboItem item : itemsSnapshot) { + message.appendInt(item.getId()); + } + + message.appendInt(this.getBaseItem().getSpriteId()); + message.appendInt(this.getId()); + message.appendString(""); + message.appendInt(2); + message.appendInt(this.furniSource); + message.appendInt(this.userSource); + message.appendInt(0); + message.appendInt(this.getType().code); + message.appendInt(this.getDelay()); + + if (this.requiresTriggeringUser()) { + List invalidTriggers = new ArrayList<>(); + room.getRoomSpecialTypes().getTriggers(this.getX(), this.getY()).forEach(new TObjectProcedure() { + @Override + public boolean execute(InteractionWiredTrigger object) { + if (!object.isTriggeredByRoomUnit()) { + invalidTriggers.add(object.getId()); + } + return true; + } + }); + message.appendInt(invalidTriggers.size()); + for (Integer i : invalidTriggers) { + message.appendInt(i); + } + } else { + message.appendInt(0); + } + } + + @Override + public boolean saveData(WiredSettings settings, GameClient gameClient) throws WiredSaveException { + this.furniSource = (settings.getIntParams().length > 0) ? settings.getIntParams()[0] : WiredSourceUtil.SOURCE_TRIGGER; + this.userSource = (settings.getIntParams().length > 1) ? settings.getIntParams()[1] : WiredSourceUtil.SOURCE_TRIGGER; + + if (settings.getFurniIds().length > Emulator.getConfig().getInt("hotel.wired.furni.selection.count")) { + throw new WiredSaveException("Too many furni selected"); + } + + Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()); + if (room == null) { + throw new WiredSaveException("Room not found"); + } + + List newItems = new ArrayList<>(); + if (this.furniSource == WiredSourceUtil.SOURCE_SELECTED) { + for (int itemId : settings.getFurniIds()) { + HabboItem item = room.getHabboItem(itemId); + + if (item == null) { + throw new WiredSaveException(String.format("Item %s not found", itemId)); + } + + newItems.add(item); + } + } + + int delay = settings.getDelay(); + if (delay > Emulator.getConfig().getInt("hotel.wired.max_delay", 20)) { + throw new WiredSaveException("Delay too long"); + } + + this.items.clear(); + this.items.addAll(newItems); + this.setDelay(delay); + + return true; + } + + @Override + public boolean requiresTriggeringUser() { + return this.userSource == WiredSourceUtil.SOURCE_TRIGGER; + } + + static class JsonData { + int delay; + List itemIds; + int furniSource; + int userSource; + + public JsonData(int delay, List itemIds, int furniSource, int userSource) { + this.delay = delay; + this.itemIds = itemIds; + this.furniSource = furniSource; + this.userSource = userSource; + } + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectUserToFurni.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectUserToFurni.java new file mode 100644 index 00000000..b5d50cc3 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectUserToFurni.java @@ -0,0 +1,48 @@ +package com.eu.habbo.habbohotel.items.interactions.wired.effects; + +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.users.Habbo; +import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.wired.WiredEffectType; +import com.eu.habbo.habbohotel.wired.core.WiredContext; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class WiredEffectUserToFurni extends WiredEffectUserFurniBase { + public static final WiredEffectType type = WiredEffectType.USER_TO_FURNI; + + public WiredEffectUserToFurni(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + } + + public WiredEffectUserToFurni(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + super(id, userId, item, extradata, limitedStack, limitedSells); + } + + @Override + public void execute(WiredContext ctx) { + Room room = ctx.room(); + HabboItem item = this.resolveLastItem(ctx); + + if (room == null || item == null) { + return; + } + + for (Habbo habbo : this.resolveHabbos(room, ctx)) { + room.teleportHabboToItem(habbo, item); + } + } + + @Deprecated + @Override + public boolean execute(com.eu.habbo.habbohotel.rooms.RoomUnit roomUnit, Room room, Object[] stuff) { + return false; + } + + @Override + public WiredEffectType getType() { + return type; + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnitManager.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnitManager.java index 9ac9c726..45b4e919 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnitManager.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnitManager.java @@ -12,6 +12,7 @@ import com.eu.habbo.habbohotel.users.DanceType; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboGender; import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.wired.core.WiredFreezeUtil; import com.eu.habbo.habbohotel.wired.core.WiredManager; import com.eu.habbo.messages.outgoing.generic.alerts.GenericErrorMessagesComposer; import com.eu.habbo.messages.outgoing.inventory.AddPetComposer; @@ -217,6 +218,12 @@ public class RoomUnitManager { return; } + if (habbo.getRoomUnit() != null) { + WiredManager.triggerUserLeavesRoom(this.room, habbo.getRoomUnit()); + if (WiredFreezeUtil.isFrozen(habbo.getRoomUnit())) { + WiredFreezeUtil.unfreeze(this.room, habbo.getRoomUnit()); + } + } if (habbo.getRoomUnit() != null && habbo.getRoomUnit().getCurrentLocation() != null) { habbo.getRoomUnit().getCurrentLocation().removeUnit(habbo.getRoomUnit()); } @@ -1299,6 +1306,8 @@ public class RoomUnitManager { */ public void teleportRoomUnitToLocation(RoomUnit roomUnit, short x, short y, double z) { if (this.room.isLoaded()) { + WiredFreezeUtil.onTeleport(this.room, roomUnit); + RoomTile tile = this.room.getLayout().getTile(x, y); if (z < tile.z) { @@ -1310,6 +1319,7 @@ public class RoomUnitManager { roomUnit.setZ(z); roomUnit.setPreviousLocationZ(z); this.room.updateRoomUnit(roomUnit); + WiredFreezeUtil.restoreWalkState(roomUnit); } } diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredEffectType.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredEffectType.java index 0d5e74d2..d1f01bcc 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredEffectType.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredEffectType.java @@ -32,7 +32,12 @@ public enum WiredEffectType { FURNI_BYTYPE_SELECTOR(30), USERS_AREA_SELECTOR(31), USERS_NEIGHBORHOOD_SELECTOR(32), - SEND_SIGNAL(33); + SEND_SIGNAL(33), + FREEZE(34), + UNFREEZE(35), + FURNI_TO_USER(36), + USER_TO_FURNI(37), + FURNI_TO_FURNI(38); public final int code; diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredFreezeUtil.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredFreezeUtil.java new file mode 100644 index 00000000..70b73254 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredFreezeUtil.java @@ -0,0 +1,74 @@ +package com.eu.habbo.habbohotel.wired.core; + +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.messages.outgoing.rooms.users.RoomUserStatusComposer; + +public final class WiredFreezeUtil { + private static final String CACHE_ACTIVE = "wired.freeze.active"; + private static final String CACHE_EFFECT_ID = "wired.freeze.effect_id"; + private static final String CACHE_CANCEL_ON_TELEPORT = "wired.freeze.cancel_on_teleport"; + + private WiredFreezeUtil() { + } + + public static boolean isFrozen(RoomUnit roomUnit) { + return roomUnit != null && Boolean.TRUE.equals(roomUnit.getCacheable().get(CACHE_ACTIVE)); + } + + public static void freeze(Room room, RoomUnit roomUnit, int effectId, boolean cancelOnTeleport) { + if (room == null || roomUnit == null || effectId <= 0) { + return; + } + + roomUnit.getCacheable().put(CACHE_ACTIVE, true); + roomUnit.getCacheable().put(CACHE_EFFECT_ID, effectId); + roomUnit.getCacheable().put(CACHE_CANCEL_ON_TELEPORT, cancelOnTeleport); + + roomUnit.stopWalking(); + roomUnit.setCanWalk(false); + roomUnit.statusUpdate(true); + + room.giveEffect(roomUnit, effectId, Integer.MAX_VALUE); + room.sendComposer(new RoomUserStatusComposer(roomUnit).compose()); + } + + public static void unfreeze(Room room, RoomUnit roomUnit) { + if (roomUnit == null) { + return; + } + + roomUnit.getCacheable().remove(CACHE_ACTIVE); + roomUnit.getCacheable().remove(CACHE_EFFECT_ID); + roomUnit.getCacheable().remove(CACHE_CANCEL_ON_TELEPORT); + + roomUnit.stopWalking(); + roomUnit.setCanWalk(true); + roomUnit.statusUpdate(true); + + if (room != null) { + room.giveEffect(roomUnit, 0, -1); + room.sendComposer(new RoomUserStatusComposer(roomUnit).compose()); + } else { + roomUnit.setEffectId(0, 0); + } + } + + public static void onTeleport(Room room, RoomUnit roomUnit) { + if (!isFrozen(roomUnit)) { + return; + } + + if (Boolean.TRUE.equals(roomUnit.getCacheable().get(CACHE_CANCEL_ON_TELEPORT))) { + unfreeze(room, roomUnit); + } + } + + public static void restoreWalkState(RoomUnit roomUnit) { + if (roomUnit == null) { + return; + } + + roomUnit.setCanWalk(!isFrozen(roomUnit)); + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserWalkEvent.java b/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserWalkEvent.java index 2b5d5a5e..0e174672 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserWalkEvent.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/users/RoomUserWalkEvent.java @@ -10,6 +10,7 @@ import com.eu.habbo.habbohotel.rooms.BedProfile; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboInfo; import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.wired.core.WiredFreezeUtil; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.rooms.users.RoomUnitOnRollerComposer; import com.eu.habbo.plugin.events.users.UserIdleEvent; @@ -46,7 +47,7 @@ public class RoomUserWalkEvent extends MessageHandler { Room room = habboInfo.getCurrentRoom(); try { - if (roomUnit != null && roomUnit.isInRoom() && roomUnit.canWalk()) { + if (roomUnit != null && roomUnit.isInRoom() && roomUnit.canWalk() && !WiredFreezeUtil.isFrozen(roomUnit)) { if (roomUnit.cmdTeleport) { handleTeleport(room, (short) x, (short) y, roomUnit, habboInfo); return; diff --git a/Emulator/src/main/java/com/eu/habbo/threading/runnables/RoomUnitTeleport.java b/Emulator/src/main/java/com/eu/habbo/threading/runnables/RoomUnitTeleport.java index 9747026e..43ddeb97 100644 --- a/Emulator/src/main/java/com/eu/habbo/threading/runnables/RoomUnitTeleport.java +++ b/Emulator/src/main/java/com/eu/habbo/threading/runnables/RoomUnitTeleport.java @@ -5,6 +5,7 @@ import com.eu.habbo.habbohotel.rooms.RoomTile; import com.eu.habbo.habbohotel.rooms.RoomUnit; import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.wired.core.WiredFreezeUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,6 +39,8 @@ public class RoomUnitTeleport implements Runnable { return; } + WiredFreezeUtil.onTeleport(this.room, this.roomUnit); + RoomTile lastLocation = this.roomUnit.getCurrentLocation(); RoomTile newLocation = this.room.getLayout().getTile((short) this.x, (short) this.y); @@ -60,6 +63,7 @@ public class RoomUnitTeleport implements Runnable { //this.room.sendComposer(teleportMessage); this.roomUnit.statusUpdate(true); roomUnit.isWiredTeleporting = false; + WiredFreezeUtil.restoreWalkState(this.roomUnit); this.room.updateHabbosAt(newLocation.x, newLocation.y); this.room.updateBotsAt(newLocation.x, newLocation.y); diff --git a/Emulator/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionFive.java b/Emulator/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionFive.java index 9fab330b..ea5d1ee8 100644 --- a/Emulator/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionFive.java +++ b/Emulator/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionFive.java @@ -5,6 +5,7 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.interactions.InteractionTeleportTile; import com.eu.habbo.habbohotel.rooms.*; import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.wired.core.WiredFreezeUtil; import com.eu.habbo.threading.runnables.HabboItemNewState; import com.eu.habbo.threading.runnables.RoomUnitWalkToLocation; @@ -46,6 +47,7 @@ class TeleportActionFive implements Runnable { List onSuccess = new ArrayList(); onSuccess.add(() -> { unit.setCanLeaveRoomByDoor(true); + WiredFreezeUtil.restoreWalkState(unit); Emulator.getThreading().run(() -> { unit.isLeavingTeleporter = false; @@ -57,6 +59,8 @@ class TeleportActionFive implements Runnable { unit.statusUpdate(true); unit.isLeavingTeleporter = true; Emulator.getThreading().run(new RoomUnitWalkToLocation(unit, tile, room, onSuccess, onSuccess)); + } else { + WiredFreezeUtil.restoreWalkState(unit); } this.currentTeleport.setExtradata("1"); diff --git a/Emulator/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionFour.java b/Emulator/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionFour.java index 5fea22ef..7b13dec4 100644 --- a/Emulator/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionFour.java +++ b/Emulator/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionFour.java @@ -4,6 +4,7 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.wired.core.WiredFreezeUtil; class TeleportActionFour implements Runnable { private final HabboItem currentTeleport; @@ -21,7 +22,7 @@ class TeleportActionFour implements Runnable { if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != this.room) { this.client.getHabbo().getHabboInfo().setLoadingRoom(0); this.client.getHabbo().getRoomUnit().isTeleporting = false; - this.client.getHabbo().getRoomUnit().setCanWalk(true); + WiredFreezeUtil.restoreWalkState(this.client.getHabbo().getRoomUnit()); this.currentTeleport.setExtradata("0"); this.room.updateItem(this.currentTeleport); return; diff --git a/Emulator/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionOne.java b/Emulator/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionOne.java index 757db39c..8ba24c37 100644 --- a/Emulator/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionOne.java +++ b/Emulator/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionOne.java @@ -7,6 +7,7 @@ import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; import com.eu.habbo.habbohotel.rooms.RoomUserRotation; import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.wired.core.WiredFreezeUtil; import com.eu.habbo.messages.outgoing.rooms.users.RoomUserStatusComposer; public class TeleportActionOne implements Runnable { @@ -25,7 +26,7 @@ public class TeleportActionOne implements Runnable { if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != this.room) { this.client.getHabbo().getHabboInfo().setLoadingRoom(0); this.client.getHabbo().getRoomUnit().isTeleporting = false; - this.client.getHabbo().getRoomUnit().setCanWalk(true); + WiredFreezeUtil.restoreWalkState(this.client.getHabbo().getRoomUnit()); return; } diff --git a/Emulator/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionThree.java b/Emulator/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionThree.java index ed3a5d84..efcd9ca7 100644 --- a/Emulator/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionThree.java +++ b/Emulator/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionThree.java @@ -9,6 +9,7 @@ import com.eu.habbo.habbohotel.rooms.RoomTile; import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; import com.eu.habbo.habbohotel.rooms.RoomUserRotation; import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.wired.core.WiredFreezeUtil; class TeleportActionThree implements Runnable { private final HabboItem currentTeleport; @@ -26,7 +27,7 @@ class TeleportActionThree implements Runnable { if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != this.room) { this.client.getHabbo().getHabboInfo().setLoadingRoom(0); this.client.getHabbo().getRoomUnit().isTeleporting = false; - this.client.getHabbo().getRoomUnit().setCanWalk(true); + WiredFreezeUtil.restoreWalkState(this.client.getHabbo().getRoomUnit()); return; } diff --git a/Emulator/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionTwo.java b/Emulator/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionTwo.java index eb5c4bb0..53cdc9c7 100644 --- a/Emulator/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionTwo.java +++ b/Emulator/src/main/java/com/eu/habbo/threading/runnables/teleport/TeleportActionTwo.java @@ -7,6 +7,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionTeleportTile; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.wired.core.WiredFreezeUtil; import com.eu.habbo.messages.outgoing.rooms.users.RoomUserStatusComposer; import com.eu.habbo.threading.runnables.HabboItemNewState; import org.slf4j.Logger; @@ -41,7 +42,7 @@ class TeleportActionTwo implements Runnable { if (this.client.getHabbo().getHabboInfo().getCurrentRoom() != this.room) { this.client.getHabbo().getHabboInfo().setLoadingRoom(0); this.client.getHabbo().getRoomUnit().isTeleporting = false; - this.client.getHabbo().getRoomUnit().setCanWalk(true); + WiredFreezeUtil.restoreWalkState(this.client.getHabbo().getRoomUnit()); return; } From 8a9670759af7cbd913d8ea1f2bfc78f337d27bce Mon Sep 17 00:00:00 2001 From: Lorenzune Date: Wed, 18 Mar 2026 14:38:21 +0100 Subject: [PATCH 05/12] feat(wired): add altitude and relative move effects --- .../habbo/habbohotel/items/ItemManager.java | 2 + .../effects/WiredEffectRelativeMove.java | 283 +++++++++++++++++ .../wired/effects/WiredEffectSetAltitude.java | 288 ++++++++++++++++++ .../habbohotel/wired/WiredEffectType.java | 4 +- 4 files changed, 576 insertions(+), 1 deletion(-) create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectRelativeMove.java create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectSetAltitude.java diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java index 2a944f95..c23f37d6 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java @@ -256,6 +256,8 @@ public class ItemManager { this.interactionsList.add(new ItemInteraction("wf_act_alert", WiredEffectAlert.class)); this.interactionsList.add(new ItemInteraction("wf_act_give_handitem", WiredEffectGiveHandItem.class)); this.interactionsList.add(new ItemInteraction("wf_act_give_effect", WiredEffectGiveEffect.class)); + this.interactionsList.add(new ItemInteraction("wf_act_set_altitude", WiredEffectSetAltitude.class)); + this.interactionsList.add(new ItemInteraction("wf_act_rel_mov", WiredEffectRelativeMove.class)); this.interactionsList.add(new ItemInteraction("wf_slc_furni_area", WiredEffectFurniArea.class)); this.interactionsList.add(new ItemInteraction("wf_slc_furni_neighborhood", WiredEffectFurniNeighborhood.class)); this.interactionsList.add(new ItemInteraction("wf_slc_furni_bytype", WiredEffectFurniByType.class)); diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectRelativeMove.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectRelativeMove.java new file mode 100644 index 00000000..e2fcf249 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectRelativeMove.java @@ -0,0 +1,283 @@ +package com.eu.habbo.habbohotel.items.interactions.wired.effects; + +import com.eu.habbo.Emulator; +import com.eu.habbo.habbohotel.gameclients.GameClient; +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; +import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.wired.WiredEffectType; +import com.eu.habbo.habbohotel.wired.core.WiredContext; +import com.eu.habbo.habbohotel.wired.core.WiredManager; +import com.eu.habbo.habbohotel.wired.core.WiredSourceUtil; +import com.eu.habbo.messages.ServerMessage; +import com.eu.habbo.messages.incoming.wired.WiredSaveException; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +public class WiredEffectRelativeMove extends InteractionWiredEffect { + private static final int HORIZONTAL_NEGATIVE = 0; + private static final int HORIZONTAL_POSITIVE = 1; + private static final int VERTICAL_NEGATIVE = 0; + private static final int VERTICAL_POSITIVE = 1; + private static final int MAX_DISTANCE = 20; + + public static final WiredEffectType type = WiredEffectType.RELATIVE_MOVE; + + private final List items = new ArrayList<>(); + private int horizontalDirection = HORIZONTAL_POSITIVE; + private int horizontalDistance = 0; + private int verticalDirection = VERTICAL_POSITIVE; + private int verticalDistance = 0; + private int furniSource = WiredSourceUtil.SOURCE_TRIGGER; + + public WiredEffectRelativeMove(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + } + + public WiredEffectRelativeMove(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + super(id, userId, item, extradata, limitedStack, limitedSells); + } + + @Override + public void execute(WiredContext ctx) { + Room room = ctx.room(); + if (room == null || room.getLayout() == null) { + return; + } + + List effectiveItems = WiredSourceUtil.resolveItems(ctx, this.furniSource, this.items); + + if (this.furniSource == WiredSourceUtil.SOURCE_SELECTED) { + this.items.removeIf(item -> item == null + || item.getRoomId() != this.getRoomId() + || room.getHabboItem(item.getId()) == null); + } + + int deltaX = this.getHorizontalOffset(); + int deltaY = this.getVerticalOffset(); + + if (deltaX == 0 && deltaY == 0) { + return; + } + + for (HabboItem item : effectiveItems) { + if (item == null || item.getRoomId() != this.getRoomId()) { + continue; + } + + short targetX = (short) (item.getX() + deltaX); + short targetY = (short) (item.getY() + deltaY); + + RoomTile targetTile = room.getLayout().getTile(targetX, targetY); + if (targetTile == null) { + continue; + } + + room.moveFurniTo(item, targetTile, item.getRotation(), null, true, false); + } + } + + @Deprecated + @Override + public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { + return false; + } + + @Override + public String getWiredData() { + return WiredManager.getGson().toJson(new JsonData( + this.getDelay(), + this.items.stream().map(HabboItem::getId).collect(Collectors.toList()), + this.horizontalDirection, + this.horizontalDistance, + this.verticalDirection, + this.verticalDistance, + this.furniSource + )); + } + + @Override + public void loadWiredData(ResultSet set, Room room) throws SQLException { + this.items.clear(); + String wiredData = set.getString("wired_data"); + + if (wiredData != null && wiredData.startsWith("{")) { + JsonData data = WiredManager.getGson().fromJson(wiredData, JsonData.class); + this.setDelay(data.delay); + this.horizontalDirection = this.normalizeBinary(data.horizontalDirection, HORIZONTAL_POSITIVE); + this.horizontalDistance = this.normalizeDistance(data.horizontalDistance); + this.verticalDirection = this.normalizeBinary(data.verticalDirection, VERTICAL_POSITIVE); + this.verticalDistance = this.normalizeDistance(data.verticalDistance); + this.furniSource = data.furniSource; + + if (data.itemIds != null) { + for (Integer id : data.itemIds) { + HabboItem item = room.getHabboItem(id); + + if (item != null) { + this.items.add(item); + } + } + } + + return; + } + + this.horizontalDirection = HORIZONTAL_POSITIVE; + this.horizontalDistance = 0; + this.verticalDirection = VERTICAL_POSITIVE; + this.verticalDistance = 0; + this.furniSource = WiredSourceUtil.SOURCE_TRIGGER; + this.setDelay(0); + } + + @Override + public void onPickUp() { + this.items.clear(); + this.horizontalDirection = HORIZONTAL_POSITIVE; + this.horizontalDistance = 0; + this.verticalDirection = VERTICAL_POSITIVE; + this.verticalDistance = 0; + this.furniSource = WiredSourceUtil.SOURCE_TRIGGER; + this.setDelay(0); + } + + @Override + public WiredEffectType getType() { + return type; + } + + @Override + public void serializeWiredData(ServerMessage message, Room room) { + List itemsSnapshot = new ArrayList<>(this.items); + itemsSnapshot.removeIf(item -> item == null + || item.getRoomId() != this.getRoomId() + || room.getHabboItem(item.getId()) == null); + + this.items.clear(); + this.items.addAll(itemsSnapshot); + + message.appendBoolean(false); + message.appendInt(WiredManager.MAXIMUM_FURNI_SELECTION); + message.appendInt(itemsSnapshot.size()); + for (HabboItem item : itemsSnapshot) { + message.appendInt(item.getId()); + } + + message.appendInt(this.getBaseItem().getSpriteId()); + message.appendInt(this.getId()); + message.appendString(""); + message.appendInt(5); + message.appendInt(this.horizontalDirection); + message.appendInt(this.horizontalDistance); + message.appendInt(this.verticalDirection); + message.appendInt(this.verticalDistance); + message.appendInt(this.furniSource); + message.appendInt(0); + message.appendInt(this.getType().code); + message.appendInt(this.getDelay()); + message.appendInt(0); + } + + @Override + public boolean saveData(WiredSettings settings, GameClient gameClient) throws WiredSaveException { + int[] params = settings.getIntParams(); + + if (params.length < 5) { + throw new WiredSaveException("Invalid data"); + } + + this.horizontalDirection = this.normalizeBinary(params[0], HORIZONTAL_POSITIVE); + this.horizontalDistance = this.normalizeDistance(params[1]); + this.verticalDirection = this.normalizeBinary(params[2], VERTICAL_POSITIVE); + this.verticalDistance = this.normalizeDistance(params[3]); + this.furniSource = params[4]; + + int delay = settings.getDelay(); + if (delay > Emulator.getConfig().getInt("hotel.wired.max_delay", 20)) { + throw new WiredSaveException("Delay too long"); + } + + Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()); + if (room == null) { + throw new WiredSaveException("Room not found"); + } + + if (settings.getFurniIds().length > Emulator.getConfig().getInt("hotel.wired.furni.selection.count")) { + throw new WiredSaveException("Too many furni selected"); + } + + List newItems = new ArrayList<>(); + for (int itemId : settings.getFurniIds()) { + HabboItem item = room.getHabboItem(itemId); + + if (item == null) { + throw new WiredSaveException(String.format("Item %s not found", itemId)); + } + + newItems.add(item); + } + + this.items.clear(); + this.items.addAll(newItems); + this.setDelay(delay); + + return true; + } + + private int getHorizontalOffset() { + if (this.horizontalDistance <= 0) { + return 0; + } + + return (this.horizontalDirection == HORIZONTAL_NEGATIVE) ? -this.horizontalDistance : this.horizontalDistance; + } + + private int getVerticalOffset() { + if (this.verticalDistance <= 0) { + return 0; + } + + return (this.verticalDirection == VERTICAL_NEGATIVE) ? -this.verticalDistance : this.verticalDistance; + } + + private int normalizeBinary(int value, int fallback) { + if (value == 0 || value == 1) { + return value; + } + + return fallback; + } + + private int normalizeDistance(int value) { + return Math.max(0, Math.min(MAX_DISTANCE, value)); + } + + static class JsonData { + int delay; + List itemIds; + int horizontalDirection; + int horizontalDistance; + int verticalDirection; + int verticalDistance; + int furniSource; + + public JsonData(int delay, List itemIds, int horizontalDirection, int horizontalDistance, int verticalDirection, int verticalDistance, int furniSource) { + this.delay = delay; + this.itemIds = itemIds; + this.horizontalDirection = horizontalDirection; + this.horizontalDistance = horizontalDistance; + this.verticalDirection = verticalDirection; + this.verticalDistance = verticalDistance; + this.furniSource = furniSource; + } + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectSetAltitude.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectSetAltitude.java new file mode 100644 index 00000000..e43a4a68 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectSetAltitude.java @@ -0,0 +1,288 @@ +package com.eu.habbo.habbohotel.items.interactions.wired.effects; + +import com.eu.habbo.Emulator; +import com.eu.habbo.habbohotel.gameclients.GameClient; +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; +import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.wired.WiredEffectType; +import com.eu.habbo.habbohotel.wired.core.WiredContext; +import com.eu.habbo.habbohotel.wired.core.WiredManager; +import com.eu.habbo.habbohotel.wired.core.WiredSourceUtil; +import com.eu.habbo.messages.ServerMessage; +import com.eu.habbo.messages.incoming.wired.WiredSaveException; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +public class WiredEffectSetAltitude extends InteractionWiredEffect { + private static final Pattern ALTITUDE_PATTERN = Pattern.compile("^\\d+(\\.\\d{1,2})?$"); + + private static final int OPERATOR_INCREASE = 0; + private static final int OPERATOR_DECREASE = 1; + private static final int OPERATOR_SET = 2; + + public static final WiredEffectType type = WiredEffectType.SET_ALTITUDE; + + private final List items = new ArrayList<>(); + private int operator = OPERATOR_SET; + private double altitude = 0.0D; + private int furniSource = WiredSourceUtil.SOURCE_TRIGGER; + + public WiredEffectSetAltitude(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + } + + public WiredEffectSetAltitude(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + super(id, userId, item, extradata, limitedStack, limitedSells); + } + + @Override + public void execute(WiredContext ctx) { + Room room = ctx.room(); + if (room == null) { + return; + } + + List effectiveItems = WiredSourceUtil.resolveItems(ctx, this.furniSource, this.items); + + if (this.furniSource == WiredSourceUtil.SOURCE_SELECTED) { + this.items.removeIf(item -> item == null + || item.getRoomId() != this.getRoomId() + || room.getHabboItem(item.getId()) == null); + } + + for (HabboItem item : effectiveItems) { + if (item == null || item.getRoomId() != this.getRoomId()) { + continue; + } + + RoomTile tile = room.getLayout().getTile(item.getX(), item.getY()); + if (tile == null) { + continue; + } + + double nextAltitude = this.computeAltitude(item.getZ()); + room.moveFurniTo(item, tile, item.getRotation(), nextAltitude, null, true, false); + } + } + + @Deprecated + @Override + public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { + return false; + } + + @Override + public String getWiredData() { + return WiredManager.getGson().toJson(new JsonData( + this.getDelay(), + this.items.stream().map(HabboItem::getId).collect(Collectors.toList()), + this.operator, + this.formatAltitude(this.altitude), + this.furniSource + )); + } + + @Override + public void loadWiredData(ResultSet set, Room room) throws SQLException { + this.items.clear(); + String wiredData = set.getString("wired_data"); + + if (wiredData != null && wiredData.startsWith("{")) { + JsonData data = WiredManager.getGson().fromJson(wiredData, JsonData.class); + this.setDelay(data.delay); + this.operator = this.normalizeOperator(data.operator); + this.altitude = this.parseAltitudeOrDefault(data.altitude); + this.furniSource = data.furniSource; + + if (data.itemIds != null) { + for (Integer id : data.itemIds) { + HabboItem item = room.getHabboItem(id); + + if (item != null) { + this.items.add(item); + } + } + } + + return; + } + + this.operator = OPERATOR_SET; + this.altitude = 0.0D; + this.furniSource = WiredSourceUtil.SOURCE_TRIGGER; + this.setDelay(0); + } + + @Override + public void onPickUp() { + this.items.clear(); + this.operator = OPERATOR_SET; + this.altitude = 0.0D; + this.furniSource = WiredSourceUtil.SOURCE_TRIGGER; + this.setDelay(0); + } + + @Override + public WiredEffectType getType() { + return type; + } + + @Override + public void serializeWiredData(ServerMessage message, Room room) { + List itemsSnapshot = new ArrayList<>(this.items); + itemsSnapshot.removeIf(item -> item == null + || item.getRoomId() != this.getRoomId() + || room.getHabboItem(item.getId()) == null); + + this.items.clear(); + this.items.addAll(itemsSnapshot); + + message.appendBoolean(false); + message.appendInt(WiredManager.MAXIMUM_FURNI_SELECTION); + message.appendInt(itemsSnapshot.size()); + for (HabboItem item : itemsSnapshot) { + message.appendInt(item.getId()); + } + + message.appendInt(this.getBaseItem().getSpriteId()); + message.appendInt(this.getId()); + message.appendString(this.formatAltitude(this.altitude)); + message.appendInt(2); + message.appendInt(this.operator); + message.appendInt(this.furniSource); + message.appendInt(0); + message.appendInt(this.getType().code); + message.appendInt(this.getDelay()); + message.appendInt(0); + } + + @Override + public boolean saveData(WiredSettings settings, GameClient gameClient) throws WiredSaveException { + int[] params = settings.getIntParams(); + this.operator = (params.length > 0) ? this.normalizeOperator(params[0]) : OPERATOR_SET; + this.furniSource = (params.length > 1) ? params[1] : WiredSourceUtil.SOURCE_TRIGGER; + + int delay = settings.getDelay(); + if (delay > Emulator.getConfig().getInt("hotel.wired.max_delay", 20)) { + throw new WiredSaveException("Delay too long"); + } + + Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()); + if (room == null) { + throw new WiredSaveException("Room not found"); + } + + if (settings.getFurniIds().length > Emulator.getConfig().getInt("hotel.wired.furni.selection.count")) { + throw new WiredSaveException("Too many furni selected"); + } + + List newItems = new ArrayList<>(); + for (int itemId : settings.getFurniIds()) { + HabboItem item = room.getHabboItem(itemId); + + if (item == null) { + throw new WiredSaveException(String.format("Item %s not found", itemId)); + } + + newItems.add(item); + } + + this.altitude = this.parseAltitude(settings.getStringParam()); + this.items.clear(); + this.items.addAll(newItems); + this.setDelay(delay); + + return true; + } + + private int normalizeOperator(int value) { + if (value < OPERATOR_INCREASE || value > OPERATOR_SET) { + return OPERATOR_SET; + } + + return value; + } + + private double computeAltitude(double currentAltitude) { + double nextAltitude; + + switch (this.operator) { + case OPERATOR_INCREASE: + nextAltitude = currentAltitude + this.altitude; + break; + case OPERATOR_DECREASE: + nextAltitude = currentAltitude - this.altitude; + break; + case OPERATOR_SET: + default: + nextAltitude = this.altitude; + break; + } + + return this.normalizeAltitude(nextAltitude); + } + + private double parseAltitude(String value) throws WiredSaveException { + String normalized = (value != null) ? value.trim() : ""; + + if (normalized.isEmpty()) { + return 0.0D; + } + + if (!ALTITUDE_PATTERN.matcher(normalized).matches()) { + throw new WiredSaveException("Invalid altitude value"); + } + + try { + return this.normalizeAltitude(new BigDecimal(normalized).doubleValue()); + } catch (NumberFormatException exception) { + throw new WiredSaveException("Invalid altitude value"); + } + } + + private double parseAltitudeOrDefault(String value) { + try { + return this.parseAltitude(value); + } catch (WiredSaveException exception) { + return 0.0D; + } + } + + private double normalizeAltitude(double value) { + double clampedValue = Math.max(0.0D, Math.min(Room.MAXIMUM_FURNI_HEIGHT, value)); + return BigDecimal.valueOf(clampedValue).setScale(2, RoundingMode.HALF_UP).doubleValue(); + } + + private String formatAltitude(double value) { + BigDecimal decimal = BigDecimal.valueOf(this.normalizeAltitude(value)).stripTrailingZeros(); + return (decimal.scale() < 0 ? decimal.setScale(0, RoundingMode.DOWN) : decimal).toPlainString(); + } + + static class JsonData { + int delay; + List itemIds; + int operator; + String altitude; + int furniSource; + + public JsonData(int delay, List itemIds, int operator, String altitude, int furniSource) { + this.delay = delay; + this.itemIds = itemIds; + this.operator = operator; + this.altitude = altitude; + this.furniSource = furniSource; + } + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredEffectType.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredEffectType.java index 0d5e74d2..a692788f 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredEffectType.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredEffectType.java @@ -32,7 +32,9 @@ public enum WiredEffectType { FURNI_BYTYPE_SELECTOR(30), USERS_AREA_SELECTOR(31), USERS_NEIGHBORHOOD_SELECTOR(32), - SEND_SIGNAL(33); + SEND_SIGNAL(33), + SET_ALTITUDE(39), + RELATIVE_MOVE(40); public final int code; From 5743341220eb87068bc63470f1c3d54ea8cc7682 Mon Sep 17 00:00:00 2001 From: duckietm Date: Thu, 19 Mar 2026 10:20:35 +0100 Subject: [PATCH 06/12] =?UTF-8?q?=F0=9F=86=99=20Fix=20conflict=20import?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/eu/habbo/habbohotel/items/ItemManager.java | 11 ++++++----- .../eu/habbo/habbohotel/wired/WiredEffectType.java | 5 +++++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java index 00d1c4a5..2c06f4bc 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java @@ -48,15 +48,11 @@ import com.eu.habbo.habbohotel.items.interactions.totems.InteractionTotemLegs; import com.eu.habbo.habbohotel.items.interactions.totems.InteractionTotemPlanet; import com.eu.habbo.habbohotel.items.interactions.wired.conditions.*; import com.eu.habbo.habbohotel.items.interactions.wired.effects.*; -import com.eu.habbo.habbohotel.items.interactions.wired.selector.WiredEffectFurniArea; -import com.eu.habbo.habbohotel.items.interactions.wired.selector.WiredEffectUsersArea; -import com.eu.habbo.habbohotel.items.interactions.wired.selector.WiredEffectUsersNeighborhood; -import com.eu.habbo.habbohotel.items.interactions.wired.selector.WiredEffectFurniNeighborhood; -import com.eu.habbo.habbohotel.items.interactions.wired.selector.WiredEffectFurniByType; import com.eu.habbo.habbohotel.items.interactions.wired.extra.WiredBlob; import com.eu.habbo.habbohotel.items.interactions.wired.extra.WiredExtraOrEval; import com.eu.habbo.habbohotel.items.interactions.wired.extra.WiredExtraRandom; import com.eu.habbo.habbohotel.items.interactions.wired.extra.WiredExtraUnseen; +import com.eu.habbo.habbohotel.items.interactions.wired.selector.*; import com.eu.habbo.habbohotel.items.interactions.wired.triggers.*; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboItem; @@ -264,6 +260,11 @@ public class ItemManager { this.interactionsList.add(new ItemInteraction("wf_act_alert", WiredEffectAlert.class)); this.interactionsList.add(new ItemInteraction("wf_act_give_handitem", WiredEffectGiveHandItem.class)); this.interactionsList.add(new ItemInteraction("wf_act_give_effect", WiredEffectGiveEffect.class)); + this.interactionsList.add(new ItemInteraction("wf_act_freeze", WiredEffectFreeze.class)); + this.interactionsList.add(new ItemInteraction("wf_act_unfreeze", WiredEffectUnfreeze.class)); + this.interactionsList.add(new ItemInteraction("wf_act_furni_to_user", WiredEffectFurniToUser.class)); + this.interactionsList.add(new ItemInteraction("wf_act_user_to_furni", WiredEffectUserToFurni.class)); + this.interactionsList.add(new ItemInteraction("wf_act_furni_to_furni", WiredEffectFurniToFurni.class)); this.interactionsList.add(new ItemInteraction("wf_act_set_altitude", WiredEffectSetAltitude.class)); this.interactionsList.add(new ItemInteraction("wf_act_rel_mov", WiredEffectRelativeMove.class)); this.interactionsList.add(new ItemInteraction("wf_slc_furni_area", WiredEffectFurniArea.class)); diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredEffectType.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredEffectType.java index a692788f..8ece3410 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredEffectType.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredEffectType.java @@ -33,6 +33,11 @@ public enum WiredEffectType { USERS_AREA_SELECTOR(31), USERS_NEIGHBORHOOD_SELECTOR(32), SEND_SIGNAL(33), + FREEZE(34), + UNFREEZE(35), + FURNI_TO_USER(36), + USER_TO_FURNI(37), + FURNI_TO_FURNI(38), SET_ALTITUDE(39), RELATIVE_MOVE(40); From 00782cbde964ae6ed162862fc1ec01796038ce9b Mon Sep 17 00:00:00 2001 From: Lorenzune Date: Thu, 19 Mar 2026 14:27:26 +0100 Subject: [PATCH 07/12] feat(wired): add advanced match conditions and hotel timezone --- Database Updates/19032026_hotel_timezone.sql | 22 ++ .../src/main/java/com/eu/habbo/Emulator.java | 87 ++++- .../eu/habbo/core/ConfigurationManager.java | 1 + .../habbo/habbohotel/items/ItemManager.java | 11 + .../WiredConditionHabboHasHandItem.java | 8 + .../conditions/WiredConditionHasAltitude.java | 285 ++++++++++++++ .../conditions/WiredConditionMatchDate.java | 253 ++++++++++++ .../conditions/WiredConditionMatchTime.java | 237 +++++++++++ .../WiredConditionNotHabboHasHandItem.java | 42 ++ .../WiredConditionNotTriggererMatch.java | 31 ++ .../WiredConditionNotUserPerformsAction.java | 46 +++ .../WiredConditionTeamGameBase.java | 197 ++++++++++ .../conditions/WiredConditionTeamHasRank.java | 175 +++++++++ .../WiredConditionTeamHasScore.java | 162 ++++++++ .../WiredConditionTriggererMatch.java | 368 ++++++++++++++++++ .../WiredConditionUserPerformsAction.java | 346 ++++++++++++++++ .../habbohotel/wired/WiredConditionType.java | 13 +- .../habbohotel/wired/core/WiredManager.java | 7 + .../highscores/WiredHighscoreManager.java | 17 +- .../WiredHighscoreMidnightUpdater.java | 6 +- .../HotelViewRequestSecondsUntilEvent.java | 4 +- .../com/eu/habbo/util/HotelDateTimeUtil.java | 59 +++ 22 files changed, 2352 insertions(+), 25 deletions(-) create mode 100644 Database Updates/19032026_hotel_timezone.sql create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHasAltitude.java create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionMatchDate.java create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionMatchTime.java create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotHabboHasHandItem.java create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotTriggererMatch.java create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotUserPerformsAction.java create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTeamGameBase.java create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTeamHasRank.java create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTeamHasScore.java create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTriggererMatch.java create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionUserPerformsAction.java create mode 100644 Emulator/src/main/java/com/eu/habbo/util/HotelDateTimeUtil.java diff --git a/Database Updates/19032026_hotel_timezone.sql b/Database Updates/19032026_hotel_timezone.sql new file mode 100644 index 00000000..8c08a899 --- /dev/null +++ b/Database Updates/19032026_hotel_timezone.sql @@ -0,0 +1,22 @@ +SET NAMES utf8mb4; + +-- Create the hotel timezone setting if it does not exist yet. +INSERT INTO `emulator_settings` (`key`, `value`) +SELECT 'hotel.timezone', 'Europe/Rome' +WHERE NOT EXISTS ( + SELECT 1 + FROM `emulator_settings` + WHERE `key` = 'hotel.timezone' +); + +-- Keep the default/example value aligned for existing installs too. +UPDATE `emulator_settings` +SET `value` = 'Europe/Rome' +WHERE `key` = 'hotel.timezone'; + +-- Helper query for a timezone selector. +-- If MySQL/MariaDB timezone tables are populated, this returns the available timezone ids. +SELECT `Name` AS `timezone_id` +FROM `mysql`.`time_zone_name` +WHERE `Name` IS NOT NULL +ORDER BY `Name`; diff --git a/Emulator/src/main/java/com/eu/habbo/Emulator.java b/Emulator/src/main/java/com/eu/habbo/Emulator.java index 69f1deab..455cb540 100644 --- a/Emulator/src/main/java/com/eu/habbo/Emulator.java +++ b/Emulator/src/main/java/com/eu/habbo/Emulator.java @@ -20,6 +20,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.*; +import java.net.JarURLConnection; +import java.net.URL; import java.security.MessageDigest; import java.security.SecureRandom; import java.sql.Timestamp; @@ -52,6 +54,7 @@ public final class Emulator { "Still Rocking in 2026.\n"; public static String build = ""; + public static long buildTimestamp = -1L; public static boolean isReady = false; public static boolean isShuttingDown = false; public static boolean stopped = false; @@ -103,13 +106,6 @@ public final class Emulator { System.out.println(logo); - System.out.println(); - LOGGER.info("https://github.com/duckietm/Arcturus-Morningstar-Extended, "); - System.out.println(); - LOGGER.info("This project is for educational purposes only. This Emulator is an open-source fork of Arcturus created by TheGeneral."); - LOGGER.info("Version: {}", version); - LOGGER.info("Build: {}", build); - long startTime = System.nanoTime(); Emulator.runtime = Runtime.getRuntime(); @@ -141,6 +137,15 @@ public final class Emulator { Emulator.config.register("camera.price.points", "0"); Emulator.config.register("camera.price.points.type", "5"); Emulator.config.register("camera.render.delay", "5"); + Emulator.config.register("hotel.timezone", java.time.ZoneId.systemDefault().getId()); + String hotelTimezoneId = Emulator.getConfig().getValue("hotel.timezone", java.time.ZoneId.systemDefault().getId()); + System.out.println(); + LOGGER.info("https://github.com/duckietm/Arcturus-Morningstar-Extended, "); + System.out.println(); + LOGGER.info("This project is for educational purposes only. This Emulator is an open-source fork of Arcturus created by TheGeneral."); + LOGGER.info("Version: {}", version); + LOGGER.info("Build: {}", build); + LOGGER.info("Build Timestamp: {} [{}]", formatBuildTimestamp(buildTimestamp, hotelTimezoneId), hotelTimezoneId); Emulator.texts.register("camera.permission", "You don't have permission to use the camera!"); Emulator.texts.register("camera.wait", "Please wait %seconds% seconds before making another picture."); Emulator.texts.register("camera.error.creation", "Failed to create your picture. *sadpanda*"); @@ -216,12 +221,21 @@ public final class Emulator { private static void setBuild() { if (Emulator.class.getProtectionDomain().getCodeSource() == null) { build = "UNKNOWN"; + buildTimestamp = -1L; return; } StringBuilder sb = new StringBuilder(); try { - String filepath = new File(Emulator.class.getProtectionDomain().getCodeSource().getLocation().getPath()).getAbsolutePath(); + File buildFile = new File(Emulator.class.getProtectionDomain().getCodeSource().getLocation().toURI()); + buildTimestamp = resolveBuildTimestamp(buildFile); + + if (!buildFile.isFile()) { + build = "DEV"; + return; + } + + String filepath = buildFile.getAbsolutePath(); MessageDigest md = MessageDigest.getInstance("MD5"); try (FileInputStream fis = new FileInputStream(filepath)) { byte[] dataBytes = new byte[1024]; @@ -234,14 +248,69 @@ public final class Emulator { } } catch (Exception e) { build = "UNKNOWN"; + buildTimestamp = -1L; return; } build = sb.toString(); } + private static long resolveBuildTimestamp(File buildFile) { + if (buildFile != null && buildFile.exists() && buildFile.isFile()) { + return buildFile.lastModified(); + } + + try { + URL classUrl = Emulator.class.getResource("Emulator.class"); + + if (classUrl != null) { + if ("file".equalsIgnoreCase(classUrl.getProtocol())) { + File classFile = new File(classUrl.toURI()); + + if (classFile.exists()) { + return classFile.lastModified(); + } + } + + if ("jar".equalsIgnoreCase(classUrl.getProtocol())) { + JarURLConnection connection = (JarURLConnection) classUrl.openConnection(); + File jarFile = new File(connection.getJarFileURL().toURI()); + + if (jarFile.exists()) { + return jarFile.lastModified(); + } + } + } + } catch (Exception ignored) { + } + + if (buildFile != null && buildFile.exists()) { + return buildFile.lastModified(); + } + + return -1L; + } + + private static String formatBuildTimestamp(long buildTimestamp, String timezoneId) { + if (buildTimestamp <= 0) { + return "UNKNOWN"; + } + + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + try { + format.setTimeZone(TimeZone.getTimeZone(java.time.ZoneId.of(timezoneId))); + } catch (Exception ignored) { + format.setTimeZone(TimeZone.getDefault()); + } + + return format.format(new Timestamp(buildTimestamp)); + } + private static void dispose() { - Emulator.getThreading().setCanAdd(false); + if (Emulator.threading != null) { + Emulator.threading.setCanAdd(false); + } Emulator.isShuttingDown = true; Emulator.isReady = false; diff --git a/Emulator/src/main/java/com/eu/habbo/core/ConfigurationManager.java b/Emulator/src/main/java/com/eu/habbo/core/ConfigurationManager.java index 3a6ba211..2e4819a4 100644 --- a/Emulator/src/main/java/com/eu/habbo/core/ConfigurationManager.java +++ b/Emulator/src/main/java/com/eu/habbo/core/ConfigurationManager.java @@ -87,6 +87,7 @@ public class ConfigurationManager { // Runtime envMapping.put("runtime.threads", "RT_THREADS"); envMapping.put("logging.errors.runtime", "RT_LOG_ERRORS"); + envMapping.put("hotel.timezone", "HOTEL_TIMEZONE"); for (Map.Entry entry : envMapping.entrySet()) { String envValue = System.getenv(entry.getValue()); diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java index 2c06f4bc..9071158f 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java @@ -297,8 +297,19 @@ public class ItemManager { this.interactionsList.add(new ItemInteraction("wf_cnd_actor_in_team", WiredConditionTeamMember.class)); this.interactionsList.add(new ItemInteraction("wf_cnd_trggrer_on_frn", WiredConditionTriggerOnFurni.class)); this.interactionsList.add(new ItemInteraction("wf_cnd_has_handitem", WiredConditionHabboHasHandItem.class)); + this.interactionsList.add(new ItemInteraction("wf_cnd_not_has_handitem", WiredConditionNotHabboHasHandItem.class)); this.interactionsList.add(new ItemInteraction("wf_cnd_date_rng_active", WiredConditionDateRangeActive.class)); this.interactionsList.add(new ItemInteraction("wf_cnd_valid_moves", WiredConditionMovementValidation.class)); + this.interactionsList.add(new ItemInteraction("wf_cnd_counter_time_matches", WiredConditionCounterTimeMatches.class)); + this.interactionsList.add(new ItemInteraction("wf_cnd_match_time", WiredConditionMatchTime.class)); + this.interactionsList.add(new ItemInteraction("wf_cnd_match_date", WiredConditionMatchDate.class)); + this.interactionsList.add(new ItemInteraction("wf_cnd_user_performs_action", WiredConditionUserPerformsAction.class)); + this.interactionsList.add(new ItemInteraction("wf_cnd_not_user_performs_action", WiredConditionNotUserPerformsAction.class)); + this.interactionsList.add(new ItemInteraction("wf_cnd_has_altitude", WiredConditionHasAltitude.class)); + this.interactionsList.add(new ItemInteraction("wf_cnd_triggerer_match", WiredConditionTriggererMatch.class)); + this.interactionsList.add(new ItemInteraction("wf_cnd_not_triggerer_match", WiredConditionNotTriggererMatch.class)); + this.interactionsList.add(new ItemInteraction("wf_cnd_team_has_score", WiredConditionTeamHasScore.class)); + this.interactionsList.add(new ItemInteraction("wf_cnd_team_has_rank", WiredConditionTeamHasRank.class)); this.interactionsList.add(new ItemInteraction("wf_xtra_random", WiredExtraRandom.class)); diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboHasHandItem.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboHasHandItem.java index 1a064793..64aade52 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboHasHandItem.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboHasHandItem.java @@ -115,6 +115,14 @@ public class WiredConditionHabboHasHandItem extends InteractionWiredCondition { this.userSource = WiredSourceUtil.SOURCE_TRIGGER; } + protected int getHandItem() { + return this.handItem; + } + + protected int getUserSource() { + return this.userSource; + } + static class JsonData { int handItemId; int userSource; diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHasAltitude.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHasAltitude.java new file mode 100644 index 00000000..155da036 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHasAltitude.java @@ -0,0 +1,285 @@ +package com.eu.habbo.habbohotel.items.interactions.wired.conditions; + +import com.eu.habbo.Emulator; +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; +import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.habbohotel.wired.WiredConditionType; +import com.eu.habbo.habbohotel.wired.core.WiredContext; +import com.eu.habbo.habbohotel.wired.core.WiredManager; +import com.eu.habbo.habbohotel.wired.core.WiredSourceUtil; +import com.eu.habbo.messages.ServerMessage; +import gnu.trove.set.hash.THashSet; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; +import java.util.stream.Collectors; + +public class WiredConditionHasAltitude extends InteractionWiredCondition { + private static final int COMPARISON_LESS = 0; + private static final int COMPARISON_EQUAL = 1; + private static final int COMPARISON_GREATER = 2; + private static final int QUANTIFIER_ALL = 0; + private static final int QUANTIFIER_ANY = 1; + + public static final WiredConditionType type = WiredConditionType.HAS_ALTITUDE; + + private final THashSet items; + private int comparison = COMPARISON_EQUAL; + private double altitude = 0.0D; + private int furniSource = WiredSourceUtil.SOURCE_TRIGGER; + private int quantifier = QUANTIFIER_ALL; + + public WiredConditionHasAltitude(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + this.items = new THashSet<>(); + } + + public WiredConditionHasAltitude(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + super(id, userId, item, extradata, limitedStack, limitedSells); + this.items = new THashSet<>(); + } + + @Override + public boolean evaluate(WiredContext ctx) { + Room room = ctx.room(); + if (room == null) { + return false; + } + + this.refresh(room); + + List targets = WiredSourceUtil.resolveItems(ctx, this.furniSource, this.items); + if (targets.isEmpty()) { + return false; + } + + if (this.quantifier == QUANTIFIER_ANY) { + return targets.stream().anyMatch(this::matchesAltitude); + } + + return targets.stream().allMatch(this::matchesAltitude); + } + + @Deprecated + @Override + public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { + return false; + } + + @Override + public String getWiredData() { + return WiredManager.getGson().toJson(new JsonData( + this.comparison, + this.formatAltitude(this.altitude), + this.furniSource, + this.quantifier, + this.items.stream().map(HabboItem::getId).collect(Collectors.toList()) + )); + } + + @Override + public void loadWiredData(ResultSet set, Room room) throws SQLException { + this.items.clear(); + this.comparison = COMPARISON_EQUAL; + this.altitude = 0.0D; + this.furniSource = WiredSourceUtil.SOURCE_TRIGGER; + this.quantifier = QUANTIFIER_ALL; + + String wiredData = set.getString("wired_data"); + if (wiredData == null || !wiredData.startsWith("{")) { + return; + } + + JsonData data = WiredManager.getGson().fromJson(wiredData, JsonData.class); + if (data == null) { + return; + } + + this.comparison = this.normalizeComparison(data.comparison); + this.altitude = this.parseAltitudeOrDefault(data.altitude); + this.furniSource = this.normalizeFurniSource(data.furniSource); + this.quantifier = this.normalizeQuantifier(data.quantifier); + + if (data.itemIds == null) { + return; + } + + for (Integer id : data.itemIds) { + HabboItem item = room.getHabboItem(id); + if (item != null) { + this.items.add(item); + } + } + } + + @Override + public void onPickUp() { + this.items.clear(); + this.comparison = COMPARISON_EQUAL; + this.altitude = 0.0D; + this.furniSource = WiredSourceUtil.SOURCE_TRIGGER; + this.quantifier = QUANTIFIER_ALL; + } + + @Override + public WiredConditionType getType() { + return type; + } + + @Override + public void serializeWiredData(ServerMessage message, Room room) { + this.refresh(room); + + message.appendBoolean(false); + message.appendInt(WiredManager.MAXIMUM_FURNI_SELECTION); + message.appendInt(this.items.size()); + + for (HabboItem item : this.items) { + message.appendInt(item.getId()); + } + + message.appendInt(this.getBaseItem().getSpriteId()); + message.appendInt(this.getId()); + message.appendString(this.formatAltitude(this.altitude)); + message.appendInt(3); + message.appendInt(this.comparison); + message.appendInt(this.furniSource); + message.appendInt(this.quantifier); + message.appendInt(0); + message.appendInt(this.getType().code); + message.appendInt(0); + message.appendInt(0); + } + + @Override + public boolean saveData(WiredSettings settings) { + int[] params = settings.getIntParams(); + this.comparison = (params.length > 0) ? this.normalizeComparison(params[0]) : COMPARISON_EQUAL; + this.furniSource = (params.length > 1) ? this.normalizeFurniSource(params[1]) : WiredSourceUtil.SOURCE_TRIGGER; + this.quantifier = (params.length > 2) ? this.normalizeQuantifier(params[2]) : QUANTIFIER_ALL; + this.altitude = this.parseAltitudeOrDefault(settings.getStringParam()); + + int count = settings.getFurniIds().length; + if (count > Emulator.getConfig().getInt("hotel.wired.furni.selection.count")) { + return false; + } + + this.items.clear(); + + if (this.furniSource == WiredSourceUtil.SOURCE_SELECTED) { + Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()); + if (room == null) { + return false; + } + + for (int itemId : settings.getFurniIds()) { + HabboItem item = room.getHabboItem(itemId); + if (item != null) { + this.items.add(item); + } + } + } + + return true; + } + + private boolean matchesAltitude(HabboItem item) { + if (item == null) { + return false; + } + + double normalizedAltitude = this.normalizeAltitude(item.getZ()); + + switch (this.comparison) { + case COMPARISON_LESS: + return normalizedAltitude < this.altitude; + case COMPARISON_GREATER: + return normalizedAltitude > this.altitude; + default: + return BigDecimal.valueOf(normalizedAltitude).compareTo(BigDecimal.valueOf(this.altitude)) == 0; + } + } + + private void refresh(Room room) { + THashSet remove = new THashSet<>(); + + for (HabboItem item : this.items) { + if (room.getHabboItem(item.getId()) == null) { + remove.add(item); + } + } + + for (HabboItem item : remove) { + this.items.remove(item); + } + } + + private int normalizeComparison(int value) { + if (value < COMPARISON_LESS || value > COMPARISON_GREATER) { + return COMPARISON_EQUAL; + } + + return value; + } + + private int normalizeQuantifier(int value) { + return (value == QUANTIFIER_ANY) ? QUANTIFIER_ANY : QUANTIFIER_ALL; + } + + private int normalizeFurniSource(int value) { + switch (value) { + case WiredSourceUtil.SOURCE_SELECTED: + case WiredSourceUtil.SOURCE_SELECTOR: + case WiredSourceUtil.SOURCE_SIGNAL: + case WiredSourceUtil.SOURCE_TRIGGER: + return value; + default: + return WiredSourceUtil.SOURCE_TRIGGER; + } + } + + private double normalizeAltitude(double value) { + double clampedValue = Math.max(0.0D, Math.min(Room.MAXIMUM_FURNI_HEIGHT, value)); + return BigDecimal.valueOf(clampedValue).setScale(2, RoundingMode.HALF_UP).doubleValue(); + } + + private double parseAltitudeOrDefault(String value) { + if (value == null || value.trim().isEmpty()) { + return 0.0D; + } + + try { + return this.normalizeAltitude(new BigDecimal(value.trim()).doubleValue()); + } catch (NumberFormatException exception) { + return 0.0D; + } + } + + private String formatAltitude(double value) { + BigDecimal decimal = BigDecimal.valueOf(this.normalizeAltitude(value)).stripTrailingZeros(); + return (decimal.scale() < 0 ? decimal.setScale(0, RoundingMode.DOWN) : decimal).toPlainString(); + } + + static class JsonData { + int comparison; + String altitude; + int furniSource; + int quantifier; + List itemIds; + + public JsonData(int comparison, String altitude, int furniSource, int quantifier, List itemIds) { + this.comparison = comparison; + this.altitude = altitude; + this.furniSource = furniSource; + this.quantifier = quantifier; + this.itemIds = itemIds; + } + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionMatchDate.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionMatchDate.java new file mode 100644 index 00000000..3574480b --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionMatchDate.java @@ -0,0 +1,253 @@ +package com.eu.habbo.habbohotel.items.interactions.wired.conditions; + +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; +import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.wired.WiredConditionType; +import com.eu.habbo.habbohotel.wired.core.WiredContext; +import com.eu.habbo.habbohotel.wired.core.WiredManager; +import com.eu.habbo.messages.ServerMessage; +import com.eu.habbo.util.HotelDateTimeUtil; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.time.LocalDate; + +public class WiredConditionMatchDate extends InteractionWiredCondition { + private static final int MODE_SKIP = 0; + private static final int MODE_EXACT = 1; + private static final int MODE_RANGE = 2; + private static final int ALL_WEEKDAYS_MASK = createMask(1, 7); + private static final int ALL_MONTHS_MASK = createMask(1, 12); + + public static final WiredConditionType type = WiredConditionType.MATCH_DATE; + + private int weekdayMask = ALL_WEEKDAYS_MASK; + private int dayMode = MODE_SKIP; + private int dayFrom = 1; + private int dayTo = 31; + private int monthMask = ALL_MONTHS_MASK; + private int yearMode = MODE_SKIP; + private int yearFrom = HotelDateTimeUtil.localDateNow().getYear(); + private int yearTo = HotelDateTimeUtil.localDateNow().getYear(); + + public WiredConditionMatchDate(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + } + + public WiredConditionMatchDate(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + super(id, userId, item, extradata, limitedStack, limitedSells); + } + + @Override + public WiredConditionType getType() { + return type; + } + + @Override + public void serializeWiredData(ServerMessage message, Room room) { + message.appendBoolean(false); + message.appendInt(5); + message.appendInt(0); + message.appendInt(this.getBaseItem().getSpriteId()); + message.appendInt(this.getId()); + message.appendString(""); + message.appendInt(8); + message.appendInt(this.weekdayMask); + message.appendInt(this.dayMode); + message.appendInt(this.dayFrom); + message.appendInt(this.dayTo); + message.appendInt(this.monthMask); + message.appendInt(this.yearMode); + message.appendInt(this.yearFrom); + message.appendInt(this.yearTo); + message.appendInt(0); + message.appendInt(this.getType().code); + message.appendInt(0); + message.appendInt(0); + } + + @Override + public boolean saveData(WiredSettings settings) { + int[] params = settings.getIntParams(); + + this.weekdayMask = (params.length > 0) ? this.normalizeWeekdayMask(params[0]) : ALL_WEEKDAYS_MASK; + this.dayMode = (params.length > 1) ? this.normalizeMode(params[1]) : MODE_SKIP; + this.dayFrom = (params.length > 2) ? this.normalizeDay(params[2]) : 1; + this.dayTo = (params.length > 3) ? this.normalizeDay(params[3]) : this.dayFrom; + this.monthMask = (params.length > 4) ? this.normalizeMonthMask(params[4]) : ALL_MONTHS_MASK; + this.yearMode = (params.length > 5) ? this.normalizeMode(params[5]) : MODE_SKIP; + this.yearFrom = (params.length > 6) ? this.normalizeYear(params[6]) : HotelDateTimeUtil.localDateNow().getYear(); + this.yearTo = (params.length > 7) ? this.normalizeYear(params[7]) : this.yearFrom; + + return true; + } + + @Override + public boolean evaluate(WiredContext ctx) { + LocalDate now = HotelDateTimeUtil.localDateNow(); + + return this.matchesMask(now.getDayOfWeek().getValue(), this.weekdayMask) + && this.matchesMask(now.getMonthValue(), this.monthMask) + && this.matchesDatePart(now.getDayOfMonth(), this.dayMode, this.dayFrom, this.dayTo) + && this.matchesDatePart(now.getYear(), this.yearMode, this.yearFrom, this.yearTo); + } + + @Deprecated + @Override + public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { + return false; + } + + @Override + public String getWiredData() { + return WiredManager.getGson().toJson(new JsonData( + this.weekdayMask, + this.dayMode, + this.dayFrom, + this.dayTo, + this.monthMask, + this.yearMode, + this.yearFrom, + this.yearTo + )); + } + + @Override + public void loadWiredData(ResultSet set, Room room) throws SQLException { + this.reset(); + + String wiredData = set.getString("wired_data"); + if (wiredData == null || wiredData.isEmpty()) { + return; + } + + if (wiredData.startsWith("{")) { + JsonData data = WiredManager.getGson().fromJson(wiredData, JsonData.class); + if (data == null) { + return; + } + + this.weekdayMask = this.normalizeWeekdayMask(data.weekdayMask); + this.dayMode = this.normalizeMode(data.dayMode); + this.dayFrom = this.normalizeDay(data.dayFrom); + this.dayTo = this.normalizeDay(data.dayTo); + this.monthMask = this.normalizeMonthMask(data.monthMask); + this.yearMode = this.normalizeMode(data.yearMode); + this.yearFrom = this.normalizeYear(data.yearFrom); + this.yearTo = this.normalizeYear(data.yearTo); + return; + } + + String[] data = wiredData.split("\t"); + if (data.length != 8) { + return; + } + + try { + this.weekdayMask = this.normalizeWeekdayMask(Integer.parseInt(data[0])); + this.dayMode = this.normalizeMode(Integer.parseInt(data[1])); + this.dayFrom = this.normalizeDay(Integer.parseInt(data[2])); + this.dayTo = this.normalizeDay(Integer.parseInt(data[3])); + this.monthMask = this.normalizeMonthMask(Integer.parseInt(data[4])); + this.yearMode = this.normalizeMode(Integer.parseInt(data[5])); + this.yearFrom = this.normalizeYear(Integer.parseInt(data[6])); + this.yearTo = this.normalizeYear(Integer.parseInt(data[7])); + } catch (NumberFormatException ignored) { + this.reset(); + } + } + + @Override + public void onPickUp() { + this.reset(); + } + + private void reset() { + int currentYear = HotelDateTimeUtil.localDateNow().getYear(); + + this.weekdayMask = ALL_WEEKDAYS_MASK; + this.dayMode = MODE_SKIP; + this.dayFrom = 1; + this.dayTo = 31; + this.monthMask = ALL_MONTHS_MASK; + this.yearMode = MODE_SKIP; + this.yearFrom = currentYear; + this.yearTo = currentYear; + } + + private boolean matchesMask(int value, int mask) { + return (mask & (1 << value)) != 0; + } + + private boolean matchesDatePart(int currentValue, int mode, int fromValue, int toValue) { + switch (mode) { + case MODE_EXACT: + return currentValue == fromValue; + case MODE_RANGE: + return currentValue >= Math.min(fromValue, toValue) && currentValue <= Math.max(fromValue, toValue); + default: + return true; + } + } + + private int normalizeMode(int value) { + if (value < MODE_SKIP || value > MODE_RANGE) { + return MODE_SKIP; + } + + return value; + } + + private int normalizeDay(int value) { + return Math.max(1, Math.min(31, value)); + } + + private int normalizeYear(int value) { + return Math.max(1, Math.min(9999, value)); + } + + private int normalizeWeekdayMask(int value) { + int normalized = value & ALL_WEEKDAYS_MASK; + return (normalized == 0) ? ALL_WEEKDAYS_MASK : normalized; + } + + private int normalizeMonthMask(int value) { + int normalized = value & ALL_MONTHS_MASK; + return (normalized == 0) ? ALL_MONTHS_MASK : normalized; + } + + private static int createMask(int startValue, int endValue) { + int mask = 0; + + for (int value = startValue; value <= endValue; value++) { + mask |= (1 << value); + } + + return mask; + } + + static class JsonData { + int weekdayMask; + int dayMode; + int dayFrom; + int dayTo; + int monthMask; + int yearMode; + int yearFrom; + int yearTo; + + public JsonData(int weekdayMask, int dayMode, int dayFrom, int dayTo, int monthMask, int yearMode, int yearFrom, int yearTo) { + this.weekdayMask = weekdayMask; + this.dayMode = dayMode; + this.dayFrom = dayFrom; + this.dayTo = dayTo; + this.monthMask = monthMask; + this.yearMode = yearMode; + this.yearFrom = yearFrom; + this.yearTo = yearTo; + } + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionMatchTime.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionMatchTime.java new file mode 100644 index 00000000..982b56ec --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionMatchTime.java @@ -0,0 +1,237 @@ +package com.eu.habbo.habbohotel.items.interactions.wired.conditions; + +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; +import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.wired.WiredConditionType; +import com.eu.habbo.habbohotel.wired.core.WiredContext; +import com.eu.habbo.habbohotel.wired.core.WiredManager; +import com.eu.habbo.messages.ServerMessage; +import com.eu.habbo.util.HotelDateTimeUtil; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.time.LocalTime; + +public class WiredConditionMatchTime extends InteractionWiredCondition { + private static final int MODE_SKIP = 0; + private static final int MODE_EXACT = 1; + private static final int MODE_RANGE = 2; + + public static final WiredConditionType type = WiredConditionType.MATCH_TIME; + + private int hourMode = MODE_SKIP; + private int hourFrom = 0; + private int hourTo = 0; + private int minuteMode = MODE_SKIP; + private int minuteFrom = 0; + private int minuteTo = 0; + private int secondMode = MODE_SKIP; + private int secondFrom = 0; + private int secondTo = 0; + + public WiredConditionMatchTime(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + } + + public WiredConditionMatchTime(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + super(id, userId, item, extradata, limitedStack, limitedSells); + } + + @Override + public WiredConditionType getType() { + return type; + } + + @Override + public void serializeWiredData(ServerMessage message, Room room) { + message.appendBoolean(false); + message.appendInt(5); + message.appendInt(0); + message.appendInt(this.getBaseItem().getSpriteId()); + message.appendInt(this.getId()); + message.appendString(""); + message.appendInt(9); + message.appendInt(this.hourMode); + message.appendInt(this.hourFrom); + message.appendInt(this.hourTo); + message.appendInt(this.minuteMode); + message.appendInt(this.minuteFrom); + message.appendInt(this.minuteTo); + message.appendInt(this.secondMode); + message.appendInt(this.secondFrom); + message.appendInt(this.secondTo); + message.appendInt(0); + message.appendInt(this.getType().code); + message.appendInt(0); + message.appendInt(0); + } + + @Override + public boolean saveData(WiredSettings settings) { + int[] params = settings.getIntParams(); + + this.hourMode = (params.length > 0) ? this.normalizeMode(params[0]) : MODE_SKIP; + this.hourFrom = (params.length > 1) ? this.normalizeHour(params[1]) : 0; + this.hourTo = (params.length > 2) ? this.normalizeHour(params[2]) : this.hourFrom; + this.minuteMode = (params.length > 3) ? this.normalizeMode(params[3]) : MODE_SKIP; + this.minuteFrom = (params.length > 4) ? this.normalizeMinuteOrSecond(params[4]) : 0; + this.minuteTo = (params.length > 5) ? this.normalizeMinuteOrSecond(params[5]) : this.minuteFrom; + this.secondMode = (params.length > 6) ? this.normalizeMode(params[6]) : MODE_SKIP; + this.secondFrom = (params.length > 7) ? this.normalizeMinuteOrSecond(params[7]) : 0; + this.secondTo = (params.length > 8) ? this.normalizeMinuteOrSecond(params[8]) : this.secondFrom; + + return true; + } + + @Override + public boolean evaluate(WiredContext ctx) { + LocalTime now = HotelDateTimeUtil.localTimeNow(); + + return this.matchesTimePart(now.getHour(), this.hourMode, this.hourFrom, this.hourTo) + && this.matchesTimePart(now.getMinute(), this.minuteMode, this.minuteFrom, this.minuteTo) + && this.matchesTimePart(now.getSecond(), this.secondMode, this.secondFrom, this.secondTo); + } + + @Deprecated + @Override + public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { + return false; + } + + @Override + public String getWiredData() { + return WiredManager.getGson().toJson(new JsonData( + this.hourMode, + this.hourFrom, + this.hourTo, + this.minuteMode, + this.minuteFrom, + this.minuteTo, + this.secondMode, + this.secondFrom, + this.secondTo + )); + } + + @Override + public void loadWiredData(ResultSet set, Room room) throws SQLException { + this.reset(); + + String wiredData = set.getString("wired_data"); + if (wiredData == null || wiredData.isEmpty()) { + return; + } + + if (wiredData.startsWith("{")) { + JsonData data = WiredManager.getGson().fromJson(wiredData, JsonData.class); + if (data == null) { + return; + } + + this.hourMode = this.normalizeMode(data.hourMode); + this.hourFrom = this.normalizeHour(data.hourFrom); + this.hourTo = this.normalizeHour(data.hourTo); + this.minuteMode = this.normalizeMode(data.minuteMode); + this.minuteFrom = this.normalizeMinuteOrSecond(data.minuteFrom); + this.minuteTo = this.normalizeMinuteOrSecond(data.minuteTo); + this.secondMode = this.normalizeMode(data.secondMode); + this.secondFrom = this.normalizeMinuteOrSecond(data.secondFrom); + this.secondTo = this.normalizeMinuteOrSecond(data.secondTo); + return; + } + + String[] data = wiredData.split("\t"); + if (data.length != 9) { + return; + } + + try { + this.hourMode = this.normalizeMode(Integer.parseInt(data[0])); + this.hourFrom = this.normalizeHour(Integer.parseInt(data[1])); + this.hourTo = this.normalizeHour(Integer.parseInt(data[2])); + this.minuteMode = this.normalizeMode(Integer.parseInt(data[3])); + this.minuteFrom = this.normalizeMinuteOrSecond(Integer.parseInt(data[4])); + this.minuteTo = this.normalizeMinuteOrSecond(Integer.parseInt(data[5])); + this.secondMode = this.normalizeMode(Integer.parseInt(data[6])); + this.secondFrom = this.normalizeMinuteOrSecond(Integer.parseInt(data[7])); + this.secondTo = this.normalizeMinuteOrSecond(Integer.parseInt(data[8])); + } catch (NumberFormatException ignored) { + this.reset(); + } + } + + @Override + public void onPickUp() { + this.reset(); + } + + private void reset() { + this.hourMode = MODE_SKIP; + this.hourFrom = 0; + this.hourTo = 0; + this.minuteMode = MODE_SKIP; + this.minuteFrom = 0; + this.minuteTo = 0; + this.secondMode = MODE_SKIP; + this.secondFrom = 0; + this.secondTo = 0; + } + + private boolean matchesTimePart(int currentValue, int mode, int fromValue, int toValue) { + switch (mode) { + case MODE_EXACT: + return currentValue == fromValue; + case MODE_RANGE: + if (fromValue <= toValue) { + return currentValue >= fromValue && currentValue <= toValue; + } + + return currentValue >= fromValue || currentValue <= toValue; + default: + return true; + } + } + + private int normalizeMode(int value) { + if (value < MODE_SKIP || value > MODE_RANGE) { + return MODE_SKIP; + } + + return value; + } + + private int normalizeHour(int value) { + return Math.max(0, Math.min(23, value)); + } + + private int normalizeMinuteOrSecond(int value) { + return Math.max(0, Math.min(59, value)); + } + + static class JsonData { + int hourMode; + int hourFrom; + int hourTo; + int minuteMode; + int minuteFrom; + int minuteTo; + int secondMode; + int secondFrom; + int secondTo; + + public JsonData(int hourMode, int hourFrom, int hourTo, int minuteMode, int minuteFrom, int minuteTo, int secondMode, int secondFrom, int secondTo) { + this.hourMode = hourMode; + this.hourFrom = hourFrom; + this.hourTo = hourTo; + this.minuteMode = minuteMode; + this.minuteFrom = minuteFrom; + this.minuteTo = minuteTo; + this.secondMode = secondMode; + this.secondFrom = secondFrom; + this.secondTo = secondTo; + } + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotHabboHasHandItem.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotHabboHasHandItem.java new file mode 100644 index 00000000..24421924 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotHabboHasHandItem.java @@ -0,0 +1,42 @@ +package com.eu.habbo.habbohotel.items.interactions.wired.conditions; + +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.wired.WiredConditionType; +import com.eu.habbo.habbohotel.wired.core.WiredContext; +import com.eu.habbo.habbohotel.wired.core.WiredSourceUtil; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; + +public class WiredConditionNotHabboHasHandItem extends WiredConditionHabboHasHandItem { + public static final WiredConditionType type = WiredConditionType.NOT_ACTOR_HAS_HANDITEM; + + public WiredConditionNotHabboHasHandItem(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + } + + public WiredConditionNotHabboHasHandItem(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + super(id, userId, item, extradata, limitedStack, limitedSells); + } + + @Override + public boolean evaluate(WiredContext ctx) { + List targets = WiredSourceUtil.resolveUsers(ctx, this.getUserSource()); + if (targets.isEmpty()) return false; + + for (RoomUnit roomUnit : targets) { + if (roomUnit == null || roomUnit.getHandItem() == this.getHandItem()) { + return false; + } + } + + return true; + } + + @Override + public WiredConditionType getType() { + return type; + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotTriggererMatch.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotTriggererMatch.java new file mode 100644 index 00000000..3e945329 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotTriggererMatch.java @@ -0,0 +1,31 @@ +package com.eu.habbo.habbohotel.items.interactions.wired.conditions; + +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.wired.WiredConditionType; +import com.eu.habbo.habbohotel.wired.core.WiredContext; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class WiredConditionNotTriggererMatch extends WiredConditionTriggererMatch { + public static final WiredConditionType type = WiredConditionType.NOT_TRIGGERER_MATCH; + + public WiredConditionNotTriggererMatch(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + } + + public WiredConditionNotTriggererMatch(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + super(id, userId, item, extradata, limitedStack, limitedSells); + } + + @Override + public boolean evaluate(WiredContext ctx) { + MatchResult result = this.evaluateMatch(ctx); + return result.valid && !result.matched; + } + + @Override + public WiredConditionType getType() { + return type; + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotUserPerformsAction.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotUserPerformsAction.java new file mode 100644 index 00000000..d4ff4f38 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotUserPerformsAction.java @@ -0,0 +1,46 @@ +package com.eu.habbo.habbohotel.items.interactions.wired.conditions; + +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.wired.WiredConditionType; +import com.eu.habbo.habbohotel.wired.core.WiredContext; +import com.eu.habbo.habbohotel.wired.core.WiredSourceUtil; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; + +public class WiredConditionNotUserPerformsAction extends WiredConditionUserPerformsAction { + private static final int QUANTIFIER_ANY_NOT_MATCH = 0; + private static final int QUANTIFIER_NONE_MATCH = 1; + + public static final WiredConditionType type = WiredConditionType.NOT_USER_PERFORMS_ACTION; + + public WiredConditionNotUserPerformsAction(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + } + + public WiredConditionNotUserPerformsAction(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + super(id, userId, item, extradata, limitedStack, limitedSells); + } + + @Override + public boolean evaluate(WiredContext ctx) { + List targets = WiredSourceUtil.resolveUsers(ctx, this.getUserSource()); + if (targets.isEmpty()) { + return false; + } + + if (this.getQuantifier() == QUANTIFIER_NONE_MATCH) { + return targets.stream().noneMatch(roomUnit -> this.matchesAction(ctx, roomUnit)); + } + + return targets.stream().anyMatch(roomUnit -> !this.matchesAction(ctx, roomUnit)); + } + + @Override + public WiredConditionType getType() { + return type; + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTeamGameBase.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTeamGameBase.java new file mode 100644 index 00000000..8e05c562 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTeamGameBase.java @@ -0,0 +1,197 @@ +package com.eu.habbo.habbohotel.items.interactions.wired.conditions; + +import com.eu.habbo.habbohotel.games.Game; +import com.eu.habbo.habbohotel.games.GameState; +import com.eu.habbo.habbohotel.games.GameTeam; +import com.eu.habbo.habbohotel.games.GameTeamColors; +import com.eu.habbo.habbohotel.games.battlebanzai.BattleBanzaiGame; +import com.eu.habbo.habbohotel.games.freeze.FreezeGame; +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.users.Habbo; +import com.eu.habbo.habbohotel.wired.core.WiredContext; +import com.eu.habbo.habbohotel.wired.core.WiredSourceUtil; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Predicate; + +abstract class WiredConditionTeamGameBase extends InteractionWiredCondition { + protected static final int QUANTIFIER_ALL = 0; + protected static final int QUANTIFIER_ANY = 1; + protected static final int COMPARISON_LOWER = 0; + protected static final int COMPARISON_EQUAL = 1; + protected static final int COMPARISON_HIGHER = 2; + protected static final int TEAM_TRIGGERER = 0; + + private static final GameTeamColors[] SUPPORTED_TEAM_COLORS = new GameTeamColors[] { + GameTeamColors.RED, + GameTeamColors.GREEN, + GameTeamColors.BLUE, + GameTeamColors.YELLOW + }; + + protected WiredConditionTeamGameBase(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + } + + protected WiredConditionTeamGameBase(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + super(id, userId, item, extradata, limitedStack, limitedSells); + } + + protected List resolveUsers(WiredContext ctx, int userSource) { + Map deduplicated = new LinkedHashMap<>(); + + for (RoomUnit roomUnit : WiredSourceUtil.resolveUsers(ctx, userSource)) { + if (roomUnit != null) { + deduplicated.putIfAbsent(roomUnit.getId(), roomUnit); + } + } + + return new ArrayList<>(deduplicated.values()); + } + + protected boolean matchesQuantifier(List users, int quantifier, Predicate predicate) { + if (users.isEmpty()) { + return false; + } + + if (quantifier == QUANTIFIER_ANY) { + return users.stream().anyMatch(predicate); + } + + return users.stream().allMatch(predicate); + } + + protected int normalizeQuantifier(int value) { + return (value == QUANTIFIER_ANY) ? QUANTIFIER_ANY : QUANTIFIER_ALL; + } + + protected int normalizeComparison(int value) { + switch (value) { + case COMPARISON_LOWER: + case COMPARISON_HIGHER: + return value; + default: + return COMPARISON_EQUAL; + } + } + + protected int normalizeUserSource(int value) { + switch (value) { + case WiredSourceUtil.SOURCE_SELECTOR: + case WiredSourceUtil.SOURCE_SIGNAL: + case WiredSourceUtil.SOURCE_TRIGGER: + return value; + default: + return WiredSourceUtil.SOURCE_TRIGGER; + } + } + + protected int normalizePlacement(int value) { + if (value < 1 || value > 4) { + return 1; + } + + return value; + } + + protected int normalizeScore(int value) { + return Math.max(0, value); + } + + protected int normalizeExplicitTeamType(int value) { + GameTeamColors color = GameTeamColors.fromType(value); + return (color.type >= GameTeamColors.RED.type && color.type <= GameTeamColors.YELLOW.type) + ? color.type + : GameTeamColors.RED.type; + } + + protected int normalizeRankTeamType(int value) { + if (value == TEAM_TRIGGERER) { + return TEAM_TRIGGERER; + } + + return this.normalizeExplicitTeamType(value); + } + + protected GameTeamColors resolveConfiguredTeamColor(int value) { + return GameTeamColors.fromType(this.normalizeExplicitTeamType(value)); + } + + protected boolean compareValue(int actual, int expected, int comparison) { + switch (comparison) { + case COMPARISON_LOWER: + return actual < expected; + case COMPARISON_HIGHER: + return actual > expected; + default: + return actual == expected; + } + } + + protected UserGameContext resolveUserGameContext(Room room, RoomUnit roomUnit) { + if (room == null || roomUnit == null) { + return null; + } + + Habbo habbo = room.getHabbo(roomUnit); + if (habbo == null || habbo.getHabboInfo() == null || habbo.getHabboInfo().getCurrentGame() == null) { + return null; + } + + Game game = room.getGame(habbo.getHabboInfo().getCurrentGame()); + if (!this.isSupportedGame(game)) { + return null; + } + + GameTeam team = game.getTeamForHabbo(habbo); + if (team == null) { + return null; + } + + return new UserGameContext(habbo, game, team); + } + + protected int getTeamRank(Game game, GameTeam team) { + if (game == null || team == null) { + return Integer.MAX_VALUE; + } + + int rank = 1; + int targetScore = team.getTotalScore(); + + for (GameTeamColors teamColor : SUPPORTED_TEAM_COLORS) { + GameTeam otherTeam = game.getTeam(teamColor); + if (otherTeam != null && otherTeam != team && otherTeam.getTotalScore() > targetScore) { + rank++; + } + } + + return rank; + } + + private boolean isSupportedGame(Game game) { + return game != null + && game.getState() != GameState.IDLE + && (game instanceof FreezeGame || game instanceof BattleBanzaiGame); + } + + protected static class UserGameContext { + protected final Habbo habbo; + protected final Game game; + protected final GameTeam team; + + protected UserGameContext(Habbo habbo, Game game, GameTeam team) { + this.habbo = habbo; + this.game = game; + this.team = team; + } + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTeamHasRank.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTeamHasRank.java new file mode 100644 index 00000000..58272197 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTeamHasRank.java @@ -0,0 +1,175 @@ +package com.eu.habbo.habbohotel.items.interactions.wired.conditions; + +import com.eu.habbo.habbohotel.games.GameTeam; +import com.eu.habbo.habbohotel.games.GameTeamColors; +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.wired.WiredConditionType; +import com.eu.habbo.habbohotel.wired.core.WiredContext; +import com.eu.habbo.habbohotel.wired.core.WiredManager; +import com.eu.habbo.habbohotel.wired.core.WiredSourceUtil; +import com.eu.habbo.messages.ServerMessage; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; + +public class WiredConditionTeamHasRank extends WiredConditionTeamGameBase { + public static final WiredConditionType type = WiredConditionType.TEAM_HAS_RANK; + + private int teamType = GameTeamColors.RED.type; + private int placement = 1; + private int userSource = WiredSourceUtil.SOURCE_TRIGGER; + private int quantifier = QUANTIFIER_ALL; + + public WiredConditionTeamHasRank(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + } + + public WiredConditionTeamHasRank(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + super(id, userId, item, extradata, limitedStack, limitedSells); + } + + @Override + public boolean evaluate(WiredContext ctx) { + Room room = ctx.room(); + List users = this.resolveUsers(ctx, this.userSource); + + return this.matchesQuantifier(users, this.quantifier, roomUnit -> this.matchesUser(ctx, room, roomUnit)); + } + + @Deprecated + @Override + public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { + return false; + } + + @Override + public String getWiredData() { + return WiredManager.getGson().toJson(new JsonData( + this.teamType, + this.placement, + this.userSource, + this.quantifier + )); + } + + @Override + public void loadWiredData(ResultSet set, Room room) throws SQLException { + this.resetSettings(); + + String wiredData = set.getString("wired_data"); + if (wiredData == null || !wiredData.startsWith("{")) { + return; + } + + JsonData data = WiredManager.getGson().fromJson(wiredData, JsonData.class); + if (data == null) { + return; + } + + this.teamType = this.normalizeRankTeamType(data.teamType); + this.placement = this.normalizePlacement(data.placement); + this.userSource = this.normalizeUserSource(data.userSource); + this.quantifier = this.normalizeQuantifier(data.quantifier); + } + + @Override + public void onPickUp() { + this.resetSettings(); + } + + @Override + public WiredConditionType getType() { + return type; + } + + @Override + public void serializeWiredData(ServerMessage message, Room room) { + message.appendBoolean(false); + message.appendInt(5); + message.appendInt(0); + message.appendInt(this.getBaseItem().getSpriteId()); + message.appendInt(this.getId()); + message.appendString(""); + message.appendInt(4); + message.appendInt(this.teamType); + message.appendInt(this.placement); + message.appendInt(this.userSource); + message.appendInt(this.quantifier); + message.appendInt(0); + message.appendInt(this.getType().code); + message.appendInt(0); + message.appendInt(0); + } + + @Override + public boolean saveData(WiredSettings settings) { + int[] params = settings.getIntParams(); + this.resetSettings(); + + if (params.length > 0) this.teamType = this.normalizeRankTeamType(params[0]); + if (params.length > 1) this.placement = this.normalizePlacement(params[1]); + if (params.length > 2) this.userSource = this.normalizeUserSource(params[2]); + if (params.length > 3) this.quantifier = this.normalizeQuantifier(params[3]); + + return true; + } + + private boolean matchesUser(WiredContext ctx, Room room, RoomUnit roomUnit) { + UserGameContext context = this.resolveUserGameContext(room, roomUnit); + if (context == null) { + return false; + } + + GameTeamColors requiredTeam = this.resolveRequiredTeamColor(ctx, room, context.game); + if (requiredTeam == GameTeamColors.NONE || context.team.teamColor != requiredTeam) { + return false; + } + + GameTeam team = context.game.getTeam(requiredTeam); + if (team == null) { + return false; + } + + return this.getTeamRank(context.game, team) == this.placement; + } + + private GameTeamColors resolveRequiredTeamColor(WiredContext ctx, Room room, com.eu.habbo.habbohotel.games.Game game) { + if (this.teamType == TEAM_TRIGGERER) { + RoomUnit actor = ctx.actor().orElse(null); + UserGameContext triggererContext = this.resolveUserGameContext(room, actor); + + if (triggererContext == null || triggererContext.game != game) { + return GameTeamColors.NONE; + } + + return triggererContext.team.teamColor; + } + + return this.resolveConfiguredTeamColor(this.teamType); + } + + private void resetSettings() { + this.teamType = GameTeamColors.RED.type; + this.placement = 1; + this.userSource = WiredSourceUtil.SOURCE_TRIGGER; + this.quantifier = QUANTIFIER_ALL; + } + + static class JsonData { + int teamType; + int placement; + int userSource; + int quantifier; + + public JsonData(int teamType, int placement, int userSource, int quantifier) { + this.teamType = teamType; + this.placement = placement; + this.userSource = userSource; + this.quantifier = quantifier; + } + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTeamHasScore.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTeamHasScore.java new file mode 100644 index 00000000..e85741a6 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTeamHasScore.java @@ -0,0 +1,162 @@ +package com.eu.habbo.habbohotel.items.interactions.wired.conditions; + +import com.eu.habbo.habbohotel.games.GameTeamColors; +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.wired.WiredConditionType; +import com.eu.habbo.habbohotel.wired.core.WiredContext; +import com.eu.habbo.habbohotel.wired.core.WiredManager; +import com.eu.habbo.habbohotel.wired.core.WiredSourceUtil; +import com.eu.habbo.messages.ServerMessage; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; + +public class WiredConditionTeamHasScore extends WiredConditionTeamGameBase { + public static final WiredConditionType type = WiredConditionType.TEAM_HAS_SCORE; + + private int teamType = GameTeamColors.RED.type; + private int comparison = COMPARISON_EQUAL; + private int score = 0; + private int userSource = WiredSourceUtil.SOURCE_TRIGGER; + private int quantifier = QUANTIFIER_ALL; + + public WiredConditionTeamHasScore(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + } + + public WiredConditionTeamHasScore(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + super(id, userId, item, extradata, limitedStack, limitedSells); + } + + @Override + public boolean evaluate(WiredContext ctx) { + Room room = ctx.room(); + List users = this.resolveUsers(ctx, this.userSource); + + return this.matchesQuantifier(users, this.quantifier, roomUnit -> this.matchesUser(room, roomUnit)); + } + + @Deprecated + @Override + public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { + return false; + } + + @Override + public String getWiredData() { + return WiredManager.getGson().toJson(new JsonData( + this.teamType, + this.comparison, + this.score, + this.userSource, + this.quantifier + )); + } + + @Override + public void loadWiredData(ResultSet set, Room room) throws SQLException { + this.resetSettings(); + + String wiredData = set.getString("wired_data"); + if (wiredData == null || !wiredData.startsWith("{")) { + return; + } + + JsonData data = WiredManager.getGson().fromJson(wiredData, JsonData.class); + if (data == null) { + return; + } + + this.teamType = this.normalizeExplicitTeamType(data.teamType); + this.comparison = this.normalizeComparison(data.comparison); + this.score = this.normalizeScore(data.score); + this.userSource = this.normalizeUserSource(data.userSource); + this.quantifier = this.normalizeQuantifier(data.quantifier); + } + + @Override + public void onPickUp() { + this.resetSettings(); + } + + @Override + public WiredConditionType getType() { + return type; + } + + @Override + public void serializeWiredData(ServerMessage message, Room room) { + message.appendBoolean(false); + message.appendInt(5); + message.appendInt(0); + message.appendInt(this.getBaseItem().getSpriteId()); + message.appendInt(this.getId()); + message.appendString(""); + message.appendInt(5); + message.appendInt(this.teamType); + message.appendInt(this.comparison); + message.appendInt(this.score); + message.appendInt(this.userSource); + message.appendInt(this.quantifier); + message.appendInt(0); + message.appendInt(this.getType().code); + message.appendInt(0); + message.appendInt(0); + } + + @Override + public boolean saveData(WiredSettings settings) { + int[] params = settings.getIntParams(); + this.resetSettings(); + + if (params.length > 0) this.teamType = this.normalizeExplicitTeamType(params[0]); + if (params.length > 1) this.comparison = this.normalizeComparison(params[1]); + if (params.length > 2) this.score = this.normalizeScore(params[2]); + if (params.length > 3) this.userSource = this.normalizeUserSource(params[3]); + if (params.length > 4) this.quantifier = this.normalizeQuantifier(params[4]); + + return true; + } + + private boolean matchesUser(Room room, RoomUnit roomUnit) { + UserGameContext context = this.resolveUserGameContext(room, roomUnit); + if (context == null) { + return false; + } + + GameTeamColors requiredTeam = this.resolveConfiguredTeamColor(this.teamType); + if (context.team.teamColor != requiredTeam) { + return false; + } + + return this.compareValue(context.team.getTotalScore(), this.score, this.comparison); + } + + private void resetSettings() { + this.teamType = GameTeamColors.RED.type; + this.comparison = COMPARISON_EQUAL; + this.score = 0; + this.userSource = WiredSourceUtil.SOURCE_TRIGGER; + this.quantifier = QUANTIFIER_ALL; + } + + static class JsonData { + int teamType; + int comparison; + int score; + int userSource; + int quantifier; + + public JsonData(int teamType, int comparison, int score, int userSource, int quantifier) { + this.teamType = teamType; + this.comparison = comparison; + this.score = score; + this.userSource = userSource; + this.quantifier = quantifier; + } + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTriggererMatch.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTriggererMatch.java new file mode 100644 index 00000000..f9997436 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTriggererMatch.java @@ -0,0 +1,368 @@ +package com.eu.habbo.habbohotel.items.interactions.wired.conditions; + +import com.eu.habbo.habbohotel.bots.Bot; +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; +import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; +import com.eu.habbo.habbohotel.pets.Pet; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.RoomUnitType; +import com.eu.habbo.habbohotel.users.Habbo; +import com.eu.habbo.habbohotel.wired.WiredConditionType; +import com.eu.habbo.habbohotel.wired.core.WiredContext; +import com.eu.habbo.habbohotel.wired.core.WiredManager; +import com.eu.habbo.habbohotel.wired.core.WiredSourceUtil; +import com.eu.habbo.messages.ServerMessage; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +public class WiredConditionTriggererMatch extends InteractionWiredCondition { + protected static final int ENTITY_HABBO = 1; + protected static final int ENTITY_PET = 2; + protected static final int ENTITY_BOT = 4; + protected static final int AVATAR_MODE_ANY = 0; + protected static final int AVATAR_MODE_CERTAIN = 1; + protected static final int QUANTIFIER_ALL = 0; + protected static final int QUANTIFIER_ANY = 1; + protected static final int SOURCE_SPECIFIED_USERNAME = 101; + + public static final WiredConditionType type = WiredConditionType.TRIGGERER_MATCH; + + private int entityType = ENTITY_HABBO; + private int avatarMode = AVATAR_MODE_ANY; + private int matchUserSource = WiredSourceUtil.SOURCE_TRIGGER; + private int compareUserSource = WiredSourceUtil.SOURCE_TRIGGER; + private int quantifier = QUANTIFIER_ALL; + private String username = ""; + + public WiredConditionTriggererMatch(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + } + + public WiredConditionTriggererMatch(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + super(id, userId, item, extradata, limitedStack, limitedSells); + } + + @Override + public boolean evaluate(WiredContext ctx) { + MatchResult result = this.evaluateMatch(ctx); + return result.valid && result.matched; + } + + @Deprecated + @Override + public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { + return false; + } + + @Override + public String getWiredData() { + return WiredManager.getGson().toJson(new JsonData( + this.entityType, + this.avatarMode, + this.matchUserSource, + this.compareUserSource, + this.quantifier, + this.username + )); + } + + @Override + public void loadWiredData(ResultSet set, Room room) throws SQLException { + this.resetSettings(); + + String wiredData = set.getString("wired_data"); + if (wiredData == null || !wiredData.startsWith("{")) { + return; + } + + JsonData data = WiredManager.getGson().fromJson(wiredData, JsonData.class); + if (data == null) { + return; + } + + this.entityType = this.normalizeEntityType(data.entityType); + this.avatarMode = this.normalizeAvatarMode(data.avatarMode); + this.matchUserSource = this.normalizePrimaryUserSource(data.matchUserSource); + this.compareUserSource = this.normalizeCompareUserSource(data.compareUserSource); + this.quantifier = this.normalizeQuantifier(data.quantifier); + this.username = this.normalizeUsername(data.username); + } + + @Override + public void onPickUp() { + this.resetSettings(); + } + + @Override + public WiredConditionType getType() { + return type; + } + + @Override + public void serializeWiredData(ServerMessage message, Room room) { + message.appendBoolean(true); + message.appendInt(5); + message.appendInt(0); + message.appendInt(this.getBaseItem().getSpriteId()); + message.appendInt(this.getId()); + message.appendString(this.username); + message.appendInt(5); + message.appendInt(this.entityType); + message.appendInt(this.avatarMode); + message.appendInt(this.matchUserSource); + message.appendInt(this.compareUserSource); + message.appendInt(this.quantifier); + message.appendInt(0); + message.appendInt(this.getType().code); + message.appendInt(0); + message.appendInt(0); + } + + @Override + public boolean saveData(WiredSettings settings) { + int[] params = settings.getIntParams(); + + this.resetSettings(); + + if (params.length > 0) this.entityType = this.normalizeEntityType(params[0]); + if (params.length > 1) this.avatarMode = this.normalizeAvatarMode(params[1]); + if (params.length > 2) this.matchUserSource = this.normalizePrimaryUserSource(params[2]); + if (params.length > 3) this.compareUserSource = this.normalizeCompareUserSource(params[3]); + if (params.length > 4) this.quantifier = this.normalizeQuantifier(params[4]); + + this.username = this.normalizeUsername(settings.getStringParam()); + + return true; + } + + protected MatchResult evaluateMatch(WiredContext ctx) { + List matchUsers = this.resolvePrimaryUsers(ctx); + if (matchUsers.isEmpty()) { + return MatchResult.invalid(); + } + + List compareUsers = this.resolveCompareUsers(ctx); + if (compareUsers.isEmpty()) { + return MatchResult.valid(false); + } + + Set compareUserIds = compareUsers.stream() + .filter(this::matchesEntityType) + .map(RoomUnit::getId) + .collect(Collectors.toSet()); + + if (compareUserIds.isEmpty()) { + return MatchResult.valid(false); + } + + boolean matched; + if (this.quantifier == QUANTIFIER_ANY) { + matched = matchUsers.stream().anyMatch(roomUnit -> this.matchesCandidate(roomUnit, compareUserIds)); + } else { + matched = matchUsers.stream().allMatch(roomUnit -> this.matchesCandidate(roomUnit, compareUserIds)); + } + + return MatchResult.valid(matched); + } + + protected int getQuantifier() { + return this.quantifier; + } + + private void resetSettings() { + this.entityType = ENTITY_HABBO; + this.avatarMode = AVATAR_MODE_ANY; + this.matchUserSource = WiredSourceUtil.SOURCE_TRIGGER; + this.compareUserSource = WiredSourceUtil.SOURCE_TRIGGER; + this.quantifier = QUANTIFIER_ALL; + this.username = ""; + } + + private List resolvePrimaryUsers(WiredContext ctx) { + return this.deduplicate(WiredSourceUtil.resolveUsers(ctx, this.matchUserSource)); + } + + private List resolveCompareUsers(WiredContext ctx) { + List resolved; + + if (this.compareUserSource == SOURCE_SPECIFIED_USERNAME) { + resolved = this.resolveUsersByName(ctx.room(), this.username); + } else { + resolved = WiredSourceUtil.resolveUsers(ctx, this.compareUserSource); + } + + if (this.avatarMode == AVATAR_MODE_CERTAIN) { + String normalizedName = this.normalizeUsername(this.username); + if (normalizedName.isEmpty()) { + return new ArrayList<>(); + } + + resolved = resolved.stream() + .filter(roomUnit -> normalizedName.equalsIgnoreCase(this.getRoomUnitName(ctx.room(), roomUnit))) + .collect(Collectors.toList()); + } + + return this.deduplicate(resolved); + } + + private List resolveUsersByName(Room room, String username) { + List result = new ArrayList<>(); + String normalizedName = this.normalizeUsername(username); + if (room == null || normalizedName.isEmpty()) { + return result; + } + + Habbo habbo = room.getHabbo(normalizedName); + if (habbo != null && habbo.getRoomUnit() != null) { + result.add(habbo.getRoomUnit()); + } + + for (Bot bot : room.getBots(normalizedName)) { + if (bot != null && bot.getRoomUnit() != null) { + result.add(bot.getRoomUnit()); + } + } + + for (Pet pet : room.getUnitManager().getPets()) { + if (pet != null && pet.getRoomUnit() != null && normalizedName.equalsIgnoreCase(pet.getName())) { + result.add(pet.getRoomUnit()); + } + } + + return result; + } + + private List deduplicate(List users) { + Map deduplicated = new LinkedHashMap<>(); + + for (RoomUnit user : users) { + if (user != null) { + deduplicated.putIfAbsent(user.getId(), user); + } + } + + return new ArrayList<>(deduplicated.values()); + } + + private boolean matchesCandidate(RoomUnit roomUnit, Set compareUserIds) { + return roomUnit != null && this.matchesEntityType(roomUnit) && compareUserIds.contains(roomUnit.getId()); + } + + private boolean matchesEntityType(RoomUnit roomUnit) { + return roomUnit != null && roomUnit.getRoomUnitType().getTypeId() == this.entityType; + } + + private String getRoomUnitName(Room room, RoomUnit roomUnit) { + if (room == null || roomUnit == null) { + return ""; + } + + if (roomUnit.getRoomUnitType() == RoomUnitType.USER) { + Habbo habbo = room.getHabbo(roomUnit); + return (habbo != null && habbo.getHabboInfo() != null) ? habbo.getHabboInfo().getUsername() : ""; + } + + if (roomUnit.getRoomUnitType() == RoomUnitType.BOT) { + Bot bot = room.getBot(roomUnit); + return (bot != null) ? bot.getName() : ""; + } + + if (roomUnit.getRoomUnitType() == RoomUnitType.PET) { + Pet pet = room.getPet(roomUnit); + return (pet != null) ? pet.getName() : ""; + } + + return ""; + } + + private int normalizeEntityType(int value) { + switch (value) { + case ENTITY_HABBO: + case ENTITY_PET: + case ENTITY_BOT: + return value; + default: + return ENTITY_HABBO; + } + } + + private int normalizeAvatarMode(int value) { + return (value == AVATAR_MODE_CERTAIN) ? AVATAR_MODE_CERTAIN : AVATAR_MODE_ANY; + } + + private int normalizeQuantifier(int value) { + return (value == QUANTIFIER_ANY) ? QUANTIFIER_ANY : QUANTIFIER_ALL; + } + + private int normalizePrimaryUserSource(int value) { + switch (value) { + case WiredSourceUtil.SOURCE_SELECTOR: + case WiredSourceUtil.SOURCE_SIGNAL: + case WiredSourceUtil.SOURCE_TRIGGER: + return value; + default: + return WiredSourceUtil.SOURCE_TRIGGER; + } + } + + private int normalizeCompareUserSource(int value) { + switch (value) { + case WiredSourceUtil.SOURCE_SELECTOR: + case WiredSourceUtil.SOURCE_SIGNAL: + case WiredSourceUtil.SOURCE_TRIGGER: + case SOURCE_SPECIFIED_USERNAME: + return value; + default: + return WiredSourceUtil.SOURCE_TRIGGER; + } + } + + private String normalizeUsername(String value) { + return (value == null) ? "" : value.trim(); + } + + protected static class MatchResult { + protected final boolean valid; + protected final boolean matched; + + private MatchResult(boolean valid, boolean matched) { + this.valid = valid; + this.matched = matched; + } + + private static MatchResult invalid() { + return new MatchResult(false, false); + } + + private static MatchResult valid(boolean matched) { + return new MatchResult(true, matched); + } + } + + static class JsonData { + int entityType; + int avatarMode; + int matchUserSource; + int compareUserSource; + int quantifier; + String username; + + public JsonData(int entityType, int avatarMode, int matchUserSource, int compareUserSource, int quantifier, String username) { + this.entityType = entityType; + this.avatarMode = avatarMode; + this.matchUserSource = matchUserSource; + this.compareUserSource = compareUserSource; + this.quantifier = quantifier; + this.username = username; + } + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionUserPerformsAction.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionUserPerformsAction.java new file mode 100644 index 00000000..a24ce86e --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionUserPerformsAction.java @@ -0,0 +1,346 @@ +package com.eu.habbo.habbohotel.items.interactions.wired.conditions; + +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; +import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; +import com.eu.habbo.habbohotel.wired.WiredConditionType; +import com.eu.habbo.habbohotel.wired.WiredUserActionType; +import com.eu.habbo.habbohotel.wired.core.WiredContext; +import com.eu.habbo.habbohotel.wired.core.WiredManager; +import com.eu.habbo.habbohotel.wired.core.WiredSourceUtil; +import com.eu.habbo.messages.ServerMessage; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; + +public class WiredConditionUserPerformsAction extends InteractionWiredCondition { + private static final String CACHE_LAST_ACTION_ID = "wired.last_user_action.id"; + private static final String CACHE_LAST_ACTION_PARAMETER = "wired.last_user_action.parameter"; + private static final String CACHE_LAST_ACTION_TIMESTAMP = "wired.last_user_action.timestamp"; + private static final long TRANSIENT_ACTION_WINDOW_MS = 5_000L; + protected static final int DEFAULT_ACTION = WiredUserActionType.WAVE; + protected static final int QUANTIFIER_ALL = 0; + protected static final int QUANTIFIER_ANY = 1; + + public static final WiredConditionType type = WiredConditionType.USER_PERFORMS_ACTION; + + private int selectedAction = DEFAULT_ACTION; + private boolean signFilterEnabled = false; + private int signId = 0; + private boolean danceFilterEnabled = false; + private int danceId = 1; + private int userSource = WiredSourceUtil.SOURCE_TRIGGER; + private int quantifier = QUANTIFIER_ALL; + + public WiredConditionUserPerformsAction(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + } + + public WiredConditionUserPerformsAction(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + super(id, userId, item, extradata, limitedStack, limitedSells); + } + + @Override + public boolean evaluate(WiredContext ctx) { + List targets = WiredSourceUtil.resolveUsers(ctx, this.userSource); + if (targets.isEmpty()) { + return false; + } + + if (this.quantifier == QUANTIFIER_ANY) { + return targets.stream().anyMatch(roomUnit -> this.matchesAction(ctx, roomUnit)); + } + + return targets.stream().allMatch(roomUnit -> this.matchesAction(ctx, roomUnit)); + } + + @Deprecated + @Override + public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { + return false; + } + + @Override + public String getWiredData() { + return WiredManager.getGson().toJson(new JsonData( + this.selectedAction, + this.signFilterEnabled, + this.signId, + this.danceFilterEnabled, + this.danceId, + this.userSource, + this.quantifier + )); + } + + @Override + public void loadWiredData(ResultSet set, Room room) throws SQLException { + this.resetSettings(); + + String wiredData = set.getString("wired_data"); + + if (wiredData == null || !wiredData.startsWith("{")) { + return; + } + + JsonData data = WiredManager.getGson().fromJson(wiredData, JsonData.class); + + if (data == null) { + return; + } + + this.selectedAction = normalizeAction(data.selectedAction); + this.signFilterEnabled = data.signFilterEnabled; + this.signId = normalizeSignId(data.signId); + this.danceFilterEnabled = data.danceFilterEnabled; + this.danceId = normalizeDanceId(data.danceId); + this.userSource = this.normalizeUserSource(data.userSource); + this.quantifier = normalizeQuantifier(data.quantifier); + } + + @Override + public void onPickUp() { + this.resetSettings(); + } + + @Override + public WiredConditionType getType() { + return type; + } + + @Override + public void serializeWiredData(ServerMessage message, Room room) { + message.appendBoolean(true); + message.appendInt(5); + message.appendInt(0); + message.appendInt(this.getBaseItem().getSpriteId()); + message.appendInt(this.getId()); + message.appendString(""); + message.appendInt(7); + message.appendInt(this.selectedAction); + message.appendInt(this.signFilterEnabled ? 1 : 0); + message.appendInt(this.signId); + message.appendInt(this.danceFilterEnabled ? 1 : 0); + message.appendInt(this.danceId); + message.appendInt(this.userSource); + message.appendInt(this.quantifier); + message.appendInt(0); + message.appendInt(this.getType().code); + message.appendInt(0); + message.appendInt(0); + } + + @Override + public boolean saveData(WiredSettings settings) { + int[] intParams = settings.getIntParams(); + + this.resetSettings(); + + if (intParams.length > 0) this.selectedAction = normalizeAction(intParams[0]); + if (intParams.length > 1) this.signFilterEnabled = (intParams[1] == 1); + if (intParams.length > 2) this.signId = normalizeSignId(intParams[2]); + if (intParams.length > 3) this.danceFilterEnabled = (intParams[3] == 1); + if (intParams.length > 4) this.danceId = normalizeDanceId(intParams[4]); + if (intParams.length > 5) this.userSource = this.normalizeUserSource(intParams[5]); + if (intParams.length > 6) this.quantifier = normalizeQuantifier(intParams[6]); + + return true; + } + + protected void resetSettings() { + this.selectedAction = DEFAULT_ACTION; + this.signFilterEnabled = false; + this.signId = 0; + this.danceFilterEnabled = false; + this.danceId = 1; + this.userSource = WiredSourceUtil.SOURCE_TRIGGER; + this.quantifier = QUANTIFIER_ALL; + } + + protected int normalizeAction(int action) { + switch (action) { + case WiredUserActionType.WAVE: + case WiredUserActionType.BLOW_KISS: + case WiredUserActionType.LAUGH: + case WiredUserActionType.AWAKE: + case WiredUserActionType.RELAX: + case WiredUserActionType.SIT: + case WiredUserActionType.STAND: + case WiredUserActionType.LAY: + case WiredUserActionType.SIGN: + case WiredUserActionType.DANCE: + case WiredUserActionType.THUMB_UP: + return action; + default: + return DEFAULT_ACTION; + } + } + + protected int normalizeQuantifier(int value) { + return (value == QUANTIFIER_ANY) ? QUANTIFIER_ANY : QUANTIFIER_ALL; + } + + protected int normalizeUserSource(int value) { + switch (value) { + case WiredSourceUtil.SOURCE_SELECTOR: + case WiredSourceUtil.SOURCE_SIGNAL: + case WiredSourceUtil.SOURCE_TRIGGER: + return value; + default: + return WiredSourceUtil.SOURCE_TRIGGER; + } + } + + protected int normalizeSignId(int value) { + return (value < 0 || value > 17) ? 0 : value; + } + + protected int normalizeDanceId(int value) { + return (value < 1 || value > 4) ? 1 : value; + } + + protected boolean matchesAction(WiredContext ctx, RoomUnit roomUnit) { + if (roomUnit == null) { + return false; + } + + if (this.matchesEventAction(ctx, roomUnit)) { + return true; + } + + if (this.matchesCurrentState(roomUnit)) { + return true; + } + + return this.matchesRecentAction(roomUnit); + } + + protected boolean matchesEventAction(WiredContext ctx, RoomUnit roomUnit) { + RoomUnit actor = ctx.actor().orElse(null); + + if (actor == null || actor.getId() != roomUnit.getId()) { + return false; + } + + if (ctx.eventType() != com.eu.habbo.habbohotel.wired.core.WiredEvent.Type.USER_PERFORMS_ACTION) { + return false; + } + + return this.matchesConfiguredAction(ctx.event().getActionId(), ctx.event().getActionParameter()); + } + + protected boolean matchesCurrentState(RoomUnit roomUnit) { + switch (this.selectedAction) { + case WiredUserActionType.SIT: + return roomUnit.hasStatus(RoomUnitStatus.SIT); + case WiredUserActionType.LAY: + return roomUnit.hasStatus(RoomUnitStatus.LAY); + case WiredUserActionType.RELAX: + return roomUnit.isIdle(); + case WiredUserActionType.SIGN: + return this.matchesSignState(roomUnit); + case WiredUserActionType.DANCE: + return this.matchesDanceState(roomUnit); + default: + return false; + } + } + + protected boolean matchesRecentAction(RoomUnit roomUnit) { + Object actionValue = roomUnit.getCacheable().get(CACHE_LAST_ACTION_ID); + Object parameterValue = roomUnit.getCacheable().get(CACHE_LAST_ACTION_PARAMETER); + Object timestampValue = roomUnit.getCacheable().get(CACHE_LAST_ACTION_TIMESTAMP); + + if (!(actionValue instanceof Integer) || !(timestampValue instanceof Long)) { + return false; + } + + long timestamp = (Long) timestampValue; + if ((System.currentTimeMillis() - timestamp) > TRANSIENT_ACTION_WINDOW_MS) { + return false; + } + + int actionId = (Integer) actionValue; + int parameter = (parameterValue instanceof Integer) ? (Integer) parameterValue : -1; + + return this.matchesConfiguredAction(actionId, parameter); + } + + protected boolean matchesConfiguredAction(int actionId, int actionParameter) { + if (actionId != this.selectedAction) { + return false; + } + + if (this.selectedAction == WiredUserActionType.SIGN && this.signFilterEnabled) { + return actionParameter == this.signId; + } + + if (this.selectedAction == WiredUserActionType.DANCE && this.danceFilterEnabled) { + return actionParameter == this.danceId; + } + + return true; + } + + protected boolean matchesSignState(RoomUnit roomUnit) { + String signStatus = roomUnit.getStatus(RoomUnitStatus.SIGN); + if (signStatus == null) { + return false; + } + + if (!this.signFilterEnabled) { + return true; + } + + try { + return Integer.parseInt(signStatus) == this.signId; + } catch (NumberFormatException ignored) { + return false; + } + } + + protected boolean matchesDanceState(RoomUnit roomUnit) { + int currentDance = roomUnit.getDanceType().getType(); + if (currentDance <= 0) { + return false; + } + + if (!this.danceFilterEnabled) { + return true; + } + + return currentDance == this.danceId; + } + + protected int getUserSource() { + return this.userSource; + } + + protected int getQuantifier() { + return this.quantifier; + } + + static class JsonData { + int selectedAction; + boolean signFilterEnabled; + int signId; + boolean danceFilterEnabled; + int danceId; + int userSource; + int quantifier; + + public JsonData(int selectedAction, boolean signFilterEnabled, int signId, boolean danceFilterEnabled, int danceId, int userSource, int quantifier) { + this.selectedAction = selectedAction; + this.signFilterEnabled = signFilterEnabled; + this.signId = signId; + this.danceFilterEnabled = danceFilterEnabled; + this.danceId = danceId; + this.userSource = userSource; + this.quantifier = quantifier; + } + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredConditionType.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredConditionType.java index e620b4e0..96172f84 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredConditionType.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredConditionType.java @@ -25,7 +25,18 @@ public enum WiredConditionType { NOT_ACTOR_WEARS_EFFECT(23), DATE_RANGE(24), ACTOR_HAS_HANDITEM(25), - MOVEMENT_VALIDATION(26); // i dont know what type it is but its needed + MOVEMENT_VALIDATION(26), // i dont know what type it is but its needed + COUNTER_TIME_MATCHES(27), + USER_PERFORMS_ACTION(28), + HAS_ALTITUDE(29), + NOT_USER_PERFORMS_ACTION(30), + NOT_ACTOR_HAS_HANDITEM(31), + TRIGGERER_MATCH(32), + NOT_TRIGGERER_MATCH(33), + TEAM_HAS_SCORE(34), + TEAM_HAS_RANK(35), + MATCH_TIME(36), + MATCH_DATE(37); public final int code; diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredManager.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredManager.java index ea712884..38bbfd54 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredManager.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredManager.java @@ -64,6 +64,9 @@ import java.sql.SQLException; * @see WiredEvents */ public final class WiredManager { + private static final String CACHE_LAST_ACTION_ID = "wired.last_user_action.id"; + private static final String CACHE_LAST_ACTION_PARAMETER = "wired.last_user_action.parameter"; + private static final String CACHE_LAST_ACTION_TIMESTAMP = "wired.last_user_action.timestamp"; private static final Logger LOGGER = LoggerFactory.getLogger(WiredManager.class); @@ -279,6 +282,10 @@ public final class WiredManager { return false; } + user.getCacheable().put(CACHE_LAST_ACTION_ID, actionId); + user.getCacheable().put(CACHE_LAST_ACTION_PARAMETER, actionParameter); + user.getCacheable().put(CACHE_LAST_ACTION_TIMESTAMP, System.currentTimeMillis()); + WiredEvent event = WiredEvents.userPerformsAction(room, user, actionId, actionParameter); return handleEvent(event); } diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/highscores/WiredHighscoreManager.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/highscores/WiredHighscoreManager.java index f00380ff..f39363d0 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/highscores/WiredHighscoreManager.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/highscores/WiredHighscoreManager.java @@ -3,6 +3,7 @@ package com.eu.habbo.habbohotel.wired.highscores; import com.eu.habbo.Emulator; import com.eu.habbo.plugin.EventHandler; import com.eu.habbo.plugin.events.emulator.EmulatorLoadedEvent; +import com.eu.habbo.util.HotelDateTimeUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -11,9 +12,7 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.time.DayOfWeek; -import java.time.LocalDateTime; import java.time.LocalTime; -import java.time.ZoneId; import java.time.temporal.TemporalAdjusters; import java.time.temporal.WeekFields; import java.util.*; @@ -31,8 +30,6 @@ public class WiredHighscoreManager { private final static DayOfWeek firstDayOfWeek = WeekFields.of(Locale.of(locale, country)).getFirstDayOfWeek(); private final static DayOfWeek lastDayOfWeek = DayOfWeek.of(((firstDayOfWeek.getValue() + 5) % DayOfWeek.values().length) + 1); - private final static ZoneId zoneId = ZoneId.systemDefault(); - public static ScheduledFuture midnightUpdater = null; public void load() { @@ -183,26 +180,26 @@ public class WiredHighscoreManager { } private long getTodayStartTimestamp() { - return LocalDateTime.now().with(LocalTime.MIDNIGHT).atZone(zoneId).toEpochSecond(); + return HotelDateTimeUtil.toEpochSecond(HotelDateTimeUtil.localDateTimeNow().with(LocalTime.MIDNIGHT)); } private long getTodayEndTimestamp() { - return LocalDateTime.now().with(LocalTime.MIDNIGHT).plusDays(1).plusSeconds(-1).atZone(zoneId).toEpochSecond(); + return HotelDateTimeUtil.toEpochSecond(HotelDateTimeUtil.localDateTimeNow().with(LocalTime.MIDNIGHT).plusDays(1).plusSeconds(-1)); } private long getWeekStartTimestamp() { - return LocalDateTime.now().with(LocalTime.MIDNIGHT).with(TemporalAdjusters.previousOrSame(firstDayOfWeek)).atZone(zoneId).toEpochSecond(); + return HotelDateTimeUtil.toEpochSecond(HotelDateTimeUtil.localDateTimeNow().with(LocalTime.MIDNIGHT).with(TemporalAdjusters.previousOrSame(firstDayOfWeek))); } private long getWeekEndTimestamp() { - return LocalDateTime.now().with(LocalTime.MIDNIGHT).plusDays(1).plusSeconds(-1).with(TemporalAdjusters.nextOrSame(lastDayOfWeek)).atZone(zoneId).toEpochSecond(); + return HotelDateTimeUtil.toEpochSecond(HotelDateTimeUtil.localDateTimeNow().with(LocalTime.MIDNIGHT).plusDays(1).plusSeconds(-1).with(TemporalAdjusters.nextOrSame(lastDayOfWeek))); } private long getMonthStartTimestamp() { - return LocalDateTime.now().with(LocalTime.MIDNIGHT).with(TemporalAdjusters.firstDayOfMonth()).atZone(zoneId).toEpochSecond(); + return HotelDateTimeUtil.toEpochSecond(HotelDateTimeUtil.localDateTimeNow().with(LocalTime.MIDNIGHT).with(TemporalAdjusters.firstDayOfMonth())); } private long getMonthEndTimestamp() { - return LocalDateTime.now().with(LocalTime.MIDNIGHT).plusDays(1).plusSeconds(-1).with(TemporalAdjusters.lastDayOfMonth()).atZone(zoneId).toEpochSecond(); + return HotelDateTimeUtil.toEpochSecond(HotelDateTimeUtil.localDateTimeNow().with(LocalTime.MIDNIGHT).plusDays(1).plusSeconds(-1).with(TemporalAdjusters.lastDayOfMonth())); } } diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/highscores/WiredHighscoreMidnightUpdater.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/highscores/WiredHighscoreMidnightUpdater.java index 7b60b22c..bb53dd4b 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/highscores/WiredHighscoreMidnightUpdater.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/wired/highscores/WiredHighscoreMidnightUpdater.java @@ -4,11 +4,10 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredHighscore; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.util.HotelDateTimeUtil; import gnu.trove.set.hash.THashSet; -import java.time.LocalDateTime; import java.time.LocalTime; -import java.time.ZoneId; import java.util.List; public class WiredHighscoreMidnightUpdater implements Runnable { @@ -30,6 +29,7 @@ public class WiredHighscoreMidnightUpdater implements Runnable { } public static int getNextUpdaterRun() { - return Math.toIntExact(LocalDateTime.now().with(LocalTime.MIDNIGHT).plusDays(1).plusSeconds(-1).atZone(ZoneId.systemDefault()).toEpochSecond() - Emulator.getIntUnixTimestamp()) + 5; + long nextRunTimestamp = HotelDateTimeUtil.toEpochSecond(HotelDateTimeUtil.localDateTimeNow().with(LocalTime.MIDNIGHT).plusDays(1).plusSeconds(-1)); + return Math.toIntExact(nextRunTimestamp - Emulator.getIntUnixTimestamp()) + 5; } } diff --git a/Emulator/src/main/java/com/eu/habbo/messages/incoming/hotelview/HotelViewRequestSecondsUntilEvent.java b/Emulator/src/main/java/com/eu/habbo/messages/incoming/hotelview/HotelViewRequestSecondsUntilEvent.java index d948ffc8..9856b076 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/incoming/hotelview/HotelViewRequestSecondsUntilEvent.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/incoming/hotelview/HotelViewRequestSecondsUntilEvent.java @@ -3,9 +3,9 @@ package com.eu.habbo.messages.incoming.hotelview; import com.eu.habbo.Emulator; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.hotelview.HotelViewSecondsUntilComposer; +import com.eu.habbo.util.HotelDateTimeUtil; import java.time.LocalDateTime; -import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; @@ -18,7 +18,7 @@ public class HotelViewRequestSecondsUntilEvent extends MessageHandler { try { LocalDateTime dt = LocalDateTime.parse(date, formatter); - int secondsUntil = Math.max(0, (int) dt.atZone(ZoneId.systemDefault()).toEpochSecond() - Emulator.getIntUnixTimestamp()); + int secondsUntil = Math.max(0, (int) HotelDateTimeUtil.toEpochSecond(dt) - Emulator.getIntUnixTimestamp()); this.client.sendResponse(new HotelViewSecondsUntilComposer(date, secondsUntil)); } catch (DateTimeParseException ignored) { } diff --git a/Emulator/src/main/java/com/eu/habbo/util/HotelDateTimeUtil.java b/Emulator/src/main/java/com/eu/habbo/util/HotelDateTimeUtil.java new file mode 100644 index 00000000..0abb37f3 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/util/HotelDateTimeUtil.java @@ -0,0 +1,59 @@ +package com.eu.habbo.util; + +import com.eu.habbo.Emulator; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.ZoneId; +import java.time.ZonedDateTime; + +public final class HotelDateTimeUtil { + private static final Logger LOGGER = LoggerFactory.getLogger(HotelDateTimeUtil.class); + private static final String CONFIG_KEY = "hotel.timezone"; + private static volatile String lastInvalidTimezoneId = null; + + private HotelDateTimeUtil() { + } + + public static String getTimezoneId() { + return getZoneId().getId(); + } + + public static ZoneId getZoneId() { + String configuredZoneId = Emulator.getConfig().getValue(CONFIG_KEY, ZoneId.systemDefault().getId()); + + try { + lastInvalidTimezoneId = null; + return ZoneId.of(configuredZoneId.trim()); + } catch (Exception e) { + if (!configuredZoneId.equals(lastInvalidTimezoneId)) { + LOGGER.warn("Invalid {} '{}', falling back to system timezone '{}'.", CONFIG_KEY, configuredZoneId, ZoneId.systemDefault().getId()); + lastInvalidTimezoneId = configuredZoneId; + } + return ZoneId.systemDefault(); + } + } + + public static ZonedDateTime now() { + return ZonedDateTime.now(getZoneId()); + } + + public static LocalDateTime localDateTimeNow() { + return LocalDateTime.now(getZoneId()); + } + + public static LocalDate localDateNow() { + return LocalDate.now(getZoneId()); + } + + public static LocalTime localTimeNow() { + return LocalTime.now(getZoneId()); + } + + public static long toEpochSecond(LocalDateTime dateTime) { + return dateTime.atZone(getZoneId()).toEpochSecond(); + } +} From 2a9f1c1c3272a8a2f31b5de9b7e035505822cf79 Mon Sep 17 00:00:00 2001 From: Lorenzune Date: Thu, 19 Mar 2026 15:22:49 +0100 Subject: [PATCH 08/12] feat(commands): add wired tools launcher --- .../habbohotel/commands/CommandHandler.java | 1 + .../habbohotel/commands/WiredCommand.java | 35 +++++++++++++++++++ .../eu/habbo/messages/outgoing/Outgoing.java | 1 + .../outgoing/users/InClientLinkComposer.java | 20 +++++++++++ 4 files changed, 57 insertions(+) create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/commands/WiredCommand.java create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/outgoing/users/InClientLinkComposer.java diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/commands/CommandHandler.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/commands/CommandHandler.java index 956b0430..2137439a 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/commands/CommandHandler.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/commands/CommandHandler.java @@ -297,6 +297,7 @@ public class CommandHandler { addCommand(new SoftKickCommand()); addCommand(new SubscriptionCommand()); addCommand(new UpdateChatBubblesCommand()); + addCommand(new WiredCommand()); addCommand(new TestCommand()); } diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/commands/WiredCommand.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/commands/WiredCommand.java new file mode 100644 index 00000000..d8d869b9 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/commands/WiredCommand.java @@ -0,0 +1,35 @@ +package com.eu.habbo.habbohotel.commands; + +import com.eu.habbo.habbohotel.gameclients.GameClient; +import com.eu.habbo.habbohotel.permissions.Permission; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles; +import com.eu.habbo.messages.outgoing.users.InClientLinkComposer; + +public class WiredCommand extends Command { + public WiredCommand() { + super(Permission.ACC_PLACEFURNI, new String[]{"wired"}); + } + + @Override + public boolean handle(GameClient gameClient, String[] params) throws Exception { + Room room = gameClient.getHabbo().getHabboInfo().getCurrentRoom(); + + if (room == null) { + gameClient.getHabbo().whisper("You need to be inside a room to use :wired.", RoomChatMessageBubbles.ALERT); + return true; + } + + boolean hasRights = room.hasRights(gameClient.getHabbo()) + || room.isOwner(gameClient.getHabbo()) + || gameClient.getHabbo().hasPermission(Permission.ACC_ANYROOMOWNER); + + if (!hasRights) { + gameClient.getHabbo().whisper("You need room rights to open the Wired Creator Tools.", RoomChatMessageBubbles.ALERT); + return true; + } + + gameClient.sendResponse(new InClientLinkComposer("wired-tools/show")); + return true; + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/messages/outgoing/Outgoing.java b/Emulator/src/main/java/com/eu/habbo/messages/outgoing/Outgoing.java index 173ec13f..310a1404 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/outgoing/Outgoing.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/outgoing/Outgoing.java @@ -504,6 +504,7 @@ public class Outgoing { public final static int WiredOpenComposer = 1830; public final static int UnknownCatalogPageOfferComposer = 1889; public final static int NuxAlertComposer = 2023; + public final static int InClientLinkComposer = 2023; public final static int HotelViewExpiringCatalogPageCommposer = 2515; public final static int UnknownHabboWayQuizComposer = 2772; public final static int PetLevelUpdatedComposer = 2824; diff --git a/Emulator/src/main/java/com/eu/habbo/messages/outgoing/users/InClientLinkComposer.java b/Emulator/src/main/java/com/eu/habbo/messages/outgoing/users/InClientLinkComposer.java new file mode 100644 index 00000000..61c8548f --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/messages/outgoing/users/InClientLinkComposer.java @@ -0,0 +1,20 @@ +package com.eu.habbo.messages.outgoing.users; + +import com.eu.habbo.messages.ServerMessage; +import com.eu.habbo.messages.outgoing.MessageComposer; +import com.eu.habbo.messages.outgoing.Outgoing; + +public class InClientLinkComposer extends MessageComposer { + private final String link; + + public InClientLinkComposer(String link) { + this.link = link; + } + + @Override + protected ServerMessage composeInternal() { + this.response.init(Outgoing.InClientLinkComposer); + this.response.appendString(this.link); + return this.response; + } +} From 85ade761427c358133fe3a177766567906bd1195 Mon Sep 17 00:00:00 2001 From: duckietm Date: Thu, 19 Mar 2026 15:48:02 +0100 Subject: [PATCH 09/12] =?UTF-8?q?=F0=9F=86=99=20Latest=20comopiled=20versi?= =?UTF-8?q?on?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../habbo/habbohotel/items/ItemManager.java | 2 +- .../Habbo-4.0.5-jar-with-dependencies.jar | Bin 20878583 -> 21002353 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java index 9071158f..ac2eab14 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java @@ -300,7 +300,7 @@ public class ItemManager { this.interactionsList.add(new ItemInteraction("wf_cnd_not_has_handitem", WiredConditionNotHabboHasHandItem.class)); this.interactionsList.add(new ItemInteraction("wf_cnd_date_rng_active", WiredConditionDateRangeActive.class)); this.interactionsList.add(new ItemInteraction("wf_cnd_valid_moves", WiredConditionMovementValidation.class)); - this.interactionsList.add(new ItemInteraction("wf_cnd_counter_time_matches", WiredConditionCounterTimeMatches.class)); + // this.interactionsList.add(new ItemInteraction("wf_cnd_counter_time_matches", WiredConditionCounterTimeMatches.class)); this.interactionsList.add(new ItemInteraction("wf_cnd_match_time", WiredConditionMatchTime.class)); this.interactionsList.add(new ItemInteraction("wf_cnd_match_date", WiredConditionMatchDate.class)); this.interactionsList.add(new ItemInteraction("wf_cnd_user_performs_action", WiredConditionUserPerformsAction.class)); diff --git a/Latest_Compiled_Version/Habbo-4.0.5-jar-with-dependencies.jar b/Latest_Compiled_Version/Habbo-4.0.5-jar-with-dependencies.jar index 7c845e2b810251f2907429e1adc278c8c51c7792..828852a8b752127356d62e4232dae4b06bfbef65 100644 GIT binary patch delta 481154 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�iy=PDnD%(U#38Y{+mJ{{~#32Y>#CF7d7o`@0 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⪻`)!JS|LUPDPZ5JgLzx7A=8of#==8Ro%n+B4}>|9=W38 z(Ng+{pCXxr8leFF-|QmA(Gh{ng)w@@JEO+~Y}ZqT2UF^QJ%1n)GThLx0M?E3$oNA_ zNcw3s*K;Dt!!*xo;=Beyzio@e{&v`-Row8zvQ9eV`z0Pz+?wv)dSd?tA+XWQ^V5$c zP(W9_`GsmU)6x0AoTj2&g7Exy--P%-d+rd(-10S4U#O3npga<*^!Dq2jpB>RitGZLr;Nb|kKq!a8-2HRgRCAg5{S)o@g&F-))Ak(D2gd+bSN>i-Q=(cxNce~SJ z-}Hx1ZP&g%%M6=3s)xk?K{Wn_%E!O)v3fCg2>t1<5ck4(*Ih7J31HFK>*UG`k=55a zi}3ee4i{zZDkh0BX@a)~%FZpU^8No!{--;y6y0Vfv=xu)xb`HyHSIMRLcL(A;PLQy zneT5n^0B&xo-~vQ$wZvLOq zdYL5S7)&jcm(j539RNLzbD<)>VW#oK;b@Vtlx#wr>&?)ROgm16A%{*r^-Qyba`9Cs zwua8TjX1h(s8o+&y~_A9RzY%7xGzI|jSx;9xfH(4YFOcEm1lwr;gm#`L-4rA@vVw} zOX6t`Y846$r%mg@iFRJ*9dP*g} zP+BZPrEe;COMWCE*`r<$X$o67o-&ljL*Wb8;|?XRJFWLg{>~bEf)TU3?;RaJ?*icT zuh9BnjP|ob837;{*(5pSD^RprD14Oh)NX@)u}Lb{r22qvyPC4;VJDctr26VMY+8DZ z9;{(9QX@}t9kE7~09&U4B&z(m;&Z<+#Z@1PDpDT-9hqt0i-YiKSLn$-sx(HVZEt;> zrHhi;)7Tpx0Ff*@_SH&JwS8G=AL zm#ChYG>a)qo2p$`UHbjno!{x(WOwS<9S*U&B+P)+(B1g?#2paTaFO|CiPr=B!*za$ znSDNXZUrkoFWPPnp=o&-&_9!%UNr%aZ4I?hc7LIoZJUkbfxg@C;GjK&wABL%g2*yA zcJE>5Y6k$1Q=D%~-Y6kkIheo{&os3i_Hs#aS&)frYU1$}wnj!6LGGLLxq}c2%t9DS z^Va0{-bPQv^AhjDp|*t1eA~@(t+!7lsqFc3_L3vm>x2;Y(M?VaIVm8xuG$aD!o_hd5mfOTZ01cQeSANhq98Ss3ZU;&e4^@5A~PdzFk@<+9c^Co+2to zz@IPdlT_=ZZ$fc)HzF#37#>{dfZo=M9$@AgrkK_|o;=_G^f0Z{C;-Fza`&Cigy|XJ zo$Ko0q zZFdV8z8gl)c7jSvwS2FtY-xnj`rcpnA&dTZT!fR=WzWJm4WeK@YsJ~Czg(X!>e}}P z5KQWGv7XmRWhQR#oFGu&Q66izy(OZTe<$gUUNGXtU)379e@gau)QR>4>5)%iyy6~c z90Zu$?u<fmeS^U2q5&T8UnZuXWp=>Wj(ihv@mv#=+{b@>5O8|-vm>` zQ+`$N->WM14N=>kA&6AsBb85P`-wFBY}EN|XUK_@qDi;uTn3mZ zco|><&;m@MFpNpM?VtWOO=w0W5YO%~;bNFtdf#K|ky3g^(E%cE%)>cT@|WMw>Dl%f zixg%=?ceCkKWejndh^@FsJ2adWi!|yk4xms9hFX-&ysM>e_`M|Sz!9+Ugp~;wyA(W)mPZK(VN>>M~h5X#gNKe*F5+NAO+yHvVtT2 z0Ipb%6G1l^N|;uJU(@BqPhK+`EuYZ5ulu896#u1w(5kns-cQ?>{n)E~$VT5Y%q^t* zDVY^1PsW5xF+Ue3f;4jL1q69Hka{u~!Z}nWLus6Yj5@|fHgjZ(&NIqAYZR)NQX0Pi zrmyvf#PF7Xm1PNOtApSH%LE|b$tt@DUy*OSNa_|8%ypb}6z};A`UCR1W>5-WlnGa= zU|_!xEzeWjCUTe6SQEKU$?Y96eSA@rToS>Er%s+ouZq_K6AF<3s_^x@vgv(73JCc5 zc-fOcBs6$YlSJ4#^rGKvCj0l*MEs&gbCVZZXA^CTJS3`H*9C|GfggZzoZ@Fs@Z>Aa zUrc0ydK_k6FfxEbiC#fUSax`DMEg@#v%06Mve0vCqDTd$|Cr9Mhpn%R%_K)pQ}kQT zlzW|es_5TTr8I-eI>Q=$Y){C9Q=(mUEIR3PunS-}cgv|`n!KltbE|xbVxpo1L8Luz z&K_&>GIjFpF(1sbx;h|pHzF)?gsF;#2~F3cP(CG~LG>^pkAq@g9WTB={C(3Z4kwu` zFgd|HKadMOBDSCqoh9bBrQ0< z$vRwXv`kaqwk@L_it6=6mCr~S2E^rj7K?M#hoFeRacMu5 zJve&3Xd)_~iJtxhg&KQnNnMX3+}?iDC#H?4slJ5ibSQI3d!f)VQ@|NH{(5kN?xnHh z0po^M#YqMDP1ZW2sXmvJ;2x$;?Bj4G(EYILwL`R{3twYq^rqRc)*-+7S*%7dag@Pd> z8`g}7NS2sRD<6VJroul~BD$pmsJt4RC>ZJ}>%E?)5lb4D$h)ez$|w`v(aBTGvnJ2n zNmOL7Ih(>;GoSkeG-I)&Pt6i`#iwE_`;;Shz}kZ7{)3 z@}vMLA2;2Kql@2r23^Is730{|lWRHch(SMvj1FVq1-HP~(df=#>0nwOnbXxuVTz@N z-L4o#@rUAR`(ap;X{Sz8criUCbSf%Ei!jAwtLAe4IaF_?t@>(He_Rx0Q@&3FcHoY$ zNc<`XI){GWtm-u87z$XsqUY8&`;KSlrOzda z-``h0YcZUeNEgle3PRcR+{h_HHIjH^h1dsrwOu`sMCxUY-b2$R>|@sP!o<@-T57ov zedfeo&KGH9x~#{9@%ZtIuc5W}->a8(M?~R+BXV_gAob_ia3DPnUMr(sQu|#b>&Yeo zXcSEumR;qA@tvqAU9AuCOz~ATIQP9p9%UXyH0w_Z#PRP=Ti!Q1*pItp&_~ydWTO0W z4t*d(m2yxnxs~DQ8SPs^NT|*Jkee>Av@CZ~Me2`Y)=ton?~cnpH=BBbs+h8BXQ`r2 zqjuIp@P&?~#b^G^Ep<=!zMS&H@Yu@9-%T~1t(N*q6oo<4f4&M1v@Wu9VjCVR2s#c*=%Ya^Rq}w#&CYah_ohWt zqwzT9^GGR6Jk4gzvJ5S%sz+iKd3}SCfcHp9iHdtIF`E6s?xfzyBPSM)clyc-c+t6N zn`D&!8b@5VUQuL1br(1NEBhPanL1T5I!k{k4U@K-nx?L@o-V(Yv&jPiG{Q89;6fKA z^c5#w)z*wHQcGD3)!JL|%VE8m%n;)6F>LSlqABH95g`@J3W|#FmTKxATl@_Uy!8WOdXTO4 zX47i9g<&b|wGV_x!T97j;Y(|db^Khh9)r3%iUC?V><|fsHGTr}}fC-(zv}Us32hO~I zC|N8_N}Sf&2%kip^6MjhMEC;{Jwr#`SMH{N=RlpTIT;kpf^vT!#XaZOvcsC-8gdvK zwBgp^v+{-}uFVcKUVp_skU)pghKQZ(O4mRuuz>63YwQWvR`G=wO28|g^Fg76WZCQM z4D-!Nwo!#Aqg;&T22>qkIPWyUX|E$oOcWkW>W9BBMNKz(6>r3QZR-r9(j8n?c(?`> zX39Ni2~vJOpA?5Sa;_ff(@#1{;EdI-JLhQJZqb`v!!W0Y-5*YwQf!(njxH}0Rk%z zo@pZLs;k}XTggk?-3GE7eKGNSPc1Rw5L|QGxj%neNQ5t*>%$Fb`9ty-C(TLa)}1O? z(JLkkn=97_Hvq}?;uwn5L`;@P!BnAmBe{{^KeJd`PSU%>m@1l4Pil#hcvzs)9U}CH z`5I_#?$ZjZ+k}>EiI!>BcOU0I<;jCV->!A><<3?2Oo1Xz6-QA;8 z*F`P}%d?m1LHqMC#X;QEuW$%?Mx>CeTd8j9{fuZeXY!~yiG^!nrGF_L*;$6I)Ct0cbV{Q40-Z*J>O%`_IEJ^Ns#*IQ zQG8dmquu_yZi?eihU#skk5k_D6Sik;0=n%RB&9IMt+(^>B+f`cbMY=Si`Uh$CA2=V z6EVO^ue>rGv4)PX9m^aY6NjXHV1IO?g?<8)+Y2In0kMew=l3!QvsOtnm@%igG2~~E zY%8^WNLoGRxfRzzXqT$(6o=1xtK>YC*B<36&V5IkB|oYQNEYD6b6%cyJ>PX@I~C@Ww3@FDuDzN+4`J6V zX$Q6D9Jhwpen#nubDxxU{c{7I>tMQT&vq)wr)o9d4r0AcQV{y}h!l5U5%&(o#IJ-X z*OoaeXrF803o^^PJ{a=PU|^tYFd0H)To5-%pVvKD40^dwgy7v}g})aTI>-3m;%z z8q^#FEOZTa$G6r){t56)a0`aPvknY$sRo+52meCgoEJ&AtA-*nEC81B_liN6U7#Ex zG%kqfSXTG&_mUwv#|OF81M&EJDg8LygDaqU`$Z7&>Hm^6;?wVvP$D!=iRhSAZ}Ih_ zBRIzfxr74cu29tRMfR!xC z_{fOP8Niib^J;v=-F{KORcmH0TD)UUzm}hq`bP-6;^Ka*R?J+Sc-BVpgbwc(y>}?Y z>JOSrZ1~J(KvgktzBK8ruJ+w>+mpIE@rXe60tr zUK9i0EbV`bTApJgo<>R{zJ>x<6-$76T+O_U9QWGLza*1p?TcspJy6qWON7lH_L1-#;Ak$8deq2YPA!W0KGu@IgZ2 z{J{J|81l=S^7z20SbPj){maGkk2LcS{!b$EA6oV!W6A8tZ~)>vQK{`CtrX6Oyz0l? z0pthKG4x|t%jP5B*gxVP{s$!NpBSD9-~$uzfobjk$o0eQ18K|tQ4rTZxd;rq#Rt2MBst6!UN zUJN=zX8~pRarPVlh{{d9E<18UFS>|8s{#xA3;;WFWm2T~y5vAN;#7)#o+HN!d4=D) zbX2#N1>Fk$3yf`y$-SS>=O&QyCT9zRZBkMU3{uy-r{Aa`!_7CU*+ase6@y`XKkDVv_Cht1J{hB(w;JwzS#Cphi+!@+^ zl^uii)#`ZH9f8rGJKVdMuKX1b%DvP6_!XtXT}ERqTlDE)Z5nc?Rmn_u(1~enF@T3( zSq82xc6CB6>(xLn!Qs0o6R1~D%`U)awr7dDoL3~y5db6pX=h@@`T8*2i+pXy`_)y< zE7L+TUq-|j{;2a%fnt$XL@0xYleL})I3)po_ z$QOUY<$|^hIG5q{d|&HhZy!v^eoxM6bY5URw~@A(4n(fL1di9W_zCJ?LB9=RZDUu9 zT>dsoc$n5yeI;$AUN;WfB_6Q6WHN4e;HvF=NLz?~Hd~x}{=IPdY`2IC1#mqc^!>4* z2=!E>FGOKQ{kgW^H=(>_gKtjBp3sUxV_Xe`udf@*uGSowM2|ISaM3kJkGc@%1i4$6 z;6tWq_N8A9YRvG5kJZ9YpSFbypMeEfpZNtzANhqLXrm$=kp+u>(Z;1@;25*zVv0B& zFI@wvzJDwo_@UR~>uqRP9N^0q;M4GD#MT`P)xNZCPh1_?y7TRC(8xk&H}SR)8$;8geNVMy%0bYyeIPQ71dF8 z?Mx!MTxjo(`PqG=Yaf&5v+hi}`-O$&9K!E9X9td>yKEWFCg)||-+mT@5{A>3Tthc# zGH?Xz3|!?RNVUaJa@mHfOarZYU~RQ@23*dVGWzpfUdLP(H@9DJGB;=31Kpx)vFF?a z>zMs8oC;Ub1i!0EiyHvok1-4VN+=HL-MtxsiHg#NE!wO+c@*rl+~m0|b_JGpH_y!9 z$VDayhitu97b7&T()3xi)6}l`igu^dQ{{Wy#+>JWh3{Kv#Oma1Vuv&^>-USdv}g+y zYTH(&w@c~{WtT2Q%P+ilI9X(8Rcc8 zm#HSooP(WfLM;j)3%o>P_~@{G+u3C z=WKZaAR}fXu`07_EN8}q3kUPdDZNq*P=HjEhh9#5!95F3P{zZTRUFL-b&**0mV1?) z@Pb0?lxLh{UqryN@OC$CI~;kHLupuz=^dt>Cj3J}E)pP}zSJIjpBX8YgnT{thX~b=LY8Dvnv`b2PuV1kgTz1xdge2BVty z=a)0zpU1k?LQHNbM}a(zsHuxDD28eJP;JO^Mro5}Ysi44YM4zeXZ)3*fq{#AN+Lni zCX%zDw`S`iKx^4QKZOe@?N*@u zzD;I#(Rc&c_3tI#keXG$AaB=$&;2;z)gNk8x~z1P25Jw!lGN7p5S~0kaC+A(OUUBQ zF$l&M<_A9CQ$9!{87que$Hy|R&FdBw(Pf&Py_X%w9|hbrDoz~lv2pQ$j2hp(fVgFSh94I+Wa{E_dF6LU z_0k70u|&Mc7Vn{ITzM*(7H9<+X~As;xY43O_7t9gQ!Rz^pxFwERfvl*cqcK41w;{u zy$Gd`qSBTXl^jdv*S395aKqxbWS*HNHt?kseB(#B**~u1omw<|%Bh1_#5k;IRiJ55 z6byDMn!QlWS0iiNnXmNs_I!L4xxBgq0XhM)t)sv@A^#Pe?|ZfL22{7=ONWotFryMB zVH4F1>`C4y{zXBh9F5$pI1a2nz`QX$S2gxf&~;Runsxm8)2z)HS|=^fF(J?+R&~jM zD4T2O^B$Ih)kSz%9nX#*~T%r>rEOEZ-`q}q$?O6!{>FsfA+bcjc zZvrc2LCsO3;9;WRPqr88h>}faj#!z^L2|<{Qm_DM`7h%?S1{DXb58&b zlCOb1rVlW_QCY1!Z=~Su7o8HHn$V{vSa*d84_7wr+1cUVuOMJu_%O$Oe+3j&`5ax` zyEh}ok<>a0d*@%#h`oT{(rDf9nQsF0vI79HR}1s|jsii{MDkr*czn811Bl1kj+}Zu zrniVZ>1U!XsSD^?!5ML)7g_CgqC5;Uoj{tpRAjmWD`)Rxuu2zbVKbR;oc*mZ(K?QPNjfmgZE= zxp7?eItqltGcAssaHi}GRb2((qG>b2kQ@j>kh&3GZ7h&KKQKfXk^Tkui^#7D?$_lk z%yz5E)GCOmVc7UWon@P&VOT|^viL_KY^WTdEuo`^{@g?J%^b8* z6a@dPxcpB*uS{*9f@Z|$9s=JiBF34L@<4l*N|lClU%23C5`E>lMGTd;PxU=?)rcLh zN-hC}K8bY^Cvp;VgOLUR8y9}?H4`)VM|PfC+Bu3y>{`7#x|mG(tXlWJ7hK2QC$5k! z(_4vKYN+;eGIvxKGkooD676s4&6JN%)Jgj;7>=!tBO5X}VW!a#WX;I^mpaMaFV)23 zey$!U^xF^B@z~!Wkh|anAeSDPT>_#4e?N?!lV#d%_26!iEqu`h3_9=SEwcY%)Ars| zb@756H~Zn@$vJMowRxe-Cou5afa&kUum^%W%=r4A*s+K}qG#W4Ow%U3OB_EbRPB3a zZ!c|rIJQoL5t{+H<7orPwr~1bftimiKAyDVJg(qRDz`b@X=HzA?P4jz%x)5``s(r~ za~ytRiKdc|;fXfO0n8$Tc|whrgavj}zINB^`EM?7{1_D578%s;IhPm1^PRH*(R;6~ z*kCN*sRedj_Gjtiz4rZWX;}xa!U|4ZKVqXXmP;HtD9LY1KBY;d718jdRx?CttQ`uu zPC03M3;*o?t%;Ru)sF7U?RvRQVe*>Zp-#!CQu}MZc8Tcx3t;IDdA{RQqW)HtzqmP8 zB`-A9)=!SW6YS6Po?lmj2edcjnzfrxpEke-oW{L@3mjWQTj&PlS&(h#L(D1IJ>UYE zi5pJgNnJxOXAXR8!2?hCndhG}1qbiEi|*^$?>Yv5u2XTJK4C3;3MTLVd0T0FB6=Hc zJENSfC$tS9#0Owa;N(43c5i0LY^5&M9p-_15D)G>6+T>m4`^a_saw{aZ!sV(KRByI zXZ1H~m)zR(e}cZ6Vy}Ean)e8@D#NR7NnF%{L7$KD-N`|w!K}3RBaZL4ukNw0-kFY> zWjTa%e?0o+u6(&MDmBVF{N<37T6z`1tiT4l5qIgAf&svIzR<&PptmfBaBEOf^$YE&A)3$!GEg z_0cBye0IT-HN}QiJX8xdH*{-E?KZ`)QfF$Z=h+)V0(kPqd@b@8(8Z<&4z&8paF`;n zi(vTTcI?)4tqDdI3bLx4v>~=8vmGEwx%O-+HZZfdDkl)Hw`L zln7>^2o8K`@StHXT_1h|+sTzI=<7&m>M^S`A;F?Dc?c=B>q(=a!oiiKC9BlZVPtIM zEfGb1;oy0ObeP=3ru^`HLNUd_nNj zO^I$bFZT9PzjIu@P@p^n{%BIQ(%K;HeGZ@;H;T}u-9PP^m9I0Ms|MdSj5*Yl-CubV z{6>Qvj*w?VaTA@r{6WQlns%;53@5akv8e|y)kXIRlFe#184nvcqUD4dNJk)E_iGk1 z)1be549%1ro^1(Eq%o(OzyR3*6;dT%a}3v5^&Eo!M>>|zwOVx(cYe|(zXTaS<}Dy` z#*H=ww^e^3*SVOEK}3y)q4zpff{Pa0Ms1G1=X!4t5meQdK$lc~7=Hl@sLj!_N+H0j z)k*i)QDO|1phn3aFkn9Mva}AxhAbwhk2sbOIMBBU zNCk*q^r?7MsPZ*2b5(@4B>GF57XUyEvjHu}(k+pz4c&<^bDg))+Q|r{hFpjNQc-h0 zmmvAycZ4c!S#Y>qpT=+|j^o{eo7yokCG-H8DEvhQP9!ihR#W?@jhhB* zEN%aJ=>GDpD9t0Dj!(Ud4fICnZNV{ZFAypV8*k{!l1mj;3fK|rWYFc>d&86&kpIj;u(>9>PG6OO^hP=0qJCnvsqRBEMKISRu$Q*PmP13d-XwMAV= zUhxCs&j|Nc1KbB5!eiGAON%t3EXv({S(lI+4)*-X~g%>U!5=ZVm!l(oWCfb(3V`=2}`7xyQp&N4vXy1RkbR>z;5s^iE z%b~huA(`@5|Zg=5HMQ7;1h5BvG6o)>Xe=Wy4{GeC7*0ccJZsRoi;NeHL#{eiL9&PCYZ0 z%5W}p6xS+r3}I7AVopq<8GSTiEl{3OK5@RLWF<)1PM-vH(+-4H{dT{&>2SZ$n-CA1C-IO8=+if>@)sj& zM}^yDZ^nsI&z5*3B!bCFS`8lv+WhGP7sc9+P{otVjE@L;&#>=m8zAh3f81{uRPu}@ z!*c51_sqzA@yPDQW!Y6>4@1PYbz$Pg)E>I0{lI@NaOTX3Arru}d52NnW6}utitI~e z{cA1Nbc~pX=Q1Zj)@bPW?DWjE%`X9BXuBTMlH2OCGD44jQ7(uCHrv}s&_SP@xOY7( z5r%@T>UcFrIoOdr-Yw7YOjTNY_K6xJaVb)N?;CP`F||k-L50?yc>)r84hFMOfLJvo zwGd$>ED2??y|4FkL@;rRwoWsEA5(I`Ed9O`58=4($@^-QIek59=m>&2M)0%y1%m>J zI1sMgb{EjQ?Zl?zJ79I;LJUA4>bin?$l9Rc0|W~CUaaO7+sJ>GEkkYK9h|G*v~RDl z@M`XvtA`y zK38FlcDPWn5(Vb3L6;WZ6nbJ(?NmwcQ-Ln+AGV=j*3p+L?T!b1Va6i-2JaTOr;h;u zlenN*Na{p@xm4d!c%=o*Tvph#1A2b$K6QV;k-4EKh+9%&hewoq;|i`ZTEKKNT>ccK zxc_SLB8oPg)W?fY^=pv3_dSUMPQ zHv7w_?uAZ`E~?Qxc&I370*X(mRO%@-o`D$gJNf97rPbz+3SJ~&s3wOmK`Mkw`^qR& zhr4RRYzH)Wnj~k?)U3R~kcp9q_H9)T)`_KFq+wn7H9tq|B0lF*!9Tlbp2dLxeuFx@ zuN{&AnQAf}BOSipvt1ww0ImM_#gVz$}_Bv3c1ELm9plVc@x90=wgFcdDSKg1EXrD?#i8&=?{wW58Oh zf~05T#IfRt^h?yuDGykZO>z4MZFihfMcfejbDtE~j@8ykhVQ9B_SFhI`CY0u zUCQR9F4+Jq#bV$3?hWvZ(fmAMD>P&Exg-NDVv(LCzba5Z=>Lg_50dmUPrM|=VDkGR zcBc%7;V?l$4(%Jl=8kePLL|yp2ZK6ZE|d=a1XK_HTZ+R&JZH5>ys59XWqdtK<34MW z(s9UYyv;EqRzL4(>`-P=%3)}izz%5)+opn-*$4?>>n&N29_di6CwKLEq;qE|6t!js zSNQI21tpG`(g>bsT;8Sg-AR?H_UI8+ihLwXUWSuKkfj*Stkv0zAjp6Yf3A1cRuh#o6yDy7WSF_Rqn-BWXZZjMUx!a(6 zv6hkB8mKRC{`(am>%Z2rHvswX6|Y(yE4D6fXR^+BYeZ{nJp+{rRmYo~7N?MqB8pE_@UFORokHu7J`lVDiy-vSAw%E32w<`Q`892%+*fPEeEQUj`ag@LjS_G$)T|F2YNxUX0+EE06Y z|5-Lg)9`^Ib-pDdfMsC*<7QPNfYJPyakvHnEc(A@vAXr|I#3YP?}gB}B7l*6`G-|l zLI86?`WFuGzt{Ai&i723H8{vmpF&{%vxdsjfBoo`z;T2C_J2%WbySq!(|3_jV3+Rh zPU-IM?(P)nT#=CO?(XhJKw4^P1QZZykPeA=zwYmk_Z$xAp3B^s&%~X3d7j-FI+y~c zXQ+TdIN*Oa%FSPlNP^l3lurT0Pxe1r?F&>u6^xq_qs-jin^&(eF!KSySOC(06qx67_ zK)^T5e;Vugkl})%8hgY43*-N}$T|lI$c4Gc*9L!0A4<^rKZ2i4Kmba<0PlYhtdI`` zSi%rD6aoSDFpt>J_{w!cZ6y28MlkvpC_PqxWeL=6Fa=yIfB^98fA&AG1_G>MF4k`V z0t{gc+o5u7U@<`64Fv4K?9b1muage7A8~qc(j!^^f6NK<0|oxuc3OQvKq1Tycl|(s z)Z2eH6CDQve!$E}u?__Mf{A?d69`a1{MV*~8D9h?8ye6nsQClX?L_*ICw6|E(0_nS ze?tQX22J@02vCJZRQ?GN&<)$7#+N|ACCpHT(|h<@(7nEi4s$I`aYhj#0B(Qo4G>@g z+v?9xK)?fR_!j{Lh=rLW`Yj011pJ3s3=ae#h1G^LCj$YbVTda!K>#e6!~1DLfKJ$~ zKO+b*g78ld{a1qq4^XRHzs=`>1~h4Y11|`Go&QDrKSw38g8=Zb)tOu%z!6N3&rpiP z|Ft)9O5y)+Tl>9*1^$1FvHBYXK>#xNf9&~;1Na%B1RTh)IDrv>#6SQc7++;65P${o zpF;x`Kmb`7z)@uoKo~YeQU?Ke5&jW~>p-EwmgyOQ0H0wP_<4@x-$6A{L&^uJQ30^} zOh5o9*jiU}5TG0en!pMK*oLirwgUn7VZ#Gw5a0zyd*lWJV8CWyJV5{%*ig<71i*)> z0*P9g)`mtjDMEg58wgq`PfY&5?N=ED0+_;Npag>eQNVvtGvYviIT#D4WDqo8|FZ^* z(|5CZD2w9%yGDf&l3-$MC%5&*wrdM}Yzp*FRSb0yM&)#0q(R`tJ~_ zKu8BzK9lButOh|V=pifphi9q+Y8e&*!^F+LH}j@MQB1f?gIgGV8iG^5a2gVd{)it>^!LWk^d(iyT5T11Zai{ww(Y0 zz%XeC(;&b!j6)X$1PFwAQeXuHV1vy%eFp*9VZ;1Q5C93bta2L!po9&le}e#dFap;@ z5WpKYJU9UX2$26-bu+&Y%i!&+S5er>11(tje?&n5^n6y$|IRS+I}pGMmaZ!RXaJ6X z8z_JM4H{tf-=?X5iv~c1ZKV!WG{6CDOS*DY1SS){dX*>$I~4!z355J7t^X<+?xCRp zatZ&f{>+F5(1xx4!GZ=*<@`6xVTJ~9ge9YV3pBt!j3CMeN&w3(>#k6tFi9yBG+%w8 z&|hIEbChD`EucZmA?E5r3nBJXeLw?*!00Re(Ey$>E)-xi050Y~*9at{0nA`ICN~ug zAdC1<_+B;|U=v0=mX8MbMFUfF7!BYAqa~d{1K7dPMSepA=pg+|=W6yR_yN!Z^%m_v z6ZS!Il)!Rm`8pav19qZ3ZlD1q;s23S3uAulg$95uVm=%6RE8xDg#P#2Xn++MZ^d0S z001UY^#Bdv4AZ3l0u3OC^bbDr0~(<6ALiaRbU-sKEjl5h1HxgUnS-*-TaEJSl>$Zn z92g#YF?pYhm%m{m1i(zlEs z{{I4KeGd_IfIk4^znhNb_gO1@A84fM0$$N4&&3estA%0#kn<_T&;j^hHEKvGHNLoX zsl6PWlm_`*a=q;&W-FTGkqw~q%;xkaikGmkke~uCdN-+G+vRbux2o{>Rki1{sepEy zWafz{aKM-f_|oS0RQBy=${AMwhP&vi6rZ^3S4if;6a(;hA)B&3x_;4yJ;Bz)+=_93 zxMlD=${t=nk9iV@d+WGO%Td_ZX8o=4w zHh8oqXJ98Y*Fq#pe>YaERBsuDAWRUWKIe=9R&=vupIyO4zK2WPhIDwh@va-~I$w*S zp@+(lz3rS$4<=H)Q|OJI5<#?NYJSZb_UbB~{Uf1yJAAKlD3LS>oRokR(nw_>*_Wzk z7W7f$DcBly#bSb8Yp`JfHCB(;hWu-|;@D?njPj4Ji^M;&1jufFY+8<5M=sJETLu4U zSD@h27^KIK6~-MI;cjic%TfqoG6*p@rTbz3f_zMC&Wy89z@~NvWJCL|_T?45 zWMb%fgCLKuHv0lsJ$MSNb@+ZkT4Dtq!2#_pmKo)1CUm2ZR8crh$WcEO2RE@@>(9fq z;iONg%uS=dMFz8=arv5Y{`{hn$_`BMc_>#?xQ}YXb*09)nDx$N(-807H#I&p-9nM= zVKTs}tXu;ns7ZYEZ}S<#P(WLJ80?EcC`AotMrpy3l^96v+Xmxo>cA7bu-3(6jib`j zCFPBO!8a^C@M;T1=1T}(t%$VNv&KU&TTvVT_&57Q0igqP29r7If`xbGCNkNoModOa ztJDH|w+B^2s-@sfnTvdHs6vL_5ZrOs&#I4X3qM_p?n0=UHJ)lHnX;VtGJ<9I-uUR= zRXj-25F-NRwDrKTh*8Znn#!4Svu3ki@K#_?QG z?+vM*%|0f@CCneVoP&sN59L zkzgVoCI73zlk+k6yUcu(d6+jhfM0%a+##)Eh4IXRNTsyS0X1AJ{Y8JUQVM8mmL?P0 z$c%3wd2TDu7qUGw@a%AH;mXbI{1#C%#Un5D(jHrw(WY*hEMnz7MYw05_GTLHgjZvz z;)0oGXz~%5^B1lFo|mF#2S#to^@q2*YD*@HJ+YJNVV|6XY0JN8^X*VhJ&)`HO!vEk!*rJBg-y1-V@~>jr4_q-_%6eRI zip4jhQV7mjH3N3N-nL_AZba%oZiO$k(Xc$rWMO!NIVsjMxlKUEWc zO0+qi)-jdZx-SU*ToGePGd-+FL@G|HI`jSKWtGT7cW7;j>Bwcee`7l7DD=h2arbVb z4RMk+cq--P?OW9pQjYkPvz8~)gfm=HHr>*VOJ+(4PMMv~Y z;ogx)nsqk$>4?RJw-E`N>M-k^`?chCZr^o zkmDf=&mfs=TW_cC=o*NA-IUao4@_q^T?Fq?r&eHR$9@56aUG)Bvlmkn)!M{TYDBfJ zxS+~d8>G5*Os$79k}^ zFbh~S|o?*pm>W5?)!x86%Q;-ku) zR(3@2BH)qm=r;M*q`}kuIE+YA$1|+S6F0y8G`Ozk?Wad#`0*2i;h5RP3bPbAh9R>- z{esz$detHvQY0v%hdN>l;EaoLSS(B;k;%$mUHOz1HVlf7%_NNQGqTn3O>emqstIOE ztVt~VwKDX5L2G#_$`T*+mtBb7cYm7(T@lTqQ>)3kW_7N~#^?2x)H9dG!p;YJjM+k5 z$;4)`knTp$#KmH4Uxv{HToMA906D*IB1^w{LY}!EH9QUHvtin)r<9xZ`&CZUH}*t} z(LtpqMzmD-Z^(b(g(M77)=XJ2(HIWvP;r#u4Nr@KRbYyyTRpY{f2+syNtp?t zNE&2#sZ7c(yQprtAD1sz^a|gu<`YX@Imr5+N3*&b#ZnFT?o%TBI7Z5cI;%aJlEjNr zMK>Yr0u<`*1RuwG+8-KhNhaFtD^f;?nQYw|5qFq~_m=Z~&Y#9HLl#r~GOZj}clB^6K~Il=9g zY!Y0308O|k$WkylIBSxqC7Peim^qt!zguZdzHX#6w=?%Xpy6R$1v7at#k|nA$oafc%>-6!`n)p4 zH!r!MuXk24ajIyEMHbu0VNEXo>2E~%-wdnxW-y;$w&m7-u9b$mSp-;^VO8@hnfo~M z@7uP5B#m95PolD!B{)w!?)#J8@?S#>YoTNN8)oHPFvF**PcKIVS3Op24S4d=Dqkel zrr^Xhc2`)~Y{ULA6IbyKvNhVi4Oyo4&+Qer(4gcHL`^E7Ky>9;5k{%O8Hy?VQzo-z zJicjpMpYa|U0U=jL79y@Rg7B1irozfcY=?S%uY%q@mTXF6BBHy;m*F|D2w|OUgE`u zz3}fR6p~8=;`|wI5mWgavKwyBL+wfe{Nqdn0edx!Y}aOs=vD`r5x0ApoeR_PATv?Q zdNdk3%gd%O)CiQ@=k7WS3T3-|xT5yVL8-^Q;R1RphERA8%Aa_Kx0#tx8P%p^%)f}6 ze*umw#|2Q0=7Z(FfkLS5B7$>q5KBvjM%f#<5c!i7H;2>@yx;uy2l4vj3h{#)H)1~r z;tw=ulYcR|sp)Lxf#cHX@c@10HAZZO-pTg_am5hR;v~9zGZA>Ylc*NrRpm90j)>WY z8a@4ktP%LXdy?Fo_ep0HvI+N84BUb`X{hl!dLjxRz@@UcZeEOxaARg^iSJb^yX8gF zG>lmku)iVvL`cH>ka8qd0n`p3UuBV${~+aTNM2B4qLqJtnuO=Bl}{7JLXY-0XDX@j z;K7|bO{d0v3W#W!!Z$*9A$Hep-9$RQ;z8QFrY9s2;xQO(Ke)k_Z^WzSHOh* z7xsX{EqM2@en8VN&AWx^_B@@IwmZrNNTzdQ8~T!!WqfMrGCUyxu>g-|ywwPm&Qpqt z_a}&h#*TpT#nU~2&pXF0mSXOJR#yPsVHb5=k^gXO1VbE5zHv&5_2&K?b}3sO^dkd2 zQF*&1D7*C+MR!_l`ge4(!#FT+ znNo%CLS8{r@am%)v>drGXPxA4!H}eS=;wOA_=vN{V%X*905l{|;+?TBE# z{0A`EV)=-k;iP&-8-LPWgi5tj-0mbo2qV|Q=rD?1k0G_`fLnpG)^9t>5|`tF)g;BG zulDW>{80jJb&EuU27xSDB67yjg)sr~pQ+I_HT}cvQ0j{+hs*ggEi{~y>VH))aBi{l zt#wepGg-b|6Q}=Nza^{xXgB`yHC~)FNtputDCq|(`LKc@c+P}c9(nAxijk3t>2N~Pv1&3Q;j`@sUmBUZaO}(KcDZ5@q9|7S4av44 zpQ5E;H%(&Z^I~6_LF-FuCLW288E=QjDEH1#AkSemNkwC2Y{~{aTfWHWCo*F9H zl*ANyW=?SnA<1-%jdGDTajc*rdo>&W?fp9cBjz}pc6VtXG2!2Ab?K8i?0RC+uI+4&%hZ}LFfio0)vg$X)Q@FP*2re6yq3Wk zW3~Q~ii*5n@uHjmWVyA~LWgWX90civ_D`adX!J=LcE4Lb2yf7*GsC2*JoA4fTQB>=?i+!?XxYA7e{0cm~ zjVAxh4u;>;YEPY8qNl7UXJ7GllDX1y=$d1oi7i|GLGxpRjEY~4MGqCZNssIrx#Cw3 zSne4fjA@VjH99)I=*d_8!Tr}!x?jbLwZ{*fU1Mf1Y;zQ3!W8tPg;em6bMWIE&lQ`p}J%6Lw!E7#Xj^d36CZ?z*#!Ow)M0Qxp zu+OhC#BMkxreK+qjLNf0o;s_0r9-&nG=|x$E;cn?@C&0?Oieqmbf4~Fhs*7w9RVkk z#S-OrxKEsFQP6*NRNLTFKGm!g!iC&LP-vi*(%y<|{r01pdiT^4Spw>cFvf3KY#Woc z1@4ki49jJG3iYyX0MAvoadHH;U|W85@l&T?+_q%qHw>_tH;PFv62m^!bm3stOu>nO ze}}bGx{`~ok$pd47Ez%2NUEVkezWjBl5L1#vBI#id}R{TUy(!pI60M6Kvbz0+l}y` zY^ngk<1uC+?<;{9>PN!Jr;-fjvab=8h`uv55tIbD9|SmnpTWl!#1*)I72Q74&u!@A zIvGkRy(|8xBSW8}piVoX9w38_n=GRxld`1vEy;ps_?C+D?Y+)Ji1XIU8@94OLA5CU zBFtfAPk1&ZyLdq#S&VjRZvEm<80{HMzx9iBq6F0Au~SI+9Se=VRSZx{>#G15iv_^J z*eJu|6=}3nazJnc-*^2=Gj%WvE|TFk`eCAEH%`T*-2DO$j_0DaeP?4mp<1_V5qsfT zszs#TLXi*hSPkGX_(r}_i&^r6Ivq`gwE>$<(#8BaWh)bN-1ojf!Kp=D2AzmknOl!c zfqtVIUmKlP(Q*gK*=se384}{Vdz7MAWjZp&!nd#!L zeEo}f_Hri3*S^XEsd$FySR4fD!zFO~EO8dGd=r?misy80N_Y!mucG%JAh@laeLos2 zhQ%n1$z-F~&W&qq8+%e(*`82KI=!2)%V)o0xlbNNGO8qR&q(2rmPBc|epEr7?Z~AV z&fI1ec0mTuvyQODrI21gDEJ8ZvGFD{M8oOy35)uoqLg-LE#x%g!fqB+#_n=#8J* zuh6KnF7>w&U%6$=xGALQ-U813U2tdEv`wK!!wP0QM+PL!uQ#P49947pon>F=;nnG* zj_iDp*gC~2b_>ikP?|f*dZq(nghDD}d#l_;|Uijx9vC)#=*g_wz zBU~CXT$nSE7Q(sMidRFQR-S1%m1gE({khK?yu=ySeB9B1wwW$OC?nWxu*@Qu4_hyF zW~o9E+GaR!p~*|!&fi{Tb$Lw_#TQl3+~=hWmJj&2D6xw>6S>E7{t25cD!q%(3wrg& zT>dtZm9UkvBEk4 z76GsCHxss%&vCt^i&bdDIBJ=;TN8Gd@gUjp1}Z_aQQpJ;4#Q|)+2H5G4Rz4v4tfy5 zo*2XrXr*^@0Wp(8abx0#LY5@bV8&tF#(in7!I!jclmU5&n2^@))v9^)KQwDc~{7#L%|Yb+C+l6~VaJp;HgkkoxCRGcAQR#d8<{3t(yIdmt4s(lV-d1Q4*P7` z-9CQ~in1n7>1$qc!=z(pw0DR?VUB#;lR*1tV1y#gt%3{mjV~?ZZ+(K4wd?l~4B`SXMrl=yLHPEj(cBx0E}meAlCBj@q{{xI<~GgCKj?gsIki zvShBN4!O2yIL#t1VdR5nx7^v|j!#tZSD)9AH%Z)cTT}AThW8Xt0ScLekO+L|X+W+S z6Hq!5vc%MsZL0urk2V=$w6D>jizL+LT2yCIC6JZhu}gAr_VgeIQ*DfJj5MaX<#5IE zs_a{kmJ-6tmD)*eC_=mSU3B`V*}xk|#qf>DL-+zE-l&vCgSwiHNIwM=N+dCS#+|syEUp#aIEKpSi*L{Fyt+gX#k< z+!O~ZyPv^Gn1>q^_}-$^+9>CwsrEcl|JEa)wrpH_q_o89T9&MCLA9wVNXKwTsz<9_!(wGAii1KDSb(Aa^)D~`b@TOcvsW5r zeNN>XSSp=t4_kv{ zcq$jX;e^5zNvz*dG)pFtl8XI|2y-;O=@FsHRbmw(y^i`V{t z^HC?ff9{81zDhmCU(z)M>y+=kB93PqZhARZHrq8?iYs%JI_3O4`r&nqrq=f;k-fsQqVQ_4FtT*$Hv3-y1O|(ipUUhfT zu!m!xp7W=X-Qi&8-~`K+IR(99PLZ&;e~=(|vv+dwC6Ho9IOV=YV?`@@91J0C{UT-s zt9<-?gArTEUCy5qEy^Q8)S}Rf(Dq?fBb4s2geM6?Q$kbw&KjYQnq$k{2<5jCtRZiL zoC7Qget;Er1PPN=b}PRPH;Seb80U7~6gpwb6fs=37HP!4e_@Ixdt>(^Mf$ZL(*J3i zs&eD7^J@S&ZG`P`zhr`^erowQ72~}&VL!ol&1L0M$wS~E^AAUHL^Gk^TQk{4S%X}5 z-RqxQN^cn$U&u{WLuEW@eUI0jIEy9y{JNe|v@yiwTPg zFtIDJ>B&RewTQ@N`Fe<~X#MqW>3sBliWGA* z`_mP8nMvh%B~||;3P`7+n=88VM@h4DK>?+9X0I?bhp0}jD`xp;Cqt&*WY*eUK_nfS zIJrH`eZH)qj*7pxm+APc;4bQ^reeEnSQiSO#)@G)!UH_rMy8sj_x zIpt9NMv$h@IK|m4bkn4;tznqK$}1}&!ZsbUF-n@Vl_C$po+q&1!^>spj2LCMpXOoO z9|xN9No13auco&lEL@25R%Jh4sf?!(yT|F4k`701H{>o&XBGb(3(wjxn#HJnVt1}Z{kQQSdQN>IdSc*4!aa_Os=OOR+|$lSC^X0M)DUDBCF8R?cnlSf@tQe5K8 zb?wL2YQ{567F$#&Dw8#O7>(c&nqv`{{`)PqWdil~NW@&5FXs;1w|qk#jrv=#?;HTjtoc#-RgmgKo^=9<8Rc!*V8X}Lp^W|B#Xd|aHcz|NJ}abRZ2&njvs zEY}h0uzAzZ@(KzS5$5v|8C6k8(d$M$eGmHkCmfRGhv}#| zMSrTX;KOfDR-XR1~A+XCQn<}^UM^K_v`qPTjkMAHQSHuN_|Ql(0<4SvrY=}j%+7K zO&5qz^Y0O(QzsgcPoc=)ACyu@go^B#^Jd^FUSeXBD0}XNSgf7kwYURZWk9E|L%8@p@Dbl#+x5=?E2 zez43@-lUo8mKTf2MbfHC>Njsw^eWP`$s{_6%w3tryKzSUE9~HsW|nn3Tc#Z*pfEJh zqnmY`SV2RQt9M|KcK;>LK2Ba>C+4o$?0Vpp@p8v-fLs>Z{E9lsIoR^0?VkSTuhn5f zEhHeuWcRR^jH*fxR}5D!^w*YY)=R=~tgDZC8;8KKKpg5U>8bLP`PYJnt*deWlx@|T|1 z3M9sWh>hVg>u{OB%3%9G>%Lm&hX-1XiRMrwzZIn4=2w?_Tt9e43vR2_3?lD-(~_DK ze7`<7r3*)l>$M7^o{FDRZE4I~IAZ;QAZNFAc>GoIw=Lu`N5MbA_?}XvG~eJo>KE%3v{XjMWTL3lOM(C3k#_V4FifSG4L6Vi_)lZ*A#{g!$D!0GZ)|9!i%(>I~ ztmmyQ)JnxzM!n$D>UfL(IKQH4_D;VJyP@&&}?Bi&Vh9huD>+Sy7|jB^`xEnu0H`JIP6IE8w|mh{peD6h>GhR#8_ zM_LUp`l{U9ZIO8J?1au}%n&rzM|l(K<+?^RvFv{Clrwl?M zg3C_!;QG9MJLPPPet(!JoRMgzf>x{$Z`T2wV^b3eC@6iP(@piz?snk9q9{gCc*$j(l#eenoAZTeA5|5XZ}gZ45`Xda zbL1$UPOn3#3+rOb*$FYelHS&$!ZntX#yiXDlLG`qc#s?lpmHo(Wor8&y}w&ATSIw)m1Z9&z3Au8;cxbmiq~0L^gsaOR6)wIFP#4-$}R5YzatorHyv+ z_Wj*5pfCpLsx{B*mCvjNH%Azom`UBqD(KQ9imE$Gb*&kJ_M*1N%yd1+%LOBSup?kEhX2zZ5D-li12FXVx{V;i^`@yRVbhxvs(zeDjC+ zKwvrS==eo-Ni?NuL|#%<(HL1-Bcm>*;Pr^J^EcPZU=N8hH3Bk?925>7L(bh2?m*)M_us9 z4cf5`yxIBgUx@RE6^uXBrq^{_48jRNojPia_A}Urc(isGt<{u=qD;-m)gL`X@pkZl z)#u3XPbq$+v1V!zz8J3y-~D~F|6~PUTS0#$@;4;qiDFIVko>`RK0~(TNZr6nDC5`F z>ywj85kDnDjO85(V6_g2e$=P$CYqAbQU9nX~q#Ud+Js(xQf zGdL$M*be;SrWfrn4Z;K{F*EZ?KYr-_2$rwIJ2;OO4ZnHD9U3RTlQ?SCa zE=R}tL|@q$IQh)*;319`?uO1kf_E0%2&228pbp+5?nPl4t&U86XEKAzsK|*7HST$b z$$U-E)>B^1H2SOdPh0zM@1K%ZWXDen$5Y&s-t6igJWRC;%l9d~`HSk{^@%-Kr_k-y zv!0Q`r-j8J630@*w@<@@cb1(c)^p(C8{;IjmSvzI`=yydb)EJWp_D}lj4VBY zVR`#&H8=X?YCbQvd`H7x0wuXFRGIMQua_ea&RucoZB9&h0RDT7ghf@t-kRqJDoi;q z%QqL~h?Q;a`6t+awoD&9TiA`oDmEi>W znRWD_pcq{A>9o`N*I3w}m@9+L$kP&4c%hHS4@rvGm-3cO(puYFX!ZYET?gbB{ZaU# zKqkDE_s%g$+FD;yUSC_9d-AZiuVlML*YS>#T=ymsmofge7H3{19J5j%;<2 z;lYcklr3#(K+EwZ2qcYBEG*)wLF&={zqCe;(0O)@q?LGr5XR0JEjW01YvhWDM zDHY^>gNHI)JWl zGQBm(Izp4(JVN67o{B`+I+vx^9TVw`I>?=9RBuoIC_vzeg;5c=vvHI)Wl8$bk=o#7*EPuKe5>^BLm$8IOa&>Z!#a_+(x>Pv1+QDg(Rzqit5<) zmlci#7C~S=(Y0S&?RwzEC19hV%L8qx^^@o5>FW{aWj{1dmy326?E1MGBGTt@&*m1F zMwdmx@-$($T7GuNjlv>9=jkSwAC1|%9Nm5bkamp!e!%T|-ttE-ts`dfmBk-d_)k#F zPQ|#j!UT3wD$HLmHi-9_>u1las~mo;^JcA9(>NEr{Zpg7gloT1y~#f(J88E-;%*Y> z*?;}fT3F6e=x{tl;QQ^|wkZOm>=G5kFXaN{feRn%WtFXZLV57S{HoBIL96#8}8(DbeHxF9>h@XCz^%9fEbyIbSF6j}s{dAkjnMR6&u;AuKBgc`leXn(I zEaZy@xS*1{f%d7V`MD{s9f4-hyY`m(D9}DI;RYOG%p6_R)p-?XMQ))_#<5aPRHc~q zuy0}V>E~vv$iUW~b=tK)-dSu3aj8b`X`@KXv+}14JXDn_jrH}pNuAv4Gm`VU874hb z`6E#&nGoVc8y%yM?!QPUAHoL!{jL@aW?5;q^;03jBk)K5_D{R?Yn(r4TCi`joym3va%{0ibL&^^hes- z6Aw_~=QYwu>yauaT4xn#16m7hZj=c}$3w-#$;!R4Uk=$2uS6-kyX-N!KgrID-<2`y z+Qh=*n(QP8)96oDguRM#g`|IOrEMs#^&WuDWTFLli6MTM3S;F|TI-%= zJ`J%fWGnv~rS8zz;!PvZkEeM+h04djGv3oLtg%*HQCQYKj7PcY5TAJC;vj!hO%w)> z+F4rLDKQpXGFl6%TBbzbc-IhJQtOpyZ|>RWC^0t-*`#XgG$KUhy2mNioRG4w7Pj&} z4pm%fy4@TwoZMGE)*B^=?M?4RYeMliy^bBMBjrCh#ZBqOWBFpHns}q-Pw2o)KR8qB zJbE{eKrOP~m`v6Lt<6@;m!`cU;TZ?c*~Fl2F6-@YL2FP<_`RbV@a^iz`P)0MXLmX< z{G5hF3-jb(f5C{QZPAa*O7=5NwmVju-)EzcwNG=U(GM(pHS1D6=ki{c3Xj&6oH?oa z%Q43C?lqCvsod1tol^Hyml{j%Bowc_+pR7)rtl{nrh3*A6CT=OC- z`5bT7pU@y0F<|`i`grpBcAqWnX5fax;3kb%hcI0W@*t-$p*S$HV#(6 z{;RZ;Qh0%Wb6$n+@f#Y_OKp8S39^RQ{?-I%dPV5AY{_2DC*^@OM&7*?WY_9x`TA9V z^zx%ngwUG|OL{*^;ZBmVn$8jGgG1KpNK(A2155nuBfTOW;0}E^bK5z%Xy&I#u041r z3RVQE1fTFfijZ%X^mm)pr`%NCE#E9u`|vOt3<Tc`LtPC7l|9d|4V897w_V=YZ@fJ5nId@0(<=-LC+o_a0@M z%_MzX87TZW!;rqOeG9(xM_$f zqIe~N95`JDYs+dBia1sD#o&&klEB^vu0O{~1n(RO6>QTNcvDi7w}4o#32hI!%{7et z6-5p~+Cwo}4+08$bSK#wn7`AGLbFQ)QE09rXujo`8Y+{qx4S0aoTNZ_O-jn@`ilCx z%KD5_do;z$;T@t|&S-|~ zM%ULaGI5Z&ztvRMGFFzS{4ITYrOnyWR@T(i(^f|jE*eIpfSaQ0f`d_O1O*y!!I+dovzboYr znyKsLk4+&O9k!#sz1h{@Jeor6O3Uw7ixNOe>O)k~9g9^FY!m=<4_zxy=r+#_M0mY_ zv%Oilw=Kw)d;*wy66r4-UdK$9T1K*<^zd;X*hR#poTI%| zvUy!iwy4*cTt|Sx!9I4n`J82nm-42vr}^iX9bw-*n2c}L7x|te%c@?DF z(>MEKe62&tBEcEXpXtEd9OnZ$B=AX(Tau$CIgh)8#~-P|-D>gr59xoKNSZ;WkMk*7 zSr@~7$Mg)l*@4q`r9tQ%lXD99)Ra7`uDWFbSMlQcE3`JsWAdftdSh1E9SgE==@aMn zx@{081%81I4g(0P!I<$%HXN@te7CZe_(T_IjzUm+Jqo^Ixq#YQzaFZ6@;xp#)Ihmv zG&|FF8}ekHknEBc5<^yCPAK-s)f@X$oqV{OpF>SrPI~msU|wpvBXl6*)HQgPE+dk{ zD~~&9FC>^?j!hZu2m+ZjTROw?gRF@~e-Ab$tyl*G)OK(SZi1_H6^U5VV#2$$g@tNd zfv9>}=h9Gs8r5?5d>F<-%0ZEfzKhl4zVY8l6ngN!v&~C3%C#Tb@KieL6Ii^5*HYLH zHDnZXpcaICc|30)uswS8qQ@6}m)Uv|uZ8DiZ=e)^t4`{qzDkB`vsj?xacN=Dmavea zp#=sC!*hHeQWJm>i22CgkN;#K@vxqqL--?lcs?&AJm~JYQhV*S4?ctyY>WX3<9wKZ>> z{34$&Y;^i@Kfn8Cab?OZWl_hG7?T1aHO5H5u<{Z;aysqJFx&j}^+P1n?VIv&OI@&o z<-mIdwGGVJNwmhX_u*s2NGiEST{-VRRD4dx-MJAStTZPWQnyXtN-6LY+Jru0eJk+Y(q^uax^XFkCrT&|5uZPxyGlfH>I+BcSAHDUt^uBx{^xFW=g(( zaFrq>SBf3?Y+_dGDVC7POlF~JYfttB2OXE9J;jz?b(pB|G%c}ewfFjsexNC`$l&k( zA)hg9DfG;~p-?V981r;mGw-^tU|a7BH=cE_+cHSA z77o?sMdVUO_6QWRCORSZ4losIPZ?FTkQ4RUkIx<@d7q!3IrmDy&q@YMMWZ1doNVyB zC$M;wj=StLmFq!#E+3kvSzPD&s2f*c$tZ@62XDj3R&uDm0{;A7!OxVOJmNHmKd;Zt z_-HCv0mVEL_!vlW_x>Z=MCFmfLkAdsf(6ivCZt9y`5F2p9UpT=s)Va58QmFZ2b-4G z0uqYGIa+Ax2gD*(B!7{R!1kuCHp^sB zmL5_lYE?TdjSkLgg`|rfH`Fw!$A!CtxJr`iXin1}cwFNI+A3qQvbeSAz#_86Xh7O3 zdvRR7Syft-tN)mazD)|!}>*E*Z z9wd5d&jbI->(>k66RIboHyDykxO%HU`O-6jZPBK4_j*i5E}uME8pz<^D>0C=hoGmU z`zPrKRY5lEwEyeXzy!``0f3v_wL@0dz9dhcs8EI*RYCc;Wx|U&w?|q((ei9XD#4MP z3y1G;3&ALl<}XROrt;)J*P(siRk`WI)5QQNVb7u}V|-=85`A)p^k6kfvaoVI*CD}! z;Bbm=yv|6W5G6B}9~hNwR3CE{^mUJ!=dVG~vP->FkQmq(REIy>mZP-am{TUrjWtPZ;O~4bY+RWQT2`W zC@u%HQ9^vr?~jXqT2a`y?sZ*RA}p8PV#72(%IY5Tm>4t7#b{!MjkfFd0Q;}UWo-%W zu}dyqb?O$M_l4u{PK0WkzMeJmqtQ(KB9bxg%SiFt4FYIDkUhcH3?iBu^qlpAy)}mTGmE2f%>cpSPXgJMAOS`}odS7BldYGj#H-_J>6hutk(ca{eSOm1=MBCy_+VDn z-0mKXUMu2rqvWTu9l!{Ukd$r527!X19$SOU4BmeMe%l*c&Ge z-Ss#4Cp?}obm`lQnA`*iKMWH!)`cM!}xigl$p0zU8Ff1PjT*{LFih~N4eUiW}*5p~(--)+2Zvjrby7D&)wXHf_bGiu2cemEegmuRNv zGW0{%-WNljO3ZU()RHcAI9OE<+s`)1^M$-K2s@+)Yq1Ga2^ae{oAesxg<-oTT*Z6@ z_MZ3e{RFuR3O;@IMJw(3EI;#JHON&}L}s@1%?#!N!8XC#_mD|zH!ll?oXV>kW^G=% zF2WioNoz5&Kpp(3WYx7u{wEXj*o``sBwc1_ex#vNrC zRJDaHhIiDwnXRL&lUXK2eS8rXo7!8o5^I`(SCi@a$&uSUH(ga zWgZW127euzk^DaZa6pg0E_;YQjQ(7k9cbU*xPaU)h=JjSH<(ciep--;yEmG+$E|! zhbG5u)-K=5A5-I(tMK4#pp)L>xUF!Ua!*!pX27YAdw+%l_k1VcC60TA<6i5e-{`nE zYnO2+e5=Yg12(F9XTZIV`;g;qb=)Vl%g%P(^PKo+9rr~CpVu7sZO8q*p~?> zU{b(VE$hoXQ6}42Z;I-x8_W7rU{Ff>V2T==6159O?V1ubvS14vvuGn5+s?*qV&kK1 zLX_=ORn(VF+syXoP+hQr4PFa@@kYT0sDInc$_0!!k$kjoGn>O;vVla!2Im=@Sq+1= zFrdJo%D1q(MFn}rMmE2l9h7Hmg#yZP2!nNyKiQ;+0r3bq*_CJJxuVRQXFgC+6lK2g zTVXc@@2AvVCL0*+9}7wewX;hx`xQ?1 ztD@|hs-pX+i%CX*W7zeuTTy>wA|h;VVt<+J!p^*un)$ap*JgIBfQ2U;Y~A)(5!zii z1RL5}yPCFaGsfJDG55E#2hjTndVl}k&bAgr*%Rx*;@9&>`SYxSzsBF?AE0|I|6Xv` zAZ*c7^ucgM3=;(yE*5)>eKCB5m?6s9aufmH#8o5!#MJHr1ANen!~s}=%TN#sa2Y6u zBViJRU>by>6e2Ji+Mo(nLM_~ai_G1y3^rg&J1!SdI1}0WrLYP90-NCuxPJ$k`WAQ^ zS^TSTAAAV+!`JWtGTsN78y;f);bFEbJi^AqqijF;J1d8+Y#uzu4u!{=AO6AG;0bmD zJc$dyQ*13f&2EHe*n0RUyAPhlrTJedraZ^qh3DB9@B;e@UPSTZC7uT_^D*!W-w$5p zmGByGfH(LN@D^`{xB0Q~E`L7--s9)N`}}hFkY5iU@pbSqUk{(~D16Evh0po(82=ym zl7A0h2@Y?GVdxg1I|IHJ<>;RY{}HwDt!RMnLd zui{DgO}v5r_ZSmjFfP7hhS<(b!^3Q&Cv)3xVQ<%hjW|@>Z`<#Hfq&RtW4~*^2ZBf7 z8T)v~p;Be&0Y*{=oof9AY=*^_ z%iq9fnFleH569VG5`T8UkkB}L3S5XHNtK^d9J=QtAwRvSU?clyJ9`fOFOmP1c1G0y zCi&lPXYZi@1M+{=&OS!}=j8vQoqdV^Z^-{$JNq8}Kau~JcDAix3kp948#!<10{s^G z-R<0i{+{IT-Ol@jR+WGMHYT3mZffSEoEPv|-lJ$l`tPhMrL1_=x z7pAg)FdJ#No(+J*QD|ymgJ3lZ5ht_3a2^|?Mpo*^Iithuuk8Og4KKzNN;7fRKX+%m zG8aX%kx7Nkc;T<@Z!#2qHN9{_#=_s)-(@KLPI}=984G`J|2IS7kJAh9o3Zc@_Kz6~ zf09#wq42i!!c`dy|7!o%u`n0uh3hjG-tLABg+1wo z56)EB&D=ag;X&zzmt-s~+(w4N!_y1`#P@>xxrGkEo zDj!A|BMTq7wW{!uq6aX^!U@$AlY63!ORidY(1%6XDu1xpYUs(>?;(7bi7iMp83+Q!|EQGx#Cch@XiayFIaXupwBxfw@XlJE~MW)`F`D zG2g(aRTdGN)kTktf1q$H3@MEAl7;JFppvHeEPpLctwWt8$}83*7z-;KqBNU9${m8u zB6k#wgCbrIMiRTd3Y&8^(!n*Te_sa!*!7UlZop>!6~?i@K@nRAC3oix+RV?Hozg%eArc|y2&;%0Mk@{)XSJoBcJM+d~p4WsAA7l zsDFjd&_u`g1(;*;@?HWp?m6*}+8a9x7h*V!Rf=hz(XmLg5IEq}^u z5+sSMdF`T&yuO{!$G%$>6Z82Yj+lQBKP+j|RbjXxDO`==!;`|3jUqiXxsy!=29*&F zC(0WWu}fpI_weTA(k4dulOtRhaYS;2W#7m5T_ncWEi&?qx<#lI)Gc!5x#|{Kc~;#f zzC2dDt?CKp*}5L&?NNRtI+3l=lYbnsnXl%km}|%d{rIu?|1N&~W`3##?L2~1Hlonc zg7T^`lp71VtBbHty+x!ERjOLfD%6#1;pdQCbY43@AG>*%wJ-&1I$uQj#purO%P))a z%cK12%EHb322%2dqUUc69^|)>uIP#K+fZ%e>(_06SLbivf&7{laJGz5lz&jb9QNp$ z>@IvH&;7tAzHtlRLg?KW<@YaKkL=rm{y2SUdJj`>K8#fEB%CZWi2p&ka%*7$EW)XC zDO?HHpnE&&J?-fJzy`Bn=oYiX*mBmuTG>jr208p_b^<$@m-D`S6yFUgbvIr}uAX{q z3{>Fn^T@bfK*seVs(UXX<9~VuhOk$$O_;>qf@$n+oO16%E&C7_uupKheFTfy z$FP)rjxyxe5JGn)`xgF$y3C2_p2~iKvp9nb(7lwKa3!}9TNhl1{OEQr;V#|_vF-sI zc~5wh=fV?w5Il?Si+nJ=&ht^%8I1bP2>3T23*Vso121BOc`>$dJbxR`cV|U>0^5`C z$tLr?SUKN^Ex@UI7~cyZM1!@+$15YCee9@L_x|AHnDG-FY3K#Wq$$4R?Gt>X)Cmdw(OV;czOv;_ib!fg|>qI~RQhya=be`=ZZ;k6^XCANpMI11xj* zN1ug#UaK@H#!hi+W9(^=?g8$B$RdA@`H1Ui#-^CqbcCU5MJDFdiaw`S^f|SnuC zPOa#(6x+KW25*A_&gy~7>UI=01T7$_COLu&#?B)?xE(pU>3<~gef59Lz{`8iq@V3@ z5D7ae$!YlpZATrQ>pTiH>1DCn9Hq=uN*PwS4aQph#-Cx=ZO}t|wiEkKlBkeD!w7zG zT$(w`QPL*j?0xhx7>_)l_gd(OEaveje+n7kbM5@mbbbmWZBfg5qeNLvUP5g_^ z{2N?plP=qt}j^Iz|FRyS~=`zu<$>p#{R&XoyL}6VUk?jq;;TJ@O?rf z^(cxx5^Nq)bq~-PV>STvDVj%cKX(f5$8>OQ2ySK9;OH$i4UT_?q>ls2PSwlqFNJ;i zZ^|TCRezMQ1r{j_VD)&%^tYYJL%{f`FeV#h;`=<$D2NJAp0P#rTC`F0iHh7jBPs@9 zm9yTyu)jf$dJiVhZU5)-3h-*qrqMIwx; zo5gevQ86PuVy24NBq}hjN>xN9RpecwCMxDT>3@qb{jga2;VKgUnhIj@npIj~aYR%s zSCPSWzy0QzEDuRFSsv1v$`JdrbemY#t&wwlVnQ${d8&EQUr}(+J$efQ0%ms|`iqCIMyyO$t`s9yiis<3#6r4X6{q`e z9lAe4(Y**4_7y9;qx<*AZxXAC;*lbcO(OOah&E1)5&MbV6Z?q?Vm~pJ*iTF&_HimQ zo!C#zMB69cB~Ef^`$YUZRZ;Be2=8q2oR9f0Qr2s2l3usHXtJS6kL>fL;B6oLKYyle z7Zl;*`ZLn*NG4ex()4gP8mXOVd@rQ-1~!vbVpkK5FT!e5Y5ZC;i6f2QfHZz1()eGI z#&3d&{BKC-H$xe}1v}$bSj=yOR(?Cu_#JQtzZ1^m>ru$M8}8&A;O{(&0@X%%m2ZN# z`8_B=-3LGOEwGK>%iR1vCiw#_kAL6D_Tmq+5`H~f#2;pdp#M<*5cBg#6phaY+V%Up zd#HOD()czKZjhdd+WW+*eYQjGhbB?`5piliB8l2pq)_|OmN;(oc2ow9WGW{jUfyTt zOaO6N#&yI~7!{YKuOqnL^2fSdM;QMU*N+b1*mDSOZ92Fo5ZsfQ!Kt+t!GDP>#Z`J+ z6zbBzU7lFbHMnOG+&?=3w~KqYV;9iE2*u>bc3|DRVnx@A>m0nNrB!rwnvIM<*A33s ziW?kIvmINJM}fi_eSJEtmlUjgohuH@={2qncbu}<9734%A?ng;Z>P7oaFAh=H4 zk_kbSs>I*YVZD_Z!MNb#aess%<{l+BXsBW)mPHYZJyQ4>80%4s>nm+ zx~Q;dqqwUYqsNn0hcZL^TFh2}Ex9KuwiF_Ny1!6F#Y2Ty=247&EGnM7OZ@Avj1_DV zFE1+GC|-?<*Q4U?E&Li}x9?YDo)7Tv6P@>S?R<&O*PFz5#GN;YAAc{LWcD{tQ{K~v z`)zBy>`FM4!rL#L{A#urbUhEBrg{t7G+UmHbzyWw{DBEkbo?T8jE%C@I@Pq zB^cVo$77zxh3jKFFx-rCF!1-l;O~RUKZ0ETF|yrHU=&XHLVx}_vfi&ydj1dW$G?W@ z{2N@Mzk|8_duZUOJ@Frr1^)ympnEF+1@+r)a4-KA9^=2k3rJb73I^{84j*Iu*O>l` zaIqX=vEIUFMZ(P{3lEzua@ZUp*}TQ}1vTq-ljj%+rRF zQ@FucdieEFR7gZTeHb|y<;SQ#1w)4+6%9jboW5@RCys*jbehg4hM*`r6!n>5P=xMY z7@jKf<2p|s3~?75r1Q97l6wy|%@Kh(6PTuYg(YmwE^JdS`xyqK%7YAHf^kEKr2vVl zC2FilTYn0~NU+7IPPi6zDRM0%DEd1V*&ZmVkwx|-0@sRvM@EfMRncSM!RD`A3w@OQ zL9@kJb2&!dW&9~>oQU~OJrGk4a8lMnPh`o)=_oG?FI|gj?*KPSI^(7ch`vMgdSg1gMTqF)P9%zb6+H6oN8Ab_ z-(uXF0nv95(Z8hwJ`@o>tP?~hyQe5b?|(4v%pjl;xZBdC9^vf-)KrDzuEss_or4)_ za|!r)@tp%0xK{12k#X2qzo=lNaW{$)4;t&E#s;0Db{9AuisNI*n2pSUoT$;Rw+qp? zNn6$XCR^26JCD$O-)wAQfSwUCPw%L4FSevz??kjmjr)>zBBI9qQRCsLv30ZY4}XTL zqO-L3FLGA)XR61e5b-QBVJy3Ov+;aVrhc(ZFVJHA(z@-R>O52}*1Irjyi6vYsPP)v z*0(C;=SPh<3pN>VZ8F}+2>eA1KHg;fdn*jYU(!>f#((0z?{)bfl}c;;gn73`O-My` zNDPa@YHj2jUl29fy6x{3Y%$G68-GnJYT6{gL{0Z*Q({5w>&0ODu#?61t6`s_&1Nn` z)z}<}U__1)H3!E7QFF+;?XPLY(i|RBEI}ZUT@|=$?L%;Ma_VG*0FGAx$2%~NGuq8j z@j%oZvu^vVdQS!cnsI=7lgKezIXZky<1~jmJ45kPk$dW+kx_FueZq?=JAY?tZoLc&*V*f z884?zQoaUgle9p&g?uHsd<{QFh4o&;B&fm};sZ-8g`Q#=^btqESg{-mMF7{6R@g^` zQErJqjaUT>#A;km*1%G6G=BuepJ25(7LF6g!>Qr~I9r?umx`0&9&rjhAWnsc#h>AA zaXP#&&VY}^nedf38-5Vy!f)byW{L}#6qlg9wU!MKm$PBwN;Xnl#m0-P**@YrHeLLM zm5UphPyCg&ignmGe`6lU*;?vpd9HY>SAp`^DYtL4UDx-3NeRK3rOqWPipUgx>at?h-KA#W2Oa2d=Gx_i^G(_90AFaRxgRZgJ0Wm!een z8XV#-L!aQ2W4ju>IkElB&r8}}K#t~=ERUC*>8#tUVaPV++7I3aZso}v-8)ZSJ*={hdr8ZCDu`he@(YS%DD;gHm=_9z!33% z68jzEdgs6yLx?@hvP7-@y^$dkBgD!ZG3pI7R#j=ZT-;R`Cn8 zi*0bf_E9FOMjxEm{c(ci7~2>I3t0?8}&$n(U2q> z%}J8cj#M*xkQzoml57khHI1Pp%@|H<8{PTpxOn1Cs&SI_}RUsad+&-Z` zuzlu+IAm@p3d8mLA&tN$jiD-O0`a67B$3OZ8fgmkNOQ;{EukrCC8}YyFn5?{VLMSZ z+2&+Y>87D;$QQ`GFC>b6gI7EK9W%C?bAJl_ZAv^aG84?XVT<4+cbfD4kY%ze<|Qpm zj`NbXS2-UDnv1;$lvPS^**uoLx0t8diwk&~y|cu7Jr>7{u$-rHtOEr+jZ+R-$=|Pn z>9sr^jp_Andbjy7j#QTRA*~2=wccqiGrUnw*lJ5wXtl+7wvCl+C1G7!p3Q3R<9|VO z1#1G#6`ou6ds(qnvxDYJo_h>yB6vC$)2|kQlVAi2!AdY!@#k^)e4pZZJU)Lz@tnEO zy`y-J16BBdOUEXkpYn7yOn=GK)iM1oPuIZoQJzl5^l_f9iRn{3or38zJY5UZ=Xp96 zH3dAKhG~N~Ag!^Yw}EKV7E(xiXh1qZGk?+%+L2u7 zO*+9K(iujOE-;aFg&Cw9EF@RKa?%}ElOC{<^n@McY8<@xg4aoJY-RhvNz&H<($Dad zYYmI!8S&&gBaK{dv?2qHK4hSAD;Z?mOY)6HWU%oV8DgvA9ahw_$QIB>t~{^2Gltu{xFiBZLG*E2+`<$wC|k{Mu;nUF|kL2WV{GRS?{YR!QT_uYJQla{^6 zLTs2H2=ig0A&+=t19B?kP7is~?iqPd=}zBI`SC#ckA_XuEHP2D++)L-vH2m~sUUKbv|LA?P!j3y+gyf7<~F!VCh`;#d0In+om*x^ zCMb!Fl!>fX63G)p)}V2*bflFi5Cuo zaN^Y)YZT4GX@Bv{C6l6hKrz>6QGj(2M+(u8p1GFHU;7al$v?ni%)z%i^7(SeS zFcCWl5j(g?vJK(&mWsmOtrT{QEbLaLu-6G;$1*@hk_kJ;oAegO!MSH4o=H2#k7-xj zF(m@Uvl$E7fdcKqNyTocOZJ47Og%xno_m5^%;nhzd4GmKQ*nS~pUir%lJ)h@0EMl1 zPK4pMvJaW&MkHTZ zj^kvFyr(2GSd`-!UXFEGIgVop%xDw2(T?-SCc33KPAbZ_mY<+m9txvcM^LTf zp7R%_SbrOBucI?W!Fi_4`3oiIq0SAe8b4E3-eF|+ji$!4hyzS{H!9n}IdUl;Q4$%Z zZUg7YM1Djf$23Idd2JxOb5%iPflTDMlE_VJA`4_9Cy~f04UzjjBF@c9B8z1rzbT2_ zq9(FfCUO>u{GlPTh!YvEwCg3Zja*O?8KLeKmVZb@a0q0YhK9&8uUBwJDv2zYh?qo4 zvu~$2gHuN+Ja^kt#|eqt!&@jaf4miNtA$JjscSQQF8#$wtgXC6U|I zHX?6#nl+F}vWCcNZX;urMAphgYAK1_t|qcpCW7+`v#y57bDYRHC6VLHB0^=W1)iA+@6$R?RcQzX(%Lu4bjkx43z7}I5qv``Y6tkj4x zT_$oR5^1gJA7^?RG3F>c>e(`pb}Ayq9MMq^;6$o1BD2|;gP{b?tr=vS8P?>xy`q_m z#5zH&*%^||E@1?#34+z!=r3&4IaH}Bkbem(PavC{g>;?y$IM)S# zu=$M%zNlPQY*W;l2U+udP{6(#&HMPc{u5z~<2hDc)sVLr&JQV$c*kvyZ@gLXt>!k) z{lPZ#P>0t;vN-_K%)uhdBtFn(lGF{81Vslzr|sW&Rk?+)eg47SNixPJwe zFkDj)w)5fHR3(vJGLc)AMDA1**(DRX4T+4^5cw-7a+i|Gt1^-CN+Nd)B11Tlct+&a zlob#aauSe6hUR1>H3b~=4u~_u&wa!Ta`A2?CNVOM!;GdWS?-frPE)eHN3AY-d~eP~ zX7_5;b%3jDx{}BnGLid~L}sXoyni7RnU6&7*ARJ=6Pc-OzvjzC9#9gwS3S{~FB5qP zi9D>S&I>q^SxO@E$k1G-Br;n~L>?KMk0O!BG(;ZaMD9}(c~~Y=pd>O!P2^#j$kRw< zrH05-PGqjqM&6N$JfkEsPi-Ub$V8q)BI`6Z@*XEL-?^VJ>`nK=cEO_EW`8i>@Aq#v zcl2_-Z_M4jvpi3iEaB#|5=NBraq(?n8&$8FuM|LTvKch@CYY}Wja6))>J@u6WF=ev z9Cmuv++P5-lP!|7!#sF@vSspL%l+M9zPY&&%r@pcQe0U4bS4fdpdrkF+2RQKRS<`A zJr7al3y@%LfSTqeXlT9!*?;C{xYFDLxn>dcHn+ibW)N;Rx5GGd2Ta4?ndTmtZT=PJ z;QI^By<+*kH#Bt?nECD@pKi`Vr#kAO9^C5rP=Hv-gD9BgJm4%sJ_&G_v)EXH`m6~P zeQTIsg*dM7{>^z%{OuvWMOzolVuW>g&iM)qI{;47I87J}=C6O;> zA|EP=JfbG@rA*{gByvbYZ@kc|xt5qcV}x zsGBny-5ldY3Y0{S%S8TA5?P@pa$F{I5s6&V5IMn#JgFpdN+MzzN+M6GiJX#%SSFa3 zr6KYwC-StC$QhZ4qa?CYP2`MBBpQiS)et$$iL6o*IWH55Q-2a!ttN6_CX$3is%eN^ zj0B^J!kbg+GV#HcMI6gIZQP)UoP?v92p-d0&}d^9*v3 z1aC6fUeOnuB!8(Js+tRPm>8(!gf%%wgXUpbYniI=o#&i&3Y8C%Ru!zvl~dHu#Wb)t z|2Up~e8BbLXKrDo=6#+znuBe%fEeqFFvR%Mv%DCD{?0tYp$CSY3pkpYl^Qg^k!`Cj zmSj8ixd5loUA16C1h(Vgmb1GMiTRjE%^wvW<%e*_`hUHwy^fl8mid3O8SzhAsADoz zmk3ZN%wPDCh`tik@e*ZvP~A09>z(JN7sPSI4VcNlwV9lhGr8tJ&g8UthG!CP zoQHzuud;phEo+<{XCvZVF4~1~9PC$rmvx(`>{Bn1Vg(QU{+!HXpq9rbDq&LtUVm=@jy*76%9M7Qz0ijPd&XDM8C81C7!c z!^<88i&{?EqGFUR8ELGtJ=!8f3U7}dmp`6RwmstV6d}k~Wrx;LHkK*Meq@`vL+dCv zI(K0ga<`^K>%_HDMR!!k3dnHNfm$=lKdNI@w|~}fxYc|kx^2d8D>^@u9n7?1wp;N* zE0GjkV78`PD;&)47VHqKuaQoJgw;6)V?ODTnwCQGqJDa9V86jqunMG&Rf zu9m`$xXwm~uQ;zN)VWNSVwX~ibl=vp?SBG`tz*@dxx9ky!mFBg!8;&qSPiU(n)bWC z%;#@vDAyqp|L)(Tntr-ajbvsAkeMc01BWyGd$fW!mf_w+xVIt*nyswD*t=xPa=xpr z!g~>?sSc-!jPpUcIL&o9&19TU%Ef7=?I&8uYWf`2^hJbzqP5iq6lYH}YXz+xp)d@s1+VA0rWUUh|0hC;2C9 zh~~<`KOxcM8lr!5Qd~P;?0--L*GY!^1>sI=;8+M3CU;k>n_{+b0c%-j*>HZN)mA^L`M3RQJMpJ^tsFZ{?ajBX0oFi`%-2aoZCj(h{aoe&)?iIZ$kS;% zDnd!zVBM&J8X}7tQ@-U|H(R%Gs0m=Z8wfF86-%u_lB}RLOtN1)0jk=be}4x%{)Dd! z&=_vNm~xM$``lC=H-ZC8wWkN&>359352^&|StGUD9WJY+dIar`)))V+vQAPeT>NA8 zsAFW*+7(6}Z%xox|LwBa=^C-!_&nVD4A7(RGAp$lzC0fbg3LIorBV19`6u z*|xlq4~KjUA?Il!=g5${C981Aw-IuIwNTj!X9X>JH`(q2j@>n4C+vk4F|5T_sMic% z#A9tw(0V|I?hXOFhh`Bk1RW*XohaV!7}gSNsgC|bavs+p{azaSUVqygPX7^Wxt9Ji z8M-gh@28<3f>zOg#Cn`(G91f|HMr5DeGXcW%Gu;W72Au0+rmBO5iPQb7TH9LY@$W$ z9L-y2!&+fISyo@Z02^~XA?G#_^))DBalgZxy_KrLA&c~8JtYGV0csD8FgSchtah}Q z;8w{^^RNg|&uNFPvVTvYJsg>hhyb@is3Cbz+QNtm1$=qQ?Jl7uEF`vlq((c~s+OfHm7w8$o! zXTwq-vID}H;TGLAX|vpB-JzW(eS|pMaAr>A4ge>osP`fnX@6S9dTZxn_L%4KiSw!V zy>ke_%}>!KxU<*oa&|K-&?S84Lhdfxhan`2uv5moPh&PEvHLz}vmK89g^T_QgrXUG zB^%`_sBzHxs|-J1Z8}0jQG7hZOy^5CJd~HwS8hhH@r*`>*{R=c8ef$*5bOsuHu^Q& zKoD8_M3$vPHh+EX92Oe<2D9F$8nSst@He?#c&MU7HgX45%74dt zSEr`8UXtW_y29h-_fh$NHR^k^mey3JUQ6})ed{CDI)53~=MUs;)|FSE5$aPd)Wf z^@W_(7M(>ZVy$^u8P?a@jRx3unr3 zClKzJ2yg){9F^hzjc~fP-4I-~7A{JLJA-h#^<59nN9TniaT{ygn5zIQ*~VMYu9}%( z$A3f$MPHr0o1I|Cxgp?#cEZ5I;vfF|R}(-k^frcJ)ys#WEZhlICde1eIDZMi%`qH1nG7$WKn=zisIqFM^isc#lJs9O<0QQWt70v)DpdF zI&=$#RficojKH#zuT`NC(yPX!a>teYc{I8d5HZRBNa39Qb z%XKL{jlXMPJ#28xbsOvuRhmEHC4oVP$+kl<|SEGQJj~FG99gnrSJ2 zN+BE0apz}V$8lolcA5Ry>8X{_1FLyG_aK$spa9yGjwRszD=TPca6b8`ifZI;cUP?ix!~PoaNXi8 zU%aue)&I~A*kNUWhDl6jnqEVjyRymjRdE3{XUJ|WFHx>3&M4c(0}Xp*TVIa z;kqMSj|gzrE1la<2kkr=?Ha77y%a+!um|Zd2FMtF5u=}KIA#ygDm`BY$-~dCi=gxy z$^NoyQ;gD3X=pKe=9 zg}VrrcBwmsd`8)dTRdDoBY$P_Mxl74HJtwK{OWT0O%&p3c0v_@?`4tO*>w)=mjzU} z$E<*8H=MgYZiRb)!xnpD(4N8`k!|Eo_PfL1(|hC2pnXqC%A7bNCuq;)ND21rpgqTn ztBy}ZXmvMMe5~c$VJ{q5a>B6##Gnjg(fn>lIVM0dod~t*B&b90fPY4GDm0~cLJN8q zbf$MhUrhI>(_k3A2PV6Zn(B$-GA6i@E@U5!W}$q*?+09w!A?0E(}p9Ewun*JjL0P z;=De37AkHwDsC?J(SP%xIh~K4%l(i?7r+p@5Eb0&kxt6tkXQfDGHWA=#g6oQIomrZCP9ZLE~p zy|LwO75W%XR3DGHl>WO|e>>|<-TdSH^D~0>ssfmuc>rc$ zv$2MaR#(F$cIn6gxGn4&7U-0*+kP%TbGuy_wAZtW%5JD)=ki1MumpYImA#53Xg?n$ z)yiIDVsBzlFMkE?&84nWaHk4%9hz$)RHN%5l|By{^aW^5H$WG<5&Fldk3n1mwzn!4itSSHgCJJS$hRq(pRA! z-HXG)*P%Pz2l;eAj*<7lt@!UT^zSf{9)!DT_-#tlgy_>siB6KMCbmJ*&)XqS*Ur4h zsLDOTQ+C>Wd~y^78ot0&RbW>YJ>ourCpkIV^0GhGU7!?#`n%4_(cUjx{m0mreG&og zA37&T`+uMe_Zh-{UcQr~{kCe5go?A@l+nJ%B0Q`dB)zTNie;4KQ^+{Gq4fI*Lx>B` zMc!9+#hDqKiOxc(_q-}R*_(`H2F=@o_CI^0t$pN%#>M%k7Z~^2?9c@O>?UOU<7BeS zKE&f-@3g=0g6IbA!zR+`}|Bd<$q^?I=a_Bw%z_INCp=cZ^R5vlw2F+ z#tNiAVqV8SHxgz@GV>m-B9S3Bmw0~P-yW-u!+XYesgrCyx#7}7_;G{8hBD<$| zBAZDo)H*^^tNT7brQI{^ly(xBm!KX$o!!s&bt4VWx}DfbQD2Jq3_4HPptvTwb7sf} zd%M?I*}rA1gA9J76$^8*3TkC-vCjtWiz^^LYYPQ8Me!BtFD%|&(t4&bCpsq)Qh%K! zXyjCbRw(b)PBQd$QlY<-CTdbDp3O>wRGMIR9@3` z>H>A@m0ww@qlL3&xXTc(LHTh0VfIwz7y%U{A7XJD<98X6Mjrvwp3LO-52MjKWO;ql z$wuTRYUF?w8hwP2X{-o$BzdCHs(&(YGgLv2S_J{yTUDnCTDUkFt|h{?iU3!QR#(V< zg2|mI7?qAXkF!e7Dp?zwhYiMf_>LlmPQSPswd0X6HDW2-Ksb*jfSejh1mSk%YS5Iy;YJ0 z0^(3fsdL9^s&mKAwO~5^QLTAlq{5~Ffhg~ENuY}Iq))ocXn^W;Ngz7J$k)P~SsJ;F zQMwn~{D6DO4{a3mtrS=E)aF<8_%`%$uRzQeS0EM^f91WOS;_aCRPz016@I@Erey4< zE%NzMM=s8G+A2s}v)MwKzkg+x^S37D{H>YzTS@Cb9%r8548~#{3RRpNu&=xkT06s_ zopUqxjkmxUXE@yMjD$tbtvEv+1y4C+V3%_nyy1+6cb#$YwKE=m#NVHs32@$-Xb@+D zVLOwI>ds`N4*sS)Q;g=$9Y#C+?daSo{ID}1#vLH~*>%M{wMe9PiGLK9b;z8IT;nnk zgee087ofU((@TA?`%xxv-ZBBdXh++ZbxB}uCCo#Nwvm>OoO?9hVf+F^?kDECBzTvc zV=7S99Ud4omv&M)$*}!Z+Ck3hUd{YD*}{mb3+)$&XBO)YQw@3z?WI;-c96>G`;04miCjFYS&&6Bf!QjC7_Wq*-%oX9#(WF056juTnO z@vK=Y#=R>ONdyu(iE-eRB2j}RTLjfTKqj#&O#TX!5XUq;I$qZN=1aI6v!>w2aS&N2 z*{ZzPhAAK{?wiOvUgRAw@{SjI$Md{dimAeOOJNXaF&9}l_?u9QMG{reD0FG`cS$D* z8VQ0%f}oKgXn!OK8VQ0%0;j=JtVAeM8A69@8>W1j$c9L@tHkj`G)%)(ezC@dAiY6G ze_6Np5UA$jXpSyWIn=tdO*1yFUi#<)9YIHGAa9W&cSd%74b+J3L`MgbIb?GInYkCR zROJIa&?Zb=4jHJ4Y13e9y|IBnN}!e~8V@TGsoj?0&41@st7Bx+@L)-aZlA>dlNd-1 zq>0seUwp2C8PpEckq2Nk_rPTNqRI2&1F%3{EJwz!9)uQzNDU!&TK;okAkj`b zHp1bdJ7ax;^gw;lFnWeqB{M6-2-5Kg*XL#TLmL9(Aio=>(cc({H+dvc=e91t+ ziYTKh!hbrexJ$U+`h^X?tJw*D%=j`fwLS*kWmH{Cu9e6@jZdz`eGqg?=spNP4$ott zmN5+KvWuzQ`yX*-#-?$7~`5HiHUn3z;02&1vxHmks z;^7IHJYB*j+)cnLhFae0i;*j?cTis7;OkZe#eZ%XN$jbW5&Q1SiJgLC*Fv#VQS1~H zyEeX&iejgs*mX*Y-RMsiyKyA3@2QN~Gb<-{0*al8Vke>42`F}Td?N|Pu7+aQC?$5r zpDcD}B(Y~zM(o*@65GI$w{a0-j7#|D1r!^gC8k>$#VEE>O6;sZS?ugcV$Z3J*z+qV z_J40E_GuLR48Hjr@z6#@6g%!qmSoaT%;$RBD#@1cqtA} z7SSzn#^EBmErISRqPs{D-Gd+PO{A|E(fy=tO=~Tr#y8$!tnHOqGiWZ~Vl1nf$$xz3 z=7CXIe57Q(U@%e#XoscW3r8-!p$7CpTj&Q3;9AJUacff?z_fzv@Qv%C6AXavFc9Aw zmq6q&v_q|!N5J&&^`@Y(|ci(;Yo_o)}ygU5t z$lfObphP}v2LVz8iw+5ph>)_zxz1VWaesPS3#%K~xSE0piF4ducW^F(%*tMF11s1x zu#k2L8;L$5IW-d> zW<>JipUm1gY<-65g6!AYF(pp)kr}}?EEFVz1()K|F%|sHNcxo7i>^_Z$eIpYJljg& zyt$viIXS-dtUT6Fb+0XQaZ+}F(p&Sn%QyE51HI1rX&Ix1hzsk-OmbsVL7iBFJ7aWwC~J zJReH~i+cEYvuuPHnOc}OmOMoeQ<=|jg^x5)Pv`neg@*1h5}rhPig3Ut6_iAU>-W45H&WUMpQb8R9rxDG{0z<7;o6zcapb`H>0) z3rHmZ8kV9tBPBQd{4fPzp$U>G@K8m$%eP8$wIe#(L*bsktuoK>^Y#cE&>C>=_}+)7 z#F}aj1b7;vYu1c@cV|NjFak9&)!%mz=LhhQ-fP+0I~#LmK-u(;Vy06-1biQPv#E)tLoJfBFXxf` z>=SIBvEnkwjFv(bZGuGL=+OcwIK+-j9Erh+num7^Df*x%c-k{KBK;nX&JMIJ2x?fp zV>c;tTlQ?9v-Rjf&_DN}GqGi!Jk(CCw94|asb^F$$HZu)@?~qPWvi>1WieX^Yb{HnVt2!WPiEx=_Yrhlmf`Y=eZm~rPsrq{Sw{DbWIHl^_bf#oJuX%&%>nlL1Q;gZ2l$n12o;s0OLad z`t2Hoy}KZIsippt{qQLUE;CSHuJa3Hb^hr-{^z+H769zx@d&uN!DaqdPLOMXi8Xr1 zr@J`GJRgFb9k@rbRfZV8;CHG^u>_gCr>qH8u-^*E^8P!fGOU1xVZIRU(+3bazK$}%6#E3QLWYX3PRrT@{I|Ca}HdC(d;r{8t zcx|;%d|f$oB>M{aL$5$rwn9WJL$gyvl1sOEc~45pYoqJ>C5d+&Dexi9D2csuME$Ue z__s<7!4{U?xCqurBTR;td6ht}AVuQehYj-$2*Ld)P@B8hY9M6vI%@ZCEud+n3F$k1 z&dyl1wnWoMG{AkdDG$hvJH_Oo@@OK1B^=>~(G%jXU3H+oUzIAIZZ|6EZ0UC4B@A zQAD#9-8a2d_Fv`IqeWEs%L+G&PS(OlS6trNEzHZDJv!XLQf^rA)6XC#U^G#2wFZ>> z!6iG{NuW=`PbG-Zx)CdS0qvC9dfJ7qxB+3t=Z)M+^D&Ge-Vv$ zVl9=xNH|U9U+3<_nn`B!n;iCol8^?^N%kcxDaK`GE!C70vT%N>(zERROoaTNrd8Pj z+tw}_h3%&@Vo40T%$odJ?D6{OOj6bkSS1BDgeK|^ZS=Xm{(!ouB08h%f%#@ zd!psZWh2ORB?Y`hc2^Vzc$3;W2&zr0kRGs5H0%+U5avAMui7;Kto8{Kz5RkBt6tiT z#&9l(#jxB?M~8~9)5L75rPUQ*=&A%u2Vj}bhr|inS@J`^dm@ChO8z*?gc}o%SFg`i z2h7MdnE*d@8#gv2!)9k8x;z)~_~~YcC)S5*b0Xo|zM^rqIee3uk}PTro}Tu?J3K{s zWNtI@CVqu+ZM=mI)>sjrE>IJDP3--J#ljx-IJiKWRxGV0f(nxv+wj|r$!rh&9Cl;5 zVNX7VDRj{yRSrw1E_#@)@7N-Qq52MqM#}N?B*4vP+|olrnLkBlQK2QxBb$at{#mSi zSO#BgGyRXLBjf+(j@Z79&>1vBn1sK^<00W3k9-MG-;vG5nav{hK8Em?H?`HcI(hT? zW1AEBB8dE9FO$|aXZ8sYHs0Hpu2g`=$+7ieV;JB#RwH2_U*)Y|Zo$98v;+2SLcL#XrONCwiXe|ENRzDC~*f`d=get z^v`%wIH66J?N>Yxtmyg|-NZ#m$3vb7O#kW;y1O7*>TP^+uI?I#ZF29ocH+C(nlsBR zw60m*IeAQ#+^Qauo7Cf{#`ou`N~JsB@C2f3`J`=K*kXezJlHo=(e#v>T5h5(k#OII zBO1gj?UWG{<7RBN6ReOw%K<|6mt}{Np=pgARS|emc7C^)KttM|Z3qBp9V+qPnUF1N=cQWixc~#8 z&8i`C!e)sD?@s1uS|{$`_QIfSy~9Q;)A)(D(^pn>|A~~(Ud{;qAulOxhUZv+;O=ZW zX@Xtuxn^u!dQd)l@c3%3rLEUm+g{f@ge^fWR@IUQt;^j*N!u{+p^7#+*lm( z5(<2G!~Iit{GJeWL)tl6{EWH}3Y~Ei2&H@8$^?<`M*H~s6($>&TeH2;PO*Tw#Pf}1 zg0YkPRWf95S0qyTx{T;RT>F<#)!IwR5*rUv!Liv%(Qhsw zL5vIW632s+yumF^v$yU!==`;L&+>;PEt7EPbY$ie=7ezym4;s%Jv)FRduBW^35#-> zI}h-REys1Q`O!lw55B?Hm~1411)L4uNi0iJv<#kt7X}+b;RQ;SoYKs%?|dKfV_iPK z**@G-D;&fE5A0}ctH0ZUIWXu#J)YC|^c%csE(UqXYZ4jwb#7fss(0k){thJHH8XXk zkqBUOqyPQVd?*sI7wQ5O4+pM1i2ZI$+had>ak2R+!NMMrq@VL^UsNBE+ zt9dAJ~E5JDvzeO;m#b8+0HN6NN*u+D<@LZ z1iC2)H-UwpS?dJqxjEVV7;A;wzhq+l5>SmTQ!Kl5Z)1WzA_Ef}4ui%2rzxjAw>&0t zEh-8f!ujZ4SrkTz9xIz2BU{GK3&6y?2^xx`83m#CDRMKz(69d*PnjH^1sIQGn$jke z+C&Iddw$*onEeGNqQ3W!S4K-fgRgbdtF#DMhFEX?Qc6L+KNE#8e7 z_#3IoOCQy%%*j=Wr-_ocvR*A71-hwnU==NL&ocH_SwCQfgDyoQWcOKuvT#xn^=OWa z5kSz>J9SLCJ1WFou3eHKEyXpkCt0Po9^(IpV$zl}ndnt@eOxKgT>2*c($+We(8qMn z0xkm$&Ur^sz6Y4iZr5hm85APrKRW?0-dU)pS)U+uWD|*{`8idT{1*g#-!?&3sP`ETJW2^Z?E#XngcLplVgJ=7EMcg>Ef@VE(#R$%+B?bIYDtkYgW zxk4vFLwL&J1AFTPflBe2g(UaSN@ZF)j%E2;FfEx!O<@S*!MnG3M;S`*an;Lm4euLc z=Ol8Sb|}MO?&LxKR8*YjUV{;K)+kd0S3^TVu6p1)SUEEAfUcOKQ`S`xRx^e@)a;7Y zwEprtJIf5q>{TwenkjFqIjPh8c$6EUrohB+nbjoUVOg%uA>m2}ssPY>G*AC87SF@l z9x?2FW7Tl)P-aSC1|b3CE7f$q8eP;pNCmV$ zumgb|RXsW(L$5k;zRNY@1KqIC(cD|$&r)U<SY+38Gaj@{7 z6EzdOA6hgEtK)A+Fk^U8rK)jV!PcWxE{;D5E{?4Bd+Qk;Ev9nLkF+MZmdOs|Gfhp{ z8<)UYz1_+tWcuj~+=j=f`N$4s!Y??7U?A169|11}JjRxv8`v9hTq>1R^sBvs+58Wx z6YgUANUo3UJQL_cOA;vJjeo`0udD#-h)rW#R8YhLT{qlr{BQv9%bl^N4 zyS=y1-k{^A0LQG}5A7CJf}aT#p7>P(gZ1TxRL;|7OH_D~uPw<{@rcK0SUQcFVj5h# zzvoK-j3$2qm!o-$j84OD%&W(>c`N|VxlFHd`xr@4+TS)dm#YZ{H1~+mx(iHqjrYr# zJw_;F7M%Zze0-MVsEgY}dK!wD*8_ePaB7!vX_q-yhi3|%%l_qQD!M%TX)Q~4y#>B2 z{?B#FI*}-X$uJi=Ftgl(7mw8n%lO6K$5T?&xm)ebkT&Hj_RsH!idd$kxQot5485;4 zuZAYYYC&v-Pc_LAD3P86%Fe;bX(^nW@-rVb6q`rieKD0@QyS z;sBS&f4Njwh2#VmhEukIu+M=c8;(a~gF>pim3xED2E-C8$+C z?p_2CaZBaIY4Ip3Gdc1A;VAZ5nE5^@+^o>wHw$zXK?@f_Kveb5Y{B^Q7&C zGBfT!s&gYkU1N{&6dtC z*LTG4k%*Y=3g}J#Jn;k~wY^b3_%~!vduDQeQqB1P+*3zVo#HU}%BxN^jQf?TKZVuQ&O6Y!Dz@B3X6f!^ET^J_TR$g|yI49+ z4UfB-vNmHlB9!j>$+s-m8m)k}B0y4W<07f=++Mi&b(4s3>2M6_%kxUPiB?xA|EdNG zP+V9#RpHOq6Yl_DZJ)XrR!m!&E~I5%CSM0x_+b(8Q&2eSoz05Mh&YyDsQyvASSd8} zuiJDynbAi0h0RwrgtWk>7f-l(f#Bs-IcR5O;}ErTReR~;e$uXim#O_`oNC{*dUs~u zwuq4e@(XOfS#c4%6@E26`Pnh)_q5smJ~;GrPB!r4 z@7Ld=!^mr(8a-;Fj} zL$NL;=GmAgU(M$if~tq^kbAn}rxQVMgn=h*ol#r26&CDnuHPxBb0_oCb=LOqDSw!vNe7&9)h*5ON{*&sHY=@g9(XckB1HT3}qK+rc1@Ht&x;H8 z&|c#lftfqwQ@wmY;jej0tG6^P@$jG(T*evW(?8&J2Zp52U*Kp!G^-;q<7#d*x3|>!wt}rl`b;2 z9wYHC3G4S%5#nqa{cgOo%{A=*WUZ=Wj`jHDaqipTsVJ%%0A4j?Grd8o~`NYih zHX|it=7q$xG*@j_*mx9)u47Vs;PpU(<0EGxJz|k8k=Ewh4AcHY9b@LepxEb3tqgTw zT5%kzzN&acD%Y#VhiX1C+A&itzR6w0@^5QCr^?3^zx5Eo3fP&R;B&);^6y-nde6mh ztLJXVGHaKimAxqlS|~!rc9~17LKd1HRcF@-bJKh9MhoJEE0q3YOQxyHH(2O>mTT-D zCqITgYjCufsJ1JkxBU!`uXk^#q zpXzjYb02u6nYdiT{)I{Bgxkt#!_gvPE`}H*fxd$lzQM}D)IPGUl}A~8kQ>la0Wowa zaSchc#s2+Mqsl)9#L)S^ksDA^!r8C6i@bjw^TPBBm~x7AO*PCMCZnMy`>a_8q!~#g zgvp_?1b#>frj_)*$;qchk*|)W2&?8oz{pwp!`uz+Ru;s)3++EfO#H?uDt|7H(6?^NEY1D}w>Nur zN87;$e!ekWNkdg5XH-Qn$zl^5_`@mOP(gzQX~QdA5Ao+PcL3p~B}csmTrmPN?|0k) zV|FS~VkC=Ak7yK9Fb3_kwk>=|>=KsWbw*Ze{Fa95&3bBZBoLdG*PwpHaZ=ZD$tTk< zt2#_K;%Ex>5}_jD88a4zkDdtob4nb*pkyS!BI?II9Wu&HrQnK1FQGLz@J|mR=zFw< z3<2#K+15Vn0qO`mRd+kH#Iq9}{M@~n*I_g5$!(Z(PYa@(Y;{WW?q1I6t#!-qvwhZ~ zK&b4h7rQqJ0m%xs*fMx~LF^@SS{Jduk97FPs} zhQsJShb%-TI0`D~Wto>F!}Hi!d43(nu;!(Y1^u}kUU4C6;zc>xW1;FvRggn~<&>o& z!!0?TkZ%7(Ui>EbVLW~lODZnVQ$;E+`GSpcItxomh>ex;b&!b>C=!G^!}i?5?RE9H zHWAGUpMF$YYmZ*bjNzdvj@1saP~oTQzZkB}Puy-iH*K#6nj_++gYrvqXZ(%jo#(Z0 ziZ4G%!vom2e?CoJepPSgpgbo*K7(ItOS3SQU1I;T1CjprecZ-^UoJp`YxLJL*8Tyx zHNKyGzz|RLPuCKPN+8`wkVy&`248FTZ?bqhZUVo!m%+9&0xbT>3ke%Ib% zVVKrL)-uT9j0z=Fw8F(L!h9<_E4Q*4>^?fzy_QNq;%AuHleg=->|+A@Da4u#iJ?<$ zMFknWPvsF6p592e7h%69Ky!}9WZ@L+-&v@dPbetgw$#`)Xn<9MVIb8nIP0bpf{W~* zcT|-_NyPkR5L##v`RmARnLAJ9x6)azPEk5$O|~Uj@tkr1db7wDn)CsvntF_n#JHw$ z&htg)>VNQiQ}jie688d;$hFSqjI#VG4|eYuxdkMFM3-*Y0=m%MG5c zf1BV@g1d5hfh*3H%t9mBm^i{kgsot)5iE-4_)0fR3Z!7<=Q38u46su(N0XloW#s)i zoY5jeRw{c#M2LVml_Bv7B^avp&;o7VoBG#u+;$4wT-h1Xql!09%eRyBI#r3gCe_H1 zAsT8Ra+3A_T*&~r!xr+QvEE(y_sQf_h0ndgg8f^t9M8inn;i|}+vmZi(T4&()@)R- zA-p=g&A>qP=;0=$j7>*v_hFv^9{Ck}+2%Z~v>!x|tl2(JLkvs1%iQ7rww2lG`Pr(< z4?@n4v21L_BMZ0z{vQ{zMpq>mN! z?3=aUoN&cHQtXps#ml3AFT*|8f*3jA%zu_#M*}l=$=fR-sh9wC$o)-xpI|)Qn;Fbf zgta~W_3&{YWr%Ee8Sd9Z;$$I#12;(tPHIbnuc`i+XG<`Sxdfx(?71pkOpbzVkvzQ? z;Y#M8kP@zfJZ{BJmWDx!J4vWA-QA(T#OqzA_QKY^1lUX1Kj{4qC7{f3%Y6iARUG|!!7 z0qTiBuCRmB;o|!D&(Je*Q2B;7v&XJNE4+$iP__6j5+Kp2ekTbd-=s$e>O_9+s1J^A?g@5b?ft*I*ZW3@iiQ-YXeKBQSoFmrq0?oOX&yytp7x?S1 z{B^M<>Rm{**xm;EhEI@y4sq_Ea+2s1&Znx#d-I)n@!6u(Y`67Jz&*3nK`t({MYbqL#-sG;j036|tyV9kZ?U5L zRL3*9g*OkrxG*=r@rh#QoW_8TWK= zhhv@#UqxJ3j2*-Nf^gC=Kc@qNB`+=%P8!8Q6~AyEaf{RaUn5!94;Z)J6MUCwd7y$Y)xYv&o)U#!YSxnq)|;$kUdD~N5@Xi$VX@cV0;B*r|+==QJY-w`xB6R zby6vi3+<&KO3a~w@(NEg%p}AxH?HnJzy*x66v1#LJU430Ndk-&dWG7f7&QsTWjHn~ zlqR=h{(z}EE)azM8_V-R1MCIHx81u3aBtuCP(y!@(-br(jiIB4C5T5hptpliYepxG z*L2ISY4(xNj-%A$Cw1$*Hp}~1HFRTMfpxo0b`zhiP#ZCKnx%GASjNdkO+_Q@V_^e8 z0qBd^Lu0x}t}a-2Rt2wcdq*rLG<1zwO6O@cTT}{1+mEt8X1BMPfOVb&^^@q2D!l?n zKToy;zV60;pM83u4n#JiZkqUX+7OV}56h8*ag66hV8&ED;e0w9P!x>blruC!lEnqY zjJAZYn3ms$X!dpW1ErG ztod$(xOKYS9DTndYsnXMl*LKq$W2QT-ICo@a?OeBV33DF0~q5(zngi-h8rl|$l(m! z?f$*3P(p~cDi4G%#~4$}|Dm3%PM~sng_WzKuZqBw>{n3*08%MTR*lTlUgWepi!}Vi zMt<4-K0U|O)@GckQ6~LYvr20NehthN1fTY0Eq-2`ynv>qn=y@o6!|Ozw5G$lP1C)G z%{OWvlf>y_**2W8hq^X3fN_>?H5%q2NTYTo{!VSHBK(tl1|v>*y<{!kC_6%df{&c- zNB7OS7+?p`0xV3lBtYYO=UWH*%E~a&e_~*Dhex00KD!M&?=;<{tQ#gky)T-|}o1)_INp|9mAdY+tm(RA?A!83%} zi7D%i;RC``81>%E(Z7jrr^o%^ww}x3EQE{LGG?SN7*8iadc~w37WyR%+xGk;Rj{0q z%Rfdiqndy0WaE-(!_0+dkkDm}+bz$fEkjeMQ@|>`V5K4Fpcg*bd&^s9bPs)u2qop) z^oRUaIFN%38Ij3H5oz%n%enVZEc9~xt|0b+M)yu_d0Dl-E5^`0#ZoLW9zbN(-%`!x z^iZzrgf)f=*9$RGSOK)K(=Oc5ZLPQWD6k!3Pu;xO5nxt~b3YBN?k|!Kbold&G24sw1`h)YjQ}GGO!K^xOgiPc z^ZDzMk%s%ss&*ykZ9 z@N}qng0h(w*0{&>jG_g-6I6+mNIMITL}3c14b;oP?xbJYIW+9nFdt(fx4yccj^Lh~OE^&+w{`1+vIl268L4pZo}+28ZwAUB9o(l;b$xDn6(JV(@Ruw3bJNU$lIH>ck3Ibo?RYqhq zq#Vytexn#M(cKKw*Z@*Sb-}j-%KI@RW;>JVF@r z1RFRmI6f}i3^^14fuo>O;s`4jpek0S@ZUc2=1hhBYc5mbV-k$^*0xM8IbED(NRl>m zf%R5E{{O!KXSq+*r@uKY4MuZCw}{UD{dSz4hLt8Q-t9skLxIW5UROUShQu=UFG)YS zG9C_+`Fl6k!Dp;6HlbaRwXh?OfytR>qAenr`G}GXf0e;&)Gt=aoS-rY8ntPP`r~BS z!D}Lqn!rnz{3I?omkGs!yn`TC+CUlRfD*)y~Yz>lJR>OIAt zU1rnB9a89zm)sOk8Uh=W@~7Vab=z6?Pr&y3!l3$lB&}qoU`LV|Zvos7n+*Q5sHygQBSlADrGx{4KwDyvs;o-q*HuAh)Hn%WOEbY)JPM6$ z6{;J$wg43w+BWg^f5K88sO!Fagx4N0qO8E%MlH|xAr&di8%dYE6W|D=tWP>{eOhhv@mnlbsqtO%OLMT8w2x1HL77=$r_NJL7D(H*<&0K9Sc&y2 z$e$B32vTZP2*djyR$-{a)Y`y#9XS(zXZ3>99i~ejMY$6irW{umZ;X>0eOuG@JEUo* z+978BEN`|**ZB9ZnFus%A*41^?0eoy1zt28tP$w3g2h^esFZo>wVFrNgbeJ_IEp0n z37@QHBDJmJPYf-DlqI7^DYf>1V#=1D#q822??}Q7a?I&eLLKUF$*qD3-Mv6vZn=9Y zR2)h8m?f=D`_{KOvGGC z5hoy{Y1)#IWb9f*|<;iH#V_rdx7qXgo0tC+qq*8hbGW@;5?qbzlyUPhvWtRY|}O z8%%BVgfF*2F-5WR2UppfqB5ALVgDm{-kVg3V^TpuL8%s}?P32Tcaq>@L8A>l5nw@6QvGL)|Bv&T@IM-< zgs06ag9a2-$;AIk znz5ku{s#ryv7lEh|7%6Z$A(V)&$g+M7#kY?zs6z;Y-o4H{~#6vHnbMP-~7*A5HL1$+5b8f{m(~7|9iXh5jHdq z{C{2!`;HCW!VXvu@ixgXOhSJng@Q5?D5krt}P4=J19k54nj$xpn z2H|tCGXMTxgW^^m9B4`483w23F~uR`y%lxtt3~jO0@0$2u{9=)=yhS9`}e{-5&MO? zrh@|@RPLlS5=t=hZ($fDZbG^`x7cV+$avX0DN8nsQ?#q0?__}5F>2c-yJtpD6xlo{ zoL>N2@9eM_w@yrQYT|LJJKai+i~>OfJ(jUxQvPg-OTF{Cyn!4rCE4r;S7g^KK)`92 zm1HsAxJEzTas5EkfMdM*m5PgAb>)D<7?3JX$Zd7n`P}G!f z)uYLQ5|l;Y9Qos{0lTTevyXX`ZRt+079evLY_qJAt)|;6Usb)nP?P!DMyVUm**j{d zpWVbVBV41@h`;CRl)T+2iRbfYU7}tTc8&qVqn(CK>bT#)W&Db7JpCUO3&p3bcIpIN z3f%4C>&>5zlysfWCDNZNDnK%UF4<1m+I+L~Fx9!Xxq|x7K64PNth!M$E5EZEt5JPdWK!m=qxcis`D$tP14N zt!Zob&<2;l8R)gOlD|+!mn7`Lr4%SDya-H;nLoRwo}fpkpmB2H`t!n=-iu2EQz!xm zUbem+sB$P$xR%t(mfP&n`w`K86_@=>6|H4H^1``hlC-3}7ojHq^rj#3>mx+n?;DO9 z+zcWb3k4S_SX$-ncM9m$T-8(M7(Z?AMbwa0RQ;Mqt6iy8JtJ#JrsjvbEP$&M=<>C< zQ2QaD%hnGXhOtJHrAnmxYCEV~eItdH{4g!X=A!5yaj7K0>;C^;flTlkSdq)bp`g$T z|L;OU=`IS5T73U+)}a7(#@}9l&iBvL7Z4x`%o3&2oKVJ6dMP96bJ9wVVu^Yv;kTyS zjNKxDe>pf0H0Z;391&sQN|{PtnYQRU4>&nD*w?K)b?nDGd>jZo?eBE;7*r4aZIXC8 zn=g1fD{vnSvdgv)4Zg>MV&rFk4uiUYAA`fFpt32(-NIz7#oz@tveg=dXf@MEr}DF{ z5ysC;ruJB82U3w)W;(5rqOKFHN0K<_)1+Bg*H?p?7BFP5@DcKZ58)}s=4Cm(K25UD zeqlX7i@K$^k->-@&G(SeZ0@OMZ~p9S@V5bVGW=OC&7+&js6Fz7y)umeff&{~0xOag zQM4nG`XswDdQu0-@k5%hrL(1n5g*wd37-!x-=W*VR8!Z{T19=vz;a71t%c9&3?&frrK7U(paE+w7t%LC!+sXl0d5(i-n z6Rx;y;^@r68`JV0y6-fXGqKOs2&Wh?S+3`U6Gy)LiU1zy`-c%nUWUB^MLS`Zb8fhi-G}>ftRhG{fs;MI)=Im(OL)9Kp>*x!@6iouO#qQ)W9bsx zI=jP}D{B(?)lr&jj(X6XgqDjiYlr+7*G*kNCkdo^A$FA%UA{~%J}fY@hkh>Njn)c< z%&O+2$J#`t=&-XUuNf-&K{^i^wUo5fUm*!|MMkz)l9dz^*h7_N^bBW@#riUejl*0T zuU8R*Lk*ag54=CgO@GbWwa!DHwS<58R9<^qv@-$(hiJgCsQ#GlC3NJ(oyzn#h4A zo6*le%H9;^1`=dgbOWQhYz1Vcxkx(%3t1%`&+&hHw9%@pKOqwalxu`y^xZY{DlP!C zX~jaPQOEj9F-?TIPbFJVDmV+_ZH|Q?JL2bRKyMW-w)hI^_xyXF?BmdR)s8R&4?jwL z1J#pLcx~)E8nJs+oP`K;?2R-FSmaJ4<47)GPtE#+qSQ zQmJBd_Mm*Y+-%P|VXk<4uX7F9APXLrBwVv$f>~H$q>@tG)K~R!R^=7XL=9Wf*|4mG zhiUpt_VHRkHM0%{?U5O>ejvmNClr0N0xYwe#F|LoYFGVRhrT+^d?K-BJkr^a2jmE( zB;qZ;Qhi0=m6R98Z9v&TEErA8O=mQ@h$6v?&o~r-E7znBY-ijhH6{W1ZE${;TDQSM<1C`VgC_`Q)8j%9$1MVXMVIfL$1%Q>*BhY*O`ac)2KBk_XhKA#8|Ri< z3=f@u;~Q+MOj-dp97u|0*L75^xhN8tjPDVZKCaxjZ#k;g*PB1tdk~38+30Jf+a0&& zBEyx|&)L<^%h#YthIFylJc){te~y%4<`3$(k$%r74t@Fjd9TigtBL6`a&HYe7k92K|WxJ zhRp=q!OWOo7Wvx%k0pobP1HfbJz_xgVAqX&J_})7^Uchaq;a29?Ud;bp@C@=!2?{t zLZrm#6Ve{GmZ17}ikZ?&d4)J;67xdfNF)J-?nvaa#8_>{b+h@&*YuNVncQw#$p8%S zWwfsT$Hz*PMArGrS1FO@DA6vUXuy2r(8$&G5Q6pi38f2?o*YcaNDm~o(vYAMi49K| zoa(6TK3rfHFdNwws9fabSP%-XTsG)d$|8F3SA9h+;Gv*0YiZ#kw9LqazstK9kGR>! ztu@@-1rOGX5p+&a z(hLHdzzM|(%?9X@>;F%jY_Q2^iuXU?*t-A=wda0Vx(iW{TpfbB< zC3QSvOfKiX?xs;ziR+f$x>@<9=Y!7~eOZKE~FL*UN{6TRBF zBk_UZiMca_g$_Z23f4aX^CGmuFohsbP~3QZs7Qxm9DDW#5`SaTIu}5M5bT2U-Q%y% zd%LL4ta+;kIZnEsL#|O+W9+E6vBeRWf&6M^58kGB>?v^ZMv&FcTo`p$wSHI*yeHhP z$hzi1+%P+0V3Uwq28l9I!jfqu;SJl$JcFGwS2z$a3nK%X2mgBeZi06>z$*s?_c8bXGB$73LDtFsIlzAd0uOKvI7^62`e|fqY56xR$h5ZFbVe zi7V4I(-e=C>=&P~a);a2XU_PgKWonQ8e!g!IPH>D|B? zLW3X_z2~-$ETM6*cF&-|I!8R5K;-DW=8j#14N$SFAOImDd;t@@hDh->%0B3U6lZa~ z*cXD@trulYRVTo9nXlMwN%TEo3+tRZ`ke5KRjPSz0J&EMnd;&CeuE$OnboLIf2KEHn~2IG?@^OVKWURiG1s}G^0XAUKOzyC zA29Wv8K=n(k*NVxnw=|hbKWKOha#nK9PIocyx>^d{3G>LIqh12em^yp<}s!};27Gp z%5dbHT-rUcU$zH}7i(e{DQR4e=j4ux%g9dNm!vRIEhl<%^969$qn+&BqMp^#rz*~$ z$tkj|ZS2Geo=34|-}OjLF^m_LP|s@~0L1aH%~##M2*sh0WNB=SU5BU1q5{yly*k>b z_m-+}*ExXq=x;40a>f@o2t+GmRDQFud}Y0fZ>p#kn^7Cq3kHJ~OwILZ2SweEa2h$* z-#@8C{Vs}AhnPi%qKElP?c*Y+3MH>=G7+O{L`s=^*)QIz%!RriQEW}~mB+j10GVem z$L-^e`xfeIGKrnztZd5+o8Av$ewW8B9v4rg_j$P_gs1UA6lL1Cl+FE17ci(6^^BDF zp$&f$s0PRN%#y?}I6B0qRS$SMyfLzks9D5t9M`c%04fc z#hfq0`K}ZzW~&zq`JAV^rXrPIfzinJkb=T_W>u!HnUH;ch*5Biubm?U+lS@o^sD*+ zY8N-zfkLd_0#kvuR#v&4VCVKs!FOE!vq+&MvvGHLp}Mh_^R52Eo=?p9wO(qDfp3L$ zLa5Bjv%ZUk@m_ne2YOLX-XLSln(p9_LOO4++|>86<-Awu(DQL%!7ElM(4{J_>}tEz z*`>XUv$cSF1SBbYu~`Bzn()mGu|nolM9!> zTvoA6(eb2KLml|Pe7iSwW(d&)#x1W~xDeV#I|@kM(+B^hY%%`Y`E60c4{?l^ZA5+o z6J{+7@!JXrk`)lTg)yOw8)SvV_lW+46()593X|O_O%`2PiRRsC2Q1*IaA}g(z$&<2 zi{!ny$U_*lRqXVDS6J(Tg*~McMlTX$=oePZLjP)=k66%>I#^7ts&YkiJqIiIjy{h- zX)=78RJb?IQN#V7raw*KMzvcJLr%j~J$Y*;?<6AnoZSK6y)!l&- zw4@nJwTKq2RW#}Golv%ZC6^29d)_kNnpwunZ6pikQ8gI=(=$E%v3JE=40Q6WY7FGx zqd{idyR!Lw#ONE3?A{Dao?5|Wqb!V<*T)XAGvl^u_!6e1pO%xeimEVf(f-hS_9KtK z0&?^;CE3(Y2KoT7mvE&fzg99RvzeS^8}#8+TcYg+xhoqhY+yP_a!>oi^&}Y57#K11 z`8U_*YxI?Y`+2Y!Ug=C5522k3H+?~J5vnrlO@i3SF3hNMN_%V0rfW9w&;2Cxd9-F9 zDp=z*1K~JMac;X23_~NhBtk^%rqJrNEV)#pb8A((M>>8D+?nf^b}#X(El+=D04ZaM zg1ZcAIQHqV)Cf7w%?y(kp|E^mmUhx(KgWD(NWO)u zH?2dJ6#h1zFf2`|W&D$%dUh$BaeJ<|{!y^D2_?JD6LA6@tn5jcl9GYxY`{IHcor4U%I^5z+iDgW6RwBHLJFsT z$PFyO-N;uy&#rEecA>%GrOb?^JJ#msabHlk+3#r3E&w!+1wmrM;=%VTKFIw>6%IHD zVETMvGIHS?PdcLSV5zOe8PuK(5%wThg%_&&?te{&P$r~0vc=pLQ*BgVW;Cg;vgUKn z)+=0b#PbezEgNTX6Bs8uT43KLLojG(+?oLH8RCk<`A;IqvGgSE74`Mq`&@VKwv+r> z-k%0&U)yZTvgd1$uXqkIkz;zghT|%m=2F`Ga7)4YbTPenATW&y?`atou#;1FWb^|> zy>b;kgK<;hCw*>p;amFcbH9o6+#Sa0Ye1Z^dF#iJBZz`h<`|D?XkNIfn=(0GC=ts?KW zhHEN%o>2+`coq~8^%He<+p%073-rAX^oqKJPvl5{S0dYQ7e5rY>5E_5?g>j2&)N5O ztR>cB^GsiH4r{J z5ElbC%)%&M=<|h6^#_}tXpzCvPcTn^B1QhuL2w1*r>fcbtE)iF_;Bzf=r!dv^16J! zJb5lzHR&==<9z4{tLe2qfv_ZmW8wx?J9wIPgQul#)xbHA?frKL(;#FKbOkig&qV*} z587fF+;sbr?9}_s&@+k;?HMtgIn?D!pi>?H2b@eelO{_1ru7Kp!|3mbE%(deP>o?@ zl3FTDTM{aC?a#DIlHc+*2811idSuEo&ewVjX|)+vRr9DqY+9`$%6hIc!rTwY2{M_f zAf`4O0lzgFzsm>#Y7FY8HWlF4?Qh>M$IMz|n1WhIFDqpjojkmBW4HM59ZCr4)nE8+ zDUzr9qRPe#oz}-5oMu8n*Nb`308U?D#|Hg>+`-*cghR!!A7k^sWBBq(t!7HOC&%xX zRU!E^-xriayLQb~=J5%H)t5^A*QP<8(wbcRb~cC3qa?ZI403%yfT1g= znG%-$G!<(dI%P{UPM{^j<0$_O6R2=z0$i7@TFZmx)yrf*Ro?OF0Y8r@4pR`DKhR1D zIgc36RvZ?j#psaHM*x2<0rw+V!4+bEr!aVz#M?3InIVdK{h4Y-KuX8`iww zJ)OjX&#r@Nu#dnK79aEh;I{7b_cIb<5CtcVjrU3Q?D`#r7R&OZBv z#dZq!*i+ZjbAX9vW(18lnz%Yy zB7K$K8sw5q;sdm^$4by;9S*$-GYxQ4sy(ymnPySvI<0wZXAg$&Tje(DeXqvfnG5`M zHdkY$+wxE8h{f-#fXjh@t@>B0#UC?mDuJD%h?cU<-H+S$D}oRNctp#Kuw%H*SVT~a z)0}70?>r_TJ5VarBeU!8qZX+GBHd#SNVHhDUg=>j7zMa4lSG?t76=JjS)P?%#$*!? zG!hRC>)*=EX$F2Ja?`=jYzhfDwMA;{6%W8ZiiQqBR@mEYHgmb%sG9bhomCBlr^r_A zN*?xV)G@Q2sWWWv-Gn3l9!`}aDEW#amESsGfMS!W^8sv8dY?*={qwjp)0iAW?QMBrht%hU z3Tp5;8->l(gBX`us^Y<{8b_~5+?Cfm6Gp{w(>d!d?!D7?GZuOyIs1ifF0F}J#bqwb z88cDlm(D|fN&8VX%eUOAjABk!Dr(PeRm!pxE3pQyjTD884FIy4tpc|$;tXG&Nvbg) zpK;K|{zQ;a>G+G3%C_Bnl7@-9I)ue2hLuxMJzrCt|maJe9U ze=WqY-@zGXC`Is-TwBBRW-uSAghFEP7f(s2L?@zP#y}V&&d_q9;Gcvk><2&Dzr?(x z->sLxEyjVM8RyED*v&e5^&G{vWW*CZjnB=BCcKApV0fLfNp3RigkfGu-k9wjauich zfw-0FkqV8Cv(!A{{T?~%4+Pey(y2E1*`eg@@(GC5lro1FTe<{3dJKN=HmZzWJZotR z%lerGQ~~YWe}q1?_ZmD4l2`MFoXd;lLpaY8AeVr}ZkQe4=sWpTOf(k;kv|eIieb;~ zQU?FHttaE?hk{0;JtiPWOI8_&^J~k?mKvSW3N>+KS8^GO9A`XDK`_x+UKC(e{46>D z3s2ryCWSosOa+%iQfdxq-IvhbVKZ+&mWWr5NA5Q{Q=juf9G&z6)j4%uv0hGV*l06c zeUAeS7^P=n;TeVsN0ikk%WJ*-TuUd5GRgYxI5+z6d0b3q?xtMgYISQeJFHH>Z#?Iz z-Um~piCgbgmq)cylPqR5 z@@<676=#chTpLAA`f`D}kYf?j!l^DI;#m&(I5xIgWQEOVQKJ!2u(d!2zEWt%D^e%j zcm1h#9xvALw3RKcdVP@oaY*n-Q0Msl$lKnY1}?(#|XBY`-IxdHCYgSS-6l$rdE_d)bNZ_skDw(!xjQo z8a~D$9vh#A=H}aD^kBmS$bYV-=h7EGSz>ti_*_{GhcaW|f>`#_5Aza?DAkQHRT*fb4I ztH7&-XZ&jNta3hU8$;;o^pY%yH_rj)No9@|t*t4je71}Bya@K6uKf-*Qp9FL$YVB^ zlV2r@-%jMOD&BfoWzaQl3z89^00$gRR=nywD#oeX1cIpe0MnAJso8`ktoW>A9dAnE@b4&qVqYhUp zh4hqprrXye)If3%U z#qy&B_mN`3ir*l%A>({;eto+=)Y>#J6;oKG7g$FFZy5&FN30KZ*$R)5-5>i$UiD?1 zS5e*X^FnndTg&mgA)|q$-yH?ueg?f!XcBqre6nSVg^$w37xrZN%eT6dg;?uQ8SZrv>DVLv)jsnU3|5+2yz-(oBfCY8xmup%f}*uR3{eI_G$eM;YO@;Vt27VSCt1rXRW zdX?R5rO$BPYFIkDck+6Ue;~ZY8@+p>w88E|wMyj039|sF{j8n?y_9D4@&jf>o_U_p zh;MWAgEpoUbXdIz<+U!8vFcn@L(r`0!4jNj~OJ1?KmBSbE=a*ZSNh249MWY3EJ6 zpHbch{r^HCC#Kjm)6Kx<5M3hF*@X5}@rrcsJ#T`rMB9AVV_k}!GI z&C2G=jCOrLXjJ7}dfn5zKe8L=2}1!n#4_1Iqt|$ncZAw2Q!cexRmqwR)<9KDmZxKH zb8qQ*R@~1&scb0)=Jas=87cAwAH4dJ-sLaGBvUlid7V=VI(&(sf2HANXi0Yl;!<-y zS+RgTspOtXeb}Ren|2=#+H8!vb@xS{c_BaNVrZ;9k_F;q1~{#BbR%c*8q}}Rgcj0_*xlaQxTTVQ>PH}wFou47L`l4IBR|US-L{xnZwE15 zBi_brm27>IoP7c+{ei-8{3Q4<&}EhKy9iH_MBYE_y2;IS;}f3Hc@bZCYOeXbpk9Hy zo*F!0;Kc<4v@-p~e+K(!Lfli!FuWk>-cbiW8ODE^o%4k90+Va%se8RLpi2wWe5HZJ zqNFpvv$r+3Y<*eob~r{J9th@SqDE%y1K$XXqs++&85DamPIq^`V}I5XdbsUI@eil~ z8`NQS>LblUm%2G-uf8D4;){Ik+ucCe57ZEOH}ELP9cfRp{cBmg?wIeTMPh~waLrPl zX5D%lpz7t=CN>Z~r+C9Q9d)L7ug7PI!Y-WtoG{F0{(Qd$Z&_*?;D&q{G2Rt|!StXJ z0+TqQPVGVqoS`MfrG(i1O7FQ*CE^Cb>Ze(=x3>>*m)%oDCLCJI@ z42{;kX#KWk803~S{nXn$p|k;YRYebEZFH;5M4xYW5)P?iy^5)@%Jz|cOfeE%-ykR_ z)S_fvYqO#sDUFAVvQ$u@ad*GtDwbM(`%FwI+M=lxJ&7|#_TI_mjE*+^+65G|uQhP8 z3%48q+!u!b`d$z4_~T<+{sTCq5%4yZFLNWTrqTtAsJoIaRIsibssa;gIK6 zTj+)`d3ToWv(an`{{V4jK0;Kandvn%txLRuPvuCBTz> zg`n=zE7iA%F(DiFk2mz`Z)4D1d#p&+3OxlgF7Yb38r3A02WqlU-r0H=Wd=vtE=(+e zSQ$g)OA7l{$b!FdRlu2fU=BvJ(8svJGmHi}0SS%mPA=~eUix?+I|Nk4?|~xv%Tb5x zQHNFvX-7n`VbS!jmn)$w2uR_N{4<0$$&itmGVijVX8+a(|NCk+>iB9XV&5&TJRWf;iO#KxdOPNq zP4I5{ia-~~hes9sg3tPb{~2nkRdY9)Mi~ZrAP)}4<+5$?6+vIsqR%var@2(IK!W6- zM>V5W6TYjc{VJfcOivr8|HlO9RvmWq^j*f|KKq9-;j!H4ttnG)$8(2zK2MZ1MsLS! z$7@$hbNAJi&HTHwDG^KbqwMHk(<|^C0nhMN(D;zixr4lz4khBemQfNC)EFkOS`&xl zuJreY)+7CoyOn?^QjoZ2a4Bt?X6*K+qVyyGfe`epSY=?6gjUYw{yJ!XeEVM|mV@+j zr#jpm&8=JE#Mav&y4v4!u*!32DJTMKvw#%Z{G!+Sx0A8vx@1pj_a9FVO#+iELBQyJ z-BD-*^7AaUkw{+pp631~B+3y12wseKV(<$$(EA|}xIr9dtR|zh07lHSTohqDlIno3 zXKgIC0D54rSSv!m9Zhve7M7nl6AZ8qt221=8iQ|p5dIq4Ch+Ro=$3|EAIO{388I(W zlM}6cEu-aYx~s&C`TYsjg9njeP+2e^ zy~nplwL!nt>p3{wD(n@`Q#1f+#1JVhaH)!8g1ee05I=keD0{NnfC#!3W(L{3QBouN zl*M6yP3eQY{r=2kG#8nZ^qJ>Uj0F*JKyj-)m!4#hge70(#HmOd_etg`pWU@mIuZJ- z6AYMEo=BhVkA2JHpEC3^x@79$TQyx;_<#*GmZizdU`^U((kp$^@saabDQILk5rORh z3MGR-!ot#98eIfcg>=8>wP04i0qRGmNfH_f9Y#)G0OXQ*4}24ZES2cdhrrD5u!^gd zG|ns*-^&bWeo-nz9B@Pzui5Ggwp{7Ce*!h9lD3Qu|* zgrdf)YRv&STLhCS)p%MG$e!veYQIUUedLh=)CSVLNdFHm@kSQJ_q9W0fnsaA3(or z4~UoD2Kr10E>8Hl-a=#Yx}lSO>$F}qtJKgsm;{qo+AKF@pQNzu-G z8Ipj(+wtA?T4(P;_5dsY$3FfZ8zBAM+mP^#T9wX_?0k3VpC`5N3u zSn;q0P5iPT^wu*oQUHa&N-g}ePh;=);Ypr1hxJ)hrCW{2-0?&tV_v^!L*A#M*D+RL zOckX}r?oeCB!Xl-f(wH!QDz5&0(8?rqQ6$89HrjJSBv3)n`63%fmVuQB#To1C;Dx} zi1(0WCifKYJheDRCqyb7wcQ?Jcc$)xFeotnhAYq~>d6u=h5#aV-e{G8>t6%QNxO{l9NgE5QaWqphHI}*%6l!6nYhXi~1NsF1D8%i`hro0nTsyzg z+p)^xA!0UJ9rvH7Wv-U?i=5{s+qdJu{@K^`@Qg;~j#pW{8$jTQrS$BhYE$iN{ak=BJ${Yb$fOL){-jKf$RC6Sf~ zge-)Va&>cL325T)#Ur@|`x_fE%tL7`3Km^-92G6gfK=l2WdAuWM1p(SmXlR>o>jKN zEPXo1DnED;L-5QIJZy}QghYa-`EqHM&vrM#=c)j$LyD3VREA{FB?O8U>Ow|5O0<9@Z%vA$f#S>UWIaUcfq}Xw<_Q5d-h^QYY3)qlj8_ zMwDp9z=v2S-D0S5`rp_H`qPXa*K%Nr#sRbQe~d-DXgAusBrhIXwp8CTV9l$(vCDGd zHt8TY{XwWzQ}$^Tb+LoNmf^n%=O%YK%3?c%4Nn$QV}(VH0^R4|R()B>F7^kgPM3>nir4lA@#M zl$5sxH+(Cj!k&JpZCdbCQlMIbl>*a_>(^N8N+K}kpo!FBl7uJDvY0_#tT$mDr6FZK z(ZV7SD-W4mJTr%Br8Il4h%mp9&|pTMRk(TuL_A!UQ8N?Ncu!>xwj|Dl4}U3)g@|^_ zUv>`<(_PMa#IZbrcUA8^LJl|pvqxE&~2zSs~x+&JHOvZNz!CUVPOGhPT{T42nJ@a zggqM`akagY1#4lzB`L)sr(_9^WO#Vwk0Cv2WB48Psb9qz1}KIS22ouDxyP%kKeWm` zKv}s~d(l{z6qAP>EK95?OjqWMa-CG(&l7=-7_s<&N|Orj3CZz)!dgOyG}X%SZH9kB z|ojRq)l2EUS9?N+@n{cyYv&YuPMk;MMmemntCyBFUUE< z6{dS%IGCv$m6TY*=F9rR9>{O#oKd`(95@x`IBA)llt4FhUSGTFk)D<45AgP9Ws(7h zK{6Y7^C~hAE2ABgL(o^;4U*dN@G%AC$8@@lj2W(MGrG_^Lc=@sYgdF9JdrSF8p5|? zP-9x_Q$l!F$6+Wu-Tj42P&3aDnK83uI)?J(*3S<)DLl>b!~(JOO&JDz%D!V0cdljW z(K4u$6x33`DX_?$3j6MJ{Vayq%0&GgD-z zq)8+t{8W_UYr!v#+$vDabIYf8$(X(Qv#9UNRMd;XT}3}-s@+pR8zqy<^s^#UADUM$ zQ||SH-h1VePU5rSO2#yNyuwcY_F<&%7&TFzKOY7ZYUstZ%KQ!})YEHO=@bWU2xfC) zkSXcNIlxwv>p{Q{grM&PgYa%G~Uv@YJTYlJi%tt ze8Bt)UEcAy;b=|Eb`4!N|J~ECa|6*yyA{YWsCgadmT^DJ^9S|H0C+fP->{x?U~r5g z<8y?_Rg^mmP$dUfbWfb+c6Bel@%>saBcVP~QN+luLG$}2kX?bE(K^E!n1XUEGcuq{iBRdrN_7{-?m92iuocJ-PL5z>aX;94X%A^5OqzE?zr!|eq2a2HO$7$WvT>^T> zFR!c50lMSaE5d(=w(1d4cwrV^Q6K~i1pf|eP(vCEXfeD;Q)PSuvN%LBQI}p_e0w-l zRUmW%e?SiD`JM&-aNR49zHp5FjQ{PS|035%6E{R1;exaj$WZJ5!do!o|41hrOLt&E zMs)5^yFhj;Xae_ghRnN~xw<4A)QTHZ2_1cBzNFwUcFX33#2fPn6hZ%8Swo)-h?(l2+QTT!5QDQ;97 zKKSOI&6Kc{J+n?0uP&>^&z zCav*S9{HqrUQ(2IFc6J6P*b`h!kmeW@#C+LOtvHjMkb+?Mn~wCYr)+eqLk(zOR0lf z8W|irqTn6j9crA>E@_ZynAvh&g(MwJkb%BJXEC)&S+tnm8Y2EaK#lrNN5h!jQ&yLqGV>d@=g;D89VK9}CsSM2 z+$UmKNyVLOn83hbLubO#&)(RWY@ZyBL#HRWZc-sH=+2wmoXyfV;n3x zVbVm3UbHp@DI-3rEeJJo+));IVF~shBGn~CKzdMt6vbAJp&gETY@58}tXrcMdU-#- zTNO8vY>4Tx`CU$l&y0{)#rSG$?-3OhmZs_BKlM0eJa$jC*_ zfJ2HdtznC*a*~p1(G$TGBn`WxajX7Qj*_BsD$TNVZ_R$1nmLxru2;ELRUJ`%6fJFr zY%qQB4xq5P5@csfidYB=@;|r)mW3NU+Ha+9y&Rqye6!<8)ZC%bM#l3bbfm=Ym{aM2 zqGESa8Z8yMaysx24lJ3pHO`TnyK*|_Kt>fcdrf(@GBm3Bdo)vYIs3hB<;nu~=Jdsj z2wDo+qDu%(;`AiJF;~(|AZ<&8;FIrx4JMQ&b2DOK%X^JqZD&~Et_jIB9i!mZ*Ug|y zD$!M-;emGHX>qGJ}u1L6flm1>`25!=Us|)lUdSB>3 zb+LBstG=K^I!v(Pbv# z?%-mt{#lR3+F69O9i^gOP9q07*gQuKsD{i~=<`_UZWY>os&~ZoV41flH8JUZD2b~t zFjg}m`8X(z)*i5Y$soZ#{6ZpwAX07WObfPMRO!6FdAgy;^2CDO*E2M@-S$?^?Mk)v-DidD13g3@%kkq{ zGmE6DA)h+ZVJ@Gp>i9}R>W{cS7_t$VCREA-^_bCwcf>aFPclB>4R&RUZr{nRr9q1A4)-(N2I*s5-dpy{k@$)%)6kU!SEms2 zkN{=#(^PEjHX~Za1VytQ#pgI)R{h2t)i2>F^cqrZ*)u#-Zm&hT4qDg7@n7^8%+Smz zYefT9+O%}pmgXt%cx6amQw8};G?K`T?J>l}x8}0*?8C6ur`$>4DyPta41zAPXXq86gV0( z0oZ<2(7|%jeE6^5_Cp2~r38{Unfz@E`r6P254%(R>rO`OE2{a zi^f(FPulg6frY71w^2{CBqN;ST(Kiwi^&T#YcvqBW3<5r2|sCPj0Ry+{OvBkbA8i{ zbL#V8m{1g1hn;7;8EEm;@6?Xm2UfD~sA6UIV7Bv!*V_irax~dGJAmOM7B2=8$XG20 z#CaMa7Kh`*7i+6oGJ4oU;I1v|=`8E5F6pg?_15#?0%_OzQU~o@+Mmpz?~C`S_XBx<+G1ZSU?t&P3EhhmgEPgM zZ2i3w3L7OG?a2#qq`u+8HZji)AX_xoDHL^X6b@3%=R!KhZb;x#SoGTc^KG7MqD40g zWCIfW704O3GFgtizP9M*EbA{F#TA^@UB_U5bTByh5d?l9aU?*g@jRA{W>ns_78VE| zrfGc|m}8HD-O`ZPVvhjFHsw+lg(qI>K$~}~;P$RQm*_N!i6C}2f@OkzM_1rc-$cjT zctKVGpFtdPbrc8zA3Z)X0FLC`INcf>+XfYk1x#uE%M!vp0_RNc0Y~P|q$9d0ENL0p z@|T5-XuEtWev_8ASzT=ckJbicdq=1KRrPvy8=Eec$*pCAUvX0{d|W3(-;DoCiABjf zNi^Z(^iA7APYa=5%Vs%?S@Lnyw!^?BF)u`SAwV;a#Jx<X3?LigtJFd}1mT_7@}4JjCq<(|XF4{x6x%XmZ1zylHu%Qe2Y z3l?;UJrvuuzif!lF02lpp2Ow$&mnKS0DFNAV_uMsNbP7-EPjR{lLt{6$G_PTew_D$um@13~_8 z%P?~?XG!RVEIE3zId)5^xhH&Hed>KS)f!xEq$zbkG=De^*N+u_1+`Pz+y~ zDI2op1{C@!f^ozR9D(BlZa(Ul_Ua5af(wh*akykDB(g&ig2S=;h%D*s^rE`^?AmcABXgt(PYe}0>SKEA#&%tE=q@c|1KH7#KwKrwtS zJ*TOw$ot4v$=aQVWs_5I1%!ylV+g`sn6Su7Tf`ZsrLS0IX}E01{zz*jL=cZB(pWnj zg0ZY_D!jw$1BnQCLwo0l_=rF|AG)*LyIuMAGYR|->d#T!OiH#-%x-?Q`Hvs|+5X)PAlBho&`bmedtb=H|V__}$%UV^_enPY&!G&t>1^1)z)p*l=Sqn0)opp8OvE=3h z@EPRQHJR&z-KT&x%!3CafP#sPMrmLhu+uj&qMy51S$$n zsuIMiSfEOGJ0^LC%193*@@)zQiO;LrIjuMC68}|uRDty`A7B_9{jZTfa&1iX@-gF% z@7Y$mTG`8UFP!Syv6uaIOXeNT%h@OU(baNC810H~S~`N|y+YzTf{8t);LKm8Ip?S& zx}9$URX-9gof&9XU=3jiQc`UEcEKf=I}U3!ay{F|%+WMDPEU+HE%l=hC`Vhg){1*6%Q-;@we4i1AeY zeV1+FHtWdSxyOZ}^MD6g+-v%p!>295B$|1{7&TdAV%diUgO4z zsH&0mjT4Wtwv`6@uJH&sHporOjOPs_!-9{5`hiK7sd1TR+lXMDUTG56G%=DNN12aC z;^N!r)1<&=f!VsQPtpN(jr2{IFkJIiD@#%en%?V7iP7CXLLOILsY($e#vZ_ z9hvE$^tcYmEH@3b%{ZVHP4IOL`6X8&LK+`eT=G(Njad|YTioC6)UxkT<%KVD+#Gz) zBtL;J3VmCp`{mhZ(5u^m&BqY&%Tg3;Tvmu zWA)y0oiVtg-K3lPjVPz^7wgK9vLAmmrz5Bc2^?S+@+P> zkwK^4-6H2hzfmZ9(MEX`^qQ#@ksEd)*PT-3i^(LhW8p?AN8TktWA3rCkz!$DVPdEF zetrV}e~`zd6Doil?jMfguP-Wq9t`XYG0{U2hzbz zhzgkh4>l3+w6#nI2?A1rm;+Gw4nR#{%tndN2Jd;UM+JyO{v%dcYnFFNA%TE2ljqDT zfddEU&l}Z7I6Pevt?8O@wb0wBMdY8(9YKzr`~SEDyl%Vz_#QDkGyvy+j1a#_GywL06q2kMG(Z9Dzpe=(19ERU zKtPBhau{ymzStfAI~$|NKLZW$#_?aA^Jsv~|E`H>2@Oz&`0wb%AsS#G`d zH0-|tpl3%1JpVUB)I8{bp8rzjTmT*L1M;5(qc}RijQHOrWSF4?aR1A+HYaod=zqh~ z?S&4o0sM1d@IeR61OD|)^R)(*0)T)dg8m0Endzbiz~p%PePv9Kv@be98L;Q<^BNQD_it#TMJ8s$5zQcil(3AX^t=&230ImO` z(yc)MBEbCfGUP@fkN5(pD1FQM;f@JF%|1d0;N@Hg{7;ndt`Qx84V0Bf{ed<7Ij{Z) zwxgD=XwQEEvs@v`W4RRFlGZ#TPxc4Bb4S)pP`#x~%YB5~?apW*EGE>zKmg%yL}M=# z>#?DXn;G})Ecc^NPn}``p!X*rH!=#%V8@=4x|ne?moS~e#9WUXvgqP6uNE};#I)HE zavJ+-&4VZGTfBXt3UETu*zK#jM#e<@Fln>=-tc!*5Kij*I%-$^p+|lr&1Sfx9*;qj z14*XdFr3IZOV#&XrinIJpQ#25}N!3D~rO~8g?d(z!wY=VuEExu)-Z7uhO@43qrAQsgaeR?#^B-h~WUS>kL?q`)U;hsZ$^0>L1`#9!QIxg$_ zM}04fZvO$wQ5e__9xNjK)T_Bn;oKx8`^XMid<9D_^vOfTn}zp#Y9< zGOALjhiU_~AI9AiZFJNmV*7XaGtEH67!<3GBV)1{Dx_TUSV#e`eS{^@EKa5cO5I zq{7nbr_PDcgGIH{kE9DE8;T?q-5d_E2VK9F7gMF^b^+|u?2S<+IkM}^DwDdA=U2%$ zK7{^7GiYEicD6*dx1_a^8JIsP68KIQAx&e7EF<(O`P%D5xv`8O`*&wmIBm_B&y-ArpsJy``tK}basHZFLl;{`O-wLLR5hYC5S~2V zMVw@1D{aOZzfOb`d&}xri5NXi#cCD`XH;bs&9bJRr(#VAmwg~}x>;>5TE!ZA_~NL% zSZ$+P<9iI-?2_Gr$t{^ydYW80uG#Sdx9R9PAVO>&t2nbZcAC|Dr=L_Z#^NT`Aj=#}J zC@NjLNJ3h$lNf3<{-DZ~lr}b=Gm)%nn5eRGtiK!WQg@$N#J6wVNDj6Mr_2#!MINnP z*!aH!<6X2{`7#^#q06coOQkIC*agd7?qJ~JuIIy?;w33GS+nHy%du)lfJUI?4U2MP zoOws(nS|pVb{Fw=@laE^64=wnlqZPD-($2TFel#09=M2 z8YP`eF=SH>X8d$|^?lGMJh}{tqsmG&?{bAW5g4-uA(u((+_{b{FL@o)qVkD84Mz1E z5y^9Dv6SS}4LA*1no2xKKvlf)#` zgE=(0VQ+M6^Oc@5-V9NC>u5eyuaZOh1$-7!ZMBggj2l+j@x5r8ne;?H!YoEX0SguC z5Si1>T`bFJj^Ujp- z0!s{iVNCixQv`i}#I6p+6-KIqKJ^QJX_x&MM-&5f`Wn)CH!#+RO50@a5JQ_dmaEZ~ zZGtbe)ci`q=597gPh6N6q9qJXTr2z(K|9-qvp7xvg^RaZq-g)8680%~M0Lq@*sd_R(5RYLE`=j; zlMNR}LzWHe$sLCG4-92HH&j}vqn3%S^u%T!+V(UXK%62P5iQk;a5MSlkjj=og)sgu zoL@K$a5kS|HU;2|k1(utMZleY`Io>vmL$8$>6AO68wlFMGGnt=VHD`1Ysmd$8n3Yh z6uJmWDcacyD$!gdllu2@36EKcsOua@>f6k^M|`)$I3szT)y9N`9h^A@O#awRw)wm3FHQ2ujPv)u_xpwzG%>3&8^yu-uAismtGJ z67>GqNBBqx_%8|xIO#Vp(l2u(h5MQdtj887q99;s(v>cA=9A!0LwkLOq+}jM;0JxO<^PSF^h-cM_yRYYu3`J$NSE_ zC=cu@nwNdSpHBohjEMu0c9tZMtL`Zxbn*qjqCCj`$dmAnE(x+TjtN?X-d`!5C9!ZOu8*FV2 zq216;tu53Yi+_?h&p^Uz zOH3CyV;Iir3Mw?~`n-(EUifu?{J5zlyDxo|XAH#U8%tUpRLK=`OcE0w57IW6u!zw? znY)+;RVz+K^kgjFgOvce$Bh)3 z8;N}1o_4LheQ4Q9Kf7FtFBL}0wMy3nCudFA({?>1k{wNox)%MPWLS5)nC0PgYvPKz zJ?d<7FMGf7G6RjL4|Rqx1L7Q`n^9(AMGJ^Z;x)W*j&WY{ocJ~FS=6Gxr$9GuZ1S8j zr#(TicGg(pzdIHYrZ-jtozOQESjI@6($Or_`)Rzxdn|6%sL6DpfhaS{eL6on=ra$G zpF4ja1Ys;o#0t<>5PXQtE!ugC59nZ6wA{HdF)+0)?G@2_s`5n)_W{2BUNxe`lg%`@ z9bdze14lm#Z1sppxp6>BF#yuc-}{McV3X`MxCM8z{W8PpHO zaH%z>8r<5a)xKFpERPKpiC1bteMRK>{GEt#DQ=8Hp06CsBf_C=-BFdk=J-w)LA}#2 zqjts+J5Z8N*U#%}g>vR)XCI?Du2-*}Tdm$}P=#an)*e@t!Dne07kERevvd)ZX`-cC zL)6z@EX(I@C{y6UmeyjWU%qqzt0bAXl;D2jHUeGUDm+2zzJUKhz+!L55QEyex<|)N z4NIXEnjxNY%O1gi*2O9`ISGnO*zlB(W>x9CJG3U-P1?keH)=2S?!|=tv@=fE?Jp1= ztH=&x0lq~VQ<_v)1FU~SeUprY4?x)4dyAor zDD(W(AcKmR?|<<-^;A!&1`*j8HP^T3CwIc(8ErRzQ|r$cRzajQh=`WEs8DUeVk=;! zR2J&U*1TlEfCcU5ur7$`6y>|p0DdQ!I_h@h4jHPCr-5bEA+YAQ3S)byC15zLc`7+M zlYjHE|>MwE;S4O^S_Cj;< zQ=wIsN*4VK%(0867Hd0QVi!uXT)_Fgjwj7{56-FEm22y!(QT9TM}B`cQ+%K9jH|jQ zoo+;=EMEZ-C?NZAvxsO%QwT7au(nmY{wXtd>TFiOFs36-jHiSBk{+4FSo~qt?q!M(4?hLLun%f|Y53g-QdPvA!+SC5WvYkskq zjp#nrkoQ>K(7aLK{w?_Ht300;oS>hnF?Wn-<1+)4&k8-X#rV|T5ZB?XBTACVc$+@Q zbIWzON_u;GCVb-&_{`Adc!rPIPIQOpTu;?Gov|~>!)skMYq0!#qZ#^_w9*52I|0Q& z2a?VwWjmm0;38V0lo&)^N{$I`mWU}aNq`W%#uoZil1-yYc(a$^0T_=jT({I*AqOquHObG zgv243?2!Y)37@C|QK)vioH!Y$JXjwC&ZC)M*CKImH2U&XL~~gKeM>;U_DM4TIrAcCaoZII6cY2h z1#Qf|vI00An-05^V|pyqAZ+L&baFc72wy#4qvYR@bfHnUT_fD=SU)jiY1&e9O^a}9 zzjUkm7B(pmFR4-Fjeh-Ka^%@%9hC^{nmf)()J-aB)FD{$%>#oJ56<3{hJTW$N_C`w zKf#hwY~tURYN&rEl@+U>ia4X79Q>H~`#sC`TxE@X@*t4G+{4uYpJSmZtW#MsV zFss_bEt+LfHh(a{!r||~Pz264uGFx2at*Y!__aW*B>>#2e}Mf}mD-|YL%+bme4}*Y z34vFVPNR4|CsPogXWBM9LvsukvM3}CTr3rpo9RHw17-cvGxsy|noXj*ekdaw@n?Hc z31%nyRf?8W4JUf;Hdm8e&LaEMw9KO^@}%`6#KB~#;tQm8Mc2HQIs;NIV}U5{mmVhR z&q-s{6@`LMdvS)OST#0uz4#W8PHY!n>hTgc(<=ao#zV&;niu{2Q&- z7yY^@Rezl~)x4n5gs`%Dupm*JKG=Bw&B4Q9cvD%f&A4!?X+eC!9f}3jrICxRnLh+? z1S)iA@wsa+{jY*J1nY=RoQ8a`JX8~J!LpeP-BLKi_>7pW&Ve-PYeW}w&a=ragtX|f`}?uG9~ zaut(iL2mZ*mr!-lgi z7kjTfY?BsnXFW37Hsv(55BAQ+0>=^|vdnNSXIWc~{J#*+YuSyZieJ9OT)ACTHZ!-| z06JYM7B35nP{l%%j4&bM)pR;V{83m++VdRbOAiGiD5ZI?tNhM%=hO=ejRa{PD7)_- zac>?MR*Mg(j>YZ0O6!YJGDTpz?8*v>J%Cw6JBs28lszJxb2m>;;+Cw`a!3;-?=7^S zx_afV)yC$7Cv88I+;OFKf&Fu*l;#FsJK}b((v&T3jZryZjSsg*u?KR^pmL zsB^$SHptyHujE>8+ge)0fn*WwR&p5%_TW4&>YZ>B*{fZarIyeR`G2T7r{K(@ZfnQt zuw&bH^2Y9%9XsjRX7AYQ*tTtTY}@XrWApFtoH}*>bF zn9XKU_m5c>*OrFBS_K3*ol_#(5&6bJ5c%Y-SUq9UMZ?1TDR?DhfYXIhGUB;@fyEtD zlT>{9>p|JN%In>S#0HFS+0!fSJ)x{XY4?}7K+4}+;>@uQlv>q3<)MuCVK3R}-Mr}& z9OW7`33UcZCEbcCX{WGq626PT>%xAV`Gc8cL&Hg8o${WBkctr3q9Vh6&7tW?}EGC0} zNmSLFq7(MymtZIg2{=)!rL%E=JN5x`h4Bqql)$(l2Wt)rc+~kD@DNX+;dK*SMh`D5 z5Tk4tM^f%ys4ot?3x#aEg!TCOOemG|BvotSoh_EXub@xxbD$aNGZ?sv4=-&o{ir5>r~O;*l$8)LtFSqBI}wA(NNMUwsj-lP;$Y75{Xt6)b+|#t2RKkEt`Aj3e-bJN zw@BEPl)R<#d z&=vwTOL&w_5_F$g^iqfUtk4+3+WKzC6%jLCR9djx<-4n&Ro` zPZ6RG!)m1W*&C7YnU5K&6QrDMrA|&#tJibmhH8`m!j=x9%d52u zF3;os{YI+qIC0d=Npp33cfWPBWCmxaxJn{j0-ucxBz6B1SS%1fR80GHom^}bYm)ri zI8bS%I>7@VD<>}9Zl+HWug9v3EL%So;T#?4-z`PBUvM z&6}yWa}1~xj`FjtO^k&|wRb#tn54{Qe zxIG~d1QI4Xcd>#lQ$rk=z9qh8Bf1b1Xup(RLyl&E0ezv}OpmYg*fPmK;c)+u{IvEG z-}6k+?O8{#&yPKhb=H_E!II~{F6HK*%U}=?yZ8KJzQ<9#`I)2F=(l`3X&2GjllRCy z1lpH>$ge%1f5z3V#;^nPPhN#z2``*A28E#}z?bStb!FK^a#G)n@=aL#3@8Q{dmo(L;?8$1~FJ zi?8}=lHr(V>9e4M9v#an&tKUj*5%BTvBlhZ(r@11%LHc148K*(h1az2wXMP*HVkeL z9HH6#Y<5Z=I+RO*X(XF};_)l~EWR;u*i2O@6jc$Y0G4+7wV69IZ>*i3ldDwU-@gE^ z?H}1yJzoy&6^}1xIV1t%l6A}x0|OHEp1uZ^>0Mu|q1T#g{p{-x{;dkOErVPVQXW<2 z`~z;9XJ*`k-;YCc0s}u{=i}Z@s~JZ&#XM1xO147A)?3#%T6{d|8NK}wWX6eem5cU? za_fp-XKw2b{x*b^ht-#yu+9yq42u)OU9p*Gf-PIVg+BIfoz zHkBisFUq-MIf80dmZwn#-NOLCXH=XQ>Gqgx2>P7-lKU3&-boJR9Ok(*UOu0{P-2C};z zjaSd*HELsTgYe*f;_AHc`(hi;YXy;j8%axKHxuMV;e3U&1o`F7DZ;Fcxs0Wg`~F&{ zu$>9F?>Z`BS53+7X8Ud4c%*>4QShHxXw7}Xmsh+sXs!rR21sBG?Qfxx3w7cSe(g|) z;i&sO!wc7Bk@w7tpyu^EMiK1HB_ECvN+R4@|1IYNQqxK(*6Rst*r(K89G1(MCv2*m zmy#E3ITv=!@=xW@p?UKYwflB2NX0+O8D6UIQbCG}h043|8c!Zh!9r0)YWB1uomwtk zUikZ-!i$`zggbz345)NAZBzZSeTDVcL?Fjnq3m`60!)C7&^Jn|P0)5B-%@JhnJwtA zZB*p}_EXG2bd6sO|F;hq7B_8I^Zaqh&AU=KM;ttXB?+OW!`G8u z?b6W|fjhM(cOiiW^}C`DLM&D$_?z05d-8TNbZPrw;Ai@f1&84ajWo|&|K znTpc2bRMxJw@T3&=}hPhw)s}Ew~+zP?4Kz*B~8AmFt$uttV6~!eBvfH_cw@fW3Zp- zDBx6AYY8CNZ48tgneW$C`-}1fsWgAB#}7eRq}CG^f(s?bPw=ObRuOLS3`$_ql!mD- z!i&!#Jl9OWboJW{E3_ZycNZ|b7t3_9=@}WXf1S&d_N zrOR!xqEE1pw=|;sp4>%)lh`}9#=n?Tc^Ykg`uhOc3twy@a3%i2tub?^D{p^g;}vOr zLTFbQ=)=@S-xInE#STOX_(1=;D)CoacFtCRLoS^qJ`umqrV-SBwTuN(81``&qFumL zJyqt2Zzlcx8q75^o--Sf1IeH>*nrq)rE!A`gO8BwLfvJB!vaHmtTmyZrzNWkq7O$-G7p!IZC^Y))v!2&9lE2_th;V_#WJ;2&;|cOj zin_1~-Nl>%^~15ee`An~Gl^cLloBZ{nYaLy7h?4xqu;z?eK398ANzGnb5+9EH>0|%Hm zNlAvH`RShL;#P!TO9nPA$#kl)f+zPft;?8HnK?7J%Pn2t(mB5iAi+&O*qJ8RiUh>Y zHf+JK73`sF^QTdRLzc`~>WYqg(q)bRXw0U+fB7TaqELVyrQ07{GRo0E!hUdx?RUeW znD6!8mry#6PTYhe7L~`OD0$q=SnkL&5p^V&Ma-b*(!Ftg#f4>+Fh5pIk=gm=hq%~Va|DUMJP%Qt2YY`_tOh? zX7?$=47TCh0vSShM*8ACXmg$iLq9+e@tB3~lNY+RVwkeM#`jyav1TO8Pjz<7wJQwq z2nt*ws+NZROI-{?V9$ui;vnxrPI23$U$d_z2TP@d%`$=D+A!76$+e4 zRxSA>k02&bpIo#joh|5dL^N)7Um%!;Gn>O6Zoa+Ok?2CcJ~1%uVDb}M zxZo|=V&zOadt@!;d@(|EbtzsVPEeocH{ns54plQtSfXIQa*tQ`V@qY0cg;S2ZIpPt z0uQZmSQojmbji$^EhQY{QAsd0m61QcU0q`j-W6*gI@xelT^?ga4iuEiHF zQLCJP{ZWbLwyPTr;C?6jp7Zy$ue`;gZyh4CINRNvsh!2fzRcB@Y5_9QF(F6FNDC29iKLDP!gnfl#O$RO&EY|#x}-O#vMFJ9#AvkYb6 z#bL!SE%+gf8*_pTx`&f66zRb27Q4s=j_PS{@?g{Rn3p!8=j4F-VVmifww-4k z@%8+&`?}3itWckV zxJQ_qI7ydV!9X`6tDewQp%}N#lk;6dQdgnRzJGx*_3eQkLC80~}RJxEA$`eyL%tAVKfO%Z=G^Zq`oBCP>@ix(%e zSXfhb%`TD;q0)ob#SZ=x*$2P&M$nv&2j6zY^!n4d51&OxV8^p;C$YWIZp}@?8z+*w z9vq}X0a?KaO$cCRN70W1o{F|CFppD~Fmnd3tgy;{vX){&bwgU_%l>`5Wd_G25luLt zJ?AEx%#__z^Urfg~9U6jmqXrw2b)EJb~$ zq8i=?%iM%UEmfPS{)A#xA%O%YZ+5+6ss02$yzGtHLUo|ykT(&C3o$voJXOSbR@1y* zaW6&w#5xOlnF~Caw?v1ifl{Fr#B7_d{+x55w)e`~auCZ>4EQ;^;}(`ya%+N4J9d%S zhPF06oFvii#Nw}8W8)7d zy`k+q`X`aNPgLJ*V(H5ty1R6K@Qd0dgBO@)g#{&qCt*%fp!|*MVA~m-cFo}%fo{2F z5ji_TV^8y(eW)A4LI}oMA1OmvO9&`ck3OHQe`NGa@ZEi|J`tiznc+avywC;B2OO;* zmQYyU%SPs7dlg+jR+ackkp|trU|Hr~k^0_Rx$xYbdC&bCGOaol$|Zfn@wtjE4Flx% zpW#7)fDGpwMgA0IV*rqRw2HfvmKs|sZ<4MWosM0ZqYEigWkMo>Gd>zVG%pQ0yDr{$ z+yu}wjVH@QZxBTyShT(A9Bf|K)%Ki@JRFV`K0-1C&xZ`_``K+bk|f@gJc>1L2U128 zHoD%v^=haSjcg9biV1HqeT=4i-~BwdZ|X&*xov=}2ZDbH!E$Ql-_`^z7SVx8uoCbh-# z^y$k&XBfFmeQkN|e(R`f&A5DJH6uA;A9E69L>%f7J3{%A-P)^tS}9rhJh53Hcz`bP zt&PHcT3!WAI-N+~p5T0adKy9`Tj%JfhIeLG+?F9*9e1jQ1CB~wU0x&*9k#16CHd`A zKfw$3GWP10&!QBPcA9T9dvlt(I%zXEN)O4Mx`1qFwZEroYIPidJ8-$qAwI(HcxrMX zN=6H2?rYEUKG5J*%kAWlJe;#R1WJPGVw1~AU6S!+966(y)Sg|6=yDay$zG!9iq96| z+P_B^>RB-eu?ByxQqoEzDXQcfl+*pSGkO?)Mi=X%z9j%`+)1+OMnq_pSb1AE)k1!&-wXn;S% zNe9@%rQe*~wd37Cwq?FLtxbO(E2e%1U@UJWP&P}WuA7G0A`Eb08q)`_jFB`WgjIbt zt_WBu7O|lgv6(*sxgywVupdWSQTd`@ZmT!U$1S(4*vUrPcF=QOF)&tcS{nTol+$b} z3T_e*(;QClG&Oq1=J9QN1Jd-dMFpjZstA90KLc(vi8rDjilm<{k=tb}nK-T{GZW& zKO}>V+I65|NWUrHl(g%z%e{h5pK=e|@Fybp17)q?iLg`4wo6y|0GW6GlvNcV_(4in|1!Wo2e z_&x8KqFpH-x!wryff5{cU41pQGhC?lFK#6QaT*AVUh=v72+q3oE2);5Yf^udSF?0p z&wcQgygdHYx&LsDxnFJ5wsQT0YiFM0k;&xh6MMOEqmh9YYd4D1pF(7UCGa;!SuCc7 zfJ{o)WCOkC+@HxGk$Dl4w?kQMZVoqpI$Ah{wL`JK_)cW$J3w-V?i=q40yYRuXbb7t zqrd%HJVRv7P+m5h;Ube?596?Po*UO={!Br9LXKK3p+a3Wd75M5Eb}1-3u{-C7@7-} z5pzWk+XP?i(o#fo0hN@%wW_A}=CC&|*0HuIZmAQ5x48SY7@VZE$b1}i@f}1T9KSc- z#ho66F4Eo~0xy1U%z8-US#9rFc-g!~XRPeTsQ2=C#TWUa_l$Jv9kitvMNY27-^;6` zewYPmFj4kfbh1vTqPz?iJ3)U$$h(fwU~JS7IdsjVWK~Im;H)mbFXlbdstjFzccvf{ zHTsplEXZzNqpehm*BazQr z%YEf2P)xDXBB!isr>K-#4O(n5i4$G)FKPWL6PtND13znzX2e&cU;$^mfn`V~1Jse8`!RdMKR0aj$AMRH7x0353sj_kb?wV3@h$0>^{W;EL= z@B`($^%c&ZSfdi#wPK{w)Y0nVpGRn zD^pX8G57t$8goB%cYbt>@H=CFW&{UoVGf=yik@jEbp0HW7aWzI5l4H1ddJl+Bc%A> z>7h-n*+3gwpXJuUW#4a6iZlhWHYJsbSi$2 zY;sbZ3a5OoEhXi^{;KEaVvQCb!`b(9-^PToTfm}gTvN(PW7ygy&M4C)GZN78`#8Jz z9$7J5dFhe>nos7Uhp5P{bj6+gcn*|XX2ORCogu?q0*5HCC^}Hv^koX7$D`<@=xMJ$ z!Twjt`Y%vacQw5(zY_`!%o8bvRqXY@m8_UKn!A|bsKB%;fds~IPZt9sgBS@(I1Xi4 z>9}aU=vSo?l%GMpcA8%yNg-HA&utnICoYs48gLZ67Ay4kzmF%>MMO|03n5#5?>wCa zBz$XdMcDaZz9|o$om@PgEY}zS-o&5JlkQ-W%3-7dbV$mCi=}85+MHZbg|-;Cqt>h6 zExjN({{U6_hk6*L5$@B=d04J^#-P)@FPZFFqAJM=^pad>=Whm%{Fc<)4Z3Nv=`r*P zEv>wDq>=i|nydBBbC?z!a??%`%Sg*K-(tPR=|adY7G?_fY0^K@N6*bh6QKPI%vN2) z+08Lchw5!B3Ik-Em8MTD23h^R=95CGoeT6sBmoKS{#%GF@5)5m@lK=I_Gc%5CGsED;oWp(NTyv8mz|!RJvfdUtX>jJwtIWBi>_ zNQyn_l9vz?$JD?xXRMAl)hGKtIfiu0Xo7vC^Nz>kLa=5Z0^7ccrUR}G>xl)==l@pejVk7 z#3wQ1Jv<>``l-PRRgw3TH}OH|j9Io)Ih+a)6Za!-9j$ecvS4Jle|9;kVYjnF+@*=KyT!mww%w`TtoUseSFbp;JHLk-m>S?Kw_ILX>sC?x3N1z&RGr@I zd}5e7>F3ihZ=;>T79t7sF=>#ouAynO*}w-)T2k_+{i3uVqy5EmLOX}&zQH9!DUB_& z?rTz@yM0WK7BQo`9cK13pmcFU5rA8T6M`R$Z>N|2TE#G0RWJ6zLt9!;-c6aO<~H}K z@XEEn?zKG^Sg9Tp=Qb&77}MP?jQI{87%qhxK7!Rauxzm+Dm%?=u`+ZWeAFz(bM1R6 zWbpSb>3CICD&PH!9?EDF0{00(ZHu^voNo;8y2q71pw}4beT)h7B8~;w2Mq8}o~>vh zw_G9TYG=aaX=jGPVU=zMj2Kw_F%WIS!{Xe4!Lv|-aDQuMo)w=e7^)jUHz-GPB6x#D zFh*MJQ$HhIPiyYTE}oN%g)4ftqtvtqQ>R*ygo~PvFnVv*fPat#dl39B2*p(1t0-zH_H&Af1m7=frOyHE!Ot)!q__1aE|&_f z8!OmrlwnS2ucXfk&xB0vEZ8~e?`{PDYkA`p)58%eh+5kKUwnv+J91f#5P4`rA=L9> zRL!-}A9VfIFor^C=YLQ&he8)MLM*{oOak8j*}oo*sz(0yxpDmaaj!!`3g7#aeC3jq zC7C8fn&GvUJ;>O#bbV+7B7EUqKo= z_$H~f519X3>?C#+xD?>Pz|hcAa;M(@r`VDFvz{OUmM*HxXdguSccx4$D?5fPsHO1D zT8L&}414R}Y-mT~XA}OG2GP}fu0ZIJ)gufn4(^BYd2blvf8;;$ErETB zBk}wam_85+W#ct(J^4m=c5aO~VwzPf_+drpHrLj^GAkB?4HJPWqh!^)ZlW_A^fz)H zhAXJ}(i)$S9kcV?CYk5#HrQ=7{99^L8bU}Ik5C*J2bQ2k5H||(9N~zO(x@a9$fQ1yr+7D`<4^5Vy5@>`ktGO}(l;^3; zW|VK>2Cef}=DxrBjF-lZe>2^nl3&Uhl+`9$CY2PZw;V>+U6BQYqzje41(EG4sMn}y z{dgvaj!F|)XfmNB4ZhYF(;(PcQRGR8Cs^BI}0zN~)K!PwS40Z8n^FHHr|uufL)^&`>yZ`N#Y3%B|%E zYHy>0;`lRd@Dz$+GsxayGyMrxA53}!eG!l!RQ;(DEALj|{vJ9wc}#@IHP&_S0G6K) zPA)Dw;6{Jy%kFlX`{2%n-%w}^9sE>mrHfSC2w}?4N(6Cjjt}t=>7z*GlL*{k5+J2` zi6N~GauHPgG`To=j!j*m5eZaU!L=gjaHH^6bhjO}4mp(f262$R9mIEwI@>ts*O512 z@OwS2sikc~>%9JLj?utiW$M8g+YR56p_g z{oCt!-KiUE4E^zXy3AixbXwklefU}#S}dgU6DB8I!Q9v~KK61G<|k0GBaPv~ogN*1 zd@FWKg(4QltdW=M9Mc=YgN-E`gXCFA1W;M z43NhKG+yr+1v57|hDULt16T>MG(OSNvDt1^5ORR(u8tEG)iembL-W15@6kmAfhsGU zB{KFVDnGSDe!%11BseFGUSQgR|4f#`R8umDX3wblubM04V1!^gRrDE|s2zTB#AaA1k!Zg{&Ng??$ z4POS${S2ZgwT#v1EuVI(f)%NDr?c&)qu8^4z3wbKV=HRI|5- z*5Yp-|B3In=g&;_ak%H2iNU7Fz4piz?|5~XpCUO$`HR20fItJ|kQI9p)8@)K3;x&x z2^CJPy1bYrAJAaNm8ua;K{lhYP#?2w|;->BZmy# zm`CmDUw)>g-ayPIl-@AxHk$hVK_-5;&VeF)OlH>;0A^T#iSE4hB!4VM1NFPSur3n# zuO=vcY+1NtC6JuU~CuK#J@j;n@Ri-7>#12gH(fiZ%~U&Ah>D=G>X(qGI6DSGSS*zi9|zE%&}~*Be^#uVA>qi|LgR($KKDe2B$=} z$*lfaV4f!aK05JMzW!n4#cb>&wQ}6lH#7ccQ>FRni)-Th*$+L^Gj3&EyCm17%I&`I zUKOZ|q8n59UKyyIqMZr!k4&Ui!5+-ZSH7YQXnTRWlPK_Ya$$UJ)$Z_hx?$d}eZ-jg z`eBL=RYJ4_GNgk2-~X+6q`K9gmZVGYj>&w0V+|^P&=bSsfgmZ@muoQhKLMyZ!A}s6 zCy}By*n1)uD`KLJ2-lbwn;OAaU#?v*_PB$NQTNt2rZ3^pF!o+IR*B)zzV5MJIA({z zU5i~j#0G^ST=P5%*v~o>DP|5el?=u98ZqQgR~!>@@5of)$GmWMnSXo6gxPfET#ngBKuJ9 zUTx^yIOcKeM15%c${?pfFVi>3PmDM055^~q>}2Jkf_+;4dF@-^|DHmOuP3ME{@H?K zF~Gps!N9;w>}{EUE~;4h+m#M)cit2^%D1p4DaD#T@>{)&tH z%171B#pWbeC;bl=w=`GRd98gWLob#~`>5aAc=)rYMR;8peT0h2$KX}HJ2s{Jp{~Z) zhWHgMi?<`$)boc8K#VeXo}Kn7xX1ct6S`H__ ztJW1JB-ItX@o+G++e!V?tg5onEA3~eCqQ_AweD9$E$;xwUk#S@$6pRITjs{M=)+1E zI^$`8AjJG*?#tvx{a*3R#ojsy^d7c~<}S&#BQuhfCgv!5H)aH@wU-toD~E! z5*;<-(X%iuZ+O!t2a&JAGU&1^QcE^_n_6S~EmoaeW8~tB$SlkQs$iOTVW{FB=drjc zBi02k%&O$H)9ilCGeNF31xE!MJ8d%(ti1EXZ&VjI(=?IKmMl*Td{6-jht8YgY6mX$gy}3P7lM9ABx=NsK;kdw z`mf@Rw5nR>T%_}6H;F`qj$+-FosY*Ia2$r4%L;qe$DNZ)~Lhc~x45;xmks zl7Q~3)I{arnP!Vo)lT`Y3NtOQsrqYd>!Ul35&7oc()~>MRM$hYPkc4e{pT;GS|uj znr-o@oi2`1c7D)R9z#2uc+IhAQUZ(kyAJw_@gY^RI~yI+a4BBg-`@BS35m$-B7sOy zbdO`XqB0133!y8Vj)^_#fjr$%d}sBtTDg+%`QF$W)x&HudY8{_is?j~yK0eJ25MQ$ zhI4Xu1`iuh&JeJgDibZ-g{)UIOGd{}Q7f=H1Md+(`547jZ`;yzai`8uRVPU1bysuB zD|p{pxa6^$noM^tn9FigY4gg=Lst0$G?wBU4limiy%D?a9<`@zNr&8XF(DM3 zy~fU5bck8+FL7aJVj3Hp;A3ag%-CiP!DRed zF=2lP{P29f{eFg%P=2-n3Tz(6NqCa8K`bfH0-a72g z&N1zf8e3jthlF0kT6Ij3J2me}X5qbM+GnNx&#KhgfH6{7-@PCtHl{rK);X~SeF#cw$LYnA>Ot)s<4viH%a0b+>mSl?<_=}v$8%}$8$_R zCGS&mu)MVeC*WG#2+RoaTi6Ir(1e47_p{!5wNt+_+~FT=Rm9Nxj-zp!F*anf zF^8o_Ydm`^>!GoTO{Qg=6b;VdW@{wd>@f+MNs^Sd3j8BHZuRm^BZ};iXoJh~-ooJ`@)y7R0!f7~G|tY$U8^3^!ZbeWNsRpE!=i*0PKfC!>k9tR&Vuv1aNp<0-P+7j8&9liuM*>8s-$JO-x}P5<+ZP&$v|P=MyJ(JC z!7x-a(i&ln_$$OAfYNNlvQScFLO$UA&~BW_3rwoVy8& zf2UoqVtpY}SW0_i70E8b;Q20oj-+Pr`IZX<F5C&_ZguD$5_r=hkj5dxLnd zd%-KiGSeQhb5T~9%lWdyLP|gdEy)@}o=QS%PbNA2gfkc9g+(3yP8;vNVN%d&)E9u{ z!T3AUvkH{$9g*%ZlS>d_4F|4eA#E=Sgq{)`N1ali+UrHwU$fLoOfL&=+bY6K5^7(f zsxBBBayMw;COc;Ivc^4gEpGm*gmH;MWW5v%786MPc zIsydz=>OGar~if%{pVJMnsfH=i3BYA{1;y3iuZBqK%Qzk4m!Yy5S%k8h=fiC!U7H) zCIL*V*DoyLfD$)tA}9?$;5FoRtDPhwjEu>G-VkmlpviT)S-YvpO}PTA+^wNmo9@&3 z!n=VYEeL+Crl+Q7tm~5LPp0>Dn|X)(%?)=)4ve45vk5g^9Nvmctr&tRFtnQeJ)10N zcw2>|XV<2HH7bs6^6W9hoMfc)Ix=&|PYo#(RCs-rKP0U4YgT#T)Y1Yj^|KkKFQn#} zz<$Oee=AqHF|{IzsHbEQj*JI4b$S0b+q&>;CArJDP!TxGx+5wm-9Fzmkf{h4ni4B8 zm3dIk$&#k8jyZ!~i)Gk61#TEQ3oddLY6Ev8L&2)<=oz9&3RfQ3`vtV0yc@M#?E z{=bA%WD;8zG&XkBD_kNWQH20XM%Aj+9b}0#J`r#eOSbvS=y9ISZQBbDxZToaNbPn?04UTwWrvvO07Is}M2Z+`SCW}xaShv^ z^=;Eiw?2Zns1FW8y4-jV{D=qAOkGD0rEtbuBY&7LuB9P(K?(6-?Bf;>E>C?_6y&XA z>lQ)BGj!QsDt!Go2}3Q|0L%(x4ij#NVA&8`>M zk*UP8E}97DK%7#BQ#cE)r6JYdfk1YnHW+hO6n?njMki?~326mF(&+ z^SF)(meQTYwQI7PQZ01>57g?Yvh-eSlyeiv7E(Chf%!EwU zH60oPi$Cm(dHr;D4jf-^49lj6^Bc88ImaN%hd{sx%iE9aA@zRnKcrC?-Q1+2c|tiOGlnRrFvKXq4z zc5t-ngd#a8Dq`m=ay0s$kJlbIRz&4&S5mZL5lClk{_@ z@l~WeveBFSk&&_utCpqfzh-EmT_td*W^prTyV)@q?VipVVV@Ug8F`KTwL*qk7cGil z2#V}h1$XX%WddpRC4l&$6%*1;A*}hW0gEo~pDj+?>zjgzY>%f`3~wW#!oveW7_lhu z-GIx)m44E{!=N_`8SUU*tsnnTG-uF+`leM0WtkdItbLNWC!bhuZ#6+Ft{%|(l+M3z za81{v9d=uErdl-WHTup#Z;7Kas;1xZ|AtUc{1sZ>MY1EtSe|m4^6i<~WxN;<1I{We zDKFFcwr6)!uIQ1qk1LmIsYONAQx-%~LO%@7u80bpS=yZd)i8XZqW>~g+Dpujj7MyqkgfE9)sVnGNCn?Zg!P$L2?YRE>9>vVhk3@Fl%&CSc?02L0zFvf^s=*$A@6; zZt@+!CRk-&N-1w1U?%?Z4k(Lb48YdpkbSpDCuF_3M~#tJ=w6wZ%7}3TrWB9m9rLmv zIfDvP=v>Bi$5h&ldD3+YNA(cH^^D~tNSp1D zUAh{&EG=b0`Y&LiXFL#ql#0^Uk=DNq&bMeH1epFRwf%4Ln7ypwUs<~{QiTd!U3QfT zB0?ZO(&WH8%*hw=v?2Vla+C)IB%F;mDe+>8!g_Mh6bK6T?D!>zO;}^y>Xfq_h(!Mh z8g|ZujJspdYyIv7932$+MGC6ERWZlIkt;0J!BHzKt>SQCbi|wkCSQl`d9;T2uc1J@ zA_ar8$OxompKj;!7_9ZJ^pZK@sxJKDXdu2fw8Rbm@59DNfLEnf8c+PIB}m~<>hLbo zcPM`ON{H!!fA1v?qafgslG`AluR^OxkUJK~{P2;fpVUP=30Q1W{)_@kKI6eZ(KVl& zK)5-ul8+QM$g~0SRyM-zGD~(XLF$H-*E~ngb2!@8rA?)7Oz%4V>;(Gxi*j3-uD1^4 zf0v+cb+0*E7M0^eZXNwYzPMH%L7UOep2KIBz>OUA zA4q!u zkf2hSA)x_;&bMIbF#GY%>yRAX`^MUgK?AMGgc`fNaMVOt815a!}|c+(my` zooBJcM`FhJQ!3*b2v6D5COqdE4#(b4((ORl9rXu}3gTnLKRU|RYuOA}{FaYB81<#7 zhcs{XM z;==lhF`?wX5=W)bP!WU~48ooA!|T_`P7r~FP+k^~Uy@Iedv3&~YcB@w@wNs7FC}qO z5Iuk(OV4maEx1HnYl@bM2{(+z+CTHV`zzENXdGcY{*Nr((Qy4Y8+PsniMD;O9GwQk zlQwe|-CrgJhC9Yexu&k6GI)Z>iF?n=4pnI&9g8KEz2<0k`B4izD> zr%yN^U`94yRVAW(&*;Kl23-Tg zPv}TF%h%98bvb;w1E#1Yq9Hkcp=;7k$KQyz_rEh5#Q?)p8y zU~KV(*EhNe*7OR}?))GVI~-+1c4FeOb6k`x5b?=F{U>>OW+wz zq=Ll{yzTibZqNr75bCf%Y91HGg+7~H;OwL?O0cvkCFI*VetGr;?tNj#hDA4SI4(M%1FJ{B!=5$XI->zcRraJF6#5~Of1S#syD z0f6-j1Acd3&3h|8KN#NJ44QK35Wl`U?d%N@_8@6;MK0&<_6s~=@?YDYjZWaU1a84f zux_+cSR&Hd6D#X_OIq18pz>Y-m?-M+z_JiUwxf=@VsdpfYjf2{=!_XlCgJ!sjIuVz zaMs^kRqF$xTU&1e$}pf!f<8=FNT$b5wD`nKl9<@U2@EOgzCL-0lrC(3RsoR+UDWk% zOqykrj6oC#aUvnnwq6Mwc*Y|VXT&Lk%>A0HySG6bbbijWW4uKD&_Tw47JBi}xPisr z3XGSBb(sLeqz2xa2VtJgMZ}KneHoQbjWT zfi}3rFe$NMk9WrbUs|^`R5p)bHkPn(b7o||jTDk;R{2;&JWIM=ZE*p(C~zUE z;xbn3^XnvoaC(`<@;?X%yd)ZfLwJY}yEDV*WB5lb-90oGu{3h?(|p~Dt6{RUAks}~ z8&NwUBLPi0t{7Z-k7Jl-@}tu|R;53T{HJLRhZyD<>wd&tE3!d96ei63K@fTL@{26! zT&fy}A~cTeEWr#i3sH|I@^Zw>u)zn`vVxP1RBmlbYc2f6xKAnR<5UgFLKy%p#`&JB zl7rVl^1F|%GkdIDj%IlT%K$UWWZ|8r6M3Nr(C^B3-Mvv~r(|;8Hp?Bg$5)UF03#{9 zDUm9U3@g6&E=N3|}IdCWUSHGEMkA zreEngcg+$3CvOQ0zUmi#UrB>>X_hO$4Rtp?NPd=aFw{GzIYJ#C>7WQ(8>t$Ym?Wx^ zo~t8NLgY_=6s}H^Y0+vS2;(>wd}q@Tyj~phIQ+g+wy+hzGCRL!a587YVbZn>;*>{D zKQ}nI7w;z=Juok~h&KGo+)}`c7+EGQVBFQIRa555q@9eGymCDrBN|*(Zo8Npd985D z6hyBf5b=%NsffOMPcs{_4cj20s6`xeIsAO0+5aDu#@~?sS|+~MIa4=uv7s4)jbHW) z19ELGS{nfX#`5poVxKz=Isd2e9T{TO!Pe}>iYP;+3ilw26T0+@@D)zsdtavta{Kwg z%RPj1km_$L^74BBZ3oR5reN{A$GoJjd`*ckk&Q6Nf3N8aYV6(B+mjpr%CD>Di^gDn$5;)6;>yW1Ni{x;+>X$%xb1SE91W{5~#RtPBklN zPM~cJVR#k4?>KpdM9ikvh#6+Rc-F64=(G&wt-`0Mq)?wDCeu9xF?CjqaF(7Gox_CB znnK6`7esozv;<5FniH*XY0nm)+Zru{1#KRYgYy`7**1*80tPdgNb^F8!p z%UBN8gZ?y#E4f@W*#zgA6ix8IE(3aH()gARk-S; z4WRlUABqxV@GfE3l0AgmE_!}LmgFS@I93mw4z&Kt*#W{f&#A^LQmo8V*Kowa;kFmi zkGQ};nL+8%zqy6;kh*VpnZFK1Ehr#PI1!<`N)8 z29Mib{=L9Lry#@KWl8$|^m5OMdte)YH07+Zn5ePbwxQN|k4l}}ky=d^dXfjCp&9^V z%x%$Oqhuwf=NUya?ItaB@V&3K&}|5Rk9c_U;1;vpy!KKOy?m$i0<#;aRj6$lEwiKAqz|q24TIBfA>*0djC+-2>1W&LLq!M3(CO;P zZz%rlS@s6q>-_HWZA zS%-mK(wqdoBt>muu>~_}IGtKX!9ZU{rz{f%!p9tcFzc^*(lmWlMQN0OoZvSJ zBJ~;`D282x@P6;ddr-X~DxEn%F=*LA)vbXIt5^G8$WmP_cXnS#R6U`)N?fNU$v~7K zkckkclqTG7t|pkRt@NFh2D2qJCM1nD(`!W$$+<%6G@+K^F1Vwi zPq|yb&{|XbFtzJG%4LznUO(AfRNsq-81X2K`H?a>U3fM}NtWOR94icv*_K}U(4ez^ z9m*@EAvJY3vhJcXF9r4d@BMz-?upMc~#h*dx6x=D@2L2Lq-g(v(iyh69Gu= zdILN#`a+L-D)P&-nJmXLg6c)H*6Tqdrr11dXc~V*xTIi&4v#x ziqBmC24BEjAH|c#PJCAD7Hg7YxDHfl{WFgF6{?eG0oJTON*yqr*>XH8#ZRb*f*Q`X zWV62_m4*Ghkh*;X)_26f;B5SP%Mgv~rdh^Lp(F;g#*6Z|N{Q_jF@_6%dOOof{ZdZu zR<1CgQ>!!K zX7?7w?~0(`{RFW6_Lv__XeAENF+mLC(d4n9=qVy#6wN+QFQKmPRh?_9rH=PImRQhX za3KK_;qxn!zC&gHw{`Ts6gk2(H3F*WCr(gBFs3DSMQJ{&IiM zGfDTNwdO}7gEt+#H|NBrhQAjs>!hpM#_M&bq8$5Gmu;COF*q%9WGRW}E&s;DUgtil}5R zS;n@7(H%laOti7Z&NL#RlTMoC+Fv?Oof$R z-ZKdoTMM9l`9Z>xk_gd|xqcXtTD*wqN|1n460x|-BL4Qq5~&jb+-i2mSVR5xyTg2F zkb$2~^xCfW+Q7#X-t~7reeMqhQPC7#%fI$G-!FM)%iL*nMn z=D&~-g8pVdNt0~gSi*1}U^x3E)Bn~;nRYH?onXc^7aYq)d#y#qyF=F7if}nOSNigj zO#$FKA^LvKP!XoAv$pCDBRfO>%v7Z#PmtY&OD^UP==H9Wy-!#laP;z;a%Q~JNnoXI zBEG#IySqCMc;pg4r!O63PD)#(%>Po?jR4q}&AsB&ANh3?yrn)V8ujJApo~<%MP3<> zN_!pgI0b>22tj7U8(5zl+7Rpt!UtaH1TLqi|`Xl%~lO z#c^`k1O}mw(pY`s^4TUgR|!@Xy)}wJ2Cun*L6eMkSUAE{q%L%_yrl z;L7J(pIwr?*kHbp-dGoD+a;lZ2`CW)!3V@b<1^x^&#q17!SknJITI}O1OaNX=!uW? zARu%R^fh5CcB!p9A?Sn7cOY7_1FyJO;5bV0$4j!X5SGVC&{2o`!I@JA{da;67_Cvk zjN0(%C6M4r(AR^W;1_-oN2V0ye{^ayffz#Aon|d1LsZfgHC7ik3Lus}I8X#O3w4$+ zyZ3R;t^IXbT){G-KxqfECj-1R&nhp^DqjcW)dGw6@iAhsBj-H}A@d5F+7mewsur#a zS@+L}_C@TXL{u{6&RyV)qQM4mEMf8V^%A8nIrJwx2u=fL$*0_4*?}piX_yvkRE3QnHfNXy_7R z{w81Cj!yW-i~n|FjpP`F5T-C;h)EvSykRKxr2V7^2Pl5s$FlEw&cL80e?WulIf|(n zVd`S`Cl(ET2aj#{8G7U#9R4l6K*IB^oKUfG8NFpTP}+${H3hCR;p{clHVsUsEiQ5d zYS7JzP4-p2qR{3ifdk|KXtc=@{F5_K=I#)wyGgaXh~W%=&V@q=jz6Q!3WqSmg2Ry~ z@#3j;q0=QCI7!Vr>j-N{|I(fdOP0+it3cEym$2f>w)UNM4&a^5KcrYNFLBPxCyTP2 zC8y*jckRp4!j-bZxCoF#!Kk=~l=%Ja*8(W#7Nh@h%qc@8ErAIz}PAN@b9w(E%jf5x_4swxYAT7CoVC>UHU1NAO3fE*l zNe{p;c5Juv6mSw?K@E!%>qH#K6f}|w!=+g{;+Xa;-xRKSWTY-O!hWQLBIKhra6|_B zRaRJEe#C+h;tqSZKiMDDsqfQA7(o@~iMp>VmQ&GJ5+N0mjtNpeu0-3lvXVae4~$;X4z)Lbz}?cP#gr`ZuGMvV|z_L@SDb{J*qaYImn$n%Ff<7 zn8?7fgY@feRmA`)~GN+VBYi7(%U66byJ+2&mB?r0Q8RNammynnenwS!n zxcm##Am*Q2K|x_;^jYI<{aC$Q!J&`Yxijio8vuM%YNRU=B5(yK+_hl}u+hVWN&zo32s-d#7D=odQCcY5r1 zNG!kwYs98t7G;9EMBGXcp0d5z{D^V3)lT3czoWhvvE_V(!`=(uyjq? z69Sp5@VHI|jIKbkhqN?m=w`wPJ%~``gHVJmoE*_!q!l4p5hy!~>NRV`GfFR&Ajf6I zh+C9smIIkt3>gkR!LWmqpMGtEgF|vR8E}zNJjUWw8@qrz?ETrRd3n=NTRXFO)f zbm$Z@a@G|p8$L2lWGrq&JM%ZhPJ+u8zpw(HhdI4I^!PxzHjJf*C|Rf}blM7@9l%11 z47MujEy8+~t9`3j31a^xfI0&E%@ zL7dBM=_bcH3c@z2t@p&v`vyMK4si6Lz_1@KIQ>UaXahCZ$SA2x_=h$07q&+Lc-exs zuQevE$tzd21i9jd98WiqeO;N-s#MZsJ@|`m!xQw?K=uv+k)sYG@Dy%R4^?t1CzdWn z_6F*j{EVnZrX(k=W!atW%|jwsz$}Rz>C@Z@x{|F7t*r>O8g$8qY$eNGJD|1!)#8!2 zw+8htXU=&mck>e*`bx(s5bl!x1EFs}!Onay39c3tYr-6aKV@;5zEW5dve~H$!ssXH z*o4W8n1X(=##7hDS(J;Kl2v$Ed~>s~p=#rSy1a1nFFdPt%A(E)U)6c_haYy#{cJ4a zw8m~reBpzm}+M}6pq7IM)+^G3>p2JHLKG+8^N6^<74kPQpQ z;o(Xwl6uy4h$^v3=~FYPsLI8sj5mgtOWnZ?vYx*bB71ftIiww|5|DrKSWe=G#-=Rw zK0obLJiemV-@3hhoyz@M!V`kY}n{}!aLw<=~$>1e2yrwEy z@unFbF)y{<`6q9z5-H=nOkK+iSv2O6W^7a5sMaP<;!_b*vk0Or;}h#aa@1ps3f7W8Uw)%s3Fo@8G)I6sWkB@UHJaTc z&%hWIK+1xTNc{m0hEZW@ zk5nrp;qcU>ymA<(70l*PSyxovEI~Kg&l96MG0KCh6Ytt}?WA`E%&DHhLEt}&ll_Q3k(Jx!@P!kcK=+dU(N)%rXRqudKWDI7tnKE+ zl&7LAbi`f$*HjeJEv$lP@G)!8I|+Q%Sg-hlRprYwrDYvLEr|WRCFKOgupLuAude+%Fu|L;o9amy_w|+coGP&I zm?#P8QtX#IX`^9^2Zm9oFU|88)SrkPBum|%9%Xi6@HFtDyMVsAM5asrR2-q$T`VXF z5XtgRV)6RMhA5_RNEnA^UlQ62fV`o(7ld2KS{oGvn^~@+U1zR&M9x#7HQ~#edpUYS zzr@;*^9zWs3c@ymax6LG0UBK&1lE-3hb(ejhOoHTey@V9N&_9_HevoIwAd@EvlLq= z)1Z?i3Z70gUdLB$Q>#ozmXT|?d&$aSV&Vu$gYKku54P? zSLHie6hbl6V{D6Zvv_eFJa-F|a1}7n z+#k**usU#Y^z{=L$pe++u!FLB&UKbR!^|*4Sh$+}n%=k?*7U*beue%X>;vqz< z7QdvUd2F1AdhdKIsfR@=bKtt_YrLc54}(7o{VqyhHj*@euZo?Uf~f z1NrxeFN{4x3RtsN5)m`XJK6>4k2@gDAZJu!bcA2LV@=|{olsAekfzzFYa^QF0HHEb0qOf`Hv4+`cX`MG zJ+H#m(DgWCti{$r+LA=ieN%j@y zwc@AVYxT=t9|a#`0Exg{nOP_NVF`Q2hQq&cfmP`A6rr%ag0h`RM*4^&>8ry)}0|F zpgO+?T2$n)-OaiLLdy0L`n03B6QeM2S)IDcml94DO zRS1NtH~BZp3nOc(*CZ?IWqiVFIhUt!X6>oiF=+&sLZ3>D=bcrY*_K?XrbQc%|MC4C zoq&d8j1lUlG@KYnpCL~+9=IUp(&EO&eytfvGaRrTVd~{RH%F2rpmQUU1JVTkeben< z;S?-}r4xmz%&!Mnjj6D zI=l`AASjp7k4zTxVgH`R;~`gsGY`RrUzMiRWk)c+m3^vcYg@Dpou}$~yxUi^I{7Z9 z0*{R*z#;@%lOB@LU!|+4DGQ0fZPTe`#pOcptQaGMq(o1{6hT-@UFZ0hlv)S&Z~+Ez zF9km7vemq5y;OFLnrlX2S)X;v1*!Udy42^Tx5VTRAyf^I#)?#^l?X*%}G z7s2@(@qY_5eyB9vPXri0idOjl0BU+xj^UGkM4`Jmw{jG~X#eqq;&x9FVF362_j+>( zgKO;%(;+>lw;mpt@F$D#9~I;DPXp-gB~lFF9;p8jl%~;P05AU6Y3sy-0n7;UKNeKu zhi@9Yp8}9@*c_st`b&cU-rc>$h5`Hs{C`?JnwO)j{|HcfQ2uWexij=XF4|Ha4B*56 z+InM!F@V|r>w+B-!vHq^@69R1)(Ch%eTN3i$?FFFc|20skBc`4Gn^L~F(**wryGDT zSPJ?~U}&PiH_#WQP_1T4;Q-jW$~0ev0uC0Qe*%7fJm53_T74kQIQ87lBP<=xhj~=R z#lsRLp5}aMp*_5}BuwmlfW5)$NKsn^^tyXo4$$6$-gT1RSb?Kn)d4v5sxF7=is$@L zkZ>GnZhFD*ZxDQfyRgtm3OM`%z#f32`uK+A?*beXn=-yhv3a5OknH4(MLX>KCGqC2 z7`_Z8%Rv*aop;Rc<40D-EbVzqBszqgxQW04ut>4GgN>$HDZ!12Jp^xNs@`f&oBlXv z?@Bl^c3A*5cXfHdoyhpvig$Qh@qSxAYsoVHMWz#n+lF*&upQ!BbkQ!mh$n!26Bi$f z!-%rO6;$9Mp{gN3FW6Qky6lr|9Z}5PixXwmKL*4&+3xhtFh!!P@A$x2VD}2Q?bb#2 zY~1P~Jh?{jv8G^6RZJ0t#uXI%eRlvkjA9svfXQ~U8GJ!rV_-BovW%q@KbY7Wf;U=B zSHHwfr=+BJ4876uOmqT&gACw+3@ETg^jMq1Uo9oX7>Mt1HW4Rjp{D(LsXqZ*L2Ju9o?610@uUy9z6h5la#b>TptIV9}eAz>Itho!k&$ zoV@ha<6Y^mRAEH=+AtmVSGbQ%@XoYlFxj(2HlcOKycV`T4T8N?D1-X?}V zIWZ5Dt*qoWsD@7WwFc7_s5$J>2w4Kin;W1FTII}QWM_#uvMfw6yn+i%SUR(_{adcK zIJvs{$edsugfn5JGANRw;}yVeCl2IYwTIG=( zF*$#BfH{bqmO^%-&sxQu8BbDFi)7J?Y^}{${TCKWh^m?zhlLWkvaf!IwHzxBhE1xb zlqUZic&r^JqI#~NpI+$NKUl@1Q3n_5;5v^z$a<)oPhBP#Q-w#Ahr9+ma zeYNmntI`P-cz*{NV7*!JJ1+iC%x*7iEUc(2snq#wo?&=9ImoxW|C=ZTTc5GYmmvzg z?8v^q*+XAO{pSV3G@fJF{rg`lw8epzHND)@3TVJ7atCMM2|Kb+(0M$>1a|nqePEpdBVz?`hw4<0fQUV{qp0*`uTL3}6kJo^4_)?dkPR64?Ljr}{9y2G2E?k7V8Z0E`Kon68-8zcTZ zL#vpaDw&xfM{O=*hpft@)ClPG2dip*u^UV_-3Y(6)4gJg+X&pt@D@RCm2osjQUGi7Zc^1~;9#wBxYJOj ztF9XPs7RIqi0%^kBsRxzg34mZDJ4x);P46OYX8|8Mkg2qP(TqpoqA!M!aA2LsUITb z?$voYtqKJV-$?By?Ia9|x8 z!b%Da2j}bq9B0_2E7N?71u^W7XTH0xOr{~F0%W%y?~+tg>+f;5NbPn6LTb`q();dT zynfG>&JG*ddb18Vd4%DnMd|%X-EO0`a(dbsvIw_HhCqk}=iF9(!O-6s8R(I^JszM@ z;9UN5!2`3MB&a??c?YXmbo&k?5Syxl7VZEgR(L1@fDyo8&Ppu=qTTZ=zhNO_%SyH1 z!|cFd33j0!(obr6l7X&bKrU{x%OINNz8vahM)Iq=!Tm_KOQ;eI>=4I{wnGT>Jz(Q?=_XVC>s`nVL$Hu5R=d20 z<^$J3k}+ZkrQSPJD=EjrW4u-gYh2VA*#%zWxi~nP8Ep?~7?WC6RkVP#b|`<8K%ZKM z3ux(k7?}o@Ms{z{O*Yt{W)y{aw4gK)je$=Fz>JtR9XXxeJQZL`i;&Jr9|7#1cq@#u zt(=zc%omls_|*j8wZt6Rm&d$y?{;k}rc&5k=;?MIP7ct?s3|Ig8x&^J_Vcuas9{N$ zDjgx*W#Oa|fzGNd4QSbUII+tks&+3P`yg4*-^f_~b;4TCYL%S7>gpvQD9IJ6XH4P` zu&d^pp0;_g9qI=TI#i=6N7h9juFO)8M2(tNm2o4VR68hQ5%0pt3|00d-|dqII8e?K zg@7u5s%no)PnIzES1G$xOgL8Hk#`|QM)(qNM;xWOHs!mJZbhq#VXCm;>{HVsJ=K0s zsknCG>B`1462L>eani(?fwaX=Xs9v(NKutZ<>Cx6dWFRz0u6~#ZEGv>MYL#@7Ji`} zB8bt4h>MLYYd1I+Z?Gi}I*ZXLYg@+C5*!q$k?WO~rfEZ!n5~ZR*C69MDLag&K5q1_ z+jFiVOEx!(d+SNX7MgCEy8}KgwdHJNwJR*~Usa&(g5@o-H0ip`s=Cl=)>m)HXs66vx6kYX!fYdoGCV$!04iveek6cV?3+viceUWt8RfjM zRM%Oq1^F2#=2^imt-9WDxX0FdlHh%nTRNw98n$5B%8#5qiDVcHtLrgZaqsJI3-?tMNAKTm!b%kSCzz zzKXLUCqfXtOwlGlbq7gvIsCEN-e7ggwnLrvUe$4DC;j34`S9rBE2%d#5~oH91WFG~ zZ=9ID!&B4pZ*CC^g#An5SusW(ivO_rg&<|QOHY{I4v;5eS*G{_i>Tca4_;Fc4Jy4O z;!cvYKu&qu)DabAJvw#h?o0iXB=p#G!$K6fmZe(|n(MAEh#8c+!r42VPX$7sIUU54w9aZ198ofLFF5#7b;xr`DrhhKLy0>enN+^(Vt#*M~rI4+vkmd_mWtS+VqCgS)_GxO{=bR0vsYH*Uk0ygxD14%XBo3f2iwgxj7vUBe(L!sD5 zilc4GJFInJlj0svNdJ-IfVJFjhel&N=c~N!fV!NuR@qpKk~+p&vYNGIylX08mw0z4 z+b{d$OZ+N8yt{JT!Z`MORr(ZTy{OaLJa)K8>s%=5p8j~=lR2VI{MOsqZ?33~vVu== zlA}J@ocp6_{0re>2$khq6qD=bkUb)M%TUq$Fn`-g-UyZZvDr*@2;$z_>^5w;LGS## zv4W9$lao-IkH}-L)leBb9-?ilwoDZ>eYgqEIa~<9R13E*10DI1FGJsz@g;@D+s5(0 zh7Jyt`MIPeH}HC(him;sd^IU~7cb8Jse7Nh+UwUcLXPWJ|1ZQ-cT8J0LhpPM71rpL zYwV!G#xxNU1#>V^x0S!x^f3Q4I1qo&bQ-k?kwnX1km4ulzidBDJ55(;2K;e>+Ue*^ zq;2&AoDlR3XdK&oe{bL(Gzeyks9PUGF^c{S({oK0}tNG4DY9OP5%TG14`yWnV zvLrNl_D<;X?|q~DdSfG=_O*Q^mOnNM5;9!?uJQk3NDiWGrp$K zBb+u@tOrr)k`Fde)|15xptqbr`RLU1X>cM_jHg?OP3jqN2Pm6tIo@|$jDqCATL zE!piEE!-T*H2b>y9m*z$(9-|dqj1eCQHC(7_u=*@lwX(AK_hp&qi*W7ZFn1oH7g?B zf(@7n-h)(h5^G;xK*DMkG!o!up8T^<4f$uO6Pn5dUt5bL$sUC{U(7?_Vb~XB-Gn}E&PKGRpXpY zB(st>%y{%{^gQ-1_S9^9{XSeI`m$qxwjzpxbJW(!!k?)2X-x!dj?ovJ(8}+4*uyPeP&<7zkwEy#-VI0B>W}vg`fTH8+Cqe`6|mI_bnj{Im*$u zaYtdV6%OJDA#H>3#~Pu3!vm@SAOJm0!TOl<`m9+DL|zcfh83c6!thae!Sn#rIi``{ zUHtlZlQpx9kn1WnX>#*mqAVv+Owbcq4`a`>iqli}+j|kn8q&#}h`FA;&RmdeJbm(> zKkHD<1i`vtLTU}6F?vE+b$0vYx^md^4e~Q#IO5?)er5g-VW*>nDHwnWK*-=d`BSyd;qx58@TN#)4}%>4b34}qDOqumg*9!OR}qdx=XFJM?_dT32(Ulw z#~*Q-;s33LYpCUNN76nAK=dN-6TBc6xSMPeJxns7!53pZ?MpX#3RHV?6u0Uim~dnS zPdd*B+x9i{1$C-;qBP%=K6Sq;Zq9RNrFAFN5>iYu91Mq*Nw9TWTJJ98`)%+w-i)r5 zD2=vl(BRMOyjlsLl?6&bzqg-fXWp~QXR(C77kXO53M3U}i#IO;mYAe26W*Dswfyh- zuRL@8oro)bMcX)0*!NYnMAaO6Ao5QvOE@BZ`aJGX@eVIL?6kiC8~icYA=|iK@kKu{ zsTAY2W^&OEn4j_IX1$wdZZH8aa3{Net_vKTa7TC1ANWvb8Wx)RsNTUK(&e`cGoWOq8w=y(g4O)T_og&*h+$G&Cn#X@U?y3oJR$yId_Dqp^$-m5Mm zzhVH!CMXyHR;!4H%7xzh;-XKLbz?ioHI2q4b+L^sWLi}Q=se{PncC>(AtCJbgO}1! zd#4ievxkBP4zKEA4eUce+${XcW?z|^hTB;c^7%_8!L-?YDMY^QcTJEQ^sc07$bs%M zk9fH*^bt6&0h#)24tl?}>+flR!FW9mOkPkeR#3epq=&q;i^M;T;R7+fpW*YkOYwql z@EzH`&(=i`C>Cb7XCGTKJ%*TQiS(-K&)%tk`z+ML>_?Ji6H7_ zm*@`}!evWT(khrzU_f!nkrV~= zW7%I-fS5?yT)`e4e03*YgJ}WHAbaK?`7Pcy&QLKf$45h0$QpT4Bq0>vi;s%c$7VxJ z&@1YVK?Ov|ZAeFag1$$%^UW7D`yLBNlCHkp2k_vd=d`z!jc1gt=xrB&Uv%#q@+W3W zhl0A6tYXJX0rdBg2=`f^4e7@g9(cvyjyM6ZfT+45PH0yj4eQ8dAU(^(T?e>rhz|Qi zTvSC%Syy)6b~BXeYqw4|jHE95Z`i$??poDvn|~^pCd{DL{t#J{PinzQq&Uq4xm=B( zu16aox!<}BFehNZr8_xfAOC^?)k&#NCUOEH7k_X}Y32@UTb)x-8DNPQg^Kabs$jonSmdG@O1o7X|2WtEE z>U&$dzX{!o4EN`>WBz?!F!G0C=h&)p0wSC91*e^C!=0*Z@zT&n3Ow--1n*MEiB0A^ zhKm^o+)J=Zn7_kLp{2&HXor(^M%|B1^8ZHMXOh}Z09Ek{R(&q83uX|ErcDv0xD9a< z!@tUp8_n&Q4kpaY@_xFWf~~D7^zvRHw6Dm?|I-x~l`J@!R(z`a$x@-MVkSZA3G?PlSswDqu@0N11 z)O=QtOh3@j7qi$E7ZH@D;1}cKf67;27gk8^Mc_ylqM;$9pLM zy>~p`a@f9l-pu*_x`G5Ec@Y*zO(%OndztN5NU9xO&<(a*vGL`5Q#~ngIuVF%o zSDbXR*>Uq0EFp!MRt|DQ+rcaqWEm;^^?|dIy2qZM7-AL4*fo{jhS8=YZdinIp8Mg2 zlDSf!^pOV}_GgMsl1NG9>;ph-SzP1H88WL2EEbT*=P(M|E(4bgS(+qQ$_;UwP`B-H z{+MeP@oZ2J)%}weEd-;0=35~$Dhbd#DYE>|2o#dGc_KA%?C8)#!fQvr5c2P}@YsPj zTSZ?*kXjk9z3=W!Mjr43_dT&Vp$zh&9!_XW4r4gt^aRxAwP@VM-T^@23LaA_sRs&i z`$S;=S*=(fJnd%M->PcnNUclF?=d6n=|hL0ZG`m0eY%@VGNmBrT_2DE8*w6)hA!Sl zny=>>x(+$24Kp9NSi6J_tXZ)U6uX5-fba)ElEQ_OhF~>S3XbPOPzNQ=8{|`)i_g#> z8}#kKxc4=-npGJ6XgT;t6qzb_Qd_p_2U&`faTf99OmBq1hnb`eIa22E=u5GmAkU7f z#GOl55Qoq+1yhCca({{gmzCR?`jJZMfJ!1&B2-IcSwtxA%ma)%vZp-bG}-i~Dy!5j zxQk2R)_CT#A(JDa(g#sg7{e0a&POSo;H6(!s(1B5LnG%oNdQLDLU{9Vol%<7naMkZ zm9!A?mX={~h;pj>i-lICdgJ-Yh4N(cyocr<)*EiR5h3dPcm&Cg`n}-1eT)wPe1_*N zx79Nw#tZuiB+xDCmu&0y4N1I! z(phO7L`dx=4bbbFn-hR6y`4cteXQ?kVoltiu78-Sg_7Sm};5A}tAmQ4#!#qhpD zhISI;N2a_nn4}%0J7l_4h-fvOCh1Ti7pVixO}SxCS0seQDAmcs;%dmKZ!Ky0+ij)x zH&PrKJL(;wmd};k6(ag+bPFHRxyv3b z9-gl|fuGpy(r>7%=m=`jYi7&Qpl`Uhas>*qbpXcZ{Wn6yD@h=QyxR9Cp;zr;_Q5M( z87&dJI8(Dn_Q5((@=u>F4>|?}?|#DLk3|N9)q0cr*}w+P3^DJJADdq&3Nb65vJ#Nm zZ94XUMuOkkbndWPyB>a;GQeWJ6U5zf+$aLiR(NK2h6Hd|zCI6-wz$L#KPc}1`Eay8B~JR&l2NwFRF@#B|e`fv3*B$!Aj zWPoGKpgUp^DZvQm$`U}-3%^58B3fdgpP_fXcD`ZH$!wEn?kT)T!8-Smxxb<}0Z7Nz zOvln`oN^y>58G-z1>3*kB($gcSAb{`1xoy1cQ3(teUmV6Hp(Lm=#HhHG`&U|@yA=w z@*h=vjt3PPFxoe}rL@@H_?+vWYo7W0p6h4->*rj7&z)pw5boPJ!eqswLRAUe zDM+BqmYEYj&Yx`U;>N>{nT#gzuDQ6;(z;YgYPrYFU3H*ru&x-bYk(&4C19Aq^#NB; z&*`F_DUbCpVWg+;w={^Q=>p@eD`Ys_Nfsw*%vglD6J zC7F`E+NFcZtdpA3WAG_^1tS@C#p+;^_o0CM${_?IBCq)#IGEgM73#u^H}y}4De9m> zOfu$G9_u5T9+P~3bEQT z`hkGl_!)Pw3~4D`S4DstheF5$Jt6T>c&53U6qt;J6_nTFiney)p>1bEmGio&Otfq5 zN~3gF8EyLXh125t66%dt$$F(p>jNM^`54Bp-|otJ;YfU#VnX8^8>g0gsGHytRgE2p*LRI4OO6xEMZ}`K=qYRHucXJa{8bv8!_+FTp}qAh5DO?^ zz;W*qChAu>M?8lq6e$RLlm$a}>Ft?hORT(DaS9ZzX+znH4Ph}Xn+ZvANd&$)bt|2I zBp%;zkY3*Hmb@b4WSZscw>sx?-So?b6Xdg

naIC^SSRxMa1mk1=O9eo{KPtH70^ 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 RmZ{d>y%kHW&J04<{{yr#87Ke% delta 365454 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

u$`_G(5lqlP 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%0DLMbcku(NUDDHmLuW@IeWh`rRQ_M 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�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%0ALNZ)X}k7UOc7dbSGd}|pH3mR9-62wzU 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 z%0D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 From c2f3311344538865957d199b4be14d3133ce9cff Mon Sep 17 00:00:00 2001 From: duckietm Date: Thu, 19 Mar 2026 16:17:47 +0100 Subject: [PATCH 10/12] =?UTF-8?q?=F0=9F=86=99=20Duplicate=20packet=20fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/eu/habbo/messages/incoming/Incoming.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Emulator/src/main/java/com/eu/habbo/messages/incoming/Incoming.java b/Emulator/src/main/java/com/eu/habbo/messages/incoming/Incoming.java index 5bdc6847..12c69575 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/incoming/Incoming.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/incoming/Incoming.java @@ -380,7 +380,7 @@ public class Incoming { public static final int UNKNOWN_SNOWSTORM_6000 = 6000; public static final int UNKNOWN_SNOWSTORM_6001 = 6001; - public static final int UNKNOWN_SNOWSTORM_6002 = 6002; + // public static final int UNKNOWN_SNOWSTORM_6002 = 6002; public static final int UNKNOWN_SNOWSTORM_6003 = 6003; public static final int UNKNOWN_SNOWSTORM_6004 = 6004; public static final int UNKNOWN_SNOWSTORM_6005 = 6005; From 5807303807f62e5b7f58e97f0a348c8089818162 Mon Sep 17 00:00:00 2001 From: duckietm Date: Fri, 20 Mar 2026 16:08:51 +0100 Subject: [PATCH 11/12] =?UTF-8?q?=F0=9F=86=99=20Stage=201=20reconnect?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/eu/habbo/Emulator.java | 2 + .../habbohotel/gameclients/GameClient.java | 20 ++- .../gameclients/GameClientManager.java | 16 ++ .../gameclients/SessionResumeManager.java | 137 +++++++++++++++ .../incoming/handshake/SecureLoginEvent.java | 165 ++++++++++++------ 5 files changed, 286 insertions(+), 54 deletions(-) create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/gameclients/SessionResumeManager.java diff --git a/Emulator/src/main/java/com/eu/habbo/Emulator.java b/Emulator/src/main/java/com/eu/habbo/Emulator.java index 455cb540..11f29086 100644 --- a/Emulator/src/main/java/com/eu/habbo/Emulator.java +++ b/Emulator/src/main/java/com/eu/habbo/Emulator.java @@ -7,6 +7,7 @@ import com.eu.habbo.core.*; import com.eu.habbo.core.consolecommands.ConsoleCommand; import com.eu.habbo.database.Database; import com.eu.habbo.habbohotel.GameEnvironment; +import com.eu.habbo.habbohotel.gameclients.SessionResumeManager; import com.eu.habbo.networking.gameserver.GameServer; import com.eu.habbo.networking.rconserver.RCONServer; import com.eu.habbo.plugin.PluginManager; @@ -319,6 +320,7 @@ public final class Emulator { if (Emulator.pluginManager != null) tryShutdown(() -> Emulator.pluginManager.fireEvent(new EmulatorStartShutdownEvent())); if (Emulator.rconServer != null) tryShutdown(() -> Emulator.rconServer.stop()); + tryShutdown(() -> SessionResumeManager.getInstance().disposeAll()); if (Emulator.gameEnvironment != null) tryShutdown(() -> Emulator.gameEnvironment.dispose()); if (Emulator.pluginManager != null) tryShutdown(() -> Emulator.pluginManager.fireEvent(new EmulatorStoppedEvent())); diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/gameclients/GameClient.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/gameclients/GameClient.java index 61c219cc..f526c15b 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/gameclients/GameClient.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/gameclients/GameClient.java @@ -26,6 +26,7 @@ public class GameClient { private Habbo habbo; private boolean handshakeFinished; private String machineId = ""; + private String ssoTicket = ""; public final ConcurrentHashMap incomingPacketCounter = new ConcurrentHashMap<>(25); public final ConcurrentHashMap, Long> messageTimestamps = new ConcurrentHashMap<>(); @@ -82,6 +83,14 @@ public class GameClient { this.machineId = machineId; } + public String getSsoTicket() { + return this.ssoTicket; + } + + public void setSsoTicket(String ssoTicket) { + this.ssoTicket = ssoTicket != null ? ssoTicket : ""; + } + public void sendResponse(MessageComposer composer) { this.sendResponse(composer.compose()); } @@ -145,8 +154,15 @@ public class GameClient { if (this.habbo != null) { if (this.habbo.isOnline()) { - this.habbo.getHabboInfo().setOnline(false); - this.habbo.disconnect(); + // Try to park the habbo in the grace period instead of immediate disconnect + boolean parked = SessionResumeManager.getInstance().parkHabbo(this.habbo, this.ssoTicket); + + if (!parked) { + // No grace period configured — immediate disconnect as before + this.habbo.getHabboInfo().setOnline(false); + this.habbo.disconnect(); + } + // If parked, do NOT call disconnect() — the habbo stays in the room } this.habbo = null; diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/gameclients/GameClientManager.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/gameclients/GameClientManager.java index 68366a0a..cd0602cb 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/gameclients/GameClientManager.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/gameclients/GameClientManager.java @@ -116,6 +116,22 @@ public class GameClientManager { } + /** + * Find an existing GameClient that authenticated with the given SSO ticket. + * Used to detect reconnections where the old connection hasn't been closed yet. + */ + public GameClient findClientBySsoTicket(String ssoTicket) { + if (ssoTicket == null || ssoTicket.isEmpty()) return null; + + for (GameClient client : this.clients.values()) { + if (ssoTicket.equals(client.getSsoTicket()) && client.getHabbo() != null) { + return client; + } + } + return null; + } + + public List getHabbosWithMachineId(String machineId) { List habbos = new ArrayList<>(); diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/gameclients/SessionResumeManager.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/gameclients/SessionResumeManager.java new file mode 100644 index 00000000..61fa6085 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/gameclients/SessionResumeManager.java @@ -0,0 +1,137 @@ +package com.eu.habbo.habbohotel.gameclients; + +import com.eu.habbo.Emulator; +import com.eu.habbo.habbohotel.users.Habbo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ScheduledFuture; + +public class SessionResumeManager { + + private static final Logger LOGGER = LoggerFactory.getLogger(SessionResumeManager.class); + + private static SessionResumeManager instance; + + private final ConcurrentHashMap ghostSessions = new ConcurrentHashMap<>(); + + public static SessionResumeManager getInstance() { + if (instance == null) { + instance = new SessionResumeManager(); + } + return instance; + } + + public int getGracePeriodSeconds() { + return Emulator.getConfig().getInt("session.reconnect.grace.seconds", 30); + } + + public boolean parkHabbo(Habbo habbo, String ssoTicket) { + int graceSeconds = getGracePeriodSeconds(); + if (graceSeconds <= 0) { + return false; + } + + int userId = habbo.getHabboInfo().getId(); + + GhostSession existing = ghostSessions.remove(userId); + if (existing != null && existing.disposeFuture != null) { + existing.disposeFuture.cancel(false); + } + + LOGGER.info("[SessionResume] Parking {} (id={}) for {}s grace period", + habbo.getHabboInfo().getUsername(), userId, graceSeconds); + + if (ssoTicket != null && !ssoTicket.isEmpty()) { + restoreSsoTicket(userId, ssoTicket); + } + + ScheduledFuture future = Emulator.getThreading().run(() -> { + GhostSession ghost = ghostSessions.remove(userId); + if (ghost != null) { + LOGGER.info("[SessionResume] Grace period expired for {} (id={}) - performing full disconnect", + ghost.habbo.getHabboInfo().getUsername(), userId); + performFullDisconnect(ghost.habbo); + } + }, graceSeconds * 1000); + + ghostSessions.put(userId, new GhostSession(habbo, ssoTicket, future)); + return true; + } + + public Habbo resumeSession(int userId) { + GhostSession ghost = ghostSessions.remove(userId); + if (ghost == null) { + return null; + } + + if (ghost.disposeFuture != null) { + ghost.disposeFuture.cancel(false); + } + + LOGGER.info("[SessionResume] Resuming session for {} (id={})", + ghost.habbo.getHabboInfo().getUsername(), userId); + + return ghost.habbo; + } + + public boolean hasGhostSession(int userId) { + return ghostSessions.containsKey(userId); + } + + public void disposeAll() { + for (GhostSession ghost : ghostSessions.values()) { + if (ghost.disposeFuture != null) { + ghost.disposeFuture.cancel(false); + } + performFullDisconnect(ghost.habbo); + } + ghostSessions.clear(); + } + + private void performFullDisconnect(Habbo habbo) { + try { + habbo.getHabboInfo().setOnline(false); + habbo.disconnect(); + } catch (Exception e) { + LOGGER.error("[SessionResume] Error during deferred disconnect", e); + } + clearSsoTicket(habbo.getHabboInfo().getId()); + } + + private void restoreSsoTicket(int userId, String ssoTicket) { + try (var connection = Emulator.getDatabase().getDataSource().getConnection(); + var statement = connection.prepareStatement("UPDATE users SET auth_ticket = ? WHERE id = ? LIMIT 1")) { + statement.setString(1, ssoTicket); + statement.setInt(2, userId); + statement.execute(); + LOGGER.info("[SessionResume] Restored SSO ticket for user {} during grace period", userId); + } catch (Exception e) { + LOGGER.error("[SessionResume] Failed to restore SSO ticket for user " + userId, e); + } + } + + private void clearSsoTicket(int userId) { + try (var connection = Emulator.getDatabase().getDataSource().getConnection(); + var statement = connection.prepareStatement("UPDATE users SET auth_ticket = ? WHERE id = ? LIMIT 1")) { + statement.setString(1, ""); + statement.setInt(2, userId); + statement.execute(); + } catch (Exception e) { + LOGGER.error("[SessionResume] Failed to clear SSO ticket for user " + userId, e); + } + } + + private static class GhostSession { + final Habbo habbo; + final String ssoTicket; + final ScheduledFuture disposeFuture; + + GhostSession(Habbo habbo, String ssoTicket, ScheduledFuture disposeFuture) { + this.habbo = habbo; + this.ssoTicket = ssoTicket; + this.disposeFuture = disposeFuture; + } + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/messages/incoming/handshake/SecureLoginEvent.java b/Emulator/src/main/java/com/eu/habbo/messages/incoming/handshake/SecureLoginEvent.java index 00b469ba..e3ae9244 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/incoming/handshake/SecureLoginEvent.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/incoming/handshake/SecureLoginEvent.java @@ -1,11 +1,14 @@ package com.eu.habbo.messages.incoming.handshake; import com.eu.habbo.Emulator; +import com.eu.habbo.habbohotel.gameclients.GameClient; +import com.eu.habbo.habbohotel.gameclients.SessionResumeManager; import com.eu.habbo.habbohotel.messenger.Messenger; import com.eu.habbo.habbohotel.modtool.ModToolSanctionItem; import com.eu.habbo.habbohotel.modtool.ModToolSanctions; import com.eu.habbo.habbohotel.navigation.NavigatorSavedSearch; import com.eu.habbo.habbohotel.permissions.Permission; +import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomManager; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboManager; @@ -81,31 +84,83 @@ public class SecureLoginEvent extends MessageHandler { } if (this.client.getHabbo() == null) { - Habbo habbo = Emulator.getGameEnvironment().getHabboManager().loadHabbo(sso); + this.client.setSsoTicket(sso); + + GameClient existingClient = Emulator.getGameServer().getGameClientManager().findClientBySsoTicket(sso); + if (existingClient != null && existingClient != this.client) { + LOGGER.info("[SessionResume] Found existing client with same SSO ticket — disposing old connection to trigger parking"); + Emulator.getGameServer().getGameClientManager().disposeClient(existingClient); + } + + int lookupUserId = 0; + try (java.sql.Connection conn = Emulator.getDatabase().getDataSource().getConnection(); + java.sql.PreparedStatement stmt = conn.prepareStatement("SELECT id FROM users WHERE auth_ticket = ? LIMIT 1")) { + stmt.setString(1, sso); + try (java.sql.ResultSet rs = stmt.executeQuery()) { + if (rs.next()) { + lookupUserId = rs.getInt("id"); + } + } + } catch (Exception e) { + LOGGER.error("Caught exception looking up user for session resume", e); + } + + Habbo habbo = null; + boolean isSessionResume = false; + + if (lookupUserId > 0) { + habbo = SessionResumeManager.getInstance().resumeSession(lookupUserId); + } + if (habbo != null) { - try { - habbo.setClient(this.client); - this.client.setHabbo(habbo); - if(!this.client.getHabbo().connect()) { + isSessionResume = true; + LOGGER.info("[SessionResume] Resuming session for {} (id={})", + habbo.getHabboInfo().getUsername(), habbo.getHabboInfo().getId()); + + habbo.setClient(this.client); + this.client.setHabbo(habbo); + this.client.setMachineId(habbo.getHabboInfo().getMachineID()); + + if (!Emulator.debugging) { + try (java.sql.Connection conn = Emulator.getDatabase().getDataSource().getConnection(); + java.sql.PreparedStatement stmt = conn.prepareStatement("UPDATE users SET auth_ticket = ? WHERE id = ? LIMIT 1")) { + stmt.setString(1, ""); + stmt.setInt(2, habbo.getHabboInfo().getId()); + stmt.execute(); + } catch (Exception e) { + LOGGER.error("Failed to clear SSO ticket after session resume", e); + } + } + } else { + habbo = Emulator.getGameEnvironment().getHabboManager().loadHabbo(sso); + } + + if (habbo != null) { + if (!isSessionResume) { + try { + habbo.setClient(this.client); + this.client.setHabbo(habbo); + if(!this.client.getHabbo().connect()) { + Emulator.getGameServer().getGameClientManager().disposeClient(this.client); + return; + } + + if (this.client.getHabbo().getHabboInfo() == null) { + Emulator.getGameServer().getGameClientManager().disposeClient(this.client); + return; + } + + if (this.client.getHabbo().getHabboInfo().getRank() == null) { + throw new NullPointerException(habbo.getHabboInfo().getUsername() + " has a NON EXISTING RANK!"); + } + + Emulator.getThreading().run(habbo); + Emulator.getGameEnvironment().getHabboManager().addHabbo(habbo); + } catch (Exception e) { + LOGGER.error("Caught exception", e); Emulator.getGameServer().getGameClientManager().disposeClient(this.client); return; } - - if (this.client.getHabbo().getHabboInfo() == null) { - Emulator.getGameServer().getGameClientManager().disposeClient(this.client); - return; - } - - if (this.client.getHabbo().getHabboInfo().getRank() == null) { - throw new NullPointerException(habbo.getHabboInfo().getUsername() + " has a NON EXISTING RANK!"); - } - - Emulator.getThreading().run(habbo); - Emulator.getGameEnvironment().getHabboManager().addHabbo(habbo); - } catch (Exception e) { - LOGGER.error("Caught exception", e); - Emulator.getGameServer().getGameClientManager().disposeClient(this.client); - return; } if(ClothingValidationManager.VALIDATE_ON_LOGIN) { @@ -121,7 +176,13 @@ public class SecureLoginEvent extends MessageHandler { int roomIdToEnter = 0; - if (!this.client.getHabbo().getHabboStats().nux || Emulator.getConfig().getBoolean("retro.style.homeroom") && this.client.getHabbo().getHabboInfo().getHomeRoom() != 0) + if (isSessionResume) { + Room currentRoom = habbo.getHabboInfo().getCurrentRoom(); + if (currentRoom != null) { + LOGGER.info("[SessionResume] {} is still in room {} — client will resume in-place", + habbo.getHabboInfo().getUsername(), currentRoom.getId()); + } + } else if (!this.client.getHabbo().getHabboStats().nux || Emulator.getConfig().getBoolean("retro.style.homeroom") && this.client.getHabbo().getHabboInfo().getHomeRoom() != 0) roomIdToEnter = this.client.getHabbo().getHabboInfo().getHomeRoom(); else if (!this.client.getHabbo().getHabboStats().nux || Emulator.getConfig().getBoolean("retro.style.homeroom") && RoomManager.HOME_ROOM_ID > 0) roomIdToEnter = RoomManager.HOME_ROOM_ID; @@ -152,8 +213,6 @@ public class SecureLoginEvent extends MessageHandler { this.client.sendResponses(messages); - //Hardcoded - //this.client.sendResponse(new ForumsTestComposer()); this.client.sendResponse(new InventoryAchievementsComposer()); ModToolSanctions modToolSanctions = Emulator.getGameEnvironment().getModToolSanctions(); @@ -189,42 +248,44 @@ public class SecureLoginEvent extends MessageHandler { } } - UserLoginEvent userLoginEvent = new UserLoginEvent(habbo, this.client.getHabbo().getHabboInfo().getIpLogin()); - Emulator.getPluginManager().fireEvent(userLoginEvent); + if (!isSessionResume) { + UserLoginEvent userLoginEvent = new UserLoginEvent(habbo, this.client.getHabbo().getHabboInfo().getIpLogin()); + Emulator.getPluginManager().fireEvent(userLoginEvent); - if(userLoginEvent.isCancelled()) { - Emulator.getGameServer().getGameClientManager().disposeClient(this.client); - return; - } + if(userLoginEvent.isCancelled()) { + Emulator.getGameServer().getGameClientManager().disposeClient(this.client); + return; + } - if (Emulator.getConfig().getBoolean("hotel.welcome.alert.enabled")) { - final Habbo finalHabbo = habbo; - Emulator.getThreading().run(() -> { - if (Emulator.getConfig().getBoolean("hotel.welcome.alert.oldstyle")) { - SecureLoginEvent.this.client.sendResponse(new MessagesForYouComposer(HabboManager.WELCOME_MESSAGE.replace("%username%", finalHabbo.getHabboInfo().getUsername()).replace("%user%", finalHabbo.getHabboInfo().getUsername()).split("
"))); - } else { - SecureLoginEvent.this.client.sendResponse(new GenericAlertComposer(HabboManager.WELCOME_MESSAGE.replace("%username%", finalHabbo.getHabboInfo().getUsername()).replace("%user%", finalHabbo.getHabboInfo().getUsername()))); - } - }, Emulator.getConfig().getInt("hotel.welcome.alert.delay", 5000)); - } + if (Emulator.getConfig().getBoolean("hotel.welcome.alert.enabled")) { + final Habbo finalHabbo = habbo; + Emulator.getThreading().run(() -> { + if (Emulator.getConfig().getBoolean("hotel.welcome.alert.oldstyle")) { + SecureLoginEvent.this.client.sendResponse(new MessagesForYouComposer(HabboManager.WELCOME_MESSAGE.replace("%username%", finalHabbo.getHabboInfo().getUsername()).replace("%user%", finalHabbo.getHabboInfo().getUsername()).split("
"))); + } else { + SecureLoginEvent.this.client.sendResponse(new GenericAlertComposer(HabboManager.WELCOME_MESSAGE.replace("%username%", finalHabbo.getHabboInfo().getUsername()).replace("%user%", finalHabbo.getHabboInfo().getUsername()))); + } + }, Emulator.getConfig().getInt("hotel.welcome.alert.delay", 5000)); + } - if(SubscriptionHabboClub.HC_PAYDAY_ENABLED) { - SubscriptionHabboClub.processUnclaimed(habbo); - } + if(SubscriptionHabboClub.HC_PAYDAY_ENABLED) { + SubscriptionHabboClub.processUnclaimed(habbo); + } - SubscriptionHabboClub.processClubBadge(habbo); + SubscriptionHabboClub.processClubBadge(habbo); - Messenger.checkFriendSizeProgress(habbo); + Messenger.checkFriendSizeProgress(habbo); - if (!habbo.getHabboStats().hasGottenDefaultSavedSearches) { - habbo.getHabboStats().hasGottenDefaultSavedSearches = true; - Emulator.getThreading().run(habbo.getHabboStats()); + if (!habbo.getHabboStats().hasGottenDefaultSavedSearches) { + habbo.getHabboStats().hasGottenDefaultSavedSearches = true; + Emulator.getThreading().run(habbo.getHabboStats()); - habbo.getHabboInfo().addSavedSearch(new NavigatorSavedSearch("official-root", "")); - habbo.getHabboInfo().addSavedSearch(new NavigatorSavedSearch("my", "")); - habbo.getHabboInfo().addSavedSearch(new NavigatorSavedSearch("favorites", "")); + habbo.getHabboInfo().addSavedSearch(new NavigatorSavedSearch("official-root", "")); + habbo.getHabboInfo().addSavedSearch(new NavigatorSavedSearch("my", "")); + habbo.getHabboInfo().addSavedSearch(new NavigatorSavedSearch("favorites", "")); - this.client.sendResponse(new NewNavigatorSavedSearchesComposer(this.client.getHabbo().getHabboInfo().getSavedSearches())); + this.client.sendResponse(new NewNavigatorSavedSearchesComposer(this.client.getHabbo().getHabboInfo().getSavedSearches())); + } } } else { Emulator.getGameServer().getGameClientManager().disposeClient(this.client); From aefc1e787b4c3bbba53b7004ebc988c7e05c381e Mon Sep 17 00:00:00 2001 From: duckietm Date: Fri, 20 Mar 2026 17:11:09 +0100 Subject: [PATCH 12/12] =?UTF-8?q?=F0=9F=86=99=20Stage=202=20reconnect?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gameclients/SessionResumeManager.java | 36 +++++++++++ .../habbo/habbohotel/rooms/RoomManager.java | 24 ++++++-- .../incoming/handshake/SecureLoginEvent.java | 21 ++++++- .../incoming/rooms/RequestRoomLoadEvent.java | 59 ++++++++++++++++++- 4 files changed, 131 insertions(+), 9 deletions(-) diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/gameclients/SessionResumeManager.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/gameclients/SessionResumeManager.java index 61fa6085..f2724578 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/gameclients/SessionResumeManager.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/gameclients/SessionResumeManager.java @@ -8,6 +8,16 @@ import org.slf4j.LoggerFactory; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledFuture; +/** + * Manages a grace period for disconnected users. Instead of immediately + * disposing a Habbo when their WebSocket drops, the Habbo is held in + * a "ghost" state for a configurable number of seconds. If the same + * user reconnects (via SSO ticket) within the grace window, their + * existing Habbo object is resumed on the new connection — keeping + * them in their room, preserving inventory state, etc. + * + * Config key: session.reconnect.grace.seconds (default: 30) + */ public class SessionResumeManager { private static final Logger LOGGER = LoggerFactory.getLogger(SessionResumeManager.class); @@ -27,6 +37,12 @@ public class SessionResumeManager { return Emulator.getConfig().getInt("session.reconnect.grace.seconds", 30); } + /** + * Park a disconnected Habbo in ghost mode. Their room presence is + * preserved, but the old GameClient channel is closed. + * + * @return true if the habbo was parked (grace period > 0), false if immediate dispose should happen + */ public boolean parkHabbo(Habbo habbo, String ssoTicket) { int graceSeconds = getGracePeriodSeconds(); if (graceSeconds <= 0) { @@ -35,6 +51,7 @@ public class SessionResumeManager { int userId = habbo.getHabboInfo().getId(); + // Cancel any existing ghost session for this user GhostSession existing = ghostSessions.remove(userId); if (existing != null && existing.disposeFuture != null) { existing.disposeFuture.cancel(false); @@ -43,10 +60,12 @@ public class SessionResumeManager { LOGGER.info("[SessionResume] Parking {} (id={}) for {}s grace period", habbo.getHabboInfo().getUsername(), userId, graceSeconds); + // Restore the SSO ticket so the client can reconnect with the same ticket if (ssoTicket != null && !ssoTicket.isEmpty()) { restoreSsoTicket(userId, ssoTicket); } + // Schedule the final disconnect after the grace period ScheduledFuture future = Emulator.getThreading().run(() -> { GhostSession ghost = ghostSessions.remove(userId); if (ghost != null) { @@ -60,12 +79,18 @@ public class SessionResumeManager { return true; } + /** + * Try to resume a ghost session for the given user ID. + * + * @return the parked Habbo if found within grace period, null otherwise + */ public Habbo resumeSession(int userId) { GhostSession ghost = ghostSessions.remove(userId); if (ghost == null) { return null; } + // Cancel the scheduled dispose if (ghost.disposeFuture != null) { ghost.disposeFuture.cancel(false); } @@ -76,10 +101,16 @@ public class SessionResumeManager { return ghost.habbo; } + /** + * Check if a user has a ghost session (is in grace period). + */ public boolean hasGhostSession(int userId) { return ghostSessions.containsKey(userId); } + /** + * Immediately expire all ghost sessions (e.g. on emulator shutdown). + */ public void disposeAll() { for (GhostSession ghost : ghostSessions.values()) { if (ghost.disposeFuture != null) { @@ -90,6 +121,9 @@ public class SessionResumeManager { ghostSessions.clear(); } + /** + * Perform the actual full disconnect that normally happens in Habbo.disconnect(). + */ private void performFullDisconnect(Habbo habbo) { try { habbo.getHabboInfo().setOnline(false); @@ -97,6 +131,8 @@ public class SessionResumeManager { } catch (Exception e) { LOGGER.error("[SessionResume] Error during deferred disconnect", e); } + + // Clear the SSO ticket now that the grace period is truly over clearSsoTicket(habbo.getHabboInfo().getId()); } diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/RoomManager.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/RoomManager.java index 0b652170..6348ca40 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/RoomManager.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/RoomManager.java @@ -292,7 +292,7 @@ public class RoomManager { /** * Loads a room, optionally loading its data. * If the room is already being loaded in the background, this will wait for that to complete. - * + * * @param id The room ID * @param loadData Whether to load room data (items, bots, pets, etc.) * @return The loaded room, or null if not found @@ -499,14 +499,18 @@ public class RoomManager { } public void enterRoom(Habbo habbo, int roomId, String password) { - this.enterRoom(habbo, roomId, password, false, null); + this.enterRoom(habbo, roomId, password, false, null, false); } public void enterRoom(Habbo habbo, int roomId, String password, boolean overrideChecks) { - this.enterRoom(habbo, roomId, password, overrideChecks, null); + this.enterRoom(habbo, roomId, password, overrideChecks, null, false); } public void enterRoom(Habbo habbo, int roomId, String password, boolean overrideChecks, RoomTile doorLocation) { + this.enterRoom(habbo, roomId, password, overrideChecks, doorLocation, false); + } + + public void enterRoom(Habbo habbo, int roomId, String password, boolean overrideChecks, RoomTile doorLocation, boolean isReconnectSpawn) { Room room = this.loadRoom(roomId, true); if (room == null) @@ -547,7 +551,7 @@ public class RoomManager { room.hasRights(habbo) || (room.getState().equals(RoomState.INVISIBLE) && room.hasRights(habbo)) || (room.hasGuild() && room.getGuildRightLevel(habbo).isGreaterThan(RoomRightLevels.GUILD_RIGHTS))) { - this.openRoom(habbo, room, doorLocation); + this.openRoom(habbo, room, doorLocation, isReconnectSpawn); } else if (room.getState() == RoomState.LOCKED) { boolean rightsFound = false; @@ -572,7 +576,7 @@ public class RoomManager { room.addToQueue(habbo); } else if (room.getState() == RoomState.PASSWORD) { if (room.getPassword().equalsIgnoreCase(password)) - this.openRoom(habbo, room, doorLocation); + this.openRoom(habbo, room, doorLocation, isReconnectSpawn); else { habbo.getClient().sendResponse(new GenericErrorMessagesComposer(GenericErrorMessagesComposer.WRONG_PASSWORD_USED)); habbo.getClient().sendResponse(new HotelViewComposer()); @@ -585,6 +589,10 @@ public class RoomManager { } void openRoom(Habbo habbo, Room room, RoomTile doorLocation) { + this.openRoom(habbo, room, doorLocation, false); + } + + void openRoom(Habbo habbo, Room room, RoomTile doorLocation, boolean isReconnectSpawn) { if (room == null || room.getLayout() == null) return; @@ -623,7 +631,13 @@ public class RoomManager { if (doorLocation == null) { habbo.getRoomUnit().setBodyRotation(RoomUserRotation.values()[room.getLayout().getDoorDirection()]); habbo.getRoomUnit().setHeadRotation(RoomUserRotation.values()[room.getLayout().getDoorDirection()]); + } else if (isReconnectSpawn) { + // Reconnect spawn: place at tile but keep normal room behavior + // (user can still leave by door, no teleport flags) + habbo.getRoomUnit().setBodyRotation(RoomUserRotation.values()[room.getLayout().getDoorDirection()]); + habbo.getRoomUnit().setHeadRotation(RoomUserRotation.values()[room.getLayout().getDoorDirection()]); } else { + // Furniture teleport spawn habbo.getRoomUnit().setCanLeaveRoomByDoor(false); habbo.getRoomUnit().isTeleporting = true; HabboItem topItem = room.getTopItemAt(doorLocation.x, doorLocation.y); diff --git a/Emulator/src/main/java/com/eu/habbo/messages/incoming/handshake/SecureLoginEvent.java b/Emulator/src/main/java/com/eu/habbo/messages/incoming/handshake/SecureLoginEvent.java index e3ae9244..f2afd72c 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/incoming/handshake/SecureLoginEvent.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/incoming/handshake/SecureLoginEvent.java @@ -1,9 +1,9 @@ package com.eu.habbo.messages.incoming.handshake; import com.eu.habbo.Emulator; +import com.eu.habbo.habbohotel.messenger.Messenger; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.gameclients.SessionResumeManager; -import com.eu.habbo.habbohotel.messenger.Messenger; import com.eu.habbo.habbohotel.modtool.ModToolSanctionItem; import com.eu.habbo.habbohotel.modtool.ModToolSanctions; import com.eu.habbo.habbohotel.navigation.NavigatorSavedSearch; @@ -84,14 +84,21 @@ public class SecureLoginEvent extends MessageHandler { } if (this.client.getHabbo() == null) { + // Store SSO ticket on client for grace period tracking this.client.setSsoTicket(sso); + // Race condition fix: if the old WebSocket connection is still alive on the + // server when the client reconnects, the SSO ticket won't be in the DB yet + // (it was cleared on first login, and parkHabbo hasn't run because the old + // channel hasn't closed). Find the old client by SSO ticket and force-dispose + // it, which parks the habbo and restores the ticket to the DB. GameClient existingClient = Emulator.getGameServer().getGameClientManager().findClientBySsoTicket(sso); if (existingClient != null && existingClient != this.client) { LOGGER.info("[SessionResume] Found existing client with same SSO ticket — disposing old connection to trigger parking"); Emulator.getGameServer().getGameClientManager().disposeClient(existingClient); } + // First, look up the user ID to check for ghost sessions int lookupUserId = 0; try (java.sql.Connection conn = Emulator.getDatabase().getDataSource().getConnection(); java.sql.PreparedStatement stmt = conn.prepareStatement("SELECT id FROM users WHERE auth_ticket = ? LIMIT 1")) { @@ -105,6 +112,7 @@ public class SecureLoginEvent extends MessageHandler { LOGGER.error("Caught exception looking up user for session resume", e); } + // Check if this user has a ghost session (disconnected within grace period) Habbo habbo = null; boolean isSessionResume = false; @@ -113,6 +121,7 @@ public class SecureLoginEvent extends MessageHandler { } if (habbo != null) { + // Session resume — reattach the existing Habbo to the new client isSessionResume = true; LOGGER.info("[SessionResume] Resuming session for {} (id={})", habbo.getHabboInfo().getUsername(), habbo.getHabboInfo().getId()); @@ -121,6 +130,7 @@ public class SecureLoginEvent extends MessageHandler { this.client.setHabbo(habbo); this.client.setMachineId(habbo.getHabboInfo().getMachineID()); + // Clear the SSO ticket now that session is resumed (prevent reuse) if (!Emulator.debugging) { try (java.sql.Connection conn = Emulator.getDatabase().getDataSource().getConnection(); java.sql.PreparedStatement stmt = conn.prepareStatement("UPDATE users SET auth_ticket = ? WHERE id = ? LIMIT 1")) { @@ -132,6 +142,7 @@ public class SecureLoginEvent extends MessageHandler { } } } else { + // Normal login — load from database habbo = Emulator.getGameEnvironment().getHabboManager().loadHabbo(sso); } @@ -177,6 +188,11 @@ public class SecureLoginEvent extends MessageHandler { int roomIdToEnter = 0; if (isSessionResume) { + // On session resume, DON'T set roomIdToEnter. The client keeps its + // existing room view alive and the habbo is already in the room on + // the server. Setting roomIdToEnter = 0 prevents UserHomeRoomComposer + // from triggering a full room re-entry on the client (which would + // tear down and rebuild the room view). Room currentRoom = habbo.getHabboInfo().getCurrentRoom(); if (currentRoom != null) { LOGGER.info("[SessionResume] {} is still in room {} — client will resume in-place", @@ -213,6 +229,8 @@ public class SecureLoginEvent extends MessageHandler { this.client.sendResponses(messages); + //Hardcoded + //this.client.sendResponse(new ForumsTestComposer()); this.client.sendResponse(new InventoryAchievementsComposer()); ModToolSanctions modToolSanctions = Emulator.getGameEnvironment().getModToolSanctions(); @@ -248,6 +266,7 @@ public class SecureLoginEvent extends MessageHandler { } } + // Skip login-only events on session resume (welcome alerts, login events, etc.) if (!isSessionResume) { UserLoginEvent userLoginEvent = new UserLoginEvent(habbo, this.client.getHabbo().getHabboInfo().getIpLogin()); Emulator.getPluginManager().fireEvent(userLoginEvent); diff --git a/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/RequestRoomLoadEvent.java b/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/RequestRoomLoadEvent.java index b5cfffa9..45e2cf47 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/RequestRoomLoadEvent.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/RequestRoomLoadEvent.java @@ -2,18 +2,38 @@ package com.eu.habbo.messages.incoming.rooms; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomTile; import com.eu.habbo.messages.incoming.MessageHandler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class RequestRoomLoadEvent extends MessageHandler { + private static final Logger LOGGER = LoggerFactory.getLogger(RequestRoomLoadEvent.class); + @Override public void handle() throws Exception { int roomId = this.packet.readInt(); String password = this.packet.readString(); + // Optional spawn coordinates from the client (for future reconnection support). + int spawnX = -1; + int spawnY = -1; + + try { + int remaining = this.packet.getBuffer().readableBytes(); + if (remaining >= 8) { + spawnX = this.packet.readInt(); + spawnY = this.packet.readInt(); + } + } catch (Exception e) { + spawnX = -1; + spawnY = -1; + } + // Reset stale loadingRoom if timestamp has expired (indicates failed/stuck load) - if (this.client.getHabbo().getHabboInfo().getLoadingRoom() != 0 - && this.client.getHabbo().getHabboStats().roomEnterTimestamp + 5000 < System.currentTimeMillis()) { + if (this.client.getHabbo().getHabboInfo().getLoadingRoom() != 0 + && this.client.getHabbo().getHabboStats().roomEnterTimestamp + 5000 < System.currentTimeMillis()) { this.client.getHabbo().getHabboInfo().setLoadingRoom(0); } @@ -30,6 +50,18 @@ public class RequestRoomLoadEvent extends MessageHandler { Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); if (room != null) { + // If re-entering the same room (session resume / reconnect), capture + // the user's current position before removal so we can respawn there. + if (room.getId() == roomId && spawnX < 0 && spawnY < 0 + && this.client.getHabbo().getRoomUnit() != null + && this.client.getHabbo().getRoomUnit().getCurrentLocation() != null) { + RoomTile currentLoc = this.client.getHabbo().getRoomUnit().getCurrentLocation(); + spawnX = currentLoc.x; + spawnY = currentLoc.y; + LOGGER.info("[RequestRoomLoadEvent] Re-entering same room {} — preserving position ({}, {})", + roomId, spawnX, spawnY); + } + Emulator.getGameEnvironment().getRoomManager().logExit(this.client.getHabbo()); room.removeHabbo(this.client.getHabbo(), true); @@ -41,7 +73,28 @@ public class RequestRoomLoadEvent extends MessageHandler { this.client.getHabbo().getRoomUnit().isTeleporting = false; } - Emulator.getGameEnvironment().getRoomManager().enterRoom(this.client.getHabbo(), roomId, password); + // Resolve spawn tile from coordinates (either from client or from saved position above) + RoomTile spawnTile = null; + + if (spawnX >= 0 && spawnY >= 0) { + Room targetRoom = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId); + if (targetRoom == null) { + targetRoom = Emulator.getGameEnvironment().getRoomManager().loadRoom(roomId); + } + if (targetRoom != null && targetRoom.getLayout() != null) { + RoomTile tile = targetRoom.getLayout().getTile((short) spawnX, (short) spawnY); + if (tile != null && tile.isWalkable()) { + spawnTile = tile; + } + } + } + + boolean isReconnect = spawnTile != null; + LOGGER.debug("[RequestRoomLoadEvent] Entering room {} (spawnTile={}, isReconnect={})", + roomId, + spawnTile != null ? "(" + spawnTile.x + "," + spawnTile.y + ")" : "door", + isReconnect); + Emulator.getGameEnvironment().getRoomManager().enterRoom(this.client.getHabbo(), roomId, password, false, spawnTile, isReconnect); } } }