From dfffdfcf8cd69592a4601d4db0612c3b39fccc76 Mon Sep 17 00:00:00 2001 From: BetaSteward Date: Tue, 10 Jan 2012 21:29:53 -0500 Subject: [PATCH] latest monte carlo ai - has a memory leak --- .../src/mage/player/ai/ComputerPlayer6.java | 23 +- .../src/mage/player/ai/ComputerPlayer7.java | 20 +- .../src/mage/player/ai/SimulatedPlayer2.java | 9 +- .../java/mage/player/ai/ComputerPlayer.java | 31 ++- .../mage/player/ai/ComputerPlayerMCTS.java | 162 +++++++++---- .../src/mage/player/ai/MCTSExecutor.java | 23 +- .../src/mage/player/ai/MCTSNode.java | 223 +++++++++++++----- .../src/mage/player/ai/MCTSPlayer.java | 3 +- .../mage/player/ai/SimulatedPlayerMCTS.java | 41 +++- .../src/mage/player/ai/ComputerPlayer2.java | 15 +- .../src/mage/player/ai/ComputerPlayer3.java | 20 +- .../src/mage/player/ai/SimulatedPlayer.java | 9 +- .../src/mage/player/human/HumanPlayer.java | 8 +- Mage.Server/plugins/mage-player-ai-ma.jar | Bin 50296 -> 50253 bytes Mage.Server/plugins/mage-player-ai.jar | Bin 54095 -> 54513 bytes Mage.Server/plugins/mage-player-aimcts.jar | Bin 24352 -> 27235 bytes Mage.Server/plugins/mage-player-aiminimax.jar | Bin 39808 -> 39797 bytes Mage.Server/plugins/mage-player-human.jar | Bin 13193 -> 13168 bytes .../sets/newphyrexia/PhyrexianMetamorph.java | 59 ++--- .../common/DiesTriggeredAbility.java | 24 +- .../mage/abilities/common/PassAbility.java | 1 + Mage/src/mage/game/GameImpl.java | 18 +- Mage/src/mage/game/GameState.java | 86 ++++++- Mage/src/mage/game/combat/Combat.java | 34 ++- Mage/src/mage/game/combat/CombatGroup.java | 30 +-- .../mage/game/permanent/PermanentCard.java | 2 +- .../mage/game/permanent/PermanentImpl.java | 3 + Mage/src/mage/game/stack/Spell.java | 8 +- .../mage/game/turn/DeclareAttackersStep.java | 6 + .../mage/game/turn/DeclareBlockersStep.java | 14 +- Mage/src/mage/game/turn/Phase.java | 17 +- Mage/src/mage/game/turn/Step.java | 4 + Mage/src/mage/game/turn/Turn.java | 4 +- Mage/src/mage/players/Player.java | 2 +- Mage/src/mage/players/PlayerImpl.java | 38 ++- Mage/src/mage/target/Target.java | 2 + Mage/src/mage/target/TargetAmount.java | 4 +- Mage/src/mage/target/TargetImpl.java | 20 +- 38 files changed, 677 insertions(+), 286 deletions(-) diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java index f63085f73d0..478473896bd 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java @@ -116,14 +116,14 @@ public class ComputerPlayer6 extends ComputerPlayer implements } @Override - public void priority(Game game) { + public boolean priority(Game game) { logState(game); game.firePriorityEvent(playerId); switch (game.getTurn().getStepType()) { case UPKEEP: case DRAW: pass(); - break; + return false; case PRECOMBAT_MAIN: case DECLARE_BLOCKERS: case POSTCOMBAT_MAIN: @@ -134,16 +134,17 @@ public class ComputerPlayer6 extends ComputerPlayer implements calculateActions(game); } act(game); + return true; } else { pass(); } - break; + return false; case BEGIN_COMBAT: case FIRST_COMBAT_DAMAGE: case COMBAT_DAMAGE: case END_COMBAT: pass(); - break; + return false; case DECLARE_ATTACKERS: if (!game.getActivePlayerId().equals(playerId)) { printOutState(game, playerId); @@ -152,18 +153,20 @@ public class ComputerPlayer6 extends ComputerPlayer implements calculateActions(game); } act(game); + return true; //printOutState(game, playerId); } else { pass(); } - break; + return false; case END_TURN: pass(); - break; + return false; case CLEANUP: pass(); - break; + return false; } + return false; } protected void printOutState(Game game, UUID playerId) { @@ -264,11 +267,11 @@ public class ComputerPlayer6 extends ComputerPlayer implements test = root; root = root.children.get(0); } - logger.info("simlating -- game value:" + game.getState().getValue() + " test value:" + test.gameValue); + logger.info("simlating -- game value:" + game.getState().getValue(true) + " test value:" + test.gameValue); if (!suggested.isEmpty()) { return false; } - if (root.playerId.equals(playerId) && root.abilities != null && game.getState().getValue().hashCode() == test.gameValue) { + if (root.playerId.equals(playerId) && root.abilities != null && game.getState().getValue(true).hashCode() == test.gameValue) { /* // Try to fix horizon effect @@ -477,7 +480,7 @@ public class ComputerPlayer6 extends ComputerPlayer implements logger.info("interrupted"); return GameStateEvaluator2.evaluate(playerId, game); } - node.setGameValue(game.getState().getValue().hashCode()); + node.setGameValue(game.getState().getValue(true).hashCode()); SimulatedPlayer2 currentPlayer = (SimulatedPlayer2) game.getPlayer(game.getPlayerList().get()); //logger.info("simulating -- player " + currentPlayer.getName()); SimulationNode2 bestNode = null; diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer7.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer7.java index b85e1cd23c4..358acceb39e 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer7.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer7.java @@ -83,7 +83,7 @@ public class ComputerPlayer7 extends ComputerPlayer6 implements Player { } @Override - public void priority(Game game) { + public boolean priority(Game game) { logState(game); if (logger.isDebugEnabled()) logger.debug("Game State: Turn-" + game.getTurnNum() + " Step-" + game.getTurn().getStepType() + " ActivePlayer-" + game.getPlayer(game.getActivePlayerId()).getName() + " PriorityPlayer-" + name); @@ -92,7 +92,7 @@ public class ComputerPlayer7 extends ComputerPlayer6 implements Player { case UPKEEP: case DRAW: pass(); - break; + return false; case PRECOMBAT_MAIN: if (game.getActivePlayerId().equals(playerId)) { System.out.println("Computer7:"); @@ -102,13 +102,14 @@ public class ComputerPlayer7 extends ComputerPlayer6 implements Player { calculatePreCombatActions(game); } act(game); + return true; } else pass(); - break; + return false; case BEGIN_COMBAT: pass(); - break; + return false; case DECLARE_ATTACKERS: if (!game.getActivePlayerId().equals(playerId)) { printOutState(game, playerId); @@ -117,16 +118,17 @@ public class ComputerPlayer7 extends ComputerPlayer6 implements Player { calculatePreCombatActions(game); } act(game); + return true; } else pass(); - break; + return false; case DECLARE_BLOCKERS: case FIRST_COMBAT_DAMAGE: case COMBAT_DAMAGE: case END_COMBAT: pass(); - break; + return false; case POSTCOMBAT_MAIN: if (game.getActivePlayerId().equals(playerId)) { printOutState(game, playerId); @@ -135,15 +137,17 @@ public class ComputerPlayer7 extends ComputerPlayer6 implements Player { calculatePostCombatActions(game); } act(game); + return true; } else pass(); - break; + return false; case END_TURN: case CLEANUP: pass(); - break; + return false; } + return false; } protected void calculatePreCombatActions(Game game) { diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulatedPlayer2.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulatedPlayer2.java index fa799bbe82d..3e6935f3112 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulatedPlayer2.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulatedPlayer2.java @@ -265,7 +265,7 @@ public class SimulatedPlayer2 extends ComputerPlayer { if (binary.charAt(j) == '1') sim.getCombat().declareAttacker(attackersList.get(j).getId(), defenderId, sim); } - if (engagements.put(sim.getCombat().getValue(sim), sim.getCombat()) != null) { + if (engagements.put(sim.getCombat().getValue().hashCode(), sim.getCombat()) != null) { logger.debug("simulating -- found redundant attack combination"); } else { @@ -289,7 +289,7 @@ public class SimulatedPlayer2 extends ComputerPlayer { //add a node with no blockers Game sim = game.copy(); - engagements.put(sim.getCombat().getValue(sim), sim.getCombat()); + engagements.put(sim.getCombat().getValue().hashCode(), sim.getCombat()); sim.fireEvent(GameEvent.getEvent(GameEvent.EventType.DECLARED_BLOCKERS, playerId, playerId)); List blockers = getAvailableBlockers(game); @@ -310,7 +310,7 @@ public class SimulatedPlayer2 extends ComputerPlayer { if (game.getCombat().getGroups().get(i).canBlock(blocker, game)) { Game sim = game.copy(); sim.getCombat().getGroups().get(i).addBlocker(blocker.getId(), playerId, sim); - if (engagements.put(sim.getCombat().getValue(sim), sim.getCombat()) != null) + if (engagements.put(sim.getCombat().getValue().hashCode(), sim.getCombat()) != null) logger.debug("simulating -- found redundant block combination"); addBlocker(sim, remaining, engagements); // and recurse minus the used blocker } @@ -360,7 +360,8 @@ public class SimulatedPlayer2 extends ComputerPlayer { } @Override - public void priority(Game game) { + public boolean priority(Game game) { //should never get here + return false; } } diff --git a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java index b7e0040cc36..af815a53ca7 100644 --- a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java +++ b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java @@ -79,6 +79,8 @@ import java.io.IOException; import java.io.Serializable; import java.util.*; import java.util.Map.Entry; +import mage.game.events.GameEvent; +import mage.game.events.GameEvent.EventType; /** * @@ -428,7 +430,7 @@ public class ComputerPlayer> extends PlayerImpl i } @Override - public void priority(Game game) { + public boolean priority(Game game) { log.debug("priority"); UUID opponentId = game.getOpponents(playerId).iterator().next(); if (game.getActivePlayerId().equals(playerId)) { @@ -449,12 +451,12 @@ public class ComputerPlayer> extends PlayerImpl i if (ability.canActivate(playerId, game)) { if (ability.getEffects().hasOutcome(Outcome.PutLandInPlay)) { if (this.activateAbility(ability, game)) - return; + return true; } if (ability.getEffects().hasOutcome(Outcome.PutCreatureInPlay)) { if (getOpponentBlockers(opponentId, game).size() <= 1) if (this.activateAbility(ability, game)) - return; + return true; } } } @@ -476,7 +478,7 @@ public class ComputerPlayer> extends PlayerImpl i for (Card card: playableNonInstant) { if (card.getSpellAbility().canActivate(playerId, game)) { if (this.activateAbility(card.getSpellAbility(), game)) - return; + return true; } } } @@ -485,7 +487,7 @@ public class ComputerPlayer> extends PlayerImpl i if (ability.canActivate(playerId, game)) { if (!(ability.getEffects().get(0) instanceof BecomesCreatureSourceEffect)) { if (this.activateAbility(ability, game)) - return; + return true; } } } @@ -512,8 +514,20 @@ public class ComputerPlayer> extends PlayerImpl i } } pass(); + return true; } + + @Override + public boolean activateAbility(ActivatedAbility ability, Game game) { + for (Target target: ability.getModes().getMode().getTargets()) { + for (UUID targetId: target.getTargets()) { + game.fireEvent(GameEvent.getEvent(EventType.TARGETED, targetId, ability.getId(), ability.getControllerId())); + } + } + return super.activateAbility(ability, game); + } + protected void playLand(Game game) { log.debug("playLand"); Set lands = hand.getCards(new FilterLandCard(), game); @@ -699,6 +713,11 @@ public class ComputerPlayer> extends PlayerImpl i } } } + // pay phyrexian life costs + if (cost instanceof PhyrexianManaCost) { + if (cost.pay(null, game, null, playerId, false)) + return true; + } return false; } @@ -1402,7 +1421,7 @@ public class ComputerPlayer> extends PlayerImpl i for (MageObject object: list) { sb.append(object.getName()).append(","); } - log.debug(sb.toString()); + log.info(sb.toString()); } protected void logAbilityList(String message, List list) { diff --git a/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/ComputerPlayerMCTS.java b/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/ComputerPlayerMCTS.java index 1f7a71bdb98..8462270e31e 100644 --- a/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/ComputerPlayerMCTS.java +++ b/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/ComputerPlayerMCTS.java @@ -30,14 +30,15 @@ package mage.player.ai; import java.util.ArrayList; import java.util.List; import java.util.UUID; -import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.logging.Level; +import mage.Constants.PhaseStep; import mage.Constants.RangeOfInfluence; +import mage.Constants.Zone; import mage.abilities.Ability; import mage.abilities.ActivatedAbility; +import mage.abilities.common.PassAbility; +import mage.cards.Card; import mage.game.Game; import mage.game.combat.Combat; import mage.game.combat.CombatGroup; @@ -51,16 +52,18 @@ import org.apache.log4j.Logger; */ public class ComputerPlayerMCTS extends ComputerPlayer implements Player { + private static final int thinkTimeRatioThreshold = 20; + protected transient MCTSNode root; - protected int thinkTime; + protected int maxThinkTime; private final static transient Logger logger = Logger.getLogger(ComputerPlayerMCTS.class); - private ExecutorService pool; + private transient ExecutorService pool; private int cores; public ComputerPlayerMCTS(String name, RangeOfInfluence range, int skill) { super(name, range); human = false; - thinkTime = skill; + maxThinkTime = (int) (skill * 1.5); cores = Runtime.getRuntime().availableProcessors(); pool = Executors.newFixedThreadPool(cores); } @@ -79,12 +82,18 @@ public class ComputerPlayerMCTS extends ComputerPlayer imple } @Override - public void priority(Game game) { + public boolean priority(Game game) { + if (game.getStep().getType() == PhaseStep.DRAW) + logList("computer player " + name + " hand: ", new ArrayList(hand.getCards(game))); + game.firePriorityEvent(playerId); getNextAction(game, NextAction.PRIORITY); Ability ability = root.getAction(); if (ability == null) logger.fatal("null ability"); activateAbility((ActivatedAbility)ability, game); + if (ability instanceof PassAbility) + return false; + return true; } protected void calculateActions(Game game, NextAction action) { @@ -101,9 +110,13 @@ public class ComputerPlayerMCTS extends ComputerPlayer imple protected void getNextAction(Game game, NextAction nextAction) { if (root != null) { - root = root.getMatchingState(game.getState().getValue().hashCode(), nextAction); - if (root != null) - root.emancipate(); + MCTSNode newRoot = null; + newRoot = root.getMatchingState(game.getState().getValue(false, game)); + if (newRoot != null) + newRoot.emancipate(); + else + logger.info("unable to find matching state"); + root = newRoot; } calculateActions(game, nextAction); } @@ -180,13 +193,8 @@ public class ComputerPlayerMCTS extends ComputerPlayer imple @Override public void selectAttackers(Game game) { - Game sim = createMCTSGame(game); - getNextAction(sim, NextAction.SELECT_ATTACKERS); -// MCTSPlayer player = (MCTSPlayer) sim.getPlayer(playerId); -// player.setNextAction(MCTSPlayer.NextAction.SELECT_ATTACKERS); -// root = new MCTSNode(sim); -// applyMCTS(); - Combat combat = root.bestChild().getCombat(); + getNextAction(game, NextAction.SELECT_ATTACKERS); + Combat combat = root.getCombat(); UUID opponentId = game.getCombat().getDefenders().iterator().next(); for (UUID attackerId: combat.getAttackers()) { this.declareAttacker(attackerId, opponentId, game); @@ -195,13 +203,8 @@ public class ComputerPlayerMCTS extends ComputerPlayer imple @Override public void selectBlockers(Game game) { - Game sim = createMCTSGame(game); - getNextAction(sim, NextAction.SELECT_BLOCKERS); -// MCTSPlayer player = (MCTSPlayer) sim.getPlayer(playerId); -// player.setNextAction(MCTSPlayer.NextAction.SELECT_BLOCKERS); -// root = new MCTSNode(sim); -// applyMCTS(); - Combat combat = root.bestChild().getCombat(); + getNextAction(game, NextAction.SELECT_BLOCKERS); + Combat combat = root.getCombat(); List groups = game.getCombat().getGroups(); for (int i = 0; i < groups.size(); i++) { if (i < combat.getGroups().size()) { @@ -248,36 +251,83 @@ public class ComputerPlayerMCTS extends ComputerPlayer imple // } protected void applyMCTS(final Game game, final NextAction action) { + int thinkTime = calculateThinkTime(game, action); + long startTime = System.nanoTime(); long endTime = startTime + (thinkTime * 1000000000l); logger.info("applyMCTS - Thinking for " + (endTime - startTime)/1000000000.0 + "s"); - List tasks = new ArrayList(); - for (int i = 0; i < cores; i++) { - Game sim = createMCTSGame(game); - MCTSPlayer player = (MCTSPlayer) sim.getPlayer(playerId); - player.setNextAction(action); - MCTSExecutor exec = new MCTSExecutor(sim, playerId, thinkTime); - tasks.add(exec); + if (thinkTime > 0) { + List tasks = new ArrayList(); + for (int i = 0; i < cores; i++) { + Game sim = createMCTSGame(game); + MCTSPlayer player = (MCTSPlayer) sim.getPlayer(playerId); + player.setNextAction(action); + MCTSExecutor exec = new MCTSExecutor(sim, playerId, thinkTime); + tasks.add(exec); + } + + try { + pool.invokeAll(tasks); + } catch (InterruptedException ex) { + logger.warn("applyMCTS interrupted"); + } + + for (MCTSExecutor task: tasks) { + root.merge(task.getRoot()); + task.clear(); + } + tasks.clear(); + + logger.info("Created " + root.getNodeCount() + " nodes - size: " + root.size()); + displayMemory(); } - - try { - pool.invokeAll(tasks); - } catch (InterruptedException ex) { - logger.warn("applyMCTS interrupted"); - } - - for (MCTSExecutor task: tasks) { - root.merge(task.getRoot()); - } - - logger.info("Created " + root.getNodeCount() + " nodes"); + +// root.print(1); return; } + //try to ensure that there are at least 20 simulations per node at all times + private int calculateThinkTime(Game game, NextAction action) { + int thinkTime = 0; + int nodeSizeRatio = 0; + if (root.getNumChildren() > 0) + nodeSizeRatio = root.size() / root.getNumChildren(); + logger.info("Ratio: " + nodeSizeRatio); + PhaseStep curStep = game.getStep().getType(); + if (action == NextAction.SELECT_ATTACKERS || action == NextAction.SELECT_BLOCKERS) { + if (nodeSizeRatio < thinkTimeRatioThreshold) { + thinkTime = maxThinkTime; + } + else { + thinkTime = maxThinkTime / 2; + } + } + else if (game.getActivePlayerId().equals(playerId) && (curStep == PhaseStep.PRECOMBAT_MAIN || curStep == PhaseStep.POSTCOMBAT_MAIN)) { + if (nodeSizeRatio < thinkTimeRatioThreshold) { + thinkTime = maxThinkTime; + } + else { + thinkTime = maxThinkTime / 2; + } + } + else { + if (nodeSizeRatio < thinkTimeRatioThreshold) { + thinkTime = maxThinkTime / 2; + } + else { + thinkTime = 0; + } + } + return thinkTime; + } + /** * Copies game and replaces all players in copy with mcts players * Shuffles each players library so that there is no knowledge of its order + * Swaps all other players hands with random cards from the library so that + * there is no knowledge of what cards are in opponents hands + * The most knowledge that is known is what cards are in an opponents deck * * @param game * @return a new game object with simulated players @@ -289,11 +339,35 @@ public class ComputerPlayerMCTS extends ComputerPlayer imple Player origPlayer = game.getState().getPlayers().get(copyPlayer.getId()); MCTSPlayer newPlayer = new MCTSPlayer(copyPlayer.getId()); newPlayer.restore(origPlayer); - newPlayer.getLibrary().shuffle(); + if (!newPlayer.getId().equals(playerId)) { + int handSize = newPlayer.getHand().size(); + newPlayer.getLibrary().addAll(newPlayer.getHand().getCards(mcts), mcts); + newPlayer.getHand().clear(); + newPlayer.getLibrary().shuffle(); + for (int i = 0; i < handSize; i++) { + Card card = newPlayer.getLibrary().removeFromTop(mcts); + mcts.setZone(card.getId(), Zone.HAND); + newPlayer.getHand().add(card); + } + } + else { + newPlayer.getLibrary().shuffle(); + } mcts.getState().getPlayers().put(copyPlayer.getId(), newPlayer); } mcts.setSimulation(true); + mcts.resume(); return mcts; } + protected void displayMemory() { + long heapSize = Runtime.getRuntime().totalMemory(); + long heapMaxSize = Runtime.getRuntime().maxMemory(); + long heapFreeSize = Runtime.getRuntime().freeMemory(); + long heapUsedSize = heapSize - heapFreeSize; + long mb = 1024 * 1024; + + logger.info("Max heap size: " + heapMaxSize/mb + " Heap size: " + heapSize/mb + " Used: " + heapUsedSize/mb); + } + } diff --git a/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/MCTSExecutor.java b/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/MCTSExecutor.java index c2974b94b9c..7082daf098e 100644 --- a/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/MCTSExecutor.java +++ b/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/MCTSExecutor.java @@ -57,21 +57,22 @@ public class MCTSExecutor implements Callable { long endTime = startTime + (thinkTime * 1000000000l); MCTSNode current; - if (root.getNumChildren() == 1) - //there is only one possible action - return true; +// if (root.getNumChildren() == 1) +// //there is only one possible action - don't spend a lot of time thinking +// endTime = startTime + 1000000000l; // logger.info("applyMCTS - Thinking for " + (endTime - startTime)/1000000000.0 + "s"); while (true) { long currentTime = System.nanoTime(); // logger.info("Remaining time: " + (endTime - currentTime)/1000000000.0 + "s"); if (currentTime > endTime) +// if (root.getNodeCount() > 50) break; current = root; // Selection while (!current.isLeaf()) { - current = current.select(); + current = current.select(this.playerId); } int result; @@ -79,17 +80,17 @@ public class MCTSExecutor implements Callable { // Expansion current.expand(); - if (current == root && current.getNumChildren() == 1) - //there is only one possible action - return true; +// if (current == root && current.getNumChildren() == 1) +// //there is only one possible action - don't spend a lot of time thinking +// endTime = startTime + 1000000000l; // Simulation - current = current.select(); + current = current.select(this.playerId); result = current.simulate(this.playerId); simCount++; } else { - result = current.isWinner(this.playerId)?1:0; + result = current.isWinner(this.playerId)?1:-1; } // Backpropagation current.backpropagate(result); @@ -103,4 +104,8 @@ public class MCTSExecutor implements Callable { return root; } + public void clear() { + root = null; + } + } diff --git a/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/MCTSNode.java b/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/MCTSNode.java index 693c5bece98..578c18176e0 100644 --- a/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/MCTSNode.java +++ b/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/MCTSNode.java @@ -27,14 +27,18 @@ */ package mage.player.ai; +import java.util.ArrayDeque; import java.util.ArrayList; import java.util.List; import java.util.UUID; import mage.Constants.PhaseStep; +import mage.Constants.Zone; import mage.abilities.Ability; import mage.abilities.ActivatedAbility; +import mage.abilities.PlayLandAbility; +import mage.abilities.common.PassAbility; +import mage.cards.Card; import mage.game.Game; -import mage.game.GameState; import mage.game.combat.Combat; import mage.game.combat.CombatGroup; import mage.game.turn.Step.StepPart; @@ -48,7 +52,8 @@ import org.apache.log4j.Logger; */ public class MCTSNode { - private static final double selectionCoefficient = 1; + private static final double selectionCoefficient = 1.0; + private static final double passRatioTolerance = 0.01; private final static transient Logger logger = Logger.getLogger(MCTSNode.class); private int visits = 0; @@ -56,68 +61,76 @@ public class MCTSNode { private MCTSNode parent; private List children = new ArrayList(); private Ability action; - private Combat combat; +// private Combat combat; private Game game; - private int stateValue; + private String stateValue; + private UUID playerId; private static int nodeCount; public MCTSNode(Game game) { this.game = game; - this.stateValue = game.getState().getValue().hashCode(); + this.stateValue = game.getState().getValue(false, game); + setPlayer(); nodeCount = 1; } - protected MCTSNode(MCTSNode parent, Game game, int state, Ability action) { + protected MCTSNode(MCTSNode parent, Game game, Ability action) { this.game = game; - this.stateValue = state; + this.stateValue = game.getState().getValue(false, game); this.parent = parent; this.action = action; + setPlayer(); nodeCount++; } - protected MCTSNode(MCTSNode parent, Game game, int state, Combat combat) { + protected MCTSNode(MCTSNode parent, Game game) { this.game = game; - this.stateValue = state; + this.stateValue = game.getState().getValue(false, game); this.parent = parent; - this.combat = combat; +// this.combat = game.getCombat(); + setPlayer(); nodeCount++; } - public MCTSNode select() { + private void setPlayer() { + if (game.getStep().getStepPart() == StepPart.PRIORITY) + playerId = game.getPriorityPlayerId(); + else { + if (game.getStep().getType() == PhaseStep.DECLARE_BLOCKERS) + playerId = game.getCombat().getDefenders().iterator().next(); + else + playerId = game.getActivePlayerId(); + } + } + + public MCTSNode select(UUID targetPlayerId) { double bestValue = Double.NEGATIVE_INFINITY; + boolean isTarget = playerId.equals(targetPlayerId); MCTSNode bestChild = null; -// logger.info("start select"); if (children.size() == 1) { return children.get(0); } for (MCTSNode node: children) { double uct; if (node.visits > 0) - uct = (node.wins / (node.visits + 1.0)) + (selectionCoefficient * Math.sqrt(Math.log(visits + 1.0) / (node.visits + 1.0))); + if (isTarget) + uct = (node.wins / (node.visits + 1.0)) + (selectionCoefficient * Math.sqrt(Math.log(visits + 1.0) / (node.visits + 1.0))); + else + uct = ((node.visits - node.wins) / (node.visits + 1.0)) + (selectionCoefficient * Math.sqrt(Math.log(visits + 1.0) / (node.visits + 1.0))); else // ensure that a random unvisited node is played first uct = 10000 + 1000 * Math.random(); -// logger.info("uct: " + uct); if (uct > bestValue) { bestChild = node; bestValue = uct; } } -// logger.info("stop select"); return bestChild; } public void expand() { - MCTSPlayer player; - if (game.getStep().getStepPart() == StepPart.PRIORITY) - player = (MCTSPlayer) game.getPlayer(game.getPriorityPlayerId()); - else { - if (game.getStep().getType() == PhaseStep.DECLARE_BLOCKERS) - player = (MCTSPlayer) game.getPlayer(game.getCombat().getDefenders().iterator().next()); - else - player = (MCTSPlayer) game.getPlayer(game.getActivePlayerId()); - } + MCTSPlayer player = (MCTSPlayer) game.getPlayer(playerId); if (player.getNextAction() == null) { logger.fatal("next action is null"); } @@ -127,12 +140,12 @@ public class MCTSNode { List abilities = player.getPlayableOptions(game); for (Ability ability: abilities) { Game sim = game.copy(); - int simState = sim.getState().getValue().hashCode(); +// String simState = sim.getState().getValue(false, sim); // logger.info("expand " + ability.toString()); MCTSPlayer simPlayer = (MCTSPlayer) sim.getPlayer(player.getId()); simPlayer.activateAbility((ActivatedAbility)ability, sim); sim.resume(); - children.add(new MCTSNode(this, sim, simState, ability)); + children.add(new MCTSNode(this, sim, ability)); } break; case SELECT_ATTACKERS: @@ -141,13 +154,13 @@ public class MCTSNode { UUID defenderId = game.getOpponents(player.getId()).iterator().next(); for (List attack: attacks) { Game sim = game.copy(); - int simState = sim.getState().getValue().hashCode(); +// String simState = sim.getState().getValue(false, sim); MCTSPlayer simPlayer = (MCTSPlayer) sim.getPlayer(player.getId()); for (UUID attackerId: attack) { simPlayer.declareAttacker(attackerId, defenderId, sim); } sim.resume(); - children.add(new MCTSNode(this, sim, simState, sim.getCombat())); + children.add(new MCTSNode(this, sim)); } break; case SELECT_BLOCKERS: @@ -155,7 +168,7 @@ public class MCTSNode { List>> blocks = player.getBlocks(game); for (List> block: blocks) { Game sim = game.copy(); - int simState = sim.getState().getValue().hashCode(); +// String simState = sim.getState().getValue(false, sim); MCTSPlayer simPlayer = (MCTSPlayer) sim.getPlayer(player.getId()); List groups = sim.getCombat().getGroups(); for (int i = 0; i < groups.size(); i++) { @@ -166,18 +179,18 @@ public class MCTSNode { } } sim.resume(); - children.add(new MCTSNode(this, sim, simState, sim.getCombat())); + children.add(new MCTSNode(this, sim)); } break; } } public int simulate(UUID playerId) { - long startTime = System.nanoTime(); - Game sim = createSimulation(game); +// long startTime = System.nanoTime(); + Game sim = createSimulation(game, playerId); sim.resume(); - long duration = System.nanoTime() - startTime; - int retVal = 0; +// long duration = System.nanoTime() - startTime; + int retVal = 0; //anything other than a win is a loss for (Player simPlayer: sim.getPlayers().values()) { // logger.info(simPlayer.getName() + " calculated " + ((SimulatedPlayerMCTS)simPlayer).getActionCount() + " actions in " + duration/1000000000.0 + "s"); if (simPlayer.getId().equals(playerId) && simPlayer.hasWon()) { @@ -201,12 +214,34 @@ public class MCTSNode { } public MCTSNode bestChild() { + if (children.size() == 1) + return children.get(0); double bestCount = -1; + double bestRatio = 0; + boolean bestIsPass = false; MCTSNode bestChild = null; for (MCTSNode node: children) { + //favour passing vs any other action except for playing land if ratio is close if (node.visits > bestCount) { + if (bestIsPass) { + double ratio = node.wins/(node.visits * 1.0); + if (ratio < bestRatio + passRatioTolerance) + continue; + } bestChild = node; bestCount = node.visits; + bestRatio = node.wins/(node.visits * 1.0); + bestIsPass = false; + } + else if (node.action instanceof PassAbility && node.visits > 10 && !(bestChild.action instanceof PlayLandAbility)) { + //favour passing vs any other action if ratio is close + double ratio = node.wins/(node.visits * 1.0); + if (ratio > bestRatio - passRatioTolerance) { + bestChild = node; + bestCount = node.visits; + bestRatio = ratio; + bestIsPass = true; + } } } return bestChild; @@ -229,13 +264,17 @@ public class MCTSNode { } public Combat getCombat() { - return combat; + return game.getCombat(); } public int getNodeCount() { return nodeCount; } + public String getStateValue() { + return stateValue; + } + /** * Copies game and replaces all players in copy with simulated players * Shuffles each players library so that there is no knowledge of its order @@ -243,14 +282,27 @@ public class MCTSNode { * @param game * @return a new game object with simulated players */ - protected Game createSimulation(Game game) { + protected Game createSimulation(Game game, UUID playerId) { Game sim = game.copy(); for (Player copyPlayer: sim.getState().getPlayers().values()) { Player origPlayer = game.getState().getPlayers().get(copyPlayer.getId()).copy(); SimulatedPlayerMCTS newPlayer = new SimulatedPlayerMCTS(copyPlayer.getId(), true); newPlayer.restore(origPlayer); - newPlayer.shuffleLibrary(sim); + if (!newPlayer.getId().equals(playerId)) { + int handSize = newPlayer.getHand().size(); + newPlayer.getLibrary().addAll(newPlayer.getHand().getCards(sim), sim); + newPlayer.getHand().clear(); + newPlayer.getLibrary().shuffle(); + for (int i = 0; i < handSize; i++) { + Card card = newPlayer.getLibrary().removeFromTop(sim); + sim.setZone(card.getId(), Zone.HAND); + newPlayer.getHand().add(card); + } + } + else { + newPlayer.getLibrary().shuffle(); + } sim.getState().getPlayers().put(copyPlayer.getId(), newPlayer); } sim.setSimulation(true); @@ -268,29 +320,35 @@ public class MCTSNode { return false; } - public MCTSNode getMatchingState(int state, NextAction nextAction) { - for (MCTSNode node: children) { - if (node.stateValue == state && node.action != null) { - MCTSPlayer player; - if (game.getStep().getStepPart() == StepPart.PRIORITY) - player = (MCTSPlayer) game.getPlayer(game.getPriorityPlayerId()); - else { - if (game.getStep().getType() == PhaseStep.DECLARE_BLOCKERS) - player = (MCTSPlayer) game.getPlayer(game.getCombat().getDefenders().iterator().next()); - else - player = (MCTSPlayer) game.getPlayer(game.getActivePlayerId()); - } - if (player.getNextAction() == nextAction) - return node; + /** + * + * performs a breadth first search for a matching game state + * + * @param state - the game state that we are looking for + * @param nextAction - the next action that will be performed + * @return the matching state or null if no match is found + */ + public MCTSNode getMatchingState(String state) { + ArrayDeque queue = new ArrayDeque(); + queue.add(this); + + while (!queue.isEmpty()) { + MCTSNode current = queue.remove(); + if (current.stateValue.equals(state)) + return current; + for (MCTSNode child: current.children) { + queue.add(child); } - MCTSNode match = node.getMatchingState(state, nextAction); - if (match != null) - return node; } return null; } - + public void merge(MCTSNode merge) { + if (!stateValue.equals(merge.stateValue)) { + logger.info("mismatched merge states"); + return; + } + this.visits += merge.visits; this.wins += merge.wins; @@ -301,16 +359,61 @@ public class MCTSNode { for (MCTSNode child: children) { for (MCTSNode mergeChild: mergeChildren) { - if (mergeChild.stateValue == child.stateValue) { - child.merge(mergeChild); - mergeChildren.remove(mergeChild); - break; + if (mergeChild.action != null && child.action != null) { + if (mergeChild.action.toString().equals(child.action.toString())) { + if (!mergeChild.stateValue.equals(child.stateValue)) { + logger.info("mismatched merge states"); + mergeChildren.remove(mergeChild); + } + else { + child.merge(mergeChild); + mergeChildren.remove(mergeChild); + } + break; + } + } + else { + if (mergeChild.game.getCombat().getValue().equals(child.game.getCombat().getValue())) { + if (!mergeChild.stateValue.equals(child.stateValue)) { + logger.info("mismatched merge states"); + mergeChildren.remove(mergeChild); + } + else { + child.merge(mergeChild); + mergeChildren.remove(mergeChild); + } + break; + } } } } if (!mergeChildren.isEmpty()) { - children.addAll(mergeChildren); + for (MCTSNode child: mergeChildren) { + child.parent = this; + children.add(child); + } } } + + public void print(int depth) { + String indent = String.format("%1$-" + depth + "s", ""); + StringBuilder sb = new StringBuilder(); + MCTSPlayer player = (MCTSPlayer) game.getPlayer(playerId); + sb.append(indent).append(player.getName()).append(" ").append(visits).append(":").append(wins).append(" - "); + if (action != null) + sb.append(action.toString()); + System.out.println(sb.toString()); + for (MCTSNode child: children) { + child.print(depth + 1); + } + } + + public int size() { + int num = 1; + for (MCTSNode child: children) { + num += child.size(); + } + return num; + } } diff --git a/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/MCTSPlayer.java b/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/MCTSPlayer.java index ef9f94e245a..24e482a8166 100644 --- a/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/MCTSPlayer.java +++ b/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/MCTSPlayer.java @@ -201,10 +201,11 @@ public class MCTSPlayer extends ComputerPlayer { } @Override - public void priority(Game game) { + public boolean priority(Game game) { // logger.info("Paused for Priority for player:" + getName()); game.pause(); nextAction = NextAction.PRIORITY; + return false; } // @Override diff --git a/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/SimulatedPlayerMCTS.java b/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/SimulatedPlayerMCTS.java index 0be830f21a9..278b1a18e01 100644 --- a/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/SimulatedPlayerMCTS.java +++ b/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/SimulatedPlayerMCTS.java @@ -42,6 +42,7 @@ import mage.abilities.Mode; import mage.abilities.Modes; import mage.abilities.TriggeredAbilities; import mage.abilities.TriggeredAbility; +import mage.abilities.common.PassAbility; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.ManaCost; import mage.abilities.costs.mana.ManaCosts; @@ -56,6 +57,7 @@ import mage.game.Game; import mage.game.combat.CombatGroup; import mage.game.permanent.Permanent; import mage.game.stack.StackAbility; +import mage.game.stack.StackObject; import mage.players.Player; import mage.target.Target; import mage.target.TargetAmount; @@ -99,11 +101,24 @@ public class SimulatedPlayerMCTS extends MCTSPlayer { } @Override - public void priority(Game game) { + public boolean priority(Game game) { // logger.info("priority"); + boolean didSomething = false; + Ability ability = getAction(game); +// logger.info("simulate " + ability.toString()); + if (!(ability instanceof PassAbility)) + didSomething = true; + + activateAbility((ActivatedAbility) ability, game); + + actionCount++; + return didSomething; + } + + private Ability getAction(Game game) { + List playables = getPlayableAbilities(game); + Ability ability; while (true) { - List playables = getPlayableAbilities(game); - Ability ability; if (playables.size() == 1) ability = playables.get(0); else @@ -120,13 +135,23 @@ public class SimulatedPlayerMCTS extends MCTSPlayer { if (amount > 0) ability.addManaCost(new GenericManaCost(rnd.nextInt(amount))); } -// logger.info("simulate " + ability.toString()); - activateAbility((ActivatedAbility) ability, game); - - actionCount++; - if (ability.isUsesStack()) + // check if ability kills player, if not then it's ok to play +// if (ability.isUsesStack()) { +// Game testSim = game.copy(); +// activateAbility((ActivatedAbility) ability, testSim); +// StackObject testAbility = testSim.getStack().pop(); +// testAbility.resolve(testSim); +// testSim.applyEffects(); +// testSim.checkStateAndTriggered(); +// if (!testSim.getPlayer(playerId).hasLost()) { +// break; +// } +// } +// else { break; +// } } + return ability; } @Override diff --git a/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer2.java b/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer2.java index bf1beceb819..d6f25af6266 100644 --- a/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer2.java +++ b/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer2.java @@ -131,14 +131,14 @@ public class ComputerPlayer2 extends ComputerPlayer implements } @Override - public void priority(Game game) { + public boolean priority(Game game) { logState(game); game.firePriorityEvent(playerId); switch (game.getTurn().getStepType()) { case UPKEEP: case DRAW: pass(); - break; + return false; case PRECOMBAT_MAIN: case BEGIN_COMBAT: case DECLARE_ATTACKERS: @@ -151,12 +151,13 @@ public class ComputerPlayer2 extends ComputerPlayer implements calculateActions(game); } act(game); - break; + return true; case END_TURN: case CLEANUP: pass(); - break; + return false; } + return false; } protected void act(Game game) { @@ -210,8 +211,8 @@ public class ComputerPlayer2 extends ComputerPlayer implements test = root; root = root.children.get(0); } - logger.debug("simlating -- game value:" + game.getState().getValue() + " test value:" + test.gameValue); - if (root.playerId.equals(playerId) && root.abilities != null && game.getState().getValue().hashCode() == test.gameValue) { + logger.debug("simlating -- game value:" + game.getState().getValue(true) + " test value:" + test.gameValue); + if (root.playerId.equals(playerId) && root.abilities != null && game.getState().getValue(true).hashCode() == test.gameValue) { logger.debug("simulating -- continuing previous action chain"); actions = new LinkedList(root.abilities); combat = root.combat; @@ -412,7 +413,7 @@ public class ComputerPlayer2 extends ComputerPlayer implements logger.debug(indent(node.depth) + "interrupted"); return GameStateEvaluator.evaluate(playerId, game); } - node.setGameValue(game.getState().getValue().hashCode()); + node.setGameValue(game.getState().getValue(true).hashCode()); SimulatedPlayer currentPlayer = (SimulatedPlayer) game.getPlayer(game.getPlayerList().get()); boolean isSimulatedPlayer = currentPlayer.getId().equals(playerId); logger.debug(indent(node.depth) + "simulating priority -- player " + currentPlayer.getName()); diff --git a/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer3.java b/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer3.java index f44232a1d8b..83c9d01e0fa 100644 --- a/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer3.java +++ b/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer3.java @@ -96,7 +96,7 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { } @Override - public void priority(Game game) { + public boolean priority(Game game) { logState(game); if (logger.isDebugEnabled()) logger.debug("Game State: Turn-" + game.getTurnNum() + " Step-" + game.getTurn().getStepType() + " ActivePlayer-" + game.getPlayer(game.getActivePlayerId()).getName() + " PriorityPlayer-" + name); @@ -105,51 +105,55 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { case UPKEEP: case DRAW: pass(); - break; + return false; case PRECOMBAT_MAIN: if (game.getActivePlayerId().equals(playerId)) { if (actions.size() == 0) { calculatePreCombatActions(game); } act(game); + return true; } else pass(); - break; + return false; case BEGIN_COMBAT: pass(); - break; + return false; case DECLARE_ATTACKERS: if (!game.getActivePlayerId().equals(playerId)) { if (actions.size() == 0) { calculatePreCombatActions(game); } act(game); + return true; } else pass(); - break; + return false; case DECLARE_BLOCKERS: case FIRST_COMBAT_DAMAGE: case COMBAT_DAMAGE: case END_COMBAT: pass(); - break; + return false; case POSTCOMBAT_MAIN: if (game.getActivePlayerId().equals(playerId)) { if (actions.size() == 0) { calculatePostCombatActions(game); } act(game); + return true; } else pass(); - break; + return false; case END_TURN: case CLEANUP: pass(); - break; + return false; } + return false; } protected void calculatePreCombatActions(Game game) { diff --git a/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/SimulatedPlayer.java b/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/SimulatedPlayer.java index e9bb049c604..e795d96a575 100644 --- a/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/SimulatedPlayer.java +++ b/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/SimulatedPlayer.java @@ -188,7 +188,7 @@ public class SimulatedPlayer extends ComputerPlayer { if (binary.charAt(j) == '1') sim.getCombat().declareAttacker(attackersList.get(j).getId(), defenderId, sim); } - if (engagements.put(sim.getCombat().getValue(sim), sim.getCombat()) != null) { + if (engagements.put(sim.getCombat().getValue().hashCode(), sim.getCombat()) != null) { logger.debug("simulating -- found redundant attack combination"); } else if (logger.isDebugEnabled()) { @@ -205,7 +205,7 @@ public class SimulatedPlayer extends ComputerPlayer { //add a node with no blockers Game sim = game.copy(); - engagements.put(sim.getCombat().getValue(sim), sim.getCombat()); + engagements.put(sim.getCombat().getValue().hashCode(), sim.getCombat()); sim.fireEvent(GameEvent.getEvent(GameEvent.EventType.DECLARED_BLOCKERS, playerId, playerId)); List blockers = getAvailableBlockers(game); @@ -227,7 +227,7 @@ public class SimulatedPlayer extends ComputerPlayer { if (game.getCombat().getGroups().get(i).canBlock(blocker, game)) { Game sim = game.copy(); sim.getCombat().getGroups().get(i).addBlocker(blocker.getId(), playerId, sim); - if (engagements.put(sim.getCombat().getValue(sim), sim.getCombat()) != null) + if (engagements.put(sim.getCombat().getValue().hashCode(), sim.getCombat()) != null) logger.debug("simulating -- found redundant block combination"); addBlocker(sim, remaining, engagements); // and recurse minus the used blocker } @@ -277,8 +277,9 @@ public class SimulatedPlayer extends ComputerPlayer { } @Override - public void priority(Game game) { + public boolean priority(Game game) { //should never get here + return false; } protected String indent(int num) { diff --git a/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java b/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java index 9b90df3b3ec..5f7f63fc850 100644 --- a/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java +++ b/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java @@ -374,20 +374,22 @@ public class HumanPlayer extends PlayerImpl { } @Override - public void priority(Game game) { + public boolean priority(Game game) { passed = false; if (!abort) { if (passedTurn && game.getStack().isEmpty()) { pass(); - return; + return false; } game.firePriorityEvent(playerId); waitForResponse(); if (response.getBoolean() != null) { pass(); + return false; } else if (response.getInteger() != null) { pass(); passedTurn = true; + return false; } else if (response.getString() != null && response.getString().equals("special")) { specialAction(game); } else if (response.getUUID() != null) { @@ -403,7 +405,9 @@ public class HumanPlayer extends PlayerImpl { } } } + return true; } + return false; } @Override diff --git a/Mage.Server/plugins/mage-player-ai-ma.jar b/Mage.Server/plugins/mage-player-ai-ma.jar index c2468a1b93c0fcdca131d3dbe3d9762625722464..b3bc0b4151fd1424d6816354bc1a6ce01ac6f44a 100644 GIT binary patch delta 31302 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⪼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 delta 31509 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 diff --git a/Mage.Server/plugins/mage-player-ai.jar b/Mage.Server/plugins/mage-player-ai.jar index 4eab33a7589659aa14a02ebf1323a31e39d3349f..c17e2480315547fb864b2ef76b374a87a502d7ce 100644 GIT binary patch delta 24907 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 F{|9d6O?3bO diff --git a/Mage.Server/plugins/mage-player-aimcts.jar b/Mage.Server/plugins/mage-player-aimcts.jar index 5cc37f6447d672319fa9222dfc200808e6810d5b..65749101e2554f91cd8bcd52400e2d5a6f8c40e9 100644 GIT binary patch delta 24368 zcmZ6SV{qqB@aJQj8*glDlZ|bEV{ELAHs&X`ZQHgsw(V?eTlf3l)jhcDC)3qcGY@8} zXS!bRp4@Kmy#;U-C0R%)1hD_H+HyLfI23Z^n*YWl2ahMy|6-nT0v1#XX*@h=KH=3G zGF&6}?EC?4~9|Vsk<+djFDFb7ng2nrYMMRX)IO>Gp!1JX;DSUTc+1#Zi%nk?B;3GB{{@rR= zSIO!uYgf%d<0`?BS#6dtZ7wYpMX2l8G&MCZE@=mSU3EU0#gEFxPT$^awmoflPV=8# zZM@y?`+1Ul&o4+Ucz5E#eJ%BsJYWP~LMs6_y4yPorew27B-wY}G1EB$dV(QoOeObD zl0^6yzBuZa7r5;6f~Qv916m)t!!rGBs-Ah%WhCb5#J>zl^d@{ibLicpb0Bmn8OnpW zG@cipj|H-+8_9!UZVqp~P8hFmXMOZXBGd#Vieo@+>ON;C%MNtFUqw)-<^e!iZ(KI9 zAZwS#fn0CamP6nkgrwo&o>XfU4;mi#qlRnKQs;bY3(~oB=WIE+3+t3PaLIGpzthgB zSKz8jk*6LVfJs}SnH;6d`Bwt+D(4`oKjpAgc)G)@^c<*mUKWtnznrK54)H{XjACR(H%h`MS-V3QosRwSEn=-^0=IsNu` z`dbXIzi;L-w&;9TsU}xN-tsm7$@+Y<0hBpCV>Wa-35w=7Z6Z916F(HvYor~kIo1cY z2#Q?0bC`D!O)X@u$SgmZbC?euy}jTK=q7rY8dBgZ>_)EtSa#DoH~~Q%8ZwSarpR<; zntN90Upo4q%_%+PeFo&O`W3g%a>kfldB?@kN&}h&)FNh*b`zmb>AOr+wnlUoECn}# z#PXH%{U5=I?=q(uDzLj17{HbrNBHA`{Zu{)$PjVduoy0^jtjT$6+H04(0jQ zMYu=m3C#}lbwY$OyzE?ft-tTBN*swoN?W~ZjS?}B-zqvX@;76-@dsA5RXMB%@cTUY zm@05VEARc9n)BJALHYd7&1AHoz4;LKGVAm%lv_?A?qcQ1JfL)TjpT&Gh{(hITjD=6 z_R^5$le*YQqI?3EL5KNZg0jDn_Yc&Oni=Bg31O$o{6?%}7|2#bV)(_hIkc2ZL)<}q zwY#a|q!PLv&6e(2G`WF0i}}0kwQhrkaI{Fb=h(5_7LPW@>B_8cwF`HTgCb@Oi7RH( zW*5hPeVp{O3&7+SoDYBUr+EKSs#+I2Rl7UVM$04!KWtW9vRD7NQJFnQGr=>@$Fs&1!7`;1QH<7=x_6TECce!6EVhABzw!l0!vTUiH-&x?g`Uewi&Km*MRPj5 ze_vETWF!^BYK7V7%23Uk28W8n6mJ5=eHv<}BgqId+SR(@bE|HjQW0#ll7r+Wu?$K! zlh}Enw)j~adYH5EJSX#7YZ=BTvTVG|-qW~$UpSDDHmRg8Gghm+&~@SUP<&FbH)sqW8;11u#L$6FAydtD#QqR^>zEQb zW7{D(HeDVYv840QyT1~$D;kz?V2oh~;uF-h%YdJpKi}&UR*4pjL&IhtBa!}bB3nR{ zc|2I8NKq-{AU-tmNU8FwwYkajws}cKE#UX$DqHPDLt#oiI@)Xab?fD|{Vu#83wu0nvVS{LP4=AR`A_(6ceD5+j}AapqBOg?gA$Ngq3Y%DIt z=J5M*sx3cIg8RA(e|zXB$19g!-YqJ}C+U~e9?6|TR5k9{1^)J5S1Tt*y^zI5)#eRo za-U+0`d0-L|Dg`ImN8drFVw5qAJSK%*}H)FA1#1p!*sx8T3Fa8M5oPLsBOs8JxAi_ zF)ZBkpRfk)8JK5%-@{)nOT$L5T++%>Pj}vQ+ch_k@0jS%!cipuLO6W_FK3>WY5ocp zg>ZTV63-l4y(SOE-0b0dhg1s>h`sgi{wXmjdk-8E+@nsTLaosq8JU#IVJZoFC>Meor0( z#NV$y-?@v!Li)U-wo?{?VKa}AEzk=I{#Syauj!n4ZfE<3h(cWZdZXyB=r4|I&puLL z&CXBesIN(qvUidw!NV^$B8OuL@Irh(PL5WgJ;h&CpK9k`zNl6R(vcnn48Zd_-7*%A z=@T7-l}B5yBO%+cA9tuSFW4{*(^gn(6Bq%+QG4J^0dk_oJDeY6?A(Xl(~`1iSU08#Z2SN3G?U@ zI8DRZK&r*G^M)vU&Orr? zWqcq+dHxR5S`{tl7$4L+DXB0hTF!KKd!V>S}}=2kesQUOKTp6xj{OczqT)A z;6!-H&oe1dqUG+9dx+G-?fs*q6Wn+!cMP#fU9n(#?Io;_F4=s*91!Wh7YlxEEQA_ zUn`$fU6O37{E^SOBu|08muBKwvO(cTQkK=m#MVmBV4&Kg&vfeT-CD;AI=UV`XNXs| zEo7sX%i!p&FCnqB1!%c%YYANT!i=jeejp=}w#{e7?}>0)Y`KVDBKze{cfznUEMG4m ziVvQxMUUaNk=d+>Z?xmAUdHOY9bYOT#Tg2&;dA##q}uAtH+smc4#Vh*emA2tA1aZ{ zJTv5S30xM)Z`DyeHiVx!M~s7GmvOZ+;SIr6Gs$AFj9fbK0JOs^%Q|)|&&_Y(aC80L z4rPD4s1HQHbKN`R--wCYNpvfpK;G;Zj-hOX>I@N6TLEBl@?SD=Z=s1_L`_B^6O}BxIxTQ#&a@V9HoGJ6 zP@5dHy^EI_0tbHz2v*Iz2qiU4VBLjbz{i5;z;u)Ayhf~-7^h7$-eRf$I1K$c0xyR^ z)vj6;5*!#WWg`E!WGrDtGXGv#I*Nbf<{tBBqQ27o0j;9aNx$#1^`X%IAylHs@_51v zXW!W68l-m&cc}F1nRIInNAVl_3RStJ{978FO*Af;F5p80mXZCDOjw-$a4=rv>KqkY zUb}MNFYH}P5^l@IjrVZtU2a6NGxiwc89^MemTC(i+=xYL#spoE4;6!`0t`iCR$0Ff zz%&>r{WdDD3Lz*|Qh$=HJP*PTm4ZFxBCxS^nusJnBG=A#Q12ne5p1fm{H?iJU)jBP zpZr>^4v2}YpFTz-$vCL{EU!AR3qZ;Z9r&QjtkR5%55HtUgJo9nL`77!9kXC7;B=WC z{;{v_RWla)p-P;$NB0N9qTHvZzT7}sCT-%C8i6~6*SNiNq5;drtR73@YD82?`!7e6 z(KoYw8A;Bq_3cf@=~e$!bXINxdLy&K{s9}qH9*RMiLF~P5??|__-1F&r~of%x_fH6 z{B`Nzqy{%FV!)S%`LQqjxBY07xEf8_Nc^~rf^KGN^yqF!|9$a7`=gRrH@nvEPW6g~ z_jypl8?^K-CY6lyDP}lxzMcHT$0lpP6f%`MAy7JjaW9MgRi4+UZE#4sIs$y7nP`NQ z2l61=GgGJX`S2CD3+ZQi;zP08!<)ww2)$dp;(M=}Zdrz}+;5Tlv>m&|nTN6ojy)~x zhK|W@f59q)4l>KT29m1z3)K|bYXfyNnASzJ$Gj6$D4bE<>FKXXuLN!{NWYjO))_5^ zMN#sLEY4_il9ll|m3SCScow9#hvkYUfehQC^-94}wb2&1OolF!xtLyY55Ztvrpit~ z7hV;{p~#5?(A28zOTf_!<0;+9hRF?cgGSNI(d>m2tXpWX>*2p5P3b9~uTyv|9ure%=aEW{{FD8H076<{_gWQH?2p3?14&0fnTb*sA)bwI$PN5mXgW)z6)385K?>HdoOH z{qj{&RrGY}bPY>uw?eeaE#;26@`=E@uy(1S8R!Lh%(9ST6=pTQ1e_TvpcJ>!D z6AT^U`=#RdRz&)U-6PnlA9`u())K7X9 z@4yviY=q;ZZL54D-xp(DLM~E*q_x$wvgS@xcX{uHLmFlxgzJAyWaVnv3nAP1ZLF8# zz$hLhp=v$Su;~-3q$GDT0gUcM9~_Kr64ig&(sX-~Xt8hPNuAX7t7}_Q5s-g3ljjl&_}}?h{Sdq8rVKfM_%E-jtFPJPWRf z@)NCddoA8*ssk{hqB%!8{+c;Nl72TiK}FiJ@m__&dRg(=10F1!-_DFqDeV=o7D4C7 zOi4d}J4sj<8X$0L$Rz%E1PL}!ioJW^472YE$@f7px8)(#0$T_7DZL!j=RcnBUAV7) zxIHi-R>Nj}G00sL0$5(eFrI#N-#`qiTu)j{%Tg&Ho+Sg zO`r)+($F;P;IL_yoi}@nH*UUxt2UUc`PH04SXocY{49e%PQvhCWq zLa8%7+q~5@GLNdh%s zO>jzo&+gva0qE-wkcvrPkGUksJ$Mta7%pW{k&$eg=n@vX5R==(ZT$gmUj55Jn=q8v z@b`spHG1myjRgK~$52xR50!J4=S4JcG=F{8re2)zjx}y*+QTAFaG3IS+&MOc|Hugi{LHYx2r{&ADyblWq^VGn?x8y6PsfX{0duss|Hb z#;3Ozz9 zed!-(=pNJeJ!pQy>=k}-oIi@%VypkX>nIwd^N+ul{0Wh5Z&SzNP0IN8;q~5M-z9G!Pmwbm6ATWB9u(^B770d zf8H6G)SD&TQ!b0xm9?mK;TrC9Aj);rUHZo;@>3)4Lce#|k!Fz= z1=LT0^Xh))N|>o1bhB)K309w2eks%82#_-^a;i;U*c-xD9W*&1)D*~fW;b6; zJHgxKR=AUI_EOKI2n4y@mEE)CNK6~OljR6AJ5YBG>D`kO+@rhB3tt+dK51WG1h2a8 z{kaDB4t?*0UxpYpW@dsbnd_NR-5u*V-o8iIZNs_y@;kVTwO0IIA>fY)IpQ#C1El<5 z&YCU9r0|#f5})qo`kp9IGUDyn^^pGqD0^`H%XW6uC!RfON^BgbErQE*sE~#*Yg8i<&XynM5Z>P4A2=TQ2im1-~Cp#_Z&;8byZrULZIe`>5rp=+31cr zL@S!6G;`Ox;0#vJU1x>B2&LI0-JS2T20hY@T~W6M7ucc_&qVM^{KI3!v)7o!+-B;{ zfUDwb-0bRTLrx#7D3QHHo4xfoCePpdKB~j=mFX;xeIzehm*&^b*h{5W4?i@V#Og^g z!HdW12v7zmzcIDA43mDS87X$!L<&%;xe+JkKxx z?&v@{mmMAVG3Xxi3{jRM5%LU^^a2i7B7bW56+Nl7s&Y(=_TZnmblnjW zvSDB$#kst5n9XG?$#9f9KCj3emy-0XZBe!eMmhpwy#GpD(M>p>8xx8|^Q8X5g``DQPNwUd6W#BoFHh3S_bG^Pr#A>SFpgSmX| z7nUV8bEImKHq)~CE;Q=$r<`~XuS4mNiN!&4+A|sn?G0-~+ob78?*R4lLa#ZMz_2r< zL29dC29=IWPwyjsW`KU4CIaJ^2~en9D(@9mliC16h)zA37};>Q&ppr`42c+epSr|0?;lw344VGpL66o8TWi*-dj99aV)z2Ro^+0} znNBamtx@(Ix()ZM>gR*)%3q#!XAn~|>-Ws2`SZ~HD{NDNKLwQehs&mQ7C;%CC&tOz z`J)T7G6+*4GsE2{>0)T6qST6@^fZ02u@6zgqSBp#@ zq8#H_{lLmc4EeeKxyMYLaBoNTeSW=0^Q}4h$`G&{d`kF9mVR1qVKVNJsX^4IT%yMv zpV-lg&|2egF1HmVb=e)z4(uoYELGeJ;c7c$!oL*inY`dVFa90!nxn#3i^|#=d9?C9 zqn5<8R9=1K7xNSPQ#!5G!$N%>9oPUj6xPvJ&4c&TuX{V$PruiUGcCs3 zT!}&9f=!F%?l<&T2!_j(kb9J_$Y;LvpH9_hW15aq25$E)bLn@-D!|^FxK2#T^uvHH zT%GUZaCkAvFAKz(Q;+|+u1;m7Gh$5l2lC|8ESo!S730~s#Ti3EmnkH*>2HRD0AH?6 zvZdG1DAq<5;{8eeJtF-hD=-3wMCot;_+t|G(b?=F?2IxiRHgR#rVQh^Z?MelWr#phuLAGz{8(LQf-^y@)&0x^GvX4??_w1E z3yuFg3IEB7+9hVKh&Cd~zoE*{5VOX#`w3JdcmC~cqD+qt1xN=3Bfs0HrqUn8{VV;m zl3UvIP>6Of#e*r#MGpg_fsmXr;P>)fvQktGHy@)R#t!Ib4^kH=z7G#^{$Pj(*XASW zj+|P%{+R+V_zk=B7Y@F|IeaWp95Q5!(H;Nq7oy1)@=`_bi@c+}kuQf%?5O@P$p80- zwH1EjpqtF3^5WlZTnwF!K3YUgc z4T4xG6s<@_jk?UJ0`39aCKL4U-&)dM;w}6;EXK5NAezVrm;eInSzvOATDi&e1W$*f z8Ar!kLp07j`2SX=R@pbEqQ8NGwXh}FeIp05wBUcKK74%n7(}NO*1#4)t5oBJCle>i z!UQ=q!7V0N2!Sh0uPc#Rsw7}R1y7wo#Y|cg?|3iChm0s6JIQSpXRJFpIvVpHW!|l9 zWDYact$BC%JjHWaj=g{7d0)BuT-`miO?NwHh89~561S&z+0y-kaF1MYPYgLf9J2u2 zBS&}YbdPt*h^gmqi21@zIfRKzM)#a}RQ~OT>7E|4F{M}r{g#VwlHpc7q^;*#?4Nh@ zfXVsG&i0JRr+TDSuX}LrowFc_ihX^Kls@jbercIY~1Ty#&%)MHA(=B-I|4XCWd z*iuIvr0!*_p*_kb8%NUfWKTh-kwb!q=GGe`}F4jNlIFrv63G zCNC(BG$Ov-sbX8BDu~#x;}3AXM&Q2MXNDKAZwr>U~oYk^bCBY4?3!F>RuCFUpf0{z5l`K?zK6%Jm%RlwcK`W<>$~f zvJZp1ef-a^^_hx$d!ohdS$zwjk9{09j?QhBKUz-<9W6x;dXGEJWyXJyOuNnh%I1Uj9m!AEJe2(~J6Xn`2T07@LWGniFfdO2rM|Pfo z-6eG(a8w63x>5ag&3iKABS|yUN7yuLEj>z92Xa;j$wC-?wFO$_8!xc#jUF_wvwUd% zpwSHLz5Wp=V~|_l?E&havyULb)tk(K{EL%mJXY4x+p?&!ijD|He+Du8&1DnWZz+~} z2_2lsly=<_CWu!9?v{2dO(J#JOWyC-cbscUdfd`km(04B*R^+ljjUMd10%lLJwG=i zA4+1WK{3MnAZ>aAqc}jQ6m-mWv(!v6-{s+K6E#BwLA1Dwvb)7YjfOCA$cD@)EzaS9 z99lZ0TzuXxG}6;pP&G=TbzqG^*SKqDU?0Vd5!=>e5o3cQ)W}I0z?Ktk%<>5B`f>zI zKD?<6{BGkNGog=5ng~v6a{HIa`G|;q}Z>d=i{@X5w;BPB*ZT?A8jf@}xmQ+mbo_jHs6$KR(=|53&mo>x3v5FozOh+xt$tPC${&^auPK9+A z`8??HYearV%#&i{(i-&ZoU+MidnLvNYA_6Pmbb?)0jT#}SsIB~O=}=0BjvF5Gs9Ba zOFC?q9BP_9fNM^DUPm*Byg;ZTSnB9S(1ms&JQ2~rK_SytqxPphF6X>rZpp8Xlt+Fl zaLs)MpFsQN4Ni|aAMA6(jG8hp)|+`4N)m!EH%lL1f)Z*UAm;a3x3qO0(R&_}`jah8 zU44&M7;s_VXdhW#|$-urw(Lt|?5QVl?^GpiU6M5kG5yhE( zrGdj+ra5>}!T$*0J@FOho}Gl*6yX-7q}`BpVzD6EG@IFULN)UJ>&m|MgzrVNZ8y{9 z1mpI1J-vw-b;o5BVsTlI{~~TT+eW> zc=y~Mibn-7Bzv}5J;v92?@)80f42|z?0ZcxS)V<@`V?e7+B5e;82~Ugz6UGzHqH%W1OVgA1n&rfV;o!$aK3ifiZYoWL_Jp5SK`%K zP=C9q&OiMWzrFK*u}V|P2*1O8Nh@6br$X`E? zBF<1HN(nhPsJF z!%Z=Li5aH{WW;$$y6BwLtbGQ^C-C1dV{4}L)*4j-{9nvUqD35`P_Yum>u;w=8*a8& z+g)%qDz;>^Oxx!Xukr$b#NcR@Ys~Dwfy>`|1TpH?wKm5!X3EZ+{z(y22AVCEujk_Q z1WMaTD2&8BuoCbMnq_rkrYlFW6fpSjeO6|3{`-%ChRCwKTQv=}vOnajoaG{hFVQNP z)=#f6voNcV5&Z+-26^~&wd9xn2Gg@T)aytZVFMl++R!f8bD zMFpol#$7JZ@uFr>HV8b+=TyJKpp8B$YbP=#HTyFm{+_eSy{+}C(84?x6`Tfx>%~Y# zp(qKSE^6#wunqVCePiUHf8~mp`Z*$2iFh#G9^pdMU``0j2nV4h>v)^4tiT)#qjicN zjnzgkjMok|YzGz)UTlm+10wRJE1!PUN@I;vC{95tT~v)f>W%j3S~QUIYIxBGTP8Qd zu|pV~Noi^c5v6HnVU#I2Q0t$zz2Syc{$#FAS1Y!Jv_(!WvA*~7FzhrQbgNsOqLM_E z{UzaVaS*G8gN!(tykau8fbAlgSlBd4v$J2Mlfo>EQCbC5c#l-{3!mLBofk5!wnSIh z*GZV-`W@#tyUfm8o}9B~d7>yPmVPJrKKDSzPE;;NbAy;?X;&^9JBaZBPsWVWQ?rXs zx?fnGc3XkSA?_7-VYzR9F~OCP?p$=77;L*HqtDB7D_>A#D$G)vN%QmrShc`Q zY~WIOJeG1*>wqFfqDR{t5+ZnlFuR8c!NSrADQ&~r!+c%{5&OASh zj^BghksXhY)z@B1~LDj#?QeTUNDH7ltk+U<{ihNqr8t6uhING+mwEN>-j1V_}Krr2!v)GaWzd z+$KEW0|)l$ms!8()>lA4<3Nf?kXRJ$Kn?WGnb5ljS`T-E`dq7x7iaIx=;z*lv0*8E281$jAPgM90YuV{+l*)j7 zRg5mTxo_$bkFXF$Xblwle$0y*_=h@@y9 z+#C4{7%^WY#O1e_$~>KhNOvS~9j!mjnWU|_R1|HlPVSzoINC>sV_FYe^d%o^RV$RM z%brS%A9cnjNR}KZkFwGwy})UVGP=eOS7`7^v|9c2%;=1Ugb!mZB;*UI1^l><1;s>Z zkUm;edBjVzjaXJuH2c)oNCFAkAvT_h(t$3 zQ%Ouil=GCA@GC9p&+Vc;2~|lZRqIP@&eJ;~8H#590>u*vW7pld++uG(g%Y7Na>%*JU(bu#l(pT7 zuyk%J-G&M`#+cH*Vv9#)aOJb0W-WM5Yr+a6w<5OrQx%vozw2>Sb?aJsS_T!JabhQz zmuRfYuk%4R?_BeOIYUTUknQDfupCGN9-|lZLs-$p!n*0A&1fU2Rl!{nnbL#iJuer1NKwW*+=u{fl~P zm`|$^H5Cy!&X1qZw@8=gT_6_fx}(!!{iM_^J)Q{x6RP~0K8l)Lbo&UAc8u9q{M4sq z3-$>vndN!Ykz!_U3hu0T zXY}O}@;z9NBC3OL_o(Nwju$z9-_vZ%i}Kp^@QJcdG|IK)eJWSxqjkYasJfiqnjCNW zWN<|&xer`$$y zAXjIl7O_odz;Da!mGszUj%4Ta&lEU*_%YtbWxK~19TGs~g~>0QDYPV~lWX?>OK+U{k4fOgSw126Z7|q~>_+j4 z8^|=r?xpf~{*-5>ye5$mBhry`z0Z~lZuRq&(QWgKx5Y`0C!1uMX6*jL-l_UgEgPr? zq9uVI6H1M|*8{I04cp`qcabvdZFiYuis z6Du$)v^&+DUmV%fGHz|`W<#-|OQEUNiljW_{#r*^NMCS=e8YSdyryOA?7Tvft4!@p zXDpC3Ca@_o2pUUxdT{3c1nnIIt{prd(3Z8!Eq=qKOXRjB=tBPJ5jDsYB)|TI2Avov z%XY%9zx~X7_YT}ZwZ9YHc!ewZ3QPD>r(5wY=k}f3K@POxR*0#Wkezv#D*7h^y-~yf zVtCh+1sS8Wd=}zYkOd}iv)22yo1ZYM(V@&dLxReFB)LaYAC2gLiyc78pwmnQ5}uTh zgM+Bcra1OmFvahjDlA-**~T8bRW=KLUt@khJ~8K?3Vi5IT1xm5=lnPOuZ^;F}qCohtd=1=@yBKpN$YW3Zt;Z-pxHV)@w8xu*c{`<=8 zMPYpQ=2bPn!;|;7VWBzxve1xXfOL}y*kot6PD(X}i!d#(k87WyWOZ>)XL+;wV$s17 zv>04x(hhjAwMu+FanSCV(v~!BRUq6rJI{YmNyrL-v6~P;7_V32|?V$V_(1f zAb*yM6%&{i?IWpmOp6+&|JxSdAb$r$eku8=Eycr8x;uUBHJWZJBP^w)xG3xVm#vL4 zQv>vox{Zwx)j{F;L|7ogQYngRf$eK5uY%GsWhQSGg7ed;sV!T9*wVj?A&Auh$V;j? z%mrTh3I*=aN!Ky}-2sf|KArZYwFM(L)mThJp16EdthukE>REv$6~vnU;KM7_^4Y4w zlOH{9RbUa%-(|$)^GWQ@_oyf;hBwht#No?=_ zZ{8+S)9!}2;>4=Z2uqxx0;x^^FnJl=vknDsEnT@VvxZ!NjFh~ie0759AZiYrdixY$ zYm)b(nx(>#t_b$JL8^LKTl8#8cU4xKyiu3w&{yZLH>qdko04d|cV*4K!bQTr{q4U7g>jCR8UdL9@;Of>^UjI1Tn3(M4CAih~sPcjY^Ku_{cFuYUN;N^#HsH@Tbq8g7V8R3O4#Baq+93O_oh^8a17P%eyK%>5#Q`$4J4|CxeL^~Llv8|tn&$YH)TJT93h}*6&ifh~_ zjd(8^#Qy#uzaZ$aa5cXodBcZfpU{=XeC93RIkP0*_FeHJpIhRNZMMzd^kT<<&^boC z0%_|)WRr*}%_R=m3VB;t$q5Jy2aFp|sZ0X>Q0+L-qu#Ne&^!CNtIc_LXG+LbdM8G$ z_dh$FrWW04);fsCRQ;I(|0_WsrXIk)+o+{^EBH&E++l_M!=nn2l@vkq?&V%&`kaO_T@z9aQPy5glf zI=a~!4dL+ae(L#u1(k+=`dkR)|M`0}IO~&zj{*iZonX&I2dKGbeSNYIXQXvf2*I%^ zS@2LKNcVvi(ISTif^phFNYNx}$EBFy!%(v~uw!a3*kG40Rt=XwKwM~V$Sl(RvJnY? zjMux;c3tM*e4FdK0x_8O^n7{V9a1I)tX-6JzVv*3xqkHY+#UR67JT6FZ7S#YuX5Yy zO(84oOX-K(10pM@#vXaJyu}~0S*{o1fSkl(DNfsgQolR&g`M$wcB-F>pgo9gs+bxA zH|^H!vY`gIYW(Rv0ulQ<{DQDZBB#pY>0AklUF4R|IaP{%6;a?(WJH z&xZEw=U-&cMDNvp+Y!0SSls_4(cc9=h13C>7(s+xAm-pnasS3x`L+b+vl8F>`p9U^ zKrl}j+S_K*5ko{4|P z845Mf{xAyz4MZ;>jCX`o{x#`4l`T>oRI86Yo<>17We?NiyO_z4lqMW?YpiP2`eS)! z!Io325|%y1-_>!y9$pXHN3fMMRT-2=c&NMVUqYv6)s-v4Y}s6Dau%J}*PclulA>F1 zE@2xb>KFAMeJ8G9p3LIeT=k*vS{^Ie-&_UmaZ!sbuJX&0REbsAr{=Zp{To6;m;J~Mb~ zW|X9mkxQzK>I3D?o0STEk?YFjQsHc&kvyGewl|gQg^HeQBFd8Sh);hQ70q$o`iabr z;bPl%Xv@#<@RT8owHDAUA384>+EM`Q0Tcu>W~EK-?|pmtvY1qN(8>c(x{sG8K057A z#OJc6mG8>5h-<}-NqBPiICo_eJIT9h9zw8>^$4ES6baAXn;c@QEb!~;qjfXfQcPQOE=lV9h9BJ5f(%^<>osI*HDlo{q?_?mR$~44hm$Yo_R(ibIlnRZPdxzW_>u*R zc3S`>p-A7Zj8&PqDD13kMHH=bxin!H%b*f-ww-d@hj7uiFKU$iOHL$(MLwX-_@A?d~k_NNzVn!@8xXF2K>3a3O(>vOE34JsJ&qco z=MWUpS=Z{W7x2eZrd?d`#Xd>X%m~)yHl02Cm&kK!n2vo#*w>(f`v;H~_VL{IU(-Zw zzM^Gd>?OMcd=JYF1{3D%A42E-yCr3KCQQ45EGqpWY!|hJD2cRkgqT17QaiQM#zMLn zCW>z>eDnON;>TD(QqO&KMx|B>75J))<-C|Z{+(rJ%6{opr=ed^XtB>9aBq)kzR?aeBy4WX^3hM72aiR`Ce-MG=r)sd#a_ z1S8iXhI3U}HD<$tl`11>T&_vCie=GyK?cQd{;;+TA2gvRPiI?drrI>(tph!Tx9zt_GI!hSj)73ZhV7-%&(2 zEy^EGsW59KHActE{;3)cE}C$dw~ZM_wtUMe;!TRkT9sqXkuOPOhdhXL9m7hZ@Q|lH zGJBpXeMCxp=PE13aFv^z^E#&@1UF7Op<&VN zf#&saJB3sE$rhWWF|=DkYK>_1U+ajHhlS++!eKh%{1bpMf#=&`v#rgVj3Rq)2ao#r z=sBCEMseyw&VPXT9EV?G9V8A>Grn$iZu9co^ry`vxNaW5g0Fg?MseqFV}U^G7*_nP zLml1H1A_QHN&PL6I6=RHew?P7<|)?zm?GuK@Z0jspX8C2@q`jb^(7|D0ae0PHW}4N z-5Q;-ECJwDzFdKpDO)(;PWurqpt8WIFUxQ&okCyqLtUZ*q)CwB=UuNw726Pu*htxE z?Yca*spt8~4)SPmwmaLnJB;S{zZFp6C5-!`t2lhhGSQG+;en| zqWXahD~mp)4knNptKOSrAOZEMKC0Qf-KNB5bPcpc*u6<>4Q^X>x?|D#fP>y7cReva zpEY*vh=q4D&AcIV9BB~T7$G!6v{nM4-H2Qq&9fQ7x>gFlIB*7SR%CDT&2kD3V++iJ zO5r^gIaH_Nkj(KsF!Jh$+!vsKJ8-xdq1QAMuJdVYv}$YYxKxYLujds!cvyknkqw00 z0Kf|?uA%xkSKxRqUoK+={UGIUh#J{?kVT2Nun)udVYnRRlZw^(KC=Oc(HuU;m&N(CXK+ ze`Kk&6gVR_tZ=<6YqRU@Cb+4o6DDMfdjp=iX=YPIqN3ROeuu0RcX|BZkfRN|m8!#G zhH8Zjk(AvT)ZD%`-B{!X`Qv5{ed6$>5M)clu!IqlTmA4@Gd(zlmuI5gmtxb&CzYH_ zI#M*KL%*{gSPR1ol@C2$VAIw9#*%@@&@vMSd)$k4B`B9jOePb9oL5S$yhP_UgtfR<0hXKg0)#_W?Yzxe$yv=zU;_cmeQd&pz;ZIeDk? z!+(9!03ulC1D((}*nd^ztr7(*=Rj_|reW^nl{F%VUX+M=B2-fkZAS&DNqXoQio`a zd2Rj=oxd-vNw@Vo$w@tl0ojetAr6WB_bxOh*WG}F#UCf*0_)U` zFQi&?u=JyhymRxqDF|PL5{Os74VH*aZ8~Jv#NyN@_;y%Pk&0nGRI5%{;(&_&gv)2! z`sa1bK@s8i@Na=D^75-+N<{q_ge4@GCBRnDgBv%ihp*EWsYlNc3lMA36O(u~Ox^19 zjby-b&Ig|4&pc@m!Ev48SVzRkHCMhJTDxnjKJT8#NhHB*$%)R-dw}F`&FPGRNZ6AV zGpEXv_daUt$**y5>Vvh+Vcn@c1>ONe-8_~4-Vc~9(~=;zYg><2QV+bv+xAlo2tn$c ziv?JVVNczXW|fQ;kJ^1TiKmBfycPxW9?KheDDA1_OtQ3DG)*rA#C#v~>A$=}$G{wh zGhLI~1i>2Q&0%Q{2(X2+A!e==;mjd9h!O~XdH#XZU{gIHJ@i!a?SgvMj@Zob3n|Vs zFx6YV;KPG#W`Kt2^jmQgQ$4JniJfa~)-=wY{@e>qlb+|GqIQA+|FQ5=F%WytwaA)s z`lAeL)#I7TxNhgD*9{(#2yS~Ac;|59U5YTlE?DyXZUUVW4CI|X&8e4oZLeI~p{JJu zSZA`PufxO^=Pp3{5dTo|n>$W0^XXYl!TZ7QVUmTEGUHq+=Oo*fEoh^z?sBj?{GLmf zpKaxnFA9vFUENk;r>O~_O{MLTydAmvWZxed1;tQ&#D4nSV%db+f0oEZa^p)-qCK{$}IOI-sfjHR)PpS-BPd}f~z zT)T>Z(72HIeK~U#*vndCiJee)`l8)PY=m^3j&v8YpSrxWZ*A&>aT}Ple9g3s%PK^o zwi=mzIcEuC)|fKvt|_c>#QRv9I%BRuZIUV?SuYtSi_trxO?>!tum^Z{d(f$1ll&UZ zud_Yr;hJC<54Hnks+W>&el6a!G8p$}RCVl^0g-Mr1tbn%+V${;-Kr{gQ@E;`>!MXA z<60)E3k1?nL`3_XVhKRe-+q zJCdxKcQFn9lK6>RXV*qLaDzGK#O;SQ*A%i#X~*&`PLZ;!K_tY{w5yuJt|F=Y2W`oY zcK#2)joD^*N7JU_qIWH@Cr#Qzrb1 zjdGLud&7p>e###&ufl?L;}2m_7)B<_vn26(#q%`pn;>fQi4ODLQP4E8lxp{UyXY1C z-~W}mv$&5_$kEU?5RKxzaF~VO%*=0&!?7*QlECtz7@5p7`Y1g_PS{5Q;KN#6eNUxu z9#HCA{-;=u!iBG9n&&Dj3c5BtHs_Kl z?8#WIcsRl6B5^!R>p~&l%D&-*5EsJhOSBA<5`J^R_VZo;gN+((CP|j3G`J@bFL%p7 zrbu}pq=x2p0x|>4xbuQI280h|E!*EpalzyDLEkwZyF5Co3^0y# zL5ax(FbfZ0x(3kq`W!7;wktkcW;X|JsD@JBNm`yO!>;vGq&Qtp13C_`V#bVLdXyZX zFEd3fSDo0UhJWE7UNe<=YcDig!$`D5smgx@WYPqE?GmUso!t6jZ>lMjRbmWO_bzA# zrgS6EpyG*84frYJC&*&=hGqds> zN+eF@jJ?RLfg+5Z$imk!mbQJ_sK!H9T~$Af*&9?i(@_ItP>I#_eq)pfB+&sRX(#Fh z!Jr0{L^D^GR*XWb$8BoZSa#lx@<`N5#ih46ag@7n0i*Z*yhFzbWKzF+n#7b1N*<34nM7^= zh=N3@8!0v2sg*G=;iEHUB~aEpi7P&l<(W|9AaWcRdMTe=<5@)O`H?J+{|(4$*LpAx z(u{p(@T5+8BjI8>vzb0AD?8Gw@4ey2Bc~W9xF2mS+*F)g-Q}5!j-Rp|BGYTw^@j~= zG0Qhk7B&^r4br9e?4LA6GN#OO)_ni4GfNvL<6m^+@sw3Hz}yZrGc_tO)|V$SQ^%E7 z=?JF5dr9qowKB7xjDFqD1vxn!T@n z)c4iJefH8r`eP+CUZf>dL6whORhT(16&`b8pI)cSPYI%UW2jLB79##Yiz0i&GogD1 z&X1}I*HG6a&aAr4R#{0?oY%zwjFDS|%I}q|v%VQZ*I096wh|-FS%X!(C`_Ims40As zaG*TAx>rPM%CLxTL_Lk1q*nK_*-6_pR1!&Li7e72QqdT*UPsFqeGMqcg zjBAMewo&&;q+)=Z!=k>dC)_J3fA^T%s*XmP%exLsuf}@ z)5;WmH6ju~=^a*aP{%IOtB40t!bzI-J54^aq{Z-gZ6uQKm#PWrM%a*6e%b{ZF2t;g ze>8F27fcON94=R&Ol#j6X8#H%$=6Yy&WJHt>*X8u9C|Hh19G9=J&vl!i2h(E%(HYT zWw3$f!(HIaPCshiL9I_TwK25FCKRuPd;YnJ+6XGHeG23^nB|P^N?OpbgWEkR$C^xP z`L2v4eeYC2;_UtkQk2NdhT#1$eiT;6o6(#4<__oM16*tNtCA!a`79H@EOOsQb~!HZ z<>%0XBbEW`pHqcr+?+Di!=G^}X0Uq{=-6rw{gF>nP@mGn>OCVq3>Rn4*B|>&TYRpb zf`EG=ak^&&77y5^45@;jm&1dj2n$DB?USR{@z{)yZMb#bQ5I91Y_oiWrt^E*R#$-J zjqS0{@f{5$97%u3^38X0O_P=v`MQE;Nn)9Ko$*9jHN~)TkMWK*bS%EYed=@AJ2Wey z4&>6cVI6+WYsxSMVcyu$4se1$mZIv@6BIJv>%5aGQ}E^OT%)IW9^5@mwV>WBS%uJ& zjazMEawaojp|wWBa%nLvsgy79g-P?7Hug`kB0QhaPXXVBOR>JmG&W56G9_hhM4pwhS7kW5yU#HHaR zj%8&Shh~iw5cJlW?}FX4ZH$0CAjRAkIAupfesluzQe4kiDff(>fUBdbDQ*CFMP1+5 zTqtg+R!>ats23DMJI1A?=b(q|CU2UnIx>MbWt8_3IQNlo_~UOZ?)kK3a0OI0*^Ta9 zYL^sh?(y9lN`$81Me+@MD15Yo_oCrOY<|m4Hm-r=z00ziJ<(B*RU4M##XTbKfmJfJ_P z=T~i);zbF3?Eb|&$3x!W8_wU=h4QF)inJmap_+T0g}vFRoqdq{T;1#3H=jRNk%xox z07DJ6i?2o|a2#blol0^6`4pZ`jk&R}+3F?(h89Ok9T@| zXTFdvK%6qFVue3HT96B^D%{=EZTxBL<@7#ReYS`U{yDYECW;uqcw5oi8Uvh`;-O>R zuoEwOA9PLy`S9I(Yk{>sbTjchLA2q#cJ7Cu`9q#QAeph@tz(cELGsgr=PdEVE$d$L zdWJkAuli!w7ny&ACxs+#JXC7zZ9ahRlt(g=G=fK4SWa!%4Ave}&yXa8>xmyv`|;JY zext`dgj-?j^z+QcIh_eY1KWSe;}wgG{_?dAGH77wLUSo@PYOsfuqAOIWg@U3=Rn`v z*ZB?vf(@l}B0Jl8ftvFYUGF{1@{3IqWo5tV4#w69Sk#cGrx~(J>3BBc6jN8Px?W+v ze7uje@#tWWaupBF63Or8tEKx=G3QpVu-Mfi22WBdfemI94Gva!3M%y!2E1Qko_QfKSj=kwt^ER$b7~v*5dSl@?qF51@x|_Stn_!nQ4VlP z)M#VZXPXqqdqy4x^RRU}s;Ls0qmjvZ_@;zgfdT|mT(}s(%?5+CBAYrukQ?<~=RNooa2bH_S-#jC^Nizkt)y$dgRO^?TQ`HeBKH$-NRDbi!dN2N7p=YgjO8(jx`9?m`siZX2Ez>~*|z z-uo5N8AjlZdulb_y>p;&-PI_-o%lZf?Tg#d7^e5}lX4r+)q#$e{bbvaqf+ID*zxOv z<9-yem4K(g>Lq%BaVU&HGD1)PfT8Mm?|J2`5wm0QTo$QF6we_eh~|bA9*oifsts?+ zlBHTqA|tjLc4*wfCuTeWjYH{5Ii-R1kZX<}A3%1`OPcB?%~R@Q;`vvFbu(-M9nwyM zlZ;;VKnTcquD$ULhP$XJd9YWufMS6x zspjhImv_zkKbjU&nD-~Xb}Lwiu?n@sU`%7%zZdw>TuNEwiW|rD4V+p*wWMAcKQ%fJ z>4`EXRznABHcUFLz*=+wG=;epQ&cI<2uaJKfpb}RsUq`|5E1yQyx{eqwA_-4tfTmK zsa!tFeqxP^xD@stC*7k>pf|Oo3>!J&=hEAf9nQ;f^ccoZ{y5rqiE@a+?BmCxCGl71 zQ?5m~0y5MoE!ktl+A1@o{_c#r{T$|{2SGr6|AZlMsD3Gd$r-ZbmKbUO0QSmYJ2p(#;1g?% z5wgkn1oL9eM5L>~Iye3g@mnNiFzZnWS7i7&8tDynt4gRk`K6 za$}d}9^T_ex#w16?((WVaM;^1n!jxf{9Pi&G#w?c_RAv3FB|FSa|TGB32}a}P`)@d zw5|qu)*1e`ev)Gg~&Eo@)<_qlIvpI@F3Lg5YO3y99ROe(v~$ znIBenP#hdzjKM(Ld#qNaNoiI={Mo%Kzh=alM= zD;m9f%+Nsb6eh@N%0UdRn-)3JU;&PKDsCU_!N7uN;_&o0A-!>tr?sQP7_F zhi5LR@`Lw9&YJC#%*wv;7l+6l6i$VY%&V-Iolk8aX6P(+d;JIkVLCjN6m*Op6N_tG zd@%kLU+7f&%@z!ZtxK(Fp11w$B?y79{j^P~^4F8eK?8e+|cT9z8YgHbn=g zvy|(B>#(pi{=UO;D?W)5Gw~HGm~P`}#W^}Wk9S!WiveB=9}xoeTk7pJcrI#HE22r~ zlXQIn%Ll0JzM42|!`&0~@2}A$oxFDtVMU%3HnwXrY>|Ye8{{Hrbog&0jkfwfCk0`& z-4LViq8{p1zj)f=`m6m}&HW?4Cw?wPO^3|$8 z#|m10Kw_Zx;$!2seq2bNk4NvUKPxPrR*9zY35!WF=D`GrUy@2rfd6Dk?Ud?k%}`77 z*iY4ay2KxFOv|9%p_Cw1vg*YxBM4m_dj++=MwqL6Tm)98D8>-aR-1Bd%+IA4X5$*y zyGm$bf*wS>SkDl3*ltXS0Oz{@_70QAvd`Z_Tp@v2_C)L*Y@ zf?|fKW0ZxtwJmt+mU`$4Q)YmsG-+8*=<4ZcZpUQPFX85tI}PnCW|K|x0nPhxu~ux_ zKKTdf{AHQkzpW0U#SeB=@I6Rm*=i-aAm{sb(eK*$?fMXEdkxU12kHaXC#}p-01GUU#;gaoi1t(s+Kq> z%(@zA$@WUCVDECMab<+5$ zM1%uo^2DZiq~u8GHWRgs&ym(b_;>_NL}HMEIDk}!rU7#JR`kGa<=c8Ev*^CiCYe8R z0`&)qb2i#GPf>Bh*B|oSi!dhR)gYy>r>SU1Pa`r;xvg&ZZJnXW?ec#3;fy0gWIlfNUz!cE_dwF|~dGR@p0hB?z8Jlx18AVq9QO1O=FA*cRJq zMfY-7Zwn+v9hL}-HW}=nNQ?|hQt+;if9+piu*+CLK|My5e=@lEFmzvKklDrEpfOaJ zoV1qNT;{&~O7lSd;kq&0V&Z^gmnx)UaSe-BpOTezyz=~Q>gb?3LyuK?P>p`Jb-7>f z0pw*TKRX1-G1CV&%{LCQDzAI@8tR%gtYfGB$R=IwMOH}n1##L4iQcg8yC$~M)MBJg zRbHJ5K(#WLL$Z2f+f#6kwXL!rmY4K0YTVgPps^3R@@yl6h8+NR4(5XA{hpXyvC)c- zy|Qq#{dmLx$t;5EDKeF52?1T9(|@J~{cLn>mPRnq#4J&oJq~3}UqWqP_RcT<%pkLQ zN^{u-{?VgALIpKWh`ug6?yJ$d{!}ji$DrarFYhOMSzFpJ^%Ct09iN5#aKAst8fSrG z3S#Wg!vSb>xW3WvPTGh*GdV3w_E53P92%lkP`?(Oz;Z4CW$hE!TKs${(nI7Lj@k40 zK{&aJUbWv-?Ld~ih{@`$xg?|84Whb`JK=%49W0prO~PWs7m_ zKrH=AXV$K%if8{*&#w#MaBn8hlBy~R<8bT20{qI69^FB_i^yhK6Rb<6h~4Rng>2$k)z^ z(J>1@2%hB&1^7ktH_v;iuG-p^>nOs071hP2-ZLKG4Mw#x%-mw*()ljoGL=I-aBC9T z&cAth-wCq|b+lOZ$b7QW1vjgB*xe}C!ZCfc9`&BF@0C&L{2fjWPP8{98v97vm(GO9l-6yNZ zo%g+y4Teb|xZReR8l`qm{j`YFO_KK7PM0W}V>W6Z` z3vx@XsgnUDP8$RwY0%K& zL`gFOG9ABLjNonHtNC6DPRiO9isI%K?S$1O zi}r{&Lxqo4bpp?zur`^O4*7Sr^~-0F&dRM=m;A2*Vs$H@Vh=nMvi0X98nI?RZ_9ei zL$9?`o*7B%DFDRD^y>*MJ;m9a8wg7E#Yc{FS2sl2oJPPKrvZ(K z+6g-@bOre3BJ?-(&rK@uOVcUU_Tp8ZA=~LV?p}^AuIVkfghktVISPxuJ+eJpDCZ%r zLP&%?lo0|^>ah?W%_ zj;1^b@bA#1WV1Kz5JuFOSrYhGx0RNU?)Ih$ExS^BIF+zH8d7 z2{h{r0s!rbweL0&)yim|e3~^@gGS}T{2OIut(Z9<%-^TSXZy_bgflb*-*tWXCQVwS zJm^$1vZw7*_L+QAZZ5B5;8wmMx!D~a?J#&RFGpn1PO;{2U=ZH8vqWfcpWMqc4n%?X z^a}Ozh#s&u`Oy?+<#qK8o(p(M$tOpt6tGeK6l&ooKKErgQ7tPt#y`j3Eh}P=J;Bp$9C%a=xS$!lk=cre>0fMKxMX+1FFVQ#m10t# zU6}E#C~HT(0zLGLu>go%v$k;vtYeKqnERAlBZwXIzc*K)JfTZE%x8Y`nmV+o!yZx6 z0BI+9Ya|Iy-EW$}8jhAKItDT3Kjd-*(1`!v=yHUSk)X~W!Tyf%@AjMH^WTjSZU064 z@4l0z-AnHO?d?CJKc0{O9{gdlidZ$G_;Xj@8w1ht5ERDLw0|t}59AyTjrng2G_-Z%l@De{W-nNHC@PEB9(l|Co7a`8&yg z|09^c$W^5bbvcBecvYFo>*vzv4q=n-TmO<|0HOtO=;)^84$APajT(bN>7VUQsHXWbiQizTB`qu%{@ek@<^2LD$}P8PKl!>2P` zb2pm}C&hm>UUO@>HD4TwKqhAUVzlPd09ni=y~<2WY+05K67NptWXEU6hxosGPLad> zZ|`fm|2&wMoGvV9-wi{<8Nrf5OUUUW88Mg3Z7om=!q@n-p;|{=B_shiI1vp;5#E zs}pJoVsm5Ua5sXz#fkOj5AhH?!>gVTUPo^cq94Ed`JhYR-3ZA>+B_fVCvM6iSw;)a zPG|o;$3lEy0aknUUN4)k&%{PAo9=<|fX&`DG{QbP%6rMx3%$`tUBZVR`Dd~4CsBXj z?_KC;^!M_G4@JEXgV{Io{9skRUi^OGbN}t=S?s-#L~Pgq?!$yJbMm%?|HEX?H&+53y9gcJJR~Vep8(2%>O8+2Zw?Ogxa@v~=G_)W!-jKgCvF z>+z^t6Mw_}n){4eiBf2ET=8Dzp3QuZl6{>CJJGDBgQxC>_PA;dequM zStGHWqwvPu8H-ygeYV^%OtoMlpg&d{k*vhCf}t`zL|vIiI?L0X|8s~sTdHbIg)}kZ zFNO<$a^oUSFD+4`bt{p3Nnzt=4Eja@yx=}`1Evt!@r$*ruyeV-g|=YrR<6CrorR_2 z>3C`J?Z9y!ZEdu#pv4IHSH<|!qNu=9v#nm+c>cye6+#)%pZH?N2@s!#}$W=S^Vvdqsvq%AZquev-kC?_i_ zP;Q?e38d5ZU*&lu!oc+yw;K*>-(a8JNtXEXuIz5*_$X*7NR*bagOj1sCe8OPa+38Qy+bQCT^jUXweJ>|>yRpLj z>>4u)QM+%+trp(=iz(^`mpB&8rX2?fQG#tU94;vyLZ`5?h$T5;0QS(o6{#6Pyc64V zj^1B5ax|&Y{2H~?g9{G7;3SFkE>Sx4ID~v2A9V*sI%~xEmQraau;DbKlP&%2eZ6EB znS2M99{96KRFjFzZ=JK{yS#CCx?9$h;)OR9=q%`QB}U_?t0>xg3HlFULy6MX=wX&q zQ>v*|T)$C|$C26z0hq0+Y#*SwbkR}lEYr$3gC1{gxJzFezI!I@n8~Yq@j#F6`S$4HGbPD*koE4Me08|XXuN>4D zt-+OPmgelfoeOez=c6PJE(ITdcaAeJ&Thj6aV&3PDzI`HsA0T_MjNf2l8ecBGBV1A zl8VL2sGa7vB|eppD;<2CsgPM89L&F1!oePD98a5ekBx>zAzH9hXmaE{(q6Zx0;g>% zt<$m6CF~P)xD`0Bt1#@U^Bx7yrD+R0?;{3INx`%-3YAU|V`Q;e2h!kGdn@Kr3Mt!V z8if#pb@;)+huf&)Fsm2c^};q?W4r0ZrSEqEdxi2pX2!F+rb=fiJuqewUHZ5pR{J`Y zC4W+VvKQhrmCurmB_DI$zoHSj|4I|3qVoBbPbXR&=QGdJVSv{3HOpOU$0^E6p)X92 zNhx|ydh}&UXcWf)E~^`iGLbay@3xd?!9+s`4MwR39@=SO6zeiR!8GY_BJN8VIq7&S zP2r2zlb6)WsU@#{?+*)oC;mEoZUALNeTgFBohtHCz zRT+o^)P8FqEk+4XnH!LnUo6n=u$L>p6bAlELeIU63LH+7wfmZ!$8l70#|itwsUgZ% zz;Wc}H<+ZFbI0iQRDQ$_&P$&CMnT4PB<~kP`?reI`Pa#4iPv#(SbE=cJZnWq26D0) zPYX^$q?_6IpI%Je&)_h#nRsF#=UA0F)5q2lSSyy9f||<4m>0pC<;R!&&gT=%1t>Il zjbopld}Lk7V|kT{e1^Rayn1z?T3jPCKozLEgv{XYIL2iD`r$`-?SZBM z&k9~1cP-o(e8Vgs+tBPTA1Z;CvHITSaHks-zR{Y8r5OihNL}uy5UYRQf{TK~gBq@s zDsL=EYbeF8Jn|kD+_+Y|RYUJRxos1Awq&Zum4{m^(0D^0uOoS%wiS6Q2VhEOk+iq4 z%EJ#4ZMvx#{?nK(<4w1CJd=^$2~aCA)4H-l&Dzt$THDs<^>nz!2`Y&#&l2eQ64{VEDOI)4uLl3@imwt6>m+eLrYWhS zGLN*-o*>($UsJO*{W1k*7nfE9{lSWI>^NqB~kwwD&P|S}%}~i_D@Y zBH!aR)_6AKMWsCn=v<1CvaUdd={we+AWDuKO{7m)XMJ5Z5Ly?ijm`>gJd|kdUj_x# z;4E&Q3|aRs5C7`STxX z>4JL0az17KzuwWPMR>S43bz9oT^I(AsV0m{I`!8Biich`zC(wUKcWHUw$&k5yjpyE zo%fQM($nuk%YQ0Sp)-m|%n;B9Vl_6-pl?p;VRu#S`(}NjgC+T|vn1)CAoO zGXK(-jgH0SK8msQ%8EDNkhs|`YHYRppBWNrj1wltoICJKh~s;XFy zBhHNnyIb_8#40v2R3tj#gCDSt{$)i%>xP6%T_<^1dZ{=Xzb*R`l>6Dz;@!=mtB<3n zo<|xEU_mEhI0eghDD+Hae=uy-O>{@7McJ^QR-HKhX246|qlL*87FRXGTMcJ3b2Iq| z%Oa47G^&8N8tD$;v1o;GcbZ9@X$?cPW5ZnyvTP}bqgx0hn3A&a6c<2ZgQ=+#AmcU7 z@FZV2tBe$8mvq&Q7s?w|HaN^khfr?;eFmvy0~|ka}Wx6Ji`>)mh)& zjWR~u&wB=!pR`~MTSz_Z!PKI1N0F}39=5pL6`=K|9}NKS4_^!8j?r%S_~%2*qjUN9 zC0`f>WC&>}S(3D;uyfGRL?8*vw7C{OuTgEzN`iU3DGp^3{K^-<^QH=7>7K%I;)ewD z{JkdK8tTjee5BV9G6g4op~rkgp$x$>qe5PMPGS=o40clyV<|p9Qtj=9@GS43yKL4Ntjkt=aQimg)ZQ}X}*8* zfD?7uJNYr`*|3Ly=PK1PHY;L7x7XglPjZnfTt?h;-y=TD;EW|4I`CpF(YTZU_taN( zeytF4Gizj8pe9hfAa>cGv_qG$s1Wl($$D4!JONn!maJ?u*6TjOY%>PpKUrF6)|i9} z>{WO(p-wO<`|DB&=fXwSI~w!kMRS7+ca$r2Wq=0WZe||%gA0(W370TAhoA#vm4E6Wfs;&Ky!N#atXOLT_Ve#ezH)0>RhWv4&s}@<$V8>Y4YPMTu&5tRngaf3hdu7hyzG%U00WbhN8gmI_}iK=2{r1BXwB*)EXJ1 zxUK>wF8UQVyGrUuMcVJUEMEmEU;T+&*z9O%P4 zF_#0qhzXKF{1g7WJF4EO69OI?QCs&k_LO4rCb(WsGM6~`=}cje;gsQM9UJt?WL^LD zunOvkjh>kMi~f*gGbqnm{}JhN3Fxr$0`TBv+|=f@t~*a%doGG3l|i@rT_&k*s1Krg)#8{sjHz<45Df0knGoFq}p^WeMfoZFGnR&{a@C>o6g<`SK!uQN`zw3H*<25e78T$OfWLm zBwnL#5uc-c-W536c|#9=!R?=X=88c>k-ecxKu-R~i4`8F z-oTGJBHyj0DD(iZ>_pBbN+*xDXXRth*aFUF|avJ08 zelW^A!UW#u#( zL@pt30n)YDlQk-ZxeN3+%tx7(Tpn?N1;_famgv& z)&bBZBejO9*W2X=7lb)AxbNkG_^`$p{HsLJyz=QLXo}=2RI^(-^`}&cuG&TI)EBed zxjMb{eUuyO7_6WkX&n7m^5Kr-mF9h5qLOTmM{uhkZiJ2Wu~x=9CrnwkXJ`}n6Rb{K zA+Cvx=cxcY2QKMVUdKL(>7Oty#gy`%AkP?cqT9gjT7t@meAe0XgdSZo*|{7H!Ninj-mliNOHklQ^IWbzKrjXA2E_%DFGaWp6UAl0)?ERKr@}<{|4q)uHls@P22+tgGY@^BTLEBJNsg zDm#D^G$cZ33*(7eaDYtrM__rBtNJ+S?~7q0Esu!69e?do-6=uxs@2sZGRWoU&!JXl zp(A~ZE4@4iJp)J3Ay0>C#n)+XXWeAYjNf_AxbfH;So-EC+GkLUiiEG4dq*UhAT!vu zn4F#V-^a=ZHpq;lf#PjVN8Sj&=xl1s`%r-N+QUp%E35kh3N&0ru4NaFVR_*R6rVeb zFCk8k8i!Qac7vwZNGc)RTo(D6GgY zVPUTAmMuEFGmz|Dbx-cvplmmEjlAgls#L+vP?EGNEH!c5L9s1lLQ8Y31^p3QoiK1U zNwRt1LowpBEu$Q`=oGg9M4|epJ9J}HE%?wI)mx+WYoIhD*;*{ZqZw;oJ?ftbk)_c| z=k_k0K%KnHgF2iknD05JbQIwgR`BVNa(&{z`{3Sj&wG$t`ly4Ei!P>>x^`GS>e4XM z`=oVyV|n@P=4x9jSnqUpzv_jsKcWMSPR;Xp>hz~#&IEwDUoclE^mwIYgeSzmI5nKm%STKNcz%TRC zR4}X;X9joR>I&y!Xfy!hyeE9`gSq<~t9Oj%W6y?Fj$AV94au0c7SrFTA5uosu3Fm@ zo^$d!znO9*{cved^}LN65-E7B2*Lu}xhRr5n_=KQO7v?v&E#hh*_|ZVNc~oDmFYF> zIAUhyb!ee4sT3fP7$oL5WV9%UkxjnWA9$G_3on70F#N8^Oq|wGb3qUPui5|A6_L0a z{aV*AODg6rBZ&r8R^EniXr&)6>WkT;k>dxUa&btRRj>Erz3JX3!4Ar3(I@2p>rwtc zvo`hNm69M8AZAfEa=;eH5lJmwr*U?SBUiR>Nv?aD+gJ{HEsWwU#psk*@UE02w`?R# zsomUeTwg-^AQ`a1m6CdeeplbmS9T1NEBYC5En;&F3h3azZ+anKgv9zEuM<&Am5~}7 z0z#hw0)iAG_0}2}P;s%eVzY2G^YAFsLk!eBY7w((&CTwRr$FZTV;aUGj{p@CCM~fB zWyWcS`6Ta-4M)%IW*tIh?_kt#)Nn=YJY0*X9)jthm8RcSaqR^J%|5pLxBtFu^!D0F zQ(ObR0Vme2x^ENLnE`!otS3UddLJjBsMnytBVMYU@mb)NLF#kAjO$g6tZ(i#Q`9|M z7p=5w9XW^Yl_xbhsymK(vH?zw13l4=Urk4Dox;bz)(n#aBZQBm zqXhk?@CA?$8`Nex(t8CH%SpMIrdwMTrYDXP+1);F5&R-nw?N(H#igR zbQfFa9@U&wxkxIVkmyqg{9|bMzbj7Cc8L` zSlzORAU%&qtG~oumt&QkTy^#&mnL!o~#H6*eaeDJXle~UvvI@S^33&x*@zk-hZaYMw;NxFuujwS`Rk}rUxU{XyCk*dA? zgldwlxs($wapoNBfnLW8N4V7PeJ<`4$rk6-`dffc$2 zLfD1w@1U~S2H^(mbPcw?e_;imrLm=Ym@%PmjO_oO(M<3y87-^ymiDgFD~|W}h_D3J zxWsy0%hle7V-v^u>hLoivjPb8Un0wtj=T;8D)Q%uB6YD9igl%gv}WwLAUGZ3Cmmzi zDji7#&zRwCW<7)4F7MI1EbBIcymVX9^o78eyHDF<4(~J?Db|-ul``(g0~HnQDgRq@Dr` zGO`UO;9K{6og0OCVlQLq`io`_8biuN0#ABd@O( z`Kyb}f(0YfL~Wqvs4(MG z1)pxb^VzLP+#*SC-FFcGOc$gGnhfZi2jaGID*pmOjc?L!Ty~i3vtIz#S%AC}5 zkgeXS2WF1?9Gv>ish$K#6$JcdJTH+H+@%+F_%9raLx({A@aK{=2v$3Zd^XD` zFRJ$3nM^!?ClIT<$EJD|d4#815sRnMmQ4&R&TqN+FCJS+n!Uu* zz%BoQc60}w#SUO+L5P{q@FlB2U{tRq)=Wk4@p6b+{hV_4sFaqQ`006r!8*>rXB#{^ zFeS>eL8Rcw8x3N{>?L8RA1q7pf$Xdc*K{LUSxbi)Rgf z3MNNjV5Q8FHNRDJse^`1ni*{e=i*xnY)?*O;(WdnnJaK@TZ>|uGj?TtXTYqUP0?!l zQ-HItFlH(4h0qNogl2Y;OT5a<=e#z^^HCqol)g`ZUZOx-%SCkiv)d+`MMPc|%y$nf5C@pR1 zW@t+H(I(&cpl>faudZ})O3@2a@1z`B3t~6pTM=~4d%XP2a?+caPK0K8wHhtu&o@FI zkuFqHv%h6fdKuW^0@4|1ic3;VdKYAwa z{!Rj_7$Ng33*xZE=9m}s=z2NzCeF#34`EbP(BrLo{>`rDdOB_V0ScmgN0QsgFT5E> z9)ExY0$oXAh&9xC{%eJ7&9t?R#d%E5oWa^#HIi5Uu7IR&o5T5Y+e2Ka<^c}RP2XSNXr8vvK3@4%WjUV8;!#})_%bCg0PE@ zxrxG%RV=C(r{vr5h}5po$034em1-F@?e|KGK})*oWRR?+P*G~8Qmjl@t4dZW($bW# zE;7WHS!Fn~&fVOYnAY;PUdG}jtpdDQ9Zxk`8(I}BgSU6f{BPB&>Ly z#jEIrEFu0hsZ#vj&Jiqf$)$DD^t0so=8B7`HDwjfgi2K`y`MY4u04?dt#V1cUSmDj zqav?z2G{lPA_Dl0fu=T@<-qIe`x~vhuoCy-o~@*TebM)Y>?qrRcIXhbeKp~(<`1cFp|u!~2h-$Kk%aJU#G}D4$&+u4`H?uC z5Dng#hD3wo8*Vdborrdx%qgd6H1j&iU(L(XODUD}nu!m{rkI-b6;02GP1*UhEJosW zFR&DKS3Kv*I`wG5kDq+d8QxD$Mytc7-?%Pwk%-laoxY&6S%ek^h%XlBN^-!#)YnS*iZRtb}?T% zCua~D>7Ed3qQ8|_>i`&YTub+GHT{pUffhg)Asd|DxK-=$kX}A(BUgHO{G?(wG4a6II!=JhX8HRQqsh;X<=bv#v@wb zn|^)({8f5BcY=}HRZFwH(BmP#=CR!9qdF=mQw=dj3-`{2@_Q4spFeEU8IkFtvhAg8 z%7eutdQv$#)wQUMH>mVtO?A}+@p7Ny@|dXeht1ryaH8|?cu!{f(=WX-&L;+^Xu(mB zH`Si>eTqJ}@PH>Dp!9S@erEi^Ez(baCO*dR|4UsSUFdj$IsvzNbzUM-Q2&fmHjT_@ zOH!2|?cfd7f8rKR+tAwmfS1xOY5jFkP67w-k= zpV^VKV{J9AlB@C$6s0%WMA$nrm=pjMyL7L30L>DtSrvcIL%KF0xBYiinpdNtpkTRQQi}Re6Ft=zw$ZbPuZ!O!+5H5ryyxPSaGfY zf@1^mDE#t56k7boez6XcJ_bgd^*Q4%L!i)wcLVoU`r70?>ZTofUy>zG^K7TQgidT1 z8YCM1ti*W1jV82q@y(hkbx^{7Z+5)cNrh*kM06$&mI-6LvKOSj^@ag6btxMCLq6&8hKb?R$|%1(jF zlnDx0y!a42wleh~!rC@FO*);NoS}4Y#7#z+P0qf4-{7oK-_aqE)Nc6RwfMu69a9gy z=s(eX74o@kBu?cIK3wB3dQ+~hLpZUOZF*A@f{qPYFLo@}1OloHuI26vm*R`u^#Irw z`A~34T|^wtfb_6j)M}-`w7vjLIBY?DNc@mPTeQMeNepJ#D6pC?C};KFjO{~QJp3yw zUndrvyh`q}_93_1%MtKqaKFHfpCm3sDMLl!|#Fg&LUpL@3k4)$ggj9p=u>V&2F*F=rJww z1W`YKPD7$2?5!{BDMEupH$u2RzVi0Yx~cs&<^QR;#(smb8F%;ez-i}{MekGs2jwFCe^P9~p zJlU0%Y77wxLJ{ZH+x%U~uL&RJbSux+%xA~;g$-*mjl#!vUc&8;X{2>Ulf10h9@%cY z?j$di!hi~K)HuzPJRVAmaJn-^Y(CAbz_JDw6ijoR&)?ve0=0j@qc17Z^#1wd=wMv4EpapSHyiT>l~MT_Uiq=%ZM2%CMc|QA?2dq_2K*Ri-TP6qCd5S)bHWa&OE6 zGwPaLu_L>8{RUmfiBNf8dS7vVO3I%Ke^8DlN<$`d;K#r0&baJBXviDV=}RML@Evr* z=@~V)z$^?(xPkGHq+jsy#R@8*XTAVMQhBvX4{tpywtyl{rdKf69szP(j0E_2Y`OoU zm<&>j>rIfKiBYs(OYm2*W?|@lNmW1bl%X{m& zG1?+`Nw~LOJ|8Na3OdwtT{mq1gW{ih;fT*Vx~rOYR-KFiKJzL0tMTC1&v=p@hu3!R z@32GH&U;i$-5Q(FzjmiMYRNHLfXJ-nsL>XXlCh{#7J{vrZ)P5cosfzjkIgg6;#dwS zptaZGB;TrfyXDphqth^yHD;a_<5wQThQo*QvmRZaAW41@ddh3JfA_Ge$bpT@LV7iI zgQ$2SEa>C!S3&bQ+3)|qO}(b%J-ZB*h^AM;f+MKtPcHults2Du4mttOk96 z9<#QW<)9EDk>PTwZCg@w`*lY{Fv1{Y6JT)6IO-G$Bpz47}NmF!fvbYJXKm}Cl_JY-->^fQ@{U9VVTuD(2gS{NGya? z9iNe2&#oA4YNwgZL=BW~2UU;W`xX(g@6%E~x7hRSx$_2-_EFaNG3J@1A2~EWc|q@D zgzR$NY+`POWgZ>nnvXIMIJthr?)ltw!3DF2(5Y{Q?I!LSJVX1vO6mb03}Ip!yJE>l zs?y_asPB5bD+jY9X?;<9?6*3_xAj&p#Lxh<&a;r;O91pIhB$mLHTy2^Ie=n8{~@0N zWE`0s?wL?O^SyU%U5cT+m;d#MS-P zW78y*PBz!N={7Q6gyk#hj!U_$e)RUdI(dyVxx=>6ERGLqheznna$dBj6EM*yd>+O{oCPFg@_MjcQOY`WCWYUp8?u$Mkep#r;63MdSM{2|(!SK^R%Vb9 zUI{zXYM|Zy2ppKe#kuM>R&Lr8s6~}(Z=zT|_FCd}2G-6fQ&2bU>}%P2ZrVo|!o1no zW1d0NTQ(=&;Fyzv56g{-{G`T0Ck4H;A}JHfOeJ(Da(OVEmuY>?Pag%Y=v}@U2_ERw zpS1;K$Uz4+`NXXYJUk6;&r)P70QBe3LiNuJL5aVeH3--Xmz8lcJW4J*pvgGP7n1W# zazGW;ZBKhR{Wn^(K<42lM!Lzyf zamG4p1wR`xf~V$_m5e*|V_oS(c;~`z{f4Pw=Rd!BPe@wBT$hGPeRHEfN67sCiD5_H z03z5Tr&gDsc?3!k+x@q8^L=>V^ce{N?4^SdFz zcUOLL(>DED5QC%nrYXA7n@%&$<3Ef=0Y#ycznVRjL`zT_y!&L5tUSw9Em>xqlHA-{ zn#;uY(Uloh#7ZqntbEJy<{A1nRk=$@8nv3$N-g?5(FZ#<>-JT=RpXkR%Z?T8mHLOh zwNMAM`v-AHRbKWz(dY-%;Ek^Z)w%NyKvjI> z)?m13-=^9nxKqoC>sH$nzc!Ci6j$3s^~&A8nxxA&cHFNzwRJ9C9^XA%Ge&@0m&n;h zNnO5}57)yvfj#EDaX#6E64&eC$}T4}F(`D%xQ1&r_u5*NzGsppF5M$@Hbb_y`)iQ~ zNcf{U7*RkcMKQvt3uYEPF`GdMAgK-UY$B0zqlbF{v;^btGrwzav{LDCn<&_|l|z4K z@{&35BI{JMJg0-gQfCZzKd zK2{$mLzBoT1{SC>kSNc&Vs+!u`py^sB6vtN>BQ*5RmO4Ff+TAv2ydPMd~F~V%JG?7 zM7beDn{(&tliJ8jNH&3Dsnwy zC_M)nRRf8DC$H=E)t*lbjWQRT*_pb3F4tRqeN7imLQj7ilsXMI10LIjVy&NZV?$ML zJ6eRbA55HmBeOsBLvax-;33FW6q)x@O=Ms`w8wS(cVX4I%w4yE$u`N-ntd0Z9WFH7 zzOX9EgBuZO;9c>iEsoMvyy=5r)jtMmCl2C^Ia#YY=T1n_mfk7CSMtXTu@GrDdNj4} z3W3uqf%7UoR{M}6d;JOB%#UXy2s|aQKLYtTF1z` zmE20LTfRWV-;%e0o77A|ap-HIK`a+3l}?%o9Qn8C?>Ml}FipP5@ikXYxSDjP+P_UN z{NfvbRW0-MaQOcAr())Eaeo%R$J?WK&GJWC+PmbJc*&?RM%-LrX=D5M>xuiK_XukX=On8~O`+LNH?~gof$nj&8NeY@3TlZ8_ zmV+p-pQ^}^7**-};v7tIBa6B(O3STnVR}er!oFH{-XyB*JhM{qSQJqm2+hy^Zx}ce z$DKC2c0P&uY(ueRm1Ovxr~%C!&K#RcumvSk8*b_g+$5>zzL_A$_*)`InQZhz>hQ50 z)t#`9$slJua3wN)s6On<9>H(`>B-ffBIQm@Ml*ux--b&*Cge+GTKFHQrEp{X`0lp; zR~EqpoH;_?La+$BwVRFlB(eLKcC7X{K=Yq4DV-LvM7>$jkLC|C58O8t%NN6cOcH?r zF7Zn+Y|(Ymxk7g6Kd#SCG~j%+?QcQgz7jp&;Tj zq)%jyz!v=r9PvLJO!~|CgiyBMV9EFax0{$0TOZKD@ma%8|MO3hQ3s^jzo?g1IgY*ZD%Xz6U3??Fe}Ah6AE>&e)#K3 z);%n80;pBOh;yRno8bqCHyRH3M+tMhBRH<7u*Q%rXdl&4j9P!00?&~+y-m9c!sxrZ zeRrl~J<7TX#;UfFe|9QcJl{yyyvTKZV&(V}T_Eth{tJcLAQZ+xeIA`7LFIvCrxK0G z2%YaI&?jwesyJ{HF>1(Ae>2kYjr{F^&KnU!12`R`##3^-{ImJVW8cinHMOe6NxPzI z8p^M7Kt^@Np4stxEYhu|Eu z4}|#-3`Vgy)w>tYK%A1&ASCkp1}E!4to;Jp9*^hg$5{ zMBt#@^OU`O7`{0(r{Ycg4!+yd^{_Y7opdIZ?1Yhzbf2S6z0z!t68hR>L4wd%Ok|6o zC&u2-C;;}yb?U6!`B3u#G)QB!LfKK|n|+_ftA z#_Z2s;nBelLaHZz&bJzww_2&fY<0sqP9+Bs%S7K_J4aMqQLM+IrT6Ogk&iJ2&2&Nj zr6_ulAD9b5n)D)78l_m4#Cu&aRv`t*2e>S5l-{ahEN0)b6Q-=Su#|wu!abb9e8D%!J8^_q%#fwjf-Lrp}pn zt}w-yvuY%aiyLm^w$y6DyzAvgzO!n)N|nwtlh~^23J;`nT&Vr6JB!0T*=Ayf*@Xy% zr`hHX3WM?yf(s`h*{-(GT#i{oCxr>9a16Y~;SfZPNaW8agt?wvJq9iNH^dbjw@Xv&NcfjG9k@JyA zNy$`s!A@;{OISakCVNR#m&kP$+DtXFmT7O+G2`W#zjX9B&Rbo5gHd&ZI_=mML{;8i zi}>-2x9<1dq0ikX_8s&)1bp^eotPM++oqk5n&RmIDuSykqB7|MTPCU<%K2rNwF9d6HK;+Wb^O5cO0+0QHpWd(_lav59%KN0!bx_NX%Spdfz3KRZvOxn%8> zpFeB`f4|Wn7r%cXIj<&zpS7??>zwAvq5l7v2wD+M1~(xD1Y&BwEGO_Ew6VM_b~1fu z?PrD<#t|08ZAtk(%REW}Ay%D&;7d^q$~cD1|3Dj90~^w1_GN6fLR!PMx{9^PaEwNC zts4s~D_1LQ`t}Bw&iJ(wFCQnpwCvp22rcAd!7e*n0aqO-pijN)!#SY$#)>MZEFM{% zUI%7;Ed8z`rG8mZ6+r*37%yxc=0`W1GFB-#iMK$ita%=o8I8> zCnR~oEy)u%o6_MY$oFe1@MVDjjM_~xh3uC+6C1w0PRVot#wZv%K^nmFW5ErvGIKsY zG80WS@HD0jsePEGzBh@|xwX$<4YMUGAm4B4R@vEMPeg_a1d0OdGRLF`Z9`|~Ii~mH zDV>kL_zg>el&O05ckAwtG4f~J2zzzII%%d5uP`8we;It+u^u;27`{krQ#?w}z|H2c z@l%QF;%7{B_A9mA=gMBgI<9T>!jF1!@6{xe_Y3?=rW3^_MsSRN8|n2C6==*@Y>azY z?PriBHnIB40_d1oMH;%0c<1aD9o~F7pzQr&GY9X{waDo5NbO>sjdE!8gx6vLJ>cpCNta0+A>g3I^-uF@h zc{avZ`i_sxU)d__d;wM1MbmA5BlXB0oL_MiPIpxD0%)5koXzj(zg=E7ay8PVJJ&~h z%NX#D*>mu}?dQ}4qE4m;0Tboo`Jo#Y>u_xw94I5Of{VABf*{x-vkZpI z`2^i*bK#{{e@_eHqGQ>d#p5Sm7L7&InJDWLQo6-L1nSrE2a(GZUpiz#k!40K(*@=( z1m&3wCF)nE0EhD0n;4SdzyHQP=-P2=f5{lI1A0W4nz3Fx(WX$emWytj5pZuxO_Ltk zH9U;wPG8!D%f4oRC{;0UBW2U&xeAyQlgOL|nCWKgQmy1T{fe<|;A!r61FIQ0YOt*1 zDe?_S#1uc4=3(p#X=IKpAY(Tq=yJuv_FmZ*Bfq`!ji$~&XgBzjrAhIu8#h6fE4I#F z12Oa)X+5(nH5^`PGrFDBIWUVkM~}o05$%x_@FLkMGpeO5;z5^ZnmY80y7;jxnq#B3 ztzh*amJGi?XQ8_-#!#hvIS$$XX(FB5`0*S0%%95Zx`H{%Lo`l z?;o8_J~>Rtw2|Id6btU0lyTioPRwb`;riU#e4^jK))}VU8>I!>3Sk7s7{Y#lfW|hW zb#jN(r3Zoev)9i`m^!~>EODtTogxltwp zr-Ud{NPy>y5pq13N;99xOSY*L(t-)nTeOh!`*?EVxLS_V32Q5rzWn#?28W=wL6MZw zY1ox4j7>k6PUFVbZ#k+7+@^W2fTk^7x`eMqPo3G`s>H2Km=vXSf)>VBpTPXJ^Z`lQ z_)|>h5W8`w2f`#Y|VJ?W6@Vu&_sTB~3o_<~f6h5Sh)QR64tC2yE^C!{}tsvxb^T)qD%j-5lhNly-J$7ZV7gorlKj^nGj_rL}sdbL@#yUnj=yv zS%u^CczM#5n%BDk%DQ}PMYvVICODZg!InP)V$KG)3v1sALpv)r3l$kzO~@g?(Dxoe z&>C6Y*!ZCf28D{rt`fd80Ay%}{1^mjMKuG7w+C=y1FA&bnRT4cj92r11p})0!J&Qq z0VtwhS2>k0#Kc(=ia2B1HvA-DK8gqa<7`SUr?)$JiLdd1N+--`=D@i<8_NTmGv54b z-skFfUhsU+SDWD=hb85Rrt=HWGROP8nOWj@)DQ4Ln`Qx{EjIoBHW= zBjkz7#2dPML>-0Mq0jNm@Hw_;L3H+?8zg&w4&=I z3G^{FD^Vv*vU4%KoPHLe&PSZ{lI)UQU{AILo5`mIx!6oq2g7$cNv9R|Ru0d2RnG^SK#}gg_GD+^#-Mf zGf-l+cFiBbphB^$kOqYMfsXx4oRgI;~8ZK&FQltUClq*h)_jc_Zd zYYb9j0Mv`Fvm1`E9Bv}9B}HZ|LYmel?^i9@TL&E7T^*}!c53U%3>9q;2**QS!99l} zYCG$f`)J>jMjm@Ahjz$ihe(dpK+w+v;X;JO81y|4{OeFZC$U(gtvGspG+MN{`?OX3 z?yKxWCsD3D=8l!e+%X7O(h`ZgMUWHvIPb4M0G86QQ@T*guU9s0zQ5n}W8Lu?i87UF|kM+zYU}z_lFzs-O1;)diMTYu)yvIZZuU+!Er-JtD>gksg#LJ zbU#))#H#w?WB5guVC>6dAf#L<#mtLI8b-O(d zV`1xv9ju5l^($Q&bzxJiu1bG%3y^FtpDY?L!b`wovVXjBW*ZvrbtXP2KtFBFxj`Zh z)bXWWRk^l=-Kf{JA__3zgM|4hrt!4Y`Xud5dFyJ=smxG)Fv&4{_9#L*x+va!%918c zt8WUp`rvAQE0Q~qo`1H_XPfu1{7^HQcbnlgqs^SY0B%Ud-14Zn#g8_<4funntln_W zc9VI;HMbfs5T4!U29f-L;KSj+sxcNHVca=%fDee$}15Ubn2his}(vTG^exmN}?-HmCk za#bazFYz6~iF|lO<%*2a0D62)a+WEnFy7!l6qs1>7N({P&mZhDvG;KyQyPkY?`XnmB;#eyr27bOKEW`U8!78^#{gg9A@ zu_+zD?Kz|VP$G|@19r!0zqxLgw2GneWnDrydcZ{YfF0sZ=mXkx&-* z{OH*O(DN*gax2p#rq{7>Vu8vfnNRNE2_5-+df!*fI!kSH4RJz5-Qo#-$)bpM%nd+v z5z#izMulTw&mLUS0SdJ8uSXdPez`T7ONtm&s5rWQ-;rqy!y80*i@PKsO2wLTpO1Zh zwWy%jE8F)1sR$7cAW!|cPE*d^jtuJl1Z^YJS<99J%lhh9C*c(6DDw8QW+n!&+gLq+ zJbTS*HVrzDAg+G;WagnbZAep8PfZUv`COFY0N(Q2BJ+m zIY5V(Gvg^|w(;f?vesa4v5JY_K4!5BXu~C~`Y0o=L&?g$409LVRrPUq7n#~eg`|eA zKP=QL67G322n@OA9=N6FZF0DgMlebk73^?jxVY`z)=pKOk=Ow1Oa8!KV*u#PFxz{B zQ%@&Nl$*j_KYdr(eVq@L7+6WZXpyytd&Vo{H!#wDBFj_?&9ZLkA2rP96AGIA?xD1% zvRh*N0F_#BzJPw*L7*2U7MPHyIq1FUJp=-aXMW(H0l*N?o*+>{MQ39uqWxGy(^)*cSJG4DD`bpX#6+$e)&! zlfHZc$4%yWMXj-EePrPanze6fE!KobaPmHPY9_f%bFU(}zJ++6)kF%6O!+u^G21U@ z?|!&GQ0;KAc2D|_b5vc6_GX?Z#%zH^E4zu~96t~aY@Z+#+6vwwmiD)mz{H^C;u!fn zz8MoM^U#_t{SI4iKc0sCm{X_e94$L7$T1^re%Yld&OZ&(G9jphl*J-lcDqp9<|yVJ zWyW^-i~)oa%FZw!6b8om^Y@WEPT(dut*C&nDs*Og=it!;v)y#?`$qNc8ZgO^UzjX1 z?K?|aphgut@Td`#1n(LHd%sR01=X<2T0_+aSA0@>$mQPNYu14}SnRrr_D)m1LXOv} zAK`~U>GoXhpBvqQMUUg%FI#}KUQ$edrJO-xL!cB zoau#c%!kU(!{$hc8FcTy=DPcOj9;{()q>9_5gz2-bejcpZs<%y`pxm|?#EvWp6z=; z6sK3TU#=b*eWIh+c%+Np=2t>L(%V`TR3f*W=R+lDb;;g86qFt)GxBc?q2CiZzelC< z-d9Tf(}q$T4Ml2gDy(ekw|jU)ycI4oLlZOY74NeAH+*Wm9?xK z8(fxNqEp)bV8L4!x6LnmJKrhu*{hAtOMu$JhGjo|nGxlSkgIX`zk>tY^Dr z#8GppGe}m0*ZFcrj8`_OQKbVOL`>j`>3EXKwb)%dohg9C^@v1zkZ1ZfkVU#}Zdw9_ z3N_upEb&|sISs$EFYz_GHir5O1c{=?HIW#i%v=44w(p}!)04Jr$(x(b2l!_OM~ilj z6a{VHU1(sAv0X=)svVa1xRU}oJXLd4x)Venb5s{`sw9VFz2hS}gWjF%csKs1In`*{ zXT)#$O{tW143!`z!i$%?G?N)Tn&(XSxXl93iD3D3EvUUkOpbqKP!UCRC?bNIX*->E zE(;A0jZrIv=`_86-{hLU=3ub9)bUK!i6`2PCw+854?Qoi7h8*2@{a)qqVCUkMY0_< zD}A7QA*Na-c0^W8X&=BrgNn6Si&^Hj`hM<`8JDo|htjR^Fh$5@ybw06h@#H`rFy*#-B#;T&SC16X zu{x1)sD|LhVA)F21E#QSqE3kZVd(i2nT!h@;CSM;%m{wjRvHC|NM2Z^Dt<{Y^$~Q0 z(=IRFdVc>A1%DoEaRHW?nr~60S&ool z&kcEB1KEgAiL3YTL2x}{JG<y&wxG3CLT6pkhGdPM-{i#xc2$5h>vK=w3VT!k;AXagqC*6SX6A-PO*xb4k<@VjPzJr$> zt$F@(m}j@0sNQ)+hXzE=zN`!7fqjoj&~zrNNF{g$BRC!1kC z$2W*r@?*_*3_u+@Rq0A$C2!a~b2nS=sxGr0OFA&*TjPL!Wg!yqu4(xOm9%V6F?m{I zT0faqxdptjtT>op;h^Y?(6?L?=}X-Z>OLQEm1To5V%-=!12gUETYnBi%BAb{)VB+F zxZ1Q^M0%&NF35@(u$~qe3_7IdJ!Q3OxA@aQhjv40y_nbnfPNnDSG|n4D`s?8cIhlP zYw6f3qv~x^I(g0|Fq!iPlgxP8gSE$61dAuVH3_gfK5lp%+g9c{B;+=AwBVmnSv?a! z;~DWFZWi@zSxk8?%TrscEa6ttM5pa&;CC4o@b)S9Yqfe+rDWU5ELo!p-k0or_LD`0Q@u;-gj8CXrOAo2B zB>*4_MpSH%W8T9ItQZIW`14q&D`+*!INo4w1}2hVFXt|J$Zz5G;`AO1*99x{L~RBC z+(4-~>xb{|_{D2SxodabkuN-n^nx=Fy`<`Jy`|PwT+!*3J~zexGC~ygf!ivY%YQK| zw2F73CKg>97?~Ov`MF1>`c_4?L?w?3;?NL?T~VFloG|1#dSK|5O4sH=@#RV~k4!E3 z?P5UQwR(bL`~0$rpq|&0w=Z*zSF`Sq(^9K_Yqega`EpZ#-+i7=p=+3Rm-oCUZj-lx zuO{${UZgmWNNzo+M$@b&8&_CL=Za^S;-+2r@qQYuZ84tgLF+zMoKJSozh0 z+HRAj1kZx%o=BYtPpT-j zjU*WZqB^uf1c?emzK&K*7`oj&77VVj0)D`;lEU(#(#(`#ooqf{^hXlS$US2yCBB`V zchmiQ6Tc#PfQ0|Wq{8sX%H>L>tN-oH_hF6|P^*c6v z#h@X6{7H8&_fFnT3@>dJEzAvA{lEl9-dLsMkK6*%j3R}a65G*}Ju|{m)BM8lsiba@Hj`!TRrogateLO0U22Uavp5o*){NpIP%_y)+XN7}TsN z@z#8cBt=eQ6Zm`g#zB-niQ1nT#TjP_U%U+PyH^Xl+ zws>Q{4h@n3zeUe%0d0I4rR~?&iPq6W6iRI@@ajC2gQVX=v>np;?j?J6`sfV?g|aPw zXK8Y<{Uza;TgRCaPN$lE{HyP%vQq*qa})@=4n)MvBtKOaNq-sr?mTrK*u z@2(;lddrFH=d8b<_59}mmRJ7^{=c*S+SnuTPsq^zWjVo_%IH96xjX-+{de-%p+Db7 zb@3Yp5D5=^Ul{!VWuEQV_-D-PK+z1Y>}U}enxFCix<{yp{c4;61J8h0e`AdBqN{ok w)IJ0VG$Y7CAemndXY18@<{&Ncz{CCDEdTl@2zaI6e3UH-K6+$SR%gBc0VkO*=Kufz diff --git a/Mage.Server/plugins/mage-player-aiminimax.jar b/Mage.Server/plugins/mage-player-aiminimax.jar index be792e4a2dd0f192620d0863b709be35d3001710..a386de171385dd871a2b1ac4f0d34236033c5b8a 100644 GIT binary patch delta 27595 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 N%}oS%$^OsX{{vrD4153p delta 11146 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 amiP { - boolean used = false; +// boolean used = false; public DiesTriggeredAbility(Effect effect, boolean optional) { super(Zone.BATTLEFIELD, Zone.GRAVEYARD, effect, "When {this} dies, ", optional); @@ -59,18 +59,18 @@ public class DiesTriggeredAbility extends ZoneChangeTriggeredAbility { public PassAbility() { super(Zone.ALL, new PassEffect()); + this.usesStack = false; } public PassAbility(final PassAbility ability) { diff --git a/Mage/src/mage/game/GameImpl.java b/Mage/src/mage/game/GameImpl.java index 25d08ffdf93..6be7c09078d 100644 --- a/Mage/src/mage/game/GameImpl.java +++ b/Mage/src/mage/game/GameImpl.java @@ -139,10 +139,10 @@ public abstract class GameImpl> implements Game, Serializa this.attackOption = game.attackOption; this.state = game.state.copy(); // Issue 350 - //this.gameCards = game.gameCards; - for (Map.Entry entry: game.gameCards.entrySet()) { - this.gameCards.put(entry.getKey(), entry.getValue().copy()); - } + this.gameCards = game.gameCards; +// for (Map.Entry entry: game.gameCards.entrySet()) { +// this.gameCards.put(entry.getKey(), entry.getValue().copy()); +// } this.simulation = game.simulation; this.gameOptions = game.gameOptions; this.lki.putAll(game.lki); @@ -386,13 +386,14 @@ public abstract class GameImpl> implements Game, Serializa public void resume() { PlayerList players = state.getPlayerList(state.getActivePlayerId()); Player player = getPlayer(players.get()); + boolean wasPaused = state.isPaused(); state.resume(); if (!isGameOver()) { // if (simulation) // logger.info("Turn " + Integer.toString(state.getTurnNum())); fireInformEvent("Turn " + Integer.toString(state.getTurnNum())); if (checkStopOnTurnOption()) return; - state.getTurn().resumePlay(this); + state.getTurn().resumePlay(this, wasPaused); if (!isPaused() && !isGameOver()) { endOfTurn(); player = players.getNext(this); @@ -623,12 +624,13 @@ public abstract class GameImpl> implements Game, Serializa checkStateAndTriggered(); if (isPaused() || isGameOver()) return; // resetPassed should be called if player performs any action - player.priority(this); + if (player.priority(this)) + applyEffects(); if (isPaused()) return; } resuming = false; - applyEffects(); } + resuming = false; if (isPaused() || isGameOver()) return; if (allPassed()) { if (!state.getStack().isEmpty()) { @@ -781,7 +783,7 @@ public abstract class GameImpl> implements Game, Serializa for (Permanent perm: getBattlefield().getAllActivePermanents()) { if (perm.getCardType().contains(CardType.CREATURE)) { //20091005 - 704.5f - if (perm.getToughness().getValue() == 0) { + if (perm.getToughness().getValue() <= 0) { if (perm.moveToZone(Zone.GRAVEYARD, null, this, false)) { somethingHappened = true; continue; diff --git a/Mage/src/mage/game/GameState.java b/Mage/src/mage/game/GameState.java index ff5bdda0c56..104f7c6419e 100644 --- a/Mage/src/mage/game/GameState.java +++ b/Mage/src/mage/game/GameState.java @@ -32,7 +32,10 @@ import mage.abilities.TriggeredAbility; import mage.game.events.GameEvent; import mage.game.stack.SpellStack; import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.UUID; import mage.Constants.Zone; @@ -42,10 +45,13 @@ import mage.abilities.Ability; import mage.abilities.ActivatedAbility; import mage.abilities.DelayedTriggeredAbilities; import mage.abilities.DelayedTriggeredAbility; +import mage.abilities.Mode; import mage.abilities.SpecialActions; import mage.abilities.TriggeredAbilities; import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.ContinuousEffects; +import mage.cards.Card; +import mage.choices.Choice; import mage.game.combat.Combat; import mage.game.combat.CombatGroup; import mage.game.command.Command; @@ -60,6 +66,7 @@ import mage.game.turn.TurnMods; import mage.players.Player; import mage.players.PlayerList; import mage.players.Players; +import mage.target.Target; import mage.util.Copyable; import mage.watchers.Watchers; @@ -146,6 +153,7 @@ public class GameState implements Serializable, Copyable { for (Map.Entry> entry: state.otherAbilities.entrySet()) { otherAbilities.put(entry.getKey(), entry.getValue().copy()); } + this.paused = state.paused; } @Override @@ -158,34 +166,100 @@ public class GameState implements Serializable, Copyable { playerList.add(player.getId()); } - public String getValue() { + public String getValue(boolean useHidden) { StringBuilder sb = new StringBuilder(1024); sb.append(turnNum).append(turn.getPhaseType()).append(turn.getStepType()).append(activePlayerId).append(priorityPlayerId); for (Player player: players.values()) { - sb.append("player").append(player.getLife()).append("hand").append(player.getHand()).append("library").append(player.getLibrary().size()).append("graveyard").append(player.getGraveyard()); + sb.append("player").append(player.getLife()).append("hand"); + if (useHidden) + sb.append(player.getHand()); + else + sb.append(player.getHand().size()); + sb.append("library").append(player.getLibrary().size()).append("graveyard").append(player.getGraveyard()); } - for (UUID permanentId: battlefield.getAllPermanentIds()) { - sb.append("permanent").append(permanentId); + sb.append("permanents"); + for (Permanent permanent: battlefield.getAllPermanents()) { + sb.append(permanent.getValue()); } + sb.append("spells"); for (StackObject spell: stack) { - sb.append("spell").append(spell.getId()); + sb.append(spell.getControllerId()).append(spell.getName()); } for (ExileZone zone: exile.getExileZones()) { sb.append("exile").append(zone.getName()).append(zone); } + sb.append("combat"); for (CombatGroup group: combat.getGroups()) { - sb.append("combat").append(group.getDefenderId()).append(group.getAttackers()).append(group.getBlockers()); + sb.append(group.getDefenderId()).append(group.getAttackers()).append(group.getBlockers()); } return sb.toString(); } + public String getValue(boolean useHidden, Game game) { + StringBuilder sb = new StringBuilder(1024); + + sb.append(turnNum).append(turn.getPhaseType()).append(turn.getStepType()).append(activePlayerId).append(priorityPlayerId); + + for (Player player: players.values()) { + sb.append("player").append(player.isPassed()).append(player.getLife()).append("hand"); + if (useHidden) + sb.append(player.getHand()); + else + sb.append(player.getHand().size()); + sb.append("library").append(player.getLibrary().size()); + sb.append("graveyard"); + for (Card card: player.getGraveyard().getCards(game)) { + sb.append(card.getName()); + } + } + + sb.append("permanents"); + List perms = new ArrayList(); + for (Permanent permanent: battlefield.getAllPermanents()) { + perms.add(permanent.getValue()); + } + Collections.sort(perms); + sb.append(perms); + + sb.append("spells"); + for (StackObject spell: stack) { + sb.append(spell.getControllerId()).append(spell.getName()); + sb.append(spell.getStackAbility().toString()); + for (Mode mode: spell.getStackAbility().getModes().values()) { + if (!mode.getTargets().isEmpty()) { + sb.append("targets"); + for (Target target: mode.getTargets()) { + sb.append(target.getTargets()); + } + } + if (!mode.getChoices().isEmpty()) { + sb.append("choices"); + for (Choice choice: mode.getChoices()) { + sb.append(choice.getChoice()); + } + } + } + } + + for (ExileZone zone: exile.getExileZones()) { + sb.append("exile").append(zone.getName()).append(zone); + } + + sb.append("combat"); + for (CombatGroup group: combat.getGroups()) { + sb.append(group.getDefenderId()).append(group.getAttackers()).append(group.getBlockers()); + } + + return sb.toString(); + } + public Players getPlayers() { return players; } diff --git a/Mage/src/mage/game/combat/Combat.java b/Mage/src/mage/game/combat/Combat.java index a0604c105e0..8bbd339ecf2 100644 --- a/Mage/src/mage/game/combat/Combat.java +++ b/Mage/src/mage/game/combat/Combat.java @@ -107,13 +107,13 @@ public class Combat implements Serializable, Copyable { attackerId = null; } - public int getValue(Game game) { + public String getValue() { StringBuilder sb = new StringBuilder(); sb.append(attackerId).append(defenders); for (CombatGroup group : groups) { - sb.append(group.getValue(game)); + sb.append(group.defenderId).append(group.attackers).append(group.attackerOrder).append(group.blockers).append(group.blockerOrder); } - return sb.toString().hashCode(); + return sb.toString(); } public void setAttacker(UUID playerId) { @@ -128,16 +128,21 @@ public class Combat implements Serializable, Copyable { player.selectAttackers(game); if (game.isPaused() || game.isGameOver()) return; - for (CombatGroup group: groups) { - for (UUID attacker: group.getAttackers()) { - game.fireEvent(GameEvent.getEvent(GameEvent.EventType.ATTACKER_DECLARED, group.defenderId, attacker, attackerId)); - } - } - game.fireEvent(GameEvent.getEvent(GameEvent.EventType.DECLARED_ATTACKERS, attackerId, attackerId)); - game.fireInformEvent(player.getName() + " attacks with " + groups.size() + " creatures"); + resumeSelectAttackers(game); } } - + + public void resumeSelectAttackers(Game game) { + Player player = game.getPlayer(attackerId); + for (CombatGroup group: groups) { + for (UUID attacker: group.getAttackers()) { + game.fireEvent(GameEvent.getEvent(GameEvent.EventType.ATTACKER_DECLARED, group.defenderId, attacker, attackerId)); + } + } + game.fireEvent(GameEvent.getEvent(GameEvent.EventType.DECLARED_ATTACKERS, attackerId, attackerId)); + game.fireInformEvent(player.getName() + " attacks with " + groups.size() + " creatures"); + } + protected void checkAttackRequirements(Player player, Game game) { //20101001 - 508.1d for (Permanent creature : player.getAvailableAttackers(game)) { @@ -176,6 +181,13 @@ public class Combat implements Serializable, Copyable { } } + public void resumeSelectBlockers(Game game) { + //TODO: this isn't quite right - but will work fine for two-player games + for (UUID defenderId : getPlayerDefenders(game)) { + game.fireEvent(GameEvent.getEvent(GameEvent.EventType.DECLARED_BLOCKERS, defenderId, defenderId)); + } + } + protected void checkBlockRequirements(Player player, Game game) { //20101001 - 509.1c //TODO: handle case where more than one attacker must be blocked diff --git a/Mage/src/mage/game/combat/CombatGroup.java b/Mage/src/mage/game/combat/CombatGroup.java index 9c050ef327f..9fa6453e800 100644 --- a/Mage/src/mage/game/combat/CombatGroup.java +++ b/Mage/src/mage/game/combat/CombatGroup.java @@ -74,21 +74,21 @@ public class CombatGroup implements Serializable, Copyable { this.players.putAll(group.players); } - protected String getValue(Game game) { - StringBuilder sb = new StringBuilder(1024); - for (UUID attackerId: attackers) { - getPermanentValue(attackerId, sb, game); - } - for (UUID blockerId: blockers) { - getPermanentValue(blockerId, sb, game); - } - return sb.toString(); - } - - private void getPermanentValue(UUID permId, StringBuilder sb, Game game) { - Permanent perm = game.getPermanent(permId); - sb.append(perm.getValue()); - } +// protected String getValue(Game game) { +// StringBuilder sb = new StringBuilder(1024); +// for (UUID attackerId: attackers) { +// getPermanentValue(attackerId, sb, game); +// } +// for (UUID blockerId: blockers) { +// getPermanentValue(blockerId, sb, game); +// } +// return sb.toString(); +// } +// +// private void getPermanentValue(UUID permId, StringBuilder sb, Game game) { +// Permanent perm = game.getPermanent(permId); +// sb.append(perm.getValue()); +// } public boolean hasFirstOrDoubleStrike(Game game) { for (UUID permId: attackers) { diff --git a/Mage/src/mage/game/permanent/PermanentCard.java b/Mage/src/mage/game/permanent/PermanentCard.java index 8265fbd3e39..878dae3217a 100644 --- a/Mage/src/mage/game/permanent/PermanentCard.java +++ b/Mage/src/mage/game/permanent/PermanentCard.java @@ -79,7 +79,7 @@ public class PermanentCard extends PermanentImpl { public PermanentCard(final PermanentCard permanent) { super(permanent); - this.card = permanent.card; + this.card = permanent.card.copy(); this.maxLevelCounters = permanent.maxLevelCounters; } diff --git a/Mage/src/mage/game/permanent/PermanentImpl.java b/Mage/src/mage/game/permanent/PermanentImpl.java index cb95e4d4e18..a9a3d771b0e 100644 --- a/Mage/src/mage/game/permanent/PermanentImpl.java +++ b/Mage/src/mage/game/permanent/PermanentImpl.java @@ -152,6 +152,9 @@ public abstract class PermanentImpl> extends CardImpl sb.append(controllerId).append(name).append(tapped).append(damage); sb.append(subtype).append(supertype).append(power.getValue()).append(toughness.getValue()); sb.append(abilities); + for (Counter counter: counters.values()) { + sb.append(counter.getName()).append(counter.getCount()); + } return sb.toString(); } diff --git a/Mage/src/mage/game/stack/Spell.java b/Mage/src/mage/game/stack/Spell.java index cbb2c71f8ba..6efc4606cf7 100644 --- a/Mage/src/mage/game/stack/Spell.java +++ b/Mage/src/mage/game/stack/Spell.java @@ -182,21 +182,21 @@ public class Spell> implements StackObject, Card { String name = null; if (object == null) { Player targetPlayer = game.getPlayer(targetId); - if (player != null) name = targetPlayer.getName(); + if (targetPlayer != null) name = targetPlayer.getName(); } else { name = object.getName(); } if (name != null && player.chooseUse(ability.getEffects().get(0).getOutcome(), "Change target from " + name + "?", game)) { if (!player.chooseTarget(ability.getEffects().get(0).getOutcome(), newTarget, ability, game)) - newTarget.addTarget(targetId, ability, game); + newTarget.addTarget(targetId, ability, game, false); } else { - newTarget.addTarget(targetId, ability, game); + newTarget.addTarget(targetId, ability, game, false); } } target.clearChosen(); for (UUID newTargetId: newTarget.getTargets()) { - target.addTarget(newTargetId, ability, game); + target.addTarget(newTargetId, ability, game, false); } } return true; diff --git a/Mage/src/mage/game/turn/DeclareAttackersStep.java b/Mage/src/mage/game/turn/DeclareAttackersStep.java index b51b2601936..8b9f50914a8 100644 --- a/Mage/src/mage/game/turn/DeclareAttackersStep.java +++ b/Mage/src/mage/game/turn/DeclareAttackersStep.java @@ -63,6 +63,12 @@ public class DeclareAttackersStep extends Step { game.getCombat().selectAttackers(game); } + @Override + public void resumeBeginStep(Game game, UUID activePlayerId) { + super.resumeBeginStep(game, activePlayerId); + game.getCombat().resumeSelectAttackers(game); + } + @Override public DeclareAttackersStep copy() { return new DeclareAttackersStep(this); diff --git a/Mage/src/mage/game/turn/DeclareBlockersStep.java b/Mage/src/mage/game/turn/DeclareBlockersStep.java index 02bf01d72d7..3dd0d8ccb92 100644 --- a/Mage/src/mage/game/turn/DeclareBlockersStep.java +++ b/Mage/src/mage/game/turn/DeclareBlockersStep.java @@ -61,10 +61,20 @@ public class DeclareBlockersStep extends Step { public void beginStep(Game game, UUID activePlayerId) { super.beginStep(game, activePlayerId); game.getCombat().selectBlockers(game); - game.getCombat().checkBlockRestrictions(game); - game.getCombat().damageAssignmentOrder(game); + if (!game.isPaused()) { + game.getCombat().checkBlockRestrictions(game); + game.getCombat().damageAssignmentOrder(game); + } } + @Override + public void resumeBeginStep(Game game, UUID activePlayerId) { + super.resumeBeginStep(game, activePlayerId); + game.getCombat().resumeSelectBlockers(game); + game.getCombat().checkBlockRestrictions(game); + game.getCombat().damageAssignmentOrder(game); + } + @Override public DeclareBlockersStep copy() { return new DeclareBlockersStep(this); diff --git a/Mage/src/mage/game/turn/Phase.java b/Mage/src/mage/game/turn/Phase.java index 2e4356ef948..c9eb1cd61fa 100644 --- a/Mage/src/mage/game/turn/Phase.java +++ b/Mage/src/mage/game/turn/Phase.java @@ -117,7 +117,7 @@ public abstract class Phase> implements Serializable { return false; } - public boolean resumePlay(Game game, PhaseStep stepType) { + public boolean resumePlay(Game game, PhaseStep stepType, boolean wasPaused) { if (game.isPaused() || game.isGameOver()) return false; @@ -128,7 +128,7 @@ public abstract class Phase> implements Serializable { step = it.next(); currentStep = step; } while (step.getType() != stepType); - resumeStep(game); + resumeStep(game, wasPaused); while (it.hasNext()) { step = it.next(); if (game.isPaused() || game.isGameOver()) @@ -179,13 +179,20 @@ public abstract class Phase> implements Serializable { } } - protected void resumeStep(Game game) { + protected void resumeStep(Game game, boolean wasPaused) { + boolean resuming = true; switch (currentStep.getStepPart()) { case PRE: - prePriority(game, activePlayerId); + if (wasPaused) { + currentStep.resumeBeginStep(game, activePlayerId); + resuming = false; + } + else { + prePriority(game, activePlayerId); + } case PRIORITY: if (!game.isPaused() && !game.isGameOver()) - currentStep.priority(game, activePlayerId, true); + currentStep.priority(game, activePlayerId, resuming); case POST: if (!game.isPaused() && !game.isGameOver()) postPriority(game, activePlayerId); diff --git a/Mage/src/mage/game/turn/Step.java b/Mage/src/mage/game/turn/Step.java index fd9b8768300..67b23c16eb0 100644 --- a/Mage/src/mage/game/turn/Step.java +++ b/Mage/src/mage/game/turn/Step.java @@ -76,6 +76,10 @@ public abstract class Step> implements Serializable { stepPart = StepPart.PRE; game.fireEvent(new GameEvent(preStepEvent, null, null, activePlayerId)); } + + public void resumeBeginStep(Game game, UUID activePlayerId) { + stepPart = StepPart.PRE; + } public void priority(Game game, UUID activePlayerId, boolean resuming) { if (hasPriority) { diff --git a/Mage/src/mage/game/turn/Turn.java b/Mage/src/mage/game/turn/Turn.java index 9702988235c..21166ae6b7e 100644 --- a/Mage/src/mage/game/turn/Turn.java +++ b/Mage/src/mage/game/turn/Turn.java @@ -133,7 +133,7 @@ public class Turn implements Serializable { playExtraTurns(game); } - public void resumePlay(Game game) { + public void resumePlay(Game game, boolean wasPaused) { activePlayerId = game.getActivePlayerId(); UUID priorityPlayerId = game.getPriorityPlayerId(); TurnPhase phaseType = game.getPhase().getType(); @@ -145,7 +145,7 @@ public class Turn implements Serializable { phase = it.next(); currentPhase = phase; } while (phase.type != phaseType); - if (phase.resumePlay(game, stepType)) { + if (phase.resumePlay(game, stepType, wasPaused)) { //20091005 - 500.4/703.4n game.emptyManaPools(); game.saveState(); diff --git a/Mage/src/mage/players/Player.java b/Mage/src/mage/players/Player.java index 3c2bcecb69e..f6a4d98cfc8 100644 --- a/Mage/src/mage/players/Player.java +++ b/Mage/src/mage/players/Player.java @@ -210,7 +210,7 @@ public interface Player extends MageItem, Copyable { public void setResponseBoolean(Boolean responseBoolean); public void setResponseInteger(Integer data); - public abstract void priority(Game game); + public abstract boolean priority(Game game); public abstract boolean choose(Outcome outcome, Target target, UUID sourceId, Game game); public abstract boolean choose(Outcome outcome, Target target, UUID sourceId, Game game, Map options); public abstract boolean choose(Outcome outcome, Cards cards, TargetCard target, Game game); diff --git a/Mage/src/mage/players/PlayerImpl.java b/Mage/src/mage/players/PlayerImpl.java index de0cc796dd4..3afd4ce259e 100644 --- a/Mage/src/mage/players/PlayerImpl.java +++ b/Mage/src/mage/players/PlayerImpl.java @@ -137,7 +137,7 @@ public abstract class PlayerImpl> implements Player, Ser this.name = player.name; this.human = player.human; this.life = player.life; - this.wins = player.loses; + this.wins = player.wins; this.loses = player.loses; this.library = player.library.copy(); this.hand = player.hand.copy(); @@ -355,6 +355,7 @@ public abstract class PlayerImpl> implements Player, Ser public boolean putInHand(Card card, Game game) { if (card.getOwnerId().equals(playerId)) { this.hand.add(card); + game.setZone(card.getId(), Zone.HAND); } else { return game.getPlayer(card.getOwnerId()).putInHand(card, game); } @@ -557,10 +558,9 @@ public abstract class PlayerImpl> implements Player, Ser int bookmark = game.bookmarkState(); ability.newId(); game.getStack().push(new StackAbility(ability, playerId)); - String message = ability.getActivatedMessage(game); if (ability.activate(game, false)) { game.fireEvent(GameEvent.getEvent(GameEvent.EventType.ACTIVATED_ABILITY, ability.getId(), ability.getSourceId(), playerId)); - game.fireInformEvent(name + message); + game.fireInformEvent(name + ability.getActivatedMessage(game)); game.removeBookmark(bookmark); return true; } @@ -946,19 +946,31 @@ public abstract class PlayerImpl> implements Player, Ser @Override public void restore(Player player) { - this.library = player.getLibrary(); - this.hand = player.getHand(); - this.graveyard = player.getGraveyard(); - this.abilities = player.getAbilities(); - this.manaPool = player.getManaPool(); + this.library = player.getLibrary().copy(); + this.hand = player.getHand().copy(); + this.graveyard = player.getGraveyard().copy(); + this.abilities = player.getAbilities().copy(); + this.manaPool = player.getManaPool().copy(); this.life = player.getLife(); - this.counters = player.getCounters(); - this.inRange = player.getInRange(); + this.counters = player.getCounters().copy(); + this.inRange.clear(); + this.inRange.addAll(player.getInRange()); this.landsPlayed = player.getLandsPlayed(); this.name = player.getName(); this.range = player.getRange(); this.passed = player.isPassed(); - } + this.human = player.isHuman(); + this.wins = player.hasWon(); + this.loses = player.hasLost(); + this.landsPerTurn = player.getLandsPerTurn(); + this.maxHandSize = player.getMaxHandSize(); + this.left = player.hasLeft(); + this.canGainLife = player.isCanGainLife(); + this.canLoseLife = player.isCanLoseLife(); + this.attachments.clear(); + this.attachments.addAll(player.getAttachments()); + this.userData = player.getUserData(); + } @Override public boolean isPassed() { @@ -1255,7 +1267,7 @@ public abstract class PlayerImpl> implements Player, Ser private void addTargetOptions(List options, Ability option, int targetNum, Game game) { for (UUID targetId: option.getTargets().getUnchosen().get(targetNum).possibleTargets(option.getSourceId(), playerId, game)) { Ability newOption = option.copy(); - newOption.getTargets().get(targetNum).addTarget(targetId, option, game); + newOption.getTargets().get(targetNum).addTarget(targetId, option, game, true); if (targetNum < option.getTargets().size() - 2) { //addTargetOptions(options, newOption, targetNum + 1, game); // ayrat: bug fix @@ -1291,7 +1303,7 @@ public abstract class PlayerImpl> implements Player, Ser private void addCostTargetOptions(List options, Ability option, int targetNum, Game game) { for (UUID targetId: option.getCosts().getTargets().get(targetNum).possibleTargets(option.getSourceId(), playerId, game)) { Ability newOption = option.copy(); - newOption.getCosts().getTargets().get(targetNum).addTarget(targetId, option, game); + newOption.getCosts().getTargets().get(targetNum).addTarget(targetId, option, game, true); if (targetNum < option.getCosts().getTargets().size() - 1) { addCostTargetOptions(options, newOption, targetNum + 1, game); } diff --git a/Mage/src/mage/target/Target.java b/Mage/src/mage/target/Target.java index a9161f51817..9d10d04bd16 100644 --- a/Mage/src/mage/target/Target.java +++ b/Mage/src/mage/target/Target.java @@ -56,6 +56,8 @@ public interface Target extends Serializable { public boolean chooseTarget(Outcome outcome, UUID playerId, Ability source, Game game); public void addTarget(UUID id, Ability source, Game game); public void addTarget(UUID id, int amount, Ability source, Game game); + public void addTarget(UUID id, Ability source, Game game, boolean skipEvent); + public void addTarget(UUID id, int amount, Ability source, Game game, boolean skipEvent); public boolean canTarget(UUID id, Game game); public boolean canTarget(UUID id, Ability source, Game game); public boolean isLegal(Ability source, Game game); diff --git a/Mage/src/mage/target/TargetAmount.java b/Mage/src/mage/target/TargetAmount.java index c915bbf7465..079cb430688 100644 --- a/Mage/src/mage/target/TargetAmount.java +++ b/Mage/src/mage/target/TargetAmount.java @@ -76,9 +76,9 @@ public abstract class TargetAmount> extends TargetImpl } @Override - public void addTarget(UUID id, int amount, Ability source, Game game) { + public void addTarget(UUID id, int amount, Ability source, Game game, boolean skipEvent) { if (amount <= remainingAmount) { - super.addTarget(id, amount, source, game); + super.addTarget(id, amount, source, game, skipEvent); remainingAmount -= amount; } } diff --git a/Mage/src/mage/target/TargetImpl.java b/Mage/src/mage/target/TargetImpl.java index 9b2ddcb4725..7eaec494faa 100644 --- a/Mage/src/mage/target/TargetImpl.java +++ b/Mage/src/mage/target/TargetImpl.java @@ -176,6 +176,11 @@ public abstract class TargetImpl> implements Target { @Override public void addTarget(UUID id, Ability source, Game game) { + addTarget(id, source, game, false); + } + + @Override + public void addTarget(UUID id, Ability source, Game game, boolean skipEvent) { //20100423 - 113.3 if (maxNumberOfTargets == 0 || targets.size() < maxNumberOfTargets) { if (!targets.containsKey(id)) { @@ -183,7 +188,8 @@ public abstract class TargetImpl> implements Target { if (!game.replaceEvent(GameEvent.getEvent(EventType.TARGET, id, source.getId(), source.getControllerId()))) { targets.put(id, 0); chosen = targets.size() >= minNumberOfTargets; - game.fireEvent(GameEvent.getEvent(EventType.TARGETED, id, source.getId(), source.getControllerId())); + if (!skipEvent) + game.fireEvent(GameEvent.getEvent(EventType.TARGETED, id, source.getId(), source.getControllerId())); } } else { @@ -193,8 +199,13 @@ public abstract class TargetImpl> implements Target { } } - @Override + @Override public void addTarget(UUID id, int amount, Ability source, Game game) { + addTarget(id, amount, source, game, false); + } + + @Override + public void addTarget(UUID id, int amount, Ability source, Game game, boolean skipEvent) { if (targets.containsKey(id)) { amount += targets.get(id); } @@ -202,14 +213,15 @@ public abstract class TargetImpl> implements Target { if (!game.replaceEvent(GameEvent.getEvent(EventType.TARGET, id, source.getId(), source.getControllerId()))) { targets.put(id, amount); chosen = targets.size() >= minNumberOfTargets; - game.fireEvent(GameEvent.getEvent(EventType.TARGETED, id, source.getId(), source.getControllerId())); + if (!skipEvent) + game.fireEvent(GameEvent.getEvent(EventType.TARGETED, id, source.getId(), source.getControllerId())); } } else { targets.put(id, amount); } } - + @Override public boolean choose(Outcome outcome, UUID playerId, UUID sourceId, Game game) { Player player = game.getPlayer(playerId);