diff --git a/ARM_APPIMAGE_PLAN.md b/ARM_APPIMAGE_PLAN.md new file mode 100644 index 0000000..fed6c17 --- /dev/null +++ b/ARM_APPIMAGE_PLAN.md @@ -0,0 +1,76 @@ +# Piano di distribuzione ARM con AppImage + +Questo repository ora e pronto per essere portato dentro un bundle AppImage senza dipendere dalla directory corrente e senza scrivere nel filesystem montato in sola lettura dell'AppImage. + +## Stato attuale + +- Le risorse di runtime vengono risolte a partire dal root del progetto tramite `MICE_PROJECT_ROOT`. +- I dati persistenti (`scores.txt`, `user_profiles.json`) vengono scritti in una directory utente persistente: + - `MICE_DATA_DIR`, se impostata. + - altrimenti `${XDG_DATA_HOME}/mice`. + - fallback: `~/.local/share/mice`. +- E presente uno scaffold di packaging in `packaging/`. + +## Strategia consigliata + +1. Costruire l'AppImage su una macchina `aarch64` reale o in una chroot/container ARM. +2. Creare dentro `AppDir` un ambiente Python copiato localmente con `python -m venv --copies`. +3. Installare le dipendenze Python da `requirements.txt` dentro quel Python locale. +4. Copiare il gioco e gli asset in `AppDir/usr/share/mice`. +5. Bundlare le librerie native richieste da SDL2 e dai wheel Python dentro `AppDir/usr/lib`. +6. Usare `AppRun` per esportare `LD_LIBRARY_PATH`, `MICE_PROJECT_ROOT` e `MICE_DATA_DIR` prima del lancio di `rats.py`. +7. Generare il file finale con `appimagetool`. + +## Perche costruire nativamente su ARM + +- Un AppImage deve contenere binari della stessa architettura del target. +- `PySDL2`, `numpy` e `Pillow` portano con se librerie native o dipendenze native. +- Il cross-build da `x86_64` a `aarch64` e possibile, ma aumenta molto il rischio di incompatibilita su `glibc`, `libSDL2` e wheel Python. + +## Comando di build + +Da una macchina Linux `aarch64` con `python3`, `rsync`, `ldd`, `ldconfig` e `appimagetool` disponibili: + +```bash +./packaging/build_appimage_aarch64.sh +``` + +Output previsto: + +- `dist/AppDir` +- `dist/Mice-aarch64.AppImage` + +## Dipendenze host richieste al builder ARM + +Serve un sistema di build ARM con almeno: + +- `python3` +- `python3-venv` +- `rsync` +- `glibc` userland standard +- `appimagetool` +- librerie di sviluppo/runtime installate sul builder, in particolare: + - `libSDL2` + - `libSDL2_ttf` + +## Test minimi da fare sul target ARM + +1. Avvio del gioco da shell. +2. Caricamento font e immagini. +3. Riproduzione audio WAV. +4. Salvataggio punteggi in `~/.local/share/mice/scores.txt`. +5. Creazione e lettura profili in `~/.local/share/mice/user_profiles.json`. +6. Cambio livello da `assets/Rat/level.dat`. + +## Rischi residui + +- La relocazione di un venv copiato dentro AppImage e pratica, ma va verificata sul target reale. +- Se il target ARM ha un userland molto vecchio, conviene costruire l'AppImage su una distro ARM con `glibc` piu vecchia del target. +- Se emergono problemi di relocazione del Python del venv, il passo successivo corretto e passare a un Python relocatable tipo `python-build-standalone` mantenendo invariato il launcher. + +## File introdotti + +- `runtime_paths.py` +- `packaging/appimage/AppRun` +- `packaging/appimage/mice.desktop` +- `packaging/build_appimage_aarch64.sh` diff --git a/README.md b/README.md index d88ead1..78a88c7 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ Mice! is a strategic game where players must kill rats with bombs before they re ## Features - **Maze Generation**: Randomly generated mazes using Depth First Search (DFS) algorithm. +- **Original Level Support**: Loads the original `level.dat` from `assets/Rat/level.dat` when present and falls back to `maze.json` otherwise. - **Units**: Different types of units such as rats, bombs, and points with specific behaviors. - **Graphics**: Custom graphics for maze tiles, units, and effects. - **Sound Effects**: Audio feedback for various game events. @@ -72,6 +73,7 @@ The Mice! game engine is built on a modular architecture designed for flexibilit - **Map Class**: Manages the game world structure - **Features**: - Maze data loading and parsing + - DAT archive parsing for the original 32 built-in RATS levels - Collision detection system - Tile-based world representation - Pathfinding support for AI units @@ -238,6 +240,20 @@ Units interact through a centralized collision and event system: - **Libraries**: - `numpy` 2.3.4 for vectorized collision detection - `sdl2` for graphics and window management + +## Level Sources + +- Preferred source: `assets/Rat/level.dat` +- Fallback source: `maze.json` +- Current behavior: the loader can read any level from the DAT archive via `--level N`, while still falling back to `maze.json` when the DAT is unavailable. +- Tile semantics are now preserved internally from the original format: `0=EMPTY`, `1=WALL`, `2=TUNNEL`. +- Rendering uses those semantics directly: walls use themed grass/flower tiles, tunnel cells use themed cave tiles, and empty cells remain the generic walkable tunnel floor used by the Python version. + +### Run examples + +- `python rats.py` +- `python rats.py --level 7` +- `python rats.py --map maze.json` - `Pillow` for image processing - `uuid` for unique unit identification - `subprocess` for playing sound effects diff --git a/assets/Rat/BMP_1_CAVE_DOWN.bmp b/assets/Rat/BMP_1_CAVE_DOWN.bmp deleted file mode 100755 index 3b54d27..0000000 Binary files a/assets/Rat/BMP_1_CAVE_DOWN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_CAVE_DOWN.png b/assets/Rat/BMP_1_CAVE_DOWN.png index 954c6c2..8150942 100644 Binary files a/assets/Rat/BMP_1_CAVE_DOWN.png and b/assets/Rat/BMP_1_CAVE_DOWN.png differ diff --git a/assets/Rat/BMP_1_CAVE_LEFT.bmp b/assets/Rat/BMP_1_CAVE_LEFT.bmp deleted file mode 100755 index 398ffa3..0000000 Binary files a/assets/Rat/BMP_1_CAVE_LEFT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_CAVE_LEFT.png b/assets/Rat/BMP_1_CAVE_LEFT.png index 3cc64a3..48dd814 100644 Binary files a/assets/Rat/BMP_1_CAVE_LEFT.png and b/assets/Rat/BMP_1_CAVE_LEFT.png differ diff --git a/assets/Rat/BMP_1_CAVE_RIGHT.bmp b/assets/Rat/BMP_1_CAVE_RIGHT.bmp deleted file mode 100755 index ae45a05..0000000 Binary files a/assets/Rat/BMP_1_CAVE_RIGHT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_CAVE_RIGHT.png b/assets/Rat/BMP_1_CAVE_RIGHT.png index 56e73bb..38cf924 100644 Binary files a/assets/Rat/BMP_1_CAVE_RIGHT.png and b/assets/Rat/BMP_1_CAVE_RIGHT.png differ diff --git a/assets/Rat/BMP_1_CAVE_UP.bmp b/assets/Rat/BMP_1_CAVE_UP.bmp deleted file mode 100755 index 2c76f21..0000000 Binary files a/assets/Rat/BMP_1_CAVE_UP.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_CAVE_UP.png b/assets/Rat/BMP_1_CAVE_UP.png index 4af5d2c..14bd8dc 100644 Binary files a/assets/Rat/BMP_1_CAVE_UP.png and b/assets/Rat/BMP_1_CAVE_UP.png differ diff --git a/assets/Rat/BMP_1_E.bmp b/assets/Rat/BMP_1_E.bmp deleted file mode 100755 index 8bf4e46..0000000 Binary files a/assets/Rat/BMP_1_E.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_E.png b/assets/Rat/BMP_1_E.png index 429e42d..cb995c9 100644 Binary files a/assets/Rat/BMP_1_E.png and b/assets/Rat/BMP_1_E.png differ diff --git a/assets/Rat/BMP_1_EN.bmp b/assets/Rat/BMP_1_EN.bmp deleted file mode 100755 index 3ebaaa7..0000000 Binary files a/assets/Rat/BMP_1_EN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_EN.png b/assets/Rat/BMP_1_EN.png index cd70307..6f8e7bf 100644 Binary files a/assets/Rat/BMP_1_EN.png and b/assets/Rat/BMP_1_EN.png differ diff --git a/assets/Rat/BMP_1_ES.bmp b/assets/Rat/BMP_1_ES.bmp deleted file mode 100755 index 21ac6c5..0000000 Binary files a/assets/Rat/BMP_1_ES.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_ES.png b/assets/Rat/BMP_1_ES.png index 0c413b4..9986257 100644 Binary files a/assets/Rat/BMP_1_ES.png and b/assets/Rat/BMP_1_ES.png differ diff --git a/assets/Rat/BMP_1_EXPLOSION_DOWN.bmp b/assets/Rat/BMP_1_EXPLOSION_DOWN.bmp deleted file mode 100755 index d9b4ee9..0000000 Binary files a/assets/Rat/BMP_1_EXPLOSION_DOWN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_EXPLOSION_DOWN.png b/assets/Rat/BMP_1_EXPLOSION_DOWN.png index fbcfb02..42d5c59 100644 Binary files a/assets/Rat/BMP_1_EXPLOSION_DOWN.png and b/assets/Rat/BMP_1_EXPLOSION_DOWN.png differ diff --git a/assets/Rat/BMP_1_EXPLOSION_LEFT.bmp b/assets/Rat/BMP_1_EXPLOSION_LEFT.bmp deleted file mode 100755 index dd91fbb..0000000 Binary files a/assets/Rat/BMP_1_EXPLOSION_LEFT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_EXPLOSION_LEFT.png b/assets/Rat/BMP_1_EXPLOSION_LEFT.png index 348767c..37877de 100644 Binary files a/assets/Rat/BMP_1_EXPLOSION_LEFT.png and b/assets/Rat/BMP_1_EXPLOSION_LEFT.png differ diff --git a/assets/Rat/BMP_1_EXPLOSION_RIGHT.bmp b/assets/Rat/BMP_1_EXPLOSION_RIGHT.bmp deleted file mode 100755 index c11c1de..0000000 Binary files a/assets/Rat/BMP_1_EXPLOSION_RIGHT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_EXPLOSION_RIGHT.png b/assets/Rat/BMP_1_EXPLOSION_RIGHT.png index fc51884..9568377 100644 Binary files a/assets/Rat/BMP_1_EXPLOSION_RIGHT.png and b/assets/Rat/BMP_1_EXPLOSION_RIGHT.png differ diff --git a/assets/Rat/BMP_1_EXPLOSION_UP.bmp b/assets/Rat/BMP_1_EXPLOSION_UP.bmp deleted file mode 100755 index 9000eab..0000000 Binary files a/assets/Rat/BMP_1_EXPLOSION_UP.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_EXPLOSION_UP.png b/assets/Rat/BMP_1_EXPLOSION_UP.png index 051e0a6..dd0bf0c 100644 Binary files a/assets/Rat/BMP_1_EXPLOSION_UP.png and b/assets/Rat/BMP_1_EXPLOSION_UP.png differ diff --git a/assets/Rat/BMP_1_FLOWER_1.bmp b/assets/Rat/BMP_1_FLOWER_1.bmp deleted file mode 100755 index bf5286a..0000000 Binary files a/assets/Rat/BMP_1_FLOWER_1.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_FLOWER_1.png b/assets/Rat/BMP_1_FLOWER_1.png index ce7516a..bf2b244 100644 Binary files a/assets/Rat/BMP_1_FLOWER_1.png and b/assets/Rat/BMP_1_FLOWER_1.png differ diff --git a/assets/Rat/BMP_1_FLOWER_2.bmp b/assets/Rat/BMP_1_FLOWER_2.bmp deleted file mode 100755 index 41a343c..0000000 Binary files a/assets/Rat/BMP_1_FLOWER_2.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_FLOWER_2.png b/assets/Rat/BMP_1_FLOWER_2.png index fe24f16..70c2aac 100644 Binary files a/assets/Rat/BMP_1_FLOWER_2.png and b/assets/Rat/BMP_1_FLOWER_2.png differ diff --git a/assets/Rat/BMP_1_FLOWER_3.bmp b/assets/Rat/BMP_1_FLOWER_3.bmp deleted file mode 100755 index 486bae2..0000000 Binary files a/assets/Rat/BMP_1_FLOWER_3.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_FLOWER_3.png b/assets/Rat/BMP_1_FLOWER_3.png index c4e2631..3962f31 100644 Binary files a/assets/Rat/BMP_1_FLOWER_3.png and b/assets/Rat/BMP_1_FLOWER_3.png differ diff --git a/assets/Rat/BMP_1_FLOWER_4.bmp b/assets/Rat/BMP_1_FLOWER_4.bmp deleted file mode 100755 index 8753180..0000000 Binary files a/assets/Rat/BMP_1_FLOWER_4.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_FLOWER_4.png b/assets/Rat/BMP_1_FLOWER_4.png index cb40891..664a3b3 100644 Binary files a/assets/Rat/BMP_1_FLOWER_4.png and b/assets/Rat/BMP_1_FLOWER_4.png differ diff --git a/assets/Rat/BMP_1_GAS_DOWN.bmp b/assets/Rat/BMP_1_GAS_DOWN.bmp deleted file mode 100755 index 73534d8..0000000 Binary files a/assets/Rat/BMP_1_GAS_DOWN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_GAS_DOWN.png b/assets/Rat/BMP_1_GAS_DOWN.png index 601e6fb..96baa11 100644 Binary files a/assets/Rat/BMP_1_GAS_DOWN.png and b/assets/Rat/BMP_1_GAS_DOWN.png differ diff --git a/assets/Rat/BMP_1_GAS_LEFT.bmp b/assets/Rat/BMP_1_GAS_LEFT.bmp deleted file mode 100755 index afe659c..0000000 Binary files a/assets/Rat/BMP_1_GAS_LEFT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_GAS_LEFT.png b/assets/Rat/BMP_1_GAS_LEFT.png index f3d03f7..6a75ae7 100644 Binary files a/assets/Rat/BMP_1_GAS_LEFT.png and b/assets/Rat/BMP_1_GAS_LEFT.png differ diff --git a/assets/Rat/BMP_1_GAS_RIGHT.bmp b/assets/Rat/BMP_1_GAS_RIGHT.bmp deleted file mode 100755 index 67aa335..0000000 Binary files a/assets/Rat/BMP_1_GAS_RIGHT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_GAS_RIGHT.png b/assets/Rat/BMP_1_GAS_RIGHT.png index c6c52ba..274d8fb 100644 Binary files a/assets/Rat/BMP_1_GAS_RIGHT.png and b/assets/Rat/BMP_1_GAS_RIGHT.png differ diff --git a/assets/Rat/BMP_1_GAS_UP.bmp b/assets/Rat/BMP_1_GAS_UP.bmp deleted file mode 100755 index fbba8bb..0000000 Binary files a/assets/Rat/BMP_1_GAS_UP.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_GAS_UP.png b/assets/Rat/BMP_1_GAS_UP.png index 42ed373..7f4a0c4 100644 Binary files a/assets/Rat/BMP_1_GAS_UP.png and b/assets/Rat/BMP_1_GAS_UP.png differ diff --git a/assets/Rat/BMP_1_GRASS_1.bmp b/assets/Rat/BMP_1_GRASS_1.bmp deleted file mode 100755 index f391db7..0000000 Binary files a/assets/Rat/BMP_1_GRASS_1.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_GRASS_1.png b/assets/Rat/BMP_1_GRASS_1.png index 2dc4281..2d413b0 100644 Binary files a/assets/Rat/BMP_1_GRASS_1.png and b/assets/Rat/BMP_1_GRASS_1.png differ diff --git a/assets/Rat/BMP_1_GRASS_2.bmp b/assets/Rat/BMP_1_GRASS_2.bmp deleted file mode 100755 index 261fa2e..0000000 Binary files a/assets/Rat/BMP_1_GRASS_2.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_GRASS_2.png b/assets/Rat/BMP_1_GRASS_2.png index 34c8e12..4d45af6 100644 Binary files a/assets/Rat/BMP_1_GRASS_2.png and b/assets/Rat/BMP_1_GRASS_2.png differ diff --git a/assets/Rat/BMP_1_GRASS_3.bmp b/assets/Rat/BMP_1_GRASS_3.bmp deleted file mode 100755 index 43b95f4..0000000 Binary files a/assets/Rat/BMP_1_GRASS_3.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_GRASS_3.png b/assets/Rat/BMP_1_GRASS_3.png index 364e223..8afcebc 100644 Binary files a/assets/Rat/BMP_1_GRASS_3.png and b/assets/Rat/BMP_1_GRASS_3.png differ diff --git a/assets/Rat/BMP_1_GRASS_4.bmp b/assets/Rat/BMP_1_GRASS_4.bmp deleted file mode 100755 index 238d755..0000000 Binary files a/assets/Rat/BMP_1_GRASS_4.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_GRASS_4.png b/assets/Rat/BMP_1_GRASS_4.png index dfb823c..c610dc7 100644 Binary files a/assets/Rat/BMP_1_GRASS_4.png and b/assets/Rat/BMP_1_GRASS_4.png differ diff --git a/assets/Rat/BMP_1_N.bmp b/assets/Rat/BMP_1_N.bmp deleted file mode 100755 index b0f4b42..0000000 Binary files a/assets/Rat/BMP_1_N.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_N.png b/assets/Rat/BMP_1_N.png index 4581a0a..8e601e8 100644 Binary files a/assets/Rat/BMP_1_N.png and b/assets/Rat/BMP_1_N.png differ diff --git a/assets/Rat/BMP_1_NE.bmp b/assets/Rat/BMP_1_NE.bmp deleted file mode 100755 index f0648cf..0000000 Binary files a/assets/Rat/BMP_1_NE.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_NE.png b/assets/Rat/BMP_1_NE.png index 59a9238..00d7193 100644 Binary files a/assets/Rat/BMP_1_NE.png and b/assets/Rat/BMP_1_NE.png differ diff --git a/assets/Rat/BMP_1_NW.bmp b/assets/Rat/BMP_1_NW.bmp deleted file mode 100755 index abbe2aa..0000000 Binary files a/assets/Rat/BMP_1_NW.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_NW.png b/assets/Rat/BMP_1_NW.png index eaf6a7c..92b6a64 100644 Binary files a/assets/Rat/BMP_1_NW.png and b/assets/Rat/BMP_1_NW.png differ diff --git a/assets/Rat/BMP_1_S.bmp b/assets/Rat/BMP_1_S.bmp deleted file mode 100755 index 093ee10..0000000 Binary files a/assets/Rat/BMP_1_S.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_S.png b/assets/Rat/BMP_1_S.png index c63ed9a..0a86857 100644 Binary files a/assets/Rat/BMP_1_S.png and b/assets/Rat/BMP_1_S.png differ diff --git a/assets/Rat/BMP_1_SE.bmp b/assets/Rat/BMP_1_SE.bmp deleted file mode 100755 index 8441d5d..0000000 Binary files a/assets/Rat/BMP_1_SE.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_SE.png b/assets/Rat/BMP_1_SE.png index 10c18e6..71b03ab 100644 Binary files a/assets/Rat/BMP_1_SE.png and b/assets/Rat/BMP_1_SE.png differ diff --git a/assets/Rat/BMP_1_SW.bmp b/assets/Rat/BMP_1_SW.bmp deleted file mode 100755 index 10f5b02..0000000 Binary files a/assets/Rat/BMP_1_SW.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_SW.png b/assets/Rat/BMP_1_SW.png index 433a5bd..941a2b1 100644 Binary files a/assets/Rat/BMP_1_SW.png and b/assets/Rat/BMP_1_SW.png differ diff --git a/assets/Rat/BMP_1_W.bmp b/assets/Rat/BMP_1_W.bmp deleted file mode 100755 index 21201e2..0000000 Binary files a/assets/Rat/BMP_1_W.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_W.png b/assets/Rat/BMP_1_W.png index d2d617f..c0b8372 100644 Binary files a/assets/Rat/BMP_1_W.png and b/assets/Rat/BMP_1_W.png differ diff --git a/assets/Rat/BMP_1_WN.bmp b/assets/Rat/BMP_1_WN.bmp deleted file mode 100755 index 7e1b34b..0000000 Binary files a/assets/Rat/BMP_1_WN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_WN.png b/assets/Rat/BMP_1_WN.png index 3daf642..d5c7822 100644 Binary files a/assets/Rat/BMP_1_WN.png and b/assets/Rat/BMP_1_WN.png differ diff --git a/assets/Rat/BMP_1_WS.bmp b/assets/Rat/BMP_1_WS.bmp deleted file mode 100755 index 037a196..0000000 Binary files a/assets/Rat/BMP_1_WS.bmp and /dev/null differ diff --git a/assets/Rat/BMP_1_WS.png b/assets/Rat/BMP_1_WS.png index 1c7bbf1..7a7614a 100644 Binary files a/assets/Rat/BMP_1_WS.png and b/assets/Rat/BMP_1_WS.png differ diff --git a/assets/Rat/BMP_2_CAVE_DOWN.bmp b/assets/Rat/BMP_2_CAVE_DOWN.bmp deleted file mode 100755 index 88d85bc..0000000 Binary files a/assets/Rat/BMP_2_CAVE_DOWN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_CAVE_DOWN.png b/assets/Rat/BMP_2_CAVE_DOWN.png index a767ee9..bf80a88 100644 Binary files a/assets/Rat/BMP_2_CAVE_DOWN.png and b/assets/Rat/BMP_2_CAVE_DOWN.png differ diff --git a/assets/Rat/BMP_2_CAVE_LEFT.bmp b/assets/Rat/BMP_2_CAVE_LEFT.bmp deleted file mode 100755 index ef54b74..0000000 Binary files a/assets/Rat/BMP_2_CAVE_LEFT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_CAVE_LEFT.png b/assets/Rat/BMP_2_CAVE_LEFT.png index 4d7bd4d..3cb676d 100644 Binary files a/assets/Rat/BMP_2_CAVE_LEFT.png and b/assets/Rat/BMP_2_CAVE_LEFT.png differ diff --git a/assets/Rat/BMP_2_CAVE_RIGHT.bmp b/assets/Rat/BMP_2_CAVE_RIGHT.bmp deleted file mode 100755 index 7fe5406..0000000 Binary files a/assets/Rat/BMP_2_CAVE_RIGHT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_CAVE_RIGHT.png b/assets/Rat/BMP_2_CAVE_RIGHT.png index 78bbe92..1ddf466 100644 Binary files a/assets/Rat/BMP_2_CAVE_RIGHT.png and b/assets/Rat/BMP_2_CAVE_RIGHT.png differ diff --git a/assets/Rat/BMP_2_CAVE_UP.bmp b/assets/Rat/BMP_2_CAVE_UP.bmp deleted file mode 100755 index 7dfdc6d..0000000 Binary files a/assets/Rat/BMP_2_CAVE_UP.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_CAVE_UP.png b/assets/Rat/BMP_2_CAVE_UP.png index 6c5914a..ac92b22 100644 Binary files a/assets/Rat/BMP_2_CAVE_UP.png and b/assets/Rat/BMP_2_CAVE_UP.png differ diff --git a/assets/Rat/BMP_2_E.bmp b/assets/Rat/BMP_2_E.bmp deleted file mode 100755 index d308675..0000000 Binary files a/assets/Rat/BMP_2_E.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_E.png b/assets/Rat/BMP_2_E.png index b27d411..95246fb 100644 Binary files a/assets/Rat/BMP_2_E.png and b/assets/Rat/BMP_2_E.png differ diff --git a/assets/Rat/BMP_2_EN.bmp b/assets/Rat/BMP_2_EN.bmp deleted file mode 100755 index 3711a7f..0000000 Binary files a/assets/Rat/BMP_2_EN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_EN.png b/assets/Rat/BMP_2_EN.png index 64cf466..cb263cb 100644 Binary files a/assets/Rat/BMP_2_EN.png and b/assets/Rat/BMP_2_EN.png differ diff --git a/assets/Rat/BMP_2_ES.bmp b/assets/Rat/BMP_2_ES.bmp deleted file mode 100755 index 5470c74..0000000 Binary files a/assets/Rat/BMP_2_ES.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_ES.png b/assets/Rat/BMP_2_ES.png index 6fb1bea..65de7b0 100644 Binary files a/assets/Rat/BMP_2_ES.png and b/assets/Rat/BMP_2_ES.png differ diff --git a/assets/Rat/BMP_2_EXPLOSION_DOWN.bmp b/assets/Rat/BMP_2_EXPLOSION_DOWN.bmp deleted file mode 100755 index ae82374..0000000 Binary files a/assets/Rat/BMP_2_EXPLOSION_DOWN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_EXPLOSION_DOWN.png b/assets/Rat/BMP_2_EXPLOSION_DOWN.png index 6799f89..733d0fb 100644 Binary files a/assets/Rat/BMP_2_EXPLOSION_DOWN.png and b/assets/Rat/BMP_2_EXPLOSION_DOWN.png differ diff --git a/assets/Rat/BMP_2_EXPLOSION_LEFT.bmp b/assets/Rat/BMP_2_EXPLOSION_LEFT.bmp deleted file mode 100755 index 935c2f4..0000000 Binary files a/assets/Rat/BMP_2_EXPLOSION_LEFT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_EXPLOSION_LEFT.png b/assets/Rat/BMP_2_EXPLOSION_LEFT.png index 4d348b2..7f5ca2e 100644 Binary files a/assets/Rat/BMP_2_EXPLOSION_LEFT.png and b/assets/Rat/BMP_2_EXPLOSION_LEFT.png differ diff --git a/assets/Rat/BMP_2_EXPLOSION_RIGHT.bmp b/assets/Rat/BMP_2_EXPLOSION_RIGHT.bmp deleted file mode 100755 index b2ff8f9..0000000 Binary files a/assets/Rat/BMP_2_EXPLOSION_RIGHT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_EXPLOSION_RIGHT.png b/assets/Rat/BMP_2_EXPLOSION_RIGHT.png index e2776c8..6cd616d 100644 Binary files a/assets/Rat/BMP_2_EXPLOSION_RIGHT.png and b/assets/Rat/BMP_2_EXPLOSION_RIGHT.png differ diff --git a/assets/Rat/BMP_2_EXPLOSION_UP.bmp b/assets/Rat/BMP_2_EXPLOSION_UP.bmp deleted file mode 100755 index 0485429..0000000 Binary files a/assets/Rat/BMP_2_EXPLOSION_UP.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_EXPLOSION_UP.png b/assets/Rat/BMP_2_EXPLOSION_UP.png index 6b66006..c2a1425 100644 Binary files a/assets/Rat/BMP_2_EXPLOSION_UP.png and b/assets/Rat/BMP_2_EXPLOSION_UP.png differ diff --git a/assets/Rat/BMP_2_FLOWER_1.bmp b/assets/Rat/BMP_2_FLOWER_1.bmp deleted file mode 100755 index 4b7c878..0000000 Binary files a/assets/Rat/BMP_2_FLOWER_1.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_FLOWER_1.png b/assets/Rat/BMP_2_FLOWER_1.png index e1e515c..5ed00a9 100644 Binary files a/assets/Rat/BMP_2_FLOWER_1.png and b/assets/Rat/BMP_2_FLOWER_1.png differ diff --git a/assets/Rat/BMP_2_FLOWER_2.bmp b/assets/Rat/BMP_2_FLOWER_2.bmp deleted file mode 100755 index a68f2bc..0000000 Binary files a/assets/Rat/BMP_2_FLOWER_2.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_FLOWER_2.png b/assets/Rat/BMP_2_FLOWER_2.png index 8f1697c..896c4ef 100644 Binary files a/assets/Rat/BMP_2_FLOWER_2.png and b/assets/Rat/BMP_2_FLOWER_2.png differ diff --git a/assets/Rat/BMP_2_FLOWER_3.bmp b/assets/Rat/BMP_2_FLOWER_3.bmp deleted file mode 100755 index b061486..0000000 Binary files a/assets/Rat/BMP_2_FLOWER_3.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_FLOWER_3.png b/assets/Rat/BMP_2_FLOWER_3.png index fe7523c..b973f97 100644 Binary files a/assets/Rat/BMP_2_FLOWER_3.png and b/assets/Rat/BMP_2_FLOWER_3.png differ diff --git a/assets/Rat/BMP_2_FLOWER_4.bmp b/assets/Rat/BMP_2_FLOWER_4.bmp deleted file mode 100755 index 9516d9e..0000000 Binary files a/assets/Rat/BMP_2_FLOWER_4.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_FLOWER_4.png b/assets/Rat/BMP_2_FLOWER_4.png index 198bcd8..359326d 100644 Binary files a/assets/Rat/BMP_2_FLOWER_4.png and b/assets/Rat/BMP_2_FLOWER_4.png differ diff --git a/assets/Rat/BMP_2_GAS_DOWN.bmp b/assets/Rat/BMP_2_GAS_DOWN.bmp deleted file mode 100755 index 4b299e5..0000000 Binary files a/assets/Rat/BMP_2_GAS_DOWN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_GAS_DOWN.png b/assets/Rat/BMP_2_GAS_DOWN.png index 2bc15e3..de78bc9 100644 Binary files a/assets/Rat/BMP_2_GAS_DOWN.png and b/assets/Rat/BMP_2_GAS_DOWN.png differ diff --git a/assets/Rat/BMP_2_GAS_LEFT.bmp b/assets/Rat/BMP_2_GAS_LEFT.bmp deleted file mode 100755 index 7e141bb..0000000 Binary files a/assets/Rat/BMP_2_GAS_LEFT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_GAS_LEFT.png b/assets/Rat/BMP_2_GAS_LEFT.png index 7e3bc79..b6c14b2 100644 Binary files a/assets/Rat/BMP_2_GAS_LEFT.png and b/assets/Rat/BMP_2_GAS_LEFT.png differ diff --git a/assets/Rat/BMP_2_GAS_RIGHT.bmp b/assets/Rat/BMP_2_GAS_RIGHT.bmp deleted file mode 100755 index 3e7cd4f..0000000 Binary files a/assets/Rat/BMP_2_GAS_RIGHT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_GAS_RIGHT.png b/assets/Rat/BMP_2_GAS_RIGHT.png index 4371462..bf5d05f 100644 Binary files a/assets/Rat/BMP_2_GAS_RIGHT.png and b/assets/Rat/BMP_2_GAS_RIGHT.png differ diff --git a/assets/Rat/BMP_2_GAS_UP.bmp b/assets/Rat/BMP_2_GAS_UP.bmp deleted file mode 100755 index 430b0e3..0000000 Binary files a/assets/Rat/BMP_2_GAS_UP.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_GAS_UP.png b/assets/Rat/BMP_2_GAS_UP.png index 01dee97..9b02c5d 100644 Binary files a/assets/Rat/BMP_2_GAS_UP.png and b/assets/Rat/BMP_2_GAS_UP.png differ diff --git a/assets/Rat/BMP_2_GRASS_1.bmp b/assets/Rat/BMP_2_GRASS_1.bmp deleted file mode 100755 index 9881702..0000000 Binary files a/assets/Rat/BMP_2_GRASS_1.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_GRASS_1.png b/assets/Rat/BMP_2_GRASS_1.png index b1d4edd..0634b29 100644 Binary files a/assets/Rat/BMP_2_GRASS_1.png and b/assets/Rat/BMP_2_GRASS_1.png differ diff --git a/assets/Rat/BMP_2_GRASS_2.bmp b/assets/Rat/BMP_2_GRASS_2.bmp deleted file mode 100755 index 71f8ceb..0000000 Binary files a/assets/Rat/BMP_2_GRASS_2.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_GRASS_2.png b/assets/Rat/BMP_2_GRASS_2.png index 6966f9e..d8cabe9 100644 Binary files a/assets/Rat/BMP_2_GRASS_2.png and b/assets/Rat/BMP_2_GRASS_2.png differ diff --git a/assets/Rat/BMP_2_GRASS_3.bmp b/assets/Rat/BMP_2_GRASS_3.bmp deleted file mode 100755 index 064fde2..0000000 Binary files a/assets/Rat/BMP_2_GRASS_3.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_GRASS_3.png b/assets/Rat/BMP_2_GRASS_3.png index 2e5b577..b4c8fbe 100644 Binary files a/assets/Rat/BMP_2_GRASS_3.png and b/assets/Rat/BMP_2_GRASS_3.png differ diff --git a/assets/Rat/BMP_2_GRASS_4.bmp b/assets/Rat/BMP_2_GRASS_4.bmp deleted file mode 100755 index 3a4163c..0000000 Binary files a/assets/Rat/BMP_2_GRASS_4.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_GRASS_4.png b/assets/Rat/BMP_2_GRASS_4.png index a6bf853..9d1a430 100644 Binary files a/assets/Rat/BMP_2_GRASS_4.png and b/assets/Rat/BMP_2_GRASS_4.png differ diff --git a/assets/Rat/BMP_2_N.bmp b/assets/Rat/BMP_2_N.bmp deleted file mode 100755 index 4116a17..0000000 Binary files a/assets/Rat/BMP_2_N.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_N.png b/assets/Rat/BMP_2_N.png index c970a3c..1257507 100644 Binary files a/assets/Rat/BMP_2_N.png and b/assets/Rat/BMP_2_N.png differ diff --git a/assets/Rat/BMP_2_NE.bmp b/assets/Rat/BMP_2_NE.bmp deleted file mode 100755 index a5b019e..0000000 Binary files a/assets/Rat/BMP_2_NE.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_NE.png b/assets/Rat/BMP_2_NE.png index 5dc27ae..773a8d5 100644 Binary files a/assets/Rat/BMP_2_NE.png and b/assets/Rat/BMP_2_NE.png differ diff --git a/assets/Rat/BMP_2_NW.bmp b/assets/Rat/BMP_2_NW.bmp deleted file mode 100755 index 5fd5174..0000000 Binary files a/assets/Rat/BMP_2_NW.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_NW.png b/assets/Rat/BMP_2_NW.png index c755b19..6f02b0a 100644 Binary files a/assets/Rat/BMP_2_NW.png and b/assets/Rat/BMP_2_NW.png differ diff --git a/assets/Rat/BMP_2_S.bmp b/assets/Rat/BMP_2_S.bmp deleted file mode 100755 index 7479907..0000000 Binary files a/assets/Rat/BMP_2_S.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_S.png b/assets/Rat/BMP_2_S.png index 8754895..b6d2dbe 100644 Binary files a/assets/Rat/BMP_2_S.png and b/assets/Rat/BMP_2_S.png differ diff --git a/assets/Rat/BMP_2_SE.bmp b/assets/Rat/BMP_2_SE.bmp deleted file mode 100755 index 5f479de..0000000 Binary files a/assets/Rat/BMP_2_SE.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_SE.png b/assets/Rat/BMP_2_SE.png index 095198b..23ef874 100644 Binary files a/assets/Rat/BMP_2_SE.png and b/assets/Rat/BMP_2_SE.png differ diff --git a/assets/Rat/BMP_2_SW.bmp b/assets/Rat/BMP_2_SW.bmp deleted file mode 100755 index 07f8c50..0000000 Binary files a/assets/Rat/BMP_2_SW.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_SW.png b/assets/Rat/BMP_2_SW.png index f0a65ad..d1527fb 100644 Binary files a/assets/Rat/BMP_2_SW.png and b/assets/Rat/BMP_2_SW.png differ diff --git a/assets/Rat/BMP_2_W.bmp b/assets/Rat/BMP_2_W.bmp deleted file mode 100755 index 3c1d48c..0000000 Binary files a/assets/Rat/BMP_2_W.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_W.png b/assets/Rat/BMP_2_W.png index 62f5a60..af5d651 100644 Binary files a/assets/Rat/BMP_2_W.png and b/assets/Rat/BMP_2_W.png differ diff --git a/assets/Rat/BMP_2_WN.bmp b/assets/Rat/BMP_2_WN.bmp deleted file mode 100755 index beaabfa..0000000 Binary files a/assets/Rat/BMP_2_WN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_WN.png b/assets/Rat/BMP_2_WN.png index 23be74d..2a1e098 100644 Binary files a/assets/Rat/BMP_2_WN.png and b/assets/Rat/BMP_2_WN.png differ diff --git a/assets/Rat/BMP_2_WS.bmp b/assets/Rat/BMP_2_WS.bmp deleted file mode 100755 index a3f344f..0000000 Binary files a/assets/Rat/BMP_2_WS.bmp and /dev/null differ diff --git a/assets/Rat/BMP_2_WS.png b/assets/Rat/BMP_2_WS.png index 9cd12c2..c436b68 100644 Binary files a/assets/Rat/BMP_2_WS.png and b/assets/Rat/BMP_2_WS.png differ diff --git a/assets/Rat/BMP_3_CAVE_DOWN.bmp b/assets/Rat/BMP_3_CAVE_DOWN.bmp deleted file mode 100755 index b03d5d2..0000000 Binary files a/assets/Rat/BMP_3_CAVE_DOWN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_CAVE_DOWN.png b/assets/Rat/BMP_3_CAVE_DOWN.png index 108b395..2943f5c 100644 Binary files a/assets/Rat/BMP_3_CAVE_DOWN.png and b/assets/Rat/BMP_3_CAVE_DOWN.png differ diff --git a/assets/Rat/BMP_3_CAVE_LEFT.bmp b/assets/Rat/BMP_3_CAVE_LEFT.bmp deleted file mode 100755 index 47b6a5b..0000000 Binary files a/assets/Rat/BMP_3_CAVE_LEFT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_CAVE_LEFT.png b/assets/Rat/BMP_3_CAVE_LEFT.png index 16fd3d4..8fdb9fc 100644 Binary files a/assets/Rat/BMP_3_CAVE_LEFT.png and b/assets/Rat/BMP_3_CAVE_LEFT.png differ diff --git a/assets/Rat/BMP_3_CAVE_RIGHT.bmp b/assets/Rat/BMP_3_CAVE_RIGHT.bmp deleted file mode 100755 index 197a912..0000000 Binary files a/assets/Rat/BMP_3_CAVE_RIGHT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_CAVE_RIGHT.png b/assets/Rat/BMP_3_CAVE_RIGHT.png index 45df259..d3d50b2 100644 Binary files a/assets/Rat/BMP_3_CAVE_RIGHT.png and b/assets/Rat/BMP_3_CAVE_RIGHT.png differ diff --git a/assets/Rat/BMP_3_CAVE_UP.bmp b/assets/Rat/BMP_3_CAVE_UP.bmp deleted file mode 100755 index 1eab65a..0000000 Binary files a/assets/Rat/BMP_3_CAVE_UP.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_CAVE_UP.png b/assets/Rat/BMP_3_CAVE_UP.png index 1f3e727..b233489 100644 Binary files a/assets/Rat/BMP_3_CAVE_UP.png and b/assets/Rat/BMP_3_CAVE_UP.png differ diff --git a/assets/Rat/BMP_3_E.bmp b/assets/Rat/BMP_3_E.bmp deleted file mode 100755 index f9c2007..0000000 Binary files a/assets/Rat/BMP_3_E.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_E.png b/assets/Rat/BMP_3_E.png index 5be8329..4aed5e0 100644 Binary files a/assets/Rat/BMP_3_E.png and b/assets/Rat/BMP_3_E.png differ diff --git a/assets/Rat/BMP_3_EN.bmp b/assets/Rat/BMP_3_EN.bmp deleted file mode 100755 index 6b35f67..0000000 Binary files a/assets/Rat/BMP_3_EN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_EN.png b/assets/Rat/BMP_3_EN.png index 47366ed..8a073cb 100644 Binary files a/assets/Rat/BMP_3_EN.png and b/assets/Rat/BMP_3_EN.png differ diff --git a/assets/Rat/BMP_3_ES.bmp b/assets/Rat/BMP_3_ES.bmp deleted file mode 100755 index 99bc0e5..0000000 Binary files a/assets/Rat/BMP_3_ES.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_ES.png b/assets/Rat/BMP_3_ES.png index 9549abb..6a37848 100644 Binary files a/assets/Rat/BMP_3_ES.png and b/assets/Rat/BMP_3_ES.png differ diff --git a/assets/Rat/BMP_3_EXPLOSION_DOWN.bmp b/assets/Rat/BMP_3_EXPLOSION_DOWN.bmp deleted file mode 100755 index 90bcb80..0000000 Binary files a/assets/Rat/BMP_3_EXPLOSION_DOWN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_EXPLOSION_DOWN.png b/assets/Rat/BMP_3_EXPLOSION_DOWN.png index 6c7cd18..f70c065 100644 Binary files a/assets/Rat/BMP_3_EXPLOSION_DOWN.png and b/assets/Rat/BMP_3_EXPLOSION_DOWN.png differ diff --git a/assets/Rat/BMP_3_EXPLOSION_LEFT.bmp b/assets/Rat/BMP_3_EXPLOSION_LEFT.bmp deleted file mode 100755 index d17d57d..0000000 Binary files a/assets/Rat/BMP_3_EXPLOSION_LEFT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_EXPLOSION_LEFT.png b/assets/Rat/BMP_3_EXPLOSION_LEFT.png index 226790e..8bfab53 100644 Binary files a/assets/Rat/BMP_3_EXPLOSION_LEFT.png and b/assets/Rat/BMP_3_EXPLOSION_LEFT.png differ diff --git a/assets/Rat/BMP_3_EXPLOSION_RIGHT.bmp b/assets/Rat/BMP_3_EXPLOSION_RIGHT.bmp deleted file mode 100755 index eb24576..0000000 Binary files a/assets/Rat/BMP_3_EXPLOSION_RIGHT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_EXPLOSION_RIGHT.png b/assets/Rat/BMP_3_EXPLOSION_RIGHT.png index 7d63227..4788d23 100644 Binary files a/assets/Rat/BMP_3_EXPLOSION_RIGHT.png and b/assets/Rat/BMP_3_EXPLOSION_RIGHT.png differ diff --git a/assets/Rat/BMP_3_EXPLOSION_UP.bmp b/assets/Rat/BMP_3_EXPLOSION_UP.bmp deleted file mode 100755 index af36d66..0000000 Binary files a/assets/Rat/BMP_3_EXPLOSION_UP.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_EXPLOSION_UP.png b/assets/Rat/BMP_3_EXPLOSION_UP.png index 3d7a5ae..be8e5b6 100644 Binary files a/assets/Rat/BMP_3_EXPLOSION_UP.png and b/assets/Rat/BMP_3_EXPLOSION_UP.png differ diff --git a/assets/Rat/BMP_3_FLOWER_1.bmp b/assets/Rat/BMP_3_FLOWER_1.bmp deleted file mode 100755 index c409731..0000000 Binary files a/assets/Rat/BMP_3_FLOWER_1.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_FLOWER_1.png b/assets/Rat/BMP_3_FLOWER_1.png index ce9341b..1370a17 100644 Binary files a/assets/Rat/BMP_3_FLOWER_1.png and b/assets/Rat/BMP_3_FLOWER_1.png differ diff --git a/assets/Rat/BMP_3_FLOWER_2.bmp b/assets/Rat/BMP_3_FLOWER_2.bmp deleted file mode 100755 index e192e6e..0000000 Binary files a/assets/Rat/BMP_3_FLOWER_2.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_FLOWER_2.png b/assets/Rat/BMP_3_FLOWER_2.png index c7a49d5..9f43c50 100644 Binary files a/assets/Rat/BMP_3_FLOWER_2.png and b/assets/Rat/BMP_3_FLOWER_2.png differ diff --git a/assets/Rat/BMP_3_FLOWER_3.bmp b/assets/Rat/BMP_3_FLOWER_3.bmp deleted file mode 100755 index 705ccb0..0000000 Binary files a/assets/Rat/BMP_3_FLOWER_3.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_FLOWER_3.png b/assets/Rat/BMP_3_FLOWER_3.png index 79a1769..e7dd9dc 100644 Binary files a/assets/Rat/BMP_3_FLOWER_3.png and b/assets/Rat/BMP_3_FLOWER_3.png differ diff --git a/assets/Rat/BMP_3_FLOWER_4.bmp b/assets/Rat/BMP_3_FLOWER_4.bmp deleted file mode 100755 index ae76204..0000000 Binary files a/assets/Rat/BMP_3_FLOWER_4.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_FLOWER_4.png b/assets/Rat/BMP_3_FLOWER_4.png index bfb82ad..2a6972d 100644 Binary files a/assets/Rat/BMP_3_FLOWER_4.png and b/assets/Rat/BMP_3_FLOWER_4.png differ diff --git a/assets/Rat/BMP_3_GAS_DOWN.bmp b/assets/Rat/BMP_3_GAS_DOWN.bmp deleted file mode 100755 index 2c587fe..0000000 Binary files a/assets/Rat/BMP_3_GAS_DOWN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_GAS_DOWN.png b/assets/Rat/BMP_3_GAS_DOWN.png index 369364e..ec6a0aa 100644 Binary files a/assets/Rat/BMP_3_GAS_DOWN.png and b/assets/Rat/BMP_3_GAS_DOWN.png differ diff --git a/assets/Rat/BMP_3_GAS_LEFT.bmp b/assets/Rat/BMP_3_GAS_LEFT.bmp deleted file mode 100755 index eec80b5..0000000 Binary files a/assets/Rat/BMP_3_GAS_LEFT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_GAS_LEFT.png b/assets/Rat/BMP_3_GAS_LEFT.png index b4969c2..304095a 100644 Binary files a/assets/Rat/BMP_3_GAS_LEFT.png and b/assets/Rat/BMP_3_GAS_LEFT.png differ diff --git a/assets/Rat/BMP_3_GAS_RIGHT.bmp b/assets/Rat/BMP_3_GAS_RIGHT.bmp deleted file mode 100755 index 6eec895..0000000 Binary files a/assets/Rat/BMP_3_GAS_RIGHT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_GAS_RIGHT.png b/assets/Rat/BMP_3_GAS_RIGHT.png index c7c5f71..02ca880 100644 Binary files a/assets/Rat/BMP_3_GAS_RIGHT.png and b/assets/Rat/BMP_3_GAS_RIGHT.png differ diff --git a/assets/Rat/BMP_3_GAS_UP.bmp b/assets/Rat/BMP_3_GAS_UP.bmp deleted file mode 100755 index aea2f0f..0000000 Binary files a/assets/Rat/BMP_3_GAS_UP.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_GAS_UP.png b/assets/Rat/BMP_3_GAS_UP.png index a1136ca..e1df0de 100644 Binary files a/assets/Rat/BMP_3_GAS_UP.png and b/assets/Rat/BMP_3_GAS_UP.png differ diff --git a/assets/Rat/BMP_3_GRASS_1.bmp b/assets/Rat/BMP_3_GRASS_1.bmp deleted file mode 100755 index 8d0d40f..0000000 Binary files a/assets/Rat/BMP_3_GRASS_1.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_GRASS_1.png b/assets/Rat/BMP_3_GRASS_1.png index 6e9da2b..c6240ca 100644 Binary files a/assets/Rat/BMP_3_GRASS_1.png and b/assets/Rat/BMP_3_GRASS_1.png differ diff --git a/assets/Rat/BMP_3_GRASS_2.bmp b/assets/Rat/BMP_3_GRASS_2.bmp deleted file mode 100755 index 4ac8efa..0000000 Binary files a/assets/Rat/BMP_3_GRASS_2.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_GRASS_2.png b/assets/Rat/BMP_3_GRASS_2.png index 9dd114e..63f9459 100644 Binary files a/assets/Rat/BMP_3_GRASS_2.png and b/assets/Rat/BMP_3_GRASS_2.png differ diff --git a/assets/Rat/BMP_3_GRASS_3.bmp b/assets/Rat/BMP_3_GRASS_3.bmp deleted file mode 100755 index f6384d2..0000000 Binary files a/assets/Rat/BMP_3_GRASS_3.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_GRASS_3.png b/assets/Rat/BMP_3_GRASS_3.png index bb14dea..e20f76e 100644 Binary files a/assets/Rat/BMP_3_GRASS_3.png and b/assets/Rat/BMP_3_GRASS_3.png differ diff --git a/assets/Rat/BMP_3_GRASS_4.bmp b/assets/Rat/BMP_3_GRASS_4.bmp deleted file mode 100755 index 1deb156..0000000 Binary files a/assets/Rat/BMP_3_GRASS_4.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_GRASS_4.png b/assets/Rat/BMP_3_GRASS_4.png index 74ded02..7d2592a 100644 Binary files a/assets/Rat/BMP_3_GRASS_4.png and b/assets/Rat/BMP_3_GRASS_4.png differ diff --git a/assets/Rat/BMP_3_N.bmp b/assets/Rat/BMP_3_N.bmp deleted file mode 100755 index d0921b5..0000000 Binary files a/assets/Rat/BMP_3_N.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_N.png b/assets/Rat/BMP_3_N.png index b4ce35d..6a9f7c7 100644 Binary files a/assets/Rat/BMP_3_N.png and b/assets/Rat/BMP_3_N.png differ diff --git a/assets/Rat/BMP_3_NE.bmp b/assets/Rat/BMP_3_NE.bmp deleted file mode 100755 index 46345af..0000000 Binary files a/assets/Rat/BMP_3_NE.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_NE.png b/assets/Rat/BMP_3_NE.png index 9995d1c..0b2e913 100644 Binary files a/assets/Rat/BMP_3_NE.png and b/assets/Rat/BMP_3_NE.png differ diff --git a/assets/Rat/BMP_3_NW.bmp b/assets/Rat/BMP_3_NW.bmp deleted file mode 100755 index de03d18..0000000 Binary files a/assets/Rat/BMP_3_NW.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_NW.png b/assets/Rat/BMP_3_NW.png index 9d61e0b..50437b2 100644 Binary files a/assets/Rat/BMP_3_NW.png and b/assets/Rat/BMP_3_NW.png differ diff --git a/assets/Rat/BMP_3_S.bmp b/assets/Rat/BMP_3_S.bmp deleted file mode 100755 index 3425f75..0000000 Binary files a/assets/Rat/BMP_3_S.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_S.png b/assets/Rat/BMP_3_S.png index 57b467c..e0079b2 100644 Binary files a/assets/Rat/BMP_3_S.png and b/assets/Rat/BMP_3_S.png differ diff --git a/assets/Rat/BMP_3_SE.bmp b/assets/Rat/BMP_3_SE.bmp deleted file mode 100755 index 0d06248..0000000 Binary files a/assets/Rat/BMP_3_SE.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_SE.png b/assets/Rat/BMP_3_SE.png index 23c529c..7c232ea 100644 Binary files a/assets/Rat/BMP_3_SE.png and b/assets/Rat/BMP_3_SE.png differ diff --git a/assets/Rat/BMP_3_SW.bmp b/assets/Rat/BMP_3_SW.bmp deleted file mode 100755 index 9aed2a4..0000000 Binary files a/assets/Rat/BMP_3_SW.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_SW.png b/assets/Rat/BMP_3_SW.png index 883e722..38a5718 100644 Binary files a/assets/Rat/BMP_3_SW.png and b/assets/Rat/BMP_3_SW.png differ diff --git a/assets/Rat/BMP_3_W.bmp b/assets/Rat/BMP_3_W.bmp deleted file mode 100755 index a965de9..0000000 Binary files a/assets/Rat/BMP_3_W.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_W.png b/assets/Rat/BMP_3_W.png index f001743..77144cf 100644 Binary files a/assets/Rat/BMP_3_W.png and b/assets/Rat/BMP_3_W.png differ diff --git a/assets/Rat/BMP_3_WN.bmp b/assets/Rat/BMP_3_WN.bmp deleted file mode 100755 index 1bdf1fc..0000000 Binary files a/assets/Rat/BMP_3_WN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_WN.png b/assets/Rat/BMP_3_WN.png index 1958266..4b938ff 100644 Binary files a/assets/Rat/BMP_3_WN.png and b/assets/Rat/BMP_3_WN.png differ diff --git a/assets/Rat/BMP_3_WS.bmp b/assets/Rat/BMP_3_WS.bmp deleted file mode 100755 index 81d9ec2..0000000 Binary files a/assets/Rat/BMP_3_WS.bmp and /dev/null differ diff --git a/assets/Rat/BMP_3_WS.png b/assets/Rat/BMP_3_WS.png index 922c3f0..33d0e30 100644 Binary files a/assets/Rat/BMP_3_WS.png and b/assets/Rat/BMP_3_WS.png differ diff --git a/assets/Rat/BMP_4_CAVE_DOWN.bmp b/assets/Rat/BMP_4_CAVE_DOWN.bmp deleted file mode 100755 index a9ffffb..0000000 Binary files a/assets/Rat/BMP_4_CAVE_DOWN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_CAVE_DOWN.png b/assets/Rat/BMP_4_CAVE_DOWN.png index e209d7d..f3ea29e 100644 Binary files a/assets/Rat/BMP_4_CAVE_DOWN.png and b/assets/Rat/BMP_4_CAVE_DOWN.png differ diff --git a/assets/Rat/BMP_4_CAVE_LEFT.bmp b/assets/Rat/BMP_4_CAVE_LEFT.bmp deleted file mode 100755 index 0057b53..0000000 Binary files a/assets/Rat/BMP_4_CAVE_LEFT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_CAVE_LEFT.png b/assets/Rat/BMP_4_CAVE_LEFT.png index 7583f8c..88abe1f 100644 Binary files a/assets/Rat/BMP_4_CAVE_LEFT.png and b/assets/Rat/BMP_4_CAVE_LEFT.png differ diff --git a/assets/Rat/BMP_4_CAVE_RIGHT.bmp b/assets/Rat/BMP_4_CAVE_RIGHT.bmp deleted file mode 100755 index f86efbe..0000000 Binary files a/assets/Rat/BMP_4_CAVE_RIGHT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_CAVE_RIGHT.png b/assets/Rat/BMP_4_CAVE_RIGHT.png index 3df22d7..24afeb4 100644 Binary files a/assets/Rat/BMP_4_CAVE_RIGHT.png and b/assets/Rat/BMP_4_CAVE_RIGHT.png differ diff --git a/assets/Rat/BMP_4_CAVE_UP.bmp b/assets/Rat/BMP_4_CAVE_UP.bmp deleted file mode 100755 index 9dcd595..0000000 Binary files a/assets/Rat/BMP_4_CAVE_UP.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_CAVE_UP.png b/assets/Rat/BMP_4_CAVE_UP.png index 24cf2b0..4708842 100644 Binary files a/assets/Rat/BMP_4_CAVE_UP.png and b/assets/Rat/BMP_4_CAVE_UP.png differ diff --git a/assets/Rat/BMP_4_E.bmp b/assets/Rat/BMP_4_E.bmp deleted file mode 100755 index f1562f0..0000000 Binary files a/assets/Rat/BMP_4_E.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_E.png b/assets/Rat/BMP_4_E.png index ec01607..94dc069 100644 Binary files a/assets/Rat/BMP_4_E.png and b/assets/Rat/BMP_4_E.png differ diff --git a/assets/Rat/BMP_4_EN.bmp b/assets/Rat/BMP_4_EN.bmp deleted file mode 100755 index 7281cf7..0000000 Binary files a/assets/Rat/BMP_4_EN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_EN.png b/assets/Rat/BMP_4_EN.png index 9c6c120..8451fa7 100644 Binary files a/assets/Rat/BMP_4_EN.png and b/assets/Rat/BMP_4_EN.png differ diff --git a/assets/Rat/BMP_4_ES.bmp b/assets/Rat/BMP_4_ES.bmp deleted file mode 100755 index fd55d81..0000000 Binary files a/assets/Rat/BMP_4_ES.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_ES.png b/assets/Rat/BMP_4_ES.png index 2c30f01..b2ad7a1 100644 Binary files a/assets/Rat/BMP_4_ES.png and b/assets/Rat/BMP_4_ES.png differ diff --git a/assets/Rat/BMP_4_EXPLOSION_DOWN.bmp b/assets/Rat/BMP_4_EXPLOSION_DOWN.bmp deleted file mode 100755 index 4148d45..0000000 Binary files a/assets/Rat/BMP_4_EXPLOSION_DOWN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_EXPLOSION_DOWN.png b/assets/Rat/BMP_4_EXPLOSION_DOWN.png index df20f56..06e908f 100644 Binary files a/assets/Rat/BMP_4_EXPLOSION_DOWN.png and b/assets/Rat/BMP_4_EXPLOSION_DOWN.png differ diff --git a/assets/Rat/BMP_4_EXPLOSION_LEFT.bmp b/assets/Rat/BMP_4_EXPLOSION_LEFT.bmp deleted file mode 100755 index c8d1b6f..0000000 Binary files a/assets/Rat/BMP_4_EXPLOSION_LEFT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_EXPLOSION_LEFT.png b/assets/Rat/BMP_4_EXPLOSION_LEFT.png index 54079cc..1b0723b 100644 Binary files a/assets/Rat/BMP_4_EXPLOSION_LEFT.png and b/assets/Rat/BMP_4_EXPLOSION_LEFT.png differ diff --git a/assets/Rat/BMP_4_EXPLOSION_RIGHT.bmp b/assets/Rat/BMP_4_EXPLOSION_RIGHT.bmp deleted file mode 100755 index 9ae560b..0000000 Binary files a/assets/Rat/BMP_4_EXPLOSION_RIGHT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_EXPLOSION_RIGHT.png b/assets/Rat/BMP_4_EXPLOSION_RIGHT.png index bcd823c..c1808b6 100644 Binary files a/assets/Rat/BMP_4_EXPLOSION_RIGHT.png and b/assets/Rat/BMP_4_EXPLOSION_RIGHT.png differ diff --git a/assets/Rat/BMP_4_EXPLOSION_UP.bmp b/assets/Rat/BMP_4_EXPLOSION_UP.bmp deleted file mode 100755 index 438943c..0000000 Binary files a/assets/Rat/BMP_4_EXPLOSION_UP.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_EXPLOSION_UP.png b/assets/Rat/BMP_4_EXPLOSION_UP.png index e2a4e62..87ad445 100644 Binary files a/assets/Rat/BMP_4_EXPLOSION_UP.png and b/assets/Rat/BMP_4_EXPLOSION_UP.png differ diff --git a/assets/Rat/BMP_4_FLOWER_1.bmp b/assets/Rat/BMP_4_FLOWER_1.bmp deleted file mode 100755 index a5182f2..0000000 Binary files a/assets/Rat/BMP_4_FLOWER_1.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_FLOWER_1.png b/assets/Rat/BMP_4_FLOWER_1.png index 4c22692..ca87f19 100644 Binary files a/assets/Rat/BMP_4_FLOWER_1.png and b/assets/Rat/BMP_4_FLOWER_1.png differ diff --git a/assets/Rat/BMP_4_FLOWER_2.bmp b/assets/Rat/BMP_4_FLOWER_2.bmp deleted file mode 100755 index e844592..0000000 Binary files a/assets/Rat/BMP_4_FLOWER_2.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_FLOWER_2.png b/assets/Rat/BMP_4_FLOWER_2.png index 84b2ae8..9c4f14a 100644 Binary files a/assets/Rat/BMP_4_FLOWER_2.png and b/assets/Rat/BMP_4_FLOWER_2.png differ diff --git a/assets/Rat/BMP_4_FLOWER_3.bmp b/assets/Rat/BMP_4_FLOWER_3.bmp deleted file mode 100755 index 045dbee..0000000 Binary files a/assets/Rat/BMP_4_FLOWER_3.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_FLOWER_3.png b/assets/Rat/BMP_4_FLOWER_3.png index f1add33..86ced1b 100644 Binary files a/assets/Rat/BMP_4_FLOWER_3.png and b/assets/Rat/BMP_4_FLOWER_3.png differ diff --git a/assets/Rat/BMP_4_FLOWER_4.bmp b/assets/Rat/BMP_4_FLOWER_4.bmp deleted file mode 100755 index 2dcee64..0000000 Binary files a/assets/Rat/BMP_4_FLOWER_4.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_FLOWER_4.png b/assets/Rat/BMP_4_FLOWER_4.png index 2366016..b659c00 100644 Binary files a/assets/Rat/BMP_4_FLOWER_4.png and b/assets/Rat/BMP_4_FLOWER_4.png differ diff --git a/assets/Rat/BMP_4_GAS_DOWN.bmp b/assets/Rat/BMP_4_GAS_DOWN.bmp deleted file mode 100755 index 1a338ec..0000000 Binary files a/assets/Rat/BMP_4_GAS_DOWN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_GAS_DOWN.png b/assets/Rat/BMP_4_GAS_DOWN.png index 3541a0e..ec37540 100644 Binary files a/assets/Rat/BMP_4_GAS_DOWN.png and b/assets/Rat/BMP_4_GAS_DOWN.png differ diff --git a/assets/Rat/BMP_4_GAS_LEFT.bmp b/assets/Rat/BMP_4_GAS_LEFT.bmp deleted file mode 100755 index 23f2a2e..0000000 Binary files a/assets/Rat/BMP_4_GAS_LEFT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_GAS_LEFT.png b/assets/Rat/BMP_4_GAS_LEFT.png index 76985ce..f8eca96 100644 Binary files a/assets/Rat/BMP_4_GAS_LEFT.png and b/assets/Rat/BMP_4_GAS_LEFT.png differ diff --git a/assets/Rat/BMP_4_GAS_RIGHT.bmp b/assets/Rat/BMP_4_GAS_RIGHT.bmp deleted file mode 100755 index 59451d5..0000000 Binary files a/assets/Rat/BMP_4_GAS_RIGHT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_GAS_RIGHT.png b/assets/Rat/BMP_4_GAS_RIGHT.png index 72749fe..0a07f9f 100644 Binary files a/assets/Rat/BMP_4_GAS_RIGHT.png and b/assets/Rat/BMP_4_GAS_RIGHT.png differ diff --git a/assets/Rat/BMP_4_GAS_UP.bmp b/assets/Rat/BMP_4_GAS_UP.bmp deleted file mode 100755 index 7cc5b42..0000000 Binary files a/assets/Rat/BMP_4_GAS_UP.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_GAS_UP.png b/assets/Rat/BMP_4_GAS_UP.png index a5ec50f..0670eeb 100644 Binary files a/assets/Rat/BMP_4_GAS_UP.png and b/assets/Rat/BMP_4_GAS_UP.png differ diff --git a/assets/Rat/BMP_4_GRASS_1.bmp b/assets/Rat/BMP_4_GRASS_1.bmp deleted file mode 100755 index 1c1368a..0000000 Binary files a/assets/Rat/BMP_4_GRASS_1.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_GRASS_1.png b/assets/Rat/BMP_4_GRASS_1.png index 36575d7..eaeaf22 100644 Binary files a/assets/Rat/BMP_4_GRASS_1.png and b/assets/Rat/BMP_4_GRASS_1.png differ diff --git a/assets/Rat/BMP_4_GRASS_2.bmp b/assets/Rat/BMP_4_GRASS_2.bmp deleted file mode 100755 index 9a09616..0000000 Binary files a/assets/Rat/BMP_4_GRASS_2.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_GRASS_2.png b/assets/Rat/BMP_4_GRASS_2.png index 7dc2e9f..5d0561d 100644 Binary files a/assets/Rat/BMP_4_GRASS_2.png and b/assets/Rat/BMP_4_GRASS_2.png differ diff --git a/assets/Rat/BMP_4_GRASS_3.bmp b/assets/Rat/BMP_4_GRASS_3.bmp deleted file mode 100755 index 4df0bfe..0000000 Binary files a/assets/Rat/BMP_4_GRASS_3.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_GRASS_3.png b/assets/Rat/BMP_4_GRASS_3.png index 60c459f..8b30d34 100644 Binary files a/assets/Rat/BMP_4_GRASS_3.png and b/assets/Rat/BMP_4_GRASS_3.png differ diff --git a/assets/Rat/BMP_4_GRASS_4.bmp b/assets/Rat/BMP_4_GRASS_4.bmp deleted file mode 100755 index a36dfcb..0000000 Binary files a/assets/Rat/BMP_4_GRASS_4.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_GRASS_4.png b/assets/Rat/BMP_4_GRASS_4.png index 1d07da4..a62b820 100644 Binary files a/assets/Rat/BMP_4_GRASS_4.png and b/assets/Rat/BMP_4_GRASS_4.png differ diff --git a/assets/Rat/BMP_4_N.bmp b/assets/Rat/BMP_4_N.bmp deleted file mode 100755 index 63bf410..0000000 Binary files a/assets/Rat/BMP_4_N.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_N.png b/assets/Rat/BMP_4_N.png index c22c1e4..ca432a4 100644 Binary files a/assets/Rat/BMP_4_N.png and b/assets/Rat/BMP_4_N.png differ diff --git a/assets/Rat/BMP_4_NE.bmp b/assets/Rat/BMP_4_NE.bmp deleted file mode 100755 index c7914e1..0000000 Binary files a/assets/Rat/BMP_4_NE.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_NE.png b/assets/Rat/BMP_4_NE.png index a64a619..bdf1bdd 100644 Binary files a/assets/Rat/BMP_4_NE.png and b/assets/Rat/BMP_4_NE.png differ diff --git a/assets/Rat/BMP_4_NW.bmp b/assets/Rat/BMP_4_NW.bmp deleted file mode 100755 index 001e037..0000000 Binary files a/assets/Rat/BMP_4_NW.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_NW.png b/assets/Rat/BMP_4_NW.png index db16518..33d2de2 100644 Binary files a/assets/Rat/BMP_4_NW.png and b/assets/Rat/BMP_4_NW.png differ diff --git a/assets/Rat/BMP_4_S.bmp b/assets/Rat/BMP_4_S.bmp deleted file mode 100755 index 7980d41..0000000 Binary files a/assets/Rat/BMP_4_S.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_S.png b/assets/Rat/BMP_4_S.png index 423e713..0d61c56 100644 Binary files a/assets/Rat/BMP_4_S.png and b/assets/Rat/BMP_4_S.png differ diff --git a/assets/Rat/BMP_4_SE.bmp b/assets/Rat/BMP_4_SE.bmp deleted file mode 100755 index 87c86e4..0000000 Binary files a/assets/Rat/BMP_4_SE.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_SE.png b/assets/Rat/BMP_4_SE.png index 1d359e5..f2464da 100644 Binary files a/assets/Rat/BMP_4_SE.png and b/assets/Rat/BMP_4_SE.png differ diff --git a/assets/Rat/BMP_4_SW.bmp b/assets/Rat/BMP_4_SW.bmp deleted file mode 100755 index ebce71c..0000000 Binary files a/assets/Rat/BMP_4_SW.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_SW.png b/assets/Rat/BMP_4_SW.png index 5dbab25..67bcc0d 100644 Binary files a/assets/Rat/BMP_4_SW.png and b/assets/Rat/BMP_4_SW.png differ diff --git a/assets/Rat/BMP_4_W.bmp b/assets/Rat/BMP_4_W.bmp deleted file mode 100755 index b04c343..0000000 Binary files a/assets/Rat/BMP_4_W.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_W.png b/assets/Rat/BMP_4_W.png index dec4716..ea529f9 100644 Binary files a/assets/Rat/BMP_4_W.png and b/assets/Rat/BMP_4_W.png differ diff --git a/assets/Rat/BMP_4_WN.bmp b/assets/Rat/BMP_4_WN.bmp deleted file mode 100755 index 83fe484..0000000 Binary files a/assets/Rat/BMP_4_WN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_WN.png b/assets/Rat/BMP_4_WN.png index 1f048dc..69b833e 100644 Binary files a/assets/Rat/BMP_4_WN.png and b/assets/Rat/BMP_4_WN.png differ diff --git a/assets/Rat/BMP_4_WS.bmp b/assets/Rat/BMP_4_WS.bmp deleted file mode 100755 index ee03b52..0000000 Binary files a/assets/Rat/BMP_4_WS.bmp and /dev/null differ diff --git a/assets/Rat/BMP_4_WS.png b/assets/Rat/BMP_4_WS.png index 41606a8..4e41f88 100644 Binary files a/assets/Rat/BMP_4_WS.png and b/assets/Rat/BMP_4_WS.png differ diff --git a/assets/Rat/BMP_ARROW_DOWN.bmp b/assets/Rat/BMP_ARROW_DOWN.bmp deleted file mode 100755 index c8e3d90..0000000 Binary files a/assets/Rat/BMP_ARROW_DOWN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_ARROW_LEFT.bmp b/assets/Rat/BMP_ARROW_LEFT.bmp deleted file mode 100755 index f840412..0000000 Binary files a/assets/Rat/BMP_ARROW_LEFT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_ARROW_RIGHT.bmp b/assets/Rat/BMP_ARROW_RIGHT.bmp deleted file mode 100755 index 1916356..0000000 Binary files a/assets/Rat/BMP_ARROW_RIGHT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_ARROW_UP.bmp b/assets/Rat/BMP_ARROW_UP.bmp deleted file mode 100755 index dffff8a..0000000 Binary files a/assets/Rat/BMP_ARROW_UP.bmp and /dev/null differ diff --git a/assets/Rat/BMP_BABY_DOWN.bmp b/assets/Rat/BMP_BABY_DOWN.bmp deleted file mode 100755 index 65e1138..0000000 Binary files a/assets/Rat/BMP_BABY_DOWN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_BABY_DOWN.png b/assets/Rat/BMP_BABY_DOWN.png index b343cd1..083af46 100644 Binary files a/assets/Rat/BMP_BABY_DOWN.png and b/assets/Rat/BMP_BABY_DOWN.png differ diff --git a/assets/Rat/BMP_BABY_LEFT.bmp b/assets/Rat/BMP_BABY_LEFT.bmp deleted file mode 100755 index 8cca83d..0000000 Binary files a/assets/Rat/BMP_BABY_LEFT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_BABY_LEFT.png b/assets/Rat/BMP_BABY_LEFT.png index eae0b69..65d6e1b 100644 Binary files a/assets/Rat/BMP_BABY_LEFT.png and b/assets/Rat/BMP_BABY_LEFT.png differ diff --git a/assets/Rat/BMP_BABY_RIGHT.bmp b/assets/Rat/BMP_BABY_RIGHT.bmp deleted file mode 100755 index ebbf3b6..0000000 Binary files a/assets/Rat/BMP_BABY_RIGHT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_BABY_RIGHT.png b/assets/Rat/BMP_BABY_RIGHT.png index 345f00b..8c9f157 100644 Binary files a/assets/Rat/BMP_BABY_RIGHT.png and b/assets/Rat/BMP_BABY_RIGHT.png differ diff --git a/assets/Rat/BMP_BABY_UP.bmp b/assets/Rat/BMP_BABY_UP.bmp deleted file mode 100755 index f627994..0000000 Binary files a/assets/Rat/BMP_BABY_UP.bmp and /dev/null differ diff --git a/assets/Rat/BMP_BABY_UP.png b/assets/Rat/BMP_BABY_UP.png index 536432a..96b283d 100644 Binary files a/assets/Rat/BMP_BABY_UP.png and b/assets/Rat/BMP_BABY_UP.png differ diff --git a/assets/Rat/BMP_BLOCK_0.bmp b/assets/Rat/BMP_BLOCK_0.bmp deleted file mode 100755 index 799cb80..0000000 Binary files a/assets/Rat/BMP_BLOCK_0.bmp and /dev/null differ diff --git a/assets/Rat/BMP_BLOCK_0.png b/assets/Rat/BMP_BLOCK_0.png index e3d4dad..ff9a33c 100644 Binary files a/assets/Rat/BMP_BLOCK_0.png and b/assets/Rat/BMP_BLOCK_0.png differ diff --git a/assets/Rat/BMP_BLOCK_1.bmp b/assets/Rat/BMP_BLOCK_1.bmp deleted file mode 100755 index 0dbc5b4..0000000 Binary files a/assets/Rat/BMP_BLOCK_1.bmp and /dev/null differ diff --git a/assets/Rat/BMP_BLOCK_1.png b/assets/Rat/BMP_BLOCK_1.png index bce33a3..29ea904 100644 Binary files a/assets/Rat/BMP_BLOCK_1.png and b/assets/Rat/BMP_BLOCK_1.png differ diff --git a/assets/Rat/BMP_BLOCK_2.bmp b/assets/Rat/BMP_BLOCK_2.bmp deleted file mode 100755 index aff8620..0000000 Binary files a/assets/Rat/BMP_BLOCK_2.bmp and /dev/null differ diff --git a/assets/Rat/BMP_BLOCK_2.png b/assets/Rat/BMP_BLOCK_2.png index 8b64c9f..0b3b6d6 100644 Binary files a/assets/Rat/BMP_BLOCK_2.png and b/assets/Rat/BMP_BLOCK_2.png differ diff --git a/assets/Rat/BMP_BLOCK_3.bmp b/assets/Rat/BMP_BLOCK_3.bmp deleted file mode 100755 index a603ed5..0000000 Binary files a/assets/Rat/BMP_BLOCK_3.bmp and /dev/null differ diff --git a/assets/Rat/BMP_BLOCK_3.png b/assets/Rat/BMP_BLOCK_3.png index 9e64240..2914cc2 100644 Binary files a/assets/Rat/BMP_BLOCK_3.png and b/assets/Rat/BMP_BLOCK_3.png differ diff --git a/assets/Rat/BMP_BOMB.bmp b/assets/Rat/BMP_BOMB.bmp deleted file mode 100755 index cb727e9..0000000 Binary files a/assets/Rat/BMP_BOMB.bmp and /dev/null differ diff --git a/assets/Rat/BMP_BOMB0.png b/assets/Rat/BMP_BOMB0.png index 38a82be..b8f5c5d 100644 Binary files a/assets/Rat/BMP_BOMB0.png and b/assets/Rat/BMP_BOMB0.png differ diff --git a/assets/Rat/BMP_BOMB1.bmp b/assets/Rat/BMP_BOMB1.bmp deleted file mode 100755 index f255e7b..0000000 Binary files a/assets/Rat/BMP_BOMB1.bmp and /dev/null differ diff --git a/assets/Rat/BMP_BOMB1.png b/assets/Rat/BMP_BOMB1.png index 3d74d5c..6acf189 100644 Binary files a/assets/Rat/BMP_BOMB1.png and b/assets/Rat/BMP_BOMB1.png differ diff --git a/assets/Rat/BMP_BOMB2.bmp b/assets/Rat/BMP_BOMB2.bmp deleted file mode 100755 index 2d47072..0000000 Binary files a/assets/Rat/BMP_BOMB2.bmp and /dev/null differ diff --git a/assets/Rat/BMP_BOMB2.png b/assets/Rat/BMP_BOMB2.png index 6925334..5ef8ca8 100644 Binary files a/assets/Rat/BMP_BOMB2.png and b/assets/Rat/BMP_BOMB2.png differ diff --git a/assets/Rat/BMP_BOMB3.bmp b/assets/Rat/BMP_BOMB3.bmp deleted file mode 100755 index 4751e8c..0000000 Binary files a/assets/Rat/BMP_BOMB3.bmp and /dev/null differ diff --git a/assets/Rat/BMP_BOMB3.png b/assets/Rat/BMP_BOMB3.png index cb3d4e4..0f005e3 100644 Binary files a/assets/Rat/BMP_BOMB3.png and b/assets/Rat/BMP_BOMB3.png differ diff --git a/assets/Rat/BMP_BOMB4.bmp b/assets/Rat/BMP_BOMB4.bmp deleted file mode 100755 index 97535c6..0000000 Binary files a/assets/Rat/BMP_BOMB4.bmp and /dev/null differ diff --git a/assets/Rat/BMP_BOMB4.png b/assets/Rat/BMP_BOMB4.png index be54400..275cb52 100644 Binary files a/assets/Rat/BMP_BOMB4.png and b/assets/Rat/BMP_BOMB4.png differ diff --git a/assets/Rat/BMP_BONUS_10.bmp b/assets/Rat/BMP_BONUS_10.bmp deleted file mode 100755 index 13925de..0000000 Binary files a/assets/Rat/BMP_BONUS_10.bmp and /dev/null differ diff --git a/assets/Rat/BMP_BONUS_10.png b/assets/Rat/BMP_BONUS_10.png index ab6f60b..96a017c 100644 Binary files a/assets/Rat/BMP_BONUS_10.png and b/assets/Rat/BMP_BONUS_10.png differ diff --git a/assets/Rat/BMP_BONUS_160.bmp b/assets/Rat/BMP_BONUS_160.bmp deleted file mode 100755 index f02f960..0000000 Binary files a/assets/Rat/BMP_BONUS_160.bmp and /dev/null differ diff --git a/assets/Rat/BMP_BONUS_160.png b/assets/Rat/BMP_BONUS_160.png index e349727..7302f16 100644 Binary files a/assets/Rat/BMP_BONUS_160.png and b/assets/Rat/BMP_BONUS_160.png differ diff --git a/assets/Rat/BMP_BONUS_20.bmp b/assets/Rat/BMP_BONUS_20.bmp deleted file mode 100755 index 088ffed..0000000 Binary files a/assets/Rat/BMP_BONUS_20.bmp and /dev/null differ diff --git a/assets/Rat/BMP_BONUS_20.png b/assets/Rat/BMP_BONUS_20.png index 3e116f6..c7574ae 100644 Binary files a/assets/Rat/BMP_BONUS_20.png and b/assets/Rat/BMP_BONUS_20.png differ diff --git a/assets/Rat/BMP_BONUS_40.bmp b/assets/Rat/BMP_BONUS_40.bmp deleted file mode 100755 index e0fc1e7..0000000 Binary files a/assets/Rat/BMP_BONUS_40.bmp and /dev/null differ diff --git a/assets/Rat/BMP_BONUS_40.png b/assets/Rat/BMP_BONUS_40.png index 4b783a8..cd30355 100644 Binary files a/assets/Rat/BMP_BONUS_40.png and b/assets/Rat/BMP_BONUS_40.png differ diff --git a/assets/Rat/BMP_BONUS_5.bmp b/assets/Rat/BMP_BONUS_5.bmp deleted file mode 100755 index 2e753e1..0000000 Binary files a/assets/Rat/BMP_BONUS_5.bmp and /dev/null differ diff --git a/assets/Rat/BMP_BONUS_5.png b/assets/Rat/BMP_BONUS_5.png index f1f79e8..afabbc6 100644 Binary files a/assets/Rat/BMP_BONUS_5.png and b/assets/Rat/BMP_BONUS_5.png differ diff --git a/assets/Rat/BMP_BONUS_80.bmp b/assets/Rat/BMP_BONUS_80.bmp deleted file mode 100755 index f41d17e..0000000 Binary files a/assets/Rat/BMP_BONUS_80.bmp and /dev/null differ diff --git a/assets/Rat/BMP_BONUS_80.png b/assets/Rat/BMP_BONUS_80.png index 0b11d47..867c3e7 100644 Binary files a/assets/Rat/BMP_BONUS_80.png and b/assets/Rat/BMP_BONUS_80.png differ diff --git a/assets/Rat/BMP_EXPLOSION.bmp b/assets/Rat/BMP_EXPLOSION.bmp deleted file mode 100755 index 359c57b..0000000 Binary files a/assets/Rat/BMP_EXPLOSION.bmp and /dev/null differ diff --git a/assets/Rat/BMP_EXPLOSION.png b/assets/Rat/BMP_EXPLOSION.png index af8ff7c..d3fcb57 100644 Binary files a/assets/Rat/BMP_EXPLOSION.png and b/assets/Rat/BMP_EXPLOSION.png differ diff --git a/assets/Rat/BMP_EXPLOSION_DOWN.bmp b/assets/Rat/BMP_EXPLOSION_DOWN.bmp deleted file mode 100755 index 31cab86..0000000 Binary files a/assets/Rat/BMP_EXPLOSION_DOWN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_EXPLOSION_DOWN.png b/assets/Rat/BMP_EXPLOSION_DOWN.png index c47bc24..d30f732 100644 Binary files a/assets/Rat/BMP_EXPLOSION_DOWN.png and b/assets/Rat/BMP_EXPLOSION_DOWN.png differ diff --git a/assets/Rat/BMP_EXPLOSION_LEFT.bmp b/assets/Rat/BMP_EXPLOSION_LEFT.bmp deleted file mode 100755 index fc7bbb8..0000000 Binary files a/assets/Rat/BMP_EXPLOSION_LEFT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_EXPLOSION_LEFT.png b/assets/Rat/BMP_EXPLOSION_LEFT.png index 80c808e..b535a6d 100644 Binary files a/assets/Rat/BMP_EXPLOSION_LEFT.png and b/assets/Rat/BMP_EXPLOSION_LEFT.png differ diff --git a/assets/Rat/BMP_EXPLOSION_RIGHT.bmp b/assets/Rat/BMP_EXPLOSION_RIGHT.bmp deleted file mode 100755 index c87ef74..0000000 Binary files a/assets/Rat/BMP_EXPLOSION_RIGHT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_EXPLOSION_RIGHT.png b/assets/Rat/BMP_EXPLOSION_RIGHT.png index 51ec2f4..afa66f3 100644 Binary files a/assets/Rat/BMP_EXPLOSION_RIGHT.png and b/assets/Rat/BMP_EXPLOSION_RIGHT.png differ diff --git a/assets/Rat/BMP_EXPLOSION_UP.bmp b/assets/Rat/BMP_EXPLOSION_UP.bmp deleted file mode 100755 index 622d23e..0000000 Binary files a/assets/Rat/BMP_EXPLOSION_UP.bmp and /dev/null differ diff --git a/assets/Rat/BMP_EXPLOSION_UP.png b/assets/Rat/BMP_EXPLOSION_UP.png index aa8e779..2940d22 100644 Binary files a/assets/Rat/BMP_EXPLOSION_UP.png and b/assets/Rat/BMP_EXPLOSION_UP.png differ diff --git a/assets/Rat/BMP_FEMALE.bmp b/assets/Rat/BMP_FEMALE.bmp deleted file mode 100755 index 79b721d..0000000 Binary files a/assets/Rat/BMP_FEMALE.bmp and /dev/null differ diff --git a/assets/Rat/BMP_FEMALE.png b/assets/Rat/BMP_FEMALE.png index 820bea8..5fd8e67 100644 Binary files a/assets/Rat/BMP_FEMALE.png and b/assets/Rat/BMP_FEMALE.png differ diff --git a/assets/Rat/BMP_FEMALE_DOWN.bmp b/assets/Rat/BMP_FEMALE_DOWN.bmp deleted file mode 100755 index 84cdaa9..0000000 Binary files a/assets/Rat/BMP_FEMALE_DOWN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_FEMALE_DOWN.png b/assets/Rat/BMP_FEMALE_DOWN.png index a035649..ddf238b 100644 Binary files a/assets/Rat/BMP_FEMALE_DOWN.png and b/assets/Rat/BMP_FEMALE_DOWN.png differ diff --git a/assets/Rat/BMP_FEMALE_LEFT.bmp b/assets/Rat/BMP_FEMALE_LEFT.bmp deleted file mode 100755 index dc3876a..0000000 Binary files a/assets/Rat/BMP_FEMALE_LEFT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_FEMALE_LEFT.png b/assets/Rat/BMP_FEMALE_LEFT.png index 1116d26..5cee314 100644 Binary files a/assets/Rat/BMP_FEMALE_LEFT.png and b/assets/Rat/BMP_FEMALE_LEFT.png differ diff --git a/assets/Rat/BMP_FEMALE_RIGHT.bmp b/assets/Rat/BMP_FEMALE_RIGHT.bmp deleted file mode 100755 index 45c01c3..0000000 Binary files a/assets/Rat/BMP_FEMALE_RIGHT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_FEMALE_RIGHT.png b/assets/Rat/BMP_FEMALE_RIGHT.png index 417bf54..0cea64c 100644 Binary files a/assets/Rat/BMP_FEMALE_RIGHT.png and b/assets/Rat/BMP_FEMALE_RIGHT.png differ diff --git a/assets/Rat/BMP_FEMALE_UP.bmp b/assets/Rat/BMP_FEMALE_UP.bmp deleted file mode 100755 index 80b928e..0000000 Binary files a/assets/Rat/BMP_FEMALE_UP.bmp and /dev/null differ diff --git a/assets/Rat/BMP_FEMALE_UP.png b/assets/Rat/BMP_FEMALE_UP.png index c80d124..2c487b8 100644 Binary files a/assets/Rat/BMP_FEMALE_UP.png and b/assets/Rat/BMP_FEMALE_UP.png differ diff --git a/assets/Rat/BMP_GAS.bmp b/assets/Rat/BMP_GAS.bmp deleted file mode 100755 index 839e28a..0000000 Binary files a/assets/Rat/BMP_GAS.bmp and /dev/null differ diff --git a/assets/Rat/BMP_GAS.png b/assets/Rat/BMP_GAS.png index 7e77f85..4550769 100644 Binary files a/assets/Rat/BMP_GAS.png and b/assets/Rat/BMP_GAS.png differ diff --git a/assets/Rat/BMP_GAS_DOWN.bmp b/assets/Rat/BMP_GAS_DOWN.bmp deleted file mode 100755 index ee28463..0000000 Binary files a/assets/Rat/BMP_GAS_DOWN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_GAS_DOWN.png b/assets/Rat/BMP_GAS_DOWN.png index 61e7177..90484ee 100644 Binary files a/assets/Rat/BMP_GAS_DOWN.png and b/assets/Rat/BMP_GAS_DOWN.png differ diff --git a/assets/Rat/BMP_GAS_LEFT.bmp b/assets/Rat/BMP_GAS_LEFT.bmp deleted file mode 100755 index 513fab3..0000000 Binary files a/assets/Rat/BMP_GAS_LEFT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_GAS_LEFT.png b/assets/Rat/BMP_GAS_LEFT.png index b906792..7d64299 100644 Binary files a/assets/Rat/BMP_GAS_LEFT.png and b/assets/Rat/BMP_GAS_LEFT.png differ diff --git a/assets/Rat/BMP_GAS_RIGHT.bmp b/assets/Rat/BMP_GAS_RIGHT.bmp deleted file mode 100755 index 8081d08..0000000 Binary files a/assets/Rat/BMP_GAS_RIGHT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_GAS_RIGHT.png b/assets/Rat/BMP_GAS_RIGHT.png index c5e0c30..c6ae1a3 100644 Binary files a/assets/Rat/BMP_GAS_RIGHT.png and b/assets/Rat/BMP_GAS_RIGHT.png differ diff --git a/assets/Rat/BMP_GAS_UP.bmp b/assets/Rat/BMP_GAS_UP.bmp deleted file mode 100755 index e8fd274..0000000 Binary files a/assets/Rat/BMP_GAS_UP.bmp and /dev/null differ diff --git a/assets/Rat/BMP_GAS_UP.png b/assets/Rat/BMP_GAS_UP.png index 995467a..0b274b5 100644 Binary files a/assets/Rat/BMP_GAS_UP.png and b/assets/Rat/BMP_GAS_UP.png differ diff --git a/assets/Rat/BMP_MALE.bmp b/assets/Rat/BMP_MALE.bmp deleted file mode 100755 index 4d4ea97..0000000 Binary files a/assets/Rat/BMP_MALE.bmp and /dev/null differ diff --git a/assets/Rat/BMP_MALE.png b/assets/Rat/BMP_MALE.png index aa0deae..ffa475b 100644 Binary files a/assets/Rat/BMP_MALE.png and b/assets/Rat/BMP_MALE.png differ diff --git a/assets/Rat/BMP_MALE_DOWN.bmp b/assets/Rat/BMP_MALE_DOWN.bmp deleted file mode 100755 index 772f1fb..0000000 Binary files a/assets/Rat/BMP_MALE_DOWN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_MALE_DOWN.png b/assets/Rat/BMP_MALE_DOWN.png index bf00f88..9452051 100644 Binary files a/assets/Rat/BMP_MALE_DOWN.png and b/assets/Rat/BMP_MALE_DOWN.png differ diff --git a/assets/Rat/BMP_MALE_LEFT.bmp b/assets/Rat/BMP_MALE_LEFT.bmp deleted file mode 100755 index c36cb47..0000000 Binary files a/assets/Rat/BMP_MALE_LEFT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_MALE_LEFT.png b/assets/Rat/BMP_MALE_LEFT.png index 67c8fc0..b5109eb 100644 Binary files a/assets/Rat/BMP_MALE_LEFT.png and b/assets/Rat/BMP_MALE_LEFT.png differ diff --git a/assets/Rat/BMP_MALE_RIGHT.bmp b/assets/Rat/BMP_MALE_RIGHT.bmp deleted file mode 100755 index 11a5693..0000000 Binary files a/assets/Rat/BMP_MALE_RIGHT.bmp and /dev/null differ diff --git a/assets/Rat/BMP_MALE_RIGHT.png b/assets/Rat/BMP_MALE_RIGHT.png index f2facf7..00a292b 100644 Binary files a/assets/Rat/BMP_MALE_RIGHT.png and b/assets/Rat/BMP_MALE_RIGHT.png differ diff --git a/assets/Rat/BMP_MALE_UP.bmp b/assets/Rat/BMP_MALE_UP.bmp deleted file mode 100755 index d241dc4..0000000 Binary files a/assets/Rat/BMP_MALE_UP.bmp and /dev/null differ diff --git a/assets/Rat/BMP_MALE_UP.png b/assets/Rat/BMP_MALE_UP.png index 09ecd79..01df774 100644 Binary files a/assets/Rat/BMP_MALE_UP.png and b/assets/Rat/BMP_MALE_UP.png differ diff --git a/assets/Rat/BMP_NUCLEAR.bmp b/assets/Rat/BMP_NUCLEAR.bmp deleted file mode 100755 index d8717f7..0000000 Binary files a/assets/Rat/BMP_NUCLEAR.bmp and /dev/null differ diff --git a/assets/Rat/BMP_NUCLEAR.png b/assets/Rat/BMP_NUCLEAR.png index 1fe8c67..2452e3e 100644 Binary files a/assets/Rat/BMP_NUCLEAR.png and b/assets/Rat/BMP_NUCLEAR.png differ diff --git a/assets/Rat/BMP_POISON.bmp b/assets/Rat/BMP_POISON.bmp deleted file mode 100755 index 592cbc7..0000000 Binary files a/assets/Rat/BMP_POISON.bmp and /dev/null differ diff --git a/assets/Rat/BMP_POISON.png b/assets/Rat/BMP_POISON.png index 06b081c..fb414aa 100644 Binary files a/assets/Rat/BMP_POISON.png and b/assets/Rat/BMP_POISON.png differ diff --git a/assets/Rat/BMP_START_1.bmp b/assets/Rat/BMP_START_1.bmp deleted file mode 100755 index f7a8508..0000000 Binary files a/assets/Rat/BMP_START_1.bmp and /dev/null differ diff --git a/assets/Rat/BMP_START_1_DOWN.bmp b/assets/Rat/BMP_START_1_DOWN.bmp deleted file mode 100755 index 9ce5694..0000000 Binary files a/assets/Rat/BMP_START_1_DOWN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_START_1_SHADED.bmp b/assets/Rat/BMP_START_1_SHADED.bmp deleted file mode 100755 index b3a882c..0000000 Binary files a/assets/Rat/BMP_START_1_SHADED.bmp and /dev/null differ diff --git a/assets/Rat/BMP_START_2.bmp b/assets/Rat/BMP_START_2.bmp deleted file mode 100755 index cefe36d..0000000 Binary files a/assets/Rat/BMP_START_2.bmp and /dev/null differ diff --git a/assets/Rat/BMP_START_2_DOWN.bmp b/assets/Rat/BMP_START_2_DOWN.bmp deleted file mode 100755 index b3bb7b6..0000000 Binary files a/assets/Rat/BMP_START_2_DOWN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_START_2_SHADED.bmp b/assets/Rat/BMP_START_2_SHADED.bmp deleted file mode 100755 index 5942d2a..0000000 Binary files a/assets/Rat/BMP_START_2_SHADED.bmp and /dev/null differ diff --git a/assets/Rat/BMP_START_3.bmp b/assets/Rat/BMP_START_3.bmp deleted file mode 100755 index 6962e10..0000000 Binary files a/assets/Rat/BMP_START_3.bmp and /dev/null differ diff --git a/assets/Rat/BMP_START_3_DOWN.bmp b/assets/Rat/BMP_START_3_DOWN.bmp deleted file mode 100755 index fcb93ae..0000000 Binary files a/assets/Rat/BMP_START_3_DOWN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_START_3_SHADED.bmp b/assets/Rat/BMP_START_3_SHADED.bmp deleted file mode 100755 index 9fa4bd9..0000000 Binary files a/assets/Rat/BMP_START_3_SHADED.bmp and /dev/null differ diff --git a/assets/Rat/BMP_START_4.bmp b/assets/Rat/BMP_START_4.bmp deleted file mode 100755 index 0588661..0000000 Binary files a/assets/Rat/BMP_START_4.bmp and /dev/null differ diff --git a/assets/Rat/BMP_START_4_DOWN.bmp b/assets/Rat/BMP_START_4_DOWN.bmp deleted file mode 100755 index 3cc813e..0000000 Binary files a/assets/Rat/BMP_START_4_DOWN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_START_4_SHADED.bmp b/assets/Rat/BMP_START_4_SHADED.bmp deleted file mode 100755 index b61610e..0000000 Binary files a/assets/Rat/BMP_START_4_SHADED.bmp and /dev/null differ diff --git a/assets/Rat/BMP_TITLE.bmp b/assets/Rat/BMP_TITLE.bmp deleted file mode 100755 index 19c5dfa..0000000 Binary files a/assets/Rat/BMP_TITLE.bmp and /dev/null differ diff --git a/assets/Rat/BMP_TUNNEL.bmp b/assets/Rat/BMP_TUNNEL.bmp deleted file mode 100755 index 47e2e33..0000000 Binary files a/assets/Rat/BMP_TUNNEL.bmp and /dev/null differ diff --git a/assets/Rat/BMP_TUNNEL.png b/assets/Rat/BMP_TUNNEL.png index abcfb77..79d2606 100644 Binary files a/assets/Rat/BMP_TUNNEL.png and b/assets/Rat/BMP_TUNNEL.png differ diff --git a/assets/Rat/BMP_VERMINATORS.bmp b/assets/Rat/BMP_VERMINATORS.bmp deleted file mode 100755 index cd59b99..0000000 Binary files a/assets/Rat/BMP_VERMINATORS.bmp and /dev/null differ diff --git a/assets/Rat/BMP_WEWIN.bmp b/assets/Rat/BMP_WEWIN.bmp deleted file mode 100755 index fc89a45..0000000 Binary files a/assets/Rat/BMP_WEWIN.bmp and /dev/null differ diff --git a/assets/Rat/BMP_WEWIN.png b/assets/Rat/BMP_WEWIN.png index 7377ff0..5c22cf2 100644 Binary files a/assets/Rat/BMP_WEWIN.png and b/assets/Rat/BMP_WEWIN.png differ diff --git a/assets/Rat/intro.png b/assets/Rat/intro.png new file mode 100644 index 0000000..d1e1b24 Binary files /dev/null and b/assets/Rat/intro.png differ diff --git a/assets/Rat/level.dat b/assets/Rat/level.dat new file mode 100644 index 0000000..1da4f89 Binary files /dev/null and b/assets/Rat/level.dat differ diff --git a/assets/Rat/mine.png b/assets/Rat/mine.png index 2e123cc..6aa56e2 100644 Binary files a/assets/Rat/mine.png and b/assets/Rat/mine.png differ diff --git a/engine/controls.py b/engine/controls.py index 6efb375..49da1c9 100644 --- a/engine/controls.py +++ b/engine/controls.py @@ -5,14 +5,18 @@ import random import os import json +from runtime_paths import resolve_bundle_path + bindings = {} -if os.path.exists("conf/keybindings.json"): - with open("conf/keybindings.json", "r") as f: +json_bindings_path = resolve_bundle_path("conf/keybindings.json") +yaml_bindings_path = resolve_bundle_path("conf/keybindings.yaml") +if os.path.exists(json_bindings_path): + with open(json_bindings_path, "r") as f: bindings = json.load(f) else: import yaml # read yaml config file - with open("conf/keybindings.yaml", "r") as f: + with open(yaml_bindings_path, "r") as f: bindings = yaml.safe_load(f) class KeyBindings: diff --git a/engine/graphics.py b/engine/graphics.py index 9899394..3771201 100644 --- a/engine/graphics.py +++ b/engine/graphics.py @@ -1,48 +1,123 @@ import os +import random + +from engine import maze +from runtime_paths import bundle_path class Graphics(): def load_assets(self): - print("Loading graphics assets...") - self.tunnel = self.render_engine.load_image("Rat/BMP_TUNNEL.png", surface=True) - self.grasses = [self.render_engine.load_image(f"Rat/BMP_1_GRASS_{i+1}.png", surface=True) for i in range(4)] - self.rat_assets = {} - self.rat_assets_textures = {} - self.rat_image_sizes = {} # Pre-cache image sizes - self.bomb_assets = {} - - for sex in ["MALE", "FEMALE", "BABY"]: - self.rat_assets[sex] = {} - for direction in ["UP", "DOWN", "LEFT", "RIGHT"]: - self.rat_assets[sex][direction] = self.render_engine.load_image(f"Rat/BMP_{sex}_{direction}.png", transparent_color=(128, 128, 128)) - - # Load textures and pre-cache sizes - for sex in ["MALE", "FEMALE", "BABY"]: - self.rat_assets_textures[sex] = {} - self.rat_image_sizes[sex] = {} - for direction in ["UP", "DOWN", "LEFT", "RIGHT"]: - texture = self.render_engine.load_image(f"Rat/BMP_{sex}_{direction}.png", transparent_color=(128, 128, 128), surface=False) - self.rat_assets_textures[sex][direction] = texture - # Cache size to avoid get_image_size() calls in draw loop - self.rat_image_sizes[sex][direction] = texture.size - - for n in range(5): - self.bomb_assets[n] = self.render_engine.load_image(f"Rat/BMP_BOMB{n}.png", transparent_color=(128, 128, 128)) - self.assets = {} - for file in os.listdir("assets/Rat"): - if file.endswith(".png"): - self.assets[file[:-4]] = self.render_engine.load_image(f"Rat/{file}", transparent_color=(128, 128, 128)) - - # Pre-generate blood stain textures pool (optimization) - print("Pre-generating blood stain pool...") - self.blood_stain_textures = [] - for _ in range(10): - blood_surface = self.render_engine.generate_blood_surface() - blood_texture = self.render_engine.draw_blood_surface(blood_surface, (0, 0)) - if blood_texture: - self.blood_stain_textures.append(blood_texture) - - # Blood layer sprites (instead of regenerating background) - self.blood_layer_sprites = [] + theme_index = self.get_theme_index() + print(f"[gfx] load_assets requested: level={self.current_level + 1} theme={theme_index}") + if not hasattr(self, "theme_assets_cache"): + self.theme_assets_cache = {} + if not hasattr(self, "blood_layer_sprites"): + self.blood_layer_sprites = [] + if not hasattr(self, "cave_foreground_tiles"): + self.cave_foreground_tiles = [] + + if not getattr(self, "common_assets_loaded", False): + print("Loading graphics assets...") + self.rat_assets = {} + self.rat_assets_textures = {} + self.rat_image_sizes = {} + self.bomb_assets = {} + self.assets = {} + + for sex in ["MALE", "FEMALE", "BABY"]: + self.rat_assets[sex] = {} + self.rat_assets_textures[sex] = {} + self.rat_image_sizes[sex] = {} + for direction in ["UP", "DOWN", "LEFT", "RIGHT"]: + self.rat_assets[sex][direction] = self.render_engine.load_image( + f"Rat/BMP_{sex}_{direction}.png", + transparent_color=((125, 125, 125), (128, 128, 128)), + ) + texture = self.render_engine.load_image( + f"Rat/BMP_{sex}_{direction}.png", + transparent_color=((125, 125, 125), (128, 128, 128)), + surface=False, + ) + self.rat_assets_textures[sex][direction] = texture + self.rat_image_sizes[sex][direction] = texture.size + + for n in range(5): + self.bomb_assets[n] = self.render_engine.load_image( + f"Rat/BMP_BOMB{n}.png", + transparent_color=((125, 125, 125), (128, 128, 128)), + ) + + rat_asset_dir = bundle_path("assets", "Rat") + for file in os.listdir(rat_asset_dir): + if file.endswith(".png"): + self.assets[file[:-4]] = self.render_engine.load_image( + f"Rat/{file}", + transparent_color=((125, 125, 125), (128, 128, 128)), + ) + + print("Pre-generating blood stain pool...") + self.blood_stain_textures = [] + for _ in range(10): + blood_surface = self.render_engine.generate_blood_surface() + blood_texture = self.render_engine.draw_blood_surface(blood_surface, (0, 0)) + if blood_texture: + self.blood_stain_textures.append(blood_texture) + + self.common_assets_loaded = True + print("[gfx] common assets loaded") + else: + print("[gfx] common assets cache hit") + + if theme_index not in self.theme_assets_cache: + print(f"Loading theme assets {theme_index}...") + self.theme_assets_cache[theme_index] = { + "floor_tile": self.render_engine.create_color_surface((128, 128, 128)), + "tunnel": self.render_engine.load_image("Rat/BMP_TUNNEL.png", surface=True), + "grasses": [ + self.render_engine.load_image(f"Rat/BMP_{theme_index}_GRASS_{i+1}.png", surface=True) + for i in range(4) + ], + "flowers": [ + self.render_engine.load_image(f"Rat/BMP_{theme_index}_FLOWER_{i+1}.png", surface=True) + for i in range(4) + ], + "caves": { + direction: self.render_engine.load_image( + f"Rat/BMP_{theme_index}_CAVE_{direction}.png", + transparent_color=((125, 125, 125), (128, 128, 128)), + surface=False, + ) + for direction in ["UP", "DOWN", "LEFT", "RIGHT"] + }, + "edges": { + direction: self.render_engine.load_image(f"Rat/BMP_{theme_index}_{direction}.png", surface=True) + for direction in ["N", "S", "E", "W"] + }, + "corners": { + direction: self.render_engine.load_image(f"Rat/BMP_{theme_index}_{direction}.png", surface=True) + for direction in ["NE", "NW", "SE", "SW"] + }, + "inner_corners": { + direction: self.render_engine.load_image(f"Rat/BMP_{theme_index}_{direction}.png", surface=True) + for direction in ["EN", "ES", "WN", "WS"] + }, + } + print(f"[gfx] theme cache miss -> loaded theme {theme_index}") + else: + print(f"[gfx] theme cache hit -> reusing theme {theme_index}") + + self.loaded_theme_index = theme_index + theme_assets = self.theme_assets_cache[theme_index] + self.floor_tile = theme_assets["floor_tile"] + self.tunnel = theme_assets["tunnel"] + self.grasses = theme_assets["grasses"] + self.flowers = theme_assets["flowers"] + self.caves = theme_assets["caves"] + self.edges = theme_assets["edges"] + self.corners = theme_assets["corners"] + self.inner_corners = theme_assets["inner_corners"] + + def get_theme_index(self): + return self.current_level % 32 // 8 + 1 @@ -50,12 +125,16 @@ class Graphics(): def draw_maze(self): if self.background_texture is None: - print("Generating background texture") + print(f"[gfx] generating background texture for level={self.current_level + 1} theme={self.loaded_theme_index}") self.regenerate_background() self.render_engine.draw_background(self.background_texture) # Draw blood layer as sprites (optimized - no background regeneration) self.draw_blood_layer() + + def draw_cave_foreground(self): + for surface, x, y in self.cave_foreground_tiles: + self.render_engine.draw_image(x, y, surface, anchor="nw", tag="cave") def draw_blood_layer(self): """Draw all blood stains as sprites overlay (optimized)""" @@ -65,19 +144,136 @@ class Graphics(): def regenerate_background(self): """Generate or regenerate the background texture (static - no blood stains)""" texture_tiles = [] - for y, row in enumerate(self.map.matrix): + self.cave_foreground_tiles = [] + half_cell = self.cell_size // 2 + + def draw(surface, x, y): + texture_tiles.append((surface, x, y)) + + def draw_cave(surface, x, y): + self.cave_foreground_tiles.append((surface, x, y)) + + def occupied(x, y): + return self.map.in_bounds(x, y) and self.map.get_cell(x, y) != maze.MAP_EMPTY + + def is_tunnel(x, y): + return self.map.in_bounds(x, y) and self.map.get_cell(x, y) == maze.MAP_TUNNEL + + def random_wall(): + return random.choice(self.grasses) + + def random_flower(): + return random.choice(self.flowers) + + for y, row in enumerate(self.map.tiles): for x, cell in enumerate(row): - variant = x*y % 4 - tile = self.grasses[variant] if cell else self.tunnel - texture_tiles.append((tile, x*self.cell_size, y*self.cell_size)) + px = x * self.cell_size + py = y * self.cell_size + + if cell == maze.MAP_EMPTY: + continue + + if cell == maze.MAP_WALL: + if x == 0 or y == 0 or x == self.map.width - 1 or y == self.map.height - 1: + draw(random_wall(), px, py) + + if x > 0 and y > 0 and (not occupied(x - 1, y - 1) or not occupied(x, y - 1) or not occupied(x - 1, y)): + north = occupied(x, y - 1) + west = occupied(x - 1, y) + if north or west: + if north and west: + draw(self.inner_corners["WN"], px, py) + elif north and not west: + draw(self.edges["W"], px, py) + else: + draw(self.edges["N"], px, py) + else: + draw(self.corners["NW"], px, py) + + if y < self.map.height - 1 and x < self.map.width - 1: + south = occupied(x, y + 1) + east = occupied(x + 1, y) + southeast = occupied(x + 1, y + 1) + if southeast and south and east: + if ( + random.randrange(10) != 0 + or x == 0 + or y == 0 + or x == self.map.width - 2 + or y == self.map.height - 2 + or is_tunnel(x + 1, y) + or is_tunnel(x, y + 1) + or is_tunnel(x + 1, y + 1) + ): + draw(random_wall(), px + half_cell, py + half_cell) + else: + draw(random_flower(), px + half_cell, py + half_cell) + elif south or east: + if south and east: + draw(self.inner_corners["ES"], px + half_cell, py + half_cell) + elif south and not east: + draw(self.edges["E"], px + half_cell, py + half_cell) + else: + draw(self.edges["S"], px + half_cell, py + half_cell) + else: + draw(self.corners["SE"], px + half_cell, py + half_cell) + + if y > 0 and x < self.map.width - 1 and (not occupied(x + 1, y - 1) or not occupied(x, y - 1) or not occupied(x + 1, y)): + north = occupied(x, y - 1) + east = occupied(x + 1, y) + if north or east: + if north and east: + draw(self.inner_corners["EN"], px + half_cell, py) + elif north and not east: + draw(self.edges["E"], px + half_cell, py) + else: + draw(self.edges["N"], px + half_cell, py) + else: + draw(self.corners["NE"], px + half_cell, py) + + if y < self.map.height - 1 and x > 0 and (not occupied(x - 1, y + 1) or not occupied(x, y + 1) or not occupied(x - 1, y)): + south = occupied(x, y + 1) + west = occupied(x - 1, y) + if south or west: + if south and west: + draw(self.inner_corners["WS"], px, py + half_cell) + elif south and not west: + draw(self.edges["W"], px, py + half_cell) + else: + draw(self.edges["S"], px, py + half_cell) + else: + draw(self.corners["SW"], px, py + half_cell) + + elif cell == maze.MAP_TUNNEL: + above = occupied(x, y - 1) + below = occupied(x, y + 1) + left = occupied(x - 1, y) + right = occupied(x + 1, y) + + if above: + if below: + if left: + if right: + if random.randrange(10) != 0: + draw(random_wall(), px + half_cell, py + half_cell) + else: + draw(random_flower(), px + half_cell, py + half_cell) + else: + draw_cave(self.caves["RIGHT"], px, py) + else: + draw(self.grasses[0], px + half_cell, py + half_cell) + draw_cave(self.caves["LEFT"], px, py) + else: + draw_cave(self.caves["DOWN"], px, py) + else: + draw(self.grasses[0], px + half_cell, py + half_cell) + draw_cave(self.caves["UP"], px, py) # Blood stains now handled separately as overlay layer - self.background_texture = self.render_engine.create_texture(texture_tiles) + self.background_texture = self.render_engine.create_texture(texture_tiles, fill_color=(128, 128, 128)) def add_blood_stain(self, position): """Add a blood stain as sprite overlay (optimized - no background regeneration)""" - import random - # Pick random blood texture from pre-generated pool if not self.blood_stain_textures: return diff --git a/engine/maze.py b/engine/maze.py index aa299c7..8378e0c 100644 --- a/engine/maze.py +++ b/engine/maze.py @@ -1,13 +1,124 @@ import json +from pathlib import Path + + +LEVELS_PER_DAT_FILE = 32 +LEVEL_WIDTH = 32 +LEVEL_HEIGHT = 32 +LEVEL_SIZE = LEVEL_WIDTH * LEVEL_HEIGHT +EXPECTED_DAT_SIZE = LEVELS_PER_DAT_FILE * LEVEL_SIZE +PROJECT_ROOT = Path(__file__).resolve().parent.parent +DEFAULT_DAT_PATH = PROJECT_ROOT / "assets" / "Rat" / "level.dat" +DEFAULT_JSON_PATH = PROJECT_ROOT / "maze.json" +MAP_EMPTY = 0 +MAP_WALL = 1 +MAP_TUNNEL = 2 + + +def get_default_map_source(): + if DEFAULT_DAT_PATH.exists(): + return DEFAULT_DAT_PATH + return DEFAULT_JSON_PATH + class Map: """Classe che rappresenta la mappa del labirinto.""" - def __init__(self, maze_file): - with open(maze_file, 'r') as file: - self.matrix = json.load(file) - self.height = len(self.matrix) - self.width = len(self.matrix[0]) - + + def __init__(self, maze_file=None, level_index=0): + self.source_path = self._resolve_source_path(maze_file) + self.level_index = level_index + self.tiles = self._load_tiles(self.source_path, level_index) + self.matrix = [ + [cell == MAP_WALL for cell in row] + for row in self.tiles + ] + self.height = len(self.tiles) + self.width = len(self.tiles[0]) + + def _resolve_source_path(self, maze_file): + if maze_file is None: + return get_default_map_source() + + candidate = Path(maze_file) + if candidate.is_absolute(): + return candidate + + if candidate.exists(): + return candidate.resolve() + + project_candidate = PROJECT_ROOT / candidate + if project_candidate.exists(): + return project_candidate + + return project_candidate + + def _load_tiles(self, source_path, level_index): + suffix = source_path.suffix.lower() + if suffix == ".dat": + return self._load_dat_level(source_path, level_index) + return self._load_json_level(source_path) + + def _load_json_level(self, source_path): + with source_path.open("r", encoding="utf-8") as file: + matrix = json.load(file) + return [ + [MAP_WALL if cell else MAP_TUNNEL for cell in row] + for row in matrix + ] + + def _load_dat_level(self, source_path, level_index): + raw_data = source_path.read_bytes() + if len(raw_data) != EXPECTED_DAT_SIZE: + raise ValueError( + f"Invalid DAT size for {source_path}: expected {EXPECTED_DAT_SIZE} bytes, got {len(raw_data)}" + ) + + normalized_level = level_index % LEVELS_PER_DAT_FILE + level_offset = normalized_level * LEVEL_SIZE + level_data = raw_data[level_offset:level_offset + LEVEL_SIZE] + + matrix = [] + for row in range(LEVEL_HEIGHT): + row_start = row * LEVEL_WIDTH + raw_row = level_data[row_start:row_start + LEVEL_WIDTH] + matrix.append(list(raw_row)) + return matrix + + def in_bounds(self, x, y): + return 0 <= x < self.width and 0 <= y < self.height + + def get_cell(self, x, y): + return self.tiles[y][x] + def is_wall(self, x, y): """Restituisce True se la cella è un muro, False altrimenti.""" - return self.matrix[y][x] \ No newline at end of file + return self.matrix[y][x] + + def is_traversable(self, x, y): + return self.get_cell(x, y) != MAP_WALL + + def is_empty(self, x, y): + return self.get_cell(x, y) == MAP_EMPTY + + def is_tunnel(self, x, y): + return self.get_cell(x, y) == MAP_TUNNEL + + def get_tunnel_direction(self, x, y): + directions = [ + ("UP", 0, -1), + ("DOWN", 0, 1), + ("LEFT", -1, 0), + ("RIGHT", 1, 0), + ] + traversable_neighbors = [] + for direction, dx, dy in directions: + nx = x + dx + ny = y + dy + if self.in_bounds(nx, ny) and self.is_traversable(nx, ny): + traversable_neighbors.append(direction) + + if len(traversable_neighbors) == 1: + return traversable_neighbors[0] + if traversable_neighbors: + return traversable_neighbors[0] + return "UP" \ No newline at end of file diff --git a/engine/scoring.py b/engine/scoring.py index ab9ccf6..57c0e65 100644 --- a/engine/scoring.py +++ b/engine/scoring.py @@ -1,13 +1,18 @@ import datetime +from runtime_paths import persistent_data_path + + +SCORES_FILE = persistent_data_path("scores.txt", default_text="") + class Scoring: # ==================== SCORING ==================== def save_score(self): # Save to traditional scores.txt file - with open("scores.txt", "a") as f: + with SCORES_FILE.open("a", encoding="utf-8") as f: player_name = getattr(self, 'profile_integration', None) if player_name and hasattr(player_name, 'get_profile_name'): name = player_name.get_profile_name() @@ -19,7 +24,7 @@ class Scoring: def read_score(self): table = [] try: - with open("scores.txt") as f: + with SCORES_FILE.open(encoding="utf-8") as f: rows = f.read().splitlines() for row in rows: parts = row.split(" - ") diff --git a/engine/sdl2.py b/engine/sdl2.py index 324bd0f..a8f326f 100644 --- a/engine/sdl2.py +++ b/engine/sdl2.py @@ -9,6 +9,8 @@ from sdl2.ext.compat import byteify from sdl2 import SDL_AudioSpec from PIL import Image +from runtime_paths import resolve_bundle_path + class GameWindow: def __init__(self, width, height, cell_size, title="Default", key_callback=None): @@ -93,9 +95,12 @@ class GameWindow: # TEXTURE & IMAGE METHODS # ====================== - def create_texture(self, tiles: list): + def create_texture(self, tiles: list, fill_color=None): """Create a texture from a list of tiles""" bg_surface = sdl2.SDL_CreateRGBSurface(0, self.width, self.height, 32, 0, 0, 0, 0) + if fill_color is not None: + mapped_color = sdl2.SDL_MapRGB(bg_surface.contents.format, *fill_color) + sdl2.SDL_FillRect(bg_surface, None, mapped_color) for tile in tiles: dstrect = sdl2.SDL_Rect(tile[1], tile[2], self.cell_size, self.cell_size) sdl2.SDL_BlitSurface(tile[0], None, bg_surface, dstrect) @@ -103,30 +108,42 @@ class GameWindow: sdl2.SDL_FreeSurface(bg_surface) return bg_texture + def create_color_surface(self, color, width=None, height=None): + """Create a solid color surface matching the current cell size by default.""" + width = width or self.cell_size + height = height or self.cell_size + image = Image.new("RGBA", (width, height), (*color, 255)) + return sdl2.ext.pillow_to_surface(image) + def load_image(self, path, transparent_color=None, surface=False): """Load and process an image with optional transparency and scaling""" - image_path = os.path.join("assets", path) + image_path = resolve_bundle_path(os.path.join("assets", path)) image = Image.open(image_path) # Handle transparency if transparent_color: image = image.convert("RGBA") + # Support single color tuple or sequence of color tuples + if isinstance(transparent_color[0], int): + color_set = {transparent_color} + else: + color_set = set(transparent_color) datas = image.getdata() - new_data = [] - for item in datas: - if item[:3] == transparent_color: - new_data.append((255, 255, 255, 0)) - else: - new_data.append(item) + new_data = [ + (255, 255, 255, 0) if item[:3] in color_set else item + for item in datas + ] image.putdata(new_data) - # Scale image - scale = self.cell_size // 20 - image = image.resize((image.width * scale, image.height * scale), Image.NEAREST) + # Scale image: tiles are now 64px (was 20px), multiply by 5/8 to reach cell_size (40px) + image = image.resize((image.width * 5 // 8, image.height * 5 // 8), Image.NEAREST) if surface: return sdl2.ext.pillow_to_surface(image) - return self.factory.from_surface(sdl2.ext.pillow_to_surface(image)) + temp_surface = sdl2.ext.pillow_to_surface(image) + texture = self.factory.from_surface(temp_surface) + sdl2.SDL_FreeSurface(temp_surface) + return texture def get_image_size(self, image): """Get the size of an image sprite""" @@ -139,8 +156,9 @@ class GameWindow: def generate_fonts(self, font_file): """Generate font managers for different sizes""" fonts = {} + font_path = str(resolve_bundle_path(font_file)) for i in range(10, 70, 1): - fonts.update({i: sdl2.ext.FontManager(font_path=font_file, size=i)}) + fonts.update({i: sdl2.ext.FontManager(font_path=font_path, size=i)}) return fonts # ====================== @@ -166,10 +184,23 @@ class GameWindow: """Draw background texture with current view offset""" self.renderer.copy(bg_texture, dstrect=sdl2.SDL_Rect(self.w_offset, self.h_offset, self.width, self.height)) - def draw_image(self, x, y, sprite, tag=None, anchor="nw"): + def draw_image(self, x, y, sprite, tag=None, anchor="nw", source_rect=None, dest_size=None): """Draw an image sprite at specified coordinates""" if not self.is_in_visible_area(x, y): return + if source_rect is not None: + src_x, src_y, src_w, src_h = (int(value) for value in source_rect) + dst_w, dst_h = dest_size or (src_w, src_h) + dstrect = sdl2.SDL_Rect( + int(x + self.w_offset), + int(y + self.h_offset), + int(dst_w), + int(dst_h), + ) + srcrect = sdl2.SDL_Rect(src_x, src_y, src_w, src_h) + self.renderer.copy(sprite, srcrect=srcrect, dstrect=dstrect) + return + sprite.position = (x + self.w_offset, y + self.h_offset) self.renderer.copy(sprite, dstrect=sprite.position) @@ -230,17 +261,20 @@ class GameWindow: if line.strip(): # Only draw non-empty lines self.draw_text(line.strip(), self.fonts[self.target_size[1]//35], ("center", base_y + i * line_height), sdl2.ext.Color(0, 0, 0)) + image_bottom_y = base_y + len(subtitle_lines) * line_height # Draw scores if provided - position at bottom if scores := kwargs.get("scores"): - scores_start_y = self.target_size[1] * 3 // 4 # Bottom quarter of screen + scores_start_y = min(image_bottom_y + 25, self.target_size[1] - 160) sprite = self.factory.from_text("High Scores:", color=sdl2.ext.Color(0, 0, 0), fontmanager=self.fonts[self.target_size[1]//25]) sprite.position = (self.target_size[0] // 2 - sprite.size[0] // 2, scores_start_y) self.renderer.copy(sprite, dstrect=sprite.position) for i, score in enumerate(scores[:5]): - if len(score) >= 4: # New format: date, score, name, device + if isinstance(score, dict): + score_text = f"{score.get('user_id', 'Guest')}: {score.get('best_score', 0)} pts" + elif len(score) >= 4: # New format: date, score, name, device score_text = f"{score[2]}: {score[1]} pts ({score[3]})" elif len(score) >= 3: # Medium format: date, score, name score_text = f"{score[2]}: {score[1]} pts" @@ -317,22 +351,16 @@ class GameWindow: def scroll_view(self, pointer): """Adjust the view offset based on pointer coordinates""" - x, y = pointer - - # Scale down and invert coordinates - x = -(x // 2) * self.cell_size - y = -(y // 2) * self.cell_size - - # Clamp horizontal offset to valid range - if x <= self.max_w_offset + self.cell_size: - x = self.max_w_offset - - # Clamp vertical offset to valid range - if y < self.max_h_offset: - y = self.max_h_offset + cell_x, cell_y = pointer + + pointer_x = cell_x * self.cell_size + pointer_y = cell_y * self.cell_size + + desired_w_offset = (self.target_size[0] - self.cell_size) // 2 - pointer_x + desired_h_offset = (self.target_size[1] - self.cell_size) // 2 - pointer_y - self.w_offset = x - self.h_offset = y + self.w_offset = max(self.max_w_offset, min(0, desired_w_offset)) + self.h_offset = max(self.max_h_offset, min(0, desired_h_offset)) # Update cached bounds when viewport changes self._update_viewport_bounds() @@ -354,7 +382,7 @@ class GameWindow: """Play a sound file on the specified audio channel""" if not self.audio: return - sound_path = os.path.join("sound", sound_file) + sound_path = str(resolve_bundle_path(os.path.join("sound", sound_file))) rw = sdl2.SDL_RWFromFile(byteify(sound_path, "utf-8"), b"rb") if not rw: raise RuntimeError("Failed to open sound file") @@ -450,6 +478,93 @@ class GameWindow: delay = max(0, self.delay - round(self.performance)) sdl2.SDL_Delay(delay) + # ====================== + # INTRO SCREEN + # ====================== + + def show_intro(self, path, duration_ms=2000, fade_ms=500, crop_center_y=520): + """Show a fullscreen intro image with fade-in/out from black. Skip on keypress. + + SDL scales the image to target width (proportional height), then crops + vertically around crop_center_y. No PIL resize — scaling is done by SDL + via srcrect/dstrect. + """ + img = Image.open(resolve_bundle_path(path)).convert("RGBA") + tw, th = self.target_size + iw, ih = img.size + + # Compute scaled height at target width (aspect-correct), keep in source space + scaled_h = int(ih * tw / iw) + + # Crop window in scaled coords, mapped back to source coords for srcrect + crop_y_scaled = max(0, min(crop_center_y - th // 2, scaled_h - th)) + src_y = int(crop_y_scaled * ih / scaled_h) + src_h = max(1, int(th * ih / scaled_h)) + + surface = sdl2.ext.pillow_to_surface(img) + texture = self.factory.from_surface(surface) + sdl2.SDL_FreeSurface(surface) + srcrect = sdl2.SDL_Rect(0, src_y, iw, src_h) + dstrect = sdl2.SDL_Rect(0, 0, tw, th) + + start = sdl2.SDL_GetTicks() + skipped = False + while True: + elapsed = sdl2.SDL_GetTicks() - start + if elapsed >= duration_ms: + break + + # Compute black overlay alpha for fade-in / fade-out + if elapsed < fade_ms: + overlay_alpha = int(255 * (1.0 - elapsed / fade_ms)) + elif elapsed > duration_ms - fade_ms: + overlay_alpha = int(255 * (elapsed - (duration_ms - fade_ms)) / fade_ms) + else: + overlay_alpha = 0 + + self.renderer.clear() + self.renderer.copy(texture, srcrect=srcrect, dstrect=dstrect) + if overlay_alpha > 0: + sdl2.SDL_SetRenderDrawBlendMode( + self.renderer.sdlrenderer, sdl2.SDL_BLENDMODE_BLEND) + sdl2.SDL_SetRenderDrawColor( + self.renderer.sdlrenderer, 0, 0, 0, overlay_alpha) + sdl2.SDL_RenderFillRect(self.renderer.sdlrenderer, None) + self.renderer.present() + sdl2.SDL_Delay(16) + + for event in sdl2.ext.get_events(): + if event.type == sdl2.SDL_QUIT: + self.running = False + return + elif event.type in (sdl2.SDL_KEYDOWN, sdl2.SDL_JOYBUTTONDOWN): + skipped = True + + if skipped: + break + + # Fade to black before returning (fast if skipped, already there if natural end) + fade_out_ms = fade_ms // 2 if skipped else 0 + if fade_out_ms > 0: + fade_start = sdl2.SDL_GetTicks() + while True: + elapsed = sdl2.SDL_GetTicks() - fade_start + if elapsed >= fade_out_ms: + break + alpha = int(255 * elapsed / fade_out_ms) + self.renderer.clear() + self.renderer.copy(texture, srcrect=srcrect, dstrect=dstrect) + sdl2.SDL_SetRenderDrawBlendMode( + self.renderer.sdlrenderer, sdl2.SDL_BLENDMODE_BLEND) + sdl2.SDL_SetRenderDrawColor(self.renderer.sdlrenderer, 0, 0, 0, alpha) + sdl2.SDL_RenderFillRect(self.renderer.sdlrenderer, None) + self.renderer.present() + sdl2.SDL_Delay(16) + + # Final black frame + self.renderer.clear() + self.renderer.present() + # ====================== # SPECIAL EFFECTS # ====================== diff --git a/engine/unit_manager.py b/engine/unit_manager.py index 74fe2c9..91aa8c5 100644 --- a/engine/unit_manager.py +++ b/engine/unit_manager.py @@ -5,6 +5,20 @@ from units import gas, rat, bomb, mine class UnitManager: + def _spawnable_rat_positions(self): + positions = [] + for y in range(1, self.map.height - 1): + for x in range(1, self.map.width - 1): + if not self.map.is_empty(x, y): + continue + for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]: + nx = x + dx + ny = y + dy + if self.map.in_bounds(nx, ny) and self.map.is_empty(nx, ny): + positions.append((x, y)) + break + return positions + def has_weapon_at(self, position): """Check if there's a weapon (bomb, gas, mine) at the given position""" for unit in self.units.values(): @@ -13,6 +27,16 @@ class UnitManager: if isinstance(unit, (bomb.Timer, bomb.NuclearBomb, gas.Gas, mine.Mine)): return True return False + + def can_place_weapon_at(self, position): + x, y = position + if not self.map.in_bounds(x, y): + return False + if not self.map.is_empty(x, y): + return False + if self.has_weapon_at(position): + return False + return True def count_rats(self): count = 0 @@ -22,7 +46,7 @@ class UnitManager: return count def spawn_gas(self, parent_id=None): - if self.map.is_wall(self.pointer[0], self.pointer[1]): + if not self.can_place_weapon_at(self.pointer): return if self.ammo["gas"]["count"] <= 0: return @@ -33,23 +57,33 @@ class UnitManager: def spawn_rat(self, position=None): if position is None: position = self.choose_start() + if position is None: + print("[flow] spawn_rat aborted: no valid spawn position", flush=True) + return + + print(f"[flow] spawn_rat using position={position}", flush=True) # Don't spawn rats on top of weapons if self.has_weapon_at(position): # Try nearby positions for dx, dy in [(0,1), (1,0), (0,-1), (-1,0), (1,1), (-1,-1), (1,-1), (-1,1)]: alt_pos = (position[0] + dx, position[1] + dy) - if not self.map.is_wall(alt_pos[0], alt_pos[1]) and not self.has_weapon_at(alt_pos): + if not self.map.in_bounds(alt_pos[0], alt_pos[1]): + continue + if self.map.is_empty(alt_pos[0], alt_pos[1]) and not self.has_weapon_at(alt_pos): position = alt_pos break else: # All nearby positions blocked, abort spawn + print(f"[flow] spawn_rat aborted: weapon blocks spawn near {position}", flush=True) return rat_class = rat.Male if random.random() < 0.5 else rat.Female self.spawn_unit(rat_class, position) def spawn_bomb(self, position): + if not self.can_place_weapon_at(position): + return if self.ammo["bomb"]["count"] <= 0: return self.render_engine.play_sound("PUTDOWN.WAV") @@ -60,7 +94,7 @@ class UnitManager: """Spawn a nuclear bomb at the specified position""" if self.ammo["nuclear"]["count"] <= 0: return - if self.map.is_wall(position[0], position[1]): + if not self.can_place_weapon_at(position): return self.render_engine.play_sound("NUCLEAR.WAV") self.ammo["nuclear"]["count"] -= 1 @@ -69,7 +103,7 @@ class UnitManager: def spawn_mine(self, position): if self.ammo["mine"]["count"] <= 0: return - if self.map.is_wall(position[0], position[1]): + if not self.can_place_weapon_at(position): return self.render_engine.play_sound("PUTDOWN.WAV") self.ammo["mine"]["count"] -= 1 @@ -83,12 +117,11 @@ class UnitManager: self.units[id] = unit(self, position, id, **kwargs) def choose_start(self): - if not hasattr(self, '_valid_positions'): - self._valid_positions = [ - (x, y) for y in range(1, self.map.height-1) - for x in range(1, self.map.width-1) - if self.map.matrix[y][x] - ] + if not hasattr(self, '_valid_positions') or self._valid_positions is None: + self._valid_positions = self._spawnable_rat_positions() + print(f"[flow] choose_start computed {len(self._valid_positions)} spawnable cells", flush=True) + if not self._valid_positions: + return None return random.choice(self._valid_positions) def get_unit_by_id(self, id): diff --git a/engine/user_profile_integration.py b/engine/user_profile_integration.py index 61061d4..fd52f4c 100644 --- a/engine/user_profile_integration.py +++ b/engine/user_profile_integration.py @@ -9,24 +9,22 @@ import uuid import platform import hashlib from datetime import datetime -from engine.score_api_client import ScoreAPIClient + +from runtime_paths import DEFAULT_PROFILE_DATA, persistent_data_path class UserProfileIntegration: """Integration layer between the game and profile system""" - def __init__(self, profiles_file="user_profiles.json", api_url="http://172.27.23.245:8000"): - self.profiles_file = profiles_file + def __init__(self, profiles_file="user_profiles.json"): + self.profiles_file = persistent_data_path( + profiles_file, + default_text=DEFAULT_PROFILE_DATA, + ) self.current_profile = None self.device_id = self.generate_device_id() - self.api_client = ScoreAPIClient(api_url) - self.api_enabled = self.api_client.is_server_available() + self.api_enabled = False self.load_active_profile() - - if self.api_enabled: - print(f"✓ Connected to score server at {api_url}") - else: - print(f"✗ Score server not available at {api_url} - running offline") def generate_device_id(self): """Generate a unique device ID based on system information""" @@ -48,17 +46,12 @@ class UserProfileIntegration: def load_active_profile(self): """Load the currently active profile""" try: - with open(self.profiles_file, 'r') as f: + with self.profiles_file.open('r', encoding='utf-8') as f: data = json.load(f) active_name = data.get('active_profile') if active_name and active_name in data['profiles']: self.current_profile = data['profiles'][active_name] print(f"Loaded profile: {self.current_profile['name']}") - - # Sync with API if available - if self.api_enabled: - self.sync_profile_with_api() - return True except (FileNotFoundError, json.JSONDecodeError) as e: print(f"Could not load profile: {e}") @@ -80,40 +73,9 @@ class UserProfileIntegration: return self.current_profile['settings'].get(setting_name, default_value) return default_value - def sync_profile_with_api(self): - """Ensure current profile is registered with the API server""" - if not self.current_profile or not self.api_enabled: - return False - - profile_name = self.current_profile['name'] - - # Check if user exists on server - if not self.api_client.user_exists(self.device_id, profile_name): - print(f"Registering {profile_name} with score server...") - result = self.api_client.signup_user(self.device_id, profile_name) - if result.get('success'): - print(f"✓ {profile_name} registered successfully") - return True - else: - print(f"✗ Failed to register {profile_name}: {result.get('message')}") - return False - else: - print(f"✓ {profile_name} already registered on server") - return True - def register_new_user(self, user_id): - """Register a new user both locally and on the API server""" - if not self.api_enabled: - print("API server not available - user will only be registered locally") - return True - - result = self.api_client.signup_user(self.device_id, user_id) - if result.get('success'): - print(f"✓ {user_id} registered with server successfully") - return True - else: - print(f"✗ Failed to register {user_id} with server: {result.get('message')}") - return False + """Registration is handled locally via the profile manager.""" + return True def update_game_stats(self, score, completed=True): """Update the current profile's game statistics""" @@ -121,42 +83,23 @@ class UserProfileIntegration: print("No profile loaded - stats not saved") return False - # Submit score to API first if available - if self.api_enabled: - profile_name = self.current_profile['name'] - result = self.api_client.submit_score( - self.device_id, - profile_name, - score, - completed - ) - if result.get('success'): - print(f"✓ Score {score} submitted to server successfully") - # Print server stats if available - if 'user_stats' in result: - stats = result['user_stats'] - print(f" Server stats - Games: {stats['total_games']}, Best: {stats['best_score']}") - else: - print(f"✗ Failed to submit score to server: {result.get('message')}") - try: # Update local profile - with open(self.profiles_file, 'r') as f: + with self.profiles_file.open('r', encoding='utf-8') as f: data = json.load(f) profile_name = self.current_profile['name'] if profile_name in data['profiles']: profile = data['profiles'][profile_name] - # Update statistics - if completed: - profile['games_played'] += 1 - print(f"Game completed for {profile_name}! Total games: {profile['games_played']}") - - profile['total_score'] += score + profile['games_played'] += 1 + profile['total_score'] += max(0, score) if score > profile['best_score']: profile['best_score'] = score print(f"New best score for {profile_name}: {score}!") + + if completed and 'first_win' not in profile['achievements']: + profile['achievements'].append('first_win') profile['last_played'] = datetime.now().isoformat() @@ -164,7 +107,7 @@ class UserProfileIntegration: self.current_profile = profile # Save back to file - with open(self.profiles_file, 'w') as f: + with self.profiles_file.open('w', encoding='utf-8') as f: json.dump(data, f, indent=2) print(f"Local profile stats updated: Score +{score}, Total: {profile['total_score']}") @@ -181,7 +124,7 @@ class UserProfileIntegration: return False try: - with open(self.profiles_file, 'r') as f: + with self.profiles_file.open('r', encoding='utf-8') as f: data = json.load(f) profile_name = self.current_profile['name'] @@ -192,7 +135,7 @@ class UserProfileIntegration: profile['achievements'].append(achievement_id) self.current_profile = profile - with open(self.profiles_file, 'w') as f: + with self.profiles_file.open('w', encoding='utf-8') as f: json.dump(data, f, indent=2) print(f"Achievement unlocked for {profile_name}: {achievement_id}") @@ -220,44 +163,72 @@ class UserProfileIntegration: return None def get_device_leaderboard(self, limit=10): - """Get leaderboard for the current device from API server""" - if not self.api_enabled: - print("API server not available - cannot get leaderboard") - return [] - - leaderboard = self.api_client.get_leaderboard(self.device_id, limit) - return leaderboard + """Get leaderboard for local profiles on this device.""" + return self._get_local_leaderboard(limit) def get_global_leaderboard(self, limit=10): - """Get global leaderboard across all devices from API server""" - if not self.api_enabled: - print("API server not available - cannot get global leaderboard") - return [] - - leaderboard = self.api_client.get_global_leaderboard(limit) - return leaderboard + """Global leaderboard falls back to local profiles for this standalone build.""" + return self._get_local_leaderboard(limit) def get_all_device_users(self): - """Get all users registered for this device from API server""" - if not self.api_enabled: - print("API server not available - cannot get user list") - return [] - - users = self.api_client.get_device_users(self.device_id) - return users + leaderboard = self._get_local_leaderboard(limit=None) + return [ + { + 'user_id': entry['user_id'], + 'best_score': entry['best_score'], + 'total_games': entry['total_games'], + 'device_id': entry['device_id'], + } + for entry in leaderboard + ] def get_user_server_scores(self, user_id=None, limit=10): - """Get recent scores from server for a user (defaults to current profile)""" - if not self.api_enabled: - return [] - + """Get recent local scores for a user (defaults to current profile).""" if user_id is None: if not self.current_profile: return [] user_id = self.current_profile['name'] - - scores = self.api_client.get_user_scores(self.device_id, user_id, limit) - return scores + + table = [] + try: + score_file_path = persistent_data_path('scores.txt', default_text='') + with score_file_path.open(encoding='utf-8') as score_file: + for row in score_file.read().splitlines(): + parts = row.split(' - ') + if len(parts) >= 4 and parts[2] == user_id: + table.append({ + 'last_play': parts[0], + 'score': int(parts[1]), + 'user_id': parts[2], + 'device_id': parts[3], + }) + except FileNotFoundError: + return [] + + table.sort(key=lambda entry: entry['score'], reverse=True) + return table[:limit] + + def _get_local_leaderboard(self, limit=10): + try: + with self.profiles_file.open('r', encoding='utf-8') as profile_file: + data = json.load(profile_file) + except (FileNotFoundError, json.JSONDecodeError): + return [] + + entries = [] + for profile in data.get('profiles', {}).values(): + entries.append({ + 'user_id': profile.get('name', 'Unknown'), + 'best_score': profile.get('best_score', 0), + 'total_games': profile.get('games_played', 0), + 'device_id': self.device_id, + 'last_play': profile.get('last_played', ''), + }) + + entries.sort(key=lambda entry: (entry['best_score'], entry['total_games']), reverse=True) + if limit is None: + return entries + return entries[:limit] def reload_profile(self): """Reload the current profile from disk (useful for external profile changes)""" @@ -293,7 +264,7 @@ def get_global_leaderboard(limit=10): if __name__ == "__main__": # Test the integration - print("Testing User Profile Integration with API...") + print("Testing User Profile Integration...") integration = UserProfileIntegration() print(f"Device ID: {integration.get_device_id()}") @@ -311,29 +282,8 @@ if __name__ == "__main__": sound_volume = integration.get_setting('sound_volume', 50) print(f"Settings - Difficulty: {difficulty}, Sound: {sound_volume}%") - # Test API features if connected - if integration.api_enabled: - print("\nTesting API features...") - - # Get leaderboard - leaderboard = integration.get_device_leaderboard(5) - if leaderboard: - print("Device Leaderboard:") - for entry in leaderboard: - print(f" {entry['rank']}. {entry['user_id']}: {entry['best_score']} pts ({entry['total_games']} games)") - else: - print("No leaderboard data available") - - # Get all users - users = integration.get_all_device_users() - print(f"\nTotal users on device: {len(users)}") - for user in users: - print(f" {user['user_id']}: Best {user['best_score']}, {user['total_scores']} games") - - # Test score submission - if integration.current_profile: - print(f"\nTesting score submission for {integration.current_profile['name']}...") - result = integration.update_game_stats(1234, True) - print(f"Score update result: {result}") - else: - print("API features not available - server offline") + leaderboard = integration.get_device_leaderboard(5) + if leaderboard: + print("Local Leaderboard:") + for index, entry in enumerate(leaderboard, start=1): + print(f" {index}. {entry['user_id']}: {entry['best_score']} pts ({entry['total_games']} games)") diff --git a/packaging/appimage/AppRun b/packaging/appimage/AppRun new file mode 100644 index 0000000..db655e0 --- /dev/null +++ b/packaging/appimage/AppRun @@ -0,0 +1,25 @@ +#!/bin/sh +set -eu + +APPDIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd) +VENV_DIR="$APPDIR/usr/opt/python" +GAME_DIR="$APPDIR/usr/share/mice" + +if [ -n "${MICE_DATA_DIR:-}" ]; then + DATA_DIR="$MICE_DATA_DIR" +elif [ -n "${XDG_DATA_HOME:-}" ]; then + DATA_DIR="$XDG_DATA_HOME/mice" +else + DATA_DIR="$HOME/.local/share/mice" +fi + +mkdir -p "$DATA_DIR" + +export PATH="$VENV_DIR/bin:${PATH:-}" +export LD_LIBRARY_PATH="$APPDIR/usr/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" +export MICE_PROJECT_ROOT="$GAME_DIR" +export MICE_DATA_DIR="$DATA_DIR" +export PYTHONNOUSERSITE=1 + +cd "$GAME_DIR" +exec "$VENV_DIR/bin/python" rats.py "$@" \ No newline at end of file diff --git a/packaging/appimage/mice.desktop b/packaging/appimage/mice.desktop new file mode 100644 index 0000000..2faa912 --- /dev/null +++ b/packaging/appimage/mice.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Type=Application +Name=Mice! +Comment=Strategic rat extermination game built with Python and SDL2 +Exec=mice +Icon=mice +Categories=Game;StrategyGame; +Terminal=false +StartupNotify=false \ No newline at end of file diff --git a/packaging/build_appimage_aarch64.sh b/packaging/build_appimage_aarch64.sh new file mode 100644 index 0000000..c780e46 --- /dev/null +++ b/packaging/build_appimage_aarch64.sh @@ -0,0 +1,136 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT_DIR=$(CDPATH= cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd) +DIST_DIR="${DIST_DIR:-$ROOT_DIR/dist}" +APPDIR="${APPDIR:-$DIST_DIR/AppDir}" +APP_NAME="Mice" +APP_ID="mice" +ARCH_EXPECTED="aarch64" +APPIMAGETOOL_BIN="${APPIMAGETOOL_BIN:-appimagetool}" +PYTHON_BIN="${PYTHON_BIN:-python3}" +OUTPUT_APPIMAGE="${OUTPUT_APPIMAGE:-$DIST_DIR/${APP_NAME}-${ARCH_EXPECTED}.AppImage}" + +PYTHON_DIR="$APPDIR/usr/opt/python" +GAME_DIR="$APPDIR/usr/share/mice" +LIB_DIR="$APPDIR/usr/lib" + +require_command() { + if ! command -v "$1" >/dev/null 2>&1; then + printf 'Missing required command: %s\n' "$1" >&2 + exit 1 + fi +} + +find_system_library() { + local soname="$1" + ldconfig -p | awk -v target="$soname" '$1 == target { print $NF; exit }' +} + +should_bundle_soname() { + case "$1" in + linux-vdso.so.*|libc.so.*|libm.so.*|libpthread.so.*|libdl.so.*|librt.so.*|libutil.so.*|libresolv.so.*|ld-linux*.so.*) + return 1 + ;; + *) + return 0 + ;; + esac +} + +copy_dependency_tree() { + local binary="$1" + local dep + local soname + + while IFS= read -r dep; do + [ -n "$dep" ] || continue + [ -f "$dep" ] || continue + soname=$(basename "$dep") + if ! should_bundle_soname "$soname"; then + continue + fi + if [ ! -e "$LIB_DIR/$soname" ]; then + cp -a "$dep" "$LIB_DIR/$soname" + chmod 755 "$LIB_DIR/$soname" || true + copy_dependency_tree "$dep" + fi + done < <( + ldd "$binary" 2>/dev/null | awk ' + /=>/ && $3 ~ /^\// { print $3 } + $1 ~ /^\// { print $1 } + ' | sort -u + ) +} + +copy_system_library() { + local soname="$1" + local path + path=$(find_system_library "$soname") + if [ -z "$path" ]; then + printf 'Unable to locate required system library: %s\n' "$soname" >&2 + exit 1 + fi + cp -a "$path" "$LIB_DIR/$(basename "$path")" + chmod 755 "$LIB_DIR/$(basename "$path")" || true + copy_dependency_tree "$path" +} + +printf '==> Checking build prerequisites\n' +require_command rsync +require_command "$PYTHON_BIN" +require_command "$APPIMAGETOOL_BIN" +require_command ldconfig +require_command ldd + +if [ "$(uname -m)" != "$ARCH_EXPECTED" ]; then + printf 'This builder must run on %s. Current architecture: %s\n' "$ARCH_EXPECTED" "$(uname -m)" >&2 + exit 1 +fi + +printf '==> Creating AppDir at %s\n' "$APPDIR" +rm -rf "$APPDIR" +mkdir -p "$DIST_DIR" "$LIB_DIR" "$GAME_DIR" + +printf '==> Building bundled Python environment with %s\n' "$PYTHON_BIN" +"$PYTHON_BIN" -m venv --copies "$PYTHON_DIR" +"$PYTHON_DIR/bin/pip" install --upgrade pip setuptools wheel +"$PYTHON_DIR/bin/pip" install -r "$ROOT_DIR/requirements.txt" + +printf '==> Syncing game files\n' +rsync -a \ + --delete \ + --exclude '.git' \ + --exclude '.github' \ + --exclude '.venv' \ + --exclude '__pycache__' \ + --exclude '*.pyc' \ + --exclude '.mypy_cache' \ + --exclude '.pytest_cache' \ + --exclude 'build' \ + --exclude 'dist' \ + --exclude 'packaging' \ + "$ROOT_DIR/" "$GAME_DIR/" + +rm -f "$GAME_DIR/user_profiles.json" "$GAME_DIR/scores.txt" + +printf '==> Installing AppImage metadata\n' +install -Dm755 "$ROOT_DIR/packaging/appimage/AppRun" "$APPDIR/AppRun" +install -Dm644 "$ROOT_DIR/packaging/appimage/mice.desktop" "$APPDIR/$APP_ID.desktop" +install -Dm644 "$ROOT_DIR/packaging/appimage/mice.desktop" "$APPDIR/usr/share/applications/$APP_ID.desktop" +install -Dm644 "$ROOT_DIR/assets/Rat/BMP_WEWIN.png" "$APPDIR/$APP_ID.png" +install -Dm644 "$ROOT_DIR/assets/Rat/BMP_WEWIN.png" "$APPDIR/usr/share/icons/hicolor/256x256/apps/$APP_ID.png" + +printf '==> Bundling native dependencies\n' +copy_system_library libSDL2-2.0.so.0 +copy_system_library libSDL2_ttf-2.0.so.0 +copy_dependency_tree "$PYTHON_DIR/bin/python" + +while IFS= read -r -d '' candidate; do + copy_dependency_tree "$candidate" +done < <(find "$PYTHON_DIR" -type f \( -name '*.so' -o -name '*.so.*' -o -perm -u+x \) -print0) + +printf '==> Building AppImage %s\n' "$OUTPUT_APPIMAGE" +ARCH="$ARCH_EXPECTED" "$APPIMAGETOOL_BIN" --appimage-extract-and-run "$APPDIR" "$OUTPUT_APPIMAGE" + +printf 'AppImage created at %s\n' "$OUTPUT_APPIMAGE" \ No newline at end of file diff --git a/profile_manager/profile_data.py b/profile_manager/profile_data.py index ac4ba92..d4dc5f8 100644 --- a/profile_manager/profile_data.py +++ b/profile_manager/profile_data.py @@ -9,9 +9,11 @@ import json from typing import Dict, List, Optional, Any from dataclasses import dataclass, asdict from datetime import datetime +from pathlib import Path # Import the user profile integration system from user_profile_integration import UserProfileIntegration +from runtime_paths import DEFAULT_PROFILE_DATA, persistent_data_path @dataclass @@ -43,7 +45,10 @@ class ProfileDataManager: """Core business logic for profile management""" def __init__(self, profiles_file: str = "user_profiles.json"): - self.profiles_file = profiles_file + self.profiles_file = persistent_data_path( + profiles_file, + default_text=DEFAULT_PROFILE_DATA, + ) self.profiles: Dict[str, UserProfile] = {} self.active_profile: Optional[str] = None @@ -60,7 +65,7 @@ class ProfileDataManager: return True try: - with open(self.profiles_file, 'r') as f: + with Path(self.profiles_file).open('r', encoding='utf-8') as f: data = json.load(f) self.profiles = { name: UserProfile(**profile_data) @@ -84,7 +89,7 @@ class ProfileDataManager: } try: - with open(self.profiles_file, 'w') as f: + with Path(self.profiles_file).open('w', encoding='utf-8') as f: json.dump(data, f, indent=2) return True except IOError as e: diff --git a/profile_manager/ui_components.py b/profile_manager/ui_components.py index 118f751..b59bf1c 100644 --- a/profile_manager/ui_components.py +++ b/profile_manager/ui_components.py @@ -10,6 +10,8 @@ from typing import Dict, List, Optional, Tuple, Any import sdl2 import sdl2.ext +from runtime_paths import resolve_bundle_path + class UIColors: """Standard color palette for UI components""" @@ -47,14 +49,14 @@ class FontManager: def _find_default_font(self) -> Optional[str]: """Find a suitable default font""" font_paths = [ - "assets/decterm.ttf", - "./assets/terminal.ttf", - "./assets/AmaticSC-Regular.ttf" + resolve_bundle_path("assets/decterm.ttf"), + resolve_bundle_path("assets/terminal.ttf"), + resolve_bundle_path("assets/AmaticSC-Regular.ttf"), ] for path in font_paths: if os.path.exists(path): - return path + return str(path) return None def _initialize_fonts(self): diff --git a/profile_manager/user_profile_integration.py b/profile_manager/user_profile_integration.py index 79be36c..2962217 100644 --- a/profile_manager/user_profile_integration.py +++ b/profile_manager/user_profile_integration.py @@ -9,24 +9,22 @@ import uuid import platform import hashlib from datetime import datetime -from score_api_client import ScoreAPIClient + +from runtime_paths import DEFAULT_PROFILE_DATA, persistent_data_path class UserProfileIntegration: """Integration layer between the game and profile system""" - def __init__(self, profiles_file="user_profiles.json", api_url="http://172.27.23.245:8000"): - self.profiles_file = profiles_file + def __init__(self, profiles_file="user_profiles.json"): + self.profiles_file = persistent_data_path( + profiles_file, + default_text=DEFAULT_PROFILE_DATA, + ) self.current_profile = None self.device_id = self.generate_device_id() - self.api_client = ScoreAPIClient(api_url) - self.api_enabled = self.api_client.is_server_available() + self.api_enabled = False self.load_active_profile() - - if self.api_enabled: - print(f"✓ Connected to score server at {api_url}") - else: - print(f"✗ Score server not available at {api_url} - running offline") def generate_device_id(self): """Generate a unique device ID based on system information""" @@ -48,17 +46,12 @@ class UserProfileIntegration: def load_active_profile(self): """Load the currently active profile""" try: - with open(self.profiles_file, 'r') as f: + with self.profiles_file.open('r', encoding='utf-8') as f: data = json.load(f) active_name = data.get('active_profile') if active_name and active_name in data['profiles']: self.current_profile = data['profiles'][active_name] print(f"Loaded profile: {self.current_profile['name']}") - - # Sync with API if available - if self.api_enabled: - self.sync_profile_with_api() - return True except (FileNotFoundError, json.JSONDecodeError) as e: print(f"Could not load profile: {e}") @@ -80,40 +73,8 @@ class UserProfileIntegration: return self.current_profile['settings'].get(setting_name, default_value) return default_value - def sync_profile_with_api(self): - """Ensure current profile is registered with the API server""" - if not self.current_profile or not self.api_enabled: - return False - - profile_name = self.current_profile['name'] - - # Check if user exists on server - if not self.api_client.user_exists(self.device_id, profile_name): - print(f"Registering {profile_name} with score server...") - result = self.api_client.signup_user(self.device_id, profile_name) - if result.get('success'): - print(f"✓ {profile_name} registered successfully") - return True - else: - print(f"✗ Failed to register {profile_name}: {result.get('message')}") - return False - else: - print(f"✓ {profile_name} already registered on server") - return True - def register_new_user(self, user_id): - """Register a new user both locally and on the API server""" - if not self.api_enabled: - print("API server not available - user will only be registered locally") - return True - - result = self.api_client.signup_user(self.device_id, user_id) - if result.get('success'): - print(f"✓ {user_id} registered with server successfully") - return True - else: - print(f"✗ Failed to register {user_id} with server: {result.get('message')}") - return False + return True def update_game_stats(self, score, completed=True): """Update the current profile's game statistics""" @@ -121,42 +82,23 @@ class UserProfileIntegration: print("No profile loaded - stats not saved") return False - # Submit score to API first if available - if self.api_enabled: - profile_name = self.current_profile['name'] - result = self.api_client.submit_score( - self.device_id, - profile_name, - score, - completed - ) - if result.get('success'): - print(f"✓ Score {score} submitted to server successfully") - # Print server stats if available - if 'user_stats' in result: - stats = result['user_stats'] - print(f" Server stats - Games: {stats['total_games']}, Best: {stats['best_score']}") - else: - print(f"✗ Failed to submit score to server: {result.get('message')}") - try: # Update local profile - with open(self.profiles_file, 'r') as f: + with self.profiles_file.open('r', encoding='utf-8') as f: data = json.load(f) profile_name = self.current_profile['name'] if profile_name in data['profiles']: profile = data['profiles'][profile_name] - # Update statistics - if completed: - profile['games_played'] += 1 - print(f"Game completed for {profile_name}! Total games: {profile['games_played']}") - - profile['total_score'] += score + profile['games_played'] += 1 + profile['total_score'] += max(0, score) if score > profile['best_score']: profile['best_score'] = score print(f"New best score for {profile_name}: {score}!") + + if completed and 'first_win' not in profile['achievements']: + profile['achievements'].append('first_win') profile['last_played'] = datetime.now().isoformat() @@ -164,7 +106,7 @@ class UserProfileIntegration: self.current_profile = profile # Save back to file - with open(self.profiles_file, 'w') as f: + with self.profiles_file.open('w', encoding='utf-8') as f: json.dump(data, f, indent=2) print(f"Local profile stats updated: Score +{score}, Total: {profile['total_score']}") @@ -181,7 +123,7 @@ class UserProfileIntegration: return False try: - with open(self.profiles_file, 'r') as f: + with self.profiles_file.open('r', encoding='utf-8') as f: data = json.load(f) profile_name = self.current_profile['name'] @@ -192,7 +134,7 @@ class UserProfileIntegration: profile['achievements'].append(achievement_id) self.current_profile = profile - with open(self.profiles_file, 'w') as f: + with self.profiles_file.open('w', encoding='utf-8') as f: json.dump(data, f, indent=2) print(f"Achievement unlocked for {profile_name}: {achievement_id}") @@ -220,44 +162,70 @@ class UserProfileIntegration: return None def get_device_leaderboard(self, limit=10): - """Get leaderboard for the current device from API server""" - if not self.api_enabled: - print("API server not available - cannot get leaderboard") - return [] - - leaderboard = self.api_client.get_leaderboard(self.device_id, limit) - return leaderboard + return self._get_local_leaderboard(limit) def get_global_leaderboard(self, limit=10): - """Get global leaderboard across all devices from API server""" - if not self.api_enabled: - print("API server not available - cannot get global leaderboard") - return [] - - leaderboard = self.api_client.get_global_leaderboard(limit) - return leaderboard + return self._get_local_leaderboard(limit) def get_all_device_users(self): - """Get all users registered for this device from API server""" - if not self.api_enabled: - print("API server not available - cannot get user list") - return [] - - users = self.api_client.get_device_users(self.device_id) - return users + leaderboard = self._get_local_leaderboard(limit=None) + return [ + { + 'user_id': entry['user_id'], + 'best_score': entry['best_score'], + 'total_games': entry['total_games'], + 'device_id': entry['device_id'], + } + for entry in leaderboard + ] def get_user_server_scores(self, user_id=None, limit=10): - """Get recent scores from server for a user (defaults to current profile)""" - if not self.api_enabled: - return [] - + """Get recent local scores for a user (defaults to current profile).""" if user_id is None: if not self.current_profile: return [] user_id = self.current_profile['name'] - - scores = self.api_client.get_user_scores(self.device_id, user_id, limit) - return scores + + table = [] + try: + score_file_path = persistent_data_path('scores.txt', default_text='') + with score_file_path.open(encoding='utf-8') as score_file: + for row in score_file.read().splitlines(): + parts = row.split(' - ') + if len(parts) >= 4 and parts[2] == user_id: + table.append({ + 'last_play': parts[0], + 'score': int(parts[1]), + 'user_id': parts[2], + 'device_id': parts[3], + }) + except FileNotFoundError: + return [] + + table.sort(key=lambda entry: entry['score'], reverse=True) + return table[:limit] + + def _get_local_leaderboard(self, limit=10): + try: + with self.profiles_file.open('r', encoding='utf-8') as profile_file: + data = json.load(profile_file) + except (FileNotFoundError, json.JSONDecodeError): + return [] + + entries = [] + for profile in data.get('profiles', {}).values(): + entries.append({ + 'user_id': profile.get('name', 'Unknown'), + 'best_score': profile.get('best_score', 0), + 'total_games': profile.get('games_played', 0), + 'device_id': self.device_id, + 'last_play': profile.get('last_played', ''), + }) + + entries.sort(key=lambda entry: (entry['best_score'], entry['total_games']), reverse=True) + if limit is None: + return entries + return entries[:limit] def reload_profile(self): """Reload the current profile from disk (useful for external profile changes)""" diff --git a/rats.py b/rats.py index b7c083d..7a1be0b 100644 --- a/rats.py +++ b/rats.py @@ -1,5 +1,6 @@ #!/usr/bin/python3 +import argparse import random import os import json @@ -8,6 +9,7 @@ from engine import maze, sdl2 as engine, controls, graphics, unit_manager, scori from engine.collision_system import CollisionSystem from units import points from engine.user_profile_integration import UserProfileIntegration +from runtime_paths import bundle_path class MiceMaze( @@ -19,11 +21,13 @@ class MiceMaze( # ==================== INITIALIZATION ==================== - def __init__(self, maze_file): + def __init__(self, maze_file, level_index=0): # Initialize user profile integration self.profile_integration = UserProfileIntegration() + self.map_source = maze_file + self.current_level = level_index - self.map = maze.Map(maze_file) + self.map = maze.Map(maze_file, level_index=level_index) # Load profile-specific settings self.audio = self.profile_integration.get_setting('sound_enabled', True) @@ -31,6 +35,7 @@ class MiceMaze( self.cell_size = 40 self.full_screen = False + self.loaded_theme_index = None # Initialize render engine with profile-aware title player_name = self.profile_integration.get_profile_name() @@ -46,6 +51,7 @@ class MiceMaze( self.load_assets() self.render_engine.window.show() + self.render_engine.show_intro(bundle_path("assets", "Rat", "intro.png")) self.pointer = (random.randint(1, self.map.width-2), random.randint(1, self.map.height-2)) self.scroll_cursor() self.points = 0 @@ -64,7 +70,9 @@ class MiceMaze( self.scrolling_direction = None self.game_status = "start_menu" + self.menu_screen = "start" self.game_end = (False, None) + self.run_recorded = False self.scrolling = False self.sounds = {} self.start_game() @@ -75,14 +83,18 @@ class MiceMaze( def get_config(self): configs = {} - for file in os.listdir("conf"): + conf_dir = bundle_path("conf") + for file in os.listdir(conf_dir): if file.endswith(".json"): - with open(os.path.join("conf", file)) as f: + with open(os.path.join(conf_dir, file), encoding="utf-8") as f: configs[file[:-5]] = json.load(f) return configs def start_game(self): - self.combined_scores = False + print(f"[flow] start_game: level={self.current_level + 1}") + self._valid_positions = None + self.combined_scores = None + self.run_recorded = False self.ammo = { "bomb": { "count": 2, @@ -106,17 +118,116 @@ class MiceMaze( # Clear blood layer on game start/restart self.blood_layer_sprites.clear() + self.cave_foreground_tiles.clear() + self.game_end = (False, None) + self.game_status = "start_menu" + self.menu_screen = "start" + self.units.clear() + self.unit_positions.clear() + self.unit_positions_before.clear() + self.points = 0 + self.pointer = (random.randint(1, self.map.width-2), random.randint(1, self.map.height-2)) + self.scroll_cursor() for _ in range(5): self.spawn_rat() + + def load_level(self, level_index, preserve_points=True, show_menu=False, menu_screen=None): + next_theme_index = level_index % maze.LEVELS_PER_DAT_FILE // 8 + 1 + print( + f"[flow] load_level requested: target_level={level_index + 1} " + f"preserve_points={preserve_points} show_menu={show_menu} menu_screen={menu_screen} " + f"current_points={self.points} next_theme={next_theme_index}" + ) + self.current_level = level_index + self.map = maze.Map(self.map_source, level_index=level_index) + self._valid_positions = None + self.collision_system = CollisionSystem( + self.cell_size, + self.map.width, + self.map.height + ) + + if getattr(self, "loaded_theme_index", None) != next_theme_index: + print( + f"[flow] theme switch needed: loaded_theme={getattr(self, 'loaded_theme_index', None)} " + f"-> next_theme={next_theme_index}" + ) + self.load_assets() + else: + print(f"[flow] theme unchanged: reusing theme {next_theme_index}") + self.units.clear() + self.unit_positions.clear() + self.unit_positions_before.clear() + self.blood_stains = {} + self.blood_layer_sprites.clear() + self.cave_foreground_tiles.clear() + self.background_texture = None + self.ammo = { + "bomb": {"count": 2, "max": 8}, + "nuclear": {"count": 1, "max": 1}, + "mine": {"count": 2, "max": 4}, + "gas": {"count": 2, "max": 4}, + } + self.combined_scores = None + self.game_end = (False, None) + self.pointer = (random.randint(1, self.map.width-2), random.randint(1, self.map.height-2)) + self.scroll_cursor() + if not preserve_points: + self.points = 0 + self.run_recorded = False + print("[flow] points reset for new run") + + for spawn_index in range(5): + print(f"[flow] spawning rat {spawn_index + 1}/5 for level={self.current_level + 1}", flush=True) + self.spawn_rat() + + if show_menu: + self.game_status = "start_menu" + self.menu_screen = menu_screen or "level_intro" + print(f"[flow] level loaded into menu state: menu_screen={self.menu_screen} points={self.points}") + else: + self.game_status = "game" + self.menu_screen = None + print(f"[flow] level loaded directly into gameplay: level={self.current_level + 1} points={self.points}") + + def advance_level(self): + print(f"[flow] advance_level called from level={self.current_level + 1} points={self.points}") + if self.map.source_path.suffix.lower() != ".dat": + self.load_level(self.current_level, preserve_points=True, show_menu=True, menu_screen="level_intro") + return + + next_level = (self.current_level + 1) % maze.LEVELS_PER_DAT_FILE + print(f"[flow] advancing to level={next_level + 1}") + self.load_level(next_level, preserve_points=True, show_menu=True, menu_screen="level_intro") def reset_game(self): - self.pause = False - self.game_status = "game" - self.game_end = (False, None) - self.units.clear() - self.points = 0 - self.start_game() + print( + f"[flow] reset_game called: game_end={self.game_end} game_status={self.game_status} " + f"menu_screen={self.menu_screen} points={self.points} level={self.current_level + 1}" + ) + if self.game_end[0]: + if self.game_end[1]: + print("[flow] reset_game -> post-victory path") + self.advance_level() + else: + print("[flow] reset_game -> restart from level 1 after defeat") + self.load_level(0, preserve_points=False, show_menu=False) + return + + if self.game_status == "paused": + print("[flow] reset_game -> unpausing current level") + self.game_status = "game" + return + + if self.game_status == "start_menu": + print(f"[flow] reset_game -> leaving menu_screen={self.menu_screen} and entering gameplay") + self.game_status = "game" + self.menu_screen = None + return + + print("[flow] reset_game -> hard reload current level") + self.load_level(self.current_level, preserve_points=False, show_menu=False) # ==================== GAME LOGIC ==================== @@ -140,30 +251,36 @@ class MiceMaze( self.render_engine.dialog("Pause") return if self.game_status == "start_menu": - # Create personalized greeting - player_name = self.profile_integration.get_profile_name() - device_id = self.profile_integration.get_device_id() - - greeting_title = f"Welcome to Mice, {player_name}!" - - # Build subtitle with proper formatting - subtitle = "A game by Matteo, because he was bored." - device_line = f"Device: {device_id}" - - # Show profile stats if available - if self.profile_integration.current_profile: - profile = self.profile_integration.current_profile - stats_line = f"Best Score: {profile['best_score']} | Games: {profile['games_played']}" - full_subtitle = f"{subtitle}\n{device_line}\n{stats_line}" + if self.menu_screen == "level_intro": + self.render_engine.dialog( + f"Level {self.current_level + 1}", + subtitle=f"Points: {self.points}\nPress Return to begin", + image=self.assets["BMP_WEWIN"], + ) else: - full_subtitle = f"{device_line}\nNo profile loaded - playing as guest" - - self.render_engine.dialog(greeting_title, - subtitle=full_subtitle, - image=self.assets["BMP_WEWIN"]) + player_name = self.profile_integration.get_profile_name() + device_id = self.profile_integration.get_device_id() + + greeting_title = f"Welcome to Mice, {player_name}!" + subtitle = "A game by Matteo, because he was bored." + device_line = f"Device: {device_id}" + + if self.profile_integration.current_profile: + profile = self.profile_integration.current_profile + stats_line = f"Best Score: {profile['best_score']} | Games: {profile['games_played']}" + full_subtitle = f"{subtitle}\n{device_line}\n{stats_line}\nPress Return to start" + else: + full_subtitle = f"{device_line}\nNo profile loaded - playing as guest\nPress Return to start" + + self.render_engine.dialog( + greeting_title, + subtitle=full_subtitle, + image=self.assets["BMP_WEWIN"], + ) return self.render_engine.delete_tag("unit") self.render_engine.delete_tag("effect") + self.render_engine.delete_tag("cave") self.render_engine.draw_pointer(self.pointer[0] * self.cell_size, self.pointer[1] * self.cell_size) # Clear collision system for new frame @@ -220,6 +337,8 @@ class MiceMaze( for unit in self.units.copy().values(): unit.collisions() unit.draw() + + self.draw_cave_foreground() self.render_engine.update_status(f"Mice: {self.count_rats()} - Points: {self.points}") self.refill_ammo() @@ -234,30 +353,22 @@ class MiceMaze( def game_over(self): if self.game_end[0]: - if not self.combined_scores: - self.combined_scores = self.profile_integration.get_global_leaderboard(4) - global_scores = [] - - for entry in self.combined_scores: - # Convert to format expected by dialog: [date, score, name, device] - global_scores.append([ - entry.get('last_play', ''), - entry.get('best_score', 0), - entry.get('user_id', 'Unknown'), - - ]) + if self.combined_scores is None: + self.combined_scores = self.profile_integration.get_device_leaderboard(5) if not self.game_end[1]: self.render_engine.dialog( "Game Over: Mice are too many!", image=self.assets["BMP_WEWIN"], - scores=global_scores + subtitle=f"Reached level: {self.current_level + 1}\nPress Return to restart from level 1", + scores=self.combined_scores ) else: self.render_engine.dialog( - f"You Win! Points: {self.points}", + f"Level {self.current_level + 1} Clear! Points: {self.points}", image=self.assets["BMP_WEWIN"], - scores=global_scores + subtitle="Press Return for the next level", + scores=self.combined_scores ) @@ -268,9 +379,12 @@ class MiceMaze( self.render_engine.play_sound("WEWIN.WAV") self.game_end = (True, False) self.game_status = "paused" + print(f"[flow] defeat reached: rats={count_rats} points={self.points} level={self.current_level + 1}") - # Track incomplete game in profile - self.profile_integration.update_game_stats(self.points, completed=False) + if not self.run_recorded: + self.save_score() + self.profile_integration.update_game_stats(self.points, completed=False) + self.run_recorded = True return True if not count_rats and not any(isinstance(unit, points.Point) for unit in self.units.values()): @@ -279,19 +393,26 @@ class MiceMaze( self.render_engine.play_sound("WELLDONE.WAV", tag="effects") self.game_end = (True, True) self.game_status = "paused" - - # Save score to both traditional file and user profile - self.save_score() - self.profile_integration.update_game_stats(self.points, completed=True) + self.combined_scores = self.profile_integration.get_device_leaderboard(5) + print(f"[flow] victory reached: points={self.points} level={self.current_level + 1}") return True - +def parse_args(): + parser = argparse.ArgumentParser(description="Run Mice! with DAT or JSON map loading") + parser.add_argument("--level", type=int, default=0, help="Level index to load from level.dat (default: 0)") + parser.add_argument("--map", dest="map_path", default=None, help="Optional map path override (.dat or .json)") + return parser.parse_args() + + if __name__ == "__main__": + args = parse_args() print("Game starting...") - solver = MiceMaze('maze.json') + map_source = args.map_path or maze.get_default_map_source() + print(f"Loading map from {map_source} (level {args.level})") + solver = MiceMaze(map_source, level_index=args.level) solver.run() diff --git a/runtime_paths.py b/runtime_paths.py new file mode 100644 index 0000000..183b388 --- /dev/null +++ b/runtime_paths.py @@ -0,0 +1,58 @@ +from __future__ import annotations + +import os +import shutil +from pathlib import Path + + +PROJECT_ROOT = Path(__file__).resolve().parent +DEFAULT_PROFILE_DATA = '{\n "profiles": {},\n "active_profile": null\n}\n' + + +def bundle_path(*parts: str) -> Path: + base = Path(os.environ.get("MICE_PROJECT_ROOT", PROJECT_ROOT)).expanduser() + return base.joinpath(*parts) + + +def resolve_bundle_path(path_like: str | Path) -> Path: + candidate = Path(path_like).expanduser() + if candidate.is_absolute(): + return candidate + return bundle_path(*candidate.parts) + + +def data_root() -> Path: + override = os.environ.get("MICE_DATA_DIR") + if override: + root = Path(override).expanduser() + else: + xdg_data_home = Path(os.environ.get("XDG_DATA_HOME", Path.home() / ".local" / "share")) + root = xdg_data_home / "mice" + root.mkdir(parents=True, exist_ok=True) + return root + + +def persistent_data_path( + path_like: str | Path, + *, + default_source: str | Path | None = None, + default_text: str = "", +) -> Path: + candidate = Path(path_like).expanduser() + if candidate.is_absolute(): + target = candidate + else: + target = data_root().joinpath(*candidate.parts) + + target.parent.mkdir(parents=True, exist_ok=True) + if target.exists(): + return target + + if default_source is not None: + source = resolve_bundle_path(default_source) + if source.exists() and source != target: + shutil.copy2(source, target) + return target + + target.write_text(default_text, encoding="utf-8") + return target \ No newline at end of file diff --git a/tools/generate_svgs.py b/tools/generate_svgs.py new file mode 100644 index 0000000..5f0adda --- /dev/null +++ b/tools/generate_svgs.py @@ -0,0 +1,864 @@ +#!/usr/bin/env python3 +""" +Generate SVG vector assets for the *Rats!* game. + +Each original 20x20 PNG is reproduced as a clean scalable SVG with smooth +vector shapes, proper shading, and a 64x64 design grid (wider for UI banners). + +Output: assets/Rat/svg/ +""" +import os, math + +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +OUT_DIR = os.path.join(BASE_DIR, "assets", "Rat", "svg") +os.makedirs(OUT_DIR, exist_ok=True) + +# ─── low-level helpers ──────────────────────────────────────────────────────── + +def save(name: str, svg: str) -> None: + path = os.path.join(OUT_DIR, f"{name}.svg") + with open(path, "w", encoding="utf-8") as fh: + fh.write(svg) + +def _build_svg(vw: int, vh: int, defs: str, body: str, + sw: int = None, sh: int = None) -> str: + """Assemble a complete SVG document.""" + w = sw or vw * 4 + h = sh or vh * 4 + defs_block = f"\n \n{defs}\n " if defs else "" + return (f'\n' + f'' + f'{defs_block}\n{body}\n\n') + +def mk(vw: int, vh: int, body: str, defs: str = "", + sw: int = None, sh: int = None) -> str: + return _build_svg(vw, vh, defs, body, sw, sh) + + +# ─── colour palettes ────────────────────────────────────────────────────────── + +# player: body, highlight, shadow, ear-inner, tail +PC = { + 1: ("#33DD33", "#88FF88", "#1A941A", "#FF9999", "#116611"), + 2: ("#FFE033", "#FFF0AA", "#B8920A", "#FFB8B8", "#7A6008"), + 3: ("#AAAACC", "#CCCCEE", "#555577", "#FFBBCC", "#333355"), + 4: ("#EE4444", "#FF9090", "#AA1111", "#FFAAAA", "#771111"), +} + +# terrain: bg, accent, dark, bright +TC = { + 1: ("#1ECC1E", "#28DD28", "#128012", "#88FF88"), # green + 2: ("#DDB800", "#FFD700", "#8A7000", "#FFE860"), # yellow + 3: ("#666688", "#7777AA", "#333355", "#9999BB"), # slate + 4: ("#CC2222", "#EE3333", "#881111", "#FF6666"), # red +} + +# ─── rat shape (facing East, 64×64 viewBox) ────────────────────────────────── + +def _rat_defs() -> str: + return "" # no gradient defs needed (simpler look) + +def _rat_body(bc: str, hi: str, sh: str, ec: str, tc: str) -> str: + """SVG group innards for a rat facing East (→) in a 64×64 canvas.""" + return f"""\ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + """ + +def rat_svg(player: int, angle: float, frame: int = 0) -> str: + bc, hi, sh, ec, tc = PC[player] + tr = f' transform="rotate({angle:.0f} 32 32)"' if angle else "" + # frame=1: offset feet slightly for walk-cycle variety + body = _rat_body(bc, hi, sh, ec, tc) + return mk(64, 64, + f' \n{body}\n ', + sw=128, sh=128) + + +# direction name → rotation angle (East=0°, clockwise positive in SVG) +DIRS_8 = { + "E": 0, "NE": -45, "N": -90, "NW": -135, + "W": 180, "WS": 135, "S": 90, "SE": 45, +} +# animation-frame aliases (same angle, second walk frame) +DIRS_ALT = {"EN": -45, "ES": 45, "WN": -135, "SW": 135} +ALL_DIRS = {**DIRS_8, **DIRS_ALT} + +CARD4_ANGLES = {"DOWN": 90, "UP": -90, "LEFT": 180, "RIGHT": 0} + +# ── generate all player-rat sprites ────────────────────────────────────────── + +def _gas_overlay() -> str: + return """\ + + + + + + ☠""" + +def _explosion_overlay() -> str: + return """\ + + + + """ + +def _cave_overlay() -> str: + return """\ + + + + """ + +for p_num in range(1, 5): + bc, hi, sh, ec, tc = PC[p_num] + # 12-direction movement sprites + for dir_name, angle in ALL_DIRS.items(): + tr = f' transform="rotate({angle:.0f} 32 32)"' if angle else "" + body = _rat_body(bc, hi, sh, ec, tc) + save(f"BMP_{p_num}_{dir_name}", + mk(64, 64, f' \n{body}\n ', sw=128, sh=128)) + # CAVE, GAS, EXPLOSION (4 cardinal directions) + for dir_name, angle in CARD4_ANGLES.items(): + tr = f' transform="rotate({angle:.0f} 32 32)"' if angle else "" + rat_grp = f' \n{_rat_body(bc, hi, sh, ec, tc)}\n ' + for suffix, overlay in [("CAVE", _cave_overlay()), + ("GAS", _gas_overlay()), + ("EXPLOSION", _explosion_overlay())]: + save(f"BMP_{p_num}_{suffix}_{dir_name}", + mk(64, 64, rat_grp + "\n" + overlay, sw=128, sh=128)) + +# ─── MALE enemy rat ────────────────────────────────────────────────────────── + +MB = "#5588EE"; MH = "#99BBFF"; MS = "#2244AA"; ME = "#FFB8C8"; MT = "#1A2F7A" + +def _male_icon() -> str: + return """\ + + + + + """ + +save("BMP_MALE", + mk(64, 64, + f' \n{_rat_body(MB, MH, MS, ME, MT)}\n \n{_male_icon()}', + sw=128, sh=128)) +for d, a in CARD4_ANGLES.items(): + tr = f' transform="rotate({a:.0f} 32 32)"' if a else "" + save(f"BMP_MALE_{d}", + mk(64, 64, f' \n{_rat_body(MB, MH, MS, ME, MT)}\n ', + sw=128, sh=128)) + +# ─── FEMALE enemy rat ──────────────────────────────────────────────────────── + +FB = "#DD55BB"; FH = "#FF99DD"; FS = "#992288"; FE = "#FFCCEE"; FT = "#661155" + +def _female_icon() -> str: + return """\ + + + + """ + +save("BMP_FEMALE", + mk(64, 64, + f' \n{_rat_body(FB, FH, FS, FE, FT)}\n \n{_female_icon()}', + sw=128, sh=128)) +for d, a in CARD4_ANGLES.items(): + tr = f' transform="rotate({a:.0f} 32 32)"' if a else "" + save(f"BMP_FEMALE_{d}", + mk(64, 64, f' \n{_rat_body(FB, FH, FS, FE, FT)}\n ', + sw=128, sh=128)) + +# ─── BABY rat (rounder, cuter) ─────────────────────────────────────────────── + +def _baby_body() -> str: + return """\ + + + + + + + + + + + + + + + + + + + + + + + + + """ + +for d, a in CARD4_ANGLES.items(): + tr = f' transform="rotate({a:.0f} 32 32)"' if a else "" + save(f"BMP_BABY_{d}", + mk(64, 64, f' \n{_baby_body()}\n ', sw=128, sh=128)) + +# ─── BLOCKS (wall/barrier tiles, 0=intact to 3=heavily damaged) ────────────── + +BLOCK_CRACKS = [ + "", + ' ', + ' \n' + ' \n' + ' ', + ' \n' + ' \n' + ' \n' + ' \n' + ' ', +] + +for i in range(4): + inner_fill = "#FFDDDD" if i == 3 else "#FFFFFF" + body = f"""\ + + + + + + + + + +{BLOCK_CRACKS[i]}""" + save(f"BMP_BLOCK_{i}", mk(64, 64, body, sw=128, sh=128)) + +# ─── BOMB ──────────────────────────────────────────────────────────────────── + +BOMB_DEFS = """\ + + + + + """ + +def bomb_body(number=None) -> str: + glow = (f' \n' + if number is not None else "") + num_svg = "" + if number is not None: + num_svg = (f' \n' + f' {number}\n') + return f"""{glow}\ + + + + + + + + + + +{num_svg}""" + +save("BMP_BOMB0", mk(64, 64, bomb_body(), BOMB_DEFS, sw=128, sh=128)) +for i in range(1, 5): + save(f"BMP_BOMB{i}", mk(64, 64, bomb_body(i), BOMB_DEFS, sw=128, sh=128)) + +# ─── EXPLOSION ─────────────────────────────────────────────────────────────── + +EXPL_DEFS = """\ + + + + + + + + + + + """ + +expl_center_body = """\ + + + + + + """ + +save("BMP_EXPLOSION", mk(64, 64, expl_center_body, EXPL_DEFS, sw=128, sh=128)) + +# directional explosion: flame pointing UP then rotated +expl_dir_body = """\ + + + + """ + +# UP=0°, RIGHT=90°, DOWN=180°, LEFT=270° (flame points toward direction, starts from centre) +for d, a in {"UP": 0, "RIGHT": 90, "DOWN": 180, "LEFT": 270}.items(): + tr = f' transform="rotate({a} 32 32)"' if a else "" + save(f"BMP_EXPLOSION_{d}", + mk(64, 64, f' \n{expl_dir_body}\n ', + EXPL_DEFS, sw=128, sh=128)) + +# ─── GAS ───────────────────────────────────────────────────────────────────── + +GAS_DEFS = """\ + + + + + + + + + + """ + +gas_center_body = """\ + + + + + + + + ☠""" + +save("BMP_GAS", mk(64, 64, gas_center_body, GAS_DEFS, sw=128, sh=128)) + +gas_dir_body = """\ + + + + + + """ + +for d, a in {"UP": 0, "RIGHT": 90, "DOWN": 180, "LEFT": 270}.items(): + tr = f' transform="rotate({a} 32 32)"' if a else "" + save(f"BMP_GAS_{d}", + mk(64, 64, f' \n{gas_dir_body}\n ', + GAS_DEFS, sw=128, sh=128)) + +# ─── TUNNEL ────────────────────────────────────────────────────────────────── + +save("BMP_TUNNEL", mk(64, 64, """\ + + + + + + + + + + + + + + + """, + sw=128, sh=128)) + +# ─── NUCLEAR ───────────────────────────────────────────────────────────────── + +def _trefoil_blade(cx, cy, r_in, r_out, angle_deg): + a = math.radians(angle_deg) + hw = math.radians(30) # half-width of each blade sector (60° wide blades, 60° gaps) + a1, a2 = a - hw, a + hw + ix1, iy1 = cx + r_in * math.cos(a1), cy + r_in * math.sin(a1) + ix2, iy2 = cx + r_in * math.cos(a2), cy + r_in * math.sin(a2) + ox1, oy1 = cx + r_out * math.cos(a1), cy + r_out * math.sin(a1) + ox2, oy2 = cx + r_out * math.cos(a2), cy + r_out * math.sin(a2) + return (f"M {ix1:.2f},{iy1:.2f} " + f"L {ox1:.2f},{oy1:.2f} " + f"A {r_out},{r_out} 0 0,1 {ox2:.2f},{oy2:.2f} " + f"L {ix2:.2f},{iy2:.2f} " + f"A {r_in},{r_in} 0 0,0 {ix1:.2f},{iy1:.2f} Z") + +blades = [_trefoil_blade(32, 32, 8, 27, a) for a in [-90, 30, 150]] +blade_paths = "\n ".join(f'' for p in blades) + +save("BMP_NUCLEAR", mk(64, 64, f"""\ + + + + + {blade_paths} + + + + + + """, + sw=128, sh=128)) + +# ─── POISON (skull & crossbones) ───────────────────────────────────────────── + +save("BMP_POISON", mk(64, 64, """\ + + + + + + + + + + + + + + + + + + + + + + + """, + sw=128, sh=128)) + +# ─── MINE ──────────────────────────────────────────────────────────────────── + +MINE_DEFS = """\ + + + + """ + +spike_lines = "\n ".join( + f'' + for a in range(0, 360, 45) +) +spike_caps = "\n ".join( + f'' + for a in range(0, 360, 45) +) + +save("mine", mk(64, 64, f"""\ + + {spike_lines} + {spike_caps} + + + + + + + """, + MINE_DEFS, sw=128, sh=128)) + +# ─── GRASS TILES (4 players × 4 variants) ──────────────────────────────────── + +# Blade coords per variant: list of (x1,y1,x2,y2) +_BLADE_SETS = { + 1: [(12, 64, 14, 44), (20, 64, 22, 40), (10, 64, 6, 43)], + 2: [(30, 64, 28, 38), (24, 64, 20, 42), (38, 64, 40, 42)], + 3: [(48, 64, 50, 40), (44, 64, 42, 44), (54, 64, 58, 42)], + 4: [(20, 64, 16, 40), (36, 64, 38, 38), (44, 64, 48, 44), (10, 64, 12, 46)], +} + +def grass_svg(player: int, variant: int) -> str: + bg, ac, dk, br = TC[player] + blades = "\n".join( + f' ' + for x1, y1, x2, y2 in _BLADE_SETS.get(variant, _BLADE_SETS[1]) + ) + # variant speckle + sx = variant * 13 % 50 + 6 + sy = variant * 11 % 50 + 6 + # Player 3: distinctive diagonal hatch pattern + p3_hatch = "" + p3_defs = "" + if player == 3: + pid = f"hatch3v{variant}" + p3_defs = f''' + + + ''' + p3_hatch = f' ' + body = f"""\ + + + +{p3_hatch} + + + + +{blades}""" + return mk(64, 64, body, p3_defs, sw=128, sh=128) + +for p in range(1, 5): + for v in range(1, 5): + save(f"BMP_{p}_GRASS_{v}", grass_svg(p, v)) + +# ─── FLOWER TILES (4 players × 4 variants) ─────────────────────────────────── + +_FLOWER_COLORS = { + 1: ("#FFFFFF", "#FFEE88"), # white petals, yellow centre + 2: ("#FFCCAA", "#FF8800"), # peach petals, orange centre + 3: ("#CCDDFF", "#FFDD00"), # pale-blue petals, gold centre + 4: ("#FFAACC", "#FF4466"), # pink petals, hot-pink centre +} + +def flower_svg(player: int, variant: int) -> str: + bg, ac, dk, br = TC[player] + pc, cc = _FLOWER_COLORS[variant] + # offset flower position per variant + ox = [32, 22, 42, 28][variant - 1] + oy = [32, 36, 28, 40][variant - 1] + # 8 petals + petals = "\n".join( + f' ' + for a in range(0, 360, 45) + ) + body = f"""\ + + +{petals} + + + """ + return mk(64, 64, body, sw=128, sh=128) + +for p in range(1, 5): + for v in range(1, 5): + save(f"BMP_{p}_FLOWER_{v}", flower_svg(p, v)) + +# ─── CAVE TILES (player-colored cave entrance, 4 cardinal dirs) ────────────── + +def cave_tile_svg(player: int, direction: str) -> str: + """Rat entering cave – large dark hole with player colour rim, facing dir.""" + bg, ac, dk, br = TC[player] + angle = CARD4_ANGLES[direction] + # Opening faces the direction the rat exits toward + tr = f' transform="rotate({angle} 32 32)"' if angle else "" + body = f"""\ + + + + + + + + + + + + + + """ + return mk(64, 64, body, sw=128, sh=128) + +for p in range(1, 5): + for d in ("DOWN", "UP", "LEFT", "RIGHT"): + save(f"BMP_{p}_CAVE_{d}", cave_tile_svg(p, d)) + +# ─── ARROWS (UI elements) ───────────────────────────────────────────────────── + +def arrow_svg(direction: str) -> str: + """Bold arrow; designed pointing UP, rotated.""" + a = {"UP": 0, "DOWN": 180, "RIGHT": 90, "LEFT": 270}[direction] + tr = f' transform="rotate({a} 32 32)"' if a else "" + body = f"""\ + + + + + + + + + + """ + return mk(64, 64, body, sw=128, sh=128) + +for d in ("DOWN", "UP", "LEFT", "RIGHT"): + save(f"BMP_ARROW_{d}", arrow_svg(d)) + +# ─── TITLE ("Rats!") 100×40 original → 200×80 viewBox ─────────────────────── + +save("BMP_TITLE", mk(200, 80, """\ + + + + Rats! + + Rats!""", + sw=400, sh=160)) + +# ─── VERMINATORS banner ─────────────────────────────────────────────────────── + +save("BMP_VERMINATORS", mk(200, 32, """\ + + + + + Top Verminators:""", + sw=400, sh=64)) + +# ─── WEWIN screen ───────────────────────────────────────────────────────────── +# Original showed a blue/purple mouse character with wings or limbs + +save("BMP_WEWIN", mk(64, 64, f"""\ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + """, + sw=128, sh=128)) + +# ─── START tiles ───────────────────────────────────────────────────────────── + +# Original revealed unique art per player: +# P1: large white flower on green background +# P2: cactus on yellow background +# P3: penguin on gray-blue hatched background +# P4: flame pattern on red background + +def start_svg(player: int, state: str = "normal") -> str: + bg, ac, dk, br = TC[player] + opacity = "0.45" if state == "shaded" else "1" + border_w = "5" if state == "down" else "4" + + decorations = { + 1: f"""\ + + {''.join( + f'' + for a in range(0, 360, 45) + )} + + """, + + 2: f"""\ + + + + + + + + + + + + + + + """, + + 3: f"""\ + + + + + + + + + + + + + + + + + + + + + """, + + 4: f"""\ + + + + + + + + + """, + } + + body = f"""\ + + + + + + +{decorations[player]}""" + return mk(64, 64, body, sw=128, sh=128) + +for p in range(1, 5): + save(f"BMP_START_{p}", start_svg(p, "normal")) + save(f"BMP_START_{p}_DOWN", start_svg(p, "down")) + save(f"BMP_START_{p}_SHADED", start_svg(p, "shaded")) + +# ─── BONUS numbers ──────────────────────────────────────────────────────────── + +BONUS_COLORS = { + 5: ("#FFEEAA", "#AA8800"), + 10: ("#AAFFAA", "#008800"), + 20: ("#AADDFF", "#0044AA"), + 40: ("#FFAACC", "#AA0044"), + 80: ("#FFCCAA", "#AA4400"), + 160: ("#DDAAFF", "#6600AA"), +} + +for val, (fg, sh) in BONUS_COLORS.items(): + fs = 28 if val < 100 else 22 + ty = 34 + (33 - fs) + body = f"""\ + + + + {val} + + {val}""" + save(f"BMP_BONUS_{val}", mk(64, 64, body, sw=128, sh=128)) + +# ─── done ───────────────────────────────────────────────────────────────────── + +files = [f for f in os.listdir(OUT_DIR) if f.endswith(".svg")] +print(f"Generated {len(files)} SVG files in {OUT_DIR}") diff --git a/tools/vernon/image_to_json.py b/tools/vernon/image_to_json.py new file mode 100644 index 0000000..3530ba2 --- /dev/null +++ b/tools/vernon/image_to_json.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python3 + +import argparse +import json +from pathlib import Path + +from PIL import Image + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser( + description="Convert an image file into a JSON matrix of RGBA pixels." + ) + parser.add_argument("input_image", type=Path, help="Source image path") + parser.add_argument("output_json", type=Path, help="Destination JSON path") + return parser.parse_args() + + +def image_to_matrix(image_path: Path) -> dict: + with Image.open(image_path) as image: + rgba_image = image.convert("RGBA") + width, height = rgba_image.size + pixel_map = rgba_image.load() + rows = [ + [list(pixel_map[x, y]) for x in range(width)] + for y in range(height) + ] + + return { + "source": image_path.name, + "width": width, + "height": height, + "mode": "RGBA", + "pixels": rows, + } + + +def main() -> None: + args = parse_args() + data = image_to_matrix(args.input_image) + args.output_json.parent.mkdir(parents=True, exist_ok=True) + args.output_json.write_text(json.dumps(data, indent=2), encoding="utf-8") + print( + f"Wrote {args.output_json} with {data['width']}x{data['height']} RGBA pixels" + ) + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/tools/vernon/json_to_png.py b/tools/vernon/json_to_png.py new file mode 100644 index 0000000..f51f7e8 --- /dev/null +++ b/tools/vernon/json_to_png.py @@ -0,0 +1,53 @@ +#!/usr/bin/env python3 + +import argparse +import json +from pathlib import Path + +from PIL import Image + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser( + description="Convert a JSON RGBA matrix back into a PNG image." + ) + parser.add_argument("input_json", type=Path, help="Source JSON path") + parser.add_argument("output_png", type=Path, help="Destination PNG path") + return parser.parse_args() + + +def load_matrix(json_path: Path) -> tuple[int, int, list[tuple[int, int, int, int]]]: + data = json.loads(json_path.read_text(encoding="utf-8")) + width = int(data["width"]) + height = int(data["height"]) + rows = data["pixels"] + + if len(rows) != height: + raise ValueError(f"Expected {height} rows, found {len(rows)}") + + flat_pixels: list[tuple[int, int, int, int]] = [] + for row_index, row in enumerate(rows): + if len(row) != width: + raise ValueError( + f"Expected row {row_index} to contain {width} pixels, found {len(row)}" + ) + for pixel in row: + if len(pixel) != 4: + raise ValueError("Each pixel must contain 4 RGBA channels") + flat_pixels.append(tuple(int(channel) for channel in pixel)) + + return width, height, flat_pixels + + +def main() -> None: + args = parse_args() + width, height, pixels = load_matrix(args.input_json) + image = Image.new("RGBA", (width, height)) + image.putdata(pixels) + args.output_png.parent.mkdir(parents=True, exist_ok=True) + image.save(args.output_png, format="PNG") + print(f"Wrote {args.output_png} with {width}x{height} RGBA pixels") + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/tools/vernon/output/BMP_BABY_LEFT.json b/tools/vernon/output/BMP_BABY_LEFT.json new file mode 100644 index 0000000..8dc4c97 --- /dev/null +++ b/tools/vernon/output/BMP_BABY_LEFT.json @@ -0,0 +1,12360 @@ +{ + "source": "BMP_BABY_LEFT", + "width": 64, + "height": 32, + "mode": "RGBA", + "pixels": [ + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 192, + 192, + 192, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ], + [ + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ], + [ + 128, + 128, + 128, + 255 + ] + ] + ] +} \ No newline at end of file diff --git a/tools/vernon/output/BMP_BABY_LEFT.png b/tools/vernon/output/BMP_BABY_LEFT.png new file mode 100644 index 0000000..a09cd04 Binary files /dev/null and b/tools/vernon/output/BMP_BABY_LEFT.png differ diff --git a/tools/vernon/output/BMP_FEMALE_LEFT.json b/tools/vernon/output/BMP_FEMALE_LEFT.json new file mode 100644 index 0000000..df50fe4 --- /dev/null +++ b/tools/vernon/output/BMP_FEMALE_LEFT.json @@ -0,0 +1,12360 @@ +{ + "source": "BMP_FEMALE_LEFT", + "width": 64, + "height": 32, + "mode": "RGBA", + "pixels": [ + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 0, + 0, + 0, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 255, + 0, + 255, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 128, + 0, + 128, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ] + ] +} \ No newline at end of file diff --git a/tools/vernon/output/BMP_FEMALE_LEFT.png b/tools/vernon/output/BMP_FEMALE_LEFT.png new file mode 100644 index 0000000..09c42b7 Binary files /dev/null and b/tools/vernon/output/BMP_FEMALE_LEFT.png differ diff --git a/tools/vernon/output/BMP_MALE_LEFT.json b/tools/vernon/output/BMP_MALE_LEFT.json new file mode 100644 index 0000000..41c6d06 --- /dev/null +++ b/tools/vernon/output/BMP_MALE_LEFT.json @@ -0,0 +1,12360 @@ +{ + "source": "BMP_MALE_LEFT_roundtrip.png", + "width": 64, + "height": 32, + "mode": "RGBA", + "pixels": [ + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 0, + 0, + 0, + 255 + ], + [ + 254, + 0, + 241, + 255 + ], + [ + 254, + 0, + 241, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 0, + 0, + 0, + 255 + ], + [ + 254, + 0, + 241, + 255 + ], + [ + 254, + 0, + 241, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 0, + 0, + 0, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 255, + 255, + 255, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 252, + 4, + 2, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 2, + 13, + 251, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 4, + 120, + 120, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ], + [ + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 0, + 0, + 0, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ], + [ + 125, + 125, + 125, + 255 + ] + ] + ] +} \ No newline at end of file diff --git a/tools/vernon/output/BMP_MALE_LEFT.png b/tools/vernon/output/BMP_MALE_LEFT.png new file mode 100644 index 0000000..7462ed0 Binary files /dev/null and b/tools/vernon/output/BMP_MALE_LEFT.png differ diff --git a/tools/vernon/output/BMP_MALE_LEFT_20x10_lanczos10x.png b/tools/vernon/output/BMP_MALE_LEFT_20x10_lanczos10x.png new file mode 100644 index 0000000..8fe4853 Binary files /dev/null and b/tools/vernon/output/BMP_MALE_LEFT_20x10_lanczos10x.png differ diff --git a/tools/vernon/output/BMP_MALE_LEFT_2x_pure.png b/tools/vernon/output/BMP_MALE_LEFT_2x_pure.png new file mode 100644 index 0000000..f926ee8 Binary files /dev/null and b/tools/vernon/output/BMP_MALE_LEFT_2x_pure.png differ diff --git a/tools/vernon/output/BMP_MALE_LEFT_orig10x.png b/tools/vernon/output/BMP_MALE_LEFT_orig10x.png new file mode 100644 index 0000000..72d2254 Binary files /dev/null and b/tools/vernon/output/BMP_MALE_LEFT_orig10x.png differ diff --git a/tools/vernon/output/BMP_MALE_LEFT_preview_base.png b/tools/vernon/output/BMP_MALE_LEFT_preview_base.png new file mode 100644 index 0000000..f926ee8 Binary files /dev/null and b/tools/vernon/output/BMP_MALE_LEFT_preview_base.png differ diff --git a/tools/vernon/output/BMP_MALE_LEFT_preview_cute.png b/tools/vernon/output/BMP_MALE_LEFT_preview_cute.png new file mode 100644 index 0000000..ea5de37 Binary files /dev/null and b/tools/vernon/output/BMP_MALE_LEFT_preview_cute.png differ diff --git a/tools/vernon/output/BMP_MALE_LEFT_roundtrip.png b/tools/vernon/output/BMP_MALE_LEFT_roundtrip.png new file mode 100644 index 0000000..3307aa1 Binary files /dev/null and b/tools/vernon/output/BMP_MALE_LEFT_roundtrip.png differ diff --git a/tools/vernon/output/image.png b/tools/vernon/output/image.png new file mode 100644 index 0000000..1506d77 Binary files /dev/null and b/tools/vernon/output/image.png differ diff --git a/tools/vernon/output/image.svg b/tools/vernon/output/image.svg new file mode 100644 index 0000000..ca243d7 --- /dev/null +++ b/tools/vernon/output/image.svg @@ -0,0 +1,1001 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tools/vernon/output/image_clean.png b/tools/vernon/output/image_clean.png new file mode 100644 index 0000000..0e1054b Binary files /dev/null and b/tools/vernon/output/image_clean.png differ diff --git a/tools/vernon/output/image_clean_preview.png b/tools/vernon/output/image_clean_preview.png new file mode 100644 index 0000000..15b133c Binary files /dev/null and b/tools/vernon/output/image_clean_preview.png differ diff --git a/tools/vernon/output/image_svg_clean.png b/tools/vernon/output/image_svg_clean.png new file mode 100644 index 0000000..e3e38b8 Binary files /dev/null and b/tools/vernon/output/image_svg_clean.png differ diff --git a/units/bomb.py b/units/bomb.py index a21e88d..1bdbca8 100644 --- a/units/bomb.py +++ b/units/bomb.py @@ -123,6 +123,9 @@ class Explosion(Bomb): self.die() def draw(self): + if self.game.map.is_tunnel(*self.position): + return + image = self.game.assets["BMP_EXPLOSION"] image_size = self.game.render_engine.get_image_size(image) partial_x, partial_y = 0, 0 diff --git a/units/rat.py b/units/rat.py index 719602a..07617c3 100644 --- a/units/rat.py +++ b/units/rat.py @@ -40,15 +40,27 @@ class Rat(Unit): def find_next_position(self): neighbors = [] x, y = self.position - while not neighbors: + for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]: + nx, ny = x + dx, y + dy + if not self.game.map.in_bounds(nx, ny): + continue + if self.game.map.is_empty(nx, ny) and (nx, ny) != self.position_before: + neighbors.append((nx, ny)) + + if not neighbors: for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]: nx, ny = x + dx, y + dy - if not self.game.map.matrix[ny][nx] and not (nx, ny) == self.position_before: + if not self.game.map.in_bounds(nx, ny): + continue + if self.game.map.is_empty(nx, ny): neighbors.append((nx, ny)) - if not neighbors: - self.position_before = self.position - self.position_before = self.position - return neighbors[random.randint(0, len(neighbors) - 1)] + + if not neighbors: + print(f"[flow] rat fallback: no empty neighbors from position={self.position}", flush=True) + return self.position + + self.position_before = self.position + return random.choice(neighbors) def choked(self): self.game.render_engine.play_sound("CHOKE.WAV") @@ -152,6 +164,7 @@ class Rat(Unit): # Rat-specific behavior: spawn points if score not in [None, 0]: + self.game.add_point(score) self.game.spawn_unit(Point, death_position, value=score) # Add blood stain directly to background @@ -161,15 +174,126 @@ class Rat(Unit): """Optimized draw using pre-calculated positions from move()""" sex = self.sex if self.age > AGE_THRESHOLD else "BABY" image = self.game.rat_assets_textures[sex][self.direction] + image_size = self.game.rat_image_sizes[sex][self.direction] # Calculate render position if not yet set (first frame) if not hasattr(self, 'render_x'): self._calculate_render_position() + + # Match the original game: the visibility test uses the rat's center point, + # not the sprite's top-left corner. + center_x = int(self.render_x + image_size[0] / 2) + center_y = int(self.render_y + image_size[1] / 2) + cell_x = center_x // self.game.cell_size + cell_y = center_y // self.game.cell_size + + if self.game.map.in_bounds(cell_x, cell_y): + if self.game.map.is_tunnel(cell_x, cell_y): + if self._draw_partially_hidden_in_tunnel(image, image_size, center_x, center_y, cell_x, cell_y): + return + return + if not self.game.map.is_empty(cell_x, cell_y): + return # Use pre-calculated positions self.game.render_engine.draw_image(self.render_x, self.render_y, image, anchor="nw", tag="unit") # bbox already updated in _update_render_position() #self.game.render_engine.draw_rectangle(self.bbox[0], self.bbox[1], self.bbox[2] - self.bbox[0], self.bbox[3] - self.bbox[1], "unit") + + def _draw_partially_hidden_in_tunnel(self, image, image_size, center_x, center_y, cell_x, cell_y): + direction = self._get_tunnel_entrance_direction(cell_x, cell_y) + if direction is None: + return False + + local_x = center_x - cell_x * self.game.cell_size + local_y = center_y - cell_y * self.game.cell_size + half_cell = self.game.cell_size / 2 + + if direction == "UP": + visible_ratio = max(0.0, min(1.0, (half_cell - local_y) / half_cell)) + visible_height = int(round(image_size[1] * visible_ratio)) + if visible_height <= 0: + return False + self.game.render_engine.draw_image( + self.render_x, + self.render_y, + image, + anchor="nw", + tag="unit", + source_rect=(0, 0, image_size[0], visible_height), + dest_size=(image_size[0], visible_height), + ) + return True + + if direction == "DOWN": + visible_ratio = max(0.0, min(1.0, (local_y - half_cell) / half_cell)) + visible_height = int(round(image_size[1] * visible_ratio)) + if visible_height <= 0: + return False + source_y = image_size[1] - visible_height + draw_y = self.render_y + source_y + self.game.render_engine.draw_image( + self.render_x, + draw_y, + image, + anchor="nw", + tag="unit", + source_rect=(0, source_y, image_size[0], visible_height), + dest_size=(image_size[0], visible_height), + ) + return True + + if direction == "LEFT": + visible_ratio = max(0.0, min(1.0, (half_cell - local_x) / half_cell)) + visible_width = int(round(image_size[0] * visible_ratio)) + if visible_width <= 0: + return False + self.game.render_engine.draw_image( + self.render_x, + self.render_y, + image, + anchor="nw", + tag="unit", + source_rect=(0, 0, visible_width, image_size[1]), + dest_size=(visible_width, image_size[1]), + ) + return True + + visible_ratio = max(0.0, min(1.0, (local_x - half_cell) / half_cell)) + visible_width = int(round(image_size[0] * visible_ratio)) + if visible_width <= 0: + return False + source_x = image_size[0] - visible_width + draw_x = self.render_x + source_x + self.game.render_engine.draw_image( + draw_x, + self.render_y, + image, + anchor="nw", + tag="unit", + source_rect=(source_x, 0, visible_width, image_size[1]), + dest_size=(visible_width, image_size[1]), + ) + return True + + def _get_tunnel_entrance_direction(self, cell_x, cell_y): + directions = [ + ("UP", 0, -1), + ("DOWN", 0, 1), + ("LEFT", -1, 0), + ("RIGHT", 1, 0), + ] + + empty_neighbors = [] + for direction, dx, dy in directions: + neighbor_x = cell_x + dx + neighbor_y = cell_y + dy + if self.game.map.in_bounds(neighbor_x, neighbor_y) and self.game.map.is_empty(neighbor_x, neighbor_y): + empty_neighbors.append(direction) + + if len(empty_neighbors) != 1: + return None + return empty_neighbors[0] def _calculate_render_position(self): """Calculate render position and bbox (used when render_x not yet set)""" diff --git a/user_profiles.json b/user_profiles.json index 7921107..c2b17b5 100644 --- a/user_profiles.json +++ b/user_profiles.json @@ -3,10 +3,10 @@ "Player1": { "name": "Player1", "created_date": "2024-01-15T10:30:00", - "last_played": "2025-10-24T19:57:33.897466", - "games_played": 25, - "total_score": 15420, - "best_score": 980, + "last_played": "2026-03-27T20:38:01.498269", + "games_played": 35, + "total_score": 24635, + "best_score": 8835, "settings": { "difficulty": "normal", "sound_volume": 75,