<gh_stars>0
# # pylint: disable=too-many-lines
"""
Lookup tables for data on Chao

Data taken from: https://chao.tehfusion.co.uk/chao-hacking/
"""

from typing import Dict, List, Union

DATA_TYPE_LENGTHS: Dict[str, int] = {
    "Byte": 1,
    "Signed byte": 1,
    "Short": 2,
    "Int": 4,
    "Float": 4,
}

CHAO_OFFSETS: List[Dict[str, Union[str, int, None]]] = [
    {
        "Attribute": "Name",
        "Group": None,
        "Offset": 18,
        "Data type": "Name",
        "Lookup": None,
    },
    {
        "Attribute": "Swim stat bar",
        "Group": "Stats",
        "Offset": 32,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Fly stat bar",
        "Group": "Stats",
        "Offset": 33,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Run stat bar",
        "Group": "Stats",
        "Offset": 34,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Power stat bar",
        "Group": "Stats",
        "Offset": 35,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Stamina stat bar",
        "Group": "Stats",
        "Offset": 36,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Luck stat bar",
        "Group": "Stats",
        "Offset": 37,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Intelligence stat bar",
        "Group": "Stats",
        "Offset": 38,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Unknown stat bar",
        "Group": "Stats",
        "Offset": 39,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Swim stat grade",
        "Group": "Stats",
        "Offset": 40,
        "Data type": "ByteLookup",
        "Lookup": "Grade",
    },
    {
        "Attribute": "Fly stat grade",
        "Group": "Stats",
        "Offset": 41,
        "Data type": "ByteLookup",
        "Lookup": "Grade",
    },
    {
        "Attribute": "Run stat grade",
        "Group": "Stats",
        "Offset": 42,
        "Data type": "ByteLookup",
        "Lookup": "Grade",
    },
    {
        "Attribute": "Power stat grade",
        "Group": "Stats",
        "Offset": 43,
        "Data type": "ByteLookup",
        "Lookup": "Grade",
    },
    {
        "Attribute": "Stamina stat grade",
        "Group": "Stats",
        "Offset": 44,
        "Data type": "ByteLookup",
        "Lookup": "Grade",
    },
    {
        "Attribute": "Luck stat grade",
        "Group": "Stats",
        "Offset": 45,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Intelligence stat grade",
        "Group": "Stats",
        "Offset": 46,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Unknown stat grade",
        "Group": "Stats",
        "Offset": 47,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Swim stat level",
        "Group": "Stats",
        "Offset": 48,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Fly stat level",
        "Group": "Stats",
        "Offset": 49,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Run stat level",
        "Group": "Stats",
        "Offset": 50,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Power stat level",
        "Group": "Stats",
        "Offset": 51,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Stamina stat level",
        "Group": "Stats",
        "Offset": 52,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Luck stat level",
        "Group": "Stats",
        "Offset": 53,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Intelligence stat level",
        "Group": "Stats",
        "Offset": 54,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Unknown stat level",
        "Group": "Stats",
        "Offset": 55,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Swim stat points",
        "Group": "Stats",
        "Offset": 56,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Fly stat points",
        "Group": "Stats",
        "Offset": 58,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Run stat points",
        "Group": "Stats",
        "Offset": 60,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Power stat points",
        "Group": "Stats",
        "Offset": 62,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Stamina stat points",
        "Group": "Stats",
        "Offset": 64,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Luck stat points",
        "Group": "Stats",
        "Offset": 66,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Intelligence stat points",
        "Group": "Stats",
        "Offset": 68,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Unknown stat points",
        "Group": "Stats",
        "Offset": 70,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Chao type",
        "Group": "General",
        "Offset": 128,
        "Data type": "ByteLookup",
        "Lookup": "ChaoType",
    },
    {
        "Attribute": "Chao garden",
        "Group": "General",
        "Offset": 129,
        "Data type": "ByteLookup",
        "Lookup": "SA2BChaoGarden",
    },
    {
        "Attribute": "Happiness",
        "Group": "Behaviour",
        "Offset": 130,
        "Data type": "Signed byte",
        "Lookup": None,
    },
    {
        "Attribute": "Chao Active",
        "Group": "General",
        "Offset": 132,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "UNKNOWN 03",
        "Group": "Unknown",
        "Offset": 134,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "UNKNOWN - Evolved?",
        "Group": "Unknown",
        "Offset": 136,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Remaining lifespan 1",
        "Group": "General",
        "Offset": 138,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Remaining lifespan 2",
        "Group": "General",
        "Offset": 140,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Reincarnations",
        "Group": "General",
        "Offset": 142,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "UNKNOWN_TIMER_1 (tick-up)",
        "Group": "Unknown",
        "Offset": 164,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Run - Power transformation",
        "Group": "Evolution",
        "Offset": 168,
        "Data type": "Float",
        "Lookup": None,
    },
    {
        "Attribute": "Swim - Fly transformation",
        "Group": "Evolution",
        "Offset": 172,
        "Data type": "Float",
        "Lookup": None,
    },
    {
        "Attribute": "Alignment",
        "Group": "Evolution",
        "Offset": 176,
        "Data type": "Float",
        "Lookup": None,
    },
    {
        "Attribute": "Transformation magnitude",
        "Group": "Evolution",
        "Offset": 192,
        "Data type": "Float",
        "Lookup": None,
    },
    {
        "Attribute": "Eyes",
        "Group": "Appearance",
        "Offset": 209,
        "Data type": "ByteLookup",
        "Lookup": "Eyes",
    },
    {
        "Attribute": "Mouth",
        "Group": "Appearance",
        "Offset": 210,
        "Data type": "ByteLookup",
        "Lookup": "Mouth",
    },
    {
        "Attribute": "Emotiball",
        "Group": "Appearance",
        "Offset": 211,
        "Data type": "ByteLookup",
        "Lookup": "Emotiball",
    },
    {
        "Attribute": "Hat",
        "Group": "Appearance",
        "Offset": 213,
        "Data type": "ByteLookup",
        "Lookup": "SA2BHat",
    },
    {
        "Attribute": "Hidden feet flag",
        "Group": "Appearance",
        "Offset": 214,
        "Data type": "Boolean",
        "Lookup": None,
    },
    {
        "Attribute": "Medal",
        "Group": "Appearance",
        "Offset": 215,
        "Data type": "ByteLookup",
        "Lookup": "Medal",
    },
    {
        "Attribute": "Colour",
        "Group": "Appearance",
        "Offset": 216,
        "Data type": "ByteLookup",
        "Lookup": "SA2BColour",
    },
    {
        "Attribute": "Mono-tone flag",
        "Group": "Appearance",
        "Offset": 217,
        "Data type": "Boolean",
        "Lookup": None,
    },
    {
        "Attribute": "Texture",
        "Group": "Appearance",
        "Offset": 218,
        "Data type": "ByteLookup",
        "Lookup": "SA2BTexture",
    },
    {
        "Attribute": "Shiny flag",
        "Group": "Appearance",
        "Offset": 219,
        "Data type": "Boolean",
        "Lookup": None,
    },
    {
        "Attribute": "Egg colour",
        "Group": "Appearance",
        "Offset": 220,
        "Data type": "ByteLookup",
        "Lookup": "SA2BEggColour",
    },
    {
        "Attribute": "Body type",
        "Group": "Appearance",
        "Offset": 221,
        "Data type": "ByteLookup",
        "Lookup": "SA2BBodyType",
    },
    {
        "Attribute": "Body type animal",
        "Group": "Appearance",
        "Offset": 222,
        "Data type": "ByteLookup",
        "Lookup": "SA2BAnimal",
    },
    {
        "Attribute": "Crab Pool Race Time",
        "Group": "Race",
        "Offset": 224,
        "Data type": "Time",
        "Lookup": None,
    },
    {
        "Attribute": "Stumo Valley Race Time",
        "Group": "Race",
        "Offset": 227,
        "Data type": "Time",
        "Lookup": None,
    },
    {
        "Attribute": "Mushroom Forest Race Time",
        "Group": "Race",
        "Offset": 230,
        "Data type": "Time",
        "Lookup": None,
    },
    {
        "Attribute": "Block Canyon Race Time",
        "Group": "Race",
        "Offset": 233,
        "Data type": "Time",
        "Lookup": None,
    },
    {
        "Attribute": "Aquamarine Race Time",
        "Group": "Race",
        "Offset": 236,
        "Data type": "Time",
        "Lookup": None,
    },
    {
        "Attribute": "Topaz Race Time",
        "Group": "Race",
        "Offset": 239,
        "Data type": "Time",
        "Lookup": None,
    },
    {
        "Attribute": "Peridot Race Time",
        "Group": "Race",
        "Offset": 242,
        "Data type": "Time",
        "Lookup": None,
    },
    {
        "Attribute": "Garnet Race Time",
        "Group": "Race",
        "Offset": 245,
        "Data type": "Time",
        "Lookup": None,
    },
    {
        "Attribute": "Onyx Race Time",
        "Group": "Race",
        "Offset": 248,
        "Data type": "Time",
        "Lookup": None,
    },
    {
        "Attribute": "Diamond Race Time",
        "Group": "Race",
        "Offset": 251,
        "Data type": "Time",
        "Lookup": None,
    },
    {
        "Attribute": "Karate Rank (Fights)",
        "Group": "Karate",
        "Offset": 266,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Karate Rank (Tournaments)",
        "Group": "Karate",
        "Offset": 267,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Karate Rounds Played",
        "Group": "Karate",
        "Offset": 270,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Karate Rounds Won",
        "Group": "Karate",
        "Offset": 272,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Karate Rounds Lost",
        "Group": "Karate",
        "Offset": 274,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "SA2B animal behaviours",
        "Group": "Training",
        "Offset": 280,
        "Data type": "ShortFlags",
        "Lookup": "SA2BAnimalFlags",
    },
    {
        "Attribute": "UNKNOWN 04",
        "Group": "Unknown",
        "Offset": 282,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "SA2B arms part",
        "Group": "Appearance",
        "Offset": 284,
        "Data type": "ByteLookup",
        "Lookup": "SA2BAnimal",
    },
    {
        "Attribute": "SA2B ears part",
        "Group": "Appearance",
        "Offset": 285,
        "Data type": "ByteLookup",
        "Lookup": "SA2BAnimal",
    },
    {
        "Attribute": "SA2B forehead part",
        "Group": "Appearance",
        "Offset": 286,
        "Data type": "ByteLookup",
        "Lookup": "SA2BAnimal",
    },
    {
        "Attribute": "SA2B horns part",
        "Group": "Appearance",
        "Offset": 287,
        "Data type": "ByteLookup",
        "Lookup": "SA2BAnimal",
    },
    {
        "Attribute": "SA2B legs part",
        "Group": "Appearance",
        "Offset": 288,
        "Data type": "ByteLookup",
        "Lookup": "SA2BAnimal",
    },
    {
        "Attribute": "SA2B tail part",
        "Group": "Appearance",
        "Offset": 289,
        "Data type": "ByteLookup",
        "Lookup": "SA2BAnimal",
    },
    {
        "Attribute": "SA2B wings part",
        "Group": "Appearance",
        "Offset": 290,
        "Data type": "ByteLookup",
        "Lookup": "SA2BAnimal",
    },
    {
        "Attribute": "SA2B face part",
        "Group": "Appearance",
        "Offset": 291,
        "Data type": "ByteLookup",
        "Lookup": "SA2BAnimal",
    },
    {
        "Attribute": "Sleepiness",
        "Group": "Behaviour",
        "Offset": 292,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "UNKNOWN_TIMER_2 (tick-up)",
        "Group": "Unknown",
        "Offset": 294,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "UNKNOWN_TIMER_3 (tick-up)",
        "Group": "Unknown",
        "Offset": 296,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "UNKNOWN_TIMER_4 (tick-up)",
        "Group": "Unknown",
        "Offset": 298,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Joy",
        "Group": "Behaviour",
        "Offset": 300,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Urge to cry",
        "Group": "Behaviour",
        "Offset": 302,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Fear",
        "Group": "Behaviour",
        "Offset": 303,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Dizziness",
        "Group": "Behaviour",
        "Offset": 305,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "UNKNOWN_TIMER_5 (tick-down character proximity?)",
        "Group": "Unknown",
        "Offset": 306,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "UNKNOWN 01",
        "Group": "Unknown",
        "Offset": 308,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Tiredness",
        "Group": "Behaviour",
        "Offset": 310,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Hunger",
        "Group": "Behaviour",
        "Offset": 312,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Desire to mate",
        "Group": "Behaviour",
        "Offset": 314,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Boredom",
        "Group": "Behaviour",
        "Offset": 316,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "UNKNOWN 05 - Constant",
        "Group": "Unknown",
        "Offset": 318,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "UNKNOWN 02",
        "Group": "Unknown",
        "Offset": 320,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "UNKNOWN A",
        "Group": "Unknown",
        "Offset": 324,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Energy",
        "Group": "Behaviour",
        "Offset": 328,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Normal - Curious personality",
        "Group": "Personality",
        "Offset": 330,
        "Data type": "Signed byte",
        "Lookup": None,
    },
    {
        "Attribute": "UNKNOWN 07",
        "Group": "Unknown",
        "Offset": 331,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Cry Baby - Energetic personality",
        "Group": "Personality",
        "Offset": 332,
        "Data type": "Signed byte",
        "Lookup": None,
    },
    {
        "Attribute": "Naive - Normal personality",
        "Group": "Personality",
        "Offset": 333,
        "Data type": "Signed byte",
        "Lookup": None,
    },
    {
        "Attribute": "Normal - Big Eater personality",
        "Group": "Personality",
        "Offset": 336,
        "Data type": "Signed byte",
        "Lookup": None,
    },
    {
        "Attribute": "Normal - Carefree personality",
        "Group": "Personality",
        "Offset": 341,
        "Data type": "Signed byte",
        "Lookup": None,
    },
    {
        "Attribute": "UNKNOWN 06",
        "Group": "Unknown",
        "Offset": 342,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Favourite fruit",
        "Group": "Personality",
        "Offset": 343,
        "Data type": "ByteLookup",
        "Lookup": "FavouriteFruit",
    },
    {
        "Attribute": "Cough level",
        "Group": "Health",
        "Offset": 346,
        "Data type": "Signed byte",
        "Lookup": None,
    },
    {
        "Attribute": "Cold level",
        "Group": "Health",
        "Offset": 347,
        "Data type": "Signed byte",
        "Lookup": None,
    },
    {
        "Attribute": "Rash level",
        "Group": "Health",
        "Offset": 348,
        "Data type": "Signed byte",
        "Lookup": None,
    },
    {
        "Attribute": "Runny nose level",
        "Group": "Health",
        "Offset": 349,
        "Data type": "Signed byte",
        "Lookup": None,
    },
    {
        "Attribute": "Hiccups level",
        "Group": "Health",
        "Offset": 350,
        "Data type": "Signed byte",
        "Lookup": None,
    },
    {
        "Attribute": "Stomach ache level",
        "Group": "Health",
        "Offset": 351,
        "Data type": "Signed byte",
        "Lookup": None,
    },
    {
        "Attribute": "SA2B classroom skills",
        "Group": "Training",
        "Offset": 352,
        "Data type": "IntFlags",
        "Lookup": "ClassroomLessonFlags",
    },
    {
        "Attribute": "SA2B toys",
        "Group": "Training",
        "Offset": 356,
        "Data type": "ShortFlags",
        "Lookup": "ToyFlags",
    },
    {
        "Attribute": "UNKNOWN_TIMER_6 (tick-up)",
        "Group": "Unknown",
        "Offset": 360,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "SA2B Sonic bond",
        "Group": "Character bonds",
        "Offset": 364,
        "Data type": "Signed byte",
        "Lookup": None,
    },
    {
        "Attribute": "Unknown",
        "Group": "Unknown",
        "Offset": 366,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "SA2B Shadow bond",
        "Group": "Character bonds",
        "Offset": 370,
        "Data type": "Signed byte",
        "Lookup": None,
    },
    {
        "Attribute": "SA2B Tails bond",
        "Group": "Character bonds",
        "Offset": 376,
        "Data type": "Signed byte",
        "Lookup": None,
    },
    {
        "Attribute": "SA2B Eggman bond",
        "Group": "Character bonds",
        "Offset": 382,
        "Data type": "Signed byte",
        "Lookup": None,
    },
    {
        "Attribute": "SA2B Knuckles bond",
        "Group": "Character bonds",
        "Offset": 388,
        "Data type": "Signed byte",
        "Lookup": None,
    },
    {
        "Attribute": "SA2B Rouge bond",
        "Group": "Character bonds",
        "Offset": 394,
        "Data type": "Signed byte",
        "Lookup": None,
    },
    {
        "Attribute": "Age (seconds)",
        "Group": "General",
        "Offset": 422,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Age (seconds)",
        "Group": "General",
        "Offset": 450,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Age (seconds)",
        "Group": "General",
        "Offset": 478,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Age (seconds)",
        "Group": "General",
        "Offset": 506,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Age (seconds)",
        "Group": "General",
        "Offset": 534,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Age (seconds)",
        "Group": "General",
        "Offset": 562,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Age (seconds)",
        "Group": "General",
        "Offset": 590,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Age (seconds)",
        "Group": "General",
        "Offset": 618,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Age (seconds)",
        "Group": "General",
        "Offset": 646,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Age (seconds)",
        "Group": "General",
        "Offset": 674,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Age (seconds)",
        "Group": "General",
        "Offset": 702,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Age (seconds)",
        "Group": "General",
        "Offset": 730,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Age (seconds)",
        "Group": "General",
        "Offset": 758,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Age (seconds)",
        "Group": "General",
        "Offset": 786,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Age (seconds)",
        "Group": "General",
        "Offset": 814,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Age (seconds)",
        "Group": "General",
        "Offset": 842,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Age (seconds)",
        "Group": "General",
        "Offset": 870,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Age (seconds)",
        "Group": "General",
        "Offset": 898,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Age (seconds)",
        "Group": "General",
        "Offset": 926,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Age (seconds)",
        "Group": "General",
        "Offset": 954,
        "Data type": "Short",
        "Lookup": None,
    },
    {
        "Attribute": "Reset trigger",
        "Group": "General",
        "Offset": 1080,
        "Data type": "Boolean",
        "Lookup": None,
    },
    {
        "Attribute": "Swim stat grade 1",
        "Group": "Genetics",
        "Offset": 1172,
        "Data type": "ByteLookup",
        "Lookup": "Grade",
    },
    {
        "Attribute": "Swim stat grade 2",
        "Group": "Genetics",
        "Offset": 1173,
        "Data type": "ByteLookup",
        "Lookup": "Grade",
    },
    {
        "Attribute": "Fly stat grade 1",
        "Group": "Genetics",
        "Offset": 1174,
        "Data type": "ByteLookup",
        "Lookup": "Grade",
    },
    {
        "Attribute": "Fly stat grade 2",
        "Group": "Genetics",
        "Offset": 1175,
        "Data type": "ByteLookup",
        "Lookup": "Grade",
    },
    {
        "Attribute": "Run stat grade 1",
        "Group": "Genetics",
        "Offset": 1176,
        "Data type": "ByteLookup",
        "Lookup": "Grade",
    },
    {
        "Attribute": "Run stat grade 2",
        "Group": "Genetics",
        "Offset": 1177,
        "Data type": "ByteLookup",
        "Lookup": "Grade",
    },
    {
        "Attribute": "Power stat grade 1",
        "Group": "Genetics",
        "Offset": 1178,
        "Data type": "ByteLookup",
        "Lookup": "Grade",
    },
    {
        "Attribute": "Power stat grade 2",
        "Group": "Genetics",
        "Offset": 1179,
        "Data type": "ByteLookup",
        "Lookup": "Grade",
    },
    {
        "Attribute": "Stamina stat grade 1",
        "Group": "Genetics",
        "Offset": 1180,
        "Data type": "ByteLookup",
        "Lookup": "Grade",
    },
    {
        "Attribute": "Stamina stat grade 2",
        "Group": "Genetics",
        "Offset": 1181,
        "Data type": "ByteLookup",
        "Lookup": "Grade",
    },
    {
        "Attribute": "Luck stat grade 1",
        "Group": "Genetics",
        "Offset": 1182,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Luck stat grade 2",
        "Group": "Genetics",
        "Offset": 1183,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Intelligence stat grade 1",
        "Group": "Genetics",
        "Offset": 1184,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Intelligence stat grade 2",
        "Group": "Genetics",
        "Offset": 1185,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Unknown stat grade 1",
        "Group": "Genetics",
        "Offset": 1186,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Unknown stat grade 2",
        "Group": "Genetics",
        "Offset": 1187,
        "Data type": "Byte",
        "Lookup": None,
    },
    {
        "Attribute": "Favourite fruit 1",
        "Group": "Genetics",
        "Offset": 1222,
        "Data type": "ByteLookup",
        "Lookup": "FavouriteFruit",
    },
    {
        "Attribute": "Favourite fruit 2",
        "Group": "Genetics",
        "Offset": 1223,
        "Data type": "ByteLookup",
        "Lookup": "FavouriteFruit",
    },
    {
        "Attribute": "Colour 1",
        "Group": "Genetics",
        "Offset": 1228,
        "Data type": "ByteLookup",
        "Lookup": "SA2BColour",
    },
    {
        "Attribute": "Colour 2",
        "Group": "Genetics",
        "Offset": 1229,
        "Data type": "ByteLookup",
        "Lookup": "SA2BColour",
    },
    {
        "Attribute": "Mono-tone flag 1",
        "Group": "Genetics",
        "Offset": 1230,
        "Data type": "Boolean",
        "Lookup": None,
    },
    {
        "Attribute": "Mono-tone flag 2",
        "Group": "Genetics",
        "Offset": 1231,
        "Data type": "Boolean",
        "Lookup": None,
    },
    {
        "Attribute": "Texture 1",
        "Group": "Genetics",
        "Offset": 1232,
        "Data type": "ByteLookup",
        "Lookup": "SA2BTexture",
    },
    {
        "Attribute": "Texture 2",
        "Group": "Genetics",
        "Offset": 1233,
        "Data type": "ByteLookup",
        "Lookup": "SA2BTexture",
    },
    {
        "Attribute": "Shiny flag 1",
        "Group": "Genetics",
        "Offset": 1234,
        "Data type": "Boolean",
        "Lookup": None,
    },
    {
        "Attribute": "Shiny flag 2",
        "Group": "Genetics",
        "Offset": 1235,
        "Data type": "Boolean",
        "Lookup": None,
    },
    {
        "Attribute": "Egg colour 1",
        "Group": "Genetics",
        "Offset": 1236,
        "Data type": "ByteLookup",
        "Lookup": "SA2BEggColour",
    },
    {
        "Attribute": "Egg colour 2",
        "Group": "Genetics",
        "Offset": 1237,
        "Data type": "ByteLookup",
        "Lookup": "SA2BEggColour",
    },
    {
        "Attribute": "SADX animal behaviours",
        "Group": "Training",
        "Offset": 1248,
        "Data type": "ShortFlags",
        "Lookup": "SADXAnimalFlags",
    },
    {
        "Attribute": "SADX arms part",
        "Group": "Appearance",
        "Offset": 1252,
        "Data type": "ByteLookup",
        "Lookup": "SADXAnimal",
    },
    {
        "Attribute": "SADX ears part",
        "Group": "Appearance",
        "Offset": 1253,
        "Data type": "ByteLookup",
        "Lookup": "SADXAnimal",
    },
    {
        "Attribute": "SADX forehead part",
        "Group": "Appearance",
        "Offset": 1254,
        "Data type": "ByteLookup",
        "Lookup": "SADXAnimal",
    },
    {
        "Attribute": "SADX horns part",
        "Group": "Appearance",
        "Offset": 1255,
        "Data type": "ByteLookup",
        "Lookup": "SADXAnimal",
    },
    {
        "Attribute": "SADX legs part",
        "Group": "Appearance",
        "Offset": 1256,
        "Data type": "ByteLookup",
        "Lookup": "SADXAnimal",
    },
    {
        "Attribute": "SADX tail part",
        "Group": "Appearance",
        "Offset": 1257,
        "Data type": "ByteLookup",
        "Lookup": "SADXAnimal",
    },
    {
        "Attribute": "SADX wings part",
        "Group": "Appearance",
        "Offset": 1258,
        "Data type": "ByteLookup",
        "Lookup": "SADXAnimal",
    },
    {
        "Attribute": "SADX Sonic bond",
        "Group": "Bonds",
        "Offset": 1276,
        "Data type": "Signed byte",
        "Lookup": None,
    },
    {
        "Attribute": "SADX Tails bond",
        "Group": "Bonds",
        "Offset": 1282,
        "Data type": "Signed byte",
        "Lookup": None,
    },
    {
        "Attribute": "SADX Knuckles bond",
        "Group": "Bonds",
        "Offset": 1288,
        "Data type": "Signed byte",
        "Lookup": None,
    },
    {
        "Attribute": "SADX Amy bond",
        "Group": "Bonds",
        "Offset": 1294,
        "Data type": "Signed byte",
        "Lookup": None,
    },
    {
        "Attribute": "SADX E-102 Gamma bond",
        "Group": "Bonds",
        "Offset": 1300,
        "Data type": "Signed byte",
        "Lookup": None,
    },
    {
        "Attribute": "SADX Big bond",
        "Group": "Bonds",
        "Offset": 1306,
        "Data type": "Signed byte",
        "Lookup": None,
    },
]

CHARACTER_ENCODING = {
    0: "",
    1: "!",
    2: "”",
    3: "#",
    4: "$",
    5: "%",
    6: "&",
    7: "\\",
    8: "(",
    9: ")",
    10: "*",
    11: "+",
    12: ",",
    13: "-",
    14: ".",
    15: "/",
    16: "0",
    17: "1",
    18: "2",
    19: "3",
    20: "4",
    21: "5",
    22: "6",
    23: "7",
    24: "8",
    25: "9",
    26: ":",
    27: ";",
    28: "<",
    29: "=",
    30: ">",
    31: "?",
    32: "@",
    33: "A",
    34: "B",
    35: "C",
    36: "D",
    37: "E",
    38: "F",
    39: "G",
    40: "H",
    41: "I",
    42: "J",
    43: "K",
    44: "L",
    45: "M",
    46: "N",
    47: "O",
    48: "P",
    49: "Q",
    50: "R",
    51: "S",
    52: "T",
    53: "U",
    54: "V",
    55: "W",
    56: "X",
    57: "Y",
    58: "Z",
    59: "[",
    60: "¥",
    61: "]",
    62: "^",
    63: "_",
    64: "‘",
    65: "a",
    66: "b",
    67: "c",
    68: "d",
    69: "e",
    70: "f",
    71: "g",
    72: "h",
    73: "i",
    74: "j",
    75: "k",
    76: "l",
    77: "m",
    78: "n",
    79: "o",
    80: "p",
    81: "q",
    82: "r",
    83: "s",
    84: "t",
    85: "u",
    86: "v",
    87: "w",
    88: "x",
    89: "y",
    90: "z",
    91: "{",
    92: "|",
    93: "}",
    94: "~",
    95: " ",
    96: "À",
    97: "Á",
    98: "Â",
    99: "Ã",
    100: "Ä",
    101: "Å",
    102: "Æ",
    103: "Ç",
    104: "È",
    105: "É",
    106: "Ê",
    107: "Ë",
    108: "Ì",
    109: "Í",
    110: "Î",
    111: "Ï",
    112: "Ð",
    113: "Ñ",
    114: "Ò",
    115: "Ó",
    116: "Ô",
    117: "Õ",
    118: "Ö",
    119: "¿",
    120: "Ø",
    121: "Ù",
    122: "Ú",
    123: "Û",
    124: "Ü",
    125: "Ý",
    126: "Þ",
    127: "ß",
    128: "à",
    129: "á",
    130: "â",
    131: "ã",
    132: "ä",
    133: "å",
    134: "æ",
    135: "ç",
    136: "è",
    137: "é",
    138: "ê",
    139: "ë",
    140: "ì",
    141: "í",
    142: "î",
    143: "ï",
    144: "ð",
    145: "ñ",
    146: "ò",
    147: "ó",
    148: "ô",
    149: "õ",
    150: "ö",
    151: "¡",
    152: "ø",
    153: "ù",
    154: "ú",
    155: "û",
    156: "ü",
    157: "ý",
    158: "þ",
    159: "ÿ",
    160: "ァ",
    161: "ア",
    162: "ィ",
    163: "イ",
    164: "ゥ",
    165: "ウ",
    166: "ェ",
    167: "エ",
    168: "ォ",
    169: "オ",
    170: "カ",
    171: "ガ",
    172: "キ",
    173: "ギ",
    174: "ク",
    175: "グ",
    176: "ケ",
    177: "ゲ",
    178: "コ",
    179: "ゴ",
    180: "サ",
    181: "ザ",
    182: "シ",
    183: "ジ",
    184: "ス",
    185: "ズ",
    186: "セ",
    187: "ゼ",
    188: "ソ",
    189: "ゾ",
    190: "タ",
    191: "ダ",
    192: "チ",
    193: "ヂ",
    194: "ツ",
    195: "ッ",
    196: "ヅ",
    197: "テ",
    198: "デ",
    199: "ト",
    200: "ド",
    201: "ナ",
    202: "ニ",
    203: "ヌ",
    204: "ネ",
    205: "ノ",
    206: "ハ",
    207: "バ",
    208: "パ",
    209: "ヒ",
    210: "ビ",
    211: "ピ",
    212: "フ",
    213: "ブ",
    214: "プ",
    215: "ヘ",
    216: "ベ",
    217: "ペ",
    218: "ホ",
    219: "ボ",
    220: "ポ",
    221: "マ",
    222: "ミ",
    223: "ム",
    224: "メ",
    225: "モ",
    226: "ャ",
    227: "ヤ",
    228: "ュ",
    229: "ユ",
    230: "ョ",
    231: "ヨ",
    232: "ラ",
    233: "リ",
    234: "ル",
    235: "レ",
    236: "ロ",
    237: "ヮ",
    238: "ワ",
    239: "ﾞ",
    240: "ﾟ",
    241: "ヲ",
    242: "ン",
    243: "。",
    244: "、",
    245: "〒",
    246: "・",
    247: "★",
    248: "♀",
    249: "♂",
    250: "♪",
    251: "…",
    252: "「",
    253: "」",
    254: "ヴ",
    255: " ",
}

LOOKUP_TABLES: Dict[str, Dict[int, str]] = {
    "SA2BChaoGarden": {
        0: "",
        1: "Chao Garden",
        2: "Hero Garden",
        3: "Dark Garden",
        255: "None",
    },
    "ChaoType": {
        0: "",
        1: "Egg",
        2: "Child",
        3: "Good",
        4: "Bad",
        5: "Neutral/Normal",
        6: "Hero/Normal",
        7: "Dark/Normal",
        8: "Neutral/Swim",
        9: "Hero/Swim",
        10: "Dark/Swim",
        11: "Neutral/Fly",
        12: "Hero/Fly",
        13: "Dark/Fly",
        14: "Neutral/Run",
        15: "Hero/Run",
        16: "Dark/Run",
        17: "Neutral/Power",
        18: "Hero/Power",
        19: "Dark/Power",
        20: "Neutral/Chaos",
        21: "Hero/Chaos",
        22: "Dark/Chaos",
        23: "Tails",
        24: "Knuckles",
        25: "Amy",
    },
    "Grade": {0: "E", 1: "D", 2: "C", 3: "B", 4: "A", 5: "S"},
    "Emotiball": {0: "Normal", 1: "Flame", 2: "None"},
    "Eyes": {
        0: "Normal",
        1: "Painful",
        2: "Closed straight",
        3: "Closed happy",
        4: "Closed up",
        5: "Tiny",
        6: "Circles",
        7: "Closed down",
        8: "Tiny 2",
        9: "Half closed",
        10: "Mean",
        11: "Green Chaos",
        12: "Blue Chaos",
        13: "Yellow Chaos",
    },
    "Medal": {
        0: "None",
        1: "Aquamarine",
        2: "Topaz",
        3: "Peridot",
        4: "Garnet",
        5: "Onyx",
        6: "Diamond",
        7: "Beginner",
        8: "Challenge",
        9: "Hero",
        10: "Dark",
        11: "Pearl",
        12: "Amethyst",
        13: "Emerald",
        14: "Ruby",
        15: "Sapphire",
    },
    "Mouth": {
        0: "",
        1: "Toothy Smile",
        2: "Open",
        3: "Closed Smile",
        4: "Closed Frown",
        5: "Open Smile",
        6: "Open Frown",
        7: "Closed Smile 2",
        8: "Squiggly",
        9: "Toothy Frown",
        10: "Closed Frown 2",
        11: "Wide Open",
        12: "Closed Frown 3",
        13: "Straight Moustache",
        14: "Squiggly Moustache 1",
        15: "Squiggly Moustache 2",
    },
    "SA2BBodyType": {0: "Normal", 1: "Egg Chao", 2: "Omochao", 3: "Animal", 5: "None"},
    "SA2BColour": {
        0: "Normal",
        1: "Yellow",
        2: "White",
        3: "Brown",
        4: "Sky Blue",
        5: "Pink",
        6: "Blue",
        7: "Grey",
        8: "Green",
        9: "Red",
        10: "Lime Green",
        11: "Purple",
        12: "Orange",
        13: "Black",
    },
    "SA2BEggColour": {
        0: "Normal",
        1: "Yellow Mono-Tone",
        2: "White Mono-Tone",
        3: "Brown Mono-Tone",
        4: "Sky Blue Mono-Tone",
        5: "Pink Mono-Tone",
        6: "Blue Mono-Tone",
        7: "Grey Mono-Tone",
        8: "Green Mono-Tone",
        9: "Red Mono-Tone",
        10: "Lime Green Mono-Tone",
        11: "Purple Mono-Tone",
        12: "Orange Mono-Tone",
        13: "Black Mono-Tone",
        14: "Yellow Two-Tone",
        15: "White Two-Tone",
        16: "Brown Two-Tone",
        17: "Sky Blue Two-Tone",
        18: "Pink Two-Tone",
        19: "Blue Two-Tone",
        20: "Grey Two-Tone",
        21: "Green Two-Tone",
        22: "Red Two-Tone",
        23: "Lime Green Two-Tone",
        24: "Purple Two-Tone",
        25: "Orange Two-Tone",
        26: "Black Two-Tone",
        27: "Normal Shiny",
        28: "Yellow Shiny Mono-Tone",
        29: "White Shiny Mono-Tone",
        30: "Brown Shiny Mono-Tone",
        31: "Sky Blue Shiny Mono-Tone",
        32: "Pink Shiny Mono-Tone",
        33: "Blue Shiny Mono-Tone",
        34: "Grey Shiny Mono-Tone",
        35: "Green Shiny Mono-Tone",
        36: "Red Shiny Mono-Tone",
        37: "Lime Green Shiny Mono-Tone",
        38: "Purple Shiny Mono-Tone",
        39: "Orange Shiny Mono-Tone",
        40: "Black Shiny Mono-Tone",
        41: "Yellow Shiny Two-Tone",
        42: "White Shiny Two-Tone",
        43: "Brown Shiny Two-Tone",
        44: "Sky Blue Shiny Two-Tone",
        45: "Pink Shiny Two-Tone",
        46: "Blue Shiny Two-Tone",
        47: "Grey Shiny Two-Tone",
        48: "Green Shiny Two-Tone",
        49: "Red Shiny Two-Tone",
        50: "Lime Green Shiny Two-Tone",
        51: "Purple Shiny Two-Tone",
        52: "Orange Shiny Two-Tone",
        53: "Black Shiny Two-Tone",
        54: "Glitchy Normal",
    },
    "SA2BTexture": {
        0: "None",
        1: "Yellow Jewel",
        2: "White Jewel",
        3: "Pink Jewel",
        4: "Blue Jewel",
        5: "Green Jewel",
        6: "Purple Jewel",
        7: "Sky Blue Jewel",
        8: "Red Jewel",
        9: "Black Jewel",
        10: "Lime Green Jewel",
        11: "Orange Jewel",
        12: "Pearl",
        13: "Metal 1",
        14: "Metal 2",
        15: "Glass",
        16: "Moon",
    },
    "FavouriteFruit": {
        0: "Round Fruit 1",
        1: "Round Fruit 2",
        2: "Triangle Fruit 1",
        3: "Triangle Fruit 2",
        4: "Square Fruit 1",
        5: "Square Fruit 2",
        6: "None 1",
        7: "None 2",
    },
    "SADXAnimal": {
        255: "None",
        0: "Seal",
        1: "Penguin",
        2: "Otter",
        3: "Peacock",
        4: "Swallow",
        5: "Parrot",
        6: "Deer",
        7: "Rabbit",
        8: "Kangaroo",
        9: "Gorilla",
        10: "Lion",
        11: "Elephant",
        12: "Mole",
        13: "Koala",
        14: "Skunk",
    },
    "SA2BAnimal": {
        255: "None",
        0: "Penguin",
        1: "Seal",
        2: "Otter",
        3: "Rabbit",
        4: "Cheetah",
        5: "Warthog",
        6: "Bear",
        7: "Tiger",
        8: "Gorilla",
        9: "Peacock",
        10: "Parrot",
        11: "Condor",
        12: "Skunk",
        13: "Sheep",
        14: "Raccoon",
        15: "Half Fish",
        16: "Skeleton Dog",
        17: "Bat",
        18: "Dragon",
        19: "Unicorn",
        20: "Phoenix",
        21: "Yellow Chaos Drive",
        22: "Green Chaos Drive",
        23: "Red Chaos Drive",
        24: "Purple Chaos Drive",
    },
    "SA2BHat": {
        0: "None",
        1: "Pumpkin",
        2: "Skull",
        3: "Apple",
        4: "Bucket",
        5: "Empty Can",
        6: "Cardboard Box",
        7: "Flower Pot",
        8: "Paper Bag",
        9: "Pan",
        10: "Stump",
        11: "Watermelon",
        12: "Red Wool Beanie",
        13: "Blue Wool Beanie",
        14: "Black Wool Beanie",
        15: "Pacifier",
        16: "Normal Egg Shell",
        17: "Yellow Mono-Tone Egg Shell",
        18: "White Mono-Tone Egg Shell",
        19: "Brown Mono-Tone Egg Shell",
        20: "Sky Blue Mono-Tone Egg Shell",
        21: "Pink Mono-Tone Egg Shell",
        22: "Blue Mono-Tone Egg Shell",
        23: "Grey Mono-Tone Egg Shell",
        24: "Green Mono-Tone Egg Shell",
        25: "Red Mono-Tone Egg Shell",
        26: "Lime Green Mono-Tone Egg Shell",
        27: "Purple Mono-Tone Egg Shell",
        28: "Orange Mono-Tone Egg Shell",
        29: "Black Mono-Tone Egg Shell",
        30: "Yellow Two-Tone Egg Shell",
        31: "White Two-Tone Egg Shell",
        32: "Brown Two-Tone Egg Shell",
        33: "Sky Blue Two-Tone Egg Shell",
        34: "Pink Two-Tone Egg Shell",
        35: "Blue Two-Tone Egg Shell",
        36: "Grey Two-Tone Egg Shell",
        37: "Green Two-Tone Egg Shell",
        38: "Red Two-Tone Egg Shell",
        39: "Lime Green Two-Tone Egg Shell",
        40: "Purple Two-Tone Egg Shell",
        41: "Orange Two-Tone Egg Shell",
        42: "Black Two-Tone Egg Shell",
        43: "Normal Shiny Egg Shell",
        44: "Yellow Shiny Mono-Tone Egg Shell",
        45: "White Shiny Mono-Tone Egg Shell",
        46: "Brown Shiny Mono-Tone Egg Shell",
        47: "Sky Blue Shiny Mono-Tone Egg Shell",
        48: "Pink Shiny Mono-Tone Egg Shell",
        49: "Blue Shiny Mono-Tone Egg Shell",
        50: "Grey Shiny Mono-Tone Egg Shell",
        51: "Green Shiny Mono-Tone Egg Shell",
        52: "Red Shiny Mono-Tone Egg Shell",
        53: "Lime Green Shiny Mono-Tone Egg Shell",
        54: "Purple Shiny Mono-Tone Egg Shell",
        55: "Orange Shiny Mono-Tone Egg Shell",
        56: "Black Shiny Mono-Tone Egg Shell",
        57: "Yellow Shiny Two-Tone Egg Shell",
        58: "White Shiny Two-Tone Egg Shell",
        59: "Brown Shiny Two-Tone Egg Shell",
        60: "Sky Blue Shiny Two-Tone Egg Shell",
        61: "Pink Shiny Two-Tone Egg Shell",
        62: "Blue Shiny Two-Tone Egg Shell",
        63: "Grey Shiny Two-Tone Egg Shell",
        64: "Green Shiny Two-Tone Egg Shell",
        65: "Red Shiny Two-Tone Egg Shell",
        66: "Lime Green Shiny Two-Tone Egg Shell",
        67: "Purple Shiny Two-Tone Egg Shell",
        68: "Orange Shiny Two-Tone Egg Shell",
        69: "Black Shiny Two-Tone Egg Shell",
        70: "Glitchy Normal Egg Shell",
    },
    "ClassroomLessonFlags": {
        0: "None",
        1: "Drawing Level 1",
        2: "Drawing Level 2",
        4: "Drawing Level 3",
        8: "Drawing Level 4",
        16: "Drawing Level 5",
        256: "Shake Dance",
        512: "Spin Dance",
        1024: "Step Dance",
        2048: "Go-Go Dance",
        4096: "Exercise",
        65536: "Song Level 1",
        131072: "Song Level 2",
        262144: "Song Level 3",
        524288: "Song Level 4",
        1048576: "Song Level 5",
        16777216: "Bell",
        33554432: "Castanets",
        67108864: "Cymbals",
        134217728: "Drum",
        268435456: "Flute",
        536870912: "Maracas",
        1073741824: "Trumpet",
        2147483648: "Tambourine",
    },
    "SADXAnimalFlags": {
        0: "None",
        1: "Seal",
        2: "Penguin",
        4: "Otter",
        8: "Peacock",
        16: "Swallow",
        32: "Parrot",
        64: "Deer",
        128: "Rabbit",
        256: "Kangaroo",
        512: "Gorilla",
        1024: "Lion",
        2048: "Elephant",
        4096: "Mole",
        8192: "Koala",
        16384: "Skunk",
    },
    "SA2BAnimalFlags": {
        0: "None",
        1: "Penguin",
        2: "Seal",
        4: "Otter",
        8: "Rabbit",
        16: "Cheetah",
        32: "Warthog",
        64: "Bear",
        128: "Tiger",
        256: "Gorilla",
        512: "Peacock",
        1024: "Parrot",
        2048: "Condor",
        4096: "Skunk",
        8192: "Sheep",
        16384: "Raccoon",
        32768: "Half Fish",
        65536: "Skeleton Dog",
        131072: "Bat",
        262144: "Dragon",
        524288: "Unicorn",
        1048576: "Phoenix",
    },
    "ToyFlags": {
        0: "None",
        1: "Rattle",
        2: "Car",
        4: "Picture Book",
        16: "Sonic Doll",
        32: "Broomstick",
        64: "Unknown (glitch toy)",
        128: "Pogo Stick",
        256: "Crayons",
        512: "Bubble Wand",
        1024: "Shovel",
        2048: "Watering Can",
    },
}
