Реконструкция последовательных данных изображения из Gameboy Printer Spoof - PullRequest
0 голосов
/ 29 апреля 2018

Nintendo создала принтер, совместимый с Gameboy. Gameboy может печатать на нем с помощью последовательной связи SPI. Я использовал STM32 для эмуляции принтера путем захвата пакетов данных из Gameboy и подмены ответов принтера.

Данные от Gameboy - это, естественно, поток байтов. Каждые два бита соответствуют одному пикселю (давая каждому пикселю 4 оттенка серого). Gameboy обычно печатает изображения с разрешением 160 x 144. Эти изображения разделены на 9 сегментов, каждый из которых имеет высоту 16 пикселей (9 * 16 = 144).

Gameboy Image Format

Затем в каждом сегменте данные последовательных пикселей обрабатываются сверху вниз, затем слева направо.

Теперь моя проблема в том, что когда я обрабатываю данные с помощью моего Java-приложения, они не отображаются так, как должно быть.

Используя данные в конце этого вопроса, я получаю следующий результат: Malformed Image

Но это должно выглядеть примерно так: enter image description here

Я не уверен, в чем проблема, и я уже давно над этим работаю. Вы можете видеть, что первая фотография выглядит почти как две параллельные версии реальной фотографии. Кто-нибудь знает, если данные пикселей отформатированы иначе, чем я, или это просто ошибка в моем коде?

Вот код, который я использую для преобразования данных:

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;

public class Main {

public static void main(String[] args) throws IOException {

    BufferedImage img = new BufferedImage(160, 144, BufferedImage.TYPE_INT_RGB);
    BufferedReader reader = new BufferedReader(new FileReader("gbinput.txt"));
    String data = reader.readLine();
    String[] textNumbers = data.split(", ");
    int[] numbers = new int[160*144];

    // Split bytes into crumbs(each pixel is one crumb) and put them into "numbers" array
    for(int i = 0; i < textNumbers.length; i++) {
        for(int nibble = 0; nibble < 4; nibble++) {
            numbers[i * 4 + nibble] = (3 - ((Integer.valueOf(textNumbers[i]) & (0xC0 >> (nibble * 2))) >> ((3 - nibble)*2))) *  5592405;
        }
    }

    // set RGB image data to data in "numbers" array
    int i = 0;
    for(int y = 0; y < 9; y++) {
        for(int x = 0; x < 160; x++) {
            for(int a = 0; a < 16; a++) {
                img.setRGB(x, a + 16 * y, numbers[i]);
                i++;
            }
        }
    }

    // save output
    File imageOutput = new File("image.png");
    ImageIO.write(img, "png", imageOutput);

}

}

Вот данные, которые я использую для создания изображения (оно сохраняется как "gbinput.txt" в папке проекта):

255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 255, 255, 255, 255, 28, 255, 62, 28, 12, 28, 4, 12, 12, 4, 36, 4, 255, 255, 255, 255, 99, 255, 7, 99, 67, 35, 99, 63, 2, 98, 2, 98, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 254, 3, 1, 17, 0, 255, 255, 255, 255, 255, 255, 143, 255, 71, 143, 5, 3, 0, 142, 200, 140, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 159, 14, 4, 224, 70, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 255, 65, 3, 33, 1, 255, 255, 255, 255, 248, 255, 240, 248, 240, 248, 224, 248, 192, 128, 24, 0, 255, 255, 255, 255, 255, 255, 127, 255, 126, 255, 109, 243, 97, 192, 68, 140, 255, 255, 255, 255, 191, 255, 191, 31, 95, 15, 15, 31, 159, 255, 63, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 36, 16, 48, 16, 48, 24, 60, 24, 24, 60, 255, 255, 255, 255, 255, 255, 2, 98, 2, 98, 2, 98, 66, 34, 2, 98, 255, 255, 255, 255, 255, 255, 25, 48, 25, 48, 25, 48, 25, 48, 17, 56, 255, 255, 255, 255, 255, 255, 76, 136, 76, 136, 76, 136, 72, 140, 204, 142, 255, 255, 255, 255, 255, 255, 6, 0, 250, 4, 122, 228, 162, 68, 6, 12, 255, 255, 255, 255, 255, 255, 32, 49, 33, 48, 32, 49, 33, 49, 97, 49, 255, 255, 255, 255, 255, 255, 0, 24, 0, 24, 0, 24, 152, 0, 192, 128, 255, 255, 255, 255, 255, 255, 4, 140, 132, 12, 4, 140, 72, 132, 97, 192, 255, 255, 255, 255, 255, 255, 127, 63, 127, 63, 127, 63, 63, 127, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 161, 255, 247, 255, 254, 255, 85, 255, 126, 255, 223, 255, 255, 255, 87, 255, 98, 255, 86, 253, 96, 255, 81, 255, 8, 255, 119, 255, 253, 255, 73, 247, 33, 255, 242, 221, 192, 255, 16, 255, 20, 251, 21, 255, 222, 255, 134, 125, 192, 255, 66, 253, 0, 255, 178, 93, 5, 250, 68, 255, 254, 255, 149, 127, 3, 255, 160, 95, 0, 255, 181, 95, 4, 251, 86, 253, 212, 255, 112, 255, 64, 255, 116, 255, 104, 255, 93, 247, 227, 255, 85, 255, 103, 255, 17, 255, 4, 251, 130, 125, 0, 255, 9, 247, 0, 255, 80, 255, 106, 255, 41, 215, 0, 255, 66, 253, 1, 254, 8, 247, 3, 255, 21, 255, 240, 255, 137, 119, 2, 255, 41, 215, 0, 255, 20, 255, 176, 255, 48, 223, 8, 255, 21, 255, 34, 255, 81, 255, 0, 255, 40, 215, 0, 255, 44, 215, 129, 254, 0, 255, 32, 255, 1, 255, 0, 255, 192, 127, 0, 255, 140, 119, 64, 191, 0, 255, 0, 255, 0, 255, 0, 255, 10, 245, 34, 255, 64, 255, 0, 255, 127, 255, 163, 255, 96, 223, 0, 255, 129, 127, 0, 255, 96, 223, 0, 255, 255, 255, 255, 255, 85, 255, 10, 255, 17, 255, 11, 255, 21, 255, 0, 255, 255, 255, 255, 255, 255, 255, 175, 255, 85, 255, 186, 255, 93, 255, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 255, 191, 255, 93, 255, 234, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 125, 255, 255, 255, 85, 255, 255, 255, 119, 255, 251, 255, 247, 255, 255, 255, 127, 255, 255, 255, 221, 255, 175, 255, 85, 255, 251, 255, 87, 255, 242, 255, 85, 255, 186, 255, 85, 255, 114, 255, 85, 255, 251, 255, 84, 255, 202, 255, 85, 255, 254, 255, 84, 255, 166, 255, 85, 255, 207, 255, 85, 255, 220, 255, 80, 255, 34, 255, 85, 255, 68, 255, 87, 255, 144, 255, 108, 215, 0, 255, 213, 127, 122, 255, 117, 255, 160, 255, 0, 255, 0, 255, 21, 255, 1, 255, 85, 255, 224, 255, 96, 223, 0, 255, 80, 255, 3, 255, 95, 255, 255, 255, 0, 255, 0, 255, 118, 221, 3, 255, 159, 127, 255, 255, 255, 255, 255, 255, 24, 247, 128, 255, 92, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 40, 215, 132, 251, 234, 85, 1, 254, 26, 245, 5, 250, 170, 213, 129, 254, 138, 117, 4, 251, 168, 87, 1, 254, 136, 119, 85, 170, 171, 84, 65, 190, 8, 247, 65, 190, 170, 85, 16, 239, 168, 87, 68, 187, 170, 85, 69, 186, 136, 119, 68, 187, 170, 85, 20, 235, 136, 119, 84, 171, 170, 85, 81, 174, 1, 255, 0, 255, 1, 255, 0, 255, 48, 223, 4, 251, 168, 87, 0, 255, 21, 255, 138, 255, 12, 247, 0, 255, 16, 255, 0, 255, 160, 95, 128, 255, 85, 255, 63, 255, 85, 255, 66, 255, 85, 255, 179, 255, 100, 223, 32, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 119, 255, 251, 255, 213, 255, 78, 255, 119, 255, 255, 255, 85, 255, 46, 255, 85, 255, 243, 255, 85, 255, 244, 255, 213, 255, 251, 255, 229, 255, 192, 255, 87, 255, 142, 255, 87, 255, 7, 255, 87, 255, 15, 255, 71, 255, 7, 255, 117, 255, 51, 255, 84, 255, 64, 255, 7, 255, 143, 255, 79, 255, 143, 255, 28, 247, 1, 255, 87, 255, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 31, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 245, 255, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 255, 85, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 255, 191, 255, 95, 255, 63, 255, 194, 253, 225, 254, 234, 245, 241, 254, 250, 245, 248, 255, 250, 253, 252, 255, 170, 85, 124, 131, 186, 69, 191, 64, 170, 85, 124, 131, 254, 1, 61, 194, 170, 85, 92, 163, 170, 85, 80, 175, 170, 85, 69, 186, 234, 21, 221, 34, 162, 93, 69, 186, 170, 85, 80, 175, 128, 127, 65, 190, 170, 85, 213, 42, 129, 127, 64, 191, 171, 85, 0, 255, 136, 119, 64, 191, 162, 93, 16, 239, 131, 127, 8, 255, 129, 127, 32, 255, 136, 119, 0, 255, 70, 253, 0, 255, 53, 255, 3, 255, 21, 255, 96, 255, 205, 255, 34, 255, 85, 255, 46, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 87, 255, 58, 255, 84, 255, 12, 255, 89, 247, 16, 255, 117, 255, 12, 255, 81, 255, 0, 255, 18, 253, 128, 255, 138, 117, 0, 255, 93, 255, 0, 255, 47, 215, 3, 255, 87, 255, 15, 255, 191, 127, 63, 255, 63, 255, 63, 255, 199, 255, 195, 255, 223, 247, 227, 255, 241, 255, 241, 255, 243, 253, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 231, 231, 215, 255, 251, 255, 213, 255, 244, 255, 208, 255, 255, 255, 245, 255, 193, 254, 64, 255, 32, 255, 66, 253, 5, 250, 137, 119, 161, 255, 95, 255, 255, 0, 170, 85, 116, 139, 186, 69, 243, 0, 202, 245, 175, 240, 74, 245, 116, 139, 175, 95, 79, 191, 167, 95, 119, 143, 175, 87, 195, 63, 169, 87, 3, 255, 252, 255, 254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, 85, 94, 161, 170, 85, 69, 186, 42, 213, 197, 186, 234, 213, 209, 238, 174, 81, 68, 187, 170, 85, 69, 186, 170, 85, 213, 42, 170, 85, 87, 168, 168, 87, 4, 251, 170, 85, 0, 255, 168, 87, 192, 63, 34, 221, 1, 254, 160, 95, 68, 187, 40, 215, 0, 255, 153, 119, 64, 191, 162, 93, 4, 251, 133, 127, 3, 255, 4, 255, 2, 255, 129, 127, 32, 255, 171, 85, 32, 255, 85, 255, 130, 255, 85, 255, 33, 255, 64, 255, 99, 191, 69, 255, 162, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 65, 255, 2, 255, 124, 215, 0, 255, 73, 247, 163, 255, 129, 127, 0, 255, 9, 247, 112, 255, 164, 95, 4, 255, 7, 255, 0, 255, 83, 253, 252, 255, 95, 255, 31, 255, 95, 255, 31, 255, 175, 95, 7, 255, 71, 255, 7, 255, 248, 255, 248, 255, 254, 253, 252, 255, 252, 255, 254, 255, 254, 255, 255, 255, 255, 255, 127, 255, 127, 255, 63, 255, 191, 127, 63, 255, 159, 127, 31, 255, 202, 245, 225, 254, 202, 245, 247, 248, 250, 245, 241, 254, 242, 253, 249, 254, 231, 16, 250, 0, 213, 0, 254, 0, 167, 80, 127, 128, 181, 64, 127, 128, 85, 0, 2, 0, 64, 0, 0, 0, 64, 0, 224, 0, 85, 0, 203, 0, 86, 1, 191, 0, 85, 0, 15, 0, 85, 0, 61, 130, 109, 23, 159, 127, 255, 255, 127, 255, 255, 127, 191, 127, 63, 127, 127, 255, 255, 255, 254, 255, 200, 247, 245, 234, 202, 245, 212, 235, 202, 245, 213, 234, 170, 213, 117, 138, 234, 21, 84, 171, 170, 85, 84, 171, 138, 117, 69, 186, 186, 69, 17, 238, 170, 85, 76, 179, 170, 85, 17, 238, 234, 21, 92, 163, 170, 85, 125, 130, 136, 119, 0, 255, 32, 223, 1, 254, 170, 85, 4, 251, 170, 85, 116, 139, 129, 127, 2, 255, 53, 223, 0, 255, 133, 127, 2, 255, 105, 215, 81, 174, 5, 255, 2, 255, 125, 255, 138, 255, 80, 255, 7, 255, 85, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 93, 247, 0, 255, 80, 255, 204, 255, 20, 255, 15, 255, 85, 255, 0, 255, 9, 247, 0, 255, 68, 255, 243, 255, 5, 255, 224, 255, 100, 223, 254, 255, 151, 127, 75, 255, 135, 127, 9, 255, 213, 255, 43, 255, 6, 253, 111, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 159, 127, 143, 255, 103, 223, 135, 255, 239, 215, 195, 255, 203, 247, 225, 255, 252, 255, 253, 254, 254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 171, 84, 92, 163, 168, 87, 3, 255, 31, 255, 255, 255, 255, 255, 254, 255, 86, 1, 195, 63, 127, 255, 255, 255, 255, 255, 248, 255, 202, 245, 114, 143, 127, 255, 255, 255, 252, 255, 231, 248, 36, 223, 128, 127, 254, 117, 7, 248, 242, 253, 223, 224, 238, 17, 255, 0, 190, 65, 63, 192, 187, 68, 255, 0, 170, 85, 221, 34, 170, 85, 255, 0, 234, 21, 253, 2, 187, 68, 255, 0, 138, 117, 196, 59, 170, 85, 85, 170, 224, 31, 192, 63, 174, 85, 240, 15, 170, 85, 4, 251, 170, 85, 80, 175, 161, 95, 68, 187, 168, 87, 21, 234, 170, 85, 64, 191, 170, 85, 20, 235, 41, 215, 4, 251, 105, 215, 0, 255, 169, 87, 0, 255, 25, 247, 0, 255, 85, 255, 68, 187, 35, 221, 128, 255, 80, 255, 10, 255, 85, 255, 34, 255, 80, 255, 42, 255, 84, 255, 42, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 117, 255, 191, 255, 245, 255, 127, 255, 247, 255, 43, 255, 245, 255, 255, 255, 85, 255, 254, 255, 215, 255, 175, 255, 127, 255, 251, 255, 125, 255, 175, 255, 85, 255, 187, 255, 214, 253, 253, 255, 85, 255, 240, 255, 221, 255, 238, 255, 255, 255, 255, 255, 127, 255, 63, 255, 127, 255, 63, 255, 127, 255, 63, 255, 251, 245, 241, 255, 250, 245, 249, 254, 248, 255, 249, 254, 254, 253, 253, 254, 255, 255, 255, 255, 252, 255, 119, 248, 170, 85, 195, 63, 148, 127, 39, 248, 234, 245, 156, 227, 234, 21, 201, 62, 154, 117, 159, 224, 251, 4, 255, 0, 141, 127, 33, 254, 111, 208, 127, 128, 234, 21, 255, 0, 187, 68, 255, 0, 175, 80, 255, 0, 170, 85, 255, 0, 174, 81, 223, 32, 239, 16, 255, 0, 251, 4, 255, 0, 251, 4, 255, 0, 239, 16, 255, 0, 255, 0, 255, 0, 174, 81, 252, 3, 249, 7, 243, 15, 235, 23, 199, 59, 169, 87, 86, 169, 184, 71, 252, 227, 126, 241, 255, 248, 58, 61, 27, 60, 179, 252, 225, 254, 170, 85, 84, 171, 170, 85, 17, 238, 170, 85, 4, 251, 170, 85, 84, 171, 170, 85, 80, 175, 42, 213, 20, 235, 168, 87, 4, 251, 168, 87, 20, 235, 8, 247, 66, 191, 40, 215, 72, 191, 38, 223, 64, 191, 34, 221, 0, 255, 85, 255, 160, 255, 96, 223, 4, 255, 12, 247, 0, 255, 74, 245, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 87, 255, 43, 255, 255, 255, 255, 255, 255, 255, 255, 255, 95, 255, 62, 255, 93, 255, 255, 255, 213, 255, 254, 255, 93, 255, 243, 255, 197, 255, 196, 255, 117, 255, 191, 255, 66, 253, 132, 255, 31, 255, 232, 255, 85, 255, 252, 255, 95, 255, 223, 255, 71, 255, 79, 255, 127, 255, 159, 255, 71, 255, 3, 255, 252, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 174, 81, 255, 0, 170, 85, 127, 128, 43, 212, 223, 160, 191, 192, 255, 192, 231, 16, 255, 0, 245, 0, 254, 0, 80, 3, 179, 12, 112, 16, 208, 48, 255, 0, 255, 0, 93, 0, 255, 0, 231, 16, 126, 128, 59, 196, 189, 78, 255, 16, 255, 0, 223, 0, 255, 0, 117, 0, 251, 2, 85, 0, 42, 0, 118, 1, 255, 0, 223, 1, 254, 1, 86, 1, 251, 0, 85, 0, 254, 0, 219, 124, 173, 254, 244, 255, 158, 207, 142, 207, 238, 255, 190, 125, 215, 40, 168, 87, 205, 50, 190, 65, 127, 128, 190, 65, 127, 128, 251, 4, 127, 128, 136, 119, 192, 63, 234, 21, 97, 158, 162, 93, 244, 11, 250, 5, 240, 15, 168, 87, 81, 174, 162, 93, 0, 255, 170, 85, 16, 239, 170, 85, 21, 234, 160, 95, 0, 255, 4, 255, 0, 255, 10, 245, 2, 255, 136, 119, 0, 255, 138, 117, 0, 255, 128, 127, 32, 255, 32, 223, 32, 255, 154, 117, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 255, 255, 255, 253, 87, 142, 255, 117, 255, 254, 255, 85, 255, 173, 255, 125, 255, 128, 255, 213, 255, 94, 255, 85, 255, 30, 255, 84, 255, 252, 255, 85, 255, 10, 255, 21, 255, 0, 255, 113, 223, 48, 255, 100, 223, 18, 255, 141, 119, 57, 255, 81, 255, 32, 255, 25, 247, 8, 255, 84, 255, 96, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 255, 127, 255, 255, 255, 231, 208, 223, 224, 197, 240, 239, 240, 253, 240, 247, 248, 241, 252, 250, 252, 120, 24, 172, 28, 78, 29, 255, 63, 255, 255, 255, 255, 255, 255, 127, 255, 126, 127, 127, 127, 255, 255, 255, 255, 223, 255, 237, 254, 243, 252, 255, 248, 21, 0, 10, 0, 213, 0, 142, 0, 213, 0, 255, 0, 213, 0, 239, 0, 117, 0, 187, 0, 85, 0, 191, 0, 87, 0, 191, 0, 85, 0, 254, 0, 70, 17, 255, 0, 87, 0, 255, 0, 119, 0, 191, 0, 53, 64, 126, 224, 238, 17, 255, 0, 255, 0, 255, 0, 125, 3, 255, 0, 95, 4, 251, 7, 232, 23, 156, 227, 234, 117, 247, 56, 110, 157, 210, 239, 185, 119, 217, 63, 138, 117, 0, 255, 42, 213, 0, 255, 32, 223, 20, 235, 109, 215, 130, 255, 138, 117, 0, 255, 73, 247, 40, 255, 149, 127, 2, 255, 85, 255, 160, 255, 81, 255, 34, 255, 82, 253, 42, 255, 23, 255, 224, 255, 81, 255, 2, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 87, 255, 255, 255, 85, 255, 118, 255, 81, 255, 135, 255, 92, 255, 32, 255, 247, 255, 191, 255, 69, 255, 238, 255, 85, 255, 130, 255, 93, 255, 0, 255, 255, 255, 223, 255, 21, 255, 118, 255, 116, 255, 56, 255, 69, 255, 128, 255, 85, 255, 0, 255, 213, 255, 224, 255, 154, 245, 96, 255, 100, 223, 192, 255, 127, 255, 63, 255, 95, 255, 31, 255, 191, 95, 15, 255, 167, 95, 23, 239, 253, 252, 255, 252, 255, 252, 253, 254, 255, 255, 254, 255, 255, 255, 255, 255, 127, 127, 183, 123, 107, 21, 254, 1, 86, 1, 191, 0, 213, 0, 75, 128, 251, 252, 207, 252, 255, 252, 246, 248, 97, 208, 160, 0, 85, 0, 130, 0, 87, 0, 175, 0, 85, 0, 174, 1, 85, 3, 47, 3, 95, 7, 159, 15, 84, 1, 186, 1, 151, 67, 235, 199, 199, 247, 223, 227, 183, 192, 46, 192, 229, 240, 227, 248, 205, 240, 156, 224, 53, 192, 127, 128, 213, 0, 254, 0, 111, 17, 235, 28, 94, 7, 191, 99, 94, 49, 175, 28, 94, 199, 61, 227, 173, 223, 86, 239, 177, 127, 78, 191, 205, 255, 98, 255, 180, 127, 42, 255, 43, 213, 16, 239, 81, 255, 129, 254, 73, 247, 130, 255, 69, 255, 128, 255, 5, 255, 175, 255, 17, 255, 38, 255, 21, 255, 190, 255, 65, 255, 14, 255, 68, 255, 243, 255, 84, 255, 239, 255, 85, 255, 202, 255, 84, 255, 232, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 87, 255, 2, 255, 85, 255, 113, 255, 16, 255, 38, 255, 85, 255, 224, 255, 197, 255, 97, 255, 7, 253, 128, 255, 129, 95, 0, 255, 74, 245, 0, 255, 149, 127, 0, 255, 50, 221, 129, 255, 61, 215, 0, 255, 218, 117, 0, 255, 20, 255, 0, 255, 106, 213, 129, 254, 168, 87, 0, 255, 234, 85, 0, 255, 187, 87, 203, 183, 169, 87, 17, 239, 139, 117, 28, 227, 170, 85, 245, 10, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 255, 21, 192, 163, 192, 245, 192, 208, 224, 197, 240, 226, 240, 245, 240, 248, 240, 85, 0, 34, 0, 85, 0, 160, 0, 85, 0, 186, 0, 85, 0, 168, 0, 95, 15, 180, 15, 86, 1, 131, 0, 85, 0, 35, 0, 85, 0, 14, 0, 213, 0, 163, 0, 213, 0, 174, 0, 85, 0, 251, 0, 87, 0, 255, 0, 87, 0, 63, 0, 87, 0, 255, 0, 86, 1, 255, 0, 219, 4, 247, 8, 94, 49, 236, 31, 255, 7, 255, 3, 121, 7, 242, 15, 231, 31, 15, 255, 213, 255, 107, 255, 87, 255, 14, 255, 126, 253, 249, 254, 242, 253, 192, 255, 1, 255, 160, 255, 138, 117, 20, 235, 170, 85, 73, 190, 137, 119, 33, 254, 85, 255, 160, 255, 33, 223, 16, 239, 138, 117, 16, 239, 225, 95, 0, 255, 112, 255, 10, 255, 116, 255, 192, 255, 203, 119, 112, 191, 100, 223, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 127, 48, 255, 141, 127, 48, 255, 213, 127, 32, 255, 16, 255, 0, 255, 152, 119, 0, 255, 26, 245, 32, 255, 72, 247, 16, 255, 162, 93, 0, 255, 153, 119, 0, 255, 168, 87, 0, 255, 170, 85, 12, 243, 170, 85, 17, 238, 168, 87, 0, 255, 146, 125, 13, 242, 170, 85, 76, 179, 170, 85, 31, 224, 170, 85, 69, 186, 170, 85, 31, 224, 174, 81, 93, 162, 170, 85, 5, 250, 255, 127, 191, 127, 191, 127, 255, 63, 223, 63, 95, 191, 175, 95, 79, 191, 253, 240, 254, 248, 240, 252, 254, 252, 255, 252, 253, 254, 252, 255, 254, 255, 85, 0, 171, 0, 85, 0, 42, 0, 85, 0, 43, 0, 85, 0, 138, 0, 85, 0, 179, 0, 85, 0, 238, 0, 87, 0, 187, 0, 85, 0, 255, 0, 87, 0, 191, 0, 85, 0, 255, 0, 114, 5, 243, 15, 175, 95, 63, 255, 106, 21, 242, 15, 231, 31, 63, 255, 127, 255, 255, 255, 255, 255, 254, 255, 127, 255, 255, 255, 255, 255, 254, 255, 252, 255, 249, 254, 202, 245, 255, 128, 202, 245, 140, 243, 42, 213, 0, 255, 129, 127, 204, 51, 174, 81, 255, 0, 132, 127, 2, 255, 90, 245, 32, 255, 24, 247, 5, 250, 170, 85, 81, 174, 131, 127, 66, 191, 32, 223, 16, 239, 136, 119, 64, 191, 169, 87, 36, 255, 80, 255, 32, 255, 50, 221, 0, 255, 72, 247, 32, 255, 16, 255, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 7, 255, 35, 255, 21, 255, 62, 255, 149, 127, 62, 255, 85, 255, 6, 255, 170, 85, 128, 255, 25, 247, 0, 255, 25, 247, 32, 255, 114, 221, 160, 255, 170, 85, 0, 255, 74, 245, 4, 251, 75, 245, 5, 250, 170, 85, 3, 252, 170, 85, 1, 254, 162, 93, 1, 254, 170, 85, 125, 130, 234, 21, 223, 32, 170, 85, 79, 176, 171, 84, 23, 232, 191, 64, 255, 0, 169, 84, 255, 0, 175, 95, 119, 143, 175, 87, 127, 131, 119, 3, 239, 3, 87, 1, 226, 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 0, 115, 128, 21, 192, 174, 193, 171, 215, 203, 255, 255, 255, 255, 255, 89, 7, 199, 63, 159, 127, 191, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 254, 255, 250, 253, 231, 248, 234, 213, 113, 142, 255, 252, 247, 248, 245, 192, 239, 0, 119, 0, 255, 0, 191, 64, 95, 160, 247, 0, 255, 0, 222, 1, 255, 0, 106, 21, 221, 34, 170, 85, 240, 15, 234, 21, 221, 34, 170, 85, 119, 136, 170, 85, 93, 162, 170, 85, 81, 174, 168, 87, 5, 250, 168, 87, 0, 255, 170, 85, 84, 171, 170, 85, 20, 235, 241, 127, 35, 255, 133, 127, 0, 255, 40, 215, 32, 255, 8, 247, 0, 255, 8, 247, 0, 255, 0, 255, 0, 255, 200, 119, 34, 255, 21, 255, 2, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 255, 176, 255, 85, 255, 62, 255, 85, 255, 58, 255, 85, 255, 254, 255, 80, 255, 16, 255, 100, 223, 1, 254, 58, 245, 132, 251, 42, 213, 1, 254, 106, 213, 92, 163, 170, 85, 112, 143, 170, 85, 116, 139, 202, 21, 253, 2, 174, 81, 31, 224, 170, 85, 81, 174, 190, 85, 0, 255, 244, 95, 8, 255, 171, 84, 223, 32, 170, 85, 127, 128, 170, 85, 5, 250, 75, 244, 128, 255, 117, 0, 120, 128, 149, 64, 254, 0, 87, 0, 250, 0, 181, 64, 90, 160, 255, 255, 127, 255, 255, 127, 191, 127, 63, 127, 63, 63, 125, 30, 246, 8, 255, 255, 255, 255, 255, 255, 250, 252, 205, 240, 58, 192, 85, 0, 14, 0, 250, 253, 204, 243, 42, 213, 253, 2, 94, 1, 191, 0, 85, 0, 171, 0, 174, 85, 0, 255, 162, 93, 116, 139, 170, 85, 189, 2, 94, 1, 255, 0, 42, 213, 20, 235, 170, 85, 85, 170, 170, 85, 87, 168, 187, 68, 247, 8, 170, 85, 69, 186, 170, 85, 84, 171, 170, 85, 85, 170, 186, 69, 223, 32, 170, 85, 0, 255, 34, 221, 64, 191, 161, 95, 0, 255, 162, 93, 85, 170, 152, 119, 64, 191, 136, 119, 0, 255, 129, 127, 64, 191, 40, 215, 0, 255, 9, 247, 2, 255, 37, 223, 2, 255, 81, 255, 2, 255, 34, 221, 17, 238, 213, 127, 130, 255, 145, 127, 54, 255, 148, 127, 8, 255, 132, 127, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 252, 254, 252, 248, 249, 241, 227, 243, 255, 255, 255, 255, 255, 255, 119, 143, 14, 7, 135, 126, 252, 254, 254, 252, 255, 255, 255, 255, 255, 255, 191, 126, 60, 62, 30, 60, 24, 60, 24, 60, 255, 255, 255, 255, 255, 255, 119, 251, 241, 115, 97, 115, 33, 99, 32, 67, 255, 255, 255, 255, 255, 255, 123, 135, 129, 3, 131, 63, 63, 63, 55, 15, 255, 255, 255, 255, 255, 255, 187, 199, 195, 131, 217, 131, 193, 155, 130, 131, 255, 255, 255, 255, 255, 255, 222, 227, 195, 128, 37, 152, 25, 60, 120, 60, 255, 255, 255, 255, 255, 255, 187, 125, 113, 57, 3, 51, 35, 135, 207, 135, 255, 255, 175, 213, 251, 213, 251, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 243, 247, 227, 227, 243, 240, 243, 240, 248, 250, 252, 255, 255, 255, 255, 249, 252, 156, 8, 136, 24, 91, 145, 3, 19, 7, 51, 255, 255, 255, 255, 61, 152, 58, 25, 147, 25, 209, 147, 195, 147, 167, 211, 255, 255, 255, 255, 72, 3, 24, 11, 128, 27, 179, 24, 51, 184, 177, 250, 255, 255, 255, 255, 15, 7, 55, 15, 63, 127, 3, 127, 1, 3, 7, 3, 255, 255, 255, 255, 131, 130, 56, 145, 60, 153, 168, 17, 1, 3, 139, 7, 255, 255, 255, 255, 121, 60, 125, 56, 120, 57, 75, 49, 129, 3, 203, 135, 255, 255, 255, 255, 143, 207, 143, 223, 207, 159, 207, 159, 207, 159, 255, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255
...