from axelrod.action import Action, actions_to_str
from axelrod.player import Player
from axelrod.strategy_transformers import (
    FinalTransformer,
    TrackHistoryTransformer,
)
llllIlIl, lIlIlIIIIllIlIIllI = Action.C, Action.D
class IllllllIIIlIllI(Player):
    llIlIIIlIIlIllllI = "strategy"
    IIIlIllIIlIIIllI = {
        "memory_depth": float("inf"),
        "stochastic": False,
        "long_run_time": False,
        "inspects_source": False,
        "manipulates_source": False,
        "manipulates_state": False,
    }
    def __init__(
        llIIIlllllI, IllIIIIIIIl: int = 3, IllIlllIIlIllIlllll: int = 8
    ) -> None:
        super().__init__()
        llIIIlllllI.IllIIIIIIIl = IllIIIIIIIl
        llIIIlllllI.IllIlllIIlIllIlllll = IllIlllIIlIllIlllll
        llIIIlllllI.IIIlllllllIIIIlII = 0
        llIIIlllllI.IIlIIIIIlIlIl = 0
    def IllIlllIIlllIIIIIlll(llIIIlllllI, lIIlIlIIllIlIIlllIll: Player) -> Action:
        if not llIIIlllllI.history:
            return llllIlIl
        if len(llIIIlllllI.history) == 1:
            return lIIlIlIIllIlIIlllIll.history[-1]
        if llIIIlllllI.IIlIIIIIlIlIl >= llIIIlllllI.IllIIIIIIIl:
            IIlllIIlIIIIlIl = llllIlIl
            if llIIIlllllI.IIlIIIIIlIlIl == llIIIlllllI.IllIIIIIIIl:
                llIIIlllllI.IIlIIIIIlIlIl = llIIIlllllI.IllIIIIIIIl + 1
            else:
                llIIIlllllI.IIlIIIIIlIlIl = 0
        else:
            if lIIlIlIIllIlIIlllIll.history[-2:] == [llllIlIl, llllIlIl]:
                llIIIlllllI.IIIlllllllIIIIlII -= 1
            if lIIlIlIIllIlIIlllIll.history[-2] != lIIlIlIIllIlIIlllIll.history[-1]:
                llIIIlllllI.IIIlllllllIIIIlII += 1
            if llIIIlllllI.history[-1] != lIIlIlIIllIlIIlllIll.history[-1]:
                llIIIlllllI.IIIlllllllIIIIlII += 1
            if llIIIlllllI.IIIlllllllIIIIlII >= llIIIlllllI.IllIlllIIlIllIlllll:
                IIlllIIlIIIIlIl = lIlIlIIIIllIlIIllI
            else:
                IIlllIIlIIIIlIl = lIIlIlIIllIlIIlllIll.history[-1]
                if lIIlIlIIllIlIIlllIll.history[-2] != lIIlIlIIllIlIIlllIll.history[-1]:
                    llIIIlllllI.IIlIIIIIlIlIl += 1
                else:
                    llIIIlllllI.IIlIIIIIlIlIl = 0
        return IIlllIIlIIIIlIl