Repository: LPSim/backend (language: python)

Issue:
Update version 4.4 deck code



Discussion / hints:

Fix patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 991f6af7..0fbef8f9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,8 +7,42 @@ of the game, and the last number is the patch version of this project.
 
 ## [Unreleased]
 
+## [0.4.4.0] - 2024-02-12
+
+Thanks to new contributors: @xqm32 @jiezichenku!
+
+### Added
+- #86 Version 4.4 cards and balance changes are implemented.
+  - Characters and their talents:
+    - Sayu
+    - Thoma
+    - Cryo Hypostasis
+    - Millennial Pearl Seahorse
+  - Equipment
+    - Sapwood Blace
+    - Veteran's Visage
+  - Action Cards
+    - Jeht
+    - Silver and Melus
+    - Machine Assembly Line
+    - Sunyata Flower
+    - Matsutake Meat Rolls
+- #60 #67 #68 #71 #72 @xqm32 Add and improve the toolchain of developing and CI.
+- #84 New `CreateRandomObjectAction` is implemented, which is used by Rhodeia, 
+  Abyssal Summons, etc.
+
+### Changed
+- In `UseCardEventArguments`, instead of using `Any` type for `card`, now `card` is
+  removed and `card_cost` and `card_name` is added. This change is because with `Any`
+  type, pydantic cannot parse the data from json or dict correctly.
+- #24 Avoid deep copy when simulating, which improves the performance.
+- #71 #78 @jiezichenku In `class_registry`, new `instance_factory` is implemented.
+- #80 Docs of network classes are improved.
+
 ### Fixed
-- Mass typos in the project.
+- #53 #55 #56 @xqm32 Mass typos in the project, which containing wrong variable names.
+- #44 #81 Mamere use wrong card version and will raise error when new cards are added.
+- #85 Falls and Fortune only generate status on one side.
 
 ## [0.4.3.3] - 2024-01-11
 
@@ -460,7 +494,8 @@ Happy New Year 2024! New year comes in coding time!
 ### Added
 - Test version to ensure release pipeline is working
 
-[Unreleased]: https://github.com/LPSim/backend/compare/v0.4.3.3...HEAD
+[Unreleased]: https://github.com/LPSim/backend/compare/v0.4.4.0...HEAD
+[0.4.4.0]: https://github.com/LPSim/backend/releases/tag/v0.4.4.0
 [0.4.3.3]: https://github.com/LPSim/backend/releases/tag/v0.4.3.3
 [0.4.3.2]: https://github.com/LPSim/backend/releases/tag/v0.4.3.2
 [0.4.3.1]: https://github.com/LPSim/backend/releases/tag/v0.4.3.1
diff --git a/frontend b/frontend
index 740cb3b7..70df6957 160000
--- a/frontend
+++ b/frontend
@@ -1,1 +1,1 @@
-Subproject commit 740cb3b747ba9d9d15325ade9add4f49f40df3c2
+Subproject commit 70df6957293c12efe2c6f7b037ac9b40f63e6144
diff --git a/http_log_replay.py b/http_log_replay.py
index e1a69b99..0eb7da8a 100644
--- a/http_log_replay.py
+++ b/http_log_replay.py
@@ -1,7 +1,7 @@
 import sys
-from src.lpsim.tools import interact_match_with_agents, read_log
-from src.lpsim.network import HTTPServer
-from src.lpsim.server.match import MatchConfig
+from lpsim.tools import interact_match_with_agents, read_log
+from lpsim.network import HTTPServer
+from lpsim.server.match import MatchConfig
 import logging
 
 
@@ -22,7 +22,9 @@
     try:
         interact_match_with_agents(agents[0], agents[1], match)
     except Exception:
-        print("!!!!! ERROR: play log failed, play to last success log. !!!!!")
+        print("*************************************************************")
+        print("!!!!! ERROR: play log FAILED, play to last success log. !!!!!")
+        print("*************************************************************")
     server = HTTPServer(
         decks=["", ""],
         match_config=MatchConfig(
diff --git a/main.py b/main.py
index f66e1fd0..f693fa7c 100644
--- a/main.py
+++ b/main.py
@@ -1,9 +1,9 @@
 import logging
 from typing import Literal
-from src.lpsim.server.match import Match
-from src.lpsim.utils import BaseModel
-from src.lpsim.server.deck import Deck
-from src.lpsim.agents import RandomAgent
+from lpsim.server.match import Match
+from lpsim.utils import BaseModel
+from lpsim.server.deck import Deck
+from lpsim.agents import RandomAgent
 
 
 class Main(BaseModel):
diff --git a/src/lpsim/server/patch/v43/characters/signora_4_3.py b/src/lpsim/server/patch/v43/characters/signora_4_3.py
index 6a1ffea2..c3c9fb25 100644
--- a/src/lpsim/server/patch/v43/characters/signora_4_3.py
+++ b/src/lpsim/server/patch/v43/characters/signora_4_3.py
@@ -522,7 +522,6 @@ def event_handler_REMOVE_OBJECT(
                 "zh-CN": "角色受到至少为3点的伤害时：抵消1点伤害，然后根据「女士」的形态对敌方出战角色附属严寒或炽热。（每回合1次）",  # noqa: E501
             }
         },
-        "image_path": "cardface/Modify_Talent_LaSignora.png",  # noqa: E501
     },
     "TALENT_Signora/Pain for Pain": {
         "names": {"en-US": "Pain for Pain", "zh-CN": "苦痛奉还"},
diff --git a/src/lpsim/server/patch/v44/__init__.py b/src/lpsim/server/patch/v44/__init__.py
new file mode 100644
index 00000000..fee9db4b
--- /dev/null
+++ b/src/lpsim/server/patch/v44/__init__.py
@@ -0,0 +1,4 @@
+from ....utils import import_all_modules
+
+
+import_all_modules(__file__, __name__)
diff --git a/src/lpsim/server/patch/v44/balance/__init__.py b/src/lpsim/server/patch/v44/balance/__init__.py
new file mode 100644
index 00000000..9a2a08ba
--- /dev/null
+++ b/src/lpsim/server/patch/v44/balance/__init__.py
@@ -0,0 +1,4 @@
+from .....utils import import_all_modules
+
+
+import_all_modules(__file__, __name__)
diff --git a/src/lpsim/server/patch/v44/balance/in_every_house_a_stove_4_4.py b/src/lpsim/server/patch/v44/balance/in_every_house_a_stove_4_4.py
new file mode 100644
index 00000000..0ce093dc
--- /dev/null
+++ b/src/lpsim/server/patch/v44/balance/in_every_house_a_stove_4_4.py
@@ -0,0 +1,48 @@
+from typing import Dict, List, Literal
+
+from .....utils.class_registry import register_class
+
+from .....utils.desc_registry import DescDictType
+from ....action import ConsumeArcaneLegendAction, DrawCardAction
+from ....card.event.arcane_legend import ArcaneLegendBase
+from ....match import Match
+from ....struct import Cost, ObjectPosition
+
+
+class InEveryHouseAStove_4_4(ArcaneLegendBase):
+    name: Literal["In Every House a Stove"]
+    version: Literal["4.4"] = "4.4"
+    cost: Cost = Cost(arcane_legend=True)
+
+    def get_targets(self, match: Match) -> List[ObjectPosition]:
+        return []
+
+    def get_actions(
+        self, target: ObjectPosition | None, match: Match
+    ) -> List[ConsumeArcaneLegendAction | DrawCardAction]:
+        """
+        Draw cards.
+        """
+        assert target is None
+        return super().get_actions(target, match) + [
+            DrawCardAction(
+                player_idx=self.position.player_idx,
+                number=min(match.round_number - 1, 4),
+                draw_if_filtered_not_enough=True,
+            )
+        ]
+
+
+desc: Dict[str, DescDictType] = {
+    "ARCANE/In Every House a Stove": {
+        "descs": {
+            "4.4": {
+                "zh-CN": "我方抓相当于当前的回合数减1的牌。（最多抓4张）（整局游戏只能打出一张「秘传」卡牌；这张牌一定在你的起始手牌中）",  # noqa: E501
+                "en-US": 'Draw a number of cards equal to the current Round number minus 1. (Up to 4 cards can be drawn in this way) (Only one "Arcane Legend" card can be played for the entire game. This card will be in your starting hand.)',  # noqa: E501
+            }
+        },
+    },
+}
+
+
+register_class(InEveryHouseAStove_4_4, desc)
diff --git a/src/lpsim/server/patch/v44/balance/thunder_manifestation_4_4.py b/src/lpsim/server/patch/v44/balance/thunder_manifestation_4_4.py
new file mode 100644
index 00000000..33050c0a
--- /dev/null
+++ b/src/lpsim/server/patch/v44/balance/thunder_manifestation_4_4.py
@@ -0,0 +1,147 @@
+"""
+1. Lightning Rod will disappear when damage increase is triggered.
+2. Talent card become a skill talent, and effect is same.
+"""
+from typing import Dict, List, Literal
+from ....action import RemoveObjectAction
+from ....event import AfterMakeDamageEventArguments, MakeDamageEventArguments
+from ....match import Match
+from ....patch.v43.characters.thunder_manifestation_4_3 import (
+    GrievingEcho_4_3,
+    LightningProbe,
+    LightningRod_4_3,
+    LightningStrikeProbe_4_3,
+    StrifefulLightning,
+    ThunderManifestation_4_3,
+    ThunderingShackles,
+)
+from ....status.character_status.base import UsageCharacterStatus
+from ....character.character_base import SkillTalent
+from ....struct import Cost
+from .....utils.class_registry import register_class
+from ....character.character_base import ElementalNormalAttackBase
+from ....consts import ELEMENT_TO_DAMAGE_TYPE, DieColor
+from .....utils.desc_registry import DescDictType
+
+
+class LightningStrikeProbe_4_4(LightningStrikeProbe_4_3):
+    version: Literal["4.4"] = "4.4"
+
+
+class LightningRod_4_4(LightningRod_4_3, UsageCharacterStatus):
+    version: Literal["4.4"] = "4.4"
+
+    def event_handler_MAKE_DAMAGE(
+        self, event: MakeDamageEventArguments, match: Match
+    ) -> List[RemoveObjectAction]:
+        # do nor remove in make damage event, so talent can work
+        return []
+
+    def event_handler_AFTER_MAKE_DAMAGE(
+        self, event: AfterMakeDamageEventArguments, match: Match
+    ) -> List[RemoveObjectAction]:
+        return self.check_should_remove()
+
+
+class LightningProbe_4_4(LightningProbe):
+    name: Literal["Lightning Probe"] = "Lightning Probe"
+    version: Literal["4.4"] = "4.4"
+
+
+class GrievingEcho_4_4(SkillTalent, GrievingEcho_4_3):
+    version: Literal["4.4"] = "4.4"
+    character_name: Literal["Thunder Manifestation"] = "Thunder Manifestation"
+    skill: Literal["Strifeful Lightning"] = "Strifeful Lightning"
+    cost: Cost = Cost(
+        elemental_dice_color=DieColor.ELECTRO,
+        elemental_dice_number=3,
+    )
+
+
+class ThunderManifestation_4_4(ThunderManifestation_4_3):
+    version: Literal["4.4"] = "4.4"
+    skills: List[
+        ElementalNormalAttackBase
+        | StrifefulLightning
+        | ThunderingShackles
+        | LightningProbe_4_4
+    ] = []
+
+    def _init_skills(self) -> None:
+        self.skills = [
+            ElementalNormalAttackBase(
+                name="Thunderous Wingslash",
+                damage_type=ELEMENT_TO_DAMAGE_TYPE[self.element],
+                cost=ElementalNormalAttackBase.get_cost(self.element),
+            ),
+            StrifefulLightning(),
+            ThunderingShackles(),
+            LightningProbe_4_4(),
+        ]
+
+
+desc: Dict[str, DescDictType] = {
+    "CHARACTER/Thunder Manifestation": {"descs": {"4.4": {"en-US": "", "zh-CN": ""}}},
+    "SKILL_Thunder Manifestation_NORMAL_ATTACK/Thunderous Wingslash": {
+        "descs": {
+            "4.4": {"en-US": "Deals 1 Electro DMG.", "zh-CN": "造成1点雷元素伤害。"}
+        }
+    },
+    "SKILL_Thunder Manifestation_ELEMENTAL_SKILL/Strifeful Lightning": {
+        "descs": {
+            "4.4": {
+                "en-US": "Deals 3 Electro DMG to opposing characters affected by Lightning Rod. (If there are no eligible opposing characters, deals DMG to the active character instead)",  # noqa: E501
+                "zh-CN": "对附属有雷鸣探知的敌方角色造成3点雷元素伤害。（如果敌方不存在符合条件角色，则改为对出战角色造成伤害）",  # noqa: E501
+            }
+        }
+    },
+    "CHARACTER_STATUS/Lightning Rod": {
+        "descs": {
+            "4.4": {
+                "en-US": "While this status is active, can be triggered once and remove this status: DMG received by the attached character from Thunder Manifestation or its summons is increased by 1.\n(Only one of this status can exist on the field at once. Some of Thunder Manifestation's skills will target the character to which this is attached.)",  # noqa: E501
+                "zh-CN": "此状态存在期间，可以触发1次并移除此状态：所附属角色受到雷音权现及其召唤物造成的伤害+1。\n（同一方场上最多存在一个此状态。雷音权现的部分技能，会以所附属角色为目标。）",  # noqa: E501
+            }
+        }
+    },
+    "SKILL_Thunder Manifestation_ELEMENTAL_BURST/Thundering Shackles": {
+        "descs": {
+            "4.4": {
+                "en-US": "Deals 2 Electro DMG, summons 1 Thundering Shackles.",
+                "zh-CN": "造成2点雷元素伤害，召唤轰雷禁锢。",
+            }
+        }
+    },
+    "SKILL_Thunder Manifestation_PASSIVE/Lightning Probe": {
+        "descs": {
+            "4.4": {
+                "en-US": "(Passive) When battle begins, create a Lightning Strike Probe on the opponent's side of the field.",  # noqa: E501
+                "zh-CN": "【被动】战斗开始时，在敌方场上生成雷霆探针。",
+            }
+        }
+    },
+    "TEAM_STATUS/Lightning Strike Probe": {
+        "descs": {
+            "4.4": {
+                "en-US": "After a character on whose side of the field this card is on uses a Skill: Attach Lightning Rod to the active character on that side. (Once per Round)",  # noqa: E501
+                "zh-CN": "所在阵营角色使用技能后：对所在阵营出战角色附属雷鸣探知。（每回合1次）",
+            }
+        },
+    },
+    "TALENT_Thunder Manifestation/Grieving Echo": {
+        "descs": {
+            "4.4": {
+                "en-US": "Combat Action: When your active character is Thunder Manifestation, equip this card. After Thunder Manifestation equips this card, immediately use Strifeful Lightning. When Thunder Manifestation, with this card equipped, is in play, when opponents with Lightning Rod attached take DMG: You draw 1 card (Once per Round)\n(Your deck must contain Thunder Manifestation to add this card to your deck)",  # noqa: E501
+                "zh-CN": "战斗行动：我方出战角色为雷音权现时，装备此牌。雷音权现装备此牌后，立刻使用一次雷墙倾轧。装备有此牌的雷音权现在场，附属有雷鸣探知的敌方角色受到伤害时：我方抓1张牌。（每回合1次）\n（牌组中包含雷音权现，才能加入牌组）",  # noqa: E501
+            }
+        },
+    },
+}
+
+
+register_class(
+    LightningRod_4_4
+    | LightningStrikeProbe_4_4
+    | GrievingEcho_4_4
+    | ThunderManifestation_4_4,
+    desc,
+)
diff --git a/src/lpsim/server/patch/v44/balance/vourukashas_glow_4_4.py b/src/lpsim/server/patch/v44/balance/vourukashas_glow_4_4.py
new file mode 100644
index 00000000..fb57984d
--- /dev/null
+++ b/src/lpsim/server/patch/v44/balance/vourukashas_glow_4_4.py
@@ -0,0 +1,37 @@
+from typing import Dict, List, Literal
+
+from ....action import MakeDamageAction
+from ....event import RoundEndEventArguments
+from ....struct import Cost
+from ....patch.v43.cards.vourukashas_glow_4_3 import VourukashasGlow_4_3
+from ....match import Match
+from .....utils import register_class, DescDictType
+
+
+class VourukashasGlow_4_4(VourukashasGlow_4_3):
+    name: Literal["Vourukasha's Glow"]
+    version: Literal["4.4"] = "4.4"
+    cost: Cost = Cost(same_dice_number=1)
+
+    def event_handler_ROUND_END(
+        self, desc: RoundEndEventArguments, match: Match
+    ) -> List[MakeDamageAction]:
+        if self.usage == self.max_usage_per_round:
+            # not draw card, return
+            return []
+        return super().event_handler_ROUND_END(desc, match)
+
+
+desc: Dict[str, DescDictType] = {
+    "ARTIFACT/Vourukasha's Glow": {
+        "descs": {
+            "4.4": {
+                "en-US": 'After this character takes DMG: Draw 1 card. (Once per Round)\nEnd Phase: If this character has triggered the effect "Draw 1 card" this round: heal the attached character for 1 HP.\n(A character can equip a maximum of 1 Artifact)',  # noqa: E501
+                "zh-CN": "角色受到伤害后：如果所附属角色为「出战角色」，则抓1张牌。（每回合1次）\n结束阶段：若本角色在回合内触发了抓1张牌的效果，治疗所附属角色1点。\n（角色最多装备1件「圣遗物」）",  # noqa: E501
+            }
+        },
+    },
+}
+
+
+register_class(VourukashasGlow_4_4, desc)
diff --git a/src/lpsim/server/patch/v44/cards/__init__.py b/src/lpsim/server/patch/v44/cards/__init__.py
new file mode 100644
index 00000000..9a2a08ba
--- /dev/null
+++ b/src/lpsim/server/patch/v44/cards/__init__.py
@@ -0,0 +1,4 @@
+from .....utils import import_all_modules
+
+
+import_all_modules(__file__, __name__)
diff --git a/src/lpsim/server/patch/v44/cards/jeht_4_4.py b/src/lpsim/server/patch/v44/cards/jeht_4_4.py
new file mode 100644
index 00000000..7d714dc6
--- /dev/null
+++ b/src/lpsim/server/patch/v44/cards/jeht_4_4.py
@@ -0,0 +1,125 @@
+from typing import Dict, List, Literal
+from pydantic import PrivateAttr
+
+from ....object_base import CreateSystemEventHandlerObject
+from ....event_handler import SystemEventHandlerBase
+from ....match import Match
+from ....action import ChangeObjectUsageAction, CreateDiceAction, RemoveObjectAction
+from ....event import (
+    MoveObjectEventArguments,
+    RemoveObjectEventArguments,
+    SkillEndEventArguments,
+)
+from ....consts import DieColor, IconType, ObjectPositionType, SkillType
+from ....card.support.companions import CompanionBase
+from ....struct import Cost
+from .....utils.class_registry import register_class
+from .....utils.desc_registry import DescDictType
+
+
+class JehtEventHandler_4_4(SystemEventHandlerBase):
+    """
+    It will be generated when Jeht in deck, and record disappeared support card numbers
+    for both player, and when Jeht is played into area or any card is removed from
+    support area, it will update its counter and also update all existing Jeht usage.
+    """
+
+    name: Literal["Jeht"] = "Jeht"
+    version: Literal["4.4"] = "4.4"
+    counters: List[int] = [0, 0]
+    _max_usage: int = PrivateAttr(6)
+
+    def _update_jedt_usage(self, match: Match) -> List[ChangeObjectUsageAction]:
+        """
+        check all jeht, if their usage not same as self, update it.
+        """
+        actions: List[ChangeObjectUsageAction] = []
+        for counter, table in zip(self.counters, match.player_tables):
+            for support in table.supports:
+                if support.name == self.name and support.usage != counter:
+                    actions.append(
+                        ChangeObjectUsageAction(
+                            object_position=support.position,
+                            change_usage=counter - support.usage,
+                        )
+                    )
+        return actions
+
+    def event_handler_MOVE_OBJECT(
+        self, event: MoveObjectEventArguments, match: Match
+    ) -> List[ChangeObjectUsageAction]:
+        if event.object_name != self.name:
+            # not Jeht
+            return []
+        return self._update_jedt_usage(match)
+
+    def event_handler_REMOVE_OBJECT(
+        self, event: RemoveObjectEventArguments, match: Match
+    ) -> List[ChangeObjectUsageAction]:
+        if event.action.object_position.area != ObjectPositionType.SUPPORT:
+            # not moved from support zone
+            return []
+        # add one usage
+        pidx = event.action.object_position.player_idx
+        self.counters[pidx] = min(self.counters[pidx] + 1, self._max_usage)
+        return self._update_jedt_usage(match)
+
+
+class Jeht_4_4(CreateSystemEventHandlerObject, CompanionBase):
+    name: Literal["Jeht"]
+    version: Literal["4.4"] = "4.4"
+    usage: int = 0
+    _max_usage: int = PrivateAttr(6)
+    icon_type: Literal[IconType.TIMESTATE] = IconType.TIMESTATE
+    cost: Cost = Cost(any_dice_number=2)
+
+    handler_name: Literal["Jeht"] = "Jeht"
+
+    def event_handler_SKILL_END(
+        self, event: SkillEndEventArguments, match: Match
+    ) -> List[CreateDiceAction | RemoveObjectAction]:
+        if not self.position.check_position_valid(
+            event.action.position,
+            match,
+            player_idx_same=True,
+            target_area=ObjectPositionType.SKILL,
+        ):
+            # not self use skill
+            return []
+        if self.usage < 5:
+            # not enough usage
+            return []
+        if event.action.skill_type != SkillType.ELEMENTAL_BURST:
+            # not use elemental burst
+            return []
+        # discard self and create dice
+        return [
+            CreateDiceAction(
+                player_idx=self.position.player_idx,
+                number=self.usage - 2,
+                color=DieColor.OMNI,
+            ),
+            RemoveObjectAction(object_position=self.position),
+        ]
+
+
+desc: Dict[str, DescDictType] = {
+    "SUPPORT/Jeht": {
+        "names": {"en-US": "Jeht", "zh-CN": "婕德"},
+        "descs": {
+            "4.4": {
+                "en-US": "This card will record the number of cards discarded from your Support Zone during this match as Sophistication points. (Max 6 points)\nAfter your characters use an Elemental Burst: If this card has recorded at least 5 Sophistication points, discard this card and generate Omni Element equal to the number of Sophistication points minus 2.",  # noqa: E501
+                "zh-CN": "此牌会记录本场对局中我方支援区弃置卡牌的数量，称为「阅历」。（最多6点）\n我方角色使用「元素爆发」后：如果「阅历」至少为5，则弃置此牌，生成「阅历」-2数量的万能元素。",  # noqa: E501
+            }
+        },
+        "image_path": "cardface/Assist_NPC_Jeht.png",  # noqa: E501
+        "id": 322022,
+    },
+    "SYSTEM/Jeht": {
+        "names": {"en-US": "Jeht", "zh-CN": "婕德"},
+        "descs": {"4.4": {}},
+    },
+}
+
+
+register_class(Jeht_4_4 | JehtEventHandler_4_4, desc)
diff --git a/src/lpsim/server/patch/v44/cards/machine_assembly_line_4_4.py b/src/lpsim/server/patch/v44/cards/machine_assembly_line_4_4.py
new file mode 100644
index 00000000..dcd6d2c8
--- /dev/null
+++ b/src/lpsim/server/patch/v44/cards/machine_assembly_line_4_4.py
@@ -0,0 +1,124 @@
+from typing import Dict, List, Literal
+from pydantic import PrivateAttr
+
+from ....action import Actions, CreateObjectAction
+from ....modifiable_values import CostValue
+from ....event import ReceiveDamageEventArguments
+from ....status.character_status.base import CharacterStatusBase
+from ....consts import CostLabels, DamageType, IconType, ObjectPositionType
+from ....match import Match
+from ....struct import Cost, ObjectPosition
+from ....object_base import EventCardBase
+from .....utils.class_registry import register_class
+from .....utils.desc_registry import DescDictType
+
+
+class MachineAssemblyLineStatus_4_4(CharacterStatusBase):
+    name: Literal["Machine Assembly Line"] = "Machine Assembly Line"
+    version: Literal["4.4"] = "4.4"
+    usage: int = 0
+    max_usage: int = 2
+    _card_cost_label: int = PrivateAttr(
+        CostLabels.ARTIFACT.value | CostLabels.WEAPON.value
+    )
+    icon_type: Literal[IconType.SPECIAL] = IconType.SPECIAL
+
+    def event_handler_RECEIVE_DAMAGE(
+        self, event: ReceiveDamageEventArguments, match: Match
+    ) -> List[Actions]:
+        if not event.final_damage.is_corresponding_character_receive_damage(
+            self.position, match, ignore_piercing=False
+        ):
+            # not self receive damage
+            if not (
+                event.final_damage.damage_type == DamageType.HEAL
+                and self.position.check_position_valid(
+                    event.final_damage.target_position,
+                    match,
+                    player_idx_same=True,
+                    character_idx_same=True,
+                )
+            ):
+                # and not heal self
+                return []
+        # add usage
+        self.usage = min(self.usage + 1, self.max_usage)
+        return []
+
+    def value_modifier_COST(
+        self, value: CostValue, match: Match, mode: Literal["TEST", "REAL"]
+    ) -> CostValue:
+        """
+        When self equip weapon or artifact with cost fewer than usage
+        """
+        if not (
+            value.position.player_idx == self.position.player_idx
+            and value.cost.original_value is not None
+            and value.cost.original_value.total_dice_cost <= self.usage
+            and value.cost.label & self._card_cost_label != 0
+        ):
+            # not self, or original usage larger than self usage, or not weapon
+            # or artifact
+            return value
+        total_cost = value.cost.total_dice_cost
+        if total_cost == 0:
+            # cost is 0, do nothing
+            return value
+        for _ in range(total_cost):
+            value.cost.decrease_cost(None)
+        if mode == "REAL":
+            self.usage = 0
+        return value
+
+
+class MachineAssemblyLine_4_4(EventCardBase):
+    name: Literal["Machine Assembly Line"]
+    version: Literal["4.4"] = "4.4"
+    cost: Cost = Cost()
+
+    def get_targets(self, match: Match) -> List[ObjectPosition]:
+        # can quip on all self alive characters
+        ret: List[ObjectPosition] = []
+        for character in match.player_tables[self.position.player_idx].characters:
+            if character.is_alive:
+                ret.append(character.position)
+        return ret
+
+    def get_actions(
+        self, target: ObjectPosition | None, match: Match
+    ) -> List[CreateObjectAction]:
+        assert target is not None
+        return [
+            CreateObjectAction(
+                object_name=self.name,
+                object_position=target.set_area(ObjectPositionType.CHARACTER_STATUS),
+                object_arguments={},
+            )
+        ]
+
+
+desc: Dict[str, DescDictType] = {
+    "CHARACTER_STATUS/Machine Assembly Line": {
+        "names": {"en-US": "Machine Assembly Line", "zh-CN": "机关铸成之链"},
+        "descs": {
+            "4.4": {
+                "en-US": "Each time after this character is targeted by and takes DMG or is healed: Accumulate 1 point of Battle-Readiness (Max 2 points).\nWhen you play a Weapon or Artifact with an original cost of fewer Dice than you have Battle-Readiness points: Clear all Battle-Readiness points and play that card for free.",  # noqa: E501
+                "zh-CN": "该角色每次受到伤害或治疗后：累积1点「备战度」（最多累积2点）。\n我方打出原本费用不多于「备战度」的「武器」或「圣遗物」时：移除所有「备战度」，以免费打出该牌。",  # noqa: E501
+            }
+        },
+    },
+    "CARD/Machine Assembly Line": {
+        "names": {"en-US": "Machine Assembly Line", "zh-CN": "机关铸成之链"},
+        "descs": {
+            "4.4": {
+                "en-US": "Each time after your character is targeted by and takes DMG or is healed: Accumulate 1 point of Battle-Readiness (Max 2 points).\nWhen you play a Weapon or Artifact with an original cost of fewer Dice than you have Battle-Readiness points: Clear all Battle-Readiness points and play that card for free.",  # noqa: E501
+                "zh-CN": "目标我方角色每次受到伤害或治疗后：累积1点「备战度」（最多累积2点）。\n我方打出原本费用不多于「备战度」的「武器」或「圣遗物」时：移除所有「备战度」，以免费打出该牌。",  # noqa: E501
+            }
+        },
+        "image_path": "cardface/Event_Event_Fatiaoji.png",  # noqa: E501
+        "id": 332028,
+    },
+}
+
+
+register_class(MachineAssemblyLineStatus_4_4 | MachineAssemblyLine_4_4, desc)
diff --git a/src/lpsim/server/patch/v44/cards/matsutake_meat_rools_4_4.py b/src/lpsim/server/patch/v44/cards/matsutake_meat_rools_4_4.py
new file mode 100644
index 00000000..435b717b
--- /dev/null
+++ b/src/lpsim/server/patch/v44/cards/matsutake_meat_rools_4_4.py
@@ -0,0 +1,88 @@
+from typing import Dict, List, Literal
+
+from .....utils.class_registry import register_class
+from ....modifiable_values import DamageValue
+from ....action import ActionTypes, CreateObjectAction, MakeDamageAction
+from ....consts import DamageElementalType, DamageType, IconType
+from ....status.character_status.base import RoundEndAttackCharacterStatus
+from ....match import Match
+from ....struct import Cost, ObjectPosition
+from ....card.event.foods import FoodCardBase
+from .....utils.desc_registry import DescDictType
+
+
+class MatsutakeMeatRollsStatus_4_4(RoundEndAttackCharacterStatus):
+    name: Literal["Matsutake Meat Rolls"] = "Matsutake Meat Rolls"
+    version: Literal["4.4"] = "4.4"
+    usage: int = 3
+    max_usage: int = 3
+    icon_type: Literal[IconType.HEAL] = IconType.HEAL
+    damage: int = -1
+    damage_elemental_type: DamageElementalType = DamageElementalType.HEAL
+
+
+class MatsutakeMeatRolls_4_4(FoodCardBase):
+    name: Literal["Matsutake Meat Rolls"]
+    version: Literal["4.4"] = "4.4"
+    cost: Cost = Cost(same_dice_number=2)
+
+    can_eat_only_if_damaged: bool = True
+
+    def get_actions(
+        self, target: ObjectPosition | None, match: Match
+    ) -> List[CreateObjectAction | MakeDamageAction]:
+        ret: List[CreateObjectAction | MakeDamageAction] = []
+        ret = list(super().get_actions(target, match))
+        assert len(ret) == 1
+        assert target is not None
+        ret.append(
+            MakeDamageAction(
+                damage_value_list=[
+                    DamageValue(
+                        position=self.position,
+                        damage_type=DamageType.HEAL,
+                        target_position=target,
+                        damage=-2,
+                        damage_elemental_type=DamageElementalType.HEAL,
+                        cost=self.cost.copy(),
+                    )
+                ],
+            )
+        )
+        create_1 = ret[0]
+        assert create_1.type == ActionTypes.CREATE_OBJECT
+        ret.append(
+            CreateObjectAction(
+                object_name=self.name,
+                object_position=create_1.object_position,
+                object_arguments={},
+            )
+        )
+        return ret
+
+
+desc: Dict[str, DescDictType] = {
+    "CHARACTER_STATUS/Matsutake Meat Rolls": {
+        "names": {"en-US": "Matsutake Meat Rolls", "zh-CN": "松茸酿肉卷"},
+        "descs": {
+            "4.4": {
+                "en-US": "For the next 3 Rounds, heal this character for 1 HP again during the End Phase. (Usages: 3)",  # noqa: E501
+                "zh-CN": "结束阶段治疗此角色1点。（可用次数：3）",  # noqa: E501
+            }
+        },
+    },
+    "CARD/Matsutake Meat Rolls": {
+        "names": {"en-US": "Matsutake Meat Rolls", "zh-CN": "松茸酿肉卷"},
+        "descs": {
+            "4.4": {
+                "en-US": "Heal the target character for 2 HP. For the next 3 Rounds, heal this character for 1 HP again during the End Phase.\n(A character can consume at most 1 Food per Round)",  # noqa: E501
+                "zh-CN": "治疗目标角色2点，3回合内的结束阶段再治疗此角色1点。\n（每回合每个角色最多食用1次「料理」）",  # noqa: E501
+            }
+        },
+        "image_path": "cardface/Event_Food_Matsutake.png",  # noqa: E501
+        "id": 333014,
+    },
+}
+
+
+register_class(MatsutakeMeatRolls_4_4 | MatsutakeMeatRollsStatus_4_4, desc)
diff --git a/src/lpsim/server/patch/v44/cards/sapwood_blade_4_4.py b/src/lpsim/server/patch/v44/cards/sapwood_blade_4_4.py
new file mode 100644
index 00000000..419d444e
--- /dev/null
+++ b/src/lpsim/server/patch/v44/cards/sapwood_blade_4_4.py
@@ -0,0 +1,106 @@
+from typing import Dict, List, Literal
+
+from ....character.character_base import SkillBase
+from ....event import SkillEndEventArguments
+from ....status.character_status.base import RoundCharacterStatus
+from ....match import Match
+from ....card.equipment.weapon.base import WeaponBase
+from ....action import CreateDiceAction, CreateObjectAction, RemoveObjectAction
+from ....consts import (
+    ELEMENT_TO_DIE_COLOR,
+    IconType,
+    ObjectPositionType,
+    SkillType,
+    WeaponType,
+)
+from ....struct import Cost
+from .....utils.class_registry import register_class
+from .....utils.desc_registry import DescDictType
+
+
+class SapwoodBladeStatus_4_4(RoundCharacterStatus):
+    name: Literal["Sapwood Blade"]
+    version: Literal["4.4"] = "4.4"
+    usage: int = 1
+    max_usage: int = 1
+    icon_type: Literal[IconType.BUFF] = IconType.BUFF
+
+    def event_handler_SKILL_END(
+        self, event: SkillEndEventArguments, match: Match
+    ) -> List[CreateDiceAction | RemoveObjectAction]:
+        """
+        When self use normal attack, create 2 elemental dice.
+        """
+        position = event.action.position
+        if not self.position.check_position_valid(
+            position,
+            match,
+            player_idx_same=True,
+            character_idx_same=True,
+        ):
+            # not self use skill
+            return []
+        skill: SkillBase = match.get_object(position)  # type: ignore
+        if skill.skill_type != SkillType.NORMAL_ATTACK:
+            # not using normal attack
+            return []
+        character = match.player_tables[position.player_idx].characters[
+            position.character_idx
+        ]
+        assert self.usage > 0
+        self.usage -= 1
+        return [
+            CreateDiceAction(
+                player_idx=position.player_idx,
+                color=ELEMENT_TO_DIE_COLOR[character.element],
+                number=2,
+            )
+        ] + self.check_should_remove()
+
+
+class SapwoodBlade_4_4(WeaponBase):
+    name: Literal["Sapwood Blade"]
+    version: Literal["4.4"] = "4.4"
+    weapon_type: WeaponType = WeaponType.SWORD
+    cost: Cost = Cost(any_dice_number=3)
+
+    def equip(self, match: Match) -> List[CreateObjectAction]:
+        """
+        attach status
+        """
+        return [
+            CreateObjectAction(
+                object_position=self.position.set_area(
+                    ObjectPositionType.CHARACTER_STATUS
+                ),
+                object_name=self.name,
+                object_arguments={},
+            )
+        ]
+
+
+desc: Dict[str, DescDictType] = {
+    "CHARACTER_STATUS/Sapwood Blade": {
+        "names": {"en-US": "Sapwood Blade", "zh-CN": "原木刀"},
+        "descs": {
+            "4.4": {
+                "en-US": "When this character next uses a Normal Attack during this Round: Create 2 Elemental Dice of this character's Elemental Type.",  # noqa: E501
+                "zh-CN": "本回合中，下次使用「普通攻击」后：生成2个此角色类型的元素骰。",  # noqa: E501
+            }
+        },
+    },
+    "WEAPON/Sapwood Blade": {
+        "names": {"en-US": "Sapwood Blade", "zh-CN": "原木刀"},
+        "descs": {
+            "4.4": {
+                "en-US": "The character deals +1 DMG.\nWhen entering play: When the character to which this is attached next uses a Normal Attack during this Round: Create 2 Elemental Dice of this character's Elemental Type.\n(Only Sword Characters can equip this. A character can equip a maximum of 1 Weapon)",  # noqa: E501
+                "zh-CN": "角色造成的伤害+1。\n入场时：所附属角色在本回合中，下次使用「普通攻击」后：生成2个此角色类型的元素骰。\n（「单手剑」角色才能装备。角色最多装备1件「武器」）",  # noqa: E501
+            }
+        },
+        "image_path": "cardface/Modify_Weapon_Yuanmu.png",  # noqa: E501
+        "id": 311507,
+    },
+}
+
+
+register_class(SapwoodBlade_4_4 | SapwoodBladeStatus_4_4, desc)
diff --git a/src/lpsim/server/patch/v44/cards/silver_and_melus_4_4.py b/src/lpsim/server/patch/v44/cards/silver_and_melus_4_4.py
new file mode 100644
index 00000000..d65a57d2
--- /dev/null
+++ b/src/lpsim/server/patch/v44/cards/silver_and_melus_4_4.py
@@ -0,0 +1,134 @@
+from typing import Dict, List, Literal
+from pydantic import PrivateAttr
+
+from ....event_handler import SystemEventHandlerBase
+from ....object_base import CreateSystemEventHandlerObject
+from .....utils.class_registry import register_class
+from ....struct import Cost
+from ....action import ChangeObjectUsageAction, DrawCardAction, RemoveObjectAction
+from ....match import Match
+from ....event import (
+    MoveObjectEventArguments,
+    ReceiveDamageEventArguments,
+    RoundEndEventArguments,
+)
+from ....consts import DamageElementalType, DamageType, IconType
+from ....card.support.companions import CompanionBase
+from .....utils.desc_registry import DescDictType
+
+
+class SilverAndMelusEventHandler_4_4(SystemEventHandlerBase):
+    """
+    It will be generated when Silver and Melus in deck, and record elemental damage
+    types for both player, and when Silver and Melus is played into area or elemental
+    damage is made, it will update its counter and also update all existing Silver and
+    Melus usage.
+    """
+
+    name: Literal["Silver and Melus"] = "Silver and Melus"
+    version: Literal["4.4"] = "4.4"
+    etypes: List[List[DamageElementalType]] = [[], []]
+    _max_usage: int = PrivateAttr(4)
+
+    def _update_usage(self, match: Match) -> List[ChangeObjectUsageAction]:
+        """
+        check all, if their usage not same as self, update it.
+        """
+        actions: List[ChangeObjectUsageAction] = []
+        for etypes, table in zip(self.etypes, match.player_tables):
+            counter = min(len(etypes), self._max_usage)
+            for support in table.supports:
+                if support.name == self.name and support.usage != counter:
+                    actions.append(
+                        ChangeObjectUsageAction(
+                            object_position=support.position,
+                            change_usage=counter - support.usage,
+                        )
+                    )
+        return actions
+
+    def event_handler_MOVE_OBJECT(
+        self, event: MoveObjectEventArguments, match: Match
+    ) -> List[ChangeObjectUsageAction]:
+        if event.object_name != self.name:
+            # not Silver and Melus
+            return []
+        return self._update_usage(match)
+
+    def event_handler_RECEIVE_DAMAGE(
+        self, event: ReceiveDamageEventArguments, match: Match
+    ) -> List[ChangeObjectUsageAction]:
+        pidx = event.final_damage.target_position.player_idx
+        if event.final_damage.damage_type != DamageType.DAMAGE or (
+            event.final_damage.damage_elemental_type
+            in [
+                DamageElementalType.PIERCING,
+                DamageElementalType.PHYSICAL,
+                DamageElementalType.HEAL,
+            ]
+        ):
+            # not damage or damage type not elemental
+            return []
+        # record damage type
+        damage_element = event.final_damage.damage_elemental_type
+        # damage is too frequent. If not new damage type, do not check usage.
+        changed = False
+        if damage_element not in self.etypes[1 - pidx]:
+            self.etypes[1 - pidx].append(damage_element)
+            changed = True
+        if not changed:
+            return []
+        return self._update_usage(match)
+
+
+class SilverAndMelus_4_4(CreateSystemEventHandlerObject, CompanionBase):
+    name: Literal["Silver and Melus"]
+    version: Literal["4.4"] = "4.4"
+    usage: int = 0
+    _max_usage: int = PrivateAttr(4)
+    recorded_damage_type: List[DamageElementalType] = []
+    icon_type: Literal[IconType.TIMESTATE] = IconType.TIMESTATE
+    cost: Cost = Cost(same_dice_number=1)
+
+    handler_name: Literal["Silver and Melus"] = "Silver and Melus"
+
+    def event_handler_ROUND_END(
+        self,
+        event: RoundEndEventArguments,
+        match: Match,
+    ) -> List[DrawCardAction | RemoveObjectAction]:
+        """
+        If usage above 3, remove self and draw cards.
+        """
+        if self.usage < 3:
+            return []
+        return [
+            DrawCardAction(
+                player_idx=self.position.player_idx,
+                number=self.usage,
+                draw_if_filtered_not_enough=True,
+            ),
+            RemoveObjectAction(object_position=self.position),
+        ]
+
+
+desc: Dict[str, DescDictType] = {
+    "SUPPORT/Silver and Melus": {
+        "names": {"en-US": "Silver and Melus", "zh-CN": "西尔弗和迈勒斯"},
+        "descs": {
+            "4.4": {
+                "en-US": "This card will record the number of types of Elemental DMG opposing characters have taken during this match as points of Attendant's Attentiveness. (Max 4 points)\nEnd Phase: If you have at least 3 Attendant's Attentiveness points, discard this card and draw cards equal to the amount of Attendant's Attentiveness points.",  # noqa: E501
+                "zh-CN": "此牌会记录本场对局中敌方角色受到过的元素伤害种类数，称为「侍从的周到」。（最多4点）\n结束阶段：如果「侍从的周到」至少为3，则弃置此牌，然后抓「侍从的周到」点数的牌。",  # noqa: E501
+            }
+        },
+        "image_path": "cardface/Assist_NPC_Silver.png",  # noqa: E501
+        "id": 322023,
+    },
+    "SYSTEM/Silver and Melus": {
+        "names": {"en-US": "Silver and Melus", "zh-CN": "西尔弗和迈勒斯"},
+        "descs": {"4.4": {}},
+    },
+}
+
+
+register_class(SilverAndMelus_4_4 | SilverAndMelusEventHandler_4_4, desc)
diff --git a/src/lpsim/server/patch/v44/cards/sunyata_flower_4_4.py b/src/lpsim/server/patch/v44/cards/sunyata_flower_4_4.py
new file mode 100644
index 00000000..80e96d16
--- /dev/null
+++ b/src/lpsim/server/patch/v44/cards/sunyata_flower_4_4.py
@@ -0,0 +1,170 @@
+from typing import Any, Dict, List, Literal, Type
+from pydantic import PrivateAttr
+
+from ....action import ActionTypes, Actions, CreateObjectAction, RemoveObjectAction
+from .....utils.class_registry import get_instance, register_class
+from ....event import GameStartEventArguments, MoveObjectEventArguments
+from ....modifiable_values import CostValue
+from ....status.team_status.base import RoundTeamStatus, UsageTeamStatus
+from ....consts import CostLabels, IconType, ObjectPositionType
+from .....utils.class_registry import get_class_list_by_base_class
+from ....card.support.base import SupportBase
+from ....struct import Cost, ObjectPosition
+from ....match import Match
+from ....object_base import EventCardBase
+from .....utils.desc_registry import DescDictType
+
+
+class SunyataFlowerStatus_4_4(UsageTeamStatus, RoundTeamStatus):
+    name: Literal["Sunyata Flower"] = "Sunyata Flower"
+    version: Literal["4.4"] = "4.4"
+    usage: int = 1
+    max_usage: int = 1
+    icon_type: Literal[IconType.BUFF] = IconType.BUFF
+    target_label: int = CostLabels.SUPPORTS.value
+
+    def value_modifier_COST(
+        self, value: CostValue, match: Match, mode: Literal["TEST", "REAL"]
+    ) -> CostValue:
+        """
+        decrease weapons or artifact cost by 1
+        """
+        if value.position.player_idx != self.position.player_idx:
+            # not self character, do nothing
+            return value
+        if value.cost.label & self.target_label == 0:
+            # not weapon or artifact, do nothing
+            return value
+        # try decrease once
+        if value.cost.decrease_cost(None):
+            # decrease success
+            if mode == "REAL":
+                self.usage -= 1
+        return value
+
+    def event_handler_MOVE_OBJECT(
+        self, event: MoveObjectEventArguments, match: Match
+    ) -> List[RemoveObjectAction]:
+        """
+        As it triggers on equipping support,
+        When move object end, check whether to remove.
+        """
+        return self.check_should_remove()
+
+
+class SunyataFlower_4_4(EventCardBase):
+    name: Literal["Sunyata Flower"]
+    version: Literal["4.4"] = "4.4"
+    cost: Cost = Cost()
+    _accept_card_types: Type = PrivateAttr(SupportBase)
+    _accept_class_list: List[str] | None = PrivateAttr(None)
+    _accept_version: str | None = PrivateAttr(None)
+
+    available_handler_in_deck: List[ActionTypes] = [ActionTypes.GAME_START]
+
+    def _get_candidate_list(self, match: Match) -> List[str]:
+        if self._accept_class_list is not None:
+            return self._accept_class_list
+        kwargs: Dict[str, Any] = {"exclude": set([self.name])}
+        default_version = match.player_tables[
+            self.position.player_idx
+        ].player_deck_information.default_version
+        if default_version is not None:
+            kwargs["version"] = default_version
+        self._accept_version = default_version
+        candidate_list = get_class_list_by_base_class(self._accept_card_types, **kwargs)
+        self._accept_class_list = candidate_list
+        return candidate_list
+
+    def event_handler_GAME_START(
+        self, event: GameStartEventArguments, match: Match
+    ) -> List[Actions]:
+        """
+        check all cards that able to generate. If they contains GAME_START
+        event and available in deck, call them.
+        """
+        candidate_list = self._get_candidate_list(match)
+        args = {}
+        if self._accept_version is not None:
+            args["version"] = self._accept_version
+        candidate_instance = [
+            get_instance(self._accept_card_types, {"name": name, **args})
+            for name in candidate_list
+        ]
+        res: List[Actions] = []
+        for i in candidate_instance:
+            if ActionTypes.GAME_START in i.available_handler_in_deck:
+                res += i.event_handler_GAME_START(event, match)
+        return res
+
+    def is_valid(self, match: Match) -> bool:
+        return len(self.get_targets(match)) > 0
+
+    def get_targets(self, match: Match) -> List[ObjectPosition]:
+        """
+        Our supports
+        """
+        supports = match.player_tables[self.position.player_idx].supports
+        return [x.position for x in supports]
+
+    def get_actions(
+        self, target: ObjectPosition | None, match: Match
+    ) -> List[RemoveObjectAction | CreateObjectAction]:
+        """
+        remove target, and generate 2 random support cards, and create status
+        """
+        assert target is not None
+        ret: List[RemoveObjectAction | CreateObjectAction] = [
+            RemoveObjectAction(object_position=target)
+        ]
+        candidate_list = self._get_candidate_list(match)
+        for i in range(2):
+            random_target = candidate_list[int(match._random() * len(candidate_list))]
+            position = ObjectPosition(
+                player_idx=self.position.player_idx, area=ObjectPositionType.HAND, id=-1
+            )
+            args = {}
+            if self._accept_version is not None:
+                args["version"] = self._accept_version
+            ret.append(
+                CreateObjectAction(
+                    object_name=random_target,
+                    object_position=position,
+                    object_arguments=args,
+                )
+            )
+        ret.append(
+            CreateObjectAction(
+                object_name=self.name,
+                object_position=target.set_area(ObjectPositionType.TEAM_STATUS),
+                object_arguments={},
+            )
+        )
+        return ret
+
+
+desc: Dict[str, DescDictType] = {
+    "TEAM_STATUS/Sunyata Flower": {
+        "names": {"en-US": "Sunyata Flower", "zh-CN": "净觉花"},
+        "descs": {
+            "4.4": {
+                "en-US": "During the Round, the next time you play a Support Card: Spend 1 less Elemental Die.",  # noqa: E501
+                "zh-CN": "本回合中，我方下次打出支援牌时：少花费1个元素骰。",  # noqa: E501
+            }
+        },
+    },
+    "CARD/Sunyata Flower": {
+        "names": {"en-US": "Sunyata Flower", "zh-CN": "净觉花"},
+        "descs": {
+            "4.4": {
+                "en-US": "Select a card from your Support Zone and discard it. After that, randomly generate 2 Support Cards in your hand.\nDuring the Round, the next time you play a Support Card: Spend 1 less Elemental Die.",  # noqa: E501
+                "zh-CN": "选择一张我方支援区的牌，将其弃置。然后，在我方手牌中随机生成2张支援牌。\n本回合中，我方下次打出支援牌时：少花费1个元素骰。",  # noqa: E501
+            }
+        },
+        "image_path": "cardface/Event_Event_Ganluhua.png",  # noqa: E501
+        "id": 332029,
+    },
+}
+
+
+register_class(SunyataFlower_4_4 | SunyataFlowerStatus_4_4, desc)
diff --git a/src/lpsim/server/patch/v44/cards/veterans_visage_4_4.py b/src/lpsim/server/patch/v44/cards/veterans_visage_4_4.py
new file mode 100644
index 00000000..acea8f07
--- /dev/null
+++ b/src/lpsim/server/patch/v44/cards/veterans_visage_4_4.py
@@ -0,0 +1,84 @@
+from typing import Dict, List, Literal
+from ....struct import Cost
+
+from .....utils.class_registry import register_class
+from ....consts import ELEMENT_TO_DIE_COLOR, DamageType, ObjectPositionType
+from ....action import Actions, CreateDiceAction, DrawCardAction
+from ....match import Match
+from ....event import ReceiveDamageEventArguments
+from ....card.equipment.artifact.base import RoundEffectArtifactBase
+from .....utils.desc_registry import DescDictType
+
+
+class VeteransVisage_4_4(RoundEffectArtifactBase):
+    name: Literal["Veteran's Visage"]
+    version: Literal["4.4"] = "4.4"
+    cost: Cost = Cost(any_dice_number=2)
+    max_usage_per_round: int = 2
+
+    def event_handler_RECEIVE_DAMAGE(
+        self, event: ReceiveDamageEventArguments, match: Match
+    ) -> List[Actions]:
+        if self.usage <= 0:
+            # already used
+            return []
+        if not self.position.check_position_valid(
+            event.final_damage.target_position,
+            match,
+            player_idx_same=True,
+            character_idx_same=True,
+            area_same=True,
+            source_area=ObjectPositionType.CHARACTER,
+        ):
+            # not equipped, or not self receive damage
+            return []
+        character = match.player_tables[self.position.player_idx].characters[
+            self.position.character_idx
+        ]
+        if character.hp == 0:
+            # character is dying
+            return []
+        if event.final_damage.damage_type not in [DamageType.DAMAGE, DamageType.HEAL]:
+            # not damage or heal
+            return []
+        if self.usage == 2:
+            # create die
+            self.usage -= 1
+            character = match.player_tables[self.position.player_idx].characters[
+                self.position.character_idx
+            ]
+            return [
+                CreateDiceAction(
+                    player_idx=self.position.player_idx,
+                    color=ELEMENT_TO_DIE_COLOR[character.element],
+                    number=1,
+                )
+            ]
+        else:
+            # draw card
+            self.usage -= 1
+            return [
+                DrawCardAction(
+                    player_idx=self.position.player_idx,
+                    number=1,
+                    draw_if_filtered_not_enough=True,
+                )
+            ]
+
+
+desc: Dict[str, DescDictType] = {
+    "ARTIFACT/Veteran's Visage": {
+        "names": {"en-US": "Veteran's Visage", "zh-CN": "老兵的容颜"},
+        "descs": {
+            "4.4": {
+                "en-US": "After this character takes DMG or is healed: Based on the number of times this effect has been triggered this Round, the effects will be different.\nFirst Trigger: Create 1 Elemental Die of the character's Elemental Type.\nSecond Trigger: Draw 1 card.\n(A character can equip a maximum of 1 Artifact)",  # noqa: E501
+                "zh-CN": "角色受到伤害或治疗后：根据本回合触发此效果的次数，执行不同的效果。\n第一次触发：生成1个此角色类型的元素骰。\n第二次触发：抓1张牌。\n（角色最多装备1件「圣遗物」）",  # noqa: E501
+            }
+        },
+        "image_path": "cardface/Modify_Artifact_LaobinDanjian.png",  # noqa: E501
+        "id": 312023,
+    },
+}
+
+
+register_class(VeteransVisage_4_4, desc)
diff --git a/src/lpsim/server/patch/v44/characters/__init__.py b/src/lpsim/server/patch/v44/characters/__init__.py
new file mode 100644
index 00000000..9a2a08ba
--- /dev/null
+++ b/src/lpsim/server/patch/v44/characters/__init__.py
@@ -0,0 +1,4 @@
+from .....utils import import_all_modules
+
+
+import_all_modules(__file__, __name__)
diff --git a/src/lpsim/server/patch/v44/characters/cryo_hypostasis_4_4.py b/src/lpsim/server/patch/v44/characters/cryo_hypostasis_4_4.py
new file mode 100644
index 00000000..a47b833d
--- /dev/null
+++ b/src/lpsim/server/patch/v44/characters/cryo_hypostasis_4_4.py
@@ -0,0 +1,340 @@
+from typing import Dict, List, Literal
+
+from ....action import (
+    ActionTypes,
+    ChangeObjectUsageAction,
+    MakeDamageAction,
+    RemoveObjectAction,
+)
+from ....event import RemoveObjectEventArguments, RoundEndEventArguments
+from ....match import Match
+from ....status.character_status.base import ReviveCharacterStatus, UsageCharacterStatus
+from .....utils.class_registry import register_class
+from .....utils.desc_registry import DescDictType
+from ....summon.base import AttackerSummonBase
+from ....action import Actions, CreateObjectAction
+from ....struct import Cost, ObjectPosition
+from ....consts import (
+    CostLabels,
+    DamageElementalType,
+    DieColor,
+    ElementType,
+    FactionType,
+    IconType,
+    ObjectPositionType,
+    WeaponType,
+)
+from ....character.character_base import (
+    AOESkillBase,
+    CreateStatusPassiveSkill,
+    ElementalBurstBase,
+    ElementalNormalAttackBase,
+    ElementalSkillBase,
+    CharacterBase,
+    TalentBase,
+)
+
+
+class OverwhelmingIce_4_4(UsageCharacterStatus):
+    name: Literal["Overwhelming Ice"] = "Overwhelming Ice"
+    version: Literal["4.4"] = "4.4"
+    usage: int = 1
+    max_usage: int = 1
+    icon_type: IconType = IconType.ATK_SELF
+
+
+class CryocrystalCore_4_4(ReviveCharacterStatus):
+    name: Literal["Cryocrystal Core"] = "Cryocrystal Core"
+    version: Literal["4.4"] = "4.4"
+    heal: int = 1
+
+
+class PiercingIceridge_4_4(AttackerSummonBase):
+    name: Literal["Piercing Iceridge"] = "Piercing Iceridge"
+    version: Literal["4.4"] = "4.4"
+    usage: int = 2
+    max_usage: int = 2
+    damage_elemental_type: DamageElementalType = DamageElementalType.CRYO
+    damage: int = 1
+
+    def event_handler_ROUND_END(
+        self, event: RoundEndEventArguments, match: Match
+    ) -> List[MakeDamageAction | ChangeObjectUsageAction]:
+        ret = super().event_handler_ROUND_END(event, match)
+        damage_action = ret[0]
+        assert damage_action.type == ActionTypes.MAKE_DAMAGE
+        # get closest character
+        our_active = match.player_tables[self.position.player_idx].active_character_idx
+        target_characters = match.player_tables[1 - self.position.player_idx].characters
+        target_idx = our_active
+        if target_characters[target_idx].is_defeated:
+            # need to choose another character
+            for idx, character in enumerate(target_characters):
+                if not character.is_defeated:
+                    target_idx = idx
+                    break
+            else:
+                raise AssertionError("No character alive")
+        damage_action.damage_value_list[0].target_position = target_characters[
+            target_idx
+        ].position
+        return ret
+
+
+# Skills
+
+
+class IcespikeShot(ElementalNormalAttackBase, AOESkillBase):
+    name: Literal["Icespike Shot"] = "Icespike Shot"
+    version: Literal["4.4"] = "4.4"
+    damage: int = 1
+    back_damage: int = 1
+    damage_type: DamageElementalType = DamageElementalType.CRYO
+    cost: Cost = Cost(
+        elemental_dice_color=DieColor.CRYO, elemental_dice_number=1, any_dice_number=2
+    )
+
+    def get_actions(self, match: Match) -> List[Actions]:
+        status = (
+            match.player_tables[self.position.player_idx]
+            .characters[self.position.character_idx]
+            .status
+        )
+        found_target = None
+        for s in status:
+            if s.name == "Overwhelming Ice":
+                found_target = s
+                break
+        if found_target is not None:
+            # use AOE attack opposite
+            return [
+                self.attack_opposite_active(match, self.damage, self.damage_type),
+                self.charge_self(1),
+                RemoveObjectAction(object_position=found_target.position),
+            ]
+        # use normal attack opposite
+        return [
+            ElementalNormalAttackBase.attack_opposite_active(
+                self, match, self.damage, self.damage_type
+            ),
+            self.charge_self(1),
+        ]
+
+
+class IceRingWaltz(ElementalSkillBase):
+    name: Literal["Ice Ring Waltz"] = "Ice Ring Waltz"
+    damage: int = 3
+    damage_type: DamageElementalType = DamageElementalType.CRYO
+    cost: Cost = Cost(elemental_dice_color=DieColor.CRYO, elemental_dice_number=3)
+
+    def get_actions(self, match: Match) -> List[Actions]:
+        """
+        Attack and create object
+        """
+        return super().get_actions(
+            match,
+            [
+                self.create_character_status("Overwhelming Ice"),
+            ],
+        )
+
+
+class PlungingIceShards(ElementalBurstBase, AOESkillBase):
+    name: Literal["Plunging Ice Shards"] = "Plunging Ice Shards"
+    damage: int = 2
+    back_damage: int = 1
+    damage_type: DamageElementalType = DamageElementalType.CRYO
+    cost: Cost = Cost(
+        elemental_dice_color=DieColor.CRYO,
+        elemental_dice_number=3,
+        charge=2,
+    )
+
+    def get_actions(self, match: Match) -> List[Actions]:
+        return super().get_actions(match, [self.create_summon("Piercing Iceridge")])
+
+
+class CryocrystalCore(CreateStatusPassiveSkill):
+    name: Literal["Cryocrystal Core"] = "Cryocrystal Core"
+    status_name: Literal["Cryocrystal Core"] = "Cryocrystal Core"
+    regenerate_when_revive: bool = False
+
+
+# Talents
+
+
+class SternfrostPrism_4_4(TalentBase):
+    name: Literal["Sternfrost Prism"]
+    version: Literal["4.4"] = "4.4"
+    character_name: Literal["Cryo Hypostasis"] = "Cryo Hypostasis"
+    cost: Cost = Cost(
+        elemental_dice_color=DieColor.CRYO,
+        elemental_dice_number=1,
+    )
+    cost_label: int = (
+        CostLabels.CARD.value | CostLabels.TALENT.value | CostLabels.EQUIPMENT.value
+    )
+    remove_when_used: bool = False
+
+    def get_actions(self, target: ObjectPosition | None, match: Match) -> List[Actions]:
+        """
+        Using this card will attach cryo crystal core to it.
+        """
+        ret = super().get_actions(target, match)
+        character = match.player_tables[self.position.player_idx].get_active_character()
+        assert character.name == self.character_name
+        return ret + [
+            CreateObjectAction(
+                object_name="Cryocrystal Core",
+                object_position=character.position.set_area(
+                    ObjectPositionType.CHARACTER_STATUS
+                ),
+                object_arguments={},
+            )
+        ]
+
+    def event_handler_REMOVE_OBJECT(
+        self, event: RemoveObjectEventArguments, match: Match
+    ) -> List[CreateObjectAction]:
+        """
+        When this card equipped, cryo core is removed from self, create
+        sheer cold on opposite active.
+        """
+        if not self.position.check_position_valid(
+            event.action.object_position,
+            match,
+            player_idx_same=True,
+            character_idx_same=True,
+            source_area=ObjectPositionType.CHARACTER,
+            target_area=ObjectPositionType.CHARACTER_STATUS,
+        ):
+            # not equipped, or target not self character status
+            return []
+        if event.object_name != "Cryocrystal Core":
+            # not cryo crystal core
+            return []
+        target = match.player_tables[
+            1 - self.position.player_idx
+        ].get_active_character()
+        return [
+            CreateObjectAction(
+                object_position=target.position.set_area(
+                    ObjectPositionType.CHARACTER_STATUS
+                ),
+                object_name="Sheer Cold",
+                object_arguments={},
+            )
+        ]
+
+
+class CryoHypostasis_4_4(CharacterBase):
+    name: Literal["Cryo Hypostasis"]
+    version: Literal["4.4"] = "4.4"
+    element: ElementType = ElementType.CRYO
+    max_hp: int = 8
+    max_charge: int = 2
+    skills: List[IcespikeShot | IceRingWaltz | PlungingIceShards | CryocrystalCore] = []
+    faction: List[FactionType] = [FactionType.MONSTER]
+    weapon_type: WeaponType = WeaponType.OTHER
+
+    def _init_skills(self) -> None:
+        self.skills = [
+            IcespikeShot(),
+            IceRingWaltz(),
+            PlungingIceShards(),
+            CryocrystalCore(),
+        ]
+
+
+# define descriptions of newly defined classes. Note key of skills and talents
+# have character names. For balance changes, only descs are needed to define.
+character_descs: Dict[str, DescDictType] = {
+    "CHARACTER/Cryo Hypostasis": {
+        "names": {"en-US": "Cryo Hypostasis", "zh-CN": "无相之冰"},
+        "descs": {"4.4": {"en-US": "", "zh-CN": ""}},
+        "image_path": "cardface/Char_Monster_EffigyIce.png",  # noqa: E501
+        "id": 2103,
+    },
+    "SKILL_Cryo Hypostasis_NORMAL_ATTACK/Icespike Shot": {
+        "names": {"en-US": "Icespike Shot", "zh-CN": "冰锥迸射"},
+        "descs": {
+            "4.4": {"en-US": "Deals 1 Cryo DMG.", "zh-CN": "造成1点冰元素伤害。"}
+        },
+    },
+    "SKILL_Cryo Hypostasis_ELEMENTAL_SKILL/Ice Ring Waltz": {
+        "names": {"en-US": "Ice Ring Waltz", "zh-CN": "圆舞冰环"},
+        "descs": {
+            "4.4": {
+                "en-US": "Deals 3 Cryo DMG. This character gains Overwhelming Ice.",  # noqa: E501
+                "zh-CN": "造成3点冰元素伤害，本角色附属四迸冰锥。",
+            }
+        },
+    },
+    "CHARACTER_STATUS/Overwhelming Ice": {
+        "names": {"en-US": "Overwhelming Ice", "zh-CN": "四迸冰锥"},
+        "descs": {
+            "4.4": {
+                "en-US": "When the character uses a Normal Attack: Deal 1 Piercing DMG to all opposing characters on standby. .\nUsage(s): 1",  # noqa: E501
+                "zh-CN": "角色进行普通攻击时：对所有敌方后台角色造成1点穿透伤害。\n可用次数：1",  # noqa: E501
+            }
+        },
+    },
+    "SKILL_Cryo Hypostasis_ELEMENTAL_BURST/Plunging Ice Shards": {
+        "names": {"en-US": "Plunging Ice Shards", "zh-CN": "冰棱轰坠"},
+        "descs": {
+            "4.4": {
+                "en-US": "Deals 2 Cryo DMG, deals 1 Piercing DMG to all opposing characters on standby, summons 1 Piercing Iceridge.",  # noqa: E501
+                "zh-CN": "造成2点冰元素伤害，对所有敌方后台角色造成1点穿透伤害，召唤刺击冰棱。",  # noqa: E501
+            }
+        },
+    },
+    "SUMMON/Piercing Iceridge": {
+        "names": {"en-US": "Piercing Iceridge", "zh-CN": "刺击冰棱"},
+        "descs": {
+            "4.4": {
+                "en-US": "End Phase: Deal 1 Cryo DMG to the opposing Character Closest to Your Current Active Character.\nUsage(s): 2",  # noqa: E501
+                "zh-CN": "结束阶段：对敌方距离我方出战角色最近的角色造成1点冰元素伤害。\n可用次数：2",  # noqa: E501
+            }
+        },
+        "image_path": "cardface/Summon_EffigyIce.png",
+    },
+    "SKILL_Cryo Hypostasis_PASSIVE/Cryocrystal Core": {
+        "names": {"en-US": "Cryocrystal Core", "zh-CN": "冰晶核心"},
+        "descs": {
+            "4.4": {
+                "en-US": "(Passive) When the battle begins, this character gains Cryocrystal Core.",  # noqa: E501
+                "zh-CN": "【被动】战斗开始时，初始附属冰晶核心。",
+            }
+        },
+    },
+    "CHARACTER_STATUS/Cryocrystal Core": {
+        "names": {"en-US": "Cryocrystal Core", "zh-CN": "冰晶核心"},
+        "descs": {
+            "4.4": {
+                "en-US": "When the character to which this is attached would be defeated: Remove this effect, ensure the character $[K54|s1], and heal them to 1 HP.",  # noqa: E501
+                "zh-CN": "所附属角色被击倒时：移除此效果，使角色免于被击倒，并治疗该角色到1点生命值。",  # noqa: E501
+            }
+        },
+    },
+    "TALENT_Cryo Hypostasis/Sternfrost Prism": {
+        "names": {"en-US": "Sternfrost Prism", "zh-CN": "严霜棱晶"},
+        "descs": {
+            "4.4": {
+                "en-US": "Can only be played if your active character is Cryo Hypostasis: Attach Cryocrystal Core to them.\nAfter Cryo Hypostasis, who has this card equipped, triggers Cryocrystal Core: Attach Sheer Cold to the opposing active character.\n(Your deck must contain Cryo Hypostasis to add this card to your deck)",  # noqa: E501
+                "zh-CN": "我方出战角色为无相之冰时，才能打出：使其附属冰晶核心。\n装备有此牌的无相之冰触发冰晶核心后：对敌方出战角色附属严寒。\n（牌组中包含无相之冰，才能加入牌组）",  # noqa: E501
+            }
+        },
+        "image_path": "cardface/Modify_Talent_EffigyIce.png",  # noqa: E501
+        "id": 221031,
+    },
+}
+
+
+register_class(
+    CryoHypostasis_4_4
+    | OverwhelmingIce_4_4
+    | CryocrystalCore_4_4
+    | PiercingIceridge_4_4
+    | SternfrostPrism_4_4,
+    character_descs,
+)
diff --git a/src/lpsim/server/patch/v44/characters/millennial_pearl_seahorse_4_4.py b/src/lpsim/server/patch/v44/characters/millennial_pearl_seahorse_4_4.py
new file mode 100644
index 00000000..01f9f361
--- /dev/null
+++ b/src/lpsim/server/patch/v44/characters/millennial_pearl_seahorse_4_4.py
@@ -0,0 +1,342 @@
+from typing import Any, Dict, List, Literal
+
+from ....action import (
+    ActionTypes,
+    Actions,
+    ChangeObjectUsageAction,
+    CreateObjectAction,
+    DrawCardAction,
+)
+from ....struct import ObjectPosition
+from .....utils.class_registry import register_class
+from ....summon.base import AttackerSummonBase
+from ....modifiable_values import DamageDecreaseValue
+from ....match import Match
+from ....event import (
+    DeclareRoundEndEventArguments,
+    GameStartEventArguments,
+    RoundPrepareEventArguments,
+)
+from ....status.character_status.base import DefendCharacterStatus
+from ....struct import Cost
+from ....consts import (
+    CostLabels,
+    DamageElementalType,
+    DieColor,
+    ElementType,
+    FactionType,
+    ObjectPositionType,
+    WeaponType,
+)
+from ....character.character_base import (
+    CharacterBase,
+    CreateStatusPassiveSkill,
+    ElementalBurstBase,
+    ElementalSkillBase,
+    PhysicalNormalAttackBase,
+    TalentBase,
+)
+from .....utils.desc_registry import DescDictType
+
+
+class FontemerPearl_4_4(DefendCharacterStatus):
+    name: Literal["Fontemer Pearl"] = "Fontemer Pearl"
+    desc: Literal["", "talent"] = ""
+    version: Literal["4.4"] = "4.4"
+    usage: int = 1
+    max_usage: int = 1
+    min_damage_to_trigger: int = 1
+    max_in_one_time: int = 1
+
+    extra_usage: int = 1
+    round_extra_usage: int = 1
+
+    def __init__(self, *args, **kwargs):
+        super().__init__(*args, **kwargs)
+        # if marked as talent, increase extra usage.
+        if self.desc == "talent":
+            self.extra_usage = 2
+            self.round_extra_usage = 2
+
+    def renew(self, obj: "FontemerPearl_4_4") -> None:
+        # When renew, update extra usage. If has talent, update desc
+        self.usage = max(self.usage, obj.usage)
+        self.extra_usage = max(self.extra_usage, obj.extra_usage)
+        self.round_extra_usage = max(self.round_extra_usage, obj.round_extra_usage)
+        if obj.desc == "talent":
+            self.desc = "talent"
+
+    def event_handler_ROUND_PREPARE(
+        self, event: RoundPrepareEventArguments, match: Match
+    ) -> List[Actions]:
+        self.extra_usage = self.round_extra_usage
+        return []
+
+    def value_modifier_DAMAGE_DECREASE(
+        self, value: DamageDecreaseValue, match: Match, mode: Literal["TEST", "REAL"]
+    ) -> DamageDecreaseValue:
+        initial_usage = self.usage
+        ret = super().value_modifier_DAMAGE_DECREASE(value, match, mode)
+        if (
+            initial_usage > self.usage
+            and value.position.area == ObjectPositionType.SUMMON
+            and self.extra_usage > 0
+        ):
+            # When damage from summon and usage decreased and has extra usage
+            self.usage += 1
+            self.extra_usage -= 1
+        return ret
+
+    def event_handler_DECLARE_ROUND_END(
+        self, event: DeclareRoundEndEventArguments, match: Any
+    ) -> List[DrawCardAction]:
+        """
+        if declare round end, draw card
+        """
+        if (
+            match.player_tables[self.position.player_idx].active_character_idx
+            == self.position.character_idx
+            and event.action.player_idx == self.position.player_idx
+        ):
+            # active character
+            return [
+                DrawCardAction(
+                    player_idx=self.position.player_idx,
+                    number=1,
+                    draw_if_filtered_not_enough=True,
+                )
+            ]
+        return []
+
+
+class ResonantCoralOrb_4_4(AttackerSummonBase):
+    name: Literal["Resonant Coral Orb"] = "Resonant Coral Orb"
+    version: Literal["4.4"] = "4.4"
+    damage: int = 1
+    damage_elemental_type: DamageElementalType = DamageElementalType.ELECTRO
+    usage: int = 2
+    max_usage: int = 2
+
+
+class SwirlingSchoolOfFish(ElementalSkillBase):
+    name: Literal["Swirling School of Fish"] = "Swirling School of Fish"
+    damage: int = 3
+    damage_type: DamageElementalType = DamageElementalType.ELECTRO
+    cost: Cost = Cost(elemental_dice_color=DieColor.ELECTRO, elemental_dice_number=3)
+
+    def get_actions(self, match: Match) -> List[Actions]:
+        ret = super().get_actions(match)
+        damage_action = ret[0]
+        assert damage_action.type == ActionTypes.MAKE_DAMAGE
+        status = (
+            match.player_tables[self.position.player_idx]
+            .characters[self.position.character_idx]
+            .status
+        )
+        target_status = None
+        for s in status:
+            if s.name == "Fontemer Pearl":
+                target_status = s
+                break
+        # if no status, only attack
+        if target_status is None:
+            return ret
+        return ret + [
+            ChangeObjectUsageAction(
+                object_position=target_status.position, change_usage=1
+            )
+        ]
+
+
+class FontemerHoarthunder(ElementalBurstBase):
+    name: Literal["Fontemer Hoarthunder"] = "Fontemer Hoarthunder"
+    damage: int = 1
+    damage_type: DamageElementalType = DamageElementalType.ELECTRO
+    cost: Cost = Cost(
+        elemental_dice_color=DieColor.ELECTRO, elemental_dice_number=3, charge=2
+    )
+
+    def get_actions(self, match: Match) -> List[Actions]:
+        args: Dict[str, Any] = {"usage": 2}
+        if self.is_talent_equipped(match):
+            args["desc"] = "talent"
+        return super().get_actions(
+            match,
+            [
+                self.create_character_status("Fontemer Pearl", args),
+                self.create_summon("Resonant Coral Orb"),
+            ],
+        )
+
+
+class PearlArmor(CreateStatusPassiveSkill):
+    name: Literal["Pearl Armor"] = "Pearl Armor"
+    status_name: Literal["Fontemer Pearl"] = "Fontemer Pearl"
+    regenerate_when_revive: bool = False
+
+    def event_handler_GAME_START(
+        self, event: GameStartEventArguments, match: Match
+    ) -> List[CreateObjectAction]:
+        """
+        When game begin, gain status
+        """
+        return [self.create_character_status(self.status_name, {"usage": 2})]
+
+
+class PearlSolidification_4_4(TalentBase):
+    name: Literal["Pearl Solidification"]
+    version: Literal["4.4"] = "4.4"
+    character_name: Literal["Millennial Pearl Seahorse"] = "Millennial Pearl Seahorse"
+    cost: Cost = Cost()
+    cost_label: int = (
+        CostLabels.CARD.value | CostLabels.TALENT.value | CostLabels.EQUIPMENT.value
+    )
+    remove_when_used: bool = False
+
+    def get_actions(self, target: ObjectPosition | None, match: Match) -> List[Actions]:
+        assert target is not None
+        ret = super().get_actions(target, match)
+        # create status again, so it will be updated to talent version
+        ret += [
+            CreateObjectAction(
+                object_name="Fontemer Pearl",
+                object_position=target.set_area(ObjectPositionType.CHARACTER_STATUS),
+                object_arguments={"desc": "talent"},
+            )
+        ]
+        status = (
+            match.player_tables[target.player_idx]
+            .characters[target.character_idx]
+            .status
+        )
+        pearl_status = None
+        for s in status:
+            if s.name == "Fontemer Pearl":
+                pearl_status = s
+                break
+        if pearl_status is not None:
+            # status already existed, increase usage
+            ret += [
+                ChangeObjectUsageAction(
+                    object_position=pearl_status.position, change_usage=1
+                )
+            ]
+        return ret
+
+
+class MillennialPearlSeahorse_4_4(CharacterBase):
+    name: Literal["Millennial Pearl Seahorse"]
+    version: Literal["4.4"] = "4.4"
+    element: ElementType = ElementType.ELECTRO
+    max_hp: int = 8
+    max_charge: int = 2
+    skills: List[
+        PhysicalNormalAttackBase
+        | SwirlingSchoolOfFish
+        | FontemerHoarthunder
+        | PearlArmor
+    ] = []
+    faction: List[FactionType] = [FactionType.MONSTER]
+    weapon_type: WeaponType = WeaponType.OTHER
+
+    def _init_skills(self) -> None:
+        self.skills = [
+            PhysicalNormalAttackBase(
+                name="Tail Sweep",
+                cost=PhysicalNormalAttackBase.get_cost(self.element),
+            ),
+            SwirlingSchoolOfFish(),
+            FontemerHoarthunder(),
+            PearlArmor(),
+        ]
+
+
+desc: Dict[str, DescDictType] = {
+    "CHARACTER/Millennial Pearl Seahorse": {
+        "names": {"en-US": "Millennial Pearl Seahorse", "zh-CN": "千年珍珠骏麟"},
+        "descs": {"4.4": {"en-US": "", "zh-CN": ""}},
+        "image_path": "cardface/Char_Monster_SeaHorsePrimo.png",  # noqa: E501
+        "id": 2403,
+    },
+    "SKILL_Millennial Pearl Seahorse_NORMAL_ATTACK/Tail Sweep": {
+        "names": {"en-US": "Tail Sweep", "zh-CN": "旋尾扇击"},
+        "descs": {
+            "4.4": {"en-US": "Deals 2 Physical DMG.", "zh-CN": "造成2点物理伤害。"}
+        },
+    },
+    "SKILL_Millennial Pearl Seahorse_ELEMENTAL_SKILL/Swirling School of Fish": {  # noqa: E501
+        "names": {"en-US": "Swirling School of Fish", "zh-CN": "霰舞鱼群"},
+        "descs": {
+            "4.4": {
+                "en-US": "Deals 3 Electro DMG. Once per Round: If this character has Fontemer Pearl attached, that Usage(s) +1.",  # noqa: E501
+                "zh-CN": "造成3点雷元素伤害。\n每回合1次：如果本角色已附属原海明珠，则使其可用次数+1。",  # noqa: E501
+            }
+        },
+    },
+    "CHARACTER_STATUS/Fontemer Pearl": {
+        "names": {"en-US": "Fontemer Pearl", "zh-CN": "原海明珠"},
+        "descs": {
+            "4.4": {
+                "en-US": "When the character to which this is attached takes DMG: Negate 1 DMG. Once per Round, Usage(s) will not be used when negating DMG from Summons.\nUsage(s): 2\nWhen you declare the end of your Round: If the character to which this is attached is the active character, draw 1 card.",  # noqa: E501
+                "zh-CN": "所附属角色受到伤害时：抵消1点伤害；每回合1次，抵消来自召唤物的伤害时不消耗可用次数。\n可用次数：2\n\n我方宣布结束时：如果所附属角色为「出战角色」，则抓1张牌。",  # noqa: E501
+            }
+        },
+    },
+    "CHARACTER_STATUS/Fontemer Pearl_talent": {
+        "names": {"en-US": "Fontemer Pearl", "zh-CN": "原海明珠"},
+        "descs": {
+            "4.4": {
+                "en-US": "When the character to which this is attached takes DMG: Negate 1 DMG. Twice per Round, Usage(s) will not be used when negating DMG from Summons.\nUsage(s): 2\nWhen you declare the end of your Round: If the character to which this is attached is the active character, draw 1 card.",  # noqa: E501
+                "zh-CN": "所附属角色受到伤害时：抵消1点伤害；每回合2次，抵消来自召唤物的伤害时不消耗可用次数。\n可用次数：2\n\n我方宣布结束时：如果所附属角色为「出战角色」，则抓1张牌。",  # noqa: E501
+            }
+        },
+    },
+    "SKILL_Millennial Pearl Seahorse_ELEMENTAL_BURST/Fontemer Hoarthunder": {
+        "names": {"en-US": "Fontemer Hoarthunder", "zh-CN": "原海古雷"},
+        "descs": {
+            "4.4": {
+                "en-US": "Deals 1 Electro DMG, attaches Fontemer Pearl to this character, and summons 1 Resonant Coral Orb.",  # noqa: E501
+                "zh-CN": "造成1点雷元素伤害，本角色附属原海明珠，召唤共鸣珊瑚珠。",  # noqa: E501
+            }
+        },
+    },
+    "SUMMON/Resonant Coral Orb": {
+        "names": {"en-US": "Resonant Coral Orb", "zh-CN": "共鸣珊瑚珠"},
+        "descs": {
+            "4.4": {
+                "en-US": "End Phase: Deal 1 Electro DMG.\nUsage(s): 2",
+                "zh-CN": "结束阶段：造成1点雷元素伤害。\n可用次数：2",
+            }
+        },
+        "image_path": "cardface/Summon_SeaHorsePrimo.png",
+    },
+    "SKILL_Millennial Pearl Seahorse_PASSIVE/Pearl Armor": {
+        "names": {"en-US": "Pearl Armor", "zh-CN": "明珠甲胄"},
+        "descs": {
+            "4.4": {
+                "en-US": "(Passive) When the battle begins, attach Fontemer Pearl to this character.",  # noqa: E501
+                "zh-CN": "【被动】战斗开始时，本角色附属原海明珠。",  # noqa: E501
+            }
+        },
+    },
+    "TALENT_Millennial Pearl Seahorse/Pearl Solidification": {
+        "names": {"en-US": "Pearl Solidification", "zh-CN": "明珠固化"},
+        "descs": {
+            "4.4": {
+                "en-US": "Can only be played if your active character is Millennial Pearl Seahorse: When entering play, Millennial Pearl Seahorse will have Fontemer Pearl with 1 Usage(s) attached to them. If they already have Fontemer Pearl attached, Usage(s) +1 instead.\nWhen the Fontemer Pearl attached to Millennial Pearl Seahorse negates DMG from Summons, change to Usage(s) not being consumed twice per Round.\n(Your deck must contain Millennial Pearl Seahorse to add this card to your deck)",  # noqa: E501
+                "zh-CN": "我方出战角色为千年珍珠骏麟时，才能打出：入场时，使千年珍珠骏麟附属可用次数为1的原海明珠；如果已附属原海明珠，则使其可用次数+1。\n装备有此牌的千年珍珠骏麟所附属的原海明珠抵消召唤物伤害时，改为每回合2次不消耗可用次数。\n（牌组中包含千年珍珠骏麟，才能加入牌组）",  # noqa: E501
+            }
+        },
+        "image_path": "cardface/Modify_Talent_SeaHorsePrimo.png",  # noqa: E501
+        "id": 224031,
+    },
+}
+
+
+register_class(
+    FontemerPearl_4_4
+    | ResonantCoralOrb_4_4
+    | MillennialPearlSeahorse_4_4
+    | PearlSolidification_4_4,
+    desc,
+)
diff --git a/src/lpsim/server/patch/v44/characters/sayu_4_4.py b/src/lpsim/server/patch/v44/characters/sayu_4_4.py
new file mode 100644
index 00000000..ba9a4447
--- /dev/null
+++ b/src/lpsim/server/patch/v44/characters/sayu_4_4.py
@@ -0,0 +1,327 @@
+from typing import Dict, List, Literal
+
+from ....match import Match
+from ....character import CharacterBase
+from ....action import (
+    ActionTypes,
+    Actions,
+    ChangeObjectUsageAction,
+    DrawCardAction,
+    MakeDamageAction,
+)
+from ....character.character_base import (
+    ElementalBurstBase,
+    ElementalSkillBase,
+    PhysicalNormalAttackBase,
+    SkillTalent,
+)
+from ....consts import (
+    ELEMENT_TO_DAMAGE_TYPE,
+    DamageElementalType,
+    DamageType,
+    DieColor,
+    ElementType,
+    ElementalReactionType,
+    FactionType,
+    IconType,
+    ObjectPositionType,
+    WeaponType,
+)
+from ....event import (
+    ReceiveDamageEventArguments,
+    RoundEndEventArguments,
+    RoundPrepareEventArguments,
+)
+from ....modifiable_values import DamageValue
+from ....status.character_status.base import PrepareCharacterStatus
+from ....struct import Cost
+from ....summon.base import AttackerSummonBase
+from .....utils import register_class, DescDictType
+
+
+class MujiMujiDaruma_4_4(AttackerSummonBase):
+    name: Literal["Muji-Muji Daruma"] = "Muji-Muji Daruma"
+    version: Literal["4.4"] = "4.4"
+    usage: int = 2
+    max_usage: int = 2
+    damage_elemental_type: DamageElementalType = DamageElementalType.ANEMO
+    damage: int = 1
+    heal: int = 2
+
+    def event_handler_ROUND_END(
+        self, event: RoundEndEventArguments, match: Match
+    ) -> List[MakeDamageAction | ChangeObjectUsageAction]:
+        ret = super().event_handler_ROUND_END(event, match)
+        table = match.player_tables[self.position.player_idx]
+        characters = table.characters
+        # select character with most damage taken
+        selected_character = characters[table.active_character_idx]
+        for c in characters:
+            if c.is_alive and c.damage_taken > selected_character.damage_taken:
+                selected_character = c
+        # heal character, and do default actions
+        assert ret[0].type == ActionTypes.MAKE_DAMAGE
+        ret[0].damage_value_list.append(
+            DamageValue(
+                position=self.position,
+                damage_type=DamageType.HEAL,
+                target_position=selected_character.position,
+                damage=-self.heal,
+                damage_elemental_type=DamageElementalType.HEAL,
+                cost=Cost(),
+            )
+        )
+        return ret
+
+
+class FuufuuWhirlwindKickStatus_4_4(PrepareCharacterStatus):
+    name: Literal["Fuufuu Whirlwind Kick"] = "Fuufuu Whirlwind Kick"
+    version: Literal["4.4"] = "4.4"
+    character_name: Literal["Sayu"] = "Sayu"
+    skill_name: Literal["Fuufuu Whirlwind Kick"] = "Fuufuu Whirlwind Kick"
+    element: DamageElementalType = DamageElementalType.ANEMO
+    icon_type: IconType = IconType.SPECIAL
+
+    def event_handler_RECEIVE_DAMAGE(
+        self, event: ReceiveDamageEventArguments, match: Match
+    ) -> List[Actions]:
+        # if self make swirl, record swirled element
+        if self.element != DamageElementalType.ANEMO:
+            # not anemo, do nothing
+            return []
+        if not self.position.check_position_valid(
+            event.final_damage.position,
+            match,
+            player_idx_same=True,
+            character_idx_same=True,
+            target_area=ObjectPositionType.SKILL,
+        ):
+            # not self use skill, skip
+            return []
+        if (
+            event.final_damage.damage_from_element_reaction
+            or event.final_damage.element_reaction != ElementalReactionType.SWIRL
+        ):
+            # not swirl or from elemental reaction, skip
+            return []
+        # record swirled element
+        elements = event.final_damage.reacted_elements
+        assert elements[0] == ElementType.ANEMO
+        self.element = ELEMENT_TO_DAMAGE_TYPE[elements[1]]
+        return []
+
+
+class YooHooArtFuuinDash(ElementalSkillBase):
+    name: Literal["Yoohoo Art: Fuuin Dash"] = "Yoohoo Art: Fuuin Dash"
+    damage: int = 1
+    damage_type: DamageElementalType = DamageElementalType.ANEMO
+    cost: Cost = Cost(elemental_dice_color=DieColor.ANEMO, elemental_dice_number=3)
+
+    def get_actions(self, match: Match) -> List[Actions]:
+        return super().get_actions(
+            match,
+            [
+                self.create_character_status("Fuufuu Whirlwind Kick"),
+            ],
+        )
+
+
+class FuufuuWhirlwindKick(ElementalSkillBase):
+    name: Literal["Fuufuu Whirlwind Kick"] = "Fuufuu Whirlwind Kick"
+    damage: int = 2
+    damage_type: DamageElementalType = DamageElementalType.ANEMO
+    cost: Cost = Cost()
+
+    def is_valid(self, match: Match) -> bool:
+        return False
+
+    def get_actions(self, match: Match) -> List[Actions]:
+        # first change self element based on status, then call super
+        status = (
+            match.player_tables[self.position.player_idx]
+            .characters[self.position.character_idx]
+            .status
+        )
+        for s in status:
+            if s.name == "Fuufuu Whirlwind Kick":
+                self.damage_type = s.element  # type: ignore
+                break
+        else:
+            raise AssertionError("No Fuufuu Whirlwind Kick status")
+        return [self.attack_opposite_active(match, self.damage, self.damage_type)]
+
+
+class YoohooArtMujinaFlurry(ElementalBurstBase):
+    name: Literal["Yoohoo Art: Mujina Flurry"] = "Yoohoo Art: Mujina Flurry"
+    damage: int = 1
+    damage_type: DamageElementalType = DamageElementalType.ANEMO
+    cost: Cost = Cost(
+        elemental_dice_color=DieColor.ANEMO, elemental_dice_number=3, charge=2
+    )
+
+    def get_actions(self, match: Match) -> List[Actions]:
+        return super().get_actions(
+            match,
+            [
+                self.create_summon("Muji-Muji Daruma"),
+            ],
+        )
+
+
+class SkivingNewAndImproved_4_4(SkillTalent):
+    name: Literal["Skiving: New and Improved"]
+    version: Literal["4.4"] = "4.4"
+    cost: Cost = Cost(elemental_dice_color=DieColor.ANEMO, elemental_dice_number=3)
+    skill: Literal["Yoohoo Art: Fuuin Dash"] = "Yoohoo Art: Fuuin Dash"
+    character_name: Literal["Sayu"] = "Sayu"
+    usage: int = 1
+    max_usage_per_round: int = 1
+
+    def equip(self, match: Match) -> List[Actions]:
+        self.usage = self.max_usage_per_round
+        return []
+
+    def event_handler_ROUND_PREPARE(
+        self, event: RoundPrepareEventArguments, match: Match
+    ) -> List[Actions]:
+        self.usage = self.max_usage_per_round
+        return []
+
+    def event_handler_RECEIVE_DAMAGE(
+        self, event: ReceiveDamageEventArguments, match: Match
+    ) -> List[DrawCardAction]:
+        if self.usage <= 0:
+            # already used
+            return []
+        if not self.position.check_position_valid(
+            event.final_damage.position,
+            match,
+            player_idx_same=True,
+            character_idx_same=True,
+            target_area=ObjectPositionType.SKILL,
+            source_area=ObjectPositionType.CHARACTER,
+            source_is_active_character=True,
+        ):
+            # not self skill or not equipped or self not active
+            return []
+        if event.final_damage.element_reaction != ElementalReactionType.SWIRL:
+            # not swirl
+            return []
+        # draw card
+        self.usage -= 1
+        return [
+            DrawCardAction(
+                player_idx=self.position.player_idx,
+                number=2,
+                draw_if_filtered_not_enough=True,
+            )
+        ]
+
+
+class Sayu_4_4(CharacterBase):
+    name: Literal["Sayu"]
+    version: Literal["4.4"] = "4.4"
+    element: ElementType = ElementType.ANEMO
+    max_hp: int = 10
+    max_charge: int = 2
+    skills: List[
+        PhysicalNormalAttackBase
+        | YooHooArtFuuinDash
+        | FuufuuWhirlwindKick
+        | YoohooArtMujinaFlurry
+    ] = []
+    faction: List[FactionType] = [FactionType.INAZUMA]
+    weapon_type: WeaponType = WeaponType.CLAYMORE
+
+    def _init_skills(self) -> None:
+        self.skills = [
+            PhysicalNormalAttackBase(
+                name="Shuumatsuban Ninja Blade",
+                cost=PhysicalNormalAttackBase.get_cost(self.element),
+            ),
+            YooHooArtFuuinDash(),
+            FuufuuWhirlwindKick(),
+            YoohooArtMujinaFlurry(),
+        ]
+
+
+desc: Dict[str, DescDictType] = {
+    "CHARACTER/Sayu": {
+        "names": {"en-US": "Sayu", "zh-CN": "早柚"},
+        "descs": {"4.4": {"en-US": "", "zh-CN": ""}},
+        "image_path": "cardface/Char_Avatar_Sayu.png",  # noqa
+        "id": 1507,
+    },
+    "SKILL_Sayu_NORMAL_ATTACK/Shuumatsuban Ninja Blade": {
+        "names": {"en-US": "Shuumatsuban Ninja Blade", "zh-CN": "忍刀·终末番"},
+        "descs": {
+            "4.4": {"en-US": "Deals 2 Physical DMG.", "zh-CN": "造成2点物理伤害。"}
+        },
+    },
+    "SKILL_Sayu_ELEMENTAL_SKILL/Yoohoo Art: Fuuin Dash": {
+        "names": {"en-US": "Yoohoo Art: Fuuin Dash", "zh-CN": "呜呼流·风隐急进"},
+        "descs": {
+            "4.4": {
+                "en-US": "Deals 1 Anemo DMG, and this character Prepare Skill|s1:prepares: Fuufuu Whirlwind Kick.\nIf this usage of the skill triggers Swirl, then Fuufuu Whirlwind Kick is converted to DMG of the Swirled Element.",  # noqa
+                "zh-CN": "造成1点风元素伤害，本角色准备技能：风风轮舞踢。\n如果当前技能引发了扩散，则风风轮舞踢将改为造成被扩散元素的伤害。",  # noqa
+            }
+        },
+    },
+    "CHARACTER_STATUS/Fuufuu Whirlwind Kick": {
+        "names": {"en-US": "Fuufuu Whirlwind Kick", "zh-CN": "风风轮舞踢"},
+        "descs": {
+            "4.4": {
+                "en-US": "Elemental Skill\n(Prepare for 1 turn)\nDeals 2 Anemo DMG (or the Swirled Element's DMG)",  # noqa
+                "zh-CN": "元素战技\n（需准备1个行动轮）\n造成2点风元素伤害（或被扩散元素的伤害）。",  # noqa
+            }
+        },
+    },
+    "SKILL_Sayu_ELEMENTAL_BURST/Yoohoo Art: Mujina Flurry": {
+        "names": {"en-US": "Yoohoo Art: Mujina Flurry", "zh-CN": "呜呼流·影貉缭乱"},
+        "descs": {
+            "4.4": {
+                "en-US": "Deals 1 Anemo DMG, summons 1 Muji-Muji Daruma.",
+                "zh-CN": "造成1点风元素伤害，召唤不倒貉貉。",
+            }
+        },
+    },
+    "SUMMON/Muji-Muji Daruma": {
+        "names": {"en-US": "Muji-Muji Daruma", "zh-CN": "不倒貉貉"},
+        "descs": {
+            "4.4": {
+                "en-US": "End Phase: Deal 1 Anemo DMG, heal the character on your team that has taken the most damage for 2 HP.\nUsage(s): 2",  # noqa
+                "zh-CN": "结束阶段：造成1点风元素伤害，治疗我方受伤最多的角色2点。\n可用次数：2",  # noqa
+            }
+        },
+        "image_path": "cardface/Summon_Sayu.png",
+    },
+    "SKILL_Sayu_ELEMENTAL_SKILL/Fuufuu Whirlwind Kick": {
+        "names": {"en-US": "Fuufuu Whirlwind Kick", "zh-CN": "风风轮舞踢"},
+        "descs": {
+            "4.4": {
+                "en-US": "(Prepare for 1 turn)\nDeals 2 Anemo DMG (or the Swirled Element's DMG)",  # noqa
+                "zh-CN": "（需准备1个行动轮）\n造成2点风元素伤害（或被扩散元素的伤害）。",  # noqa
+            }
+        },
+    },
+    "TALENT_Sayu/Skiving: New and Improved": {
+        "names": {"en-US": "Skiving: New and Improved", "zh-CN": "偷懒的新方法"},
+        "descs": {
+            "4.4": {
+                "en-US": "Combat Action: When your active character is Sayu, equip this card.\nWhen Sayu equips this card, immediately use Yoohoo Art: Fuuin Dash once.\nWhen your Sayu who has this card equipped is the active character, draw 2 cards when you trigger a Swirl reaction. (Once per Round)\n(You must have Sayu in your deck to add this card to your deck.)",  # noqa
+                "zh-CN": "战斗行动：我方出战角色为早柚时，装备此牌。\n早柚装备此牌后，立刻使用一次呜呼流·风隐急进。\n装备有此牌的早柚为出战角色期间，我方引发扩散反应时：抓2张牌。（每回合1次）\n（牌组中包含早柚，才能加入牌组）",  # noqa
+            }
+        },
+        "image_path": "cardface/Modify_Constellation_Sayu.png",  # noqa
+        "id": 215071,
+    },
+}
+
+
+register_class(
+    Sayu_4_4
+    | MujiMujiDaruma_4_4
+    | FuufuuWhirlwindKickStatus_4_4
+    | SkivingNewAndImproved_4_4,
+    desc,
+)
diff --git a/src/lpsim/server/patch/v44/characters/thoma_4_4.py b/src/lpsim/server/patch/v44/characters/thoma_4_4.py
new file mode 100644
index 00000000..a45ffdd6
--- /dev/null
+++ b/src/lpsim/server/patch/v44/characters/thoma_4_4.py
@@ -0,0 +1,220 @@
+from typing import Dict, List, Literal
+
+from ....action import (
+    ActionTypes,
+    Actions,
+    CreateObjectAction,
+    MakeDamageAction,
+    RemoveObjectAction,
+)
+from .....utils.class_registry import register_class
+from ....event import SkillEndEventArguments
+from ....status.team_status.base import (
+    ExtraAttackTeamStatus,
+    ShieldTeamStatus,
+    UsageTeamStatus,
+)
+from ....match import Match
+from ....struct import Cost, ObjectPosition
+from ....consts import (
+    DamageElementalType,
+    DieColor,
+    ElementType,
+    FactionType,
+    IconType,
+    ObjectPositionType,
+    SkillType,
+    WeaponType,
+)
+from ....character.character_base import (
+    CharacterBase,
+    ElementalBurstBase,
+    ElementalSkillBase,
+    PhysicalNormalAttackBase,
+    SkillTalent,
+)
+from .....utils.desc_registry import DescDictType
+
+
+class BlazingBarrier_4_4(ShieldTeamStatus):
+    name: Literal["Blazing Barrier"] = "Blazing Barrier"
+    version: Literal["4.4"] = "4.4"
+    usage: int = 1
+    max_usage: int = 3
+
+
+class ScorchingOoyoroi_4_4(ExtraAttackTeamStatus, UsageTeamStatus):
+    name: Literal["Scorching Ooyoroi"] = "Scorching Ooyoroi"
+    version: Literal["4.4"] = "4.4"
+    damage: int = 1
+    damage_elemental_type: DamageElementalType = DamageElementalType.PYRO
+    trigger_skill_type: SkillType = SkillType.NORMAL_ATTACK
+    usage: int = 2
+    max_usage: int = 2
+    decrease_usage: bool = True
+    icon_type: IconType = IconType.OTHERS
+
+    def event_handler_SKILL_END(
+        self, event: SkillEndEventArguments, match: Match
+    ) -> List[MakeDamageAction | RemoveObjectAction]:
+        skill = match.get_object(event.action.position)
+        assert skill is not None
+        if skill.name == "Crimson Ooyoroi":
+            # Thoma use burst Crimson Ooyoroi
+            return []
+        ret: List[MakeDamageAction | RemoveObjectAction] = []
+        ret += super().event_handler_SKILL_END(event, match)
+        if len(ret) == 0:
+            return ret
+        damage_action = ret[0]
+        assert damage_action.type == ActionTypes.MAKE_DAMAGE
+        damage_action.create_objects.append(
+            CreateObjectAction(
+                object_name="Blazing Barrier",
+                object_position=ObjectPosition(
+                    player_idx=self.position.player_idx,
+                    area=ObjectPositionType.TEAM_STATUS,
+                    id=0,
+                ),
+                object_arguments={},
+            )
+        )
+        return ret
+
+
+class BlazingBlessing(ElementalSkillBase):
+    name: Literal["Blazing Blessing"] = "Blazing Blessing"
+    damage: int = 2
+    damage_type: DamageElementalType = DamageElementalType.PYRO
+    cost: Cost = Cost(elemental_dice_color=DieColor.PYRO, elemental_dice_number=3)
+
+    def get_actions(self, match: Match) -> List[Actions]:
+        return super().get_actions(match, [self.create_team_status("Blazing Barrier")])
+
+
+class CrimsonOoyoroi(ElementalBurstBase):
+    name: Literal["Crimson Ooyoroi"] = "Crimson Ooyoroi"
+    damage: int = 2
+    damage_type: DamageElementalType = DamageElementalType.PYRO
+    cost: Cost = Cost(
+        elemental_dice_color=DieColor.PYRO, elemental_dice_number=3, charge=2
+    )
+
+    def get_actions(self, match: Match) -> List[Actions]:
+        status_args = {
+            "usage": 2,
+            "max_usage": 2,
+        }
+        if self.is_talent_equipped(match):
+            status_args = {
+                "usage": 3,
+                "max_usage": 3,
+            }
+        return super().get_actions(
+            match,
+            [
+                self.create_team_status("Blazing Barrier"),
+                self.create_team_status("Scorching Ooyoroi", status_args),
+            ],
+        )
+
+
+class ASubordinatesSkills_4_4(SkillTalent):
+    name: Literal["A Subordinate's Skills"]
+    version: Literal["4.4"] = "4.4"
+    character_name: Literal["Thoma"] = "Thoma"
+    skill: Literal["Crimson Ooyoroi"] = "Crimson Ooyoroi"
+    cost: Cost = Cost(
+        elemental_dice_color=DieColor.PYRO, elemental_dice_number=3, charge=2
+    )
+
+
+class Thoma_4_4(CharacterBase):
+    name: Literal["Thoma"]
+    version: Literal["4.4"] = "4.4"
+    element: ElementType = ElementType.PYRO
+    max_hp: int = 10
+    max_charge: int = 2
+    skills: List[PhysicalNormalAttackBase | BlazingBlessing | CrimsonOoyoroi] = []
+    faction: List[FactionType] = [FactionType.INAZUMA]
+    weapon_type: WeaponType = WeaponType.POLEARM
+
+    def _init_skills(self) -> None:
+        self.skills = [
+            PhysicalNormalAttackBase(
+                name="Swiftshatter Spear",
+                cost=PhysicalNormalAttackBase.get_cost(self.element),
+            ),
+            BlazingBlessing(),
+            CrimsonOoyoroi(),
+        ]
+
+
+desc: Dict[str, DescDictType] = {
+    "CHARACTER/Thoma": {
+        "names": {"en-US": "Thoma", "zh-CN": "托马"},
+        "descs": {"4.4": {"en-US": "", "zh-CN": ""}},
+        "image_path": "cardface/Char_Avatar_Tohma.png",  # noqa: E501
+        "id": 1311,
+    },
+    "SKILL_Thoma_NORMAL_ATTACK/Swiftshatter Spear": {
+        "names": {"en-US": "Swiftshatter Spear", "zh-CN": "迅破枪势"},
+        "descs": {
+            "4.4": {"en-US": "Deals 2 Physical DMG.", "zh-CN": "造成2点物理伤害。"}
+        },
+    },
+    "SKILL_Thoma_ELEMENTAL_SKILL/Blazing Blessing": {
+        "names": {"en-US": "Blazing Blessing", "zh-CN": "烈烧佑命之侍护"},
+        "descs": {
+            "4.4": {
+                "en-US": "Deals 2 Pyro DMG, creates 1 Blazing Barrier.",
+                "zh-CN": "造成2点火元素伤害，生成烈烧佑命护盾。",
+            }
+        },
+    },
+    "TEAM_STATUS/Blazing Barrier": {
+        "names": {"en-US": "Blazing Barrier", "zh-CN": "烈烧佑命护盾"},
+        "descs": {
+            "4.4": {
+                "en-US": "Shield\nGrants 1 Shield point to your active character. (Can stack. Max 3 points.)",  # noqa: E501
+                "zh-CN": "护盾\n为我方出战角色提供1点护盾。（可叠加，最多叠加到3点）",  # noqa: E501
+            }
+        },
+    },
+    "SKILL_Thoma_ELEMENTAL_BURST/Crimson Ooyoroi": {
+        "names": {"en-US": "Crimson Ooyoroi", "zh-CN": "真红炽火之大铠"},
+        "descs": {
+            "4.4": {
+                "en-US": "Deals 2 Pyro DMG, creates 1 Blazing Barrier and Scorching Ooyoroi.",  # noqa: E501
+                "zh-CN": "造成2点火元素伤害，生成烈烧佑命护盾和炽火大铠。",
+            }
+        },
+    },
+    "TEAM_STATUS/Scorching Ooyoroi": {
+        "names": {"en-US": "Scorching Ooyoroi", "zh-CN": "炽火大铠"},
+        "descs": {
+            "4.4": {
+                "en-US": "After your character uses a Normal Attack: Deal 1 Pyro DMG and create a Blazing Barrier.\nUsage(s): 2",  # noqa: E501
+                "zh-CN": "我方角色普通攻击后：造成1点火元素伤害，生成烈烧佑命护盾。\n可用次数：2",  # noqa: E501
+            }
+        },
+        "image_path": "status/Tohma_E.png",
+    },
+    "TALENT_Thoma/A Subordinate's Skills": {
+        "names": {"en-US": "A Subordinate's Skills", "zh-CN": "僚佐的才巧"},
+        "descs": {
+            "4.4": {
+                "en-US": "Combat Action: When your active character is Thoma, equip this card.\nAfter Thoma equips this card, immediately use Crimson Ooyoroi once.\nWhen your Thoma, who has this card equipped, creates a Scorching Ooyoroi, its starting Usage(s) +1.\n(You must have Thoma in your deck to add this card to your deck.)",  # noqa: E501
+                "zh-CN": "战斗行动：我方出战角色为托马时，装备此牌。\n托马装备此牌后，立刻使用一次真红炽火之大铠。\n装备有此牌的托马生成的炽火大铠，初始可用次数+1。\n（牌组中包含托马，才能加入牌组）",  # noqa: E501
+            }
+        },
+        "image_path": "cardface/Modify_Constellation_Thoma.png",  # noqa: E501
+        "id": 213111,
+    },
+}
+
+
+register_class(
+    BlazingBarrier_4_4 | ScorchingOoyoroi_4_4 | ASubordinatesSkills_4_4 | Thoma_4_4,
+    desc,
+)
diff --git a/src/lpsim/tools.py b/src/lpsim/tools.py
index f118abc0..92e5cb25 100644
--- a/src/lpsim/tools.py
+++ b/src/lpsim/tools.py
@@ -52,9 +52,11 @@ def read_log(
         match.set_deck(decks)
         commands = data["command_history"]
         agents: List[InteractionAgent] = []
-        if isinstance(commands[0][0], (list, tuple)):  # pragma: no cover
-            # new version, extract only string
-            commands = [[y[1] for y in x] for x in commands]
+        if len(commands[0]) > 0:  # pragma: no cover
+            if isinstance(commands[0][0], (list, tuple)):
+                # new version, extract only string
+                commands = [[y[1] for y in x] for x in commands]
+        commands = [[y for y in x if not y.startswith("TEST")] for x in commands]
         for cnum, command in enumerate(commands):
             agent = InteractionAgent(
                 player_idx=cnum, commands=command, only_use_command=True
diff --git a/src/lpsim/utils/deck_code_data.json b/src/lpsim/utils/deck_code_data.json
index 16aa5004..9e1bc53c 100644
--- a/src/lpsim/utils/deck_code_data.json
+++ b/src/lpsim/utils/deck_code_data.json
@@ -318,7 +318,22 @@
     "The Boar Princess",
     "Falls and Fortune",
     "Flickering Four-Leaf Sigil",
-    "Fish and Chips"
+    "Fish and Chips",
+    "character:Thoma",
+    "character:Sayu",
+    "character:Cryo Hypostasis",
+    "character:Millennial Pearl Seahorse",
+    "A Subordinate's Skills",
+    "Skiving: New and Improved",
+    "Sternfrost Prism",
+    "Pearl Solidification",
+    "Sapwood Blade",
+    "Veteran's Visage",
+    "Jeht",
+    "Silver and Melus",
+    "Machine Assembly Line",
+    "Sunyata Flower",
+    "Matsutake Meat Rolls"
   ],
   "forbid_list": [
     "+qq",


Test patch:
diff --git a/http_test_serve.py b/http_test_serve.py
index ede7e4d5..7f85f129 100644
--- a/http_test_serve.py
+++ b/http_test_serve.py
@@ -10,12 +10,14 @@
 
 if __name__ == "__main__":
     deck_str_1 = """
-        default_version:4.2
-        character:Baizhu
-        character:Nilou
-        character:Tighnari
-        All Things Are of the Earth*15
-        Lotus Flower Crisp*15
+        default_version:4.4
+        character:AnemoMobMage
+        character:CryoMob
+        character:PyroMobMage
+        character:Sangonomiya Kokomi
+        Mushroom Pizza*10
+        Matsutake Meat Rolls*10
+        Silver and Melus*10
     """
     deck_str_2 = """
     character:Nahida@3.7
diff --git a/tests/server/patch/v43/test_eremite.py b/tests/server/patch/v43/test_eremite.py
index 95ba0776..c5552de6 100644
--- a/tests/server/patch/v43/test_eremite.py
+++ b/tests/server/patch/v43/test_eremite.py
@@ -1,61 +1,11 @@
 import os
-from lpsim import MatchState
-from tests.utils_for_test import (
-    check_usage,
-    get_test_id_from_command,
-    make_respond,
-    set_16_omni,
-    read_from_log_json,
-)
+from tests.utils_for_test import do_log_tests
 
 
 def test_eremite():
-    match, agent_0, agent_1 = read_from_log_json(
-        os.path.join(os.path.dirname(__file__), "jsons", "test_eremite.json")
-    )
-    # add omnipotent guide
-    set_16_omni(match)
-    match.start()
-    match.step()
-    new_commands = [[], []]
-    while True:
-        if match.need_respond(0):
-            agent = agent_0
-            nc = new_commands[0]
-        elif match.need_respond(1):
-            agent = agent_1
-            nc = new_commands[1]
-        else:
-            raise AssertionError("No need respond.")
-        # do tests
-        while True:
-            nc.append(agent.commands[0])
-            cmd = agent.commands[0].strip().split(" ")
-            test_id = get_test_id_from_command(agent)
-            if test_id == 0:
-                # id 0 means current command is not a test command.
-                break
-            elif test_id == 3:
-                pidx = int(cmd[2][1])
-                check_usage(match.player_tables[pidx].supports, cmd[3:])
-            elif test_id == 4:
-                pidx = int(cmd[2][1])
-                check_usage(match.player_tables[pidx].team_status, cmd[3:])
-            elif test_id == 8:
-                charges = []
-                for table in match.player_tables:
-                    for c in table.characters:
-                        charges.append(c.charge)
-                assert charges == [int(x) for x in cmd[2:]]
-            else:
-                raise AssertionError(f"Unknown test id {test_id}")
-        # respond
-        make_respond(agent, match)
-        if len(agent_1.commands) == 0 and len(agent_0.commands) == 0:
-            break
-
-    # simulate ends, check final state
-    assert match.state != MatchState.ERROR
+    json_fname = "test_eremite.json"
+    json_path = os.path.join(os.path.dirname(__file__), "jsons", json_fname)
+    do_log_tests(json_path)
 
 
 if __name__ == "__main__":
diff --git a/tests/server/patch/v43/test_lynette.py b/tests/server/patch/v43/test_lynette.py
index f9c4de0c..710f0508 100644
--- a/tests/server/patch/v43/test_lynette.py
+++ b/tests/server/patch/v43/test_lynette.py
@@ -1,63 +1,11 @@
 import os
-from lpsim import MatchState
-from tests.utils_for_test import (
-    check_hp,
-    check_usage,
-    get_test_id_from_command,
-    make_respond,
-    read_from_log_json,
-)
+from tests.utils_for_test import do_log_tests
 
 
 def test_lynette():
-    match, agent_0, agent_1 = read_from_log_json(
-        os.path.join(os.path.dirname(__file__), "jsons", "test_lynette.json")
-    )
-    match.start()
-    match.step()
-    new_commands = [[], []]
-    while True:
-        if match.need_respond(0):
-            agent = agent_0
-            nc = new_commands[0]
-        elif match.need_respond(1):
-            agent = agent_1
-            nc = new_commands[1]
-        else:
-            raise AssertionError("No need respond.")
-        # do tests
-        while True:
-            nc.append(agent.commands[0])
-            cmd = agent.commands[0].strip().split(" ")
-            test_id = get_test_id_from_command(agent)
-            if test_id == 0:
-                # id 0 means current command is not a test command.
-                break
-            elif test_id == 1:
-                hps = cmd[2:]
-                hps = [int(x) for x in hps]
-                hps = [hps[:6], hps[6:]]
-                check_hp(match, hps)
-            elif test_id == 2:
-                pidx = int(cmd[2][1])
-                check_usage(match.player_tables[pidx].summons, cmd[3:])
-            elif test_id == 4:
-                pidx = int(cmd[2][1])
-                check_usage(match.player_tables[pidx].team_status, cmd[3:])
-            elif test_id == 9:
-                pidx = int(cmd[2][1])
-                assert len(match.player_tables[pidx].summons) == len(cmd[3:])
-                for i, s in enumerate(match.player_tables[pidx].summons):
-                    assert s.damage_elemental_type.value == cmd[3 + i]
-            else:
-                raise AssertionError(f"Unknown test id {test_id}")
-        # respond
-        make_respond(agent, match)
-        if len(agent_1.commands) == 0 and len(agent_0.commands) == 0:
-            break
-
-    # simulate ends, check final state
-    assert match.state != MatchState.ERROR
+    json_fname = "test_lynette.json"
+    json_path = os.path.join(os.path.dirname(__file__), "jsons", json_fname)
+    do_log_tests(json_path, omnipotent=False)
 
 
 if __name__ == "__main__":
diff --git a/tests/server/patch/v43/test_new_4_transform.py b/tests/server/patch/v43/test_new_4_transform.py
index 32e8992c..ccd46a86 100644
--- a/tests/server/patch/v43/test_new_4_transform.py
+++ b/tests/server/patch/v43/test_new_4_transform.py
@@ -1,54 +1,11 @@
 import os
-from lpsim import MatchState
-from tests.utils_for_test import (
-    get_pidx_cidx,
-    get_test_id_from_command,
-    make_respond,
-    set_16_omni,
-    read_from_log_json,
-)
+from tests.utils_for_test import do_log_tests
 
 
 def test_new_4_transform():
-    match, agent_0, agent_1 = read_from_log_json(
-        os.path.join(os.path.dirname(__file__), "jsons", "test_new_4_transform.json")
-    )
-    # add omnipotent guide
-    set_16_omni(match)
-    match.start()
-    match.step()
-    new_commands = [[], []]
-    while True:
-        if match.need_respond(0):
-            agent = agent_0
-            nc = new_commands[0]
-        elif match.need_respond(1):
-            agent = agent_1
-            nc = new_commands[1]
-        else:
-            raise AssertionError("No need respond.")
-        # do tests
-        while True:
-            nc.append(agent.commands[0])
-            cmd = agent.commands[0].strip().split(" ")
-            test_id = get_test_id_from_command(agent)
-            if test_id == 0:
-                # id 0 means current command is not a test command.
-                break
-            elif test_id == 10:
-                pidx, cidx = get_pidx_cidx(cmd)
-                desc = match.player_tables[pidx].characters[cidx].desc
-                cmd_desc = " ".join(cmd[3:])[1:-1]
-                assert desc == cmd_desc
-            else:
-                raise AssertionError(f"Unknown test id {test_id}")
-        # respond
-        make_respond(agent, match)
-        if len(agent_1.commands) == 0 and len(agent_0.commands) == 0:
-            break
-
-    # simulate ends, check final state
-    assert match.state != MatchState.ERROR
+    json_fname = "test_new_4_transform.json"
+    json_path = os.path.join(os.path.dirname(__file__), "jsons", json_fname)
+    do_log_tests(json_path)
 
 
 if __name__ == "__main__":
diff --git a/tests/server/patch/v43/test_v43equips_boar_fall.py b/tests/server/patch/v43/test_v43equips_boar_fall.py
index 03c04975..3135ef0e 100644
--- a/tests/server/patch/v43/test_v43equips_boar_fall.py
+++ b/tests/server/patch/v43/test_v43equips_boar_fall.py
@@ -5,88 +5,19 @@
 from lpsim.agents.interaction_agent import InteractionAgent
 from lpsim import MatchState
 from tests.utils_for_test import (
-    check_hp,
     check_usage,
-    get_pidx_cidx,
+    do_log_tests,
     get_random_state,
     get_test_id_from_command,
     make_respond,
     set_16_omni,
-    read_from_log_json,
 )
 
 
 def test_v43equips_boar_fall():
-    match, agent_0, agent_1 = read_from_log_json(
-        os.path.join(os.path.dirname(__file__), "jsons", "test_11card.json")
-    )
-    # modify hp
-    # for i in range(2):
-    #     characters = match.player_tables[i].player_deck_information.characters  # noqa: E501
-    #     for c in characters:
-    #         c.hp = c.max_hp = 30
-    # add omnipotent guide
-    set_16_omni(match)
-    match.start()
-    match.step()
-    new_commands = [[], []]
-
-    while True:
-        if match.need_respond(0):
-            agent = agent_0
-            nc = new_commands[0]
-        elif match.need_respond(1):
-            agent = agent_1
-            nc = new_commands[1]
-        else:
-            raise AssertionError("No need respond.")
-        # do tests
-        while True:
-            nc.append(agent.commands[0])
-            cmd = agent.commands[0].strip().split(" ")
-            test_id = get_test_id_from_command(agent)
-            if test_id == 0:
-                # id 0 means current command is not a test command.
-                break
-            elif test_id == 1:
-                hps = cmd[2:]
-                hps = [int(x) for x in hps]
-                hps = [hps[:5], hps[5:]]
-                check_hp(match, hps)
-            elif test_id == 2:
-                pidx = int(cmd[2][1])
-                check_usage(match.player_tables[pidx].summons, cmd[3:])
-            elif test_id == 3:
-                pidx = int(cmd[2][1])
-                check_usage(match.player_tables[pidx].supports, cmd[3:])
-            elif test_id == 4:
-                pidx = int(cmd[2][1])
-                check_usage(match.player_tables[pidx].team_status, cmd[3:])
-            elif test_id == 5:
-                pidx, cidx = get_pidx_cidx(cmd)
-                check_usage(match.player_tables[pidx].characters[cidx].status, cmd[3:])
-            elif test_id == 6:
-                pidx = int(cmd[2][1])
-                assert len(match.player_tables[pidx].hands) == int(cmd[3])
-            elif test_id == 7:
-                pidx = int(cmd[2][1])
-                d = {}
-                for c in match.player_tables[pidx].dice.colors:
-                    d[c.value] = d.get(c.value, 0) + 1
-                for c in cmd[3:]:
-                    d[c] -= 1
-                    if d[c] == 0:
-                        del d[c]
-                assert len(d) == 0
-            else:
-                raise AssertionError(f"Unknown test id {test_id}")
-        # respond
-        make_respond(agent, match)
-        if len(agent_1.commands) == 0 and len(agent_0.commands) == 0:
-            break
-
-    # simulate ends, check final state
-    assert match.state != MatchState.ERROR
+    json_fname = "test_11card.json"
+    json_path = os.path.join(os.path.dirname(__file__), "jsons", json_fname)
+    do_log_tests(json_path)
 
 
 def test_boar_princess():
diff --git a/tests/server/patch/v44/jsons/balance_thuncer_vourukashas_stove.json b/tests/server/patch/v44/jsons/balance_thuncer_vourukashas_stove.json
new file mode 100644
index 00000000..7bca2a4a
--- /dev/null
+++ b/tests/server/patch/v44/jsons/balance_thuncer_vourukashas_stove.json
@@ -0,0 +1,1280 @@
+{
+    "match_random_state": [
+        "MT19937",
+        [
+            2147483648,
+            852258933,
+            3037751817,
+            2843736348,
+            2346345909,
+            241038820,
+            3630833971,
+            322381140,
+            1250305161,
+            1459257731,
+            3694471596,
+            515911843,
+            3937938455,
+            2827679987,
+            3950882980,
+            3581943267,
+            4151002148,
+            1618076744,
+            3274872619,
+            2159583707,
+            1559018499,
+            1583145829,
+            1179320338,
+            3113356017,
+            1931467408,
+            2410284883,
+            753436273,
+            437428593,
+            510572609,
+            2706055346,
+            879811753,
+            825585750,
+            2401349358,
+            2490929089,
+            3977100308,
+            4231974237,
+            3442070342,
+            2600699322,
+            3596477700,
+            3408240710,
+            3752939454,
+            3842241914,
+            2634979991,
+            739520375,
+            3739104881,
+            2527561182,
+            1297315978,
+            1316945693,
+            1727810483,
+            3695100167,
+            1453832382,
+            979363388,
+            3076017079,
+            3732405838,
+            1444648514,
+            4151023880,
+            2205533946,
+            4261855231,
+            4267702982,
+            2647124900,
+            1484461652,
+            1998843354,
+            4035414622,
+            4156165081,
+            322695412,
+            2240084797,
+            218965524,
+            2620616784,
+            2355246093,
+            353075890,
+            807460217,
+            2080397923,
+            2949113800,
+            3746761770,
+            4204485378,
+            2925858822,
+            940465313,
+            2978225661,
+            1552046939,
+            3792670316,
+            4122385657,
+            3233513602,
+            1380874839,
+            984796113,
+            886794804,
+            4153798316,
+            717328536,
+            469185684,
+            3765962743,
+            4135056014,
+            3479073223,
+            3023129426,
+            4222684062,
+            3850877054,
+            224467384,
+            3087354214,
+            1680195562,
+            2193347842,
+            2684173028,
+            1880093036,
+            3229242389,
+            3049410427,
+            1279447835,
+            332094632,
+            1579758630,
+            3710374238,
+            2337675471,
+            115759493,
+            4211910051,
+            3915073058,
+            1108976576,
+            2071829022,
+            3748361252,
+            3666084797,
+            3192128605,
+            604670057,
+            188878253,
+            403907626,
+            3217757074,
+            1892194987,
+            378411265,
+            573022174,
+            3720006947,
+            254195013,
+            1584935511,
+            3553011007,
+            1370455926,
+            1537144829,
+            2822387189,
+            2441227067,
+            1172427512,
+            1810388875,
+            597276150,
+            3442654859,
+            1319639025,
+            1278428752,
+            3109211997,
+            3125310769,
+            1778730908,
+            2179046274,
+            529756476,
+            3028614397,
+            390243483,
+            2580809143,
+            2253747482,
+            645716549,
+            4069787277,
+            3392915288,
+            1804927866,
+            2998699909,
+            3486738826,
+            2249333105,
+            2840926426,
+            832811354,
+            2642376678,
+            2647298729,
+            2972210951,
+            3980432569,
+            2414014267,
+            3379616787,
+            827881623,
+            2006639651,
+            2739098202,
+            4142232454,
+            1674001832,
+            387416494,
+            1242487127,
+            3900036886,
+            1084620969,
+            4223529924,
+            2384308612,
+            2101645863,
+            1707720038,
+            3225537336,
+            1571082365,
+            4196493122,
+            2164372558,
+            3866850114,
+            2805868839,
+            675209309,
+            4179066360,
+            3625074731,
+            3089956980,
+            3293027876,
+            3902965037,
+            1224438018,
+            1224895899,
+            2575389666,
+            3357949449,
+            2384469209,
+            3700336215,
+            338019398,
+            3289126851,
+            2769703855,
+            390722640,
+            2704007496,
+            2883292084,
+            1965587089,
+            1025300549,
+            619699852,
+            1043025444,
+            3803785664,
+            922193774,
+            151167841,
+            2126109206,
+            3168147631,
+            2865122591,
+            3327041069,
+            3373701209,
+            9353399,
+            473750565,
+            3028380130,
+            1467951504,
+            4190922997,
+            589795710,
+            942553933,
+            937635948,
+            298315070,
+            415821393,
+            4041939848,
+            372373022,
+            3689582099,
+            519737891,
+            4233378103,
+            1157474098,
+            138790908,
+            770838763,
+            430623945,
+            814484707,
+            2853558444,
+            3213795543,
+            3845643860,
+            2512330672,
+            1336888278,
+            572322181,
+            1282342669,
+            920514674,
+            2038291972,
+            3149365870,
+            4102830575,
+            3549173955,
+            3684993693,
+            1356278478,
+            1775628726,
+            213156443,
+            2298969406,
+            2717355438,
+            1572856796,
+            1513647543,
+            2132855513,
+            1986873076,
+            3528225839,
+            308723273,
+            292601737,
+            1277750001,
+            1679680638,
+            2785246156,
+            3878540692,
+            471870265,
+            668186544,
+            2580697021,
+            2706131701,
+            1695560777,
+            2843565854,
+            332232130,
+            1424790421,
+            2379530317,
+            4168717850,
+            974529721,
+            2592398077,
+            1897652930,
+            1672473548,
+            1312396662,
+            1869749067,
+            2084827226,
+            73229630,
+            1974021446,
+            3205173810,
+            874883708,
+            2176709342,
+            2290870532,
+            2232221173,
+            11665963,
+            3617533180,
+            2066756895,
+            869614124,
+            248729098,
+            3168320955,
+            2513792026,
+            1546475412,
+            3754194653,
+            1731401296,
+            669770116,
+            1064448459,
+            2396128651,
+            1085107150,
+            2799824622,
+            1789749972,
+            2034050724,
+            2306132503,
+            2368269703,
+            338106206,
+            3551116912,
+            2236740658,
+            3994225500,
+            1393516086,
+            814315152,
+            4115786034,
+            1931073526,
+            3698510923,
+            3264469706,
+            1200777713,
+            3605887842,
+            537661941,
+            99637609,
+            739482224,
+            4131737706,
+            2971745240,
+            1636938568,
+            461809637,
+            1293154012,
+            2051347708,
+            3415492749,
+            309673494,
+            1718449666,
+            895136483,
+            459169287,
+            3758491237,
+            1484777584,
+            2985652876,
+            3690529376,
+            2814466466,
+            3761286303,
+            2906796347,
+            1770927703,
+            66989981,
+            1227151467,
+            740432923,
+            1742669766,
+            4108895627,
+            1129792952,
+            4217696861,
+            1581599772,
+            2822850338,
+            1371889226,
+            2928171633,
+            337314434,
+            1287812001,
+            2566385880,
+            1016557934,
+            1521694314,
+            1446569819,
+            494280377,
+            3605614928,
+            1750373709,
+            1917104935,
+            1005209477,
+            3290246820,
+            2435278462,
+            2392228341,
+            1860566250,
+            3604753061,
+            1545385861,
+            179541456,
+            1095359,
+            2235243074,
+            3565546844,
+            1848692563,
+            3296532274,
+            932183734,
+            2678033798,
+            2819310696,
+            372402397,
+            2849752546,
+            3300638946,
+            979341372,
+            2027134812,
+            3377292468,
+            776160986,
+            876596828,
+            3411844979,
+            3807986688,
+            2828349004,
+            2667246233,
+            2887674321,
+            3417530634,
+            4192745201,
+            1514743338,
+            1486186234,
+            3599480114,
+            2220700932,
+            877264426,
+            3683620224,
+            1791677875,
+            1576589409,
+            3371864729,
+            239577320,
+            664674279,
+            97455638,
+            671315040,
+            4098637571,
+            1233610174,
+            2528631470,
+            4181767203,
+            4188289355,
+            201010882,
+            2613994903,
+            3722085049,
+            464425505,
+            3872757292,
+            1251239949,
+            155862569,
+            1690852071,
+            958025955,
+            3882516403,
+            11720145,
+            1377457109,
+            611510219,
+            4258313417,
+            2145041081,
+            230603729,
+            108822725,
+            2878554314,
+            1764726348,
+            2813464509,
+            2430757019,
+            1893470021,
+            2345837745,
+            3504885831,
+            471263087,
+            3448186974,
+            91510807,
+            1692101012,
+            870758111,
+            279967414,
+            2975906051,
+            831331682,
+            714973860,
+            895403271,
+            1946906216,
+            2175407141,
+            294729832,
+            663378707,
+            4040948408,
+            371079217,
+            3849217943,
+            3167620631,
+            2106715634,
+            4270851423,
+            4180090782,
+            2160180184,
+            3446426895,
+            3057856044,
+            1623629695,
+            1938845385,
+            1992740005,
+            2620458046,
+            602642578,
+            168172447,
+            1859880120,
+            3105244601,
+            3397983984,
+            4209231162,
+            116203150,
+            2166700138,
+            679395399,
+            1591101135,
+            1511475060,
+            3865776260,
+            3861604114,
+            2333630785,
+            578347291,
+            107805155,
+            1281990800,
+            2331362412,
+            2805566554,
+            1392433873,
+            4113871053,
+            1681686757,
+            1317522404,
+            263062625,
+            3972207482,
+            871540459,
+            858793555,
+            3378130229,
+            1638925065,
+            3644427872,
+            425845250,
+            4199381058,
+            138738749,
+            4064868817,
+            641652061,
+            3293641471,
+            2781033146,
+            2433876171,
+            958379132,
+            515825137,
+            1920938822,
+            508669000,
+            1996074650,
+            1132963176,
+            112386699,
+            4020276217,
+            3307649861,
+            712492536,
+            752257327,
+            703177072,
+            655737206,
+            1936095049,
+            2870883815,
+            750441059,
+            531193802,
+            3887354491,
+            3768893981,
+            758096438,
+            763690471,
+            1177380930,
+            836758118,
+            1370880236,
+            2406562066,
+            3117758426,
+            38974763,
+            729452259,
+            563449846,
+            2410187015,
+            1585606395,
+            4205777270,
+            2173618669,
+            3178196512,
+            1074979883,
+            4149809984,
+            3286590086,
+            2021554321,
+            4088426121,
+            3079684553,
+            1917337899,
+            2966649180,
+            2899231799,
+            1062888899,
+            1306359486,
+            876671599,
+            3348080246,
+            1542570792,
+            3517583561,
+            164390915,
+            135607212,
+            1392292837,
+            1540942523,
+            2587272281,
+            974783651,
+            3971944422,
+            1315415300,
+            1419043995,
+            3194113563,
+            495692306,
+            3087088482,
+            735847283,
+            2418041689,
+            2761711941,
+            608441639,
+            3606420410,
+            2500421680,
+            2129584375,
+            4277314193,
+            362285431,
+            3829261316,
+            3033449623,
+            2726841579,
+            2856071091,
+            1282567563,
+            1399900137,
+            1288485551,
+            1784276086,
+            3203384342,
+            2304811961,
+            4188374470,
+            2799600913,
+            1668300233,
+            3487044801,
+            345405685,
+            68861045,
+            4149051636,
+            630962370,
+            3809297774,
+            3497678965,
+            2777356018,
+            1131508456,
+            3088811640,
+            2916362619,
+            3604683426,
+            1367656029,
+            3164360959,
+            3464800203,
+            2727920289,
+            3993785877,
+            410872094,
+            933194096,
+            1088600539,
+            3511204625,
+            818519978,
+            4217773289,
+            4016704403,
+            2742865381,
+            2118058332,
+            2028824770,
+            3585206344,
+            3620279056,
+            4291530408,
+            748541778,
+            1337473025,
+            2734790168,
+            2153414969,
+            1554090190,
+            4147260811,
+            1053913480,
+            4166858558,
+            1486762641,
+            34008703,
+            2957308893,
+            3461353779,
+            3720643435,
+            476418844,
+            2092109162,
+            1388524448
+        ],
+        623,
+        0,
+        0
+    ],
+    "start_deck": [
+        "default_version:4.4\ncharacter:Thunder Manifestation@4.4\ncharacter:Sangonomiya Kokomi@3.6\ncharacter:Lyney@4.3\nIn Every House a Stove@4.4\nGrieving Echo@4.4\nGrieving Echo@4.4\nGrieving Echo@4.4\nGrieving Echo@4.4\nGrieving Echo@4.4\nGrieving Echo@4.4\nGrieving Echo@4.4\nGrieving Echo@4.4\nGrieving Echo@4.4\nGrieving Echo@4.4\nVourukasha's Glow@4.4\nVourukasha's Glow@4.4\nVourukasha's Glow@4.4\nVourukasha's Glow@4.4\nVourukasha's Glow@4.4\nVourukasha's Glow@4.4\nVourukasha's Glow@4.4\nVourukasha's Glow@4.4\nVourukasha's Glow@4.4\nVourukasha's Glow@4.4\n",
+        "default_version:4.4\ncharacter:Thunder Manifestation@4.4\ncharacter:Sangonomiya Kokomi@3.6\ncharacter:Lyney@4.3\nIn Every House a Stove@4.4\nGrieving Echo@4.4\nGrieving Echo@4.4\nGrieving Echo@4.4\nGrieving Echo@4.4\nGrieving Echo@4.4\nGrieving Echo@4.4\nGrieving Echo@4.4\nGrieving Echo@4.4\nGrieving Echo@4.4\nGrieving Echo@4.4\nVourukasha's Glow@4.4\nVourukasha's Glow@4.4\nVourukasha's Glow@4.4\nVourukasha's Glow@4.4\nVourukasha's Glow@4.4\nVourukasha's Glow@4.4\nVourukasha's Glow@4.4\nVourukasha's Glow@4.4\nVourukasha's Glow@4.4\nVourukasha's Glow@4.4\n"
+    ],
+    "command_history": [
+        [
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 2 p0",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "sw_card",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 2 p0",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "choose 0",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 2 p0",
+            "TEST 4 p0 1",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 4 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "card 2 0 15 14 13",
+            "TEST 1 10 10 10 10 7 10",
+            "TEST 2 p0",
+            "TEST 4 p0 0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 2 p1",
+            "TEST 4 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "skill 0 12 11 10",
+            "TEST 1 6 10 10 9 7 10",
+            "TEST 2 p0",
+            "TEST 4 p0 0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 2 p1",
+            "TEST 4 p1 0",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "sw_char 1 9",
+            "TEST 1 6 7 10 9 7 10",
+            "TEST 2 p0",
+            "TEST 4 p0 0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 2 p1",
+            "TEST 4 p1 0",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "skill 0 8 7 6",
+            "TEST 1 6 7 10 7 6 9",
+            "TEST 2 p0",
+            "TEST 4 p0 0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 4 p1 0",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "card 1 1 5",
+            "TEST 1 6 7 10 7 6 9",
+            "TEST 2 p0",
+            "TEST 4 p0 0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 2 p1",
+            "TEST 4 p1 0",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "card 1 2 4",
+            "TEST 1 6 7 10 7 6 9",
+            "TEST 2 p0",
+            "TEST 4 p0 0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 3",
+            "TEST 2 p1",
+            "TEST 4 p1 0",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "end",
+            "TEST 1 6 7 10 7 6 9",
+            "TEST 2 p0",
+            "TEST 4 p0 1",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 4 p1 1",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "skill 1 15 14 13",
+            "TEST 1 6 5 10 7 6 9",
+            "TEST 2 p0 2",
+            "TEST 4 p0 0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1 1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 6",
+            "TEST 2 p1",
+            "TEST 4 p1 0",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2 1",
+            "TEST 6 p1 6",
+            "sw_char 0 12",
+            "TEST 1 6 5 10 7 6 9",
+            "TEST 2 p0 2",
+            "TEST 4 p0 0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1 1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 6",
+            "TEST 2 p1",
+            "TEST 4 p1 0",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2 1",
+            "TEST 6 p1 6",
+            "skill 2 11 10 9",
+            "TEST 1 6 5 10 5 6 9",
+            "TEST 2 p0 2 1",
+            "TEST 4 p0 0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1 1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 6",
+            "TEST 2 p1",
+            "TEST 4 p1 0",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2 1",
+            "TEST 6 p1 6",
+            "end",
+            "TEST 1 7 6 10 3 5 4",
+            "TEST 2 p0 1",
+            "TEST 4 p0 1",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1 1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 9",
+            "TEST 2 p1",
+            "TEST 4 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 8",
+            "end",
+            "TEST 1 8 6 10 2 5 4",
+            "TEST 2 p0",
+            "TEST 4 p0 1",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1 1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 11",
+            "TEST 2 p1",
+            "TEST 4 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 10",
+            "end",
+            "TEST 1 8 6 10 2 5 4",
+            "TEST 2 p0",
+            "TEST 4 p0 1",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1 1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 13",
+            "TEST 2 p1",
+            "TEST 4 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 12",
+            "card 0 0",
+            "TEST 1 8 6 10 2 5 4",
+            "TEST 2 p0",
+            "TEST 4 p0 1",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1 1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 16",
+            "TEST 2 p1",
+            "TEST 4 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 12",
+            "end"
+        ],
+        [
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 2 p0",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "sw_card",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 2 p0",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "choose 1",
+            "TEST 1 10 10 10 10 7 10",
+            "TEST 2 p0",
+            "TEST 4 p0 0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 2 p1",
+            "TEST 4 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "card 0 0",
+            "TEST 1 10 10 10 10 7 10",
+            "TEST 2 p0",
+            "TEST 4 p0 0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 2 p1",
+            "TEST 4 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 4",
+            "card 0 1 15",
+            "TEST 1 10 10 10 10 7 10",
+            "TEST 2 p0",
+            "TEST 4 p0 0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 2 p1",
+            "TEST 4 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "sw_char 0 14",
+            "TEST 1 10 10 10 9 7 10",
+            "TEST 2 p0",
+            "TEST 4 p0 0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 2 p1",
+            "TEST 4 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "card 2 0 13 12 11",
+            "TEST 1 6 10 10 9 7 10",
+            "TEST 2 p0",
+            "TEST 4 p0 0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 2 p1",
+            "TEST 4 p1 0",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "skill 1 10 9 8",
+            "TEST 1 6 7 10 7 6 9",
+            "TEST 2 p0",
+            "TEST 4 p0 0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 4 p1 0",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "end",
+            "TEST 1 6 7 10 7 6 9",
+            "TEST 2 p0",
+            "TEST 4 p0 1",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 4 p1 1",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "sw_char 2 15",
+            "TEST 1 6 7 10 7 6 9",
+            "TEST 2 p0 2",
+            "TEST 4 p0 0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1 1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 4 p1 1",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "skill 0 14 13 12",
+            "TEST 1 6 5 10 7 6 9",
+            "TEST 2 p0 2",
+            "TEST 4 p0 0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1 1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 6",
+            "TEST 2 p1",
+            "TEST 4 p1 0",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2 1",
+            "TEST 6 p1 6",
+            "sw_char 0 11",
+            "TEST 1 6 5 10 5 6 9",
+            "TEST 2 p0 2 1",
+            "TEST 4 p0 0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1 1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 6",
+            "TEST 2 p1",
+            "TEST 4 p1 0",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2 1",
+            "TEST 6 p1 6",
+            "end",
+            "TEST 1 7 6 10 3 5 4",
+            "TEST 2 p0 1",
+            "TEST 4 p0 1",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1 1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 9",
+            "TEST 2 p1",
+            "TEST 4 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 8",
+            "end",
+            "TEST 1 8 6 10 2 5 4",
+            "TEST 2 p0",
+            "TEST 4 p0 1",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1 1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 11",
+            "TEST 2 p1",
+            "TEST 4 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 10",
+            "end",
+            "TEST 1 8 6 10 2 5 4",
+            "TEST 2 p0",
+            "TEST 4 p0 1",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1 1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 13",
+            "TEST 2 p1",
+            "TEST 4 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 12",
+            "end"
+        ]
+    ],
+    "match_config": {
+        "random_first_player": false,
+        "player_go_first": 0,
+        "check_deck_restriction": false,
+        "initial_hand_size": 5,
+        "initial_card_draw": 2,
+        "initial_dice_number": 16,
+        "initial_dice_reroll_times": 1,
+        "card_number": null,
+        "max_same_card_number": null,
+        "character_number": null,
+        "max_round_number": 999,
+        "max_hand_size": 999,
+        "max_dice_number": 16,
+        "max_summon_number": 4,
+        "max_support_number": 4,
+        "make_skill_prediction": false,
+        "history_level": 10,
+        "compress_history": true,
+        "recreate_mode": false,
+        "random_object_information": []
+    },
+    "command_history_raw": [
+        [
+            [
+                2,
+                "sw_card",
+                0
+            ],
+            [
+                4,
+                "choose 0",
+                2
+            ],
+            [
+                7,
+                "card 2 0 15 14 13",
+                4
+            ],
+            [
+                20,
+                "skill 0 12 11 10",
+                8
+            ],
+            [
+                29,
+                "sw_char 1 9",
+                10
+            ],
+            [
+                34,
+                "skill 0 8 7 6",
+                12
+            ],
+            [
+                40,
+                "card 1 1 5",
+                14
+            ],
+            [
+                43,
+                "card 1 2 4",
+                15
+            ],
+            [
+                46,
+                "end",
+                16
+            ],
+            [
+                54,
+                "skill 1 15 14 13",
+                18
+            ],
+            [
+                62,
+                "sw_char 0 12",
+                20
+            ],
+            [
+                66,
+                "skill 2 11 10 9",
+                22
+            ],
+            [
+                71,
+                "end",
+                24
+            ],
+            [
+                82,
+                "end",
+                26
+            ],
+            [
+                90,
+                "end",
+                28
+            ],
+            [
+                97,
+                "card 0 0",
+                30
+            ],
+            [
+                100,
+                "end",
+                31
+            ]
+        ],
+        [
+            [
+                2,
+                "sw_card",
+                1
+            ],
+            [
+                4,
+                "choose 1",
+                3
+            ],
+            [
+                12,
+                "card 0 0",
+                5
+            ],
+            [
+                15,
+                "card 0 1 15",
+                6
+            ],
+            [
+                18,
+                "sw_char 0 14",
+                7
+            ],
+            [
+                23,
+                "card 2 0 13 12 11",
+                9
+            ],
+            [
+                31,
+                "skill 1 10 9 8",
+                11
+            ],
+            [
+                38,
+                "end",
+                13
+            ],
+            [
+                52,
+                "sw_char 2 15",
+                17
+            ],
+            [
+                57,
+                "skill 0 14 13 12",
+                19
+            ],
+            [
+                64,
+                "sw_char 0 11",
+                21
+            ],
+            [
+                69,
+                "end",
+                23
+            ],
+            [
+                80,
+                "end",
+                25
+            ],
+            [
+                88,
+                "end",
+                27
+            ],
+            [
+                95,
+                "end",
+                29
+            ]
+        ]
+    ]
+}
\ No newline at end of file
diff --git a/tests/server/patch/v44/jsons/cryo_hypostasis.json b/tests/server/patch/v44/jsons/cryo_hypostasis.json
new file mode 100644
index 00000000..d88cebdc
--- /dev/null
+++ b/tests/server/patch/v44/jsons/cryo_hypostasis.json
@@ -0,0 +1,1394 @@
+{
+    "match_random_state": [
+        "MT19937",
+        [
+            2147483648,
+            852258933,
+            3037751817,
+            2843736348,
+            2346345909,
+            241038820,
+            3630833971,
+            322381140,
+            1250305161,
+            1459257731,
+            3694471596,
+            515911843,
+            3937938455,
+            2827679987,
+            3950882980,
+            3581943267,
+            4151002148,
+            1618076744,
+            3274872619,
+            2159583707,
+            1559018499,
+            1583145829,
+            1179320338,
+            3113356017,
+            1931467408,
+            2410284883,
+            753436273,
+            437428593,
+            510572609,
+            2706055346,
+            879811753,
+            825585750,
+            2401349358,
+            2490929089,
+            3977100308,
+            4231974237,
+            3442070342,
+            2600699322,
+            3596477700,
+            3408240710,
+            3752939454,
+            3842241914,
+            2634979991,
+            739520375,
+            3739104881,
+            2527561182,
+            1297315978,
+            1316945693,
+            1727810483,
+            3695100167,
+            1453832382,
+            979363388,
+            3076017079,
+            3732405838,
+            1444648514,
+            4151023880,
+            2205533946,
+            4261855231,
+            4267702982,
+            2647124900,
+            1484461652,
+            1998843354,
+            4035414622,
+            4156165081,
+            322695412,
+            2240084797,
+            218965524,
+            2620616784,
+            2355246093,
+            353075890,
+            807460217,
+            2080397923,
+            2949113800,
+            3746761770,
+            4204485378,
+            2925858822,
+            940465313,
+            2978225661,
+            1552046939,
+            3792670316,
+            4122385657,
+            3233513602,
+            1380874839,
+            984796113,
+            886794804,
+            4153798316,
+            717328536,
+            469185684,
+            3765962743,
+            4135056014,
+            3479073223,
+            3023129426,
+            4222684062,
+            3850877054,
+            224467384,
+            3087354214,
+            1680195562,
+            2193347842,
+            2684173028,
+            1880093036,
+            3229242389,
+            3049410427,
+            1279447835,
+            332094632,
+            1579758630,
+            3710374238,
+            2337675471,
+            115759493,
+            4211910051,
+            3915073058,
+            1108976576,
+            2071829022,
+            3748361252,
+            3666084797,
+            3192128605,
+            604670057,
+            188878253,
+            403907626,
+            3217757074,
+            1892194987,
+            378411265,
+            573022174,
+            3720006947,
+            254195013,
+            1584935511,
+            3553011007,
+            1370455926,
+            1537144829,
+            2822387189,
+            2441227067,
+            1172427512,
+            1810388875,
+            597276150,
+            3442654859,
+            1319639025,
+            1278428752,
+            3109211997,
+            3125310769,
+            1778730908,
+            2179046274,
+            529756476,
+            3028614397,
+            390243483,
+            2580809143,
+            2253747482,
+            645716549,
+            4069787277,
+            3392915288,
+            1804927866,
+            2998699909,
+            3486738826,
+            2249333105,
+            2840926426,
+            832811354,
+            2642376678,
+            2647298729,
+            2972210951,
+            3980432569,
+            2414014267,
+            3379616787,
+            827881623,
+            2006639651,
+            2739098202,
+            4142232454,
+            1674001832,
+            387416494,
+            1242487127,
+            3900036886,
+            1084620969,
+            4223529924,
+            2384308612,
+            2101645863,
+            1707720038,
+            3225537336,
+            1571082365,
+            4196493122,
+            2164372558,
+            3866850114,
+            2805868839,
+            675209309,
+            4179066360,
+            3625074731,
+            3089956980,
+            3293027876,
+            3902965037,
+            1224438018,
+            1224895899,
+            2575389666,
+            3357949449,
+            2384469209,
+            3700336215,
+            338019398,
+            3289126851,
+            2769703855,
+            390722640,
+            2704007496,
+            2883292084,
+            1965587089,
+            1025300549,
+            619699852,
+            1043025444,
+            3803785664,
+            922193774,
+            151167841,
+            2126109206,
+            3168147631,
+            2865122591,
+            3327041069,
+            3373701209,
+            9353399,
+            473750565,
+            3028380130,
+            1467951504,
+            4190922997,
+            589795710,
+            942553933,
+            937635948,
+            298315070,
+            415821393,
+            4041939848,
+            372373022,
+            3689582099,
+            519737891,
+            4233378103,
+            1157474098,
+            138790908,
+            770838763,
+            430623945,
+            814484707,
+            2853558444,
+            3213795543,
+            3845643860,
+            2512330672,
+            1336888278,
+            572322181,
+            1282342669,
+            920514674,
+            2038291972,
+            3149365870,
+            4102830575,
+            3549173955,
+            3684993693,
+            1356278478,
+            1775628726,
+            213156443,
+            2298969406,
+            2717355438,
+            1572856796,
+            1513647543,
+            2132855513,
+            1986873076,
+            3528225839,
+            308723273,
+            292601737,
+            1277750001,
+            1679680638,
+            2785246156,
+            3878540692,
+            471870265,
+            668186544,
+            2580697021,
+            2706131701,
+            1695560777,
+            2843565854,
+            332232130,
+            1424790421,
+            2379530317,
+            4168717850,
+            974529721,
+            2592398077,
+            1897652930,
+            1672473548,
+            1312396662,
+            1869749067,
+            2084827226,
+            73229630,
+            1974021446,
+            3205173810,
+            874883708,
+            2176709342,
+            2290870532,
+            2232221173,
+            11665963,
+            3617533180,
+            2066756895,
+            869614124,
+            248729098,
+            3168320955,
+            2513792026,
+            1546475412,
+            3754194653,
+            1731401296,
+            669770116,
+            1064448459,
+            2396128651,
+            1085107150,
+            2799824622,
+            1789749972,
+            2034050724,
+            2306132503,
+            2368269703,
+            338106206,
+            3551116912,
+            2236740658,
+            3994225500,
+            1393516086,
+            814315152,
+            4115786034,
+            1931073526,
+            3698510923,
+            3264469706,
+            1200777713,
+            3605887842,
+            537661941,
+            99637609,
+            739482224,
+            4131737706,
+            2971745240,
+            1636938568,
+            461809637,
+            1293154012,
+            2051347708,
+            3415492749,
+            309673494,
+            1718449666,
+            895136483,
+            459169287,
+            3758491237,
+            1484777584,
+            2985652876,
+            3690529376,
+            2814466466,
+            3761286303,
+            2906796347,
+            1770927703,
+            66989981,
+            1227151467,
+            740432923,
+            1742669766,
+            4108895627,
+            1129792952,
+            4217696861,
+            1581599772,
+            2822850338,
+            1371889226,
+            2928171633,
+            337314434,
+            1287812001,
+            2566385880,
+            1016557934,
+            1521694314,
+            1446569819,
+            494280377,
+            3605614928,
+            1750373709,
+            1917104935,
+            1005209477,
+            3290246820,
+            2435278462,
+            2392228341,
+            1860566250,
+            3604753061,
+            1545385861,
+            179541456,
+            1095359,
+            2235243074,
+            3565546844,
+            1848692563,
+            3296532274,
+            932183734,
+            2678033798,
+            2819310696,
+            372402397,
+            2849752546,
+            3300638946,
+            979341372,
+            2027134812,
+            3377292468,
+            776160986,
+            876596828,
+            3411844979,
+            3807986688,
+            2828349004,
+            2667246233,
+            2887674321,
+            3417530634,
+            4192745201,
+            1514743338,
+            1486186234,
+            3599480114,
+            2220700932,
+            877264426,
+            3683620224,
+            1791677875,
+            1576589409,
+            3371864729,
+            239577320,
+            664674279,
+            97455638,
+            671315040,
+            4098637571,
+            1233610174,
+            2528631470,
+            4181767203,
+            4188289355,
+            201010882,
+            2613994903,
+            3722085049,
+            464425505,
+            3872757292,
+            1251239949,
+            155862569,
+            1690852071,
+            958025955,
+            3882516403,
+            11720145,
+            1377457109,
+            611510219,
+            4258313417,
+            2145041081,
+            230603729,
+            108822725,
+            2878554314,
+            1764726348,
+            2813464509,
+            2430757019,
+            1893470021,
+            2345837745,
+            3504885831,
+            471263087,
+            3448186974,
+            91510807,
+            1692101012,
+            870758111,
+            279967414,
+            2975906051,
+            831331682,
+            714973860,
+            895403271,
+            1946906216,
+            2175407141,
+            294729832,
+            663378707,
+            4040948408,
+            371079217,
+            3849217943,
+            3167620631,
+            2106715634,
+            4270851423,
+            4180090782,
+            2160180184,
+            3446426895,
+            3057856044,
+            1623629695,
+            1938845385,
+            1992740005,
+            2620458046,
+            602642578,
+            168172447,
+            1859880120,
+            3105244601,
+            3397983984,
+            4209231162,
+            116203150,
+            2166700138,
+            679395399,
+            1591101135,
+            1511475060,
+            3865776260,
+            3861604114,
+            2333630785,
+            578347291,
+            107805155,
+            1281990800,
+            2331362412,
+            2805566554,
+            1392433873,
+            4113871053,
+            1681686757,
+            1317522404,
+            263062625,
+            3972207482,
+            871540459,
+            858793555,
+            3378130229,
+            1638925065,
+            3644427872,
+            425845250,
+            4199381058,
+            138738749,
+            4064868817,
+            641652061,
+            3293641471,
+            2781033146,
+            2433876171,
+            958379132,
+            515825137,
+            1920938822,
+            508669000,
+            1996074650,
+            1132963176,
+            112386699,
+            4020276217,
+            3307649861,
+            712492536,
+            752257327,
+            703177072,
+            655737206,
+            1936095049,
+            2870883815,
+            750441059,
+            531193802,
+            3887354491,
+            3768893981,
+            758096438,
+            763690471,
+            1177380930,
+            836758118,
+            1370880236,
+            2406562066,
+            3117758426,
+            38974763,
+            729452259,
+            563449846,
+            2410187015,
+            1585606395,
+            4205777270,
+            2173618669,
+            3178196512,
+            1074979883,
+            4149809984,
+            3286590086,
+            2021554321,
+            4088426121,
+            3079684553,
+            1917337899,
+            2966649180,
+            2899231799,
+            1062888899,
+            1306359486,
+            876671599,
+            3348080246,
+            1542570792,
+            3517583561,
+            164390915,
+            135607212,
+            1392292837,
+            1540942523,
+            2587272281,
+            974783651,
+            3971944422,
+            1315415300,
+            1419043995,
+            3194113563,
+            495692306,
+            3087088482,
+            735847283,
+            2418041689,
+            2761711941,
+            608441639,
+            3606420410,
+            2500421680,
+            2129584375,
+            4277314193,
+            362285431,
+            3829261316,
+            3033449623,
+            2726841579,
+            2856071091,
+            1282567563,
+            1399900137,
+            1288485551,
+            1784276086,
+            3203384342,
+            2304811961,
+            4188374470,
+            2799600913,
+            1668300233,
+            3487044801,
+            345405685,
+            68861045,
+            4149051636,
+            630962370,
+            3809297774,
+            3497678965,
+            2777356018,
+            1131508456,
+            3088811640,
+            2916362619,
+            3604683426,
+            1367656029,
+            3164360959,
+            3464800203,
+            2727920289,
+            3993785877,
+            410872094,
+            933194096,
+            1088600539,
+            3511204625,
+            818519978,
+            4217773289,
+            4016704403,
+            2742865381,
+            2118058332,
+            2028824770,
+            3585206344,
+            3620279056,
+            4291530408,
+            748541778,
+            1337473025,
+            2734790168,
+            2153414969,
+            1554090190,
+            4147260811,
+            1053913480,
+            4166858558,
+            1486762641,
+            34008703,
+            2957308893,
+            3461353779,
+            3720643435,
+            476418844,
+            2092109162,
+            1388524448
+        ],
+        623,
+        0,
+        0
+    ],
+    "start_deck": [
+        "default_version:4.4\ncharacter:Cryo Hypostasis@4.4\ncharacter:Ganyu@3.7\ncharacter:Mona@3.3\nSternfrost Prism@4.4\nSternfrost Prism@4.4\nSternfrost Prism@4.4\nSternfrost Prism@4.4\nSternfrost Prism@4.4\nSternfrost Prism@4.4\nSternfrost Prism@4.4\nSternfrost Prism@4.4\nSternfrost Prism@4.4\nSternfrost Prism@4.4\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\n",
+        "default_version:4.4\ncharacter:Cryo Hypostasis@4.4\ncharacter:Ganyu@3.7\ncharacter:Mona@3.3\nSternfrost Prism@4.4\nSternfrost Prism@4.4\nSternfrost Prism@4.4\nSternfrost Prism@4.4\nSternfrost Prism@4.4\nSternfrost Prism@4.4\nSternfrost Prism@4.4\nSternfrost Prism@4.4\nSternfrost Prism@4.4\nSternfrost Prism@4.4\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\n"
+    ],
+    "command_history": [
+        [
+            "TEST 1 8 10 10 8 10 10",
+            "TEST 2 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11",
+            "sw_card 3",
+            "TEST 1 8 10 10 8 10 10",
+            "TEST 2 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11",
+            "choose 0",
+            "TEST 1 8 10 10 8 10 10",
+            "TEST 2 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4",
+            "skill 1 15 14 13",
+            "TEST 1 7 10 10 5 10 10",
+            "TEST 2 p0",
+            "TEST 5 p0c0 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4",
+            "skill 0 12 11 10",
+            "TEST 1 4 10 10 4 9 9",
+            "TEST 2 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4",
+            "skill 2 9 8 7",
+            "TEST 1 2 9 9 2 8 8",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 2",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4",
+            "skill 0 6 5 4",
+            "TEST 1 1 9 9 1 8 8",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 2",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4",
+            "sw_char 2 3",
+            "TEST 1 1 9 9 1 8 8",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 2",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1",
+            "end",
+            "TEST 1 1 8 9 1 8 7",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 5 6",
+            "sw_char 0 15",
+            "TEST 1 1 8 9 1 8 7",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4 5 6",
+            "card 1 0 14",
+            "TEST 1 1 8 9 1 8 7",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4 5",
+            "card 1 0 11",
+            "TEST 1 1 8 9 1 8 7",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 1 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4",
+            "sw_char 1 10",
+            "TEST 1 1 8 9 1 8 7",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 1 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 3 4",
+            "sw_char 2 9",
+            "TEST 1 1 7 8 1 8 7",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 3 4",
+            "sw_char 0 8",
+            "TEST 1 1 6 7 2 8 7",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 2",
+            "TEST 5 p1c0 1 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4",
+            "card 2 0 5",
+            "TEST 1 1 6 7 2 8 7",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 2",
+            "TEST 5 p1c0 1 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3",
+            "skill 1 4 3 2",
+            "TEST 1 1 6 7 1 8 7",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 1 1 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 2",
+            "TEST 5 p1c0 1 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3",
+            "sw_char 2 1",
+            "TEST 1 1 6 7 1 8 7",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 1 1 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 2",
+            "TEST 5 p1c0 1 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 2 3",
+            "end",
+            "TEST 1 1 6 3 1 8 6",
+            "TEST 2 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2 1",
+            "TEST 11 0 2 3 5",
+            "sw_char 1 15",
+            "TEST 1 1 6 3 1 8 6",
+            "TEST 2 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2 1",
+            "TEST 11 0 2 3 5",
+            "skill 0 14 13 12",
+            "TEST 1 1 6 3 0 8 7",
+            "TEST 2 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1 1 1",
+            "TEST 5 p1c2 1 1",
+            "TEST 11 0 2 3 5",
+            "sw_char 0 11",
+            "TEST 1 1 6 3 0 8 7",
+            "TEST 2 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1 1 1",
+            "TEST 5 p1c2 1 1",
+            "TEST 11 0 1 2 3 4 5",
+            "card 1 0 8",
+            "TEST 1 1 6 3 0 8 7",
+            "TEST 2 p0",
+            "TEST 5 p0c0 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1 1 1",
+            "TEST 5 p1c2 1 1",
+            "TEST 11 0 1 2 3 4",
+            "skill 2 7 6 5",
+            "TEST 1 1 6 3 0 8 6",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1 1",
+            "TEST 5 p1c2 1 1",
+            "TEST 11 0 1 2 3 4",
+            "sw_char 1 4",
+            "TEST 1 1 6 3 0 8 6",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1 1",
+            "TEST 5 p1c2 1 1",
+            "TEST 11 0 1 2 4",
+            "sw_char 0 3",
+            "TEST 1 1 6 3 0 8 6",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1 1",
+            "TEST 5 p1c2 1 1",
+            "TEST 11 0 1 2 3 4",
+            "card 0 0 2",
+            "TEST 1 1 6 3 0 8 6",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0 1 1 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1 1",
+            "TEST 5 p1c2 1 1",
+            "TEST 11 0 1 2 3",
+            "end",
+            "TEST 1 1 5 2 0 7 5",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4 5",
+            "skill 1 15 14 13",
+            "TEST 1 1 5 2 0 4 5",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4 5",
+            "skill 0 12 11 10",
+            "TEST 1 1 5 2 0 3 4",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4 5",
+            "skill 2 9 8 7",
+            "TEST 1 1 5 2 0 1 3",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4 5",
+            "skill 0 6 5 4",
+            "TEST 1 1 5 2 0 0 3",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4 5",
+            "end",
+            "TEST 1 1 5 2 0 0 2",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2 1",
+            "TEST 11 0 1 2 3 4 5 6 7",
+            "sw_char 2 15"
+        ],
+        [
+            "TEST 1 8 10 10 8 10 10",
+            "TEST 2 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11",
+            "sw_card 2 3",
+            "TEST 1 8 10 10 8 10 10",
+            "TEST 2 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11",
+            "choose 0",
+            "TEST 1 8 10 10 5 10 10",
+            "TEST 2 p0",
+            "TEST 5 p0c0 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4",
+            "skill 0 15 14 13",
+            "TEST 1 7 10 10 4 9 9",
+            "TEST 2 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4",
+            "skill 1 12 11 10",
+            "TEST 1 4 10 10 2 8 8",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4",
+            "skill 2 9 8 7",
+            "TEST 1 2 9 9 1 8 8",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 2",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4",
+            "skill 1 6 5 4",
+            "TEST 1 1 9 9 1 8 8",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 2",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4",
+            "sw_char 1 3",
+            "TEST 1 1 9 9 1 8 8",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 2",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 2 3 4",
+            "sw_char 0 2",
+            "TEST 1 1 9 9 1 8 8",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 2",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4",
+            "sw_char 1 1",
+            "TEST 1 1 9 9 1 8 8",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 2",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 2 3 4",
+            "end",
+            "TEST 1 1 8 9 1 8 7",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 1 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 2 3 4 5 6",
+            "sw_char 0 15",
+            "TEST 1 1 8 9 1 8 7",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 1 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4 5 6",
+            "skill 0 14 13 12",
+            "TEST 1 1 7 8 1 8 7",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4 5 6",
+            "card 0 0 9",
+            "TEST 1 1 7 8 1 8 7",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4 5",
+            "card 1 0",
+            "TEST 1 1 7 8 2 8 7",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0 1 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4",
+            "skill 2 8 7 6",
+            "TEST 1 1 6 7 1 8 7",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 1 1 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 2",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4",
+            "card 0 0 3",
+            "TEST 1 1 6 7 1 8 7",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 1 1 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 2",
+            "TEST 5 p1c0 1 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3",
+            "sw_char 2 2",
+            "TEST 1 1 6 7 1 8 7",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 1 1 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1 2",
+            "TEST 5 p1c0 1 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3",
+            "end",
+            "TEST 1 1 6 6 1 8 6",
+            "TEST 2 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2 1",
+            "TEST 11 0 1 2 3 4 5",
+            "sw_char 0 15",
+            "TEST 1 1 6 6 1 8 6",
+            "TEST 2 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2 1",
+            "TEST 11 0 1 2 3 4 5",
+            "skill 1 14 13 12",
+            "TEST 1 1 6 3 0 8 6",
+            "TEST 2 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2 1",
+            "TEST 11",
+            "choose 1",
+            "TEST 1 1 6 3 0 8 6",
+            "TEST 2 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2 1",
+            "TEST 11 0 1 2 3 4 5",
+            "card 2 0 11",
+            "TEST 1 1 6 3 0 8 6",
+            "TEST 2 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1 1 1",
+            "TEST 5 p1c2 1",
+            "TEST 11 0 1 2 3 4",
+            "card 3 0",
+            "TEST 1 1 6 3 0 8 7",
+            "TEST 2 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1 1 1",
+            "TEST 5 p1c2 1 1",
+            "TEST 11",
+            "end",
+            "TEST 1 1 5 2 0 7 5",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4 5",
+            "end",
+            "TEST 1 1 5 2 0 0 3",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11",
+            "choose 2",
+            "TEST 1 1 5 2 0 0 2",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 11 0 1 2 3 4 5 7",
+            "skill 1 15 14 13"
+        ]
+    ],
+    "match_config": {
+        "random_first_player": false,
+        "player_go_first": 0,
+        "check_deck_restriction": false,
+        "initial_hand_size": 5,
+        "initial_card_draw": 2,
+        "initial_dice_number": 16,
+        "initial_dice_reroll_times": 1,
+        "card_number": null,
+        "max_same_card_number": null,
+        "character_number": null,
+        "max_round_number": 999,
+        "max_hand_size": 10,
+        "max_dice_number": 16,
+        "max_summon_number": 4,
+        "max_support_number": 4,
+        "make_skill_prediction": false,
+        "history_level": 10,
+        "compress_history": true,
+        "recreate_mode": false,
+        "random_object_information": []
+    },
+    "command_history_raw": [
+        [
+            "sw_card 3",
+            "choose 0",
+            "skill 1 15 14 13",
+            "skill 0 12 11 10",
+            "skill 2 9 8 7",
+            "skill 0 6 5 4",
+            "sw_char 2 3",
+            "end",
+            "sw_char 0 15",
+            "TEST 11 0 1 2 3 4 5 6",
+            "card 1 0 14",
+            "card 1 0 11",
+            "sw_char 1 10",
+            "sw_char 2 9",
+            "sw_char 0 8",
+            "card 2 0 5",
+            "skill 1 4 3 2",
+            "sw_char 2 1",
+            "end",
+            "sw_char 1 15",
+            "skill 0 14 13 12",
+            "sw_char 0 11",
+            "card 1 0 8",
+            "skill 2 7 6 5",
+            "sw_char 1 4",
+            "sw_char 0 3",
+            "card 0 0 2",
+            "end",
+            "skill 1 15 14 13",
+            "skill 0 12 11 10",
+            "skill 2 9 8 7",
+            "skill 0 6 5 4",
+            "end",
+            "sw_char 2 15"
+        ],
+        [
+            "sw_card 2 3",
+            "choose 0",
+            "skill 0 15 14 13",
+            "skill 1 12 11 10",
+            "skill 2 9 8 7",
+            "skill 1 6 5 4",
+            "sw_char 1 3",
+            "TEST 11 0 1",
+            "sw_char 0 2",
+            "sw_char 1 1",
+            "end",
+            "sw_char 0 15",
+            "skill 0 14 13 12",
+            "card 0 0 9",
+            "card 1 0",
+            "skill 2 8 7 6",
+            "card 0 0 3",
+            "sw_char 2 2",
+            "end",
+            "sw_char 0 15",
+            "skill 1 14 13 12",
+            "choose 1",
+            "card 2 0 11",
+            "card 3 0",
+            "end",
+            "end",
+            "choose 2",
+            "skill 1 15 14 13"
+        ]
+    ]
+}
\ No newline at end of file
diff --git a/tests/server/patch/v44/jsons/jeht_sunyata.json b/tests/server/patch/v44/jsons/jeht_sunyata.json
new file mode 100644
index 00000000..575518ee
--- /dev/null
+++ b/tests/server/patch/v44/jsons/jeht_sunyata.json
@@ -0,0 +1,1356 @@
+{
+    "match_random_state": [
+        "MT19937",
+        [
+            2147483648,
+            852258933,
+            3037751817,
+            2843736348,
+            2346345909,
+            241038820,
+            3630833971,
+            322381140,
+            1250305161,
+            1459257731,
+            3694471596,
+            515911843,
+            3937938455,
+            2827679987,
+            3950882980,
+            3581943267,
+            4151002148,
+            1618076744,
+            3274872619,
+            2159583707,
+            1559018499,
+            1583145829,
+            1179320338,
+            3113356017,
+            1931467408,
+            2410284883,
+            753436273,
+            437428593,
+            510572609,
+            2706055346,
+            879811753,
+            825585750,
+            2401349358,
+            2490929089,
+            3977100308,
+            4231974237,
+            3442070342,
+            2600699322,
+            3596477700,
+            3408240710,
+            3752939454,
+            3842241914,
+            2634979991,
+            739520375,
+            3739104881,
+            2527561182,
+            1297315978,
+            1316945693,
+            1727810483,
+            3695100167,
+            1453832382,
+            979363388,
+            3076017079,
+            3732405838,
+            1444648514,
+            4151023880,
+            2205533946,
+            4261855231,
+            4267702982,
+            2647124900,
+            1484461652,
+            1998843354,
+            4035414622,
+            4156165081,
+            322695412,
+            2240084797,
+            218965524,
+            2620616784,
+            2355246093,
+            353075890,
+            807460217,
+            2080397923,
+            2949113800,
+            3746761770,
+            4204485378,
+            2925858822,
+            940465313,
+            2978225661,
+            1552046939,
+            3792670316,
+            4122385657,
+            3233513602,
+            1380874839,
+            984796113,
+            886794804,
+            4153798316,
+            717328536,
+            469185684,
+            3765962743,
+            4135056014,
+            3479073223,
+            3023129426,
+            4222684062,
+            3850877054,
+            224467384,
+            3087354214,
+            1680195562,
+            2193347842,
+            2684173028,
+            1880093036,
+            3229242389,
+            3049410427,
+            1279447835,
+            332094632,
+            1579758630,
+            3710374238,
+            2337675471,
+            115759493,
+            4211910051,
+            3915073058,
+            1108976576,
+            2071829022,
+            3748361252,
+            3666084797,
+            3192128605,
+            604670057,
+            188878253,
+            403907626,
+            3217757074,
+            1892194987,
+            378411265,
+            573022174,
+            3720006947,
+            254195013,
+            1584935511,
+            3553011007,
+            1370455926,
+            1537144829,
+            2822387189,
+            2441227067,
+            1172427512,
+            1810388875,
+            597276150,
+            3442654859,
+            1319639025,
+            1278428752,
+            3109211997,
+            3125310769,
+            1778730908,
+            2179046274,
+            529756476,
+            3028614397,
+            390243483,
+            2580809143,
+            2253747482,
+            645716549,
+            4069787277,
+            3392915288,
+            1804927866,
+            2998699909,
+            3486738826,
+            2249333105,
+            2840926426,
+            832811354,
+            2642376678,
+            2647298729,
+            2972210951,
+            3980432569,
+            2414014267,
+            3379616787,
+            827881623,
+            2006639651,
+            2739098202,
+            4142232454,
+            1674001832,
+            387416494,
+            1242487127,
+            3900036886,
+            1084620969,
+            4223529924,
+            2384308612,
+            2101645863,
+            1707720038,
+            3225537336,
+            1571082365,
+            4196493122,
+            2164372558,
+            3866850114,
+            2805868839,
+            675209309,
+            4179066360,
+            3625074731,
+            3089956980,
+            3293027876,
+            3902965037,
+            1224438018,
+            1224895899,
+            2575389666,
+            3357949449,
+            2384469209,
+            3700336215,
+            338019398,
+            3289126851,
+            2769703855,
+            390722640,
+            2704007496,
+            2883292084,
+            1965587089,
+            1025300549,
+            619699852,
+            1043025444,
+            3803785664,
+            922193774,
+            151167841,
+            2126109206,
+            3168147631,
+            2865122591,
+            3327041069,
+            3373701209,
+            9353399,
+            473750565,
+            3028380130,
+            1467951504,
+            4190922997,
+            589795710,
+            942553933,
+            937635948,
+            298315070,
+            415821393,
+            4041939848,
+            372373022,
+            3689582099,
+            519737891,
+            4233378103,
+            1157474098,
+            138790908,
+            770838763,
+            430623945,
+            814484707,
+            2853558444,
+            3213795543,
+            3845643860,
+            2512330672,
+            1336888278,
+            572322181,
+            1282342669,
+            920514674,
+            2038291972,
+            3149365870,
+            4102830575,
+            3549173955,
+            3684993693,
+            1356278478,
+            1775628726,
+            213156443,
+            2298969406,
+            2717355438,
+            1572856796,
+            1513647543,
+            2132855513,
+            1986873076,
+            3528225839,
+            308723273,
+            292601737,
+            1277750001,
+            1679680638,
+            2785246156,
+            3878540692,
+            471870265,
+            668186544,
+            2580697021,
+            2706131701,
+            1695560777,
+            2843565854,
+            332232130,
+            1424790421,
+            2379530317,
+            4168717850,
+            974529721,
+            2592398077,
+            1897652930,
+            1672473548,
+            1312396662,
+            1869749067,
+            2084827226,
+            73229630,
+            1974021446,
+            3205173810,
+            874883708,
+            2176709342,
+            2290870532,
+            2232221173,
+            11665963,
+            3617533180,
+            2066756895,
+            869614124,
+            248729098,
+            3168320955,
+            2513792026,
+            1546475412,
+            3754194653,
+            1731401296,
+            669770116,
+            1064448459,
+            2396128651,
+            1085107150,
+            2799824622,
+            1789749972,
+            2034050724,
+            2306132503,
+            2368269703,
+            338106206,
+            3551116912,
+            2236740658,
+            3994225500,
+            1393516086,
+            814315152,
+            4115786034,
+            1931073526,
+            3698510923,
+            3264469706,
+            1200777713,
+            3605887842,
+            537661941,
+            99637609,
+            739482224,
+            4131737706,
+            2971745240,
+            1636938568,
+            461809637,
+            1293154012,
+            2051347708,
+            3415492749,
+            309673494,
+            1718449666,
+            895136483,
+            459169287,
+            3758491237,
+            1484777584,
+            2985652876,
+            3690529376,
+            2814466466,
+            3761286303,
+            2906796347,
+            1770927703,
+            66989981,
+            1227151467,
+            740432923,
+            1742669766,
+            4108895627,
+            1129792952,
+            4217696861,
+            1581599772,
+            2822850338,
+            1371889226,
+            2928171633,
+            337314434,
+            1287812001,
+            2566385880,
+            1016557934,
+            1521694314,
+            1446569819,
+            494280377,
+            3605614928,
+            1750373709,
+            1917104935,
+            1005209477,
+            3290246820,
+            2435278462,
+            2392228341,
+            1860566250,
+            3604753061,
+            1545385861,
+            179541456,
+            1095359,
+            2235243074,
+            3565546844,
+            1848692563,
+            3296532274,
+            932183734,
+            2678033798,
+            2819310696,
+            372402397,
+            2849752546,
+            3300638946,
+            979341372,
+            2027134812,
+            3377292468,
+            776160986,
+            876596828,
+            3411844979,
+            3807986688,
+            2828349004,
+            2667246233,
+            2887674321,
+            3417530634,
+            4192745201,
+            1514743338,
+            1486186234,
+            3599480114,
+            2220700932,
+            877264426,
+            3683620224,
+            1791677875,
+            1576589409,
+            3371864729,
+            239577320,
+            664674279,
+            97455638,
+            671315040,
+            4098637571,
+            1233610174,
+            2528631470,
+            4181767203,
+            4188289355,
+            201010882,
+            2613994903,
+            3722085049,
+            464425505,
+            3872757292,
+            1251239949,
+            155862569,
+            1690852071,
+            958025955,
+            3882516403,
+            11720145,
+            1377457109,
+            611510219,
+            4258313417,
+            2145041081,
+            230603729,
+            108822725,
+            2878554314,
+            1764726348,
+            2813464509,
+            2430757019,
+            1893470021,
+            2345837745,
+            3504885831,
+            471263087,
+            3448186974,
+            91510807,
+            1692101012,
+            870758111,
+            279967414,
+            2975906051,
+            831331682,
+            714973860,
+            895403271,
+            1946906216,
+            2175407141,
+            294729832,
+            663378707,
+            4040948408,
+            371079217,
+            3849217943,
+            3167620631,
+            2106715634,
+            4270851423,
+            4180090782,
+            2160180184,
+            3446426895,
+            3057856044,
+            1623629695,
+            1938845385,
+            1992740005,
+            2620458046,
+            602642578,
+            168172447,
+            1859880120,
+            3105244601,
+            3397983984,
+            4209231162,
+            116203150,
+            2166700138,
+            679395399,
+            1591101135,
+            1511475060,
+            3865776260,
+            3861604114,
+            2333630785,
+            578347291,
+            107805155,
+            1281990800,
+            2331362412,
+            2805566554,
+            1392433873,
+            4113871053,
+            1681686757,
+            1317522404,
+            263062625,
+            3972207482,
+            871540459,
+            858793555,
+            3378130229,
+            1638925065,
+            3644427872,
+            425845250,
+            4199381058,
+            138738749,
+            4064868817,
+            641652061,
+            3293641471,
+            2781033146,
+            2433876171,
+            958379132,
+            515825137,
+            1920938822,
+            508669000,
+            1996074650,
+            1132963176,
+            112386699,
+            4020276217,
+            3307649861,
+            712492536,
+            752257327,
+            703177072,
+            655737206,
+            1936095049,
+            2870883815,
+            750441059,
+            531193802,
+            3887354491,
+            3768893981,
+            758096438,
+            763690471,
+            1177380930,
+            836758118,
+            1370880236,
+            2406562066,
+            3117758426,
+            38974763,
+            729452259,
+            563449846,
+            2410187015,
+            1585606395,
+            4205777270,
+            2173618669,
+            3178196512,
+            1074979883,
+            4149809984,
+            3286590086,
+            2021554321,
+            4088426121,
+            3079684553,
+            1917337899,
+            2966649180,
+            2899231799,
+            1062888899,
+            1306359486,
+            876671599,
+            3348080246,
+            1542570792,
+            3517583561,
+            164390915,
+            135607212,
+            1392292837,
+            1540942523,
+            2587272281,
+            974783651,
+            3971944422,
+            1315415300,
+            1419043995,
+            3194113563,
+            495692306,
+            3087088482,
+            735847283,
+            2418041689,
+            2761711941,
+            608441639,
+            3606420410,
+            2500421680,
+            2129584375,
+            4277314193,
+            362285431,
+            3829261316,
+            3033449623,
+            2726841579,
+            2856071091,
+            1282567563,
+            1399900137,
+            1288485551,
+            1784276086,
+            3203384342,
+            2304811961,
+            4188374470,
+            2799600913,
+            1668300233,
+            3487044801,
+            345405685,
+            68861045,
+            4149051636,
+            630962370,
+            3809297774,
+            3497678965,
+            2777356018,
+            1131508456,
+            3088811640,
+            2916362619,
+            3604683426,
+            1367656029,
+            3164360959,
+            3464800203,
+            2727920289,
+            3993785877,
+            410872094,
+            933194096,
+            1088600539,
+            3511204625,
+            818519978,
+            4217773289,
+            4016704403,
+            2742865381,
+            2118058332,
+            2028824770,
+            3585206344,
+            3620279056,
+            4291530408,
+            748541778,
+            1337473025,
+            2734790168,
+            2153414969,
+            1554090190,
+            4147260811,
+            1053913480,
+            4166858558,
+            1486762641,
+            34008703,
+            2957308893,
+            3461353779,
+            3720643435,
+            476418844,
+            2092109162,
+            1388524448
+        ],
+        623,
+        0,
+        0
+    ],
+    "start_deck": [
+        "default_version:4.4\ncharacter:AnemoMobMage@1.0\ncharacter:CryoMob@1.0\ncharacter:PyroMobMage@1.0\nJeht@4.4\nJeht@4.4\nJeht@4.4\nJeht@4.4\nJeht@4.4\nJeht@4.4\nJeht@4.4\nJeht@4.4\nJeht@4.4\nJeht@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\n",
+        "default_version:4.4\ncharacter:AnemoMobMage@1.0\ncharacter:CryoMob@1.0\ncharacter:PyroMobMage@1.0\nJeht@4.4\nJeht@4.4\nJeht@4.4\nJeht@4.4\nJeht@4.4\nJeht@4.4\nJeht@4.4\nJeht@4.4\nJeht@4.4\nJeht@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\nSunyata Flower@4.4\n"
+    ],
+    "command_history": [
+        [
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 6 p0 5",
+            "TEST 7 p0",
+            "TEST 6 p1 5",
+            "TEST 7 p1",
+            "TEST 11",
+            "sw_card 2",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 6 p0 5",
+            "TEST 7 p0",
+            "TEST 6 p1 5",
+            "TEST 7 p1",
+            "TEST 11",
+            "choose 0",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 6 p0 5",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 3",
+            "card 3 0 15 14",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3",
+            "card 0 0",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 6 p0 5",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 3 4",
+            "card 3 0 13",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3",
+            "card 0 0",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 6 p0 5",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 2 3 4",
+            "skill 0 12 11 10",
+            "TEST 1 9 10 10 9 10 10",
+            "TEST 6 p0 5",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 2 3 4",
+            "card 3 0",
+            "TEST 1 9 10 10 9 10 10",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3",
+            "card 1 0",
+            "TEST 1 9 10 10 9 10 10",
+            "TEST 6 p0 5",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 1 2 3 4",
+            "end",
+            "TEST 1 9 10 10 9 10 10",
+            "TEST 6 p0 7",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 7",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 1 2 3 4 5 6",
+            "card 5 0 15 14",
+            "TEST 1 9 10 10 9 10 10",
+            "TEST 6 p0 6",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 7",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3 4 5",
+            "card 5 0 13 12",
+            "TEST 1 9 10 10 9 10 10",
+            "TEST 6 p0 5",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 7",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3 4",
+            "card 2 0 11 10",
+            "TEST 1 9 10 10 9 10 10",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 7",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3",
+            "card 1 0 9 8",
+            "TEST 1 9 10 10 9 10 10",
+            "TEST 6 p0 3",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 7",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2",
+            "card 2 1 7",
+            "TEST 1 9 10 10 9 10 10",
+            "TEST 6 p0 2",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 7",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1",
+            "skill 0 6 5 4",
+            "TEST 1 8 10 10 8 10 10",
+            "TEST 6 p0 2",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 6",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1",
+            "skill 2 3 2 1",
+            "TEST 1 8 10 10 3 10 10",
+            "TEST 6 p0 2",
+            "TEST 7 p0 OMNI",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI ANEMO",
+            "TEST 11 0",
+            "end",
+            "TEST 1 8 10 10 3 10 10",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 7",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3",
+            "card 1 3 15 14 13",
+            "TEST 1 8 10 10 3 10 10",
+            "TEST 6 p0 3",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 7",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2",
+            "skill 1 12 11 10",
+            "TEST 1 8 10 10 3 10 7",
+            "TEST 6 p0 3",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 7",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2",
+            "skill 0 9 8 7",
+            "TEST 1 8 10 10 3 10 6",
+            "TEST 6 p0 3",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 7",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2",
+            "skill 2 6 5 4",
+            "TEST 1 8 10 10 3 10 1",
+            "TEST 6 p0 3",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 7",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2",
+            "card 1 0 6 5",
+            "TEST 1 8 10 10 3 10 1",
+            "TEST 6 p0 2",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 7",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1",
+            "end",
+            "TEST 1 8 10 10 3 10 1",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 8",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3",
+            "skill 0 15 14 13",
+            "TEST 1 3 10 10 2 10 1",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 8",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3",
+            "skill 0 12 11",
+            "TEST 1 3 10 10 1 10 1",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 8",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3",
+            "skill 2 10 9 8",
+            "TEST 1 0 10 10 1 10 0",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 7",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11",
+            "choose 1",
+            "TEST 1 0 10 10 1 10 0",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 7",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3",
+            "end"
+        ],
+        [
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 6 p0 5",
+            "TEST 7 p0",
+            "TEST 6 p1 5",
+            "TEST 7 p1",
+            "TEST 11",
+            "sw_card 2 1",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 6 p0 5",
+            "TEST 7 p0",
+            "TEST 6 p1 5",
+            "TEST 7 p1",
+            "TEST 11",
+            "choose 0",
+            "TEST 1 10 10 10 9 10 10",
+            "TEST 6 p0 5",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0",
+            "card 0 0 15 14",
+            "TEST 1 10 10 10 9 10 10",
+            "TEST 6 p0 5",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 4",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3",
+            "card 2 0",
+            "TEST 1 10 10 10 9 10 10",
+            "TEST 6 p0 5",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 3 4",
+            "card 4 0",
+            "TEST 1 10 10 10 9 10 10",
+            "TEST 6 p0 5",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 4",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3",
+            "card 2 0",
+            "TEST 1 10 10 10 9 10 10",
+            "TEST 6 p0 5",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 2 3 4",
+            "skill 0 13 12 11",
+            "TEST 1 9 10 10 9 10 10",
+            "TEST 6 p0 5",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 2 3 4",
+            "end",
+            "TEST 1 9 10 10 8 10 10",
+            "TEST 6 p0 2",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 7",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 2 3 4 5",
+            "card 5 0 15 14",
+            "TEST 1 9 10 10 8 10 10",
+            "TEST 6 p0 2",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 6",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3 4 5",
+            "card 3 0",
+            "TEST 1 9 10 10 8 10 10",
+            "TEST 6 p0 2",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3 4",
+            "card 0 1",
+            "TEST 1 9 10 10 8 10 10",
+            "TEST 6 p0 2",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 6",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3 4 5",
+            "skill 0 13 12 11",
+            "TEST 1 8 10 10 3 10 10",
+            "TEST 6 p0 2",
+            "TEST 7 p0 OMNI",
+            "TEST 6 p1 6",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3 4 5",
+            "card 5 0",
+            "TEST 1 8 10 10 3 10 10",
+            "TEST 6 p0 2",
+            "TEST 7 p0 OMNI",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI ANEMO",
+            "TEST 11 0 1 2 3 4",
+            "end",
+            "TEST 1 8 10 10 3 10 10",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 7",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3 4 5 6",
+            "sw_char 2 15",
+            "TEST 1 8 10 10 3 10 7",
+            "TEST 6 p0 3",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 7",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3 4 5 6",
+            "end",
+            "TEST 1 8 10 10 3 10 1",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 9",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3 4 5 6 7 8",
+            "card 6 0 15 14",
+            "TEST 1 8 10 10 3 10 1",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 8",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3 4 5 6 7",
+            "sw_char 0 13",
+            "TEST 1 8 10 10 2 10 1",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 8",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3 4 5 6 7",
+            "skill 2 12 11 10",
+            "TEST 1 3 10 10 1 10 1",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 8",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3 4 5 6 7",
+            "sw_char 2 9",
+            "TEST 1 3 10 10 1 10 0",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 8",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11",
+            "choose 0",
+            "TEST 1 3 10 10 1 10 0",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 8",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3 4 5 6 7",
+            "card 4 0",
+            "TEST 1 3 10 10 1 10 0",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 7",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3 4 5 6",
+            "card 0 2",
+            "TEST 1 3 10 10 1 10 0",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 8",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3 4 5 6 7",
+            "card 1 0 8",
+            "TEST 1 3 10 10 1 10 0",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 7",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3 4 5 6",
+            "skill 1 7 6 5",
+            "TEST 1 0 10 10 1 10 0",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 7",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3 4 5 6",
+            "skill 1 4 3",
+            "TEST 1 0 7 10 1 10 0",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 7",
+            "TEST 7 p1 OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3 4 5 6",
+            "skill 2 2 1 0",
+            "TEST 1 0 2 10 1 10 0",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 6 p1 7",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 11 0 1 2 3 4 5 6",
+            "end"
+        ]
+    ],
+    "match_config": {
+        "random_first_player": false,
+        "player_go_first": 0,
+        "check_deck_restriction": false,
+        "initial_hand_size": 5,
+        "initial_card_draw": 2,
+        "initial_dice_number": 16,
+        "initial_dice_reroll_times": 1,
+        "card_number": null,
+        "max_same_card_number": null,
+        "character_number": null,
+        "max_round_number": 999,
+        "max_hand_size": 999,
+        "max_dice_number": 16,
+        "max_summon_number": 4,
+        "max_support_number": 4,
+        "make_skill_prediction": false,
+        "history_level": 10,
+        "compress_history": true,
+        "recreate_mode": false,
+        "random_object_information": []
+    },
+    "command_history_raw": [
+        [
+            [
+                2,
+                "sw_card 2",
+                0
+            ],
+            [
+                4,
+                "choose 0",
+                2
+            ],
+            [
+                7,
+                "card 3 0 15 14",
+                4
+            ],
+            [
+                10,
+                "card 0 0",
+                5
+            ],
+            [
+                12,
+                "card 3 0 13",
+                6
+            ],
+            [
+                15,
+                "card 0 0",
+                7
+            ],
+            [
+                17,
+                "skill 0 12 11 10",
+                8
+            ],
+            [
+                33,
+                "card 3 0",
+                14
+            ],
+            [
+                36,
+                "card 1 0",
+                15
+            ],
+            [
+                38,
+                "end",
+                16
+            ],
+            [
+                45,
+                "card 5 0 15 14",
+                18
+            ],
+            [
+                48,
+                "card 5 0 13 12",
+                19
+            ],
+            [
+                51,
+                "card 2 0 11 10",
+                20
+            ],
+            [
+                54,
+                "card 1 0 9 8",
+                21
+            ],
+            [
+                57,
+                "card 2 1 7",
+                22
+            ],
+            [
+                60,
+                "skill 0 6 5 4",
+                23
+            ],
+            [
+                74,
+                "skill 2 3 2 1",
+                28
+            ],
+            [
+                82,
+                "end",
+                31
+            ],
+            [
+                89,
+                "card 1 3 15 14 13",
+                33
+            ],
+            [
+                92,
+                "skill 1 12 11 10",
+                34
+            ],
+            [
+                97,
+                "skill 0 9 8 7",
+                36
+            ],
+            [
+                100,
+                "skill 2 6 5 4",
+                37
+            ],
+            [
+                103,
+                "card 1 0 6 5",
+                38
+            ],
+            [
+                106,
+                "end",
+                39
+            ],
+            [
+                116,
+                "skill 0 15 14 13",
+                42
+            ],
+            [
+                122,
+                "skill 0 12 11",
+                44
+            ],
+            [
+                127,
+                "skill 2 10 9 8",
+                46
+            ],
+            [
+                142,
+                "choose 1",
+                52
+            ],
+            [
+                143,
+                "end",
+                53
+            ]
+        ],
+        [
+            [
+                2,
+                "sw_card 2 1",
+                1
+            ],
+            [
+                4,
+                "choose 0",
+                3
+            ],
+            [
+                20,
+                "card 0 0 15 14",
+                9
+            ],
+            [
+                23,
+                "card 2 0",
+                10
+            ],
+            [
+                25,
+                "card 4 0",
+                11
+            ],
+            [
+                28,
+                "card 2 0",
+                12
+            ],
+            [
+                30,
+                "skill 0 13 12 11",
+                13
+            ],
+            [
+                40,
+                "end",
+                17
+            ],
+            [
+                63,
+                "card 5 0 15 14",
+                24
+            ],
+            [
+                66,
+                "card 3 0",
+                25
+            ],
+            [
+                69,
+                "card 0 1",
+                26
+            ],
+            [
+                71,
+                "skill 0 13 12 11",
+                27
+            ],
+            [
+                77,
+                "card 5 0",
+                29
+            ],
+            [
+                80,
+                "end",
+                30
+            ],
+            [
+                87,
+                "sw_char 2 15",
+                32
+            ],
+            [
+                95,
+                "end",
+                35
+            ],
+            [
+                111,
+                "card 6 0 15 14",
+                40
+            ],
+            [
+                114,
+                "sw_char 0 13",
+                41
+            ],
+            [
+                119,
+                "skill 2 12 11 10",
+                43
+            ],
+            [
+                125,
+                "sw_char 2 9",
+                45
+            ],
+            [
+                130,
+                "choose 0",
+                47
+            ],
+            [
+                131,
+                "card 4 0",
+                48
+            ],
+            [
+                134,
+                "card 0 2",
+                49
+            ],
+            [
+                136,
+                "card 1 0 8",
+                50
+            ],
+            [
+                139,
+                "skill 1 7 6 5",
+                51
+            ],
+            [
+                145,
+                "skill 1 4 3",
+                54
+            ],
+            [
+                148,
+                "skill 2 2 1 0",
+                55
+            ],
+            [
+                151,
+                "end",
+                56
+            ]
+        ]
+    ]
+}
\ No newline at end of file
diff --git a/tests/server/patch/v44/jsons/machine_2.json b/tests/server/patch/v44/jsons/machine_2.json
new file mode 100644
index 00000000..76f41394
--- /dev/null
+++ b/tests/server/patch/v44/jsons/machine_2.json
@@ -0,0 +1,1040 @@
+{
+    "match_random_state": [
+        "MT19937",
+        [
+            2147483648,
+            852258933,
+            3037751817,
+            2843736348,
+            2346345909,
+            241038820,
+            3630833971,
+            322381140,
+            1250305161,
+            1459257731,
+            3694471596,
+            515911843,
+            3937938455,
+            2827679987,
+            3950882980,
+            3581943267,
+            4151002148,
+            1618076744,
+            3274872619,
+            2159583707,
+            1559018499,
+            1583145829,
+            1179320338,
+            3113356017,
+            1931467408,
+            2410284883,
+            753436273,
+            437428593,
+            510572609,
+            2706055346,
+            879811753,
+            825585750,
+            2401349358,
+            2490929089,
+            3977100308,
+            4231974237,
+            3442070342,
+            2600699322,
+            3596477700,
+            3408240710,
+            3752939454,
+            3842241914,
+            2634979991,
+            739520375,
+            3739104881,
+            2527561182,
+            1297315978,
+            1316945693,
+            1727810483,
+            3695100167,
+            1453832382,
+            979363388,
+            3076017079,
+            3732405838,
+            1444648514,
+            4151023880,
+            2205533946,
+            4261855231,
+            4267702982,
+            2647124900,
+            1484461652,
+            1998843354,
+            4035414622,
+            4156165081,
+            322695412,
+            2240084797,
+            218965524,
+            2620616784,
+            2355246093,
+            353075890,
+            807460217,
+            2080397923,
+            2949113800,
+            3746761770,
+            4204485378,
+            2925858822,
+            940465313,
+            2978225661,
+            1552046939,
+            3792670316,
+            4122385657,
+            3233513602,
+            1380874839,
+            984796113,
+            886794804,
+            4153798316,
+            717328536,
+            469185684,
+            3765962743,
+            4135056014,
+            3479073223,
+            3023129426,
+            4222684062,
+            3850877054,
+            224467384,
+            3087354214,
+            1680195562,
+            2193347842,
+            2684173028,
+            1880093036,
+            3229242389,
+            3049410427,
+            1279447835,
+            332094632,
+            1579758630,
+            3710374238,
+            2337675471,
+            115759493,
+            4211910051,
+            3915073058,
+            1108976576,
+            2071829022,
+            3748361252,
+            3666084797,
+            3192128605,
+            604670057,
+            188878253,
+            403907626,
+            3217757074,
+            1892194987,
+            378411265,
+            573022174,
+            3720006947,
+            254195013,
+            1584935511,
+            3553011007,
+            1370455926,
+            1537144829,
+            2822387189,
+            2441227067,
+            1172427512,
+            1810388875,
+            597276150,
+            3442654859,
+            1319639025,
+            1278428752,
+            3109211997,
+            3125310769,
+            1778730908,
+            2179046274,
+            529756476,
+            3028614397,
+            390243483,
+            2580809143,
+            2253747482,
+            645716549,
+            4069787277,
+            3392915288,
+            1804927866,
+            2998699909,
+            3486738826,
+            2249333105,
+            2840926426,
+            832811354,
+            2642376678,
+            2647298729,
+            2972210951,
+            3980432569,
+            2414014267,
+            3379616787,
+            827881623,
+            2006639651,
+            2739098202,
+            4142232454,
+            1674001832,
+            387416494,
+            1242487127,
+            3900036886,
+            1084620969,
+            4223529924,
+            2384308612,
+            2101645863,
+            1707720038,
+            3225537336,
+            1571082365,
+            4196493122,
+            2164372558,
+            3866850114,
+            2805868839,
+            675209309,
+            4179066360,
+            3625074731,
+            3089956980,
+            3293027876,
+            3902965037,
+            1224438018,
+            1224895899,
+            2575389666,
+            3357949449,
+            2384469209,
+            3700336215,
+            338019398,
+            3289126851,
+            2769703855,
+            390722640,
+            2704007496,
+            2883292084,
+            1965587089,
+            1025300549,
+            619699852,
+            1043025444,
+            3803785664,
+            922193774,
+            151167841,
+            2126109206,
+            3168147631,
+            2865122591,
+            3327041069,
+            3373701209,
+            9353399,
+            473750565,
+            3028380130,
+            1467951504,
+            4190922997,
+            589795710,
+            942553933,
+            937635948,
+            298315070,
+            415821393,
+            4041939848,
+            372373022,
+            3689582099,
+            519737891,
+            4233378103,
+            1157474098,
+            138790908,
+            770838763,
+            430623945,
+            814484707,
+            2853558444,
+            3213795543,
+            3845643860,
+            2512330672,
+            1336888278,
+            572322181,
+            1282342669,
+            920514674,
+            2038291972,
+            3149365870,
+            4102830575,
+            3549173955,
+            3684993693,
+            1356278478,
+            1775628726,
+            213156443,
+            2298969406,
+            2717355438,
+            1572856796,
+            1513647543,
+            2132855513,
+            1986873076,
+            3528225839,
+            308723273,
+            292601737,
+            1277750001,
+            1679680638,
+            2785246156,
+            3878540692,
+            471870265,
+            668186544,
+            2580697021,
+            2706131701,
+            1695560777,
+            2843565854,
+            332232130,
+            1424790421,
+            2379530317,
+            4168717850,
+            974529721,
+            2592398077,
+            1897652930,
+            1672473548,
+            1312396662,
+            1869749067,
+            2084827226,
+            73229630,
+            1974021446,
+            3205173810,
+            874883708,
+            2176709342,
+            2290870532,
+            2232221173,
+            11665963,
+            3617533180,
+            2066756895,
+            869614124,
+            248729098,
+            3168320955,
+            2513792026,
+            1546475412,
+            3754194653,
+            1731401296,
+            669770116,
+            1064448459,
+            2396128651,
+            1085107150,
+            2799824622,
+            1789749972,
+            2034050724,
+            2306132503,
+            2368269703,
+            338106206,
+            3551116912,
+            2236740658,
+            3994225500,
+            1393516086,
+            814315152,
+            4115786034,
+            1931073526,
+            3698510923,
+            3264469706,
+            1200777713,
+            3605887842,
+            537661941,
+            99637609,
+            739482224,
+            4131737706,
+            2971745240,
+            1636938568,
+            461809637,
+            1293154012,
+            2051347708,
+            3415492749,
+            309673494,
+            1718449666,
+            895136483,
+            459169287,
+            3758491237,
+            1484777584,
+            2985652876,
+            3690529376,
+            2814466466,
+            3761286303,
+            2906796347,
+            1770927703,
+            66989981,
+            1227151467,
+            740432923,
+            1742669766,
+            4108895627,
+            1129792952,
+            4217696861,
+            1581599772,
+            2822850338,
+            1371889226,
+            2928171633,
+            337314434,
+            1287812001,
+            2566385880,
+            1016557934,
+            1521694314,
+            1446569819,
+            494280377,
+            3605614928,
+            1750373709,
+            1917104935,
+            1005209477,
+            3290246820,
+            2435278462,
+            2392228341,
+            1860566250,
+            3604753061,
+            1545385861,
+            179541456,
+            1095359,
+            2235243074,
+            3565546844,
+            1848692563,
+            3296532274,
+            932183734,
+            2678033798,
+            2819310696,
+            372402397,
+            2849752546,
+            3300638946,
+            979341372,
+            2027134812,
+            3377292468,
+            776160986,
+            876596828,
+            3411844979,
+            3807986688,
+            2828349004,
+            2667246233,
+            2887674321,
+            3417530634,
+            4192745201,
+            1514743338,
+            1486186234,
+            3599480114,
+            2220700932,
+            877264426,
+            3683620224,
+            1791677875,
+            1576589409,
+            3371864729,
+            239577320,
+            664674279,
+            97455638,
+            671315040,
+            4098637571,
+            1233610174,
+            2528631470,
+            4181767203,
+            4188289355,
+            201010882,
+            2613994903,
+            3722085049,
+            464425505,
+            3872757292,
+            1251239949,
+            155862569,
+            1690852071,
+            958025955,
+            3882516403,
+            11720145,
+            1377457109,
+            611510219,
+            4258313417,
+            2145041081,
+            230603729,
+            108822725,
+            2878554314,
+            1764726348,
+            2813464509,
+            2430757019,
+            1893470021,
+            2345837745,
+            3504885831,
+            471263087,
+            3448186974,
+            91510807,
+            1692101012,
+            870758111,
+            279967414,
+            2975906051,
+            831331682,
+            714973860,
+            895403271,
+            1946906216,
+            2175407141,
+            294729832,
+            663378707,
+            4040948408,
+            371079217,
+            3849217943,
+            3167620631,
+            2106715634,
+            4270851423,
+            4180090782,
+            2160180184,
+            3446426895,
+            3057856044,
+            1623629695,
+            1938845385,
+            1992740005,
+            2620458046,
+            602642578,
+            168172447,
+            1859880120,
+            3105244601,
+            3397983984,
+            4209231162,
+            116203150,
+            2166700138,
+            679395399,
+            1591101135,
+            1511475060,
+            3865776260,
+            3861604114,
+            2333630785,
+            578347291,
+            107805155,
+            1281990800,
+            2331362412,
+            2805566554,
+            1392433873,
+            4113871053,
+            1681686757,
+            1317522404,
+            263062625,
+            3972207482,
+            871540459,
+            858793555,
+            3378130229,
+            1638925065,
+            3644427872,
+            425845250,
+            4199381058,
+            138738749,
+            4064868817,
+            641652061,
+            3293641471,
+            2781033146,
+            2433876171,
+            958379132,
+            515825137,
+            1920938822,
+            508669000,
+            1996074650,
+            1132963176,
+            112386699,
+            4020276217,
+            3307649861,
+            712492536,
+            752257327,
+            703177072,
+            655737206,
+            1936095049,
+            2870883815,
+            750441059,
+            531193802,
+            3887354491,
+            3768893981,
+            758096438,
+            763690471,
+            1177380930,
+            836758118,
+            1370880236,
+            2406562066,
+            3117758426,
+            38974763,
+            729452259,
+            563449846,
+            2410187015,
+            1585606395,
+            4205777270,
+            2173618669,
+            3178196512,
+            1074979883,
+            4149809984,
+            3286590086,
+            2021554321,
+            4088426121,
+            3079684553,
+            1917337899,
+            2966649180,
+            2899231799,
+            1062888899,
+            1306359486,
+            876671599,
+            3348080246,
+            1542570792,
+            3517583561,
+            164390915,
+            135607212,
+            1392292837,
+            1540942523,
+            2587272281,
+            974783651,
+            3971944422,
+            1315415300,
+            1419043995,
+            3194113563,
+            495692306,
+            3087088482,
+            735847283,
+            2418041689,
+            2761711941,
+            608441639,
+            3606420410,
+            2500421680,
+            2129584375,
+            4277314193,
+            362285431,
+            3829261316,
+            3033449623,
+            2726841579,
+            2856071091,
+            1282567563,
+            1399900137,
+            1288485551,
+            1784276086,
+            3203384342,
+            2304811961,
+            4188374470,
+            2799600913,
+            1668300233,
+            3487044801,
+            345405685,
+            68861045,
+            4149051636,
+            630962370,
+            3809297774,
+            3497678965,
+            2777356018,
+            1131508456,
+            3088811640,
+            2916362619,
+            3604683426,
+            1367656029,
+            3164360959,
+            3464800203,
+            2727920289,
+            3993785877,
+            410872094,
+            933194096,
+            1088600539,
+            3511204625,
+            818519978,
+            4217773289,
+            4016704403,
+            2742865381,
+            2118058332,
+            2028824770,
+            3585206344,
+            3620279056,
+            4291530408,
+            748541778,
+            1337473025,
+            2734790168,
+            2153414969,
+            1554090190,
+            4147260811,
+            1053913480,
+            4166858558,
+            1486762641,
+            34008703,
+            2957308893,
+            3461353779,
+            3720643435,
+            476418844,
+            2092109162,
+            1388524448
+        ],
+        623,
+        0,
+        0
+    ],
+    "start_deck": [
+        "default_version:4.4\ncharacter:Lyney@4.3\ncharacter:Alhaitham@4.3\ncharacter:Klee@3.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nGambler's Earrings@3.8\nGambler's Earrings@3.8\nGambler's Earrings@3.8\nGambler's Earrings@3.8\nGambler's Earrings@3.8\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\n",
+        "default_version:4.4\ncharacter:Lyney@4.3\ncharacter:Alhaitham@4.3\ncharacter:Klee@3.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nGambler's Earrings@3.8\nGambler's Earrings@3.8\nGambler's Earrings@3.8\nGambler's Earrings@3.8\nGambler's Earrings@3.8\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\n"
+    ],
+    "command_history": [
+        [
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 5",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 11",
+            "sw_card 1 2",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 5",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 11",
+            "choose 0",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 5",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 11 0 1 2 3 4",
+            "card 2 0",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 5 p0c0 0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 11 0 1 2 3",
+            "skill 1 15 14 13",
+            "TEST 1 6 10 10 8 10 10",
+            "TEST 5 p0c0 2 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 5 p1c0 0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 4",
+            "TEST 11 0 1 2 3",
+            "card 1 0",
+            "TEST 1 6 10 10 8 10 10",
+            "TEST 5 p0c0 0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 3",
+            "TEST 5 p1c0 0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 4",
+            "TEST 11 0 1 2",
+            "skill 1 12 11 10",
+            "TEST 1 3 10 10 5 10 10",
+            "TEST 5 p0c0 2 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 5 p1c0 2 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "TEST 11 0 1 2 3",
+            "sw_char 1 10",
+            "TEST 1 3 10 10 5 10 10",
+            "TEST 5 p0c0 2 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 5 p1c0 2 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "TEST 11 0 1 2 3",
+            "skill 0 9 8 7",
+            "TEST 1 3 9 10 5 10 8",
+            "TEST 5 p0c0 2 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 5 p1c0 2 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "TEST 11 0 1 2 3",
+            "card 1 1",
+            "TEST 1 3 9 10 5 10 8",
+            "TEST 5 p0c0 0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 3",
+            "TEST 5 p1c0 2 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "TEST 11 0 1 2",
+            "card 1 2 6",
+            "TEST 1 3 9 10 5 10 8",
+            "TEST 5 p0c0 0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 2",
+            "TEST 5 p1c0 2 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "TEST 11 0 1",
+            "end"
+        ],
+        [
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 5",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 11",
+            "sw_card 1 2 3 4",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 5",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 11",
+            "choose 0",
+            "TEST 1 9 10 10 8 10 10",
+            "TEST 5 p0c0 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 11 0 1 2 3 4",
+            "card 0 0",
+            "TEST 1 9 10 10 8 10 10",
+            "TEST 5 p0c0 1 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 5 p1c0 0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 4",
+            "TEST 11 0 1 2 3",
+            "skill 2 15 14 13",
+            "TEST 1 5 10 10 6 10 10",
+            "TEST 5 p0c0 1 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 3",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 4",
+            "TEST 11 0 1 2 3",
+            "card 1 1 12 11",
+            "TEST 1 5 10 10 6 10 10",
+            "TEST 5 p0c0 1 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 3",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "TEST 11 0 1 2",
+            "skill 1 10 9 8",
+            "TEST 1 3 10 10 5 10 10",
+            "TEST 5 p0c0 2 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 5 p1c0 2 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "TEST 11 0 1 2",
+            "sw_char 2 7",
+            "TEST 1 3 10 10 5 10 8",
+            "TEST 5 p0c0 2 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 5 p1c0 2 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "TEST 11 0 1 2",
+            "skill 0 6 5 4",
+            "TEST 1 3 9 10 5 10 8",
+            "TEST 5 p0c0 0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 2",
+            "TEST 5 p1c0 2 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "TEST 11 0 1 2",
+            "sw_char 1 3",
+            "TEST 1 3 9 10 5 10 8",
+            "TEST 5 p0c0 0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 2",
+            "TEST 5 p1c0 2 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "TEST 11 0 1 2",
+            "sw_char 2 2",
+            "TEST 1 3 9 10 5 10 8",
+            "TEST 5 p0c0 0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 2",
+            "TEST 5 p1c0 2 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "TEST 11 0 2",
+            "card 2 2",
+            "TEST 1 3 9 10 5 10 8",
+            "TEST 5 p0c0 0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 2",
+            "TEST 5 p1c0 0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 2",
+            "TEST 11 0",
+            "end"
+        ]
+    ],
+    "match_config": {
+        "random_first_player": false,
+        "player_go_first": 0,
+        "check_deck_restriction": false,
+        "initial_hand_size": 5,
+        "initial_card_draw": 2,
+        "initial_dice_number": 16,
+        "initial_dice_reroll_times": 1,
+        "card_number": null,
+        "max_same_card_number": null,
+        "character_number": null,
+        "max_round_number": 999,
+        "max_hand_size": 10,
+        "max_dice_number": 16,
+        "max_summon_number": 4,
+        "max_support_number": 4,
+        "make_skill_prediction": false,
+        "history_level": 10,
+        "compress_history": true,
+        "recreate_mode": false,
+        "random_object_information": []
+    },
+    "command_history_raw": [
+        [
+            [
+                2,
+                "sw_card 1 2",
+                0
+            ],
+            [
+                4,
+                "choose 0",
+                2
+            ],
+            [
+                7,
+                "card 2 0",
+                4
+            ],
+            [
+                9,
+                "skill 1 15 14 13",
+                5
+            ],
+            [
+                18,
+                "card 1 0",
+                8
+            ],
+            [
+                21,
+                "skill 1 12 11 10",
+                9
+            ],
+            [
+                33,
+                "sw_char 1 10",
+                12
+            ],
+            [
+                37,
+                "skill 0 9 8 7",
+                14
+            ],
+            [
+                43,
+                "card 1 1",
+                16
+            ],
+            [
+                46,
+                "card 1 2 6",
+                17
+            ],
+            [
+                49,
+                "end",
+                18
+            ]
+        ],
+        [
+            [
+                2,
+                "sw_card 1 2 3 4",
+                1
+            ],
+            [
+                4,
+                "choose 0",
+                3
+            ],
+            [
+                13,
+                "card 0 0",
+                6
+            ],
+            [
+                15,
+                "skill 2 15 14 13",
+                7
+            ],
+            [
+                25,
+                "card 1 1 12 11",
+                10
+            ],
+            [
+                28,
+                "skill 1 10 9 8",
+                11
+            ],
+            [
+                35,
+                "sw_char 2 7",
+                13
+            ],
+            [
+                40,
+                "skill 0 6 5 4",
+                15
+            ],
+            [
+                51,
+                "sw_char 1 3",
+                19
+            ],
+            [
+                53,
+                "sw_char 2 2",
+                20
+            ],
+            [
+                55,
+                "card 2 2",
+                21
+            ],
+            [
+                58,
+                "end",
+                22
+            ]
+        ]
+    ]
+}
\ No newline at end of file
diff --git a/tests/server/patch/v44/jsons/millennial_pearl_seahorse.json b/tests/server/patch/v44/jsons/millennial_pearl_seahorse.json
new file mode 100644
index 00000000..03aa44ac
--- /dev/null
+++ b/tests/server/patch/v44/jsons/millennial_pearl_seahorse.json
@@ -0,0 +1,1596 @@
+{
+    "match_random_state": [
+        "MT19937",
+        [
+            2147483648,
+            852258933,
+            3037751817,
+            2843736348,
+            2346345909,
+            241038820,
+            3630833971,
+            322381140,
+            1250305161,
+            1459257731,
+            3694471596,
+            515911843,
+            3937938455,
+            2827679987,
+            3950882980,
+            3581943267,
+            4151002148,
+            1618076744,
+            3274872619,
+            2159583707,
+            1559018499,
+            1583145829,
+            1179320338,
+            3113356017,
+            1931467408,
+            2410284883,
+            753436273,
+            437428593,
+            510572609,
+            2706055346,
+            879811753,
+            825585750,
+            2401349358,
+            2490929089,
+            3977100308,
+            4231974237,
+            3442070342,
+            2600699322,
+            3596477700,
+            3408240710,
+            3752939454,
+            3842241914,
+            2634979991,
+            739520375,
+            3739104881,
+            2527561182,
+            1297315978,
+            1316945693,
+            1727810483,
+            3695100167,
+            1453832382,
+            979363388,
+            3076017079,
+            3732405838,
+            1444648514,
+            4151023880,
+            2205533946,
+            4261855231,
+            4267702982,
+            2647124900,
+            1484461652,
+            1998843354,
+            4035414622,
+            4156165081,
+            322695412,
+            2240084797,
+            218965524,
+            2620616784,
+            2355246093,
+            353075890,
+            807460217,
+            2080397923,
+            2949113800,
+            3746761770,
+            4204485378,
+            2925858822,
+            940465313,
+            2978225661,
+            1552046939,
+            3792670316,
+            4122385657,
+            3233513602,
+            1380874839,
+            984796113,
+            886794804,
+            4153798316,
+            717328536,
+            469185684,
+            3765962743,
+            4135056014,
+            3479073223,
+            3023129426,
+            4222684062,
+            3850877054,
+            224467384,
+            3087354214,
+            1680195562,
+            2193347842,
+            2684173028,
+            1880093036,
+            3229242389,
+            3049410427,
+            1279447835,
+            332094632,
+            1579758630,
+            3710374238,
+            2337675471,
+            115759493,
+            4211910051,
+            3915073058,
+            1108976576,
+            2071829022,
+            3748361252,
+            3666084797,
+            3192128605,
+            604670057,
+            188878253,
+            403907626,
+            3217757074,
+            1892194987,
+            378411265,
+            573022174,
+            3720006947,
+            254195013,
+            1584935511,
+            3553011007,
+            1370455926,
+            1537144829,
+            2822387189,
+            2441227067,
+            1172427512,
+            1810388875,
+            597276150,
+            3442654859,
+            1319639025,
+            1278428752,
+            3109211997,
+            3125310769,
+            1778730908,
+            2179046274,
+            529756476,
+            3028614397,
+            390243483,
+            2580809143,
+            2253747482,
+            645716549,
+            4069787277,
+            3392915288,
+            1804927866,
+            2998699909,
+            3486738826,
+            2249333105,
+            2840926426,
+            832811354,
+            2642376678,
+            2647298729,
+            2972210951,
+            3980432569,
+            2414014267,
+            3379616787,
+            827881623,
+            2006639651,
+            2739098202,
+            4142232454,
+            1674001832,
+            387416494,
+            1242487127,
+            3900036886,
+            1084620969,
+            4223529924,
+            2384308612,
+            2101645863,
+            1707720038,
+            3225537336,
+            1571082365,
+            4196493122,
+            2164372558,
+            3866850114,
+            2805868839,
+            675209309,
+            4179066360,
+            3625074731,
+            3089956980,
+            3293027876,
+            3902965037,
+            1224438018,
+            1224895899,
+            2575389666,
+            3357949449,
+            2384469209,
+            3700336215,
+            338019398,
+            3289126851,
+            2769703855,
+            390722640,
+            2704007496,
+            2883292084,
+            1965587089,
+            1025300549,
+            619699852,
+            1043025444,
+            3803785664,
+            922193774,
+            151167841,
+            2126109206,
+            3168147631,
+            2865122591,
+            3327041069,
+            3373701209,
+            9353399,
+            473750565,
+            3028380130,
+            1467951504,
+            4190922997,
+            589795710,
+            942553933,
+            937635948,
+            298315070,
+            415821393,
+            4041939848,
+            372373022,
+            3689582099,
+            519737891,
+            4233378103,
+            1157474098,
+            138790908,
+            770838763,
+            430623945,
+            814484707,
+            2853558444,
+            3213795543,
+            3845643860,
+            2512330672,
+            1336888278,
+            572322181,
+            1282342669,
+            920514674,
+            2038291972,
+            3149365870,
+            4102830575,
+            3549173955,
+            3684993693,
+            1356278478,
+            1775628726,
+            213156443,
+            2298969406,
+            2717355438,
+            1572856796,
+            1513647543,
+            2132855513,
+            1986873076,
+            3528225839,
+            308723273,
+            292601737,
+            1277750001,
+            1679680638,
+            2785246156,
+            3878540692,
+            471870265,
+            668186544,
+            2580697021,
+            2706131701,
+            1695560777,
+            2843565854,
+            332232130,
+            1424790421,
+            2379530317,
+            4168717850,
+            974529721,
+            2592398077,
+            1897652930,
+            1672473548,
+            1312396662,
+            1869749067,
+            2084827226,
+            73229630,
+            1974021446,
+            3205173810,
+            874883708,
+            2176709342,
+            2290870532,
+            2232221173,
+            11665963,
+            3617533180,
+            2066756895,
+            869614124,
+            248729098,
+            3168320955,
+            2513792026,
+            1546475412,
+            3754194653,
+            1731401296,
+            669770116,
+            1064448459,
+            2396128651,
+            1085107150,
+            2799824622,
+            1789749972,
+            2034050724,
+            2306132503,
+            2368269703,
+            338106206,
+            3551116912,
+            2236740658,
+            3994225500,
+            1393516086,
+            814315152,
+            4115786034,
+            1931073526,
+            3698510923,
+            3264469706,
+            1200777713,
+            3605887842,
+            537661941,
+            99637609,
+            739482224,
+            4131737706,
+            2971745240,
+            1636938568,
+            461809637,
+            1293154012,
+            2051347708,
+            3415492749,
+            309673494,
+            1718449666,
+            895136483,
+            459169287,
+            3758491237,
+            1484777584,
+            2985652876,
+            3690529376,
+            2814466466,
+            3761286303,
+            2906796347,
+            1770927703,
+            66989981,
+            1227151467,
+            740432923,
+            1742669766,
+            4108895627,
+            1129792952,
+            4217696861,
+            1581599772,
+            2822850338,
+            1371889226,
+            2928171633,
+            337314434,
+            1287812001,
+            2566385880,
+            1016557934,
+            1521694314,
+            1446569819,
+            494280377,
+            3605614928,
+            1750373709,
+            1917104935,
+            1005209477,
+            3290246820,
+            2435278462,
+            2392228341,
+            1860566250,
+            3604753061,
+            1545385861,
+            179541456,
+            1095359,
+            2235243074,
+            3565546844,
+            1848692563,
+            3296532274,
+            932183734,
+            2678033798,
+            2819310696,
+            372402397,
+            2849752546,
+            3300638946,
+            979341372,
+            2027134812,
+            3377292468,
+            776160986,
+            876596828,
+            3411844979,
+            3807986688,
+            2828349004,
+            2667246233,
+            2887674321,
+            3417530634,
+            4192745201,
+            1514743338,
+            1486186234,
+            3599480114,
+            2220700932,
+            877264426,
+            3683620224,
+            1791677875,
+            1576589409,
+            3371864729,
+            239577320,
+            664674279,
+            97455638,
+            671315040,
+            4098637571,
+            1233610174,
+            2528631470,
+            4181767203,
+            4188289355,
+            201010882,
+            2613994903,
+            3722085049,
+            464425505,
+            3872757292,
+            1251239949,
+            155862569,
+            1690852071,
+            958025955,
+            3882516403,
+            11720145,
+            1377457109,
+            611510219,
+            4258313417,
+            2145041081,
+            230603729,
+            108822725,
+            2878554314,
+            1764726348,
+            2813464509,
+            2430757019,
+            1893470021,
+            2345837745,
+            3504885831,
+            471263087,
+            3448186974,
+            91510807,
+            1692101012,
+            870758111,
+            279967414,
+            2975906051,
+            831331682,
+            714973860,
+            895403271,
+            1946906216,
+            2175407141,
+            294729832,
+            663378707,
+            4040948408,
+            371079217,
+            3849217943,
+            3167620631,
+            2106715634,
+            4270851423,
+            4180090782,
+            2160180184,
+            3446426895,
+            3057856044,
+            1623629695,
+            1938845385,
+            1992740005,
+            2620458046,
+            602642578,
+            168172447,
+            1859880120,
+            3105244601,
+            3397983984,
+            4209231162,
+            116203150,
+            2166700138,
+            679395399,
+            1591101135,
+            1511475060,
+            3865776260,
+            3861604114,
+            2333630785,
+            578347291,
+            107805155,
+            1281990800,
+            2331362412,
+            2805566554,
+            1392433873,
+            4113871053,
+            1681686757,
+            1317522404,
+            263062625,
+            3972207482,
+            871540459,
+            858793555,
+            3378130229,
+            1638925065,
+            3644427872,
+            425845250,
+            4199381058,
+            138738749,
+            4064868817,
+            641652061,
+            3293641471,
+            2781033146,
+            2433876171,
+            958379132,
+            515825137,
+            1920938822,
+            508669000,
+            1996074650,
+            1132963176,
+            112386699,
+            4020276217,
+            3307649861,
+            712492536,
+            752257327,
+            703177072,
+            655737206,
+            1936095049,
+            2870883815,
+            750441059,
+            531193802,
+            3887354491,
+            3768893981,
+            758096438,
+            763690471,
+            1177380930,
+            836758118,
+            1370880236,
+            2406562066,
+            3117758426,
+            38974763,
+            729452259,
+            563449846,
+            2410187015,
+            1585606395,
+            4205777270,
+            2173618669,
+            3178196512,
+            1074979883,
+            4149809984,
+            3286590086,
+            2021554321,
+            4088426121,
+            3079684553,
+            1917337899,
+            2966649180,
+            2899231799,
+            1062888899,
+            1306359486,
+            876671599,
+            3348080246,
+            1542570792,
+            3517583561,
+            164390915,
+            135607212,
+            1392292837,
+            1540942523,
+            2587272281,
+            974783651,
+            3971944422,
+            1315415300,
+            1419043995,
+            3194113563,
+            495692306,
+            3087088482,
+            735847283,
+            2418041689,
+            2761711941,
+            608441639,
+            3606420410,
+            2500421680,
+            2129584375,
+            4277314193,
+            362285431,
+            3829261316,
+            3033449623,
+            2726841579,
+            2856071091,
+            1282567563,
+            1399900137,
+            1288485551,
+            1784276086,
+            3203384342,
+            2304811961,
+            4188374470,
+            2799600913,
+            1668300233,
+            3487044801,
+            345405685,
+            68861045,
+            4149051636,
+            630962370,
+            3809297774,
+            3497678965,
+            2777356018,
+            1131508456,
+            3088811640,
+            2916362619,
+            3604683426,
+            1367656029,
+            3164360959,
+            3464800203,
+            2727920289,
+            3993785877,
+            410872094,
+            933194096,
+            1088600539,
+            3511204625,
+            818519978,
+            4217773289,
+            4016704403,
+            2742865381,
+            2118058332,
+            2028824770,
+            3585206344,
+            3620279056,
+            4291530408,
+            748541778,
+            1337473025,
+            2734790168,
+            2153414969,
+            1554090190,
+            4147260811,
+            1053913480,
+            4166858558,
+            1486762641,
+            34008703,
+            2957308893,
+            3461353779,
+            3720643435,
+            476418844,
+            2092109162,
+            1388524448
+        ],
+        623,
+        0,
+        0
+    ],
+    "start_deck": [
+        "default_version:4.4\ncharacter:Millennial Pearl Seahorse@4.4\ncharacter:Fischl@3.3\ncharacter:Mona@3.3\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\n",
+        "default_version:4.4\ncharacter:Millennial Pearl Seahorse@4.4\ncharacter:Fischl@3.3\ncharacter:Mona@3.3\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\n"
+    ],
+    "match_config": {
+        "random_first_player": false,
+        "player_go_first": 0,
+        "check_deck_restriction": false,
+        "initial_hand_size": 5,
+        "initial_card_draw": 2,
+        "initial_dice_number": 16,
+        "initial_dice_reroll_times": 1,
+        "card_number": null,
+        "max_same_card_number": null,
+        "character_number": null,
+        "max_round_number": 999,
+        "max_hand_size": 10,
+        "max_dice_number": 16,
+        "max_summon_number": 4,
+        "max_support_number": 4,
+        "make_skill_prediction": false,
+        "history_level": 10,
+        "compress_history": true,
+        "recreate_mode": false,
+        "random_object_information": []
+    },
+    "command_history": [
+        [
+            "TEST 1 8 10 10 8 10 10",
+            "TEST 2 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 11",
+            "sw_card 1",
+            "TEST 1 8 10 10 8 10 10",
+            "TEST 2 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 11",
+            "choose 0",
+            "TEST 1 8 10 10 8 10 10",
+            "TEST 2 p0",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 5 p1c0 2",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 11 0 1 2 3 4",
+            "card 1 0",
+            "TEST 1 8 10 10 8 10 10",
+            "TEST 2 p0",
+            "TEST 5 p0c0 3",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 2 p1",
+            "TEST 5 p1c0 2",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 11 0 1 2 3",
+            "TEST 999 p0c0 talent status",
+            "skill 1 15 14 13",
+            "TEST 1 8 10 10 8 7 10",
+            "TEST 2 p0",
+            "TEST 5 p0c0 3",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 2 p1 2",
+            "TEST 5 p1c0 2",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 11 0 1 2 3",
+            "sw_char 1 12",
+            "TEST 1 8 10 10 8 7 10",
+            "TEST 2 p0",
+            "TEST 5 p0c0 3",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 2 p1 2",
+            "TEST 5 p1c0 2",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 11 0 1",
+            "skill 1 11 10 9",
+            "TEST 1 8 9 10 8 7 9",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0 3",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 2 p1 2 1",
+            "TEST 5 p1c0 2",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 11 0 1",
+            "sw_char 2 8",
+            "TEST 1 8 9 7 8 7 9",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0 3",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 2 p1 2 1",
+            "TEST 5 p1c0 3",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 11 0 1",
+            "skill 1 7 6 5",
+            "TEST 1 8 9 7 8 7 9",
+            "TEST 2 p0 2 1",
+            "TEST 5 p0c0 3",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 2 p1 2 1",
+            "TEST 5 p1c0 2",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 6",
+            "TEST 11 0 1",
+            "sw_char 0 4",
+            "TEST 1 8 9 7 8 7 9",
+            "TEST 2 p0 2 1",
+            "TEST 5 p0c0 3",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 2 p1 2 1",
+            "TEST 5 p1c0 2",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 6",
+            "TEST 11 0 1 2 3",
+            "end",
+            "TEST 1 7 8 6 7 6 8",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 7",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 8",
+            "TEST 11 0 1 2 3 4 5 6",
+            "skill 1 15 14 13",
+            "TEST 1 7 8 6 5 5 7",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 7",
+            "TEST 2 p1 1 2",
+            "TEST 5 p1c0 1 2",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 7",
+            "TEST 11 0 1 2 3 4 5 6",
+            "skill 2 12 11 10",
+            "TEST 1 7 8 6 5 5 7",
+            "TEST 2 p0 1 2",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 7",
+            "TEST 2 p1 1 2",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 7",
+            "TEST 11 0 1 2 3 4 5 6",
+            "sw_char 1 9",
+            "TEST 1 7 7 6 5 5 7",
+            "TEST 2 p0 1 2",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 7",
+            "TEST 2 p1 1 2 1",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 7",
+            "TEST 11 0 1 4 5",
+            "sw_char 2 8",
+            "TEST 1 7 7 6 5 6 8",
+            "TEST 2 p0 1 2",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 7",
+            "TEST 2 p1 1 2 1",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1 1",
+            "TEST 5 p1c2 1",
+            "TEST 6 p1 5",
+            "TEST 11 0 1 4 5",
+            "end",
+            "TEST 1 6 6 2 5 6 6",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 9",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 7",
+            "TEST 11 0 1 4 5 7 8",
+            "sw_char 0 15",
+            "TEST 1 6 6 2 5 6 6",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 9",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 7",
+            "TEST 11 0 1 2 3 4 5 6 7 8",
+            "end",
+            "TEST 1 4 6 2 5 6 5",
+            "TEST 2 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 10",
+            "TEST 2 p1",
+            "TEST 5 p1c0 2",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 9",
+            "TEST 11 0 1 2 3 4 5 6 7 8 9",
+            "card 4 2 15",
+            "TEST 1 4 6 2 5 6 5",
+            "TEST 2 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1 1",
+            "TEST 6 p0 9",
+            "TEST 2 p1",
+            "TEST 5 p1c0 2",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 9",
+            "TEST 11 0 1 2 3 4 5 6 7 8",
+            "sw_char 2 14",
+            "TEST 1 4 6 2 5 6 5",
+            "TEST 2 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1",
+            "TEST 6 p0 9",
+            "TEST 2 p1",
+            "TEST 5 p1c0 4 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 7",
+            "TEST 11 0 1 4 6 7 8",
+            "skill 1 13 12 11",
+            "TEST 1 4 6 2 5 5 4",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1",
+            "TEST 6 p0 9",
+            "TEST 2 p1",
+            "TEST 5 p1c0 3 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 8",
+            "TEST 11 0 1 4 6 7 8",
+            "skill 0 10 9 8",
+            "TEST 1 4 6 2 5 5 4",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1",
+            "TEST 6 p0 9",
+            "TEST 2 p1",
+            "TEST 5 p1c0 2 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 8",
+            "TEST 11 0 1 4 6 7 8",
+            "end",
+            "TEST 1 4 6 0 5 5 4",
+            "TEST 2 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 10",
+            "TEST 2 p1",
+            "TEST 5 p1c0 2 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 9",
+            "TEST 11",
+            "choose 1",
+            "TEST 1 4 6 0 5 5 4",
+            "TEST 2 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 10",
+            "TEST 2 p1",
+            "TEST 5 p1c0 2 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 9",
+            "TEST 11 0 1 4 6 7 8 9",
+            "skill 1 15 14 13",
+            "TEST 1 3 4 0 5 4 3",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 10",
+            "TEST 2 p1 2",
+            "TEST 5 p1c0 2 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 9",
+            "TEST 11 0 1 4 6 7 8 9",
+            "end"
+        ],
+        [
+            "TEST 1 8 10 10 8 10 10",
+            "TEST 2 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 11",
+            "sw_card 2 3",
+            "TEST 1 8 10 10 8 10 10",
+            "TEST 2 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 11",
+            "choose 1",
+            "TEST 1 8 10 10 8 7 10",
+            "TEST 2 p0",
+            "TEST 5 p0c0 4",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 2 p1",
+            "TEST 5 p1c0 2",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 11 2 3 4",
+            "skill 1 15 14 13",
+            "TEST 1 8 10 10 8 7 10",
+            "TEST 2 p0",
+            "TEST 5 p0c0 3",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 2 p1 2",
+            "TEST 5 p1c0 2",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 11 2 3 4",
+            "sw_char 2 12",
+            "TEST 1 8 10 10 8 7 9",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0 3",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 2 p1 2",
+            "TEST 5 p1c0 2",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 11 2 3 4",
+            "skill 1 11 10 9",
+            "TEST 1 8 9 10 8 7 9",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0 3",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 2 p1 2 1",
+            "TEST 5 p1c0 2",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 11 2 3 4",
+            "sw_char 0 8",
+            "TEST 1 8 9 10 8 7 9",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0 3",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 2 p1 2 1",
+            "TEST 5 p1c0 2",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 11 0 1 2 3 4",
+            "skill 1 7 6 5",
+            "TEST 1 8 9 7 8 7 9",
+            "TEST 2 p0 2 1",
+            "TEST 5 p0c0 3",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 2 p1 2 1",
+            "TEST 5 p1c0 2",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 11 0 1 2 3 4",
+            "end",
+            "TEST 1 8 8 6 7 6 8",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 3",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 7",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 8",
+            "TEST 11 0 1 2 3 4 5 6 7",
+            "skill 0 15 14 13",
+            "TEST 1 7 8 6 4 5 7",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 3",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 7",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 8",
+            "TEST 11 0 1 2 3 4 5 6 7",
+            "card 2 0",
+            "TEST 1 7 8 6 5 5 7",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 3",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 7",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 7",
+            "TEST 11 0 1 2 3 4 5 6",
+            "skill 2 12 11 10",
+            "TEST 1 7 8 6 5 5 7",
+            "TEST 2 p0 1 2",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 7",
+            "TEST 2 p1 1 2",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 7",
+            "TEST 11 0 1 2 3 4 5 6",
+            "sw_char 2 9",
+            "TEST 1 7 8 6 5 5 7",
+            "TEST 2 p0 1 2",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 7",
+            "TEST 2 p1 1 2",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 7",
+            "TEST 11 2 3 4 5 6",
+            "skill 1 8 7 6",
+            "TEST 1 7 7 6 5 5 7",
+            "TEST 2 p0 1 2",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 7",
+            "TEST 2 p1 1 2 1",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 7",
+            "TEST 11 2 3 4 5 6",
+            "card 5 0",
+            "TEST 1 7 7 6 5 6 7",
+            "TEST 2 p0 1 2",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 7",
+            "TEST 2 p1 1 2 1",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1 1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 6",
+            "TEST 11 2 3 4 5",
+            "card 5 0",
+            "TEST 1 7 7 6 5 6 8",
+            "TEST 2 p0 1 2",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 7",
+            "TEST 2 p1 1 2 1",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1 1",
+            "TEST 5 p1c2 1",
+            "TEST 6 p1 5",
+            "TEST 11",
+            "end",
+            "TEST 1 6 6 2 5 6 6",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 9",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 7",
+            "TEST 11 2 3 4 5 6",
+            "end",
+            "TEST 1 6 6 2 5 6 5",
+            "TEST 2 p0",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 10",
+            "TEST 2 p1",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 9",
+            "TEST 11 2 3 4 5 6 7",
+            "sw_char 0 15",
+            "TEST 1 6 6 2 5 6 5",
+            "TEST 2 p0",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 10",
+            "TEST 2 p1",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 9",
+            "TEST 11 0 1 2 3 4 5 6 7 8",
+            "skill 1 14 13 12",
+            "TEST 1 4 6 2 5 6 5",
+            "TEST 2 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1 1",
+            "TEST 6 p0 9",
+            "TEST 2 p1",
+            "TEST 5 p1c0 2",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 9",
+            "TEST 11 0 1 2 3 4 5 6 7 8",
+            "card 3 0 11",
+            "TEST 1 4 6 2 5 6 5",
+            "TEST 2 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1 1",
+            "TEST 6 p0 9",
+            "TEST 2 p1",
+            "TEST 5 p1c0 2 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 8",
+            "TEST 11 0 1 2 3 4 5 6 7",
+            "card 1 0",
+            "TEST 1 4 6 2 5 6 5",
+            "TEST 2 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1 1",
+            "TEST 6 p0 9",
+            "TEST 2 p1",
+            "TEST 5 p1c0 3 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 7",
+            "TEST 11 0 1 2 3 4 5 6",
+            "skill 1 10 9 8",
+            "TEST 1 4 6 2 5 5 4",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1",
+            "TEST 6 p0 9",
+            "TEST 2 p1",
+            "TEST 5 p1c0 3 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 7",
+            "TEST 11 0 1 2 3 4 5 6",
+            "end",
+            "TEST 1 4 6 2 5 5 4",
+            "TEST 2 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 10",
+            "TEST 2 p1",
+            "TEST 5 p1c0 2",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 10",
+            "TEST 11 0 1 2 3 4 5 6 7 8 9",
+            "card 3 0 15",
+            "TEST 1 4 6 2 5 5 4",
+            "TEST 2 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 10",
+            "TEST 2 p1",
+            "TEST 5 p1c0 2 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 9",
+            "TEST 11 0 1 2 3 4 5 6 7 8",
+            "skill 0 14 13 12",
+            "TEST 1 4 6 0 5 4 3",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 10",
+            "TEST 2 p1",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 9",
+            "TEST 11 0 1 2 3 4 5 6 7 8",
+            "skill 2 11 10 9"
+        ]
+    ],
+    "command_history_raw": [
+        [
+            [
+                2,
+                "sw_card 1",
+                0
+            ],
+            [
+                4,
+                "choose 0",
+                2
+            ],
+            [
+                7,
+                "card 1 0",
+                4
+            ],
+            [
+                7,
+                "TEST 999 p0c0 talent status",
+                4
+            ],
+            [
+                10,
+                "skill 1 15 14 13",
+                5
+            ],
+            [
+                16,
+                "sw_char 1 12",
+                7
+            ],
+            [
+                20,
+                "skill 1 11 10 9",
+                9
+            ],
+            [
+                26,
+                "sw_char 2 8",
+                11
+            ],
+            [
+                33,
+                "skill 1 7 6 5",
+                14
+            ],
+            [
+                38,
+                "sw_char 0 4",
+                16
+            ],
+            [
+                40,
+                "end",
+                17
+            ],
+            [
+                54,
+                "skill 1 15 14 13",
+                19
+            ],
+            [
+                63,
+                "skill 2 12 11 10",
+                22
+            ],
+            [
+                68,
+                "sw_char 1 9",
+                24
+            ],
+            [
+                73,
+                "sw_char 2 8",
+                26
+            ],
+            [
+                83,
+                "end",
+                30
+            ],
+            [
+                95,
+                "sw_char 0 15",
+                32
+            ],
+            [
+                97,
+                "end",
+                33
+            ],
+            [
+                110,
+                "card 4 2 15",
+                36
+            ],
+            [
+                112,
+                "sw_char 2 14",
+                37
+            ],
+            [
+                122,
+                "skill 1 13 12 11",
+                41
+            ],
+            [
+                127,
+                "skill 0 10 9 8",
+                43
+            ],
+            [
+                130,
+                "end",
+                44
+            ],
+            [
+                142,
+                "choose 1",
+                47
+            ],
+            [
+                143,
+                "skill 1 15 14 13",
+                48
+            ],
+            [
+                149,
+                "end",
+                50
+            ]
+        ],
+        [
+            [
+                2,
+                "sw_card 2 3",
+                1
+            ],
+            [
+                4,
+                "choose 1",
+                3
+            ],
+            [
+                13,
+                "skill 1 15 14 13",
+                6
+            ],
+            [
+                18,
+                "sw_char 2 12",
+                8
+            ],
+            [
+                23,
+                "skill 1 11 10 9",
+                10
+            ],
+            [
+                28,
+                "sw_char 0 8",
+                12
+            ],
+            [
+                30,
+                "skill 1 7 6 5",
+                13
+            ],
+            [
+                36,
+                "end",
+                15
+            ],
+            [
+                51,
+                "skill 0 15 14 13",
+                18
+            ],
+            [
+                57,
+                "card 2 0",
+                20
+            ],
+            [
+                60,
+                "skill 2 12 11 10",
+                21
+            ],
+            [
+                66,
+                "sw_char 2 9",
+                23
+            ],
+            [
+                70,
+                "skill 1 8 7 6",
+                25
+            ],
+            [
+                75,
+                "card 5 0",
+                27
+            ],
+            [
+                78,
+                "card 5 0",
+                28
+            ],
+            [
+                81,
+                "end",
+                29
+            ],
+            [
+                93,
+                "end",
+                31
+            ],
+            [
+                105,
+                "sw_char 0 15",
+                34
+            ],
+            [
+                107,
+                "skill 1 14 13 12",
+                35
+            ],
+            [
+                114,
+                "card 3 0 11",
+                38
+            ],
+            [
+                116,
+                "card 1 0",
+                39
+            ],
+            [
+                119,
+                "skill 1 10 9 8",
+                40
+            ],
+            [
+                125,
+                "end",
+                42
+            ],
+            [
+                137,
+                "card 3 0 15",
+                45
+            ],
+            [
+                139,
+                "skill 0 14 13 12",
+                46
+            ],
+            [
+                146,
+                "skill 2 11 10 9",
+                49
+            ]
+        ]
+    ]
+}
\ No newline at end of file
diff --git a/tests/server/patch/v44/jsons/millennial_pearl_seahorse2.json b/tests/server/patch/v44/jsons/millennial_pearl_seahorse2.json
new file mode 100644
index 00000000..d8613dfc
--- /dev/null
+++ b/tests/server/patch/v44/jsons/millennial_pearl_seahorse2.json
@@ -0,0 +1,867 @@
+{
+    "match_random_state": [
+        "MT19937",
+        [
+            2147483648,
+            852258933,
+            3037751817,
+            2843736348,
+            2346345909,
+            241038820,
+            3630833971,
+            322381140,
+            1250305161,
+            1459257731,
+            3694471596,
+            515911843,
+            3937938455,
+            2827679987,
+            3950882980,
+            3581943267,
+            4151002148,
+            1618076744,
+            3274872619,
+            2159583707,
+            1559018499,
+            1583145829,
+            1179320338,
+            3113356017,
+            1931467408,
+            2410284883,
+            753436273,
+            437428593,
+            510572609,
+            2706055346,
+            879811753,
+            825585750,
+            2401349358,
+            2490929089,
+            3977100308,
+            4231974237,
+            3442070342,
+            2600699322,
+            3596477700,
+            3408240710,
+            3752939454,
+            3842241914,
+            2634979991,
+            739520375,
+            3739104881,
+            2527561182,
+            1297315978,
+            1316945693,
+            1727810483,
+            3695100167,
+            1453832382,
+            979363388,
+            3076017079,
+            3732405838,
+            1444648514,
+            4151023880,
+            2205533946,
+            4261855231,
+            4267702982,
+            2647124900,
+            1484461652,
+            1998843354,
+            4035414622,
+            4156165081,
+            322695412,
+            2240084797,
+            218965524,
+            2620616784,
+            2355246093,
+            353075890,
+            807460217,
+            2080397923,
+            2949113800,
+            3746761770,
+            4204485378,
+            2925858822,
+            940465313,
+            2978225661,
+            1552046939,
+            3792670316,
+            4122385657,
+            3233513602,
+            1380874839,
+            984796113,
+            886794804,
+            4153798316,
+            717328536,
+            469185684,
+            3765962743,
+            4135056014,
+            3479073223,
+            3023129426,
+            4222684062,
+            3850877054,
+            224467384,
+            3087354214,
+            1680195562,
+            2193347842,
+            2684173028,
+            1880093036,
+            3229242389,
+            3049410427,
+            1279447835,
+            332094632,
+            1579758630,
+            3710374238,
+            2337675471,
+            115759493,
+            4211910051,
+            3915073058,
+            1108976576,
+            2071829022,
+            3748361252,
+            3666084797,
+            3192128605,
+            604670057,
+            188878253,
+            403907626,
+            3217757074,
+            1892194987,
+            378411265,
+            573022174,
+            3720006947,
+            254195013,
+            1584935511,
+            3553011007,
+            1370455926,
+            1537144829,
+            2822387189,
+            2441227067,
+            1172427512,
+            1810388875,
+            597276150,
+            3442654859,
+            1319639025,
+            1278428752,
+            3109211997,
+            3125310769,
+            1778730908,
+            2179046274,
+            529756476,
+            3028614397,
+            390243483,
+            2580809143,
+            2253747482,
+            645716549,
+            4069787277,
+            3392915288,
+            1804927866,
+            2998699909,
+            3486738826,
+            2249333105,
+            2840926426,
+            832811354,
+            2642376678,
+            2647298729,
+            2972210951,
+            3980432569,
+            2414014267,
+            3379616787,
+            827881623,
+            2006639651,
+            2739098202,
+            4142232454,
+            1674001832,
+            387416494,
+            1242487127,
+            3900036886,
+            1084620969,
+            4223529924,
+            2384308612,
+            2101645863,
+            1707720038,
+            3225537336,
+            1571082365,
+            4196493122,
+            2164372558,
+            3866850114,
+            2805868839,
+            675209309,
+            4179066360,
+            3625074731,
+            3089956980,
+            3293027876,
+            3902965037,
+            1224438018,
+            1224895899,
+            2575389666,
+            3357949449,
+            2384469209,
+            3700336215,
+            338019398,
+            3289126851,
+            2769703855,
+            390722640,
+            2704007496,
+            2883292084,
+            1965587089,
+            1025300549,
+            619699852,
+            1043025444,
+            3803785664,
+            922193774,
+            151167841,
+            2126109206,
+            3168147631,
+            2865122591,
+            3327041069,
+            3373701209,
+            9353399,
+            473750565,
+            3028380130,
+            1467951504,
+            4190922997,
+            589795710,
+            942553933,
+            937635948,
+            298315070,
+            415821393,
+            4041939848,
+            372373022,
+            3689582099,
+            519737891,
+            4233378103,
+            1157474098,
+            138790908,
+            770838763,
+            430623945,
+            814484707,
+            2853558444,
+            3213795543,
+            3845643860,
+            2512330672,
+            1336888278,
+            572322181,
+            1282342669,
+            920514674,
+            2038291972,
+            3149365870,
+            4102830575,
+            3549173955,
+            3684993693,
+            1356278478,
+            1775628726,
+            213156443,
+            2298969406,
+            2717355438,
+            1572856796,
+            1513647543,
+            2132855513,
+            1986873076,
+            3528225839,
+            308723273,
+            292601737,
+            1277750001,
+            1679680638,
+            2785246156,
+            3878540692,
+            471870265,
+            668186544,
+            2580697021,
+            2706131701,
+            1695560777,
+            2843565854,
+            332232130,
+            1424790421,
+            2379530317,
+            4168717850,
+            974529721,
+            2592398077,
+            1897652930,
+            1672473548,
+            1312396662,
+            1869749067,
+            2084827226,
+            73229630,
+            1974021446,
+            3205173810,
+            874883708,
+            2176709342,
+            2290870532,
+            2232221173,
+            11665963,
+            3617533180,
+            2066756895,
+            869614124,
+            248729098,
+            3168320955,
+            2513792026,
+            1546475412,
+            3754194653,
+            1731401296,
+            669770116,
+            1064448459,
+            2396128651,
+            1085107150,
+            2799824622,
+            1789749972,
+            2034050724,
+            2306132503,
+            2368269703,
+            338106206,
+            3551116912,
+            2236740658,
+            3994225500,
+            1393516086,
+            814315152,
+            4115786034,
+            1931073526,
+            3698510923,
+            3264469706,
+            1200777713,
+            3605887842,
+            537661941,
+            99637609,
+            739482224,
+            4131737706,
+            2971745240,
+            1636938568,
+            461809637,
+            1293154012,
+            2051347708,
+            3415492749,
+            309673494,
+            1718449666,
+            895136483,
+            459169287,
+            3758491237,
+            1484777584,
+            2985652876,
+            3690529376,
+            2814466466,
+            3761286303,
+            2906796347,
+            1770927703,
+            66989981,
+            1227151467,
+            740432923,
+            1742669766,
+            4108895627,
+            1129792952,
+            4217696861,
+            1581599772,
+            2822850338,
+            1371889226,
+            2928171633,
+            337314434,
+            1287812001,
+            2566385880,
+            1016557934,
+            1521694314,
+            1446569819,
+            494280377,
+            3605614928,
+            1750373709,
+            1917104935,
+            1005209477,
+            3290246820,
+            2435278462,
+            2392228341,
+            1860566250,
+            3604753061,
+            1545385861,
+            179541456,
+            1095359,
+            2235243074,
+            3565546844,
+            1848692563,
+            3296532274,
+            932183734,
+            2678033798,
+            2819310696,
+            372402397,
+            2849752546,
+            3300638946,
+            979341372,
+            2027134812,
+            3377292468,
+            776160986,
+            876596828,
+            3411844979,
+            3807986688,
+            2828349004,
+            2667246233,
+            2887674321,
+            3417530634,
+            4192745201,
+            1514743338,
+            1486186234,
+            3599480114,
+            2220700932,
+            877264426,
+            3683620224,
+            1791677875,
+            1576589409,
+            3371864729,
+            239577320,
+            664674279,
+            97455638,
+            671315040,
+            4098637571,
+            1233610174,
+            2528631470,
+            4181767203,
+            4188289355,
+            201010882,
+            2613994903,
+            3722085049,
+            464425505,
+            3872757292,
+            1251239949,
+            155862569,
+            1690852071,
+            958025955,
+            3882516403,
+            11720145,
+            1377457109,
+            611510219,
+            4258313417,
+            2145041081,
+            230603729,
+            108822725,
+            2878554314,
+            1764726348,
+            2813464509,
+            2430757019,
+            1893470021,
+            2345837745,
+            3504885831,
+            471263087,
+            3448186974,
+            91510807,
+            1692101012,
+            870758111,
+            279967414,
+            2975906051,
+            831331682,
+            714973860,
+            895403271,
+            1946906216,
+            2175407141,
+            294729832,
+            663378707,
+            4040948408,
+            371079217,
+            3849217943,
+            3167620631,
+            2106715634,
+            4270851423,
+            4180090782,
+            2160180184,
+            3446426895,
+            3057856044,
+            1623629695,
+            1938845385,
+            1992740005,
+            2620458046,
+            602642578,
+            168172447,
+            1859880120,
+            3105244601,
+            3397983984,
+            4209231162,
+            116203150,
+            2166700138,
+            679395399,
+            1591101135,
+            1511475060,
+            3865776260,
+            3861604114,
+            2333630785,
+            578347291,
+            107805155,
+            1281990800,
+            2331362412,
+            2805566554,
+            1392433873,
+            4113871053,
+            1681686757,
+            1317522404,
+            263062625,
+            3972207482,
+            871540459,
+            858793555,
+            3378130229,
+            1638925065,
+            3644427872,
+            425845250,
+            4199381058,
+            138738749,
+            4064868817,
+            641652061,
+            3293641471,
+            2781033146,
+            2433876171,
+            958379132,
+            515825137,
+            1920938822,
+            508669000,
+            1996074650,
+            1132963176,
+            112386699,
+            4020276217,
+            3307649861,
+            712492536,
+            752257327,
+            703177072,
+            655737206,
+            1936095049,
+            2870883815,
+            750441059,
+            531193802,
+            3887354491,
+            3768893981,
+            758096438,
+            763690471,
+            1177380930,
+            836758118,
+            1370880236,
+            2406562066,
+            3117758426,
+            38974763,
+            729452259,
+            563449846,
+            2410187015,
+            1585606395,
+            4205777270,
+            2173618669,
+            3178196512,
+            1074979883,
+            4149809984,
+            3286590086,
+            2021554321,
+            4088426121,
+            3079684553,
+            1917337899,
+            2966649180,
+            2899231799,
+            1062888899,
+            1306359486,
+            876671599,
+            3348080246,
+            1542570792,
+            3517583561,
+            164390915,
+            135607212,
+            1392292837,
+            1540942523,
+            2587272281,
+            974783651,
+            3971944422,
+            1315415300,
+            1419043995,
+            3194113563,
+            495692306,
+            3087088482,
+            735847283,
+            2418041689,
+            2761711941,
+            608441639,
+            3606420410,
+            2500421680,
+            2129584375,
+            4277314193,
+            362285431,
+            3829261316,
+            3033449623,
+            2726841579,
+            2856071091,
+            1282567563,
+            1399900137,
+            1288485551,
+            1784276086,
+            3203384342,
+            2304811961,
+            4188374470,
+            2799600913,
+            1668300233,
+            3487044801,
+            345405685,
+            68861045,
+            4149051636,
+            630962370,
+            3809297774,
+            3497678965,
+            2777356018,
+            1131508456,
+            3088811640,
+            2916362619,
+            3604683426,
+            1367656029,
+            3164360959,
+            3464800203,
+            2727920289,
+            3993785877,
+            410872094,
+            933194096,
+            1088600539,
+            3511204625,
+            818519978,
+            4217773289,
+            4016704403,
+            2742865381,
+            2118058332,
+            2028824770,
+            3585206344,
+            3620279056,
+            4291530408,
+            748541778,
+            1337473025,
+            2734790168,
+            2153414969,
+            1554090190,
+            4147260811,
+            1053913480,
+            4166858558,
+            1486762641,
+            34008703,
+            2957308893,
+            3461353779,
+            3720643435,
+            476418844,
+            2092109162,
+            1388524448
+        ],
+        623,
+        0,
+        0
+    ],
+    "start_deck": [
+        "default_version:4.4\ncharacter:Millennial Pearl Seahorse@4.4\ncharacter:Fischl@3.3\ncharacter:Mona@3.3\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\n",
+        "default_version:4.4\ncharacter:Millennial Pearl Seahorse@4.4\ncharacter:Fischl@3.3\ncharacter:Mona@3.3\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nPearl Solidification@4.4\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\nLotus Flower Crisp@3.3\n"
+    ],
+    "command_history": [
+        [
+            "TEST 1 8 10 10 8 10 10",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "sw_card",
+            "TEST 1 8 10 10 8 10 10",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "choose 0",
+            "TEST 1 8 10 10 8 10 10",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p1c0 2",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "skill 0 15 14 13",
+            "TEST 1 7 10 10 7 10 10",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "skill 1 12 11 10",
+            "TEST 1 5 10 10 6 10 10",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "skill 2 9 8 7",
+            "TEST 1 5 10 10 5 10 10",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p1c0 1 2",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "end"
+        ],
+        [
+            "TEST 1 8 10 10 8 10 10",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "sw_card",
+            "TEST 1 8 10 10 8 10 10",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "choose 0",
+            "TEST 1 8 10 10 7 10 10",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "skill 0 15 14 13",
+            "TEST 1 7 10 10 5 10 10",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "card 3 0",
+            "TEST 1 7 10 10 6 10 10",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "skill 1 12 11 10",
+            "TEST 1 5 10 10 5 10 10",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p1c0 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "card 1 0",
+            "TEST 1 5 10 10 5 10 10",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "card 0 0",
+            "TEST 1 5 10 10 5 10 10",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p1c0 1 2",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "skill 2 9 8 7",
+            "TEST 1 5 10 10 5 10 10",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p1c0 1 2",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "end"
+        ]
+    ],
+    "match_config": {
+        "random_first_player": false,
+        "player_go_first": 0,
+        "check_deck_restriction": false,
+        "initial_hand_size": 5,
+        "initial_card_draw": 2,
+        "initial_dice_number": 16,
+        "initial_dice_reroll_times": 1,
+        "card_number": null,
+        "max_same_card_number": null,
+        "character_number": null,
+        "max_round_number": 999,
+        "max_hand_size": 10,
+        "max_dice_number": 16,
+        "max_summon_number": 4,
+        "max_support_number": 4,
+        "make_skill_prediction": false,
+        "history_level": 10,
+        "compress_history": true,
+        "recreate_mode": false,
+        "random_object_information": []
+    },
+    "command_history_raw": [
+        [
+            [
+                1,
+                "sw_card",
+                0
+            ],
+            [
+                3,
+                "choose 0",
+                2
+            ],
+            [
+                6,
+                "skill 0 15 14 13",
+                4
+            ],
+            [
+                12,
+                "skill 1 12 11 10",
+                6
+            ],
+            [
+                21,
+                "skill 2 9 8 7",
+                9
+            ],
+            [
+                33,
+                "end",
+                13
+            ]
+        ],
+        [
+            [
+                1,
+                "sw_card",
+                1
+            ],
+            [
+                3,
+                "choose 0",
+                3
+            ],
+            [
+                9,
+                "skill 0 15 14 13",
+                5
+            ],
+            [
+                15,
+                "card 3 0",
+                7
+            ],
+            [
+                18,
+                "skill 1 12 11 10",
+                8
+            ],
+            [
+                24,
+                "card 1 0",
+                10
+            ],
+            [
+                27,
+                "card 0 0",
+                11
+            ],
+            [
+                30,
+                "skill 2 9 8 7",
+                12
+            ],
+            [
+                36,
+                "end",
+                14
+            ]
+        ]
+    ]
+}
\ No newline at end of file
diff --git a/tests/server/patch/v44/jsons/sapwood_machine_veteran.json b/tests/server/patch/v44/jsons/sapwood_machine_veteran.json
new file mode 100644
index 00000000..95861593
--- /dev/null
+++ b/tests/server/patch/v44/jsons/sapwood_machine_veteran.json
@@ -0,0 +1,1914 @@
+{
+    "match_random_state": [
+        "MT19937",
+        [
+            2147483648,
+            852258933,
+            3037751817,
+            2843736348,
+            2346345909,
+            241038820,
+            3630833971,
+            322381140,
+            1250305161,
+            1459257731,
+            3694471596,
+            515911843,
+            3937938455,
+            2827679987,
+            3950882980,
+            3581943267,
+            4151002148,
+            1618076744,
+            3274872619,
+            2159583707,
+            1559018499,
+            1583145829,
+            1179320338,
+            3113356017,
+            1931467408,
+            2410284883,
+            753436273,
+            437428593,
+            510572609,
+            2706055346,
+            879811753,
+            825585750,
+            2401349358,
+            2490929089,
+            3977100308,
+            4231974237,
+            3442070342,
+            2600699322,
+            3596477700,
+            3408240710,
+            3752939454,
+            3842241914,
+            2634979991,
+            739520375,
+            3739104881,
+            2527561182,
+            1297315978,
+            1316945693,
+            1727810483,
+            3695100167,
+            1453832382,
+            979363388,
+            3076017079,
+            3732405838,
+            1444648514,
+            4151023880,
+            2205533946,
+            4261855231,
+            4267702982,
+            2647124900,
+            1484461652,
+            1998843354,
+            4035414622,
+            4156165081,
+            322695412,
+            2240084797,
+            218965524,
+            2620616784,
+            2355246093,
+            353075890,
+            807460217,
+            2080397923,
+            2949113800,
+            3746761770,
+            4204485378,
+            2925858822,
+            940465313,
+            2978225661,
+            1552046939,
+            3792670316,
+            4122385657,
+            3233513602,
+            1380874839,
+            984796113,
+            886794804,
+            4153798316,
+            717328536,
+            469185684,
+            3765962743,
+            4135056014,
+            3479073223,
+            3023129426,
+            4222684062,
+            3850877054,
+            224467384,
+            3087354214,
+            1680195562,
+            2193347842,
+            2684173028,
+            1880093036,
+            3229242389,
+            3049410427,
+            1279447835,
+            332094632,
+            1579758630,
+            3710374238,
+            2337675471,
+            115759493,
+            4211910051,
+            3915073058,
+            1108976576,
+            2071829022,
+            3748361252,
+            3666084797,
+            3192128605,
+            604670057,
+            188878253,
+            403907626,
+            3217757074,
+            1892194987,
+            378411265,
+            573022174,
+            3720006947,
+            254195013,
+            1584935511,
+            3553011007,
+            1370455926,
+            1537144829,
+            2822387189,
+            2441227067,
+            1172427512,
+            1810388875,
+            597276150,
+            3442654859,
+            1319639025,
+            1278428752,
+            3109211997,
+            3125310769,
+            1778730908,
+            2179046274,
+            529756476,
+            3028614397,
+            390243483,
+            2580809143,
+            2253747482,
+            645716549,
+            4069787277,
+            3392915288,
+            1804927866,
+            2998699909,
+            3486738826,
+            2249333105,
+            2840926426,
+            832811354,
+            2642376678,
+            2647298729,
+            2972210951,
+            3980432569,
+            2414014267,
+            3379616787,
+            827881623,
+            2006639651,
+            2739098202,
+            4142232454,
+            1674001832,
+            387416494,
+            1242487127,
+            3900036886,
+            1084620969,
+            4223529924,
+            2384308612,
+            2101645863,
+            1707720038,
+            3225537336,
+            1571082365,
+            4196493122,
+            2164372558,
+            3866850114,
+            2805868839,
+            675209309,
+            4179066360,
+            3625074731,
+            3089956980,
+            3293027876,
+            3902965037,
+            1224438018,
+            1224895899,
+            2575389666,
+            3357949449,
+            2384469209,
+            3700336215,
+            338019398,
+            3289126851,
+            2769703855,
+            390722640,
+            2704007496,
+            2883292084,
+            1965587089,
+            1025300549,
+            619699852,
+            1043025444,
+            3803785664,
+            922193774,
+            151167841,
+            2126109206,
+            3168147631,
+            2865122591,
+            3327041069,
+            3373701209,
+            9353399,
+            473750565,
+            3028380130,
+            1467951504,
+            4190922997,
+            589795710,
+            942553933,
+            937635948,
+            298315070,
+            415821393,
+            4041939848,
+            372373022,
+            3689582099,
+            519737891,
+            4233378103,
+            1157474098,
+            138790908,
+            770838763,
+            430623945,
+            814484707,
+            2853558444,
+            3213795543,
+            3845643860,
+            2512330672,
+            1336888278,
+            572322181,
+            1282342669,
+            920514674,
+            2038291972,
+            3149365870,
+            4102830575,
+            3549173955,
+            3684993693,
+            1356278478,
+            1775628726,
+            213156443,
+            2298969406,
+            2717355438,
+            1572856796,
+            1513647543,
+            2132855513,
+            1986873076,
+            3528225839,
+            308723273,
+            292601737,
+            1277750001,
+            1679680638,
+            2785246156,
+            3878540692,
+            471870265,
+            668186544,
+            2580697021,
+            2706131701,
+            1695560777,
+            2843565854,
+            332232130,
+            1424790421,
+            2379530317,
+            4168717850,
+            974529721,
+            2592398077,
+            1897652930,
+            1672473548,
+            1312396662,
+            1869749067,
+            2084827226,
+            73229630,
+            1974021446,
+            3205173810,
+            874883708,
+            2176709342,
+            2290870532,
+            2232221173,
+            11665963,
+            3617533180,
+            2066756895,
+            869614124,
+            248729098,
+            3168320955,
+            2513792026,
+            1546475412,
+            3754194653,
+            1731401296,
+            669770116,
+            1064448459,
+            2396128651,
+            1085107150,
+            2799824622,
+            1789749972,
+            2034050724,
+            2306132503,
+            2368269703,
+            338106206,
+            3551116912,
+            2236740658,
+            3994225500,
+            1393516086,
+            814315152,
+            4115786034,
+            1931073526,
+            3698510923,
+            3264469706,
+            1200777713,
+            3605887842,
+            537661941,
+            99637609,
+            739482224,
+            4131737706,
+            2971745240,
+            1636938568,
+            461809637,
+            1293154012,
+            2051347708,
+            3415492749,
+            309673494,
+            1718449666,
+            895136483,
+            459169287,
+            3758491237,
+            1484777584,
+            2985652876,
+            3690529376,
+            2814466466,
+            3761286303,
+            2906796347,
+            1770927703,
+            66989981,
+            1227151467,
+            740432923,
+            1742669766,
+            4108895627,
+            1129792952,
+            4217696861,
+            1581599772,
+            2822850338,
+            1371889226,
+            2928171633,
+            337314434,
+            1287812001,
+            2566385880,
+            1016557934,
+            1521694314,
+            1446569819,
+            494280377,
+            3605614928,
+            1750373709,
+            1917104935,
+            1005209477,
+            3290246820,
+            2435278462,
+            2392228341,
+            1860566250,
+            3604753061,
+            1545385861,
+            179541456,
+            1095359,
+            2235243074,
+            3565546844,
+            1848692563,
+            3296532274,
+            932183734,
+            2678033798,
+            2819310696,
+            372402397,
+            2849752546,
+            3300638946,
+            979341372,
+            2027134812,
+            3377292468,
+            776160986,
+            876596828,
+            3411844979,
+            3807986688,
+            2828349004,
+            2667246233,
+            2887674321,
+            3417530634,
+            4192745201,
+            1514743338,
+            1486186234,
+            3599480114,
+            2220700932,
+            877264426,
+            3683620224,
+            1791677875,
+            1576589409,
+            3371864729,
+            239577320,
+            664674279,
+            97455638,
+            671315040,
+            4098637571,
+            1233610174,
+            2528631470,
+            4181767203,
+            4188289355,
+            201010882,
+            2613994903,
+            3722085049,
+            464425505,
+            3872757292,
+            1251239949,
+            155862569,
+            1690852071,
+            958025955,
+            3882516403,
+            11720145,
+            1377457109,
+            611510219,
+            4258313417,
+            2145041081,
+            230603729,
+            108822725,
+            2878554314,
+            1764726348,
+            2813464509,
+            2430757019,
+            1893470021,
+            2345837745,
+            3504885831,
+            471263087,
+            3448186974,
+            91510807,
+            1692101012,
+            870758111,
+            279967414,
+            2975906051,
+            831331682,
+            714973860,
+            895403271,
+            1946906216,
+            2175407141,
+            294729832,
+            663378707,
+            4040948408,
+            371079217,
+            3849217943,
+            3167620631,
+            2106715634,
+            4270851423,
+            4180090782,
+            2160180184,
+            3446426895,
+            3057856044,
+            1623629695,
+            1938845385,
+            1992740005,
+            2620458046,
+            602642578,
+            168172447,
+            1859880120,
+            3105244601,
+            3397983984,
+            4209231162,
+            116203150,
+            2166700138,
+            679395399,
+            1591101135,
+            1511475060,
+            3865776260,
+            3861604114,
+            2333630785,
+            578347291,
+            107805155,
+            1281990800,
+            2331362412,
+            2805566554,
+            1392433873,
+            4113871053,
+            1681686757,
+            1317522404,
+            263062625,
+            3972207482,
+            871540459,
+            858793555,
+            3378130229,
+            1638925065,
+            3644427872,
+            425845250,
+            4199381058,
+            138738749,
+            4064868817,
+            641652061,
+            3293641471,
+            2781033146,
+            2433876171,
+            958379132,
+            515825137,
+            1920938822,
+            508669000,
+            1996074650,
+            1132963176,
+            112386699,
+            4020276217,
+            3307649861,
+            712492536,
+            752257327,
+            703177072,
+            655737206,
+            1936095049,
+            2870883815,
+            750441059,
+            531193802,
+            3887354491,
+            3768893981,
+            758096438,
+            763690471,
+            1177380930,
+            836758118,
+            1370880236,
+            2406562066,
+            3117758426,
+            38974763,
+            729452259,
+            563449846,
+            2410187015,
+            1585606395,
+            4205777270,
+            2173618669,
+            3178196512,
+            1074979883,
+            4149809984,
+            3286590086,
+            2021554321,
+            4088426121,
+            3079684553,
+            1917337899,
+            2966649180,
+            2899231799,
+            1062888899,
+            1306359486,
+            876671599,
+            3348080246,
+            1542570792,
+            3517583561,
+            164390915,
+            135607212,
+            1392292837,
+            1540942523,
+            2587272281,
+            974783651,
+            3971944422,
+            1315415300,
+            1419043995,
+            3194113563,
+            495692306,
+            3087088482,
+            735847283,
+            2418041689,
+            2761711941,
+            608441639,
+            3606420410,
+            2500421680,
+            2129584375,
+            4277314193,
+            362285431,
+            3829261316,
+            3033449623,
+            2726841579,
+            2856071091,
+            1282567563,
+            1399900137,
+            1288485551,
+            1784276086,
+            3203384342,
+            2304811961,
+            4188374470,
+            2799600913,
+            1668300233,
+            3487044801,
+            345405685,
+            68861045,
+            4149051636,
+            630962370,
+            3809297774,
+            3497678965,
+            2777356018,
+            1131508456,
+            3088811640,
+            2916362619,
+            3604683426,
+            1367656029,
+            3164360959,
+            3464800203,
+            2727920289,
+            3993785877,
+            410872094,
+            933194096,
+            1088600539,
+            3511204625,
+            818519978,
+            4217773289,
+            4016704403,
+            2742865381,
+            2118058332,
+            2028824770,
+            3585206344,
+            3620279056,
+            4291530408,
+            748541778,
+            1337473025,
+            2734790168,
+            2153414969,
+            1554090190,
+            4147260811,
+            1053913480,
+            4166858558,
+            1486762641,
+            34008703,
+            2957308893,
+            3461353779,
+            3720643435,
+            476418844,
+            2092109162,
+            1388524448
+        ],
+        623,
+        0,
+        0
+    ],
+    "start_deck": [
+        "default_version:4.4\ncharacter:Nahida@3.7\ncharacter:Fischl@3.3\ncharacter:Sangonomiya Kokomi@3.6\ncharacter:Alhaitham@4.3\ncharacter:Lyney@4.3\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\n",
+        "default_version:4.4\ncharacter:Nahida@3.7\ncharacter:Fischl@3.3\ncharacter:Sangonomiya Kokomi@3.6\ncharacter:Alhaitham@4.3\ncharacter:Lyney@4.3\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\n"
+    ],
+    "command_history": [
+        [
+            "TEST 1 10 10 10 10 10 10 10 10 10 10",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 5",
+            "TEST 7 p0",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3",
+            "TEST 5 p1c4",
+            "TEST 6 p1 5",
+            "TEST 7 p1",
+            "sw_card 1 2",
+            "TEST 1 10 10 10 10 10 10 10 10 10 10",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 5",
+            "TEST 7 p0",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3",
+            "TEST 5 p1c4",
+            "TEST 6 p1 5",
+            "TEST 7 p1",
+            "choose 2",
+            "TEST 1 10 10 10 10 10 10 10 10 10 10",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 5",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3",
+            "TEST 5 p1c4",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "card 2 0 15 14 13",
+            "TEST 1 10 10 10 10 10 10 10 10 10 10",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p0c3 1",
+            "TEST 5 p0c4",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3",
+            "TEST 5 p1c4",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "sw_char 3 12",
+            "TEST 1 10 10 10 7 10 10 10 10 10 10",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p0c3 1",
+            "TEST 5 p0c4",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 1 2",
+            "TEST 5 p1c4",
+            "TEST 6 p1 4",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "skill 0 11 10 9",
+            "TEST 1 10 10 10 4 10 10 10 10 7 10",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI DENDRO DENDRO",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 1 3",
+            "TEST 5 p1c4",
+            "TEST 6 p1 4",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "skill 0 10 9 8",
+            "TEST 1 10 10 10 4 10 10 10 10 4 10",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 1 3",
+            "TEST 5 p1c4",
+            "TEST 6 p1 4",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "sw_char 1 7",
+            "TEST 1 10 10 10 4 10 10 10 10 4 10",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 1 3",
+            "TEST 5 p1c4",
+            "TEST 6 p1 4",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "end",
+            "TEST 1 10 6 10 4 10 10 10 10 4 10",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 6",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 3",
+            "TEST 5 p1c4",
+            "TEST 6 p1 6",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "sw_char 2 15",
+            "TEST 1 10 6 10 4 10 10 10 10 4 10",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 6",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 3",
+            "TEST 5 p1c4",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "skill 1 14 13 12",
+            "TEST 1 10 6 6 4 10 10 10 10 4 9",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 6",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 3",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI PYRO",
+            "skill 0 11 10 9",
+            "TEST 1 10 6 6 4 10 10 10 10 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 6",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 3",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 6",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "card 2 2",
+            "TEST 1 10 6 6 4 10 10 10 10 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 0",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 5",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 3",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 6",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "card 1 2 8 7",
+            "TEST 1 10 6 6 4 10 10 10 10 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 0",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 3",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 6",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "skill 1 6 5 4",
+            "TEST 1 10 6 6 4 10 10 10 10 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 0",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 3",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 6",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI",
+            "skill 2 3 2 1",
+            "TEST 1 10 7 5 5 10 10 8 10 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 2 2",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 5",
+            "TEST 7 p0 OMNI HYDRO",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 3",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 6",
+            "TEST 7 p1 OMNI OMNI OMNI",
+            "end",
+            "TEST 1 10 7 3 5 10 10 7 10 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 2 1",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 7",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 2",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 8",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "card 0 1",
+            "TEST 1 10 7 3 5 10 10 7 10 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 0 1",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 6",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 2",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 8",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "skill 0 15 14 13",
+            "TEST 1 10 8 4 6 10 10 5 10 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1 1",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 6",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI HYDRO ELECTRO",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 2",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 8",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "card 3 0 14 13",
+            "TEST 1 10 8 4 6 10 10 5 10 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1 1",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 5",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 2",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 8",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "skill 0 12 11 10",
+            "TEST 1 10 9 2 7 10 8 5 10 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1 2",
+            "TEST 5 p0c2 2 1 2",
+            "TEST 5 p0c3 2",
+            "TEST 5 p0c4 2",
+            "TEST 6 p0 7",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI DENDRO",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 2",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 8",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "skill 0 9 10 8",
+            "TEST 1 10 10 3 8 10 6 5 10 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1 2",
+            "TEST 5 p0c2 2 1 2",
+            "TEST 5 p0c3 2",
+            "TEST 5 p0c4 2",
+            "TEST 6 p0 8",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 2",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 8",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "sw_char 4 7",
+            "TEST 1 10 10 3 8 10 6 5 10 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1 2",
+            "TEST 5 p0c2 2 1 2",
+            "TEST 5 p0c3 2",
+            "TEST 5 p0c4 2",
+            "TEST 6 p0 8",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2 0",
+            "TEST 5 p1c3 2",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 7",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI",
+            "end",
+            "TEST 1 10 10 3 8 9 6 5 10 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1 2",
+            "TEST 5 p0c2 2 2",
+            "TEST 5 p0c3 2",
+            "TEST 5 p0c4 2",
+            "TEST 6 p0 10",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2 2",
+            "TEST 5 p1c3 1",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 9",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "card 3 4",
+            "TEST 1 10 10 3 8 9 6 5 10 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1 2",
+            "TEST 5 p0c2 2 2",
+            "TEST 5 p0c3 2",
+            "TEST 5 p0c4 2 0",
+            "TEST 6 p0 9",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2 2",
+            "TEST 5 p1c3 1",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 9",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "skill 1 15 14 13",
+            "TEST 1 10 10 3 8 8 6 5 6 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1 2",
+            "TEST 5 p0c2 2 2",
+            "TEST 5 p0c3 2",
+            "TEST 5 p0c4 2 1 1",
+            "TEST 6 p0 9",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2 2",
+            "TEST 5 p1c3 1",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 9",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "sw_char 3 12",
+            "TEST 1 10 10 3 6 8 6 5 6 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1 2",
+            "TEST 5 p0c2 2 2",
+            "TEST 5 p0c3 2",
+            "TEST 5 p0c4 2 1 1",
+            "TEST 6 p0 9",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2 2",
+            "TEST 5 p1c3 1",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 9",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "end"
+        ],
+        [
+            "TEST 1 10 10 10 10 10 10 10 10 10 10",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 5",
+            "TEST 7 p0",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3",
+            "TEST 5 p1c4",
+            "TEST 6 p1 5",
+            "TEST 7 p1",
+            "sw_card 2 1",
+            "TEST 1 10 10 10 10 10 10 10 10 10 10",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 5",
+            "TEST 7 p0",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3",
+            "TEST 5 p1c4",
+            "TEST 6 p1 5",
+            "TEST 7 p1",
+            "choose 3",
+            "TEST 1 10 10 10 10 10 10 10 10 10 10",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p0c3 1",
+            "TEST 5 p0c4",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3",
+            "TEST 5 p1c4",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "card 0 0 15 14 13",
+            "TEST 1 10 10 10 10 10 10 10 10 10 10",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p0c3 1",
+            "TEST 5 p0c4",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 1",
+            "TEST 5 p1c4",
+            "TEST 6 p1 4",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "skill 1 12 11 10",
+            "TEST 1 10 10 10 7 10 10 10 10 7 10",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI DENDRO DENDRO",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 1 2",
+            "TEST 5 p1c4",
+            "TEST 6 p1 4",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "skill 1 9 8 7",
+            "TEST 1 10 10 10 4 10 10 10 10 4 10",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 1 3",
+            "TEST 5 p1c4",
+            "TEST 6 p1 4",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "end",
+            "TEST 1 10 10 10 4 10 10 10 10 4 10",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 6",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 2",
+            "TEST 5 p1c4",
+            "TEST 6 p1 6",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "skill 0 15 14 13",
+            "TEST 1 10 6 10 4 10 10 10 10 4 10",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 6",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 3",
+            "TEST 5 p1c4",
+            "TEST 6 p1 6",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "card 3 4 12 11",
+            "TEST 1 10 6 10 4 10 10 10 10 4 10",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 6",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 3",
+            "TEST 5 p1c4",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "sw_char 4 10",
+            "TEST 1 10 6 10 4 10 10 10 10 4 10",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 6",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 3",
+            "TEST 5 p1c4",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "skill 1 9 8 7",
+            "TEST 1 10 6 6 4 10 10 10 10 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 6",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 3",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 6",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI PYRO",
+            "sw_char 0 7",
+            "TEST 1 10 6 6 4 10 10 10 10 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 0",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 3",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 6",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "sw_char 1 6",
+            "TEST 1 10 7 7 5 10 10 8 10 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1 2",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI HYDRO",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 3",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 6",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI",
+            "skill 0 5 4 3",
+            "TEST 1 10 7 5 5 10 10 8 10 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 2 2",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 5",
+            "TEST 7 p0 OMNI HYDRO",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 3",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 6",
+            "TEST 7 p1 OMNI OMNI OMNI",
+            "end",
+            "TEST 1 10 8 4 6 10 10 5 10 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 1 1",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 6",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI HYDRO ELECTRO",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 2",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 8",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "sw_char 0 15",
+            "TEST 1 10 9 5 7 10 8 5 10 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2 2 1",
+            "TEST 5 p0c3",
+            "TEST 5 p0c4",
+            "TEST 6 p0 7",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI DENDRO",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 2",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 8",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "skill 2 14 13 12 11 10",
+            "TEST 1 10 10 3 8 10 6 5 10 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1 2",
+            "TEST 5 p0c2 2 1 2",
+            "TEST 5 p0c3 2",
+            "TEST 5 p0c4 2",
+            "TEST 6 p0 8",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 2",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 8",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "sw_char 2 9",
+            "TEST 1 10 10 3 8 10 6 5 10 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1 2",
+            "TEST 5 p0c2 2 1 2",
+            "TEST 5 p0c3 2",
+            "TEST 5 p0c4 2",
+            "TEST 6 p0 8",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 5 p1c3 2",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 8",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "card 1 2",
+            "TEST 1 10 10 3 8 10 6 5 10 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1 2",
+            "TEST 5 p0c2 2 1 2",
+            "TEST 5 p0c3 2",
+            "TEST 5 p0c4 2",
+            "TEST 6 p0 8",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2 0",
+            "TEST 5 p1c3 2",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 7",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "skill 1 8 7 6",
+            "TEST 1 10 10 3 8 10 6 5 10 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1 2",
+            "TEST 5 p0c2 2 1 2",
+            "TEST 5 p0c3 2",
+            "TEST 5 p0c4 2",
+            "TEST 6 p0 8",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2 0",
+            "TEST 5 p1c3 2",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 7",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI",
+            "end",
+            "TEST 1 10 10 3 8 8 6 5 6 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1 2",
+            "TEST 5 p0c2 2 2",
+            "TEST 5 p0c3 2",
+            "TEST 5 p0c4 2 1 1",
+            "TEST 6 p0 9",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2 2",
+            "TEST 5 p1c3 1",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 9",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "sw_char 4 15",
+            "TEST 1 10 10 3 8 8 6 5 6 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1 2",
+            "TEST 5 p0c2 2 2",
+            "TEST 5 p0c3 2",
+            "TEST 5 p0c4 2 1 1",
+            "TEST 6 p0 9",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2 2",
+            "TEST 5 p1c3 1",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 9",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "skill 0 14 13 12",
+            "TEST 1 10 10 3 6 8 6 5 6 4 8",
+            "TEST 4 p0",
+            "TEST 5 p0c0 2",
+            "TEST 5 p0c1 2",
+            "TEST 5 p0c2 2 2",
+            "TEST 5 p0c3 2",
+            "TEST 5 p0c4 2 1 1",
+            "TEST 6 p0 9",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2 2",
+            "TEST 5 p1c3 1",
+            "TEST 5 p1c4 1",
+            "TEST 6 p1 9",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "skill 1 11 10 9",
+            "TEST 1 9 9 2 2 7 6 5 6 4 7",
+            "TEST 4 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1 1",
+            "TEST 5 p0c2 2 1",
+            "TEST 5 p0c3 1",
+            "TEST 5 p0c4 1 2 1",
+            "TEST 6 p0 9",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI HYDRO ELECTRO DENDRO",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2 2",
+            "TEST 5 p1c3 1",
+            "TEST 5 p1c4 2",
+            "TEST 6 p1 9",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI PYRO",
+            "card 4 4",
+            "TEST 1 9 9 2 2 7 6 5 6 4 7",
+            "TEST 4 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1 1",
+            "TEST 5 p0c2 2 1",
+            "TEST 5 p0c3 1",
+            "TEST 5 p0c4 1 2 1",
+            "TEST 6 p0 9",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI HYDRO ELECTRO DENDRO",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2 2",
+            "TEST 5 p1c3 1",
+            "TEST 5 p1c4 2 0",
+            "TEST 6 p1 8",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI PYRO",
+            "card 1 3",
+            "TEST 1 9 9 2 2 7 6 5 6 4 7",
+            "TEST 4 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1 1",
+            "TEST 5 p0c2 2 1",
+            "TEST 5 p0c3 1",
+            "TEST 5 p0c4 1 2 1",
+            "TEST 6 p0 9",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI HYDRO ELECTRO DENDRO",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2 0",
+            "TEST 5 p1c3 1",
+            "TEST 5 p1c4 2 0",
+            "TEST 6 p1 7",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI PYRO",
+            "card 4 2 9 8",
+            "TEST 1 9 9 2 2 7 6 5 6 4 7",
+            "TEST 4 p0",
+            "TEST 5 p0c0 1",
+            "TEST 5 p0c1 1",
+            "TEST 5 p0c2 2 1",
+            "TEST 5 p0c3 1",
+            "TEST 5 p0c4 1 2 1",
+            "TEST 6 p0 9",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI HYDRO ELECTRO DENDRO",
+            "TEST 4 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2 0",
+            "TEST 5 p1c3 1",
+            "TEST 5 p1c4 2 0",
+            "TEST 6 p1 6",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "sw_char 0 7"
+        ]
+    ],
+    "match_config": {
+        "random_first_player": false,
+        "player_go_first": 0,
+        "check_deck_restriction": false,
+        "initial_hand_size": 5,
+        "initial_card_draw": 2,
+        "initial_dice_number": 16,
+        "initial_dice_reroll_times": 1,
+        "card_number": null,
+        "max_same_card_number": null,
+        "character_number": null,
+        "max_round_number": 999,
+        "max_hand_size": 999,
+        "max_dice_number": 16,
+        "max_summon_number": 4,
+        "max_support_number": 4,
+        "make_skill_prediction": false,
+        "history_level": 10,
+        "compress_history": true,
+        "recreate_mode": false,
+        "random_object_information": []
+    },
+    "command_history_raw": [
+        [
+            [
+                2,
+                "sw_card 1 2",
+                0
+            ],
+            [
+                4,
+                "choose 2",
+                2
+            ],
+            [
+                7,
+                "card 2 0 15 14 13",
+                4
+            ],
+            [
+                10,
+                "sw_char 3 12",
+                5
+            ],
+            [
+                18,
+                "skill 0 11 10 9",
+                8
+            ],
+            [
+                24,
+                "skill 0 10 9 8",
+                10
+            ],
+            [
+                29,
+                "sw_char 1 7",
+                12
+            ],
+            [
+                31,
+                "end",
+                13
+            ],
+            [
+                40,
+                "sw_char 2 15",
+                15
+            ],
+            [
+                47,
+                "skill 1 14 13 12",
+                18
+            ],
+            [
+                54,
+                "skill 0 11 10 9",
+                20
+            ],
+            [
+                60,
+                "card 2 2",
+                22
+            ],
+            [
+                62,
+                "card 1 2 8 7",
+                23
+            ],
+            [
+                65,
+                "skill 1 6 5 4",
+                24
+            ],
+            [
+                70,
+                "skill 2 3 2 1",
+                26
+            ],
+            [
+                77,
+                "end",
+                28
+            ],
+            [
+                86,
+                "card 0 1",
+                30
+            ],
+            [
+                89,
+                "skill 0 15 14 13",
+                31
+            ],
+            [
+                95,
+                "card 3 0 14 13",
+                33
+            ],
+            [
+                98,
+                "skill 0 12 11 10",
+                34
+            ],
+            [
+                107,
+                "skill 0 9 10 8",
+                36
+            ],
+            [
+                114,
+                "sw_char 4 7",
+                38
+            ],
+            [
+                121,
+                "end",
+                41
+            ],
+            [
+                130,
+                "card 3 4",
+                43
+            ],
+            [
+                132,
+                "skill 1 15 14 13",
+                44
+            ],
+            [
+                138,
+                "sw_char 3 12",
+                46
+            ],
+            [
+                143,
+                "end",
+                48
+            ]
+        ],
+        [
+            [
+                2,
+                "sw_card 2 1",
+                1
+            ],
+            [
+                4,
+                "choose 3",
+                3
+            ],
+            [
+                12,
+                "card 0 0 15 14 13",
+                6
+            ],
+            [
+                15,
+                "skill 1 12 11 10",
+                7
+            ],
+            [
+                21,
+                "skill 1 9 8 7",
+                9
+            ],
+            [
+                27,
+                "end",
+                11
+            ],
+            [
+                36,
+                "skill 0 15 14 13",
+                14
+            ],
+            [
+                42,
+                "card 3 4 12 11",
+                16
+            ],
+            [
+                45,
+                "sw_char 4 10",
+                17
+            ],
+            [
+                50,
+                "skill 1 9 8 7",
+                19
+            ],
+            [
+                58,
+                "sw_char 0 7",
+                21
+            ],
+            [
+                68,
+                "sw_char 1 6",
+                25
+            ],
+            [
+                73,
+                "skill 0 5 4 3",
+                27
+            ],
+            [
+                79,
+                "end",
+                29
+            ],
+            [
+                93,
+                "sw_char 0 15",
+                32
+            ],
+            [
+                104,
+                "skill 2 14 13 12 11 10",
+                35
+            ],
+            [
+                112,
+                "sw_char 2 9",
+                37
+            ],
+            [
+                116,
+                "card 1 2",
+                39
+            ],
+            [
+                118,
+                "skill 1 8 7 6",
+                40
+            ],
+            [
+                123,
+                "end",
+                42
+            ],
+            [
+                136,
+                "sw_char 4 15",
+                45
+            ],
+            [
+                140,
+                "skill 0 14 13 12",
+                47
+            ],
+            [
+                145,
+                "skill 1 11 10 9",
+                49
+            ],
+            [
+                154,
+                "card 4 4",
+                50
+            ],
+            [
+                155,
+                "card 1 3",
+                51
+            ],
+            [
+                158,
+                "card 4 2 9 8",
+                52
+            ],
+            [
+                161,
+                "sw_char 0 7",
+                53
+            ]
+        ]
+    ]
+}
\ No newline at end of file
diff --git a/tests/server/patch/v44/jsons/sayu.json b/tests/server/patch/v44/jsons/sayu.json
new file mode 100644
index 00000000..9a8ea4e1
--- /dev/null
+++ b/tests/server/patch/v44/jsons/sayu.json
@@ -0,0 +1,1499 @@
+{
+    "match_random_state": [
+        "MT19937",
+        [
+            2147483648,
+            852258933,
+            3037751817,
+            2843736348,
+            2346345909,
+            241038820,
+            3630833971,
+            322381140,
+            1250305161,
+            1459257731,
+            3694471596,
+            515911843,
+            3937938455,
+            2827679987,
+            3950882980,
+            3581943267,
+            4151002148,
+            1618076744,
+            3274872619,
+            2159583707,
+            1559018499,
+            1583145829,
+            1179320338,
+            3113356017,
+            1931467408,
+            2410284883,
+            753436273,
+            437428593,
+            510572609,
+            2706055346,
+            879811753,
+            825585750,
+            2401349358,
+            2490929089,
+            3977100308,
+            4231974237,
+            3442070342,
+            2600699322,
+            3596477700,
+            3408240710,
+            3752939454,
+            3842241914,
+            2634979991,
+            739520375,
+            3739104881,
+            2527561182,
+            1297315978,
+            1316945693,
+            1727810483,
+            3695100167,
+            1453832382,
+            979363388,
+            3076017079,
+            3732405838,
+            1444648514,
+            4151023880,
+            2205533946,
+            4261855231,
+            4267702982,
+            2647124900,
+            1484461652,
+            1998843354,
+            4035414622,
+            4156165081,
+            322695412,
+            2240084797,
+            218965524,
+            2620616784,
+            2355246093,
+            353075890,
+            807460217,
+            2080397923,
+            2949113800,
+            3746761770,
+            4204485378,
+            2925858822,
+            940465313,
+            2978225661,
+            1552046939,
+            3792670316,
+            4122385657,
+            3233513602,
+            1380874839,
+            984796113,
+            886794804,
+            4153798316,
+            717328536,
+            469185684,
+            3765962743,
+            4135056014,
+            3479073223,
+            3023129426,
+            4222684062,
+            3850877054,
+            224467384,
+            3087354214,
+            1680195562,
+            2193347842,
+            2684173028,
+            1880093036,
+            3229242389,
+            3049410427,
+            1279447835,
+            332094632,
+            1579758630,
+            3710374238,
+            2337675471,
+            115759493,
+            4211910051,
+            3915073058,
+            1108976576,
+            2071829022,
+            3748361252,
+            3666084797,
+            3192128605,
+            604670057,
+            188878253,
+            403907626,
+            3217757074,
+            1892194987,
+            378411265,
+            573022174,
+            3720006947,
+            254195013,
+            1584935511,
+            3553011007,
+            1370455926,
+            1537144829,
+            2822387189,
+            2441227067,
+            1172427512,
+            1810388875,
+            597276150,
+            3442654859,
+            1319639025,
+            1278428752,
+            3109211997,
+            3125310769,
+            1778730908,
+            2179046274,
+            529756476,
+            3028614397,
+            390243483,
+            2580809143,
+            2253747482,
+            645716549,
+            4069787277,
+            3392915288,
+            1804927866,
+            2998699909,
+            3486738826,
+            2249333105,
+            2840926426,
+            832811354,
+            2642376678,
+            2647298729,
+            2972210951,
+            3980432569,
+            2414014267,
+            3379616787,
+            827881623,
+            2006639651,
+            2739098202,
+            4142232454,
+            1674001832,
+            387416494,
+            1242487127,
+            3900036886,
+            1084620969,
+            4223529924,
+            2384308612,
+            2101645863,
+            1707720038,
+            3225537336,
+            1571082365,
+            4196493122,
+            2164372558,
+            3866850114,
+            2805868839,
+            675209309,
+            4179066360,
+            3625074731,
+            3089956980,
+            3293027876,
+            3902965037,
+            1224438018,
+            1224895899,
+            2575389666,
+            3357949449,
+            2384469209,
+            3700336215,
+            338019398,
+            3289126851,
+            2769703855,
+            390722640,
+            2704007496,
+            2883292084,
+            1965587089,
+            1025300549,
+            619699852,
+            1043025444,
+            3803785664,
+            922193774,
+            151167841,
+            2126109206,
+            3168147631,
+            2865122591,
+            3327041069,
+            3373701209,
+            9353399,
+            473750565,
+            3028380130,
+            1467951504,
+            4190922997,
+            589795710,
+            942553933,
+            937635948,
+            298315070,
+            415821393,
+            4041939848,
+            372373022,
+            3689582099,
+            519737891,
+            4233378103,
+            1157474098,
+            138790908,
+            770838763,
+            430623945,
+            814484707,
+            2853558444,
+            3213795543,
+            3845643860,
+            2512330672,
+            1336888278,
+            572322181,
+            1282342669,
+            920514674,
+            2038291972,
+            3149365870,
+            4102830575,
+            3549173955,
+            3684993693,
+            1356278478,
+            1775628726,
+            213156443,
+            2298969406,
+            2717355438,
+            1572856796,
+            1513647543,
+            2132855513,
+            1986873076,
+            3528225839,
+            308723273,
+            292601737,
+            1277750001,
+            1679680638,
+            2785246156,
+            3878540692,
+            471870265,
+            668186544,
+            2580697021,
+            2706131701,
+            1695560777,
+            2843565854,
+            332232130,
+            1424790421,
+            2379530317,
+            4168717850,
+            974529721,
+            2592398077,
+            1897652930,
+            1672473548,
+            1312396662,
+            1869749067,
+            2084827226,
+            73229630,
+            1974021446,
+            3205173810,
+            874883708,
+            2176709342,
+            2290870532,
+            2232221173,
+            11665963,
+            3617533180,
+            2066756895,
+            869614124,
+            248729098,
+            3168320955,
+            2513792026,
+            1546475412,
+            3754194653,
+            1731401296,
+            669770116,
+            1064448459,
+            2396128651,
+            1085107150,
+            2799824622,
+            1789749972,
+            2034050724,
+            2306132503,
+            2368269703,
+            338106206,
+            3551116912,
+            2236740658,
+            3994225500,
+            1393516086,
+            814315152,
+            4115786034,
+            1931073526,
+            3698510923,
+            3264469706,
+            1200777713,
+            3605887842,
+            537661941,
+            99637609,
+            739482224,
+            4131737706,
+            2971745240,
+            1636938568,
+            461809637,
+            1293154012,
+            2051347708,
+            3415492749,
+            309673494,
+            1718449666,
+            895136483,
+            459169287,
+            3758491237,
+            1484777584,
+            2985652876,
+            3690529376,
+            2814466466,
+            3761286303,
+            2906796347,
+            1770927703,
+            66989981,
+            1227151467,
+            740432923,
+            1742669766,
+            4108895627,
+            1129792952,
+            4217696861,
+            1581599772,
+            2822850338,
+            1371889226,
+            2928171633,
+            337314434,
+            1287812001,
+            2566385880,
+            1016557934,
+            1521694314,
+            1446569819,
+            494280377,
+            3605614928,
+            1750373709,
+            1917104935,
+            1005209477,
+            3290246820,
+            2435278462,
+            2392228341,
+            1860566250,
+            3604753061,
+            1545385861,
+            179541456,
+            1095359,
+            2235243074,
+            3565546844,
+            1848692563,
+            3296532274,
+            932183734,
+            2678033798,
+            2819310696,
+            372402397,
+            2849752546,
+            3300638946,
+            979341372,
+            2027134812,
+            3377292468,
+            776160986,
+            876596828,
+            3411844979,
+            3807986688,
+            2828349004,
+            2667246233,
+            2887674321,
+            3417530634,
+            4192745201,
+            1514743338,
+            1486186234,
+            3599480114,
+            2220700932,
+            877264426,
+            3683620224,
+            1791677875,
+            1576589409,
+            3371864729,
+            239577320,
+            664674279,
+            97455638,
+            671315040,
+            4098637571,
+            1233610174,
+            2528631470,
+            4181767203,
+            4188289355,
+            201010882,
+            2613994903,
+            3722085049,
+            464425505,
+            3872757292,
+            1251239949,
+            155862569,
+            1690852071,
+            958025955,
+            3882516403,
+            11720145,
+            1377457109,
+            611510219,
+            4258313417,
+            2145041081,
+            230603729,
+            108822725,
+            2878554314,
+            1764726348,
+            2813464509,
+            2430757019,
+            1893470021,
+            2345837745,
+            3504885831,
+            471263087,
+            3448186974,
+            91510807,
+            1692101012,
+            870758111,
+            279967414,
+            2975906051,
+            831331682,
+            714973860,
+            895403271,
+            1946906216,
+            2175407141,
+            294729832,
+            663378707,
+            4040948408,
+            371079217,
+            3849217943,
+            3167620631,
+            2106715634,
+            4270851423,
+            4180090782,
+            2160180184,
+            3446426895,
+            3057856044,
+            1623629695,
+            1938845385,
+            1992740005,
+            2620458046,
+            602642578,
+            168172447,
+            1859880120,
+            3105244601,
+            3397983984,
+            4209231162,
+            116203150,
+            2166700138,
+            679395399,
+            1591101135,
+            1511475060,
+            3865776260,
+            3861604114,
+            2333630785,
+            578347291,
+            107805155,
+            1281990800,
+            2331362412,
+            2805566554,
+            1392433873,
+            4113871053,
+            1681686757,
+            1317522404,
+            263062625,
+            3972207482,
+            871540459,
+            858793555,
+            3378130229,
+            1638925065,
+            3644427872,
+            425845250,
+            4199381058,
+            138738749,
+            4064868817,
+            641652061,
+            3293641471,
+            2781033146,
+            2433876171,
+            958379132,
+            515825137,
+            1920938822,
+            508669000,
+            1996074650,
+            1132963176,
+            112386699,
+            4020276217,
+            3307649861,
+            712492536,
+            752257327,
+            703177072,
+            655737206,
+            1936095049,
+            2870883815,
+            750441059,
+            531193802,
+            3887354491,
+            3768893981,
+            758096438,
+            763690471,
+            1177380930,
+            836758118,
+            1370880236,
+            2406562066,
+            3117758426,
+            38974763,
+            729452259,
+            563449846,
+            2410187015,
+            1585606395,
+            4205777270,
+            2173618669,
+            3178196512,
+            1074979883,
+            4149809984,
+            3286590086,
+            2021554321,
+            4088426121,
+            3079684553,
+            1917337899,
+            2966649180,
+            2899231799,
+            1062888899,
+            1306359486,
+            876671599,
+            3348080246,
+            1542570792,
+            3517583561,
+            164390915,
+            135607212,
+            1392292837,
+            1540942523,
+            2587272281,
+            974783651,
+            3971944422,
+            1315415300,
+            1419043995,
+            3194113563,
+            495692306,
+            3087088482,
+            735847283,
+            2418041689,
+            2761711941,
+            608441639,
+            3606420410,
+            2500421680,
+            2129584375,
+            4277314193,
+            362285431,
+            3829261316,
+            3033449623,
+            2726841579,
+            2856071091,
+            1282567563,
+            1399900137,
+            1288485551,
+            1784276086,
+            3203384342,
+            2304811961,
+            4188374470,
+            2799600913,
+            1668300233,
+            3487044801,
+            345405685,
+            68861045,
+            4149051636,
+            630962370,
+            3809297774,
+            3497678965,
+            2777356018,
+            1131508456,
+            3088811640,
+            2916362619,
+            3604683426,
+            1367656029,
+            3164360959,
+            3464800203,
+            2727920289,
+            3993785877,
+            410872094,
+            933194096,
+            1088600539,
+            3511204625,
+            818519978,
+            4217773289,
+            4016704403,
+            2742865381,
+            2118058332,
+            2028824770,
+            3585206344,
+            3620279056,
+            4291530408,
+            748541778,
+            1337473025,
+            2734790168,
+            2153414969,
+            1554090190,
+            4147260811,
+            1053913480,
+            4166858558,
+            1486762641,
+            34008703,
+            2957308893,
+            3461353779,
+            3720643435,
+            476418844,
+            2092109162,
+            1388524448
+        ],
+        623,
+        0,
+        0
+    ],
+    "start_deck": [
+        "default_version:4.4\ncharacter:Sayu@4.4\ncharacter:Mona@3.3\ncharacter:Klee@3.4\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\n",
+        "default_version:4.4\ncharacter:Sayu@4.4\ncharacter:Mona@3.3\ncharacter:Klee@3.4\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSweet Madame@3.3\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\nSkiving: New and Improved@4.4\n"
+    ],
+    "command_history": [
+        [
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 2 p0",
+            "TEST 5 p0c0",
+            "TEST 12 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 12 p1c0",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2",
+            "TEST 6 p1 5",
+            "sw_card",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 2 p0",
+            "TEST 5 p0c0",
+            "TEST 12 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 12 p1c0",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2",
+            "TEST 6 p1 5",
+            "choose 1",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 2 p0",
+            "TEST 5 p0c0",
+            "TEST 12 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 12 p1c0",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2",
+            "TEST 6 p1 5",
+            "skill 1 15 14 13",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 2 p0 0",
+            "TEST 5 p0c0",
+            "TEST 12 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 5 p1c0 1 1",
+            "TEST 12 p1c0 HYDRO",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2",
+            "TEST 6 p1 4",
+            "sw_char 0 12",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 2 p0 0",
+            "TEST 5 p0c0",
+            "TEST 12 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 5 p1c0 1 1",
+            "TEST 12 p1c0 HYDRO",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2",
+            "TEST 6 p1 4",
+            "skill 1 11 10 9",
+            "TEST 1 7 10 10 7 9 9",
+            "TEST 2 p0 0",
+            "TEST 5 p0c0",
+            "TEST 12 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 5 p1c0 1 1",
+            "TEST 12 p1c0 HYDRO",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1 HYDRO",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2 HYDRO",
+            "TEST 6 p1 3",
+            "sw_char 1 8",
+            "TEST 1 7 8 10 7 9 9",
+            "TEST 2 p0 0",
+            "TEST 5 p0c0",
+            "TEST 12 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 5 p1c0 1",
+            "TEST 12 p1c0 HYDRO",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1 HYDRO",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2 HYDRO",
+            "TEST 6 p1 3",
+            "sw_char 0 7",
+            "TEST 1 7 8 10 7 9 9",
+            "TEST 2 p0 0",
+            "TEST 5 p0c0",
+            "TEST 12 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 5 p1c0 1",
+            "TEST 12 p1c0 HYDRO",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1 HYDRO",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2 HYDRO",
+            "TEST 6 p1 3",
+            "card 1 0 6 5 4",
+            "TEST 1 6 8 10 4 8 8",
+            "TEST 2 p0 0",
+            "TEST 5 p0c0",
+            "TEST 12 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 6",
+            "TEST 2 p1 2",
+            "TEST 5 p1c0 1",
+            "TEST 12 p1c0 HYDRO",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2 HYDRO",
+            "TEST 6 p1 3",
+            "skill 1 3 2 1",
+            "TEST 1 6 8 10 3 7 5",
+            "TEST 2 p0 0",
+            "TEST 5 p0c0",
+            "TEST 12 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 6",
+            "TEST 2 p1 2",
+            "TEST 5 p1c0 1",
+            "TEST 12 p1c0 HYDRO",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1 HYDRO",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2 HYDRO",
+            "TEST 6 p1 3",
+            "end",
+            "TEST 1 5 8 10 5 7 4",
+            "TEST 2 p0",
+            "TEST 5 p0c0",
+            "TEST 12 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 8",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0",
+            "TEST 12 p1c0 HYDRO",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1 HYDRO",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2 HYDRO",
+            "TEST 6 p1 5",
+            "skill 3 15 14 13",
+            "TEST 1 4 8 10 4 6 3",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0",
+            "TEST 12 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 10",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0 1",
+            "TEST 12 p1c0",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1 HYDRO",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2 HYDRO",
+            "TEST 6 p1 5",
+            "skill 1 12 11 10",
+            "TEST 1 0 8 10 1 6 3",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 10",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0",
+            "TEST 12 p1c0",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1 HYDRO",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2 HYDRO",
+            "TEST 6 p1 5",
+            "choose 1",
+            "TEST 1 0 8 10 1 6 3",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 10",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0",
+            "TEST 12 p1c0",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1 HYDRO",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2 HYDRO",
+            "TEST 6 p1 5",
+            "skill 1 9 8 7",
+            "TEST 1 0 8 10 0 6 3",
+            "TEST 2 p0 2 1",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 10",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1 HYDRO",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2 HYDRO",
+            "TEST 6 p1 5",
+            "end",
+            "TEST 1 0 7 10 0 5 3",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1 PYRO",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 10",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1 HYDRO",
+            "TEST 5 p1c2 1",
+            "TEST 12 p1c2 HYDRO",
+            "TEST 6 p1 7",
+            "skill 1 15 14 13",
+            "TEST 1 0 7 10 0 5 2",
+            "TEST 2 p0 1 1",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1 PYRO",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 10",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1 HYDRO",
+            "TEST 5 p1c2 1",
+            "TEST 12 p1c2 HYDRO",
+            "TEST 6 p1 7",
+            "skill 1 12 11 10",
+            "TEST 1 0 7 10 0 5 1",
+            "TEST 2 p0 1 1",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1 PYRO",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 10",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1 HYDRO",
+            "TEST 5 p1c2 1",
+            "TEST 12 p1c2 HYDRO",
+            "TEST 6 p1 7",
+            "end"
+        ],
+        [
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 2 p0",
+            "TEST 5 p0c0",
+            "TEST 12 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 12 p1c0",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2",
+            "TEST 6 p1 5",
+            "sw_card 4 3",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 2 p0",
+            "TEST 5 p0c0",
+            "TEST 12 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 12 p1c0",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2",
+            "TEST 6 p1 5",
+            "choose 0",
+            "TEST 1 10 10 10 9 10 10",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0",
+            "TEST 12 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 12 p1c0 HYDRO",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2",
+            "TEST 6 p1 5",
+            "card 2 0",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0",
+            "TEST 12 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 5 p1c0 1",
+            "TEST 12 p1c0 HYDRO",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2",
+            "TEST 6 p1 4",
+            "skill 1 15 14 13",
+            "TEST 1 8 10 10 7 9 9",
+            "TEST 2 p0 0",
+            "TEST 5 p0c0",
+            "TEST 12 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 5 p1c0 1",
+            "TEST 12 p1c0 HYDRO",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1 HYDRO",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2 HYDRO",
+            "TEST 6 p1 4",
+            "card 2 0 12 11 10",
+            "TEST 1 7 8 10 7 9 9",
+            "TEST 2 p0 0",
+            "TEST 5 p0c0",
+            "TEST 12 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 5",
+            "TEST 2 p1",
+            "TEST 5 p1c0 1",
+            "TEST 12 p1c0 HYDRO",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1 HYDRO",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2 HYDRO",
+            "TEST 6 p1 3",
+            "sw_char 1 9",
+            "TEST 1 7 8 10 6 8 8",
+            "TEST 2 p0 0",
+            "TEST 5 p0c0 1",
+            "TEST 12 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 6",
+            "TEST 2 p1",
+            "TEST 5 p1c0 1",
+            "TEST 12 p1c0 HYDRO",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2 HYDRO",
+            "TEST 6 p1 3",
+            "sw_char 0 8",
+            "TEST 1 7 8 10 6 8 8",
+            "TEST 2 p0 0",
+            "TEST 5 p0c0 1",
+            "TEST 12 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 6",
+            "TEST 2 p1",
+            "TEST 5 p1c0 1",
+            "TEST 12 p1c0 HYDRO",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2 HYDRO",
+            "TEST 6 p1 3",
+            "skill 3 7 6 5",
+            "TEST 1 6 8 10 4 8 8",
+            "TEST 2 p0 0",
+            "TEST 5 p0c0",
+            "TEST 12 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 6",
+            "TEST 2 p1 2",
+            "TEST 5 p1c0 1",
+            "TEST 12 p1c0 HYDRO",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2 HYDRO",
+            "TEST 6 p1 3",
+            "sw_char 2 4",
+            "TEST 1 6 8 10 3 7 7",
+            "TEST 2 p0 0",
+            "TEST 5 p0c0 1",
+            "TEST 12 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 6",
+            "TEST 2 p1 2",
+            "TEST 5 p1c0 1",
+            "TEST 12 p1c0 HYDRO",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1 HYDRO",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2",
+            "TEST 6 p1 3",
+            "end",
+            "TEST 1 5 8 10 5 7 4",
+            "TEST 2 p0",
+            "TEST 5 p0c0",
+            "TEST 12 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 8",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0",
+            "TEST 12 p1c0 HYDRO",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1 HYDRO",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2 HYDRO",
+            "TEST 6 p1 5",
+            "sw_char 0 15",
+            "TEST 1 5 8 10 4 6 3",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0",
+            "TEST 12 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 10",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0",
+            "TEST 12 p1c0",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1 HYDRO",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2 HYDRO",
+            "TEST 6 p1 5",
+            "skill 1 14 13 12",
+            "TEST 1 2 8 10 1 6 3",
+            "TEST 2 p0 2",
+            "TEST 5 p0c0",
+            "TEST 12 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 10",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0",
+            "TEST 12 p1c0",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1 HYDRO",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2 HYDRO",
+            "TEST 6 p1 5",
+            "skill 0 11 10 9",
+            "TEST 1 0 8 10 0 6 3",
+            "TEST 2 p0 2 1",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 10",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1 HYDRO",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2 HYDRO",
+            "TEST 6 p1 5",
+            "choose 2",
+            "TEST 1 0 8 10 0 6 3",
+            "TEST 2 p0 2 1",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 10",
+            "TEST 2 p1 1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1 HYDRO",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2 HYDRO",
+            "TEST 6 p1 5",
+            "end",
+            "TEST 1 0 10 10 0 5 3",
+            "TEST 2 p0 1",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 10",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1 HYDRO",
+            "TEST 5 p1c2",
+            "TEST 12 p1c2 HYDRO",
+            "TEST 6 p1 7",
+            "skill 1 12 11 10",
+            "TEST 1 0 7 10 0 5 2",
+            "TEST 2 p0 1 1",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1 PYRO",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 10",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1 HYDRO",
+            "TEST 5 p1c2 1",
+            "TEST 12 p1c2 HYDRO",
+            "TEST 6 p1 7",
+            "end",
+            "TEST 1 0 9 10 0 4 0",
+            "TEST 2 p0 1 1",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1 PYRO",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 10",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1 HYDRO",
+            "TEST 5 p1c2",
+            "TEST 6 p1 7",
+            "choose 1",
+            "TEST 1 0 9 10 0 3 0",
+            "TEST 2 p0",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 12 p0c1 PYRO",
+            "TEST 5 p0c2",
+            "TEST 12 p0c2",
+            "TEST 6 p0 10",
+            "TEST 2 p1",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 12 p1c1 HYDRO",
+            "TEST 5 p1c2",
+            "TEST 6 p1 9",
+            "card 0 0"
+        ]
+    ],
+    "match_config": {
+        "random_first_player": false,
+        "player_go_first": 0,
+        "check_deck_restriction": false,
+        "initial_hand_size": 5,
+        "initial_card_draw": 2,
+        "initial_dice_number": 16,
+        "initial_dice_reroll_times": 1,
+        "card_number": null,
+        "max_same_card_number": null,
+        "character_number": null,
+        "max_round_number": 999,
+        "max_hand_size": 10,
+        "max_dice_number": 16,
+        "max_summon_number": 4,
+        "max_support_number": 4,
+        "make_skill_prediction": false,
+        "history_level": 10,
+        "compress_history": true,
+        "recreate_mode": false,
+        "random_object_information": []
+    },
+    "command_history_raw": [
+        [
+            [
+                2,
+                "sw_card",
+                0
+            ],
+            [
+                4,
+                "choose 1",
+                2
+            ],
+            [
+                7,
+                "skill 1 15 14 13",
+                4
+            ],
+            [
+                16,
+                "sw_char 0 12",
+                7
+            ],
+            [
+                18,
+                "skill 1 11 10 9",
+                8
+            ],
+            [
+                30,
+                "sw_char 1 8",
+                10
+            ],
+            [
+                34,
+                "sw_char 0 7",
+                11
+            ],
+            [
+                36,
+                "card 1 0 6 5 4",
+                12
+            ],
+            [
+                51,
+                "skill 1 3 2 1",
+                16
+            ],
+            [
+                60,
+                "end",
+                19
+            ],
+            [
+                69,
+                "skill 3 15 14 13",
+                21
+            ],
+            [
+                76,
+                "skill 1 12 11 10",
+                23
+            ],
+            [
+                86,
+                "choose 1",
+                25
+            ],
+            [
+                87,
+                "skill 1 9 8 7",
+                26
+            ],
+            [
+                92,
+                "end",
+                28
+            ],
+            [
+                103,
+                "skill 1 15 14 13",
+                30
+            ],
+            [
+                110,
+                "skill 1 12 11 10",
+                33
+            ],
+            [
+                115,
+                "end",
+                35
+            ]
+        ],
+        [
+            [
+                2,
+                "sw_card 4 3",
+                1
+            ],
+            [
+                4,
+                "choose 0",
+                3
+            ],
+            [
+                10,
+                "card 2 0",
+                5
+            ],
+            [
+                13,
+                "skill 1 15 14 13",
+                6
+            ],
+            [
+                25,
+                "card 2 0 12 11 10",
+                9
+            ],
+            [
+                42,
+                "sw_char 1 9",
+                13
+            ],
+            [
+                46,
+                "sw_char 0 8",
+                14
+            ],
+            [
+                48,
+                "skill 3 7 6 5",
+                15
+            ],
+            [
+                54,
+                "sw_char 2 4",
+                17
+            ],
+            [
+                58,
+                "end",
+                18
+            ],
+            [
+                67,
+                "sw_char 0 15",
+                20
+            ],
+            [
+                73,
+                "skill 1 14 13 12",
+                22
+            ],
+            [
+                83,
+                "skill 0 11 10 9",
+                24
+            ],
+            [
+                106,
+                "choose 2",
+                31
+            ],
+            [
+                107,
+                "end",
+                32
+            ],
+            [
+                107,
+                "skill 1 12 11 10",
+                32
+            ],
+            [
+                113,
+                "end",
+                34
+            ],
+            [
+                123,
+                "choose 1",
+                36
+            ],
+            [
+                123,
+                "card 0 0",
+                36
+            ]
+        ]
+    ]
+}
\ No newline at end of file
diff --git a/tests/server/patch/v44/jsons/silver.json b/tests/server/patch/v44/jsons/silver.json
new file mode 100644
index 00000000..85eebf97
--- /dev/null
+++ b/tests/server/patch/v44/jsons/silver.json
@@ -0,0 +1,1046 @@
+{
+    "match_random_state": [
+        "MT19937",
+        [
+            2147483648,
+            852258933,
+            3037751817,
+            2843736348,
+            2346345909,
+            241038820,
+            3630833971,
+            322381140,
+            1250305161,
+            1459257731,
+            3694471596,
+            515911843,
+            3937938455,
+            2827679987,
+            3950882980,
+            3581943267,
+            4151002148,
+            1618076744,
+            3274872619,
+            2159583707,
+            1559018499,
+            1583145829,
+            1179320338,
+            3113356017,
+            1931467408,
+            2410284883,
+            753436273,
+            437428593,
+            510572609,
+            2706055346,
+            879811753,
+            825585750,
+            2401349358,
+            2490929089,
+            3977100308,
+            4231974237,
+            3442070342,
+            2600699322,
+            3596477700,
+            3408240710,
+            3752939454,
+            3842241914,
+            2634979991,
+            739520375,
+            3739104881,
+            2527561182,
+            1297315978,
+            1316945693,
+            1727810483,
+            3695100167,
+            1453832382,
+            979363388,
+            3076017079,
+            3732405838,
+            1444648514,
+            4151023880,
+            2205533946,
+            4261855231,
+            4267702982,
+            2647124900,
+            1484461652,
+            1998843354,
+            4035414622,
+            4156165081,
+            322695412,
+            2240084797,
+            218965524,
+            2620616784,
+            2355246093,
+            353075890,
+            807460217,
+            2080397923,
+            2949113800,
+            3746761770,
+            4204485378,
+            2925858822,
+            940465313,
+            2978225661,
+            1552046939,
+            3792670316,
+            4122385657,
+            3233513602,
+            1380874839,
+            984796113,
+            886794804,
+            4153798316,
+            717328536,
+            469185684,
+            3765962743,
+            4135056014,
+            3479073223,
+            3023129426,
+            4222684062,
+            3850877054,
+            224467384,
+            3087354214,
+            1680195562,
+            2193347842,
+            2684173028,
+            1880093036,
+            3229242389,
+            3049410427,
+            1279447835,
+            332094632,
+            1579758630,
+            3710374238,
+            2337675471,
+            115759493,
+            4211910051,
+            3915073058,
+            1108976576,
+            2071829022,
+            3748361252,
+            3666084797,
+            3192128605,
+            604670057,
+            188878253,
+            403907626,
+            3217757074,
+            1892194987,
+            378411265,
+            573022174,
+            3720006947,
+            254195013,
+            1584935511,
+            3553011007,
+            1370455926,
+            1537144829,
+            2822387189,
+            2441227067,
+            1172427512,
+            1810388875,
+            597276150,
+            3442654859,
+            1319639025,
+            1278428752,
+            3109211997,
+            3125310769,
+            1778730908,
+            2179046274,
+            529756476,
+            3028614397,
+            390243483,
+            2580809143,
+            2253747482,
+            645716549,
+            4069787277,
+            3392915288,
+            1804927866,
+            2998699909,
+            3486738826,
+            2249333105,
+            2840926426,
+            832811354,
+            2642376678,
+            2647298729,
+            2972210951,
+            3980432569,
+            2414014267,
+            3379616787,
+            827881623,
+            2006639651,
+            2739098202,
+            4142232454,
+            1674001832,
+            387416494,
+            1242487127,
+            3900036886,
+            1084620969,
+            4223529924,
+            2384308612,
+            2101645863,
+            1707720038,
+            3225537336,
+            1571082365,
+            4196493122,
+            2164372558,
+            3866850114,
+            2805868839,
+            675209309,
+            4179066360,
+            3625074731,
+            3089956980,
+            3293027876,
+            3902965037,
+            1224438018,
+            1224895899,
+            2575389666,
+            3357949449,
+            2384469209,
+            3700336215,
+            338019398,
+            3289126851,
+            2769703855,
+            390722640,
+            2704007496,
+            2883292084,
+            1965587089,
+            1025300549,
+            619699852,
+            1043025444,
+            3803785664,
+            922193774,
+            151167841,
+            2126109206,
+            3168147631,
+            2865122591,
+            3327041069,
+            3373701209,
+            9353399,
+            473750565,
+            3028380130,
+            1467951504,
+            4190922997,
+            589795710,
+            942553933,
+            937635948,
+            298315070,
+            415821393,
+            4041939848,
+            372373022,
+            3689582099,
+            519737891,
+            4233378103,
+            1157474098,
+            138790908,
+            770838763,
+            430623945,
+            814484707,
+            2853558444,
+            3213795543,
+            3845643860,
+            2512330672,
+            1336888278,
+            572322181,
+            1282342669,
+            920514674,
+            2038291972,
+            3149365870,
+            4102830575,
+            3549173955,
+            3684993693,
+            1356278478,
+            1775628726,
+            213156443,
+            2298969406,
+            2717355438,
+            1572856796,
+            1513647543,
+            2132855513,
+            1986873076,
+            3528225839,
+            308723273,
+            292601737,
+            1277750001,
+            1679680638,
+            2785246156,
+            3878540692,
+            471870265,
+            668186544,
+            2580697021,
+            2706131701,
+            1695560777,
+            2843565854,
+            332232130,
+            1424790421,
+            2379530317,
+            4168717850,
+            974529721,
+            2592398077,
+            1897652930,
+            1672473548,
+            1312396662,
+            1869749067,
+            2084827226,
+            73229630,
+            1974021446,
+            3205173810,
+            874883708,
+            2176709342,
+            2290870532,
+            2232221173,
+            11665963,
+            3617533180,
+            2066756895,
+            869614124,
+            248729098,
+            3168320955,
+            2513792026,
+            1546475412,
+            3754194653,
+            1731401296,
+            669770116,
+            1064448459,
+            2396128651,
+            1085107150,
+            2799824622,
+            1789749972,
+            2034050724,
+            2306132503,
+            2368269703,
+            338106206,
+            3551116912,
+            2236740658,
+            3994225500,
+            1393516086,
+            814315152,
+            4115786034,
+            1931073526,
+            3698510923,
+            3264469706,
+            1200777713,
+            3605887842,
+            537661941,
+            99637609,
+            739482224,
+            4131737706,
+            2971745240,
+            1636938568,
+            461809637,
+            1293154012,
+            2051347708,
+            3415492749,
+            309673494,
+            1718449666,
+            895136483,
+            459169287,
+            3758491237,
+            1484777584,
+            2985652876,
+            3690529376,
+            2814466466,
+            3761286303,
+            2906796347,
+            1770927703,
+            66989981,
+            1227151467,
+            740432923,
+            1742669766,
+            4108895627,
+            1129792952,
+            4217696861,
+            1581599772,
+            2822850338,
+            1371889226,
+            2928171633,
+            337314434,
+            1287812001,
+            2566385880,
+            1016557934,
+            1521694314,
+            1446569819,
+            494280377,
+            3605614928,
+            1750373709,
+            1917104935,
+            1005209477,
+            3290246820,
+            2435278462,
+            2392228341,
+            1860566250,
+            3604753061,
+            1545385861,
+            179541456,
+            1095359,
+            2235243074,
+            3565546844,
+            1848692563,
+            3296532274,
+            932183734,
+            2678033798,
+            2819310696,
+            372402397,
+            2849752546,
+            3300638946,
+            979341372,
+            2027134812,
+            3377292468,
+            776160986,
+            876596828,
+            3411844979,
+            3807986688,
+            2828349004,
+            2667246233,
+            2887674321,
+            3417530634,
+            4192745201,
+            1514743338,
+            1486186234,
+            3599480114,
+            2220700932,
+            877264426,
+            3683620224,
+            1791677875,
+            1576589409,
+            3371864729,
+            239577320,
+            664674279,
+            97455638,
+            671315040,
+            4098637571,
+            1233610174,
+            2528631470,
+            4181767203,
+            4188289355,
+            201010882,
+            2613994903,
+            3722085049,
+            464425505,
+            3872757292,
+            1251239949,
+            155862569,
+            1690852071,
+            958025955,
+            3882516403,
+            11720145,
+            1377457109,
+            611510219,
+            4258313417,
+            2145041081,
+            230603729,
+            108822725,
+            2878554314,
+            1764726348,
+            2813464509,
+            2430757019,
+            1893470021,
+            2345837745,
+            3504885831,
+            471263087,
+            3448186974,
+            91510807,
+            1692101012,
+            870758111,
+            279967414,
+            2975906051,
+            831331682,
+            714973860,
+            895403271,
+            1946906216,
+            2175407141,
+            294729832,
+            663378707,
+            4040948408,
+            371079217,
+            3849217943,
+            3167620631,
+            2106715634,
+            4270851423,
+            4180090782,
+            2160180184,
+            3446426895,
+            3057856044,
+            1623629695,
+            1938845385,
+            1992740005,
+            2620458046,
+            602642578,
+            168172447,
+            1859880120,
+            3105244601,
+            3397983984,
+            4209231162,
+            116203150,
+            2166700138,
+            679395399,
+            1591101135,
+            1511475060,
+            3865776260,
+            3861604114,
+            2333630785,
+            578347291,
+            107805155,
+            1281990800,
+            2331362412,
+            2805566554,
+            1392433873,
+            4113871053,
+            1681686757,
+            1317522404,
+            263062625,
+            3972207482,
+            871540459,
+            858793555,
+            3378130229,
+            1638925065,
+            3644427872,
+            425845250,
+            4199381058,
+            138738749,
+            4064868817,
+            641652061,
+            3293641471,
+            2781033146,
+            2433876171,
+            958379132,
+            515825137,
+            1920938822,
+            508669000,
+            1996074650,
+            1132963176,
+            112386699,
+            4020276217,
+            3307649861,
+            712492536,
+            752257327,
+            703177072,
+            655737206,
+            1936095049,
+            2870883815,
+            750441059,
+            531193802,
+            3887354491,
+            3768893981,
+            758096438,
+            763690471,
+            1177380930,
+            836758118,
+            1370880236,
+            2406562066,
+            3117758426,
+            38974763,
+            729452259,
+            563449846,
+            2410187015,
+            1585606395,
+            4205777270,
+            2173618669,
+            3178196512,
+            1074979883,
+            4149809984,
+            3286590086,
+            2021554321,
+            4088426121,
+            3079684553,
+            1917337899,
+            2966649180,
+            2899231799,
+            1062888899,
+            1306359486,
+            876671599,
+            3348080246,
+            1542570792,
+            3517583561,
+            164390915,
+            135607212,
+            1392292837,
+            1540942523,
+            2587272281,
+            974783651,
+            3971944422,
+            1315415300,
+            1419043995,
+            3194113563,
+            495692306,
+            3087088482,
+            735847283,
+            2418041689,
+            2761711941,
+            608441639,
+            3606420410,
+            2500421680,
+            2129584375,
+            4277314193,
+            362285431,
+            3829261316,
+            3033449623,
+            2726841579,
+            2856071091,
+            1282567563,
+            1399900137,
+            1288485551,
+            1784276086,
+            3203384342,
+            2304811961,
+            4188374470,
+            2799600913,
+            1668300233,
+            3487044801,
+            345405685,
+            68861045,
+            4149051636,
+            630962370,
+            3809297774,
+            3497678965,
+            2777356018,
+            1131508456,
+            3088811640,
+            2916362619,
+            3604683426,
+            1367656029,
+            3164360959,
+            3464800203,
+            2727920289,
+            3993785877,
+            410872094,
+            933194096,
+            1088600539,
+            3511204625,
+            818519978,
+            4217773289,
+            4016704403,
+            2742865381,
+            2118058332,
+            2028824770,
+            3585206344,
+            3620279056,
+            4291530408,
+            748541778,
+            1337473025,
+            2734790168,
+            2153414969,
+            1554090190,
+            4147260811,
+            1053913480,
+            4166858558,
+            1486762641,
+            34008703,
+            2957308893,
+            3461353779,
+            3720643435,
+            476418844,
+            2092109162,
+            1388524448
+        ],
+        623,
+        0,
+        0
+    ],
+    "start_deck": [
+        "default_version:4.4\ncharacter:AnemoMobMage@1.0\ncharacter:CryoMob@1.0\ncharacter:PyroMobMage@1.0\ncharacter:Sangonomiya Kokomi@3.6\nMushroom Pizza@3.3\nMushroom Pizza@3.3\nMushroom Pizza@3.3\nMushroom Pizza@3.3\nMushroom Pizza@3.3\nMushroom Pizza@3.3\nMushroom Pizza@3.3\nMushroom Pizza@3.3\nMushroom Pizza@3.3\nMushroom Pizza@3.3\nMatsutake Meat Rolls@4.4\nMatsutake Meat Rolls@4.4\nMatsutake Meat Rolls@4.4\nMatsutake Meat Rolls@4.4\nMatsutake Meat Rolls@4.4\nMatsutake Meat Rolls@4.4\nMatsutake Meat Rolls@4.4\nMatsutake Meat Rolls@4.4\nMatsutake Meat Rolls@4.4\nMatsutake Meat Rolls@4.4\nSilver and Melus@4.4\nSilver and Melus@4.4\nSilver and Melus@4.4\nSilver and Melus@4.4\nSilver and Melus@4.4\nSilver and Melus@4.4\nSilver and Melus@4.4\nSilver and Melus@4.4\nSilver and Melus@4.4\nSilver and Melus@4.4\n",
+        "default_version:4.4\ncharacter:AnemoMobMage@1.0\ncharacter:CryoMob@1.0\ncharacter:PyroMobMage@1.0\ncharacter:Sangonomiya Kokomi@3.6\nMushroom Pizza@3.3\nMushroom Pizza@3.3\nMushroom Pizza@3.3\nMushroom Pizza@3.3\nMushroom Pizza@3.3\nMushroom Pizza@3.3\nMushroom Pizza@3.3\nMushroom Pizza@3.3\nMushroom Pizza@3.3\nMushroom Pizza@3.3\nMatsutake Meat Rolls@4.4\nMatsutake Meat Rolls@4.4\nMatsutake Meat Rolls@4.4\nMatsutake Meat Rolls@4.4\nMatsutake Meat Rolls@4.4\nMatsutake Meat Rolls@4.4\nMatsutake Meat Rolls@4.4\nMatsutake Meat Rolls@4.4\nMatsutake Meat Rolls@4.4\nMatsutake Meat Rolls@4.4\nSilver and Melus@4.4\nSilver and Melus@4.4\nSilver and Melus@4.4\nSilver and Melus@4.4\nSilver and Melus@4.4\nSilver and Melus@4.4\nSilver and Melus@4.4\nSilver and Melus@4.4\nSilver and Melus@4.4\nSilver and Melus@4.4\n"
+    ],
+    "command_history": [
+        [
+            "TEST 1 10 10 10 10 10 10 10 10",
+            "TEST 3 p0",
+            "TEST 6 p0 5",
+            "TEST 3 p1",
+            "TEST 6 p1 5",
+            "sw_card 1",
+            "TEST 1 10 10 10 10 10 10 10 10",
+            "TEST 3 p0",
+            "TEST 6 p0 5",
+            "TEST 3 p1",
+            "TEST 6 p1 5",
+            "choose 1",
+            "TEST 1 10 10 10 10 10 10 10 10",
+            "TEST 3 p0",
+            "TEST 6 p0 5",
+            "TEST 3 p1",
+            "TEST 6 p1 5",
+            "card 2 0 15",
+            "TEST 1 10 10 10 10 10 10 10 10",
+            "TEST 3 p0 0",
+            "TEST 6 p0 4",
+            "TEST 3 p1",
+            "TEST 6 p1 5",
+            "skill 0 14 13 12",
+            "TEST 1 10 8 10 10 10 8 10 10",
+            "TEST 3 p0 0",
+            "TEST 6 p0 4",
+            "TEST 3 p1",
+            "TEST 6 p1 5",
+            "skill 0 11 10 9",
+            "TEST 1 10 5 10 10 10 7 10 10",
+            "TEST 3 p0 0",
+            "TEST 6 p0 4",
+            "TEST 3 p1",
+            "TEST 6 p1 4",
+            "skill 1 8 7 6",
+            "TEST 1 10 5 10 10 10 4 10 10",
+            "TEST 3 p0 1",
+            "TEST 6 p0 4",
+            "TEST 3 p1",
+            "TEST 6 p1 4",
+            "skill 1 5 4 3",
+            "TEST 1 10 5 10 10 10 4 10 7",
+            "TEST 3 p0 1",
+            "TEST 6 p0 4",
+            "TEST 3 p1",
+            "TEST 6 p1 4",
+            "end",
+            "TEST 1 9 3 9 9 10 5 10 7",
+            "TEST 3 p0 1",
+            "TEST 6 p0 6",
+            "TEST 3 p1",
+            "TEST 6 p1 8",
+            "sw_char 0 15",
+            "TEST 1 9 3 9 9 10 5 10 7",
+            "TEST 3 p0 1",
+            "TEST 6 p0 6",
+            "TEST 3 p1",
+            "TEST 6 p1 8",
+            "sw_char 3 14",
+            "TEST 1 9 3 9 9 10 5 10 7",
+            "TEST 3 p0 1",
+            "TEST 6 p0 6",
+            "TEST 3 p1",
+            "TEST 6 p1 8",
+            "sw_char 0 13",
+            "TEST 1 9 3 9 9 10 7 10 7",
+            "TEST 3 p0 1",
+            "TEST 6 p0 6",
+            "TEST 3 p1 3",
+            "TEST 6 p1 6",
+            "skill 0 12 11 10",
+            "TEST 1 9 3 9 9 9 5 9 6",
+            "TEST 3 p0 3",
+            "TEST 6 p0 6",
+            "TEST 3 p1 3",
+            "TEST 6 p1 6",
+            "card 4 0 9",
+            "TEST 1 9 3 9 9 9 5 9 6",
+            "TEST 3 p0 3 3",
+            "TEST 6 p0 5",
+            "TEST 3 p1 3",
+            "TEST 6 p1 6",
+            "skill 0 8 7 6",
+            "TEST 1 9 3 9 9 9 5 9 5",
+            "TEST 3 p0 3 3",
+            "TEST 6 p0 5",
+            "TEST 3 p1 3",
+            "TEST 6 p1 6",
+            "sw_char 2 5",
+            "TEST 1 9 3 9 9 9 5 9 5",
+            "TEST 3 p0 3 3",
+            "TEST 6 p0 5",
+            "TEST 3 p1 3",
+            "TEST 6 p1 6",
+            "skill 0 4 3 2",
+            "TEST 1 9 3 9 9 9 5 9 4",
+            "TEST 3 p0 4 4",
+            "TEST 6 p0 5",
+            "TEST 3 p1 3",
+            "TEST 6 p1 6",
+            "end"
+        ],
+        [
+            "TEST 1 10 10 10 10 10 10 10 10",
+            "TEST 3 p0",
+            "TEST 6 p0 5",
+            "TEST 3 p1",
+            "TEST 6 p1 5",
+            "sw_card 1 2 3",
+            "TEST 1 10 10 10 10 10 10 10 10",
+            "TEST 3 p0",
+            "TEST 6 p0 5",
+            "TEST 3 p1",
+            "TEST 6 p1 5",
+            "choose 1",
+            "TEST 1 10 10 10 10 10 8 10 10",
+            "TEST 3 p0 0",
+            "TEST 6 p0 4",
+            "TEST 3 p1",
+            "TEST 6 p1 5",
+            "skill 0 15 14 13",
+            "TEST 1 10 8 10 10 10 6 10 10",
+            "TEST 3 p0 0",
+            "TEST 6 p0 4",
+            "TEST 3 p1",
+            "TEST 6 p1 5",
+            "card 0 0 12",
+            "TEST 1 10 8 10 10 10 7 10 10",
+            "TEST 3 p0 0",
+            "TEST 6 p0 4",
+            "TEST 3 p1",
+            "TEST 6 p1 4",
+            "skill 1 11 10 9",
+            "TEST 1 10 5 10 10 10 4 10 10",
+            "TEST 3 p0 1",
+            "TEST 6 p0 4",
+            "TEST 3 p1",
+            "TEST 6 p1 4",
+            "sw_char 3 8",
+            "TEST 1 10 5 10 10 10 4 10 7",
+            "TEST 3 p0 1",
+            "TEST 6 p0 4",
+            "TEST 3 p1",
+            "TEST 6 p1 4",
+            "skill 1 7 6 5",
+            "TEST 1 10 5 10 10 10 4 10 7",
+            "TEST 3 p0 1",
+            "TEST 6 p0 4",
+            "TEST 3 p1",
+            "TEST 6 p1 4",
+            "card 2 0 4",
+            "TEST 1 10 5 10 10 10 4 10 7",
+            "TEST 3 p0 1",
+            "TEST 6 p0 4",
+            "TEST 3 p1 1",
+            "TEST 6 p1 3",
+            "sw_char 0 3",
+            "TEST 1 10 5 10 10 10 4 10 7",
+            "TEST 3 p0 1",
+            "TEST 6 p0 4",
+            "TEST 3 p1 1",
+            "TEST 6 p1 3",
+            "skill 0 2 1 0",
+            "TEST 1 9 4 9 9 10 4 10 7",
+            "TEST 3 p0 1",
+            "TEST 6 p0 4",
+            "TEST 3 p1 2",
+            "TEST 6 p1 3",
+            "end",
+            "TEST 1 9 3 9 9 10 5 10 7",
+            "TEST 3 p0 1",
+            "TEST 6 p0 6",
+            "TEST 3 p1",
+            "TEST 6 p1 8",
+            "sw_char 3 15",
+            "TEST 1 9 3 9 9 10 5 10 7",
+            "TEST 3 p0 1",
+            "TEST 6 p0 6",
+            "TEST 3 p1",
+            "TEST 6 p1 8",
+            "skill 1 14 13 12",
+            "TEST 1 9 3 9 9 10 5 10 7",
+            "TEST 3 p0 1",
+            "TEST 6 p0 6",
+            "TEST 3 p1",
+            "TEST 6 p1 8",
+            "card 3 0 11 10",
+            "TEST 1 9 3 9 9 10 7 10 7",
+            "TEST 3 p0 1",
+            "TEST 6 p0 6",
+            "TEST 3 p1",
+            "TEST 6 p1 7",
+            "card 5 0 9",
+            "TEST 1 9 3 9 9 10 7 10 7",
+            "TEST 3 p0 1",
+            "TEST 6 p0 6",
+            "TEST 3 p1 3",
+            "TEST 6 p1 6",
+            "end",
+            "TEST 1 9 3 7 9 9 7 9 5",
+            "TEST 3 p0",
+            "TEST 6 p0 15",
+            "TEST 3 p1",
+            "TEST 6 p1 11",
+            "sw_char 1 15"
+        ]
+    ],
+    "match_config": {
+        "random_first_player": false,
+        "player_go_first": 0,
+        "check_deck_restriction": false,
+        "initial_hand_size": 5,
+        "initial_card_draw": 2,
+        "initial_dice_number": 16,
+        "initial_dice_reroll_times": 1,
+        "card_number": null,
+        "max_same_card_number": null,
+        "character_number": null,
+        "max_round_number": 999,
+        "max_hand_size": 999,
+        "max_dice_number": 16,
+        "max_summon_number": 4,
+        "max_support_number": 4,
+        "make_skill_prediction": false,
+        "history_level": 10,
+        "compress_history": true,
+        "recreate_mode": false,
+        "random_object_information": []
+    },
+    "command_history_raw": [
+        [
+            [
+                2,
+                "sw_card 1",
+                0
+            ],
+            [
+                4,
+                "choose 1",
+                2
+            ],
+            [
+                7,
+                "card 2 0 15",
+                4
+            ],
+            [
+                10,
+                "skill 0 14 13 12",
+                5
+            ],
+            [
+                16,
+                "skill 0 11 10 9",
+                7
+            ],
+            [
+                25,
+                "skill 1 8 7 6",
+                10
+            ],
+            [
+                30,
+                "skill 1 5 4 3",
+                12
+            ],
+            [
+                36,
+                "end",
+                14
+            ],
+            [
+                54,
+                "sw_char 0 15",
+                19
+            ],
+            [
+                58,
+                "sw_char 3 14",
+                21
+            ],
+            [
+                63,
+                "sw_char 0 13",
+                23
+            ],
+            [
+                73,
+                "skill 0 12 11 10",
+                27
+            ],
+            [
+                76,
+                "card 4 0 9",
+                28
+            ],
+            [
+                79,
+                "skill 0 8 7 6",
+                29
+            ],
+            [
+                82,
+                "sw_char 2 5",
+                30
+            ],
+            [
+                84,
+                "skill 0 4 3 2",
+                31
+            ],
+            [
+                87,
+                "end",
+                32
+            ]
+        ],
+        [
+            [
+                2,
+                "sw_card 1 2 3",
+                1
+            ],
+            [
+                4,
+                "choose 1",
+                3
+            ],
+            [
+                13,
+                "skill 0 15 14 13",
+                6
+            ],
+            [
+                19,
+                "card 0 0 12",
+                8
+            ],
+            [
+                22,
+                "skill 1 11 10 9",
+                9
+            ],
+            [
+                28,
+                "sw_char 3 8",
+                11
+            ],
+            [
+                33,
+                "skill 1 7 6 5",
+                13
+            ],
+            [
+                38,
+                "card 2 0 4",
+                15
+            ],
+            [
+                41,
+                "sw_char 0 3",
+                16
+            ],
+            [
+                43,
+                "skill 0 2 1 0",
+                17
+            ],
+            [
+                46,
+                "end",
+                18
+            ],
+            [
+                56,
+                "sw_char 3 15",
+                20
+            ],
+            [
+                60,
+                "skill 1 14 13 12",
+                22
+            ],
+            [
+                65,
+                "card 3 0 11 10",
+                24
+            ],
+            [
+                68,
+                "card 5 0 9",
+                25
+            ],
+            [
+                71,
+                "end",
+                26
+            ],
+            [
+                98,
+                "sw_char 1 15",
+                33
+            ]
+        ]
+    ]
+}
\ No newline at end of file
diff --git a/tests/server/patch/v44/jsons/thoma.json b/tests/server/patch/v44/jsons/thoma.json
new file mode 100644
index 00000000..f2b421dd
--- /dev/null
+++ b/tests/server/patch/v44/jsons/thoma.json
@@ -0,0 +1,852 @@
+{
+    "match_random_state": [
+        "MT19937",
+        [
+            2147483648,
+            852258933,
+            3037751817,
+            2843736348,
+            2346345909,
+            241038820,
+            3630833971,
+            322381140,
+            1250305161,
+            1459257731,
+            3694471596,
+            515911843,
+            3937938455,
+            2827679987,
+            3950882980,
+            3581943267,
+            4151002148,
+            1618076744,
+            3274872619,
+            2159583707,
+            1559018499,
+            1583145829,
+            1179320338,
+            3113356017,
+            1931467408,
+            2410284883,
+            753436273,
+            437428593,
+            510572609,
+            2706055346,
+            879811753,
+            825585750,
+            2401349358,
+            2490929089,
+            3977100308,
+            4231974237,
+            3442070342,
+            2600699322,
+            3596477700,
+            3408240710,
+            3752939454,
+            3842241914,
+            2634979991,
+            739520375,
+            3739104881,
+            2527561182,
+            1297315978,
+            1316945693,
+            1727810483,
+            3695100167,
+            1453832382,
+            979363388,
+            3076017079,
+            3732405838,
+            1444648514,
+            4151023880,
+            2205533946,
+            4261855231,
+            4267702982,
+            2647124900,
+            1484461652,
+            1998843354,
+            4035414622,
+            4156165081,
+            322695412,
+            2240084797,
+            218965524,
+            2620616784,
+            2355246093,
+            353075890,
+            807460217,
+            2080397923,
+            2949113800,
+            3746761770,
+            4204485378,
+            2925858822,
+            940465313,
+            2978225661,
+            1552046939,
+            3792670316,
+            4122385657,
+            3233513602,
+            1380874839,
+            984796113,
+            886794804,
+            4153798316,
+            717328536,
+            469185684,
+            3765962743,
+            4135056014,
+            3479073223,
+            3023129426,
+            4222684062,
+            3850877054,
+            224467384,
+            3087354214,
+            1680195562,
+            2193347842,
+            2684173028,
+            1880093036,
+            3229242389,
+            3049410427,
+            1279447835,
+            332094632,
+            1579758630,
+            3710374238,
+            2337675471,
+            115759493,
+            4211910051,
+            3915073058,
+            1108976576,
+            2071829022,
+            3748361252,
+            3666084797,
+            3192128605,
+            604670057,
+            188878253,
+            403907626,
+            3217757074,
+            1892194987,
+            378411265,
+            573022174,
+            3720006947,
+            254195013,
+            1584935511,
+            3553011007,
+            1370455926,
+            1537144829,
+            2822387189,
+            2441227067,
+            1172427512,
+            1810388875,
+            597276150,
+            3442654859,
+            1319639025,
+            1278428752,
+            3109211997,
+            3125310769,
+            1778730908,
+            2179046274,
+            529756476,
+            3028614397,
+            390243483,
+            2580809143,
+            2253747482,
+            645716549,
+            4069787277,
+            3392915288,
+            1804927866,
+            2998699909,
+            3486738826,
+            2249333105,
+            2840926426,
+            832811354,
+            2642376678,
+            2647298729,
+            2972210951,
+            3980432569,
+            2414014267,
+            3379616787,
+            827881623,
+            2006639651,
+            2739098202,
+            4142232454,
+            1674001832,
+            387416494,
+            1242487127,
+            3900036886,
+            1084620969,
+            4223529924,
+            2384308612,
+            2101645863,
+            1707720038,
+            3225537336,
+            1571082365,
+            4196493122,
+            2164372558,
+            3866850114,
+            2805868839,
+            675209309,
+            4179066360,
+            3625074731,
+            3089956980,
+            3293027876,
+            3902965037,
+            1224438018,
+            1224895899,
+            2575389666,
+            3357949449,
+            2384469209,
+            3700336215,
+            338019398,
+            3289126851,
+            2769703855,
+            390722640,
+            2704007496,
+            2883292084,
+            1965587089,
+            1025300549,
+            619699852,
+            1043025444,
+            3803785664,
+            922193774,
+            151167841,
+            2126109206,
+            3168147631,
+            2865122591,
+            3327041069,
+            3373701209,
+            9353399,
+            473750565,
+            3028380130,
+            1467951504,
+            4190922997,
+            589795710,
+            942553933,
+            937635948,
+            298315070,
+            415821393,
+            4041939848,
+            372373022,
+            3689582099,
+            519737891,
+            4233378103,
+            1157474098,
+            138790908,
+            770838763,
+            430623945,
+            814484707,
+            2853558444,
+            3213795543,
+            3845643860,
+            2512330672,
+            1336888278,
+            572322181,
+            1282342669,
+            920514674,
+            2038291972,
+            3149365870,
+            4102830575,
+            3549173955,
+            3684993693,
+            1356278478,
+            1775628726,
+            213156443,
+            2298969406,
+            2717355438,
+            1572856796,
+            1513647543,
+            2132855513,
+            1986873076,
+            3528225839,
+            308723273,
+            292601737,
+            1277750001,
+            1679680638,
+            2785246156,
+            3878540692,
+            471870265,
+            668186544,
+            2580697021,
+            2706131701,
+            1695560777,
+            2843565854,
+            332232130,
+            1424790421,
+            2379530317,
+            4168717850,
+            974529721,
+            2592398077,
+            1897652930,
+            1672473548,
+            1312396662,
+            1869749067,
+            2084827226,
+            73229630,
+            1974021446,
+            3205173810,
+            874883708,
+            2176709342,
+            2290870532,
+            2232221173,
+            11665963,
+            3617533180,
+            2066756895,
+            869614124,
+            248729098,
+            3168320955,
+            2513792026,
+            1546475412,
+            3754194653,
+            1731401296,
+            669770116,
+            1064448459,
+            2396128651,
+            1085107150,
+            2799824622,
+            1789749972,
+            2034050724,
+            2306132503,
+            2368269703,
+            338106206,
+            3551116912,
+            2236740658,
+            3994225500,
+            1393516086,
+            814315152,
+            4115786034,
+            1931073526,
+            3698510923,
+            3264469706,
+            1200777713,
+            3605887842,
+            537661941,
+            99637609,
+            739482224,
+            4131737706,
+            2971745240,
+            1636938568,
+            461809637,
+            1293154012,
+            2051347708,
+            3415492749,
+            309673494,
+            1718449666,
+            895136483,
+            459169287,
+            3758491237,
+            1484777584,
+            2985652876,
+            3690529376,
+            2814466466,
+            3761286303,
+            2906796347,
+            1770927703,
+            66989981,
+            1227151467,
+            740432923,
+            1742669766,
+            4108895627,
+            1129792952,
+            4217696861,
+            1581599772,
+            2822850338,
+            1371889226,
+            2928171633,
+            337314434,
+            1287812001,
+            2566385880,
+            1016557934,
+            1521694314,
+            1446569819,
+            494280377,
+            3605614928,
+            1750373709,
+            1917104935,
+            1005209477,
+            3290246820,
+            2435278462,
+            2392228341,
+            1860566250,
+            3604753061,
+            1545385861,
+            179541456,
+            1095359,
+            2235243074,
+            3565546844,
+            1848692563,
+            3296532274,
+            932183734,
+            2678033798,
+            2819310696,
+            372402397,
+            2849752546,
+            3300638946,
+            979341372,
+            2027134812,
+            3377292468,
+            776160986,
+            876596828,
+            3411844979,
+            3807986688,
+            2828349004,
+            2667246233,
+            2887674321,
+            3417530634,
+            4192745201,
+            1514743338,
+            1486186234,
+            3599480114,
+            2220700932,
+            877264426,
+            3683620224,
+            1791677875,
+            1576589409,
+            3371864729,
+            239577320,
+            664674279,
+            97455638,
+            671315040,
+            4098637571,
+            1233610174,
+            2528631470,
+            4181767203,
+            4188289355,
+            201010882,
+            2613994903,
+            3722085049,
+            464425505,
+            3872757292,
+            1251239949,
+            155862569,
+            1690852071,
+            958025955,
+            3882516403,
+            11720145,
+            1377457109,
+            611510219,
+            4258313417,
+            2145041081,
+            230603729,
+            108822725,
+            2878554314,
+            1764726348,
+            2813464509,
+            2430757019,
+            1893470021,
+            2345837745,
+            3504885831,
+            471263087,
+            3448186974,
+            91510807,
+            1692101012,
+            870758111,
+            279967414,
+            2975906051,
+            831331682,
+            714973860,
+            895403271,
+            1946906216,
+            2175407141,
+            294729832,
+            663378707,
+            4040948408,
+            371079217,
+            3849217943,
+            3167620631,
+            2106715634,
+            4270851423,
+            4180090782,
+            2160180184,
+            3446426895,
+            3057856044,
+            1623629695,
+            1938845385,
+            1992740005,
+            2620458046,
+            602642578,
+            168172447,
+            1859880120,
+            3105244601,
+            3397983984,
+            4209231162,
+            116203150,
+            2166700138,
+            679395399,
+            1591101135,
+            1511475060,
+            3865776260,
+            3861604114,
+            2333630785,
+            578347291,
+            107805155,
+            1281990800,
+            2331362412,
+            2805566554,
+            1392433873,
+            4113871053,
+            1681686757,
+            1317522404,
+            263062625,
+            3972207482,
+            871540459,
+            858793555,
+            3378130229,
+            1638925065,
+            3644427872,
+            425845250,
+            4199381058,
+            138738749,
+            4064868817,
+            641652061,
+            3293641471,
+            2781033146,
+            2433876171,
+            958379132,
+            515825137,
+            1920938822,
+            508669000,
+            1996074650,
+            1132963176,
+            112386699,
+            4020276217,
+            3307649861,
+            712492536,
+            752257327,
+            703177072,
+            655737206,
+            1936095049,
+            2870883815,
+            750441059,
+            531193802,
+            3887354491,
+            3768893981,
+            758096438,
+            763690471,
+            1177380930,
+            836758118,
+            1370880236,
+            2406562066,
+            3117758426,
+            38974763,
+            729452259,
+            563449846,
+            2410187015,
+            1585606395,
+            4205777270,
+            2173618669,
+            3178196512,
+            1074979883,
+            4149809984,
+            3286590086,
+            2021554321,
+            4088426121,
+            3079684553,
+            1917337899,
+            2966649180,
+            2899231799,
+            1062888899,
+            1306359486,
+            876671599,
+            3348080246,
+            1542570792,
+            3517583561,
+            164390915,
+            135607212,
+            1392292837,
+            1540942523,
+            2587272281,
+            974783651,
+            3971944422,
+            1315415300,
+            1419043995,
+            3194113563,
+            495692306,
+            3087088482,
+            735847283,
+            2418041689,
+            2761711941,
+            608441639,
+            3606420410,
+            2500421680,
+            2129584375,
+            4277314193,
+            362285431,
+            3829261316,
+            3033449623,
+            2726841579,
+            2856071091,
+            1282567563,
+            1399900137,
+            1288485551,
+            1784276086,
+            3203384342,
+            2304811961,
+            4188374470,
+            2799600913,
+            1668300233,
+            3487044801,
+            345405685,
+            68861045,
+            4149051636,
+            630962370,
+            3809297774,
+            3497678965,
+            2777356018,
+            1131508456,
+            3088811640,
+            2916362619,
+            3604683426,
+            1367656029,
+            3164360959,
+            3464800203,
+            2727920289,
+            3993785877,
+            410872094,
+            933194096,
+            1088600539,
+            3511204625,
+            818519978,
+            4217773289,
+            4016704403,
+            2742865381,
+            2118058332,
+            2028824770,
+            3585206344,
+            3620279056,
+            4291530408,
+            748541778,
+            1337473025,
+            2734790168,
+            2153414969,
+            1554090190,
+            4147260811,
+            1053913480,
+            4166858558,
+            1486762641,
+            34008703,
+            2957308893,
+            3461353779,
+            3720643435,
+            476418844,
+            2092109162,
+            1388524448
+        ],
+        623,
+        0,
+        0
+    ],
+    "start_deck": [
+        "default_version:4.4\ncharacter:Sayu@4.4\ncharacter:Thoma@4.4\ncharacter:Mona@3.3\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\n",
+        "default_version:4.4\ncharacter:Sayu@4.4\ncharacter:Thoma@4.4\ncharacter:Mona@3.3\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\nA Subordinate's Skills@4.4\n"
+    ],
+    "command_history": [
+        [
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 4 p0",
+            "TEST 4 p1",
+            "sw_card",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 4 p0",
+            "TEST 4 p1",
+            "choose 1",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 4 p0",
+            "TEST 4 p1",
+            "skill 1 15 14 13",
+            "TEST 1 10 9 10 10 8 10",
+            "TEST 4 p0",
+            "TEST 4 p1 1",
+            "skill 0 12 11 10",
+            "TEST 1 10 7 10 10 7 10",
+            "TEST 4 p0",
+            "TEST 4 p1 1",
+            "skill 2 9 8 7",
+            "TEST 1 10 6 10 10 6 10",
+            "TEST 4 p0 2",
+            "TEST 4 p1 1 3",
+            "sw_char 2 6",
+            "TEST 1 10 6 10 10 6 10",
+            "TEST 4 p0 2",
+            "TEST 4 p1 1 3",
+            "skill 1 5 4 3",
+            "TEST 1 10 6 10 10 6 10",
+            "TEST 4 p0 2",
+            "TEST 4 p1 3",
+            "sw_char 0 2",
+            "TEST 1 10 6 10 10 6 10",
+            "TEST 4 p0 2",
+            "TEST 4 p1 3",
+            "end",
+            "TEST 1 8 6 10 9 6 10",
+            "TEST 4 p0 2",
+            "TEST 4 p1 3",
+            "skill 1 15 14 13"
+        ],
+        [
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 4 p0",
+            "TEST 4 p1",
+            "sw_card",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 4 p0",
+            "TEST 4 p1",
+            "choose 1",
+            "TEST 1 10 10 10 10 8 10",
+            "TEST 4 p0 1",
+            "TEST 4 p1",
+            "skill 1 15 14 13",
+            "TEST 1 10 9 10 10 7 10",
+            "TEST 4 p0",
+            "TEST 4 p1",
+            "skill 1 12 11 10",
+            "TEST 1 10 7 10 10 6 10",
+            "TEST 4 p0 1 2",
+            "TEST 4 p1",
+            "card 3 0 9 8 7",
+            "TEST 1 10 6 10 10 6 10",
+            "TEST 4 p0 2",
+            "TEST 4 p1 1 3",
+            "sw_char 0 6",
+            "TEST 1 10 6 10 10 6 10",
+            "TEST 4 p0 2",
+            "TEST 4 p1 3",
+            "skill 1 5 4 3",
+            "TEST 1 8 6 10 10 6 10",
+            "TEST 4 p0 2",
+            "TEST 4 p1 3",
+            "end",
+            "TEST 1 8 6 10 8 3 9",
+            "TEST 4 p0 2",
+            "TEST 4 p1 3",
+            "skill 0 15 14 13",
+            "TEST 1 5 6 10 7 3 9",
+            "TEST 4 p0 2",
+            "TEST 4 p1 2",
+            "sw_char 2 12"
+        ]
+    ],
+    "match_config": {
+        "random_first_player": false,
+        "player_go_first": 0,
+        "check_deck_restriction": false,
+        "initial_hand_size": 5,
+        "initial_card_draw": 2,
+        "initial_dice_number": 16,
+        "initial_dice_reroll_times": 1,
+        "card_number": null,
+        "max_same_card_number": null,
+        "character_number": null,
+        "max_round_number": 5,
+        "max_hand_size": 10,
+        "max_dice_number": 16,
+        "max_summon_number": 4,
+        "max_support_number": 4,
+        "make_skill_prediction": false,
+        "history_level": 10,
+        "compress_history": true,
+        "recreate_mode": false,
+        "random_object_information": []
+    },
+    "command_history_raw": [
+        [
+            [
+                2,
+                "sw_card",
+                0
+            ],
+            [
+                4,
+                "choose 1",
+                2
+            ],
+            [
+                7,
+                "skill 1 15 14 13",
+                4
+            ],
+            [
+                13,
+                "skill 0 12 11 10",
+                6
+            ],
+            [
+                19,
+                "skill 2 9 8 7",
+                8
+            ],
+            [
+                27,
+                "sw_char 2 6",
+                10
+            ],
+            [
+                31,
+                "skill 1 5 4 3",
+                12
+            ],
+            [
+                39,
+                "sw_char 0 2",
+                14
+            ],
+            [
+                41,
+                "end",
+                15
+            ],
+            [
+                51,
+                "skill 1 15 14 13",
+                17
+            ]
+        ],
+        [
+            [
+                2,
+                "sw_card",
+                1
+            ],
+            [
+                4,
+                "choose 1",
+                3
+            ],
+            [
+                10,
+                "skill 1 15 14 13",
+                5
+            ],
+            [
+                16,
+                "skill 1 12 11 10",
+                7
+            ],
+            [
+                22,
+                "card 3 0 9 8 7",
+                9
+            ],
+            [
+                29,
+                "sw_char 0 6",
+                11
+            ],
+            [
+                35,
+                "skill 1 5 4 3",
+                13
+            ],
+            [
+                45,
+                "end",
+                16
+            ],
+            [
+                55,
+                "skill 0 15 14 13",
+                18
+            ],
+            [
+                61,
+                "sw_char 2 12",
+                19
+            ]
+        ]
+    ]
+}
\ No newline at end of file
diff --git a/tests/server/patch/v44/jsons/veteran_2.json b/tests/server/patch/v44/jsons/veteran_2.json
new file mode 100644
index 00000000..c04da2fc
--- /dev/null
+++ b/tests/server/patch/v44/jsons/veteran_2.json
@@ -0,0 +1,1097 @@
+{
+    "match_random_state": [
+        "MT19937",
+        [
+            2147483648,
+            852258933,
+            3037751817,
+            2843736348,
+            2346345909,
+            241038820,
+            3630833971,
+            322381140,
+            1250305161,
+            1459257731,
+            3694471596,
+            515911843,
+            3937938455,
+            2827679987,
+            3950882980,
+            3581943267,
+            4151002148,
+            1618076744,
+            3274872619,
+            2159583707,
+            1559018499,
+            1583145829,
+            1179320338,
+            3113356017,
+            1931467408,
+            2410284883,
+            753436273,
+            437428593,
+            510572609,
+            2706055346,
+            879811753,
+            825585750,
+            2401349358,
+            2490929089,
+            3977100308,
+            4231974237,
+            3442070342,
+            2600699322,
+            3596477700,
+            3408240710,
+            3752939454,
+            3842241914,
+            2634979991,
+            739520375,
+            3739104881,
+            2527561182,
+            1297315978,
+            1316945693,
+            1727810483,
+            3695100167,
+            1453832382,
+            979363388,
+            3076017079,
+            3732405838,
+            1444648514,
+            4151023880,
+            2205533946,
+            4261855231,
+            4267702982,
+            2647124900,
+            1484461652,
+            1998843354,
+            4035414622,
+            4156165081,
+            322695412,
+            2240084797,
+            218965524,
+            2620616784,
+            2355246093,
+            353075890,
+            807460217,
+            2080397923,
+            2949113800,
+            3746761770,
+            4204485378,
+            2925858822,
+            940465313,
+            2978225661,
+            1552046939,
+            3792670316,
+            4122385657,
+            3233513602,
+            1380874839,
+            984796113,
+            886794804,
+            4153798316,
+            717328536,
+            469185684,
+            3765962743,
+            4135056014,
+            3479073223,
+            3023129426,
+            4222684062,
+            3850877054,
+            224467384,
+            3087354214,
+            1680195562,
+            2193347842,
+            2684173028,
+            1880093036,
+            3229242389,
+            3049410427,
+            1279447835,
+            332094632,
+            1579758630,
+            3710374238,
+            2337675471,
+            115759493,
+            4211910051,
+            3915073058,
+            1108976576,
+            2071829022,
+            3748361252,
+            3666084797,
+            3192128605,
+            604670057,
+            188878253,
+            403907626,
+            3217757074,
+            1892194987,
+            378411265,
+            573022174,
+            3720006947,
+            254195013,
+            1584935511,
+            3553011007,
+            1370455926,
+            1537144829,
+            2822387189,
+            2441227067,
+            1172427512,
+            1810388875,
+            597276150,
+            3442654859,
+            1319639025,
+            1278428752,
+            3109211997,
+            3125310769,
+            1778730908,
+            2179046274,
+            529756476,
+            3028614397,
+            390243483,
+            2580809143,
+            2253747482,
+            645716549,
+            4069787277,
+            3392915288,
+            1804927866,
+            2998699909,
+            3486738826,
+            2249333105,
+            2840926426,
+            832811354,
+            2642376678,
+            2647298729,
+            2972210951,
+            3980432569,
+            2414014267,
+            3379616787,
+            827881623,
+            2006639651,
+            2739098202,
+            4142232454,
+            1674001832,
+            387416494,
+            1242487127,
+            3900036886,
+            1084620969,
+            4223529924,
+            2384308612,
+            2101645863,
+            1707720038,
+            3225537336,
+            1571082365,
+            4196493122,
+            2164372558,
+            3866850114,
+            2805868839,
+            675209309,
+            4179066360,
+            3625074731,
+            3089956980,
+            3293027876,
+            3902965037,
+            1224438018,
+            1224895899,
+            2575389666,
+            3357949449,
+            2384469209,
+            3700336215,
+            338019398,
+            3289126851,
+            2769703855,
+            390722640,
+            2704007496,
+            2883292084,
+            1965587089,
+            1025300549,
+            619699852,
+            1043025444,
+            3803785664,
+            922193774,
+            151167841,
+            2126109206,
+            3168147631,
+            2865122591,
+            3327041069,
+            3373701209,
+            9353399,
+            473750565,
+            3028380130,
+            1467951504,
+            4190922997,
+            589795710,
+            942553933,
+            937635948,
+            298315070,
+            415821393,
+            4041939848,
+            372373022,
+            3689582099,
+            519737891,
+            4233378103,
+            1157474098,
+            138790908,
+            770838763,
+            430623945,
+            814484707,
+            2853558444,
+            3213795543,
+            3845643860,
+            2512330672,
+            1336888278,
+            572322181,
+            1282342669,
+            920514674,
+            2038291972,
+            3149365870,
+            4102830575,
+            3549173955,
+            3684993693,
+            1356278478,
+            1775628726,
+            213156443,
+            2298969406,
+            2717355438,
+            1572856796,
+            1513647543,
+            2132855513,
+            1986873076,
+            3528225839,
+            308723273,
+            292601737,
+            1277750001,
+            1679680638,
+            2785246156,
+            3878540692,
+            471870265,
+            668186544,
+            2580697021,
+            2706131701,
+            1695560777,
+            2843565854,
+            332232130,
+            1424790421,
+            2379530317,
+            4168717850,
+            974529721,
+            2592398077,
+            1897652930,
+            1672473548,
+            1312396662,
+            1869749067,
+            2084827226,
+            73229630,
+            1974021446,
+            3205173810,
+            874883708,
+            2176709342,
+            2290870532,
+            2232221173,
+            11665963,
+            3617533180,
+            2066756895,
+            869614124,
+            248729098,
+            3168320955,
+            2513792026,
+            1546475412,
+            3754194653,
+            1731401296,
+            669770116,
+            1064448459,
+            2396128651,
+            1085107150,
+            2799824622,
+            1789749972,
+            2034050724,
+            2306132503,
+            2368269703,
+            338106206,
+            3551116912,
+            2236740658,
+            3994225500,
+            1393516086,
+            814315152,
+            4115786034,
+            1931073526,
+            3698510923,
+            3264469706,
+            1200777713,
+            3605887842,
+            537661941,
+            99637609,
+            739482224,
+            4131737706,
+            2971745240,
+            1636938568,
+            461809637,
+            1293154012,
+            2051347708,
+            3415492749,
+            309673494,
+            1718449666,
+            895136483,
+            459169287,
+            3758491237,
+            1484777584,
+            2985652876,
+            3690529376,
+            2814466466,
+            3761286303,
+            2906796347,
+            1770927703,
+            66989981,
+            1227151467,
+            740432923,
+            1742669766,
+            4108895627,
+            1129792952,
+            4217696861,
+            1581599772,
+            2822850338,
+            1371889226,
+            2928171633,
+            337314434,
+            1287812001,
+            2566385880,
+            1016557934,
+            1521694314,
+            1446569819,
+            494280377,
+            3605614928,
+            1750373709,
+            1917104935,
+            1005209477,
+            3290246820,
+            2435278462,
+            2392228341,
+            1860566250,
+            3604753061,
+            1545385861,
+            179541456,
+            1095359,
+            2235243074,
+            3565546844,
+            1848692563,
+            3296532274,
+            932183734,
+            2678033798,
+            2819310696,
+            372402397,
+            2849752546,
+            3300638946,
+            979341372,
+            2027134812,
+            3377292468,
+            776160986,
+            876596828,
+            3411844979,
+            3807986688,
+            2828349004,
+            2667246233,
+            2887674321,
+            3417530634,
+            4192745201,
+            1514743338,
+            1486186234,
+            3599480114,
+            2220700932,
+            877264426,
+            3683620224,
+            1791677875,
+            1576589409,
+            3371864729,
+            239577320,
+            664674279,
+            97455638,
+            671315040,
+            4098637571,
+            1233610174,
+            2528631470,
+            4181767203,
+            4188289355,
+            201010882,
+            2613994903,
+            3722085049,
+            464425505,
+            3872757292,
+            1251239949,
+            155862569,
+            1690852071,
+            958025955,
+            3882516403,
+            11720145,
+            1377457109,
+            611510219,
+            4258313417,
+            2145041081,
+            230603729,
+            108822725,
+            2878554314,
+            1764726348,
+            2813464509,
+            2430757019,
+            1893470021,
+            2345837745,
+            3504885831,
+            471263087,
+            3448186974,
+            91510807,
+            1692101012,
+            870758111,
+            279967414,
+            2975906051,
+            831331682,
+            714973860,
+            895403271,
+            1946906216,
+            2175407141,
+            294729832,
+            663378707,
+            4040948408,
+            371079217,
+            3849217943,
+            3167620631,
+            2106715634,
+            4270851423,
+            4180090782,
+            2160180184,
+            3446426895,
+            3057856044,
+            1623629695,
+            1938845385,
+            1992740005,
+            2620458046,
+            602642578,
+            168172447,
+            1859880120,
+            3105244601,
+            3397983984,
+            4209231162,
+            116203150,
+            2166700138,
+            679395399,
+            1591101135,
+            1511475060,
+            3865776260,
+            3861604114,
+            2333630785,
+            578347291,
+            107805155,
+            1281990800,
+            2331362412,
+            2805566554,
+            1392433873,
+            4113871053,
+            1681686757,
+            1317522404,
+            263062625,
+            3972207482,
+            871540459,
+            858793555,
+            3378130229,
+            1638925065,
+            3644427872,
+            425845250,
+            4199381058,
+            138738749,
+            4064868817,
+            641652061,
+            3293641471,
+            2781033146,
+            2433876171,
+            958379132,
+            515825137,
+            1920938822,
+            508669000,
+            1996074650,
+            1132963176,
+            112386699,
+            4020276217,
+            3307649861,
+            712492536,
+            752257327,
+            703177072,
+            655737206,
+            1936095049,
+            2870883815,
+            750441059,
+            531193802,
+            3887354491,
+            3768893981,
+            758096438,
+            763690471,
+            1177380930,
+            836758118,
+            1370880236,
+            2406562066,
+            3117758426,
+            38974763,
+            729452259,
+            563449846,
+            2410187015,
+            1585606395,
+            4205777270,
+            2173618669,
+            3178196512,
+            1074979883,
+            4149809984,
+            3286590086,
+            2021554321,
+            4088426121,
+            3079684553,
+            1917337899,
+            2966649180,
+            2899231799,
+            1062888899,
+            1306359486,
+            876671599,
+            3348080246,
+            1542570792,
+            3517583561,
+            164390915,
+            135607212,
+            1392292837,
+            1540942523,
+            2587272281,
+            974783651,
+            3971944422,
+            1315415300,
+            1419043995,
+            3194113563,
+            495692306,
+            3087088482,
+            735847283,
+            2418041689,
+            2761711941,
+            608441639,
+            3606420410,
+            2500421680,
+            2129584375,
+            4277314193,
+            362285431,
+            3829261316,
+            3033449623,
+            2726841579,
+            2856071091,
+            1282567563,
+            1399900137,
+            1288485551,
+            1784276086,
+            3203384342,
+            2304811961,
+            4188374470,
+            2799600913,
+            1668300233,
+            3487044801,
+            345405685,
+            68861045,
+            4149051636,
+            630962370,
+            3809297774,
+            3497678965,
+            2777356018,
+            1131508456,
+            3088811640,
+            2916362619,
+            3604683426,
+            1367656029,
+            3164360959,
+            3464800203,
+            2727920289,
+            3993785877,
+            410872094,
+            933194096,
+            1088600539,
+            3511204625,
+            818519978,
+            4217773289,
+            4016704403,
+            2742865381,
+            2118058332,
+            2028824770,
+            3585206344,
+            3620279056,
+            4291530408,
+            748541778,
+            1337473025,
+            2734790168,
+            2153414969,
+            1554090190,
+            4147260811,
+            1053913480,
+            4166858558,
+            1486762641,
+            34008703,
+            2957308893,
+            3461353779,
+            3720643435,
+            476418844,
+            2092109162,
+            1388524448
+        ],
+        623,
+        0,
+        0
+    ],
+    "start_deck": [
+        "default_version:4.4\ncharacter:Lyney@4.3\ncharacter:Alhaitham@4.3\ncharacter:Klee@3.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nGambler's Earrings@3.8\nGambler's Earrings@3.8\nGambler's Earrings@3.8\nGambler's Earrings@3.8\nGambler's Earrings@3.8\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\n",
+        "default_version:4.4\ncharacter:Lyney@4.3\ncharacter:Alhaitham@4.3\ncharacter:Klee@3.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nMachine Assembly Line@4.4\nGambler's Earrings@3.8\nGambler's Earrings@3.8\nGambler's Earrings@3.8\nGambler's Earrings@3.8\nGambler's Earrings@3.8\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nSapwood Blade@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\nVeteran's Visage@4.4\n"
+    ],
+    "command_history": [
+        [
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 5",
+            "TEST 7 p0",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 7 p1",
+            "sw_card 1 0",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 5",
+            "TEST 7 p0",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 7 p1",
+            "choose 0",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 5",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "card 2 0",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 5 p0c0 0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 4",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "card 2 1",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 5 p0c0 0",
+            "TEST 5 p0c1 0",
+            "TEST 5 p0c2",
+            "TEST 6 p0 3",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "skill 1 15 14 13",
+            "TEST 1 7 10 10 7 10 10",
+            "TEST 5 p0c0 2 1",
+            "TEST 5 p0c1 0",
+            "TEST 5 p0c2",
+            "TEST 6 p0 3",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1 0",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "sw_char 1 12",
+            "TEST 1 7 8 10 6 10 10",
+            "TEST 5 p0c0 2 1",
+            "TEST 5 p0c1 1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 3",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 5 p1c0 2 2",
+            "TEST 5 p1c1 0",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "card 2 2",
+            "TEST 1 7 8 10 6 10 10",
+            "TEST 5 p0c0 2 1",
+            "TEST 5 p0c1 0",
+            "TEST 5 p0c2",
+            "TEST 6 p0 2",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 5 p1c0 2 2",
+            "TEST 5 p1c1 0",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "card 1 0",
+            "TEST 1 7 8 10 6 10 10",
+            "TEST 5 p0c0 0 1",
+            "TEST 5 p0c1 0",
+            "TEST 5 p0c2",
+            "TEST 6 p0 1",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 5 p1c0 2 2",
+            "TEST 5 p1c1 0",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "skill 1 11 10 9",
+            "TEST 1 7 5 10 3 10 10",
+            "TEST 5 p0c0 0 1",
+            "TEST 5 p0c1 1 2",
+            "TEST 5 p0c2",
+            "TEST 6 p0 1",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 5 p1c0 0 3",
+            "TEST 5 p1c1 0",
+            "TEST 5 p1c2",
+            "TEST 6 p1 2",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "end",
+            "TEST 1 7 4 10 1 10 10",
+            "TEST 5 p0c0 0 1",
+            "TEST 5 p0c1 2 1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 3",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 5 p1c0 2 3",
+            "TEST 5 p1c1 0",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "sw_char 2 15",
+            "TEST 1 7 4 10 1 10 10",
+            "TEST 5 p0c0 0 1",
+            "TEST 5 p0c1 2 1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 3",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 5 p1c0 2 3",
+            "TEST 5 p1c1 0",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "sw_char 1 14",
+            "TEST 1 7 4 10 1 10 10",
+            "TEST 5 p0c0 0 1",
+            "TEST 5 p0c1 2 1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 3",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 5 p1c0 2 3",
+            "TEST 5 p1c1 0",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "skill 1 13 12 11"
+        ],
+        [
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 5",
+            "TEST 7 p0",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 7 p1",
+            "sw_card 2 3 4",
+            "TEST 1 10 10 10 10 10 10",
+            "TEST 5 p0c0",
+            "TEST 5 p0c1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 5",
+            "TEST 7 p0",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 7 p1",
+            "choose 0",
+            "TEST 1 9 10 10 8 10 10",
+            "TEST 5 p0c0 1 1",
+            "TEST 5 p0c1 0",
+            "TEST 5 p0c2",
+            "TEST 6 p0 3",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "card 1 0",
+            "TEST 1 9 10 10 8 10 10",
+            "TEST 5 p0c0 1 1",
+            "TEST 5 p0c1 0",
+            "TEST 5 p0c2",
+            "TEST 6 p0 3",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 5 p1c0 0",
+            "TEST 5 p1c1",
+            "TEST 5 p1c2",
+            "TEST 6 p1 4",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "card 0 1",
+            "TEST 1 9 10 10 8 10 10",
+            "TEST 5 p0c0 1 1",
+            "TEST 5 p0c1 0",
+            "TEST 5 p0c2",
+            "TEST 6 p0 3",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 5 p1c0 0",
+            "TEST 5 p1c1 0",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "skill 1 15 14 13",
+            "TEST 1 7 10 10 7 10 10",
+            "TEST 5 p0c0 2 1",
+            "TEST 5 p0c1 0",
+            "TEST 5 p0c2",
+            "TEST 6 p0 3",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 5 p1c0 1 1",
+            "TEST 5 p1c1 0",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "skill 1 12 11 10",
+            "TEST 1 7 8 10 3 10 10",
+            "TEST 5 p0c0 0 1",
+            "TEST 5 p0c1 0 2",
+            "TEST 5 p0c2",
+            "TEST 6 p0 1",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 5 p1c0 2 2",
+            "TEST 5 p1c1 0",
+            "TEST 5 p1c2",
+            "TEST 6 p1 3",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "card 1 0",
+            "TEST 1 7 8 10 3 10 10",
+            "TEST 5 p0c0 0 1",
+            "TEST 5 p0c1 0 2",
+            "TEST 5 p0c2",
+            "TEST 6 p0 1",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 5 p1c0 0 2",
+            "TEST 5 p1c1 0",
+            "TEST 5 p1c2",
+            "TEST 6 p1 2",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "skill 3 9 8 7",
+            "TEST 1 7 5 10 3 10 10",
+            "TEST 5 p0c0 0 1",
+            "TEST 5 p0c1 1 2",
+            "TEST 5 p0c2",
+            "TEST 6 p0 1",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 5 p1c0 0 3",
+            "TEST 5 p1c1 0",
+            "TEST 5 p1c2",
+            "TEST 6 p1 2",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "end",
+            "TEST 1 7 4 10 1 10 10",
+            "TEST 5 p0c0 0 1",
+            "TEST 5 p0c1 2 1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 3",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 5 p1c0 2 3",
+            "TEST 5 p1c1 0",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "sw_char 2 15",
+            "TEST 1 7 4 10 1 10 10",
+            "TEST 5 p0c0 0 1",
+            "TEST 5 p0c1 2 1",
+            "TEST 5 p0c2",
+            "TEST 6 p0 3",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 5 p1c0 2 3",
+            "TEST 5 p1c1 0",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "sw_char 0 14",
+            "TEST 1 7 4 10 0 10 10",
+            "TEST 5 p0c0 0 1",
+            "TEST 5 p0c1 2 3",
+            "TEST 5 p0c2",
+            "TEST 6 p0 3",
+            "TEST 7 p0 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "TEST 5 p1c0",
+            "TEST 5 p1c1 0",
+            "TEST 5 p1c2",
+            "TEST 6 p1 5",
+            "TEST 7 p1 OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI OMNI",
+            "choose 1"
+        ]
+    ],
+    "match_config": {
+        "random_first_player": false,
+        "player_go_first": 0,
+        "check_deck_restriction": false,
+        "initial_hand_size": 5,
+        "initial_card_draw": 2,
+        "initial_dice_number": 16,
+        "initial_dice_reroll_times": 1,
+        "card_number": null,
+        "max_same_card_number": null,
+        "character_number": null,
+        "max_round_number": 999,
+        "max_hand_size": 10,
+        "max_dice_number": 16,
+        "max_summon_number": 4,
+        "max_support_number": 4,
+        "make_skill_prediction": false,
+        "history_level": 10,
+        "compress_history": true,
+        "recreate_mode": false,
+        "random_object_information": []
+    },
+    "command_history_raw": [
+        [
+            [
+                2,
+                "sw_card 1 0",
+                0
+            ],
+            [
+                4,
+                "choose 0",
+                2
+            ],
+            [
+                7,
+                "card 2 0",
+                4
+            ],
+            [
+                9,
+                "card 2 1",
+                5
+            ],
+            [
+                11,
+                "skill 1 15 14 13",
+                6
+            ],
+            [
+                23,
+                "sw_char 1 12",
+                10
+            ],
+            [
+                29,
+                "card 2 2",
+                12
+            ],
+            [
+                32,
+                "card 1 0",
+                13
+            ],
+            [
+                35,
+                "skill 1 11 10 9",
+                14
+            ],
+            [
+                44,
+                "end",
+                17
+            ],
+            [
+                55,
+                "sw_char 2 15",
+                19
+            ],
+            [
+                59,
+                "sw_char 1 14",
+                21
+            ],
+            [
+                63,
+                "skill 1 13 12 11",
+                23
+            ]
+        ],
+        [
+            [
+                2,
+                "sw_card 2 3 4",
+                1
+            ],
+            [
+                4,
+                "choose 0",
+                3
+            ],
+            [
+                15,
+                "card 1 0",
+                7
+            ],
+            [
+                17,
+                "card 0 1",
+                8
+            ],
+            [
+                19,
+                "skill 1 15 14 13",
+                9
+            ],
+            [
+                25,
+                "skill 1 12 11 10",
+                11
+            ],
+            [
+                38,
+                "card 1 0",
+                15
+            ],
+            [
+                41,
+                "skill 3 9 8 7",
+                16
+            ],
+            [
+                46,
+                "end",
+                18
+            ],
+            [
+                57,
+                "sw_char 2 15",
+                20
+            ],
+            [
+                61,
+                "sw_char 0 14",
+                22
+            ],
+            [
+                66,
+                "choose 1",
+                24
+            ]
+        ]
+    ]
+}
\ No newline at end of file
diff --git a/tests/server/bugfix/template.py b/tests/server/patch/v44/template.py
similarity index 63%
rename from tests/server/bugfix/template.py
rename to tests/server/patch/v44/template.py
index 78f8bcb2..b38ce258 100644
--- a/tests/server/bugfix/template.py
+++ b/tests/server/patch/v44/template.py
@@ -2,9 +2,6 @@
 import os
 from lpsim import MatchState
 from tests.utils_for_test import (
-    check_hp,
-    check_usage,
-    get_pidx_cidx,
     get_test_id_from_command,
     make_respond,
     set_16_omni,
@@ -13,9 +10,13 @@
 
 
 def template():
-    json_fname = "test_dvalin_talent_2.json"
+    json_fname = "veteran_2.json"
     json_path = os.path.join(os.path.dirname(__file__), "jsons", json_fname)
     match, agent_0, agent_1 = read_from_log_json(json_path)
+    # backup json
+    open("111.json", "w", encoding="utf8").write(
+        open(json_path, "r", encoding="utf8").read()
+    )
     json_data = json.loads(open(json_path, "r", encoding="utf8").read())
     if "command_history_raw" in json_data:
         raise AssertionError("command_history_raw already exists!")
@@ -47,11 +48,13 @@ def template():
             # 3,  # support
             # 4,  # team status
             5,  # character status
-            # 6,  # hands
-            # 7,  # dice
+            6,  # hands
+            7,  # dice
             # 8,  # charge
             # 9,  # summon element
             # 10,  # character desc
+            # 11,  # hand usage availability
+            # 12,  # element application
         ]
         # 1 for hp
         hp_str = "TEST 1"
@@ -89,6 +92,11 @@ def template():
                 cdesc_str = f"TEST 10 p{tnum}c{cnum} |{c.desc}|"
                 if c.is_alive and 10 in enable:
                     nc.append(cdesc_str)
+                cele_str = f"TEST 12 p{tnum}c{cnum}"
+                for e in c.element_application:
+                    cele_str += f" {e.value}"
+                if c.is_alive and 12 in enable:
+                    nc.append(cele_str)
             # 6 for hands
             hands_str = f"TEST 6 p{tnum} {len(table.hands)}"
             if 6 in enable:
@@ -112,62 +120,20 @@ def template():
                 charge_str += " " + str(c.charge)
         if 8 in enable:
             nc.append(charge_str)
-        # do tests
+        # 11 for hand usage availability
+        hand_usage_str = "TEST 11"
+        for req in match.requests:
+            if req.name == "UseCardRequest":
+                hand_usage_str += " " + str(req.card_idx)
+        if 11 in enable:
+            nc.append(hand_usage_str)
+        # filter tests
         while True:
             nc.append(agent.commands[0])
-            cmd = agent.commands[0].strip().split(" ")
             test_id = get_test_id_from_command(agent)
             if test_id == 0:
                 # id 0 means current command is not a test command.
                 break
-            elif test_id == 1:
-                hps = cmd[2:]
-                hps = [int(x) for x in hps]
-                hps = [hps[:3], hps[3:]]
-                check_hp(match, hps)
-            elif test_id == 2:
-                pidx = int(cmd[2][1])
-                check_usage(match.player_tables[pidx].summons, cmd[3:])
-            elif test_id == 3:
-                pidx = int(cmd[2][1])
-                check_usage(match.player_tables[pidx].supports, cmd[3:])
-            elif test_id == 4:
-                pidx = int(cmd[2][1])
-                check_usage(match.player_tables[pidx].team_status, cmd[3:])
-            elif test_id == 5:
-                pidx, cidx = get_pidx_cidx(cmd)
-                check_usage(match.player_tables[pidx].characters[cidx].status, cmd[3:])
-            elif test_id == 6:
-                pidx = int(cmd[2][1])
-                assert len(match.player_tables[pidx].hands) == int(cmd[3])
-            elif test_id == 7:
-                pidx = int(cmd[2][1])
-                d = {}
-                for c in match.player_tables[pidx].dice.colors:
-                    d[c.value] = d.get(c.value, 0) + 1
-                for c in cmd[3:]:
-                    d[c] -= 1
-                    if d[c] == 0:
-                        del d[c]
-                assert len(d) == 0
-            elif test_id == 8:
-                charges = []
-                for table in match.player_tables:
-                    for c in table.characters:
-                        charges.append(c.charge)
-                assert charges == [int(x) for x in cmd[2:]]
-            elif test_id == 9:
-                pidx = int(cmd[2][1])
-                assert len(match.player_tables[pidx].summons) == len(cmd[3:])
-                for i, s in enumerate(match.player_tables[pidx].summons):
-                    assert s.damage_elemental_type.value == cmd[3 + i]
-            elif test_id == 10:
-                pidx, cidx = get_pidx_cidx(cmd)
-                desc = match.player_tables[pidx].characters[cidx].desc
-                cmd_desc = " ".join(cmd[3:])[1:-1]
-                assert desc == cmd_desc
-            else:
-                raise AssertionError(f"Unknown test id {test_id}")
         # respond
         make_respond(agent, match)
         if len(agent_1.commands) == 0 and len(agent_0.commands) == 0:
@@ -176,7 +142,7 @@ def template():
     # simulate ends, check final state
     assert match.state != MatchState.ERROR
     json_data["command_history"] = new_commands
-    open("111.json", "w").write((json.dumps(json_data, indent=4)))
+    open(json_path, "w").write((json.dumps(json_data, indent=4)))
 
 
 if __name__ == "__main__":
diff --git a/tests/server/patch/v44/test_json_4_4.py b/tests/server/patch/v44/test_json_4_4.py
new file mode 100644
index 00000000..c465cf18
--- /dev/null
+++ b/tests/server/patch/v44/test_json_4_4.py
@@ -0,0 +1,89 @@
+import os
+from tests.utils_for_test import do_log_tests
+
+
+def test_balance():
+    json_fname = "balance_thuncer_vourukashas_stove.json"
+    json_path = os.path.join(os.path.dirname(__file__), "jsons", json_fname)
+    do_log_tests(json_path, hp_modify=10)
+
+
+def test_cryo_hypostasis():
+    json_fname = "cryo_hypostasis.json"
+    json_path = os.path.join(os.path.dirname(__file__), "jsons", json_fname)
+    do_log_tests(json_path)
+
+
+def millennial_999_test(match, cmd):
+    """
+    p0c0 millennial is talent status 0
+    """
+    status = match.player_tables[0].characters[0].status[0]
+    assert status.desc == "talent"
+
+
+def test_millennial_pearl_seahorse():
+    json_fname = "millennial_pearl_seahorse.json"
+    json_path = os.path.join(os.path.dirname(__file__), "jsons", json_fname)
+    do_log_tests(json_path, other_tests={999: millennial_999_test})
+
+
+def test_millennial_pearl_seahorse_2():
+    json_fname = "millennial_pearl_seahorse2.json"
+    json_path = os.path.join(os.path.dirname(__file__), "jsons", json_fname)
+    do_log_tests(json_path)
+
+
+def test_thoma():
+    json_fname = "thoma.json"
+    json_path = os.path.join(os.path.dirname(__file__), "jsons", json_fname)
+    do_log_tests(json_path)
+
+
+def test_sayu():
+    json_fname = "sayu.json"
+    json_path = os.path.join(os.path.dirname(__file__), "jsons", json_fname)
+    do_log_tests(json_path)
+
+
+def test_sapwood_machine_veteran():
+    json_fname = "sapwood_machine_veteran.json"
+    json_path = os.path.join(os.path.dirname(__file__), "jsons", json_fname)
+    do_log_tests(json_path)
+
+
+def test_machine_2():
+    json_fname = "machine_2.json"
+    json_path = os.path.join(os.path.dirname(__file__), "jsons", json_fname)
+    do_log_tests(json_path)
+
+
+def test_veteran_2():
+    json_fname = "veteran_2.json"
+    json_path = os.path.join(os.path.dirname(__file__), "jsons", json_fname)
+    do_log_tests(json_path)
+
+
+def test_silver():
+    json_fname = "silver.json"
+    json_path = os.path.join(os.path.dirname(__file__), "jsons", json_fname)
+    do_log_tests(json_path)
+
+
+def test_jeht_sunyata():
+    json_fname = "jeht_sunyata.json"
+    json_path = os.path.join(os.path.dirname(__file__), "jsons", json_fname)
+    do_log_tests(json_path)
+
+
+if __name__ == "__main__":
+    # test_balance()
+    # test_cryo_hypostasis()
+    # test_millennial_pearl_seahorse()
+    # test_millennial_pearl_seahorse_2()
+    # test_thoma()
+    # test_sayu()
+    # test_sapwood_machine_veteran()
+    # test_machine_2()
+    # test_veteran_2()
+    test_silver()
diff --git a/tests/server/patch/v44/test_sunyata_flower.py b/tests/server/patch/v44/test_sunyata_flower.py
new file mode 100644
index 00000000..3e06b10e
--- /dev/null
+++ b/tests/server/patch/v44/test_sunyata_flower.py
@@ -0,0 +1,95 @@
+from lpsim.server.match import Match, MatchState
+from lpsim.server.deck import Deck
+from lpsim.agents.interaction_agent import InteractionAgent
+from tests.utils_for_test import (
+    get_random_state,
+    get_test_id_from_command,
+    make_respond,
+    set_16_omni,
+)
+
+
+def test_sunyata_no_default():
+    """
+    When sunyata generate card, then success. No need to check or use the card,
+    as we don't know the newest version of cards.
+    """
+    cmd_records = [
+        [
+            "sw_card",
+            "choose 2",
+            "card 2 0 1 2",
+            "card 0 0",
+            "TEST 2 p0 hand 5",
+            "TEST 3 p0 team 1",
+            "end",
+        ],
+        [
+            "sw_card",
+            "choose 0",
+            "end",
+        ],
+    ]
+    agent_0 = InteractionAgent(
+        player_idx=0, verbose_level=0, commands=cmd_records[0], only_use_command=True
+    )
+    agent_1 = InteractionAgent(
+        player_idx=1, verbose_level=0, commands=cmd_records[1], only_use_command=True
+    )
+    # initialize match. It is recommended to use default random state to make
+    # replay unchanged.
+    match = Match(random_state=get_random_state())
+    # deck information
+    deck = Deck.from_str(
+        """
+        character:AnemoMobMage
+        character:CryoMob
+        character:PyroMobMage
+        Jeht*10
+        Sunyata Flower*20
+        """
+    )
+    match.set_deck([deck, deck])
+    match.config.max_same_card_number = None
+    match.config.character_number = None
+    match.config.card_number = None
+    match.config.check_deck_restriction = False
+    match.config.max_hand_size = 999
+    # check whether random_first_player is enabled.
+    match.config.random_first_player = False
+    # check whether in rich mode (16 omni each round)
+    set_16_omni(match)
+    match.start()
+    match.step()
+
+    while True:
+        if match.need_respond(0):
+            agent = agent_0
+        elif match.need_respond(1):
+            agent = agent_1
+        else:
+            raise AssertionError("No need respond.")
+        # do tests
+        while True:
+            test_id = get_test_id_from_command(agent)
+            if test_id == 0:
+                # id 0 means current command is not a test command.
+                break
+            elif test_id == 2:
+                assert 5 == len(match.player_tables[0].hands)
+            elif test_id == 3:
+                assert 1 == len(match.player_tables[0].team_status)
+                assert 1 == match.player_tables[0].team_status[0].usage
+            else:
+                raise AssertionError(f"Unknown test id {test_id}")
+        # respond
+        make_respond(agent, match)
+        if len(agent_1.commands) == 0 and len(agent_0.commands) == 0:
+            break
+
+    # simulate ends, check final state
+    assert match.state != MatchState.ERROR
+
+
+if __name__ == "__main__":
+    test_sunyata_no_default()
diff --git a/tests/utils_for_test.py b/tests/utils_for_test.py
index 5dc480a4..a5f36057 100644
--- a/tests/utils_for_test.py
+++ b/tests/utils_for_test.py
@@ -1,8 +1,8 @@
 import json
 import numpy as np
-from typing import List, Any, Tuple
+from typing import Callable, Dict, List, Any, Tuple
 from lpsim.agents.interaction_agent import InteractionAgent, InteractionAgent_V1_0
-from lpsim.server.match import Match, MatchConfig
+from lpsim.server.match import Match, MatchConfig, MatchState
 from lpsim.server.deck import Deck
 from lpsim.server.event_handler import OmnipotentGuideEventHandler_3_3
 from lpsim.agents.agent_base import AgentBase
@@ -141,3 +141,115 @@ def read_from_log_json(path: str) -> Tuple[Match, InteractionAgent, InteractionA
     match = Match(random_state=random_state, config=config)
     match.set_deck(decks)
     return match, agent_0, agent_1
+
+
+def do_log_tests(
+    json_path,
+    hp_modify: int = -1,
+    omnipotent: bool = True,
+    other_tests: Dict[int, Callable] = {},
+):
+    """
+    Do tests on log data generated by HTTPServer, and modified by adding test commands
+    with test template.
+    """
+    match, agent_0, agent_1 = read_from_log_json(json_path)
+    match.config.history_level = 0
+    # modify hp
+    if hp_modify > 0:
+        for i in range(2):
+            characters = match.player_tables[i].player_deck_information.characters  # noqa: E501
+            for c in characters:
+                c.hp = c.max_hp = hp_modify
+    # add omnipotent guide
+    if omnipotent:
+        set_16_omni(match)
+    match.start()
+    match.step()
+    while True:
+        if match.need_respond(0):
+            agent = agent_0
+        elif match.need_respond(1):
+            agent = agent_1
+        else:
+            raise AssertionError("No need respond.")
+        # do tests
+        while True:
+            cmd = agent.commands[0].strip().split(" ")
+            test_id = get_test_id_from_command(agent)
+            if test_id == 0:
+                # id 0 means current command is not a test command.
+                break
+            elif test_id == 1:
+                hps = cmd[2:]
+                hps = [int(x) for x in hps]
+                half = len(hps) // 2
+                hps = [hps[:half], hps[half:]]
+                check_hp(match, hps)
+            elif test_id == 2:
+                pidx = int(cmd[2][1])
+                check_usage(match.player_tables[pidx].summons, cmd[3:])
+            elif test_id == 3:
+                pidx = int(cmd[2][1])
+                check_usage(match.player_tables[pidx].supports, cmd[3:])
+            elif test_id == 4:
+                pidx = int(cmd[2][1])
+                check_usage(match.player_tables[pidx].team_status, cmd[3:])
+            elif test_id == 5:
+                pidx, cidx = get_pidx_cidx(cmd)
+                check_usage(match.player_tables[pidx].characters[cidx].status, cmd[3:])
+            elif test_id == 6:
+                pidx = int(cmd[2][1])
+                assert len(match.player_tables[pidx].hands) == int(cmd[3])
+            elif test_id == 7:
+                pidx = int(cmd[2][1])
+                d = {}
+                for c in match.player_tables[pidx].dice.colors:
+                    d[c.value] = d.get(c.value, 0) + 1
+                for c in cmd[3:]:
+                    d[c] -= 1
+                    if d[c] == 0:
+                        del d[c]
+                assert len(d) == 0
+            elif test_id == 8:
+                charges = []
+                for table in match.player_tables:
+                    for c in table.characters:
+                        charges.append(c.charge)
+                assert charges == [int(x) for x in cmd[2:]]
+            elif test_id == 9:
+                pidx = int(cmd[2][1])
+                assert len(match.player_tables[pidx].summons) == len(cmd[3:])
+                for i, s in enumerate(match.player_tables[pidx].summons):
+                    assert s.damage_elemental_type.value == cmd[3 + i]
+            elif test_id == 10:
+                pidx, cidx = get_pidx_cidx(cmd)
+                desc = match.player_tables[pidx].characters[cidx].desc
+                cmd_desc = " ".join(cmd[3:])[1:-1]
+                assert desc == cmd_desc
+            elif test_id == 11:
+                card_idxs = [int(x) for x in cmd[2:]]
+                card_idxs.sort()
+                current = []
+                for req in match.requests:
+                    if req.name == "UseCardRequest":
+                        current.append(req.card_idx)
+                current.sort()
+                assert current == card_idxs
+            elif test_id == 12:
+                pidx, cidx = get_pidx_cidx(cmd)
+                ele_app = match.player_tables[pidx].characters[cidx].element_application
+                now_ele = [x.value for x in ele_app]
+                assert now_ele == cmd[3:]
+            else:
+                if test_id in other_tests:
+                    other_tests[test_id](match, cmd)
+                else:
+                    raise AssertionError(f"Unknown test id {test_id}")
+        # respond
+        make_respond(agent, match)
+        if len(agent_1.commands) == 0 and len(agent_0.commands) == 0:
+            break
+
+    # simulate ends, check final state
+    assert match.state != MatchState.ERROR