diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..997df955 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "ARM_Tag_FW/common/uzlib"] + path = ARM_Tag_FW/common/uzlib + url = https://github.com/pfalcon/uzlib.git diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/12x20_horizontal_LSB_1.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/12x20_horizontal_LSB_1.h deleted file mode 100644 index c8f9d8a2..00000000 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/12x20_horizontal_LSB_1.h +++ /dev/null @@ -1,98 +0,0 @@ -const char font[256][40]={ -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x20 -{0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x21 -{0x00,0x00,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x22 -{0x00,0x00,0x00,0x00,0x00,0x22,0x00,0x22,0x00,0x11,0x00,0x11,0x00,0x11,0xE0,0xFF,0x80,0x08,0x80,0x08,0x80,0x08,0xE0,0x7F,0x40,0x04,0x40,0x04,0x20,0x02,0x20,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x23 -{0x00,0x00,0x00,0x04,0x00,0x1F,0x80,0x3F,0xC0,0x24,0xC0,0x04,0xC0,0x04,0x80,0x07,0x00,0x07,0x00,0x1C,0x00,0x1C,0x00,0x34,0x00,0x34,0x40,0x34,0xC0,0x1F,0x80,0x0F,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x24 -{0x00,0x00,0x00,0x00,0xE0,0x81,0x30,0x43,0x30,0x23,0x30,0x13,0x30,0x0B,0x30,0x0B,0xE0,0x05,0x00,0x7A,0x00,0xCD,0x00,0xCD,0x80,0xCC,0x40,0xCC,0x20,0xCC,0x10,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x25 -{0x00,0x00,0x00,0x00,0x00,0x0F,0x80,0x1F,0x80,0x19,0x80,0x19,0x80,0x0D,0x00,0x07,0xC0,0x03,0x60,0xC6,0x30,0xCE,0x30,0xCC,0x30,0x78,0x70,0x78,0xE0,0x7F,0xC0,0xEF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x26 -{0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x27 -{0x00,0x00,0x00,0x30,0x00,0x3C,0x00,0x0E,0x00,0x06,0x00,0x03,0x00,0x03,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x03,0x00,0x03,0x00,0x06,0x00,0x0E,0x00,0x3C,0x00,0x30,0x00,0x00}, // 0x28 -{0x00,0x00,0xC0,0x00,0xC0,0x03,0x00,0x07,0x00,0x06,0x00,0x0C,0x00,0x0C,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x0C,0x00,0x0C,0x00,0x06,0x00,0x07,0xC0,0x03,0xC0,0x00,0x00,0x00}, // 0x29 -{0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x03,0x60,0x33,0xE0,0x3C,0x00,0x00,0x80,0x0D,0xC0,0x19,0x80,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x2A -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0xE0,0x7F,0xE0,0x7F,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x2B -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x06,0x00,0x02,0x00,0x03,0x00,0x00}, // 0x2C -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x3F,0xC0,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x2D -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x2E -{0x00,0x00,0x00,0x60,0x00,0x30,0x00,0x30,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x0C,0x00,0x0C,0x00,0x06,0x00,0x06,0x00,0x03,0x00,0x03,0x80,0x01,0x80,0x01,0x80,0x01,0xC0,0x00,0xC0,0x00,0x60,0x00,0x00,0x00}, // 0x2F -{0x00,0x00,0x00,0x00,0x00,0x0F,0x80,0x1F,0xC0,0x30,0xC0,0x30,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xC0,0x30,0xC0,0x30,0x80,0x1F,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x30 -{0x00,0x00,0x00,0x00,0x00,0x06,0xC0,0x07,0x60,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0xE0,0x7F,0xE0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x31 -{0x00,0x00,0x00,0x00,0x80,0x0F,0xC0,0x1F,0x40,0x38,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x18,0x00,0x0C,0x00,0x06,0x00,0x03,0x80,0x01,0xC0,0x00,0xC0,0x3F,0xC0,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x32 -{0x00,0x00,0x00,0x00,0x80,0x0F,0xC0,0x3F,0x40,0x30,0x00,0x30,0x00,0x18,0x80,0x0F,0x80,0x0F,0x00,0x18,0x00,0x30,0x00,0x30,0x00,0x30,0x40,0x38,0xC0,0x1F,0xC0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x33 -{0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1C,0x00,0x1E,0x00,0x1A,0x00,0x19,0x80,0x19,0xC0,0x18,0x40,0x18,0xE0,0x7F,0xE0,0x7F,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x34 -{0x00,0x00,0x00,0x00,0x80,0x3F,0x80,0x3F,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x0F,0x80,0x1F,0x00,0x38,0x00,0x30,0x00,0x30,0x00,0x38,0x80,0x1F,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x35 -{0x00,0x00,0x00,0x00,0x00,0x0F,0x80,0x1F,0xC0,0x11,0xC0,0x00,0x60,0x00,0x60,0x0E,0x60,0x1F,0xE0,0x38,0x60,0x30,0x60,0x30,0x60,0x30,0xC0,0x38,0xC0,0x1F,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x36 -{0x00,0x00,0x00,0x00,0xC0,0x7F,0xC0,0x7F,0x00,0x60,0x00,0x30,0x00,0x10,0x00,0x18,0x00,0x0C,0x00,0x04,0x00,0x06,0x00,0x02,0x00,0x03,0x00,0x03,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x37 -{0x00,0x00,0x00,0x00,0x00,0x0F,0xC0,0x1F,0xC0,0x18,0xC0,0x18,0xC0,0x19,0x80,0x0F,0x00,0x07,0xC0,0x1E,0x60,0x38,0x60,0x30,0x60,0x30,0xE0,0x38,0xC0,0x1F,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x38 -{0x00,0x00,0x00,0x00,0x80,0x07,0xC0,0x1F,0xE0,0x18,0x60,0x30,0x60,0x30,0x60,0x30,0xE0,0x38,0xC0,0x37,0x80,0x33,0x00,0x30,0x00,0x18,0x40,0x1C,0xC0,0x0F,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x39 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x3A -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x06,0x00,0x02,0x00,0x03,0x00,0x00}, // 0x3B -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x70,0x00,0x3C,0x00,0x0E,0x80,0x03,0xE0,0x00,0x80,0x03,0x00,0x0E,0x00,0x3C,0x00,0x70,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x3C -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x7F,0xE0,0x7F,0x00,0x00,0x00,0x00,0xE0,0x7F,0xE0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x3D -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0xE0,0x00,0xC0,0x03,0x00,0x07,0x00,0x1C,0x00,0x70,0x00,0x1C,0x00,0x07,0xC0,0x03,0xE0,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x3E -{0x00,0x00,0x00,0x00,0xE0,0x0F,0xE0,0x3F,0x20,0x38,0x00,0x30,0x00,0x30,0x00,0x18,0x00,0x0C,0x00,0x06,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x3F -{0x00,0x00,0x00,0x00,0x00,0x1F,0x80,0x31,0xC0,0x60,0x60,0x7C,0x30,0x66,0x30,0x63,0x30,0x63,0x30,0x73,0x30,0x73,0x30,0x6F,0x60,0xE6,0x60,0x00,0xC0,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x40 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x0F,0x00,0x0F,0x00,0x0D,0x80,0x19,0x80,0x19,0xC0,0x38,0xC0,0x30,0xC0,0x3F,0xE0,0x7F,0x60,0x60,0x60,0x60,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x41 -{0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x0F,0xE0,0x1F,0x60,0x18,0x60,0x18,0x60,0x0C,0xE0,0x07,0xE0,0x0F,0x60,0x18,0x60,0x30,0x60,0x30,0x60,0x30,0xE0,0x1F,0xE0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x42 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x80,0x7F,0xC0,0x41,0xC0,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xC0,0x00,0xC0,0x43,0x80,0x7F,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x43 -{0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x0F,0xE0,0x1F,0x60,0x38,0x60,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x30,0x60,0x38,0xE0,0x1F,0xE0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x44 -{0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x7F,0xC0,0x7F,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x3F,0xC0,0x3F,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x7F,0xC0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x45 -{0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x7F,0xC0,0x7F,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x3F,0xC0,0x3F,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x46 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x80,0x7F,0xC0,0x41,0xC0,0x00,0x60,0x00,0x60,0x00,0x60,0x78,0x60,0x78,0x60,0x60,0xC0,0x60,0xC0,0x61,0x80,0x7F,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x47 -{0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0xE0,0x3F,0xE0,0x3F,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x48 -{0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x1F,0xE0,0x1F,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0xE0,0x1F,0xE0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x49 -{0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1F,0x80,0x1F,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x1C,0xC0,0x0F,0xC0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x4A -{0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x70,0x60,0x38,0x60,0x1C,0x60,0x0E,0x60,0x06,0x60,0x03,0xE0,0x03,0x60,0x07,0x60,0x0E,0x60,0x1C,0x60,0x38,0x60,0x70,0x60,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x4B -{0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x7F,0xC0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x4C -{0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x70,0x70,0x70,0xF0,0x78,0xB0,0x68,0xB0,0x68,0xB0,0x6D,0x30,0x65,0x30,0x65,0x30,0x67,0x30,0x62,0x30,0x60,0x30,0x60,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x4D -{0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x60,0xE0,0x60,0xE0,0x61,0xE0,0x61,0x60,0x63,0x60,0x67,0x60,0x66,0x60,0x6E,0x60,0x6C,0x60,0x78,0x60,0x78,0x60,0x70,0x60,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x4E -{0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0F,0xC0,0x1F,0xE0,0x38,0x70,0x70,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x70,0x70,0xE0,0x38,0xC0,0x1F,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x4F -{0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x1F,0xC0,0x3F,0xC0,0x70,0xC0,0x60,0xC0,0x60,0xC0,0x70,0xC0,0x3F,0xC0,0x0F,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x50 -{0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0F,0xC0,0x1F,0xE0,0x38,0x70,0x70,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x60,0x30,0xE0,0x38,0xC0,0x1F,0x80,0x0F,0x00,0x38,0x00,0xF0,0x00,0x40,0x00,0x00}, // 0x51 -{0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0xE0,0x1F,0x60,0x18,0x60,0x18,0x60,0x18,0x60,0x1C,0xE0,0x0F,0xE0,0x07,0x60,0x0E,0x60,0x1C,0x60,0x38,0x60,0x70,0x60,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x52 -{0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0F,0xC0,0x1F,0x60,0x10,0x60,0x00,0xE0,0x00,0xC0,0x03,0x80,0x0F,0x00,0x3C,0x00,0x30,0x00,0x30,0x60,0x38,0xE0,0x1F,0xC0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x53 -{0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xF0,0xFF,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x54 -{0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0xE0,0x38,0xC0,0x1F,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x55 -{0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xC0,0x60,0x60,0x60,0x60,0xE0,0x60,0xC0,0x30,0xC0,0x30,0xC0,0x31,0x80,0x19,0x80,0x1B,0x00,0x0B,0x00,0x0F,0x00,0x0F,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x56 -{0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x20,0x46,0x20,0x46,0x20,0x6E,0x60,0x6F,0x60,0x69,0x60,0x69,0x60,0x39,0xC0,0x39,0xC0,0x39,0xC0,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x57 -{0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xE0,0xE0,0x60,0xC0,0x30,0x80,0x19,0x80,0x0F,0x00,0x0F,0x00,0x06,0x00,0x0F,0x80,0x1D,0x80,0x19,0xC0,0x30,0x60,0x70,0x30,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x58 -{0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xC0,0x60,0x60,0xC0,0x30,0xC0,0x31,0x80,0x19,0x00,0x0F,0x00,0x0F,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x59 -{0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x7F,0xE0,0x7F,0x00,0x60,0x00,0x30,0x00,0x18,0x00,0x0C,0x00,0x06,0x00,0x03,0x80,0x01,0xC0,0x00,0x60,0x00,0xE0,0x7F,0xE0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x5A -{0x00,0x00,0x00,0x3F,0x00,0x3F,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x3F,0x00,0x3F,0x00,0x00}, // 0x5B -{0x00,0x00,0x60,0x00,0xC0,0x00,0xC0,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x03,0x00,0x03,0x00,0x06,0x00,0x06,0x00,0x0C,0x00,0x0C,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x30,0x00,0x30,0x00,0x60,0x00,0x00}, // 0x5C -{0x00,0x00,0xC0,0x0F,0xC0,0x0F,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0xC0,0x0F,0xC0,0x0F,0x00,0x00}, // 0x5D -{0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x0E,0x00,0x0A,0x00,0x0B,0x00,0x1B,0x80,0x11,0x80,0x31,0xC0,0x30,0xC0,0x20,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x5E -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xF0,0xFF,0x00,0x00,0x00,0x00}, // 0x5F -{0x00,0x06,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x60 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1F,0xC0,0x3F,0x40,0x30,0x00,0x30,0x00,0x30,0x80,0x3F,0xC0,0x30,0x60,0x30,0x60,0x38,0xE0,0xFF,0xC0,0xE7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x61 -{0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x0E,0x60,0x1F,0xE0,0x39,0xE0,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0xE0,0x18,0xE0,0x1F,0x60,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x62 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xC0,0x3F,0xC0,0x21,0xE0,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xE0,0x00,0xC0,0x01,0xC0,0x3F,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x63 -{0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x80,0x37,0xC0,0x3F,0xC0,0x38,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0xE0,0x38,0xC0,0x3F,0x80,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x64 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xC0,0x1F,0xC0,0x38,0x60,0x30,0xE0,0x3F,0xE0,0x3F,0x60,0x00,0x60,0x00,0xC0,0x20,0xC0,0x3F,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x65 -{0x00,0x00,0x00,0x7E,0x00,0x7F,0x00,0x03,0x00,0x03,0xE0,0x7F,0xE0,0x7F,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x66 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x37,0xC0,0x3F,0xC0,0x38,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0xE0,0x38,0xC0,0x3F,0x80,0x37,0x00,0x30,0x40,0x38,0xC0,0x1F,0x80,0x0F}, // 0x67 -{0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x1E,0x60,0x3F,0xE0,0x31,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x68 -{0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0xC0,0x0F,0xC0,0x0F,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x69 -{0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x80,0x1F,0x80,0x1F,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x1C,0xC0,0x0F,0xC0,0x07}, // 0x6A -{0x00,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x70,0xC0,0x38,0xC0,0x1C,0xC0,0x0E,0xC0,0x06,0xC0,0x07,0xC0,0x0E,0xC0,0x1C,0xC0,0x38,0xC0,0x70,0xC0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x6B -{0x00,0x00,0xC0,0x0F,0xC0,0x0F,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x6C -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0x39,0xF0,0x7F,0x70,0x67,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x6D -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x1E,0x60,0x3F,0xE0,0x31,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x6E -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xC0,0x3F,0xC0,0x30,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xC0,0x30,0xC0,0x3F,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x6F -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x0F,0xE0,0x1F,0xE0,0x38,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0xE0,0x18,0xE0,0x1F,0x60,0x0F,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00}, // 0x70 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x37,0xC0,0x3F,0xC0,0x38,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0xE0,0x38,0xC0,0x37,0x80,0x33,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30}, // 0x71 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x3C,0xC0,0x3E,0xC0,0x23,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x72 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1F,0xC0,0x1F,0xC0,0x00,0xC0,0x00,0xC0,0x03,0x00,0x1F,0x00,0x38,0x00,0x30,0x40,0x30,0xC0,0x1F,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x73 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x03,0xE0,0x7F,0xE0,0x7F,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x7F,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x74 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x3C,0xE0,0x37,0xC0,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x75 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0xC0,0x20,0xC0,0x30,0xC0,0x30,0x80,0x11,0x80,0x19,0x80,0x19,0x00,0x0B,0x00,0x0F,0x00,0x0F,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x76 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xC0,0x30,0xC6,0x30,0xC6,0x20,0x4E,0x60,0x4F,0x60,0x49,0x60,0x69,0x60,0x79,0xC0,0x39,0xC0,0x30,0xC0,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x77 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x70,0xC0,0x30,0x80,0x19,0x80,0x0B,0x00,0x0F,0x00,0x06,0x00,0x0F,0x80,0x1D,0x80,0x19,0xC0,0x30,0x60,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x78 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0xC0,0x20,0xC0,0x30,0xC0,0x31,0x80,0x19,0x80,0x19,0x00,0x0B,0x00,0x0F,0x00,0x0F,0x00,0x06,0x00,0x06,0x00,0x02,0x00,0x03,0xC0,0x03,0xC0,0x01}, // 0x79 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x3F,0xE0,0x3F,0x00,0x30,0x00,0x18,0x00,0x0C,0x00,0x06,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x3F,0xE0,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x7A -{0x00,0x00,0x00,0x3C,0x00,0x3E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0xC0,0x03,0xC0,0x03,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x3E,0x00,0x3C,0x00,0x00}, // 0x7B -{0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00}, // 0x7C -{0x00,0x00,0xC0,0x03,0xC0,0x07,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x3C,0x00,0x3C,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0xC0,0x07,0xC0,0x03,0x00,0x00}, // 0x7D -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x43,0xE0,0x7F,0x20,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x7E -{0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x3F,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0xC0,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00} // 0x7F -}; \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/88MZ100_7.5 M2_7.5_v0027_beta.bin b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/88MZ100_7.5 M2_7.5_v0027_beta.bin new file mode 100644 index 00000000..57bf070e Binary files /dev/null and b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/88MZ100_7.5 M2_7.5_v0027_beta.bin differ diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/Makefile b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/Makefile index b96f748c..ae681145 100644 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/Makefile +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/Makefile @@ -1,21 +1,25 @@ + MZ_FLASHER=python ../88MZ100_Flasher/88MZ100_Uart_flasher.py ARMGCC=/usr/bin/ CC=$(ARMGCC)arm-none-eabi-gcc +GPLUSPLUS=$(ARMGCC)arm-none-eabi-g++ AS=$(ARMGCC)arm-none-eabi-as OBJCOPY=$(ARMGCC)arm-none-eabi-objcopy -#-Wall +#-Wall CC_WARNING_FLAGS=-Wall -Wformat=0 -Wattributes -Wstrict-aliasing=0 -CC_FlAGS=-mcpu=cortex-m3 -g -O0 -mthumb -fdata-sections -ffunction-sections -std=c99 -CC_END_FLAGS=-lc -lnosys -L. -T mz100.ld -fPIE --specs=nosys.specs -mcpu=cortex-m3 -mthumb -Wl,--gc-sections -O0 -flto -ffunction-sections -fdata-sections -DARM_GNU +CPP_FLAGS=-lstdc++ -mcpu=cortex-m3 -g -O3 -mthumb -fdata-sections -ffunction-sections -std=c++98 -std=gnu++0x +CC_FLAGS=-mcpu=cortex-m3 -g -O0 -mthumb -fdata-sections -ffunction-sections -std=c99 +CC3_FLAGS=-mcpu=cortex-m3 -g -O3 -mthumb -fdata-sections -ffunction-sections -std=c99 +CC_END_FLAGS=-lstdc++ -lc -lnosys -L. -T mz100/mz100.ld -fPIE --specs=nosys.specs -mcpu=cortex-m3 -mthumb -Wl,--gc-sections -O0 -flto -ffunction-sections -fdata-sections -DARM_GNU C_SOURCES :=$(wildcard *.c) C_EXECUTABLE :=$(C_SOURCES:.c=) COMPORT = COM12 - + build: compile only: clean compile create_ota_img @@ -27,44 +31,79 @@ uart: clean compile flash_uart compile: - @mkdir -p build - @$(AS) -mcpu=cortex-m3 --gdwarf-2 -mthumb-interwork -o build/startup.o startup.S +# @mkdir -p build + @$(AS) -mcpu=cortex-m3 --gdwarf-2 -mthumb-interwork -o build/startup.o startup.S + @$(CC) $(CC3_FLAGS) -c mz100/core_cm3.c -o build/core_cm3.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_ssp.c -o build/mz100_ssp.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_wdt.c -o build/mz100_wdt.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_gpio.c -o build/mz100_gpio.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_driver.c -o build/mz100_driver.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_adc.c -o build/mz100_adc.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_flash.c -o build/mz100_flash.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_clock.c -o build/mz100_clock.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_rtc.c -o build/mz100_rtc.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_pinmux.c -o build/mz100_pinmux.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_pmu.c -o build/mz100_pmu.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_qspi.c -o build/mz100_qspi.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_aes.c -o build/mz100_aes.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_gpt.c -o build/mz100_gpt.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_sleep.c -o build/mz100_sleep.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_uart.c -o build/mz100_uart.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_aon_ram.c -o build/mz100_aon_ram.o + @$(CC) $(CC3_FLAGS) -c mz100/printf.c -o build/printf.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c zigbee.c -o build/zigbee.o +# @$(CC) $(CC_FLAGS) $(CC_WARNING_FLAGS) -c ccm.c -o build/ccm.o - @$(CC) $(CC_FlAGS) -c core_cm3.c -o build/core_cm3.o - @$(CC) $(CC_FlAGS) -c mz100_ssp.c -o build/mz100_ssp.o - @$(CC) $(CC_FlAGS) -c mz100_wdt.c -o build/mz100_wdt.o - @$(CC) $(CC_FlAGS) -c mz100_gpio.c -o build/mz100_gpio.o - @$(CC) $(CC_FlAGS) -c mz100_driver.c -o build/mz100_driver.o - @$(CC) $(CC_FlAGS) -c mz100_adc.c -o build/mz100_adc.o - @$(CC) $(CC_FlAGS) -c mz100_flash.c -o build/mz100_flash.o - @$(CC) $(CC_FlAGS) -c mz100_clock.c -o build/mz100_clock.o - @$(CC) $(CC_FlAGS) -c mz100_rtc.c -o build/mz100_rtc.o - @$(CC) $(CC_FlAGS) -c mz100_pinmux.c -o build/mz100_pinmux.o - @$(CC) $(CC_FlAGS) -c mz100_pmu.c -o build/mz100_pmu.o - @$(CC) $(CC_FlAGS) -c mz100_qspi.c -o build/mz100_qspi.o - @$(CC) $(CC_FlAGS) -c mz100_aes.c -o build/mz100_aes.o - @$(CC) $(CC_FlAGS) -c mz100_gpt.c -o build/mz100_gpt.o - @$(CC) $(CC_FlAGS) -c mz100_sleep.c -o build/mz100_sleep.o - @$(CC) $(CC_FlAGS) -c mz100_uart.c -o build/mz100_uart.o - @$(CC) $(CC_FlAGS) -c mz100_aon_ram.c -o build/mz100_aon_ram.o - @$(CC) $(CC_FlAGS) -c printf.c -o build/printf.o - @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c zigbee.c -o build/zigbee.o -# @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c ccm.c -o build/ccm.o -# @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c chars.c -o build/chars.o - @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c drawing.c -o build/drawing.o - @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c powermgt.c -o build/powermgt.o - @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c syncedproto.c -o build/syncedproto.o - @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c comms.c -o build/comms.o - @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c settings.c -o build/settings.o - @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c timer.c -o build/timer.o - @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c util.c -o build/util.o - @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c gpio.c -o build/gpio.o - @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c epd.c -o build/epd.o - @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c userinterface.c -o build/userinterface.o - @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c main.c -o build/main.o - @$(CC) $(CC_END_FLAGS) $(CC_WARNING_FLAGS) build/main.o build/userinterface.o build/printf.o build/mz100_aon_ram.o build/zigbee.o build/drawing.o build/powermgt.o build/syncedproto.o build/comms.o build/settings.o build/timer.o build/util.o build/gpio.o build/epd.o build/mz100_sleep.o build/core_cm3.o build/mz100_ssp.o build/mz100_wdt.o build/mz100_gpio.o build/mz100_driver.o build/mz100_adc.o build/mz100_flash.o build/mz100_clock.o build/mz100_rtc.o build/mz100_pinmux.o build/mz100_pmu.o build/mz100_qspi.o build/mz100_aes.o build/mz100_gpt.o build/mz100_uart.o build/startup.o -o main.axf + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c ../common/uzlib/src/adler32.c -o build/uz-adler32.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c ../common/uzlib/src/crc32.c -o build/uz-crc32.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c ../common/uzlib/src/defl_static.c -o build/uz-defl_static.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c ../common/uzlib/src/genlz77.c -o build/uz-genlz77.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c ../common/uzlib/src/tinfgzip.c -o build/uz-tinfgzip.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c ../common/uzlib/src/tinflate.c -o build/uz-tinflate.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c ../common/uzlib/src/tinfzlib.c -o build/uz-tinfzlib.o + + @$(GPLUSPLUS) $(CPP_FLAGS) $(CC_WARNING_FLAGS) -c compression.cpp -o build/compression.o + + @$(GPLUSPLUS) $(CPP_FLAGS) $(CC_WARNING_FLAGS) -c drawing.cpp -o build/drawing.o + @$(GPLUSPLUS) $(CPP_FLAGS) $(CC_WARNING_FLAGS) -c epd_interface.cpp -o build/epd_interface.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c powermgt.c -o build/powermgt.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c syncedproto.c -o build/syncedproto.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c comms.c -o build/comms.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c md5.c -o build/md5.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c settings.c -o build/settings.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c mz100/timer.c -o build/timer.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c mz100/util.c -o build/util.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c mz100/gpio.c -o build/gpio.o + @$(GPLUSPLUS) $(CPP_FLAGS) $(CC_WARNING_FLAGS) -c uc8159-var-m2.cpp -o build/uc8159-var-m2.o + @$(GPLUSPLUS) $(CPP_FLAGS) $(CC_WARNING_FLAGS) -c userinterface.cpp -o build/userinterface.o + @$(GPLUSPLUS) $(CPP_FLAGS) $(CC_WARNING_FLAGS) -c main.cpp -o build/main.o + @$(GPLUSPLUS) $(CPP_FLAGS) $(CC_WARNING_FLAGS) -c oepl_fs.cpp -o build/oepl_fs.o + @$(GPLUSPLUS) $(CC_END_FLAGS) $(CC_WARNING_FLAGS) \ + build/main.o \ + build/epd_interface.o \ + build/oepl_fs.o\ + build/userinterface.o \ + build/printf.o \ + build/mz100_aon_ram.o \ + build/zigbee.o \ + build/compression.o \ + build/drawing.o \ + build/powermgt.o \ + build/syncedproto.o \ + build/comms.o \ + build/settings.o \ + build/timer.o \ + build/util.o \ + build/md5.o \ + build/gpio.o \ + build/uc8159-var-m2.o \ + build/mz100_sleep.o \ + build/core_cm3.o \ + build/uz-adler32.o build/uz-crc32.o build/uz-defl_static.o build/uz-genlz77.o build/uz-tinfgzip.o build/uz-tinflate.o build/uz-tinfzlib.o \ + build/mz100_ssp.o build/mz100_wdt.o build/mz100_gpio.o build/mz100_driver.o build/mz100_adc.o build/mz100_flash.o build/mz100_clock.o build/mz100_rtc.o build/mz100_pinmux.o build/mz100_pmu.o build/mz100_qspi.o build/mz100_aes.o build/mz100_gpt.o build/mz100_uart.o \ + build/startup.o -o main.axf @$(OBJCOPY) -v -O binary main.axf main.bin - + @cat build/fs.img >> main.bin clean: @rm -rf build/* diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/bitmaps.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/bitmaps.h index 618e0acb..1b8525bc 100755 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/bitmaps.h +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/bitmaps.h @@ -104,4 +104,189 @@ static const uint8_t batlow[] = { 0x00, 0x00, 0x00, }; + +static const uint8_t tbird2[] = { + +0x40,0x01,178,0, + 0xb6, 0xdb, 0x6d, 0xb5, 0xad, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x52, 0xa5, 0x54, 0xaa, 0xaa, 0xaa, 0x55, 0x4a, + 0xdb, 0x6d, 0xb6, 0xd6, 0xd6, 0xee, 0xee, 0xdb, 0x6d, 0xad, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa4, 0xa4, 0x92, 0x49, 0x24, 0x92, 0x22, 0x4a, 0x54, 0x8a, 0x92, 0x44, 0x91, 0x48, 0xa9, + 0x6d, 0xaa, 0xaa, 0xaa, 0xb5, 0x55, 0x55, 0x6a, 0xaa, 0xb5, 0x5b, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x49, 0x49, 0x24, 0x92, 0x44, 0x52, 0x95, 0x55, 0x2a, 0x92, 0x49, 0x55, 0x29, 0x22, 0x52, 0x49, 0x2a, 0x4a, 0xa5, 0x14, + 0xaa, 0xb6, 0xd5, 0x6d, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xad, 0x55, 0x55, 0x55, 0x55, 0x55, 0x29, 0x29, 0x24, 0xaa, 0xaa, 0xaa, 0xa9, 0x33, 0x2a, 0x52, 0x49, 0x52, 0x55, 0x55, 0x24, 0x94, 0x95, 0x49, 0x2a, 0xa5, 0x29, 0x14, 0xa2, + 0xb6, 0xdb, 0x5b, 0xb6, 0xda, 0xb6, 0xd5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x52, 0x92, 0xa5, 0x55, 0x52, 0x95, 0x25, 0x52, 0x4a, 0x88, 0x95, 0x49, 0x24, 0x89, 0x49, 0x22, 0x92, 0x42, 0xa9, 0x2a, 0xa4, 0x50, 0xa4, 0xa2, 0x95, + 0xdb, 0x55, 0x6d, 0x55, 0x55, 0x55, 0x5b, 0x56, 0xda, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x4a, 0x55, 0x55, 0x4a, 0x95, 0x52, 0x94, 0x8a, 0xa9, 0x6a, 0xa2, 0x55, 0x52, 0x54, 0xa4, 0x94, 0x49, 0x5a, 0x44, 0x91, 0x12, 0x8a, 0x92, 0x54, 0x48, + 0x55, 0x6a, 0xaa, 0xaa, 0xab, 0x55, 0x55, 0x5a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x92, 0xaa, 0xaa, 0x4a, 0x52, 0x54, 0xa9, 0x55, 0x54, 0x94, 0x95, 0x55, 0x24, 0x95, 0x4a, 0x12, 0x4a, 0xa5, 0x21, 0x2a, 0x4a, 0x49, 0x24, 0x49, 0x0a, 0xa5, + 0xb5, 0xad, 0xaa, 0xd5, 0xb5, 0x6a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa9, 0x55, 0x55, 0x52, 0xa9, 0x4a, 0xa5, 0x14, 0xa4, 0xa5, 0x4a, 0x44, 0x24, 0x92, 0x49, 0x21, 0x4a, 0xa1, 0x14, 0x94, 0x91, 0x24, 0xa4, 0x92, 0xa4, 0xa1, 0x12, + 0xd6, 0xb5, 0x5b, 0x5a, 0xaa, 0xab, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x4a, 0xaa, 0x49, 0x2a, 0x55, 0x29, 0x2a, 0xa5, 0x2a, 0x52, 0x52, 0xaa, 0x92, 0x49, 0x24, 0x95, 0x28, 0x54, 0xa2, 0x4a, 0x4a, 0x92, 0x2a, 0x54, 0x12, 0x54, 0xa8, + 0x5a, 0xaa, 0xd5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x52, 0xa9, 0x2a, 0x49, 0x55, 0x49, 0x4a, 0xaa, 0x91, 0x52, 0x92, 0x89, 0x29, 0x21, 0x49, 0x24, 0x92, 0x48, 0xa5, 0x0a, 0x55, 0x21, 0x24, 0x49, 0x41, 0x22, 0xc9, 0x0a, 0x05, + 0xab, 0x56, 0xaa, 0xaa, 0xab, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x2a, 0x4a, 0xa9, 0x55, 0x54, 0xaa, 0xa4, 0x92, 0x54, 0x8a, 0x49, 0x55, 0x44, 0x94, 0xa4, 0xaa, 0x49, 0x25, 0x12, 0xa1, 0x08, 0x94, 0x92, 0xa4, 0x94, 0x94, 0x24, 0xa1, 0x50, + 0xb5, 0x6a, 0xb5, 0x55, 0xb5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x52, 0xaa, 0xaa, 0xa5, 0x4a, 0x4a, 0x92, 0x52, 0x55, 0x4a, 0x55, 0x54, 0x48, 0xaa, 0x4a, 0x15, 0x11, 0x24, 0x92, 0xa4, 0x54, 0xa5, 0x25, 0x49, 0x12, 0x4a, 0x42, 0x92, 0x54, 0x8a, + 0xaa, 0xab, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa5, 0x52, 0x55, 0x29, 0x52, 0x55, 0x2a, 0xa4, 0xa5, 0x48, 0x93, 0x25, 0x11, 0x25, 0x50, 0xa4, 0x92, 0x48, 0x49, 0x0a, 0x50, 0x90, 0x24, 0xa9, 0x21, 0x29, 0x24, 0x82, 0x51, + 0xad, 0x55, 0x56, 0xad, 0x55, 0x55, 0x55, 0x55, 0x52, 0x55, 0x25, 0x2a, 0x4a, 0x94, 0xa5, 0x29, 0x49, 0x49, 0x12, 0x28, 0xa5, 0x48, 0x92, 0xa4, 0x90, 0x8a, 0x92, 0x49, 0x25, 0x24, 0xa1, 0x0a, 0x4a, 0x92, 0x04, 0x94, 0x84, 0x92, 0x29, 0x0a, + 0x6a, 0xda, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x95, 0x49, 0x54, 0xa9, 0x55, 0x52, 0x94, 0xa5, 0x24, 0xa4, 0xd5, 0x45, 0x12, 0x25, 0x48, 0x4a, 0x4a, 0x52, 0x49, 0x24, 0x92, 0x92, 0x54, 0xa5, 0x22, 0x49, 0x52, 0x42, 0x52, 0x21, 0x44, 0x50, + 0xab, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x2a, 0x95, 0x28, 0x95, 0x52, 0x94, 0xaa, 0x15, 0x09, 0x2a, 0x49, 0x52, 0x25, 0x21, 0x25, 0x24, 0x94, 0x92, 0x48, 0x49, 0x05, 0x10, 0x89, 0x24, 0x24, 0x29, 0x08, 0x94, 0x29, 0x0a, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa9, 0x2a, 0xaa, 0xa5, 0x52, 0xa6, 0x52, 0x4a, 0x52, 0x49, 0x52, 0x64, 0x91, 0x24, 0x89, 0x52, 0x94, 0x90, 0x92, 0x42, 0x49, 0x25, 0x10, 0xa8, 0xa4, 0x52, 0x42, 0x91, 0x44, 0x52, 0x42, 0x84, 0xa1, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x4a, 0xa4, 0x92, 0x54, 0xa9, 0x51, 0x49, 0x29, 0x49, 0x25, 0x49, 0x12, 0x4a, 0x92, 0x54, 0x88, 0x4a, 0x4a, 0x49, 0x29, 0x24, 0x90, 0x8a, 0x04, 0x12, 0x08, 0x94, 0x44, 0x22, 0x89, 0x14, 0x52, 0x14, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x49, 0x24, 0xaa, 0x55, 0x4a, 0xa5, 0x15, 0x15, 0x2a, 0xa5, 0x25, 0x52, 0x24, 0xa9, 0x24, 0x49, 0x02, 0x55, 0x21, 0x25, 0x22, 0x04, 0x48, 0x45, 0x21, 0x52, 0x89, 0x44, 0x42, 0x22, 0x90, 0x44, 0x42, 0x08, 0xa2, + 0x5a, 0xaa, 0xaa, 0xaa, 0x92, 0xaa, 0xaa, 0x92, 0xa9, 0x29, 0x2a, 0xa4, 0xaa, 0xa4, 0x92, 0x94, 0x89, 0x52, 0x44, 0x92, 0xa4, 0xa9, 0x02, 0x94, 0x90, 0x89, 0x52, 0x22, 0x90, 0x94, 0x20, 0x50, 0x29, 0x11, 0x14, 0x4a, 0x21, 0x29, 0x52, 0x11, + 0xaa, 0xaa, 0xaa, 0x94, 0xaa, 0xaa, 0xaa, 0x55, 0x25, 0x55, 0x48, 0xaa, 0x91, 0x2a, 0x48, 0x52, 0x54, 0x89, 0x2a, 0x48, 0x12, 0x4a, 0x54, 0x42, 0x4a, 0x24, 0x24, 0x88, 0x4a, 0x42, 0x8a, 0x85, 0x42, 0x48, 0x81, 0x01, 0x14, 0x04, 0x24, 0x88, + 0x55, 0x55, 0x55, 0x52, 0xaa, 0x52, 0x49, 0x54, 0xaa, 0x4a, 0x55, 0x22, 0x4a, 0x91, 0x2b, 0x25, 0x22, 0x54, 0x81, 0x25, 0x49, 0x21, 0x22, 0x29, 0x21, 0x11, 0x49, 0x25, 0x01, 0x10, 0x44, 0x20, 0x11, 0x12, 0x54, 0xaa, 0x42, 0xa1, 0x49, 0x25, + 0xaa, 0xaa, 0xaa, 0xaa, 0xa5, 0x4a, 0xaa, 0xa2, 0x92, 0xa5, 0x24, 0x95, 0x28, 0x4a, 0x90, 0x90, 0x94, 0x82, 0x54, 0x92, 0x44, 0x94, 0x89, 0x44, 0x48, 0xa4, 0x22, 0x48, 0xa8, 0x4a, 0x21, 0x15, 0x48, 0x44, 0x82, 0x01, 0x28, 0x14, 0x20, 0x90, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x29, 0x4a, 0x55, 0x49, 0x28, 0x92, 0xa8, 0xa5, 0x51, 0x4a, 0x4a, 0x42, 0x54, 0x92, 0x49, 0x28, 0x42, 0x24, 0x22, 0x25, 0x12, 0x88, 0x22, 0x05, 0x01, 0x14, 0x80, 0x22, 0x21, 0x28, 0xa8, 0x02, 0x82, 0x8a, 0x05, + 0xaa, 0xaa, 0xa9, 0x24, 0x92, 0xaa, 0x52, 0x94, 0xaa, 0x95, 0x54, 0x95, 0x12, 0x24, 0x25, 0x25, 0x29, 0x12, 0x49, 0x24, 0x45, 0x11, 0x11, 0x14, 0x80, 0x40, 0x22, 0x88, 0xa8, 0xa8, 0x82, 0x55, 0x09, 0x14, 0x04, 0x05, 0x50, 0x50, 0x21, 0x50, + 0x55, 0x55, 0x4a, 0x95, 0x54, 0x95, 0x49, 0x4a, 0x49, 0x49, 0x25, 0x42, 0xa9, 0x4a, 0x90, 0x90, 0x88, 0xa4, 0x84, 0x89, 0x10, 0xa8, 0xa4, 0xa2, 0x55, 0x15, 0x48, 0x22, 0x02, 0x04, 0x50, 0x00, 0xa0, 0x81, 0x51, 0x50, 0x0a, 0x0a, 0x88, 0x0a, + 0xaa, 0xaa, 0x55, 0x54, 0xaa, 0xa2, 0x54, 0xa2, 0xa4, 0x54, 0x92, 0x28, 0x44, 0x91, 0x4a, 0x4a, 0x55, 0x12, 0x28, 0x44, 0xa5, 0x05, 0x09, 0x08, 0x02, 0x40, 0x12, 0x88, 0xa8, 0xa2, 0x0a, 0xaa, 0x0a, 0x54, 0x08, 0x0a, 0xa1, 0x40, 0x45, 0x50, + 0x55, 0x49, 0x52, 0x52, 0x92, 0x55, 0x25, 0x19, 0x15, 0x22, 0x49, 0x4a, 0x92, 0x4a, 0x25, 0x21, 0x00, 0x88, 0x92, 0x92, 0x10, 0x50, 0x44, 0x52, 0xa8, 0x95, 0x40, 0x22, 0x02, 0x11, 0x40, 0x00, 0xa0, 0x01, 0x45, 0x40, 0x14, 0x2a, 0x90, 0x0a, + 0xaa, 0xaa, 0xaa, 0xaa, 0x49, 0x49, 0x52, 0xa4, 0xa2, 0x95, 0x24, 0xa4, 0x49, 0x24, 0x90, 0x94, 0xaa, 0x52, 0x44, 0x48, 0x8a, 0x85, 0x21, 0x04, 0x04, 0x20, 0x15, 0x48, 0xa8, 0x88, 0x2a, 0xaa, 0x0a, 0xa8, 0x20, 0x2a, 0x81, 0x10, 0x4a, 0xa1, + 0x52, 0x55, 0x25, 0x25, 0x55, 0x24, 0x89, 0x2a, 0x54, 0x48, 0x92, 0x12, 0xa4, 0x92, 0x4a, 0x42, 0x21, 0x09, 0x11, 0x12, 0x40, 0x20, 0x94, 0x51, 0x52, 0x8a, 0xa0, 0x02, 0x02, 0x25, 0x00, 0x00, 0xa0, 0x05, 0x15, 0x00, 0x54, 0xa5, 0x21, 0x14, + 0xaa, 0x92, 0x94, 0x92, 0x49, 0x55, 0x54, 0x81, 0x0a, 0xa5, 0x49, 0x48, 0x12, 0x49, 0x21, 0x14, 0x94, 0xa2, 0x48, 0x84, 0x2a, 0x94, 0x02, 0x08, 0x08, 0x20, 0x0a, 0xa9, 0x69, 0x00, 0xaa, 0xaa, 0x15, 0x50, 0x80, 0xaa, 0x02, 0x10, 0x8a, 0x42, + 0x4a, 0xa9, 0x52, 0xa9, 0x54, 0x92, 0x22, 0x5a, 0xa1, 0x10, 0x24, 0xa5, 0x49, 0x24, 0x94, 0xa2, 0x42, 0x11, 0x12, 0x51, 0x40, 0x42, 0xa9, 0x45, 0x42, 0x8a, 0xd5, 0x77, 0xbe, 0xf4, 0x00, 0x01, 0x40, 0x04, 0x55, 0x01, 0x54, 0x8a, 0x21, 0x29, + 0x54, 0xa5, 0x2a, 0x4a, 0x8a, 0x49, 0x55, 0x24, 0x54, 0xaa, 0x92, 0x11, 0x24, 0x90, 0x42, 0x11, 0x14, 0xa4, 0x44, 0x08, 0x2a, 0x10, 0x04, 0x20, 0x28, 0x23, 0x5b, 0xad, 0x55, 0xaf, 0xb5, 0x54, 0x15, 0x52, 0x80, 0xaa, 0x22, 0x41, 0x4a, 0x44, + 0xa5, 0x2a, 0xa5, 0x29, 0x51, 0x24, 0x88, 0x92, 0x8a, 0x04, 0xa9, 0x4a, 0x49, 0x0a, 0x94, 0x8a, 0x42, 0x12, 0x22, 0xa2, 0x81, 0x4a, 0xa1, 0x15, 0x45, 0x16, 0xa4, 0x56, 0xea, 0xd5, 0x6a, 0x81, 0x40, 0x08, 0x54, 0x01, 0x11, 0x2a, 0x21, 0x12, + 0x54, 0xa4, 0x92, 0xa4, 0x4a, 0x92, 0x52, 0x48, 0x51, 0x52, 0x04, 0x21, 0x24, 0x50, 0x42, 0x51, 0x28, 0x89, 0x10, 0x11, 0x2a, 0x20, 0x14, 0x80, 0x10, 0xab, 0x12, 0xaa, 0xb7, 0x76, 0xdd, 0x7d, 0x15, 0x52, 0x09, 0x54, 0x88, 0x84, 0x94, 0x48, + 0x4a, 0x95, 0x54, 0x92, 0xa4, 0x49, 0x25, 0x25, 0x0a, 0x29, 0x52, 0x94, 0x89, 0x0a, 0x94, 0x84, 0x04, 0x50, 0xa5, 0x4a, 0x40, 0x8a, 0xa2, 0x55, 0x4a, 0x1d, 0xa9, 0x12, 0xaa, 0x9b, 0x6b, 0xab, 0xe8, 0x81, 0x42, 0x08, 0x44, 0x22, 0x02, 0x22, + 0x52, 0x52, 0x25, 0x4a, 0x12, 0xa4, 0x90, 0x92, 0xa1, 0x44, 0x48, 0x42, 0x24, 0xa0, 0x42, 0x29, 0x52, 0x84, 0x10, 0x81, 0x15, 0x20, 0x48, 0x08, 0x91, 0x56, 0x94, 0xa9, 0x40, 0x55, 0xb6, 0xf6, 0xb7, 0x6c, 0x28, 0xa2, 0x92, 0x90, 0xa9, 0x08, + 0x4a, 0xa9, 0x52, 0x29, 0x49, 0x12, 0x4a, 0x48, 0x54, 0x22, 0x92, 0x94, 0x91, 0x15, 0x28, 0x84, 0x24, 0x52, 0xa5, 0x2a, 0x40, 0x95, 0x25, 0x52, 0x48, 0x3b, 0x22, 0x94, 0xd5, 0x22, 0x5b, 0x5b, 0x5b, 0xb7, 0x82, 0x08, 0x20, 0x0a, 0x00, 0x41, + 0x54, 0x95, 0x29, 0x44, 0xa4, 0xa9, 0x25, 0x25, 0x05, 0x54, 0x49, 0x22, 0x44, 0x42, 0x05, 0x29, 0x49, 0x08, 0x88, 0x88, 0x95, 0x04, 0x91, 0x29, 0x25, 0x56, 0x95, 0x22, 0x48, 0x88, 0xa8, 0xaa, 0xed, 0x5a, 0xfd, 0x42, 0x8a, 0xa0, 0xaa, 0x10, + 0x4a, 0x48, 0x84, 0xaa, 0x2a, 0x04, 0x90, 0x90, 0xa8, 0x82, 0x24, 0x49, 0x12, 0x94, 0xa8, 0x84, 0x22, 0x45, 0x24, 0x52, 0x44, 0xa9, 0x24, 0x84, 0x91, 0x7a, 0xc8, 0x94, 0xc5, 0x45, 0x31, 0x15, 0x57, 0xed, 0x56, 0xf8, 0x00, 0x08, 0x00, 0x84, + 0x51, 0x55, 0x55, 0x11, 0x41, 0x52, 0x4a, 0x4a, 0x22, 0x29, 0x42, 0x24, 0x48, 0x42, 0x44, 0x52, 0x94, 0xa8, 0x92, 0x89, 0x11, 0x12, 0x4a, 0x52, 0x4a, 0xaf, 0x7e, 0xa8, 0xa8, 0x28, 0x94, 0x40, 0xaa, 0x57, 0xbb, 0x57, 0xea, 0x42, 0x88, 0x10, + 0x4a, 0x89, 0x28, 0xa4, 0x94, 0xa9, 0x21, 0x21, 0x49, 0x44, 0x29, 0x49, 0x22, 0x29, 0x12, 0x88, 0x42, 0x04, 0x48, 0x44, 0x4a, 0x49, 0x21, 0x09, 0x21, 0x75, 0xdf, 0xd6, 0xc2, 0xa5, 0x62, 0x95, 0x05, 0x5a, 0xd5, 0xdd, 0x7d, 0xa0, 0x22, 0x42, + 0x54, 0x54, 0x92, 0x4a, 0x4a, 0x04, 0x94, 0x94, 0x94, 0x29, 0x44, 0x24, 0x95, 0x44, 0x48, 0x52, 0x94, 0xaa, 0x92, 0xa9, 0x21, 0x24, 0x94, 0xa4, 0x95, 0xae, 0xeb, 0xe1, 0x39, 0x01, 0x30, 0x20, 0x56, 0x25, 0x5e, 0xb7, 0xae, 0xfd, 0x00, 0x00, + 0x4a, 0xa2, 0x4a, 0x91, 0x21, 0x52, 0x4a, 0x42, 0x42, 0x84, 0x29, 0x42, 0x20, 0x29, 0x25, 0x24, 0x49, 0x10, 0x49, 0x04, 0x94, 0x91, 0x22, 0x12, 0x21, 0x77, 0x7d, 0xf4, 0x45, 0xda, 0x25, 0x0a, 0x02, 0x84, 0x22, 0xda, 0xf7, 0xb6, 0x92, 0x48, + 0x22, 0x55, 0x51, 0x24, 0x94, 0x94, 0x91, 0x29, 0x28, 0x52, 0x84, 0x28, 0x95, 0x44, 0x92, 0x92, 0xa4, 0xa5, 0x24, 0xa9, 0x22, 0x44, 0x89, 0x48, 0x95, 0xad, 0xab, 0x61, 0x00, 0x2a, 0xb0, 0x41, 0x56, 0x52, 0x94, 0x7f, 0xba, 0xff, 0xc0, 0x02, + 0xa9, 0x08, 0x8a, 0x52, 0x4a, 0x42, 0x48, 0x8a, 0x45, 0x24, 0x52, 0x85, 0x42, 0x2a, 0x48, 0x49, 0x12, 0x12, 0x92, 0x12, 0x49, 0x12, 0x52, 0x25, 0x22, 0xdb, 0xfe, 0xb4, 0xaa, 0x01, 0x57, 0x28, 0x05, 0x09, 0x49, 0x59, 0x5f, 0xdb, 0x49, 0x20, + 0x4a, 0xa5, 0x51, 0x09, 0x21, 0x29, 0x25, 0x21, 0x28, 0x92, 0x88, 0xa8, 0x29, 0x41, 0x25, 0x24, 0xa4, 0xa8, 0x48, 0xa4, 0x94, 0xa9, 0x09, 0x50, 0x95, 0x76, 0xab, 0xf2, 0x11, 0x54, 0x08, 0xa4, 0x94, 0xa4, 0x22, 0xff, 0xaa, 0xaa, 0xc0, 0x08, + 0x24, 0x52, 0x2a, 0xa4, 0x94, 0x94, 0x92, 0x54, 0x85, 0x49, 0x25, 0x15, 0x4a, 0x2a, 0x92, 0x92, 0x49, 0x05, 0x25, 0x12, 0x42, 0x04, 0xa4, 0x0a, 0x47, 0xbd, 0xfe, 0xa9, 0x4a, 0x02, 0xa2, 0x56, 0xa6, 0x09, 0x55, 0xdb, 0xbf, 0xff, 0xc4, 0x82, + 0x92, 0x89, 0x44, 0x52, 0x4a, 0x42, 0x49, 0x0a, 0x52, 0x24, 0x92, 0x42, 0x25, 0x48, 0x48, 0xa9, 0x24, 0xa9, 0x48, 0xa4, 0x94, 0xa9, 0x12, 0xa5, 0x29, 0x6b, 0xb7, 0xf2, 0x21, 0x54, 0x15, 0x08, 0xaa, 0xa2, 0x09, 0xff, 0xed, 0xb6, 0x90, 0x20, + 0x49, 0x54, 0xa9, 0x15, 0x21, 0x29, 0x24, 0xa1, 0x29, 0x52, 0x49, 0x29, 0x50, 0xa5, 0x2a, 0x44, 0x92, 0x54, 0x25, 0x12, 0x49, 0x24, 0xa9, 0x28, 0x87, 0xbe, 0xfe, 0xb4, 0x94, 0x49, 0x40, 0xa2, 0x04, 0xac, 0xa7, 0x6d, 0x36, 0xdb, 0x42, 0x08, + 0x54, 0x92, 0x25, 0x48, 0x95, 0x55, 0x52, 0x95, 0x44, 0x89, 0x2a, 0x94, 0x8a, 0x12, 0xa5, 0x2a, 0x49, 0x22, 0x92, 0x49, 0x24, 0x92, 0x44, 0x85, 0x2a, 0xd7, 0x5b, 0xe9, 0x42, 0xa4, 0x95, 0x14, 0xa0, 0x12, 0xab, 0xff, 0xab, 0xff, 0xc8, 0xa2, + 0x25, 0x4a, 0x92, 0x55, 0x54, 0x92, 0x4a, 0x54, 0x95, 0x24, 0x90, 0x49, 0x21, 0x49, 0x10, 0x91, 0x54, 0x95, 0x49, 0x54, 0x92, 0x49, 0x29, 0x52, 0x4d, 0x7b, 0xff, 0x72, 0x29, 0x10, 0x24, 0x41, 0x12, 0x40, 0xae, 0xea, 0xfe, 0xa4, 0x22, 0x08, + 0x92, 0x24, 0xa9, 0x22, 0x4a, 0x49, 0x29, 0x22, 0x52, 0x92, 0x4a, 0xa0, 0x48, 0x2a, 0xaa, 0x4a, 0x4a, 0x48, 0x54, 0x8a, 0x49, 0x24, 0x92, 0x29, 0x2b, 0xad, 0x6b, 0xd9, 0x44, 0x82, 0x12, 0xaa, 0x44, 0x8a, 0x17, 0xff, 0xf8, 0x09, 0x11, 0x52, + 0x55, 0x52, 0x95, 0x55, 0x25, 0x55, 0x4a, 0x95, 0x28, 0x49, 0x20, 0x14, 0x22, 0x91, 0x01, 0x25, 0x22, 0xa5, 0x22, 0x51, 0x2a, 0x92, 0x49, 0x44, 0x96, 0xf7, 0xfe, 0xf4, 0x12, 0x20, 0x8a, 0x11, 0x21, 0x20, 0x9d, 0xbd, 0xb2, 0xa2, 0x4a, 0x08, + 0x49, 0x2a, 0x52, 0x94, 0xa9, 0x24, 0xa4, 0x52, 0x85, 0x2a, 0x92, 0x81, 0x08, 0x4a, 0x54, 0x11, 0x54, 0x95, 0x55, 0x4a, 0xa4, 0x55, 0x54, 0x92, 0x5b, 0x5d, 0x5b, 0xb2, 0x88, 0x84, 0x52, 0xaa, 0x14, 0x95, 0x6f, 0xf7, 0xe9, 0x11, 0x24, 0xa5, + 0x54, 0xa9, 0x4a, 0x4a, 0x94, 0x92, 0x52, 0x94, 0x50, 0x90, 0x44, 0x52, 0x42, 0x20, 0x91, 0x4a, 0x4a, 0x52, 0x95, 0x55, 0x52, 0xa4, 0x8a, 0x55, 0x55, 0xf7, 0xff, 0xf9, 0x20, 0x10, 0x09, 0x00, 0x40, 0x48, 0xbf, 0xff, 0xe4, 0xaa, 0x52, 0xa8, + 0x4a, 0x95, 0x55, 0x52, 0x52, 0xaa, 0x89, 0x4a, 0xaa, 0x4a, 0x11, 0x00, 0x28, 0x8a, 0x24, 0x01, 0x2a, 0xad, 0x6a, 0xb5, 0x5d, 0x55, 0x61, 0x24, 0xae, 0xae, 0xd6, 0xd4, 0x8a, 0x82, 0xa4, 0xa9, 0x25, 0x25, 0x7b, 0xbf, 0x92, 0x41, 0x08, 0x92, + 0x55, 0x4a, 0x49, 0x29, 0x4a, 0x49, 0x54, 0xa1, 0x01, 0x21, 0x44, 0x4a, 0x02, 0x20, 0x89, 0x5a, 0xaa, 0xd5, 0x56, 0xdb, 0x6b, 0x6d, 0xbd, 0x52, 0x37, 0xfb, 0xff, 0xb8, 0x50, 0x54, 0x12, 0x02, 0x48, 0x92, 0xef, 0xfd, 0xa9, 0x14, 0xa5, 0x4a, + 0xa9, 0x29, 0x54, 0x95, 0x29, 0x24, 0x4a, 0x2a, 0xaa, 0x88, 0x10, 0x10, 0xa8, 0x8a, 0x25, 0x55, 0x55, 0x55, 0xb5, 0x55, 0xaa, 0xb6, 0xab, 0xaa, 0xad, 0x5e, 0xb5, 0xf2, 0x8a, 0x21, 0x49, 0x48, 0x82, 0x4b, 0xff, 0xf7, 0x45, 0x55, 0x52, 0x25, + 0x4a, 0xa5, 0x25, 0x48, 0xa5, 0x55, 0x22, 0x90, 0x40, 0x45, 0x42, 0x80, 0x00, 0x21, 0x5a, 0xaa, 0xda, 0xad, 0x5b, 0x6d, 0x6d, 0xaa, 0xd5, 0x6d, 0xb7, 0xeb, 0xff, 0x78, 0x51, 0x14, 0x24, 0x80, 0x29, 0x2e, 0xfd, 0xbe, 0xb4, 0xa4, 0x8a, 0x92, + 0x54, 0x94, 0xaa, 0x55, 0x52, 0x49, 0x54, 0xa5, 0x15, 0x10, 0x08, 0x25, 0x4a, 0x84, 0x2a, 0xab, 0x55, 0xb5, 0xad, 0xb5, 0xb6, 0xdb, 0x5d, 0xb6, 0xda, 0xbf, 0x5b, 0xd5, 0x2a, 0xc9, 0x2a, 0x21, 0x04, 0xab, 0xdf, 0xfe, 0x4a, 0x52, 0x54, 0x54, + 0x4a, 0x55, 0x49, 0x4a, 0x29, 0x24, 0x8a, 0x12, 0x82, 0x41, 0x21, 0x00, 0x2a, 0xb2, 0x02, 0xaa, 0xaa, 0xd6, 0xb5, 0x56, 0xab, 0x6d, 0x6a, 0xdb, 0x6d, 0xab, 0xfe, 0xf9, 0x55, 0x24, 0xa0, 0x84, 0x12, 0xbf, 0xff, 0xf9, 0x52, 0x89, 0x21, 0x0a, + 0x52, 0xaa, 0x55, 0x25, 0x45, 0x52, 0x51, 0x48, 0x50, 0x04, 0x00, 0x2b, 0xaa, 0xda, 0x90, 0xad, 0x56, 0xaa, 0xd6, 0xdb, 0x6d, 0x56, 0xaf, 0x6d, 0xb6, 0xf6, 0xb7, 0xda, 0xa4, 0xaa, 0x94, 0x10, 0x0a, 0xb7, 0x76, 0xed, 0x49, 0x44, 0x54, 0x51, + 0xaa, 0x91, 0x49, 0x52, 0xa8, 0x89, 0x24, 0x92, 0x8a, 0x90, 0x4a, 0x94, 0xaa, 0xaa, 0xc2, 0x2a, 0xb5, 0x5b, 0x5a, 0xad, 0xb6, 0xdb, 0xb5, 0xb6, 0xdb, 0x5b, 0xdd, 0xf9, 0x2a, 0x91, 0x40, 0x00, 0x81, 0x7f, 0xff, 0xf5, 0x2a, 0x52, 0x88, 0x0d, + 0x49, 0x55, 0x25, 0x29, 0x25, 0x24, 0x92, 0x44, 0x50, 0x01, 0x05, 0x6a, 0xaa, 0xab, 0x50, 0x15, 0xab, 0x6d, 0x6b, 0x75, 0x55, 0x6c, 0xda, 0xdb, 0x55, 0xad, 0x6a, 0xb5, 0x55, 0x4a, 0x21, 0x48, 0x25, 0xdb, 0xdf, 0xea, 0xaa, 0xa9, 0x25, 0x52, + 0x55, 0x4a, 0xaa, 0xaa, 0x94, 0xaa, 0x49, 0x22, 0x89, 0x48, 0x55, 0x2a, 0xad, 0x54, 0xac, 0x45, 0x5d, 0xb5, 0xad, 0xab, 0x6f, 0xb7, 0x6d, 0x55, 0xba, 0xf6, 0xb7, 0x5a, 0xa4, 0xa4, 0x88, 0x12, 0x0b, 0x7f, 0x57, 0xa5, 0x55, 0x54, 0xa8, 0x09, + 0x55, 0x2a, 0xa9, 0x4a, 0x55, 0x41, 0x12, 0x14, 0x54, 0x05, 0xb5, 0x55, 0x56, 0xd6, 0xaa, 0x02, 0xd5, 0x56, 0xb5, 0x5d, 0xb4, 0xda, 0xb6, 0xee, 0xd7, 0x5b, 0xdd, 0xed, 0x55, 0x52, 0xd7, 0xc0, 0xad, 0xff, 0x6e, 0xca, 0xa4, 0x4a, 0xa5, 0x44, + 0xa4, 0xa9, 0x55, 0x29, 0x52, 0x54, 0x88, 0xa2, 0x82, 0xb5, 0x4a, 0xaa, 0xda, 0xaa, 0xab, 0x09, 0x55, 0x6a, 0xd6, 0xea, 0xd7, 0x6d, 0xd5, 0x5b, 0x6d, 0xad, 0x6b, 0x55, 0x4a, 0xaf, 0x7e, 0xa8, 0x2f, 0xdd, 0xdf, 0x95, 0x29, 0x2a, 0xaa, 0x23, + 0x55, 0x55, 0x2a, 0xa5, 0x55, 0x4a, 0x52, 0x94, 0x54, 0x95, 0x55, 0x55, 0x55, 0x55, 0x5a, 0xc0, 0xb6, 0xad, 0x5b, 0x56, 0xb5, 0x56, 0xbb, 0xb5, 0xb6, 0xf6, 0xbd, 0xfb, 0xb6, 0xfa, 0xef, 0xf1, 0x5b, 0x7f, 0x7e, 0x09, 0x40, 0x05, 0x51, 0x14, + 0x55, 0x55, 0x52, 0x55, 0x4a, 0xa9, 0x4a, 0x49, 0x2a, 0xaa, 0xaa, 0xd6, 0xaa, 0xaa, 0xab, 0x40, 0x55, 0xb6, 0xea, 0xeb, 0x5b, 0x75, 0xad, 0x5a, 0xdb, 0x5b, 0xd6, 0xad, 0x6f, 0xaf, 0xbb, 0xdc, 0x6f, 0xfb, 0xba, 0xa4, 0x12, 0xa8, 0xac, 0xaa, + 0x4a, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x29, 0x24, 0x91, 0x55, 0x5a, 0xaa, 0xaa, 0xdb, 0x55, 0x71, 0x2a, 0xd5, 0x5b, 0x5d, 0xed, 0xae, 0xd6, 0xef, 0x6d, 0xee, 0xbb, 0xdb, 0xbb, 0xfd, 0xfe, 0xf5, 0xbd, 0xee, 0xfc, 0x0a, 0x40, 0x05, 0x52, 0x92, + 0x55, 0x49, 0x55, 0x55, 0x55, 0x4a, 0xa5, 0x52, 0x40, 0x15, 0x55, 0x55, 0x56, 0xaa, 0xb5, 0x50, 0x16, 0xab, 0x6d, 0xb6, 0xaa, 0xd5, 0x75, 0x55, 0xb6, 0xbb, 0xd6, 0xbe, 0xdf, 0xef, 0xb7, 0xfa, 0xf7, 0xbe, 0xe8, 0xa0, 0x08, 0xa5, 0x55, 0x55, + 0x55, 0x2a, 0x95, 0x52, 0xaa, 0xa9, 0x55, 0x4a, 0x80, 0x12, 0xaa, 0xaa, 0xda, 0xaa, 0xd6, 0xac, 0x0a, 0xb5, 0xaa, 0xdb, 0x77, 0x6d, 0xae, 0xed, 0x5b, 0x56, 0xfb, 0x6b, 0x6a, 0xfe, 0xff, 0x6f, 0xdf, 0xfb, 0x78, 0x15, 0x02, 0x15, 0x55, 0x55, + 0x4a, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x54, 0xa9, 0x10, 0x2a, 0xaa, 0xb6, 0xaa, 0xdb, 0x5a, 0xd4, 0x0d, 0xae, 0xb6, 0xb6, 0xad, 0x56, 0xd5, 0xb7, 0xed, 0xff, 0x56, 0xf7, 0xb7, 0xbb, 0xdd, 0xf5, 0x7e, 0xea, 0xf2, 0x80, 0x48, 0xaa, 0xaa, 0xaa, + 0x54, 0xaa, 0xa9, 0x55, 0x52, 0xaa, 0x92, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x6a, 0xb5, 0x05, 0x55, 0x5b, 0x5b, 0xd5, 0xbb, 0x7a, 0xda, 0xb6, 0xaa, 0xed, 0xad, 0x76, 0xef, 0xf7, 0xdf, 0xf7, 0xff, 0xe0, 0x48, 0x00, 0x52, 0x4a, 0xa9, + 0x52, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa9, 0x40, 0x25, 0x55, 0x55, 0x55, 0xad, 0xad, 0x56, 0xd6, 0x02, 0xeb, 0xad, 0xed, 0x7b, 0x6a, 0xaf, 0x6b, 0x5b, 0x6f, 0xbb, 0xbb, 0xdb, 0xfe, 0xff, 0x6b, 0xbf, 0xff, 0xca, 0x23, 0xfd, 0x0a, 0xaa, 0x44, + 0xad, 0x55, 0x55, 0x55, 0x55, 0x55, 0x4a, 0x80, 0x15, 0x25, 0x55, 0x55, 0x55, 0x6b, 0xaa, 0xaa, 0x83, 0x5c, 0xea, 0xae, 0xad, 0xad, 0xd5, 0xb5, 0xed, 0xb5, 0x6e, 0xee, 0xfd, 0xb7, 0xdf, 0xbe, 0xfd, 0xb7, 0x95, 0xbf, 0x76, 0xaa, 0xa9, 0x22, + 0x52, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x58, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xac, 0xb5, 0x55, 0x40, 0xab, 0x5b, 0x55, 0xd6, 0xda, 0xba, 0xde, 0xb6, 0xde, 0xf5, 0xb7, 0x56, 0xff, 0x7d, 0x6f, 0xef, 0xff, 0x56, 0xff, 0xff, 0x92, 0xa9, 0x14, + 0xad, 0x55, 0x55, 0x52, 0xaa, 0xa9, 0x24, 0xa6, 0x52, 0x54, 0x95, 0x55, 0x5b, 0x55, 0x2b, 0x6d, 0x81, 0x6d, 0x6d, 0xb6, 0xbb, 0x6d, 0xd7, 0x6a, 0xdb, 0x6b, 0xae, 0xda, 0xfe, 0xed, 0xfa, 0xfb, 0x7f, 0xff, 0xff, 0xff, 0xfe, 0xd5, 0x44, 0xa2, + 0x55, 0x55, 0x55, 0x49, 0x55, 0x55, 0x52, 0x52, 0x95, 0x4a, 0xaa, 0xaa, 0xaa, 0xaa, 0xd5, 0x56, 0xa0, 0xb5, 0xaa, 0xdb, 0x6d, 0xb6, 0xba, 0xb7, 0x6d, 0xbd, 0x7b, 0xef, 0xad, 0x7f, 0xbb, 0xaf, 0xfd, 0xda, 0xff, 0xfd, 0xdb, 0xea, 0x28, 0x14, + 0xaa, 0xaa, 0xaa, 0x84, 0xaa, 0xa4, 0x95, 0x4a, 0x52, 0xa9, 0x52, 0xaa, 0xaa, 0xb6, 0xad, 0x55, 0x44, 0xaa, 0xb7, 0x6a, 0xd5, 0x5a, 0xd7, 0xda, 0xb6, 0xeb, 0xd6, 0xba, 0xff, 0xb6, 0xed, 0xfd, 0xdf, 0xff, 0xff, 0xdf, 0xff, 0xb1, 0x12, 0x8a, + 0x55, 0x55, 0x55, 0x2a, 0xaa, 0x92, 0x52, 0xa9, 0x4a, 0x55, 0x2a, 0x55, 0x55, 0x55, 0x6a, 0xaa, 0xb0, 0x5b, 0x5a, 0xad, 0x6e, 0xed, 0x6d, 0x6f, 0xdb, 0xbe, 0xbf, 0xdf, 0xb5, 0xff, 0xd7, 0x6f, 0xff, 0x7f, 0xef, 0xfb, 0x7e, 0xd4, 0xa0, 0x42, + 0xaa, 0xaa, 0xaa, 0xa9, 0x55, 0x55, 0x49, 0x15, 0x29, 0x49, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xd5, 0xa0, 0x55, 0xd5, 0xb7, 0xb5, 0x57, 0xb6, 0xb5, 0x6e, 0xd7, 0xea, 0xf5, 0xde, 0xab, 0x5d, 0xfe, 0xf7, 0xff, 0xfb, 0xef, 0xf7, 0xf2, 0x09, 0x14, + 0xb6, 0xaa, 0xaa, 0xaa, 0xaa, 0x24, 0xa4, 0xa4, 0xa5, 0x25, 0x25, 0x4a, 0xaa, 0xaa, 0xad, 0x5a, 0xb2, 0x2d, 0x6e, 0xd9, 0x5b, 0xba, 0xdb, 0xde, 0xfb, 0xfa, 0xbf, 0x5e, 0xb5, 0xfe, 0xb7, 0xb7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x80, 0x42, + 0x55, 0x55, 0x55, 0x55, 0x51, 0x52, 0x55, 0x52, 0x54, 0xa9, 0x54, 0xa9, 0x55, 0x55, 0x55, 0x55, 0x58, 0x16, 0xb5, 0x6d, 0xed, 0x6d, 0x6d, 0x75, 0xad, 0x5f, 0xeb, 0xab, 0x6e, 0xda, 0xfd, 0xff, 0x7e, 0xff, 0xfb, 0xff, 0x7f, 0xda, 0x24, 0x11, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x95, 0x24, 0x89, 0x2a, 0x94, 0x95, 0x55, 0x2a, 0xaa, 0xaa, 0xab, 0x68, 0x5a, 0xd6, 0xaa, 0xab, 0xab, 0xbb, 0xaf, 0x77, 0xea, 0xbd, 0x75, 0xb5, 0xb6, 0xaf, 0x7b, 0xff, 0xd6, 0xff, 0xf7, 0xf6, 0xf8, 0x00, 0x8a, + 0xa9, 0x55, 0x55, 0x55, 0x4a, 0x49, 0x52, 0x54, 0x92, 0x4a, 0x52, 0xaa, 0xaa, 0xaa, 0xaa, 0xd5, 0x54, 0x0b, 0x5b, 0x6e, 0xdd, 0x7d, 0xae, 0xf5, 0xdd, 0x5d, 0xd7, 0xad, 0x5b, 0x6f, 0xf5, 0xde, 0xd5, 0x7d, 0xb5, 0xff, 0xff, 0xe9, 0x10, 0x20, + 0x64, 0xaa, 0x95, 0x55, 0x29, 0x55, 0x09, 0x02, 0x55, 0x52, 0xaa, 0x49, 0x55, 0x55, 0x55, 0x40, 0xaa, 0x15, 0xad, 0xb5, 0x6a, 0xa6, 0xdb, 0x5e, 0xb7, 0xb6, 0xba, 0xf6, 0xed, 0xba, 0xbf, 0x6b, 0xff, 0xdf, 0xff, 0xff, 0x7f, 0xfc, 0x42, 0x05, + 0xaa, 0xaa, 0x49, 0x2a, 0xab, 0xe8, 0xea, 0xab, 0x69, 0x29, 0x15, 0x55, 0x25, 0x5a, 0xaa, 0x80, 0x2a, 0x0a, 0xd5, 0x56, 0xb7, 0xdb, 0x5d, 0xeb, 0x6a, 0xdb, 0xd6, 0xab, 0x5a, 0xdf, 0xeb, 0xff, 0x5d, 0xf5, 0xae, 0xff, 0xff, 0xe8, 0x00, 0x40, + 0x55, 0x55, 0x55, 0x54, 0xad, 0x5b, 0x7e, 0xcd, 0xd5, 0x44, 0xa2, 0xaa, 0xaa, 0xab, 0x55, 0x40, 0x2c, 0x46, 0xbb, 0x6b, 0x5a, 0xbd, 0xd6, 0xb5, 0xbd, 0x6d, 0x6b, 0x75, 0x6f, 0x6a, 0xbe, 0xdb, 0xf7, 0x5f, 0xff, 0xff, 0xff, 0x7a, 0x08, 0x15, + 0xaa, 0xaa, 0xaa, 0xaa, 0x57, 0xb5, 0xdb, 0x56, 0xb4, 0xaa, 0x95, 0x24, 0xa9, 0x55, 0x55, 0x02, 0x15, 0x05, 0x55, 0xb5, 0x6d, 0xd6, 0xb5, 0x5e, 0xd7, 0xb6, 0xbd, 0xae, 0xaa, 0xdd, 0xf7, 0xfe, 0xdf, 0xfd, 0xfe, 0xfb, 0xef, 0xf8, 0x80, 0x80, + 0x55, 0x55, 0x55, 0x52, 0x95, 0xe5, 0xfe, 0xcb, 0x6a, 0x44, 0x52, 0xaa, 0x95, 0x55, 0x56, 0xc2, 0x16, 0x83, 0xdd, 0x5e, 0xb6, 0xaa, 0xd6, 0xeb, 0x6a, 0xdb, 0xaa, 0xd5, 0xb7, 0x77, 0x7f, 0x6f, 0xfb, 0x6f, 0xbf, 0xff, 0xff, 0xe8, 0x22, 0x04, + 0xaa, 0xaa, 0xdb, 0x54, 0xa8, 0x57, 0xb7, 0x55, 0xa9, 0x2a, 0x94, 0xaa, 0x55, 0x55, 0x54, 0x54, 0x15, 0x0a, 0x6b, 0xab, 0x55, 0x55, 0x5b, 0x5d, 0xbb, 0x6d, 0x6d, 0x6d, 0x5a, 0xdd, 0xdb, 0xfd, 0xbf, 0xfd, 0xff, 0xff, 0xff, 0xfa, 0x08, 0x11, + 0x6d, 0xb6, 0xad, 0xa5, 0x56, 0x8a, 0xad, 0x54, 0xa5, 0x51, 0x4a, 0x92, 0xaa, 0xaa, 0x80, 0x2a, 0x2a, 0x81, 0xad, 0x75, 0xaa, 0xb6, 0xad, 0xaa, 0xd5, 0xaa, 0xb7, 0xb6, 0xef, 0x77, 0xff, 0xbf, 0xed, 0xaf, 0xee, 0xff, 0xde, 0xf0, 0x80, 0x00, + 0xaa, 0xda, 0xd5, 0x52, 0x91, 0x54, 0x42, 0x92, 0x4a, 0x8a, 0x24, 0xaa, 0xa4, 0x00, 0x00, 0x28, 0x15, 0x41, 0x75, 0x95, 0x6d, 0xaa, 0xd5, 0x6e, 0xae, 0xb7, 0x59, 0x5b, 0x5a, 0xde, 0xb6, 0xf7, 0x7f, 0xff, 0xbf, 0xff, 0x7f, 0xd2, 0x22, 0x44, + 0xb6, 0xab, 0x6d, 0x09, 0x4a, 0x4a, 0xaa, 0x42, 0xa9, 0x55, 0x52, 0x49, 0x10, 0x00, 0x11, 0x14, 0x0b, 0x40, 0x95, 0x6a, 0xaa, 0xab, 0x5a, 0xb5, 0xb5, 0xaa, 0xee, 0xd5, 0xed, 0xf7, 0xff, 0xff, 0xf6, 0xf6, 0xff, 0xf7, 0xff, 0xe0, 0x88, 0x00, + 0xab, 0x6d, 0x56, 0xa4, 0x24, 0xa1, 0x29, 0x29, 0x14, 0xa1, 0x2a, 0xa0, 0x00, 0x22, 0x00, 0x18, 0x25, 0x40, 0xda, 0xad, 0x6a, 0xac, 0xab, 0x56, 0xda, 0xdd, 0x55, 0x6e, 0xbb, 0x7d, 0xdf, 0xfd, 0xdf, 0xdf, 0xf5, 0xff, 0xff, 0xca, 0x00, 0x24, + 0xba, 0xb6, 0xf8, 0x95, 0x52, 0x14, 0x84, 0x94, 0xa2, 0x14, 0x92, 0x00, 0x00, 0x80, 0x00, 0x50, 0x05, 0x40, 0x55, 0x55, 0xaa, 0xb5, 0x55, 0xb5, 0x6d, 0x6b, 0xb7, 0xb7, 0xdf, 0xdf, 0xfd, 0xdf, 0xff, 0xff, 0xdf, 0xff, 0xff, 0x20, 0x49, 0x00, + 0xd7, 0xdb, 0x55, 0x52, 0x09, 0x42, 0x22, 0x42, 0x15, 0x52, 0xa9, 0x00, 0x00, 0x01, 0x57, 0x51, 0x55, 0x62, 0x2d, 0xaa, 0xb5, 0x55, 0xb6, 0xab, 0xab, 0xad, 0x6d, 0x6d, 0x75, 0xf6, 0xf7, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0x95, 0x00, 0x09, + 0x6d, 0x6d, 0x69, 0x29, 0x50, 0x10, 0x90, 0x29, 0x49, 0x2a, 0x4a, 0x22, 0x20, 0x2a, 0xa9, 0x55, 0x55, 0x50, 0x35, 0x55, 0x56, 0xaa, 0xaa, 0xdd, 0x75, 0x76, 0xb6, 0xde, 0xdf, 0x7f, 0xdf, 0xf6, 0xdf, 0xbf, 0xff, 0xff, 0xad, 0x40, 0x24, 0x80, + 0xb6, 0xb5, 0xaa, 0x84, 0x8a, 0x84, 0x05, 0x04, 0x54, 0x92, 0xa5, 0x00, 0x0a, 0xaa, 0xad, 0x6a, 0xaa, 0xa0, 0x15, 0x5a, 0xaa, 0xaa, 0xaa, 0xaa, 0xae, 0xab, 0xdb, 0xb7, 0xfb, 0xdb, 0xff, 0x7f, 0xfa, 0xff, 0xef, 0xf5, 0x6a, 0x95, 0x00, 0x22, + 0xdb, 0xda, 0xa4, 0x52, 0x20, 0x00, 0x40, 0xa2, 0x82, 0x49, 0x29, 0x12, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x98, 0x4a, 0xaa, 0xab, 0x55, 0x55, 0x56, 0xdb, 0xbd, 0x6e, 0xfa, 0xdf, 0xff, 0x7d, 0xfd, 0xab, 0x5f, 0xff, 0x56, 0xab, 0x52, 0x54, 0x80, + 0x6d, 0x6d, 0xd2, 0x88, 0x80, 0x11, 0x14, 0x10, 0x55, 0x2a, 0xa5, 0x4a, 0xaa, 0xaa, 0xd5, 0x55, 0x55, 0x48, 0x0b, 0x55, 0x55, 0x5a, 0xdb, 0xbb, 0x6d, 0x6b, 0xbb, 0xaf, 0xf6, 0xef, 0xf7, 0xd6, 0xad, 0x6f, 0x55, 0x5a, 0xdd, 0x48, 0x80, 0x08, + 0xb6, 0xaa, 0xa9, 0x22, 0x00, 0x00, 0x01, 0x4a, 0x92, 0xa4, 0x95, 0x55, 0x49, 0x55, 0x55, 0xb6, 0xd5, 0x54, 0x25, 0x55, 0xaa, 0xab, 0x55, 0x55, 0xb6, 0xdd, 0xee, 0xfd, 0x7f, 0xbf, 0xdf, 0x6b, 0x75, 0xb5, 0xb6, 0xeb, 0x6b, 0xe5, 0x24, 0x82, + 0xdb, 0xb7, 0x4a, 0x40, 0x00, 0x02, 0x48, 0x21, 0x48, 0x92, 0x54, 0xa9, 0x2a, 0xaa, 0xaa, 0xaa, 0xaa, 0x52, 0x02, 0xad, 0x55, 0xad, 0x6d, 0xb6, 0xdb, 0xb7, 0x7f, 0xef, 0xdd, 0xfd, 0xfa, 0xbd, 0xad, 0x5a, 0xdb, 0x5d, 0xad, 0x58, 0x80, 0x20, + 0x6d, 0x5a, 0xa4, 0x80, 0x00, 0x08, 0x05, 0x14, 0x25, 0x4a, 0xaa, 0x95, 0x55, 0x55, 0x55, 0x55, 0x52, 0x95, 0x01, 0x6a, 0xad, 0x6a, 0xb6, 0xdb, 0x6e, 0xfd, 0xd5, 0x37, 0x7f, 0xff, 0x6d, 0xd5, 0x56, 0xef, 0x6d, 0xb6, 0xda, 0xea, 0x54, 0x84, + 0xb6, 0xed, 0x92, 0x00, 0x00, 0x41, 0x50, 0xa2, 0x94, 0xa9, 0x49, 0x54, 0xaa, 0xaa, 0xb6, 0xaa, 0xaa, 0x55, 0x00, 0xaa, 0xd5, 0xad, 0xdb, 0x6d, 0xbb, 0xae, 0xb5, 0xdd, 0xf7, 0x6f, 0xf6, 0xb7, 0xfb, 0x55, 0xb6, 0xdb, 0x6f, 0x5b, 0x10, 0x10, + 0xdb, 0x56, 0xa8, 0x00, 0x04, 0x14, 0x0a, 0x14, 0xa5, 0x25, 0x2a, 0xaa, 0xa5, 0x55, 0x55, 0x5a, 0x92, 0xa4, 0x84, 0xb6, 0xb6, 0xb6, 0xad, 0xb7, 0x6e, 0xea, 0xda, 0xab, 0xff, 0xfe, 0xdb, 0xda, 0xad, 0xfa, 0xdb, 0x6d, 0xba, 0xed, 0xc9, 0x00, + 0x6d, 0xbb, 0x44, 0xaa, 0xa2, 0x82, 0xa1, 0x4a, 0x52, 0x95, 0x55, 0x55, 0x55, 0x55, 0x5a, 0xd5, 0xe8, 0x15, 0x40, 0x5a, 0xd5, 0x6b, 0x76, 0xdd, 0xf5, 0x2b, 0x56, 0xd5, 0xbb, 0xfb, 0xed, 0x6f, 0x6e, 0xaf, 0x6d, 0xdb, 0x6f, 0x56, 0x52, 0x4a, + 0xb6, 0xd5, 0xa9, 0x04, 0x10, 0x50, 0x14, 0xa1, 0x2a, 0x55, 0x54, 0x92, 0xaa, 0xaa, 0xab, 0x57, 0xbf, 0xc5, 0x40, 0x6b, 0x5b, 0xbd, 0xab, 0x76, 0x96, 0xda, 0xab, 0x5b, 0xff, 0xf5, 0x77, 0xb5, 0xb5, 0xf5, 0xdf, 0x76, 0xf5, 0xfb, 0xa8, 0x00, + 0xd5, 0x6e, 0x94, 0xb2, 0xaa, 0x95, 0xa5, 0x2d, 0x49, 0x52, 0x4a, 0xaa, 0xaa, 0xaa, 0xd5, 0x5f, 0xff, 0xf0, 0xa2, 0x2d, 0xad, 0x56, 0xfd, 0xda, 0xda, 0xaa, 0xb5, 0x55, 0x7f, 0xdf, 0xad, 0x5e, 0xef, 0x5f, 0x75, 0xbb, 0xbe, 0xaa, 0xd5, 0x52, + 0x5b, 0xb5, 0xaa, 0x95, 0x4a, 0x54, 0x52, 0x92, 0xa5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x5a, 0xfe, 0xff, 0xfe, 0x40, 0x35, 0x75, 0xdb, 0x4b, 0x65, 0x55, 0x55, 0x55, 0x55, 0x5f, 0xf5, 0x77, 0xf7, 0x7b, 0xb5, 0xbe, 0xde, 0xd5, 0xd6, 0xb5, 0x08, + 0xed, 0x5e, 0xd5, 0x54, 0xa9, 0x53, 0x4a, 0x54, 0x95, 0x55, 0x55, 0x55, 0x55, 0x55, 0x6b, 0xb7, 0xfe, 0xbb, 0x31, 0x16, 0xae, 0xb5, 0xbd, 0x9a, 0xaa, 0xaa, 0xaa, 0xaa, 0xfd, 0xdf, 0xbd, 0x5b, 0xad, 0x6e, 0xd5, 0xeb, 0xfe, 0xbb, 0x6c, 0xa2, + 0x56, 0xeb, 0x6a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xad, 0xff, 0x6f, 0x4a, 0xc4, 0x3b, 0xb5, 0xae, 0xd6, 0xc5, 0x55, 0x55, 0x55, 0x55, 0x2f, 0xb5, 0xd7, 0x6d, 0xf7, 0xb7, 0x7e, 0xbd, 0x57, 0x55, 0xb6, 0x94, + 0xfb, 0x55, 0xb6, 0xd5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, 0xd7, 0xb7, 0xfa, 0xb6, 0xa8, 0x95, 0x5a, 0xf5, 0x7b, 0xf5, 0x55, 0x6a, 0xaa, 0xaa, 0xd7, 0xde, 0xfa, 0xdb, 0x5a, 0xda, 0xd7, 0xd7, 0xfb, 0xee, 0xda, 0xa2, + 0x4d, 0xbd, 0x5d, 0xbb, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0xaa, 0xaa, 0xab, 0x5e, 0xfd, 0xbe, 0x55, 0x50, 0x2d, 0xef, 0x5b, 0xde, 0xda, 0x55, 0x55, 0x55, 0x55, 0x5d, 0x77, 0x5f, 0x76, 0xef, 0x7f, 0x7a, 0xfa, 0xad, 0x5b, 0x6b, 0x54, + 0xb6, 0xd6, 0xeb, 0xed, 0xb6, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xda, 0xb7, 0xdf, 0xf6, 0xaa, 0xaa, 0x96, 0xb5, 0xef, 0x77, 0xff, 0x2a, 0xaa, 0xaa, 0xaa, 0xab, 0xdb, 0xeb, 0xdf, 0x5a, 0xd5, 0xdf, 0x5f, 0xfe, 0xed, 0xbd, 0xaa, + 0xdb, 0x6b, 0x5d, 0x7e, 0xdb, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, 0xa2, 0xbd, 0xb6, 0xfd, 0x56, 0xd0, 0x5b, 0x5e, 0xbd, 0xff, 0xfd, 0xca, 0xaa, 0xaa, 0xaa, 0xd6, 0xfd, 0x7d, 0x75, 0xf7, 0xff, 0x75, 0xea, 0xab, 0x56, 0xd6, 0xd5, + 0x6d, 0xbd, 0xab, 0x57, 0xf5, 0xed, 0xaa, 0xaa, 0xaa, 0xbe, 0xdb, 0x55, 0xba, 0xc2, 0xaf, 0x7f, 0xb6, 0xab, 0x2a, 0xae, 0xf7, 0xff, 0xee, 0xb7, 0xe5, 0x4a, 0x94, 0x95, 0x5b, 0x57, 0xaf, 0xdf, 0x5d, 0x55, 0xde, 0xbf, 0xfd, 0xfb, 0x7b, 0xaa, + 0xb6, 0xd6, 0xf5, 0xed, 0x7f, 0x5a, 0xdb, 0x6d, 0x76, 0xd7, 0xf7, 0xfe, 0xd5, 0x7d, 0xbb, 0xd5, 0xfc, 0x55, 0x5a, 0xbb, 0xff, 0xef, 0xbf, 0xfe, 0xfa, 0x29, 0x52, 0xaa, 0xaa, 0xfd, 0xf5, 0x75, 0xf7, 0xff, 0x77, 0xeb, 0x56, 0xad, 0xae, 0xea, + 0xda, 0xb5, 0xae, 0xb7, 0xaf, 0xff, 0x6d, 0xb5, 0xab, 0x7d, 0xbb, 0xbb, 0x5b, 0xaa, 0xdd, 0x7f, 0x6f, 0x56, 0xaa, 0xbf, 0xdd, 0xbd, 0xfb, 0xdb, 0xbd, 0x55, 0x55, 0x55, 0x5b, 0x6f, 0x5f, 0xdf, 0x7d, 0xab, 0xda, 0xbe, 0xf5, 0xd7, 0x77, 0x55, + 0x6b, 0xde, 0xdb, 0xba, 0xf5, 0x6f, 0xf7, 0x6e, 0xdd, 0xb7, 0xd7, 0xee, 0xed, 0x6f, 0xab, 0xdb, 0xf5, 0x29, 0x5f, 0x7d, 0xff, 0xff, 0xee, 0xff, 0xf7, 0x8a, 0xaa, 0xaa, 0xaa, 0xfb, 0xf5, 0x77, 0xaf, 0x7e, 0xff, 0xeb, 0xbe, 0xbd, 0xdb, 0xed, + 0xb6, 0xab, 0x6d, 0x6d, 0x5b, 0xba, 0xdf, 0xdb, 0x6b, 0x7e, 0xfe, 0xbd, 0xb7, 0xba, 0xf5, 0x6d, 0x5a, 0xa5, 0x75, 0xef, 0xff, 0xee, 0xbf, 0xde, 0xff, 0xf2, 0x95, 0x55, 0x6b, 0x1d, 0x5f, 0xdd, 0xfb, 0xdb, 0x55, 0x7e, 0xd5, 0xeb, 0x7d, 0x55, + 0xdb, 0x75, 0xb7, 0xb7, 0xad, 0xd7, 0x7d, 0xff, 0xff, 0xef, 0xaf, 0xf6, 0xed, 0xef, 0xbf, 0x55, 0x55, 0x55, 0xff, 0xfd, 0xfe, 0xfb, 0xfd, 0xfb, 0xde, 0xfa, 0x54, 0xaa, 0x94, 0xaf, 0xf6, 0xf7, 0x5d, 0x77, 0xff, 0xd7, 0x7e, 0xbe, 0xd7, 0xfa, + 0x6d, 0xae, 0xda, 0xda, 0xf6, 0xbb, 0xab, 0x7d, 0xdd, 0xfd, 0xfd, 0xdd, 0xff, 0x7f, 0xf7, 0xf6, 0xff, 0xff, 0xff, 0x6a, 0x5b, 0xbf, 0xf7, 0xef, 0xfb, 0xdd, 0x55, 0x55, 0x22, 0xaa, 0xdf, 0xbd, 0xf7, 0xdd, 0x55, 0x7d, 0xd7, 0xd7, 0xfa, 0xaf, + 0xb6, 0xdb, 0x6f, 0x6f, 0x5d, 0xed, 0x7e, 0xd7, 0x7f, 0xbf, 0xaf, 0xff, 0xbf, 0xfe, 0xff, 0xff, 0xed, 0xb7, 0x7b, 0xd5, 0x7f, 0xff, 0x7f, 0x7f, 0xef, 0x77, 0x92, 0x88, 0x55, 0x7f, 0xf5, 0xef, 0x5d, 0xf7, 0xff, 0xd7, 0x7a, 0xfa, 0xaf, 0xf9, + 0xdb, 0x6d, 0xb5, 0xb5, 0xeb, 0x5f, 0xd7, 0xbd, 0xeb, 0xed, 0xfe, 0xf7, 0xfd, 0xfb, 0xfd, 0xbf, 0xbf, 0xed, 0xef, 0x55, 0xbf, 0xed, 0xff, 0xfd, 0x7d, 0xdd, 0xea, 0xa2, 0xaf, 0xd6, 0xbf, 0x75, 0xf7, 0x5e, 0xdb, 0x7d, 0xdf, 0x5f, 0xfa, 0xb6, + 0x6d, 0xb6, 0xde, 0xde, 0xbd, 0xea, 0xba, 0xef, 0x7e, 0xbb, 0xb7, 0xbd, 0xef, 0xdf, 0xb7, 0xf5, 0xff, 0xf7, 0xff, 0x6f, 0xf6, 0xff, 0xf7, 0xdf, 0xd7, 0x77, 0x74, 0x0a, 0xda, 0xbd, 0xed, 0xdf, 0x5d, 0xfb, 0xee, 0xef, 0x6b, 0xea, 0xaf, 0xef, + 0xb6, 0xdb, 0x6b, 0x6b, 0x56, 0xbd, 0xdf, 0xbb, 0xab, 0xee, 0xfa, 0xef, 0x7f, 0xea, 0xff, 0xfe, 0xaa, 0xdb, 0xbd, 0xff, 0xff, 0xff, 0xfe, 0xf5, 0x7d, 0xdd, 0xbe, 0x2b, 0x6d, 0xef, 0xbf, 0x77, 0xf7, 0xae, 0xbb, 0xbb, 0xbd, 0x7f, 0xfa, 0xba, + 0xdb, 0x6d, 0xba, 0xdd, 0xed, 0xd6, 0xea, 0xed, 0xfe, 0xbb, 0xaf, 0xbb, 0xbf, 0x7f, 0xdf, 0xd5, 0xdf, 0xad, 0xff, 0xfd, 0xbf, 0xde, 0xdb, 0xbf, 0xd7, 0x6b, 0x6b, 0x8d, 0xbf, 0x7b, 0x75, 0xdd, 0x7e, 0xff, 0xef, 0xee, 0xef, 0xad, 0x6f, 0xee, + 0xb6, 0xdb, 0x6f, 0x6a, 0xb6, 0xed, 0xbf, 0x76, 0xab, 0xee, 0xfa, 0xed, 0xd5, 0xdb, 0x7f, 0xff, 0x75, 0xdb, 0xf7, 0xb7, 0xf7, 0x7b, 0xfe, 0xeb, 0x7d, 0xfe, 0xf6, 0xeb, 0xeb, 0xdf, 0xdf, 0x7f, 0xd7, 0xda, 0xfd, 0x7b, 0xba, 0xff, 0xda, 0xbb, + 0xdd, 0xb6, 0xd5, 0xbf, 0x5b, 0x5b, 0x6b, 0xbb, 0xfd, 0x77, 0x5f, 0xbf, 0x7f, 0x7f, 0xd5, 0xb5, 0xdf, 0x6f, 0xff, 0xff, 0xff, 0xef, 0x57, 0xbf, 0xd7, 0x57, 0xbd, 0xbe, 0xbe, 0xf5, 0xf7, 0xeb, 0x7d, 0x7f, 0xaf, 0xde, 0xef, 0xb5, 0xff, 0xed, + 0xb6, 0xed, 0xbe, 0xd5, 0xed, 0xb6, 0xdd, 0x6d, 0x57, 0xba, 0xea, 0xeb, 0xed, 0xea, 0xff, 0xff, 0xf7, 0xb7, 0xde, 0xff, 0x76, 0xfd, 0xfd, 0xf5, 0x7d, 0xfa, 0xef, 0xeb, 0xf7, 0xbf, 0x7d, 0xbf, 0xef, 0xea, 0xfb, 0x77, 0xba, 0xef, 0x5b, 0x56, + 0xdb, 0xb7, 0x6b, 0x6d, 0x5b, 0x5b, 0x6b, 0xb7, 0xba, 0xdf, 0x7f, 0xbe, 0xbf, 0xbf, 0xb6, 0xde, 0xdf, 0xdf, 0x7f, 0xf7, 0xdf, 0xaf, 0xb7, 0x5f, 0xdf, 0x5f, 0xb5, 0x7f, 0x6d, 0xed, 0xd7, 0xf5, 0xbb, 0x7f, 0xaf, 0xdd, 0xef, 0xbd, 0xff, 0xfb, + 0x6d, 0x6d, 0xdd, 0xb6, 0xed, 0xed, 0xb6, 0xdd, 0xdf, 0xea, 0xd5, 0xf7, 0xea, 0xed, 0xdf, 0xb7, 0xfd, 0x7f, 0xff, 0xdd, 0xf5, 0xfa, 0xfd, 0xfb, 0x75, 0xf6, 0xff, 0xdb, 0xff, 0x7f, 0x7e, 0xbf, 0xff, 0xdb, 0xfa, 0xf7, 0x5a, 0xf7, 0x6a, 0xad, + 0xdf, 0xbb, 0x6a, 0xdb, 0x56, 0xaa, 0xdb, 0x76, 0xea, 0xbb, 0xbf, 0x5d, 0x7f, 0xbe, 0xf5, 0xfd, 0xef, 0xbb, 0xf5, 0x7f, 0x5f, 0x6f, 0xdf, 0xbf, 0xff, 0xbf, 0xb6, 0xfe, 0xb7, 0xdb, 0xef, 0xed, 0x55, 0xfe, 0xbf, 0xbd, 0xf7, 0xbd, 0xff, 0xf6, + 0xb5, 0x6d, 0xbf, 0x6a, 0xb5, 0x55, 0x56, 0xdb, 0x5f, 0xd6, 0xed, 0xf7, 0xd6, 0xf7, 0xbf, 0x6f, 0x7b, 0xff, 0x5f, 0xeb, 0xfd, 0xfd, 0xf5, 0xea, 0xad, 0xea, 0xff, 0xab, 0xfd, 0xfe, 0xfa, 0xff, 0xff, 0x57, 0xeb, 0xd7, 0x5d, 0xef, 0x55, 0x5d, + 0xdb, 0xb6, 0xd2, 0xaa, 0xdb, 0x6e, 0xed, 0xbd, 0xf5, 0x7b, 0xbb, 0x7d, 0xbf, 0xdd, 0xed, 0xfb, 0xde, 0xdb, 0xfb, 0x7e, 0xd7, 0xaf, 0x5f, 0x7f, 0xff, 0x7f, 0xd5, 0xff, 0x6f, 0x57, 0xbf, 0xb6, 0xed, 0xfd, 0x7e, 0xfd, 0xee, 0xbb, 0xff, 0xf7, + 0xbd, 0xdb, 0x6d, 0xb6, 0xaa, 0xaa, 0xb6, 0xeb, 0x5b, 0x56, 0xef, 0xd7, 0xf5, 0x77, 0x7f, 0x5e, 0xf7, 0xfe, 0xdf, 0xdb, 0xfe, 0xfb, 0xfb, 0xdb, 0x6b, 0xdb, 0x7f, 0x6d, 0xfb, 0xfe, 0xed, 0xff, 0xbf, 0xb7, 0xd7, 0x56, 0xb7, 0xee, 0xaa, 0xbd, + 0xd6, 0xed, 0xb6, 0xaa, 0xad, 0x55, 0xab, 0x5d, 0xed, 0xdf, 0x7a, 0xfd, 0x5f, 0xdd, 0xd5, 0xf7, 0xbd, 0x6b, 0xf5, 0x7f, 0x6f, 0xde, 0xde, 0xff, 0xfe, 0xff, 0xed, 0xff, 0xae, 0xdb, 0xff, 0x6b, 0xf6, 0xed, 0x7b, 0xff, 0xda, 0xbb, 0xff, 0xd6, + 0x7b, 0x5e, 0xda, 0xd5, 0xb5, 0xb6, 0xb5, 0xeb, 0x5b, 0x6b, 0xaf, 0xaf, 0xf6, 0xff, 0x7f, 0xbd, 0xef, 0xff, 0x5f, 0xed, 0xfa, 0xf7, 0xf7, 0xaa, 0xb7, 0xaa, 0xff, 0xb6, 0xff, 0xff, 0x6b, 0xfe, 0xdf, 0xbf, 0xdd, 0x55, 0x7f, 0xee, 0xaa, 0xbb, + 0xd6, 0xeb, 0x6b, 0x5a, 0xaa, 0xaa, 0xde, 0xb6, 0xed, 0xbd, 0xfa, 0xfa, 0xdf, 0xab, 0xda, 0xef, 0x7b, 0x5b, 0xfb, 0xbf, 0x5f, 0xbd, 0x5d, 0xff, 0xfd, 0xff, 0xad, 0xff, 0xdb, 0x6d, 0xff, 0x6f, 0xf5, 0xea, 0xef, 0xff, 0xaa, 0xbb, 0xfd, 0xd6, + 0xbb, 0x5d, 0xad, 0x55, 0x55, 0x5b, 0x52, 0xdb, 0x5b, 0x6b, 0x57, 0xaf, 0xba, 0xfe, 0xff, 0xfb, 0xdf, 0xfe, 0xde, 0xf5, 0xf6, 0xef, 0xff, 0x6d, 0xaf, 0x6d, 0xff, 0x5a, 0xff, 0xff, 0xb7, 0xfa, 0xbe, 0xbf, 0xba, 0xaa, 0xf6, 0xd6, 0xab, 0x7b, + 0xd5, 0xea, 0xb5, 0x6a, 0xaa, 0xd5, 0x5b, 0x6d, 0xed, 0xb6, 0xfa, 0xfa, 0xef, 0xb7, 0xab, 0x5e, 0xf6, 0xdb, 0xf7, 0xdf, 0xdf, 0xfb, 0xb5, 0xff, 0xfb, 0xff, 0x6b, 0xff, 0xda, 0xaa, 0xfd, 0x5f, 0xeb, 0xea, 0xef, 0xf7, 0x5b, 0x7b, 0xb6, 0xad, + 0x6e, 0xbf, 0x55, 0xad, 0xb5, 0x55, 0x55, 0xae, 0xb6, 0xdb, 0x57, 0x5f, 0xba, 0xed, 0xff, 0xf7, 0xbf, 0xff, 0x7d, 0xfb, 0x7b, 0x5e, 0xff, 0xb5, 0x6e, 0xb7, 0xfe, 0xdb, 0x7f, 0xff, 0xdf, 0xfb, 0xbe, 0xbf, 0xba, 0xad, 0xed, 0xad, 0x6d, 0xeb, + 0xb5, 0xa9, 0xda, 0xaa, 0xaa, 0xb6, 0xaa, 0xb5, 0x5a, 0xad, 0xbd, 0xea, 0xef, 0xbe, 0xb5, 0x7d, 0xea, 0xad, 0xd7, 0x6f, 0xef, 0xf7, 0xdb, 0xff, 0xff, 0xfd, 0xb7, 0xff, 0xed, 0xad, 0xf6, 0xee, 0xeb, 0xeb, 0xef, 0xf6, 0xb6, 0xf7, 0xb6, 0xbd, + 0xdb, 0x6e, 0xad, 0x55, 0x56, 0xd5, 0x55, 0x5b, 0xab, 0x6a, 0xd7, 0x7f, 0xbd, 0xeb, 0xff, 0xd7, 0x7f, 0xff, 0x7f, 0xfd, 0xbd, 0xbe, 0xfe, 0xad, 0xb5, 0xaf, 0xfe, 0xda, 0xff, 0xfb, 0x5f, 0xbf, 0xbe, 0xbd, 0x7a, 0xad, 0xdb, 0x5a, 0xdb, 0xd6, + 0x56, 0xdb, 0x6b, 0x6d, 0xaa, 0xaa, 0xaa, 0xd5, 0x6d, 0x5b, 0x7b, 0xaa, 0xef, 0x7e, 0xd6, 0xfd, 0xdb, 0x6d, 0xf6, 0xb7, 0xf7, 0xef, 0xb7, 0xff, 0xff, 0xfa, 0xab, 0xff, 0xaa, 0xdf, 0xfb, 0xf5, 0xeb, 0xd7, 0xaf, 0xdb, 0x6d, 0xef, 0x6d, 0x6b, + 0xbb, 0x6a, 0xb5, 0xb6, 0xb5, 0x5b, 0x55, 0x6d, 0xb5, 0xad, 0xad, 0xff, 0x7b, 0xab, 0xbb, 0xaf, 0x7f, 0xff, 0xbf, 0xfd, 0x7d, 0x7b, 0xfd, 0xb5, 0x56, 0xdf, 0xff, 0x6d, 0xff, 0xf6, 0xee, 0xdf, 0x7e, 0xfd, 0xfa, 0xbd, 0xb6, 0xb5, 0xb7, 0xbd, + 0xd5, 0xb7, 0x5a, 0xaa, 0xd6, 0xd5, 0x6b, 0x56, 0xaa, 0xb5, 0xf6, 0xaa, 0xd6, 0xfd, 0xd5, 0x7b, 0xea, 0xd6, 0xed, 0xdf, 0xdf, 0xde, 0xae, 0xff, 0xff, 0x76, 0xed, 0xff, 0xbb, 0x7f, 0xbf, 0xf7, 0xd5, 0xae, 0xaf, 0xd7, 0x6d, 0xda, 0xda, 0xd6, + 0x5d, 0x5a, 0xed, 0x55, 0x55, 0x5a, 0xad, 0x5a, 0xd5, 0x56, 0xaf, 0xb7, 0x7b, 0x44, 0x55, 0xae, 0xbf, 0xff, 0xff, 0x76, 0xf6, 0xf7, 0xf7, 0xab, 0x6b, 0xff, 0xbf, 0xb6, 0xef, 0xd5, 0xf6, 0xbd, 0x7e, 0xf7, 0xf5, 0x7a, 0xdb, 0x6f, 0x6e, 0xb5, + 0xab, 0xab, 0x55, 0xb6, 0xaa, 0xab, 0x55, 0x6b, 0x55, 0x55, 0xb5, 0x59, 0xad, 0x12, 0x92, 0xb7, 0xf6, 0xb5, 0x5b, 0xdf, 0xbb, 0x5d, 0x5a, 0xf6, 0xfe, 0xd6, 0xf6, 0xff, 0xfd, 0xff, 0x7f, 0xef, 0xd7, 0x5a, 0xbf, 0xaf, 0x76, 0xb5, 0xb5, 0xdb, + 0xda, 0xb5, 0x56, 0xaa, 0xb6, 0xd5, 0x55, 0xad, 0x5a, 0xad, 0x5b, 0xaa, 0xa2, 0x88, 0x4a, 0xaa, 0xbf, 0xff, 0xfe, 0xf5, 0xd5, 0xaa, 0xad, 0x5b, 0xab, 0xff, 0xdf, 0xdb, 0x6f, 0x6d, 0xdb, 0x7a, 0xfa, 0xef, 0xd5, 0x75, 0xdd, 0xda, 0xde, 0xad, + 0x6d, 0x55, 0x6a, 0xaa, 0xd5, 0x5a, 0xaa, 0xaa, 0xd5, 0x56, 0xed, 0x69, 0x14, 0x45, 0x22, 0x55, 0x6a, 0xaa, 0xab, 0xbe, 0x6e, 0xdb, 0x56, 0xd6, 0xfe, 0xaa, 0xfb, 0x7f, 0xfd, 0xff, 0xff, 0xdf, 0x57, 0xb5, 0x7b, 0xbb, 0x6b, 0x6f, 0x6b, 0xf6, + 0xb5, 0xad, 0xaa, 0x95, 0x56, 0xd5, 0x5b, 0x55, 0x55, 0xb5, 0xaa, 0xa4, 0xa9, 0x10, 0x94, 0x8a, 0xab, 0x75, 0x56, 0xd5, 0xaa, 0xad, 0x55, 0x6b, 0x57, 0xff, 0xaf, 0xed, 0xb7, 0xb6, 0xdb, 0x75, 0xfa, 0xde, 0xd6, 0xd6, 0xdd, 0xb5, 0xb5, 0x5b, + 0xad, 0x55, 0x55, 0x55, 0x5a, 0xaa, 0xd5, 0x6d, 0x55, 0x56, 0xb6, 0xaa, 0x44, 0x45, 0x22, 0x52, 0xa9, 0x4d, 0xbb, 0xba, 0x55, 0x6a, 0xab, 0x5d, 0xf5, 0x2a, 0xfd, 0xbf, 0xff, 0xff, 0xff, 0xfe, 0xaf, 0x75, 0xbb, 0x7b, 0x6e, 0xde, 0xde, 0xd6, + 0xb5, 0x6a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xab, 0x55, 0x41, 0x12, 0x10, 0x91, 0x09, 0x15, 0x56, 0xad, 0x6d, 0x56, 0xb5, 0x55, 0x6a, 0xaa, 0xdb, 0x57, 0x76, 0xda, 0xdb, 0x6d, 0xab, 0xf5, 0xae, 0xed, 0xae, 0xf5, 0xb5, 0x6b, 0x7b, + 0x56, 0xb7, 0x6a, 0x55, 0x55, 0x55, 0x55, 0x55, 0xb5, 0xba, 0xaa, 0xaa, 0x44, 0x8a, 0x4a, 0x54, 0xaa, 0x52, 0xb6, 0xb5, 0x55, 0x55, 0x55, 0x57, 0x5b, 0x6d, 0x6d, 0xdf, 0xff, 0xff, 0xff, 0xfe, 0xae, 0xf7, 0x5b, 0xf5, 0xae, 0xef, 0xbd, 0xad, + 0xdb, 0x59, 0x55, 0x55, 0x55, 0x55, 0x56, 0xaa, 0xaa, 0xab, 0x55, 0x48, 0x21, 0x21, 0x11, 0x25, 0x52, 0xad, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xed, 0x55, 0xb7, 0x7a, 0xad, 0xaa, 0xaa, 0xb7, 0xf7, 0x5b, 0xee, 0xaf, 0x77, 0x5a, 0xd6, 0xee, + 0x6d, 0xad, 0x55, 0x55, 0x54, 0xaa, 0xaa, 0xd5, 0x55, 0x6d, 0x54, 0x92, 0x94, 0x14, 0x4a, 0x92, 0x4a, 0x92, 0xaa, 0xaa, 0xd5, 0x55, 0x55, 0x55, 0x2a, 0xad, 0x5a, 0xdf, 0xff, 0xff, 0xff, 0xfd, 0x5a, 0xed, 0x5b, 0x75, 0xba, 0xed, 0x75, 0xb5, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x95, 0x55, 0x56, 0xab, 0x55, 0x52, 0x41, 0x21, 0x41, 0x20, 0x4a, 0xa9, 0x55, 0x55, 0x6b, 0x54, 0xaa, 0xaa, 0xab, 0xd5, 0xb6, 0xef, 0x76, 0xda, 0xdb, 0xb6, 0xd7, 0xef, 0x77, 0x75, 0xae, 0xd7, 0x77, 0xae, 0xdf, + 0xb6, 0xd5, 0x6a, 0xa9, 0x55, 0x55, 0x5a, 0xaa, 0xb5, 0x6d, 0x4a, 0x94, 0x88, 0x14, 0x95, 0x29, 0x25, 0x55, 0x5b, 0xaa, 0xaa, 0xa5, 0x55, 0x55, 0x5a, 0xab, 0x55, 0xdb, 0xf7, 0xfe, 0xff, 0xfd, 0x5b, 0xad, 0xae, 0xf7, 0x7b, 0xad, 0x77, 0x6a, + 0xab, 0x55, 0xab, 0x55, 0x4a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa8, 0x49, 0x25, 0x42, 0x42, 0x84, 0xaa, 0xaa, 0xaa, 0xad, 0x55, 0x55, 0x4a, 0xad, 0x55, 0x55, 0x5a, 0xbe, 0xbe, 0xab, 0xb5, 0x57, 0xed, 0x76, 0xfb, 0x5a, 0xdd, 0x77, 0xba, 0xdf, + 0xba, 0xaa, 0xad, 0x55, 0x54, 0xaa, 0xaa, 0xaa, 0xab, 0x55, 0x55, 0x22, 0x10, 0x29, 0x28, 0x52, 0x95, 0x55, 0xad, 0x75, 0x55, 0x55, 0x55, 0x55, 0x6a, 0xb5, 0xaf, 0xd7, 0xdb, 0xfe, 0xef, 0xfd, 0x77, 0xbb, 0xad, 0xef, 0x6b, 0xba, 0xd7, 0x75, + 0xd6, 0xda, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xb6, 0x92, 0x88, 0x85, 0x04, 0x85, 0x09, 0x55, 0x56, 0xb5, 0x95, 0x55, 0x55, 0x55, 0x56, 0xad, 0x56, 0xd5, 0x7a, 0xee, 0xab, 0xbb, 0x57, 0xba, 0xdd, 0x77, 0x75, 0xbd, 0xd7, 0x7b, 0xbb, + 0x5b, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x48, 0x42, 0x50, 0xa9, 0x20, 0xa4, 0x4a, 0xaa, 0xd6, 0xed, 0xb5, 0x55, 0x55, 0x6a, 0xd5, 0xaa, 0xba, 0xab, 0x7b, 0xfe, 0xee, 0xfd, 0x5f, 0x6b, 0xdb, 0xae, 0xeb, 0x7b, 0xad, 0xd6, + 0xaa, 0xad, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xd4, 0xa5, 0x10, 0x0a, 0x12, 0x14, 0x12, 0xa9, 0x55, 0x55, 0x2a, 0xd5, 0x6a, 0xaa, 0xaa, 0xaa, 0xb6, 0xd7, 0xad, 0xae, 0xab, 0xbb, 0xaf, 0xea, 0xfe, 0xb6, 0xf7, 0x5d, 0xad, 0x76, 0xbd, + 0xdb, 0x75, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x28, 0x8a, 0xa0, 0x88, 0xa2, 0x89, 0x55, 0x55, 0x55, 0xb6, 0xaa, 0xaa, 0x95, 0x55, 0x56, 0xd5, 0x5a, 0xdb, 0x75, 0xfd, 0xdd, 0xf5, 0x7f, 0xab, 0xdd, 0xad, 0xf6, 0xf7, 0xdf, 0xd7, + 0x6d, 0x55, 0x5a, 0xab, 0x55, 0x55, 0x55, 0x55, 0x5a, 0xaa, 0x92, 0x40, 0x0a, 0x44, 0x10, 0x55, 0x2a, 0xaa, 0xda, 0xab, 0x5b, 0x55, 0x52, 0xaa, 0xaa, 0xab, 0x6a, 0xad, 0xaf, 0x56, 0xee, 0xbf, 0xaa, 0xf6, 0xf7, 0x7b, 0x5b, 0xad, 0x6a, 0xfa, + 0xaa, 0xaa, 0xaa, 0xb5, 0x6a, 0xaa, 0xaa, 0xaa, 0xab, 0x55, 0x49, 0x2a, 0xa0, 0x29, 0x4a, 0x89, 0x55, 0x5b, 0x55, 0x5a, 0xaa, 0xaa, 0xaa, 0x49, 0x55, 0x55, 0x57, 0x76, 0xda, 0xfb, 0x77, 0xd5, 0x7f, 0x5d, 0xad, 0xdd, 0xee, 0xf7, 0xbf, 0x5f, + 0x55, 0xad, 0xaa, 0xd5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x68, 0xa4, 0x00, 0x0a, 0x84, 0x91, 0x55, 0x55, 0x6a, 0xad, 0xad, 0xb5, 0x55, 0x55, 0x55, 0x55, 0x5a, 0xba, 0xab, 0x6f, 0x57, 0xad, 0x7f, 0xd5, 0xee, 0xff, 0x6e, 0xbb, 0x5d, 0xea, 0xea, + 0xaa, 0xb5, 0x55, 0x55, 0x5b, 0x6b, 0x6b, 0x55, 0x55, 0x55, 0x12, 0xaa, 0xa0, 0x52, 0x4a, 0x25, 0x55, 0x56, 0xd6, 0xd5, 0x56, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xcb, 0x5a, 0xb5, 0xed, 0x77, 0xaa, 0xfe, 0xb7, 0xab, 0xb7, 0xdd, 0xee, 0xbf, 0x7f, + 0x56, 0xaa, 0xaa, 0xaa, 0xaa, 0xad, 0x55, 0x55, 0x55, 0x54, 0xa4, 0x00, 0x15, 0x29, 0x25, 0x54, 0xaa, 0xaa, 0xb5, 0x6d, 0xb5, 0x6a, 0xaa, 0xaa, 0xab, 0x55, 0x75, 0xad, 0x56, 0xb6, 0xda, 0xff, 0x55, 0xfa, 0xfd, 0xfa, 0xeb, 0x77, 0xd5, 0xaa, + 0xaa, 0xaa, 0xaa, 0xab, 0x6a, 0xaa, 0xad, 0x6a, 0xaa, 0xaa, 0x91, 0x55, 0x42, 0x94, 0x94, 0xaa, 0x95, 0x56, 0xdb, 0x56, 0xdb, 0x5b, 0x6d, 0x55, 0x55, 0x56, 0x9a, 0xd5, 0xb5, 0x5b, 0x6f, 0x55, 0xff, 0x5f, 0xae, 0xaf, 0x7f, 0xba, 0xbe, 0xff, + 0x5a, 0xaa, 0xad, 0x55, 0x55, 0x55, 0xb5, 0xaa, 0xdb, 0x52, 0x48, 0x00, 0x28, 0x42, 0x52, 0xa5, 0x55, 0x55, 0x55, 0xb5, 0x55, 0xad, 0x55, 0xb5, 0x6d, 0x6a, 0xeb, 0x56, 0xad, 0xad, 0xb5, 0xfe, 0xaa, 0xea, 0xf7, 0xfb, 0xaa, 0xdf, 0xeb, 0xab, + 0xaa, 0xd5, 0x55, 0x6d, 0x5b, 0x6d, 0x56, 0xab, 0x55, 0x55, 0x25, 0x55, 0x45, 0x29, 0x2a, 0x55, 0x55, 0x55, 0x6d, 0x56, 0xda, 0xd5, 0xb6, 0xdb, 0x55, 0xab, 0x2d, 0x5a, 0xd6, 0xf6, 0xda, 0xab, 0xff, 0xbf, 0x5a, 0xad, 0xff, 0xea, 0xbe, 0xfd, + 0x55, 0x55, 0x6a, 0xaa, 0xd5, 0xb5, 0xaa, 0xad, 0x55, 0x52, 0x90, 0x02, 0x29, 0x55, 0x45, 0x55, 0x55, 0x56, 0xaa, 0xdb, 0x56, 0xb6, 0xda, 0xad, 0xb6, 0xaa, 0xd5, 0x6b, 0x75, 0x5b, 0x6f, 0xdd, 0x55, 0x6b, 0xff, 0xfe, 0xaa, 0xbf, 0xd7, 0xaf, + 0xad, 0xaa, 0xab, 0x57, 0x6d, 0x56, 0xba, 0xb5, 0x55, 0x48, 0x4a, 0xa9, 0x44, 0x88, 0xaa, 0xaa, 0xaa, 0xaa, 0xdb, 0x6a, 0xb5, 0x5a, 0xaa, 0xaa, 0xaa, 0xb5, 0x6a, 0xad, 0x56, 0xad, 0xb5, 0x77, 0xfb, 0xfd, 0x55, 0x57, 0xff, 0xd5, 0x7a, 0xfa, +}; + + #endif \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/board.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/board.h index 0720392d..fc9e9764 100644 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/board.h +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/board.h @@ -4,7 +4,7 @@ #include #include "proto.h" #include "main.h" -#include "gpio.h" +#include "mz100/gpio.h" #define eepromByte spiByte #define eepromPrvSelect() do { /*digitalWrite(FLASH_CS,LOW);*/ } while(0) diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/comms.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/comms.c index fd315b03..69af48ae 100755 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/comms.c +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/comms.c @@ -18,12 +18,12 @@ int8_t commsGetLastPacketRSSI(void) { return mLastRSSI; } -static inline void __attribute__((always_inline)) macCopy(uint8_t *restrict dst, const uint8_t *restrict src) { +static inline void __attribute__((always_inline)) macCopy(uint8_t* dst, const uint8_t* src) { ((uint32_t *)dst)[0] = ((const uint32_t *)src)[0]; ((uint32_t *)dst)[1] = ((const uint32_t *)src)[1]; } -static inline bool __attribute__((always_inline)) macIsEq(const uint8_t *restrict dst, const uint8_t *restrict src) { +static inline bool __attribute__((always_inline)) macIsEq(const uint8_t* dst, const uint8_t* src) { return ((uint32_t *)dst)[0] == ((const uint32_t *)src)[0] && ((uint32_t *)dst)[1] == ((const uint32_t *)src)[1]; } diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/compression.cpp b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/compression.cpp new file mode 100644 index 00000000..596d602a --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/compression.cpp @@ -0,0 +1,37 @@ +#include "drawing.h" +#include +#include +#include +#include +#include + +#include "epd_interface.h" + +#include "mz100/printf.h" + +#include "mz100/eeprom.h" + +#include "oepl_fs.h" + +#include "compression.h" + +#include "../../oepl-definitions.h" +#include "../../oepl-proto.h" + +#include "settings.h" + +extern "C" { +extern void dump(const uint8_t *a, const uint16_t l); +#include "mz100/util.h" +#include "mz100/mz100_flash.h" +#include "../common/uzlib/src/uzlib.h" +} + +#define MAX_WINDOW_SIZE 8192 +#define ZLIB_CACHE_SIZE 512 + +uint32_t __attribute__((always_inline)) inline HAL_flashRead(uint32_t address, uint8_t *buffer, uint32_t num){ + return FLASH_Read(FLASH_FAST_READ_QUAD_OUT, address, buffer, num); +} + +#include "../common/compression.cpp" \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/compression.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/compression.h new file mode 100644 index 00000000..d42675f1 --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/compression.h @@ -0,0 +1,9 @@ +#pragma once + +#define ENABLE_OEPLFS + +#ifdef ENABLE_OEPLFS +#include "oepl_fs.h" +#endif + +#include "../common/compression.h" \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/drawing.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/drawing.c deleted file mode 100755 index c8e47e13..00000000 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/drawing.c +++ /dev/null @@ -1,68 +0,0 @@ -#include "drawing.h" - -#include - -#include "board.h" -#include "eeprom.h" -#include "epd.h" -#include "printf.h" -#include "proto.h" -#include "screen.h" -#include "timer.h" -#include "util.h" - -struct BitmapClutEntry { - uint8_t b, g, r, x; -}; - -uint8_t mPassNo = 0; - -static uint8_t mClutMap[256]; -static uint8_t mClutMapRed[256]; - -void drawImageAtAddress(uint32_t addr, uint8_t lut) { - struct EepromImageHeader *eih = (struct EepromImageHeader *)mClutMap; - eepromRead(addr, mClutMap, sizeof(struct EepromImageHeader)); - switch (eih->dataType) { - case DATATYPE_IMG_RAW_1BPP: - printf("Doing raw 1bpp\n"); - - init_epd(); - display_send_start(1); - for (uint32_t c = 0; c < (SCREEN_HEIGHT * (SCREEN_WIDTH / 8)); c++) { - if (c % 256 == 0) { - eepromRead(addr + sizeof(struct EepromImageHeader) + c, mClutMap, 256); - } - - uint8_t curr_byte = mClutMap[c % 256]; // this one holds 8 pixel, we will translate them to 4 sendings - - interleaveColor(curr_byte, 0x00); - } - display_send_stop(); - epd_refresh_and_sleep(lut); - break; - case DATATYPE_IMG_RAW_2BPP: - printf("Doing raw 2bpp\n"); - init_epd(); - display_send_start(1); - for (uint32_t c = 0; c < (SCREEN_HEIGHT * (SCREEN_WIDTH / 8)); c++) { - if (c % 256 == 0) { - eepromRead(addr + sizeof(struct EepromImageHeader) + c, mClutMap, 256); - eepromRead(addr + sizeof(struct EepromImageHeader) + (SCREEN_HEIGHT * (SCREEN_WIDTH / 8)) + c, mClutMapRed, 256); - } - - uint8_t curr_byte = mClutMap[c % 256]; // this one holds 8 pixel, we will translate them to 4 sendings - uint8_t curr_byteRed = mClutMapRed[c % 256]; // this one holds 8 pixel, we will translate them to 4 sendings - - interleaveColor(curr_byte, curr_byteRed); - } - display_send_stop(); - epd_refresh_and_sleep(lut); - break; - default: // prevent drawing from an unknown file image type - printf("Image with type 0x%02X was requested, but we don't know what to do with that currently...\n", eih->dataType); - return; - } - // addOverlay(); - // drawWithSleep(); -} \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/drawing.cpp b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/drawing.cpp new file mode 100644 index 00000000..0655f393 --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/drawing.cpp @@ -0,0 +1,824 @@ +// #pragma pack(1) + +#include "drawing.h" +#include +#include +#include +#include +#include + +#include "epd_interface.h" + +#include "mz100/printf.h" + +#include "mz100/eeprom.h" + +#include "compression.h" +#include "oepl_fs.h" + +#include "../../oepl-definitions.h" +#include "../../oepl-proto.h" + +extern "C" { +extern void dump(const uint8_t *a, const uint16_t l); +#include "mz100/util.h" +#include "mz100/mz100_flash.h" +} + +#include "userinterface.h" + +#include "epd_interface.h" +#define EEPROM_XFER_BLOCKSIZE 512 // shouldn't be any less than 256 bytes probably +#define DRAWITEM_LIST_SIZE 24 + +struct __attribute__((packed)) imageHeader { + uint16_t width; + uint16_t height; + uint8_t bpp : 4; + uint8_t reserved : 4; +}; + +static drawItem *drawItems[DRAWITEM_LIST_SIZE] = {0}; + +void addBufferedImage(uint16_t x, uint16_t y, bool color, enum rotation ro, const uint8_t *image, bool mask) { + drawItem *di = new drawItem; + + di->setRotation(ro); + if (di->direction ^ epd->drawDirectionRight) { + int16_t temp = x; + x = y; + y = temp; + } + + uint16_t originalWidthBytes = (((uint16_t *)image)[0]) / 8; + uint16_t size = 0; + uint16_t width = ((uint16_t *)image)[0]; + + // find out if the original data was aligned in one byte; if not, add a byte + if (((uint16_t *)image)[0] % 8) originalWidthBytes++; + + // if we're drawing in X direction, we shift the content here. Add extra space for shifting! + if (!di->direction) { + width += x % 8; + } + + // check if the size is aligned in bytes; if not, add an extra for good measure; + if (width % 8) { + width /= 8; + width++; + } else { + width /= 8; + } + + size = width * ((uint16_t *)image)[1]; + size += 2; // not needed + + uint8_t *im = (uint8_t *)calloc(size, 1); + + for (uint16_t copyY = 0; copyY < ((uint16_t *)image)[1]; copyY++) { + memcpy(im + (copyY * width), image + 4 + (copyY * originalWidthBytes), originalWidthBytes); + + // if we draw in X direction, we need to shift bytes in the array + if (!di->direction && (x % 8)) { + drawItem::shiftBytesRight(im + (copyY * width), x % 8, width); + } + } + + di->addItem(im, width * 8, ((uint16_t *)image)[1]); + + di->xpos = x; + di->ypos = y; + di->color = color; + if (mask) + di->type = drawItem::drawType::DRAW_MASK; + else + di->type = drawItem::drawType::DRAW_BUFFERED_1BPP; + + di->addToList(); +} + +void addFlashImage(uint16_t x, uint16_t y, bool color, enum rotation ro, const uint8_t *image) { + drawItem *di = new drawItem; + + di->setRotation(ro); + + if (di->direction ^ epd->drawDirectionRight) { + int16_t temp = x; + x = y; + y = temp; + } + + di->addItem((uint8_t *)(image + 4), ((uint16_t *)image)[0], ((uint16_t *)image)[1]); + + di->xpos = x; + di->ypos = y; + di->color = color; + di->cleanUp = false; + di->type = drawItem::drawType::DRAW_BUFFERED_1BPP; + di->addToList(); +} + +void addFSImage(uint16_t x, uint16_t y, uint8_t color, enum rotation ro, char *name) { + drawItem *di = new drawItem; + + di->setRotation(ro); + + if (di->direction ^ epd->drawDirectionRight) { + int16_t temp = x; + x = y; + y = temp; + } + + OEPLFile *file = fs->getFile(name); + if (!file) { + delete di; + return; + } + uint16_t width, height; + + file->getBlock(0, (uint8_t *)&width, 2); + file->getBlock(2, (uint8_t *)&height, 2); + + di->addItem((uint8_t *)file, width, height); + di->xpos = x; + di->ypos = y; + di->color = color; + di->cleanUp = true; + if (color == 2) { + di->type = drawItem::drawType::DRAW_OEPLFS_2BPP; + } else { + di->type = drawItem::drawType::DRAW_OEPLFS_1BPP; + } + di->addToList(); +} + +void addCompressedFSImage(uint16_t x, uint16_t y, enum rotation ro, char *name) { + drawItem *di = new drawItem; + di->type = drawItem::drawType::DRAW_COMPRESSED; + + di->setRotation(ro); + + if (di->direction ^ epd->drawDirectionRight) { + int16_t temp = x; + x = y; + y = temp; + } + + decompress *decomp = new decompress; + if (!decomp->openFromFile(name)) { + delete di; + delete decomp; + return; + } + + di->imageHeaderOffset = decomp->readByte(0); + + struct imageHeader imgheader; + decomp->getBlock(1, (uint8_t *)&imgheader, sizeof(struct imageHeader)); + + di->addItem((uint8_t *)decomp, imgheader.width, imgheader.height); + + di->xpos = x; + di->ypos = y; + di->color = imgheader.bpp; + di->cleanUp = true; + di->addToList(); +} + +void drawImageAtAddressWrap(uint32_t addr, uint8_t lut) { + // powerUp(INIT_EEPROM); + epdSetup(); + selectLUT(lut); + uint8_t *xferbuffer = (uint8_t *)malloc(EEPROM_XFER_BLOCKSIZE); + struct EepromImageHeader *eih = (struct EepromImageHeader *)xferbuffer; + FLASH_Read(FLASH_NORMAL_READ, addr, xferbuffer, sizeof(struct EepromImageHeader)); + switch (eih->dataType) { + case DATATYPE_IMG_RAW_1BPP: { + drawItem *di = new drawItem; + // di->setRotation(ro); + di->xpos = 0; + di->ypos = 0; + di->color = 0; + di->addItem((uint8_t *)addr, epd->effectiveXRes, epd->effectiveYRes); + di->type = drawItem::drawType::DRAW_EEPROM_1BPP; + di->direction = false; + di->cleanUp = false; + di->addToList(); + } break; + case DATATYPE_IMG_RAW_2BPP: { + drawItem *di = new drawItem; + // di->setRotation(ro); + di->xpos = 0; + di->ypos = 0; + di->color = 0; + di->addItem((uint8_t *)addr, epd->effectiveXRes, epd->effectiveYRes); + di->type = drawItem::drawType::DRAW_EEPROM_2BPP; + di->direction = false; + di->cleanUp = false; + di->addToList(); + } break; + case DATATYPE_IMG_ZLIB: { + drawItem *di = new drawItem; + decompress *decomp = new decompress; + di->type = drawItem::drawType::DRAW_COMPRESSED; + + addr += sizeof(struct EepromImageHeader); + + if (!decomp->openFromFlash(addr, eih->size)) { + delete di; + delete decomp; + return; + } + + di->imageHeaderOffset = decomp->readByte(0); + + struct imageHeader imgheader; + decomp->getBlock(1, (uint8_t *)&imgheader, sizeof(struct imageHeader)); + + di->addItem((uint8_t *)decomp, imgheader.width, imgheader.height); + + di->xpos = 0; + di->ypos = 0; + if (imgheader.bpp == 1) di->color = 0; + if (imgheader.bpp == 2) di->color = 2; + di->cleanUp = true; + di->addToList(); + } break; + } + free(xferbuffer); + addOverlay(); + + draw(); + epdEnterSleep(); +} + +extern "C" { +void drawImageAtAddress(uint32_t addr, uint8_t lut) { + drawImageAtAddressWrap(addr, lut); +} +} + +void drawRoundedRectangle(uint16_t xpos, uint16_t ypos, uint16_t width, uint16_t height, bool color) { + uint16_t widthBytes = width / 8; + if (width % 8) widthBytes++; + uint32_t framebufferSize = (widthBytes + 1) * height; + uint8_t *framebuffer = (uint8_t *)calloc(framebufferSize + 4, 1); + if (framebuffer == NULL) { + return; + } + + ((uint16_t *)framebuffer)[0] = width + 1; + ((uint16_t *)framebuffer)[1] = height; + + framebuffer += 4; + + uint16_t w = width - 1; + uint16_t x = 1; + while (w--) { + framebuffer[(x / 8)] |= (uint8_t)(1 << (7 - ((uint8_t)x % 8))); + x++; + } + for (uint16_t curY = 1; curY < (height - 1); curY++) { + framebuffer[widthBytes * curY] = 0x80; + if (width % 8) + framebuffer[(widthBytes * curY) + widthBytes - 1] = (uint8_t)(1 << (7 - ((uint8_t)width % 8))); + else + framebuffer[(widthBytes * curY) + widthBytes - 1] = 0x01; + } + w = width - 1; + x = 1; + while (w--) { + framebuffer[(x / 8) + ((height - 1) * widthBytes)] |= (uint8_t)(1 << (7 - ((uint8_t)x % 8))); + x++; + } + framebuffer -= 4; + addBufferedImage(xpos, ypos, color, rotation::ROTATE_0, framebuffer, DRAW_NORMAL); + free(framebuffer); +} + +void drawMask(uint16_t xpos, uint16_t ypos, uint16_t width, uint16_t height, bool color) { + uint16_t widthBytes = width / 8; + if (width % 8) widthBytes++; + uint32_t framebufferSize = widthBytes * height; + uint8_t *framebuffer = (uint8_t *)calloc(framebufferSize + 4, 1); + if (framebuffer == NULL) { + return; + } + + ((uint16_t *)framebuffer)[0] = width; + ((uint16_t *)framebuffer)[1] = height; + + framebuffer += 4; + + for (uint16_t curY = 0; curY < height; curY++) { + uint16_t w = width; + uint16_t x = 0; + while (w--) { + framebuffer[(x / 8) + (curY * widthBytes)] |= (uint8_t)(1 << (7 - ((uint8_t)x % 8))); + x++; + } + } + + framebuffer -= 4; + addBufferedImage(xpos, ypos, color, rotation::ROTATE_0, framebuffer, DRAW_INVERTED); + free(framebuffer); +} + +// drawItem (sprite) functions +void drawItem::shiftBytesRight(uint8_t *data, uint8_t shift, uint8_t len) { + // Ensure the shift value is within bounds (0 to 7) + shift = shift % 8; + + // Handle the case where shift is 0 or len is 0 + if (shift == 0 || len == 0) { + return; + } + + // Loop through the array from right to left + for (int i = len - 1; i > 0; i--) { + // Perform the shift by combining bits from the current byte + // and the next byte to its right + data[i] = (data[i] >> shift) | (data[i - 1] << (8 - shift)); + } + + // For the leftmost byte, simply shift it to the right + data[0] >>= shift; +} + +uint8_t drawItem::bitReverse(uint8_t byte) { + byte = ((byte >> 1) & 0x55) | ((byte << 1) & 0xAA); + byte = ((byte >> 2) & 0x33) | ((byte << 2) & 0xCC); + byte = (byte >> 4) | (byte << 4); + return byte; +} + +void drawItem::reverseBytes(uint8_t *src, uint8_t src_len) { + // Check for valid input + if (src == NULL || src_len == 0) { + return; + } + + // Reverse the entire source array + for (uint8_t i = 0; i < src_len / 2; i++) { + uint8_t temp = src[i]; + src[i] = src[src_len - i - 1]; + src[src_len - i - 1] = temp; + } + // Reverse the bits within the bytes + for (uint8_t i = 0; i < src_len; i++) { + src[i] = bitReverse(src[i]); + } +} + +void drawItem::copyWithByteShift(uint8_t *dst, uint8_t *src, uint8_t src_len, uint8_t offset) { + switch (type) { + case DRAW_MASK: + for (uint8_t i = 0; i < src_len; i++) { + dst[i + offset] &= ~(src[i]); + } + break; + default: + for (uint8_t i = 0; i < src_len; i++) { + dst[i + offset] |= src[i]; + } + break; + } +} + +void drawItem::renderDrawLine(uint8_t *line, uint16_t number, uint8_t c) { + drawItem *curDrawItem; + for (uint8_t i = 0; i < DRAWITEM_LIST_SIZE; i++) { + curDrawItem = drawItems[i]; + if (curDrawItem != nullptr) { + curDrawItem->getDrawLine(line, number, c); + } + } +} + +void drawItem::flushDrawItems() { + drawItem *curDrawItem; + for (uint8_t i = 0; i < DRAWITEM_LIST_SIZE; i++) { + curDrawItem = drawItems[i]; + if (curDrawItem != nullptr) { + delete curDrawItem; + drawItems[i] = nullptr; + } + } +} + +void drawItem::getXLine(uint8_t *line, uint16_t y, uint8_t c) { + switch (type) { + case DRAW_FONT: + case DRAW_BUFFERED_1BPP: + case DRAW_MASK: + if (c != color) return; + if ((y >= ypos) && (y < height + ypos)) { // was y > ypos, not >= + // y = height-y; + if (mirrorV) { + if (mirrorH) { + reverseBytes(&buffer[((height - (y - ypos)) * widthBytes)], widthBytes); + // reverseBytes(&buffer[((y - ypos) * widthBytes)], widthBytes); + } else { + reverseBytes(&buffer[((y - ypos) * widthBytes)], widthBytes); + } + } + if (mirrorH) { + copyWithByteShift(line, &buffer[((height - (y - ypos)) * widthBytes)], widthBytes, xpos / 8); + } else { + copyWithByteShift(line, &buffer[((y - ypos) * widthBytes)], widthBytes, xpos / 8); + } + } + break; + case DRAW_OEPLFS_1BPP: + case DRAW_OEPLFS_2BPP: + if ((color < 2) && (c != color)) return; + if ((y >= ypos) && (y < height + ypos)) { // was y > ypos, not >= + uint32_t offset = 4; + offset += c * height * widthBytes; + OEPLFile *file = (OEPLFile *)this->buffer; + uint8_t *dbuffer = (uint8_t *)malloc(widthBytes); + if (mirrorH) { + file->getBlock(offset + (height - (y - ypos)) * widthBytes, dbuffer, widthBytes); + } else { + file->getBlock(offset + (y - ypos) * widthBytes, dbuffer, widthBytes); + } + if (mirrorV) { + reverseBytes(dbuffer, widthBytes); + } + copyWithByteShift(line, dbuffer, widthBytes, xpos / 8); + free(dbuffer); + } + break; + case DRAW_COMPRESSED: + if ((color < 2) && (c != color)) return; + if ((y >= ypos) && (y < height + ypos)) { + uint32_t offset = this->imageHeaderOffset; + offset += c * height * widthBytes; + decompress *decomp = (decompress *)this->buffer; + uint8_t *dbuffer = (uint8_t *)malloc(widthBytes); + if (mirrorH) { + decomp->getBlock(offset + (height - (y - ypos)) * widthBytes, dbuffer, widthBytes); + } else { + decomp->getBlock(offset + (y - ypos) * widthBytes, dbuffer, widthBytes); + } + if (mirrorV) { + reverseBytes(dbuffer, widthBytes); + } + copyWithByteShift(line, dbuffer, widthBytes, xpos / 8); + free(dbuffer); + } + break; + case DRAW_EEPROM_1BPP: + if (c != color) return; + if (epd->drawDirectionRight) + y = epd->effectiveYRes - 1 - y; + FLASH_Read(FLASH_NORMAL_READ, (uint32_t)buffer + sizeof(struct EepromImageHeader) + (y * (epd->effectiveXRes / 8)), line, (epd->effectiveXRes / 8)); + break; + case DRAW_EEPROM_2BPP: + if (epd->drawDirectionRight) + y = epd->effectiveYRes - 1 - y; + FLASH_Read(FLASH_NORMAL_READ, (uint32_t)(buffer + sizeof(struct EepromImageHeader) + ((y + (c * epd->effectiveYRes)) * (epd->effectiveXRes / 8))), line, (epd->effectiveXRes / 8)); + break; + default: + printf("Not supported mode!\n"); + break; + } +} + +void drawItem::getYLine(uint8_t *line, uint16_t x, uint8_t c) { + switch (type) { + case DRAW_FONT: + case DRAW_BUFFERED_1BPP: + if (c != color) return; + if ((x >= xpos) && (x < width + xpos)) { + x -= xpos; + for (uint16_t curY = 0; curY < height; curY++) { + uint16_t curYMirrored = curY; + if (!mirrorH) curYMirrored = height - 1 - curY; + if (mirrorV) { + if (buffer[((width - x) / 8) + (curYMirrored * widthBytes)] & (1 << (7 - ((width - x) % 8)))) { + line[(curY + ypos) / 8] |= (1 << (7 - ((curY + ypos) % 8))); + } + } else { + if (buffer[(x / 8) + (curYMirrored * widthBytes)] & (1 << (7 - (x % 8)))) { + line[(curY + ypos) / 8] |= (1 << (7 - ((curY + ypos) % 8))); + } + } + } + } + break; + case DRAW_MASK: + if (c != color) return; + if ((x >= xpos) && (x < width + xpos)) { + x -= xpos; + for (uint16_t curY = 0; curY < height; curY++) { + uint16_t curYMirrored = curY; + if (!mirrorH) curYMirrored = height - 1 - curY; + if (mirrorV) { + if (buffer[((width - x) / 8) + (curYMirrored * widthBytes)] & (1 << (7 - ((width - x) % 8)))) { + line[(curY + ypos) / 8] &= ~(1 << (7 - ((curY + ypos) % 8))); + } + } else { + if (buffer[(x / 8) + (curYMirrored * widthBytes)] & (1 << (7 - (x % 8)))) { + line[(curY + ypos) / 8] &= ~(1 << (7 - ((curY + ypos) % 8))); + } + } + } + } + break; + case DRAW_OEPLFS_1BPP: + case DRAW_OEPLFS_2BPP: + // this is incredibly slow. For larger images, it'll probably read 128 bytes of eeprom for every -bit- in the image. + if ((color < 2) && (c != color)) return; + if ((x >= xpos) && (x < width + xpos)) { + uint32_t offset = 4; + offset += c * height * widthBytes; + OEPLFile *file = (OEPLFile *)this->buffer; + x -= xpos; + for (uint16_t curY = 0; curY < height; curY++) { + uint16_t curYMirrored = curY; + if (!mirrorH) curYMirrored = height - 1 - curY; + if (mirrorV) { + if (file->readByte(offset + ((width - x) / 8) + (curYMirrored * widthBytes)) & (1 << (7 - ((width - x) % 8)))) { + line[(curY + ypos) / 8] |= (1 << (7 - ((curY + ypos) % 8))); + } + } else { + if (file->readByte(offset + (x / 8) + (curYMirrored * widthBytes)) & (1 << (7 - (x % 8)))) { + line[(curY + ypos) / 8] |= (1 << (7 - ((curY + ypos) % 8))); + } + } + } + } + break; + + default: + break; + } +} + +void drawItem::getDrawLine(uint8_t *line, uint16_t number, uint8_t c) { + if (direction) { + getYLine(line, number, c); + } else { + getXLine(line, number, c); + } +} + +void drawItem::addItem(uint8_t *data, uint16_t w, uint16_t h) { + width = w; + height = h; + widthBytes = w / 8; + if (w % 8) widthBytes++; + buffer = data; +} + +bool drawItem::addToList() { + for (uint8_t i = 0; i < DRAWITEM_LIST_SIZE; i++) { + if (drawItems[i] == nullptr) { + drawItems[i] = this; + return true; + }; + } + return false; +} + +drawItem::~drawItem() { + if (cleanUp) { + switch (this->type) { + case drawItem::drawType::DRAW_OEPLFS_1BPP: + case drawItem::drawType::DRAW_OEPLFS_2BPP: { + OEPLFile *file = (OEPLFile *)this->buffer; + if (file) delete file; + } break; + case drawItem::drawType::DRAW_COMPRESSED: { + decompress *dec = (decompress *)this->buffer; + if (dec) delete dec; + } break; + default: + free(buffer); + break; + } + } +} + +drawItem::drawItem() { + if (epd->drawDirectionRight) { + direction = true; + mirrorH = true; + } +} + +void drawItem::setRotation(enum rotation ro) { + if (epd->drawDirectionRight) { + direction = true; + mirrorH = true; + } + + switch (ro) { + case ROTATE_0: + break; + case ROTATE_270: + direction = !direction; + mirrorH = !mirrorH; + mirrorV = !mirrorV; + break; + case ROTATE_180: + mirrorH = !mirrorH; + mirrorV = !mirrorV; + break; + case ROTATE_90: + direction = !direction; + break; + }; +} + +// font rendering functions +fontrender::fontrender(char *name) { + this->setFont(name); +} + +void fontrender::setFont(char *name) { + if (this->glyphFile) delete this->glyphFile; + if (this->bitmapFile) delete this->bitmapFile; + OEPLFile *font = fs->getFile(name); + if (!font) + printf("Couldn't open font file %s\n", name); + // else + // printf("Opened %s\n", name); + font->getBlock(0, (uint8_t *)&this->gfxFont, sizeof(GFXFontOEPL)); + this->glyphFile = fs->getFile(this->gfxFont.glyphFile); + this->bitmapFile = fs->getFile(this->gfxFont.bitmapFile); + + if (!this->glyphFile) printf("Couldn't open font file %s\n", name); + if (!this->bitmapFile) printf("Couldn't open font file %s\n", name); + if (font) delete (font); +} + +fontrender::~fontrender() { + if (this->glyphFile) delete this->glyphFile; + if (this->bitmapFile) delete this->bitmapFile; +} + +void fontrender::drawFastHLine(uint16_t x, uint16_t y, uint16_t w) { + while (w--) { + fb[(x / 8) + (y * bufferByteWidth)] |= (uint8_t)(1 << (7 - ((uint8_t)x % 8))); + x++; + } +} + +void fontrender::fillRect(uint16_t x, uint16_t y, uint16_t w, uint16_t h) { + for (uint16_t curY = y; curY < y + h; curY++) { + drawFastHLine(x, curY, w); + } +} + +uint8_t fontrender::getCharWidth(uint16_t c) { + if ((c >= gfxFont.first) && (c <= gfxFont.last)) { + c -= gfxFont.first; + // GFXglyph *glyph = &(((GFXglyph *)pgm_read_dword(&gfxFont->glyph))[c]); + GFXglyph glyph = this->getGlyph(c); + return glyph.xAdvance; + } + return 0; +} + +uint8_t fontrender::drawChar(int32_t x, int32_t y, uint16_t c, uint8_t size) { + // Filter out bad characters not present in font + if ((c >= gfxFont.first) && (c <= gfxFont.last)) { + c -= gfxFont.first; + GFXglyph glyph = this->getGlyph(c); + // uint8_t *bitmap = (uint8_t *)gfxFont->bitmap; + uint32_t bo = glyph.bitmapOffset; + uint8_t w = glyph.width, + h = glyph.height; + int8_t xo = glyph.xOffset, + yo = glyph.yOffset; + uint8_t xx, yy, bits = 0, bit = 0; + int16_t xo16 = 0, yo16 = 0; + + if (size > 1) { + xo16 = xo; + yo16 = yo; + } + + // GFXFF rendering speed up + uint16_t hpc = 0; // Horizontal foreground pixel count + for (yy = 0; yy < h; yy++) { + for (xx = 0; xx < w; xx++) { + if (bit == 0) { + // bits = bitmap[bo++]; + bits = (*this->bitmapFile)(bo++); + bit = 0x80; + } + if (bits & bit) + hpc++; + else { + if (hpc) { + if (size == 1) + drawFastHLine(x + xo + xx - hpc, y + yo + yy, hpc); + else + fillRect(x + (xo16 + xx - hpc) * size, y + (yo16 + yy) * size, size * hpc, size); + hpc = 0; + } + } + bit >>= 1; + } + // Draw pixels for this line as we are about to increment yy + if (hpc) { + if (size == 1) + drawFastHLine(x + xo + xx - hpc, y + yo + yy, hpc); + else + fillRect(x + (xo16 + xx - hpc) * size, y + (yo16 + yy) * size, size * hpc, size); + hpc = 0; + } + } + return glyph.xAdvance; + } + return 0; +} + +void fontrender::epdPrintf(uint16_t x, uint16_t y, bool color, enum rotation ro, const char *c, ...) { + drawItem *di = new drawItem; + if (di == nullptr) return; + di->setRotation(ro); + + // prepare a drawItem, exchange x/y if necessary. + if (di->direction ^ epd->drawDirectionRight) { + int16_t temp = x; + x = y; + y = temp; + } + + // output string using vsnprintf + char out_buffer[256]; + va_list lst; + va_start(lst, c); + uint8_t len = vsnprintf(out_buffer, 255, c, lst); + va_end(lst); + + // account for offset in font rendering + if (!di->direction) { + Xpixels = x % 8; // total drawing width increased by x%8 + } else { + Xpixels = 0; + } + + // find out the total length of the string + for (uint8_t c = 0; c < len; c++) { + Xpixels += (uint16_t)getCharWidth(out_buffer[c]); + } + + // find out the high and low points for given font + int8_t high = 0; + int8_t low = 0; + for (uint8_t curchar = 0; curchar < len; curchar++) { + uint8_t c = out_buffer[curchar]; + if ((c >= gfxFont.first) && (c <= gfxFont.last)) { + c -= gfxFont.first; + GFXglyph g = this->getGlyph(c); + int8_t glyphUL = g.yOffset; + if (glyphUL < high) high = glyphUL; + int8_t glyphHeight = g.height; + if ((glyphUL + glyphHeight) > low) low = glyphUL + glyphHeight; + } + } + // Actual font height (reduces memory footprint) + int8_t height = -1 * (high - low) + 1; + + // determine actual width + bufferByteWidth = Xpixels / 8; + if (Xpixels % 8) bufferByteWidth++; + + // allocate framebuffer + fb = (uint8_t *)calloc(bufferByteWidth * height, 1); + + if (!fb) { + printf("Failed to allocate buffer for drawitem, we can't render this text!\n"); + printf("Tried to allocate a buffer %d x %d\n", bufferByteWidth, height); + delete di; + return; + } + + uint16_t curX; + if (!di->direction) { + curX = x % 8; // start drawing at x%8s + } else { + curX = 0; + } + for (uint8_t c = 0; c < len; c++) { + curX += (uint16_t)drawChar(curX, height - low, out_buffer[c], 1); + } + + di->addItem(fb, curX, height); + di->ypos = y; + di->xpos = x; + di->color = color; + di->type = drawItem::drawType::DRAW_FONT; + di->addToList(); +} + +GFXglyph fontrender::getGlyph(uint16_t c) { + GFXglyph g; + this->glyphFile->getBlock(sizeof(GFXglyph) * c, (uint8_t *)&g, sizeof(GFXglyph)); + return g; +} \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/drawing.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/drawing.h index b8a590e9..a83e9bc2 100644 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/drawing.h +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/drawing.h @@ -2,12 +2,132 @@ #define _DRAWING_H_ #include -#include +#include "oepl_fs.h" -#define DRAWING_MIN_BITMAP_SIZE (128) //minimum size we'll consider +#define COLOR_RED 1 +#define COLOR_BLACK 0 +#define COLOR_DUAL 2 -void set_offline(bool state); -void drawImageAtAddress(uint32_t addr, uint8_t lut); -void drawImageFromBuffer(uint8_t* buffer, const uint8_t lut); +#define IMAGE_OR 1 +#define IMAGE_REPLACE 0 + +#define DRAW_INVERTED 1 +#define DRAW_NORMAL 0 + +#define FILENAME_LENGTH 32 + +typedef struct __attribute__ ((packed)) { + uint16_t bitmapOffset; ///< Pointer into GFXfont->bitmap + uint8_t width; ///< Bitmap dimensions in pixels + uint8_t height; ///< Bitmap dimensions in pixels + uint8_t xAdvance; ///< Distance to advance cursor (x axis) + int8_t xOffset; ///< X dist from cursor pos to UL corner + int8_t yOffset; ///< Y dist from cursor pos to UL corner +} GFXglyph; + +enum rotation { + ROTATE_0, + ROTATE_90, + ROTATE_180, + ROTATE_270 +}; + +typedef struct __attribute__ ((packed)) { + uint16_t first; + uint16_t last; + uint8_t yAdvance; + char glyphFile[FILENAME_LENGTH]; + char bitmapFile[FILENAME_LENGTH]; +} GFXFontOEPL; + + +extern "C"{ + void drawImageAtAddress(uint32_t addr, uint8_t lut); +} + +void addBufferedImage(uint16_t x, uint16_t y, bool color, enum rotation ro, const uint8_t *image, bool mask); +// void addFlashImage(uint16_t x, uint16_t y, bool color, enum rotation ro, const uint8_t *image); +void addQR(uint16_t x, uint16_t y, uint8_t version, uint8_t scale, const char *c, ...); +void drawRoundedRectangle(uint16_t xpos, uint16_t ypos, uint16_t width, uint16_t height, bool color); +void drawMask(uint16_t xpos, uint16_t ypos, uint16_t width, uint16_t height, bool color); +void addFSImage(uint16_t x, uint16_t y, uint8_t color, enum rotation ro, char *name); +void addCompressedFSImage(uint16_t x, uint16_t y, enum rotation ro, char *name); + +class drawItem { + public: + drawItem(); + ~drawItem(); + void setRotation(enum rotation ro); + void addItem(uint8_t *data, uint16_t width, uint16_t height); + bool addToList(); + + static void shiftBytesRight(uint8_t *data, uint8_t shift, uint8_t len); + static void renderDrawLine(uint8_t *line, uint16_t number, uint8_t c); + static void flushDrawItems(); + + // these are also used for rotated screens + static void reverseBytes(uint8_t *src, uint8_t src_len); + static uint8_t bitReverse(uint8_t byte); + + enum drawType { + DRAW_FONT, + DRAW_BUFFERED_1BPP, + DRAW_MASK, + DRAW_EEPROM_1BPP, + DRAW_EEPROM_2BPP, + DRAW_COMPRESSED, + DRAW_OEPLFS_1BPP, + DRAW_OEPLFS_2BPP + } type; + + int16_t xpos; + int16_t ypos; + + enum rotation rotate = ROTATE_0; + + uint8_t color = 0; + + bool direction = false; + + bool mirrorH = false; + bool mirrorV = false; + uint16_t width; + uint16_t height; + + uint8_t imageHeaderOffset = 0; + + // if this is true, clean up the reference (free memory). + bool cleanUp = true; + + protected: + void copyWithByteShift(uint8_t *dst, uint8_t *src, uint8_t src_len, uint8_t offset); + + void getDrawLine(uint8_t *line, uint16_t number, uint8_t c); + void getXLine(uint8_t *line, uint16_t yPos, uint8_t color); + void getYLine(uint8_t *line, uint16_t xPos, uint8_t color); + uint8_t widthBytes = 0; + uint8_t *buffer = nullptr; +}; + +class fontrender { + public: + void epdPrintf(uint16_t x, uint16_t y, bool color, enum rotation ro, const char *c, ...); + fontrender(char* name); + ~fontrender(); + void setFont(char* name); + + protected: + GFXFontOEPL gfxFont; + uint16_t bufferByteWidth = 0; + uint8_t *fb = nullptr; + uint16_t Xpixels; + uint8_t drawChar(int32_t x, int32_t y, uint16_t c, uint8_t size); + uint8_t getCharWidth(uint16_t c); + void drawFastHLine(uint16_t x, uint16_t y, uint16_t w); + void fillRect(uint16_t x, uint16_t y, uint16_t w, uint16_t h); + GFXglyph getGlyph(uint16_t c); + OEPLFile *glyphFile = nullptr; + OEPLFile *bitmapFile = nullptr; +}; #endif diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd.c deleted file mode 100755 index 8e9e4c71..00000000 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd.c +++ /dev/null @@ -1,818 +0,0 @@ -#include "epd.h" - -#include -#include -// #include -#include -#include - -#include "12x20_horizontal_LSB_1.h" -#include "core_cm3.h" -#include "gpio.h" -#include "main.h" -#include "mz100_clock.h" -#include "mz100_gpio.h" -#include "mz100_pinmux.h" -#include "mz100_ssp.h" -#include "mz100_wdt.h" -#include "printf.h" -#include "stdarg.h" -#include "util.h" - -#define EPD_PANEL_SETTING 0x00 -#define EPD_POWER_SETTING 0x01 -#define EPD_POWER_OFF 0x02 -#define EPD_POWER_OFF_SEQUENCE 0x03 -#define EPD_POWER_ON 0x04 -#define EPD_BOOSTER_SOFT_START 0x06 -#define EPD_DEEP_SLEEP 0x07 -#define EPD_START_DATA 0x10 -#define EPD_DATA_STOP 0x11 -#define EPD_REFRESH 0x12 -#define EPD_IMAGE_PROCESS 0x13 -#define EPD_LUT_VCOM 0x20 -#define EPD_LUT_B 0x21 -#define EPD_LUT_W 0x22 -#define EPD_LUT_G1 0x23 -#define EPD_LUT_G2 0x24 -#define EPD_LUT_R0 0x25 -#define EPD_LUT_R1 0x26 -#define EPD_LUT_R2 0x27 -#define EPD_LUT_R3 0x28 -#define EPD_LUT_XON 0x29 -#define EPD_PLL_CONTROL 0x30 -#define EPD_TEMP_CALIB 0x40 -#define EPD_TEMP_SELECT 0x41 -#define EPD_TEMP_WRITE 0x42 -#define EPD_TEMP_READ 0x43 -#define EPD_VCOM_DATA_INTERVAL 0x50 -#define EPD_LPD 0x51 -#define EPD_TCON_SET 0x60 -#define EPD_TRES 0x61 -#define EPD_SPI_FLASH_CONTROL 0x65 -#define EPD_REVISION 0x70 -#define EPD_GET_STATUS 0x71 -#define EPD_AUTOMEASURE_VCOM 0x80 -#define EPD_READ_VCOM 0x81 -#define EPD_VCOM_DC_SET 0x82 -#define EPD_SET_WINDOW 0x90 - -#define EPD_WAKE_EEPROM 0xAB -#define EPD_EEPROM_SLEEP 0xB9 -#define EPD_UNKNOWN_1 0xE5 - -static uint8_t EPDtempBracket = 0; - -#define CHAR_WIDTH_BYTES 2 -#define CHAR_HEIGHT 20 -#define CHAR_WIDTH 12 -#define SCREEN_WIDTH 640 - -uint8_t buffer[CHAR_HEIGHT][640 / 8]; -uint8_t charbuffer[CHAR_HEIGHT][CHAR_WIDTH_BYTES + 1]; - -#define CHAR_SPACING 1 -#define EMPTY_SPACING 3 - -struct epd_colorlutpart { - uint8_t repeat; - uint8_t lvl0 : 4; - uint8_t lvl1 : 4; - uint8_t lvl2 : 4; - uint8_t lvl3 : 4; - uint8_t lvl4 : 4; - uint8_t lvl5 : 4; - uint8_t lvl6 : 4; - uint8_t lvl7 : 4; - uint8_t length[8]; -} __packed; - -struct epd_colorlut { - struct epd_colorlutpart part[20]; -} __packed; - -struct epd_vcomlutpart { - uint8_t repeat; - uint8_t lvl0 : 2; - uint8_t lvl1 : 2; - uint8_t lvl2 : 2; - uint8_t lvl3 : 2; - uint8_t lvl4 : 2; - uint8_t lvl5 : 2; - uint8_t lvl6 : 2; - uint8_t lvl7 : 2; - uint8_t length[8]; -} __packed; - -struct epd_vcomlut { - struct epd_vcomlutpart part[20]; -} __packed; - -struct epd_xonlutpart { - uint8_t repeat; - uint8_t lvl0 : 1; - uint8_t lvl1 : 1; - uint8_t lvl2 : 1; - uint8_t lvl3 : 1; - uint8_t lvl4 : 1; - uint8_t lvl5 : 1; - uint8_t lvl6 : 1; - uint8_t lvl7 : 1; - uint8_t length[8]; -} __packed; - -struct epd_xonlut { - struct epd_xonlutpart part[20]; -} __packed; - -void interleaveBW(uint8_t b) { - b ^= 0xFF; - uint8_t b_out = 0; - for (uint8_t shift = 0; shift < 4; shift++) { - b_out = 0; - if ((b >> 2 * shift) & 0x01) b_out |= 0x30; // 0x30 - if ((b >> 2 * shift) & 0x02) b_out |= 0x03; // 0x03 - display_tx_byte(b_out); - } -} - -void interleaveColor(uint8_t b, uint8_t r) { - b ^= 0xFF; - uint8_t b_out = 0; - for (int8_t shift = 3; shift >= 0; shift--) { - b_out = 0; - if (((b >> 2 * shift) & 0x01) && ((r >> 2 * shift) & 0x01)) { - b_out |= 0x04; // 0x30 - } else if ((b >> 2 * shift) & 0x01) { - b_out |= 0x03; // 0x30 - } else if ((r >> 2 * shift) & 0x01) { // 4 or 5 - b_out |= 0x04; // 0x30 - } else { - } - - if (((b >> 2 * shift) & 0x02) && ((r >> 2 * shift) & 0x02)) { - b_out |= 0x40; // 0x30 - } else if ((b >> 2 * shift) & 0x02) { - b_out |= 0x30; // 0x30 - } else if ((r >> 2 * shift) & 0x02) { - b_out |= 0x40; // 0x30 - } else { - } - display_tx_byte(b_out); - } -} - -void epdWrite(uint8_t reg, uint8_t len, ...) { - va_list valist; - va_start(valist, len); - epd_pin_enable(1); - GPIO_WritePinOutput(EPD_CS, GPIO_IO_LOW); - GPIO_WritePinOutput(EPD_DC, GPIO_IO_LOW); - SSP_SendData(SSP2_ID, reg); - for (int i = 0; i < 0xF; ++i) - __ISB(); - GPIO_WritePinOutput(EPD_DC, GPIO_IO_HIGH); - for (uint8_t i = 0; i < len; i++) { - SSP_SendData(SSP2_ID, va_arg(valist, int)); - } - - for (int j = 0; j < 0xF; ++j) - __ISB(); - GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); - epd_pin_enable(0); - va_end(valist); -} - -void epd_reset() { - uint8_t v0 = 5; - printf("Resetting..."); - while (1) { - GPIO_WritePinOutput(EPD_RESET, GPIO_IO_HIGH); - delay(100); - GPIO_WritePinOutput(EPD_RESET, GPIO_IO_LOW); - delay(3000); - GPIO_WritePinOutput(EPD_RESET, GPIO_IO_HIGH); - delay(3000); - if (GPIO_ReadPinLevel(EPD_BUSY)) - break; - v0--; - if (!v0) { - printf("EPD reset failure\r\n"); - break; - } - } - delay(5000); - printf(" Reset complete\n"); -} - -void EPD_cmd(char a1) { - epd_pin_enable(1); - - GPIO_WritePinOutput(EPD_CS, GPIO_IO_LOW); - GPIO_WritePinOutput(EPD_DC, GPIO_IO_LOW); - SSP_SendData(SSP2_ID, a1); - for (int i = 0; i < 0xF; ++i) - __ISB(); - - epd_pin_enable(0); - - GPIO_WritePinOutput(EPD_DC, GPIO_IO_HIGH); - GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); -} - -void EPD_data(char a1) { - epd_pin_enable(1); - - GPIO_WritePinOutput(EPD_CS, GPIO_IO_LOW); - SSP_SendData(SSP2_ID, a1); - for (int i = 0; i < 0xF; ++i) - __ISB(); - - epd_pin_enable(0); - - GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); -} - -void spi_soft_send_byte(char a1) { - uint8_t v2 = 0; - do { - if ((a1 & 0x80) != 0) - GPIO_WritePinOutput(EPD_MOSI, GPIO_IO_HIGH); - else - GPIO_WritePinOutput(EPD_MOSI, GPIO_IO_LOW); - delay_us(1); - GPIO_WritePinOutput(EPD_CLK, GPIO_IO_HIGH); - delay_us(1); - GPIO_WritePinOutput(EPD_CLK, GPIO_IO_LOW); - a1 *= 2; - v2++; - } while (v2 < 8); - GPIO_WritePinOutput(EPD_MOSI, GPIO_IO_LOW); - delay_us(1); -} - -void BUSY_wait(unsigned int a1) { - unsigned int v2 = 0; - while (GPIO_ReadPinLevel(EPD_BUSY) == GPIO_IO_LOW) { - delay(10000); - v2++; - if (v2 > a1) - break; - if (((v2 % 1000) / 10) == 0) - WDT_RestartCounter(); - } -} - -void spi_soft_read_buffer(char a1, uint16_t readaddress, uint8_t *target, uint16_t length) { - char v9; - unsigned int v10; - - GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); - GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_LOW); - spi_soft_send_byte(3); - spi_soft_send_byte(a1); - spi_soft_send_byte(readaddress >> 8); - spi_soft_send_byte(readaddress); - delay_us(5); - for (uint16_t i = 0; i < length; i++) { - v9 = 0; - v10 = 0; - do { - v9 *= 2; - GPIO_WritePinOutput(EPD_CLK, GPIO_IO_LOW); - delay_us(1); - if (GPIO_ReadPinLevel(EPD_MISO)) - v9 |= 1u; - GPIO_WritePinOutput(EPD_CLK, GPIO_IO_HIGH); - delay_us(1); - v10++; - } while (v10 < 8); - delay_us(1); - *target++ = v9; - } - - GPIO_WritePinOutput(EPD_CLK, GPIO_IO_LOW); - GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_HIGH); -} - -int spi_soft_read_byte() { - int v0; - unsigned int v1; - - v0 = 0; - GPIO_WritePinOutput(EPD_BS, GPIO_IO_HIGH); - GPIO_WritePinOutput(EPD_CS, GPIO_IO_LOW); - delay_us(1); - GPIO_WritePinOutput(EPD_MOSI, GPIO_IO_HIGH); - GPIO_WritePinOutput(EPD_CLK, GPIO_IO_HIGH); - delay_us(1); - GPIO_WritePinOutput(EPD_CLK, GPIO_IO_LOW); - delay_us(1); - GPIO_SetPinDir(EPD_MOSI, GPIO_INPUT); - GPIO_PinMuxFun(EPD_MOSI, 0); - delay_us(3); - v1 = 0; - do { - v0 = (uint8_t)(2 * v0); - GPIO_WritePinOutput(EPD_CLK, GPIO_IO_HIGH); - if (GPIO_ReadPinLevel(EPD_MOSI)) - v0 |= 1u; - GPIO_WritePinOutput(EPD_CLK, GPIO_IO_LOW); - delay_us(1); - v1++; - } while (v1 < 8); - GPIO_SetPinDir(EPD_MOSI, GPIO_OUTPUT); - GPIO_PinMuxFun(EPD_MOSI, 0); - GPIO_WritePinOutput(EPD_MOSI, GPIO_IO_LOW); - delay_us(1); - GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); - delay_us(1); - GPIO_WritePinOutput(EPD_BS, GPIO_IO_LOW); - return v0; -} - -uint8_t getTempBracket() { - uint8_t v0; - uint8_t v1; - uint8_t temptable[40]; - - EPD_cmd(EPD_SPI_FLASH_CONTROL); - EPD_data(1); - delay_us(1000); - spi_soft_read_buffer(0, 25002, temptable, 10); - delay_us(1000); - delay_us(1000); - EPD_cmd(EPD_SPI_FLASH_CONTROL); - EPD_data(0); - - EPD_cmd(EPD_TEMP_CALIB); - BUSY_wait(0xAu); - v0 = spi_soft_read_byte(); - v1 = (uint8_t)(2 * v0) + ((uint8_t)spi_soft_read_byte() >> 7); - - uint8_t bracket = 0; - for (int i = 0; i < 9; i++) { - if ((((char)v1 - (uint8_t)temptable[i]) & 0x80) != 0) { - bracket = i; - break; - } - } - return bracket; -} - -void loadFrameRatePLL(uint8_t bracket) { - uint8_t pllvalue; - uint8_t plltable[12]; - - EPD_cmd(EPD_SPI_FLASH_CONTROL); - EPD_data(1); - delay_us(1000); - spi_soft_read_buffer(0, 25039, plltable, 10); - delay_us(1000); - EPD_cmd(EPD_SPI_FLASH_CONTROL); - EPD_data(0); - - pllvalue = plltable[bracket]; - - EPD_cmd(EPD_PLL_CONTROL); - EPD_data(pllvalue); -} - -extern void dump(const uint8_t *a, const uint16_t l); - -void loadTempVCOMDC(uint8_t bracket) { - uint8_t vcomvalue; - uint8_t vcomtable[12]; - - EPD_cmd(EPD_SPI_FLASH_CONTROL); - EPD_data(1); - delay_us(1000); - spi_soft_read_buffer(0, 25049, vcomtable, 10); - delay_us(1000); - EPD_cmd(EPD_SPI_FLASH_CONTROL); - EPD_data(0); - - vcomvalue = vcomtable[bracket]; - - EPD_cmd(EPD_VCOM_DC_SET); - EPD_data(vcomvalue); -} - -uint8_t *loadLUT(uint8_t index, uint8_t bracket) { - uint16_t adr = 0; - uint16_t len = 0; - uint8_t *lutBuffer; - switch (index) { - case EPD_LUT_VCOM: - // VCOM LUT - adr = 20800 + (220 * bracket); - len = 220; - break; - case EPD_LUT_B: - case EPD_LUT_W: - case EPD_LUT_G1: - case EPD_LUT_G2: - case EPD_LUT_R0: - case EPD_LUT_R1: - case EPD_LUT_R2: - case EPD_LUT_R3: - adr = (bracket * 2080); - adr += (index - 0x21) * 260; - len = 260; - break; - case EPD_LUT_XON: - // XON LUT - adr = 23000 + (200 * bracket); - len = 200; - break; - } - - EPD_cmd(EPD_SPI_FLASH_CONTROL); - EPD_data(1); - delay_us(1000); - lutBuffer = malloc(len); - if (lutBuffer) spi_soft_read_buffer(0, adr, lutBuffer, len); - delay_us(1000); - EPD_cmd(EPD_SPI_FLASH_CONTROL); - EPD_data(0); - return lutBuffer; -} - -void shiftRightByX(uint8_t *data, int X, int N) { - if (X < 0 || X >= 8) { - // Invalid shift value, X should be between 0 and 7 (inclusive) - return; - } - - // Perform the shift operation on each byte in the range - for (int i = 0; i < N; i++) { - data[i] = (data[i] >> X) | ((data[i + 1] & ((1 << X) - 1)) << (8 - X)); - } -} -void shiftLeftByX(uint8_t *data, int X, int N) { - if (X < 0 || X >= 8) { - // Invalid shift value, X should be between 0 and 7 (inclusive) - return; - } - - // Perform the shift operation on each byte in the range - for (int i = N - 1; i >= 0; i--) { - data[i] = (data[i] << X) | ((data[i - 1] >> (8 - X)) & ((1 << X) - 1)); - } -} - -uint16_t loadCharacter(uint8_t currentChar, uint16_t curX, bool first) { - currentChar -= 0x20; - - memset(charbuffer, 0, sizeof(charbuffer)); - for (uint8_t d = 0; d < CHAR_HEIGHT; d++) { - for (uint8_t c = 0; c < CHAR_WIDTH_BYTES; c++) { - charbuffer[d][c] = font[currentChar][c + (2 * d)]; - } - } - - // find amount of left whitespace and compensate - uint8_t leftShift = 0; - for (uint8_t left = 0; left < CHAR_WIDTH; left++) { - bool leftAdjusted = false; - for (uint8_t height = 0; height < CHAR_HEIGHT; height++) { - if (charbuffer[height][0] & 0x01) { - leftAdjusted = true; - break; - } - } - if (leftAdjusted) { - break; - } else { - for (uint8_t height = 0; height < CHAR_HEIGHT; height++) { - shiftRightByX(&(charbuffer[height][0]), 1, CHAR_WIDTH_BYTES); - } - leftShift++; - } - } - - // find width for character - uint8_t width = 0; - for (int8_t curBit = CHAR_WIDTH + 1; curBit > 0; curBit--) { - bool widthFound = false; - for (uint8_t height = 0; height < CHAR_HEIGHT; height++) { - if (charbuffer[height][curBit / 8] & (1 << (curBit % 8))) { - widthFound = true; - break; - } - } - if (widthFound) { - width = curBit + 1; - break; - } - } - - if (!first) { - curX += CHAR_SPACING; - } - - for (uint8_t height = 0; height < CHAR_HEIGHT; height++) { - shiftLeftByX(&(charbuffer[height][0]), curX % 8, CHAR_WIDTH_BYTES + 1); - } - - for (uint8_t d = 0; d < CHAR_HEIGHT; d++) { - for (uint8_t c = 0; c < CHAR_WIDTH_BYTES + 1; c++) { - buffer[d][(curX / 8) + c] |= charbuffer[d][c]; - } - } - if (width == 0) width = EMPTY_SPACING; - curX += width; - return curX; -} - -void dumpBuffer(uint16_t xloc, uint16_t yloc, uint16_t width) { - xloc = SCREEN_WIDTH - xloc; - - setDisplayWindow(xloc - width, yloc, xloc, yloc + CHAR_HEIGHT); - display_send_start(0); - for (uint8_t curY = 0; curY < CHAR_HEIGHT; curY++) { - for (uint16_t curX = 0; curX < width; curX += 8) { - interleaveBW(buffer[curY][curX / 8]); - } - } - display_send_stop(); -} - -void loadLUTSfromEEPROM(uint8_t bracket) { - for (uint8_t c = EPD_LUT_B; c <= EPD_LUT_R3; c++) { - struct epd_colorlut *colorlut = (struct epd_colorlut *)loadLUT(c, bracket); - - for (uint8_t d = 0; d < 8; d++) { - colorlut->part[1].length[d] = 1; - colorlut->part[0].length[d] = 1; - } - - for (uint8_t part = 0; part < 4; part++) { - if (colorlut->part[part].repeat) colorlut->part[part].repeat = 1; - } - - for (uint8_t part = 4; part < 20; part++) { - if (colorlut->part[part].repeat) colorlut->part[part].repeat = 0; - } - - lutBeginTX(c); - for (uint16_t d = 0; d < 260; d++) { - display_tx_byte(((uint8_t *)colorlut)[d]); - } - lutEndTX(); - if (colorlut) free(colorlut); - } - - struct epd_vcomlut *vcomlut = (struct epd_vcomlut *)loadLUT(EPD_LUT_VCOM, bracket); - - for (uint8_t part = 0; part < 20; part++) { - if (vcomlut->part[part].repeat) vcomlut->part[part].repeat = 0; - } - lutBeginTX(EPD_LUT_VCOM); - for (uint16_t d = 0; d < 220; d++) { - display_tx_byte(((uint8_t *)vcomlut)[d]); - } - lutEndTX(); - if (vcomlut) free(vcomlut); - - struct epd_xonlut *xonlut = (struct epd_xonlut *)loadLUT(EPD_LUT_XON, bracket); - - // memset(&(xonlut->part[0].repeat), 0x00, sizeof(struct epd_xonlutpart)); - // memset(&(xonlut->part[1].repeat), 0x00, sizeof(struct epd_xonlutpart)); - - for (uint8_t part = 0; part < 20; part++) { - if (xonlut->part[part].repeat) xonlut->part[part].repeat = 0; - } - lutBeginTX(EPD_LUT_XON); - for (uint16_t d = 0; d < 200; d++) { - display_tx_byte(((uint8_t *)xonlut)[d]); - } - lutEndTX(); - if (xonlut) free(xonlut); -} - -void init_GPIO_EPD() { - SSP_CFG_Type v0; - SPI_Param_Type spiParaStruct; - GPIO_PinMuxFun(EPD_MOSI, 0); - GPIO_SetPinDir(EPD_MOSI, GPIO_OUTPUT); - GPIO_PinMuxFun(EPD_CLK, 0); - GPIO_SetPinDir(EPD_CLK, GPIO_OUTPUT); - GPIO_PinMuxFun(EPD_CS, 0); - GPIO_SetPinDir(EPD_CS, GPIO_OUTPUT); - GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); - GPIO_PinMuxFun(EPD_BUSY, 0); - GPIO_SetPinDir(EPD_BUSY, GPIO_INPUT); - GPIO_PinModeConfig(EPD_BUSY, PINMODE_PULLUP); - GPIO_PinMuxFun(EPD_RESET, 0); - GPIO_SetPinDir(EPD_RESET, GPIO_OUTPUT); - GPIO_WritePinOutput(EPD_RESET, GPIO_IO_HIGH); - GPIO_PinMuxFun(EPD_DC, 0); - GPIO_SetPinDir(EPD_DC, GPIO_OUTPUT); - GPIO_WritePinOutput(EPD_DC, GPIO_IO_HIGH); - GPIO_PinMuxFun(EPD_BS, 0); - GPIO_SetPinDir(EPD_BS, GPIO_OUTPUT); - GPIO_WritePinOutput(EPD_BS, GPIO_IO_LOW); - GPIO_PinMuxFun(EPD_HLT_CTRL, 0); - GPIO_SetPinDir(EPD_HLT_CTRL, GPIO_OUTPUT); - GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_HIGH); - GPIO_PinMuxFun(EPD_MISO, 0); - GPIO_SetPinDir(EPD_MISO, GPIO_INPUT); - GPIO_PinModeConfig(EPD_MISO, PINMODE_DEFAULT); - memset(&v0, 0, 9); - v0.timeOutVal = 0; - SSP_Init(SSP2_ID, &v0); - spiParaStruct.spiClkPhase = SPI_SCPHA_1; - spiParaStruct.spiClkPolarity = SPI_SCPOL_LOW; - SPI_Config(SSP2_ID, &spiParaStruct); - CLK_I2SClkSrc(CLK_I2S_XTAL32M); - CLK_SSPClkSrc(CLK_SSP_ID_2, CLK_SSP_I2S); - CLK_I2SClkDivider(1, 1); -} - -void fillWindow(uint16_t x, uint16_t y, uint16_t xe, uint16_t ye, uint8_t color) { - setDisplayWindow(x, y, xe, ye); - display_send_start(0); - - for (uint32_t c = 0; c < (xe - x) * (ye - y) / 8; c++) { - interleaveBW(0x00); - } - - display_send_stop(); -} - -void epd_refresh_and_sleep(uint8_t lut) { - if (lut) { - epdWrite(EPD_PANEL_SETTING, 2, 0xC3, 0x88); // 0xC3-0x88 // lut from register - loadLUTSfromEEPROM(EPDtempBracket); - } else { - epdWrite(EPD_PANEL_SETTING, 2, 0xC3, 0x08); // 0xC3-0x88 // lut from EEPROM - epdWrite(EPD_UNKNOWN_1, 1, 0x03); // load lut, probably - } - - // epdPrintf(50,100,false,"Blaat! Dit is een test %d", 6); - - EPD_cmd(EPD_REFRESH); - - unsigned int v2 = 0; - while (GPIO_ReadPinLevel(EPD_BUSY) == GPIO_IO_HIGH) { - WDT_RestartCounter(); - delay(10000); - v2++; - if (v2 > 10) - break; - } - do_sleeped_epd_refresh(); - init_GPIO_EPD(); - epd_reset(); - // epd_reset(); - EPD_cmd(EPD_POWER_SETTING); - EPD_data(2); - EPD_data(0); - EPD_data(0); - EPD_data(0); - delay_us(50000); - EPD_cmd(EPD_POWER_OFF); - delay_us(100000); - BUSY_wait(0x32u); - EPD_cmd(EPD_SPI_FLASH_CONTROL); - EPD_data(1); - GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_LOW); - spi_soft_send_byte(EPD_EEPROM_SLEEP); - GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_HIGH); - EPD_cmd(EPD_SPI_FLASH_CONTROL); - EPD_data(0); - EPD_cmd(EPD_DEEP_SLEEP); - EPD_data(0xA5); -} - -void epd_pin_enable(int a1) { - if (a1) { - GPIO_PinMuxFun(EPD_CLK, GPIO22_SSP2_SCK); - GPIO_PinMuxFun(EPD_MOSI, GPIO12_SSP2_TXD); - GPIO_PinMuxFun(EPD_MISO, GPIO13_SSP2_RXD); - SSP_Enable(SSP2_ID); - } else { - SSP_Disable(SSP2_ID); - GPIO_PinMuxFun(EPD_MOSI, 0); - GPIO_SetPinDir(EPD_MOSI, GPIO_OUTPUT); - GPIO_PinMuxFun(EPD_CLK, 0); - GPIO_SetPinDir(EPD_CLK, GPIO_OUTPUT); - GPIO_PinMuxFun(EPD_MISO, 0); - GPIO_SetPinDir(EPD_MISO, GPIO_INPUT); - GPIO_PinModeConfig(EPD_MISO, PINMODE_DEFAULT); - } -} - -void lutBeginTX(uint8_t reg) { - EPD_cmd(reg); - epd_pin_enable(1); - GPIO_WritePinOutput(EPD_CS, GPIO_IO_LOW); -} - -void lutEndTX() { - GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); - epd_pin_enable(0); -} - -void setDisplayWindow(uint16_t x, uint16_t y, uint16_t xe, uint16_t ye) { - x &= 0xFFF8; // byte boundary - xe = (xe - 1) | 0x0007; // byte boundary - 1 - EPD_cmd(0x91); - epdWrite(0x90, 9, x / 256, x % 256, xe / 256, xe % 256, y / 256, y % 256, ye / 256, ye % 256, 0x01); -} - -void display_tx_byte(uint8_t data) { - SSP_SendData(SSP2_ID, data); -} - -void display_send_start(uint8_t inverted) { - EPD_cmd(EPD_START_DATA); - epd_pin_enable(1); - GPIO_WritePinOutput(EPD_CS, GPIO_IO_LOW); -} - -void display_send_stop() { - for (int i = 0; i < 0xF; ++i) - __ISB(); - GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); - epd_pin_enable(0); -} - -void init_epd(void) { - printf("EPD Powerup begin\n"); - init_GPIO_EPD(); - epd_reset(); - - EPD_cmd(EPD_POWER_ON); - BUSY_wait(0x32u); - - // wake the eeprom - epdWrite(EPD_SPI_FLASH_CONTROL, 1, 0x01); - GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_LOW); - epdWrite(EPD_WAKE_EEPROM, 0x00); - GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_HIGH); - epdWrite(EPD_SPI_FLASH_CONTROL, 1, 0x00); - - epdWrite(EPD_POWER_SETTING, 4, 0x37, 0x00, 0x05, 0x05); // 0x37 - 00- 05 05 - // epdWrite(EPD_POWER_SETTING, 4, 0x07, 0x00, 0x05, 0x05); // 0x37 - 00- 05 05 - - epdWrite(EPD_PANEL_SETTING, 2, 0xC3, 0x08); // 0xC3-0x88 // lut from EEPROM - - epdWrite(EPD_POWER_OFF_SEQUENCE, 1, 0x00); - epdWrite(EPD_BOOSTER_SOFT_START, 0x03, 199, 204, 45); - - epdWrite(EPD_PLL_CONTROL, 0x01, 60); - epdWrite(EPD_TEMP_SELECT, 0x01, 0x00); - epdWrite(EPD_VCOM_DATA_INTERVAL, 0x01, 119); - epdWrite(EPD_TCON_SET, 0x01, 34); - epdWrite(EPD_TRES, 0x04, 2, 128, 1, 128); - - EPDtempBracket = getTempBracket(); - loadFrameRatePLL(EPDtempBracket); - loadTempVCOMDC(EPDtempBracket); -} - -void epdPrintf(uint16_t x, uint16_t y, bool color, const char *c, ...) { - // Render the text - char out_buffer[96]; - - uint16_t curX = 0; - memset(buffer, 0, sizeof(buffer)); - memset(charbuffer, 0, sizeof(charbuffer)); - va_list lst; - va_start(lst, c); - vsnprintf(out_buffer, 256, c, lst); - va_end(lst); - - curX = x % 8; - - char *text = (char *)out_buffer; - memset(charbuffer, 0, sizeof(charbuffer)); - curX = loadCharacter(*text, curX, true); - text++; - - while (*text != '\0') { - memset(charbuffer, 0, sizeof(charbuffer)); - curX = loadCharacter(*text, curX, false); - text++; - } - - x /= 8; - x *= 8; - dumpBuffer(x, y, curX); -} - -void drawImg(uint16_t x, uint16_t y, const uint8_t *img) { - uint16_t width = img[0]; - uint16_t height = img[1]; - img += 2; - setDisplayWindow(x, y, x + width, y + height); - display_send_start(0); - for (uint8_t curY = 0; curY < height; curY++) { - for (uint16_t curX = 0; curX < width; curX += 8) { - interleaveColor(*(img++), 0x00); - } - } - display_send_stop(); -} \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd.h deleted file mode 100755 index 29f36499..00000000 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd.h +++ /dev/null @@ -1,58 +0,0 @@ -#pragma once -//#include -#include -#include -#include - -#define DISPLAY_WIDTH (640) -#define DISPLAY_HEIGHT (384) -#define DISPLAY_WIDTH_MM (164) -#define DISPLAY_HEIGHT_MM (97) - -#define MAGNIFY1 3 -#define MAGNIFY2 2 -#define MAGNIFY3 1 -#define BACK_COLOR 3 -#define FORE_COLOR_1 0 -#define FORE_COLOR_2 4 -#define FORE_COLOR_3 0 - -#define EPD_LUT_DEFAULT 0 -#define EPD_LUT_NO_REPEATS 1 -#define EPD_LUT_FAST_NO_REDS 2 -#define EPD_LUT_FAST 3 - -#define EPD_DIRECTION_X false -#define EPD_DIRECTION_Y true -#define EPD_SIZE_SINGLE false -#define EPD_SIZE_DOUBLE true -#define EPD_COLOR_RED true -#define EPD_COLOR_BLACK false - -void init_GPIO_EPD(); -void display_send_buffer(); - -void epd_refresh_and_sleep(uint8_t lut); - -void display_tx_byte(uint8_t data); -void display_send_start(uint8_t inverted); -void display_send_stop(); - -void setDisplayWindow(uint16_t x, uint16_t y, uint16_t xe, uint16_t ye); - -void init_epd(); -void refresh_epd(); - -void lutBeginTX(uint8_t reg); -void lutEndTX(); - -void epd_pin_enable(int a1); - - -void fillWindow(uint16_t x, uint16_t y, uint16_t xe, uint16_t ye, uint8_t color); -void epdPrintf(uint16_t x, uint16_t y, bool color, const char* c, ...); - -void interleaveColor(uint8_t b, uint8_t r); -void interleaveBW(uint8_t); - -void drawImg(uint16_t x, uint16_t y, const uint8_t *img); \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd_interface.cpp b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd_interface.cpp new file mode 100644 index 00000000..561d2048 --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd_interface.cpp @@ -0,0 +1,265 @@ +#include "drawing.h" +#include +#include +#include +#include +#include + +#include "epd_interface.h" +#include "uc8159-var-m2.h" + +#include "mz100/printf.h" +#include "mz100/eeprom.h" + +#include "main.h" + +extern "C" { +#include "mz100/mz100_clock.h" + +#include "mz100/mz100_gpio.h" +#include "mz100/mz100_pinmux.h" +#include "mz100/mz100_ssp.h" +#include "mz100/mz100_wdt.h" +#include "mz100/util.h" +} + +#include "../../oepl-definitions.h" +#include "../../oepl-proto.h" + +epdInterface *epd; + +epdInterface::~epdInterface(){ + +} + +void epdSetup() { + epd = new uc8159; + epd->effectiveXRes = 640; + epd->effectiveYRes = 384; + epd->Xres = 640; + epd->Yres = 384; + epd->epdSetup(); +} + +void epdEnterSleep() { + epd->epdEnterSleep(); + delete epd; +} +void draw() { + epd->draw(); +} +void drawNoWait() { + epd->drawNoWait(); +} + +void epdWaitRdy() { + epd->epdWaitRdy(); +} + +void selectLUT(uint8_t sel) { + epd->selectLUT(sel); +} + +static void busyWaitUntilHigh(uint32_t timeout) { + uint32_t v2 = 0; + while (GPIO_ReadPinLevel(EPD_BUSY) == GPIO_IO_LOW) { + delay(10000); + v2++; + if (v2 > timeout) + break; + if (((v2 % 1000) / 10) == 0) + WDT_RestartCounter(); + } +} + +static void busyWaitUntilLow(uint32_t timeout) { + uint32_t v2 = 0; + while (GPIO_ReadPinLevel(EPD_BUSY) == GPIO_IO_HIGH) { + delay(10000); + v2++; + if (v2 > timeout) + break; + if (((v2 % 1000) / 10) == 0) + WDT_RestartCounter(); + } +} + +void busyWaitUntil(bool high, uint32_t timeout) { + if (high) + busyWaitUntilHigh(timeout); + else + busyWaitUntilLow(timeout); +} + +void softSPIWriteByte(char byteOut) { + uint8_t loopCount = 0; + do { + if ((byteOut & 0x80) != 0) + GPIO_WritePinOutput(EPD_MOSI, GPIO_IO_HIGH); + else + GPIO_WritePinOutput(EPD_MOSI, GPIO_IO_LOW); + delay_us(1); + GPIO_WritePinOutput(EPD_CLK, GPIO_IO_HIGH); + delay_us(1); + GPIO_WritePinOutput(EPD_CLK, GPIO_IO_LOW); + byteOut *= 2; + loopCount++; + delay(1); + } while (loopCount < 8); + GPIO_WritePinOutput(EPD_MOSI, GPIO_IO_LOW); + delay_us(1); +} + +uint8_t softSPIReadByte() { + uint8_t readByte = 0; + uint8_t loopCount = 0; + GPIO_WritePinOutput(EPD_BS, GPIO_IO_HIGH); + GPIO_WritePinOutput(EPD_CS, GPIO_IO_LOW); + delay_us(1); + GPIO_WritePinOutput(EPD_MOSI, GPIO_IO_HIGH); + GPIO_WritePinOutput(EPD_CLK, GPIO_IO_HIGH); + delay_us(1); + GPIO_WritePinOutput(EPD_CLK, GPIO_IO_LOW); + delay_us(1); + GPIO_SetPinDir(EPD_MOSI, GPIO_INPUT); + GPIO_PinMuxFun(EPD_MOSI, PINMUX_FUNCTION_0); + delay_us(3); + do { + readByte *= 2; + GPIO_WritePinOutput(EPD_CLK, GPIO_IO_HIGH); + if (GPIO_ReadPinLevel(EPD_MOSI)) + readByte |= 1u; + GPIO_WritePinOutput(EPD_CLK, GPIO_IO_LOW); + delay_us(1); + delay(1); + loopCount++; + } while (loopCount < 8); + GPIO_SetPinDir(EPD_MOSI, GPIO_OUTPUT); + GPIO_PinMuxFun(EPD_MOSI, PINMUX_FUNCTION_0); + GPIO_WritePinOutput(EPD_MOSI, GPIO_IO_LOW); + delay_us(1); + GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); + delay_us(1); + GPIO_WritePinOutput(EPD_BS, GPIO_IO_LOW); + delay(1); + return readByte; +} + +void enableHardSPI(bool enable) { + if (enable) { + GPIO_PinMuxFun(EPD_CLK, GPIO22_SSP2_SCK); + GPIO_PinMuxFun(EPD_MOSI, GPIO12_SSP2_TXD); + GPIO_PinMuxFun(EPD_MISO, GPIO13_SSP2_RXD); + SSP_Enable(SSP2_ID); + } else { + SSP_Disable(SSP2_ID); + GPIO_PinMuxFun(EPD_MOSI, PINMUX_FUNCTION_0); + GPIO_SetPinDir(EPD_MOSI, GPIO_OUTPUT); + GPIO_PinMuxFun(EPD_CLK, PINMUX_FUNCTION_0); + GPIO_SetPinDir(EPD_CLK, GPIO_OUTPUT); + GPIO_PinMuxFun(EPD_MISO, PINMUX_FUNCTION_0); + GPIO_SetPinDir(EPD_MISO, GPIO_INPUT); + GPIO_PinModeConfig(EPD_MISO, PINMODE_DEFAULT); + } +} + +void initEPDGPIO() { + SSP_CFG_Type v0; + SPI_Param_Type spiParaStruct; + GPIO_PinMuxFun(EPD_MOSI, PINMUX_FUNCTION_0); + GPIO_SetPinDir(EPD_MOSI, GPIO_OUTPUT); + GPIO_PinMuxFun(EPD_CLK, PINMUX_FUNCTION_0); + GPIO_SetPinDir(EPD_CLK, GPIO_OUTPUT); + GPIO_PinMuxFun(EPD_CS, PINMUX_FUNCTION_0); + GPIO_SetPinDir(EPD_CS, GPIO_OUTPUT); + GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); + GPIO_PinMuxFun(EPD_BUSY, PINMUX_FUNCTION_0); + GPIO_SetPinDir(EPD_BUSY, GPIO_INPUT); + GPIO_PinModeConfig(EPD_BUSY, PINMODE_PULLUP); + GPIO_PinMuxFun(EPD_RESET, PINMUX_FUNCTION_0); + GPIO_SetPinDir(EPD_RESET, GPIO_OUTPUT); + GPIO_WritePinOutput(EPD_RESET, GPIO_IO_HIGH); + GPIO_PinMuxFun(EPD_DC, PINMUX_FUNCTION_0); + GPIO_SetPinDir(EPD_DC, GPIO_OUTPUT); + GPIO_WritePinOutput(EPD_DC, GPIO_IO_HIGH); + GPIO_PinMuxFun(EPD_BS, PINMUX_FUNCTION_0); + GPIO_SetPinDir(EPD_BS, GPIO_OUTPUT); + GPIO_WritePinOutput(EPD_BS, GPIO_IO_LOW); + GPIO_PinMuxFun(EPD_HLT_CTRL, PINMUX_FUNCTION_0); + GPIO_SetPinDir(EPD_HLT_CTRL, GPIO_OUTPUT); + GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_HIGH); + GPIO_PinMuxFun(EPD_MISO, PINMUX_FUNCTION_0); + GPIO_SetPinDir(EPD_MISO, GPIO_INPUT); + GPIO_PinModeConfig(EPD_MISO, PINMODE_DEFAULT); + memset(&v0, 0, 9); + v0.timeOutVal = 0; + SSP_Init(SSP2_ID, &v0); + spiParaStruct.spiClkPhase = SPI_SCPHA_1; + spiParaStruct.spiClkPolarity = SPI_SCPOL_LOW; + SPI_Config(SSP2_ID, &spiParaStruct); + CLK_I2SClkSrc(CLK_I2S_XTAL32M); + CLK_SSPClkSrc(CLK_SSP_ID_2, CLK_SSP_I2S); + CLK_I2SClkDivider(1, 1); +} + +void epdWrite(uint8_t reg, uint8_t len, ...) { + va_list valist; + va_start(valist, len); + enableHardSPI(true); + GPIO_WritePinOutput(EPD_CS, GPIO_IO_LOW); + GPIO_WritePinOutput(EPD_DC, GPIO_IO_LOW); + + SSP_SendData(SSP2_ID, reg); + while (SSP_GetTxFifoLevel(SSP2_ID)) + ; + + GPIO_WritePinOutput(EPD_DC, GPIO_IO_HIGH); + + for (uint8_t i = 0; i < len; i++) { + SSP_SendData(SSP2_ID, va_arg(valist, int)); + } + while (SSP_GetTxFifoLevel(SSP2_ID)) + ; + delay_us(1); + GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); + enableHardSPI(false); + va_end(valist); +} +void epdBlockWrite(uint8_t reg, uint8_t *buffer, uint16_t len) { + enableHardSPI(true); + GPIO_WritePinOutput(EPD_CS, GPIO_IO_LOW); + GPIO_WritePinOutput(EPD_DC, GPIO_IO_LOW); + + SSP_SendData(SSP2_ID, reg); + while (SSP_GetTxFifoLevel(SSP2_ID)) + ; + + GPIO_WritePinOutput(EPD_DC, GPIO_IO_HIGH); + + for (uint16_t i = 0; i < len; i++) { + SSP_SendData(SSP2_ID, buffer[i]); + while (SSP_GetTxFifoLevel(SSP2_ID) > 8) + ; + } + while (SSP_GetTxFifoLevel(SSP2_ID)) + ; + delay_us(1); + GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); + enableHardSPI(false); +} +void epdBlockWrite(uint8_t *buffer, uint16_t len) { + enableHardSPI(true); + GPIO_WritePinOutput(EPD_CS, GPIO_IO_LOW); + GPIO_WritePinOutput(EPD_DC, GPIO_IO_HIGH); + + for (uint16_t i = 0; i < len; i++) { + SSP_SendData(SSP2_ID, buffer[i]); + while (SSP_GetTxFifoLevel(SSP2_ID) > 8) + ; + } + while (SSP_GetTxFifoLevel(SSP2_ID)) + ; + delay_us(1); + GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); + enableHardSPI(false); +} diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd_interface.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd_interface.h new file mode 100644 index 00000000..ac9738f3 --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd_interface.h @@ -0,0 +1,55 @@ +#pragma once +//#include +#include +#include +#include + +class epdInterface { + public: + virtual ~epdInterface() = 0; + virtual void epdSetup() = 0; + virtual void epdEnterSleep() = 0; + virtual void draw() = 0; + virtual void drawNoWait() = 0; + virtual void epdWaitRdy() = 0; + virtual void selectLUT(uint8_t lut) = 0; + uint8_t controllerType = 0; + uint16_t Xres; + uint16_t Yres; + uint16_t effectiveXRes; + uint16_t effectiveYRes; + uint16_t XOffset = 0; + uint16_t YOffset = 0; + bool drawDirectionRight = false; + bool epdMirrorV = false; + bool epdMirrorH = false; +}; + +//__attribute__((section(".aonshadow"))) +extern epdInterface* epd; + +void epdSetup(); +void epdEnterSleep(); + +void draw(); +void drawNoWait(); +void drawWithSleep(); +void epdWaitRdy(); + +#define EPD_LUT_DEFAULT 0 +#define EPD_LUT_NO_REPEATS 1 +#define EPD_LUT_FAST_NO_REDS 2 +#define EPD_LUT_FAST 3 + +void selectLUT(uint8_t lut); + +void initEPDGPIO(); + +void busyWaitUntil(bool high, uint32_t timeout); +void softSPIWriteByte(char byteOut); +uint8_t softSPIReadByte(); + +void enableHardSPI(bool enable); +void epdWrite(uint8_t reg, uint8_t len, ...); +void epdBlockWrite(uint8_t reg, uint8_t *buffer, uint16_t len); +void epdBlockWrite(uint8_t *buffer, uint16_t len); \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/font.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/font.h deleted file mode 100644 index 8e40237b..00000000 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/font.h +++ /dev/null @@ -1,260 +0,0 @@ -#pragma once -#include -static const uint8_t font[256][20]={ // https://raw.githubusercontent.com/basti79/LCD-fonts/master/10x16_vertikal_MSB_1.h -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x00 -{0xE0,0x01,0x30,0x03,0x50,0x02,0x28,0x05,0x28,0x04,0x28,0x04,0x28,0x05,0x50,0x02,0x30,0x03,0xE0,0x01}, // 0x01 -{0xE0,0x01,0xF0,0x03,0xB0,0x03,0xD8,0x06,0xD8,0x07,0xD8,0x07,0xD8,0x06,0xB0,0x03,0xF0,0x03,0xE0,0x01}, // 0x02 -{0x00,0x3E,0x80,0x7F,0xE0,0x7F,0xF0,0x7F,0xF8,0x3F,0xF8,0x3F,0xF0,0x7F,0xE0,0x7F,0x80,0x7F,0x00,0x3E}, // 0x03 -{0x00,0x01,0x80,0x03,0xC0,0x0F,0xE0,0x1F,0xF8,0x7F,0xF0,0x1F,0xE0,0x0F,0xC0,0x07,0x80,0x03,0x00,0x01}, // 0x04 -{0x80,0x03,0xC0,0x07,0xC0,0x07,0xC0,0x3F,0xF8,0x7F,0xB8,0x7F,0xC0,0x3F,0xC0,0x07,0xC0,0x07,0x80,0x03}, // 0x05 -{0x80,0x03,0xC0,0x07,0xC0,0x0F,0xC0,0x1F,0xF8,0x3F,0xB8,0x7F,0xC0,0x1F,0xC0,0x0F,0xC0,0x07,0x80,0x03}, // 0x06 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x07 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x08 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x09 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x0A -{0xE0,0x01,0x10,0x02,0x08,0x04,0x08,0x04,0x08,0x04,0x08,0x24,0x10,0x2E,0xE0,0x71,0x00,0x70,0x00,0x18}, // 0x0B -{0x00,0x00,0x00,0x1E,0x20,0x21,0xA0,0x40,0xF8,0x40,0xA0,0x40,0xA0,0x41,0x00,0x21,0x00,0x1E,0x00,0x00}, // 0x0C -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x0D -{0x06,0x00,0x0E,0x00,0x0E,0x00,0xFC,0x1F,0x00,0x18,0x30,0x10,0x70,0x30,0x70,0x20,0xE0,0x7F,0x00,0x00}, // 0x0E -{0x00,0x01,0xC0,0x0F,0xC0,0x04,0x40,0x08,0x60,0x18,0x40,0x08,0x40,0x04,0xC0,0x0C,0xC0,0x0B,0x00,0x01}, // 0x0F -{0xF8,0x0F,0xF0,0x07,0xF0,0x07,0xE0,0x03,0xE0,0x03,0xE0,0x03,0xC0,0x01,0xC0,0x01,0x80,0x00,0x80,0x00}, // 0x10 -{0x80,0x00,0x80,0x00,0xC0,0x01,0xC0,0x01,0xE0,0x03,0xE0,0x03,0xE0,0x03,0xF0,0x07,0xF0,0x07,0xF8,0x0F}, // 0x11 -{0x00,0x00,0x00,0x00,0x08,0x10,0x04,0x20,0xFE,0x7F,0x04,0x20,0x08,0x10,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x12 -{0x00,0x00,0x00,0x00,0xD8,0x7F,0x00,0x00,0x00,0x00,0xD8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x13 -{0x00,0x00,0x00,0x38,0x00,0x7C,0x00,0x7E,0xFE,0x7F,0x00,0x40,0x00,0x40,0xFE,0x7F,0x00,0x00,0x00,0x00}, // 0x14 -{0x00,0x00,0x00,0x00,0x86,0x3B,0xC2,0x4C,0x42,0x44,0x62,0x46,0x32,0x42,0xDC,0x41,0x00,0x00,0x00,0x00}, // 0x15 -{0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x00}, // 0x16 -{0x00,0x00,0x00,0x00,0x11,0x10,0x09,0x20,0xFD,0x7F,0x09,0x20,0x11,0x10,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x17 -{0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x20,0xFE,0x7F,0x00,0x20,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x18 -{0x00,0x00,0x00,0x00,0x08,0x00,0x04,0x00,0xFE,0x7F,0x04,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x19 -{0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xA0,0x02,0xC0,0x01,0x80,0x00,0x00,0x00}, // 0x1A -{0x00,0x00,0x80,0x00,0xC0,0x01,0xA0,0x02,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00,0x00}, // 0x1B -{0x00,0x00,0xF8,0x07,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x00,0x00}, // 0x1C -{0x00,0x00,0x80,0x00,0xC0,0x01,0xA0,0x02,0x80,0x00,0x80,0x00,0xA0,0x02,0xC0,0x01,0x80,0x00,0x00,0x00}, // 0x1D -{0x08,0x00,0x18,0x00,0x78,0x00,0xF8,0x01,0xF8,0x03,0xF8,0x0F,0xF8,0x03,0xF8,0x00,0x38,0x00,0x08,0x00}, // 0x1E -{0x00,0x08,0x00,0x0C,0x00,0x0F,0xC0,0x0F,0xE0,0x0F,0xF8,0x0F,0xE0,0x0F,0x80,0x0F,0x00,0x0E,0x00,0x08}, // 0x1F -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x20 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x21 -{0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x22 -{0x80,0x00,0x98,0x04,0xE0,0x05,0x80,0x1E,0x98,0x64,0xE0,0x05,0x80,0x1E,0x80,0x64,0x80,0x04,0x00,0x00}, // 0x23 -{0x00,0x00,0x00,0x00,0x18,0x38,0x08,0x64,0x08,0x42,0xFC,0xFF,0x88,0x41,0xF0,0x40,0x00,0x00,0x00,0x00}, // 0x24 -{0x08,0x38,0x10,0x44,0x20,0x44,0xC0,0x44,0x00,0x39,0x70,0x02,0x88,0x0C,0x88,0x10,0x88,0x20,0x70,0x40}, // 0x25 -{0xE0,0x00,0x10,0x01,0x08,0x3A,0x08,0x46,0x88,0x45,0xC8,0x4C,0x38,0x38,0x18,0x00,0x68,0x00,0x80,0x01}, // 0x26 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x27 -{0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x18,0x18,0x0C,0x30,0x04,0x20,0x02,0x40,0x02,0x40,0x00,0x00}, // 0x28 -{0x00,0x00,0x02,0x40,0x02,0x40,0x04,0x20,0x0C,0x30,0x18,0x18,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x29 -{0x00,0x00,0x00,0x10,0x00,0x18,0x00,0x0F,0x00,0x72,0x00,0x0F,0x00,0x18,0x00,0x10,0x00,0x00,0x00,0x00}, // 0x2A -{0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0xF8,0x07,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x00}, // 0x2B -{0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x2C -{0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x00,0x00}, // 0x2D -{0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x2E -{0x00,0x00,0x02,0x00,0x0C,0x00,0x30,0x00,0xC0,0x00,0x00,0x03,0x00,0x0C,0x00,0x30,0x00,0x40,0x00,0x00}, // 0x2F -{0x00,0x00,0xC0,0x0F,0x30,0x30,0x08,0x40,0x08,0x40,0x08,0x40,0x30,0x30,0xC0,0x0F,0x00,0x00,0x00,0x00}, // 0x30 -{0x00,0x00,0x08,0x20,0x08,0x20,0x08,0x20,0xF8,0x7F,0x08,0x00,0x08,0x00,0x08,0x00,0x00,0x00,0x00,0x00}, // 0x31 -{0x00,0x00,0x18,0x60,0x28,0x40,0x48,0x40,0x88,0x40,0x08,0x43,0x08,0x3C,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x32 -{0x00,0x00,0x00,0x00,0x08,0x40,0x08,0x42,0x08,0x42,0x08,0x42,0xF0,0x3D,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x33 -{0xC0,0x00,0x40,0x03,0x40,0x04,0x40,0x18,0x40,0x20,0xF8,0x7F,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00}, // 0x34 -{0x00,0x00,0x00,0x00,0x08,0x7C,0x08,0x44,0x08,0x44,0x10,0x42,0xE0,0x41,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x35 -{0x00,0x00,0xE0,0x0F,0x10,0x32,0x08,0x44,0x08,0x44,0x08,0x44,0x10,0x42,0xE0,0x01,0x00,0x00,0x00,0x00}, // 0x36 -{0x00,0x00,0x00,0x40,0x18,0x40,0xE0,0x40,0x00,0x43,0x00,0x4C,0x00,0x50,0x00,0x60,0x00,0x00,0x00,0x00}, // 0x37 -{0x00,0x00,0xF0,0x38,0x08,0x45,0x08,0x42,0x08,0x42,0x08,0x45,0x90,0x45,0x60,0x38,0x00,0x00,0x00,0x00}, // 0x38 -{0x00,0x00,0x00,0x1E,0x08,0x21,0x88,0x40,0x88,0x40,0x88,0x40,0x30,0x21,0xC0,0x1F,0x00,0x00,0x00,0x00}, // 0x39 -{0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x06,0x18,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x3A -{0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x06,0x1E,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x3B -{0x00,0x00,0x00,0x00,0xC0,0x00,0xC0,0x00,0x20,0x01,0x20,0x01,0x10,0x02,0x10,0x02,0x08,0x04,0x00,0x00}, // 0x3C -{0x00,0x00,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x00,0x00}, // 0x3D -{0x00,0x00,0x08,0x04,0x10,0x02,0x10,0x02,0x20,0x01,0x20,0x01,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,0x00}, // 0x3E -{0x00,0x00,0x00,0x70,0x00,0x40,0xD8,0x40,0x00,0x41,0x00,0x42,0x00,0x64,0x00,0x38,0x00,0x00,0x00,0x00}, // 0x3F -{0xC0,0x0F,0x30,0x18,0x18,0x20,0xC8,0x47,0x28,0x48,0x68,0x50,0xD8,0x51,0xE0,0x3F,0x20,0x00,0x20,0x00}, // 0x40 -{0x08,0x00,0x70,0x00,0xC0,0x01,0x40,0x0E,0x40,0x18,0x40,0x0C,0x40,0x03,0xC0,0x00,0x30,0x00,0x08,0x00}, // 0x41 -{0x00,0x00,0xF8,0x1F,0x08,0x11,0x08,0x11,0x08,0x11,0x08,0x11,0x88,0x12,0x70,0x0C,0x00,0x00,0x00,0x00}, // 0x42 -{0xC0,0x03,0x30,0x0C,0x10,0x08,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x18,0x00,0x00,0x00,0x00}, // 0x43 -{0x00,0x00,0xF8,0x1F,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x10,0x08,0xE0,0x07,0x00,0x00,0x00,0x00}, // 0x44 -{0x00,0x00,0xF8,0x1F,0x88,0x10,0x88,0x10,0x88,0x10,0x88,0x10,0x88,0x10,0x08,0x10,0x00,0x00,0x00,0x00}, // 0x45 -{0x00,0x00,0xF8,0x1F,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x00,0x10,0x00,0x00,0x00,0x00}, // 0x46 -{0x00,0x00,0xC0,0x03,0x30,0x0C,0x10,0x08,0x08,0x10,0x08,0x10,0x88,0x10,0x88,0x10,0xF8,0x18,0x00,0x00}, // 0x47 -{0x00,0x00,0xF8,0x1F,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xF8,0x1F,0x00,0x00,0x00,0x00}, // 0x48 -{0x00,0x00,0x08,0x10,0x08,0x10,0x08,0x10,0xF8,0x1F,0x08,0x10,0x08,0x10,0x08,0x10,0x00,0x00,0x00,0x00}, // 0x49 -{0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x10,0x08,0x10,0x08,0x10,0xF0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x4A -{0x00,0x00,0xF8,0x1F,0x00,0x01,0x80,0x01,0x40,0x02,0x20,0x04,0x20,0x08,0x10,0x10,0x08,0x00,0x00,0x00}, // 0x4B -{0x00,0x00,0xF8,0x1F,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x00,0x00,0x00,0x00}, // 0x4C -{0xF8,0x1F,0x00,0x1C,0x80,0x07,0xE0,0x00,0x60,0x00,0x80,0x03,0x00,0x1C,0xF8,0x1F,0x00,0x00,0x00,0x00}, // 0x4D -{0x00,0x00,0xF8,0x1F,0x00,0x08,0x00,0x06,0x80,0x01,0x60,0x00,0x10,0x00,0xF8,0x1F,0x00,0x00,0x00,0x00}, // 0x4E -{0x00,0x00,0xE0,0x07,0x10,0x08,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x10,0x08,0xE0,0x07,0x00,0x00}, // 0x4F -{0x00,0x00,0xF8,0x1F,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x00,0x11,0x00,0x0E,0x00,0x00,0x00,0x00}, // 0x50 -{0x00,0x00,0xE0,0x07,0x10,0x08,0x08,0x10,0x08,0x10,0x08,0x10,0x0C,0x10,0x12,0x08,0xE2,0x07,0x00,0x00}, // 0x51 -{0x00,0x00,0xF8,0x1F,0x80,0x10,0x80,0x10,0xC0,0x10,0x20,0x11,0x10,0x0E,0x08,0x00,0x00,0x00,0x00,0x00}, // 0x52 -{0x00,0x00,0x18,0x0E,0x08,0x12,0x08,0x11,0x08,0x11,0x88,0x10,0x90,0x10,0x70,0x18,0x00,0x00,0x00,0x00}, // 0x53 -{0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xF8,0x1F,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00}, // 0x54 -{0x00,0x00,0xE0,0x1F,0x18,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x10,0x00,0xE0,0x1F,0x00,0x00,0x00,0x00}, // 0x55 -{0x00,0x10,0x00,0x0C,0x80,0x03,0x60,0x00,0x18,0x00,0x18,0x00,0xE0,0x00,0x00,0x03,0x00,0x0C,0x00,0x10}, // 0x56 -{0x00,0x18,0xC0,0x07,0x38,0x00,0xF0,0x00,0x00,0x07,0x80,0x03,0x70,0x00,0x38,0x00,0xC0,0x07,0x00,0x18}, // 0x57 -{0x08,0x10,0x10,0x08,0x20,0x04,0x40,0x02,0x80,0x01,0x80,0x01,0x40,0x02,0x20,0x04,0x10,0x08,0x08,0x10}, // 0x58 -{0x00,0x10,0x00,0x08,0x00,0x06,0x00,0x01,0xF8,0x00,0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10}, // 0x59 -{0x00,0x00,0x18,0x10,0x28,0x10,0x48,0x10,0x88,0x10,0x08,0x11,0x08,0x12,0x08,0x14,0x08,0x18,0x00,0x00}, // 0x5A -{0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x7F,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x00,0x00,0x00}, // 0x5B -{0x00,0x00,0x00,0x40,0x00,0x30,0x00,0x0C,0x00,0x03,0xC0,0x00,0x30,0x00,0x0C,0x00,0x02,0x00,0x00,0x00}, // 0x5C -{0x00,0x00,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x5D -{0x00,0x00,0x20,0x00,0xC0,0x00,0x00,0x07,0x00,0x1C,0x00,0x70,0x00,0x0E,0xC0,0x01,0x20,0x00,0x00,0x00}, // 0x5E -{0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00}, // 0x5F -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x60 -{0x00,0x00,0x30,0x00,0x48,0x04,0x88,0x04,0x88,0x04,0x90,0x04,0xF8,0x03,0x08,0x00,0x00,0x00,0x00,0x00}, // 0x61 -{0x00,0x00,0xF8,0x7F,0x10,0x02,0x08,0x04,0x08,0x04,0x08,0x04,0x10,0x06,0xE0,0x01,0x00,0x00,0x00,0x00}, // 0x62 -{0x00,0x00,0xE0,0x01,0x10,0x02,0x08,0x04,0x08,0x04,0x08,0x04,0x08,0x04,0x08,0x04,0x00,0x00,0x00,0x00}, // 0x63 -{0x00,0x00,0xE0,0x01,0x18,0x02,0x08,0x04,0x08,0x04,0x08,0x04,0x10,0x02,0xF8,0x7F,0x00,0x00,0x00,0x00}, // 0x64 -{0x00,0x00,0xE0,0x01,0x90,0x02,0x88,0x04,0x88,0x04,0x88,0x04,0x88,0x04,0x88,0x03,0x00,0x00,0x00,0x00}, // 0x65 -{0x00,0x00,0x00,0x04,0x00,0x04,0xF8,0x3F,0x00,0x24,0x00,0x44,0x00,0x44,0x00,0x44,0x00,0x44,0x00,0x00}, // 0x66 -{0x00,0x00,0xE0,0x01,0x19,0x02,0x09,0x04,0x09,0x04,0x09,0x04,0x12,0x02,0xFC,0x07,0x00,0x00,0x00,0x00}, // 0x67 -{0x00,0x00,0xF8,0x7F,0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x04,0x00,0x04,0xF8,0x03,0x00,0x00,0x00,0x00}, // 0x68 -{0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x64,0xF8,0x67,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x69 -{0x00,0x00,0x01,0x00,0x01,0x04,0x01,0x04,0x01,0x64,0xFE,0x67,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x6A -{0x00,0x00,0xF8,0x7F,0x80,0x00,0xC0,0x00,0x20,0x01,0x20,0x02,0x10,0x02,0x08,0x04,0x00,0x00,0x00,0x00}, // 0x6B -{0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00,0x40,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x6C -{0xF8,0x07,0x00,0x02,0x00,0x04,0x00,0x04,0xF8,0x03,0x00,0x02,0x00,0x04,0x00,0x04,0xF8,0x03,0x00,0x00}, // 0x6D -{0x00,0x00,0xF8,0x07,0x00,0x03,0x00,0x02,0x00,0x04,0x00,0x04,0x00,0x04,0xF8,0x03,0x00,0x00,0x00,0x00}, // 0x6E -{0x00,0x00,0xE0,0x01,0x10,0x02,0x08,0x04,0x08,0x04,0x08,0x04,0x10,0x02,0xE0,0x01,0x00,0x00,0x00,0x00}, // 0x6F -{0x00,0x00,0xFF,0x07,0x10,0x02,0x08,0x04,0x08,0x04,0x08,0x04,0x10,0x06,0xE0,0x01,0x00,0x00,0x00,0x00}, // 0x70 -{0x00,0x00,0xE0,0x01,0x18,0x02,0x08,0x04,0x08,0x04,0x08,0x04,0x10,0x02,0xFF,0x07,0x00,0x00,0x00,0x00}, // 0x71 -{0x00,0x00,0x00,0x00,0xF8,0x07,0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x04,0x00,0x07,0x00,0x00,0x00,0x00}, // 0x72 -{0x00,0x00,0x18,0x03,0x88,0x04,0x88,0x04,0x48,0x04,0x48,0x04,0x30,0x04,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x73 -{0x00,0x00,0x00,0x04,0x00,0x04,0xF0,0x1F,0x08,0x04,0x08,0x04,0x08,0x04,0x08,0x04,0x00,0x00,0x00,0x00}, // 0x74 -{0x00,0x00,0xF0,0x07,0x08,0x00,0x08,0x00,0x08,0x00,0x10,0x00,0xF8,0x07,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x75 -{0x00,0x04,0x80,0x03,0x60,0x00,0x18,0x00,0x08,0x00,0x30,0x00,0xC0,0x00,0x00,0x03,0x00,0x04,0x00,0x00}, // 0x76 -{0x00,0x06,0xE0,0x01,0x18,0x00,0x70,0x00,0x80,0x03,0x80,0x01,0x70,0x00,0x18,0x00,0xE0,0x01,0x00,0x06}, // 0x77 -{0x00,0x00,0x08,0x04,0x10,0x02,0x20,0x01,0xC0,0x00,0xC0,0x00,0x20,0x01,0x10,0x02,0x08,0x04,0x00,0x00}, // 0x78 -{0x01,0x04,0x01,0x03,0xC1,0x00,0x62,0x00,0x1C,0x00,0x18,0x00,0x60,0x00,0x80,0x00,0x00,0x03,0x00,0x04}, // 0x79 -{0x00,0x00,0x08,0x04,0x18,0x04,0x28,0x04,0x48,0x04,0x88,0x04,0x08,0x05,0x08,0x06,0x08,0x04,0x00,0x00}, // 0x7A -{0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x7C,0x3F,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x00,0x00,0x00}, // 0x7B -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x7C -{0x00,0x00,0x00,0x00,0x02,0x40,0x02,0x40,0x02,0x40,0x7C,0x3F,0x80,0x00,0x80,0x00,0x00,0x00,0x00,0x00}, // 0x7D -{0xC0,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x80,0x00,0x80,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x80,0x01}, // 0x7E -{0x00,0x00,0xF8,0x01,0x08,0x03,0x08,0x04,0x08,0x08,0x08,0x04,0x08,0x03,0xF8,0x01,0x00,0x00,0x00,0x00}, // 0x7F -{0xC0,0x03,0x30,0x0C,0x10,0x08,0x08,0x10,0x08,0x10,0x09,0x10,0x0D,0x10,0x0B,0x18,0x00,0x00,0x00,0x00}, // 0x80 -{0x00,0x00,0xF0,0x07,0x08,0x20,0x08,0x00,0x08,0x00,0x10,0x20,0xF8,0x07,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x81 -{0x00,0x00,0xE0,0x01,0x90,0x02,0x88,0x04,0x88,0x24,0x88,0x44,0x88,0x04,0x88,0x03,0x00,0x00,0x00,0x00}, // 0x82 -{0x00,0x00,0x30,0x00,0x48,0x24,0x88,0x44,0x88,0x44,0x90,0x24,0xF8,0x03,0x08,0x00,0x00,0x00,0x00,0x00}, // 0x83 -{0x00,0x00,0x30,0x00,0x48,0x24,0x88,0x04,0x88,0x04,0x90,0x24,0xF8,0x03,0x08,0x00,0x00,0x00,0x00,0x00}, // 0x84 -{0x00,0x00,0x30,0x00,0x48,0x44,0x88,0x24,0x88,0x04,0x90,0x04,0xF8,0x03,0x08,0x00,0x00,0x00,0x00,0x00}, // 0x85 -{0x00,0x00,0x30,0x00,0x48,0x04,0x88,0x44,0x88,0xA4,0x90,0x44,0xF8,0x03,0x08,0x00,0x00,0x00,0x00,0x00}, // 0x86 -{0x00,0x00,0xE0,0x01,0x10,0x02,0x08,0x04,0x09,0x04,0x0D,0x04,0x0B,0x04,0x08,0x04,0x00,0x00,0x00,0x00}, // 0x87 -{0x00,0x00,0xE0,0x01,0x90,0x22,0x88,0x44,0x88,0x44,0x88,0x24,0x88,0x04,0x88,0x03,0x00,0x00,0x00,0x00}, // 0x88 -{0x00,0x00,0xE0,0x01,0x90,0x02,0x88,0x24,0x88,0x04,0x88,0x04,0x88,0x24,0x88,0x03,0x00,0x00,0x00,0x00}, // 0x89 -{0x00,0x00,0xE0,0x01,0x90,0x02,0x88,0x44,0x88,0x24,0x88,0x04,0x88,0x04,0x88,0x03,0x00,0x00,0x00,0x00}, // 0x8A -{0x00,0x00,0x00,0x04,0x00,0x24,0x00,0x04,0xF8,0x07,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x8B -{0x00,0x00,0x00,0x04,0x00,0x24,0x00,0x44,0xF8,0x47,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x8C -{0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x44,0xF8,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x8D -{0x08,0x00,0x70,0x00,0xC0,0x81,0x40,0x0E,0x40,0x18,0x40,0x0C,0x40,0x83,0xC0,0x00,0x30,0x00,0x08,0x00}, // 0x8E -{0x08,0x00,0x70,0x00,0xC0,0x01,0x40,0x4E,0x40,0xB0,0x40,0xB8,0x40,0x4F,0xC0,0x01,0x70,0x00,0x08,0x00}, // 0x8F -{0x00,0x00,0xF8,0x1F,0x88,0x10,0x88,0x10,0x88,0x50,0x88,0x90,0x88,0x10,0x08,0x10,0x00,0x00,0x00,0x00}, // 0x90 -{0x70,0x04,0xC8,0x04,0x88,0x04,0x88,0x04,0xF0,0x03,0x98,0x04,0x88,0x04,0x88,0x04,0x88,0x03,0x00,0x00}, // 0x91 -{0x08,0x00,0x30,0x00,0xE0,0x01,0x20,0x06,0x20,0x18,0xF8,0x1F,0x88,0x10,0x88,0x10,0x08,0x10,0x00,0x00}, // 0x92 -{0x00,0x00,0xE0,0x01,0x10,0x22,0x08,0x44,0x08,0x44,0x08,0x24,0x10,0x02,0xE0,0x01,0x00,0x00,0x00,0x00}, // 0x93 -{0x00,0x00,0xE0,0x01,0x10,0x22,0x08,0x04,0x08,0x04,0x08,0x24,0x10,0x02,0xE0,0x01,0x00,0x00,0x00,0x00}, // 0x94 -{0x00,0x00,0xE0,0x01,0x10,0x42,0x08,0x24,0x08,0x04,0x08,0x04,0x10,0x02,0xE0,0x01,0x00,0x00,0x00,0x00}, // 0x95 -{0x00,0x00,0xF0,0x07,0x08,0x20,0x08,0x40,0x08,0x40,0x10,0x20,0xF8,0x07,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x96 -{0x00,0x00,0xF0,0x07,0x08,0x40,0x08,0x20,0x08,0x00,0x10,0x00,0xF8,0x07,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x97 -{0x01,0x04,0x01,0x03,0xC1,0x20,0x62,0x00,0x1C,0x00,0x18,0x20,0x60,0x00,0x80,0x00,0x00,0x03,0x00,0x04}, // 0x98 -{0x00,0x00,0xE0,0x07,0x10,0x88,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x90,0x10,0x08,0xE0,0x07,0x00,0x00}, // 0x99 -{0x00,0x00,0xE0,0x1F,0x18,0x80,0x08,0x00,0x08,0x00,0x08,0x00,0x10,0x80,0xE0,0x1F,0x00,0x00,0x00,0x00}, // 0x9A -{0x00,0x00,0xE8,0x01,0x10,0x02,0x28,0x04,0xC8,0x04,0x08,0x05,0x10,0x02,0xE0,0x05,0x00,0x00,0x00,0x00}, // 0x9B -{0x00,0x00,0x00,0x00,0x08,0x00,0x18,0x02,0xE8,0x3F,0x08,0x42,0x08,0x42,0x08,0x40,0x00,0x00,0x00,0x00}, // 0x9C -{0x00,0x00,0xE8,0x07,0x30,0x08,0x68,0x10,0x88,0x10,0x08,0x11,0x08,0x16,0x10,0x0C,0xE0,0x17,0x00,0x00}, // 0x9D -{0x00,0x00,0x08,0x04,0x10,0x02,0x20,0x01,0xC0,0x00,0xC0,0x00,0x20,0x01,0x10,0x02,0x08,0x04,0x00,0x00}, // 0x9E -{0x00,0x00,0x01,0x00,0x01,0x04,0x01,0x04,0xFE,0x7F,0x00,0x84,0x00,0x84,0x00,0x80,0x00,0x00,0x00,0x00}, // 0x9F -{0x00,0x00,0x30,0x00,0x48,0x04,0x88,0x04,0x88,0x24,0x90,0x44,0xF8,0x03,0x08,0x00,0x00,0x00,0x00,0x00}, // 0xA0 -{0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x04,0xF8,0x27,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xA1 -{0x00,0x00,0xE0,0x01,0x10,0x02,0x08,0x04,0x08,0x24,0x08,0x44,0x10,0x02,0xE0,0x01,0x00,0x00,0x00,0x00}, // 0xA2 -{0x00,0x00,0xF0,0x07,0x08,0x00,0x08,0x00,0x08,0x20,0x10,0x40,0xF8,0x07,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xA3 -{0x00,0x00,0xF8,0x07,0x00,0x23,0x00,0x42,0x00,0x24,0x00,0x24,0x00,0x44,0xF8,0x03,0x00,0x00,0x00,0x00}, // 0xA4 -{0x00,0x00,0xF8,0x1F,0x00,0x48,0x00,0x86,0x80,0xC1,0x60,0x40,0x10,0x80,0xF8,0x1F,0x00,0x00,0x00,0x00}, // 0xA5 -{0x00,0x00,0x00,0x00,0x00,0x4C,0x00,0x52,0x00,0x52,0x00,0x52,0x00,0x3E,0x00,0x02,0x00,0x00,0x00,0x00}, // 0xA6 -{0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x3C,0x00,0x00,0x00,0x00}, // 0xA7 -{0x00,0x00,0x0E,0x00,0x13,0x00,0x11,0x00,0x21,0x00,0xC1,0x06,0x01,0x00,0x07,0x00,0x00,0x00,0x00,0x00}, // 0xA8 -{0x00,0x00,0x00,0x1C,0x00,0x22,0x00,0x5D,0x00,0x55,0x00,0x5D,0x00,0x22,0x00,0x1C,0x00,0x00,0x00,0x00}, // 0xA9 -{0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0xE0,0x01,0x00,0x00}, // 0xAA -{0x08,0x40,0x30,0x7E,0x40,0x00,0x80,0x01,0x00,0x06,0x00,0x08,0x08,0x31,0x38,0x41,0x28,0x01,0xC8,0x00}, // 0xAB -{0x08,0x40,0x30,0x7E,0x40,0x00,0x80,0x01,0x00,0x06,0x60,0x08,0xA0,0x30,0x20,0x41,0xF8,0x01,0x20,0x00}, // 0xAC -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xAD -{0x00,0x00,0x80,0x00,0x40,0x01,0x20,0x02,0x10,0x04,0x80,0x00,0x40,0x01,0x20,0x02,0x10,0x04,0x00,0x00}, // 0xAE -{0x00,0x00,0x10,0x04,0x20,0x02,0x40,0x01,0x80,0x00,0x10,0x04,0x20,0x02,0x40,0x01,0x80,0x00,0x00,0x00}, // 0xAF -{0x36,0xDB,0x36,0xDB,0x00,0x00,0x36,0xDB,0x36,0xDB,0x00,0x00,0x36,0xDB,0x36,0xDB,0x00,0x00,0x00,0x00}, // 0xB0 -{0xDB,0x36,0xDB,0x36,0x36,0xDB,0xFF,0xFF,0xDB,0x36,0x36,0xDB,0xFF,0xFF,0xDB,0x36,0x36,0xDB,0x36,0xDB}, // 0xB1 -{0xFF,0xFF,0xFF,0xFF,0x36,0xDB,0xFF,0xFF,0xFF,0xFF,0x36,0xDB,0xFF,0xFF,0xFF,0xFF,0x36,0xDB,0x36,0xDB}, // 0xB2 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xB3 -{0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xB4 -{0x08,0x00,0x70,0x00,0xC0,0x01,0x40,0x0E,0x40,0x58,0x40,0x8C,0x40,0x03,0xC0,0x00,0x30,0x00,0x08,0x00}, // 0xB5 -{0x08,0x00,0x70,0x00,0xC0,0x01,0x40,0x4E,0x40,0x98,0x40,0x8C,0x40,0x43,0xC0,0x00,0x30,0x00,0x08,0x00}, // 0xB6 -{0x08,0x00,0x70,0x00,0xC0,0x01,0x40,0x8E,0x40,0x58,0x40,0x0C,0x40,0x03,0xC0,0x00,0x30,0x00,0x08,0x00}, // 0xB7 -{0xC0,0x0F,0x30,0x30,0x98,0x67,0xC8,0x4C,0x48,0x48,0x48,0x48,0x58,0x68,0x30,0x30,0xC0,0x0F,0x00,0x00}, // 0xB8 -{0x40,0x01,0x40,0x01,0x40,0x01,0x7F,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xB9 -{0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xBA -{0x40,0x01,0x40,0x01,0x40,0x01,0x7F,0x01,0x00,0x01,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xBB -{0x40,0x01,0x40,0x01,0x40,0x01,0x40,0xFF,0x40,0x00,0xC0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xBC -{0x00,0x00,0xC0,0x0F,0x20,0x10,0x30,0x20,0x10,0x20,0xF8,0x7F,0x10,0x20,0x10,0x20,0x00,0x00,0x00,0x00}, // 0xBD -{0x00,0x40,0x00,0x20,0x20,0x19,0x20,0x05,0xF8,0x03,0x20,0x05,0x20,0x09,0x00,0x10,0x00,0x20,0x00,0x40}, // 0xBE -{0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xBF -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00}, // 0xC0 -{0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0xFF,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00}, // 0xC1 -{0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFF,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00}, // 0xC2 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00}, // 0xC3 -{0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00}, // 0xC4 -{0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFF,0xFF,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00}, // 0xC5 -{0x00,0x00,0x30,0x00,0x48,0x24,0x88,0x44,0x88,0x24,0x90,0x24,0xF8,0x43,0x08,0x00,0x00,0x00,0x00,0x00}, // 0xC6 -{0x08,0x00,0x70,0x00,0xC0,0x41,0x40,0x8E,0x40,0xD8,0x40,0x4C,0x40,0x83,0xC0,0x00,0x30,0x00,0x08,0x00}, // 0xC7 -{0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x40,0x00,0x40,0xFF,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01}, // 0xC8 -{0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x01,0x7F,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01}, // 0xC9 -{0x40,0x01,0x40,0x01,0x40,0x01,0x40,0xFF,0x40,0x00,0x40,0xFF,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01}, // 0xCA -{0x40,0x01,0x40,0x01,0x40,0x01,0x7F,0x01,0x00,0x01,0x7F,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01}, // 0xCB -{0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x7F,0xFF,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01}, // 0xCC -{0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01}, // 0xCD -{0x40,0x01,0x40,0x01,0x40,0x01,0x7F,0xFF,0x00,0x00,0x7F,0xFF,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01}, // 0xCE -{0x00,0x00,0x20,0x10,0xC0,0x0F,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0xC0,0x0F,0x20,0x10,0x00,0x00}, // 0xCF -{0x00,0x00,0xE0,0x41,0x10,0x52,0x08,0x74,0x08,0x24,0x08,0x54,0x10,0x0E,0xE0,0x03,0x00,0x00,0x00,0x00}, // 0xD0 -{0x00,0x01,0xF8,0x1F,0x08,0x11,0x08,0x11,0x08,0x10,0x08,0x10,0x10,0x08,0xE0,0x07,0x00,0x00,0x00,0x00}, // 0xD1 -{0x00,0x00,0xF8,0x1F,0x88,0x10,0x88,0x50,0x88,0x90,0x88,0x90,0x88,0x50,0x08,0x10,0x00,0x00,0x00,0x00}, // 0xD2 -{0x00,0x00,0xF8,0x1F,0x88,0x90,0x88,0x10,0x88,0x10,0x88,0x10,0x88,0x90,0x08,0x10,0x00,0x00,0x00,0x00}, // 0xD3 -{0x00,0x00,0xF8,0x1F,0x88,0x10,0x88,0x10,0x88,0x90,0x88,0x50,0x88,0x10,0x08,0x10,0x00,0x00,0x00,0x00}, // 0xD4 -{0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x04,0xF8,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xD5 -{0x00,0x00,0x08,0x10,0x08,0x10,0x08,0x10,0xF8,0x5F,0x08,0x90,0x08,0x10,0x08,0x10,0x00,0x00,0x00,0x00}, // 0xD6 -{0x00,0x00,0x08,0x10,0x08,0x10,0x08,0x50,0xF8,0x9F,0x08,0x90,0x08,0x50,0x08,0x10,0x00,0x00,0x00,0x00}, // 0xD7 -{0x00,0x00,0x08,0x10,0x08,0x90,0x08,0x10,0xF8,0x1F,0x08,0x10,0x08,0x90,0x08,0x10,0x00,0x00,0x00,0x00}, // 0xD8 -{0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xD9 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00}, // 0xDA -{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}, // 0xDB -{0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00}, // 0xDC -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xDD -{0x00,0x00,0x08,0x10,0x08,0x10,0x08,0x90,0xF8,0x5F,0x08,0x10,0x08,0x10,0x08,0x10,0x00,0x00,0x00,0x00}, // 0xDE -{0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF}, // 0xDF -{0x00,0x00,0xE0,0x07,0x10,0x08,0x08,0x10,0x08,0x50,0x08,0x90,0x08,0x10,0x10,0x08,0xE0,0x07,0x00,0x00}, // 0xE0 -{0x00,0x00,0xF8,0x3F,0x00,0x40,0x00,0x40,0x08,0x47,0x88,0x38,0x48,0x00,0x30,0x00,0x00,0x00,0x00,0x00}, // 0xE1 -{0x00,0x00,0xE0,0x07,0x10,0x08,0x08,0x50,0x08,0x90,0x08,0x90,0x08,0x50,0x10,0x08,0xE0,0x07,0x00,0x00}, // 0xE2 -{0x00,0x00,0xE0,0x07,0x10,0x08,0x08,0x90,0x08,0x50,0x08,0x10,0x08,0x10,0x10,0x08,0xE0,0x07,0x00,0x00}, // 0xE3 -{0x00,0x00,0xE0,0x01,0x10,0x22,0x08,0x44,0x08,0x24,0x08,0x24,0x10,0x42,0xE0,0x01,0x00,0x00,0x00,0x00}, // 0xE4 -{0x00,0x00,0xE0,0x07,0x10,0x48,0x08,0x90,0x08,0xD0,0x08,0x50,0x08,0x90,0x10,0x08,0xE0,0x07,0x00,0x00}, // 0xE5 -{0x00,0x00,0xFF,0x07,0x10,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x10,0x00,0xF8,0x07,0x00,0x00,0x00,0x00}, // 0xE6 -{0x00,0x00,0xFF,0x7F,0x10,0x02,0x08,0x04,0x08,0x04,0x08,0x04,0x10,0x06,0xE0,0x01,0x00,0x00,0x00,0x00}, // 0xE7 -{0x00,0x00,0xF8,0x1F,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x40,0x04,0x80,0x03,0x00,0x00,0x00,0x00}, // 0xE8 -{0x00,0x00,0xE0,0x1F,0x18,0x00,0x08,0x00,0x08,0x40,0x08,0x80,0x10,0x00,0xE0,0x1F,0x00,0x00,0x00,0x00}, // 0xE9 -{0x00,0x00,0xE0,0x1F,0x18,0x00,0x08,0x40,0x08,0x80,0x08,0x80,0x10,0x40,0xE0,0x1F,0x00,0x00,0x00,0x00}, // 0xEA -{0x00,0x00,0xE0,0x1F,0x18,0x00,0x08,0x80,0x08,0x40,0x08,0x00,0x10,0x00,0xE0,0x1F,0x00,0x00,0x00,0x00}, // 0xEB -{0x01,0x04,0x01,0x03,0xC1,0x00,0x62,0x00,0x1C,0x20,0x18,0x40,0x60,0x00,0x80,0x00,0x00,0x03,0x00,0x04}, // 0xEC -{0x00,0x10,0x00,0x08,0x00,0x06,0x00,0x01,0xF8,0x40,0x00,0x81,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10}, // 0xED -{0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80}, // 0xEE -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xEF -{0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x00,0x00}, // 0xF0 -{0x00,0x00,0x08,0x01,0x08,0x01,0x08,0x01,0x08,0x01,0xC8,0x07,0x08,0x01,0x08,0x01,0x08,0x01,0x00,0x00}, // 0xF1 -{0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00}, // 0xF2 -{0x08,0x42,0x10,0x52,0x20,0x5A,0xC0,0x6C,0x00,0x01,0x60,0x02,0xA0,0x0C,0x20,0x11,0xF8,0x21,0x20,0x40}, // 0xF3 -{0x00,0x00,0x00,0x38,0x00,0x7C,0x00,0x7E,0xFE,0x7F,0x00,0x40,0x00,0x40,0xFE,0x7F,0x00,0x00,0x00,0x00}, // 0xF4 -{0x00,0x00,0x00,0x00,0x86,0x3B,0xC2,0x4C,0x42,0x44,0x62,0x46,0x32,0x42,0xDC,0x41,0x00,0x00,0x00,0x00}, // 0xF5 -{0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x58,0x06,0x58,0x06,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x00}, // 0xF6 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x05,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xF7 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x48,0x00,0x48,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xF8 -{0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xF9 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xFA -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xFB -{0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x52,0x00,0x52,0x00,0x52,0x00,0x6C,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xFC -{0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x46,0x00,0x4A,0x00,0x4A,0x00,0x32,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xFD -{0x00,0x00,0xF8,0x07,0xF8,0x07,0xF8,0x07,0xF8,0x07,0xF8,0x07,0xF8,0x07,0xF8,0x07,0xF8,0x07,0x00,0x00}, // 0xFE -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00} // 0xFF -}; \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/main.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/main.cpp old mode 100755 new mode 100644 similarity index 86% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/main.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/main.cpp index 53be5514..04a2d21a --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/main.c +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/main.cpp @@ -1,33 +1,46 @@ -#include "main.h" +// #include "main.h" #include #include #include +#include +#include "epd_interface.h" + +extern "C" { + +#include "main.h" #include "comms.h" -#include "core_cm3.h" -#include "eeprom.h" -#include "epd.h" -#include "gpio.h" -#include "mz100.h" -#include "mz100_aon_ram.h" -#include "mz100_clock.h" -#include "mz100_flash.h" -#include "mz100_gpio.h" -#include "mz100_pinmux.h" -#include "mz100_pmu.h" -#include "mz100_sleep.h" -#include "mz100_ssp.h" -#include "mz100_uart.h" +#include "mz100/core_cm3.h" +#include "mz100/eeprom.h" + +#include "mz100/gpio.h" +#include "mz100/mz100.h" +#include "mz100/mz100_aon_ram.h" +#include "mz100/mz100_clock.h" +#include "mz100/mz100_flash.h" +#include "mz100/mz100_gpio.h" +#include "mz100/mz100_pinmux.h" +#include "mz100/mz100_pmu.h" +#include "mz100/mz100_sleep.h" +#include "mz100/mz100_ssp.h" +#include "mz100/mz100_uart.h" #include "powermgt.h" -#include "printf.h" +#include "mz100/printf.h" #include "proto.h" #include "settings.h" #include "syncedproto.h" -#include "timer.h" -#include "userinterface.h" -#include "util.h" +#include "mz100/timer.h" + +#include "mz100/util.h" #include "zigbee.h" +extern void dump(const uint8_t *a, const uint16_t l); +} + +#include "compression.h" +#include "userinterface.h" + +#include "oepl_fs.h" #define SW_VER_CURRENT (0x0000011300000000ull) // top 16 bits are off limits, xxxx.VV.tt.vvvv.mmmm means version V.t.v.m #define SW_DEFAULT_MAC (0x0000000000000014ull) @@ -51,8 +64,8 @@ bool protectedFlashWrite(uint32_t address, uint8_t *buffer, uint32_t num) { while (attempt--) { qspiEraseRange(address, num); delay(50); - FLASH_Write(false, address, buffer, num); - FLASH_Read(0, address, buf2, num); + FLASH_Write((FLASH_ProgramMode_Type) false, address, buffer, num); + FLASH_Read((FLASH_ReadMode_Type)0, address, buf2, num); if (memcmp(buffer, buf2, num) == 0) { printf("Flash block at %06X written successfully\n", address); free(buf2); @@ -66,14 +79,14 @@ bool protectedFlashWrite(uint32_t address, uint8_t *buffer, uint32_t num) { } static void prvGetSelfMac(void) { - FLASH_Read(0, EEPROM_MAC_INFO_START, mSelfMac, 8); + FLASH_Read((FLASH_ReadMode_Type)0, EEPROM_MAC_INFO_START, mSelfMac, 8); if ((((uint32_t *)mSelfMac)[0] | ((uint32_t *)mSelfMac)[1]) == 0 || (((uint32_t *)mSelfMac)[0] & ((uint32_t *)mSelfMac)[1]) == 0xffffffff) { // fastest way to check for all ones or all zeroes printf("mac unknown\r\n"); // Write a blank mac to have something to work with. memcpy(&mSelfMac, (uint8_t *)&default_mac, 8); - FLASH_Write(0, EEPROM_MAC_INFO_START, mSelfMac, 8); + FLASH_Write((FLASH_ProgramMode_Type)0, EEPROM_MAC_INFO_START, mSelfMac, 8); // sleep_with_with_wakeup(0); } } @@ -210,18 +223,18 @@ void setupUART() { UART_CFG_Type uartcfg; uartcfg.baudRate = 115200; uartcfg.dataBits = UART_DATABITS_8; - uartcfg.stopBits = 1; + uartcfg.stopBits = (UART_StopBits_Type)1; uartcfg.parity = UART_PARITY_NONE; uartcfg.autoFlowControl = DISABLE; - UART_Init(1, &uartcfg); + UART_Init((UART_ID_Type)1, &uartcfg); UART_FIFO_Type uartFifo; - uartFifo.FIFO_ResetRx = 1; - uartFifo.FIFO_ResetTx = 1; - uartFifo.FIFO_Function = 1; - uartFifo.FIFO_RcvrTrigger = 2; - uartFifo.FIFO_TxEmptyTrigger = 3; - UART_FIFOConfig(1, &uartFifo); + uartFifo.FIFO_ResetRx = (FunctionalState)1; + uartFifo.FIFO_ResetTx = (FunctionalState)1; + uartFifo.FIFO_Function = (FunctionalState)1; + uartFifo.FIFO_RcvrTrigger = (UART_RxFIFOLevel_Type)2; + uartFifo.FIFO_TxEmptyTrigger = (UART_TxFIFOLevel_Type)3; + UART_FIFOConfig((UART_ID_Type)1, &uartFifo); // UART 1 DEBUG OUT } @@ -242,9 +255,9 @@ void setupGPIO() { // NFC POWER Should be on if NFC is wanted to be used GPIO_PinOutputModeConfig(NFC_POWER, PIN_OUTPUT_MODE_NORMAL_FUNCTION); GPIO_PinModeConfig(NFC_POWER, PINMODE_DEFAULT); - GPIO_PinMuxFun(NFC_POWER, 0); + GPIO_PinMuxFun(NFC_POWER, (GPIO_PinMuxFunc_Type)0); GPIO_SetPinDir(NFC_POWER, GPIO_OUTPUT); - GPIO_WritePinOutput(NFC_POWER, 1); // Better power NFC up so IRQ will work unpowered later + GPIO_WritePinOutput(NFC_POWER, (GPIO_IO_Type)1); // Better power NFC up so IRQ will work unpowered later //** GPIOS if (!(~(*(volatile unsigned int *)0x4A080000) << 30)) { NVIC_EnableIRQ(ExtPin5_IRQn); @@ -269,6 +282,7 @@ void setupCLKCalib() { void TagAssociated() { // associated struct AvailDataInfo *avail; + printf("longDataReqCounter = %d\n", longDataReqCounter); // Is there any reason why we should do a long (full) get data request (including reason, status)? if ((longDataReqCounter > LONG_DATAREQ_INTERVAL) || wakeUpReason != WAKEUP_REASON_TIMED) { // check if we should do a voltage measurement (those are pretty expensive) @@ -298,6 +312,7 @@ void TagAssociated() { } powerUp(INIT_RADIO); + printf("full request\n"); avail = getAvailDataInfo(); powerDown(INIT_RADIO); @@ -416,29 +431,31 @@ int main(void) { setupGPIO(); setupCLKCalib(); setupUART(); + // fs = new OEPLFs(); printf("Rst reason: %i\r\n", PMU_GetLastResetCause()); printf("AON is not valid!\n"); setupRTC(); clearAonRam(); - + prvGetSelfMac(); showSplashScreen(); + delay(10000); currentChannel = 0; zigbeeCalibData.isValid = false; wakeUpReason = WAKEUP_REASON_FIRSTBOOT; - prvGetSelfMac(); initializeProto(); printf("Erz data\r\n"); initPowerSaving(INTERVAL_BASE); loadDefaultSettings(); doVoltageReading(); - qspiEraseRange(EEPROM_SETTINGS_AREA_START, EEPROM_SETTINGS_AREA_LEN); + // qspiEraseRange(EEPROM_SETTINGS_AREA_START, EEPROM_SETTINGS_AREA_LEN); sprintf(macStr, "(" MACFMT ")", MACCVT(mSelfMac)); currentChannel = showChannelSelect(); WDT_RestartCounter(); if (currentChannel) { printf("AP Found\r\n"); + delay(10000); showAPFound(); sprintf(macStr1, "OpenEPaperLink Ch: %i", currentChannel); timerDelay(TIMER_TICKS_PER_MSEC * 1000); @@ -449,17 +466,20 @@ int main(void) { sleep_with_with_wakeup(120000UL); currentTagMode = TAG_MODE_CHANSEARCH; } + powerUp(INIT_UART); } else { - // setupWDT(); + setupWDT(); // turn me off setupGPIO(); - // setupCLKCalib(); - // setupUART(); - // setupRTC(); + setupCLKCalib(); // turn me off + // setupUART();// turn me off + // setupRTC();// turn me off memset(curBlock.requestedParts, 0x00, BLOCK_REQ_PARTS_BYTES); + powerUp(INIT_UART); + + // fs = new OEPLFs(); } - powerUp(INIT_UART); while (1) { wdt10s(); switch (currentTagMode) { @@ -475,7 +495,7 @@ int main(void) { } int _write(int file, char *ptr, int len) { - UART_SendBytes(1, ptr, len); + UART_SendBytes((UART_ID_Type)1, ptr, len); return len; } @@ -492,18 +512,24 @@ void applyUpdate() { // apparently, the flash process is more reliable if we do these two first setupCLKCalib(); setupRTC(); - + showApplyUpdate(); + + printf("Applying update\r\n"); + qspiEraseRange(EEPROM_OS_START, EEPROM_OS_LEN); + size = EEPROM_OS_LEN; for (ofst = 0; ofst < size; ofst += now) { now = size - ofst; if (now > pieceSz) now = pieceSz; printf("Cpy 0x%06x + 0x%04x to 0x%06x\r\n", EEPROM_UPDATE_START + ofst, now, EEPROM_OS_START + ofst); - FLASH_Read(0, EEPROM_UPDATE_START + ofst, chunkStore, now); + FLASH_Read((FLASH_ReadMode_Type)0, EEPROM_UPDATE_START + ofst, chunkStore, now); protectedFlashWrite(EEPROM_OS_START + ofst, chunkStore, now); WDT_RestartCounter(); } - NVIC_SystemReset(); + printf("Resetting!\n"); + delay(1000); + sleep_with_with_wakeup(1000); } diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/main.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/main.h index 91e07da8..a1e3f4b3 100755 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/main.h +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/main.h @@ -3,32 +3,31 @@ #include #include #include -#include "core_cm3.h" +//#include "core_cm3.h" #define NO_GUI 0 // Set this to one for faster developing, not Refresh on the E-Paper while showing Full screen messages -#define TEST_PIN 3 -#define RF_WAKEUP_PIN 5 +#define TEST_PIN GPIO_3 +#define RF_WAKEUP_PIN GPIO_5 -#define UART_TX 4 -#define UART_RX 6 +#define UART_TX GPIO_4 +#define UART_RX GPIO_6 -#define NFC_POWER 1 -#define NFC_IRQ 7 -#define NFC_SCL 28 -#define NFC_SDA 29 +#define NFC_POWER GPIO_1 +#define NFC_IRQ GPIO_7 +#define NFC_SCL GPIO_28 +#define NFC_SDA GPIO_29 -#define EPD_BS 2 -#define EPD_MOSI 12 -#define EPD_MISO 13 -#define EPD_CLK 22 -#define EPD_CS 23 -#define EPD_RESET 24 -#define EPD_DC 26 -#define EPD_BUSY 27 -#define EPD_HLT_CTRL 25 +#define EPD_BS GPIO_2 +#define EPD_MOSI GPIO_12 +#define EPD_MISO GPIO_13 +#define EPD_CLK GPIO_22 +#define EPD_CS GPIO_23 +#define EPD_RESET GPIO_24 +#define EPD_DC GPIO_26 +#define EPD_BUSY GPIO_27 +#define EPD_HLT_CTRL GPIO_25 #define RADIO_FIRST_CHANNEL (11) //2.4-GHz channels start at 11 - -void applyUpdate(); \ No newline at end of file +void applyUpdate(); diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/md5.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/md5.c new file mode 100644 index 00000000..f79a427b --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/md5.c @@ -0,0 +1,223 @@ +/* + * Derived from the RSA Data Security, Inc. MD5 Message-Digest Algorithm + * and modified slightly to be functionally identical but condensed into control structures. + */ + +#include "md5.h" + +/* + * Constants defined by the MD5 algorithm + */ +#define A 0x67452301 +#define B 0xefcdab89 +#define C 0x98badcfe +#define D 0x10325476 + +static uint32_t S[] = {7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, + 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, + 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, + 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21}; + +static uint32_t K[] = {0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee, + 0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501, + 0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be, + 0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821, + 0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa, + 0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8, + 0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed, + 0xa9e3e905, 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a, + 0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c, + 0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70, + 0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x04881d05, + 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665, + 0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039, + 0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1, + 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1, + 0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391}; + +/* + * Padding used to make the size (in bits) of the input congruent to 448 mod 512 + */ +static uint8_t PADDING[] = {0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + +/* + * Bit-manipulation functions defined by the MD5 algorithm + */ +#define F(X, Y, Z) ((X & Y) | (~X & Z)) +#define G(X, Y, Z) ((X & Z) | (Y & ~Z)) +#define H(X, Y, Z) (X ^ Y ^ Z) +#define I(X, Y, Z) (Y ^ (X | ~Z)) + +/* + * Rotates a 32-bit word left by n bits + */ +uint32_t rotateLeft(uint32_t x, uint32_t n){ + return (x << n) | (x >> (32 - n)); +} + + +/* + * Initialize a context + */ +void md5Init(MD5Context *ctx){ + ctx->size = (uint64_t)0; + + ctx->buffer[0] = (uint32_t)A; + ctx->buffer[1] = (uint32_t)B; + ctx->buffer[2] = (uint32_t)C; + ctx->buffer[3] = (uint32_t)D; +} + +/* + * Add some amount of input to the context + * + * If the input fills out a block of 512 bits, apply the algorithm (md5Step) + * and save the result in the buffer. Also updates the overall size. + */ +void md5Update(MD5Context *ctx, uint8_t *input_buffer, size_t input_len){ + uint32_t input[16]; + unsigned int offset = ctx->size % 64; + ctx->size += (uint64_t)input_len; + + // Copy each byte in input_buffer into the next space in our context input + for(unsigned int i = 0; i < input_len; ++i){ + ctx->input[offset++] = (uint8_t)*(input_buffer + i); + + // If we've filled our context input, copy it into our local array input + // then reset the offset to 0 and fill in a new buffer. + // Every time we fill out a chunk, we run it through the algorithm + // to enable some back and forth between cpu and i/o + if(offset % 64 == 0){ + for(unsigned int j = 0; j < 16; ++j){ + // Convert to little-endian + // The local variable `input` our 512-bit chunk separated into 32-bit words + // we can use in calculations + input[j] = (uint32_t)(ctx->input[(j * 4) + 3]) << 24 | + (uint32_t)(ctx->input[(j * 4) + 2]) << 16 | + (uint32_t)(ctx->input[(j * 4) + 1]) << 8 | + (uint32_t)(ctx->input[(j * 4)]); + } + md5Step(ctx->buffer, input); + offset = 0; + } + } +} + +/* + * Pad the current input to get to 448 bytes, append the size in bits to the very end, + * and save the result of the final iteration into digest. + */ +void md5Finalize(MD5Context *ctx){ + uint32_t input[16]; + unsigned int offset = ctx->size % 64; + unsigned int padding_length = offset < 56 ? 56 - offset : (56 + 64) - offset; + + // Fill in the padding and undo the changes to size that resulted from the update + md5Update(ctx, PADDING, padding_length); + ctx->size -= (uint64_t)padding_length; + + // Do a final update (internal to this function) + // Last two 32-bit words are the two halves of the size (converted from bytes to bits) + for(unsigned int j = 0; j < 14; ++j){ + input[j] = (uint32_t)(ctx->input[(j * 4) + 3]) << 24 | + (uint32_t)(ctx->input[(j * 4) + 2]) << 16 | + (uint32_t)(ctx->input[(j * 4) + 1]) << 8 | + (uint32_t)(ctx->input[(j * 4)]); + } + input[14] = (uint32_t)(ctx->size * 8); + input[15] = (uint32_t)((ctx->size * 8) >> 32); + + md5Step(ctx->buffer, input); + + // Move the result into digest (convert from little-endian) + for(unsigned int i = 0; i < 4; ++i){ + ctx->digest[(i * 4) + 0] = (uint8_t)((ctx->buffer[i] & 0x000000FF)); + ctx->digest[(i * 4) + 1] = (uint8_t)((ctx->buffer[i] & 0x0000FF00) >> 8); + ctx->digest[(i * 4) + 2] = (uint8_t)((ctx->buffer[i] & 0x00FF0000) >> 16); + ctx->digest[(i * 4) + 3] = (uint8_t)((ctx->buffer[i] & 0xFF000000) >> 24); + } +} + +/* + * Step on 512 bits of input with the main MD5 algorithm. + */ +void md5Step(uint32_t *buffer, uint32_t *input){ + uint32_t AA = buffer[0]; + uint32_t BB = buffer[1]; + uint32_t CC = buffer[2]; + uint32_t DD = buffer[3]; + + uint32_t E; + + unsigned int j; + + for(unsigned int i = 0; i < 64; ++i){ + switch(i / 16){ + case 0: + E = F(BB, CC, DD); + j = i; + break; + case 1: + E = G(BB, CC, DD); + j = ((i * 5) + 1) % 16; + break; + case 2: + E = H(BB, CC, DD); + j = ((i * 3) + 5) % 16; + break; + default: + E = I(BB, CC, DD); + j = (i * 7) % 16; + break; + } + + uint32_t temp = DD; + DD = CC; + CC = BB; + BB = BB + rotateLeft(AA + E + K[i] + input[j], S[i]); + AA = temp; + } + + buffer[0] += AA; + buffer[1] += BB; + buffer[2] += CC; + buffer[3] += DD; +} + +/* + * Functions that run the algorithm on the provided input and put the digest into result. + * result should be able to store 16 bytes. + */ +void md5String(char *input, uint8_t *result){ + MD5Context ctx; + md5Init(&ctx); + md5Update(&ctx, (uint8_t *)input, strlen(input)); + md5Finalize(&ctx); + + memcpy(result, ctx.digest, 16); +} + +void md5File(FILE *file, uint8_t *result){ + char *input_buffer = malloc(1024); + size_t input_size = 0; + + MD5Context ctx; + md5Init(&ctx); + + while((input_size = fread(input_buffer, 1, 1024, file)) > 0){ + md5Update(&ctx, (uint8_t *)input_buffer, input_size); + } + + md5Finalize(&ctx); + + free(input_buffer); + + memcpy(result, ctx.digest, 16); +} diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/md5.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/md5.h new file mode 100644 index 00000000..ad18e931 --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/md5.h @@ -0,0 +1,21 @@ +#ifndef MD5_H +#define MD5_H + +#include +#include +#include +#include + +typedef struct{ + uint64_t size; // Size of input in bytes + uint32_t buffer[4]; // Current accumulation of hash + uint8_t input[64]; // Input to be used in the next step + uint8_t digest[16]; // Result of algorithm +}MD5Context; + +void md5Init(MD5Context *ctx); +void md5Update(MD5Context *ctx, uint8_t *input, size_t input_len); +void md5Finalize(MD5Context *ctx); +void md5Step(uint32_t *buffer, uint32_t *input); + +#endif \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/img_tbird.bin b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/img_tbird.bin new file mode 100644 index 00000000..72798458 Binary files /dev/null and b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/img_tbird.bin differ diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/mkfs.oepl b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/mkfs.oepl new file mode 100644 index 00000000..fb5ef57e Binary files /dev/null and b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/mkfs.oepl differ diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/mkfs.oepl.cpp b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/mkfs.oepl.cpp new file mode 100644 index 00000000..b6cfd50d --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/mkfs.oepl.cpp @@ -0,0 +1,253 @@ +#include +#include +#include +//#include +#include +#include +#include + +#pragma pack(1) + + +/* + This prepares a FS binary for use with the 88mz100-based OEPL Tag Firmware + Jelmer Bruijn 2024 +*/ + +#define PROGMEM +#define WINDOW_SIZE 12 // 4096 bytes +#define FILENAME_LENGTH 32 + + +typedef struct { + uint16_t bitmapOffset; ///< Pointer into GFXfont->bitmap + uint8_t width; ///< Bitmap dimensions in pixels + uint8_t height; ///< Bitmap dimensions in pixels + uint8_t xAdvance; ///< Distance to advance cursor (x axis) + int8_t xOffset; ///< X dist from cursor pos to UL corner + int8_t yOffset; ///< Y dist from cursor pos to UL corner +} GFXglyph; + +/// Data stored for FONT AS A WHOLE +typedef struct { + uint8_t *bitmap; ///< Glyph bitmaps, concatenated + GFXglyph *glyph; ///< Glyph array + uint16_t first; ///< ASCII extents (first char) + uint16_t last; ///< ASCII extents (last char) + uint8_t yAdvance; ///< Newline distance (y axis) +} GFXfont; + + +typedef struct { + uint16_t first; + uint16_t last; + uint8_t yAdvance; + char glyphFile[FILENAME_LENGTH]; + char bitmapFile[FILENAME_LENGTH]; +} GFXFontOEPL; + +typedef struct { + char name[FILENAME_LENGTH]; + uint32_t offset; + uint32_t len; +} OEPLFile; + +std::vector files; +uint8_t* buffer = nullptr; // temporary holds the entire FS +uint32_t curOffset = 0; +char OEPLHeader[12] = "---OEPL_FS!"; +FILE *wptr; + + +void dump(const uint8_t *a, const uint16_t l) { + printf("\n "); +#define ROWS 16 + for (uint8_t c = 0; c < ROWS; c++) { + printf(" %02X", c); + } + printf("\n--------"); + for (uint8_t c = 0; c < ROWS; c++) { + printf("---"); + } + for (uint16_t c = 0; c < l; c++) { + if ((c % ROWS) == 0) { + printf("\n0x%04X | ", c); + } + printf("%02X ", a[c]); + } + printf("\n--------"); + for (uint8_t c = 0; c < ROWS; c++) { + printf("---"); + } + printf("\n"); +} + + +unsigned long doCompress(uint8_t* in, uint32_t in_len, uint8_t* out) { + *((uint32_t*)out) = in_len; + z_stream stream; + stream.zalloc = Z_NULL; + stream.zfree = Z_NULL; + stream.opaque = Z_NULL; + stream.avail_in = (uInt)in_len; + stream.next_in = (Bytef*)in; + stream.avail_out = (uInt)(in_len+1337); + stream.next_out = (Bytef*)(out+4); + *((uint32_t*)out) = in_len; + + if (deflateInit2(&stream, Z_BEST_COMPRESSION, Z_DEFLATED, WINDOW_SIZE, 8, Z_DEFAULT_STRATEGY) != Z_OK) { + fprintf(stderr, "Error initializing zlib for compression\n"); + return 1; + } + if (deflate(&stream, Z_FINISH) != Z_STREAM_END) { + fprintf(stderr, "Error compressing data\n"); + deflateEnd(&stream); + return 1; + } + if (deflateEnd(&stream) != Z_OK) { + fprintf(stderr, "Error finalizing compression\n"); + return 1; + } + dump(out, 16); + return stream.total_out+4; +} + + + +void addFile(uint8_t* filedata, uint16_t len, char* filename, bool compress){ + char newfilename[FILENAME_LENGTH]; + if(compress){ + if(strlen(filename)>(FILENAME_LENGTH-3)){ + printf("Filename '%s' is too long\n", filename); + return; + } + uint8_t* tmpbuffer = (uint8_t*)malloc(len + 1337); + unsigned long out_len = doCompress(filedata, len, tmpbuffer); + if(out_len==1){ + printf("Compression of %s failed\n", filename); + return; + } + filedata = tmpbuffer; + uint8_t rounded = (uint8_t)((float)100*out_len/len); + printf("Compressed %s \033[50D\033[40C: %u \033[50D\033[47C -> %lu \033[70D\033[58C(%d%%)\n", filename, len, out_len, rounded); + len = out_len; + uint8_t flen = strlen(filename); + strncpy(newfilename,filename,FILENAME_LENGTH-3); + strcpy(newfilename + flen, ".z"); + filename = newfilename; + } + + + + if(strlen(filename)>(FILENAME_LENGTH-1)){ + printf("Filename '%s' is too long\n", filename); + return; + } + if(!buffer){ + buffer = (uint8_t*)malloc(len); + } else { + buffer = (uint8_t*)realloc((void*)buffer, curOffset + len); + } + memcpy(buffer+curOffset, filedata, len); + if(compress)free(filedata); + OEPLFile* file = new OEPLFile; + strcpy(file->name,filename); + file->offset = curOffset; + file->len = len; + files.push_back(file); + curOffset+=len; +} + +void addFileFromFS(const char* filename, bool compress){ + FILE* file = fopen(filename, "rb"); + + if (file == NULL) { + fprintf(stderr, "Error opening file: %s\n", filename); + return; + } + + fseek(file, 0, SEEK_END); + long fileSize = ftell(file); + rewind(file); + + char* fileContent = (char*)malloc(fileSize); + + if (fileContent == NULL) { + fprintf(stderr, "Error allocating memory for file content\n"); + fclose(file); + return; + } + + size_t bytesRead = fread(fileContent, 1, fileSize, file); + addFile((uint8_t*)fileContent, fileSize, (char*)filename, compress); +} + + +void printFAT(){ + printf("OEPL Filesystem Summary:\n"); + uint16_t tableSize = files.size() * sizeof(OEPLFile); + tableSize += sizeof(OEPLHeader)-1; + fwrite(OEPLHeader,sizeof(OEPLHeader)-1,1,wptr); + uint32_t fssize = 0; + for(OEPLFile* file : files){ + file->offset += tableSize; + fwrite((uint8_t*)file,sizeof(OEPLFile),1,wptr); + printf("file: %s \033[50D\033[37C size=%u \033[50D\033[51C offset=0x%04X\n",file->name, file->len, file->offset); + fssize = file->len + file->offset; + } + printf("Total FS size: %u\n", fssize); +} + +void saveFontData(const GFXfont* font, char* name){ + if(strlen(name)>(FILENAME_LENGTH-7)){ + printf("Font filename '%s' is too long\n", name); + return; + } + GFXFontOEPL fontdata; + fontdata.first = font->first; + fontdata.last = font->last; + fontdata.yAdvance = font->yAdvance; + strcpy(fontdata.glyphFile, name); + strcpy(fontdata.bitmapFile, name); + uint8_t len = strlen(fontdata.glyphFile); + strcpy(fontdata.glyphFile + len, ".glyph"); + strcpy(fontdata.bitmapFile + len, ".bmp"); + addFile((uint8_t*)&fontdata, sizeof(GFXFontOEPL), name, false); + + + uint16_t glyphLen = font->last - font->first; + uint16_t lastOffset = font->glyph[glyphLen].bitmapOffset; + uint16_t lastBitmapSize = font->glyph[glyphLen].width * font->glyph[glyphLen].height; + uint8_t lastBitmapBytes = lastBitmapSize/8; + if(lastBitmapSize%8)lastBitmapBytes++; + uint16_t bitmapSize = lastOffset + lastBitmapBytes; + int16_t glyphSize = (glyphLen + 1) * sizeof(GFXglyph); + + addFile((uint8_t*)font->glyph, glyphSize, fontdata.glyphFile, false); + addFile((uint8_t*)font->bitmap, bitmapSize, fontdata.bitmapFile, false); +} + + + +#include "../../common/fonts/FreeSans9pt7b.h" +#include "../../common/fonts/FreeSansBold18pt7b.h" +#include "../../common/fonts/FreeSansBold24pt7b.h" +#include "../../common/bitmaps.h" + +int main(){ + wptr = fopen("../build/fs.img","wb"); // w for write, b for binary + + /* FONTS */ + saveFontData(&FreeSansBold24pt7b, (char*)"font/FreeSansBold24pt7b"); + saveFontData(&FreeSansBold18pt7b, (char*)"font/FreeSansBold18pt7b"); + saveFontData(&FreeSans9pt7b, (char*)"font/FreeSans9pt7b"); + + /* OTHER STUFF */ + addFile((uint8_t*)sadpanda, sizeof(sadpanda), "img/sadpanda", true); + //addFileFromFS("img_tbird.bin", true); + printFAT(); + fwrite(buffer,curOffset,1,wptr); + fclose(wptr); + + return 0; +} diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/mkfs.oepl.sh b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/mkfs.oepl.sh new file mode 100644 index 00000000..343a0699 --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/mkfs.oepl.sh @@ -0,0 +1,4 @@ +rm mkfs.oepl +g++ mkfs.oepl.cpp -lz -o mkfs.oepl +./mkfs.oepl + diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/testcompress.cpp b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/testcompress.cpp new file mode 100644 index 00000000..110ccbd5 --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/testcompress.cpp @@ -0,0 +1,57 @@ +#include +#include +#include +#include + +int main() { + // Input string to compress + const char* inputString = "This is a sample string to compress and add a gzip header.werugweroiguie;wroigj;eworijg;oewirjg;oeiwrjg;oiewrj;goiewjr;ogiejw;rojig;ewoirjg;oewijrg;oewirj;goeiwj;roiwheg;orihg"; + + // Length of the input string + size_t inputLength = strlen(inputString); + + // Allocate memory for compressed data + size_t compressedBufferSize = compressBound(inputLength) + 18; // Additional space for gzip header + char* compressedBuffer = (char*)malloc(compressedBufferSize); + + // Compression parameters with reduced window size (8 bits) + z_stream stream; + stream.zalloc = Z_NULL; + stream.zfree = Z_NULL; + stream.opaque = Z_NULL; + stream.avail_in = (uInt)inputLength; + stream.next_in = (Bytef*)inputString; + stream.avail_out = (uInt)compressedBufferSize; + stream.next_out = (Bytef*)compressedBuffer; + + // Initialize compression with gzip header and reduced window size (8 bits) + if (deflateInit2(&stream, Z_DEFAULT_COMPRESSION, Z_DEFLATED, 8, 8, Z_DEFAULT_STRATEGY) != Z_OK) { + fprintf(stderr, "Error initializing zlib for compression\n"); + free(compressedBuffer); + return 1; + } + + // Perform compression + if (deflate(&stream, Z_FINISH) != Z_STREAM_END) { + fprintf(stderr, "Error compressing data\n"); + deflateEnd(&stream); + free(compressedBuffer); + return 1; + } + + // Finalize compression + if (deflateEnd(&stream) != Z_OK) { + fprintf(stderr, "Error finalizing compression\n"); + free(compressedBuffer); + return 1; + } + + // Display results + printf("Original string length: %zu bytes\n", inputLength); + printf("Compressed data length: %lu bytes\n", (unsigned long)stream.total_out); + + // Clean up + free(compressedBuffer); + + return 0; +} diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/adc_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/adc_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/adc_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/adc_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/aes_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/aes_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/aes_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/aes_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/cauclk_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/cauclk_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/cauclk_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/cauclk_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/core_cm3.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/core_cm3.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/core_cm3.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/core_cm3.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/core_cm3.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/core_cm3.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/core_cm3.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/core_cm3.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/core_cmFunc.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/core_cmFunc.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/core_cmFunc.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/core_cmFunc.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/core_cmInstr.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/core_cmInstr.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/core_cmInstr.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/core_cmInstr.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/eeprom.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/eeprom.h old mode 100755 new mode 100644 similarity index 60% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/eeprom.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/eeprom.h index f048d116..81fbf849 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/eeprom.h +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/eeprom.h @@ -11,14 +11,14 @@ #define EEPROM_PAGE_SIZE (0x01000UL) #define EEPROM_OS_START (0x00000UL) -#define EEPROM_OS_LEN (0x13FFFUL) //0xE820 of image, rounded up to 4K +#define EEPROM_OS_LEN (0x1FFFFUL) //0xE820 of image, rounded up to 4K -#define EEPROM_IMG_START (0x17000UL) +#define EEPROM_IMG_START (0x20000UL) #define EEPROM_IMG_EACH (0x1F000UL) #define EEPROM_IMG_LEN (EEPROM_IMG_START + 0x13FFFUL) -#define EEPROM_UPDATE_START (0x17000UL) //same header as images -#define EEPROM_UPDATE_LEN (0x13FFFUL) +#define EEPROM_UPDATE_START (0x20000UL) //same header as images +#define EEPROM_UPDATE_LEN (0x1FFFFUL) #define EEPROM_SETTINGS_AREA_START (0x14000UL) #define EEPROM_SETTINGS_AREA_LEN (0x03000UL) @@ -33,16 +33,6 @@ //#define EEPROM_PIECE_SZ (88) -struct EepromImageHeader { //each image space is 0x17000 bytes, we have space for ten of them - uint64_t version; - uint32_t validMarker; - uint32_t size; - uint8_t dataType; - uint32_t id; - - //image data here - //we pre-erase so progress can be calculated by finding the first non-0xff byte -}; - +#include "../../common/eeprom_struct.h" #endif diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/gpio.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/gpio.c similarity index 99% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/gpio.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/gpio.c index 8d1c19cb..53d06e39 100644 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/gpio.c +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/gpio.c @@ -5,7 +5,7 @@ #include #include #include "core_cm3.h" -#include "main.h" +#include "../main.h" #include "mz100_rtc.h" #include "mz100_wdt.h" #include "mz100_pmu.h" @@ -194,4 +194,4 @@ void do_sleeped_epd_refresh() PMU_ClearWakeupExtpin(PMU_GPIO5_INT); wait_busy_sleep(2000); printf("uDisTime : %d ms\r\n", gSleepRtcCounter); -} \ No newline at end of file +} diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/gpio.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/gpio.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/gpio.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/gpio.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/gpio_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/gpio_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/gpio_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/gpio_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/gpt_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/gpt_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/gpt_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/gpt_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100.ld b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100.ld similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100.ld rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100.ld diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_adc.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_adc.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_adc.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_adc.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_adc.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_adc.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_adc.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_adc.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_aes.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_aes.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_aes.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_aes.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_aes.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_aes.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_aes.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_aes.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_aon_ram.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_aon_ram.c similarity index 74% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_aon_ram.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_aon_ram.c index bdd147ff..378beea1 100644 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_aon_ram.c +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_aon_ram.c @@ -11,19 +11,20 @@ bool aonRamValid = false; void clearAonRam() { memset((void *)0x130000, 0, 4096); + //memcpy((void *)(0x128000 - AONSHADOW_SIZE), (uint8_t *)aonShadow, AONSHADOW_SIZE); } bool loadValidateAonRam() { uint32_t testchecksum = aonChecksum; aonChecksum = 0x00000000; - uint32_t checksum = 0xABBA5FF5; + uint32_t checksum = 0xABBA5FF7; for (uint32_t c = 0x130000; c < 0x131000; c += 4) { checksum += *(uint32_t *)c; } if (checksum == testchecksum) { // immediately invalidate the checksum; if we reboot, we want a clean reboot aonChecksum = 0x5445A00A; - memcpy((void *)(0x128000 - AONSHADOW_SIZE), (uint8_t*)aonShadow, AONSHADOW_SIZE); + memcpy((void *)(0x128000 - AONSHADOW_SIZE), (uint8_t *)aonShadow, AONSHADOW_SIZE); return true; } else { clearAonRam(); @@ -33,9 +34,9 @@ bool loadValidateAonRam() { } void saveAonRam() { - memcpy((uint8_t*)aonShadow, (void *)(0x128000 - AONSHADOW_SIZE), AONSHADOW_SIZE); + memcpy((uint8_t *)aonShadow, (void *)(0x128000 - AONSHADOW_SIZE), AONSHADOW_SIZE); aonChecksum = 0x00000000; - uint32_t checksum = 0xABBA5FF5; + uint32_t checksum = 0xABBA5FF7; for (uint32_t c = 0x130000; c < 0x131000; c += 4) { checksum += *(uint32_t *)c; } diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_aon_ram.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_aon_ram.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_aon_ram.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_aon_ram.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_clock.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_clock.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_clock.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_clock.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_clock.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_clock.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_clock.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_clock.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_driver.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_driver.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_driver.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_driver.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_driver.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_driver.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_driver.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_driver.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_driver_isr.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_driver_isr.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_driver_isr.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_driver_isr.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_drv_config.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_drv_config.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_drv_config.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_drv_config.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_flash.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_flash.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_flash.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_flash.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_flash.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_flash.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_flash.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_flash.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_gpio.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_gpio.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_gpio.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_gpio.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_gpio.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_gpio.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_gpio.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_gpio.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_gpt.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_gpt.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_gpt.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_gpt.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_gpt.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_gpt.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_gpt.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_gpt.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_interrupt.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_interrupt.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_interrupt.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_interrupt.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_pinmux.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_pinmux.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_pinmux.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_pinmux.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_pinmux.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_pinmux.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_pinmux.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_pinmux.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_pmu.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_pmu.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_pmu.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_pmu.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_pmu.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_pmu.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_pmu.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_pmu.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_qspi.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_qspi.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_qspi.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_qspi.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_qspi.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_qspi.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_qspi.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_qspi.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_rtc.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_rtc.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_rtc.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_rtc.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_rtc.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_rtc.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_rtc.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_rtc.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_sleep.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_sleep.c similarity index 88% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_sleep.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_sleep.c index 58eaf6c6..e1fd150c 100644 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_sleep.c +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_sleep.c @@ -12,8 +12,8 @@ #include "mz100_sleep.h" #include "util.h" #include "gpio.h" -#include "main.h" -#include "proto.h" +#include "../main.h" +//#include "proto.h" #include "printf.h" extern void saveAonRam(); @@ -88,9 +88,9 @@ void Set_Wakeup_pin_nfc() NVIC_EnableIRQ(ExtPin7_IRQn); } -extern struct blockRequest curBlock; // used by the block-requester, contains the next request that we'll send -extern struct AvailDataInfo curDataInfo; // last 'AvailDataInfo' we received from the AP -extern bool requestPartialBlock; // if we should ask the AP to get this block from the host or not +//extern struct blockRequest curBlock; // used by the block-requester, contains the next request that we'll send +//extern struct AvailDataInfo xferDataInfo; // last 'AvailDataInfo' we received from the AP +//extern bool requestPartialBlock; // if we should ask the AP to get this block from the host or not void sleep_with_with_wakeup(uint32_t sleep_time_ms) { saveAonRam(); @@ -122,4 +122,4 @@ void sleep_with_with_wakeup(uint32_t sleep_time_ms) Set_Wakeup_pin_rf(1); Set_Wakeup_pin_nfc(); __WFI(); -} \ No newline at end of file +} diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_sleep.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_sleep.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_sleep.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_sleep.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_ssp.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_ssp.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_ssp.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_ssp.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_ssp.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_ssp.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_ssp.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_ssp.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_uart.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_uart.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_uart.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_uart.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_uart.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_uart.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_uart.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_uart.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_wdt.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_wdt.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_wdt.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_wdt.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_wdt.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_wdt.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_wdt.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_wdt.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/nfc.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/nfc.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/nfc.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/nfc.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/nfc.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/nfc.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/nfc.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/nfc.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/pinmux_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/pinmux_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/pinmux_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/pinmux_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/pmu_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/pmu_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/pmu_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/pmu_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/printf.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/printf.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/printf.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/printf.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/printf.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/printf.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/printf.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/printf.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/qspi_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/qspi_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/qspi_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/qspi_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/rc32m_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/rc32m_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/rc32m_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/rc32m_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/rtc_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/rtc_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/rtc_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/rtc_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/ssp_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/ssp_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/ssp_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/ssp_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/sysctrl_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/sysctrl_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/sysctrl_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/sysctrl_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/timer.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/timer.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/timer.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/timer.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/timer.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/timer.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/timer.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/timer.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/uart_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/uart_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/uart_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/uart_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/util.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/util.c similarity index 98% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/util.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/util.c index e17bdc90..128f9823 100644 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/util.c +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/util.c @@ -160,7 +160,7 @@ void qspiEraseRange(uint32_t addr, uint32_t len) { } bool eepromWrite(uint32_t addr, const void *srcP, uint16_t len) { - FLASH_Write(false, addr, (void*)srcP, len); + FLASH_Write(0, addr, (void*)srcP, len); return true; } @@ -182,4 +182,4 @@ void radioShutdown(void) { *(volatile uint32_t *)0x4C000000 = 0; *(volatile uint32_t *)0x4C010000 = 0; *(volatile uint32_t *)0x4C010004 = 0x10000000; -} \ No newline at end of file +} diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/util.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/util.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/util.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/util.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/wdt_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/wdt_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/wdt_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/wdt_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/xtal32m_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/xtal32m_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/xtal32m_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/xtal32m_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/oepl_fs.cpp b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/oepl_fs.cpp new file mode 100644 index 00000000..16b096a7 --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/oepl_fs.cpp @@ -0,0 +1,168 @@ +#include +#include +#include +#include +extern "C" { +#include "mz100/mz100_flash.h" +#include "mz100/printf.h" +} + +// #pragma pack(1) + +#include "oepl_fs.h" + +extern "C" { +__attribute__((section(".aonshadow"))) uint32_t fsEntry; +__attribute__((section(".aonshadow"))) uint32_t fsEnd; +extern void dump(const uint8_t *a, const uint16_t l); +} + +OEPLFs oeplfs; +OEPLFs *fs = &oeplfs; + +void OEPLFs::init() { + if (!this->isStarted) { + this->files.clear(); + if (fsEntry == 0) { + silent = false; + fsEntry = this->findEntry(); + } else { + silent = true; + } + if (fsEntry) this->populateFiles(); + this->isStarted = true; + } +} + +OEPLFs::OEPLFs() { +} + +OEPLFs::~OEPLFs() { +} + +uint32_t OEPLFs::findEntry() { + printf("FS: Trying to find OEPL FS...\n"); + uint8_t *scan = (uint8_t *)malloc(1024); + uint32_t offset = 0; + // scan flash with some overlap, to ensure the entire string is in the buffer at some point + for (uint32_t c = 60000; c < 180000; c += 512) { + FLASH_Read(FLASH_FAST_READ_QUAD_OUT, c, scan, 1024); + uint32_t scan_offset = 0; + bool nextblock = false; + while (!nextblock) { + uint8_t *p = (uint8_t *)memchr(scan + scan_offset, '-', 1024 - scan_offset); + if (p) { + // see if the rest of the string is also there + int8_t match = memcmp(p + 1, "--OEPL_FS!", 10); + if (match == 0) { + offset = (uint32_t)(p - scan); + offset += c; + nextblock = true; + break; + } else { + scan_offset = (p - scan) + 1; + } + } else { + nextblock = true; + } + } + } + + if (offset) { + printf("FS: Found at 0x%08X\n", offset); + } else { + printf("FS: Not found. Did you forget to add it?\n"); + FLASH_Read(FLASH_FAST_READ_QUAD_OUT, 0x109C0, scan, 1024); + dump(scan, 1024); + } + free(scan); + return offset; +} + +void OEPLFs::populateFiles() { + // get file list inside of the vector + uint8_t *buffer = (uint8_t *)malloc(1024); + FLASH_Read(FLASH_FAST_READ_QUAD_OUT, fsEntry, buffer, 1024); + bool done = false; + bool firstFile = true; + uint8_t *fatEnd = nullptr; + uint8_t *curFileP = buffer; + curFileP += 11; // set to begin file table + uint32_t fsend = 0; + while (!done) { + OEPLFSFile *file; + file = new OEPLFSFile; + memcpy((void *)file, curFileP, sizeof(OEPLFSFile)); + this->files.push_back(file); + if (firstFile) { + firstFile = false; + fatEnd = buffer + file->offset - 1; + } + curFileP += sizeof(OEPLFSFile); + + // print reference + char tmp[32]; + memcpy(tmp, file->name, 32); + tmp[31] = 0x00; + if(!silent)printf("name=%s, size=%u, offset=%u\n", tmp, file->len, file->offset); + + fsend = file->len + file->offset; + if (curFileP > fatEnd) { + done = true; + break; + } + } + fsEnd = fsend + fsEntry; + free(buffer); +} + +OEPLFile *OEPLFs::getFile(char *name) { + // if (files.size() == 0) this->init(); + for (uint8_t c = 0; c < files.size(); c++) { + if (strncmp(name, files.at(c)->name, FILENAME_LENGTH) == 0) { + OEPLFile *file = new OEPLFile(files.at(c)->offset + fsEntry); + file->length = files.at(c)->len; + return file; + } + } + printf("file '%s' not found in %d files\n", name, files.size()); + return nullptr; +} + +uint8_t OEPLFile::operator()(uint32_t i) { + return this->readByte(i); +} + +void OEPLFile::getBlock(uint32_t offset, uint8_t *target, uint32_t len) { + // get a block of data from within the 'file' + FLASH_Read(FLASH_FAST_READ_QUAD_OUT, this->eepromOffset + offset, target, len); +} + +uint8_t OEPLFile::readByte(uint32_t i) { + if (!buffer) { + this->buffer = (uint8_t *)malloc(OEPLFS_CACHE_SIZE); + } + + // calculate requested eeprom position + uint32_t eepromPos = i + this->eepromOffset; + + // check if this currently buffered + if ((eepromPos >= this->bufferBegin) && (eepromPos < (this->bufferBegin + OEPLFS_CACHE_SIZE))) { + // cache hit + } else { + // cache miss + FLASH_Read(FLASH_FAST_READ_QUAD_OUT, this->eepromOffset + i, buffer, OEPLFS_CACHE_SIZE); + this->bufferBegin = this->eepromOffset + i; + } + return buffer[(this->eepromOffset + i) - this->bufferBegin]; +} + +OEPLFile::OEPLFile(uint32_t offset) { + this->eepromOffset = offset; +} + +OEPLFile::~OEPLFile() { + if (this->buffer) { + free(this->buffer); + } +} \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/oepl_fs.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/oepl_fs.h new file mode 100644 index 00000000..a22b7878 --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/oepl_fs.h @@ -0,0 +1,51 @@ +#pragma once + +#include +#include + +extern "C" { +extern __attribute__((section(".aonshadow"))) uint32_t fsEntry; +extern __attribute__((section(".aonshadow"))) uint32_t fsEnd; +} +#define OEPLFS_CACHE_SIZE 128 + +#define FILENAME_LENGTH 32 + +typedef struct __attribute__((packed)) { + char name[FILENAME_LENGTH]; + uint32_t offset; + uint32_t len; +} OEPLFSFile; + +class OEPLFile { + public: + ~OEPLFile(); + OEPLFile(uint32_t begin); + uint32_t length; + uint8_t operator()(uint32_t i); + uint8_t readByte(uint32_t i); + void getBlock(uint32_t offset, uint8_t* target, uint32_t len); + + protected: + uint8_t* buffer = nullptr; + uint32_t bufferBegin = 0; + uint32_t eepromOffset = 0; +}; + +class OEPLFs { + public: + ~OEPLFs(); + OEPLFs(); + std::vector files; + OEPLFile* getFile(char* name); + void init(); + bool isStarted = false; + + protected: + bool silent; + uint32_t findEntry(); + void populateFiles(); +}; + +// extern __attribute__((section(".aonshadow"))) OEPLFs fs; +extern OEPLFs* fs; \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/powermgt.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/powermgt.c index 2b74a077..4a92ef07 100755 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/powermgt.c +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/powermgt.c @@ -7,13 +7,13 @@ #include #include "board.h" -#include "eeprom.h" +#include "mz100/eeprom.h" #include "main.h" -#include "mz100_sleep.h" -#include "printf.h" +#include "mz100/mz100_sleep.h" +#include "mz100/printf.h" #include "screen.h" #include "syncedproto.h" -#include "util.h" +#include "mz100/util.h" #include "zigbee.h" __attribute__((section(".aonshadow"))) uint16_t dataReqAttemptArr[POWER_SAVING_SMOOTHING] = {0}; // Holds the amount of attempts required per data_req/check-in @@ -148,4 +148,4 @@ uint16_t getNextSleep() { } avg /= POWER_SAVING_SMOOTHING; return avg; -} \ No newline at end of file +} diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/settings.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/settings.c index 7191d5f3..3aba475d 100755 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/settings.c +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/settings.c @@ -1,9 +1,9 @@ #include "settings.h" #include "proto.h" #include -#include "eeprom.h" -#include "util.h" -#include "mz100_flash.h" +#include "mz100/eeprom.h" +#include "mz100/util.h" +#include "mz100/mz100_flash.h" #include "powermgt.h" @@ -25,4 +25,4 @@ void loadDefaultSettings() { tagSettings.minimumCheckInTime = INTERVAL_BASE; tagSettings.fixedChannel = 0; tagSettings.batLowVoltage = BATTERY_VOLTAGE_MINIMUM; -} \ No newline at end of file +} diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/settings.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/settings.h index 4df94c04..a606f906 100755 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/settings.h +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/settings.h @@ -3,11 +3,18 @@ #include -#define FW_VERSION 20 // version number (max 2.5.5 :) ) +#define FW_VERSION 0x0027 // version number (max 2.5.5 :) ) #define FW_VERSION_SUFFIX "-75" // suffix, like -RC1 or whatever. // #define DEBUGBLOCKS // uncomment to enable extra debug information on the block transfers // #define PRINT_LUT // uncomment if you want the tag to print the LUT for the current temperature bracket + +#define DEBUG_EPD +#define DEBUG_FS +#define DEBUG_BUILD +#define DEBUG_COMPRESSION + + #define SETTINGS_STRUCT_VERSION 0x01 #define DEFAULT_SETTING_FASTBOOT 0 diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/syncedproto.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/syncedproto.c index 9f4893c8..0589b9cb 100755 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/syncedproto.c +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/syncedproto.c @@ -3,21 +3,22 @@ #include "board.h" #include "comms.h" -#include "drawing.h" -#include "eeprom.h" +#include "mz100/eeprom.h" #include "main.h" -#include "mz100_sleep.h" +#include "mz100/mz100_sleep.h" #include "powermgt.h" -#include "printf.h" +#include "mz100/printf.h" #include "proto.h" -#include "timer.h" -#include "util.h" +#include "mz100/timer.h" +#include "mz100/util.h" +#include "mz100/mz100_flash.h" #include "zigbee.h" +#include "md5.h" // download-stuff uint8_t blockXferBuffer[BLOCK_XFER_BUFFER_SIZE] = {0}; __attribute__((section(".aonshadow"))) struct blockRequest curBlock = {0}; // used by the block-requester, contains the next request that we'll send -__attribute__((section(".aonshadow"))) struct AvailDataInfo curDataInfo = {0}; // last 'AvailDataInfo' we received from the AP +__attribute__((section(".aonshadow"))) struct AvailDataInfo xferDataInfo = {0}; // last 'AvailDataInfo' we received from the AP bool requestPartialBlock = false; // if we should ask the AP to get this block from the host or not #define BLOCK_TRANSFER_ATTEMPTS 10 @@ -41,6 +42,9 @@ static uint8_t outBuffer[128] = {0}; // #define DEBUGBLOCKS 1 +// from drawing.cpp +extern void drawImageAtAddress(uint32_t addr, uint8_t lut); + // tools static uint8_t getPacketType(const void *buffer) { const struct MacFcs *fcs = buffer; @@ -186,6 +190,7 @@ static void sendAvailDataReq() { availreq->temperature = temperature; availreq->batteryMv = batteryVoltage; availreq->capabilities = capabilities; + availreq->tagSoftwareVersion = FW_VERSION; addCRC(availreq, sizeof(struct AvailDataReq)); commsTxNoCpy(outBuffer); } @@ -204,7 +209,6 @@ struct AvailDataInfo *getAvailDataInfo() { memcpy(APmac, f->src, 8); APsrcPan = f->pan; dataReqLastAttempt = c; - printf("%d", dataReqLastAttempt); return (struct AvailDataInfo *)(inBuffer + sizeof(struct MacFrameNormal) + 1); } } @@ -399,6 +403,33 @@ static bool validateBlockData() { } // EEprom related stuff +static bool validateEepromMD5(uint64_t ver, uint32_t eepromstart, uint32_t flen) { +#define CHUNK_SIZE 512 + uint8_t chunk[CHUNK_SIZE]; + MD5Context ctx; + md5Init(&ctx); + + // Open the executable itself for reading + for (uint32_t offset = 0; offset < flen; offset += CHUNK_SIZE) { + uint32_t len = flen - offset; + if (len > CHUNK_SIZE) len = CHUNK_SIZE; + FLASH_Read(FLASH_FAST_READ_QUAD_OUT, eepromstart + offset, chunk, len); + eepromRead(eepromstart + offset, chunk, 512); + md5Update(&ctx, chunk, len); + } + + // Retrieve the final hash + md5Finalize(&ctx); + + bool isValid = ver == *((uint64_t *)ctx.digest); + if (!isValid) { + printf("MD5 failed check! This is what we should get:\n"); + dump((const uint8_t *)&(xferDataInfo.dataVer), 8); + printf("This is what we got:\n"); + dump(ctx.digest, 16); + } + return isValid; +} static uint32_t getAddressForSlot(const uint8_t s) { return EEPROM_IMG_START + (EEPROM_IMG_EACH * s); } @@ -478,6 +509,7 @@ static uint32_t getHighSlotId() { return temp; } + static bool getDataBlock(const uint16_t blockSize) { static uint8_t partsThisBlock = 0; static uint8_t blockAttempts = 0; @@ -574,28 +606,31 @@ static bool getDataBlock(const uint16_t blockSize) { return false; } uint16_t dataRequestSize = 0; +uint32_t curXferSize = 0; + static bool downloadFWUpdate(const struct AvailDataInfo *avail) { // check if we already started the transfer of this information & haven't completed it - if (!memcmp((const void *)&avail->dataVer, (const void *)&curDataInfo.dataVer, 8) && curDataInfo.dataSize) { + if (!memcmp((const void *)&avail->dataVer, (const void *)&xferDataInfo.dataVer, 8) && xferDataInfo.dataSize) { // looks like we did. We'll carry on where we left off. } else { // start, or restart the transfer from 0. Copy data from the AvailDataInfo struct, and the struct intself. This forces a new transfer curBlock.blockId = 0; memcpy(&(curBlock.ver), &(avail->dataVer), 8); curBlock.type = avail->dataType; - memcpy(&curDataInfo, (void *)avail, sizeof(struct AvailDataInfo)); + memcpy(&xferDataInfo, (void *)avail, sizeof(struct AvailDataInfo)); + curXferSize = avail->dataSize; eraseUpdateBlock(); delay(100); } - while (curDataInfo.dataSize) { + while (xferDataInfo.dataSize) { wdt10s(); - if (curDataInfo.dataSize > BLOCK_DATA_SIZE) { + if (xferDataInfo.dataSize > BLOCK_DATA_SIZE) { // more than one block remaining dataRequestSize = BLOCK_DATA_SIZE; } else { // only one block remains - dataRequestSize = curDataInfo.dataSize; + dataRequestSize = xferDataInfo.dataSize; } if (getDataBlock(dataRequestSize)) { // succesfully downloaded datablock, save to eeprom @@ -603,20 +638,27 @@ static bool downloadFWUpdate(const struct AvailDataInfo *avail) { saveUpdateBlockData(curBlock.blockId); powerDown(INIT_EEPROM); curBlock.blockId++; - curDataInfo.dataSize -= dataRequestSize; + xferDataInfo.dataSize -= dataRequestSize; } else { // failed to get the block we wanted, we'll stop for now, maybe resume later return false; } } // no more data, download complete - return true; + if (validateEepromMD5(xferDataInfo.dataVer, EEPROM_UPDATE_START, curXferSize)) { + // md5 matches + return true; + } else { + // md5 does not match, invalidate current transfer result, forcing a restart of the transfer + memset((void *)&xferDataInfo, 0, sizeof(struct AvailDataInfo)); + return false; + } } uint16_t imageSize = 0; static bool downloadImageDataToEEPROM(const struct AvailDataInfo *avail) { // check if we already started the transfer of this information & haven't completed it - if (!memcmp((const void *)&avail->dataVer, (const void *)&curDataInfo.dataVer, 8) && curDataInfo.dataSize) { + if (!memcmp((const void *)&avail->dataVer, (const void *)&xferDataInfo.dataVer, 8) && xferDataInfo.dataSize) { // looks like we did. We'll carry on where we left off. printf("restarting image download"); curImgSlot = nextImgSlot; @@ -643,19 +685,19 @@ static bool downloadImageDataToEEPROM(const struct AvailDataInfo *avail) { memcpy(&(curBlock.ver), &(avail->dataVer), 8); curBlock.type = avail->dataType; - memcpy(&curDataInfo, (void *)avail, sizeof(struct AvailDataInfo)); + memcpy(&xferDataInfo, (void *)avail, sizeof(struct AvailDataInfo)); - imageSize = curDataInfo.dataSize; + imageSize = xferDataInfo.dataSize; } - while (curDataInfo.dataSize) { + while (xferDataInfo.dataSize) { wdt10s(); - if (curDataInfo.dataSize > BLOCK_DATA_SIZE) { + if (xferDataInfo.dataSize > BLOCK_DATA_SIZE) { // more than one block remaining dataRequestSize = BLOCK_DATA_SIZE; } else { // only one block remains - dataRequestSize = curDataInfo.dataSize; + dataRequestSize = xferDataInfo.dataSize; } if (getDataBlock(dataRequestSize)) { // succesfully downloaded datablock, save to eeprom @@ -666,7 +708,7 @@ static bool downloadImageDataToEEPROM(const struct AvailDataInfo *avail) { saveImgBlockData(curImgSlot, curBlock.blockId); powerDown(INIT_EEPROM); curBlock.blockId++; - curDataInfo.dataSize -= dataRequestSize; + xferDataInfo.dataSize -= dataRequestSize; } else { // failed to get the block we wanted, we'll stop for now, probably resume later return false; @@ -676,20 +718,27 @@ static bool downloadImageDataToEEPROM(const struct AvailDataInfo *avail) { // borrow the blockXferBuffer temporarily struct EepromImageHeader *eih = (struct EepromImageHeader *)blockXferBuffer; - memcpy(&eih->version, &curDataInfo.dataVer, 8); + memcpy(&eih->version, &xferDataInfo.dataVer, 8); eih->validMarker = EEPROM_IMG_VALID; eih->id = ++curHighSlotId; eih->size = imageSize; - eih->dataType = curDataInfo.dataType; + eih->dataType = xferDataInfo.dataType; #ifdef DEBUGBLOCKS printf("Now writing datatype 0x%02X to slot %d\n", curDataInfo.dataType, curImgSlot); #endif - powerUp(INIT_EEPROM); - eepromWrite(getAddressForSlot(curImgSlot), eih, sizeof(struct EepromImageHeader)); - powerDown(INIT_EEPROM); - - return true; + if (validateEepromMD5(xferDataInfo.dataVer, getAddressForSlot(curImgSlot) + sizeof(struct EepromImageHeader), imageSize)) { + // md5 matches + eepromWrite(getAddressForSlot(curImgSlot), eih, sizeof(struct EepromImageHeader)); + powerDown(INIT_EEPROM); + printf("md5 okay"); + return true; + } else { + // md5 does not match, invalidate current transfer result, forcing a restart of the transfer + memset((void *)&xferDataInfo, 0, sizeof(struct AvailDataInfo)); + powerDown(INIT_EEPROM); + return false; + } } bool processAvailDataInfo(struct AvailDataInfo *avail) { @@ -698,8 +747,9 @@ bool processAvailDataInfo(struct AvailDataInfo *avail) { case DATATYPE_IMG_DIFF: case DATATYPE_IMG_RAW_1BPP: case DATATYPE_IMG_RAW_2BPP: + case DATATYPE_IMG_ZLIB: // check if this download is currently displayed or active - if (curDataInfo.dataSize == 0 && !memcmp((const void *)&avail->dataVer, (const void *)&curDataInfo.dataVer, 8)) { + if (xferDataInfo.dataSize == 0 && !memcmp((const void *)&avail->dataVer, (const void *)&xferDataInfo.dataVer, 8)) { // we've downloaded this already, we're guessing it's already displayed printf("currently shown image, send xfc\n"); powerUp(INIT_RADIO); @@ -721,8 +771,8 @@ bool processAvailDataInfo(struct AvailDataInfo *avail) { printf("already seen, drawing from eeprom slot %d\n", curImgSlot); // mark as completed and draw from EEPROM - memcpy(&curDataInfo, (void *)avail, sizeof(struct AvailDataInfo)); - curDataInfo.dataSize = 0; // mark as transfer not pending + memcpy(&xferDataInfo, (void *)avail, sizeof(struct AvailDataInfo)); + xferDataInfo.dataSize = 0; // mark as transfer not pending drawWithLut = avail->dataTypeArgument; wdt60s(); @@ -786,4 +836,4 @@ bool processAvailDataInfo(struct AvailDataInfo *avail) { void initializeProto() { getNumSlots(); curHighSlotId = getHighSlotId(); -} \ No newline at end of file +} diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/syncedproto.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/syncedproto.h index f0eafddc..d1532d33 100644 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/syncedproto.h +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/syncedproto.h @@ -8,7 +8,7 @@ extern __attribute__((section(".aonshadow"))) uint8_t mSelfMac[]; extern __attribute__((section(".aonshadow"))) volatile uint8_t currentChannel; extern __attribute__((section(".aonshadow"))) struct blockRequest curBlock; // used by the block-requester, contains the next request that we'll send -extern __attribute__((section(".aonshadow"))) struct AvailDataInfo curDataInfo; // last 'AvailDataInfo' we received from the AP // __attribute__((section(".aon"))) +extern __attribute__((section(".aonshadow"))) struct AvailDataInfo xferDataInfo; // last 'AvailDataInfo' we received from the AP // __attribute__((section(".aon"))) extern uint8_t APmac[]; diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/uc8159-var-m2.cpp b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/uc8159-var-m2.cpp new file mode 100644 index 00000000..3e6e422a --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/uc8159-var-m2.cpp @@ -0,0 +1,476 @@ + +#include "uc8159-var-m2.h" + +extern "C" { + +#include +#include +#include +#include + +#include "main.h" +#include "mz100/gpio.h" +#include "mz100/mz100_gpio.h" +#include "mz100/mz100_pinmux.h" +#include "mz100/printf.h" +#include "mz100/util.h" +} + +#include "drawing.h" +#include "epd_interface.h" + +#define EPD_PANEL_SETTING 0x00 +#define EPD_POWER_SETTING 0x01 +#define EPD_POWER_OFF 0x02 +#define EPD_POWER_OFF_SEQUENCE 0x03 +#define EPD_POWER_ON 0x04 +#define EPD_BOOSTER_SOFT_START 0x06 +#define EPD_DEEP_SLEEP 0x07 +#define EPD_START_DATA 0x10 +#define EPD_DATA_STOP 0x11 +#define EPD_REFRESH 0x12 +#define EPD_IMAGE_PROCESS 0x13 +#define EPD_LUT_VCOM 0x20 +#define EPD_LUT_B 0x21 +#define EPD_LUT_W 0x22 +#define EPD_LUT_G1 0x23 +#define EPD_LUT_G2 0x24 +#define EPD_LUT_R0 0x25 +#define EPD_LUT_R1 0x26 +#define EPD_LUT_R2 0x27 +#define EPD_LUT_R3 0x28 +#define EPD_LUT_XON 0x29 +#define EPD_PLL_CONTROL 0x30 +#define EPD_TEMP_CALIB 0x40 +#define EPD_TEMP_SELECT 0x41 +#define EPD_TEMP_WRITE 0x42 +#define EPD_TEMP_READ 0x43 +#define EPD_VCOM_DATA_INTERVAL 0x50 +#define EPD_LPD 0x51 +#define EPD_TCON_SET 0x60 +#define EPD_TRES 0x61 +#define EPD_SPI_FLASH_CONTROL 0x65 +#define EPD_REVISION 0x70 +#define EPD_GET_STATUS 0x71 +#define EPD_AUTOMEASURE_VCOM 0x80 +#define EPD_READ_VCOM 0x81 +#define EPD_VCOM_DC_SET 0x82 +#define EPD_SET_WINDOW 0x90 + +#define EPD_WAKE_EEPROM 0xAB +#define EPD_EEPROM_SLEEP 0xB9 +#define EPD_UNKNOWN_1 0xE5 + +#define EPD_IS_BUSY false +#define EPD_IS_NOT_BUSY true + +extern "C" { +extern void dump(const uint8_t *a, const uint16_t l); +} + +struct __attribute__((packed)) epd_colorlutpart { + uint8_t repeat; + uint8_t lvl0 : 4; + uint8_t lvl1 : 4; + uint8_t lvl2 : 4; + uint8_t lvl3 : 4; + uint8_t lvl4 : 4; + uint8_t lvl5 : 4; + uint8_t lvl6 : 4; + uint8_t lvl7 : 4; + uint8_t length[8]; +}; + +struct __attribute__((packed)) epd_colorlut { + struct epd_colorlutpart part[20]; +}; + +struct __attribute__((packed)) epd_vcomlutpart { + uint8_t repeat; + uint8_t lvl0 : 2; + uint8_t lvl1 : 2; + uint8_t lvl2 : 2; + uint8_t lvl3 : 2; + uint8_t lvl4 : 2; + uint8_t lvl5 : 2; + uint8_t lvl6 : 2; + uint8_t lvl7 : 2; + uint8_t length[8]; +}; + +struct __attribute__((packed)) epd_vcomlut { + struct epd_vcomlutpart part[20]; +}; + +struct __attribute__((packed)) epd_xonlutpart { + uint8_t repeat; + uint8_t lvl0 : 1; + uint8_t lvl1 : 1; + uint8_t lvl2 : 1; + uint8_t lvl3 : 1; + uint8_t lvl4 : 1; + uint8_t lvl5 : 1; + uint8_t lvl6 : 1; + uint8_t lvl7 : 1; + uint8_t length[8]; +}; + +struct __attribute__((packed)) epd_xonlut { + struct epd_xonlutpart part[20]; +}; + +void uc8159::epdSetup() { + printf("EPD: Init begin\n"); + initEPDGPIO(); + this->epdReset(); + epdWrite(EPD_POWER_ON, 0); + busyWaitUntil(EPD_IS_NOT_BUSY, 100); + + epdWrite(EPD_TRES, 0x04, 2, 128, 1, 128); + + // wake the eeprom + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 0x01); + GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_LOW); + epdWrite(EPD_WAKE_EEPROM, 0x00); + GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_HIGH); + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 0x00); + + epdWrite(EPD_POWER_SETTING, 4, 0x37, 0x00, 0x05, 0x05); // 0x37 - 00- 05 05 this one worked + + epdWrite(EPD_PANEL_SETTING, 2, 0xC3, 0x08); // 0xC3-0x88 // lut from EEPROM + epdWrite(EPD_POWER_OFF_SEQUENCE, 1, 0x00); + epdWrite(EPD_BOOSTER_SOFT_START, 0x03, 199, 204, 45); + epdWrite(EPD_PLL_CONTROL, 0x01, 60); + epdWrite(EPD_TEMP_SELECT, 0x01, 0x00); + epdWrite(EPD_VCOM_DATA_INTERVAL, 0x01, 119); + epdWrite(EPD_TCON_SET, 0x01, 34); + + EPDtempBracket = this->getTempBracket(); + this->loadFrameRatePLL(EPDtempBracket); + this->loadTempVCOMDC(EPDtempBracket); + + // this->loadTempVSH(EPDtempBracket); + // epdWrite(EPD_POWER_SETTING, 4, 0x37, 0x00, this->vshc, this->vslc); // this doesn't work + + printf("EPD: Init complete\n"); +} + +void uc8159::selectLUT(uint8_t lut) { + this->drawLut = lut; +} + +uc8159::~uc8159() { +} + +uint8_t uc8159::getTempBracket() { + uint8_t v0; + uint8_t v1; + uint8_t temptable[40]; + + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 0x01); + eepromReadBlock(0, 25002, temptable, 10); + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 0x00); + + epdWrite(EPD_TEMP_CALIB, 0); + busyWaitUntil(EPD_IS_NOT_BUSY, 10); + v0 = softSPIReadByte(); + v1 = (uint8_t)(2 * v0) + ((uint8_t)softSPIReadByte() >> 7); + + uint8_t bracket = 0; + for (int i = 0; i < 9; i++) { + if ((((char)v1 - (uint8_t)temptable[i]) & 0x80) != 0) { + bracket = i; + break; + } + } + printf("EPD: Temp bracket = %d\n", bracket); + return bracket; +} +void uc8159::loadFrameRatePLL(uint8_t bracket) { + uint8_t pllvalue; + uint8_t plltable[12]; + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 0x01); + eepromReadBlock(0, 25039, plltable, 10); + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 0x00); + pllvalue = plltable[bracket]; + printf("loading pll value 0x%02X\n", pllvalue); + pllvalue = 0x3A; // was 0x3C + epdWrite(EPD_PLL_CONTROL, 1, pllvalue); +} +void uc8159::loadTempVCOMDC(uint8_t bracket) { + uint8_t vcomvalue; + uint8_t vcomtable[12]; + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 1); + eepromReadBlock(0, 25049, vcomtable, 10); + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 0); + vcomvalue = vcomtable[bracket]; + epdWrite(EPD_VCOM_DC_SET, 1, vcomvalue); +} +void uc8159::loadTempVSH(uint8_t bracket) { + uint8_t vshtable[20]; + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 1); + eepromReadBlock(0, 25011, vshtable, 20); + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 0); + this->vshc = vshtable[bracket * 2]; + this->vslc = vshtable[(bracket * 2) + 1]; +} +uint8_t *uc8159::loadLUT(uint8_t index, uint8_t bracket) { + uint16_t adr = 0; + uint16_t len = 0; + uint8_t *lutBuffer; + switch (index) { + case EPD_LUT_VCOM: + // VCOM LUT + adr = 20800 + (220 * bracket); + len = 220; + break; + case EPD_LUT_B: + case EPD_LUT_W: + case EPD_LUT_G1: + case EPD_LUT_G2: + case EPD_LUT_R0: + case EPD_LUT_R1: + case EPD_LUT_R2: + case EPD_LUT_R3: + adr = (bracket * 2080); + adr += (index - 0x21) * 260; + len = 260; + break; + case EPD_LUT_XON: + // XON LUT + adr = 23000 + (200 * bracket); + len = 200; + break; + } + + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 1); + lutBuffer = (uint8_t *)malloc(len); + if (lutBuffer) eepromReadBlock(0, adr, lutBuffer, len); + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 0); + return lutBuffer; +} + +void colorLutSkip(struct epd_colorlut *colorlut, uint8_t skip) { + for (uint8_t shift = skip; shift < 19; shift++) { + colorlut->part[shift] = colorlut->part[shift + 1]; + } +} + +void vcomLutSkip(struct epd_vcomlut *colorlut, uint8_t skip) { + for (uint8_t shift = skip; shift < 19; shift++) { + colorlut->part[shift] = colorlut->part[shift + 1]; + } +} + +void xonLutSkip(struct epd_xonlut *colorlut, uint8_t skip) { + for (uint8_t shift = skip; shift < 19; shift++) { + colorlut->part[shift] = colorlut->part[shift + 1]; + } +} + +void uc8159::loadLUTSfromEEPROM(uint8_t bracket, bool doRed) { + for (uint8_t c = EPD_LUT_B; c <= EPD_LUT_R3; c++) { + struct epd_colorlut *colorlut = (struct epd_colorlut *)loadLUT(c, bracket); + + colorLutSkip(colorlut, 0); + colorLutSkip(colorlut, 0); + colorlut->part[0].repeat = 1; + colorLutSkip(colorlut, 2); + if (!doRed) { + colorLutSkip(colorlut, 3); + colorLutSkip(colorlut, 3); + colorLutSkip(colorlut, 3); + } + + // colorLutSkip(colorlut, 3); + // 0 0 2 3 was okay // 00034 okay reds? + epdBlockWrite(c, (uint8_t *)colorlut, 260); + if (colorlut) free(colorlut); + } + + struct epd_vcomlut *vcomlut = (struct epd_vcomlut *)loadLUT(EPD_LUT_VCOM, bracket); + vcomLutSkip(vcomlut, 0); + vcomLutSkip(vcomlut, 0); + vcomlut->part[0].repeat = 1; + + vcomLutSkip(vcomlut, 2); + if (!doRed) { + vcomLutSkip(vcomlut, 3); + vcomLutSkip(vcomlut, 3); + vcomLutSkip(vcomlut, 3); + } + epdBlockWrite(EPD_LUT_VCOM, (uint8_t *)vcomlut, 220); + if (vcomlut) free(vcomlut); + + struct epd_xonlut *xonlut = (struct epd_xonlut *)loadLUT(EPD_LUT_XON, bracket); + + xonLutSkip(xonlut, 0); + xonLutSkip(xonlut, 0); + xonlut->part[0].repeat = 1; + xonLutSkip(xonlut, 2); + if (!doRed) { + xonLutSkip(xonlut, 3); + xonLutSkip(xonlut, 3); + xonLutSkip(xonlut, 3); + } + epdBlockWrite(EPD_LUT_XON, (uint8_t *)xonlut, 200); + if (xonlut) free(xonlut); +} +void uc8159::epdReset() { + uint8_t v0 = 5; + printf("EPD: Reset... "); + while (1) { + GPIO_WritePinOutput(EPD_RESET, GPIO_IO_HIGH); + delay(100); + GPIO_WritePinOutput(EPD_RESET, GPIO_IO_LOW); + delay(3000); + GPIO_WritePinOutput(EPD_RESET, GPIO_IO_HIGH); + delay(3000); + if (GPIO_ReadPinLevel(EPD_BUSY)) + break; + v0--; + if (!v0) { + printf(" - EPD reset failure!\r\n"); + break; + } + } + delay(5000); + printf("complete.\n"); +} + +void uc8159::eepromReadBlock(char a1, uint16_t readaddress, uint8_t *target, uint16_t length) { + GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); + GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_LOW); + softSPIWriteByte(3); + softSPIWriteByte(a1); + softSPIWriteByte(readaddress >> 8); + softSPIWriteByte(readaddress); + delay_us(5); + for (uint16_t i = 0; i < length; i++) { + uint8_t readbyte = 0; + uint8_t loopCount = 0; + do { + readbyte *= 2; + GPIO_WritePinOutput(EPD_CLK, GPIO_IO_LOW); + delay_us(1); + if (GPIO_ReadPinLevel(EPD_MISO)) + readbyte |= 1u; + GPIO_WritePinOutput(EPD_CLK, GPIO_IO_HIGH); + delay_us(1); + delay(1); + loopCount++; + } while (loopCount < 8); + delay_us(1); + *target++ = readbyte; + } + + GPIO_WritePinOutput(EPD_CLK, GPIO_IO_LOW); + GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_HIGH); + delay(1); +} + +void uc8159::interleaveColorToBuffer(uint8_t *dst, uint8_t b, uint8_t r) { + b ^= 0xFF; + uint8_t b_out = 0; + for (int8_t shift = 3; shift >= 0; shift--) { + b_out = 0; + if (((b >> 2 * shift) & 0x01) && ((r >> 2 * shift) & 0x01)) { + b_out |= 0x04; // 0x30 + } else if ((b >> 2 * shift) & 0x01) { + b_out |= 0x03; // 0x30 + } else if ((r >> 2 * shift) & 0x01) { // 4 or 5 + b_out |= 0x04; // 0x30 + } else { + } + + if (((b >> 2 * shift) & 0x02) && ((r >> 2 * shift) & 0x02)) { + b_out |= 0x40; // 0x30 + } else if ((b >> 2 * shift) & 0x02) { + b_out |= 0x30; // 0x30 + } else if ((r >> 2 * shift) & 0x02) { + b_out |= 0x40; // 0x30 + } else { + } + *dst++ = b_out; + } +} + +void uc8159::epdWriteDisplayData() { + uint8_t blocksize = 32; + uint16_t byteWidth = this->effectiveXRes / 8; + uint8_t screenrow_bw[byteWidth * blocksize]; + uint8_t screenrow_r[byteWidth * blocksize]; + uint8_t screenrowInterleaved[byteWidth * 4]; + // setDisplayWindow(0, 0, 640, 384); + epdWrite(EPD_START_DATA, 0); + enableHardSPI(true); + GPIO_WritePinOutput(EPD_CS, GPIO_IO_LOW); + for (uint16_t curY = 0; curY < this->effectiveYRes; curY += blocksize) { // + memset(screenrow_bw, 0, byteWidth * blocksize); + memset(screenrow_r, 0, byteWidth * blocksize); + + for (uint8_t bcount = 0; bcount < blocksize; bcount++) { + drawItem::renderDrawLine(screenrow_bw + (byteWidth * bcount), curY + bcount, 0); + } + for (uint8_t bcount = 0; bcount < blocksize; bcount++) { + drawItem::renderDrawLine(screenrow_r + (byteWidth * bcount), curY + bcount, 1); + } + + for (uint8_t bcount = 0; bcount < blocksize; bcount++) { + for (uint16_t curX = 0; curX < (byteWidth); curX++) { + interleaveColorToBuffer(screenrowInterleaved + (curX * 4), screenrow_bw[curX + (byteWidth * bcount)], screenrow_r[curX + (byteWidth * bcount)]); + } + epdBlockWrite(screenrowInterleaved, byteWidth * 4); + } + } + GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); + enableHardSPI(false); + + drawItem::flushDrawItems(); +} + +void uc8159::draw() { + this->drawNoWait(); + this->epdWaitRdy(); +} + +void uc8159::drawNoWait() { + wdt60s(); + epdWriteDisplayData(); + if (drawLut) { + epdWrite(EPD_PANEL_SETTING, 2, 0xC3, 0x88); // 0xC3-0x88 // lut from register + bool doReds = true; + if (drawLut == 2) doReds = false; + loadLUTSfromEEPROM(EPDtempBracket, doReds); + } else { + epdWrite(EPD_PANEL_SETTING, 2, 0xC3, 0x08); // 0xC3-0x88 // lut from EEPROM + epdWrite(EPD_UNKNOWN_1, 1, 0x03); // load lut, probably + busyWaitUntil(EPD_IS_BUSY, 10); + busyWaitUntil(!EPD_IS_BUSY, 100); + } + printf("EPD: Draw start\n"); + epdWrite(EPD_REFRESH, 0); + busyWaitUntil(EPD_IS_BUSY, 10); +} + +void uc8159::epdWaitRdy() { + // do_sleeped_epd_refresh(); + busyWaitUntil(!EPD_IS_BUSY, 300000); + printf("EPD: Draw done!\n"); +} + +void uc8159::epdEnterSleep() { + initEPDGPIO(); + this->epdReset(); + epdWrite(EPD_POWER_SETTING, 4, 0x02, 0x00, 0x00, 0x00); + delay_us(50000); + epdWrite(EPD_POWER_OFF, 0); + delay_us(100000); + busyWaitUntil(EPD_IS_NOT_BUSY, 100000); + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 1); + GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_LOW); + softSPIWriteByte(EPD_EEPROM_SLEEP); + GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_HIGH); + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 0); + epdWrite(EPD_DEEP_SLEEP, 1, 0xA5); +} diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/uc8159-var-m2.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/uc8159-var-m2.h new file mode 100644 index 00000000..ba21b6ba --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/uc8159-var-m2.h @@ -0,0 +1,35 @@ +#pragma once +// #include +#include +#include +#include + +#include "epd_interface.h" + +class uc8159 : public epdInterface { + public: + ~uc8159(); + void epdSetup(); + void epdEnterSleep(); + void draw(); + void drawNoWait(); + void epdWaitRdy(); + void selectLUT(uint8_t lut); + + protected: + void initPartTwo(); + uint8_t drawLut; + void epdWriteDisplayData(); + void interleaveColorToBuffer(uint8_t *dst, uint8_t b, uint8_t r); + void eepromReadBlock(char a1, uint16_t readaddress, uint8_t *target, uint16_t length); + void epdReset(); + void loadLUTSfromEEPROM(uint8_t bracket, bool doRed); + uint8_t *loadLUT(uint8_t index, uint8_t bracket); + void loadTempVSH(uint8_t bracket); + void loadTempVCOMDC(uint8_t bracket); + void loadFrameRatePLL(uint8_t bracket); + uint8_t getTempBracket(); + uint8_t EPDtempBracket = 0; + uint8_t vshc; + uint8_t vslc; +}; diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/userinterface.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/userinterface.c deleted file mode 100644 index a6f28ffa..00000000 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/userinterface.c +++ /dev/null @@ -1,154 +0,0 @@ -#include "userinterface.h" - -#include -#include - -#include "bitmaps.h" -#include "board.h" -#include "comms.h" -#include "epd.h" -#include "font.h" -#include "powermgt.h" -#include "printf.h" -#include "proto.h" -#include "screen.h" -#include "settings.h" -#include "syncedproto.h" // for APmac / Channel -#include "timer.h" - -const uint16_t fwVersion = FW_VERSION; -const char fwVersionSuffix[] = FW_VERSION_SUFFIX; - -extern uint8_t capabilities; - -bool __attribute__((section(".aonshadow"))) lowBatteryShown = false; -bool __attribute__((section(".aonshadow"))) noAPShown = false; - -void addCapabilities() { - // if (capabilities) epdpr("Options: "); - if (capabilities & CAPABILITY_HAS_NFC) { - // epdpr("-NFC"); - if (capabilities & CAPABILITY_NFC_WAKE) { - // epdpr("+WAKE"); - } else { - // epdpr(" "); - } - } - if (capabilities & CAPABILITY_HAS_WAKE_BUTTON) { - // epdpr("-WAKE BUTTON"); - } -} - -void addOverlay() { - if ((currentChannel == 0) && (tagSettings.enableNoRFSymbol)) { - drawImg(0, 3, norf); - noAPShown = true; - } else { - noAPShown = false; - } - if ((batteryVoltage < tagSettings.batLowVoltage) && (tagSettings.enableLowBatSymbol)) { - drawImg(0, 366, batlow); - lowBatteryShown = true; - } else { - lowBatteryShown = false; - } -} - -void afterFlashScreenSaver() { - // selectLUT(EPD_LUT_DEFAULT); - // clearScreen(); - -#if (SCREEN_WIDTH == 400) // 4.2" - epdPrintBegin(3, 3, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); - epdpr("OpenEPaperLink"); - epdPrintEnd(); -#endif - // drawWithSleep(); -} - -void showSplashScreen() { - init_epd(); - fillWindow(0, 0, 640, 384, 1); - epdPrintf(10, 10, 1, "OpenEPaperLink starting!"); - addOverlay(); - epd_refresh_and_sleep(1); -} - -void showApplyUpdate() { - init_epd(); - - fillWindow(0, 0, 640, 384, 1); - - - epdPrintf(90, 170, 1, "Performing update... This shouldn't take too long!"); - - - addOverlay(); - epd_refresh_and_sleep(1); -} - -void showAPFound() { - init_epd(); - - fillWindow(0, 0, 640, 384, 1); - - epdPrintf(10, 10, 1, "OpenEPaperLink"); - epdPrintf(10, 40, 1, "AP Found at channel %d", currentChannel); - epdPrintf(10, 60, 1, "AP MAC: %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X", APmac[7], APmac[6], APmac[5], APmac[4], APmac[3], APmac[2], APmac[1], APmac[0]); - - epdPrintf(10, 330, 1, "Battery: %d.%dV", batteryVoltage / 1000, batteryVoltage % 1000); - epdPrintf(10, 350, 1, "Tag MAC: %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X", mSelfMac[7], mSelfMac[6], mSelfMac[5], mSelfMac[4], mSelfMac[3], mSelfMac[2], mSelfMac[1], mSelfMac[0]); - addOverlay(); - epd_refresh_and_sleep(1); -} - -void showNoAP() { - init_epd(); - fillWindow(0, 0, 640, 384, 1); - epdPrintf(10, 10, 1, "OpenEPaperLink "); - epdPrintf(10, 40, 1, "No AP found... We'll try again in a little while though!"); - epdPrintf(10, 350, 1, "Tag MAC: %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X", mSelfMac[7], mSelfMac[6], mSelfMac[5], mSelfMac[4], mSelfMac[3], mSelfMac[2], mSelfMac[1], mSelfMac[0]); - addOverlay(); - epd_refresh_and_sleep(1); -} - -void showLongTermSleep() { - // selectLUT(EPD_LUT_NO_REPEATS); - // clearScreen(); - - // epdPrintBegin(2, SCREEN_HEIGHT - 16, EPD_DIRECTION_X, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); - // epdpr("zZ"); - // epdPrintEnd(); - - addOverlay(); - // drawWithSleep(); -} -void showNoEEPROM() { - // selectLUT(EPD_LUT_NO_REPEATS); - // clearScreen(); -#if (SCREEN_WIDTH == 400) // 4.2" - epdPrintBegin(50, 3, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); - epdpr("EEPROM FAILED :("); - epdPrintEnd(); - loadRawBitmap(failed, 176, 126, EPD_COLOR_RED); - epdPrintBegin(100, 284, EPD_DIRECTION_X, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); - epdpr("Sleeping forever :'("); - epdPrintEnd(); -#endif - // drawWithSleep(); -} - -void showNoMAC() { - // selectLUT(EPD_LUT_NO_REPEATS); - // clearScreen(); -#if (SCREEN_WIDTH == 400) // 4.2" - epdPrintBegin(100, 3, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); - epdpr("NO MAC SET :("); - epdPrintEnd(); - loadRawBitmap(failed, 176, 126, EPD_COLOR_RED); - epdPrintBegin(100, 284, EPD_DIRECTION_X, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); - epdpr("Sleeping forever :'("); - epdPrintEnd(); -#endif - // drawWithSleep(); -} \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/userinterface.cpp b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/userinterface.cpp new file mode 100644 index 00000000..4141b1a4 --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/userinterface.cpp @@ -0,0 +1,166 @@ +#include "userinterface.h" + +#include +#include + +#include "bitmaps.h" +#include "board.h" +#include "comms.h" +#include "epd_interface.h" +#include "powermgt.h" +#include "mz100/printf.h" +#include "proto.h" +#include "screen.h" +#include "settings.h" +#include "syncedproto.h" // for APmac / Channel +#include "mz100/timer.h" + +#include "drawing.h" + +const uint16_t fwVersion = FW_VERSION; +const char fwVersionSuffix[] = FW_VERSION_SUFFIX; + +extern uint8_t capabilities; + +bool __attribute__((section(".aonshadow"))) lowBatteryShown = false; +bool __attribute__((section(".aonshadow"))) noAPShown = false; + +void addOverlay() { + if ((currentChannel == 0) && (tagSettings.enableNoRFSymbol)) { + // drawImg(0, 3, norf); + noAPShown = true; + } else { + noAPShown = false; + } + if ((batteryVoltage < tagSettings.batLowVoltage) && (tagSettings.enableLowBatSymbol)) { + // drawImg(0, 366, batlow); + lowBatteryShown = true; + } else { + lowBatteryShown = false; + } +#ifdef DEBUG_BUILD + fs->init(); + fontrender fr((char *)"font/FreeSansBold18pt7b"); + drawMask(15, epd->Yres - 45, 129, 33, COLOR_BLACK); + drawMask(15, epd->Yres - 45, 129, 33, COLOR_RED); + drawRoundedRectangle(15, epd->Yres - 45, 129, 33, COLOR_RED); + fr.epdPrintf(17, epd->Yres - 42, COLOR_RED, rotation::ROTATE_0, "DEBUG"); +#endif +} + +void afterFlashScreenSaver() { + // selectLUT(EPD_LUT_DEFAULT); + // clearScreen(); + +#if (SCREEN_WIDTH == 400) // 4.2" + epdPrintBegin(3, 3, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); + epdpr("OpenEPaperLink"); + epdPrintEnd(); +#endif + // drawWithSleep(); +} + +void showSplashScreen() { + fs->init(); + epdSetup(); + // addCompressedFSImage(300, 80,rotation::ROTATE_0, (char *)"img_tbird.bin.z"); + + // addCompressedFSImage(228, 24, rotation::ROTATE_0, (char *)"img/sadpanda.z"); + // addCompressedFSImage(0, 0, rotation::ROTATE_0, (char *)"forecast75.raw.z"); + + fontrender fr((char *)"font/FreeSansBold24pt7b"); + fr.epdPrintf(5, 5, 0, rotation::ROTATE_0, (char *)"OpenEPaperLink"); + fr.setFont((char *)"font/FreeSansBold18pt7b"); + fr.epdPrintf(20, 70, 1, rotation::ROTATE_0, "M2 7.5\""); + fr.epdPrintf(10, 350, 0, rotation::ROTATE_0, "Tag MAC: %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X", mSelfMac[7], mSelfMac[6], mSelfMac[5], mSelfMac[4], mSelfMac[3], mSelfMac[2], mSelfMac[1], mSelfMac[0]); + selectLUT(1); + draw(); + epdEnterSleep(); +} + +void showApplyUpdate() { + epdSetup(); + fontrender fr((char *)"font/FreeSansBold24pt7b"); + fr.epdPrintf(5, 5, 0, rotation::ROTATE_0, (char *)"Updating..."); + fr.setFont((char *)"font/FreeSansBold18pt7b"); + fr.epdPrintf(40, 160, 1, rotation::ROTATE_0, "This shouldn't take too long!"); + // epdPrintf(90, 170, 1, "Performing update... This shouldn't take too long!"); + + addOverlay(); + drawNoWait(); +} + +void showAPFound() { + fs->init(); + epdSetup(); + fontrender fr((char *)"font/FreeSansBold24pt7b"); + fr.epdPrintf(5, 5, 0, rotation::ROTATE_0, (char *)"OpenEPaperLink"); + fr.setFont((char *)"font/FreeSansBold18pt7b"); + fr.epdPrintf(20, 70, 0, rotation::ROTATE_0, "AP Found at channel %d", currentChannel); + fr.epdPrintf(20, 110, 0, rotation::ROTATE_0, "AP MAC: %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X", APmac[7], APmac[6], APmac[5], APmac[4], APmac[3], APmac[2], APmac[1], APmac[0]); + fr.epdPrintf(10, 315, 0, rotation::ROTATE_0, "Battery: %d.%dV", batteryVoltage / 1000, batteryVoltage % 1000); + fr.epdPrintf(10, 350, 0, rotation::ROTATE_0, "Tag MAC: %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X", mSelfMac[7], mSelfMac[6], mSelfMac[5], mSelfMac[4], mSelfMac[3], mSelfMac[2], mSelfMac[1], mSelfMac[0]); + selectLUT(1); + draw(); + epdEnterSleep(); +} + +void showNoAP() { + fs->init(); + + epdSetup(); + addCompressedFSImage(228, 24, rotation::ROTATE_0, (char *)"img/sadpanda.z"); + // addCompressedFSImage(0, 0, rotation::ROTATE_0, (char *)"forecast75.raw.z"); + + fontrender fr((char *)"font/FreeSansBold24pt7b"); + fr.epdPrintf(5, 5, 0, rotation::ROTATE_0, (char *)"No AP Found!"); + fr.setFont((char *)"font/FreeSansBold18pt7b"); + fr.epdPrintf(20, 70, 1, rotation::ROTATE_0, "We'll try again later\""); + // epdPrintf(10, 10, 1, "OpenEPaperLink "); + // epdPrintf(10, 40, 1, "No AP found... We'll try again in a little while though!"); + // epdPrintf(10, 350, 1, "Tag MAC: %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X", mSelfMac[7], mSelfMac[6], mSelfMac[5], mSelfMac[4], mSelfMac[3], mSelfMac[2], mSelfMac[1], mSelfMac[0]); + addOverlay(); + draw(); + epdEnterSleep(); +} + +void showLongTermSleep() { + // selectLUT(EPD_LUT_NO_REPEATS); + // clearScreen(); + + // epdPrintBegin(2, SCREEN_HEIGHT - 16, EPD_DIRECTION_X, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); + // epdpr("zZ"); + // epdPrintEnd(); + + addOverlay(); + // drawWithSleep(); +} +void showNoEEPROM() { + // selectLUT(EPD_LUT_NO_REPEATS); + // clearScreen(); +#if (SCREEN_WIDTH == 400) // 4.2" + epdPrintBegin(50, 3, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); + epdpr("EEPROM FAILED :("); + epdPrintEnd(); + loadRawBitmap(failed, 176, 126, EPD_COLOR_RED); + epdPrintBegin(100, 284, EPD_DIRECTION_X, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); + epdpr("Sleeping forever :'("); + epdPrintEnd(); +#endif + // drawWithSleep(); +} + +void showNoMAC() { + // selectLUT(EPD_LUT_NO_REPEATS); + // clearScreen(); +#if (SCREEN_WIDTH == 400) // 4.2" + epdPrintBegin(100, 3, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); + epdpr("NO MAC SET :("); + epdPrintEnd(); + loadRawBitmap(failed, 176, 126, EPD_COLOR_RED); + epdPrintBegin(100, 284, EPD_DIRECTION_X, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); + epdpr("Sleeping forever :'("); + epdPrintEnd(); +#endif + // drawWithSleep(); +} diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/zigbee.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/zigbee.c index 59f5b80b..47af6576 100644 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/zigbee.c +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/zigbee.c @@ -1,8 +1,8 @@ //#include #include -#include "util.h" +#include "mz100/util.h" #include "zigbee.h" -#include "printf.h" +#include "mz100/printf.h" volatile uint8_t calibration_irq_ocoured = 0; volatile uint8_t zigbee_tx_done = 0; @@ -551,4 +551,4 @@ void radioRxEnable(uint8_t state) void radioRxFlush() { -} \ No newline at end of file +} diff --git a/ARM_Tag_FW/common/bitmaps.h b/ARM_Tag_FW/common/bitmaps.h new file mode 100644 index 00000000..080d99ec --- /dev/null +++ b/ARM_Tag_FW/common/bitmaps.h @@ -0,0 +1,1867 @@ + +// images generated by https://lvgl.io/tools/imageconverter, prepended with width, height. "CF_INDEXED_1_BIT"-mode, little-endian +#include + +static const uint8_t oepli[] = { + 128,0x00, 26,0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x9f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x38, 0x70, 0x01, 0xc0, + 0x7f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x9f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x38, 0x70, 0x01, 0xc0, + 0x7f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x9f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x38, 0x70, 0x01, 0xc0, + 0xf7, 0x80, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x01, 0xc0, + 0xe3, 0x80, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x01, 0xc0, + 0xe3, 0x9d, 0xc1, 0xc7, 0x70, 0x1f, 0x9c, 0xe7, 0x73, 0xb8, 0x71, 0xd0, 0x38, 0x73, 0xb9, 0xc7, + 0xe3, 0x9f, 0xe3, 0xe7, 0xf8, 0x1f, 0x9f, 0xef, 0xf3, 0xfc, 0xf9, 0xf0, 0x38, 0x73, 0xfd, 0xce, + 0xe3, 0x9f, 0xe7, 0x77, 0xf8, 0x1f, 0x9f, 0xcf, 0xf3, 0xfd, 0xdd, 0xf0, 0x38, 0x73, 0xfd, 0xdc, + 0xe3, 0x9c, 0xe7, 0xf7, 0x38, 0x1c, 0x1f, 0x8e, 0x73, 0x9d, 0xfd, 0xc0, 0x38, 0x73, 0x9d, 0xf8, + 0xe3, 0x9c, 0xe7, 0xf7, 0x38, 0x1c, 0x1c, 0x0e, 0x73, 0x9d, 0xfd, 0xc0, 0x38, 0x73, 0x9d, 0xf8, + 0xf7, 0x9c, 0xe7, 0x07, 0x38, 0x1c, 0x1c, 0x0e, 0x73, 0x9d, 0xc1, 0xc0, 0x38, 0x73, 0x9d, 0xdc, + 0x7f, 0x1f, 0xe7, 0xf7, 0x38, 0x1f, 0x9c, 0x0f, 0xf3, 0xfd, 0xfd, 0xc0, 0x3f, 0x73, 0x9d, 0xdc, + 0x7f, 0x1f, 0xe3, 0xe7, 0x38, 0x1f, 0x9c, 0x0f, 0xf3, 0xfc, 0xf9, 0xc0, 0x3f, 0x73, 0x9d, 0xce, + 0x1e, 0x1d, 0xc1, 0xc7, 0x38, 0x1f, 0x9c, 0x07, 0x73, 0xb8, 0x71, 0xc0, 0x3f, 0x73, 0x9d, 0xc7, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +}; + +static const uint8_t cloud[] = { + 128,0x00, 50,0x00 , + 0x00, 0x08, 0x82, 0xa2, 0xab, 0x55, 0xbf, 0xff, 0xff, 0xff, 0x7d, 0xb4, 0x62, 0x28, 0x00, 0x00, + 0x00, 0x10, 0x10, 0x11, 0x76, 0xff, 0x7b, 0xff, 0xff, 0x7f, 0xb7, 0xa9, 0x55, 0x50, 0x51, 0x00, + 0x00, 0x29, 0x22, 0x96, 0x6f, 0xf7, 0xbf, 0xff, 0xff, 0xff, 0xea, 0xe6, 0x22, 0xaa, 0x08, 0x00, + 0x00, 0x02, 0x54, 0x2a, 0xbf, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xfd, 0x59, 0xb4, 0x10, 0x20, 0x00, + 0x00, 0x24, 0x23, 0xb5, 0xb5, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xf6, 0xae, 0x48, 0x55, 0x10, 0x00, + 0x00, 0x88, 0x90, 0x54, 0x6a, 0xef, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xf5, 0xa3, 0x82, 0x00, 0x00, + 0x00, 0x01, 0x2d, 0xa3, 0xb3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf6, 0xbe, 0x4e, 0x52, 0x09, 0x00, + 0x04, 0x90, 0x02, 0x0d, 0x55, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xdd, 0x68, 0xa9, 0x00, 0x10, + 0x00, 0x49, 0x0c, 0xfb, 0xab, 0x6f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xeb, 0x95, 0x5a, 0x00, 0x20, + 0x00, 0x12, 0x91, 0x22, 0xbf, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0x65, 0x81, 0x40, 0x40, + 0x00, 0x28, 0x12, 0x7d, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xab, 0x28, 0x00, 0x00, + 0x00, 0x42, 0x0a, 0x97, 0x75, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x4a, 0xc2, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x02, 0x9c, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6a, 0x6a, 0x8d, 0x00, 0x20, + 0x00, 0x04, 0x4d, 0x72, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd5, 0xd5, 0x74, 0x80, 0x00, + 0x02, 0x40, 0x12, 0x8e, 0xdf, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xae, 0xaa, 0x0a, 0x11, 0x20, + 0x00, 0x20, 0x52, 0x5f, 0xf5, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x72, 0x94, 0xaa, 0x24, 0x00, + 0x00, 0x01, 0x0a, 0xab, 0x6f, 0x77, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xaf, 0x54, 0x54, 0x88, 0x00, + 0x00, 0x04, 0x80, 0x4d, 0x95, 0xeb, 0xff, 0xff, 0xff, 0xff, 0x5b, 0x58, 0xb5, 0x51, 0x40, 0x00, + 0x00, 0x08, 0x08, 0xa6, 0xb3, 0xf7, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xad, 0x4a, 0xa0, 0x10, 0x00, + 0x00, 0x02, 0x96, 0x41, 0xdc, 0xae, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xbf, 0xea, 0x48, 0x02, 0x00, + 0x00, 0x00, 0x09, 0x3e, 0xab, 0x75, 0xef, 0xff, 0xff, 0xff, 0xff, 0xd4, 0xb1, 0x21, 0x08, 0x00, + 0x00, 0x00, 0x0a, 0xc3, 0x5d, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xef, 0xef, 0x44, 0x4a, 0x64, 0x80, + 0x00, 0x00, 0xa1, 0x52, 0xa6, 0xef, 0xef, 0xff, 0xff, 0xff, 0xd6, 0xca, 0xf5, 0x10, 0x18, 0x00, + 0x00, 0x00, 0x02, 0x15, 0x4b, 0xd5, 0xdf, 0xff, 0xff, 0xf7, 0xeb, 0xd4, 0xd8, 0x85, 0x00, 0x00, +}; + +static const uint8_t receive[] = { + 56, 0x00, 56,0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xf0, + 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xf0, + 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xc0, + 0x00, 0x00, 0x00, 0x1f, 0xff, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x01, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0xfe, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x03, 0xe0, + 0x00, 0x00, 0x7f, 0x80, 0x00, 0x7f, 0xf0, + 0x00, 0x00, 0xfe, 0x00, 0x03, 0xff, 0xf0, + 0x00, 0x01, 0xfc, 0x00, 0x0f, 0xff, 0xf0, + 0x00, 0x01, 0xf8, 0x00, 0x3f, 0xff, 0xf0, + 0x00, 0x03, 0xf8, 0x00, 0xff, 0xff, 0x80, + 0x00, 0x07, 0xf0, 0x01, 0xff, 0xe0, 0x00, + 0x00, 0x0f, 0xe0, 0x03, 0xff, 0x00, 0x00, + 0x00, 0x0f, 0xc0, 0x0f, 0xf8, 0x00, 0x00, + 0x00, 0x1f, 0x80, 0x1f, 0xf0, 0x00, 0x00, + 0x00, 0x1f, 0x80, 0x3f, 0xc0, 0x00, 0x00, + 0x00, 0x3f, 0x00, 0x3f, 0x80, 0x00, 0x00, + 0x00, 0x3f, 0x00, 0x7f, 0x00, 0x00, 0x00, + 0x00, 0x7e, 0x00, 0xfe, 0x00, 0x07, 0xe0, + 0x00, 0x7e, 0x01, 0xfc, 0x00, 0x1f, 0xf0, + 0x00, 0xfc, 0x01, 0xf8, 0x00, 0x7f, 0xf0, + 0x00, 0xfc, 0x03, 0xf0, 0x01, 0xff, 0xf0, + 0x00, 0xf8, 0x03, 0xf0, 0x03, 0xff, 0xf0, + 0x01, 0xf8, 0x07, 0xe0, 0x07, 0xff, 0x00, + 0x01, 0xf8, 0x07, 0xe0, 0x0f, 0xf0, 0x00, + 0x01, 0xf0, 0x0f, 0xc0, 0x1f, 0xe0, 0x00, + 0x01, 0xf0, 0x0f, 0xc0, 0x3f, 0x80, 0x00, + 0x03, 0xf0, 0x0f, 0x80, 0x3f, 0x00, 0x00, + 0x03, 0xf0, 0x1f, 0x80, 0x7e, 0x00, 0x00, + 0x03, 0xe0, 0x1f, 0x80, 0x7e, 0x00, 0x00, + 0x03, 0xe0, 0x1f, 0x00, 0xfc, 0x01, 0xe0, + 0x03, 0xe0, 0x1f, 0x00, 0xfc, 0x07, 0xf8, + 0x03, 0xe0, 0x1f, 0x00, 0xf8, 0x0f, 0xfc, + 0x03, 0xe0, 0x3f, 0x00, 0xf8, 0x0f, 0xfc, + 0x03, 0xe0, 0x3f, 0x01, 0xf8, 0x1f, 0xfe, + 0x03, 0xe0, 0x3f, 0x01, 0xf8, 0x1f, 0xfe, + 0x03, 0xe0, 0x3f, 0x01, 0xf8, 0x1f, 0xfe, + 0x03, 0xc0, 0x3e, 0x01, 0xf0, 0x1f, 0xfe, + 0x01, 0xc0, 0x1e, 0x00, 0xf0, 0x0f, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + + +static const uint8_t failed[] = { + 48, 0x00,48,0x00, + 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x03, 0xff, 0xff, 0xe0, 0x00, + 0x00, 0x0f, 0xff, 0xff, 0xf0, 0x00, + 0x00, 0x3f, 0xff, 0xff, 0xfc, 0x00, + 0x00, 0x7f, 0xf0, 0x0f, 0xfe, 0x00, + 0x00, 0xff, 0x80, 0x01, 0xff, 0x00, + 0x01, 0xfe, 0x00, 0x00, 0x7f, 0x80, + 0x03, 0xf8, 0x00, 0x00, 0x1f, 0xc0, + 0x07, 0xf0, 0x00, 0x00, 0x3f, 0xe0, + 0x0f, 0xe0, 0x00, 0x00, 0x7f, 0xf0, + 0x0f, 0xc0, 0x00, 0x00, 0xff, 0xf0, + 0x1f, 0x80, 0x00, 0x01, 0xff, 0xf8, + 0x1f, 0x00, 0x00, 0x03, 0xff, 0xf8, + 0x3f, 0x00, 0x00, 0x07, 0xfe, 0xfc, + 0x3e, 0x00, 0x00, 0x0f, 0xfc, 0x7c, + 0x7e, 0x00, 0x00, 0x1f, 0xf8, 0x7e, + 0x7c, 0x00, 0x00, 0x3f, 0xf0, 0x3e, + 0x7c, 0x00, 0x00, 0x7f, 0xe0, 0x3e, + 0xfc, 0x00, 0x00, 0xff, 0xc0, 0x3f, + 0xf8, 0x00, 0x01, 0xff, 0x80, 0x1f, + 0xf8, 0x00, 0x03, 0xff, 0x00, 0x1f, + 0xf8, 0x00, 0x07, 0xfe, 0x00, 0x1f, + 0xf8, 0x00, 0x0f, 0xfc, 0x00, 0x1f, + 0xf8, 0x00, 0x1f, 0xf8, 0x00, 0x1f, + 0xf8, 0x00, 0x3f, 0xf0, 0x00, 0x1f, + 0xf8, 0x00, 0x7f, 0xe0, 0x00, 0x1f, + 0xf8, 0x00, 0xff, 0xc0, 0x00, 0x1f, + 0xfc, 0x01, 0xff, 0x80, 0x00, 0x3f, + 0x7c, 0x03, 0xff, 0x00, 0x00, 0x3e, + 0x7c, 0x07, 0xfe, 0x00, 0x00, 0x3e, + 0x7e, 0x0f, 0xfc, 0x00, 0x00, 0x7e, + 0x3e, 0x1f, 0xf8, 0x00, 0x00, 0x7c, + 0x3f, 0x3f, 0xf0, 0x00, 0x00, 0xfc, + 0x3f, 0x7f, 0xe0, 0x00, 0x00, 0xfc, + 0x1f, 0xff, 0xc0, 0x00, 0x01, 0xf8, + 0x0f, 0xff, 0x80, 0x00, 0x03, 0xf0, + 0x0f, 0xff, 0x00, 0x00, 0x07, 0xf0, + 0x07, 0xfe, 0x00, 0x00, 0x0f, 0xe0, + 0x03, 0xfc, 0x00, 0x00, 0x1f, 0xc0, + 0x01, 0xfe, 0x00, 0x00, 0x7f, 0x80, + 0x00, 0xff, 0x80, 0x01, 0xff, 0x00, + 0x00, 0x7f, 0xf0, 0x0f, 0xfe, 0x00, + 0x00, 0x3f, 0xff, 0xff, 0xfc, 0x00, + 0x00, 0x0f, 0xff, 0xff, 0xf0, 0x00, + 0x00, 0x03, 0xff, 0xff, 0xe0, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, +}; + +static const uint8_t ant[] = { + 16,0x00, 16,0x00, + 0x00, 0x40, + 0x02, 0x20, + 0x01, 0x20, + 0x11, 0x20, + 0x11, 0x20, + 0x12, 0x20, + 0x28, 0x40, + 0x28, 0x00, + 0x28, 0x00, + 0x44, 0x00, + 0x44, 0x00, + 0x44, 0x00, + 0x44, 0x00, + 0x82, 0x00, + 0x82, 0x00, + 0xfe, 0x00, +}; + +static const uint8_t cross[] = { + 8,0x00, 8,0x00, + 0x00, + 0x63, + 0x77, + 0x3e, + 0x1c, + 0x3e, + 0x77, + 0x63 +}; + +static const uint8_t battery[] = { + 16,0x00,10,0x00, + 0x00, 0x00, + 0x7f, 0xfc, + 0x40, 0x04, + 0x58, 0x06, + 0x58, 0x06, + 0x58, 0x06, + 0x58, 0x06, + 0x40, 0x04, + 0x7f, 0xfc, + 0x00, 0x00, +}; +static const uint8_t pandablack[] = { + 0x58,0x02,0x62,0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xdf, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfe, 0xd3, 0xbf, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xbb, 0x6c, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf6, 0xc9, 0x24, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfd, 0x94, 0xcc, 0x93, 0x21, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe4, 0xd9, 0x32, 0xc8, 0x90, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x9b, 0x26, 0x42, 0x28, 0x8c, 0x8f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf6, 0xd9, 0x24, 0x99, 0x26, 0x22, 0x61, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xd9, 0x24, 0x91, 0x84, 0x01, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x49, 0x24, 0x92, 0x20, 0xc8, 0x44, 0x92, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf9, 0x66, 0xc8, 0x08, 0x22, 0x04, 0x81, 0x24, 0x87, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xcc, 0x92, 0x02, 0x41, 0x08, 0x21, 0x28, 0x09, 0x13, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe6, 0x98, 0x20, 0x10, 0x41, 0x08, 0x02, 0x41, 0x48, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x31, 0x21, 0x09, 0x04, 0x04, 0x06, 0xd0, 0x10, 0x48, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x12, 0x44, 0x40, 0x41, 0x00, 0xf7, 0xff, 0x84, 0x23, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xd9, 0xc8, 0x80, 0x10, 0x00, 0x0b, 0xff, 0x6f, 0x61, 0x08, 0x23, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf4, 0x24, 0x21, 0x00, 0x00, 0x1f, 0xfb, 0x79, 0xdc, 0x42, 0x83, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xa6, 0x21, 0x00, 0x00, 0x00, 0x3f, 0x9b, 0x9e, 0xdf, 0x00, 0x98, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xa9, 0x80, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xf7, 0x67, 0x88, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x48, 0x04, 0x00, 0x00, 0x00, 0x7f, 0xef, 0xfd, 0xf9, 0xe2, 0x11, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x52, 0x10, 0x00, 0x00, 0x00, 0x77, 0x7b, 0x6f, 0xbe, 0x70, 0x04, 0x8f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x90, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xdf, 0xfe, 0xef, 0xdc, 0x42, 0x4f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x20, 0x40, 0x00, 0x00, 0x00, 0xff, 0xf6, 0xdb, 0xfb, 0xff, 0x10, 0x53, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xee, 0xff, 0xff, 0x7e, 0xed, 0xc4, 0x91, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xcc, 0x90, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xbb, 0x6d, 0xdf, 0xbf, 0x70, 0x24, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xbf, 0xff, 0xf7, 0xf6, 0xe1, 0x0b, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x01, 0xdc, 0xed, 0xb6, 0xfd, 0xde, 0xe0, 0x48, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf7, 0xff, 0xff, 0xbf, 0x7b, 0x62, 0x04, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf6, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x76, 0xdb, 0xef, 0xef, 0xa0, 0x24, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfd, 0x20, 0x20, 0x00, 0x00, 0x00, 0x01, 0xdd, 0xdf, 0xfe, 0xfb, 0xbd, 0xe0, 0x02, 0x27, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xed, 0x80, 0x80, 0x00, 0x00, 0x00, 0x01, 0xff, 0xbb, 0x67, 0xbe, 0xff, 0x61, 0x11, 0x19, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe6, 0xef, 0xff, 0xef, 0xee, 0xc0, 0x44, 0x43, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xba, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xfd, 0xbb, 0xfb, 0x7b, 0xc0, 0x00, 0x48, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xdd, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb7, 0x77, 0xef, 0x7f, 0xdf, 0x40, 0x09, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf7, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xed, 0xde, 0xfd, 0xdd, 0xf7, 0x40, 0x80, 0x26, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xfe, 0xc8, 0x20, 0x00, 0x00, 0x00, 0x00, 0x01, 0xef, 0xfb, 0xb7, 0xf7, 0x7d, 0x80, 0x00, 0x01, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0xbf, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbb, 0x6f, 0xff, 0x7f, 0xdf, 0x80, 0x01, 0x10, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfb, 0xed, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xfd, 0xdb, 0xdb, 0xfb, 0x80, 0x10, 0x06, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xdf, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xdd, 0xb7, 0x7e, 0xfe, 0xef, 0x00, 0x00, 0x20, 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfd, 0xb7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf7, 0xff, 0xef, 0xb7, 0xbd, 0x00, 0x00, 0x00, 0x87, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xef, 0xfd, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbe, 0xdb, 0x7b, 0xff, 0xff, 0x00, 0x02, 0x04, 0x21, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0xbf, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xeb, 0xff, 0x76, 0xdb, 0xee, 0x00, 0x00, 0x01, 0x09, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0xfb, 0xef, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xdf, 0x6d, 0xdf, 0xfe, 0xfc, 0x00, 0x00, 0x40, 0x40, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0xff, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xff, 0xfb, 0x7f, 0xbc, 0x00, 0x00, 0x00, 0x12, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xdd, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xb6, 0xef, 0xdb, 0xf8, 0x00, 0x00, 0x08, 0x82, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xf7, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0xff, 0xbd, 0xfe, 0xf8, 0x00, 0x00, 0x00, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfd, 0xbe, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdb, 0xf7, 0xb7, 0xe0, 0x00, 0x00, 0x00, 0x21, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbf, 0xef, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0xde, 0xff, 0xe0, 0x00, 0x00, 0x02, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xef, 0x7b, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0xbf, 0xfb, 0xdb, 0xc0, 0x00, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7b, 0xdf, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xed, 0xbf, 0xff, 0x80, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x7f, 0xed, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xb7, 0xbb, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xdb, 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfd, 0xef, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x1f, 0xff, 0xf6, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xfb, 0x7e, 0xf8, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xf9, 0x0e, 0xed, 0xdf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x08, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xee, 0xdf, 0xec, 0x00, 0x00, 0x00, 0x06, 0xff, 0xff, 0xff, 0xef, 0xbf, 0x7b, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x7b, 0xf7, 0xb8, 0x00, 0x00, 0x00, 0x07, 0xbf, 0xff, 0xdf, 0xfb, 0xf7, 0xee, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfd, 0xbd, 0xf8, 0x00, 0x00, 0x00, 0x0f, 0xf7, 0xf6, 0xff, 0x7f, 0xff, 0xbd, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xbe, 0xef, 0xfc, 0x00, 0x00, 0x00, 0x0e, 0xdf, 0x7f, 0xbb, 0xdf, 0xfb, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfb, 0xfe, 0xd0, 0x00, 0x00, 0x00, 0x1f, 0xfb, 0xdb, 0xfe, 0xf7, 0xff, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0xb7, 0xf8, 0x00, 0x00, 0x00, 0x17, 0x6e, 0xfe, 0xdf, 0xfd, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb8, 0x00, 0x00, 0x00, 0x1d, 0xff, 0xb6, 0xf7, 0x6f, 0x6f, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xde, 0xf8, 0x00, 0x00, 0x00, 0x1f, 0xb7, 0x6d, 0xb5, 0xff, 0xfd, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x1e, 0xfd, 0xd9, 0x2d, 0x97, 0xdf, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfb, 0xf8, 0x00, 0x00, 0x00, 0x3b, 0xdb, 0x77, 0x6a, 0x74, 0xf7, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xef, 0xf8, 0x00, 0x00, 0x00, 0x1f, 0xfb, 0x64, 0xca, 0xdf, 0x7f, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x1f, 0x6d, 0x9b, 0x11, 0x25, 0xde, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x11, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xf0, 0x00, 0x00, 0x00, 0x3d, 0xfd, 0xd2, 0x45, 0x6d, 0xbf, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x37, 0xdb, 0x64, 0xc9, 0x9b, 0x79, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x3f, 0x7b, 0x39, 0xaa, 0xdb, 0xfe, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3f, 0xfd, 0xce, 0x66, 0x6c, 0xfa, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0xf6, 0xd3, 0x59, 0xb7, 0xfb, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3f, 0xbb, 0x3d, 0x9e, 0xb7, 0xb7, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1f, 0xfb, 0x6d, 0xe6, 0xdf, 0xe5, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1d, 0xf6, 0xd6, 0x7b, 0x7f, 0x6d, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3f, 0xbd, 0xb7, 0x9b, 0x7f, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x02, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1e, 0xed, 0xb9, 0xed, 0xfc, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1f, 0xfb, 0x6e, 0x77, 0xf7, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0f, 0xdb, 0x7b, 0xdf, 0xcb, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x0e, 0xfd, 0xdb, 0xff, 0x3b, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x20, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0f, 0xb7, 0x6d, 0xb6, 0x66, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0f, 0xfb, 0x6f, 0x7c, 0xdd, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0x84, 0x12, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x0e, 0xfb, 0xbb, 0xeb, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0xbe, 0xfe, 0xeb, 0x36, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x08, 0x10, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0xef, 0xdf, 0xdd, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x7b, 0x7f, 0x56, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x04, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0xdf, 0xff, 0xb3, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x01, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0xf7, 0xfc, 0xbf, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0xbf, 0xf7, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x03, 0xff, 0xf6, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x04, 0x02, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x03, 0xff, 0x9f, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x90, 0x00, 0x00, 0x10, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x40, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x01, 0xdf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x01, 0xfd, 0xe4, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x24, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x01, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x20, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x01, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xc0, 0x00, 0x00, 0x00, 0x13, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x01, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x10, 0x00, 0x01, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbd, 0x22, 0x00, 0x00, 0x00, 0x23, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x84, 0x80, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xec, 0x99, 0x80, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x20, 0x20, 0x01, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x6e, 0xcf, 0x60, 0x00, 0x00, 0x09, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x09, 0x08, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xdb, 0xff, 0xc0, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x92, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x04, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x44, 0x10, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x49, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x77, 0xff, 0xb4, 0xfc, 0x00, 0x00, 0x02, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xff, 0xfb, 0x6f, 0x7e, 0x00, 0x00, 0x01, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x20, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xff, 0xee, 0xdb, 0x7e, 0x00, 0x00, 0x01, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0xff, 0xbd, 0xb4, 0xdf, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x6f, 0xfe, 0xe7, 0x6f, 0xb7, 0x80, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0xfb, 0xbb, 0x6a, 0xb7, 0xc0, 0x00, 0x02, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xee, 0xdb, 0x9a, 0xdb, 0xc0, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x3b, 0xff, 0xb6, 0xdc, 0xf7, 0x6d, 0xe0, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x5f, 0xfe, 0xdb, 0x67, 0x2d, 0x6d, 0xf0, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xfe, 0xdb, 0x7b, 0xc9, 0x9b, 0x70, 0x00, 0x01, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x01, 0xff, 0xf7, 0x6d, 0x9a, 0x7b, 0xb6, 0xf8, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x02, 0xff, 0xf5, 0xb6, 0xed, 0xb6, 0x6d, 0xfc, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xbd, 0xb6, 0xed, 0x95, 0xdb, 0x7c, 0x00, 0x00, 0x97, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xce, 0x6d, 0x9b, 0x7d, 0x9b, 0x7e, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0x73, 0xd9, 0xf3, 0x6d, 0xb6, 0xde, 0x00, 0x00, 0x09, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfd, 0xbd, 0x9e, 0x6d, 0xad, 0xed, 0xbe, 0x00, 0x00, 0x47, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x0d, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfe, 0xcd, 0x67, 0x9c, 0xee, 0x6d, 0xbf, 0x00, 0x00, 0x10, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x7f, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf6, 0xf6, 0xf9, 0xe7, 0x73, 0xb6, 0xdf, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x13, 0xf2, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf7, 0x33, 0x9e, 0x6d, 0x9d, 0xb6, 0xff, 0x00, 0x00, 0x48, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x9d, 0xb3, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xd9, 0xcd, 0x66, 0xdb, 0xbd, 0xdb, 0x3f, 0x80, 0x00, 0x02, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xff, 0x0c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbf, 0xde, 0x76, 0x79, 0xb2, 0xe6, 0x6f, 0xdf, 0x80, 0x00, 0x11, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xec, 0xe7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x67, 0x33, 0x9f, 0x6e, 0xdf, 0xbc, 0xf7, 0x80, 0x00, 0x04, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xf2, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7f, 0xb9, 0xcd, 0xe5, 0xdb, 0x79, 0xef, 0xbf, 0x80, 0x00, 0x21, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xd3, 0x1d, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfe, 0xdb, 0x6d, 0x36, 0x77, 0x6f, 0x73, 0xef, 0xc0, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xd9, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xfe, 0xd6, 0x66, 0xdb, 0xad, 0xb7, 0x9e, 0xff, 0xc0, 0x00, 0x04, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe4, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0xfb, 0x65, 0x9b, 0xdb, 0xbb, 0xbc, 0xff, 0x37, 0xc0, 0x00, 0x10, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe4, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfd, 0xb9, 0xb9, 0x6c, 0xda, 0xef, 0xed, 0xff, 0xc0, 0x00, 0x41, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xf6, 0x9a, 0xcf, 0x37, 0x6e, 0xdb, 0x3b, 0xcf, 0xc0, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x6c, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xff, 0xfb, 0x66, 0x66, 0xdb, 0x6d, 0xdf, 0xf6, 0xfb, 0xe0, 0x00, 0x04, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xdc, 0x00, 0x00, 0x64, 0x00, 0x00, 0x01, 0xff, 0xed, 0x6d, 0xb9, 0xdb, 0xb7, 0x74, 0xdf, 0xbf, 0xc0, 0x00, 0x01, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x03, 0x80, 0x00, 0x00, 0x03, 0x7f, 0xf5, 0x91, 0x2f, 0x66, 0xdb, 0x6f, 0xdb, 0x6f, 0xc0, 0x00, 0x20, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0e, 0xdf, 0xdc, 0x96, 0xcd, 0xbd, 0xdb, 0xdb, 0x7f, 0xfb, 0xc0, 0x00, 0x04, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfc, 0x40, 0x38, 0x40, 0x00, 0x00, 0x18, 0x3f, 0xda, 0x66, 0x76, 0xb7, 0x6e, 0xdd, 0xed, 0xbf, 0xe0, 0x00, 0x01, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x74, 0x1f, 0x66, 0x49, 0x33, 0x99, 0xbd, 0xb6, 0xbf, 0xed, 0xc0, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe6, 0xc8, 0x00, 0x00, 0x01, 0xe1, 0x1f, 0xb1, 0x33, 0x9d, 0xee, 0xdd, 0xf6, 0xf6, 0xff, 0xe0, 0x00, 0x04, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfb, 0x80, 0x00, 0x00, 0x0f, 0x88, 0x5e, 0x99, 0x94, 0xed, 0x6e, 0xe7, 0x5f, 0xdf, 0xb7, 0xe0, 0x00, 0x10, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xb4, 0x80, 0x00, 0x6c, 0x02, 0x1f, 0xcc, 0x4d, 0x37, 0x73, 0x3f, 0x79, 0xfb, 0xfd, 0xe0, 0x00, 0x00, 0x33, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0x24, 0x83, 0x00, 0x00, 0xbd, 0x66, 0x67, 0x76, 0xdd, 0xfb, 0xcf, 0x6e, 0xdf, 0xe0, 0x00, 0x00, 0x89, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0xff, 0xfe, 0xd0, 0x00, 0x04, 0x3f, 0x31, 0x99, 0xda, 0xdd, 0xce, 0xff, 0xff, 0xf7, 0xe0, 0x00, 0x00, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xbf, 0xff, 0xf2, 0x00, 0x00, 0x21, 0x7b, 0x89, 0x2c, 0xdb, 0x67, 0x7d, 0xb6, 0xb5, 0xbd, 0xe0, 0x00, 0x00, 0x4c, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfb, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xcc, 0xce, 0xdd, 0xbd, 0xb7, 0xdf, 0xff, 0xef, 0xe0, 0x00, 0x00, 0x13, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7b, 0xc0, 0x00, 0x00, 0x00, 0x04, 0xf6, 0x64, 0x93, 0x66, 0xdb, 0xfa, 0xfb, 0x6e, 0x7b, 0xe0, 0x00, 0x00, 0x04, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xde, 0x80, 0x00, 0x00, 0x00, 0x21, 0xfb, 0x13, 0x37, 0x7b, 0x6e, 0xcf, 0xbf, 0xfb, 0xdf, 0xe0, 0x00, 0x02, 0x24, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x89, 0xed, 0x92, 0x6d, 0xbb, 0x6d, 0xfd, 0xdd, 0xbf, 0xf7, 0xe0, 0x00, 0x00, 0x09, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xbd, 0x80, 0x00, 0x00, 0x00, 0x03, 0xf4, 0xcc, 0xcc, 0xed, 0xdd, 0xb7, 0x77, 0xe6, 0xfd, 0xe0, 0x00, 0x00, 0x0a, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00, 0x00, 0x01, 0x13, 0xdb, 0x25, 0xb7, 0x6d, 0xb7, 0xb7, 0xfa, 0xff, 0xbf, 0xe0, 0x00, 0x00, 0x82, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x76, 0x00, 0x00, 0x00, 0x00, 0x07, 0xda, 0x64, 0xb7, 0x6e, 0xf6, 0xed, 0xaf, 0xbb, 0xef, 0xe0, 0x00, 0x00, 0x12, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf6, 0x00, 0x00, 0x00, 0x02, 0x27, 0xec, 0x9a, 0xcc, 0xdb, 0x5e, 0xef, 0xfd, 0xee, 0xfb, 0xe0, 0x00, 0x00, 0x05, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x6d, 0x93, 0x7b, 0xb7, 0x73, 0xbb, 0x77, 0x7f, 0xbf, 0xe0, 0x00, 0x02, 0x04, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xcc, 0x00, 0x00, 0x00, 0x04, 0x4f, 0xd3, 0x65, 0x2b, 0x6d, 0xdf, 0xbf, 0xbf, 0xdd, 0xed, 0xe0, 0x00, 0x00, 0x13, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x18, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x17, 0xb6, 0x4c, 0xed, 0xdb, 0x6d, 0xed, 0xed, 0xf7, 0xff, 0xe0, 0x00, 0x00, 0x01, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xed, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x01, 0x1f, 0x6c, 0xb3, 0x9d, 0xb6, 0xef, 0x7f, 0x7f, 0x7f, 0x77, 0xc0, 0x00, 0x00, 0x08, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x39, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xd8, 0x00, 0x00, 0x00, 0x08, 0x4f, 0x59, 0xa6, 0x76, 0xb6, 0xdb, 0x76, 0xdb, 0xdd, 0xdf, 0xc0, 0x00, 0x00, 0x43, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x9c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xd8, 0x00, 0x00, 0x00, 0x02, 0x1e, 0xd6, 0x6d, 0xd6, 0xdb, 0xde, 0xdf, 0xee, 0xf7, 0xff, 0xe0, 0x00, 0x00, 0x01, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x8c, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xb3, 0x59, 0xbb, 0x6e, 0xf6, 0xf9, 0xbf, 0xbf, 0xbf, 0xc0, 0x00, 0x00, 0x08, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb2, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xf0, 0x00, 0x00, 0x00, 0x08, 0x7d, 0xad, 0x96, 0xad, 0xb6, 0xb7, 0xbf, 0xf5, 0xfe, 0xf7, 0xc0, 0x00, 0x00, 0x02, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x39, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x02, 0x3e, 0xcc, 0xe6, 0xed, 0xb7, 0xbd, 0xed, 0xbf, 0x77, 0xff, 0x80, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4c, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xb0, 0x00, 0x00, 0x00, 0x10, 0xbb, 0x73, 0x3b, 0x6e, 0xd9, 0xed, 0xef, 0xef, 0xdf, 0xdf, 0x80, 0x00, 0x00, 0x24, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xd2, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x01, 0x7d, 0x9b, 0x4d, 0xb3, 0x6f, 0x7b, 0x7b, 0x7b, 0xfe, 0xff, 0x80, 0x00, 0x00, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x62, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0xe0, 0x00, 0x00, 0x00, 0x09, 0x76, 0xcc, 0xd4, 0xdd, 0xbd, 0xdf, 0xdf, 0xde, 0xfb, 0xff, 0x00, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0xa8, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xa0, 0x00, 0x00, 0x00, 0x04, 0xfe, 0xe6, 0xb7, 0x6d, 0xb6, 0xd6, 0xf6, 0xf7, 0xbf, 0xde, 0x00, 0x00, 0x00, 0x08, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0xcc, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x24, 0xfb, 0x33, 0x29, 0xb3, 0x6e, 0xff, 0xbf, 0xbd, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x01, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x51, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xdb, 0x59, 0xde, 0xde, 0xdb, 0xab, 0xed, 0xef, 0xee, 0xf8, 0x00, 0x00, 0x00, 0x04, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0x92, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0xc0, 0x00, 0x00, 0x00, 0x12, 0xf4, 0xcc, 0xd2, 0x6d, 0xb7, 0xbe, 0x7f, 0x7b, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x86, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x09, 0xf7, 0x36, 0x6f, 0xb7, 0x7d, 0xf7, 0xdb, 0xff, 0x7d, 0xe0, 0x00, 0x00, 0x00, 0x01, 0x36, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xe9, 0x98, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x49, 0xdb, 0x67, 0x39, 0xb6, 0xce, 0x6d, 0xfe, 0xdd, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x08, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x18, 0xe4, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x07, 0xec, 0xc9, 0xce, 0xdb, 0xbb, 0xef, 0x6f, 0xf7, 0xef, 0x80, 0x00, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x46, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x23, 0xb6, 0xba, 0x76, 0xdb, 0x7b, 0xbb, 0xfb, 0x7f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x67, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x01, 0x0b, 0xdb, 0xa7, 0x9b, 0x6d, 0xce, 0xfe, 0xdf, 0xdf, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x04, 0x27, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xd9, 0x74, 0xed, 0xb6, 0xfe, 0xd7, 0xf7, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x01, 0x19, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xd8, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x17, 0x6f, 0x5b, 0x66, 0xdb, 0x33, 0xfd, 0xbd, 0xfb, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x70, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xec, 0xdb, 0xf7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x97, 0xaa, 0xce, 0x5b, 0x6d, 0xff, 0x3f, 0xef, 0x7f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x61, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xbb, 0xfe, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x27, 0xbb, 0x33, 0xdb, 0x6d, 0xad, 0xed, 0xfb, 0xef, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x02, 0x19, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x41, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0xef, 0x6f, 0xcd, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x67, 0xdd, 0x6d, 0xb6, 0xef, 0xff, 0x7f, 0xfe, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc4, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0x6d, 0xfb, 0xf7, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x79, 0x67, 0x36, 0xdb, 0xda, 0xdb, 0xdd, 0xdf, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x26, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x7f, 0xbf, 0x3b, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x9f, 0x3a, 0xdb, 0x6d, 0x7e, 0xfe, 0xf7, 0xfd, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfe, 0xd6, 0xef, 0xce, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x01, 0x1e, 0xe6, 0xdb, 0xdb, 0x6d, 0xe7, 0xb7, 0xbf, 0xbf, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x19, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xbd, 0xb7, 0xfe, 0xfd, 0xae, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x04, 0x5e, 0xec, 0xd6, 0x6d, 0xb6, 0xfd, 0xfd, 0xfe, 0xfb, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xed, 0xfd, 0xbc, 0xb7, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x3b, 0x75, 0xb6, 0xdb, 0x9b, 0x6f, 0x77, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x7e, 0x5f, 0xff, 0x36, 0xd7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfc, 0x00, 0x00, 0x00, 0x02, 0x3d, 0xdb, 0x5d, 0xb6, 0xdb, 0xfb, 0xfb, 0xff, 0xed, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xdb, 0xf6, 0xd9, 0x6d, 0xbd, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xbd, 0xb6, 0xd6, 0x6d, 0xbc, 0xec, 0xde, 0xee, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xfb, 0x27, 0xfc, 0xfb, 0x6f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfc, 0x00, 0x00, 0x00, 0x08, 0xb6, 0xed, 0xb7, 0xbb, 0x67, 0xb7, 0xf7, 0xff, 0xdf, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xfd, 0x8b, 0x76, 0x9b, 0xfb, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf8, 0x00, 0x00, 0x00, 0x02, 0x7b, 0x5b, 0x69, 0xb6, 0xdf, 0x77, 0x7d, 0xfd, 0xf7, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0xf6, 0x83, 0xf3, 0xfe, 0xbe, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf8, 0x00, 0x00, 0x00, 0x02, 0x7d, 0xda, 0x6e, 0xd6, 0xf5, 0xdd, 0xdf, 0xbf, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xfa, 0x03, 0xbd, 0xe7, 0xef, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x09, 0x76, 0xb7, 0xb6, 0xdb, 0x37, 0x7d, 0xf7, 0xfb, 0xef, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x7b, 0x13, 0xf7, 0x81, 0xfb, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x01, 0x7b, 0x6c, 0xd9, 0xbb, 0xde, 0xef, 0x7d, 0xff, 0x7f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x76, 0x07, 0xf7, 0x36, 0xdd, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x00, 0x14, 0xed, 0x6b, 0x5b, 0x6c, 0xdb, 0xbb, 0xdf, 0xef, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc9, 0xfc, 0x8d, 0xbd, 0x04, 0xf7, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x04, 0xf7, 0xbb, 0x6e, 0xdf, 0x6f, 0xde, 0xf6, 0xfe, 0xef, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0xee, 0x4f, 0xee, 0x49, 0xbe, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x23, 0xf6, 0xdb, 0x6d, 0xb3, 0x7a, 0xf7, 0xbf, 0xdf, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0xf6, 0x13, 0xf6, 0x25, 0xeb, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x89, 0xec, 0xd6, 0xd7, 0x6d, 0xb7, 0xbd, 0xfb, 0xfb, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf7, 0xb6, 0x9f, 0x76, 0x96, 0xfb, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x09, 0xef, 0x76, 0xb5, 0xdd, 0xb7, 0x6f, 0x7f, 0xbe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfb, 0xfe, 0x4f, 0xfe, 0x53, 0xde, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x27, 0xf3, 0x6d, 0xad, 0xb6, 0xdd, 0xfb, 0xed, 0xff, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x6f, 0x3d, 0xb6, 0x0d, 0xf7, 0xbe, 0x59, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, 0x02, 0x11, 0xdd, 0xbb, 0x6e, 0x6e, 0xf7, 0xbf, 0xbf, 0x77, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7d, 0xdb, 0xf7, 0xdc, 0xad, 0xfd, 0xff, 0xff, 0xff, 0xff, 0x69, 0x92, 0x00, 0x97, 0xf0, 0x00, 0x00, 0x00, 0x4b, 0xdd, 0xae, 0xdb, 0xdb, 0xbb, 0xed, 0xff, 0xfd, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xdf, 0xdc, 0xde, 0xee, 0x67, 0xaf, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x41, 0x0b, 0xe6, 0xe6, 0xb6, 0xdb, 0x6e, 0x7f, 0xed, 0xef, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x02, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xf6, 0xf7, 0xfb, 0xb7, 0x1f, 0xfb, 0xdd, 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xe0, 0x00, 0x02, 0x00, 0x27, 0xbb, 0xb9, 0xb6, 0xed, 0xf7, 0xdb, 0x7f, 0xbf, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x88, 0x20, 0x10, 0x20, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xbf, 0xbd, 0xbf, 0xdb, 0xfe, 0x76, 0xfc, 0xd9, 0x82, 0x49, 0x2d, 0xb7, 0xd9, 0x2f, 0xe0, 0x00, 0x00, 0x02, 0x27, 0xdb, 0x6f, 0x6d, 0xb7, 0x3d, 0xef, 0xdb, 0xfd, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x02, 0x22, 0x08, 0x40, 0x09, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x90, 0x91, 0xb0, 0x00, 0x00, 0x00, 0x07, 0x6d, 0xef, 0xed, 0xee, 0xf9, 0xdf, 0xbe, 0x4d, 0x7b, 0x6d, 0x24, 0x94, 0x4d, 0xbf, 0xe0, 0x00, 0x00, 0x08, 0x1b, 0xdd, 0xd3, 0x6d, 0xb6, 0xef, 0x7e, 0xff, 0xef, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x20, 0x00, 0x01, 0x00, 0x00, 0x02, 0x10, + 0x00, 0x08, 0x00, 0x00, 0x13, 0x59, 0x20, 0x64, 0x00, 0x66, 0x80, 0x00, 0x00, 0x0d, 0xf7, 0x7b, 0x6f, 0x3b, 0xef, 0xdb, 0xdf, 0xb6, 0x4d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdf, 0xe0, 0x00, 0x00, 0x20, 0xc7, 0x66, 0xdd, 0xb6, 0xde, 0xf3, 0xdb, 0xf7, 0x7e, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x01, 0x40, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x10, 0x08, 0x08, 0x40, 0x04, 0x90, 0x10, 0x00, + 0x09, 0x20, 0x84, 0x92, 0x48, 0xcd, 0x92, 0x21, 0x26, 0x40, 0xb0, 0x00, 0x00, 0x0e, 0x9f, 0xde, 0xfb, 0xf7, 0x7b, 0x7e, 0xfc, 0xb3, 0xb4, 0x92, 0xdb, 0x6b, 0x32, 0xcf, 0xc0, 0x00, 0x08, 0x80, 0x1f, 0xbb, 0x36, 0xdb, 0x6b, 0xdf, 0xff, 0xbd, 0xf7, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x04, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x02, 0x42, 0x40, 0x12, 0x00, 0x04, 0x44, 0x48, + 0x00, 0x04, 0xa0, 0x02, 0xc0, 0x00, 0x5a, 0x9b, 0x7b, 0x9f, 0x06, 0x92, 0x4e, 0x8f, 0xf9, 0xdb, 0xbc, 0xdd, 0x9d, 0xef, 0xbe, 0xcc, 0xb7, 0x6d, 0x24, 0x99, 0xcf, 0x7f, 0xe0, 0x04, 0x00, 0x02, 0x4f, 0xbd, 0xeb, 0x6d, 0xbb, 0x7d, 0xbf, 0xef, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x12, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x48, 0x10, 0x04, 0x80, 0x92, 0x41, 0x01, 0x02, + 0x36, 0x90, 0x6b, 0x68, 0x16, 0x72, 0x42, 0xc8, 0x49, 0xb5, 0x6c, 0x02, 0xd0, 0x9d, 0x6f, 0x7b, 0xcf, 0xdb, 0xf7, 0xbb, 0xee, 0x6d, 0x99, 0x6d, 0xed, 0xb6, 0x79, 0xbf, 0xc0, 0x00, 0x00, 0x00, 0x4f, 0x66, 0xcd, 0xb6, 0xdf, 0xef, 0xee, 0xff, 0xbb, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x4b, 0x21, 0x21, 0x80, 0x20, 0x00, 0x00, 0x04, 0x00, 0x82, 0x00, 0x84, 0x90, 0x24, 0x00, 0x49, 0x28, 0x24, + 0x49, 0xb7, 0x1a, 0x49, 0x11, 0x92, 0x24, 0x27, 0x26, 0x65, 0xb1, 0xeb, 0x60, 0x3d, 0xdb, 0xb6, 0xfb, 0x6e, 0x7e, 0xf6, 0xfd, 0xb3, 0x6d, 0x99, 0x33, 0x66, 0xce, 0xcf, 0xc0, 0x08, 0x22, 0x11, 0x3e, 0xdb, 0x36, 0xdb, 0x76, 0xfb, 0x7f, 0xfd, 0xfe, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1b, 0x24, 0x08, 0x4c, 0x00, 0x80, 0x00, 0x00, 0x12, 0x44, 0x20, 0x92, 0x00, 0x13, 0x04, 0xdd, 0x12, 0x4a, 0x81, + 0x49, 0x64, 0xc4, 0x96, 0xcc, 0x89, 0x91, 0x21, 0x90, 0x0a, 0x36, 0x39, 0x2d, 0x1f, 0x7a, 0xee, 0xf7, 0xbb, 0xce, 0xdf, 0xbd, 0x9c, 0xcc, 0xd6, 0xda, 0x59, 0xb6, 0xff, 0xc0, 0x00, 0x00, 0x40, 0x8e, 0xdd, 0xf6, 0xdb, 0x6f, 0xbf, 0xf7, 0x6f, 0xdf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3a, 0x24, 0xca, 0x54, 0x10, 0x84, 0x44, 0x94, 0x98, 0x11, 0x0c, 0x48, 0x6b, 0x48, 0x4b, 0x13, 0x34, 0x92, 0x18, + 0x34, 0x4c, 0x24, 0xb0, 0xa4, 0x64, 0x4d, 0x98, 0x56, 0xc8, 0x82, 0x44, 0x81, 0x5b, 0x6e, 0xdb, 0x9d, 0xf6, 0xfb, 0xdb, 0xee, 0xdb, 0x73, 0x66, 0xce, 0xdb, 0x77, 0x3f, 0xc0, 0x00, 0x04, 0x04, 0x9f, 0x66, 0xdb, 0x6d, 0xed, 0xee, 0xff, 0xff, 0xfb, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x99, 0x33, 0x11, 0x06, 0x23, 0x12, 0x44, 0xc1, 0x92, 0x63, 0x25, 0x08, 0x49, 0x32, 0x40, 0xcd, 0x84, 0xc4, + 0x26, 0x93, 0x22, 0x04, 0x23, 0x12, 0x60, 0x96, 0x42, 0x53, 0x29, 0x12, 0x52, 0x7e, 0xdb, 0x77, 0xff, 0x77, 0xbb, 0x7e, 0x7e, 0x6b, 0x37, 0x39, 0x33, 0xa6, 0xd9, 0xff, 0xc0, 0x80, 0x00, 0x01, 0x3d, 0xbb, 0x3b, 0x6d, 0xbd, 0xfb, 0xdb, 0xf7, 0x7f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x34, 0x9b, 0x30, 0xc9, 0x63, 0x3a, 0xd9, 0x27, 0x24, 0x64, 0x90, 0x94, 0xc5, 0x25, 0x84, 0x99, 0x00, 0x24, 0xa4, + 0x08, 0x90, 0x99, 0x49, 0x18, 0x99, 0x92, 0x61, 0x99, 0x32, 0x4c, 0xc9, 0x12, 0x37, 0xb7, 0x6c, 0xe7, 0xbd, 0xaf, 0xef, 0xdd, 0xb9, 0xcc, 0xcd, 0xd9, 0xbd, 0xae, 0xdf, 0x82, 0x01, 0x21, 0x22, 0x7d, 0xbb, 0xcd, 0xb7, 0xb7, 0x7f, 0xff, 0x7f, 0xf7, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0x48, 0x44, 0xca, 0x19, 0xc8, 0xc4, 0x99, 0x26, 0x4c, 0x9e, 0xda, 0x31, 0x24, 0x49, 0x24, 0x66, 0x2a, 0x22, + 0x49, 0x24, 0x84, 0x49, 0x92, 0x64, 0x16, 0x29, 0x24, 0x8c, 0xd2, 0x24, 0x89, 0x3d, 0xb4, 0xdf, 0xbd, 0xed, 0xed, 0xbb, 0xfd, 0xb6, 0xdb, 0xd6, 0xce, 0x67, 0x6e, 0xff, 0xc0, 0x00, 0x00, 0x08, 0x9e, 0xcc, 0xf6, 0xdc, 0xff, 0xdd, 0xbf, 0xde, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x61, 0x13, 0x22, 0x96, 0x09, 0x24, 0x98, 0x92, 0x93, 0x66, 0x63, 0xa8, 0x92, 0x52, 0x44, 0x91, 0x89, 0x18, + 0x24, 0x4a, 0x64, 0xa4, 0x64, 0x86, 0xc4, 0x8c, 0x66, 0xa1, 0x13, 0x32, 0x64, 0xbd, 0xdd, 0xb3, 0xff, 0x6e, 0x7d, 0xde, 0xfe, 0xde, 0xf6, 0x73, 0x37, 0xdb, 0x73, 0xbf, 0x80, 0x00, 0x08, 0x82, 0x7a, 0xf7, 0x36, 0xdb, 0xdb, 0xf7, 0xfb, 0xf7, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, 0x48, 0x62, 0x74, 0x94, 0x9a, 0x2c, 0x90, 0xe6, 0x33, 0x62, 0x48, 0xc1, 0x21, 0x08, 0xca, 0x49, 0x14, 0x92, 0x10, 0x44, 0xc4, + 0x24, 0xc9, 0x13, 0x25, 0x09, 0x30, 0x99, 0xb3, 0x10, 0xad, 0x24, 0xc9, 0x12, 0x7e, 0x6d, 0xbc, 0xd3, 0xf3, 0xdf, 0x77, 0xbb, 0x6b, 0x37, 0x6d, 0xf5, 0x7a, 0xde, 0xff, 0x88, 0x04, 0x82, 0x04, 0xfb, 0x37, 0xdb, 0x6f, 0x7e, 0xfe, 0xff, 0x7d, 0xdf, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x9b, 0x1b, 0x1d, 0x92, 0x62, 0x84, 0x66, 0x24, 0xc9, 0x0a, 0x4a, 0x6c, 0x99, 0x26, 0x12, 0x49, 0x64, 0x92, 0x4c, 0x52, 0x24, + 0x49, 0x24, 0xc8, 0x52, 0x49, 0x4c, 0x62, 0x49, 0x9b, 0x24, 0xa8, 0x0c, 0x92, 0x7b, 0xb3, 0x6f, 0x7e, 0xdf, 0xe7, 0xfd, 0xfd, 0xbb, 0xcd, 0xbd, 0x5d, 0x8e, 0xdb, 0x7f, 0x80, 0x00, 0x00, 0x11, 0x37, 0xd9, 0xbb, 0x77, 0x6f, 0xbb, 0xef, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xb8, 0x20, 0x48, 0x80, 0x05, 0xb2, 0x44, 0xb4, 0x49, 0x09, 0x73, 0x09, 0x91, 0x24, 0x91, 0x92, 0x26, 0x44, 0xb1, 0x31, 0x92, 0x49, 0x24, 0x83, 0x12, 0x23, + 0x13, 0x24, 0x26, 0x48, 0xd2, 0x43, 0x0c, 0x4c, 0x62, 0x52, 0x8b, 0x62, 0x48, 0x3f, 0xb6, 0x6b, 0xdf, 0xbd, 0x3c, 0xdf, 0x7d, 0xb6, 0xfb, 0xa7, 0x6e, 0xf7, 0x6f, 0x7f, 0x80, 0x01, 0x08, 0x46, 0xf4, 0xde, 0xed, 0xdd, 0xfb, 0xef, 0xfe, 0xef, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0xef, 0x3b, 0x2d, 0x35, 0x18, 0x90, 0xb4, 0xcc, 0xcc, 0x48, 0x98, 0x5b, 0x24, 0x94, 0x25, 0x92, 0x52, 0x89, 0x0c, 0x26, 0x92, 0x49, 0x30, 0x89, 0x98, + 0x90, 0x93, 0x31, 0x8b, 0x12, 0x98, 0xb1, 0xb2, 0x48, 0xca, 0x64, 0x12, 0x49, 0xb9, 0xcd, 0xba, 0xf7, 0xed, 0xff, 0xdb, 0xfe, 0xdd, 0x9a, 0xfb, 0xb3, 0x75, 0xb9, 0xff, 0x82, 0x08, 0x20, 0x02, 0xff, 0x66, 0xdd, 0xbf, 0xbe, 0xfe, 0xdf, 0xff, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x35, 0x9b, 0xe7, 0xf9, 0x86, 0x49, 0x92, 0x64, 0x92, 0x42, 0x8a, 0x46, 0x48, 0x92, 0x64, 0xc8, 0x49, 0x26, 0x48, 0xc2, 0x60, 0x92, 0x49, 0x14, 0xa4, 0x44, + 0x4c, 0x92, 0x49, 0x30, 0x4c, 0xa6, 0x26, 0x13, 0x26, 0x29, 0x11, 0x94, 0x92, 0x7f, 0x6d, 0xb7, 0x3c, 0xfb, 0xd3, 0x7e, 0xfb, 0x67, 0x6e, 0xda, 0xdd, 0x9d, 0xbf, 0xbf, 0x00, 0x00, 0x01, 0x19, 0xcb, 0x79, 0xb6, 0xe6, 0xef, 0xfb, 0xfd, 0xdf, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x9c, 0x30, 0x04, 0x02, 0x68, 0xcc, 0x4b, 0x39, 0x23, 0x32, 0x32, 0x61, 0xa4, 0x93, 0x09, 0x12, 0x49, 0x21, 0x26, 0x32, 0x99, 0x24, 0x92, 0x44, 0x24, 0x45, + 0x46, 0x49, 0x0c, 0x46, 0x61, 0x21, 0x89, 0x4c, 0xb1, 0x8c, 0xcc, 0xcd, 0x24, 0x77, 0x66, 0xdd, 0xef, 0xb6, 0xdf, 0xef, 0xbb, 0x7b, 0x6d, 0x9e, 0xde, 0xee, 0xe6, 0xff, 0x20, 0x41, 0x04, 0x05, 0x7a, 0xcf, 0x6e, 0xdf, 0xbb, 0x6f, 0xff, 0xff, 0xff, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x05, 0x98, 0x49, 0x2e, 0x33, 0x20, 0xb6, 0x48, 0x89, 0x45, 0x99, 0x26, 0x4c, 0x93, 0x25, 0x32, 0x59, 0x21, 0x08, 0x84, 0x49, 0x24, 0x93, 0x23, 0x31, + 0x31, 0x4c, 0xd2, 0xc9, 0x93, 0x18, 0xc9, 0x62, 0x89, 0x32, 0x26, 0x61, 0x29, 0x3d, 0x9b, 0x6f, 0xfb, 0xbf, 0x7c, 0xfb, 0xfd, 0x9b, 0xb7, 0x67, 0x67, 0xb3, 0xbe, 0xff, 0x80, 0x08, 0x10, 0x25, 0xee, 0xed, 0xdb, 0x7b, 0xbf, 0xff, 0x77, 0xbf, 0xff, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x6c, 0xc9, 0x23, 0x24, 0x91, 0x92, 0x2c, 0xb4, 0x98, 0x99, 0x14, 0x26, 0x51, 0x20, 0xa4, 0x89, 0x04, 0x84, 0x99, 0x65, 0x26, 0x49, 0x24, 0x91, 0x98, 0x88, + 0x09, 0x32, 0x12, 0x28, 0x18, 0xc6, 0x32, 0x19, 0x4c, 0x92, 0x91, 0x1a, 0xca, 0x7d, 0xed, 0xb8, 0x1e, 0xdb, 0xef, 0x9e, 0xf7, 0xf6, 0xdb, 0x79, 0xfd, 0xbf, 0x7b, 0xbf, 0x04, 0x00, 0x40, 0x93, 0xb3, 0x36, 0xdb, 0x6e, 0xed, 0xfd, 0xff, 0xff, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x38, 0x2a, 0x48, 0x94, 0x90, 0x48, 0xc2, 0x34, 0xa6, 0x44, 0xb2, 0xc9, 0x11, 0x26, 0x24, 0x92, 0x64, 0xa4, 0x92, 0x14, 0x49, 0x24, 0x92, 0x4c, 0x44, 0x8a, + 0xcc, 0x83, 0x24, 0x93, 0x64, 0x24, 0x86, 0xcd, 0x44, 0xc9, 0x35, 0x26, 0x32, 0x3f, 0x6d, 0xb2, 0x47, 0xdb, 0xbb, 0xf7, 0xfa, 0x76, 0xdb, 0x9e, 0x9b, 0x6d, 0xce, 0xff, 0x10, 0x44, 0x00, 0x13, 0xdb, 0xdb, 0x6e, 0xff, 0xff, 0xb7, 0xef, 0xff, 0xbf, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x22, 0x48, 0x92, 0x4d, 0x24, 0x19, 0xb4, 0x84, 0xc4, 0x8a, 0xd9, 0x26, 0x49, 0x49, 0x24, 0x92, 0x24, 0x46, 0x92, 0x51, 0x24, 0x93, 0x62, 0x44, 0x62, + 0x32, 0xb4, 0xc9, 0x91, 0x05, 0x32, 0x58, 0x62, 0x33, 0x25, 0x49, 0xa1, 0x04, 0xbb, 0x76, 0xc2, 0x67, 0x6e, 0xdc, 0xfd, 0xef, 0xdf, 0xbc, 0xf7, 0xfb, 0xdb, 0x7d, 0xff, 0x00, 0x10, 0x84, 0x4f, 0x6c, 0xdb, 0x7b, 0xb7, 0x77, 0xff, 0xfe, 0xfd, 0xf6, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x6c, 0x49, 0x26, 0x49, 0x21, 0x25, 0x24, 0xb6, 0x59, 0x32, 0x49, 0x04, 0x88, 0x91, 0x19, 0x24, 0x92, 0x4b, 0x24, 0x89, 0x94, 0x92, 0x4c, 0x12, 0x33, 0x14, + 0x02, 0x4c, 0x2a, 0x4c, 0x99, 0x89, 0x43, 0x12, 0x98, 0x94, 0xca, 0x19, 0x64, 0xbd, 0x9b, 0x89, 0x19, 0xfe, 0xf7, 0xbf, 0xf6, 0xd9, 0xe7, 0xd9, 0x6e, 0xde, 0xf7, 0x7f, 0x21, 0x00, 0x01, 0x27, 0xb7, 0x6d, 0xb7, 0xbd, 0xff, 0x6f, 0xbf, 0xf7, 0x5b, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x38, 0x91, 0x91, 0x24, 0x88, 0x91, 0x64, 0xf2, 0x42, 0x09, 0x54, 0x64, 0xa2, 0x24, 0x84, 0x92, 0x49, 0x18, 0x98, 0x64, 0x24, 0x92, 0x49, 0x91, 0x88, 0x91, + 0xd9, 0x49, 0x84, 0x62, 0x62, 0x49, 0x31, 0x34, 0xc6, 0x52, 0x26, 0x4c, 0x92, 0x7d, 0xed, 0x20, 0x93, 0xb3, 0xbf, 0xe6, 0xf6, 0xf7, 0x7d, 0xbf, 0x6d, 0xb7, 0xb6, 0xff, 0x00, 0x42, 0x10, 0x2e, 0xd9, 0xb6, 0xdd, 0xef, 0xdf, 0xfe, 0xff, 0x6d, 0xcb, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0x24, 0x49, 0x22, 0x4a, 0x92, 0x12, 0x39, 0x36, 0xc9, 0x15, 0x12, 0x24, 0xca, 0x64, 0x92, 0x49, 0x24, 0x93, 0x12, 0x49, 0x25, 0x90, 0x4c, 0x48, 0x89, + 0x15, 0x32, 0x55, 0x12, 0x48, 0x46, 0x24, 0x85, 0x25, 0x29, 0x91, 0xa2, 0x19, 0x1e, 0xef, 0x00, 0x65, 0xef, 0xda, 0x7f, 0xdb, 0x6f, 0x5d, 0xb7, 0xbd, 0xf9, 0xde, 0xff, 0x08, 0x08, 0x00, 0x9f, 0x6e, 0xdb, 0xdf, 0x7f, 0xfd, 0xff, 0xf6, 0xda, 0xfc, 0xdf, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x24, 0x64, 0x89, 0x22, 0x48, 0x92, 0x6c, 0x88, 0x4c, 0xa1, 0x49, 0x13, 0x12, 0x22, 0x49, 0x24, 0xc4, 0x44, 0x92, 0x49, 0x28, 0x26, 0x42, 0x46, 0x64, + 0x44, 0x84, 0x51, 0x92, 0x13, 0x31, 0x8c, 0xd9, 0x29, 0x24, 0x58, 0x92, 0xc4, 0xbb, 0xb3, 0x01, 0x2d, 0xfc, 0xf7, 0xdb, 0x7f, 0x7b, 0xf7, 0xf4, 0xf7, 0x5f, 0x7b, 0xff, 0x21, 0x00, 0x48, 0x5d, 0xb6, 0xdb, 0x6d, 0xdd, 0xbf, 0xff, 0xdb, 0x9b, 0x37, 0xf7, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x34, 0x93, 0x12, 0x49, 0x24, 0x49, 0x24, 0xb6, 0x4b, 0x22, 0x2a, 0x49, 0x48, 0x44, 0x99, 0x24, 0x92, 0x13, 0x28, 0x89, 0x24, 0x92, 0x49, 0x32, 0x31, 0x12, + 0x66, 0xd5, 0x8c, 0x49, 0xb0, 0x8c, 0x52, 0x42, 0x4a, 0x56, 0x4a, 0x4c, 0x24, 0xbf, 0x7e, 0x08, 0x92, 0xdf, 0xbd, 0xff, 0xe5, 0xdd, 0xb6, 0xdf, 0x5b, 0xdd, 0xad, 0xff, 0x00, 0x21, 0x02, 0x4f, 0x9b, 0x6e, 0xef, 0xf7, 0xfb, 0xb6, 0xd9, 0xed, 0xd3, 0x39, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x88, 0xc9, 0x24, 0x93, 0x24, 0xc9, 0xb2, 0x53, 0x92, 0x48, 0x92, 0x49, 0x29, 0x44, 0x92, 0x49, 0x20, 0x8a, 0x64, 0x92, 0x52, 0x48, 0x89, 0x89, 0x12, + 0x18, 0x52, 0x23, 0x29, 0x0c, 0x92, 0x44, 0x9a, 0xd2, 0xc1, 0x8b, 0x21, 0x99, 0x1d, 0xce, 0x42, 0x12, 0xf3, 0xcf, 0x6d, 0xff, 0xdd, 0xde, 0xf7, 0xee, 0xed, 0xf7, 0x7f, 0x04, 0x80, 0x00, 0xbe, 0x6d, 0xbb, 0xbb, 0x7f, 0xef, 0xfe, 0xee, 0x6d, 0xdd, 0xef, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x49, 0x24, 0x24, 0x92, 0x48, 0x92, 0x32, 0x39, 0x34, 0x91, 0x44, 0x92, 0x24, 0x89, 0x24, 0x92, 0x49, 0x4c, 0x92, 0x12, 0x49, 0x49, 0x22, 0x48, 0x48, 0xc9, + 0x93, 0x08, 0xb0, 0x89, 0x44, 0x92, 0x99, 0x24, 0x92, 0x2c, 0x30, 0xb6, 0x42, 0x5e, 0xf6, 0x02, 0x66, 0xfe, 0x7b, 0xff, 0xda, 0xf7, 0x7b, 0xb6, 0xfd, 0xbb, 0x7f, 0xff, 0x10, 0x04, 0x11, 0x3b, 0xed, 0xb7, 0x6f, 0xde, 0xff, 0xdb, 0x3b, 0xb6, 0x6f, 0x7f, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x79, 0x25, 0x92, 0x49, 0x24, 0xc9, 0x24, 0xad, 0x26, 0x4c, 0x33, 0x24, 0xa4, 0x92, 0x22, 0x49, 0x24, 0x52, 0x64, 0x92, 0x49, 0x24, 0x92, 0x46, 0x46, 0x24, + 0x44, 0xa9, 0x0c, 0xc6, 0x72, 0x64, 0x89, 0x4c, 0x29, 0x22, 0x46, 0x44, 0x4c, 0xbe, 0xde, 0x21, 0x08, 0xcf, 0xfe, 0xb6, 0xf7, 0xbf, 0xef, 0x7b, 0x9d, 0xf7, 0xac, 0xff, 0x00, 0x20, 0x41, 0x3b, 0x36, 0xdd, 0xdd, 0xfb, 0xfe, 0xdb, 0xdb, 0xb7, 0xbb, 0x6c, 0xef, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x98, 0x49, 0x24, 0x92, 0x24, 0xc9, 0x34, 0x99, 0x22, 0x88, 0x49, 0x12, 0x44, 0x99, 0x24, 0x92, 0x12, 0x24, 0xc9, 0x24, 0x92, 0x44, 0x91, 0x31, 0x24, + 0x52, 0xa4, 0x63, 0x30, 0x89, 0x0c, 0x64, 0x53, 0x64, 0xc9, 0x99, 0x19, 0x91, 0x9f, 0xb6, 0x0c, 0x9b, 0x7b, 0x9b, 0xff, 0xed, 0xea, 0xdd, 0xdf, 0x77, 0x76, 0xfb, 0xff, 0x02, 0x02, 0x04, 0xfd, 0xdb, 0xdb, 0xf7, 0x6f, 0xdb, 0x6c, 0xdc, 0xd9, 0xb6, 0xdb, 0xf9, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x32, 0x43, 0x24, 0x92, 0x4a, 0x44, 0x62, 0x76, 0x6c, 0x92, 0x49, 0x12, 0x49, 0x31, 0x04, 0x92, 0x49, 0xa5, 0x92, 0x24, 0x94, 0x92, 0x49, 0x24, 0x09, 0x13, + 0x32, 0x12, 0x92, 0x0a, 0x25, 0x23, 0x12, 0x41, 0x14, 0x99, 0x22, 0xc2, 0x32, 0x5d, 0xee, 0x80, 0x86, 0xfa, 0xfb, 0x6d, 0xbe, 0xfe, 0xf7, 0xb7, 0xff, 0xdf, 0x7f, 0xfe, 0x48, 0x40, 0x04, 0x66, 0xdb, 0x7b, 0x3f, 0xff, 0x77, 0x37, 0x67, 0x6e, 0xdd, 0xdf, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf9, 0x24, 0x92, 0x49, 0x22, 0x53, 0x32, 0x92, 0x64, 0x91, 0x25, 0x24, 0x89, 0x09, 0x64, 0x92, 0x49, 0x24, 0x49, 0x24, 0x92, 0x49, 0x22, 0x49, 0x88, 0xc8, + 0x8c, 0xc8, 0x98, 0xcb, 0x30, 0xc8, 0x92, 0x9c, 0x93, 0x24, 0x66, 0x34, 0x8a, 0x5f, 0x6e, 0x22, 0x65, 0xb7, 0xef, 0xff, 0xf7, 0x9d, 0xbe, 0xfa, 0xcd, 0xbb, 0xcd, 0xff, 0x00, 0x08, 0x43, 0x7b, 0x36, 0xcf, 0xff, 0xfd, 0xdc, 0xdb, 0x7b, 0x6e, 0xdb, 0x6d, 0x9e, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x20, 0x69, 0x2c, 0x92, 0x24, 0x92, 0xb0, 0x98, 0xb4, 0x99, 0x24, 0xa4, 0xc9, 0x24, 0xc8, 0x12, 0x49, 0x24, 0x49, 0x29, 0x13, 0x22, 0x49, 0x24, 0x92, 0x66, 0x24, + 0x42, 0x66, 0x65, 0x30, 0xca, 0x32, 0x4c, 0x92, 0x48, 0x46, 0x49, 0x14, 0xc9, 0x1e, 0xfb, 0x09, 0x29, 0xf7, 0x3c, 0xdb, 0x7d, 0xf7, 0xef, 0xdf, 0x7f, 0xee, 0xfe, 0xff, 0x02, 0x00, 0x18, 0xdb, 0xed, 0xbd, 0xef, 0x6e, 0xdb, 0xdb, 0x9b, 0xb3, 0x6e, 0xed, 0xf7, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x02, 0x68, 0x82, 0x49, 0x92, 0x48, 0x8c, 0xd2, 0x65, 0xb2, 0x4c, 0x92, 0x12, 0x44, 0x26, 0x92, 0x49, 0x24, 0x92, 0x92, 0x52, 0x49, 0x24, 0x91, 0x24, 0x11, 0x25, + 0x59, 0x11, 0x05, 0x24, 0x8a, 0x24, 0x61, 0x22, 0x49, 0x99, 0x19, 0x43, 0x24, 0x9e, 0xdf, 0x09, 0x2f, 0xdd, 0xe7, 0xff, 0xdf, 0x7e, 0xf6, 0xdd, 0xf3, 0x7f, 0xb7, 0xfe, 0x20, 0x91, 0x04, 0xf6, 0x6d, 0xf7, 0xbf, 0xeb, 0x6e, 0x76, 0xec, 0xdd, 0xb6, 0xb6, 0x7d, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x52, 0x48, 0x49, 0x25, 0x32, 0x59, 0x3c, 0xc8, 0x92, 0x49, 0x24, 0x93, 0x20, 0x89, 0x24, 0x92, 0x92, 0x46, 0x4c, 0x94, 0x92, 0x49, 0x25, 0x91, 0x11, + 0x25, 0x19, 0x98, 0xcb, 0x21, 0x89, 0x92, 0x69, 0x26, 0x21, 0x92, 0x58, 0x26, 0x4f, 0xdf, 0x22, 0x43, 0xdd, 0xff, 0x36, 0xf6, 0xdb, 0xbd, 0xf7, 0xbf, 0xdb, 0xfd, 0xff, 0x08, 0x00, 0x25, 0xed, 0xb6, 0xde, 0xfc, 0xdd, 0xb3, 0xb6, 0xef, 0x6d, 0xb7, 0xb7, 0xaf, 0x77, 0x00, 0x00, 0x00, 0x00, 0x10, 0x72, 0x49, 0x24, 0x44, 0x91, 0x32, 0x4c, 0xb2, 0x65, 0x22, 0x49, 0x24, 0x98, 0x99, 0x24, 0x92, 0x48, 0x49, 0x64, 0xa1, 0x24, 0x92, 0x48, 0x90, 0x4c, 0xc8, + 0x84, 0xc6, 0x62, 0x10, 0x6c, 0x49, 0x12, 0x0c, 0x90, 0xcc, 0x64, 0x92, 0x91, 0x2f, 0x73, 0x08, 0x5f, 0x77, 0x39, 0xff, 0xbf, 0xff, 0xef, 0x7e, 0xed, 0xfd, 0xb7, 0xff, 0x00, 0x42, 0x09, 0xbb, 0xb3, 0xfb, 0xf7, 0x76, 0xdd, 0xbb, 0x33, 0x6e, 0xd9, 0xd9, 0xbb, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x04, 0xd1, 0x24, 0x93, 0x32, 0x12, 0x48, 0xd8, 0xb6, 0xa4, 0x49, 0x24, 0x92, 0x42, 0x44, 0x44, 0x92, 0x49, 0x24, 0x19, 0x92, 0x49, 0x24, 0x92, 0x4a, 0x42, 0x26, + 0x58, 0x90, 0x2d, 0x95, 0x02, 0x52, 0x49, 0x92, 0x56, 0x22, 0x0c, 0xa6, 0x49, 0x2f, 0x7f, 0x91, 0x2f, 0xef, 0xcf, 0xdb, 0x6d, 0xb6, 0x7b, 0xdb, 0xdf, 0x6f, 0xde, 0xfe, 0x21, 0x00, 0x4b, 0xce, 0xdf, 0x6f, 0xf7, 0x6e, 0xdd, 0xcd, 0xdd, 0xb3, 0x6e, 0x6f, 0x76, 0xdf, 0x80, 0x00, 0x00, 0x00, 0x20, 0xd4, 0x92, 0x48, 0x89, 0x49, 0x19, 0x2d, 0x35, 0xa2, 0x91, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x26, 0x93, 0x92, 0x48, 0x92, 0x49, 0x24, 0x49, 0x32, 0x21, + 0x43, 0x2d, 0x84, 0x65, 0x32, 0x92, 0x48, 0x63, 0x09, 0x29, 0xa2, 0x49, 0x2a, 0x4f, 0xcc, 0xc6, 0x6e, 0xec, 0xfe, 0xfd, 0xff, 0xf7, 0xde, 0xf7, 0x77, 0xfb, 0x7b, 0xff, 0x00, 0x09, 0x27, 0x73, 0x6d, 0xff, 0x99, 0xb3, 0x66, 0x76, 0xdb, 0x7d, 0xb7, 0xb6, 0xdf, 0xfb, 0xc0, 0x00, 0x00, 0x00, 0x02, 0x72, 0x49, 0x24, 0x84, 0x49, 0x4c, 0x65, 0x65, 0x48, 0x94, 0x92, 0x49, 0x24, 0x92, 0x22, 0x49, 0x20, 0x90, 0x64, 0x24, 0x92, 0x49, 0x25, 0x24, 0x88, 0x98, + 0x32, 0x61, 0x52, 0x48, 0xc9, 0x24, 0x93, 0x08, 0xa2, 0x49, 0x32, 0x49, 0x22, 0x4e, 0xff, 0xe4, 0xdf, 0xbf, 0xb7, 0xb7, 0xb6, 0xdd, 0xf7, 0xbd, 0xfd, 0xbf, 0xff, 0xff, 0x04, 0x00, 0x27, 0x76, 0xef, 0xfe, 0xee, 0xdd, 0xbb, 0xb6, 0xce, 0x4d, 0xb5, 0xb6, 0xd9, 0xae, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xe1, 0x24, 0x92, 0x64, 0x92, 0x46, 0x5c, 0x36, 0x53, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x99, 0x25, 0x09, 0x92, 0x49, 0x24, 0x91, 0x24, 0x89, 0x06, + 0x8c, 0x96, 0x59, 0x9a, 0x09, 0x24, 0x90, 0x98, 0xa6, 0x92, 0x49, 0x92, 0x4c, 0x97, 0xb7, 0x79, 0xf9, 0xf7, 0xbd, 0xfe, 0xff, 0xff, 0x7d, 0xef, 0xb7, 0xdf, 0xff, 0xf6, 0x00, 0x44, 0x9e, 0xdc, 0xff, 0xf6, 0xee, 0xdb, 0xbb, 0xb7, 0x75, 0xf6, 0xdd, 0xdb, 0x6f, 0xbe, 0xe0, 0x00, 0x00, 0x00, 0x48, 0xcc, 0x92, 0x49, 0x12, 0x24, 0x92, 0x46, 0x96, 0xc4, 0x49, 0x24, 0x92, 0x49, 0x24, 0x90, 0x24, 0x84, 0x4c, 0x98, 0x49, 0x24, 0x92, 0x44, 0x92, 0x64, 0x61, + 0x41, 0x10, 0x84, 0x92, 0x64, 0x92, 0x4c, 0xa6, 0x28, 0x94, 0x8c, 0x32, 0x91, 0x27, 0xf6, 0xff, 0xff, 0x76, 0xed, 0x6e, 0xdb, 0x6b, 0xdf, 0x7b, 0xf6, 0xff, 0xff, 0xff, 0x00, 0x01, 0x1e, 0xcf, 0xbf, 0xdb, 0x33, 0x6a, 0xcc, 0xd9, 0xb7, 0x36, 0xdb, 0x6d, 0xbb, 0x77, 0xe0, 0x00, 0x00, 0x00, 0x02, 0xe0, 0x92, 0x49, 0x12, 0x49, 0x33, 0x36, 0xd9, 0x8d, 0x12, 0x49, 0x24, 0x92, 0x49, 0x26, 0x92, 0x64, 0x92, 0x46, 0x49, 0x24, 0x92, 0x48, 0x92, 0x12, 0x49, + 0x59, 0x4d, 0x32, 0x44, 0x92, 0x49, 0x22, 0x23, 0x29, 0x24, 0xb2, 0xc8, 0x92, 0x4f, 0x7e, 0xdf, 0xb7, 0xbe, 0xef, 0x7b, 0xfd, 0xfe, 0xf7, 0xde, 0xdf, 0xff, 0xff, 0xff, 0x11, 0x22, 0x7b, 0x73, 0xff, 0x6d, 0xdd, 0xbe, 0xf7, 0x6e, 0xb9, 0xdb, 0x6e, 0xed, 0xb6, 0xfd, 0xf0, 0x00, 0x00, 0x00, 0x11, 0xa6, 0x49, 0x24, 0xc4, 0x92, 0x4c, 0x92, 0x67, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x20, 0x92, 0x12, 0x22, 0x41, 0x24, 0x92, 0x49, 0x22, 0x49, 0x92, 0x12, + 0x26, 0x63, 0x26, 0x51, 0x92, 0x49, 0x22, 0x48, 0xc4, 0x62, 0x12, 0x0a, 0x48, 0x93, 0xcf, 0xdc, 0xec, 0xed, 0xbb, 0xdd, 0xb7, 0xb7, 0xbd, 0xf7, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x08, 0xbb, 0x7f, 0xfd, 0xb6, 0xdd, 0xb3, 0x37, 0x36, 0xce, 0xdb, 0x6c, 0xb6, 0xef, 0xbb, 0x70, 0x00, 0x00, 0x00, 0x45, 0xc8, 0x49, 0x24, 0x24, 0x92, 0x49, 0x9b, 0x34, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x99, 0x09, 0x92, 0x49, 0x31, 0x24, 0x92, 0x49, 0x12, 0x48, 0x49, 0x94, + 0x80, 0x92, 0x49, 0x18, 0x49, 0x24, 0x99, 0x48, 0x93, 0x19, 0x49, 0xa5, 0x24, 0xa7, 0xf9, 0xf7, 0xef, 0xfb, 0xfe, 0xf7, 0xfe, 0xfd, 0xef, 0x7d, 0xbf, 0xed, 0xb6, 0xf7, 0x00, 0x09, 0xbd, 0x9f, 0xfd, 0xb6, 0xe6, 0xcd, 0xd9, 0xd9, 0xf6, 0xb5, 0xb7, 0xb6, 0xdb, 0xef, 0xb8, 0x00, 0x00, 0x00, 0x03, 0x49, 0x24, 0x93, 0x12, 0x49, 0x24, 0x66, 0x9e, 0x99, 0x24, 0x92, 0x49, 0x24, 0x92, 0x44, 0x60, 0x49, 0x11, 0x0c, 0x92, 0x49, 0x20, 0xc9, 0x12, 0x48, 0x65, + 0x5b, 0x18, 0xc8, 0x66, 0x49, 0x24, 0x84, 0x46, 0x28, 0x85, 0x2c, 0xb1, 0x32, 0x27, 0x7f, 0x3f, 0x7b, 0x6e, 0xd7, 0xbc, 0xdb, 0xcf, 0x7b, 0xdf, 0xff, 0xf7, 0xff, 0xbf, 0x04, 0x44, 0x76, 0xff, 0xe6, 0xdb, 0x3b, 0x7d, 0xde, 0xdb, 0x37, 0x6d, 0xb6, 0xdb, 0x76, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x8b, 0xc4, 0x92, 0x48, 0xc9, 0x24, 0x96, 0x49, 0x93, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x12, 0x16, 0x49, 0x24, 0xc2, 0x49, 0x24, 0x96, 0x08, 0x44, 0x92, 0x08, + 0x42, 0x64, 0x92, 0x01, 0x24, 0x92, 0x65, 0x31, 0x24, 0xb0, 0xa2, 0x0a, 0xce, 0x49, 0xdf, 0xed, 0xdf, 0xdf, 0x7d, 0xaf, 0xff, 0x7b, 0xde, 0xee, 0xff, 0xfe, 0x6d, 0xfe, 0x20, 0x13, 0xf6, 0xff, 0xfb, 0x6d, 0xdb, 0x66, 0x66, 0xe6, 0xd9, 0xce, 0xdb, 0x6d, 0xbf, 0x37, 0xdc, 0x00, 0x00, 0x00, 0x23, 0x32, 0x49, 0x24, 0x24, 0x92, 0x43, 0x59, 0x75, 0x64, 0x92, 0x49, 0x24, 0x9a, 0x49, 0x22, 0x90, 0x92, 0x48, 0x32, 0x49, 0x24, 0x90, 0xa4, 0x91, 0x24, 0xca, + 0x24, 0x86, 0x25, 0x99, 0x24, 0x82, 0x11, 0x09, 0x13, 0x0e, 0x92, 0xca, 0x09, 0x49, 0xec, 0xff, 0xdc, 0xf5, 0xef, 0xf3, 0x6d, 0xfe, 0xf7, 0xbb, 0xff, 0xff, 0xff, 0x77, 0x80, 0x89, 0xef, 0xff, 0x3b, 0x6d, 0xdd, 0xb7, 0xb9, 0xbd, 0xdb, 0x33, 0x5b, 0x6d, 0xa9, 0xdf, 0x7c, 0x00, 0x00, 0x00, 0x07, 0x82, 0x49, 0x25, 0x24, 0x92, 0x49, 0x27, 0x15, 0x49, 0x25, 0x92, 0x4b, 0x69, 0x24, 0x88, 0x89, 0x22, 0x4b, 0x09, 0x24, 0x49, 0x09, 0x24, 0x92, 0x49, 0x22, + 0x29, 0x31, 0x24, 0x64, 0x92, 0x29, 0x92, 0x48, 0xc8, 0x61, 0x30, 0x91, 0x63, 0x25, 0xff, 0xb6, 0xf7, 0xbf, 0xbb, 0x7f, 0x7f, 0xb7, 0xbd, 0xf7, 0xed, 0xbf, 0xff, 0xff, 0x04, 0x25, 0xfb, 0xfd, 0xcd, 0xb6, 0x66, 0xd9, 0xb7, 0x2d, 0x6d, 0xfd, 0xdd, 0xb7, 0x6f, 0xfb, 0xbe, 0x00, 0x00, 0x01, 0x13, 0x99, 0x24, 0x49, 0x19, 0x24, 0x99, 0xac, 0xd6, 0x92, 0x4c, 0x32, 0x4a, 0x44, 0x92, 0x49, 0x22, 0x28, 0x90, 0xc9, 0x24, 0x92, 0x62, 0x42, 0x48, 0x92, 0x24, + 0x89, 0x09, 0x49, 0x04, 0x92, 0x48, 0x48, 0xc6, 0x24, 0x92, 0x4c, 0x65, 0x32, 0x92, 0xdb, 0xef, 0xbf, 0xb3, 0xef, 0xd9, 0xdb, 0xfd, 0xef, 0x7f, 0xbe, 0xff, 0xff, 0xef, 0x81, 0x17, 0xdf, 0xfb, 0x76, 0xdb, 0xbb, 0x6e, 0x66, 0xe6, 0xac, 0xcc, 0xe6, 0xdd, 0xdb, 0x3e, 0xee, 0x00, 0x00, 0x00, 0x47, 0x64, 0x84, 0x92, 0x42, 0x49, 0x24, 0x89, 0xa4, 0x92, 0x99, 0x8d, 0xb4, 0x92, 0x48, 0x44, 0x48, 0x89, 0x24, 0x24, 0x92, 0x24, 0x04, 0x98, 0x49, 0x24, 0x94, + 0x44, 0xc8, 0x92, 0x52, 0x49, 0x12, 0x49, 0x31, 0x24, 0x92, 0x83, 0x2c, 0x88, 0xca, 0xfe, 0xfb, 0xea, 0xfe, 0x7c, 0xf7, 0xbe, 0x6f, 0x7b, 0xff, 0xb3, 0xdf, 0xdf, 0xff, 0x80, 0x4f, 0xff, 0xee, 0xdb, 0x6d, 0xbb, 0x6b, 0xdb, 0x9b, 0xb7, 0x37, 0x3b, 0x76, 0xdb, 0xef, 0xde, 0x00, 0x00, 0x00, 0x0f, 0xfe, 0xd2, 0x24, 0x92, 0x49, 0x24, 0xcb, 0x2d, 0x24, 0xb2, 0x64, 0x91, 0x22, 0x49, 0x32, 0x49, 0x24, 0x49, 0x24, 0x92, 0x49, 0x91, 0x23, 0x04, 0x49, 0x12, + 0x32, 0x26, 0x24, 0x92, 0x49, 0x24, 0x93, 0x09, 0x12, 0x4c, 0xb0, 0x88, 0xcb, 0x49, 0xef, 0xbe, 0xff, 0xcf, 0xdf, 0xbe, 0xef, 0xfb, 0xdf, 0xde, 0x5f, 0x7f, 0xd3, 0xff, 0x08, 0x2f, 0xff, 0xb5, 0xbb, 0x6d, 0xcd, 0x9a, 0xda, 0x7a, 0x75, 0xf5, 0xdb, 0x6e, 0xec, 0xfb, 0x76, 0x00, 0x00, 0x02, 0x2f, 0xff, 0x92, 0x49, 0x24, 0x92, 0x52, 0x62, 0x62, 0x49, 0x46, 0x52, 0x49, 0x29, 0x24, 0x89, 0x24, 0x44, 0x92, 0x48, 0x49, 0x12, 0x49, 0x08, 0xb2, 0x48, 0x49, + 0x09, 0x21, 0x24, 0x89, 0x24, 0xa4, 0x90, 0xc8, 0xc9, 0x21, 0x0c, 0x93, 0x24, 0x64, 0x7b, 0xef, 0x77, 0x7b, 0xf3, 0xeb, 0x7b, 0xbe, 0xf7, 0x7f, 0xdd, 0xff, 0x7e, 0xff, 0xc2, 0x3f, 0xff, 0xb7, 0x6d, 0xb6, 0x76, 0xf6, 0xb7, 0xce, 0xcd, 0x9b, 0x66, 0xdb, 0x3f, 0x3f, 0xfe, 0x00, 0x00, 0x00, 0x8e, 0xf7, 0xe4, 0xc9, 0x24, 0x92, 0x49, 0x30, 0xd8, 0x93, 0x49, 0x12, 0x48, 0x89, 0x24, 0x84, 0x84, 0x92, 0x24, 0x83, 0x08, 0x90, 0x48, 0xc4, 0x82, 0x26, 0x49, + 0xc9, 0x49, 0x12, 0x64, 0x92, 0x12, 0x4c, 0x26, 0x25, 0x24, 0x62, 0x54, 0x24, 0xb2, 0xf6, 0xfb, 0xdd, 0xfd, 0xbe, 0xfb, 0xde, 0xef, 0xbe, 0xfd, 0x37, 0xbf, 0x6f, 0x3f, 0xc0, 0xdf, 0xfc, 0xdb, 0x4d, 0xb7, 0xb6, 0xd5, 0xb5, 0x75, 0xbb, 0x6e, 0x7d, 0xb6, 0xd3, 0xcd, 0xdf, 0x00, 0x00, 0x04, 0x1f, 0xbf, 0xec, 0x24, 0x92, 0x49, 0x24, 0x9d, 0x09, 0x24, 0x21, 0x24, 0x92, 0x44, 0x91, 0x30, 0x92, 0x22, 0x41, 0x30, 0xa2, 0x4d, 0x12, 0x31, 0x19, 0x81, 0x24, + 0x24, 0x48, 0xc9, 0x12, 0x49, 0x49, 0x23, 0x21, 0x24, 0x93, 0x12, 0x44, 0x93, 0x3a, 0x7f, 0xbe, 0xff, 0xb7, 0x6f, 0xbe, 0xf7, 0xfb, 0xbe, 0xbd, 0xee, 0xfd, 0xb5, 0xff, 0xc5, 0x7f, 0xf7, 0x69, 0xf6, 0xd9, 0xbb, 0x59, 0x9d, 0x77, 0x6c, 0xe9, 0x9b, 0x76, 0xdd, 0xff, 0x77, 0x00, 0x00, 0x01, 0x3d, 0xcc, 0xfb, 0x24, 0x99, 0x24, 0x92, 0x46, 0x64, 0x49, 0x94, 0x89, 0x24, 0x52, 0x12, 0x4a, 0x22, 0x49, 0x19, 0x0c, 0x91, 0x20, 0x92, 0x09, 0x20, 0x31, 0x24, + 0x24, 0x96, 0x24, 0x92, 0x49, 0x24, 0x90, 0x99, 0x12, 0x48, 0xc9, 0x24, 0x92, 0x4c, 0x7b, 0xef, 0xb3, 0xbb, 0xfb, 0xef, 0xbd, 0xbe, 0xfb, 0xfe, 0x7b, 0xfd, 0xb7, 0xdf, 0xe5, 0xff, 0xdb, 0x6e, 0xb6, 0xde, 0xcd, 0xee, 0x6b, 0x9a, 0xd7, 0x9f, 0xb3, 0x5b, 0x6d, 0x77, 0xfe, 0x00, 0x00, 0x08, 0x7f, 0x7f, 0xbe, 0x93, 0x24, 0x92, 0xc9, 0x20, 0x93, 0x12, 0x12, 0x49, 0x25, 0x12, 0x48, 0x82, 0x49, 0x11, 0x22, 0x42, 0x4c, 0x22, 0x21, 0x84, 0x46, 0x0c, 0x92, + 0x12, 0x31, 0x24, 0x89, 0x24, 0x92, 0x4c, 0x84, 0xd2, 0x48, 0x89, 0x29, 0x49, 0xd5, 0x9e, 0x7b, 0xfe, 0xee, 0xfe, 0xfb, 0xef, 0xb7, 0xfb, 0x7b, 0x3f, 0xfb, 0x6e, 0xdf, 0xff, 0xff, 0x6d, 0xb6, 0xdb, 0x66, 0xf6, 0x36, 0xee, 0xdb, 0xb6, 0x72, 0x6d, 0xdb, 0x6f, 0x5d, 0xef, 0x00, 0x00, 0x02, 0x7f, 0xf7, 0xb6, 0x92, 0x64, 0xca, 0x24, 0x99, 0x10, 0x92, 0x49, 0x24, 0x89, 0x08, 0x89, 0x31, 0x11, 0x24, 0x88, 0x50, 0x21, 0x89, 0x24, 0x31, 0x11, 0x82, 0x48, + 0xc2, 0x44, 0x92, 0x65, 0x24, 0x92, 0x42, 0x64, 0x09, 0x26, 0x32, 0x89, 0x24, 0x76, 0x77, 0xde, 0xdf, 0xff, 0xdf, 0xbe, 0xfb, 0xfd, 0xff, 0xf8, 0x9d, 0xfa, 0x7b, 0x77, 0xff, 0xfe, 0xdd, 0xb7, 0x6d, 0xbb, 0x33, 0xd9, 0x99, 0x6d, 0x6d, 0xdb, 0xdd, 0xb6, 0xdb, 0xdf, 0xbf, 0x00, 0x00, 0x10, 0xbb, 0xbd, 0xf7, 0x4c, 0x93, 0x29, 0x24, 0x85, 0x4c, 0x89, 0x24, 0x92, 0x22, 0x62, 0x24, 0x44, 0x94, 0x88, 0x93, 0x15, 0x88, 0x24, 0x88, 0x89, 0x24, 0x62, 0x49, + 0x29, 0x12, 0x49, 0x14, 0x92, 0x49, 0x32, 0x13, 0x64, 0x91, 0x0c, 0xa4, 0x92, 0x0f, 0x9d, 0xf7, 0xf7, 0x77, 0xf7, 0xef, 0xbe, 0x6f, 0xf5, 0xf8, 0xcf, 0x7e, 0xdf, 0x7d, 0xff, 0xfb, 0xb6, 0xd9, 0xb6, 0xdb, 0xdd, 0xcf, 0x77, 0x6d, 0x6d, 0x5c, 0xd6, 0xed, 0xb6, 0xf6, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xef, 0x6d, 0xa1, 0x98, 0x25, 0x49, 0x24, 0x42, 0x64, 0x92, 0x48, 0x92, 0x12, 0x44, 0x88, 0x84, 0x92, 0x44, 0x20, 0x4a, 0x44, 0x8a, 0x44, 0x88, 0x18, 0x92, + 0x09, 0x22, 0x49, 0x22, 0x49, 0x24, 0x89, 0x92, 0x12, 0x49, 0x61, 0x24, 0x49, 0x89, 0x9f, 0x7d, 0xbd, 0xdf, 0x7e, 0xfb, 0xef, 0xfb, 0xed, 0xf2, 0x7b, 0xf5, 0xf5, 0xaf, 0xff, 0xed, 0x6e, 0xde, 0xdb, 0x6c, 0xdc, 0x76, 0x6d, 0xb7, 0x9b, 0x67, 0x33, 0x6f, 0x7d, 0xbf, 0xf7, 0x00, 0x00, 0x25, 0xf7, 0xfb, 0xdf, 0x9a, 0x46, 0x94, 0x92, 0x52, 0x32, 0x12, 0x49, 0x25, 0x99, 0x89, 0x12, 0x22, 0x62, 0x44, 0x48, 0x8a, 0x42, 0x50, 0x61, 0x12, 0x4a, 0x84, 0x92, + 0x44, 0x89, 0x26, 0x69, 0x24, 0x92, 0x48, 0x48, 0x92, 0x48, 0x92, 0x43, 0x09, 0x62, 0xef, 0xdf, 0xef, 0xfd, 0xfb, 0xde, 0xfb, 0xbe, 0xf2, 0xf2, 0x2f, 0xfd, 0xbf, 0xb3, 0xff, 0xb7, 0x6b, 0x66, 0xdb, 0x6f, 0x67, 0xb5, 0xbb, 0xb4, 0xe6, 0xbb, 0x6d, 0xb6, 0xdb, 0xbb, 0xbf, 0x00, 0x00, 0x01, 0xfd, 0xbe, 0xf6, 0xc2, 0x51, 0x92, 0x92, 0x49, 0x89, 0x92, 0x48, 0x27, 0x7d, 0x6d, 0x92, 0x49, 0x19, 0x25, 0x22, 0x49, 0x31, 0x0b, 0x04, 0x92, 0x20, 0xa4, 0x48, + 0x52, 0x59, 0x20, 0x89, 0x24, 0x92, 0x46, 0x49, 0x24, 0x92, 0x12, 0x58, 0x64, 0x52, 0x6f, 0xf6, 0xfb, 0x7f, 0xff, 0xff, 0xbe, 0xe7, 0xf6, 0xf9, 0x9d, 0xf7, 0x6f, 0x7e, 0x7e, 0xdb, 0xbb, 0x7b, 0x6d, 0xb3, 0x6d, 0xad, 0xa6, 0x6f, 0x39, 0xb6, 0xdd, 0xb6, 0xee, 0xee, 0xef, 0x00, 0x00, 0x4b, 0xff, 0xef, 0xbb, 0xa5, 0x34, 0x4a, 0x64, 0x88, 0x48, 0x49, 0x22, 0x93, 0x67, 0x76, 0x89, 0x11, 0x01, 0x21, 0x24, 0x44, 0x0c, 0x60, 0x32, 0x48, 0x8c, 0x23, 0x22, + 0x12, 0x44, 0x9a, 0x24, 0x99, 0x24, 0x91, 0x24, 0x89, 0x25, 0x49, 0x01, 0x34, 0x99, 0x1b, 0x7f, 0xbf, 0xdf, 0xff, 0xed, 0xef, 0xfd, 0xed, 0xe8, 0x57, 0xf6, 0x27, 0x6f, 0xfe, 0xda, 0xdd, 0x9b, 0x6d, 0xbc, 0xdb, 0x6e, 0xfd, 0xcb, 0xdb, 0x54, 0xd6, 0xdb, 0xb7, 0xff, 0xfb, 0x00, 0x00, 0x03, 0xee, 0xfb, 0xef, 0xa4, 0x86, 0x69, 0x0c, 0xa6, 0x46, 0x49, 0x24, 0x81, 0x16, 0xd6, 0x24, 0x94, 0xa4, 0x98, 0x84, 0x91, 0x80, 0x84, 0x88, 0x49, 0x21, 0x18, 0x24, + 0x89, 0x24, 0x89, 0x92, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x49, 0x64, 0x93, 0xa5, 0x57, 0xdb, 0xee, 0xff, 0xdf, 0x7f, 0x7b, 0x7f, 0xe3, 0xe6, 0x66, 0xf9, 0x93, 0xed, 0xbf, 0x6e, 0xd6, 0xed, 0xb6, 0xcf, 0x9a, 0xda, 0xcd, 0xb8, 0xd6, 0xdd, 0xb6, 0xdf, 0xbd, 0xb7, 0x7f, 0x00, 0x10, 0x97, 0xfb, 0xbe, 0xfd, 0xd2, 0xc9, 0x84, 0xc9, 0x24, 0x91, 0x92, 0x44, 0x69, 0x92, 0x90, 0x92, 0x44, 0x92, 0x42, 0x30, 0x88, 0x64, 0x92, 0x43, 0x04, 0x49, 0x41, 0x91, + 0x64, 0x92, 0x64, 0x4a, 0x44, 0x92, 0x48, 0x92, 0x52, 0x49, 0x24, 0x12, 0x48, 0xed, 0xb5, 0xfe, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xda, 0xf1, 0x3f, 0xee, 0x4c, 0xfd, 0xfd, 0xb7, 0x76, 0xed, 0xb6, 0xf2, 0xec, 0xd3, 0x33, 0x37, 0x36, 0xab, 0x6d, 0xe6, 0xef, 0xfd, 0xef, 0x00, 0x00, 0x0f, 0xdf, 0xef, 0x6d, 0xc9, 0x29, 0x32, 0x32, 0x49, 0x24, 0x24, 0x96, 0x09, 0x82, 0x39, 0x12, 0x48, 0x49, 0x12, 0x42, 0x26, 0x12, 0x22, 0x50, 0xb1, 0x12, 0x4c, 0x49, + 0x12, 0x49, 0x12, 0x49, 0x24, 0x92, 0x4a, 0x49, 0x12, 0x49, 0x25, 0x92, 0x4a, 0x5b, 0xad, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd6, 0xd9, 0x8d, 0xf6, 0x0d, 0xb7, 0x6f, 0x99, 0xbb, 0x36, 0xdb, 0x3a, 0xe7, 0x75, 0xfc, 0xdd, 0xeb, 0x6b, 0x6d, 0x3d, 0xb3, 0x6f, 0xfb, 0x00, 0x02, 0x0f, 0xf6, 0x7b, 0xdf, 0x65, 0x26, 0x4a, 0x44, 0x92, 0x49, 0x24, 0x98, 0x92, 0x79, 0x24, 0x49, 0x23, 0x09, 0x24, 0x89, 0x20, 0x89, 0x29, 0x0c, 0x02, 0x44, 0x82, 0x48, + 0x13, 0x24, 0x92, 0x91, 0x29, 0x24, 0x92, 0x49, 0x24, 0x92, 0x48, 0x49, 0x26, 0x46, 0x6b, 0x37, 0xff, 0xf6, 0xf7, 0xdb, 0x99, 0x3b, 0xe5, 0xfc, 0x7f, 0xf5, 0x23, 0xff, 0xbf, 0x6e, 0xcd, 0xdb, 0x6d, 0xcf, 0x39, 0x9c, 0xce, 0xd3, 0x39, 0x76, 0xdb, 0xdb, 0xdf, 0xff, 0xbe, 0x00, 0x00, 0x9b, 0xbf, 0xde, 0xf7, 0xd4, 0x92, 0x49, 0x49, 0x24, 0x92, 0x49, 0x69, 0x24, 0xcc, 0xe4, 0x88, 0x24, 0x24, 0x48, 0x24, 0x49, 0x21, 0x08, 0x21, 0x48, 0x90, 0x31, 0x12, + 0xc8, 0x92, 0x49, 0x26, 0x49, 0x24, 0x91, 0x24, 0x89, 0x24, 0x92, 0x49, 0x21, 0x20, 0x9a, 0x92, 0x49, 0x19, 0x99, 0x32, 0xce, 0xcf, 0xed, 0xe6, 0xb7, 0xed, 0x0c, 0xda, 0xf7, 0xf7, 0xf7, 0x6d, 0xb6, 0xf5, 0x9a, 0xe6, 0xb3, 0x6e, 0xcf, 0x36, 0xdb, 0x6e, 0x7d, 0xbd, 0xef, 0x00, 0x00, 0x3f, 0xed, 0xf7, 0xbd, 0x92, 0xd9, 0xa4, 0x99, 0x24, 0x92, 0x4f, 0x79, 0x24, 0x26, 0x92, 0x22, 0x91, 0x91, 0x12, 0x44, 0x89, 0x14, 0xc6, 0x92, 0x24, 0x93, 0x0c, 0x44, + 0x24, 0x92, 0x49, 0x20, 0x92, 0x49, 0x24, 0x92, 0x69, 0x24, 0x92, 0x44, 0x89, 0x29, 0x96, 0xcd, 0xb6, 0xcd, 0x6d, 0xae, 0x66, 0xd3, 0xfb, 0xd9, 0xbd, 0xfa, 0x4d, 0xf7, 0xdf, 0x9d, 0x3b, 0x66, 0xdb, 0x35, 0xee, 0x6b, 0xb5, 0xac, 0xd6, 0xcd, 0xb7, 0x6f, 0xef, 0xf7, 0xff, 0x00, 0x09, 0x37, 0x7f, 0x7d, 0xef, 0x6a, 0x44, 0x92, 0x24, 0x92, 0x49, 0x27, 0xc2, 0x42, 0x20, 0x12, 0x48, 0x92, 0x44, 0x91, 0x11, 0x24, 0x44, 0x30, 0x84, 0x92, 0x48, 0xc2, 0x49, + 0x25, 0x24, 0x92, 0x4c, 0x92, 0x42, 0x48, 0x92, 0x12, 0x49, 0x24, 0x92, 0x24, 0x96, 0x44, 0x6d, 0xb6, 0xe6, 0x66, 0xc9, 0xb3, 0x37, 0xdf, 0xdf, 0xef, 0xfe, 0x43, 0x7d, 0xdb, 0xf7, 0xec, 0xdb, 0x6d, 0xce, 0x69, 0xb9, 0x4d, 0xb7, 0x74, 0xf7, 0x6d, 0xd9, 0xb3, 0x7e, 0xde, 0x00, 0x20, 0x7f, 0xdb, 0xde, 0x7b, 0x49, 0x36, 0x59, 0x84, 0x92, 0x49, 0x2c, 0xd2, 0x18, 0x99, 0x44, 0x92, 0x48, 0x48, 0x89, 0x24, 0x44, 0x93, 0x02, 0x24, 0x42, 0x24, 0x31, 0x22, + 0x11, 0x24, 0x94, 0x92, 0x49, 0x30, 0x92, 0x49, 0x92, 0x49, 0x24, 0xa0, 0x92, 0x44, 0x69, 0x26, 0x49, 0x3b, 0x9a, 0x5b, 0x39, 0xad, 0xf7, 0xe6, 0xfb, 0xed, 0x99, 0xcf, 0x7f, 0xf6, 0xdd, 0xbb, 0x6c, 0xfb, 0x5b, 0x9d, 0x7a, 0x73, 0x2d, 0x99, 0xdb, 0x77, 0xbf, 0xef, 0xf6, 0x00, 0x04, 0x7e, 0xfe, 0xf3, 0xdf, 0x55, 0x91, 0x24, 0x72, 0x49, 0x24, 0x8e, 0x18, 0x81, 0x04, 0x49, 0x24, 0x49, 0x22, 0x62, 0x49, 0x12, 0x20, 0xc8, 0x91, 0x29, 0x85, 0x0c, 0x92, + 0xc8, 0xc9, 0x24, 0x92, 0x49, 0x0c, 0x92, 0x48, 0x49, 0x24, 0x93, 0x2c, 0x92, 0x61, 0x8b, 0x99, 0xdb, 0x49, 0x6b, 0x66, 0x4c, 0xcb, 0xbd, 0xbd, 0xbe, 0xfb, 0x2d, 0xfb, 0x6d, 0xed, 0xb7, 0x2c, 0xdb, 0x33, 0x66, 0x67, 0x9b, 0xcc, 0xeb, 0x6e, 0xdb, 0x6e, 0xdd, 0xfd, 0xbf, 0x00, 0x01, 0x7f, 0xb7, 0xbf, 0xf7, 0x34, 0xc9, 0x85, 0x09, 0x24, 0x90, 0x93, 0x09, 0x24, 0x62, 0x21, 0x09, 0x24, 0x92, 0x04, 0x42, 0x21, 0x2c, 0x24, 0x92, 0x24, 0x31, 0x42, 0x48, + 0x26, 0x12, 0x49, 0x24, 0x92, 0x42, 0x49, 0x26, 0x49, 0x24, 0x90, 0x42, 0x49, 0x1a, 0x32, 0x49, 0x36, 0xdd, 0x29, 0x99, 0xd6, 0x73, 0xef, 0xef, 0xef, 0xfa, 0xef, 0x7f, 0xfb, 0xfd, 0xb3, 0xe7, 0x9b, 0xcd, 0xbd, 0xec, 0xe6, 0x6f, 0x3b, 0x6e, 0x6d, 0xbb, 0x77, 0xb7, 0xee, 0x10, 0x21, 0xfb, 0xfd, 0xed, 0xbe, 0x8a, 0x6a, 0x59, 0x24, 0xa4, 0x92, 0x43, 0x32, 0x49, 0x09, 0x8c, 0x49, 0x04, 0x91, 0x91, 0x12, 0x2c, 0x41, 0x12, 0x08, 0x84, 0x84, 0x51, 0x24, + 0x11, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x21, 0x24, 0x92, 0x4c, 0x92, 0x49, 0x4a, 0x4c, 0xce, 0x64, 0xb4, 0xda, 0x6d, 0x33, 0x37, 0xfb, 0x73, 0x7b, 0xef, 0xb3, 0xdd, 0xbf, 0xf6, 0xdc, 0xda, 0xec, 0xfd, 0x99, 0x9b, 0x3b, 0x33, 0xcd, 0xb3, 0xb6, 0xed, 0xde, 0xff, 0x7e, 0x00, 0x88, 0xfe, 0xdf, 0x7f, 0x6e, 0xcb, 0x24, 0x42, 0x92, 0x12, 0x49, 0x29, 0xe4, 0x12, 0x48, 0x21, 0x24, 0x52, 0x24, 0x12, 0x48, 0x81, 0x12, 0x48, 0xc4, 0x92, 0x49, 0x14, 0x92, + 0xc9, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x42, 0x24, 0x92, 0x61, 0x93, 0x32, 0xc9, 0x8b, 0x46, 0xa5, 0x6d, 0x9b, 0x9f, 0xdf, 0xde, 0xfb, 0xbe, 0xf7, 0xb7, 0xf6, 0xdf, 0x7a, 0xb7, 0x26, 0x66, 0xd3, 0xcb, 0xdc, 0xf6, 0xbd, 0xb6, 0xdd, 0xdb, 0xff, 0xfc, 0x80, 0x03, 0xf7, 0xf7, 0xdb, 0x76, 0x64, 0x95, 0x98, 0xc9, 0x52, 0x49, 0x20, 0x89, 0x20, 0x92, 0x49, 0x21, 0x10, 0x88, 0xc4, 0x81, 0x24, 0x92, 0x44, 0x32, 0x49, 0x22, 0x42, 0x48, + 0x24, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x48, 0x92, 0x48, 0x32, 0x49, 0x24, 0x94, 0xa4, 0x24, 0x9b, 0x69, 0x34, 0x94, 0xc9, 0xcb, 0xf6, 0xfd, 0xf7, 0xfe, 0xee, 0xbe, 0xf6, 0xfb, 0x65, 0x8d, 0xb5, 0xb3, 0xee, 0x76, 0x74, 0xd6, 0x5a, 0xcd, 0xdb, 0x77, 0x7f, 0xdb, 0xbc, 0x21, 0x27, 0xfd, 0xbd, 0xf7, 0xd9, 0x34, 0xd2, 0x24, 0x25, 0x09, 0x24, 0x14, 0x10, 0x8c, 0x22, 0x44, 0x89, 0x24, 0x92, 0x10, 0x94, 0x48, 0x89, 0x13, 0x02, 0x21, 0x24, 0x99, 0x23, + 0x24, 0xa4, 0x92, 0x49, 0x24, 0x92, 0x49, 0x26, 0x49, 0x24, 0x84, 0x92, 0x49, 0x16, 0x29, 0x99, 0x32, 0x24, 0xc9, 0xd3, 0x32, 0x6b, 0xdf, 0xb7, 0x7d, 0xb7, 0xdb, 0xee, 0xdf, 0xef, 0x7d, 0xed, 0xcd, 0x9d, 0x39, 0xad, 0x9d, 0x37, 0xcf, 0x76, 0x6f, 0x6d, 0xed, 0xfe, 0xfd, 0x00, 0x0b, 0xef, 0xef, 0x7c, 0xf9, 0x93, 0x08, 0xc6, 0x90, 0xa4, 0x91, 0x84, 0xc6, 0x21, 0x24, 0x92, 0x24, 0x89, 0x22, 0x22, 0x24, 0x92, 0x64, 0x48, 0x48, 0x8c, 0x11, 0x24, 0x24, + 0x12, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x91, 0x24, 0x91, 0x11, 0x24, 0x92, 0x49, 0x4a, 0x4b, 0x4c, 0x96, 0x4a, 0x4c, 0x96, 0xb3, 0xed, 0xff, 0xbf, 0xfd, 0xfb, 0x7b, 0xfb, 0xf9, 0x9b, 0x73, 0x7a, 0x67, 0x4f, 0x39, 0xe7, 0xe9, 0x35, 0xb7, 0xb5, 0xed, 0xbf, 0xb7, 0xd9, 0x04, 0x93, 0xfb, 0x7b, 0xcf, 0xb6, 0x69, 0x2d, 0x18, 0x92, 0x92, 0x44, 0x22, 0x08, 0x42, 0x44, 0x22, 0x44, 0x48, 0x49, 0x89, 0x22, 0x12, 0x04, 0x89, 0x24, 0x81, 0x92, 0x42, 0x88, + 0xc8, 0x52, 0x49, 0x24, 0x92, 0x49, 0x24, 0x90, 0x92, 0x49, 0x49, 0x09, 0x24, 0xc9, 0x12, 0x64, 0xc5, 0x93, 0x32, 0x64, 0xcc, 0x9d, 0xbe, 0xdb, 0xb3, 0x5b, 0x6f, 0xdf, 0x6e, 0xfe, 0xeb, 0x1c, 0x93, 0xb6, 0xe5, 0xce, 0x76, 0x6f, 0xf6, 0xd9, 0xdd, 0xbb, 0xb6, 0xff, 0x7a, 0x20, 0x4f, 0xdf, 0xde, 0xfb, 0xf2, 0x8c, 0xc4, 0x62, 0x4c, 0x49, 0x12, 0x48, 0x61, 0x18, 0x91, 0x28, 0x51, 0x22, 0x44, 0x11, 0x08, 0xc1, 0x32, 0x22, 0x24, 0x32, 0x48, 0x98, 0x92, + 0x25, 0x0c, 0x92, 0x49, 0x24, 0x92, 0x49, 0x26, 0x49, 0x24, 0x24, 0x49, 0x25, 0x24, 0xb1, 0x94, 0x31, 0x68, 0x95, 0x93, 0x23, 0x4b, 0xf3, 0xbc, 0xff, 0xdf, 0xfd, 0xf7, 0x7f, 0xf6, 0x6d, 0xee, 0xf6, 0x99, 0xb9, 0x67, 0x35, 0xb6, 0x5b, 0x5e, 0x77, 0xbe, 0xff, 0xed, 0xf8, 0x8a, 0x4f, 0xf6, 0xef, 0xbe, 0xe9, 0xb2, 0x53, 0x09, 0x45, 0x24, 0x48, 0x91, 0x04, 0x84, 0x89, 0x09, 0x09, 0x22, 0x10, 0xc4, 0x49, 0x0c, 0x82, 0x48, 0x92, 0x48, 0x44, 0x84, 0x44, + 0x11, 0x61, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x91, 0x84, 0x90, 0x91, 0x26, 0x24, 0x13, 0x2a, 0x4a, 0xc4, 0x32, 0x32, 0x63, 0xdf, 0x67, 0xdd, 0xf6, 0xdd, 0x3d, 0xdb, 0x7b, 0xb4, 0xe3, 0x4d, 0xed, 0x2e, 0x75, 0xcd, 0xb5, 0xcd, 0xe7, 0xb6, 0xe7, 0xcf, 0xff, 0xf2, 0x02, 0x1f, 0x7e, 0xeb, 0x6f, 0xcc, 0x4b, 0x18, 0xc9, 0x31, 0x24, 0x89, 0x04, 0x92, 0x21, 0x24, 0xc4, 0xa2, 0x18, 0x92, 0x24, 0x91, 0x22, 0x49, 0x12, 0x42, 0x45, 0x12, 0x43, 0x24, + 0x48, 0x4c, 0x49, 0x24, 0x92, 0x64, 0x92, 0x48, 0x92, 0x12, 0x31, 0x26, 0x4c, 0x91, 0x8d, 0xa4, 0xca, 0x12, 0x2b, 0x24, 0xcc, 0xb7, 0xf9, 0xdf, 0x77, 0x7b, 0xdf, 0xef, 0xdf, 0xfb, 0xb6, 0x9d, 0xb9, 0x36, 0xd3, 0x99, 0xdb, 0x6d, 0xb6, 0xb9, 0xde, 0xfb, 0x7b, 0x77, 0x64, 0x20, 0xbf, 0xcf, 0x3f, 0xff, 0x53, 0x48, 0xa4, 0x92, 0x09, 0x12, 0x21, 0x24, 0x21, 0x24, 0x10, 0x32, 0x12, 0xc2, 0x44, 0x92, 0x24, 0x21, 0x24, 0x92, 0x19, 0x11, 0x22, 0x58, 0x21, + 0x4a, 0x12, 0x92, 0x49, 0x24, 0x90, 0x49, 0x26, 0x49, 0x42, 0x09, 0x21, 0x22, 0x48, 0x60, 0x94, 0x91, 0xa4, 0xa8, 0xcd, 0x25, 0x99, 0xee, 0xf3, 0x7f, 0xbb, 0x76, 0xfb, 0x76, 0xfc, 0xdb, 0x76, 0xb7, 0x53, 0x9d, 0xbb, 0x36, 0xdb, 0x76, 0xde, 0x7b, 0x9e, 0xff, 0xdd, 0xf1, 0x0c, 0xbe, 0xfd, 0xfd, 0xfd, 0x66, 0xb6, 0x24, 0x24, 0xca, 0x49, 0x24, 0x21, 0x24, 0x44, 0xc6, 0x08, 0xc4, 0x09, 0x11, 0x11, 0x22, 0x98, 0x92, 0x49, 0x21, 0x24, 0x89, 0x01, 0x98, + 0x23, 0x22, 0x92, 0x49, 0x24, 0x8b, 0x08, 0x91, 0x24, 0x49, 0x48, 0x88, 0x93, 0x2b, 0x1a, 0x49, 0x24, 0xa9, 0x84, 0x91, 0x32, 0x4b, 0xee, 0xbd, 0xdb, 0xb6, 0xf7, 0x9e, 0xff, 0xee, 0x69, 0x6a, 0xd6, 0xdc, 0xed, 0x66, 0xe6, 0xdb, 0x5b, 0x67, 0xef, 0x77, 0xb6, 0xff, 0xc9, 0x42, 0x7f, 0xff, 0xff, 0xf3, 0x38, 0x91, 0x93, 0x65, 0x22, 0x49, 0x12, 0x49, 0x09, 0x12, 0x11, 0x84, 0x09, 0x24, 0x49, 0x09, 0x08, 0x82, 0x42, 0x49, 0x24, 0x88, 0x91, 0x24, 0x42, + 0x24, 0xa8, 0x49, 0x24, 0x92, 0x20, 0xa6, 0x10, 0x90, 0x91, 0x22, 0x26, 0x10, 0x88, 0x93, 0x23, 0x2c, 0x8a, 0x56, 0x66, 0xca, 0x67, 0xf3, 0xad, 0xfe, 0xf6, 0xdd, 0xf7, 0xab, 0x7b, 0xaf, 0x9b, 0x6a, 0xad, 0x6b, 0x5d, 0x9b, 0x6d, 0xbb, 0xb9, 0xb5, 0xfd, 0xff, 0xb7, 0xe2, 0x32, 0x7f, 0xff, 0xff, 0x32, 0xcb, 0x4c, 0x92, 0x11, 0x24, 0x90, 0xc2, 0x42, 0x48, 0x90, 0x90, 0x63, 0x21, 0x21, 0x24, 0x62, 0x48, 0x49, 0x18, 0x84, 0x88, 0x4a, 0x24, 0x92, 0x12, + 0x90, 0x89, 0x24, 0x92, 0x49, 0x24, 0x21, 0x4c, 0x8a, 0x24, 0x89, 0x20, 0xcc, 0xa4, 0xa4, 0x98, 0x82, 0x52, 0x51, 0x08, 0x19, 0x99, 0xdb, 0x6e, 0xaf, 0xdb, 0xff, 0x7d, 0xfb, 0xf6, 0xb6, 0xd7, 0x3b, 0xab, 0x5b, 0xb6, 0xf9, 0xb6, 0xec, 0xde, 0xde, 0xce, 0xdb, 0xfd, 0x88, 0x89, 0xf6, 0x6d, 0xb4, 0x8c, 0x9b, 0x64, 0x98, 0x92, 0x49, 0x26, 0x09, 0x12, 0x22, 0x24, 0x86, 0x18, 0x4c, 0x49, 0x10, 0x84, 0x46, 0x48, 0x84, 0xb0, 0x93, 0x10, 0x88, 0x92, 0x90, + 0x1a, 0x44, 0x92, 0x49, 0x21, 0x13, 0x10, 0x42, 0x22, 0x44, 0x49, 0x12, 0x22, 0x33, 0x24, 0x92, 0x63, 0x11, 0x25, 0xb3, 0x44, 0x93, 0xed, 0xdb, 0xbd, 0xdb, 0x37, 0xdb, 0x76, 0xf6, 0xd4, 0xec, 0xd4, 0xeb, 0xb6, 0xb6, 0xae, 0xdb, 0x6f, 0x67, 0x7b, 0xbb, 0xfe, 0xdf, 0x92, 0x4b, 0xe9, 0x00, 0x06, 0xcd, 0x30, 0x93, 0x45, 0x88, 0x92, 0x40, 0x64, 0x24, 0x84, 0x49, 0x20, 0x81, 0x10, 0x84, 0x42, 0x24, 0x90, 0x92, 0x64, 0x0a, 0x24, 0x24, 0x92, 0x24, 0x4c, + 0x42, 0x52, 0x49, 0x24, 0x94, 0xc8, 0xc6, 0x22, 0x49, 0x13, 0x10, 0xc4, 0x89, 0x48, 0x49, 0x25, 0x2c, 0xad, 0x28, 0x48, 0x66, 0x67, 0xed, 0xb7, 0xff, 0x76, 0xed, 0xf7, 0xdf, 0xbb, 0x5d, 0xab, 0xd6, 0x6c, 0xec, 0xd9, 0xae, 0xdb, 0x73, 0x7d, 0xef, 0xff, 0x6f, 0xf7, 0x92, 0x4f, 0x89, 0xb7, 0xf9, 0x73, 0x66, 0x98, 0x51, 0x26, 0x24, 0x93, 0x04, 0x80, 0x91, 0x02, 0x29, 0x24, 0x92, 0x31, 0x29, 0x22, 0x22, 0x12, 0x09, 0x42, 0x20, 0x89, 0x24, 0x89, 0x21, + 0x49, 0x12, 0x49, 0x24, 0x44, 0x20, 0x11, 0x89, 0x10, 0x88, 0x26, 0x09, 0x24, 0x49, 0x92, 0x49, 0x10, 0xa1, 0x8a, 0x4b, 0x12, 0x49, 0xf3, 0x3c, 0xdb, 0xf6, 0xef, 0x3d, 0xfb, 0xed, 0xcf, 0x3a, 0x6f, 0x9d, 0x9b, 0x6f, 0x73, 0x77, 0x9d, 0xdb, 0xbd, 0x6d, 0xfb, 0x7f, 0x21, 0x37, 0xb6, 0x4c, 0x93, 0x36, 0xcc, 0xc4, 0x98, 0x61, 0x24, 0x90, 0x30, 0x5a, 0x12, 0x30, 0x84, 0x44, 0x89, 0x09, 0x09, 0x18, 0x89, 0x44, 0x92, 0x51, 0x8a, 0x49, 0x21, 0x22, 0x22, + 0x24, 0x89, 0x24, 0x43, 0x12, 0x16, 0x48, 0x24, 0x92, 0x61, 0x20, 0x62, 0x24, 0x92, 0x24, 0x92, 0x53, 0x14, 0x62, 0x90, 0x91, 0x93, 0xde, 0xde, 0x47, 0xdb, 0xbb, 0xef, 0x3e, 0xf6, 0x69, 0xd7, 0x31, 0xd6, 0xf3, 0x6c, 0xdd, 0xb6, 0xfd, 0xb6, 0xe7, 0xff, 0xdf, 0xde, 0x24, 0xbe, 0x64, 0xdb, 0x66, 0xc8, 0x93, 0x33, 0x26, 0x49, 0x12, 0x4c, 0x83, 0x01, 0x42, 0x84, 0x44, 0x91, 0x21, 0x44, 0x44, 0x81, 0x24, 0x49, 0x22, 0x0c, 0x12, 0x44, 0x49, 0x24, 0x88, + 0x24, 0xa4, 0x84, 0x98, 0x49, 0x91, 0x22, 0x44, 0x49, 0x04, 0x89, 0x12, 0x92, 0x24, 0x89, 0x24, 0xc8, 0x53, 0x12, 0x24, 0xac, 0x26, 0xed, 0xfb, 0x24, 0xfb, 0x6e, 0xfb, 0xed, 0xb7, 0x7d, 0xdd, 0xde, 0x73, 0x2d, 0x9b, 0xb6, 0xdd, 0xa6, 0xef, 0xbe, 0xdf, 0x76, 0xfc, 0x88, 0xfd, 0x19, 0xb2, 0x58, 0xce, 0x64, 0x24, 0x42, 0x12, 0x49, 0x01, 0x18, 0x24, 0x18, 0x49, 0x12, 0x24, 0x4c, 0x51, 0x30, 0xa4, 0x44, 0x88, 0x48, 0xa0, 0xc4, 0x31, 0x12, 0x11, 0x24, + 0x12, 0x24, 0x92, 0x01, 0x20, 0x41, 0x12, 0x51, 0x24, 0x12, 0x24, 0x90, 0x42, 0x49, 0x22, 0x49, 0x26, 0x48, 0x92, 0x64, 0x22, 0xc9, 0xed, 0xb9, 0x91, 0x7d, 0xdf, 0xbd, 0xef, 0xed, 0x96, 0x69, 0x9b, 0xad, 0xcd, 0xb3, 0x6e, 0xdd, 0xbe, 0xdb, 0x7f, 0xf7, 0xff, 0xf8, 0x93, 0xf5, 0xdf, 0x25, 0x9b, 0x33, 0x2d, 0x8c, 0xd9, 0x92, 0x49, 0x31, 0x40, 0x92, 0x21, 0x12, 0x22, 0x49, 0x10, 0x89, 0x0a, 0x12, 0x52, 0x22, 0x44, 0x84, 0x21, 0x84, 0x92, 0x49, 0x12, + 0x92, 0x48, 0x49, 0x64, 0x96, 0x18, 0x49, 0x09, 0x02, 0x48, 0x44, 0x8d, 0x19, 0x12, 0x4c, 0x92, 0x21, 0x88, 0x8c, 0x93, 0x12, 0x13, 0xf6, 0xf4, 0x13, 0x3d, 0xb5, 0xef, 0x7b, 0x79, 0xb6, 0xee, 0xe5, 0xad, 0x76, 0xed, 0x6b, 0x6e, 0xdb, 0xdd, 0xdb, 0xfe, 0xed, 0xf2, 0x4f, 0xd6, 0xe6, 0x4d, 0x65, 0xb3, 0x22, 0x62, 0x08, 0x49, 0x22, 0x44, 0x26, 0x41, 0x84, 0x90, 0x89, 0x08, 0x92, 0x24, 0x42, 0x42, 0x02, 0x49, 0x24, 0x53, 0x08, 0x12, 0x44, 0x88, 0xc2, + 0x21, 0x13, 0x21, 0x12, 0x40, 0x86, 0x24, 0x62, 0x58, 0x81, 0x10, 0x60, 0x84, 0x92, 0x41, 0x24, 0x98, 0x26, 0x61, 0x08, 0xc9, 0x33, 0xdb, 0x72, 0x44, 0xbe, 0xed, 0xdb, 0xdf, 0x76, 0x6b, 0x36, 0x76, 0x73, 0x76, 0xbd, 0xbb, 0x6b, 0x7b, 0x77, 0xfe, 0xdf, 0xff, 0xb2, 0x7f, 0x9b, 0xbb, 0xd9, 0x24, 0x8c, 0xd8, 0x93, 0x26, 0x49, 0x24, 0x12, 0x20, 0x4c, 0x12, 0x24, 0x91, 0x22, 0x42, 0x44, 0x51, 0x28, 0x98, 0x91, 0x23, 0x10, 0x4a, 0x49, 0x10, 0xa6, 0x18, + 0x0c, 0x90, 0x94, 0x88, 0x49, 0x21, 0x91, 0x04, 0x81, 0x32, 0x49, 0x06, 0x24, 0x89, 0x32, 0x49, 0x06, 0x41, 0x12, 0x48, 0x24, 0xc9, 0xfb, 0xe8, 0x24, 0x1e, 0xdf, 0x7e, 0xf7, 0xdf, 0xdb, 0xd5, 0x9b, 0xde, 0x9b, 0x96, 0xdd, 0xfb, 0xcf, 0x7e, 0xef, 0xf7, 0xb7, 0x89, 0xbe, 0xfa, 0x08, 0x22, 0x9a, 0x64, 0x85, 0x18, 0xb1, 0x24, 0x91, 0x88, 0x89, 0x00, 0xc8, 0x42, 0x44, 0x49, 0x18, 0x91, 0x0c, 0x09, 0x21, 0x24, 0x18, 0x24, 0x92, 0x48, 0x4a, 0x10, 0x21, + 0x42, 0x48, 0x92, 0x23, 0x12, 0x48, 0x49, 0x24, 0x24, 0x08, 0x89, 0x30, 0x49, 0x24, 0x8a, 0x49, 0x61, 0x19, 0x12, 0x46, 0x92, 0x09, 0xee, 0xe4, 0x92, 0x6f, 0x5b, 0xef, 0xbd, 0xe9, 0x9c, 0xdd, 0xec, 0xcb, 0xec, 0xf6, 0xd6, 0x9c, 0xfd, 0xdb, 0xbb, 0x7e, 0xff, 0x49, 0xfe, 0x89, 0xcc, 0xac, 0xd3, 0x33, 0x31, 0x44, 0x84, 0x92, 0x12, 0x22, 0x49, 0x32, 0x03, 0x10, 0x49, 0x10, 0x41, 0x12, 0x60, 0xc4, 0x44, 0x49, 0x80, 0x88, 0x91, 0x22, 0x48, 0xc2, 0x84, + 0x30, 0x4a, 0x21, 0x24, 0x24, 0x92, 0x24, 0x92, 0x48, 0xc4, 0x90, 0x83, 0x12, 0x44, 0x89, 0x24, 0x49, 0x24, 0xc9, 0x30, 0x92, 0x66, 0xed, 0xd0, 0x11, 0x2f, 0x6e, 0xfb, 0xef, 0x6e, 0xe6, 0x6b, 0x37, 0x39, 0x6f, 0x6d, 0xf6, 0xe7, 0xb7, 0xdf, 0xff, 0xef, 0xde, 0x57, 0xf1, 0xa4, 0x63, 0x25, 0x24, 0x98, 0x4c, 0x52, 0x48, 0x92, 0x48, 0x24, 0x42, 0x04, 0x64, 0x25, 0x08, 0x96, 0x24, 0x48, 0x86, 0x11, 0x12, 0x42, 0x26, 0x42, 0x44, 0x89, 0x21, 0x08, 0x92, + 0x05, 0x22, 0x49, 0x10, 0x88, 0x24, 0x92, 0x11, 0x12, 0x11, 0x26, 0x18, 0x92, 0x52, 0x64, 0x92, 0x12, 0x44, 0x24, 0x84, 0x49, 0x12, 0xfd, 0xc2, 0x44, 0x93, 0xb7, 0xbe, 0xfb, 0xdb, 0x3b, 0xba, 0xdb, 0xef, 0x33, 0x6d, 0xbb, 0xff, 0xbb, 0x76, 0xdd, 0xfb, 0x7e, 0xbf, 0xe5, 0x6d, 0x33, 0x73, 0x2c, 0xc4, 0xc4, 0x92, 0x4a, 0x44, 0x89, 0x85, 0x12, 0x49, 0x08, 0x88, 0x62, 0x40, 0x89, 0x22, 0x10, 0x92, 0x49, 0x10, 0x21, 0x12, 0x12, 0x24, 0x24, 0x24, 0x48, + 0x49, 0x09, 0x04, 0xc6, 0x49, 0x21, 0x12, 0x49, 0x21, 0x22, 0x20, 0x40, 0x89, 0x12, 0x12, 0x49, 0x92, 0x53, 0x24, 0x93, 0x24, 0x93, 0xde, 0xe0, 0x02, 0x57, 0xb7, 0xe7, 0x9e, 0xf6, 0xdb, 0xa6, 0xda, 0x6d, 0xdd, 0xb7, 0xae, 0x59, 0xef, 0x7f, 0xf7, 0xbf, 0xf2, 0xff, 0x9e, 0x77, 0x9c, 0x98, 0xcb, 0x26, 0x33, 0x24, 0x92, 0x48, 0xa4, 0x10, 0x48, 0x48, 0x88, 0x92, 0x04, 0x49, 0x12, 0x12, 0x49, 0x24, 0x84, 0x4c, 0x88, 0x48, 0x88, 0x42, 0x84, 0x91, 0x09, + 0x22, 0x49, 0x24, 0x11, 0x22, 0x49, 0x48, 0x88, 0x89, 0x08, 0x89, 0x26, 0x21, 0x24, 0x92, 0x48, 0x49, 0x10, 0x90, 0x48, 0x84, 0x88, 0xf3, 0xa0, 0x21, 0x27, 0xdc, 0xfd, 0xf7, 0xb6, 0xd4, 0xfd, 0xb7, 0xb6, 0x6d, 0xb6, 0xed, 0xdf, 0x7d, 0xdb, 0x7e, 0xed, 0xf3, 0xfe, 0xf3, 0x92, 0xc9, 0x8c, 0x90, 0x99, 0x22, 0x49, 0x21, 0x08, 0x11, 0x22, 0x21, 0x02, 0x22, 0x41, 0x91, 0x09, 0x44, 0xc4, 0x89, 0x08, 0x31, 0x21, 0x24, 0x89, 0x21, 0x18, 0x91, 0x12, 0x60, + 0x24, 0x40, 0x91, 0x10, 0x88, 0x88, 0x42, 0x24, 0x92, 0x42, 0x24, 0x88, 0x4c, 0x89, 0x24, 0x92, 0x49, 0x24, 0x93, 0x24, 0x52, 0x64, 0xff, 0xc8, 0x89, 0x2f, 0x6f, 0xbf, 0x7d, 0xed, 0xb7, 0x19, 0xac, 0xdb, 0xb6, 0xde, 0xf7, 0xb7, 0xdf, 0xff, 0xdb, 0xfb, 0xcf, 0xf3, 0x6c, 0xcc, 0x6b, 0x67, 0x76, 0x41, 0x4c, 0x92, 0x4c, 0x63, 0x11, 0x22, 0x84, 0xb1, 0x22, 0x18, 0x24, 0x64, 0x21, 0x08, 0xa2, 0x49, 0x02, 0x02, 0x44, 0xa1, 0x14, 0x81, 0x12, 0x44, 0x06, + 0x11, 0x34, 0x92, 0x4a, 0x24, 0x92, 0x32, 0x44, 0x44, 0x31, 0x10, 0x93, 0x10, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x25, 0x12, 0x13, 0xed, 0xc0, 0x08, 0x4b, 0xb7, 0xed, 0xde, 0x7b, 0x3b, 0x6e, 0xef, 0x6d, 0xb6, 0xdb, 0x9c, 0xfd, 0xf6, 0xed, 0xbf, 0x7f, 0xbf, 0x99, 0x0c, 0xb3, 0x24, 0x51, 0x09, 0x24, 0x49, 0x24, 0x91, 0x00, 0xc4, 0x08, 0x12, 0x04, 0x48, 0x86, 0x22, 0x11, 0x88, 0x22, 0x12, 0x44, 0xc8, 0xc8, 0x10, 0x14, 0x44, 0x24, 0x48, 0x44, 0x90, + 0x44, 0x81, 0x08, 0x89, 0x24, 0x44, 0x89, 0x12, 0x24, 0x84, 0xc6, 0x20, 0x86, 0x44, 0x92, 0x49, 0x24, 0x92, 0x44, 0x90, 0x89, 0x88, 0xff, 0x62, 0x42, 0x33, 0xb6, 0x7d, 0xf3, 0xdb, 0xcc, 0xeb, 0x33, 0x6d, 0xdb, 0x7b, 0xff, 0xcf, 0x7f, 0xbf, 0xed, 0xdf, 0xfe, 0xcd, 0xf3, 0x24, 0x95, 0x19, 0x24, 0xa9, 0x92, 0x49, 0x21, 0x34, 0x04, 0x89, 0x10, 0x44, 0x44, 0xa0, 0x92, 0x84, 0x12, 0x92, 0x44, 0x30, 0x24, 0x11, 0x83, 0x11, 0x09, 0x24, 0x84, 0x90, 0x91, + 0x24, 0x18, 0x62, 0x24, 0x49, 0x24, 0x81, 0x22, 0x90, 0x88, 0x08, 0x48, 0xa1, 0x24, 0x92, 0x49, 0x24, 0x92, 0x48, 0x92, 0x64, 0x64, 0xf7, 0xe0, 0x00, 0x97, 0xdf, 0xdf, 0x7f, 0xec, 0xf7, 0xbb, 0xdd, 0xb6, 0x7b, 0x6e, 0x67, 0x7b, 0xdb, 0xf6, 0xff, 0xff, 0xf6, 0x66, 0x33, 0x6c, 0xd3, 0x66, 0x64, 0x88, 0x24, 0x92, 0x0c, 0x81, 0x20, 0x20, 0x45, 0x31, 0x11, 0x08, 0x84, 0x24, 0x44, 0x49, 0x21, 0x03, 0x04, 0x92, 0x28, 0x42, 0x60, 0x92, 0x31, 0x09, 0x04, + 0x11, 0x42, 0x09, 0x21, 0x02, 0x21, 0x24, 0x88, 0x42, 0x23, 0x21, 0x12, 0x18, 0x22, 0x49, 0x24, 0x92, 0x49, 0x22, 0x49, 0x12, 0x13, 0x7d, 0xc0, 0x24, 0x4f, 0x69, 0xf3, 0xdd, 0xbf, 0x35, 0xb6, 0x6d, 0xb7, 0xad, 0xed, 0xfd, 0xfe, 0xff, 0xff, 0xb3, 0xff, 0xd3, 0x33, 0x8c, 0x93, 0x18, 0x84, 0x93, 0x26, 0x49, 0x12, 0x40, 0x18, 0x23, 0x04, 0x20, 0x82, 0x42, 0x4a, 0x21, 0x21, 0x24, 0x41, 0x18, 0xc8, 0x50, 0x82, 0x08, 0x92, 0x12, 0x02, 0x02, 0x48, 0x48, + 0x44, 0x49, 0x91, 0x18, 0xb2, 0x49, 0x24, 0x49, 0x18, 0x90, 0x24, 0x84, 0xc2, 0x99, 0x24, 0x84, 0x49, 0x24, 0x92, 0x44, 0x49, 0x91, 0x7f, 0x70, 0x01, 0x1b, 0xbf, 0x7e, 0xf7, 0xdb, 0xdd, 0x6d, 0xb6, 0xd9, 0xef, 0x3f, 0x9f, 0xb7, 0xbf, 0x6d, 0xdf, 0xfe, 0x59, 0x99, 0x6c, 0xd1, 0x24, 0xb1, 0x92, 0x41, 0x10, 0x48, 0x49, 0x42, 0x88, 0x44, 0x8a, 0x08, 0x98, 0x21, 0x28, 0x89, 0x11, 0x14, 0x42, 0x08, 0x42, 0x24, 0x82, 0x24, 0x84, 0xc8, 0xc8, 0x82, 0x42, + 0x24, 0x88, 0x24, 0xc2, 0x08, 0x88, 0x43, 0x12, 0x42, 0x44, 0x92, 0x64, 0x08, 0x84, 0x24, 0x93, 0x21, 0x24, 0x91, 0x12, 0x48, 0x44, 0xfb, 0xe4, 0x11, 0x27, 0xb7, 0xdf, 0xbe, 0x76, 0xd7, 0x6d, 0xde, 0xff, 0x76, 0xf3, 0xf6, 0xfd, 0xef, 0xff, 0x7f, 0xf3, 0x6c, 0xcd, 0x53, 0x2c, 0xc6, 0x26, 0x4c, 0x99, 0x26, 0x42, 0x22, 0x12, 0x08, 0x30, 0x90, 0x64, 0x81, 0x84, 0x46, 0x12, 0x41, 0x24, 0x89, 0x25, 0x09, 0x20, 0x64, 0x48, 0x91, 0x12, 0x12, 0x24, 0x24, + 0x22, 0x22, 0x48, 0x09, 0x22, 0x24, 0x48, 0x44, 0x22, 0x11, 0x11, 0x03, 0x24, 0x62, 0x92, 0x48, 0x24, 0x88, 0x4c, 0x49, 0x26, 0x48, 0xfe, 0xe0, 0x04, 0xaf, 0xd9, 0xf7, 0xed, 0xf6, 0xf6, 0xdb, 0x6b, 0xa7, 0x5d, 0xde, 0xff, 0xdf, 0x7b, 0xb7, 0xff, 0x99, 0x8e, 0x66, 0x94, 0xa2, 0x59, 0x20, 0x41, 0x24, 0x88, 0x91, 0x82, 0x20, 0x62, 0x82, 0x04, 0x84, 0x24, 0x12, 0x40, 0x44, 0x2c, 0x22, 0x24, 0x21, 0x24, 0x0b, 0x04, 0x42, 0x12, 0x11, 0x10, 0x91, 0x84, + 0x12, 0x24, 0x83, 0x24, 0x24, 0x91, 0x11, 0x24, 0x88, 0x92, 0x44, 0x30, 0x45, 0x08, 0x92, 0x49, 0x12, 0x23, 0x02, 0x44, 0x91, 0x22, 0x77, 0xf2, 0x04, 0x8e, 0x6f, 0x7b, 0x7b, 0xdf, 0x3b, 0xb6, 0xee, 0xfd, 0xdb, 0x7e, 0xdb, 0x77, 0xde, 0xff, 0xfc, 0xcc, 0xf3, 0x32, 0xa4, 0x99, 0x21, 0x99, 0x33, 0x20, 0x90, 0x84, 0x18, 0x89, 0x02, 0x08, 0x62, 0x11, 0x24, 0x49, 0x19, 0x21, 0x00, 0x89, 0x21, 0x88, 0x20, 0xc0, 0x11, 0x11, 0x48, 0x8c, 0x44, 0x84, 0x11, + 0x44, 0x84, 0x90, 0x91, 0x88, 0x84, 0x94, 0x89, 0x24, 0x42, 0x09, 0x84, 0x91, 0x24, 0x48, 0x21, 0x49, 0x24, 0x31, 0x30, 0x84, 0x94, 0xbd, 0xf0, 0x41, 0x7f, 0xef, 0xdf, 0xde, 0xd9, 0xed, 0xb7, 0xbb, 0x5b, 0xbb, 0xcf, 0xff, 0xfd, 0xf7, 0xff, 0xe6, 0x66, 0x25, 0x99, 0xab, 0x4d, 0x26, 0x46, 0x0c, 0x8a, 0x44, 0x20, 0x40, 0x44, 0x18, 0x43, 0x08, 0x42, 0x43, 0x20, 0x41, 0x28, 0xd2, 0x48, 0x48, 0x12, 0x89, 0x14, 0xc1, 0x14, 0x44, 0x60, 0x84, 0x24, 0x48, + 0x21, 0x31, 0x14, 0x44, 0x22, 0x24, 0x82, 0x21, 0x21, 0x08, 0xa2, 0x12, 0x24, 0x45, 0x25, 0x8c, 0x24, 0x91, 0x0c, 0x82, 0x24, 0x91, 0x3f, 0x79, 0x02, 0x5f, 0x39, 0xf5, 0xf7, 0xbf, 0xdd, 0xdd, 0xbb, 0xdb, 0xbe, 0xfb, 0x6d, 0xbf, 0x7f, 0xfe, 0x59, 0x9b, 0x39, 0x94, 0x49, 0x21, 0x90, 0x40, 0xc0, 0x92, 0x23, 0x0a, 0x44, 0x41, 0x81, 0x10, 0x09, 0x28, 0x98, 0x26, 0x24, 0x86, 0x09, 0x12, 0x46, 0x44, 0x12, 0x04, 0x0c, 0x44, 0x91, 0x02, 0x32, 0x41, 0x22, + 0x29, 0x04, 0x45, 0x12, 0x44, 0x91, 0x28, 0x92, 0x18, 0xa4, 0x10, 0x49, 0x24, 0x91, 0x24, 0x21, 0x84, 0x49, 0x42, 0x19, 0x22, 0x49, 0x7f, 0xd9, 0x1a, 0xbd, 0xef, 0x7f, 0x7d, 0xed, 0xb6, 0x7d, 0xce, 0xfe, 0xe7, 0xbf, 0xff, 0xef, 0xff, 0xe9, 0x9b, 0x31, 0xca, 0x66, 0x54, 0xb2, 0x4d, 0x34, 0x32, 0x44, 0x88, 0x48, 0x92, 0x18, 0x24, 0x49, 0x61, 0x22, 0x00, 0x88, 0x88, 0x90, 0x24, 0x21, 0x10, 0x91, 0x42, 0x61, 0x21, 0x21, 0x09, 0x18, 0x82, 0x49, 0x04, + 0x08, 0xc9, 0x20, 0x90, 0x91, 0x12, 0x24, 0x88, 0xc2, 0x21, 0x45, 0x24, 0x90, 0x88, 0x88, 0x92, 0x11, 0x08, 0x51, 0x44, 0x99, 0x24, 0x3d, 0xfc, 0x84, 0xff, 0x6f, 0xdb, 0xde, 0x76, 0xef, 0xe7, 0x7d, 0xb7, 0xfd, 0xed, 0xb6, 0xff, 0xfe, 0x4c, 0xa6, 0x66, 0x4c, 0x99, 0x92, 0x4c, 0x42, 0x05, 0x89, 0x20, 0x48, 0x01, 0x00, 0x82, 0x10, 0x82, 0x04, 0x08, 0xc6, 0x48, 0x92, 0x09, 0x91, 0x89, 0x11, 0x08, 0x08, 0x09, 0x24, 0x89, 0x22, 0x42, 0x11, 0x08, 0x51, + 0x46, 0x12, 0x2a, 0x24, 0x89, 0x48, 0x82, 0x22, 0x04, 0x89, 0x09, 0x20, 0x92, 0x26, 0x22, 0x44, 0x49, 0x26, 0x14, 0x44, 0x84, 0x84, 0x9f, 0x7e, 0x64, 0xfb, 0x73, 0xbe, 0xf7, 0xde, 0xfb, 0x7f, 0xf7, 0xf7, 0x7f, 0x7f, 0xff, 0xff, 0xb3, 0x56, 0xec, 0xcc, 0xb3, 0x24, 0xa9, 0x41, 0x98, 0xc8, 0x49, 0x29, 0x12, 0x91, 0x24, 0x22, 0x42, 0x20, 0x90, 0xc4, 0x10, 0x42, 0x11, 0x22, 0x04, 0x44, 0x44, 0x62, 0x24, 0x92, 0x12, 0x24, 0x24, 0x22, 0x48, 0x46, 0x10, + 0x30, 0x44, 0x88, 0x82, 0x22, 0x09, 0x18, 0x92, 0x51, 0x24, 0x22, 0x0a, 0x09, 0x21, 0x24, 0x49, 0x24, 0x41, 0x84, 0x92, 0x42, 0x52, 0x5f, 0xdf, 0x33, 0xff, 0x9e, 0xef, 0xbd, 0xeb, 0x9d, 0xdb, 0xbe, 0xdd, 0xdb, 0xdb, 0xff, 0xf9, 0x93, 0x73, 0x19, 0x33, 0x24, 0xcc, 0xa5, 0x32, 0x24, 0x22, 0x44, 0x44, 0x80, 0x44, 0x09, 0x08, 0x49, 0x0c, 0x12, 0x11, 0x21, 0x24, 0x49, 0x20, 0x64, 0x30, 0x92, 0x04, 0x84, 0x90, 0xc2, 0x21, 0x84, 0x88, 0x8a, 0x50, 0x86, + 0x02, 0x48, 0x82, 0x48, 0x90, 0xa4, 0x42, 0x44, 0x49, 0x10, 0x90, 0xc8, 0xc9, 0x08, 0x91, 0x22, 0x04, 0x98, 0x62, 0x22, 0x59, 0x12, 0x5d, 0xf7, 0xdb, 0xed, 0xfb, 0xfb, 0xef, 0x3f, 0x77, 0xfe, 0xef, 0xff, 0xfe, 0xff, 0xfe, 0xcc, 0x6c, 0x8c, 0xd3, 0x24, 0xcc, 0x93, 0x14, 0x8c, 0x85, 0x24, 0x92, 0x44, 0x24, 0x40, 0x90, 0x49, 0x08, 0x41, 0x42, 0x12, 0x4c, 0x91, 0x24, 0x4d, 0x02, 0x82, 0x22, 0x24, 0x48, 0x44, 0x08, 0x88, 0x10, 0x88, 0x81, 0x01, 0x20, + 0x49, 0x22, 0x31, 0x12, 0x44, 0x22, 0x49, 0x09, 0x22, 0x42, 0x4c, 0x11, 0x10, 0xca, 0x12, 0x24, 0xd2, 0x22, 0x18, 0x89, 0x04, 0x49, 0x0f, 0x7f, 0xff, 0xff, 0x6f, 0x7e, 0xfb, 0xf5, 0xfe, 0xef, 0xfb, 0x6e, 0xef, 0xff, 0xb3, 0x33, 0x6c, 0xb4, 0x94, 0xcc, 0x93, 0x30, 0x44, 0x81, 0x51, 0x11, 0x22, 0x11, 0x01, 0x18, 0x84, 0x90, 0x82, 0x20, 0x48, 0xc2, 0x10, 0x11, 0x24, 0x40, 0x48, 0x89, 0x08, 0x81, 0x12, 0x12, 0x48, 0x92, 0x49, 0x22, 0x31, 0x2c, 0x49, + 0x24, 0x92, 0x44, 0x44, 0x13, 0x09, 0x21, 0x22, 0x22, 0x28, 0x21, 0x24, 0x24, 0x11, 0x48, 0x91, 0x09, 0x09, 0x82, 0x49, 0x21, 0x24, 0xef, 0xdf, 0xfe, 0xdb, 0xd9, 0xdf, 0xbe, 0xdd, 0xaf, 0xbb, 0x7f, 0xfb, 0xbf, 0xfd, 0xad, 0xb6, 0x13, 0x66, 0x64, 0x93, 0x30, 0xcd, 0xb2, 0x73, 0x12, 0x49, 0x28, 0x90, 0x48, 0x22, 0x20, 0x06, 0x30, 0x8c, 0x08, 0x08, 0x83, 0x44, 0x41, 0x12, 0x48, 0x24, 0x48, 0x98, 0x91, 0x88, 0x92, 0x11, 0x22, 0x11, 0x04, 0x20, 0x88, + 0x20, 0x88, 0x84, 0x49, 0x20, 0x91, 0x24, 0x48, 0x88, 0x89, 0x82, 0x42, 0x43, 0x11, 0x09, 0x12, 0x21, 0x24, 0x62, 0x44, 0x99, 0x24, 0x07, 0xf6, 0xf7, 0xfe, 0xf7, 0xf7, 0xed, 0xfe, 0xfb, 0xff, 0xdc, 0xdf, 0xff, 0xa4, 0xcc, 0x95, 0xd5, 0x19, 0x2a, 0x31, 0x26, 0x02, 0x09, 0x0c, 0x24, 0x88, 0x82, 0x4a, 0x22, 0x00, 0x26, 0x40, 0x44, 0x11, 0x23, 0x24, 0xa8, 0x12, 0x12, 0x49, 0x12, 0x41, 0x04, 0x02, 0x04, 0x22, 0x21, 0x24, 0x08, 0x84, 0x44, 0x84, 0x84, + 0x4a, 0x22, 0x31, 0x08, 0x8c, 0x44, 0x89, 0x12, 0x48, 0x92, 0x18, 0x91, 0x10, 0x44, 0x62, 0x44, 0x94, 0x84, 0x19, 0x32, 0x42, 0x49, 0xb3, 0x7f, 0xbd, 0xb7, 0xb7, 0x7d, 0xfd, 0xa7, 0xde, 0xdd, 0xf7, 0xff, 0xf2, 0x66, 0x52, 0xd9, 0x54, 0xc9, 0x89, 0x8c, 0x89, 0x32, 0x64, 0x88, 0x89, 0x26, 0x31, 0x22, 0x02, 0x49, 0x08, 0x31, 0x03, 0x11, 0x20, 0x44, 0x20, 0x88, 0x92, 0x24, 0x41, 0x18, 0x61, 0x60, 0x60, 0x44, 0x48, 0x42, 0x44, 0x22, 0x30, 0x92, 0x31, + 0x10, 0x92, 0x42, 0x22, 0x11, 0x24, 0x21, 0x24, 0x46, 0x04, 0x40, 0x8c, 0x24, 0x44, 0x08, 0x90, 0x04, 0x12, 0x84, 0x88, 0x48, 0x92, 0x2b, 0xcd, 0xef, 0xfd, 0xed, 0xdf, 0x5f, 0xbd, 0xf7, 0xf7, 0xbf, 0xfe, 0x4c, 0x9b, 0x73, 0x26, 0x5a, 0xa6, 0x51, 0x22, 0xc9, 0x4c, 0x92, 0xa2, 0x49, 0x21, 0x0c, 0x20, 0xc8, 0x42, 0x41, 0x84, 0x30, 0x44, 0x0c, 0x42, 0x06, 0x62, 0x48, 0x84, 0x8c, 0x22, 0x09, 0x0c, 0x0b, 0x11, 0x0a, 0x48, 0x91, 0x18, 0x82, 0x10, 0x82, + 0x24, 0x44, 0x08, 0x92, 0x40, 0x89, 0x24, 0x89, 0x30, 0x61, 0x06, 0x20, 0x82, 0x31, 0x92, 0x26, 0x61, 0x42, 0x24, 0x25, 0x24, 0x92, 0x49, 0xff, 0x7e, 0xdf, 0x7f, 0xf7, 0xf3, 0xff, 0x3d, 0xbf, 0xff, 0xd3, 0x13, 0x31, 0x8c, 0xad, 0x8a, 0x30, 0x56, 0x58, 0x32, 0x49, 0x12, 0x24, 0x44, 0x90, 0xc0, 0x89, 0x09, 0x10, 0x94, 0x04, 0x84, 0x40, 0xc1, 0x18, 0xd0, 0x04, 0x42, 0x50, 0x80, 0x82, 0x88, 0x21, 0x80, 0x22, 0x20, 0x84, 0x88, 0xc1, 0x09, 0x44, 0x08, + 0x43, 0x09, 0x88, 0x44, 0x8c, 0x21, 0x12, 0x22, 0x09, 0x08, 0xb0, 0x42, 0x48, 0x84, 0x24, 0x88, 0x89, 0x18, 0x91, 0x21, 0x24, 0x49, 0x95, 0xf7, 0xdb, 0xf7, 0xdb, 0x7d, 0xbe, 0x67, 0xef, 0xff, 0xfe, 0x49, 0xb3, 0x4c, 0xa4, 0xc9, 0x25, 0x93, 0x08, 0xc5, 0x84, 0x92, 0x49, 0x11, 0x32, 0x4c, 0x12, 0x44, 0x20, 0x14, 0x20, 0x61, 0x01, 0x18, 0x11, 0x01, 0x09, 0x25, 0x12, 0x12, 0x32, 0x48, 0x24, 0x80, 0x31, 0x88, 0x94, 0x30, 0x22, 0x04, 0x48, 0x43, 0x24, + 0x10, 0x20, 0x22, 0x11, 0x21, 0x24, 0xc2, 0x48, 0xc2, 0x24, 0x83, 0x11, 0x12, 0x49, 0x21, 0x21, 0x10, 0x82, 0x44, 0x88, 0x93, 0x24, 0x94, 0xfd, 0xef, 0x7d, 0xff, 0xdf, 0xef, 0xfd, 0xff, 0xff, 0xc9, 0x2c, 0x8c, 0xca, 0x66, 0x52, 0xd4, 0x4c, 0xa2, 0x24, 0x4c, 0x92, 0xa4, 0xc9, 0x08, 0x43, 0x11, 0x10, 0x86, 0x43, 0x0a, 0x08, 0x58, 0x22, 0x04, 0x64, 0x21, 0x21, 0x24, 0x89, 0x02, 0x11, 0x22, 0x1a, 0x44, 0x10, 0x81, 0x03, 0x24, 0x24, 0x22, 0x18, 0x41, + 0x24, 0x94, 0x00, 0x84, 0x12, 0x44, 0x08, 0x49, 0x12, 0x21, 0x08, 0x24, 0x21, 0x10, 0x89, 0x24, 0x46, 0x24, 0x48, 0x92, 0x10, 0x92, 0x62, 0xef, 0x7f, 0xdf, 0x6d, 0xf6, 0xed, 0xbf, 0x7f, 0xfd, 0x33, 0x66, 0x69, 0x33, 0x19, 0x36, 0x52, 0x40, 0xb2, 0x24, 0xb2, 0x64, 0x92, 0x24, 0xc3, 0x10, 0x44, 0x22, 0x10, 0x88, 0x41, 0x8a, 0x42, 0x82, 0x62, 0x04, 0x92, 0x48, 0x88, 0x61, 0x10, 0x94, 0x88, 0xc0, 0x84, 0x44, 0x28, 0x88, 0x44, 0x81, 0x89, 0x00, 0x48, + 0x08, 0x41, 0x48, 0x42, 0x44, 0x11, 0x25, 0x12, 0x48, 0x89, 0x24, 0x88, 0x89, 0x26, 0x24, 0x49, 0x21, 0x24, 0x8a, 0x44, 0x8c, 0x4b, 0x2a, 0x7b, 0xdd, 0xf7, 0xff, 0x7f, 0xbf, 0xef, 0xff, 0xa5, 0x94, 0x99, 0x66, 0x4c, 0xc9, 0x89, 0x09, 0x9b, 0x09, 0x93, 0x02, 0x49, 0x12, 0x24, 0x30, 0x92, 0x44, 0x89, 0x20, 0x88, 0x44, 0x21, 0x02, 0x10, 0x88, 0x92, 0x44, 0x12, 0x49, 0x04, 0x4c, 0x02, 0x11, 0x04, 0x91, 0x23, 0x06, 0x24, 0x10, 0x98, 0x10, 0x66, 0x0a, + 0x42, 0x08, 0x02, 0x18, 0x09, 0x09, 0x21, 0x12, 0x21, 0x24, 0x21, 0x08, 0x84, 0x20, 0x44, 0x89, 0x29, 0x11, 0x22, 0x48, 0xa3, 0x24, 0x99, 0x3e, 0xff, 0x7d, 0xb7, 0xdb, 0x72, 0xff, 0xf2, 0x68, 0xd6, 0x93, 0x12, 0xc9, 0x26, 0x62, 0x64, 0x20, 0x48, 0x49, 0x59, 0x12, 0x49, 0x89, 0x04, 0x48, 0x90, 0x90, 0x8a, 0x22, 0x10, 0x24, 0x30, 0x44, 0x09, 0x21, 0x11, 0x84, 0x42, 0x10, 0x81, 0x60, 0xc4, 0x32, 0x10, 0x88, 0x50, 0x43, 0x22, 0x22, 0x44, 0x80, 0xa0, + 0x10, 0x82, 0x20, 0x81, 0x88, 0xc2, 0x48, 0x84, 0x8c, 0x44, 0x88, 0x62, 0x30, 0x89, 0x12, 0x22, 0x08, 0xc9, 0x11, 0x22, 0x20, 0x91, 0x95, 0x9f, 0xf7, 0xdf, 0xfd, 0xff, 0xdf, 0xfe, 0x9b, 0x4e, 0x69, 0x64, 0xd9, 0x33, 0x31, 0x14, 0x92, 0xa6, 0x4b, 0x28, 0x44, 0x92, 0x48, 0x49, 0x49, 0x04, 0x0a, 0x12, 0x10, 0x22, 0x93, 0x02, 0x84, 0x81, 0x41, 0x09, 0x12, 0x25, 0x24, 0x92, 0x21, 0x0c, 0x08, 0x80, 0x46, 0x00, 0x41, 0x18, 0x49, 0x00, 0x44, 0x18, 0x84, + 0x04, 0x20, 0x89, 0x24, 0x22, 0x12, 0x4a, 0x24, 0x40, 0x92, 0x26, 0x02, 0x42, 0x42, 0x48, 0x92, 0x46, 0x08, 0x91, 0x24, 0x98, 0x94, 0x64, 0xdd, 0xbd, 0xf6, 0xdf, 0x6d, 0xff, 0xf3, 0xac, 0xd3, 0x2d, 0x2c, 0x8d, 0x24, 0xcc, 0x94, 0x92, 0x24, 0x90, 0x86, 0x92, 0x64, 0x92, 0x44, 0x22, 0x61, 0x60, 0xc2, 0x45, 0x18, 0x20, 0x58, 0x12, 0x29, 0x14, 0x48, 0x48, 0x21, 0x08, 0x42, 0x4c, 0x01, 0x22, 0x4c, 0x40, 0x65, 0x09, 0x20, 0x40, 0x4c, 0x11, 0x02, 0x11, + 0x49, 0x08, 0x02, 0x04, 0x21, 0x24, 0x10, 0x91, 0x12, 0x08, 0x90, 0x98, 0x49, 0x12, 0x42, 0x44, 0x50, 0x92, 0x24, 0x11, 0x06, 0x4c, 0x8a, 0x47, 0xbf, 0x7f, 0xf7, 0xff, 0xfe, 0xcc, 0xe6, 0xb5, 0xa4, 0x92, 0x62, 0x98, 0x02, 0x62, 0x49, 0x49, 0x26, 0x51, 0x22, 0x0c, 0x92, 0x31, 0x88, 0x09, 0x04, 0x08, 0x41, 0x41, 0x08, 0x81, 0x41, 0x08, 0x20, 0x44, 0x89, 0x98, 0x92, 0x48, 0x40, 0xd1, 0x21, 0x11, 0x19, 0x04, 0x24, 0x05, 0x12, 0x41, 0x82, 0x61, 0x20, + 0x08, 0x42, 0x50, 0x91, 0x0c, 0x21, 0x84, 0x84, 0x92, 0x61, 0x01, 0x21, 0x09, 0x04, 0x32, 0x11, 0x04, 0x91, 0x24, 0xc9, 0x63, 0x22, 0xb3, 0x37, 0xef, 0xdb, 0x7d, 0xff, 0xd9, 0x36, 0x59, 0x99, 0x92, 0xd3, 0x32, 0xc6, 0xd9, 0x0a, 0x49, 0x12, 0x49, 0x13, 0x29, 0x92, 0x49, 0x82, 0x13, 0x24, 0x25, 0x24, 0x92, 0x04, 0x46, 0x24, 0x14, 0x42, 0x23, 0x11, 0x24, 0x42, 0x21, 0x09, 0x12, 0x14, 0x4c, 0x41, 0x01, 0x10, 0x90, 0xc4, 0x04, 0x10, 0x28, 0x0c, 0x0c, + 0x22, 0x10, 0x10, 0x01, 0x10, 0x88, 0x22, 0x24, 0x21, 0x04, 0x6c, 0x04, 0x90, 0x61, 0x84, 0x92, 0x62, 0x24, 0x82, 0x24, 0x18, 0xb2, 0x14, 0x93, 0xfb, 0xff, 0xdf, 0xfa, 0x4d, 0x49, 0x99, 0x4a, 0x5a, 0x4c, 0x8c, 0x31, 0x11, 0x99, 0x24, 0x92, 0x51, 0x24, 0x88, 0x42, 0x48, 0x08, 0x44, 0x21, 0x20, 0x41, 0x08, 0x91, 0x20, 0x04, 0x80, 0x91, 0x88, 0x04, 0x44, 0x12, 0x49, 0x21, 0x08, 0x20, 0x80, 0x8c, 0x64, 0x42, 0x02, 0x10, 0xa1, 0x04, 0x21, 0x00, 0xc1, + 0x00, 0x81, 0x25, 0x64, 0x82, 0x0a, 0x48, 0x49, 0x24, 0x32, 0x00, 0xc8, 0x92, 0x08, 0x08, 0x88, 0x18, 0x88, 0x98, 0x92, 0x92, 0x4d, 0xc4, 0xc9, 0xff, 0xff, 0xff, 0xda, 0x66, 0xcd, 0xa6, 0x66, 0x63, 0x22, 0x41, 0x89, 0x26, 0x44, 0x92, 0x49, 0x14, 0x8c, 0x46, 0x49, 0x22, 0x64, 0x90, 0x89, 0x0a, 0x49, 0x20, 0x48, 0x09, 0x90, 0x62, 0x0c, 0x08, 0xc4, 0x92, 0x91, 0x04, 0x24, 0x63, 0x0a, 0x24, 0x90, 0x84, 0x29, 0x49, 0x22, 0x08, 0xc2, 0x44, 0xb2, 0x10, + 0x10, 0x24, 0x01, 0x08, 0x62, 0x61, 0x13, 0x08, 0x84, 0x82, 0x92, 0x22, 0x44, 0x92, 0x62, 0x43, 0x01, 0x22, 0x42, 0x48, 0xc4, 0x48, 0x26, 0x6c, 0x7f, 0x7f, 0xfa, 0x45, 0x98, 0xb4, 0xe6, 0x91, 0x8c, 0xb2, 0x5a, 0x48, 0xa0, 0x44, 0x92, 0x49, 0x24, 0xa2, 0x51, 0x24, 0x89, 0x04, 0x89, 0x24, 0x48, 0x88, 0x26, 0x0a, 0xc0, 0x43, 0x09, 0x20, 0x42, 0x31, 0x08, 0x84, 0xb0, 0x89, 0x00, 0x41, 0x12, 0x12, 0x11, 0x89, 0x10, 0x49, 0x42, 0x18, 0x90, 0x80, 0x0c, + 0x46, 0x00, 0x90, 0x22, 0x09, 0x04, 0x40, 0x22, 0x21, 0x18, 0x92, 0x12, 0x11, 0x21, 0x04, 0x10, 0xa4, 0x49, 0x12, 0x24, 0x4d, 0x23, 0x29, 0x13, 0x06, 0x49, 0x26, 0xf5, 0x33, 0x33, 0x19, 0x99, 0x30, 0x89, 0x22, 0x46, 0x19, 0x32, 0x49, 0x24, 0xa6, 0x22, 0x24, 0x92, 0x24, 0x52, 0x22, 0x10, 0x91, 0x26, 0x40, 0xa0, 0x16, 0x18, 0x08, 0x42, 0x51, 0x02, 0x49, 0x24, 0x02, 0x10, 0x94, 0x91, 0x12, 0x42, 0x44, 0x00, 0x24, 0x84, 0x10, 0x01, 0x02, 0x09, 0x61, + 0x00, 0xca, 0x04, 0x80, 0x88, 0x49, 0x2c, 0x92, 0x49, 0x41, 0x21, 0x44, 0x92, 0x24, 0x51, 0x94, 0x24, 0x88, 0x48, 0x85, 0x21, 0x99, 0x23, 0x32, 0x61, 0x96, 0xd1, 0x96, 0x66, 0xca, 0x52, 0x66, 0x46, 0x49, 0x24, 0x91, 0x44, 0x89, 0x24, 0x92, 0x49, 0x29, 0x88, 0x91, 0x22, 0x42, 0x24, 0x92, 0x24, 0x10, 0x92, 0x04, 0x40, 0x80, 0x92, 0x12, 0x04, 0x48, 0x44, 0x49, 0x49, 0x46, 0x21, 0x0c, 0x41, 0x08, 0x90, 0x66, 0x22, 0x20, 0x94, 0xc4, 0x48, 0x48, 0x00, + 0x24, 0x08, 0x60, 0x14, 0x22, 0x21, 0x00, 0x84, 0x48, 0x24, 0x24, 0x10, 0x44, 0x84, 0x92, 0x04, 0x82, 0x22, 0x49, 0x31, 0x28, 0x92, 0x58, 0x89, 0x9c, 0xb2, 0x5d, 0x32, 0x98, 0x99, 0x96, 0x01, 0x91, 0x32, 0x94, 0x91, 0x24, 0x89, 0x22, 0x49, 0x11, 0x08, 0x4a, 0x24, 0x48, 0x88, 0x84, 0x42, 0x42, 0x82, 0x08, 0x52, 0x22, 0x24, 0x41, 0x88, 0xa4, 0x89, 0x24, 0x90, 0x48, 0x40, 0x48, 0x40, 0x98, 0x62, 0x23, 0x08, 0x88, 0x89, 0x02, 0x10, 0x91, 0x22, 0x92, + 0x04, 0x21, 0x09, 0x21, 0x21, 0x8c, 0x52, 0x21, 0x06, 0x24, 0x89, 0x89, 0x24, 0x48, 0x08, 0x60, 0x98, 0x92, 0x24, 0x42, 0x4a, 0x64, 0xc4, 0xcc, 0x46, 0x6b, 0x49, 0x49, 0x93, 0x24, 0xa4, 0xd8, 0x29, 0x04, 0x92, 0x4c, 0x92, 0x64, 0x89, 0x24, 0x94, 0xc6, 0x42, 0x49, 0x04, 0x92, 0x51, 0x18, 0x48, 0x68, 0x43, 0x02, 0x88, 0x44, 0x08, 0x21, 0x08, 0x22, 0x22, 0x24, 0x82, 0x11, 0x12, 0x32, 0x22, 0x08, 0x88, 0x20, 0x89, 0x10, 0x62, 0x0a, 0x11, 0x00, 0x08, + 0x43, 0x04, 0x00, 0x89, 0x0c, 0x10, 0x84, 0x99, 0x30, 0x88, 0x48, 0x24, 0x89, 0x13, 0x42, 0x0a, 0x41, 0x11, 0x82, 0x08, 0x93, 0x0c, 0x93, 0x23, 0x63, 0x4c, 0xb3, 0x4c, 0x64, 0xa6, 0x69, 0x26, 0x89, 0x51, 0x22, 0x42, 0x49, 0x04, 0x91, 0x24, 0x84, 0x31, 0x31, 0x09, 0x31, 0x11, 0x10, 0x81, 0x09, 0x09, 0x30, 0x28, 0x11, 0x11, 0x88, 0x24, 0x43, 0x12, 0x11, 0x22, 0x31, 0x24, 0x84, 0x82, 0x42, 0x89, 0x10, 0x92, 0x21, 0x12, 0x08, 0xa1, 0x24, 0x54, 0xc2, + 0x18, 0x50, 0xb2, 0x10, 0x40, 0x42, 0x24, 0x42, 0x00, 0x89, 0x12, 0x44, 0x21, 0x00, 0x31, 0x88, 0x44, 0x4c, 0x30, 0x92, 0x24, 0x92, 0x28, 0x30, 0x99, 0x32, 0x94, 0xb3, 0x2c, 0x99, 0x09, 0x20, 0xc4, 0x49, 0x29, 0x31, 0x24, 0x52, 0x44, 0x92, 0x63, 0x09, 0x0c, 0x60, 0x82, 0x44, 0x26, 0x24, 0x90, 0x84, 0x84, 0x81, 0x44, 0x20, 0x23, 0x08, 0x30, 0x90, 0xc4, 0x48, 0x44, 0x42, 0x21, 0x09, 0x18, 0x61, 0x12, 0x12, 0x44, 0x42, 0x10, 0x84, 0x42, 0x04, 0x10, + 0x00, 0x46, 0x02, 0x44, 0x23, 0x24, 0x49, 0x08, 0xcc, 0x61, 0x02, 0x49, 0x24, 0x69, 0x84, 0x21, 0x12, 0x40, 0x84, 0x91, 0x48, 0xc3, 0x26, 0xcc, 0x94, 0x92, 0x4c, 0x89, 0x93, 0x11, 0xa6, 0x4c, 0x32, 0x26, 0x49, 0x0c, 0x92, 0x49, 0x24, 0x92, 0x18, 0xc8, 0xc1, 0x06, 0x24, 0x24, 0x80, 0x48, 0x92, 0x30, 0x12, 0x4c, 0x21, 0x8a, 0x20, 0x49, 0x84, 0x24, 0x09, 0x05, 0x02, 0x18, 0x48, 0x64, 0x45, 0x04, 0x49, 0x21, 0x10, 0x08, 0xc4, 0x12, 0x10, 0xa1, 0x04, + 0x46, 0x10, 0x48, 0x09, 0x88, 0x24, 0x81, 0x24, 0x23, 0x04, 0x68, 0x88, 0x92, 0x04, 0x04, 0x24, 0x22, 0x24, 0x92, 0x0c, 0x4a, 0x38, 0xc4, 0x03, 0x26, 0xcd, 0x63, 0x4c, 0xc4, 0x66, 0x30, 0x93, 0x09, 0x90, 0x92, 0x42, 0x42, 0x21, 0x24, 0x49, 0x84, 0x26, 0x11, 0x10, 0x49, 0x21, 0x19, 0x02, 0x02, 0x43, 0x48, 0x20, 0x88, 0x08, 0x8c, 0x42, 0x04, 0x43, 0x21, 0x31, 0x28, 0x81, 0x12, 0x10, 0x90, 0x32, 0x41, 0x24, 0x4a, 0xa1, 0x09, 0x10, 0x8c, 0x08, 0x61, + 0x10, 0x81, 0x21, 0x22, 0x11, 0x08, 0x94, 0x93, 0x08, 0x12, 0x04, 0x22, 0x10, 0x92, 0x61, 0x84, 0x89, 0x89, 0x10, 0xc1, 0x22, 0x24, 0x31, 0xb2, 0x60, 0x64, 0x91, 0x32, 0x32, 0x88, 0x89, 0x90, 0xc8, 0x49, 0x24, 0x91, 0x19, 0x94, 0x49, 0x20, 0x65, 0x21, 0x24, 0x91, 0x10, 0x89, 0x01, 0x31, 0x29, 0x10, 0x23, 0x09, 0x12, 0x61, 0x01, 0x12, 0x51, 0x10, 0x24, 0x02, 0x22, 0x49, 0x12, 0x86, 0x22, 0x82, 0x14, 0x44, 0x88, 0x24, 0x22, 0x44, 0x81, 0x49, 0x08, + 0x20, 0x2c, 0x84, 0x48, 0x44, 0xc2, 0x10, 0x80, 0x40, 0xc8, 0x91, 0x22, 0x44, 0x92, 0x08, 0x11, 0x24, 0x12, 0x44, 0x11, 0x24, 0xc5, 0x89, 0x08, 0x9b, 0x12, 0x18, 0x93, 0x2a, 0xa9, 0x88, 0x4c, 0x26, 0x24, 0x48, 0x94, 0x44, 0x44, 0x92, 0x26, 0x11, 0x18, 0x88, 0x89, 0x12, 0x12, 0x64, 0x44, 0x48, 0x94, 0x84, 0x44, 0x42, 0x04, 0x51, 0x10, 0x11, 0x24, 0x92, 0xc8, 0x92, 0x24, 0xc0, 0x90, 0x48, 0x98, 0x91, 0x10, 0xa1, 0x04, 0x90, 0x84, 0x31, 0x10, 0x06, + 0x0b, 0x00, 0x10, 0x01, 0x04, 0x11, 0x22, 0x2c, 0x56, 0x08, 0x92, 0x48, 0x92, 0x21, 0x8a, 0x49, 0x24, 0x44, 0x24, 0x4c, 0x91, 0x12, 0x49, 0x49, 0x82, 0x49, 0x46, 0x4c, 0x88, 0x26, 0x66, 0x43, 0x21, 0x92, 0x4a, 0x22, 0x44, 0x49, 0x24, 0x88, 0x92, 0x42, 0x49, 0x24, 0x42, 0x44, 0x04, 0x04, 0x82, 0x41, 0x10, 0x90, 0x48, 0x92, 0x14, 0x44, 0x84, 0x49, 0x08, 0x08, 0x84, 0x84, 0x0c, 0x23, 0x09, 0x01, 0x22, 0x22, 0x04, 0x92, 0x44, 0x22, 0x44, 0x84, 0xb0, + 0x48, 0x52, 0x46, 0xb0, 0x91, 0x14, 0x49, 0x01, 0x10, 0x42, 0x22, 0x44, 0x88, 0x48, 0x21, 0x22, 0x11, 0x21, 0x23, 0x02, 0x12, 0x48, 0x52, 0x52, 0x69, 0x24, 0x44, 0x60, 0xc5, 0x90, 0x11, 0x30, 0x98, 0x49, 0x21, 0x22, 0x33, 0x12, 0x40, 0x91, 0x22, 0x49, 0x11, 0x11, 0x10, 0x91, 0x21, 0x90, 0x91, 0x08, 0x48, 0x8b, 0x10, 0x88, 0x80, 0x84, 0xa4, 0x42, 0x41, 0x22, 0x20, 0x51, 0x21, 0x20, 0xa4, 0x64, 0x48, 0x89, 0x52, 0x21, 0x09, 0x18, 0x44, 0x22, 0x00, + 0x00, 0x82, 0x20, 0x06, 0x20, 0xc2, 0x44, 0x52, 0x43, 0x32, 0x28, 0x91, 0x21, 0x0a, 0x44, 0x84, 0x84, 0x89, 0x08, 0x61, 0x48, 0x99, 0x92, 0x12, 0x09, 0x32, 0xb1, 0x96, 0x31, 0x13, 0x49, 0x0c, 0x86, 0x09, 0x24, 0x48, 0x88, 0x42, 0x1a, 0x11, 0x24, 0x91, 0x24, 0x44, 0x4c, 0x20, 0x98, 0x49, 0x14, 0x26, 0x22, 0x20, 0x24, 0x21, 0x2a, 0x30, 0x21, 0x10, 0x94, 0x89, 0x19, 0x04, 0x24, 0x8c, 0x22, 0x12, 0x44, 0x91, 0x10, 0x88, 0x48, 0x41, 0x11, 0x10, 0xc9, + 0x32, 0x28, 0x89, 0x10, 0x4a, 0x08, 0x91, 0x12, 0x18, 0x09, 0x04, 0x08, 0x44, 0x82, 0x52, 0x24, 0x64, 0x24, 0x40, 0x0c, 0x49, 0x24, 0x24, 0xc9, 0x92, 0x88, 0x89, 0x11, 0x0c, 0x64, 0x88, 0x82, 0x60, 0xa2, 0x49, 0x09, 0x02, 0x49, 0x81, 0x4c, 0x44, 0x24, 0x82, 0x44, 0x41, 0x0c, 0x02, 0x09, 0x02, 0x40, 0x89, 0x11, 0x23, 0x24, 0x42, 0x03, 0x09, 0x24, 0x22, 0x21, 0x42, 0x22, 0x92, 0x02, 0x49, 0x82, 0x11, 0x04, 0x24, 0x92, 0x22, 0x24, 0x82, 0x44, 0x04, + 0x04, 0x89, 0x11, 0x23, 0x10, 0x24, 0x89, 0x20, 0x81, 0x41, 0x51, 0x62, 0x44, 0x31, 0x08, 0x49, 0x09, 0x11, 0x15, 0x90, 0x92, 0x45, 0x24, 0x24, 0x48, 0xa4, 0x4a, 0x49, 0x62, 0x48, 0xa6, 0x32, 0x19, 0x24, 0x12, 0x64, 0x64, 0x90, 0x4c, 0x41, 0x11, 0x24, 0x52, 0x11, 0x12, 0x41, 0x60, 0xa0, 0x61, 0x18, 0x88, 0x44, 0x88, 0x08, 0x90, 0xc8, 0x48, 0x89, 0x22, 0x48, 0x08, 0x98, 0x10, 0xd1, 0x04, 0x29, 0x22, 0x62, 0x42, 0x11, 0x82, 0x84, 0x28, 0x89, 0x20, + 0x24, 0x44, 0x44, 0x48, 0x85, 0x21, 0x22, 0x49, 0x24, 0x4c, 0x12, 0x04, 0x91, 0x04, 0x63, 0x10, 0x88, 0x44, 0x90, 0x12, 0x24, 0x91, 0x49, 0x92, 0x49, 0x25, 0x22, 0x64, 0x92, 0x92, 0x20, 0x44, 0x84, 0x49, 0x22, 0x04, 0x11, 0x24, 0x42, 0x22, 0x49, 0x11, 0x11, 0x24, 0x88, 0x90, 0x0c, 0x26, 0x0c, 0x22, 0x22, 0x24, 0x08, 0xc2, 0x09, 0x08, 0x42, 0x22, 0x48, 0x46, 0x61, 0x01, 0x44, 0x04, 0x60, 0x88, 0x88, 0x18, 0x92, 0x44, 0x18, 0x31, 0x04, 0x20, 0x22, + 0x21, 0x31, 0x04, 0x44, 0x61, 0x08, 0x12, 0x04, 0x49, 0x20, 0x84, 0x91, 0x08, 0xc1, 0x04, 0x24, 0x22, 0x24, 0x22, 0x42, 0x49, 0x24, 0x48, 0x49, 0x24, 0x49, 0x24, 0x92, 0x10, 0x92, 0x49, 0x11, 0x24, 0x92, 0x48, 0x91, 0x89, 0x09, 0x30, 0x88, 0x88, 0xc4, 0x89, 0x22, 0x21, 0x0c, 0x81, 0x00, 0x80, 0x82, 0x11, 0x89, 0x62, 0x12, 0x48, 0x23, 0x11, 0x24, 0x09, 0x10, 0x0c, 0x64, 0x45, 0x22, 0x1a, 0x42, 0x49, 0x01, 0x08, 0x44, 0x41, 0x02, 0x51, 0x12, 0x88, + 0x18, 0x82, 0x61, 0x11, 0x08, 0x92, 0xc4, 0xa4, 0x92, 0x06, 0x24, 0x20, 0x4a, 0x18, 0x90, 0x83, 0x22, 0x89, 0x22, 0x48, 0x92, 0x49, 0x26, 0x24, 0x93, 0x12, 0x49, 0x12, 0x66, 0x49, 0x12, 0x49, 0x22, 0x20, 0x84, 0x92, 0x24, 0x42, 0x04, 0x92, 0x26, 0x12, 0x22, 0x10, 0x94, 0x61, 0x31, 0x30, 0x92, 0x48, 0xc4, 0x10, 0x04, 0x90, 0x92, 0x24, 0x24, 0x44, 0xa1, 0x11, 0x80, 0x84, 0x91, 0x18, 0x82, 0x52, 0x22, 0x49, 0x21, 0x11, 0x04, 0xc8, 0x02, 0x44, 0x09, +}; + +static const uint8_t pandared[] = { +0x87, 0x01, 0xAF, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x12, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x04, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xb0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xc6, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x71, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xc6, 0xa0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x33, 0xa0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x25, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x9d, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x46, 0xa0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x12, 0x90, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x8c, 0x50, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x31, 0x90, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x20, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x08, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x01, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x20, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x10, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x44, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x68, 0x00, + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x02, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x88, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x44, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x49, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x12, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +static const uint8_t newton[] = { + +// uint16_t x, y + 0x20,0x01, 0x5E,0x01, + + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x78, 0x6f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0c, 0x1f, 0x07, 0x3f, 0xff, 0xff, 0xff, 0xf3, 0xf3, 0x80, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xc3, 0x03, 0xf1, 0xcf, 0xff, 0xff, 0xff, 0xcc, 0x0e, 0x00, 0x3f, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xfe, 0x1e, 0x77, 0xff, 0xff, 0xff, 0x20, 0x18, 0x00, 0x03, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0x81, 0xc3, 0x9b, 0xff, 0xff, 0xfc, 0xd8, 0xe1, 0xe0, 0x70, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0xfc, 0x0c, 0x38, 0x4c, 0xff, 0xff, 0xf9, 0xc0, 0x0f, 0x00, 0x07, 0x33, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x43, 0x03, 0x8e, 0x22, 0x7f, 0xff, 0xf5, 0x18, 0xa0, 0x07, 0x80, 0xcf, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x40, 0x63, 0x11, 0x3f, 0xff, 0xba, 0x61, 0x80, 0x00, 0x40, 0x33, 0x03, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xfc, 0x03, 0x1f, 0x98, 0xc8, 0x9f, 0xff, 0x74, 0x8f, 0x00, 0x00, 0x00, 0xcd, 0x80, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xe3, 0x80, 0x20, 0x8f, 0xe4, 0x66, 0x4f, 0xfe, 0x6b, 0x38, 0x00, 0x00, 0x00, 0x76, 0xc0, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xc6, 0x1f, 0x80, 0x00, 0x1b, 0x33, 0x57, 0xfe, 0xd7, 0x60, 0x00, 0x00, 0x00, 0x19, 0xa0, 0x79, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x95, 0xc8, 0x40, 0x01, 0x10, 0x67, 0x8d, 0xfb, 0xfe, 0xfe, 0xc8, 0x00, 0x00, 0x00, 0x06, 0xd0, 0x0e, 0x4f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x39, 0x91, 0x83, 0x00, 0x08, 0x19, 0xe6, 0x7d, 0xff, 0xbe, 0x90, 0x00, 0x1e, 0x00, 0x1b, 0x60, 0x01, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xc1, 0xb2, 0x00, 0x00, 0x00, 0x86, 0xb9, 0x3e, 0xfd, 0xf5, 0x22, 0x00, 0x30, 0x00, 0x0f, 0xf8, 0x00, 0x0b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xdb, 0x24, 0x78, 0x00, 0x00, 0x63, 0x44, 0x9f, 0xff, 0xab, 0x46, 0x00, 0x40, 0x00, 0x01, 0xf8, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4, 0xe3, 0x69, 0xc0, 0x00, 0x00, 0x11, 0xa2, 0x4f, 0x77, 0xaa, 0x88, 0x00, 0x80, 0x00, 0x04, 0xfc, 0x00, 0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x83, 0x6b, 0x00, 0x00, 0x00, 0x08, 0x09, 0x2f, 0xf9, 0x1e, 0x98, 0x21, 0x07, 0x00, 0x03, 0x6c, 0x00, 0x21, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x01, 0x46, 0x00, 0x00, 0x00, 0x04, 0x10, 0xb7, 0xa9, 0x55, 0xb0, 0x42, 0x1c, 0x00, 0x00, 0xf5, 0x00, 0x0c, 0x6f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xf0, 0x7f, 0xe6, 0x41, 0x44, 0x00, 0x00, 0x00, 0x02, 0x18, 0x57, 0xe1, 0x55, 0x20, 0x42, 0x30, 0x00, 0x04, 0x6e, 0x80, 0x06, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xe5, 0x80, 0x40, 0x00, 0x00, 0x00, 0x01, 0x04, 0x8b, 0xd5, 0xbb, 0x60, 0x84, 0x60, 0x00, 0x03, 0x37, 0x80, 0x01, 0x37, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xf8, 0x00, 0x1f, 0xcb, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0xeb, 0xf5, 0xbb, 0x41, 0x24, 0x41, 0xc0, 0x00, 0xdb, 0x80, 0xf2, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x87, 0xfe, 0x0f, 0xda, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x55, 0xec, 0xfa, 0xd1, 0x24, 0xc3, 0x00, 0x0e, 0x6f, 0x81, 0x46, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfe, 0x78, 0x01, 0xe2, 0xd4, 0x80, 0x20, 0x00, 0x00, 0x00, 0x01, 0x60, 0x75, 0xee, 0xfa, 0xa2, 0x4c, 0x84, 0x00, 0x03, 0x97, 0xc4, 0xf9, 0x96, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfd, 0xc3, 0xe3, 0xf8, 0xdd, 0x00, 0x20, 0x00, 0x00, 0x00, 0x07, 0x80, 0x7f, 0xe6, 0xff, 0xaa, 0x01, 0x08, 0x10, 0x00, 0x43, 0xc2, 0x0e, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x30, 0xfc, 0x84, 0xda, 0x00, 0x03, 0xf8, 0x00, 0x10, 0x01, 0x80, 0xbf, 0xf7, 0xff, 0xaa, 0x80, 0x08, 0x80, 0x0c, 0x23, 0xc1, 0x07, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfc, 0xc0, 0x01, 0xe0, 0xda, 0x00, 0x38, 0x07, 0x00, 0x0f, 0x08, 0xc0, 0xbf, 0xf3, 0xff, 0x56, 0x24, 0x19, 0x80, 0x00, 0x0f, 0xc0, 0x01, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfb, 0x00, 0x0f, 0x78, 0xde, 0x00, 0x60, 0x01, 0x83, 0xe3, 0x04, 0xc8, 0x7f, 0xf0, 0xff, 0x54, 0x04, 0x32, 0x7e, 0x00, 0x27, 0xc0, 0x00, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfe, 0x3f, 0x18, 0x60, 0xdc, 0x01, 0x80, 0x00, 0x40, 0x39, 0x92, 0xc5, 0x4f, 0xf9, 0x6f, 0x55, 0x1c, 0x70, 0x00, 0x00, 0x01, 0x80, 0x78, 0x7f, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x7c, 0x60, 0x18, 0x0c, 0xd4, 0x03, 0x00, 0x00, 0x30, 0x8e, 0xda, 0x55, 0x4f, 0x3f, 0xff, 0x55, 0x5e, 0xe4, 0x00, 0x00, 0x0a, 0x81, 0x04, 0x3f, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0xf9, 0x80, 0x00, 0x00, 0xc4, 0x06, 0x00, 0x70, 0x5c, 0x27, 0xcb, 0x57, 0x4f, 0x70, 0x1f, 0x57, 0x4b, 0x88, 0x00, 0x00, 0x07, 0x40, 0x01, 0x3f, 0xdb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0xf3, 0x1e, 0x06, 0x08, 0x60, 0x04, 0x00, 0x00, 0xe6, 0x13, 0xeb, 0x6f, 0xc7, 0xc7, 0x0d, 0xd7, 0x6b, 0x80, 0x00, 0x00, 0x01, 0xb0, 0x00, 0x9e, 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf9, 0x74, 0x70, 0x00, 0x07, 0x10, 0x0c, 0x00, 0x03, 0xd8, 0x2b, 0xe9, 0x6f, 0xd5, 0x98, 0x0f, 0xd7, 0x2b, 0x90, 0x40, 0x00, 0x00, 0xf0, 0x00, 0x5f, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfa, 0xec, 0xc0, 0x00, 0x00, 0x00, 0x18, 0x00, 0x21, 0xec, 0x3f, 0xd9, 0x7f, 0xd7, 0x20, 0x7f, 0xd7, 0x3b, 0x01, 0x80, 0x00, 0x19, 0x70, 0x00, 0x0f, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf1, 0xb9, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x18, 0xbe, 0x17, 0x5b, 0x57, 0xd6, 0xd8, 0x01, 0xff, 0x23, 0xe3, 0x18, 0x00, 0x0c, 0xa8, 0x00, 0x0f, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf5, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x5e, 0x0b, 0x5b, 0xd7, 0x97, 0xb3, 0xf0, 0xeb, 0xa2, 0xe2, 0x33, 0x81, 0xc6, 0x58, 0x00, 0x07, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe5, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x21, 0xbb, 0x0b, 0x5b, 0xf7, 0xaf, 0x6e, 0x00, 0xfb, 0x92, 0xc4, 0x60, 0x00, 0x32, 0x78, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe2, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xdb, 0x0d, 0x1b, 0xee, 0xaf, 0xd8, 0xe0, 0x1f, 0xd2, 0xc4, 0xc8, 0x00, 0x02, 0x28, 0x01, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xea, 0xfc, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x09, 0x59, 0x0d, 0x1b, 0xfd, 0xef, 0x93, 0x80, 0x0f, 0xd3, 0x50, 0xd0, 0x00, 0x01, 0x6c, 0x01, 0x83, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xea, 0xfc, 0x00, 0x00, 0x60, 0x04, 0x00, 0x00, 0xa5, 0x79, 0x0f, 0x77, 0xfd, 0x5f, 0xa7, 0x00, 0x07, 0xf1, 0x50, 0x80, 0x00, 0x04, 0xec, 0x00, 0x81, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xee, 0xbc, 0x00, 0x00, 0x42, 0x08, 0x00, 0x04, 0x94, 0x3f, 0x0f, 0x7f, 0xeb, 0xff, 0x0c, 0x07, 0x01, 0xf9, 0xf8, 0x01, 0xc0, 0x02, 0x3c, 0x00, 0x47, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xec, 0xbc, 0x01, 0x00, 0x86, 0x30, 0x00, 0x02, 0x5a, 0xbf, 0x2e, 0xff, 0xf7, 0xff, 0x5d, 0x18, 0x00, 0x18, 0xa2, 0x03, 0x00, 0x02, 0x30, 0x00, 0x42, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xec, 0xb8, 0x12, 0x60, 0x84, 0x20, 0x00, 0x03, 0x6a, 0x3f, 0x76, 0xff, 0xcf, 0xff, 0xdf, 0x60, 0x00, 0x0c, 0xc0, 0x84, 0x00, 0x03, 0x30, 0x02, 0x62, 0x6f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xee, 0xa8, 0x26, 0x41, 0x04, 0x64, 0x00, 0x31, 0x6e, 0xff, 0x8d, 0xef, 0x9f, 0xdf, 0xda, 0x73, 0x0e, 0x07, 0xe2, 0x00, 0x30, 0x03, 0xb8, 0x02, 0x60, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe6, 0xa8, 0x64, 0x81, 0x0d, 0x40, 0x00, 0x11, 0x2e, 0xfb, 0x33, 0xdf, 0xff, 0xff, 0xde, 0xb4, 0x78, 0x00, 0xfb, 0x00, 0xc0, 0x01, 0xf8, 0x01, 0x20, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe2, 0xa8, 0x64, 0x81, 0x29, 0x00, 0x00, 0xd9, 0xae, 0xff, 0xc7, 0xff, 0xff, 0x3f, 0xee, 0x61, 0x80, 0x00, 0xbf, 0x11, 0x80, 0x81, 0x70, 0x01, 0x28, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe2, 0xa8, 0x4d, 0x81, 0x29, 0x00, 0xc3, 0xc9, 0xb7, 0xff, 0xdf, 0xff, 0xf3, 0xff, 0xee, 0x5e, 0x01, 0xc0, 0xdf, 0x30, 0x00, 0x32, 0xf0, 0x01, 0x23, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf0, 0x8c, 0x49, 0x01, 0x29, 0x03, 0x02, 0x85, 0x37, 0xfe, 0x7f, 0xff, 0xff, 0x8f, 0xf7, 0xfc, 0x60, 0x70, 0x6e, 0x10, 0x60, 0x04, 0xf0, 0x13, 0x62, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfc, 0x4d, 0x00, 0x20, 0x06, 0x02, 0xe5, 0xff, 0xfc, 0x39, 0xe0, 0x00, 0xf7, 0xff, 0xb3, 0x83, 0x83, 0x27, 0x3c, 0x00, 0xf1, 0x50, 0x13, 0x57, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfc, 0x4d, 0x00, 0x1c, 0x08, 0xfc, 0xf3, 0xff, 0xfe, 0x47, 0x0f, 0xff, 0x1f, 0xff, 0x83, 0xfe, 0x00, 0xd6, 0xa6, 0x00, 0x06, 0xb0, 0x36, 0x57, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0x5e, 0x6d, 0x80, 0x0c, 0x19, 0xc6, 0xdb, 0x7f, 0xfd, 0x98, 0xc0, 0x01, 0xff, 0xff, 0x07, 0x80, 0x00, 0x3b, 0x36, 0x00, 0x08, 0x30, 0x24, 0xe4, 0x1e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe1, 0x7e, 0x6e, 0x80, 0x04, 0x13, 0x02, 0xcf, 0x7f, 0x7e, 0x67, 0x00, 0x80, 0x07, 0xff, 0xc0, 0x01, 0xfc, 0x1e, 0x14, 0x00, 0x82, 0x60, 0x2c, 0xa0, 0x38, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc6, 0xf6, 0x56, 0x80, 0x00, 0x16, 0x40, 0x47, 0xff, 0xfd, 0x9c, 0xf0, 0xff, 0xc1, 0xff, 0xfc, 0x1e, 0x01, 0x8f, 0x10, 0x00, 0x04, 0xc0, 0x8b, 0x61, 0xb0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x6f, 0x52, 0xc1, 0x01, 0x04, 0x80, 0x4f, 0xff, 0xfe, 0x67, 0x0f, 0xdf, 0xfc, 0xff, 0x80, 0x00, 0x00, 0x63, 0x01, 0xf8, 0x00, 0x01, 0x93, 0x74, 0xf5, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x3f, 0xeb, 0x82, 0x42, 0x44, 0x00, 0x00, 0x4d, 0xff, 0xfc, 0x9f, 0x80, 0x00, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x19, 0x6f, 0x36, 0x0c, 0x03, 0x47, 0xf4, 0x75, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xeb, 0xc0, 0x24, 0xc0, 0x00, 0x00, 0x4d, 0xfb, 0xfb, 0x3c, 0x0f, 0xfe, 0x03, 0xff, 0xff, 0xfc, 0x9f, 0x07, 0xe0, 0x90, 0x31, 0x0c, 0xf9, 0xb0, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfa, 0xc0, 0x19, 0x80, 0x00, 0x00, 0xdb, 0xeb, 0xfe, 0xf1, 0xe7, 0xe7, 0xe1, 0x8f, 0xff, 0xfc, 0xf0, 0xe1, 0xfe, 0xc0, 0x07, 0x7f, 0x00, 0x00, 0x36, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x1f, 0xea, 0xc4, 0x69, 0x60, 0x01, 0x9f, 0xfb, 0xeb, 0xfd, 0xc7, 0x98, 0x00, 0x04, 0xe3, 0xf0, 0x7e, 0x00, 0x00, 0x1e, 0x01, 0xff, 0xfe, 0x18, 0x8c, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0xf2, 0xdf, 0xf2, 0x40, 0x00, 0x8f, 0xe7, 0xdf, 0xfb, 0x9c, 0xc3, 0xff, 0xf0, 0x7c, 0xff, 0xe0, 0xcf, 0xff, 0x37, 0xde, 0x0e, 0x1f, 0xc0, 0x8e, 0x34, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x9f, 0xfb, 0x77, 0xfa, 0x40, 0x00, 0xc4, 0x1f, 0xdf, 0xf7, 0x77, 0x1c, 0x3c, 0x3e, 0x3f, 0xff, 0xbd, 0xf0, 0x03, 0x8f, 0xf8, 0x00, 0x03, 0x01, 0x04, 0xb6, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x7f, 0xfd, 0x75, 0xfe, 0x00, 0x04, 0x39, 0xf6, 0xbf, 0xfe, 0xc8, 0x67, 0xff, 0xcf, 0x8f, 0xff, 0xe7, 0x83, 0xe0, 0xef, 0xe3, 0xff, 0xf1, 0x86, 0x04, 0xfe, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x80, 0xe6, 0x35, 0xfe, 0x40, 0x02, 0x09, 0xcd, 0xbf, 0xfd, 0xb1, 0x9e, 0x00, 0x07, 0xf1, 0xff, 0xfe, 0x00, 0x1c, 0x7f, 0xce, 0x1f, 0x38, 0x78, 0x9c, 0x7c, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x1f, 0xfb, 0x35, 0x7a, 0x41, 0x00, 0x6c, 0x03, 0x5f, 0xfb, 0x66, 0x70, 0x00, 0x01, 0xfe, 0x03, 0xff, 0x00, 0x03, 0xff, 0xb0, 0x07, 0xbc, 0x01, 0xbb, 0x7d, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0x7f, 0x9d, 0x7a, 0x41, 0x20, 0x38, 0x3c, 0xbf, 0xf6, 0x8d, 0x81, 0xef, 0xf8, 0x7f, 0xf1, 0xfc, 0x27, 0xe1, 0xff, 0x60, 0xf2, 0xd6, 0x06, 0x12, 0x39, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x80, 0x0f, 0x5e, 0xab, 0x49, 0x98, 0x4b, 0xf3, 0x3f, 0xfd, 0x3b, 0x0f, 0x20, 0x0e, 0x1f, 0xff, 0xff, 0x80, 0x38, 0xfa, 0x61, 0xf9, 0x5a, 0x10, 0x3c, 0x3a, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x1f, 0x03, 0xad, 0x6c, 0xc1, 0xbb, 0x20, 0x7f, 0xfb, 0x64, 0x3c, 0x00, 0x07, 0xcf, 0xc1, 0xfe, 0x0f, 0xcf, 0xfe, 0xc1, 0x18, 0x4a, 0x03, 0x79, 0x54, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0xf0, 0x01, 0xcd, 0xa6, 0x63, 0x03, 0x81, 0xff, 0xfe, 0xc8, 0xf0, 0x3f, 0xc3, 0xef, 0xff, 0xfc, 0x00, 0x3f, 0xff, 0xc3, 0xb4, 0x4b, 0x9c, 0xd3, 0x5c, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x3f, 0xb0, 0x02, 0x76, 0xd1, 0x3c, 0x0b, 0x0f, 0xff, 0xff, 0x99, 0xc3, 0xe0, 0x1f, 0xff, 0xff, 0xc3, 0xc3, 0x8e, 0x7f, 0x83, 0xe6, 0x4b, 0x83, 0x86, 0x39, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x00, 0x10, 0x0b, 0x61, 0xf5, 0x19, 0x83, 0xdf, 0xff, 0xf3, 0x1c, 0x00, 0xff, 0xfe, 0xff, 0xfc, 0x00, 0x27, 0xbf, 0x83, 0x9c, 0xdb, 0x9c, 0xfc, 0x72, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc8, 0x3c, 0xe3, 0x8d, 0xb8, 0x0e, 0x63, 0xdf, 0xdf, 0xff, 0xe6, 0x70, 0x60, 0x00, 0xff, 0xc0, 0x07, 0xff, 0x19, 0xff, 0x83, 0x91, 0x91, 0x9f, 0x30, 0xe6, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x33, 0xfb, 0xe0, 0x26, 0xe4, 0x0c, 0x0f, 0xf1, 0xff, 0xff, 0xc8, 0xcf, 0xff, 0xfc, 0x07, 0xff, 0xfc, 0x00, 0xde, 0x7f, 0xd3, 0xcf, 0xe1, 0x9f, 0xe4, 0x81, 0x6f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x4e, 0x06, 0xc0, 0x03, 0x90, 0x00, 0x14, 0x7f, 0xff, 0xff, 0x93, 0xbf, 0xf3, 0xff, 0xe1, 0xff, 0xc0, 0x00, 0x3f, 0x1f, 0xd1, 0xa3, 0xc3, 0x87, 0x88, 0x02, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x98, 0x05, 0x80, 0x00, 0xe0, 0x00, 0x8f, 0xe7, 0xff, 0xff, 0xa7, 0xfc, 0xff, 0xff, 0xff, 0x80, 0x0f, 0x87, 0x0c, 0xcf, 0xd0, 0xfe, 0x1e, 0xde, 0x30, 0x04, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x23, 0xc6, 0x00, 0x00, 0x38, 0x00, 0x0c, 0x3c, 0xff, 0xff, 0xef, 0xe7, 0xff, 0xff, 0xf9, 0xfe, 0x3e, 0x01, 0xff, 0xff, 0xf8, 0x7f, 0xf8, 0xdf, 0x80, 0x19, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x64, 0x3c, 0x00, 0x00, 0x00, 0xc7, 0x0f, 0x8e, 0x7f, 0xff, 0xdf, 0x9f, 0xff, 0xcf, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xff, 0xfe, 0x0f, 0xe8, 0xdf, 0x00, 0x03, 0x7f, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc8, 0xf0, 0x00, 0x00, 0x01, 0xc0, 0x7f, 0xc7, 0xff, 0xff, 0xfe, 0x7b, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xc0, 0x48, 0xf4, 0x70, 0x04, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x93, 0xc0, 0x00, 0x00, 0x03, 0x00, 0xe0, 0x07, 0xff, 0xff, 0xfd, 0xc7, 0x8f, 0xff, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0x7f, 0x7c, 0xd8, 0xf4, 0x78, 0x03, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x97, 0x98, 0x00, 0x00, 0x0c, 0x01, 0x8f, 0x83, 0xdf, 0xff, 0xbc, 0x39, 0xff, 0x00, 0x0e, 0x0f, 0xf8, 0x00, 0x1f, 0xff, 0x7f, 0x63, 0x31, 0x74, 0x27, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa7, 0x40, 0x00, 0x00, 0x18, 0x25, 0x38, 0x01, 0xef, 0xff, 0xf8, 0x0f, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x01, 0x8a, 0x7f, 0xff, 0xf8, 0xe7, 0xc2, 0x13, 0xf3, 0xfb, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x2e, 0x80, 0x00, 0x00, 0x30, 0x8d, 0xc0, 0x00, 0x77, 0xfd, 0xf8, 0x7f, 0x00, 0x3f, 0xc0, 0x00, 0x09, 0x82, 0x00, 0x1f, 0xff, 0xff, 0x0c, 0xd2, 0x13, 0xfb, 0xdb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0c, 0x80, 0x00, 0x00, 0x20, 0x03, 0x0c, 0x01, 0x2f, 0xfb, 0xd1, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x03, 0xdf, 0xfc, 0x18, 0xde, 0x4b, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x5d, 0x20, 0x00, 0x10, 0x64, 0x26, 0x7e, 0x00, 0xbf, 0x7f, 0xa7, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0xf7, 0x83, 0xb6, 0x1b, 0x50, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x5d, 0x62, 0x00, 0x10, 0x4c, 0xcd, 0x80, 0x00, 0x57, 0x7f, 0x43, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xfe, 0x34, 0x9b, 0xf0, 0x19, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x5b, 0x52, 0x01, 0x10, 0x49, 0x4a, 0x00, 0x03, 0x1d, 0xff, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1f, 0xcf, 0xf8, 0x5c, 0x1b, 0xfe, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x7b, 0x54, 0x41, 0x10, 0xd3, 0x9c, 0xc0, 0x1f, 0xcd, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0xf2, 0x39, 0x3e, 0x11, 0xae, 0x8e, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x73, 0xd4, 0x41, 0x10, 0xd6, 0x09, 0x00, 0x7f, 0xed, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x27, 0xfe, 0x00, 0x66, 0x31, 0xaf, 0x1b, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x73, 0xc4, 0x01, 0x10, 0xa4, 0x88, 0x00, 0xc0, 0xf1, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0xff, 0xff, 0x86, 0x05, 0xaf, 0x8f, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x33, 0xc0, 0x00, 0x98, 0xad, 0x51, 0xc0, 0x00, 0x73, 0xca, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xdf, 0xfc, 0x3c, 0x09, 0xee, 0xcf, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x73, 0xd0, 0x08, 0x88, 0xa8, 0x96, 0x00, 0x00, 0x3a, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3f, 0xff, 0xf8, 0x23, 0x7f, 0xe7, 0xfe, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf3, 0xd4, 0x04, 0x4c, 0xd9, 0x3c, 0x00, 0xff, 0xbd, 0xe4, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x13, 0xff, 0x78, 0x01, 0x47, 0x79, 0xfb, 0x56, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfb, 0x54, 0x06, 0x44, 0xd9, 0x78, 0x00, 0x01, 0xb9, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xe4, 0x24, 0x32, 0xef, 0x7f, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0xf4, 0x02, 0x22, 0x58, 0xb0, 0x00, 0xfc, 0x63, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0xfa, 0x80, 0x04, 0xcf, 0x7f, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf7, 0xae, 0x01, 0x88, 0x19, 0xe7, 0x07, 0x83, 0x47, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0xbf, 0xc0, 0x19, 0xdf, 0x7f, 0xff, 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf9, 0xce, 0x00, 0xc0, 0x6f, 0xe4, 0x0e, 0x19, 0xaf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x62, 0x7f, 0xe7, 0xe1, 0x9f, 0x5f, 0xff, 0xfb, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfc, 0xce, 0x08, 0x00, 0x6e, 0x68, 0x0c, 0x0c, 0xb3, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x9f, 0xff, 0xe0, 0x7a, 0x7f, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfb, 0x63, 0x40, 0x01, 0x2e, 0xb8, 0x10, 0x00, 0x5f, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe4, 0xe0, 0xd6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfc, 0x18, 0x00, 0xfc, 0x3c, 0x50, 0x20, 0x02, 0x6d, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2f, 0xe7, 0xf0, 0x24, 0xbf, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x8f, 0x84, 0x3e, 0x00, 0x1d, 0xb4, 0x01, 0x03, 0x2c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0c, 0x9b, 0xff, 0xd8, 0x4d, 0xff, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x06, 0x01, 0x84, 0xe1, 0x8d, 0xa8, 0x06, 0x01, 0x2e, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0xcf, 0xf8, 0x09, 0x7f, 0xfe, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x70, 0xff, 0xd8, 0x06, 0x05, 0x08, 0x18, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x29, 0xf0, 0x78, 0x12, 0x77, 0xbf, 0xf5, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x00, 0x74, 0x88, 0x05, 0x12, 0x00, 0x3c, 0x27, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0c, 0x11, 0xff, 0x9c, 0x20, 0x3f, 0xbf, 0xf3, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x80, 0x00, 0x28, 0x90, 0xc4, 0x50, 0x00, 0x06, 0x27, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x22, 0xff, 0xff, 0x03, 0x7f, 0xff, 0xf3, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x01, 0x92, 0x01, 0x04, 0x50, 0x01, 0xfe, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x84, 0xff, 0xff, 0x1e, 0xff, 0xfb, 0xe5, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x04, 0x03, 0x14, 0x32, 0x00, 0x42, 0x06, 0x0f, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xc9, 0xbf, 0xfc, 0x83, 0xff, 0xe7, 0xcb, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x18, 0x65, 0x14, 0x66, 0x02, 0x4a, 0x0c, 0x7f, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x03, 0x22, 0x7f, 0xfc, 0x7e, 0xcf, 0xef, 0xf7, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x30, 0xc3, 0x24, 0x44, 0x09, 0x24, 0x1c, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x14, 0xff, 0xff, 0x01, 0xbf, 0xff, 0xce, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x69, 0x02, 0x24, 0x44, 0x0d, 0xb3, 0x18, 0x03, 0x1e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x28, 0x49, 0xbf, 0xfe, 0xff, 0x3b, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd2, 0x50, 0x20, 0x44, 0x46, 0xcc, 0x10, 0x00, 0xce, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x31, 0x7f, 0xff, 0xf8, 0x3f, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xb6, 0x90, 0x20, 0x44, 0x43, 0x60, 0x30, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x14, 0xff, 0xff, 0x01, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xbc, 0xb4, 0x20, 0x44, 0x40, 0xbf, 0xe3, 0x87, 0xcd, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xc9, 0xff, 0xfe, 0x02, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x2d, 0x24, 0x00, 0x00, 0x60, 0x03, 0x1c, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0c, 0x33, 0x7f, 0xfd, 0x04, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x2d, 0x24, 0x20, 0x02, 0x30, 0x07, 0xa0, 0x00, 0x1e, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0x16, 0xff, 0xff, 0xf9, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x2d, 0x04, 0x20, 0x21, 0x18, 0x0b, 0x42, 0x0f, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xcd, 0x9f, 0xff, 0xc2, 0x67, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x2d, 0x04, 0x10, 0x11, 0x8e, 0x73, 0x9c, 0x18, 0xe6, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0c, 0x4b, 0x7f, 0xff, 0xcc, 0xd7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xad, 0x04, 0x00, 0x18, 0xc0, 0x0b, 0x30, 0x1f, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0x36, 0xff, 0xff, 0xf1, 0xe5, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xb5, 0x84, 0x00, 0x0c, 0x70, 0x13, 0x67, 0x80, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x09, 0xff, 0xff, 0xc2, 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x94, 0x80, 0x00, 0x02, 0x1f, 0x00, 0x98, 0x00, 0xcf, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xc9, 0xff, 0xff, 0xff, 0xd3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd6, 0xa2, 0x00, 0x01, 0x80, 0x00, 0xb0, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x33, 0xff, 0xff, 0xf6, 0x37, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd2, 0xc0, 0x00, 0x00, 0x30, 0x43, 0x4c, 0x00, 0xc6, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x03, 0xff, 0xff, 0xf8, 0xcf, 0xff, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xab, 0xc0, 0x00, 0x00, 0x0f, 0x82, 0x51, 0x80, 0x7f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0xff, 0xff, 0xff, 0x1f, 0xff, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x25, 0xe0, 0x00, 0x00, 0x00, 0x06, 0xa7, 0x00, 0x0f, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x33, 0xff, 0xff, 0xdc, 0x7f, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd4, 0x70, 0x00, 0x00, 0x00, 0x0f, 0xef, 0x00, 0x7b, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x00, 0x12, 0x7f, 0xff, 0xdf, 0xe7, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x3a, 0x0c, 0x00, 0x00, 0x00, 0x0b, 0xde, 0x00, 0x7f, 0xcc, 0x00, 0x00, 0x00, 0x71, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6c, 0xcd, 0xff, 0xff, 0xda, 0xb3, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd9, 0xfe, 0x00, 0x00, 0x00, 0x1b, 0xfc, 0x78, 0xc7, 0x40, 0x00, 0x00, 0x0c, 0x1c, 0x7c, 0x00, 0x81, 0x40, 0x20, 0x04, 0x03, 0xdf, 0xf2, 0xff, 0xff, 0xf9, 0x55, 0xfb, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x3c, 0x7f, 0x00, 0x00, 0x7f, 0x3f, 0xe9, 0xc0, 0x1b, 0x10, 0x00, 0x00, 0x10, 0xff, 0xc7, 0x08, 0x0c, 0x40, 0x08, 0x41, 0x4b, 0xff, 0x35, 0xff, 0xff, 0xb9, 0xaa, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe3, 0x05, 0x80, 0x00, 0x18, 0x5b, 0x5b, 0x1f, 0xef, 0x80, 0x00, 0x0f, 0xf8, 0x1c, 0xfb, 0xf8, 0xc7, 0x00, 0x80, 0x14, 0x4e, 0x7f, 0xfd, 0xfe, 0xff, 0xfc, 0xa6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0xca, 0x60, 0x00, 0x00, 0xbb, 0x5a, 0x6f, 0xf7, 0x80, 0x00, 0x1f, 0x01, 0xfb, 0xf9, 0xf0, 0x18, 0x02, 0x23, 0x55, 0x4f, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xd7, 0xff, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x8c, 0x3d, 0xee, 0x01, 0x02, 0x7b, 0x5c, 0xbf, 0xff, 0xc0, 0x00, 0x78, 0x3f, 0x3f, 0xff, 0x7f, 0x20, 0x20, 0x87, 0xc5, 0xff, 0xf7, 0xff, 0xff, 0xff, 0x3c, 0x57, 0xff, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x64, 0x0e, 0x08, 0x00, 0xf8, 0xdb, 0x59, 0xf1, 0xef, 0xd0, 0x00, 0xf0, 0xf8, 0xff, 0xff, 0xff, 0xe7, 0x48, 0x07, 0xd4, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xc8, 0x57, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x32, 0x9f, 0x00, 0x00, 0x01, 0x3b, 0x4b, 0xff, 0xf7, 0xd0, 0x01, 0xf7, 0xcf, 0xff, 0xff, 0xff, 0xfe, 0xc0, 0x13, 0xd7, 0xff, 0xff, 0xff, 0xff, 0xff, 0x98, 0x87, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd8, 0x5b, 0xbc, 0x00, 0x06, 0x7f, 0x6f, 0xcf, 0xfb, 0xf0, 0x03, 0xcf, 0x3f, 0xff, 0xff, 0xff, 0xfd, 0xb0, 0x87, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x30, 0x27, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc8, 0x48, 0x9f, 0x00, 0x7c, 0xff, 0xb7, 0x3f, 0xfb, 0xe0, 0x05, 0x9f, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xe0, 0x23, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xf0, 0x0e, 0xfd, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x28, 0x48, 0xf0, 0x00, 0x01, 0xff, 0x9f, 0xff, 0xfb, 0xe0, 0x0d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0c, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x09, 0x48, 0x07, 0x30, 0x07, 0xdd, 0xdf, 0xe6, 0x7b, 0xc0, 0x3f, 0xe9, 0xff, 0x83, 0xff, 0xff, 0xfd, 0x80, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcd, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x96, 0x44, 0x70, 0xf8, 0x1f, 0xf9, 0xff, 0xff, 0x3f, 0xc0, 0x7f, 0x37, 0xc0, 0x3f, 0xff, 0xff, 0xff, 0xc0, 0x03, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xdd, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x86, 0x44, 0x1f, 0x30, 0x0f, 0xe3, 0xff, 0xff, 0xbf, 0xc0, 0x5e, 0x7f, 0x0f, 0x7f, 0xfe, 0xff, 0xff, 0x90, 0x03, 0xff, 0xff, 0xdb, 0x43, 0xff, 0xff, 0xff, 0xbb, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x0a, 0x01, 0xd8, 0x00, 0x07, 0xff, 0xff, 0xfb, 0x80, 0xfa, 0xf6, 0x01, 0xff, 0xff, 0xff, 0xff, 0x00, 0x03, 0xff, 0xff, 0xff, 0xfb, 0x7d, 0xff, 0xff, 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x0b, 0x80, 0x6c, 0x00, 0x3e, 0xfe, 0xbf, 0xf6, 0x81, 0xd5, 0xec, 0x1f, 0xe3, 0xff, 0xff, 0xff, 0x40, 0x12, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xe9, 0x9b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x09, 0xe1, 0x12, 0x01, 0xe5, 0xfa, 0xff, 0xf9, 0x81, 0x83, 0xd8, 0xfe, 0x00, 0xff, 0xff, 0xff, 0x80, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xf6, 0x4b, 0x87, 0x19, 0xde, 0xff, 0xfb, 0x02, 0x03, 0x83, 0xe0, 0x00, 0x9f, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x07, 0xfb, 0xaf, 0xe0, 0x71, 0xde, 0xfe, 0xfe, 0x00, 0x02, 0x07, 0x00, 0x00, 0x7f, 0xff, 0xff, 0x80, 0x03, 0xff, 0xff, 0x81, 0x7f, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x0c, 0x88, 0x74, 0x7b, 0xe1, 0x9f, 0xff, 0xfe, 0x04, 0x00, 0x06, 0x80, 0x1f, 0xff, 0xff, 0xfe, 0x00, 0x07, 0xff, 0xfb, 0x80, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x1c, 0x00, 0x78, 0x1e, 0x07, 0x83, 0xbf, 0xbf, 0xf8, 0x04, 0x00, 0x07, 0x00, 0xff, 0xff, 0xff, 0xff, 0x80, 0x03, 0xff, 0xef, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf0, 0x07, 0xcd, 0x3f, 0x18, 0x1f, 0xff, 0x9b, 0x80, 0x00, 0x20, 0x1e, 0x07, 0xff, 0xff, 0xff, 0xff, 0x00, 0x09, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x1e, 0x01, 0xbf, 0x0f, 0xff, 0xff, 0xbf, 0xc0, 0x00, 0x00, 0x38, 0x1f, 0xff, 0xff, 0xff, 0xf2, 0xa0, 0x01, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x6f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x01, 0xff, 0x0e, 0x16, 0x1f, 0xbf, 0xfe, 0x00, 0x00, 0x40, 0xd2, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x0e, 0x07, 0xef, 0x0f, 0xfe, 0x6f, 0xff, 0xc0, 0x00, 0x83, 0xcd, 0xff, 0x01, 0xff, 0xff, 0xfc, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0e, 0xf8, 0x0f, 0xff, 0x2f, 0x81, 0xcf, 0xfe, 0x80, 0x01, 0x1f, 0x9b, 0xf8, 0x1f, 0xff, 0xfb, 0xf0, 0x00, 0x02, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xff, 0xfb, 0xff, 0xff, 0x4f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x10, 0x23, 0x88, 0x07, 0x17, 0xfe, 0x37, 0xbe, 0xe0, 0x00, 0xdf, 0x7f, 0xf0, 0x3f, 0xff, 0xfc, 0x00, 0x00, 0x01, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x26, 0xc0, 0x01, 0xf6, 0x9f, 0x00, 0x47, 0xbf, 0x90, 0x00, 0x09, 0xff, 0xc0, 0x3f, 0xff, 0xfe, 0x90, 0x00, 0x04, 0xff, 0xc1, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xf7, 0xfe, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x58, 0x80, 0x1f, 0xfe, 0xdc, 0x3f, 0x1f, 0x77, 0x20, 0x00, 0x07, 0xff, 0x00, 0x1f, 0xff, 0xff, 0x60, 0x00, 0x02, 0x7f, 0xd1, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xef, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe3, 0x40, 0x3f, 0x07, 0xfe, 0x00, 0x37, 0xf6, 0x50, 0x00, 0x05, 0xe1, 0x80, 0x1f, 0xfe, 0xf9, 0x00, 0x00, 0x01, 0xff, 0xe0, 0xff, 0xf5, 0xff, 0xff, 0xff, 0xef, 0xff, 0x97, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xcf, 0x82, 0x7f, 0xf3, 0xfe, 0xe3, 0xf6, 0xe7, 0x90, 0x00, 0x00, 0x04, 0x00, 0x0f, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x7f, 0xe0, 0x7f, 0xd9, 0xff, 0xff, 0xff, 0xfb, 0xff, 0x97, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x8c, 0xf0, 0x4d, 0xff, 0x1f, 0x67, 0xcf, 0xf0, 0x00, 0x00, 0x01, 0x08, 0x07, 0xf9, 0x1c, 0x00, 0x00, 0x02, 0x7f, 0x9e, 0x1f, 0xbf, 0xef, 0xff, 0xff, 0xfb, 0xff, 0xd7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa3, 0x10, 0xc7, 0xe4, 0xff, 0x80, 0xcf, 0xde, 0x00, 0x00, 0x00, 0x00, 0x44, 0x01, 0xfe, 0x78, 0x00, 0x00, 0x00, 0xff, 0xf0, 0x1f, 0xff, 0xe7, 0xff, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa6, 0x21, 0x9f, 0xff, 0xff, 0xff, 0xbf, 0xcf, 0x78, 0x00, 0x00, 0x01, 0x00, 0x7c, 0xf0, 0xfc, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x3f, 0xf4, 0xff, 0xff, 0xed, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x8c, 0x41, 0x20, 0xff, 0xff, 0xff, 0xfc, 0x1f, 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x03, 0xf0, 0x00, 0x00, 0x03, 0x3f, 0x8f, 0xdf, 0xff, 0xf7, 0xff, 0xf9, 0xdd, 0xf7, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x8c, 0xc3, 0x41, 0xfd, 0xff, 0x03, 0xfe, 0xff, 0xe7, 0x00, 0x00, 0x00, 0x11, 0x80, 0x0f, 0xc8, 0x00, 0x00, 0x00, 0x3f, 0x1d, 0xff, 0xff, 0xeb, 0xff, 0xff, 0xbb, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x90, 0x83, 0x0e, 0xff, 0x7f, 0xff, 0xff, 0xf3, 0xff, 0x80, 0x00, 0x00, 0x02, 0x7f, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x3f, 0xe1, 0x61, 0xff, 0xe9, 0xff, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa9, 0x8f, 0x99, 0xf7, 0xff, 0xff, 0xef, 0x9f, 0xe3, 0x00, 0x00, 0x00, 0x04, 0x67, 0xfe, 0xc0, 0x00, 0x00, 0x00, 0x3f, 0xd2, 0x4b, 0xbf, 0xd5, 0xff, 0xff, 0xef, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa9, 0x8b, 0x23, 0xfb, 0xff, 0xfe, 0x01, 0x01, 0xff, 0x80, 0x00, 0x30, 0x00, 0x1f, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xd0, 0x9f, 0xcf, 0xce, 0xff, 0xff, 0x9f, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa9, 0x13, 0x27, 0xff, 0xdf, 0xf8, 0xf8, 0x1f, 0xf1, 0x80, 0x00, 0x00, 0x00, 0x06, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x5f, 0xc0, 0xc0, 0x7f, 0xea, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x89, 0x13, 0x47, 0x27, 0xff, 0xf0, 0x00, 0x02, 0xff, 0x40, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xa0, 0x39, 0xc6, 0x80, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc9, 0x17, 0x46, 0xfb, 0xff, 0xf8, 0xe0, 0x00, 0x7e, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xf0, 0x24, 0x4b, 0x55, 0x7f, 0xf8, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc9, 0x17, 0x4f, 0xff, 0xff, 0xf3, 0x80, 0x03, 0xbf, 0x20, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe6, 0x00, 0x2d, 0x03, 0xff, 0xef, 0xbf, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd9, 0x95, 0x4f, 0x8f, 0xff, 0xf6, 0x00, 0x00, 0xcf, 0x40, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe8, 0x12, 0x94, 0x2a, 0xff, 0xfe, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x79, 0xd5, 0xce, 0x03, 0xfb, 0xe9, 0x80, 0x00, 0x3f, 0xc0, 0x00, 0x00, 0x11, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xf1, 0x01, 0x52, 0x8c, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0xdf, 0xce, 0xf1, 0xfa, 0xf3, 0x00, 0x03, 0x9f, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xd0, 0x01, 0x00, 0x45, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfc, 0xce, 0x67, 0xfd, 0x7b, 0xe6, 0x60, 0x00, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfa, 0x50, 0x15, 0x77, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x06, 0xe8, 0x67, 0x3e, 0xbd, 0xec, 0xc0, 0x1c, 0x3f, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x40, 0x00, 0xab, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x03, 0x6d, 0x73, 0x1c, 0xbd, 0xe9, 0x3e, 0x7c, 0xdd, 0xe0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xf4, 0x25, 0x4a, 0xab, 0xff, 0xfa, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0xbd, 0x9f, 0x09, 0x7f, 0xda, 0x7c, 0x07, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x03, 0x17, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x4e, 0xcf, 0x9e, 0x7e, 0xd5, 0xe1, 0x80, 0xdf, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfa, 0x52, 0x85, 0x57, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x03, 0x31, 0xdc, 0xfd, 0xff, 0x86, 0x00, 0x7f, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfc, 0x40, 0x00, 0x0f, 0xff, 0xfc, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x01, 0x8e, 0xf1, 0xfb, 0xbf, 0x80, 0x07, 0xff, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf4, 0x20, 0x02, 0xaf, 0xff, 0xf9, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xc0, 0x7f, 0xf7, 0xbf, 0x03, 0xee, 0xfb, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xf8, 0xa5, 0x2a, 0x9f, 0xff, 0xf0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x78, 0x7f, 0xef, 0xbe, 0x0f, 0xc7, 0xdb, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xe8, 0x00, 0x00, 0x57, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x3c, 0x1f, 0xf7, 0xfe, 0x9f, 0xfe, 0x6e, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe1, 0x42, 0x95, 0x43, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x0f, 0xff, 0xef, 0x7f, 0x3f, 0x87, 0xb6, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x13, 0xff, 0xdf, 0x7f, 0x6e, 0x7d, 0xf7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x13, 0xfa, 0xb5, 0x0a, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x1c, 0xdf, 0x63, 0x7e, 0xed, 0xfe, 0xf3, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x09, 0xfa, 0x11, 0x08, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x80, 0x00, 0x07, 0xfc, 0x83, 0xfe, 0xdb, 0xbc, 0x5b, 0x90, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x05, 0xfd, 0x40, 0x05, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x00, 0x30, 0xfc, 0x03, 0xfe, 0xde, 0x7e, 0x5b, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x70, 0x00, 0x00, 0x03, 0xf7, 0x8a, 0x85, 0x57, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x1f, 0x8c, 0x03, 0xff, 0x9f, 0xff, 0xea, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xc0, 0x00, 0x00, 0x09, 0xfa, 0x84, 0x40, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x02, 0x00, 0x3c, 0x03, 0xff, 0x9e, 0xff, 0xe3, 0xd0, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x04, 0xff, 0x15, 0x6b, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0x01, 0x09, 0xfc, 0x07, 0xff, 0x8e, 0xff, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x03, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x01, 0x9f, 0xfc, 0x07, 0xff, 0xcf, 0xfe, 0xf7, 0xa0, 0x00, 0x80, 0x00, 0x00, 0x02, 0x07, 0x00, 0x00, 0x00, 0x09, 0xdf, 0xab, 0x35, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x80, 0x02, 0xc0, 0x78, 0x0f, 0xbf, 0xc6, 0xf8, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x05, 0xfe, 0x20, 0x15, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0x03, 0x61, 0xf8, 0x1f, 0x36, 0xfd, 0xff, 0x6d, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x1a, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x30, 0x00, 0xff, 0xf0, 0x3f, 0x7b, 0x7f, 0xd1, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x12, 0x03, 0xfe, 0x00, 0x09, 0xbf, 0x55, 0xaa, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x08, 0x0c, 0x01, 0xe0, 0x7e, 0xeb, 0x7e, 0x04, 0xfe, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x0f, 0xff, 0x00, 0x37, 0xff, 0x40, 0x0a, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x07, 0xff, 0xc1, 0xfd, 0xcd, 0xff, 0xe1, 0x7f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x02, 0xc3, 0x9f, 0xff, 0x80, 0x1f, 0xff, 0xea, 0xd5, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x21, 0xff, 0x8f, 0xf9, 0x5d, 0xbc, 0x05, 0x3f, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xff, 0xff, 0xd2, 0x6f, 0xff, 0xa9, 0x51, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x38, 0x03, 0x7f, 0xb2, 0xdd, 0xbb, 0xe3, 0xef, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x01, 0x41, 0xff, 0xff, 0xc1, 0xbf, 0xff, 0xf5, 0x5a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x7f, 0xfe, 0xfc, 0xe7, 0xbf, 0xde, 0x18, 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x87, 0xff, 0xe2, 0xff, 0xff, 0xf5, 0xaa, 0xbf, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x33, 0xfc, 0xff, 0xdf, 0x7f, 0xd0, 0x01, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7f, 0xff, 0xe9, 0x7f, 0xff, 0xc2, 0x0a, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x0f, 0xff, 0x7e, 0x34, 0xf4, 0x6c, 0x0c, 0xbf, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xf6, 0xff, 0xff, 0xea, 0xd5, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x01, 0xfe, 0x38, 0xf9, 0xec, 0x78, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xe4, 0x54, 0x7f, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x01, 0xf9, 0xef, 0xf7, 0xdb, 0x60, 0x00, 0x3f, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x7f, 0xff, 0xff, 0xd5, 0x5d, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x03, 0xff, 0xfd, 0x8e, 0x7f, 0xf6, 0xc7, 0x00, 0x1b, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0x88, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x3c, 0xfe, 0x38, 0x7f, 0xed, 0x8c, 0x00, 0x7d, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x01, 0xff, 0xff, 0xff, 0xaa, 0xaa, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x23, 0xf3, 0xff, 0x6f, 0xfc, 0xfb, 0x18, 0x00, 0x7f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x04, 0xff, 0x98, 0x79, 0xe5, 0x10, 0x00, 0x0f, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xd4, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x03, 0xf8, 0xfb, 0x80, 0xf3, 0x9d, 0x21, 0x80, 0x07, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xbf, 0xff, 0xfd, 0x45, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x82, 0xff, 0x98, 0xe6, 0x79, 0x23, 0x00, 0x03, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xdb, 0xff, 0xe8, 0xb9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x20, 0x0c, 0xff, 0xd0, 0x6d, 0x81, 0x26, 0x00, 0x03, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x57, 0xff, 0x10, 0x08, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x31, 0xef, 0xc5, 0xfb, 0x7f, 0x24, 0x00, 0x93, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x55, 0x7f, 0xf7, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x03, 0xfb, 0xd8, 0x7c, 0xe1, 0x8c, 0x00, 0x7f, 0xdd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd2, 0x05, 0x7e, 0x81, 0x40, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x40, 0x0d, 0x5f, 0xe0, 0x79, 0x7c, 0xc4, 0x0f, 0x9f, 0xed, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x22, 0xf7, 0x98, 0x11, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x3c, 0xf3, 0xd5, 0x62, 0x7a, 0xff, 0x40, 0x00, 0x75, 0xec, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xfa, 0xb7, 0xff, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x86, 0xb5, 0x6c, 0x3d, 0xff, 0xe0, 0x00, 0x13, 0xec, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3c, 0x07, 0xfa, 0xb3, 0x10, 0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x19, 0x3f, 0x70, 0x3d, 0x80, 0x60, 0x00, 0x0f, 0xec, 0xc0, 0x00, 0x00, 0x00, 0x01, 0x08, 0x01, 0xfe, 0x0f, 0xfe, 0x5b, 0xb0, 0xbb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x76, 0x7f, 0x60, 0x3f, 0x77, 0x20, 0x00, 0x2f, 0xe8, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0x5b, 0xd7, 0xa3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x8c, 0xfe, 0x40, 0x1f, 0xcf, 0x80, 0x7c, 0x07, 0xdd, 0xc0, 0x00, 0x00, 0x00, 0x11, 0x24, 0x3f, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x37, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x39, 0xf6, 0xc0, 0x1f, 0xb8, 0x41, 0xc6, 0x07, 0xdd, 0x80, 0x00, 0x00, 0x00, 0x00, 0x39, 0xff, 0xff, 0xff, 0xff, 0xff, 0xeb, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x11, 0xc6, 0xfe, 0x80, 0x0f, 0x78, 0x43, 0x03, 0x0b, 0xd5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x19, 0xfd, 0x01, 0x0f, 0xf3, 0x04, 0x01, 0xd9, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xef, 0xf6, 0x22, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x27, 0xf9, 0x07, 0xcf, 0xec, 0x00, 0x7f, 0xff, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0xf8, 0x03, 0xff, 0xff, 0xb7, 0x40, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0xfd, 0xfb, 0x1c, 0x6b, 0xd8, 0x21, 0xf1, 0xf1, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x01, 0xff, 0xf3, 0x9f, 0x41, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x83, 0xf6, 0x31, 0xeb, 0xb0, 0xc3, 0xc0, 0x7f, 0xfa, 0x40, 0x00, 0x00, 0x00, 0x03, 0x00, 0x1b, 0x01, 0xff, 0xff, 0x57, 0x75, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x80, 0x07, 0x84, 0x27, 0x3b, 0xe1, 0xe7, 0x10, 0x37, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06, 0xc1, 0xff, 0xfe, 0xcc, 0x01, 0x4f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x70, 0x0f, 0x18, 0x04, 0x18, 0xf6, 0x0c, 0x00, 0x13, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x1f, 0xff, 0xfd, 0xec, 0x2b, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x1f, 0xfe, 0x38, 0x08, 0x1e, 0xec, 0x08, 0x78, 0x0a, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x3f, 0xff, 0xff, 0xb6, 0xab, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xfc, 0xf0, 0x31, 0x17, 0x68, 0x80, 0x00, 0x0f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xdf, 0xff, 0xfc, 0x10, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x80, 0x01, 0xf0, 0x72, 0x17, 0x73, 0x04, 0x00, 0x0f, 0xfc, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xfb, 0xca, 0x47, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x78, 0x0f, 0xe0, 0x24, 0x3f, 0x76, 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xed, 0xe9, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x1f, 0xfb, 0xc1, 0x2c, 0x7f, 0xfc, 0x80, 0x00, 0x0c, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xf5, 0xa0, 0x05, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x07, 0x01, 0x38, 0x7f, 0xf9, 0x00, 0x00, 0x0d, 0xfe, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7f, 0xfe, 0xf6, 0xb4, 0x13, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0x3f, 0x20, 0x70, 0xff, 0xfb, 0x00, 0x00, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1f, 0xff, 0xde, 0x00, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x1f, 0xff, 0x62, 0x71, 0xbf, 0xfe, 0x60, 0x00, 0xe3, 0x75, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x2b, 0x4a, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x66, 0x44, 0x77, 0x2f, 0xfc, 0x80, 0x01, 0xfb, 0xff, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x1f, 0xf9, 0xa0, 0x42, 0x00, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf3, 0xe6, 0x04, 0x56, 0x4f, 0x7d, 0x18, 0x00, 0x0f, 0xbe, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x30, 0xff, 0xff, 0xb0, 0x03, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x88, 0x00, 0xdc, 0xd7, 0x7f, 0x20, 0x00, 0xe3, 0xfe, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x7f, 0xfe, 0xf2, 0xaa, 0x8d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x3d, 0xf2, 0x01, 0x91, 0xaf, 0xfe, 0x44, 0x00, 0xff, 0xff, 0x81, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xc0, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xee, 0x01, 0x9e, 0x6f, 0xfe, 0x98, 0x00, 0x7f, 0xdf, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe9, 0x55, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xde, 0xfe, 0x03, 0xbc, 0x97, 0xff, 0xe3, 0x00, 0xf3, 0xff, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xbf, 0xe4, 0x07, 0x33, 0x2f, 0xff, 0x0c, 0x00, 0x1d, 0xfb, 0xe4, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x05, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0xcc, 0x19, 0x30, 0xef, 0xfe, 0x06, 0x00, 0x3f, 0xff, 0xf8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x91, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x98, 0x02, 0x71, 0x9f, 0xfc, 0x8c, 0x00, 0x7f, 0xff, 0xf0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfc, 0x70, 0x0c, 0xff, 0x3f, 0xfd, 0x00, 0x00, 0xfb, 0xff, 0xf1, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xa9, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x23, 0xc0, 0x71, 0x30, 0x7f, 0xfe, 0x62, 0x00, 0xed, 0xbf, 0xe6, 0x24, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfc, 0x00, 0x02, 0x73, 0xff, 0xff, 0xcc, 0x00, 0x17, 0xff, 0xfe, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0x00, 0x7c, 0xfe, 0x6f, 0xfe, 0xd8, 0x00, 0x1f, 0xfb, 0xf8, 0xc9, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x00, 0x01, 0xf1, 0xdf, 0xfc, 0xe4, 0x00, 0x7e, 0x6d, 0xea, 0xd0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x07, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc5, 0x04, 0x07, 0x7f, 0x3f, 0x3b, 0xcc, 0x00, 0x7f, 0x97, 0xf7, 0x51, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x55, 0xc1, 0x3c, 0xce, 0x7e, 0x7b, 0x98, 0x00, 0xcf, 0xe3, 0xf5, 0x68, 0x80, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd4, 0x70, 0x1b, 0xe1, 0xdd, 0xf7, 0xb3, 0x00, 0x7f, 0x7f, 0xcc, 0x69, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xac, 0x1f, 0x9f, 0xff, 0x3f, 0xc7, 0x78, 0x03, 0x07, 0xfd, 0xe8, 0xa1, 0x20, 0x40, 0x40, 0x00, 0x00, 0x00, 0x4a, 0x12, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x48, 0x19, 0xfe, 0xf8, 0xdf, 0x8f, 0xf3, 0xc0, 0xfe, 0x7e, 0xb8, 0xc5, 0x6e, 0x44, 0x08, 0x00, 0x00, 0x00, 0x4a, 0x5f, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x90, 0x38, 0x1c, 0xf7, 0xbf, 0xca, 0x66, 0x02, 0x3f, 0x9e, 0xf5, 0x54, 0xad, 0xd9, 0x02, 0x40, 0x00, 0x00, 0xa4, 0x0a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x28, 0x67, 0xe4, 0xfe, 0x6f, 0x96, 0x7e, 0x00, 0x0c, 0xce, 0xff, 0x5a, 0x95, 0xb0, 0x06, 0x08, 0x02, 0x00, 0x35, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc7, 0x80, 0x09, 0x61, 0x97, 0x26, 0x78, 0x00, 0x01, 0x7a, 0x7f, 0xea, 0x12, 0x96, 0x4c, 0x82, 0x00, 0x0a, 0x5f, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x60, 0x11, 0x77, 0x2e, 0xcc, 0xf1, 0xe0, 0x00, 0xff, 0x3f, 0xff, 0x02, 0xc6, 0xd9, 0xa0, 0x4c, 0x87, 0x7c, 0xbf, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x05, 0xd3, 0xe3, 0x70, 0xdd, 0x9d, 0xb3, 0x00, 0x02, 0x2e, 0x97, 0x5d, 0x6b, 0x42, 0x53, 0x7c, 0x81, 0x95, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x33, 0xf3, 0x02, 0xe3, 0xbf, 0x39, 0xac, 0x00, 0x18, 0x7f, 0x8b, 0xfe, 0xad, 0x0a, 0x4d, 0xdd, 0xb3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x1f, 0x60, 0x04, 0xfe, 0x7e, 0x73, 0xf8, 0xc0, 0x07, 0x7f, 0x44, 0xea, 0xd5, 0x29, 0x6d, 0xbf, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xc0, 0x19, 0x60, 0xdd, 0xf7, 0xfb, 0x00, 0x01, 0xff, 0x22, 0x77, 0x56, 0xa5, 0x2d, 0xb6, 0x7f, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc7, 0xe0, 0x72, 0xf7, 0x3b, 0x6b, 0x76, 0x00, 0x04, 0x7f, 0x91, 0xbd, 0x6a, 0xd4, 0xb5, 0xa6, 0xbf, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x3c, 0x61, 0xc4, 0xfe, 0x78, 0x16, 0xdc, 0x00, 0x03, 0x37, 0xe8, 0x4e, 0xab, 0x5a, 0x96, 0xa7, 0xbf, 0xff, 0xff, 0xef, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0xff, 0x09, 0xe1, 0xdf, 0x6e, 0xf0, 0x00, 0x00, 0x9b, 0xf4, 0x07, 0xd5, 0x2b, 0x52, 0x97, 0x2d, 0x5f, 0xfa, 0xaf, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x87, 0x80, 0x33, 0xcf, 0xdf, 0x9d, 0xe0, 0x00, 0x01, 0x5d, 0xfb, 0x01, 0xf2, 0xb5, 0x6a, 0x40, 0xad, 0x5f, 0xae, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, + 0x31, 0xc0, 0xe6, 0xfd, 0xbe, 0x79, 0xe0, 0xf0, 0x00, 0xad, 0x9f, 0xc0, 0x7a, 0x56, 0xad, 0x4a, 0x15, 0xae, 0xbf, 0xfe, 0x1b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x03, 0xbf, 0x8d, 0xcf, 0x7f, 0xf7, 0xc3, 0x80, 0x06, 0x76, 0xe7, 0xe0, 0x1f, 0x4a, 0x54, 0xab, 0x5e, 0xaf, 0xff, 0xf0, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x05, 0x00, 0x1b, 0xdc, 0xdf, 0xff, 0x86, 0x40, 0x31, 0x36, 0xd3, 0xf0, 0x07, 0xe5, 0x4a, 0xb5, 0xea, 0xff, 0xf5, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x3b, 0x00, 0x67, 0x83, 0xbf, 0xff, 0x8d, 0x80, 0x7c, 0xfb, 0x64, 0xf0, 0x01, 0xff, 0xad, 0x5a, 0xbf, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x8d, 0x8e, 0x6b, 0x77, 0xff, 0x00, 0x0e, 0x7b, 0x52, 0x78, 0x00, 0x7f, 0xff, 0xea, 0xdd, 0xff, 0x80, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf8, 0x78, 0x33, 0xfc, 0xdb, 0x2f, 0xfe, 0x00, 0x03, 0xfb, 0x65, 0x82, 0x00, 0x03, 0xff, 0xff, 0xff, 0xe0, 0x70, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x9c, 0x01, 0xc7, 0x03, 0x37, 0x2f, 0xfc, 0x00, 0x39, 0xff, 0x23, 0x41, 0x80, 0x0d, 0xf0, 0x07, 0xfc, 0x0f, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf8, 0x7e, 0x1f, 0x1e, 0x7f, 0xef, 0xf8, 0x60, 0x1e, 0x7f, 0x2d, 0x80, 0x70, 0x03, 0xf8, 0x03, 0xff, 0xfe, 0x47, 0xff, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x78, 0x00, 0x7a, 0xf8, 0xbf, 0xeb, 0xf2, 0x00, 0x4e, 0x5b, 0x33, 0x00, 0x08, 0x00, 0x7f, 0x1e, 0xff, 0xfc, 0xbf, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xdc, 0x0f, 0xfa, 0x03, 0x2f, 0xff, 0x9c, 0x00, 0x13, 0x59, 0xbc, 0x80, 0x00, 0x00, 0x0c, 0xff, 0xe0, 0x01, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x38, 0xff, 0xfe, 0x1e, 0x5f, 0x57, 0xb8, 0x00, 0x4f, 0x5b, 0x3e, 0x40, 0x00, 0x00, 0x02, 0x6d, 0xc0, 0x03, 0xff, 0xe7, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x48, 0x04, 0xff, 0xf9, 0xf7, 0x77, 0xf6, 0x00, 0x3f, 0x1b, 0x67, 0x80, 0x00, 0x00, 0x01, 0x93, 0x0c, 0x0d, 0x7f, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x9c, 0x33, 0xf1, 0x67, 0xef, 0xff, 0x6c, 0x00, 0x1f, 0x3f, 0x7f, 0xe0, 0x00, 0x01, 0x01, 0xa6, 0x18, 0x8a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x38, 0x07, 0xc0, 0x0d, 0xde, 0xef, 0x78, 0x00, 0x4b, 0xee, 0xdf, 0xf0, 0x00, 0x00, 0x1e, 0x0c, 0x31, 0x15, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xdc, 0x59, 0x80, 0x2f, 0x9f, 0xfe, 0xf0, 0x00, 0x3d, 0xe9, 0x87, 0xf0, 0x00, 0x60, 0x0c, 0x08, 0x63, 0x11, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x9f, 0x03, 0x20, 0x42, 0x7f, 0xd7, 0xf3, 0x00, 0x0d, 0x6b, 0x99, 0xec, 0x00, 0x02, 0x09, 0x18, 0x42, 0x2b, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x78, 0x98, 0x60, 0x80, 0xdf, 0xbf, 0xee, 0x00, 0x6d, 0xef, 0x66, 0x01, 0x80, 0x03, 0x7a, 0x10, 0xc4, 0xe3, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xb8, 0x00, 0xc1, 0x07, 0xbf, 0x6f, 0xf8, 0x00, 0x0f, 0xdf, 0x99, 0x80, 0x20, 0x00, 0x14, 0x30, 0x80, 0xf3, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf8, 0x03, 0x86, 0x1e, 0x7c, 0xdf, 0xf0, 0x00, 0x07, 0xfe, 0x66, 0x00, 0x00, 0x00, 0x04, 0x21, 0x81, 0x43, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, + 0xfa, 0x0f, 0x18, 0x2d, 0xdd, 0xbf, 0xa0, 0x00, 0x67, 0xfd, 0xb1, 0x00, 0x00, 0x31, 0xe8, 0x21, 0x01, 0xe7, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0x3f, 0xff, 0xff, 0xff, 0xff, + 0xc7, 0xf8, 0x00, 0x0f, 0x3f, 0x3b, 0xe7, 0x00, 0x7f, 0xf6, 0x67, 0x00, 0x00, 0x00, 0x70, 0x41, 0x03, 0x87, 0xff, 0xef, 0xff, 0xff, 0xff, 0x4f, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0x30, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x80, 0x00, 0x00, 0x4c, 0xfb, 0xb7, 0xd8, 0x00, 0x1f, 0x9f, 0xf9, 0x80, 0x00, 0x00, 0x70, 0x42, 0x02, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4b, 0xff, 0xff, 0xfe, 0xff, 0xef, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x8b, 0xfe, 0xef, 0xc0, 0x03, 0xff, 0xf7, 0x7e, 0x00, 0x00, 0x00, 0x60, 0x82, 0x07, 0xd7, 0xff, 0xff, 0xff, 0xff, 0xde, 0xdf, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xbf, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x03, 0x1e, 0xdf, 0xfb, 0x80, 0x00, 0xef, 0xf9, 0x9c, 0x00, 0x00, 0x00, 0xe0, 0x82, 0x07, 0x97, 0xff, 0xff, 0xfe, 0x7f, 0xbe, 0x9f, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xef, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x00, 0x00, 0x10, 0x9f, 0xb7, 0x80, 0x00, 0x37, 0xf6, 0x67, 0x00, 0x00, 0x00, 0xc1, 0x80, 0x0f, 0xaf, 0xff, 0xff, 0x3f, 0xff, 0xad, 0xbf, 0xff, 0xff, 0x7f, 0xff, 0xfd, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x80, 0x00, 0x00, 0x37, 0xb7, 0xa7, 0x38, 0x00, 0xff, 0xfd, 0xdc, 0x80, 0x00, 0x01, 0x01, 0x00, 0x0f, 0x2f, 0xff, 0xff, 0xff, 0xff, 0x4d, 0x7f, 0xff, 0xfd, 0x7f, 0xff, 0xfd, 0xbf, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x10, 0x00, 0x00, 0x6f, 0xef, 0xbf, 0xe0, 0x00, 0x7f, 0xf0, 0x70, 0x00, 0x00, 0x01, 0x01, 0x00, 0x0f, 0x7f, 0xff, 0xff, 0xff, 0xfe, 0xdb, 0x7f, 0xd6, 0xdd, 0x7f, 0xff, 0x7d, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x20, 0x00, 0x00, 0xcb, 0xcb, 0x7f, 0x80, 0x00, 0x3f, 0xfd, 0xbf, 0x40, 0x00, 0x00, 0x01, 0x00, 0x1f, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xb7, 0xff, 0x2d, 0xdf, 0xf7, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x42, 0x00, 0x01, 0x13, 0xf7, 0x7b, 0x00, 0x01, 0xdd, 0xf7, 0xfc, 0xdf, 0xe3, 0x92, 0x02, 0x00, 0x17, 0xdf, 0xff, 0xff, 0xff, 0xfe, 0x77, 0xf0, 0xdf, 0xbf, 0xf7, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc4, 0x00, 0x00, 0x67, 0xed, 0x7f, 0x00, 0x00, 0xfd, 0xff, 0x3b, 0x60, 0xc0, 0x02, 0x02, 0x00, 0x27, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xcf, 0xf3, 0xff, 0x7f, 0xf7, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x88, 0x00, 0x00, 0xcd, 0xdb, 0x7f, 0x20, 0x00, 0x3f, 0xfe, 0x72, 0x83, 0x0e, 0x40, 0x02, 0x00, 0x2f, 0xbf, 0xff, 0xff, 0xef, 0xf9, 0xbf, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xdf, 0xfe, 0xff, 0xff, 0xff, 0xff, + 0x12, 0x00, 0x00, 0x1b, 0xd2, 0xf6, 0x60, 0x0f, 0x97, 0xfe, 0xb7, 0x30, 0x4c, 0x40, 0x00, 0x00, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xf7, 0xfe, 0x7f, 0x7f, 0xff, 0xff, 0xfb, 0xff, 0xbf, 0xfd, 0xff, 0xff, 0xff, 0xff, + 0x34, 0x88, 0x00, 0x3b, 0xcd, 0xf6, 0xc0, 0x00, 0xd3, 0xff, 0x6c, 0x41, 0x8d, 0xc0, 0x00, 0x00, 0x4f, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xe4, 0x7f, 0xf7, 0xea, 0xff, 0xfc, 0xff, 0xbf, 0xfb, 0xfe, 0xff, 0xff, 0xff, + 0x2d, 0x90, 0x00, 0xf6, 0xfd, 0xde, 0xd0, 0x00, 0x39, 0xf5, 0x58, 0x82, 0x08, 0x80, 0x00, 0x00, 0x4f, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0xfd, 0xcd, 0xc1, 0xff, 0xfe, 0xff, 0xff, 0xde, 0x7f, 0xff, 0xff, 0x7f, 0xff, 0xff, + 0x4b, 0x20, 0x00, 0x8c, 0xf2, 0xd7, 0xe0, 0x03, 0x9f, 0xfe, 0x98, 0x06, 0x09, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xf3, 0xbf, 0x7f, 0xd2, 0x00, 0x4f, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x53, 0x60, 0x01, 0x19, 0xcc, 0xbf, 0xe8, 0x01, 0xfd, 0xfb, 0xb2, 0x0c, 0x16, 0x00, 0x00, 0x00, 0x9f, 0xff, 0xff, 0xfc, 0x0e, 0xff, 0xfe, 0xb7, 0x8c, 0x21, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, + 0xd6, 0x40, 0x01, 0xf2, 0xf9, 0x6f, 0xd8, 0x00, 0x7f, 0xf5, 0x34, 0x08, 0x14, 0x00, 0x00, 0x00, 0x9e, 0xff, 0xff, 0xff, 0xc3, 0x7f, 0xf5, 0xae, 0x7f, 0x1f, 0x0d, 0x7f, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xbf, 0xff, 0xff, + 0xf6, 0xc8, 0x00, 0x25, 0xf2, 0x4f, 0xd0, 0x00, 0x1f, 0xf6, 0x68, 0x10, 0x04, 0x10, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xf0, 0x01, 0xff, 0xf5, 0xfc, 0x87, 0xc0, 0x9b, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe6, 0x90, 0x20, 0xc3, 0xfc, 0x9f, 0xd0, 0x00, 0xef, 0xe2, 0x68, 0x30, 0x20, 0x10, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xc4, 0xff, 0xfd, 0x7d, 0x18, 0xff, 0x32, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe5, 0xa0, 0x81, 0xff, 0xfb, 0x3f, 0xd8, 0x8f, 0x37, 0xf6, 0xd0, 0x20, 0x20, 0x00, 0x00, 0x00, 0x1f, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x7b, 0x20, 0x43, 0xe4, 0xef, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xed, 0x23, 0x00, 0xcd, 0xfe, 0x7e, 0xf8, 0x41, 0xcf, 0xf4, 0xe0, 0x40, 0x00, 0x20, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xfe, 0x3b, 0xff, 0xfd, 0x7e, 0x40, 0x7f, 0x8d, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, + 0x6d, 0x22, 0x00, 0x13, 0xf8, 0xbe, 0xf8, 0x00, 0x67, 0xf5, 0xe0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x3f, 0xbf, 0xff, 0xff, 0x9f, 0xff, 0xfd, 0x7c, 0x93, 0xcc, 0x13, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x7c, 0x64, 0x00, 0xe6, 0xf7, 0x6e, 0xec, 0x27, 0x37, 0xe1, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xf8, 0xff, 0xfd, 0xfd, 0x75, 0xb7, 0x03, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f, 0xff, + 0x7c, 0x48, 0x00, 0x0d, 0xfc, 0xdf, 0xf4, 0x37, 0xbf, 0xe1, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xbf, 0x71, 0x2c, 0x00, 0x3c, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x7c, 0xc8, 0x00, 0x3a, 0xf3, 0x3d, 0xf6, 0x09, 0xdf, 0xea, 0x80, 0x00, 0x80, 0x40, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xe1, 0xcf, 0xdf, 0x9f, 0xb9, 0x58, 0x7e, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfd, 0xff, 0xff, + 0xdd, 0x90, 0x01, 0xe4, 0xfe, 0x7b, 0x72, 0x0c, 0xcf, 0xf3, 0x81, 0x00, 0x80, 0x40, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xfe, 0x67, 0xff, 0x9f, 0x9a, 0x91, 0x98, 0x02, 0xfe, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0x80, 0x00, 0x09, 0xf1, 0xfb, 0xf1, 0x84, 0xef, 0xd1, 0x61, 0x02, 0x40, 0x40, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xf3, 0x92, 0xbc, 0xcc, 0xca, 0xa2, 0x77, 0x21, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xed, 0x81, 0x00, 0x36, 0xcf, 0xdb, 0xf8, 0x06, 0xfd, 0xb3, 0x63, 0x02, 0x40, 0x90, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xf8, 0x5a, 0xfe, 0x4c, 0xca, 0xe4, 0xf1, 0xb3, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xbf, 0xff, + 0xfd, 0x82, 0x00, 0x79, 0xfd, 0xce, 0xdc, 0x06, 0xfb, 0x36, 0x42, 0x02, 0x01, 0x90, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0x3b, 0xfe, 0x4c, 0x5a, 0xc9, 0xc0, 0x80, 0x63, 0xfb, 0xbf, 0xff, 0xff, 0xff, 0xfd, 0x9f, 0xff, + 0xfc, 0xc4, 0x00, 0x01, 0xf3, 0xdf, 0x7f, 0x02, 0x7c, 0x7e, 0x02, 0x02, 0x81, 0x90, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xcf, 0xf6, 0x4c, 0x7a, 0xd3, 0x00, 0x40, 0x86, 0xfb, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xd9, 0xff, + 0xff, 0xc8, 0x00, 0x01, 0xfd, 0xdf, 0x39, 0xe2, 0xb9, 0xbc, 0x86, 0x02, 0x81, 0x10, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xe3, 0xef, 0xd2, 0x4c, 0x7b, 0x96, 0x00, 0x40, 0x3d, 0xbf, 0xfd, 0xff, 0xfd, 0xff, 0xff, 0xfd, 0xff, + 0xff, 0xc8, 0x00, 0x1b, 0xfd, 0xdf, 0xbc, 0x02, 0xa7, 0xfc, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf8, 0x27, 0xd2, 0x4c, 0x6f, 0xac, 0x27, 0xe1, 0xff, 0xff, 0x5f, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x50, 0x00, 0x19, 0xff, 0xde, 0xde, 0x04, 0xa7, 0xf9, 0x0c, 0x02, 0x01, 0x20, 0x00, 0x00, 0x7f, 0xff, 0xff, 0x1e, 0x37, 0xd2, 0x4c, 0x77, 0xac, 0x0e, 0x00, 0x6f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, + 0x1b, 0x60, 0x00, 0x39, 0x7f, 0xde, 0xcf, 0x8d, 0xff, 0xf9, 0x0c, 0x02, 0x01, 0xa0, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xc7, 0x37, 0xd6, 0x5c, 0x73, 0xec, 0xa0, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, + 0x37, 0x60, 0x00, 0x29, 0x7e, 0xda, 0x60, 0xfb, 0xff, 0xd0, 0x08, 0x02, 0x03, 0x20, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf9, 0xb7, 0xd4, 0xdc, 0x5b, 0xd9, 0x73, 0x87, 0x97, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0x2f, 0xc0, 0x00, 0x09, 0x76, 0xc9, 0x30, 0x02, 0xff, 0xa2, 0x18, 0x02, 0x02, 0x20, 0x00, 0x00, 0xff, 0xff, 0xff, 0xcd, 0x97, 0x94, 0x98, 0xa9, 0xd2, 0x66, 0x03, 0xff, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x76, 0x80, 0x00, 0x09, 0x7e, 0x4d, 0x80, 0x0c, 0xff, 0xa0, 0x10, 0x02, 0x02, 0x20, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf4, 0xdf, 0xac, 0xb8, 0xa8, 0xd2, 0xc8, 0x03, 0xfc, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x6d, 0x00, 0x00, 0x1b, 0x76, 0xe4, 0xc0, 0x11, 0xff, 0xe0, 0x10, 0x00, 0x02, 0x40, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x29, 0x31, 0xaa, 0xc0, 0x90, 0x1f, 0xfb, 0x0f, 0xff, 0xff, 0xff, 0x7e, 0xff, 0xfe, 0xff, + 0xeb, 0x20, 0x00, 0x3b, 0x76, 0xe2, 0x12, 0x8f, 0xff, 0xe0, 0x10, 0x00, 0x02, 0x40, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xef, 0xfe, 0x53, 0x71, 0x2b, 0xb1, 0xa1, 0xf8, 0x06, 0x3c, 0x1f, 0xff, 0xff, 0xfe, 0xff, 0xff, 0x7f, + 0xd2, 0x44, 0x00, 0x7a, 0xb6, 0xb1, 0x13, 0xff, 0xff, 0xe0, 0x20, 0x00, 0x06, 0x40, 0x00, 0x02, 0xfd, 0xff, 0xff, 0xf7, 0xef, 0xf7, 0x82, 0x43, 0xb5, 0x23, 0xe0, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd0, 0x89, 0x80, 0xd6, 0xb6, 0xd0, 0x34, 0xff, 0xff, 0xc0, 0x20, 0x00, 0x06, 0x40, 0x00, 0x04, 0xf7, 0xff, 0xff, 0xdb, 0x7f, 0xef, 0xb6, 0xb5, 0xfd, 0x46, 0xc0, 0x00, 0x0f, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, + 0x91, 0x13, 0x00, 0x2d, 0x66, 0xd8, 0x67, 0xf7, 0xff, 0xc8, 0x00, 0x00, 0x05, 0x20, 0x00, 0x04, 0xf7, 0x7f, 0xff, 0xed, 0x3f, 0xcf, 0x6d, 0x25, 0x7e, 0x45, 0x80, 0x00, 0x3c, 0x07, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, + 0xc9, 0x26, 0x00, 0xeb, 0x6f, 0x4c, 0x27, 0xff, 0xfe, 0x88, 0x00, 0x00, 0x05, 0xa0, 0x00, 0x05, 0xfd, 0xff, 0xff, 0xf5, 0x9f, 0x3c, 0xff, 0x6d, 0x6e, 0x53, 0x10, 0x00, 0x61, 0xf9, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xff, + 0xca, 0x6c, 0x03, 0xc6, 0x9f, 0x67, 0xf7, 0xff, 0xff, 0x90, 0x00, 0x00, 0x04, 0xa0, 0x00, 0x05, 0xfd, 0xff, 0xff, 0xba, 0x9f, 0xe9, 0x97, 0x9a, 0xce, 0x9e, 0x60, 0x00, 0x0f, 0xfd, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, + 0xca, 0x48, 0x00, 0x05, 0x1f, 0xa1, 0xf9, 0xff, 0xff, 0x10, 0x00, 0x00, 0x0c, 0xa0, 0x00, 0x05, 0xfd, 0xff, 0xff, 0xfc, 0x8f, 0xcf, 0x8e, 0x37, 0xd6, 0x8e, 0xc0, 0x80, 0x1d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xca, 0xd8, 0x81, 0x89, 0x3f, 0xb0, 0x7e, 0x3f, 0xff, 0x00, 0x00, 0x00, 0x0e, 0x80, 0x00, 0x05, 0xfd, 0xff, 0xff, 0xfc, 0x8e, 0x0e, 0xc7, 0xef, 0xfe, 0xd4, 0x83, 0x00, 0x73, 0xfd, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, + 0x4a, 0x91, 0x00, 0x10, 0x7a, 0xd8, 0x3b, 0xc3, 0xff, 0x00, 0x00, 0x00, 0x08, 0xc0, 0x00, 0x05, 0xff, 0xff, 0xe0, 0xdc, 0x8e, 0xcc, 0xc0, 0xf0, 0x3f, 0xfd, 0x04, 0x00, 0xe7, 0xfe, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xef, + 0x4e, 0xb2, 0x00, 0x34, 0x4a, 0x6c, 0x37, 0xff, 0xff, 0x01, 0x00, 0x00, 0x08, 0x40, 0x00, 0x0d, 0xff, 0xff, 0xcf, 0xe4, 0x87, 0xce, 0xd2, 0x00, 0x07, 0xfd, 0x08, 0x01, 0xcf, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, + 0x2d, 0xb4, 0x00, 0x18, 0x9b, 0x33, 0x9f, 0xff, 0xfe, 0x01, 0x00, 0x00, 0x19, 0x40, 0x00, 0x09, 0xfb, 0xff, 0xfd, 0xd7, 0x17, 0xde, 0xe7, 0xe0, 0x00, 0x89, 0x18, 0x03, 0x8f, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, + 0x2d, 0xa4, 0x00, 0x03, 0x39, 0x90, 0xff, 0xff, 0xde, 0x00, 0x00, 0x00, 0x19, 0x40, 0x00, 0x0b, 0xfb, 0xff, 0xff, 0xfb, 0x15, 0x5e, 0xef, 0x00, 0x20, 0x19, 0x10, 0x06, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, + 0x25, 0xe8, 0x00, 0x1e, 0x79, 0x9f, 0x3f, 0x7f, 0xdc, 0x02, 0x01, 0x40, 0x11, 0xc0, 0x00, 0x0b, 0xfb, 0xff, 0xff, 0xdd, 0x24, 0x5e, 0x72, 0x60, 0x00, 0xdd, 0x30, 0x04, 0x00, 0x06, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, + 0x27, 0xc8, 0x00, 0x00, 0xfd, 0xcf, 0xff, 0x9f, 0xfc, 0x02, 0x01, 0x40, 0x11, 0x80, 0x00, 0x0b, 0xfb, 0xfd, 0xde, 0x0f, 0x0a, 0x9c, 0x64, 0xc0, 0x00, 0xdf, 0x30, 0x00, 0x70, 0xf1, 0x7f, 0xff, 0xff, 0xf7, 0xff, 0xff, + 0x23, 0xd0, 0x00, 0x03, 0xfd, 0xe3, 0x7f, 0xf7, 0xfc, 0x00, 0x03, 0x40, 0x13, 0x80, 0x00, 0x0a, 0xf9, 0xff, 0xff, 0x83, 0x08, 0x9c, 0x49, 0x00, 0x00, 0x7e, 0x32, 0x01, 0x80, 0xfc, 0x7f, 0xff, 0xff, 0xf7, 0xff, 0xff, + 0x20, 0x73, 0x00, 0x03, 0xde, 0xb0, 0xbf, 0xff, 0xfc, 0x04, 0x03, 0x00, 0x33, 0x80, 0x00, 0x02, 0xf9, 0xf7, 0xff, 0xe1, 0x15, 0x18, 0x4b, 0x28, 0x00, 0x77, 0x54, 0x00, 0x01, 0xfe, 0x7f, 0xff, 0xff, 0xef, 0xfe, 0xff, + 0x20, 0x62, 0x00, 0x00, 0xfa, 0xcc, 0xff, 0xff, 0xf8, 0x04, 0x03, 0x00, 0x33, 0x80, 0x00, 0x02, 0xfb, 0xef, 0xe0, 0x19, 0xaf, 0xb8, 0x1a, 0x58, 0x00, 0x3b, 0xcc, 0x04, 0x00, 0xff, 0x7f, 0xff, 0xff, 0x9f, 0xfb, 0x7f, + 0x20, 0xe4, 0x40, 0x00, 0x7b, 0x63, 0xff, 0xff, 0xf8, 0x08, 0x02, 0x80, 0x23, 0x00, 0x00, 0x02, 0xf9, 0x7f, 0xfe, 0x09, 0xfe, 0x20, 0x1a, 0xf3, 0x00, 0x19, 0xe8, 0x01, 0xf0, 0x0f, 0xff, 0xff, 0xff, 0xbf, 0x7f, 0xbf, + 0x00, 0xed, 0xc0, 0x03, 0x39, 0x38, 0xff, 0xff, 0xf8, 0x08, 0x02, 0x80, 0x23, 0x00, 0x00, 0x06, 0xf1, 0xff, 0xf0, 0x01, 0xef, 0x40, 0x16, 0xe4, 0x00, 0x0c, 0x32, 0x33, 0x00, 0x03, 0xff, 0xff, 0xff, 0x2f, 0x7f, 0xff, + 0x00, 0xeb, 0x80, 0x01, 0xfc, 0x9e, 0xff, 0xff, 0xf8, 0x08, 0x06, 0x00, 0x67, 0x00, 0x00, 0x06, 0xf9, 0xfe, 0xc0, 0x03, 0xef, 0xc0, 0x15, 0xc9, 0xc0, 0x07, 0x10, 0xd8, 0x00, 0x01, 0xff, 0xff, 0xff, 0x5f, 0xff, 0x7f, + 0x00, 0xe6, 0x80, 0x00, 0xfc, 0xc7, 0xff, 0xff, 0xf0, 0x00, 0x06, 0x00, 0x67, 0x00, 0x00, 0x07, 0xf9, 0xfd, 0xbe, 0x03, 0x00, 0xc0, 0x3d, 0xdb, 0x00, 0x00, 0xf4, 0x90, 0x40, 0x00, 0xbf, 0xff, 0xff, 0xbe, 0xff, 0x37, + 0x00, 0xe5, 0x00, 0x00, 0xbe, 0x60, 0xff, 0xff, 0xf0, 0x10, 0x06, 0x00, 0x47, 0x00, 0x00, 0x05, 0xf9, 0xff, 0xf3, 0x97, 0x80, 0x60, 0x27, 0x96, 0x38, 0x00, 0x35, 0xb3, 0x80, 0x00, 0x5f, 0xff, 0xff, 0xff, 0xff, 0x93, + 0x08, 0x7e, 0x00, 0x00, 0xfe, 0x3c, 0xff, 0xff, 0xf2, 0x30, 0x06, 0x00, 0x57, 0x00, 0x00, 0x05, 0xf0, 0xff, 0xc1, 0xe0, 0x00, 0x30, 0x27, 0xac, 0xf0, 0x00, 0x1d, 0x26, 0x00, 0x00, 0x5f, 0xff, 0xff, 0xff, 0xfb, 0xc9, + 0x08, 0x7e, 0xc0, 0x00, 0xff, 0x07, 0x7f, 0xfb, 0xf2, 0x20, 0x0c, 0x00, 0xdf, 0x00, 0x00, 0x05, 0xf0, 0xf9, 0xff, 0x1f, 0x08, 0x12, 0x25, 0xa9, 0x80, 0x00, 0x15, 0x28, 0x10, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfd, + 0x89, 0x3d, 0xc0, 0x00, 0xff, 0x03, 0xff, 0xff, 0xf2, 0x60, 0x0c, 0x00, 0xce, 0x00, 0x00, 0x05, 0xe0, 0xfb, 0xc0, 0xff, 0xc4, 0x08, 0x27, 0xdb, 0x00, 0x00, 0x09, 0x70, 0xc3, 0xe0, 0x3f, 0xff, 0xff, 0xff, 0xef, 0xff, + 0x89, 0x7d, 0x80, 0x00, 0xff, 0xe3, 0xff, 0xff, 0xe0, 0x60, 0x0c, 0x00, 0xce, 0x00, 0x00, 0x05, 0xe1, 0xbf, 0x03, 0x80, 0x00, 0x80, 0x33, 0xd2, 0x1c, 0x00, 0x05, 0x73, 0x19, 0xf0, 0x3f, 0xff, 0xff, 0xef, 0xf9, 0x9f, + 0x8b, 0x67, 0x00, 0x00, 0xff, 0xb9, 0xff, 0xff, 0xe0, 0x40, 0x0c, 0x01, 0x8e, 0x00, 0x00, 0x0f, 0xe1, 0xff, 0x77, 0x00, 0x0c, 0x80, 0x33, 0xd4, 0x60, 0x00, 0xc6, 0x76, 0x86, 0xf0, 0x7f, 0xff, 0xff, 0xdf, 0x7c, 0xcf, + 0x82, 0x4e, 0x00, 0x00, 0xdf, 0xbc, 0xff, 0xff, 0xe0, 0x40, 0x0c, 0x01, 0x9c, 0x00, 0x00, 0x0f, 0xe3, 0xff, 0x0e, 0x38, 0x7e, 0x00, 0x33, 0xdc, 0xcc, 0x00, 0x33, 0x65, 0x33, 0xd8, 0x6f, 0xff, 0xff, 0xff, 0xf6, 0x67, + 0x9b, 0xd8, 0x00, 0x00, 0xdf, 0xbb, 0xff, 0xff, 0xe4, 0x40, 0x3c, 0x01, 0xbe, 0x00, 0x00, 0x0f, 0xe3, 0xfe, 0x4c, 0xff, 0xe3, 0x00, 0x39, 0xfd, 0xb8, 0x00, 0x19, 0x6c, 0xc1, 0xd8, 0xdf, 0xff, 0xff, 0xff, 0xff, 0x27, +}; + +static const uint8_t sadpanda[] = { + +0x06, 0x9C, 0x01, 0x67, 0x01, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfe, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xf6, 0x9d, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfd, 0xdb, 0x67, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xb6, 0x49, 0x20, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xec, 0xa6, 0x64, 0x99, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x26, 0xc9, 0x96, 0x44, 0x81, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf4, 0xd9, 0x32, 0x11, 0x44, 0x64, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xb6, 0xc9, 0x24, 0xc9, 0x31, 0x13, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc9, 0x24, 0x8c, 0x20, 0x08, 0x90, 0x93, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfa, 0x49, 0x24, 0x91, 0x06, 0x42, 0x24, 0x91, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xcb, 0x36, 0x40, 0x41, 0x10, 0x24, 0x09, 0x24, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x64, 0x90, 0x12, 0x08, 0x41, 0x09, 0x40, 0x48, 0x9f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x34, 0xc1, 0x00, 0x82, 0x08, 0x40, 0x12, 0x0a, 0x43, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf9, 0x89, 0x08, 0x48, 0x20, 0x20, 0x36, 0x80, 0x82, 0x42, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xd8, 0x92, 0x22, 0x02, 0x08, 0x07, 0xbf, 0xfc, 0x21, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xce, 0x44, 0x00, 0x80, 0x00, 0x5f, 0xfb, 0x7b, 0x08, 0x41, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xa1, 0x21, 0x08, 0x00, 0x00, 0xff, 0xdb, 0xce, 0xe2, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x31, 0x08, 0x00, 0x00, 0x01, 0xfc, 0xdc, 0xf6, 0xf8, 0x04, 0xc7, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x4c, 0x00, 0x00, 0x00, 0x07, 0xf7, 0xf7, 0xbb, 0x3c, 0x42, 0x11, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x40, 0x20, 0x00, 0x00, 0x03, 0xff, 0x7f, 0xef, 0xcf, 0x10, 0x89, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xda, 0x90, 0x80, 0x00, 0x00, 0x03, 0xbb, 0xdb, 0x7d, 0xf3, 0x80, 0x24, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x64, 0x80, 0x00, 0x00, 0x00, 0x07, 0xee, 0xff, 0xf7, 0x7e, 0xe2, 0x12, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xb1, 0x02, 0x00, 0x00, 0x00, 0x07, 0xff, 0xb6, 0xdf, 0xdf, 0xf8, 0x82, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x88, 0x08, 0x00, 0x00, 0x00, 0x07, 0x77, 0xff, 0xfb, 0xf7, 0x6e, 0x24, 0x8f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x64, 0x80, 0x00, 0x00, 0x00, 0x07, 0xdd, 0xdb, 0x6e, 0xfd, 0xfb, 0x81, 0x23, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0xbd, 0xff, 0xff, 0xbf, 0xb7, 0x08, 0x5b, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xed, 0x88, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xe7, 0x6d, 0xb7, 0xee, 0xf7, 0x02, 0x42, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xbf, 0xff, 0xfd, 0xfb, 0xdb, 0x10, 0x24, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xb2, 0x40, 0x00, 0x00, 0x00, 0x00, 0x07, 0xbb, 0xb6, 0xdf, 0x7f, 0x7d, 0x01, 0x25, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xe9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xee, 0xff, 0xf7, 0xdd, 0xef, 0x00, 0x11, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x6c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfd, 0xdb, 0x3d, 0xf7, 0xfb, 0x08, 0x88, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xdf, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x37, 0x7f, 0xff, 0x7f, 0x76, 0x02, 0x22, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfd, 0xd0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xed, 0xdf, 0xdb, 0xde, 0x00, 0x02, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xef, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xbb, 0xbf, 0x7b, 0xfe, 0xfa, 0x00, 0x48, 0x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xbf, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x6e, 0xf7, 0xee, 0xef, 0xba, 0x04, 0x01, 0x32, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf7, 0xf6, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x7f, 0xdd, 0xbf, 0xbb, 0xec, 0x00, 0x00, 0x09, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x7d, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xdb, 0x7f, 0xfb, 0xfe, 0xfc, 0x00, 0x08, 0x81, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xdf, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xee, 0xde, 0xdf, 0xdc, 0x00, 0x80, 0x30, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xff, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xed, 0xbb, 0xf7, 0xf7, 0x78, 0x00, 0x01, 0x04, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xed, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xbf, 0xff, 0x7d, 0xbd, 0xe8, 0x00, 0x00, 0x04, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x7f, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xf6, 0xdb, 0xdf, 0xff, 0xf8, 0x00, 0x10, 0x21, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbd, 0xfb, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x5f, 0xfb, 0xb6, 0xdf, 0x70, 0x00, 0x00, 0x08, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xef, 0xdf, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xfb, 0x6e, 0xff, 0xf7, 0xe0, 0x00, 0x02, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0xfd, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xbf, 0xff, 0xdb, 0xfd, 0xe0, 0x00, 0x00, 0x00, 0x93, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf6, 0xef, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xed, 0xb7, 0x7e, 0xdf, 0xc0, 0x00, 0x00, 0x44, 0x13, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xbf, 0xbe, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0xfd, 0xef, 0xf7, 0xc0, 0x00, 0x00, 0x00, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xed, 0xf7, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xb6, 0xdf, 0xbd, 0xbf, 0x00, 0x00, 0x00, 0x01, 0x0c, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xff, 0x7f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xf6, 0xf7, 0xff, 0x00, 0x00, 0x00, 0x10, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x7b, 0xdd, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x6d, 0xff, 0xde, 0xde, 0x00, 0x00, 0x00, 0x00, 0x23, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0xde, 0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x6d, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x08, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xf7, 0xfb, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbb, 0xff, 0x6d, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x40, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0xbd, 0xdf, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0xdb, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xef, 0x7d, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0xff, 0xff, 0xb6, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0xdb, 0xf7, 0xc0, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xc8, 0x77, 0x6e, 0xff, 0x80, 0x00, 0x00, 0x00, 0x02, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x76, 0xff, 0x60, 0x00, 0x00, 0x00, 0x37, 0xff, 0xff, 0xff, 0x7d, 0xfb, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0xdf, 0xbd, 0xc0, 0x00, 0x00, 0x00, 0x3d, 0xff, 0xfe, 0xff, 0xdf, 0xbf, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xed, 0xef, 0xc0, 0x00, 0x00, 0x00, 0x7f, 0xbf, 0xb7, 0xfb, 0xff, 0xfd, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0b, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xf7, 0x7f, 0xe0, 0x00, 0x00, 0x00, 0x76, 0xfb, 0xfd, 0xde, 0xff, 0xdf, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xdf, 0xf6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xde, 0xdf, 0xf7, 0xbf, 0xfb, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xfd, 0xbf, 0xc0, 0x00, 0x00, 0x00, 0xbb, 0x77, 0xf6, 0xff, 0xef, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xfd, 0xc0, 0x00, 0x00, 0x00, 0xef, 0xfd, 0xb7, 0xbb, 0x7b, 0x7f, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0xf7, 0xc0, 0x00, 0x00, 0x00, 0xfd, 0xbb, 0x6d, 0xaf, 0xff, 0xee, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x42, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0xff, 0xc0, 0x00, 0x00, 0x00, 0xf7, 0xee, 0xc9, 0x6c, 0xbe, 0xfb, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xdf, 0xc0, 0x00, 0x00, 0x01, 0xde, 0xdb, 0xbb, 0x53, 0xa7, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0xc0, 0x00, 0x00, 0x00, 0xff, 0xdb, 0x26, 0x56, 0xfb, 0xfe, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x10, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xc0, 0x00, 0x00, 0x00, 0xfb, 0x6c, 0xd8, 0x89, 0x2e, 0xf3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0x80, 0x00, 0x00, 0x01, 0xef, 0xee, 0x92, 0x2b, 0x6d, 0xfb, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x01, 0xbe, 0xdb, 0x26, 0x4c, 0xdb, 0xcc, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x40, 0x00, 0x00, 0x01, 0xfb, 0xd9, 0xcd, 0x56, 0xdf, 0xf7, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x01, 0xff, 0xee, 0x73, 0x33, 0x67, 0xd7, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x01, 0xb7, 0xb6, 0x9a, 0xcd, 0xbf, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x01, 0xfd, 0xd9, 0xec, 0xf5, 0xbd, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xff, 0xdb, 0x6f, 0x36, 0xff, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x04, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xef, 0xb6, 0xb3, 0xdb, 0xfb, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x01, 0xfd, 0xed, 0xbc, 0xdb, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0x10, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xf7, 0x6d, 0xcf, 0x6f, 0xe7, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x02, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xff, 0xdb, 0x73, 0xbf, 0xbb, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x7e, 0xdb, 0xde, 0xfe, 0x5b, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x01, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x77, 0xee, 0xdf, 0xf9, 0xdd, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x7d, 0xbb, 0x6d, 0xb3, 0x37, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x7f, 0xdb, 0x7b, 0xe6, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x04, 0x20, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x77, 0xdd, 0xdf, 0x5d, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x3d, 0xf7, 0xf7, 0x59, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x40, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3f, 0x7e, 0xfe, 0xee, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3b, 0xdb, 0xfa, 0xb7, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x00, 0x23, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3e, 0xff, 0xfd, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x08, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1f, 0xbf, 0xe5, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x85, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1d, 0xff, 0xbc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xb7, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x20, 0x11, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0xff, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x80, 0x00, 0x00, 0x84, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1f, 0xf7, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x02, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0e, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x02, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x20, 0x00, 0x00, 0x0f, 0xef, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x20, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x01, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x84, 0x00, 0x00, 0x0f, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x66, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x40, 0x80, 0x00, 0x0f, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xe9, 0x10, 0x00, 0x00, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc4, 0x24, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x64, 0xcc, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb1, 0x01, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x76, 0x7b, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x48, 0x40, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xdf, 0xfe, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x92, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0xff, 0xff, 0x80, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x20, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf7, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x48, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xbf, 0xfd, 0xa7, 0xe0, 0x00, 0x00, 0x13, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0xff, 0xdb, 0x7b, 0xf0, 0x00, 0x00, 0x0b, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xff, 0x76, 0xdb, 0xf0, 0x00, 0x00, 0x0b, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xfd, 0xed, 0xa6, 0xf8, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x7f, 0xf7, 0x3b, 0x7d, 0xbc, 0x00, 0x00, 0x05, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xff, 0xdd, 0xdb, 0x55, 0xbe, 0x00, 0x00, 0x11, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x76, 0xdc, 0xd6, 0xde, 0x00, 0x00, 0x02, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x01, 0xdf, 0xfd, 0xb6, 0xe7, 0xbb, 0x6f, 0x00, 0x00, 0x02, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xf6, 0xdb, 0x39, 0x6b, 0x6f, 0x80, 0x00, 0x01, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xff, 0xf6, 0xdb, 0xde, 0x4c, 0xdb, 0x80, 0x00, 0x08, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xbb, 0x6c, 0xd3, 0xdd, 0xb7, 0xc0, 0x00, 0x02, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x17, 0xff, 0xad, 0xb7, 0x6d, 0xb3, 0x6f, 0xe0, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfd, 0xed, 0xb7, 0x6c, 0xae, 0xdb, 0xe0, 0x00, 0x04, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x73, 0x6c, 0xdb, 0xec, 0xdb, 0xf0, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfb, 0x9e, 0xcf, 0x9b, 0x6d, 0xb6, 0xf0, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xed, 0xec, 0xf3, 0x6d, 0x6f, 0x6d, 0xf0, 0x00, 0x02, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xf6, 0x6b, 0x3c, 0xe7, 0x73, 0x6d, 0xf8, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x03, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xb7, 0xb7, 0xcf, 0x3b, 0x9d, 0xb6, 0xf8, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x9f, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xb9, 0x9c, 0xf3, 0x6c, 0xed, 0xb7, 0xf8, 0x00, 0x02, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xed, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xce, 0x6b, 0x36, 0xdd, 0xee, 0xd9, 0xfc, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xf8, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xfe, 0xf3, 0xb3, 0xcd, 0x97, 0x33, 0x7e, 0xfc, 0x00, 0x00, 0x8b, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x67, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfb, 0x39, 0x9c, 0xfb, 0x76, 0xfd, 0xe7, 0xbc, 0x00, 0x00, 0x23, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x93, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0xfd, 0xce, 0x6f, 0x2e, 0xdb, 0xcf, 0x7d, 0xfc, 0x00, 0x01, 0x0d, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x98, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf6, 0xdb, 0x69, 0xb3, 0xbb, 0x7b, 0x9f, 0x7e, 0x00, 0x00, 0x05, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0xc9, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xf6, 0xb3, 0x36, 0xdd, 0x6d, 0xbc, 0xf7, 0xfe, 0x00, 0x00, 0x23, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x23, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0xdb, 0x2c, 0xde, 0xdd, 0xdd, 0xe7, 0xf9, 0xbe, 0x00, 0x00, 0x82, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x24, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xed, 0xcd, 0xcb, 0x66, 0xd7, 0x7f, 0x6f, 0xfe, 0x00, 0x02, 0x08, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xd3, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7f, 0xb4, 0xd6, 0x79, 0xbb, 0x76, 0xd9, 0xde, 0x7e, 0x00, 0x00, 0x05, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xdb, 0x60, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x07, 0xff, 0xdb, 0x33, 0x36, 0xdb, 0x6e, 0xff, 0xb7, 0xdf, 0x00, 0x00, 0x21, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf6, 0xe0, 0x00, 0x03, 0x20, 0x00, 0x00, 0x0f, 0xff, 0x6b, 0x6d, 0xce, 0xdd, 0xbb, 0xa6, 0xfd, 0xfe, 0x00, 0x00, 0x08, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe0, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1b, 0xff, 0xac, 0x89, 0x7b, 0x36, 0xdb, 0x7e, 0xdb, 0x7e, 0x00, 0x01, 0x02, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc8, 0x00, 0x60, 0x00, 0x00, 0x00, 0x76, 0xfe, 0xe4, 0xb6, 0x6d, 0xee, 0xde, 0xdb, 0xff, 0xde, 0x00, 0x00, 0x23, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe2, 0x01, 0xc2, 0x00, 0x00, 0x00, 0xc1, 0xfe, 0xd3, 0x33, 0xb5, 0xbb, 0x76, 0xef, 0x6d, 0xff, 0x00, 0x00, 0x08, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xb8, 0x07, 0x10, 0x00, 0x00, 0x03, 0xa0, 0xfb, 0x32, 0x49, 0x9c, 0xcd, 0xed, 0xb5, 0xff, 0x6e, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x36, 0x40, 0x00, 0x00, 0x0f, 0x08, 0xfd, 0x89, 0x9c, 0xef, 0x76, 0xef, 0xb7, 0xb7, 0xff, 0x00, 0x00, 0x24, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xdc, 0x00, 0x00, 0x00, 0x7c, 0x42, 0xf4, 0xcc, 0xa7, 0x6b, 0x77, 0x3a, 0xfe, 0xfd, 0xbf, 0x00, 0x00, 0x81, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfd, 0xa4, 0x00, 0x03, 0x60, 0x10, 0xfe, 0x62, 0x69, 0xbb, 0x99, 0xfb, 0xcf, 0xdf, 0xef, 0x00, 0x00, 0x01, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xf9, 0x24, 0x18, 0x00, 0x05, 0xeb, 0x33, 0x3b, 0xb6, 0xef, 0xde, 0x7b, 0x76, 0xff, 0x00, 0x00, 0x04, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0xff, 0xf6, 0x80, 0x00, 0x21, 0xf9, 0x8c, 0xce, 0xd6, 0xee, 0x77, 0xff, 0xff, 0xbf, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xff, 0xff, 0x90, 0x00, 0x01, 0x0b, 0xdc, 0x49, 0x66, 0xdb, 0x3b, 0xed, 0xb5, 0xad, 0xef, 0x00, 0x00, 0x02, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xda, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe6, 0x66, 0x76, 0xed, 0xed, 0xbe, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0xde, 0x00, 0x00, 0x00, 0x00, 0x27, 0xb3, 0x24, 0x9b, 0x36, 0xdf, 0xd7, 0xdb, 0x73, 0xdf, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xf4, 0x00, 0x00, 0x00, 0x01, 0x0f, 0xd8, 0x99, 0xbb, 0xdb, 0x76, 0x7d, 0xff, 0xde, 0xff, 0x00, 0x00, 0x11, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xb8, 0x00, 0x00, 0x00, 0x04, 0x4f, 0x6c, 0x93, 0x6d, 0xdb, 0x6f, 0xee, 0xed, 0xff, 0xbf, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0xec, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xa6, 0x66, 0x67, 0x6e, 0xed, 0xbb, 0xbf, 0x37, 0xef, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, 0x00, 0x08, 0x9e, 0xd9, 0x2d, 0xbb, 0x6d, 0xbd, 0xbf, 0xd7, 0xfd, 0xff, 0x00, 0x00, 0x04, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xd3, 0x25, 0xbb, 0x77, 0xb7, 0x6d, 0x7d, 0xdf, 0x7f, 0x00, 0x00, 0x00, 0x93, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xb0, 0x00, 0x00, 0x00, 0x11, 0x3f, 0x64, 0xd6, 0x66, 0xda, 0xf7, 0x7f, 0xef, 0x77, 0xdf, 0x00, 0x00, 0x00, 0x2b, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfc, 0x20, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x6c, 0x9b, 0xdd, 0xbb, 0x9d, 0xdb, 0xbb, 0xfd, 0xff, 0x00, 0x00, 0x10, 0x23, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x20, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x60, 0x00, 0x00, 0x00, 0x22, 0x7e, 0x9b, 0x29, 0x5b, 0x6e, 0xfd, 0xfd, 0xfe, 0xef, 0x6f, 0x00, 0x00, 0x00, 0x99, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xc2, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xbd, 0xb2, 0x67, 0x6e, 0xdb, 0x6f, 0x6f, 0x6f, 0xbf, 0xff, 0x00, 0x00, 0x00, 0x0d, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x68, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x00, 0x00, 0x00, 0x08, 0xfb, 0x65, 0x9c, 0xed, 0xb7, 0x7b, 0xfb, 0xfb, 0xfb, 0xbe, 0x00, 0x00, 0x00, 0x43, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xc9, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xc0, 0x00, 0x00, 0x00, 0x42, 0x7a, 0xcd, 0x33, 0xb5, 0xb6, 0xdb, 0xb6, 0xde, 0xee, 0xfe, 0x00, 0x00, 0x02, 0x18, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0xe0, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xc0, 0x00, 0x00, 0x00, 0x10, 0xf6, 0xb3, 0x6e, 0xb6, 0xde, 0xf6, 0xff, 0x77, 0xbf, 0xff, 0x00, 0x00, 0x00, 0x0d, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x64, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x80, 0x00, 0x00, 0x00, 0x04, 0xfd, 0x9a, 0xcd, 0xdb, 0x77, 0xb7, 0xcd, 0xfd, 0xfd, 0xfe, 0x00, 0x00, 0x00, 0x41, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x91, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0x80, 0x00, 0x00, 0x00, 0x43, 0xed, 0x6c, 0xb5, 0x6d, 0xb5, 0xbd, 0xff, 0xaf, 0xf7, 0xbe, 0x00, 0x00, 0x00, 0x14, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xc8, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0x00, 0x11, 0xf6, 0x67, 0x37, 0x6d, 0xbd, 0xef, 0x6d, 0xfb, 0xbf, 0xfc, 0x00, 0x00, 0x00, 0x06, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x62, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x80, 0x00, 0x00, 0x00, 0x85, 0xdb, 0x99, 0xdb, 0x76, 0xcf, 0x6f, 0x7f, 0x7e, 0xfe, 0xfc, 0x00, 0x00, 0x01, 0x22, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x91, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xec, 0xda, 0x6d, 0x9b, 0x7b, 0xdb, 0xdb, 0xdf, 0xf7, 0xfc, 0x00, 0x00, 0x00, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x14, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xb6, 0x66, 0xa6, 0xed, 0xee, 0xfe, 0xfe, 0xf7, 0xdf, 0xf8, 0x00, 0x00, 0x00, 0x06, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x4d, 0x42, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x27, 0xf7, 0x35, 0xbb, 0x6d, 0xb6, 0xb7, 0xb7, 0xbd, 0xfe, 0xf0, 0x00, 0x00, 0x00, 0x41, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x16, 0x63, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x01, 0x27, 0xd9, 0x99, 0x4d, 0x9b, 0x77, 0xfd, 0xfd, 0xef, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x09, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x12, 0x8d, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xda, 0xce, 0xf6, 0xf6, 0xdd, 0x5f, 0x6f, 0x7f, 0x77, 0xc0, 0x00, 0x00, 0x00, 0x22, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x4c, 0x93, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xee, 0x00, 0x00, 0x00, 0x00, 0x97, 0xa6, 0x66, 0x93, 0x6d, 0xbd, 0xf3, 0xfb, 0xdf, 0xfd, 0x80, 0x00, 0x00, 0x00, 0x02, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x6c, 0x32, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xb9, 0xb3, 0x7d, 0xbb, 0xef, 0xbe, 0xdf, 0xfb, 0xef, 0x00, 0x00, 0x00, 0x00, 0x09, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x27, 0x4c, 0xc6, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfc, 0x00, 0x00, 0x00, 0x02, 0x4e, 0xdb, 0x39, 0xcd, 0xb6, 0x73, 0x6f, 0xf6, 0xef, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x18, 0xc7, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x66, 0x4e, 0x76, 0xdd, 0xdf, 0x7b, 0x7f, 0xbf, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x04, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x92, 0x36, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf8, 0x00, 0x00, 0x00, 0x01, 0x1d, 0xb5, 0xd3, 0xb6, 0xdb, 0xdd, 0xdf, 0xdb, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1b, 0x38, 0x50, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x00, 0x08, 0x5e, 0xdd, 0x3c, 0xdb, 0x6e, 0x77, 0xf6, 0xfe, 0xfd, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x21, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x49, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x00, 0x02, 0x5e, 0xcb, 0xa7, 0x6d, 0xb7, 0xf6, 0xbf, 0xbf, 0xf7, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x08, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x86, 0xc2, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x7a, 0xdb, 0x36, 0xd9, 0x9f, 0xed, 0xef, 0xdf, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x93, 0x82, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0x66, 0xdf, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x00, 0x04, 0xbd, 0x56, 0x72, 0xdb, 0x6f, 0xf9, 0xff, 0x7b, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x23, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfd, 0xdf, 0xf7, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x01, 0x3d, 0xd9, 0x9e, 0xdb, 0x6d, 0x6f, 0x6f, 0xdf, 0x7e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x10, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0xdf, 0x7b, 0x7e, 0x6f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x08, 0x7b, 0x3e, 0xeb, 0x6d, 0xb7, 0x7f, 0xfb, 0xff, 0xf7, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x7b, 0x6f, 0xdf, 0xbb, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x02, 0x7b, 0xcb, 0x39, 0xb6, 0xde, 0xd6, 0xde, 0xee, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0f, 0xfb, 0xfd, 0xf9, 0xde, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x02, 0xfc, 0xf9, 0xd6, 0xdb, 0x6b, 0xf7, 0xf7, 0xbf, 0xef, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x04, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3f, 0xf6, 0xb7, 0x7e, 0x77, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x08, 0xf7, 0x36, 0xde, 0xdb, 0x6f, 0x3d, 0xbd, 0xfd, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3d, 0xed, 0xbf, 0xf7, 0xed, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x22, 0xf7, 0x66, 0xb3, 0x6d, 0xb7, 0xef, 0xef, 0xf7, 0xdf, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7f, 0x6f, 0xed, 0xe5, 0xbb, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, 0x00, 0x04, 0xf9, 0xdb, 0xad, 0xb6, 0xdc, 0xdb, 0x7b, 0xbf, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x04, 0x27, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7b, 0xf2, 0xff, 0xf9, 0xb6, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x11, 0xee, 0xda, 0xed, 0xb6, 0xdf, 0xdf, 0xdf, 0xff, 0x6f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfe, 0xdf, 0xb6, 0xcb, 0x6d, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x05, 0xed, 0xb6, 0xb3, 0x6d, 0xe7, 0x66, 0xf7, 0x77, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xcf, 0xd9, 0x3f, 0xe7, 0xdb, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x45, 0xb7, 0x6d, 0xbd, 0xdb, 0x3d, 0xbf, 0xbf, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x27, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0xcf, 0xec, 0x5b, 0xb4, 0xdf, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x13, 0xda, 0xdb, 0x4d, 0xb6, 0xfb, 0xbb, 0xef, 0xef, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x26, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x97, 0xb4, 0x1f, 0x9f, 0xf5, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x13, 0xee, 0xd3, 0x76, 0xb7, 0xae, 0xee, 0xfd, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x27, 0xd0, 0x1d, 0xef, 0x3f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x4b, 0xb5, 0xbd, 0xb6, 0xd9, 0xbb, 0xef, 0xbf, 0xdf, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x23, 0xd8, 0x9f, 0xbc, 0x0f, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x0b, 0xdb, 0x66, 0xcd, 0xde, 0xf7, 0x7b, 0xef, 0xfb, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x0b, 0xb0, 0x3f, 0xb9, 0xb6, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0xa7, 0x6b, 0x5a, 0xdb, 0x66, 0xdd, 0xde, 0xff, 0x7f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x15, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x4f, 0xe4, 0x6d, 0xe8, 0x27, 0xbf, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x27, 0xbd, 0xdb, 0x76, 0xfb, 0x7e, 0xf7, 0xb7, 0xf7, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x57, 0x72, 0x7f, 0x72, 0x4d, 0xf7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, 0x01, 0x1f, 0xb6, 0xdb, 0x6d, 0x9b, 0xd7, 0xbd, 0xfe, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x17, 0xb0, 0x9f, 0xb1, 0x2f, 0x5d, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, 0x04, 0x4f, 0x66, 0xb6, 0xbb, 0x6d, 0xbd, 0xef, 0xdf, 0xdd, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x26, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0xbd, 0xb4, 0xfb, 0xb4, 0xb7, 0xdf, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x4f, 0x7b, 0xb5, 0xae, 0xed, 0xbb, 0x7b, 0xfd, 0xf7, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0xdf, 0xf2, 0x7f, 0xf2, 0x9e, 0xf7, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, 0x01, 0x3f, 0x9b, 0x6d, 0x6d, 0xb6, 0xef, 0xdf, 0x6f, 0xfe, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0xfb, 0x79, 0xed, 0xb0, 0x6f, 0xbd, 0xf2, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x10, 0x8e, 0xed, 0xdb, 0x73, 0x77, 0xbd, 0xfd, 0xfb, 0xbb, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1b, 0xee, 0xdf, 0xbe, 0xe5, 0x6f, 0xef, 0xff, 0xff, 0xff, 0xfb, 0x4c, 0x90, 0x04, 0xbf, 0x80, 0x00, 0x00, 0x02, 0x5e, 0xed, 0x76, 0xde, 0xdd, 0xdf, 0x6f, 0xff, 0xef, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1e, 0xfe, 0xe6, 0xf7, 0x73, 0x3d, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x08, 0x5f, 0x37, 0x35, 0xb6, 0xdb, 0x73, 0xff, 0x6f, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x37, 0xb7, 0xbf, 0xdd, 0xb8, 0xff, 0xde, 0xed, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x10, 0x01, 0x3d, 0xdd, 0xcd, 0xb7, 0x6f, 0xbe, 0xdb, 0xfd, 0xfd, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3d, 0xfd, 0xed, 0xfe, 0xdf, 0xf3, 0xb7, 0xe6, 0xcc, 0x12, 0x49, 0x6d, 0xbe, 0xc9, 0x7f, 0x00, 0x00, 0x00, 0x11, 0x3e, 0xdb, 0x7b, 0x6d, 0xb9, 0xef, 0x7e, 0xdf, 0xef, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3b, 0x6f, 0x7f, 0x6f, 0x77, 0xce, 0xfd, 0xf2, 0x6b, 0xdb, 0x69, 0x24, 0xa2, 0x6d, 0xff, 0x00, 0x00, 0x00, 0x40, 0xde, 0xee, 0x9b, 0x6d, 0xb7, 0x7b, 0xf7, 0xff, 0x7f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x6f, 0xbb, 0xdb, 0x79, 0xdf, 0x7e, 0xde, 0xfd, 0xb2, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xff, 0x00, 0x00, 0x01, 0x06, 0x3b, 0x36, 0xed, 0xb6, 0xf7, 0x9e, 0xdf, 0xbb, 0xf7, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x0a, 0x00, 0x00, 0x18, 0x00, 0x00, + 0x00, 0x00, 0x74, 0xfe, 0xf7, 0xdf, 0xbb, 0xdb, 0xf7, 0xe5, 0x9d, 0xa4, 0x96, 0xdb, 0x59, 0x96, 0x7e, 0x00, 0x00, 0x44, 0x00, 0xfd, 0xd9, 0xb6, 0xdb, 0x5e, 0xff, 0xfd, 0xef, 0xbf, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x24, 0x00, 0x00, 0x40, 0x00, 0x00, + 0x92, 0x74, 0x7f, 0xce, 0xdd, 0xe6, 0xec, 0xef, 0x7d, 0xf6, 0x65, 0xbb, 0x69, 0x24, 0xce, 0x7b, 0xff, 0x00, 0x20, 0x00, 0x12, 0x7d, 0xef, 0x5b, 0x6d, 0xdb, 0xed, 0xff, 0x7f, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x90, 0x20, 0x01, 0x00, 0x00, 0x00, + 0x16, 0x84, 0xeb, 0x7b, 0xde, 0x7e, 0xdf, 0xbd, 0xdf, 0x73, 0x6c, 0xcb, 0x6f, 0x6d, 0xb3, 0xcd, 0xfe, 0x00, 0x00, 0x00, 0x02, 0x7b, 0x36, 0x6d, 0xb6, 0xff, 0x7f, 0x77, 0xfd, 0xdf, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x09, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x59, 0x09, 0x0c, 0x01, 0x00, 0x00, + 0x5b, 0x01, 0xee, 0xdd, 0xb7, 0xdb, 0x73, 0xf7, 0xb7, 0xed, 0x9b, 0x6c, 0xc9, 0x9b, 0x36, 0x76, 0x7e, 0x00, 0x41, 0x10, 0x89, 0xf6, 0xd9, 0xb6, 0xdb, 0xb7, 0xdb, 0xff, 0xef, 0xf7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xd9, 0x20, 0x42, 0x60, 0x04, 0x00, 0x00, + 0xc9, 0x68, 0xfb, 0xd7, 0x77, 0xbd, 0xde, 0x76, 0xfd, 0xec, 0xe6, 0x66, 0xb6, 0xd2, 0xcd, 0xb7, 0xfe, 0x00, 0x00, 0x02, 0x04, 0x76, 0xef, 0xb6, 0xdb, 0x7d, 0xff, 0xbb, 0x7e, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0xd1, 0x26, 0x52, 0xa0, 0x84, 0x22, 0x20, + 0x24, 0x0a, 0xdb, 0x76, 0xdc, 0xef, 0xb7, 0xde, 0xdf, 0x76, 0xdb, 0x9b, 0x36, 0x76, 0xdb, 0xb9, 0xfe, 0x00, 0x00, 0x20, 0x24, 0xfb, 0x36, 0xdb, 0x6f, 0x6f, 0x77, 0xff, 0xff, 0xdf, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xc9, 0x98, 0x88, 0x31, 0x18, 0x90, + 0x92, 0x93, 0xf6, 0xdb, 0xbf, 0xfb, 0xbd, 0xdb, 0xf3, 0xf3, 0x59, 0xb9, 0xc9, 0x9d, 0x36, 0xcf, 0xfe, 0x04, 0x00, 0x00, 0x09, 0xed, 0xd9, 0xdb, 0x6d, 0xef, 0xde, 0xdf, 0xbb, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x93, 0x60, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0xa4, 0xd9, 0x86, 0x4b, 0x19, 0xd6, 0xc0, + 0x48, 0x91, 0xbd, 0xbb, 0x67, 0x3d, 0xed, 0x7f, 0x7e, 0xed, 0xce, 0x66, 0x6e, 0xcd, 0xed, 0x76, 0xfc, 0x10, 0x09, 0x09, 0x13, 0xed, 0xde, 0x6d, 0xbd, 0xbb, 0xff, 0xfb, 0xff, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xb2, 0x42, 0x26, 0x50, 0xce, 0x46, 0x20, + 0x24, 0x49, 0xed, 0xa6, 0xfd, 0xef, 0x6f, 0x6d, 0xdf, 0xed, 0xb6, 0xde, 0xb6, 0x73, 0x3b, 0x77, 0xfe, 0x00, 0x00, 0x00, 0x44, 0xf6, 0x67, 0xb6, 0xe7, 0xfe, 0xed, 0xfe, 0xf7, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb3, 0x08, 0x99, 0x14, 0xb0, 0x49, 0x20, + 0x93, 0x25, 0xee, 0xed, 0x9f, 0xfb, 0x73, 0xee, 0xf7, 0xf6, 0xf7, 0xb3, 0x99, 0xbe, 0xdb, 0x9d, 0xfc, 0x00, 0x00, 0x44, 0x13, 0xd7, 0xb9, 0xb6, 0xde, 0xdf, 0xbf, 0xdf, 0xbf, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x80, 0x00, 0x00, 0x00, 0x02, 0x43, 0x13, 0xa4, 0xa4, 0xd1, 0x64, 0x87, 0x31, 0x90, + 0x48, 0x93, 0xf3, 0x6d, 0xe6, 0x9f, 0x9e, 0xfb, 0xbd, 0xdb, 0x59, 0xbb, 0x6f, 0xab, 0xd6, 0xf7, 0xfc, 0x40, 0x24, 0x10, 0x27, 0xd9, 0xbe, 0xdb, 0x7b, 0xf7, 0xf7, 0xfb, 0xee, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x60, 0x00, 0x00, 0x00, 0x04, 0xd8, 0xd8, 0xec, 0x93, 0x14, 0x23, 0x31, 0x26, 0x40, + 0x64, 0x93, 0xdd, 0x9b, 0x7b, 0xf6, 0xff, 0x3f, 0xef, 0xed, 0xde, 0x6d, 0xea, 0xec, 0x76, 0xdb, 0xfc, 0x00, 0x00, 0x00, 0x89, 0xbe, 0xcd, 0xdb, 0xbb, 0x7d, 0xdf, 0x7f, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0xc1, 0x02, 0x44, 0x00, 0x2d, 0x92, 0x25, 0xa2, 0x48, 0x4b, 0x98, 0x4c, 0x89, 0x20, + 0x12, 0x41, 0xfd, 0xb3, 0x5e, 0xfd, 0xe9, 0xe6, 0xfb, 0xed, 0xb7, 0xdd, 0x3b, 0x77, 0xbb, 0x7b, 0xfc, 0x00, 0x08, 0x42, 0x37, 0xa6, 0xf7, 0x6e, 0xef, 0xdf, 0x7f, 0xf7, 0x7f, 0xfc, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xa7, 0x79, 0xd9, 0x69, 0xa8, 0xc4, 0x85, 0xa6, 0x66, 0x62, 0x44, 0xc2, 0xd9, 0x20, + 0x92, 0x4d, 0xce, 0x6d, 0xd7, 0xbf, 0x6f, 0xfe, 0xdf, 0xf6, 0xec, 0xd7, 0xdd, 0x9b, 0xad, 0xcf, 0xfc, 0x10, 0x41, 0x00, 0x17, 0xfb, 0x36, 0xed, 0xfd, 0xf7, 0xf6, 0xff, 0xfb, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xac, 0xdf, 0x3f, 0xcc, 0x32, 0x4c, 0x93, 0x24, 0x92, 0x14, 0x52, 0x32, 0x44, 0x90, + 0xa4, 0x93, 0xfb, 0x6d, 0xb9, 0xe7, 0xde, 0x9b, 0xf7, 0xdb, 0x3b, 0x76, 0xd6, 0xec, 0xed, 0xfd, 0xf8, 0x00, 0x00, 0x08, 0xce, 0x5b, 0xcd, 0xb7, 0x37, 0x7f, 0xdf, 0xee, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xe1, 0x80, 0x20, 0x13, 0x46, 0x62, 0x59, 0xc9, 0x19, 0x91, 0x93, 0x0d, 0x24, 0x90, + 0x69, 0x23, 0xbb, 0x36, 0xef, 0x7d, 0xb6, 0xff, 0x7d, 0xdb, 0xdb, 0x6c, 0xf6, 0xf7, 0x77, 0x37, 0xf9, 0x02, 0x08, 0x20, 0x2b, 0xd6, 0x7b, 0x76, 0xfd, 0xdb, 0x7f, 0xff, 0xff, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc8, 0x2c, 0xc2, 0x49, 0x71, 0x99, 0x05, 0xb2, 0x44, 0x4a, 0x2c, 0xc9, 0x32, 0x60, + 0x09, 0x49, 0xec, 0xdb, 0x7f, 0xdd, 0xfb, 0xe7, 0xdf, 0xec, 0xdd, 0xbb, 0x3b, 0x3d, 0x9d, 0xf7, 0xfc, 0x00, 0x40, 0x81, 0x2f, 0x77, 0x6e, 0xdb, 0xdd, 0xff, 0xfb, 0xbd, 0xff, 0xf8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x66, 0x49, 0x19, 0x24, 0x8c, 0x91, 0x65, 0xa4, 0xc4, 0xc8, 0xa1, 0x32, 0x89, 0x00, + 0xd6, 0x53, 0xef, 0x6d, 0xc0, 0xf6, 0xdf, 0x7c, 0xf7, 0xbf, 0xb6, 0xdb, 0xcf, 0xed, 0xfb, 0xdd, 0xf8, 0x20, 0x02, 0x04, 0x9d, 0x99, 0xb6, 0xdb, 0x77, 0x6f, 0xef, 0xff, 0xff, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0xc1, 0x52, 0x44, 0xa4, 0x82, 0x46, 0x11, 0xa5, 0x32, 0x25, 0x96, 0x48, 0x89, 0x30, + 0x31, 0x91, 0xfb, 0x6d, 0x92, 0x3e, 0xdd, 0xdf, 0xbf, 0xd3, 0xb6, 0xdc, 0xf4, 0xdb, 0x6e, 0x77, 0xf8, 0x82, 0x20, 0x00, 0x9e, 0xde, 0xdb, 0x77, 0xff, 0xfd, 0xbf, 0x7f, 0xfd, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xd9, 0x12, 0x44, 0x92, 0x69, 0x20, 0xcd, 0xa4, 0x26, 0x24, 0x56, 0xc9, 0x32, 0x40, + 0x08, 0x25, 0xdb, 0xb6, 0x13, 0x3b, 0x76, 0xe7, 0xef, 0x7e, 0xfd, 0xe7, 0xbf, 0xde, 0xdb, 0xef, 0xf8, 0x00, 0x84, 0x22, 0x7b, 0x66, 0xdb, 0xdd, 0xbb, 0xbf, 0xff, 0xf7, 0xef, 0xb7, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x62, 0x49, 0x32, 0x49, 0x09, 0x29, 0x25, 0xb2, 0xc9, 0x92, 0x48, 0x24, 0x44, 0x80, + 0xcb, 0x25, 0xec, 0xdc, 0x48, 0xcf, 0xf7, 0xbd, 0xff, 0xb6, 0xcf, 0x3e, 0xcb, 0x76, 0xf7, 0xbb, 0xf9, 0x08, 0x00, 0x09, 0x3d, 0xbb, 0x6d, 0xbd, 0xef, 0xfb, 0x7d, 0xff, 0xba, 0xdf, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xc4, 0x8c, 0x89, 0x24, 0x44, 0x8b, 0x27, 0x92, 0x10, 0x4a, 0xa3, 0x25, 0x11, 0x20, + 0x64, 0x93, 0xef, 0x69, 0x04, 0x9d, 0x9d, 0xff, 0x37, 0xb7, 0xbb, 0xed, 0xfb, 0x6d, 0xbd, 0xb7, 0xf8, 0x02, 0x10, 0x81, 0x76, 0xcd, 0xb6, 0xef, 0x7e, 0xff, 0xf7, 0xfb, 0x6e, 0x5f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xd1, 0x22, 0x49, 0x12, 0x54, 0x90, 0x91, 0xc9, 0xb6, 0x48, 0xa8, 0x91, 0x26, 0x50, + 0x10, 0xc8, 0xf7, 0x78, 0x03, 0x2f, 0x7e, 0xd3, 0xfe, 0xdb, 0x7a, 0xed, 0xbd, 0xef, 0xce, 0xf7, 0xf8, 0x40, 0x40, 0x04, 0xfb, 0x76, 0xde, 0xfb, 0xff, 0xef, 0xff, 0xb6, 0xd7, 0xe6, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc9, 0x23, 0x24, 0x49, 0x12, 0x44, 0x93, 0x64, 0x42, 0x65, 0x0a, 0x48, 0x98, 0x90, + 0x96, 0x25, 0xdd, 0x98, 0x09, 0x6f, 0xe7, 0xbe, 0xdb, 0xfb, 0xdf, 0xbf, 0xa7, 0xba, 0xfb, 0xdf, 0xf9, 0x08, 0x02, 0x42, 0xed, 0xb6, 0xdb, 0x6e, 0xed, 0xff, 0xfe, 0xdc, 0xd9, 0xbf, 0xbf, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xa4, 0x98, 0x92, 0x49, 0x22, 0x49, 0x25, 0xb2, 0x59, 0x11, 0x52, 0x4a, 0x42, 0x20, + 0x61, 0x25, 0xfb, 0xf0, 0x44, 0x96, 0xfd, 0xef, 0xff, 0x2e, 0xed, 0xb6, 0xfa, 0xde, 0xed, 0x6f, 0xf8, 0x01, 0x08, 0x12, 0x7c, 0xdb, 0x77, 0x7f, 0xbf, 0xdd, 0xb6, 0xcf, 0x6e, 0x99, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe4, 0x46, 0x49, 0x24, 0x99, 0x26, 0x4d, 0x92, 0x9c, 0x92, 0x44, 0x92, 0x49, 0x40, + 0x0c, 0xc8, 0xee, 0x72, 0x10, 0x97, 0x9e, 0x7b, 0x6f, 0xfe, 0xee, 0xf7, 0xbf, 0x77, 0x6f, 0xbb, 0xf8, 0x24, 0x00, 0x05, 0xf3, 0x6d, 0xdd, 0xdb, 0xff, 0x7f, 0xf7, 0x73, 0x6e, 0xef, 0x79, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x49, 0x21, 0x24, 0x92, 0x44, 0x91, 0x91, 0xc9, 0xa4, 0x8a, 0x24, 0x91, 0x24, 0x40, + 0xb2, 0x12, 0xf7, 0xb0, 0x13, 0x37, 0xf3, 0xdf, 0xfe, 0xd7, 0xbb, 0xdd, 0xb7, 0xed, 0xdb, 0xff, 0xf8, 0x80, 0x20, 0x89, 0xdf, 0x6d, 0xbb, 0x7e, 0xf7, 0xfe, 0xd9, 0xdd, 0xb3, 0x7b, 0xff, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xc9, 0x2c, 0x92, 0x49, 0x26, 0x49, 0x25, 0x69, 0x32, 0x61, 0x99, 0x25, 0x24, 0x90, + 0x22, 0x65, 0xf6, 0xf1, 0x08, 0x46, 0x7f, 0xf5, 0xb7, 0xbd, 0xff, 0x7b, 0xdc, 0xef, 0xbd, 0x67, 0xf8, 0x01, 0x02, 0x09, 0xd9, 0xb6, 0xee, 0xef, 0xdf, 0xf6, 0xde, 0xdd, 0xbd, 0xdb, 0x67, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xe4, 0xc2, 0x49, 0x24, 0x91, 0x26, 0x49, 0xa4, 0xc9, 0x14, 0x42, 0x48, 0x92, 0x20, + 0xcc, 0x8c, 0xfd, 0xb0, 0x64, 0xdb, 0xdc, 0xdf, 0xff, 0x6f, 0x56, 0xee, 0xfb, 0xbb, 0xb7, 0xdf, 0xf8, 0x10, 0x10, 0x27, 0xee, 0xde, 0xdf, 0xbb, 0x7e, 0xdb, 0x66, 0xe6, 0xcd, 0xb6, 0xdf, 0xcf, 0x80, 0x00, 0x00, 0x00, 0x00, 0x81, 0x92, 0x19, 0x24, 0x92, 0x52, 0x23, 0x13, 0xb3, 0x64, 0x92, 0x48, 0x92, 0x49, 0x80, + 0x11, 0x92, 0xef, 0x74, 0x04, 0x37, 0xd7, 0xdb, 0x6d, 0xf7, 0xf7, 0xbd, 0xbf, 0xfe, 0xfb, 0xff, 0xf2, 0x42, 0x00, 0x23, 0x36, 0xdb, 0xd9, 0xff, 0xfb, 0xb9, 0xbb, 0x3b, 0x76, 0xee, 0xfb, 0xfb, 0x80, 0x00, 0x00, 0x00, 0x00, 0x27, 0xc9, 0x24, 0x92, 0x49, 0x12, 0x99, 0x94, 0x93, 0x24, 0x89, 0x29, 0x24, 0x48, 0x40, + 0xa4, 0x52, 0xfb, 0x71, 0x13, 0x2d, 0xbf, 0x7f, 0xff, 0xbc, 0xed, 0xf7, 0xd6, 0x6d, 0xde, 0x6f, 0xf8, 0x00, 0x42, 0x1b, 0xd9, 0xb6, 0x7f, 0xff, 0xee, 0xe6, 0xdb, 0xdb, 0x76, 0xdb, 0x6c, 0xf7, 0xe0, 0x00, 0x00, 0x00, 0x01, 0x03, 0x49, 0x64, 0x91, 0x24, 0x95, 0x84, 0xc5, 0xa4, 0xc9, 0x25, 0x26, 0x49, 0x26, 0x40, + 0xa6, 0x48, 0xf7, 0xd8, 0x49, 0x4f, 0xb9, 0xe6, 0xdb, 0xef, 0xbf, 0x7e, 0xfb, 0xff, 0x77, 0xf7, 0xf8, 0x10, 0x00, 0xc6, 0xdf, 0x6d, 0xef, 0x7b, 0x76, 0xde, 0xdc, 0xdd, 0x9b, 0x77, 0x6f, 0xbd, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x13, 0x44, 0x12, 0x4c, 0x92, 0x44, 0x66, 0x93, 0x2d, 0x92, 0x64, 0x90, 0x92, 0x21, 0x30, + 0x19, 0x24, 0xf6, 0xf8, 0x49, 0x7e, 0xef, 0x3f, 0xfe, 0xfb, 0xf7, 0xb6, 0xef, 0x9b, 0xfd, 0xbf, 0xf1, 0x04, 0x88, 0x27, 0xb3, 0x6f, 0xbd, 0xff, 0x5b, 0x73, 0xb7, 0x66, 0xed, 0xb5, 0xb3, 0xee, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x92, 0x92, 0x42, 0x49, 0x29, 0x92, 0xc9, 0xe6, 0x44, 0x92, 0x49, 0x24, 0x99, 0x00, + 0xc1, 0x32, 0x7e, 0xf9, 0x12, 0x1e, 0xef, 0xf9, 0xb7, 0xb6, 0xdd, 0xef, 0xbd, 0xfe, 0xdf, 0xef, 0xf8, 0x40, 0x01, 0x2f, 0x6d, 0xb6, 0xf7, 0xe6, 0xed, 0x9d, 0xb7, 0x7b, 0x6d, 0xbd, 0xbd, 0x7b, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x83, 0x92, 0x49, 0x22, 0x24, 0x89, 0x92, 0x65, 0x93, 0x29, 0x12, 0x49, 0x24, 0xc4, 0xc0, + 0x94, 0x89, 0x7b, 0x98, 0x42, 0xfb, 0xb9, 0xcf, 0xfd, 0xff, 0xff, 0x7b, 0xf7, 0x6f, 0xed, 0xbf, 0xf8, 0x02, 0x10, 0x4d, 0xdd, 0x9f, 0xdf, 0xbb, 0xb6, 0xed, 0xd9, 0x9b, 0x76, 0xce, 0xcd, 0xdf, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x26, 0x89, 0x24, 0x99, 0x90, 0x92, 0x46, 0xc5, 0xb5, 0x22, 0x49, 0x24, 0x92, 0x12, 0x20, + 0x32, 0x49, 0x7b, 0xfc, 0x89, 0x7f, 0x7e, 0x7e, 0xdb, 0x6d, 0xb3, 0xde, 0xde, 0xfb, 0x7e, 0xf7, 0xf1, 0x08, 0x02, 0x5e, 0x76, 0xfb, 0x7f, 0xbb, 0x76, 0xee, 0x6e, 0xed, 0x9b, 0x73, 0x7b, 0xb6, 0xfc, 0x00, 0x00, 0x00, 0x01, 0x06, 0xa4, 0x92, 0x44, 0x4a, 0x48, 0xc9, 0x69, 0xad, 0x14, 0x89, 0x24, 0x92, 0x49, 0x20, + 0x49, 0x52, 0x7e, 0x66, 0x33, 0x77, 0x67, 0xf7, 0xef, 0xff, 0xbe, 0xf7, 0xbb, 0xbf, 0xdb, 0xdf, 0xf8, 0x00, 0x49, 0x3b, 0x9b, 0x6f, 0xfc, 0xcd, 0x9b, 0x33, 0xb6, 0xdb, 0xed, 0xbd, 0xb6, 0xff, 0xde, 0x00, 0x00, 0x00, 0x00, 0x13, 0x92, 0x49, 0x24, 0x22, 0x4a, 0x63, 0x2b, 0x2a, 0x44, 0xa4, 0x92, 0x49, 0x24, 0x90, + 0x49, 0x12, 0x77, 0xff, 0x26, 0xfd, 0xfd, 0xbd, 0xbd, 0xb6, 0xef, 0xbd, 0xef, 0xed, 0xff, 0xff, 0xf8, 0x20, 0x01, 0x3b, 0xb7, 0x7f, 0xf7, 0x76, 0xed, 0xdd, 0xb6, 0x72, 0x6d, 0xad, 0xb6, 0xcd, 0x76, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x09, 0x24, 0x93, 0x24, 0x92, 0x32, 0xe1, 0xb2, 0x99, 0x24, 0x92, 0x49, 0x24, 0x90, + 0x92, 0x64, 0xbd, 0xbb, 0xcf, 0xcf, 0xbd, 0xef, 0xf7, 0xff, 0xfb, 0xef, 0x7d, 0xbe, 0xff, 0xff, 0xb0, 0x02, 0x24, 0xf6, 0xe7, 0xff, 0xb7, 0x76, 0xdd, 0xdd, 0xbb, 0xaf, 0xb6, 0xee, 0xdb, 0x7d, 0xf7, 0x00, 0x00, 0x00, 0x02, 0x46, 0x64, 0x92, 0x48, 0x91, 0x24, 0x92, 0x34, 0xb6, 0x22, 0x49, 0x24, 0x92, 0x49, 0x20, + 0x94, 0x89, 0x3f, 0xb7, 0xff, 0xfb, 0xb7, 0x6b, 0x76, 0xdb, 0x5e, 0xfb, 0xdf, 0xb7, 0xff, 0xff, 0xf8, 0x00, 0x08, 0xf6, 0x7d, 0xfe, 0xd9, 0x9b, 0x56, 0x66, 0xcd, 0xb9, 0xb6, 0xdb, 0x6d, 0xdb, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x17, 0x04, 0x92, 0x48, 0x92, 0x49, 0x99, 0xb6, 0xcc, 0x68, 0x92, 0x49, 0x24, 0x92, 0x40, + 0x44, 0x92, 0x7b, 0xf6, 0xfd, 0xbd, 0xf7, 0x7b, 0xdf, 0xef, 0xf7, 0xbe, 0xf6, 0xff, 0xff, 0xff, 0xf8, 0x89, 0x13, 0xdb, 0x9f, 0xfb, 0x6e, 0xed, 0xf7, 0xbb, 0x75, 0xce, 0xdb, 0x77, 0x6d, 0xb7, 0xef, 0x80, 0x00, 0x00, 0x00, 0x8d, 0x32, 0x49, 0x26, 0x24, 0x92, 0x64, 0x93, 0x39, 0x24, 0x92, 0x49, 0x24, 0x92, 0x40, + 0x52, 0x44, 0x9e, 0x7e, 0xe7, 0x67, 0x6d, 0xde, 0xed, 0xbd, 0xbd, 0xef, 0xbf, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x45, 0xdb, 0xff, 0xed, 0xb6, 0xed, 0x99, 0xb9, 0xb6, 0x76, 0xdb, 0x65, 0xb7, 0x7d, 0xdb, 0x80, 0x00, 0x00, 0x02, 0x2e, 0x42, 0x49, 0x21, 0x24, 0x92, 0x4c, 0xd9, 0xa4, 0x92, 0x49, 0x24, 0x92, 0x49, 0x20, + 0x29, 0x25, 0x3f, 0xcf, 0xbf, 0x7f, 0xdf, 0xf7, 0xbf, 0xf7, 0xef, 0x7b, 0xed, 0xff, 0x6d, 0xb7, 0xb8, 0x00, 0x4d, 0xec, 0xff, 0xed, 0xb7, 0x36, 0x6e, 0xce, 0xcf, 0xb5, 0xad, 0xbd, 0xb6, 0xdf, 0x7d, 0xc0, 0x00, 0x00, 0x00, 0x1a, 0x49, 0x24, 0x98, 0x92, 0x49, 0x23, 0x34, 0xf4, 0xc9, 0x24, 0x92, 0x49, 0x24, 0x90, + 0x89, 0x91, 0x3b, 0xf9, 0xfb, 0xdb, 0x76, 0xbd, 0xe6, 0xde, 0x7b, 0xde, 0xff, 0xff, 0xbf, 0xfd, 0xf8, 0x22, 0x23, 0xb7, 0xff, 0x36, 0xd9, 0xdb, 0xee, 0xf6, 0xd9, 0xbb, 0x6d, 0xb6, 0xdb, 0xb7, 0xe7, 0xc0, 0x00, 0x00, 0x04, 0x5e, 0x24, 0x92, 0x46, 0x49, 0x24, 0xb2, 0x4c, 0x99, 0x24, 0x92, 0x49, 0x24, 0x92, 0x40, + 0x56, 0x72, 0x4e, 0xff, 0x6e, 0xfe, 0xfb, 0xed, 0x7f, 0xfb, 0xde, 0xf7, 0x77, 0xff, 0xf3, 0x6f, 0xf1, 0x00, 0x9f, 0xb7, 0xff, 0xdb, 0x6e, 0xdb, 0x33, 0x37, 0x36, 0xce, 0x76, 0xdb, 0x6d, 0xf9, 0xbe, 0xe0, 0x00, 0x00, 0x01, 0x19, 0x92, 0x49, 0x21, 0x24, 0x92, 0x1a, 0xcb, 0xab, 0x24, 0x92, 0x49, 0x24, 0xd2, 0x40, + 0x50, 0x4a, 0x4f, 0x67, 0xfe, 0xe7, 0xaf, 0x7f, 0x9b, 0x6f, 0xf7, 0xbd, 0xdf, 0xff, 0xff, 0xfb, 0xbc, 0x04, 0x4f, 0x7f, 0xf9, 0xdb, 0x6e, 0xed, 0xbd, 0xcd, 0xee, 0xd9, 0x9a, 0xdb, 0x6d, 0x4e, 0xfb, 0xe0, 0x00, 0x00, 0x00, 0x3c, 0x12, 0x49, 0x29, 0x24, 0x92, 0x49, 0x38, 0xaa, 0x49, 0x2c, 0x92, 0x5b, 0x49, 0x20, + 0x8b, 0x19, 0x2f, 0xfd, 0xb7, 0xbd, 0xfd, 0xdb, 0xfb, 0xfd, 0xbd, 0xef, 0xbf, 0x6d, 0xff, 0xff, 0xf8, 0x21, 0x2f, 0xdf, 0xee, 0x6d, 0xb3, 0x36, 0xcd, 0xb9, 0x6b, 0x6f, 0xee, 0xed, 0xbb, 0x7f, 0xdd, 0xf0, 0x00, 0x00, 0x08, 0x9c, 0xc9, 0x22, 0x48, 0xc9, 0x24, 0xcd, 0x66, 0xb4, 0x92, 0x61, 0x92, 0x52, 0x24, 0x90, + 0x29, 0x94, 0x96, 0xdf, 0x7d, 0xfd, 0x9f, 0x7e, 0xce, 0xdf, 0xef, 0x7b, 0xfd, 0xf7, 0xff, 0xff, 0x7c, 0x08, 0xbe, 0xff, 0xdb, 0xb6, 0xdd, 0xdb, 0x73, 0x37, 0x35, 0x66, 0x67, 0x36, 0xee, 0xd9, 0xf7, 0x70, 0x00, 0x00, 0x02, 0x3b, 0x24, 0x24, 0x92, 0x12, 0x49, 0x24, 0x4d, 0x24, 0x94, 0xcc, 0x6d, 0xa4, 0x92, 0x40, + 0x64, 0x46, 0x57, 0xf7, 0xdf, 0x57, 0xf3, 0xe7, 0xbd, 0xf3, 0x7b, 0xdf, 0xfd, 0x9e, 0xfe, 0xff, 0xfc, 0x02, 0x7f, 0xff, 0x76, 0xdb, 0x6d, 0xdb, 0x5e, 0xdc, 0xdd, 0xb9, 0xb9, 0xdb, 0xb6, 0xdf, 0x7e, 0xf0, 0x00, 0x00, 0x00, 0x7f, 0xf6, 0x91, 0x24, 0x92, 0x49, 0x26, 0x59, 0x69, 0x25, 0x93, 0x24, 0x89, 0x12, 0x40, + 0x46, 0x5a, 0x4f, 0x7d, 0xf7, 0xfe, 0x7e, 0xfd, 0xf7, 0x7f, 0xde, 0xfe, 0xf2, 0xfb, 0xfe, 0x9f, 0xf8, 0x41, 0x7f, 0xfd, 0xad, 0xdb, 0x6e, 0x6c, 0xd6, 0xd3, 0xd3, 0xaf, 0xae, 0xdb, 0x77, 0x67, 0xdb, 0xb0, 0x00, 0x00, 0x11, 0x7f, 0xfc, 0x92, 0x49, 0x24, 0x92, 0x93, 0x13, 0x12, 0x4a, 0x32, 0x92, 0x49, 0x49, 0x20, + 0x99, 0x23, 0x23, 0xdf, 0x7b, 0xbb, 0xdf, 0x9f, 0x5b, 0xdd, 0xf7, 0xbb, 0xfe, 0xef, 0xfb, 0xf7, 0xfe, 0x11, 0xff, 0xfd, 0xbb, 0x6d, 0xb3, 0xb7, 0xb5, 0xbe, 0x76, 0x6c, 0xdb, 0x36, 0xd9, 0xf9, 0xff, 0xf0, 0x00, 0x00, 0x04, 0x77, 0xbf, 0x26, 0x49, 0x24, 0x92, 0x49, 0x86, 0xc4, 0x9a, 0x48, 0x92, 0x44, 0x49, 0x20, + 0xa1, 0x25, 0x97, 0xb7, 0xde, 0xef, 0xed, 0xf7, 0xde, 0xf7, 0x7d, 0xf7, 0xe9, 0xbd, 0xfb, 0x79, 0xfe, 0x06, 0xff, 0xe6, 0xda, 0x6d, 0xbd, 0xb6, 0xad, 0xab, 0xad, 0xdb, 0x73, 0xed, 0xb6, 0x9e, 0x6e, 0xf8, 0x00, 0x00, 0x20, 0xfd, 0xff, 0x61, 0x24, 0x92, 0x49, 0x24, 0xe8, 0x49, 0x21, 0x09, 0x24, 0x92, 0x24, 0x80, + 0x24, 0x99, 0xd3, 0xfd, 0xf7, 0xfd, 0xbb, 0x7d, 0xf7, 0xbf, 0xdd, 0xf5, 0xef, 0x77, 0xed, 0xaf, 0xfe, 0x2b, 0xff, 0xbb, 0x4f, 0xb6, 0xcd, 0xda, 0xcc, 0xeb, 0xbb, 0x67, 0x4c, 0xdb, 0xb6, 0xef, 0xfb, 0xb8, 0x00, 0x00, 0x09, 0xee, 0x67, 0xd9, 0x24, 0xc9, 0x24, 0x92, 0x33, 0x22, 0x4c, 0xa4, 0x49, 0x22, 0x90, 0x90, + 0x24, 0x92, 0x63, 0xdf, 0x7d, 0x9d, 0xdf, 0xdf, 0x7d, 0xed, 0xf7, 0xdf, 0xf3, 0xdf, 0xed, 0xbe, 0xff, 0x2f, 0xfe, 0xdb, 0x75, 0xb6, 0xf6, 0x6f, 0x73, 0x5c, 0xd6, 0xbc, 0xfd, 0x9a, 0xdb, 0x6b, 0xbf, 0xf0, 0x00, 0x00, 0x43, 0xfb, 0xfd, 0xf4, 0x99, 0x24, 0x96, 0x49, 0x04, 0x98, 0x90, 0x92, 0x49, 0x28, 0x92, 0x40, + 0x4a, 0x4e, 0xac, 0xf3, 0xdf, 0xf7, 0x77, 0xf7, 0xdf, 0x7d, 0xbf, 0xdb, 0xd9, 0xff, 0xdb, 0x76, 0xff, 0xff, 0xfb, 0x6d, 0xb6, 0xdb, 0x37, 0xb1, 0xb7, 0x76, 0xdd, 0xb3, 0x93, 0x6e, 0xdb, 0x7a, 0xef, 0x78, 0x00, 0x00, 0x13, 0xff, 0xbd, 0xb4, 0x93, 0x26, 0x51, 0x24, 0xc8, 0x84, 0x92, 0x49, 0x24, 0x48, 0x44, 0x40, + 0x49, 0x23, 0xb3, 0xbe, 0xf6, 0xff, 0xfe, 0xfd, 0xf7, 0xdf, 0xef, 0xff, 0xc4, 0xef, 0xd3, 0xdb, 0xbf, 0xff, 0xf6, 0xed, 0xbb, 0x6d, 0xd9, 0x9e, 0xcc, 0xcb, 0x6b, 0x6e, 0xde, 0xed, 0xb6, 0xde, 0xfd, 0xf8, 0x00, 0x00, 0x85, 0xdd, 0xef, 0xba, 0x64, 0x99, 0x49, 0x24, 0x2a, 0x64, 0x49, 0x24, 0x91, 0x13, 0x11, 0x20, + 0x24, 0x90, 0x7c, 0xef, 0xbf, 0xbb, 0xbf, 0xbf, 0x7d, 0xf3, 0x7f, 0xaf, 0xc6, 0x7b, 0xf6, 0xfb, 0xef, 0xff, 0xdd, 0xb6, 0xcd, 0xb6, 0xde, 0xee, 0x7b, 0xbb, 0x6b, 0x6a, 0xe6, 0xb7, 0x6d, 0xb7, 0xb7, 0xf8, 0x00, 0x00, 0x07, 0xf7, 0x7b, 0x6d, 0x0c, 0xc1, 0x2a, 0x49, 0x22, 0x13, 0x24, 0x92, 0x44, 0x90, 0x92, 0x20, + 0x22, 0x4c, 0x4c, 0xfb, 0xed, 0xee, 0xfb, 0xf7, 0xdf, 0x7f, 0xdf, 0x6f, 0x93, 0xdf, 0xaf, 0xad, 0x7f, 0xff, 0x6b, 0x76, 0xf6, 0xdb, 0x66, 0xe3, 0xb3, 0x6d, 0xbc, 0xdb, 0x39, 0x9b, 0x7b, 0xed, 0xff, 0xb8, 0x00, 0x01, 0x2f, 0xbf, 0xde, 0xfc, 0xd2, 0x34, 0xa4, 0x92, 0x91, 0x90, 0x92, 0x49, 0x2c, 0xcc, 0x48, 0x90, + 0x18, 0x4b, 0x17, 0x7e, 0xff, 0x7f, 0xef, 0xde, 0xf7, 0xdd, 0xf7, 0x97, 0x91, 0x7f, 0xed, 0xfd, 0x9f, 0xfd, 0xbb, 0x5b, 0x36, 0xdb, 0x7b, 0x3d, 0xad, 0xdd, 0xa7, 0x35, 0xdb, 0x6d, 0xb6, 0xdd, 0xdd, 0xf8, 0x00, 0x00, 0x0f, 0xed, 0xf7, 0xb6, 0x12, 0x8c, 0x94, 0x92, 0x4c, 0x4c, 0x92, 0x41, 0x3b, 0xeb, 0x6c, 0x90, + 0xc3, 0x22, 0x93, 0x7f, 0xb7, 0xdb, 0xff, 0xff, 0xfd, 0xf7, 0x3f, 0xb7, 0xcc, 0xef, 0xbb, 0x7b, 0xf3, 0xf6, 0xdd, 0xdb, 0xdb, 0x6d, 0x9b, 0x6d, 0x6d, 0x33, 0x79, 0xcd, 0xb6, 0xed, 0xb7, 0x77, 0x77, 0x78, 0x00, 0x02, 0x5f, 0xff, 0x7d, 0xdd, 0x29, 0xa2, 0x53, 0x24, 0x42, 0x42, 0x49, 0x14, 0x9b, 0x3b, 0xb4, 0x40, + 0x09, 0xa4, 0xc8, 0xdb, 0xfd, 0xfe, 0xff, 0xff, 0x6f, 0x7f, 0xef, 0x6f, 0x42, 0xbf, 0xb1, 0x3b, 0x7f, 0xf6, 0xd6, 0xec, 0xdb, 0x6d, 0xe6, 0xdb, 0x77, 0xee, 0x5e, 0xda, 0xa6, 0xb6, 0xdd, 0xbf, 0xff, 0xd8, 0x00, 0x00, 0x1f, 0x77, 0xdf, 0x7d, 0x24, 0x33, 0x48, 0x65, 0x32, 0x32, 0x49, 0x24, 0x08, 0xb6, 0xb1, 0x20, + 0x24, 0x9d, 0x2a, 0xbe, 0xdf, 0x77, 0xfe, 0xfb, 0xfb, 0xdb, 0xff, 0x1f, 0x33, 0x37, 0xcc, 0x9f, 0x6d, 0xfb, 0x76, 0xb7, 0x6d, 0xb6, 0x7c, 0xd6, 0xd6, 0x6d, 0xc6, 0xb6, 0xed, 0xb6, 0xfd, 0xed, 0xbb, 0xf8, 0x00, 0x84, 0xbf, 0xdd, 0xf7, 0xee, 0x96, 0x4c, 0x26, 0x49, 0x24, 0x8c, 0x92, 0x23, 0x4c, 0x94, 0x84, 0x90, + 0x92, 0x47, 0x6d, 0xaf, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xbe, 0xd7, 0x89, 0xff, 0x72, 0x67, 0xef, 0xed, 0xbb, 0xb7, 0x6d, 0xb7, 0x97, 0x66, 0x99, 0x99, 0xb9, 0xb5, 0x5b, 0x6f, 0x37, 0x7f, 0xef, 0x78, 0x00, 0x00, 0x7e, 0xff, 0x7b, 0x6e, 0x49, 0x49, 0x91, 0x92, 0x49, 0x21, 0x24, 0xb0, 0x4c, 0x11, 0xc8, 0x90, + 0x92, 0x52, 0xdd, 0x6b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xb6, 0xcc, 0x6f, 0xb0, 0x6d, 0xbb, 0x7c, 0xcd, 0xd9, 0xb6, 0xd9, 0xd7, 0x3b, 0xaf, 0xe6, 0xef, 0x5b, 0x5b, 0x69, 0xed, 0x9b, 0x7f, 0xd8, 0x00, 0x10, 0x7f, 0xb3, 0xde, 0xfb, 0x29, 0x32, 0x52, 0x24, 0x92, 0x49, 0x24, 0xc4, 0x93, 0xc9, 0x22, 0x40, + 0x49, 0x32, 0x33, 0x59, 0xbf, 0xff, 0xb7, 0xbe, 0xdc, 0xc9, 0xdf, 0x2f, 0xe3, 0xff, 0xa9, 0x1f, 0xfd, 0xfb, 0x76, 0x6e, 0xdb, 0x6e, 0x79, 0xcc, 0xe6, 0x76, 0x99, 0xcb, 0xb6, 0xde, 0xde, 0xff, 0xfd, 0xf0, 0x00, 0x04, 0xdd, 0xfe, 0xf7, 0xbe, 0xa4, 0x92, 0x4a, 0x49, 0x24, 0x92, 0x4b, 0x49, 0x26, 0x67, 0x24, 0x40, + 0x49, 0x09, 0x04, 0xd4, 0x92, 0x48, 0xcc, 0xc9, 0x96, 0x76, 0x7f, 0x6f, 0x35, 0xbf, 0x68, 0x66, 0xd7, 0xbf, 0xbf, 0xbb, 0x6d, 0xb7, 0xac, 0xd7, 0x35, 0x9b, 0x76, 0x79, 0xb6, 0xdb, 0x73, 0xed, 0xef, 0x78, 0x00, 0x01, 0xff, 0x6f, 0xbd, 0xec, 0x96, 0xcd, 0x24, 0xc9, 0x24, 0x92, 0x7b, 0xc9, 0x21, 0x34, 0x91, 0x10, + 0x24, 0x49, 0x4c, 0xb6, 0x6d, 0xb6, 0x6b, 0x6d, 0x73, 0x36, 0x9f, 0xde, 0xcd, 0xef, 0xd2, 0x6f, 0xbe, 0xfc, 0xe9, 0xdb, 0x36, 0xd9, 0xaf, 0x73, 0x5d, 0xad, 0x66, 0xb6, 0x6d, 0xbb, 0x7f, 0x7f, 0xbf, 0xf8, 0x00, 0x49, 0xbb, 0xfb, 0xef, 0x7b, 0x52, 0x24, 0x91, 0x24, 0x92, 0x49, 0x3e, 0x12, 0x11, 0x00, 0x92, 0x40, + 0x91, 0x24, 0xb2, 0x23, 0x6d, 0xb7, 0x33, 0x36, 0x4d, 0x99, 0xbe, 0xfe, 0xff, 0x7f, 0xf2, 0x1b, 0xee, 0xdf, 0xbf, 0x66, 0xdb, 0x6e, 0x73, 0x4d, 0xca, 0x6d, 0xbb, 0xa7, 0xbb, 0x6e, 0xcd, 0x9b, 0xf6, 0xf0, 0x01, 0x03, 0xfe, 0xde, 0xf3, 0xda, 0x49, 0xb2, 0xcc, 0x24, 0x92, 0x49, 0x66, 0x90, 0xc4, 0xca, 0x24, 0x90, + 0x04, 0x92, 0x23, 0x49, 0x32, 0x49, 0xdc, 0xd2, 0xd9, 0xcd, 0x6f, 0xbf, 0x37, 0xdf, 0x6c, 0xce, 0x7b, 0xff, 0xb6, 0xed, 0xdb, 0x67, 0xda, 0xdc, 0xeb, 0xd3, 0x99, 0x6c, 0xce, 0xdb, 0xbd, 0xff, 0x7f, 0xb0, 0x00, 0x23, 0xf7, 0xf7, 0x9e, 0xfa, 0xac, 0x89, 0x23, 0x92, 0x49, 0x24, 0x70, 0xc4, 0x08, 0x22, 0x49, 0x20, + 0x64, 0x93, 0x0c, 0x5c, 0xce, 0xda, 0x4b, 0x5b, 0x32, 0x66, 0x5d, 0xed, 0xed, 0xf7, 0xd9, 0x6f, 0xdb, 0x6f, 0x6d, 0xb9, 0x66, 0xd9, 0x9b, 0x33, 0x3c, 0xde, 0x67, 0x5b, 0x76, 0xdb, 0x76, 0xef, 0xed, 0xf8, 0x00, 0x0b, 0xfd, 0xbd, 0xff, 0xb9, 0xa6, 0x4c, 0x28, 0x49, 0x24, 0x84, 0x98, 0x49, 0x23, 0x11, 0x08, 0x40, + 0x12, 0x48, 0xd1, 0x92, 0x49, 0xb6, 0xe9, 0x4c, 0xce, 0xb3, 0x9f, 0x7f, 0x7f, 0x7f, 0xd7, 0x7b, 0xff, 0xdf, 0xed, 0x9f, 0x3c, 0xde, 0x6d, 0xef, 0x67, 0x33, 0x79, 0xdb, 0x73, 0x6d, 0xdb, 0xbd, 0xbf, 0x70, 0x81, 0x0f, 0xdf, 0xef, 0x6d, 0xf4, 0x53, 0x52, 0xc9, 0x25, 0x24, 0x92, 0x19, 0x92, 0x48, 0x4c, 0x62, 0x40, + 0x92, 0x4a, 0x52, 0x66, 0x73, 0x25, 0xa6, 0xd3, 0x69, 0x99, 0xbf, 0xdb, 0x9b, 0xdf, 0x7d, 0x9e, 0xed, 0xff, 0xb6, 0xe6, 0xd7, 0x67, 0xec, 0xcc, 0xd9, 0xd9, 0x9e, 0x6d, 0x9d, 0xb7, 0x6e, 0xf7, 0xfb, 0xf0, 0x04, 0x47, 0xf6, 0xfb, 0xfb, 0x76, 0x59, 0x22, 0x14, 0x90, 0x92, 0x49, 0x4f, 0x20, 0x92, 0x41, 0x09, 0x20, + 0x24, 0x93, 0x0c, 0x99, 0x96, 0x4c, 0x5a, 0x35, 0x2b, 0x6c, 0xdc, 0xfe, 0xfe, 0xf7, 0xdd, 0xf7, 0xbd, 0xbf, 0xb6, 0xfb, 0xd5, 0xb9, 0x33, 0x36, 0x9e, 0x5e, 0xe7, 0xb5, 0xed, 0xb6, 0xee, 0xdf, 0xff, 0xe4, 0x00, 0x1f, 0xbf, 0xbe, 0xdb, 0xb3, 0x24, 0xac, 0xc6, 0x4a, 0x92, 0x49, 0x04, 0x49, 0x04, 0x92, 0x49, 0x00, + 0x49, 0x24, 0xa5, 0x21, 0x24, 0xdb, 0x49, 0xa4, 0xa6, 0x4e, 0x5f, 0xb7, 0xef, 0xbf, 0xf7, 0x75, 0xf7, 0xb7, 0xdb, 0x2c, 0x6d, 0xad, 0x9f, 0x73, 0xb3, 0xa6, 0xb2, 0xd6, 0x6e, 0xdb, 0xbb, 0xfe, 0xdd, 0xe1, 0x09, 0x3f, 0xed, 0xef, 0xbe, 0xc9, 0xa6, 0x91, 0x21, 0x28, 0x49, 0x20, 0xa0, 0x84, 0x61, 0x12, 0x24, 0x40, + 0x92, 0x48, 0xb1, 0x4c, 0xc9, 0x91, 0x26, 0x4e, 0x99, 0x93, 0x5e, 0xfd, 0xbb, 0xed, 0xbe, 0xdf, 0x76, 0xff, 0x7b, 0xef, 0x6e, 0x6c, 0xe9, 0xcd, 0x6c, 0xe9, 0xbe, 0x7b, 0xb3, 0x7b, 0x6f, 0x6f, 0xf7, 0xe8, 0x00, 0x5f, 0x7f, 0x7b, 0xe7, 0xcc, 0x98, 0x46, 0x34, 0x85, 0x24, 0x8c, 0x26, 0x31, 0x09, 0x24, 0x91, 0x20, + 0x24, 0x92, 0x4a, 0x52, 0x5a, 0x64, 0xb2, 0x52, 0x64, 0xb5, 0x9f, 0x6f, 0xfd, 0xff, 0xef, 0xdb, 0xdf, 0xdf, 0xcc, 0xdb, 0x9b, 0xd3, 0x3a, 0x79, 0xcf, 0x3f, 0x49, 0xad, 0xbd, 0xaf, 0x6d, 0xfd, 0xbe, 0xc8, 0x24, 0x9f, 0xdb, 0xde, 0x7d, 0xb3, 0x49, 0x68, 0xc4, 0x94, 0x92, 0x21, 0x10, 0x42, 0x12, 0x21, 0x12, 0x20, + 0x49, 0x26, 0x48, 0x93, 0x26, 0x2c, 0x99, 0x93, 0x26, 0x64, 0xed, 0xf6, 0xdd, 0x9a, 0xdb, 0x7e, 0xfb, 0x77, 0xf7, 0x58, 0xe4, 0x9d, 0xb7, 0x2e, 0x73, 0xb3, 0x7f, 0xb6, 0xce, 0xed, 0xdd, 0xb7, 0xfb, 0xd1, 0x02, 0x7e, 0xfe, 0xf7, 0xdf, 0x94, 0x66, 0x23, 0x12, 0x62, 0x48, 0x92, 0x43, 0x08, 0xc4, 0x89, 0x42, 0x80, + 0x49, 0x29, 0x25, 0x8c, 0xa1, 0x8b, 0x44, 0xac, 0x99, 0x1a, 0x5f, 0x9d, 0xe7, 0xfe, 0xff, 0xef, 0xbb, 0xff, 0xb3, 0x6f, 0x77, 0xb4, 0xcd, 0xcb, 0x39, 0xad, 0xb2, 0xda, 0xf3, 0xbd, 0xf7, 0xff, 0x6f, 0xc4, 0x52, 0x7f, 0xb7, 0x7d, 0xf7, 0x4d, 0x92, 0x98, 0x4a, 0x29, 0x22, 0x44, 0x88, 0x24, 0x24, 0x48, 0x48, 0x40, + 0x84, 0x89, 0x31, 0x20, 0x99, 0x52, 0x56, 0x21, 0x91, 0x93, 0x1e, 0xfb, 0x3e, 0xef, 0xb6, 0xe9, 0xee, 0xdb, 0xdd, 0xa7, 0x1a, 0x6f, 0x69, 0x73, 0xae, 0x6d, 0xae, 0x6f, 0x3d, 0xb7, 0x3e, 0x7f, 0xff, 0x90, 0x10, 0xfb, 0xf7, 0x5b, 0x7e, 0x62, 0x58, 0xc6, 0x49, 0x89, 0x24, 0x48, 0x24, 0x91, 0x09, 0x26, 0x25, 0x10, + 0x32, 0x64, 0x8c, 0x6d, 0x26, 0x50, 0x91, 0x59, 0x26, 0x65, 0xbf, 0xce, 0xfb, 0xbb, 0xde, 0xff, 0x7e, 0xff, 0xdd, 0xb4, 0xed, 0xc9, 0xb6, 0x9c, 0xce, 0xdb, 0x6d, 0xb5, 0xce, 0xf7, 0xdb, 0xdb, 0xbb, 0x21, 0x05, 0xfe, 0x79, 0xff, 0xfa, 0x9a, 0x45, 0x24, 0x90, 0x48, 0x91, 0x09, 0x21, 0x09, 0x20, 0x81, 0x90, 0x90, + 0x09, 0x12, 0x43, 0x04, 0xa4, 0x8d, 0x25, 0x46, 0x69, 0x2c, 0xcf, 0x77, 0x9b, 0xfd, 0xdb, 0xb7, 0xdb, 0xb7, 0xe6, 0xdb, 0xb5, 0xba, 0x9c, 0xed, 0xd9, 0xb6, 0xdb, 0xb6, 0xf3, 0xdc, 0xf7, 0xfe, 0xef, 0x88, 0x65, 0xf7, 0xef, 0xef, 0xeb, 0x35, 0xb1, 0x21, 0x26, 0x52, 0x49, 0x21, 0x09, 0x22, 0x26, 0x30, 0x46, 0x20, + 0x44, 0x99, 0x58, 0xd2, 0x49, 0x25, 0x4c, 0x24, 0x89, 0x92, 0x5f, 0x75, 0xee, 0xdd, 0xb7, 0xbc, 0xf7, 0xff, 0x73, 0x4b, 0x56, 0xb6, 0xe7, 0x6b, 0x37, 0x36, 0xda, 0xdb, 0x3f, 0x7b, 0xbd, 0xb7, 0xfe, 0x4a, 0x13, 0xff, 0xff, 0xff, 0x99, 0xc4, 0x8c, 0x9b, 0x29, 0x12, 0x48, 0x92, 0x48, 0x48, 0x90, 0x8c, 0x20, 0x40, + 0x30, 0x84, 0x44, 0x99, 0x19, 0x64, 0x52, 0xb3, 0x36, 0x53, 0x3f, 0x9d, 0x6f, 0xf7, 0xb6, 0xef, 0xbd, 0x5b, 0xdd, 0x7c, 0xdb, 0x55, 0x6b, 0x5a, 0xec, 0xdb, 0x6d, 0xdd, 0xcd, 0xaf, 0xef, 0xfd, 0xbf, 0x11, 0x93, 0xff, 0xff, 0xf9, 0x96, 0x5a, 0x64, 0x90, 0x89, 0x24, 0x86, 0x12, 0x12, 0x44, 0x84, 0x83, 0x19, 0x00, + 0x06, 0x65, 0x25, 0x24, 0xc4, 0x12, 0x92, 0x88, 0x40, 0xcc, 0xce, 0xdb, 0x75, 0x7e, 0xdf, 0xfb, 0xef, 0xdf, 0xb5, 0xb6, 0xb9, 0xdd, 0x5a, 0xdd, 0xb7, 0xcd, 0xb7, 0x66, 0xf6, 0xf6, 0x76, 0xdf, 0xec, 0x44, 0x4f, 0xb3, 0x6d, 0xa4, 0x64, 0xdb, 0x24, 0xc4, 0x92, 0x49, 0x30, 0x48, 0x91, 0x11, 0x24, 0x30, 0xc2, 0x60, + 0x91, 0x11, 0x99, 0x24, 0x93, 0x18, 0x89, 0x2d, 0x9a, 0x24, 0x9f, 0x6e, 0xdd, 0xee, 0xd9, 0xbe, 0xdb, 0xb7, 0xb6, 0xa7, 0x66, 0xa7, 0x5d, 0xb5, 0xb5, 0x76, 0xdb, 0x7b, 0x3b, 0xdd, 0xdf, 0xf6, 0xfc, 0x92, 0x5f, 0x48, 0x00, 0x36, 0x69, 0x84, 0x9a, 0x2c, 0x44, 0x92, 0x03, 0x21, 0x24, 0x22, 0x49, 0x04, 0x08, 0x80, + 0x24, 0x4a, 0x42, 0x49, 0x29, 0x65, 0x69, 0x42, 0x43, 0x33, 0x3f, 0x6d, 0xbf, 0xfb, 0xb7, 0x6f, 0xbe, 0xfd, 0xda, 0xed, 0x5e, 0xb3, 0x67, 0x66, 0xcd, 0x76, 0xdb, 0x9b, 0xef, 0x7f, 0xfb, 0x7f, 0xbc, 0x92, 0x7c, 0x4d, 0xbf, 0xcb, 0x9b, 0x34, 0xc2, 0x89, 0x31, 0x24, 0x98, 0x24, 0x04, 0x88, 0x11, 0x49, 0x24, 0x90, + 0x49, 0x22, 0x4c, 0x92, 0x48, 0x85, 0x0c, 0x52, 0x58, 0x92, 0x4f, 0x99, 0xe6, 0xdf, 0xb7, 0x79, 0xef, 0xdf, 0x6e, 0x79, 0xd3, 0x7c, 0xec, 0xdb, 0x7b, 0x9b, 0xbc, 0xee, 0xdd, 0xeb, 0x6f, 0xdb, 0xf9, 0x09, 0xbd, 0xb2, 0x64, 0x99, 0xb6, 0x66, 0x24, 0xc3, 0x09, 0x24, 0x81, 0x82, 0xd0, 0x91, 0x84, 0x22, 0x24, 0x40, + 0x11, 0x24, 0x91, 0x24, 0x92, 0x98, 0xa3, 0x14, 0x84, 0x8c, 0x9e, 0xf6, 0xf2, 0x3e, 0xdd, 0xdf, 0x79, 0xf7, 0xb3, 0x4e, 0xb9, 0x8e, 0xb7, 0x9b, 0x66, 0xed, 0xb7, 0xed, 0xb7, 0x3f, 0xfe, 0xfe, 0xf1, 0x25, 0xf3, 0x26, 0xdb, 0x36, 0x44, 0x99, 0x99, 0x32, 0x48, 0x92, 0x64, 0x18, 0x0a, 0x14, 0x22, 0x24, 0x89, 0x00, + 0x94, 0x91, 0x24, 0x49, 0x26, 0x42, 0x98, 0x91, 0x25, 0x61, 0x37, 0x6f, 0xd9, 0x27, 0xdb, 0x77, 0xdf, 0x6d, 0xbb, 0xee, 0xee, 0xf3, 0x99, 0x6c, 0xdd, 0xb6, 0xed, 0x37, 0x7d, 0xf6, 0xfb, 0xb7, 0xe4, 0x47, 0xe8, 0xcd, 0x92, 0xc6, 0x73, 0x21, 0x22, 0x10, 0x92, 0x48, 0x08, 0xc1, 0x20, 0xc2, 0x48, 0x91, 0x22, 0x60, + 0x82, 0x12, 0x49, 0x12, 0x49, 0x32, 0x44, 0x93, 0x21, 0x16, 0x4f, 0x6d, 0xcc, 0x8b, 0xee, 0xfd, 0xef, 0x7f, 0x6c, 0xb3, 0x4c, 0xdd, 0x6e, 0x6d, 0x9b, 0x76, 0xed, 0xf6, 0xdb, 0xff, 0xbf, 0xff, 0xc4, 0x9f, 0xae, 0xf9, 0x2c, 0xd9, 0x99, 0x6c, 0x66, 0xcc, 0x92, 0x49, 0x8a, 0x04, 0x91, 0x08, 0x91, 0x12, 0x48, 0x80, + 0x68, 0xc8, 0x92, 0x64, 0x91, 0x0c, 0x44, 0x64, 0x98, 0x90, 0x9f, 0xb7, 0xa0, 0x99, 0xed, 0xaf, 0x7b, 0xdb, 0xcd, 0xb7, 0x77, 0x2d, 0x6b, 0xb7, 0x6b, 0x5b, 0x76, 0xde, 0xee, 0xdf, 0xf7, 0x6f, 0x92, 0x7e, 0xb7, 0x32, 0x6b, 0x2d, 0x99, 0x13, 0x10, 0x42, 0x49, 0x12, 0x21, 0x32, 0x0c, 0x24, 0x84, 0x48, 0x44, 0x90, + 0x04, 0x24, 0x92, 0x09, 0x24, 0xc1, 0x33, 0x08, 0x46, 0x49, 0x9e, 0xdb, 0x92, 0x25, 0xf7, 0x6e, 0xde, 0xfb, 0xb3, 0x59, 0xb3, 0xb3, 0x9b, 0xb5, 0xed, 0xdb, 0x5b, 0xdb, 0xbf, 0xf6, 0xff, 0xfd, 0x93, 0xfc, 0xdd, 0xde, 0xc9, 0x24, 0x66, 0xc4, 0x99, 0x32, 0x49, 0x20, 0x91, 0x02, 0x60, 0x91, 0x24, 0x89, 0x12, 0x10, + 0x31, 0x24, 0x49, 0x92, 0x48, 0x32, 0x08, 0x92, 0x41, 0x26, 0x4f, 0xdf, 0x41, 0x20, 0xf6, 0xfb, 0xf7, 0xbe, 0xfe, 0xde, 0xac, 0xde, 0xf4, 0xdc, 0xb6, 0xef, 0xde, 0x7b, 0xf7, 0x7f, 0xbd, 0xbc, 0x4d, 0xf7, 0xd0, 0x41, 0x14, 0xd3, 0x24, 0x28, 0xc5, 0x89, 0x24, 0x8c, 0x44, 0x48, 0x06, 0x42, 0x12, 0x22, 0x48, 0xc0, + 0x82, 0x49, 0x24, 0x52, 0x4b, 0x08, 0xc8, 0x92, 0x34, 0x90, 0x4f, 0x77, 0x24, 0x93, 0x7a, 0xdf, 0x7d, 0xef, 0x4c, 0xe6, 0xef, 0x66, 0x5f, 0x67, 0xb6, 0xb4, 0xe7, 0xee, 0xdd, 0xdb, 0xf7, 0xfa, 0x4f, 0xf4, 0x4e, 0x65, 0x66, 0x99, 0x99, 0x8a, 0x24, 0x24, 0x90, 0x91, 0x12, 0x49, 0x90, 0x18, 0x82, 0x48, 0x82, 0x00, + 0x18, 0x92, 0x24, 0x49, 0x22, 0x49, 0x26, 0x49, 0x84, 0x93, 0x37, 0x6e, 0x80, 0x89, 0x7b, 0x77, 0xdf, 0x7b, 0x77, 0x33, 0x59, 0xb9, 0xcb, 0x7b, 0x6f, 0xb7, 0x3d, 0xbe, 0xff, 0xff, 0x7e, 0xf2, 0xbf, 0x8d, 0x23, 0x19, 0x29, 0x24, 0xc2, 0x62, 0x92, 0x44, 0x92, 0x41, 0x22, 0x10, 0x23, 0x21, 0x28, 0x44, 0xb1, 0x20, + 0xc4, 0x92, 0x93, 0x24, 0x90, 0x92, 0x21, 0x24, 0x22, 0x48, 0x97, 0xee, 0x12, 0x24, 0x9d, 0xbd, 0xf7, 0xde, 0xd9, 0xdd, 0xd6, 0xdf, 0x79, 0x9b, 0x6d, 0xdf, 0xfd, 0xdb, 0xb6, 0xef, 0xdb, 0xf5, 0xff, 0x2b, 0x69, 0x9b, 0x99, 0x66, 0x26, 0x24, 0x92, 0x52, 0x24, 0x4c, 0x28, 0x92, 0x48, 0x44, 0x43, 0x12, 0x04, 0x40, + 0x04, 0x48, 0x90, 0x92, 0x4c, 0x92, 0x99, 0x24, 0x99, 0x24, 0x9e, 0xf7, 0x00, 0x12, 0xbd, 0xbf, 0x3c, 0xf7, 0xb6, 0xdd, 0x36, 0xd3, 0x6e, 0xed, 0xbd, 0x72, 0xcf, 0x7b, 0xff, 0xbd, 0xff, 0x97, 0xfc, 0xf3, 0xbc, 0xe4, 0xc6, 0x59, 0x31, 0x99, 0x24, 0x92, 0x45, 0x20, 0x82, 0x42, 0x44, 0x44, 0x90, 0x22, 0x48, 0x90, + 0x31, 0x09, 0x24, 0x92, 0x42, 0x48, 0x84, 0x82, 0x44, 0x24, 0x47, 0x9d, 0x01, 0x09, 0x3e, 0xe7, 0xef, 0xbd, 0xb6, 0xa7, 0xed, 0xbd, 0xb3, 0x6d, 0xb7, 0x6e, 0xfb, 0xee, 0xdb, 0xf7, 0x6f, 0x9f, 0xf7, 0x9c, 0x96, 0x4c, 0x64, 0x84, 0xc9, 0x12, 0x49, 0x08, 0x40, 0x89, 0x11, 0x08, 0x11, 0x12, 0x0c, 0x88, 0x4a, 0x20, + 0x42, 0x64, 0x49, 0x24, 0x92, 0x49, 0x24, 0x99, 0x22, 0x93, 0x27, 0xfe, 0x44, 0x49, 0x7b, 0x7d, 0xfb, 0xef, 0x6d, 0xb8, 0xcd, 0x66, 0xdd, 0xb6, 0xf7, 0xbd, 0xbe, 0xff, 0xfe, 0xdf, 0xde, 0x7f, 0x9b, 0x66, 0x63, 0x5b, 0x3b, 0xb2, 0x0a, 0x64, 0x92, 0x63, 0x18, 0x89, 0x14, 0x25, 0x89, 0x10, 0xc1, 0x23, 0x21, 0x00, + 0x98, 0x84, 0x92, 0x49, 0x24, 0x92, 0x49, 0x21, 0x28, 0x90, 0x9f, 0x6e, 0x00, 0x42, 0x5d, 0xbf, 0x6e, 0xf3, 0xd9, 0xdb, 0x77, 0x7b, 0x6d, 0xb6, 0xdc, 0xe7, 0xef, 0xb7, 0x6d, 0xfb, 0xfd, 0xfc, 0xc8, 0x65, 0x99, 0x22, 0x88, 0x49, 0x22, 0x49, 0x24, 0x88, 0x06, 0x20, 0x40, 0x90, 0x22, 0x44, 0x31, 0x10, 0x8c, 0x40, + 0x04, 0x32, 0x24, 0x92, 0x49, 0x24, 0x92, 0x24, 0x84, 0x4c, 0x47, 0xfb, 0x12, 0x11, 0x9d, 0xb3, 0xef, 0x9e, 0xde, 0x67, 0x59, 0x9b, 0x6e, 0xdb, 0xdf, 0xfe, 0x7b, 0xfd, 0xff, 0x6e, 0xff, 0xf6, 0x6f, 0x99, 0x24, 0xa8, 0xc9, 0x25, 0x4c, 0x92, 0x49, 0x09, 0xa0, 0x24, 0x48, 0x82, 0x22, 0x25, 0x04, 0x94, 0x20, 0x90, + 0x45, 0x09, 0x24, 0x92, 0x49, 0x24, 0x92, 0x44, 0x93, 0x23, 0x27, 0xbf, 0x00, 0x04, 0xbe, 0xfe, 0xfb, 0xff, 0x67, 0xbd, 0xde, 0xed, 0xb3, 0xdb, 0x73, 0x3b, 0xde, 0xdf, 0xb7, 0xff, 0xff, 0xb3, 0x31, 0x9b, 0x66, 0x9b, 0x33, 0x24, 0x41, 0x24, 0x90, 0x64, 0x09, 0x01, 0x02, 0x29, 0x88, 0x88, 0x44, 0x21, 0x22, 0x20, + 0x90, 0xc1, 0x12, 0x49, 0x24, 0x92, 0x49, 0x12, 0x48, 0x90, 0x9b, 0xee, 0x01, 0x22, 0x7b, 0x4f, 0x9e, 0xed, 0xf9, 0xad, 0xb3, 0x6d, 0xbd, 0x6f, 0x6f, 0xef, 0xf7, 0xff, 0xfd, 0x9f, 0xfe, 0x99, 0x9c, 0x64, 0x98, 0xc4, 0x24, 0x99, 0x32, 0x48, 0x92, 0x00, 0xc1, 0x18, 0x21, 0x04, 0x12, 0x12, 0x51, 0x09, 0x09, 0x20, + 0x26, 0x14, 0xc9, 0x24, 0x22, 0x49, 0x24, 0x92, 0x22, 0x4c, 0x8b, 0xfb, 0x80, 0x08, 0xdd, 0xfb, 0xf7, 0xbe, 0xde, 0xeb, 0x6d, 0xb6, 0xcf, 0x79, 0xfc, 0xfd, 0xbd, 0xfb, 0x6e, 0xff, 0xf2, 0xcc, 0xcb, 0x66, 0x89, 0x25, 0x8c, 0x92, 0x08, 0x82, 0x42, 0x4a, 0x14, 0x42, 0x24, 0x50, 0x44, 0xc1, 0x09, 0x44, 0x48, 0x80, + 0x20, 0x44, 0x21, 0x24, 0x99, 0x09, 0x24, 0x88, 0x92, 0x42, 0x27, 0xdf, 0x20, 0x89, 0x3d, 0xbe, 0xfd, 0xf3, 0xb6, 0xbb, 0x6e, 0xf7, 0xfb, 0xb7, 0x9f, 0xb7, 0xef, 0x7f, 0xfb, 0xff, 0x9b, 0x66, 0x6a, 0x99, 0x66, 0x31, 0x32, 0x64, 0xc9, 0x32, 0x11, 0x10, 0x90, 0x41, 0x84, 0x83, 0x24, 0x0c, 0x22, 0x30, 0x92, 0x00, + 0x19, 0x23, 0x14, 0x92, 0x41, 0x24, 0x42, 0x62, 0x49, 0x32, 0x47, 0xf7, 0x00, 0x25, 0x7e, 0xcf, 0xbf, 0x6f, 0xb7, 0xb6, 0xdb, 0x5d, 0x3a, 0xee, 0xf7, 0xfe, 0xfb, 0xdd, 0xbf, 0xfc, 0xcc, 0x73, 0x34, 0xa5, 0x12, 0xc9, 0x02, 0x09, 0x24, 0x44, 0x8c, 0x11, 0x03, 0x14, 0x10, 0x24, 0x21, 0x20, 0x92, 0x02, 0x21, 0x60, + 0x82, 0x28, 0x44, 0x92, 0x48, 0x91, 0x18, 0x12, 0x24, 0x89, 0x13, 0xbf, 0x90, 0x24, 0x73, 0x7b, 0xdb, 0xde, 0xf9, 0xdd, 0xb7, 0x77, 0xee, 0xdb, 0xf6, 0xdb, 0xbe, 0xf7, 0xff, 0xe6, 0x67, 0x99, 0x95, 0x24, 0xc9, 0x0c, 0xc9, 0x99, 0x04, 0x84, 0x20, 0xc4, 0x48, 0x10, 0x43, 0x10, 0x89, 0x22, 0x48, 0xc9, 0x08, 0x00, + 0x24, 0x89, 0x22, 0x41, 0x0a, 0x49, 0x21, 0x89, 0x84, 0x24, 0xa5, 0xef, 0x82, 0x0b, 0xff, 0x7e, 0xfe, 0xf6, 0xcf, 0x6d, 0xbd, 0xda, 0xdd, 0xde, 0x7f, 0xff, 0xef, 0xbf, 0xff, 0x33, 0x31, 0x2c, 0xcd, 0x5a, 0x69, 0x32, 0x30, 0x64, 0x52, 0x21, 0x02, 0x02, 0x20, 0xc2, 0x18, 0x42, 0x12, 0x19, 0x02, 0x09, 0x46, 0x90, + 0x91, 0x22, 0x29, 0x2c, 0x61, 0x24, 0x88, 0x64, 0x11, 0x24, 0x89, 0xfb, 0xc8, 0x12, 0xf9, 0xcf, 0xaf, 0xbd, 0xfe, 0xee, 0xed, 0xde, 0xdd, 0xf7, 0xdb, 0x6d, 0xfb, 0xff, 0xf2, 0xcc, 0xd9, 0xcc, 0xa2, 0x49, 0x0c, 0x82, 0x06, 0x04, 0x91, 0x18, 0x52, 0x22, 0x0c, 0x08, 0x80, 0x49, 0x44, 0xc1, 0x31, 0x24, 0x30, 0x40, + 0x49, 0x24, 0x89, 0x21, 0x0c, 0x22, 0x4a, 0x10, 0xc9, 0x12, 0x4b, 0xfe, 0xc8, 0xd5, 0xef, 0x7b, 0xfb, 0xef, 0x6d, 0xb3, 0xee, 0x77, 0xf7, 0x3d, 0xff, 0xff, 0x7f, 0xff, 0x4c, 0xd9, 0x8e, 0x53, 0x32, 0xa5, 0x92, 0x69, 0xa1, 0x92, 0x24, 0x42, 0x44, 0x90, 0xc1, 0x22, 0x4b, 0x09, 0x10, 0x04, 0x44, 0x44, 0x81, 0x20, + 0x24, 0x84, 0x44, 0x44, 0x90, 0x88, 0x42, 0x8a, 0x24, 0xc9, 0x21, 0xef, 0xe4, 0x27, 0xfb, 0x7e, 0xde, 0xf3, 0xb7, 0x7f, 0x3b, 0xed, 0xbf, 0xef, 0x6d, 0xb7, 0xff, 0xf2, 0x65, 0x33, 0x32, 0x64, 0xcc, 0x92, 0x62, 0x10, 0x2c, 0x49, 0x02, 0x40, 0x08, 0x04, 0x10, 0x84, 0x10, 0x20, 0x46, 0x32, 0x44, 0x90, 0x4c, 0x80, + 0x04, 0x91, 0x31, 0x12, 0x22, 0x49, 0x30, 0xa2, 0x24, 0x24, 0x24, 0xfb, 0xf3, 0x27, 0xdb, 0x9d, 0xf7, 0xbe, 0xf7, 0xdb, 0xff, 0xbf, 0xbb, 0xfb, 0xff, 0xff, 0xfd, 0x9a, 0xb7, 0x66, 0x65, 0x99, 0x25, 0x4a, 0x0c, 0xc6, 0x42, 0x49, 0x48, 0x94, 0x89, 0x21, 0x12, 0x11, 0x04, 0x86, 0x20, 0x82, 0x10, 0x89, 0x10, 0x20, + 0x50, 0x49, 0x09, 0x22, 0x49, 0x22, 0x0c, 0x24, 0x92, 0x12, 0x92, 0xfe, 0xf9, 0x9f, 0xfc, 0xf7, 0x7d, 0xef, 0x5c, 0xee, 0xdd, 0xf6, 0xee, 0xde, 0xdf, 0xff, 0xcc, 0x9b, 0x98, 0xc9, 0x99, 0x26, 0x65, 0x29, 0x91, 0x21, 0x12, 0x22, 0x24, 0x02, 0x20, 0x48, 0x42, 0x48, 0x60, 0x90, 0x89, 0x09, 0x22, 0x49, 0x03, 0x20, + 0x46, 0x48, 0x44, 0x89, 0x10, 0x24, 0xc3, 0x11, 0x12, 0xc8, 0x92, 0xef, 0xbe, 0xdf, 0x6f, 0xdf, 0xdf, 0x79, 0xfb, 0xbf, 0xf7, 0x7f, 0xff, 0xf7, 0xff, 0xf6, 0x63, 0x64, 0x66, 0x99, 0x26, 0x64, 0x98, 0xa4, 0x64, 0x29, 0x24, 0x92, 0x21, 0x22, 0x04, 0x82, 0x48, 0x42, 0x0a, 0x10, 0x92, 0x64, 0x89, 0x22, 0x68, 0x10, + 0x88, 0x86, 0x50, 0x91, 0x26, 0x91, 0x10, 0xc4, 0x48, 0x22, 0x48, 0x7b, 0xff, 0xff, 0xfb, 0x7b, 0xf7, 0xdf, 0xaf, 0xf7, 0x7f, 0xdb, 0x77, 0x7f, 0xfd, 0x99, 0x9b, 0x65, 0xa4, 0xa6, 0x64, 0x99, 0x82, 0x24, 0x0a, 0x88, 0x89, 0x10, 0x88, 0x08, 0xc4, 0x24, 0x84, 0x11, 0x02, 0x46, 0x10, 0x80, 0x89, 0x22, 0x02, 0x40, + 0x21, 0x20, 0x8a, 0x44, 0x88, 0x48, 0x4c, 0x12, 0x49, 0x09, 0x27, 0x7e, 0xff, 0xf6, 0xde, 0xce, 0xfd, 0xf6, 0xed, 0x7d, 0xdb, 0xff, 0xdd, 0xff, 0xed, 0x6d, 0xb0, 0x9b, 0x33, 0x24, 0x99, 0x86, 0x6d, 0x93, 0x98, 0x92, 0x49, 0x44, 0x82, 0x41, 0x11, 0x00, 0x31, 0x84, 0x60, 0x40, 0x44, 0x1a, 0x22, 0x08, 0x92, 0x40, + 0x12, 0x18, 0x88, 0x48, 0x91, 0x09, 0x23, 0x12, 0x24, 0xc9, 0x20, 0x3f, 0xb7, 0xbf, 0xf7, 0xbf, 0xbf, 0x6f, 0xf7, 0xdf, 0xfe, 0xe6, 0xff, 0xfd, 0x26, 0x64, 0xae, 0xa8, 0xc9, 0x51, 0x89, 0x30, 0x10, 0x48, 0x61, 0x24, 0x44, 0x12, 0x51, 0x10, 0x01, 0x32, 0x02, 0x20, 0x89, 0x19, 0x25, 0x40, 0x90, 0x92, 0x48, 0x90, + 0x88, 0x82, 0x23, 0x12, 0x24, 0xa4, 0x20, 0xc9, 0x92, 0x12, 0x4d, 0x9b, 0xfd, 0xed, 0xbd, 0xbb, 0xef, 0xed, 0x3e, 0xf6, 0xef, 0xbf, 0xff, 0x93, 0x32, 0x96, 0xca, 0xa6, 0x4c, 0x4c, 0x64, 0x49, 0x93, 0x24, 0x44, 0x49, 0x31, 0x89, 0x10, 0x12, 0x48, 0x41, 0x88, 0x18, 0x89, 0x02, 0x21, 0x04, 0x44, 0x91, 0x22, 0x00, + 0x61, 0x22, 0x20, 0x44, 0x80, 0x20, 0x94, 0x24, 0x42, 0x44, 0x91, 0x5e, 0x6f, 0x7f, 0xef, 0x6e, 0xfa, 0xfd, 0xef, 0xbf, 0xbd, 0xff, 0xf2, 0x64, 0xdb, 0x99, 0x32, 0xd5, 0x32, 0x89, 0x16, 0x4a, 0x64, 0x95, 0x12, 0x49, 0x08, 0x61, 0x06, 0x42, 0x12, 0x0c, 0x21, 0x82, 0x20, 0x62, 0x10, 0x33, 0x12, 0x44, 0x24, 0x60, + 0x04, 0x11, 0x8c, 0x91, 0x33, 0x0a, 0x11, 0x21, 0x29, 0x24, 0x92, 0x4f, 0xfb, 0xf6, 0xfb, 0xff, 0xbf, 0x9f, 0xf9, 0xed, 0xff, 0xfe, 0x98, 0x99, 0x8c, 0x65, 0x6c, 0x51, 0x82, 0xb2, 0xc1, 0x92, 0x48, 0x91, 0x22, 0x24, 0x86, 0x04, 0x48, 0x48, 0x84, 0xa0, 0x24, 0x22, 0x06, 0x08, 0xc6, 0x80, 0x22, 0x12, 0x84, 0x00, + 0x12, 0x44, 0x21, 0x24, 0x44, 0x48, 0xc4, 0x89, 0x09, 0x22, 0x4c, 0xaf, 0xbe, 0xdf, 0xbe, 0xdb, 0xed, 0xf3, 0x3f, 0x7f, 0xff, 0xf2, 0x4d, 0x9a, 0x65, 0x26, 0x49, 0x2c, 0x98, 0x46, 0x2c, 0x24, 0x92, 0x48, 0x89, 0x92, 0x60, 0x92, 0x21, 0x00, 0xa1, 0x03, 0x08, 0x08, 0xc0, 0x88, 0x08, 0x49, 0x28, 0x90, 0x91, 0x90, + 0x88, 0x92, 0x49, 0x09, 0x08, 0x84, 0x12, 0x24, 0x44, 0x99, 0x24, 0xa7, 0xef, 0x7b, 0xef, 0xfe, 0xff, 0x7f, 0xef, 0xff, 0xfe, 0x49, 0x64, 0x66, 0x53, 0x32, 0x96, 0xa2, 0x65, 0x11, 0x22, 0x64, 0x95, 0x26, 0x48, 0x42, 0x18, 0x88, 0x84, 0x32, 0x18, 0x50, 0x42, 0xc1, 0x10, 0x23, 0x21, 0x09, 0x09, 0x24, 0x48, 0x10, + 0x21, 0x08, 0x84, 0x49, 0x22, 0x31, 0x22, 0x44, 0x90, 0x84, 0x93, 0x17, 0x7b, 0xfe, 0xfb, 0x6f, 0xb7, 0x6d, 0xfb, 0xff, 0xe9, 0x9b, 0x33, 0x49, 0x98, 0xc9, 0xb2, 0x92, 0x05, 0x91, 0x25, 0x93, 0x24, 0x91, 0x26, 0x18, 0x82, 0x21, 0x10, 0x84, 0x42, 0x0c, 0x52, 0x14, 0x13, 0x10, 0x24, 0x92, 0x44, 0x43, 0x08, 0x80, + 0x44, 0x49, 0x31, 0x22, 0x49, 0x09, 0x24, 0x52, 0x24, 0x62, 0x59, 0x53, 0xde, 0xef, 0xbf, 0xfb, 0xfd, 0xff, 0x7f, 0xfd, 0x2c, 0xa4, 0xcb, 0x32, 0x66, 0x4c, 0x48, 0x4c, 0xd8, 0x4c, 0x98, 0x12, 0x48, 0x91, 0x21, 0x84, 0x92, 0x24, 0x49, 0x04, 0x42, 0x21, 0x08, 0x10, 0x84, 0x44, 0x92, 0x20, 0x92, 0x48, 0x22, 0x60, + 0x44, 0x21, 0x02, 0x24, 0x49, 0x48, 0x89, 0x12, 0x45, 0x19, 0x24, 0xc9, 0xf7, 0xfb, 0xed, 0xbe, 0xdb, 0x97, 0xff, 0x93, 0x46, 0xb4, 0x98, 0x96, 0x49, 0x33, 0x13, 0x21, 0x02, 0x42, 0x4a, 0xc8, 0x92, 0x4c, 0x48, 0x22, 0x44, 0x84, 0x84, 0x51, 0x10, 0x81, 0x21, 0x82, 0x20, 0x49, 0x08, 0x8c, 0x22, 0x10, 0x84, 0x00, + 0x11, 0x84, 0x48, 0x91, 0x10, 0x46, 0x48, 0x89, 0x11, 0x04, 0x8c, 0xac, 0xff, 0xbe, 0xff, 0xef, 0xfe, 0xff, 0xf4, 0xda, 0x73, 0x4b, 0x26, 0xc9, 0x99, 0x88, 0xa4, 0x95, 0x32, 0x59, 0x42, 0x24, 0x92, 0x42, 0x4a, 0x48, 0x20, 0x50, 0x90, 0x81, 0x14, 0x98, 0x14, 0x24, 0x0a, 0x08, 0x48, 0x91, 0x29, 0x24, 0x91, 0x00, + 0x12, 0x12, 0x12, 0x44, 0x92, 0x30, 0x44, 0x89, 0x24, 0xc4, 0xa3, 0x26, 0xed, 0xef, 0xb6, 0xfb, 0x6f, 0xff, 0x9d, 0x66, 0x99, 0x69, 0x64, 0x69, 0x26, 0x64, 0xa4, 0x91, 0x24, 0x84, 0x34, 0x93, 0x24, 0x92, 0x21, 0x13, 0x0b, 0x06, 0x12, 0x28, 0xc1, 0x02, 0xc0, 0x91, 0x48, 0xa2, 0x42, 0x41, 0x08, 0x42, 0x12, 0x60, + 0xc2, 0x48, 0x92, 0x12, 0x22, 0x84, 0x91, 0x20, 0x88, 0x32, 0x64, 0x52, 0x3d, 0xfb, 0xff, 0xbf, 0xff, 0xf6, 0x67, 0x35, 0xad, 0x24, 0x93, 0x14, 0xc0, 0x13, 0x12, 0x4a, 0x49, 0x32, 0x89, 0x10, 0x64, 0x91, 0x8c, 0x40, 0x48, 0x20, 0x42, 0x0a, 0x08, 0x44, 0x0a, 0x08, 0x41, 0x02, 0x24, 0x4c, 0xc4, 0x92, 0x42, 0x00, + 0x08, 0x48, 0x21, 0x90, 0x88, 0x24, 0x89, 0x26, 0x4b, 0x19, 0x15, 0x99, 0xbf, 0x7e, 0xdb, 0xef, 0xfe, 0xc9, 0xb2, 0xcc, 0xcc, 0x96, 0x99, 0x96, 0x36, 0xc8, 0x52, 0x48, 0x92, 0x48, 0x99, 0x4c, 0x92, 0x4c, 0x10, 0x99, 0x21, 0x29, 0x24, 0x90, 0x22, 0x31, 0x20, 0xa2, 0x11, 0x18, 0x89, 0x22, 0x11, 0x08, 0x48, 0x90, + 0x24, 0x83, 0x0c, 0x24, 0x93, 0x11, 0x24, 0x11, 0x20, 0xc5, 0x90, 0xa4, 0x9f, 0xdf, 0xfe, 0xff, 0xd2, 0x6a, 0x4c, 0xca, 0x52, 0xd2, 0x64, 0x61, 0x88, 0x8c, 0xc9, 0x24, 0x92, 0x89, 0x24, 0x42, 0x12, 0x40, 0x42, 0x21, 0x09, 0x02, 0x08, 0x44, 0x89, 0x00, 0x24, 0x04, 0x8c, 0x40, 0x22, 0x20, 0x92, 0x49, 0x08, 0x40, + 0x44, 0x90, 0x40, 0x44, 0x40, 0xc4, 0x44, 0xc4, 0x94, 0x92, 0x6e, 0x26, 0x4f, 0xff, 0xff, 0xfe, 0xd3, 0x36, 0x6d, 0x33, 0x33, 0x19, 0x12, 0x0c, 0x49, 0x32, 0x24, 0x92, 0x48, 0xa4, 0x62, 0x32, 0x49, 0x13, 0x24, 0x84, 0x48, 0x52, 0x49, 0x02, 0x40, 0x4c, 0x83, 0x10, 0x60, 0x46, 0x24, 0x94, 0x88, 0x21, 0x23, 0x10, + 0x12, 0x24, 0x93, 0x12, 0x18, 0x09, 0x12, 0x12, 0x46, 0x22, 0x41, 0x33, 0x63, 0xfb, 0xff, 0xd2, 0x2c, 0xc5, 0xa7, 0x34, 0x8c, 0x65, 0x92, 0xd2, 0x45, 0x02, 0x24, 0x92, 0x49, 0x25, 0x12, 0x89, 0x24, 0x48, 0x24, 0x49, 0x22, 0x44, 0x41, 0x30, 0x56, 0x02, 0x18, 0x49, 0x02, 0x11, 0x88, 0x44, 0x25, 0x84, 0x48, 0x00, + 0x90, 0x89, 0x08, 0x20, 0x85, 0x22, 0x48, 0x91, 0x22, 0x69, 0x19, 0x48, 0x98, 0x32, 0x49, 0x37, 0xa9, 0x99, 0x98, 0xcc, 0xc9, 0x84, 0x49, 0x12, 0x30, 0xc9, 0x92, 0x49, 0x25, 0x31, 0x11, 0x24, 0x91, 0x22, 0x91, 0x10, 0x84, 0x89, 0x32, 0x05, 0x00, 0xb0, 0xc0, 0x42, 0x12, 0x88, 0x12, 0x49, 0x20, 0x10, 0x84, 0xa0, + 0x24, 0x91, 0x22, 0x8c, 0xa1, 0x24, 0x42, 0x44, 0x29, 0x0c, 0xc9, 0x19, 0x93, 0x0c, 0xb6, 0x8c, 0xb3, 0x36, 0x52, 0x93, 0x32, 0x32, 0x49, 0x24, 0x8a, 0x24, 0x49, 0x24, 0x92, 0x49, 0x4c, 0x44, 0x89, 0x12, 0x11, 0x24, 0x91, 0x20, 0x84, 0x90, 0x22, 0x04, 0x04, 0x90, 0x90, 0x22, 0x42, 0x22, 0x4a, 0x4a, 0x31, 0x00, + 0x82, 0x24, 0x24, 0x90, 0x24, 0x11, 0x12, 0x49, 0x89, 0x44, 0x92, 0xc4, 0x4c, 0xe5, 0x92, 0xe9, 0x94, 0xc4, 0xcc, 0xb0, 0x0c, 0x89, 0x94, 0xa4, 0x89, 0x24, 0x49, 0x12, 0x48, 0x88, 0x42, 0x51, 0x22, 0x44, 0x44, 0x22, 0x12, 0x14, 0x10, 0x42, 0x91, 0x11, 0x22, 0x0c, 0x45, 0x24, 0x49, 0x24, 0x82, 0x42, 0x02, 0x40, + 0x49, 0x22, 0x40, 0x43, 0x04, 0xc4, 0x91, 0x22, 0x12, 0x53, 0x26, 0x26, 0x62, 0x33, 0x5a, 0x4a, 0x4c, 0x99, 0x25, 0x26, 0xc1, 0x48, 0x24, 0x92, 0x64, 0x93, 0x24, 0x49, 0x24, 0xa6, 0x32, 0x12, 0x48, 0x24, 0x92, 0x88, 0xc2, 0x43, 0x42, 0x18, 0x14, 0x42, 0x20, 0x41, 0x08, 0x41, 0x11, 0x11, 0x24, 0x10, 0x88, 0x90, + + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x90, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x28, 0x20, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x09, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x3d, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x19, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x28, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xeb, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x94, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x62, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x28, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x8c, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x09, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x81, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6b, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x10, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + + + diff --git a/ARM_Tag_FW/common/compression.cpp b/ARM_Tag_FW/common/compression.cpp new file mode 100644 index 00000000..5644cbd7 --- /dev/null +++ b/ARM_Tag_FW/common/compression.cpp @@ -0,0 +1,175 @@ +#include + +std::vector decompContexts; + +int decompCallback(TINF_DATA *d) { + // in the callback for uzlib we'll get a uzlib context from which it originates + for (uint8_t i = 0; i < decompContexts.size(); i++) { + // see if we can find which decompression context that callback belongs to + if (decompContexts.at(i)->ctx == d) { + decompress *dec = decompContexts.at(i); +#ifdef ENABLE_OEPLFS + if (dec->fromFile) + return dec->getNextCompressedBlockFromFile(); + else +#endif + return dec->getNextCompressedBlockFromFlash(); + } + } + printf("Couldn't find callback...\n"); + return -1; +} + +decompress::decompress() { + decompContexts.push_back(this); +} + +void decompress::seek(uint32_t address) { +} + +bool decompress::readHeader() { + uzlib_init(); + + // read the window size from the zlib header + int res = uzlib_zlib_parse_header(this->ctx); + if (res < 0) { + printf("FS: Invalid zlib header\n"); + return false; + } + + // the window size is reported as 2^(x-8). + uint16_t window = 0x100 << res; + + // check if the file served has a sensible window size + if (window > MAX_WINDOW_SIZE) { + printf("FS: Asked to decompress a file with a specified window size of %d, I don't see that happening\n", window); + return false; + } else { + // printf("FS: Opened compressed file with dictionary size %d\n", window); + } + + // allocate dict/window if not already allocated + if (!this->dictionary) this->dictionary = (uint8_t *)malloc(window); + + uzlib_uncompress_init(this->ctx, this->dictionary, window); + return true; +} + +#ifdef ENABLE_OEPLFS +bool decompress::openFromFile(char *filename) { + this->file = fs->getFile(filename); + if (!this->file) { + return false; + } + this->setupContext(); + this->ctx->source_read_cb = decompCallback; + this->file->getBlock(4, this->compBuffer, ZLIB_CACHE_SIZE); + this->compressedPos += ZLIB_CACHE_SIZE; + this->compressedSize = file->length - 4; + this->file->getBlock(0, (uint8_t *)&this->decompressedSize, 4); + this->fromFile = true; + return this->readHeader(); +} +#endif + +bool decompress::openFromFlash(uint32_t eepBase, uint32_t cSize) { + this->setupContext(); + this->ctx->source_read_cb = decompCallback; + this->compressedPos += ZLIB_CACHE_SIZE; + this->compressedSize = cSize - 4; + this->eepromBase = eepBase; + HAL_flashRead(this->eepromBase, (uint8_t *)&this->decompressedSize, 4); + HAL_flashRead(this->eepromBase + 4, this->compBuffer, ZLIB_CACHE_SIZE); + this->fromFile = false; + return this->readHeader(); +} + +void decompress::setupContext() { + if (!this->ctx) this->ctx = new struct uzlib_uncomp; + if (!this->compBuffer) this->compBuffer = (uint8_t *)malloc(ZLIB_CACHE_SIZE); + this->ctx->source = this->compBuffer; + this->ctx->source_limit = this->compBuffer + ZLIB_CACHE_SIZE; + compressedPos = 0; + decompressedPos = 0; +} + +decompress::~decompress() { + for (uint8_t i = 0; i < decompContexts.size(); i++) { + if (decompContexts.at(i) == this) + decompContexts.erase(decompContexts.begin() + i); + } + if (this->dictionary) free(this->dictionary); + if (this->ctx) delete this->ctx; + if (this->compBuffer) free(this->compBuffer); +} + +#ifdef ENABLE_OEPLFS +int decompress::getNextCompressedBlockFromFile() { + int32_t bytesLeft = compressedSize - compressedPos; + if (bytesLeft <= 0) return -1; + if (bytesLeft > ZLIB_CACHE_SIZE) bytesLeft = ZLIB_CACHE_SIZE; + this->file->getBlock(4 + compressedPos, this->compBuffer, ZLIB_CACHE_SIZE); + ctx->source = this->compBuffer + 1; + ctx->source_limit = this->compBuffer + bytesLeft; + this->compressedPos += ZLIB_CACHE_SIZE; + return this->compBuffer[0]; +} +#endif + +int decompress::getNextCompressedBlockFromFlash() { + int32_t bytesLeft = compressedSize - compressedPos; + if (bytesLeft <= 0) return -1; + if (bytesLeft > ZLIB_CACHE_SIZE) bytesLeft = ZLIB_CACHE_SIZE; + HAL_flashRead(this->eepromBase + 4 + compressedPos, this->compBuffer, bytesLeft); + ctx->source = this->compBuffer + 1; + ctx->source_limit = this->compBuffer + bytesLeft; + this->compressedPos += bytesLeft; + return this->compBuffer[0]; +} + +uint32_t decompress::getBlock(uint32_t address, uint8_t *target, uint32_t len) { + if (address + len > decompressedSize) return 0; + if (address < this->decompressedPos) { + // reload file, start from scratch + this->ctx->source = this->compBuffer; + compressedPos = 0; + decompressedPos = 0; + if (this->fromFile) + this->getNextCompressedBlockFromFile(); + else + this->getNextCompressedBlockFromFlash(); + this->ctx->source = this->compBuffer; + this->readHeader(); + } + + // skip to the next part of the output stream + uint8_t *temp = nullptr; + if (address != decompressedPos) temp = (uint8_t *)malloc(ZLIB_CACHE_SIZE); + while (this->decompressedPos < address) { + uint32_t readBytes = address - decompressedPos; + if (readBytes > ZLIB_CACHE_SIZE) readBytes = ZLIB_CACHE_SIZE; + decompressedPos += readBytes; + this->ctx->dest = temp; + ctx->dest_start = ctx->dest; + ctx->dest_limit = ctx->dest + readBytes; + uzlib_uncompress(ctx); + } + if (temp) free(temp); + + uint32_t bytesLeft = this->decompressedSize - this->decompressedPos; + if (len > bytesLeft) len = bytesLeft; + + this->ctx->dest = (unsigned char *)target; + ctx->dest_start = ctx->dest; + ctx->dest_limit = ctx->dest + len; + + uzlib_uncompress(ctx); + this->decompressedPos += len; + return len; +} + +uint8_t decompress::readByte(uint32_t address) { + uint8_t a; + this->getBlock(address, &a, 1); + return a; +} diff --git a/ARM_Tag_FW/common/compression.h b/ARM_Tag_FW/common/compression.h new file mode 100644 index 00000000..fe05f604 --- /dev/null +++ b/ARM_Tag_FW/common/compression.h @@ -0,0 +1,39 @@ +#include "uzlib/src/uzlib.h" + +class decompress { + public: +// decompress(); +#ifdef ENABLE_OEPLFS + bool openFromFile(char *filename); +#endif + bool openFromFlash(uint32_t eepBase, uint32_t cSize); + uint32_t getBlock(uint32_t address, uint8_t *target, uint32_t len); + uint8_t readByte(uint32_t address); + void seek(uint32_t address); + +#ifdef ENABLE_OEPLFS + int getNextCompressedBlockFromFile(); +#endif + int getNextCompressedBlockFromFlash(); + + decompress(); + ~decompress(); + + bool fromFile = false; + struct uzlib_uncomp *ctx = nullptr; + void reset(); + protected: + void setupContext(); + bool readHeader(); + uint8_t *compBuffer = nullptr; + // uint8_t *uncompBuffer = nullptr; + uint32_t decompressedSize; + uint32_t decompressedPos; + uint32_t compressedSize; + uint32_t compressedPos; +#ifdef ENABLE_OEPLFS + OEPLFile *file = nullptr; +#endif + uint32_t eepromBase; + uint8_t *dictionary = nullptr; +}; \ No newline at end of file diff --git a/ARM_Tag_FW/common/eeprom_struct.h b/ARM_Tag_FW/common/eeprom_struct.h new file mode 100644 index 00000000..ec4102d1 --- /dev/null +++ b/ARM_Tag_FW/common/eeprom_struct.h @@ -0,0 +1,8 @@ +struct EepromImageHeader { + uint64_t version; + uint32_t validMarker; + uint32_t size; + uint8_t dataType; + uint32_t id; + uint8_t argument; +}; \ No newline at end of file diff --git a/ARM_Tag_FW/Newton_M3_nRF52811/include/FreeSans9pt7b.h b/ARM_Tag_FW/common/fonts/FreeSans9pt7b.h similarity index 100% rename from ARM_Tag_FW/Newton_M3_nRF52811/include/FreeSans9pt7b.h rename to ARM_Tag_FW/common/fonts/FreeSans9pt7b.h diff --git a/ARM_Tag_FW/Newton_M3_nRF52811/include/FreeSansBold18pt7b.h b/ARM_Tag_FW/common/fonts/FreeSansBold18pt7b.h similarity index 100% rename from ARM_Tag_FW/Newton_M3_nRF52811/include/FreeSansBold18pt7b.h rename to ARM_Tag_FW/common/fonts/FreeSansBold18pt7b.h diff --git a/ARM_Tag_FW/Newton_M3_nRF52811/include/FreeSansBold24pt7b.h b/ARM_Tag_FW/common/fonts/FreeSansBold24pt7b.h similarity index 100% rename from ARM_Tag_FW/Newton_M3_nRF52811/include/FreeSansBold24pt7b.h rename to ARM_Tag_FW/common/fonts/FreeSansBold24pt7b.h diff --git a/ARM_Tag_FW/common/uzlib b/ARM_Tag_FW/common/uzlib new file mode 160000 index 00000000..6d60d651 --- /dev/null +++ b/ARM_Tag_FW/common/uzlib @@ -0,0 +1 @@ +Subproject commit 6d60d651a4499a64f2e5b21b4cc08d98cb84b5c1 diff --git a/Tag_Flasher/88MZ100-Serial-Flasher.py b/Tag_Flasher/88MZ100-Serial-Flasher.py index 66bfabea..03ba795c 100644 --- a/Tag_Flasher/88MZ100-Serial-Flasher.py +++ b/Tag_Flasher/88MZ100-Serial-Flasher.py @@ -18,11 +18,24 @@ def bytes_to_int(bytes): def to_byte(input,number=4): return input.to_bytes(number, byteorder = 'little') +def find_offset(byte_array, substring): + try: + offset = byte_array.index(substring) + return offset + except ValueError: + return -1 + def create_full_fw(filename,out_filename): print("Opening file " + filename) in_file = open(filename, "rb") data = bytearray(in_file.read()) filesize = len(data) + fwlen = find_offset(data, b'---OEPL_FS!') + if(fwlen!=-1): + print("Found OEPL FS at offset "+str(fwlen)) + else: + print("OEPL FS not found, this is probably an older FW version") + fwlen = filesize in_file.close() print("file size: "+str(filesize)) entry_point = bytes_to_int(data[4:8]) @@ -31,7 +44,7 @@ def create_full_fw(filename,out_filename): #adding firmware header here header = to_byte(0x00000000) header += to_byte(0xFFFFFFFF) - header += to_byte(filesize) + header += to_byte(fwlen) header += to_byte(0xFFEEFFFF) header += to_byte(0xFFFFFFFF) header += to_byte(0x100000) @@ -163,6 +176,12 @@ def flash_file_flash(filename): in_file = open(filename, "rb") data = bytearray(in_file.read()) filesize = len(data) + fwlen = find_offset(data, b'---OEPL_FS!') + if(fwlen!=-1): + print("Found OEPL FS at offset "+str(fwlen)) + else: + print("OEPL FS not found, this is probably an older FW version") + fwlen = filesize in_file.close() print("file size: "+str(filesize)) entry_point = bytes_to_int(data[4:8]) @@ -172,7 +191,7 @@ def flash_file_flash(filename): header = to_byte(0x00000000) header += to_byte(0xFFFFFFFF) - header += to_byte(filesize) + header += to_byte(fwlen) header += to_byte(0xFFEEFFFF) header += to_byte(0xFFFFFFFF) header += to_byte(0x100000) diff --git a/oepl-definitions.h b/oepl-definitions.h index 89e5f875..8d2c4a05 100755 --- a/oepl-definitions.h +++ b/oepl-definitions.h @@ -20,8 +20,11 @@ #define SOLUM_M2_BWR_27 0x22 #define SOLUM_M2_BWR_29 0x23 #define SOLUM_M2_BWR_42 0x24 +#define SOLUM_M2_BW_16 0x25 #define SOLUM_M2_BWR_75 0x26 + + #define SOLUM_M3_BWR_97 0x2E #define SOLUM_M3_BWR_43 0x2F diff --git a/zbs243_Tag_FW/Makefile b/zbs243_Tag_FW/Makefile index a7871ed9..34b0239e 100644 --- a/zbs243_Tag_FW/Makefile +++ b/zbs243_Tag_FW/Makefile @@ -3,6 +3,7 @@ BUILD ?= zbs29_ssd1619 #file containing main() must be first! SOURCES += main.c eeprom.c drawing.c +#SOURCES += ccm.c comms.c SOURCES += comms.c SOURCES += syncedproto.c userinterface.c SOURCES += powermgt.c barcode.c i2cdevices.c settings.c @@ -56,7 +57,9 @@ main.elf: $(OBJS) SOURCES += board/zbs29_ssd1619/screen.c SOURCES += board/zbs42_ssd1619/screen.c SOURCES += board/zbs154_ssd1619/screen.c +SOURCES += board/zbs16_ssd1619/screen.c SOURCES += board/zbs29_uc8151/screen.c +SOURCES += board/zbs27_ucvar/screen.c clean: diff --git a/zbs243_Tag_FW/aes.h b/zbs243_Tag_FW/aes.h new file mode 100644 index 00000000..138516d9 --- /dev/null +++ b/zbs243_Tag_FW/aes.h @@ -0,0 +1,20 @@ +#ifndef _AES_H_ +#define _AES_H_ + +#include + + +#define AES_KEY_SIZE 16 +#define AES_BLOCK_SIZE 16 + + +#pragma callee_saves aesPrvSetKey +void aesSetKey(const uint8_t __xdata *key); + +#pragma callee_saves aesPrvEnc +void aesEnc(uint8_t __xdata *data); + + + + +#endif diff --git a/zbs243_Tag_FW/ccm.c b/zbs243_Tag_FW/ccm.c new file mode 100644 index 00000000..4d2f179e --- /dev/null +++ b/zbs243_Tag_FW/ccm.c @@ -0,0 +1,177 @@ +#include "asmUtil.h" +#include "printf.h" +#include "aes.h" +#include "cpu.h" +#include "ccm.h" + + +//TI does not provide nearly enough docs to get AES-CCM working on the CC1110. Le Sigh... + + +static uint8_t __xdata mBlockOut[AES_BLOCK_SIZE]; +static uint8_t __xdata mBlockIn[AES_BLOCK_SIZE]; +static uint8_t __xdata mMic[4]; + + + +//sdcc cannot inline things so we do for it +#define aesCcmPrvCopyNonceSetHalfword(_firstByte, nonce, _val) \ +do { \ + mBlockOut[0] = (_firstByte); \ + xMemCopyShort(mBlockOut + 1, nonce, 13); \ + mBlockOut[14] = 0; /* normally val.hi, but for us - zero */ \ + mBlockOut[15] = (_val); \ +} while(0) + +//leaves result in mBlockOut +#pragma callee_saves aesCcmPrvCalcUnencryptedMic +static void aesCcmPrvCalcUnencryptedMic(const uint8_t __xdata *src, const struct AesCcmInfo __xdata *ccmInfo) __reentrant +{ + uint8_t done; + + //create block 0 + aesCcmPrvCopyNonceSetHalfword(ccmInfo->authSrcLen ? 0x49 : 0x09, ccmInfo->nonce, ccmInfo->encDataLen); + + //encrypt it + aesEnc(mBlockOut); + + if (ccmInfo->authSrcLen) { + + uint8_t __xdata *blk = mBlockIn; + uint8_t now, already = 2; + + *blk++ = 0; //authSrcLen.hi + *blk++ = ccmInfo->authSrcLen; + now = 14; //since we already used 2 + done = 0; + + while (done < ccmInfo->authSrcLen) { + + uint8_t i; + + if (now > (uint8_t)(ccmInfo->authSrcLen - done)) + now = (uint8_t)(ccmInfo->authSrcLen - done); + + xMemCopyShort(blk, src, now); + src += now; + xMemSet(blk + now, 0, 16 - already - now); + + for (i = 0; i < 16; i++) + mBlockOut[i] ^= mBlockIn[i]; + + aesEnc(mBlockOut); + blk = mBlockIn; + done += now; + now = 16; + already = 0; + } + } + + done = 0; + while (done < ccmInfo->encDataLen) { + + uint8_t i, now; + + now = 16; + if (now > ccmInfo->encDataLen - done) + now = ccmInfo->encDataLen - done; + + for (i = 0; i < now; i++) + mBlockOut[i] ^= *src++; + + done += now; + + aesEnc(mBlockOut); + } +} + +void aesCcmEnc(void __xdata *dstP, const void __xdata *srcP, const struct AesCcmInfo __xdata *ccmInfo) __reentrant +{ + const uint8_t __xdata *src = (const uint8_t __xdata*)srcP; + uint8_t __xdata *dst = (uint8_t*)dstP; + uint8_t i, done = 0, now, ctr = 0; + + aesSetKey(ccmInfo->key); + + //it goes after encrypted data + aesCcmPrvCalcUnencryptedMic(src, ccmInfo); + xMemCopyShort(mMic, mBlockOut, sizeof(mMic)); + + //copy authed data + xMemCopyShort(dst, src, ccmInfo->authSrcLen); + src += ccmInfo->authSrcLen; + dst += ccmInfo->authSrcLen; + + //now we encrypt + now = 0; //first block not used + while (done < ccmInfo->encDataLen) { + + if (now > (uint8_t)(ccmInfo->encDataLen - done)) + now = (uint8_t)(ccmInfo->encDataLen - done); + + aesCcmPrvCopyNonceSetHalfword(1, ccmInfo->nonce, ctr++); + aesEnc(mBlockOut); + + if (!now) //first block + + for (i = 0; i < sizeof(mMic); i++) + mMic[i] ^= mBlockOut[i]; + else { + + for (i = 0; i < now; i++) + *dst++ = *src++ ^ mBlockOut[i]; + } + done += now; + now = 16; + } + + xMemCopyShort(dst, mMic, sizeof(mMic)); +} + +__bit aesCcmDec(void __xdata *dstP, const void __xdata *srcP, const struct AesCcmInfo __xdata *ccmInfo) __reentrant +{ + const uint8_t __xdata *src = (const uint8_t __xdata*)srcP; + uint8_t __xdata *dst = (uint8_t*)dstP; + uint8_t i, done, now, ctr = 0; + + aesSetKey(ccmInfo->key); + + //copy authed data + xMemCopyShort(dst, src, ccmInfo->authSrcLen); + src += ccmInfo->authSrcLen; + dst += ccmInfo->authSrcLen; + + //then we decrypt + done = 0; + now = 0; //first block not used + while (done < ccmInfo->encDataLen) { + + if (now > (uint8_t)(ccmInfo->encDataLen - done)) + now = (uint8_t)(ccmInfo->encDataLen - done); + + aesCcmPrvCopyNonceSetHalfword(1, ccmInfo->nonce, ctr++); + + aesEnc(mBlockOut); + + if (!now) { //first block + + //given mic is after data + for (i = 0; i < sizeof(mMic); i++) + mMic[i] = src[ccmInfo->encDataLen + i] ^ mBlockOut[i]; + } + else { + + for (i = 0; i < now; i++) + *dst++ = *src++ ^ mBlockOut[i]; + } + done += now; + now = 16; + } + + aesCcmPrvCalcUnencryptedMic(dstP, ccmInfo); + return xMemEqual(mMic, mBlockOut, sizeof(mMic)); +} + + + + diff --git a/zbs243_Tag_FW/ccm.h b/zbs243_Tag_FW/ccm.h new file mode 100644 index 00000000..3109d02a --- /dev/null +++ b/zbs243_Tag_FW/ccm.h @@ -0,0 +1,32 @@ +#ifndef _CCM_H_ +#define _CCM_H_ + +//CCM defined for T = 4 (mic is 4 bytes), Q = 2 (max data len 65536), N = 13( nonse is 13 bytes), 128-bit AES (16 bytes of key) +//no more than 0xff00 auth data bytes allowed + +#include +#include + +#define AES_CCM_MIC_SIZE 4 +#define AES_CCM_NONCE_SIZE 13 + +//encrypted data follows auth data. both in and out. 4 bytes of MIC appended on the encrypt path, checked on the decrypt path +//data size limited to about 240 bytes..i can live with that + +struct AesCcmInfo { + uint8_t authSrcLen; + uint8_t encDataLen; + const uint8_t __xdata *key; + uint8_t nonce[AES_CCM_NONCE_SIZE]; +}; + + +#pragma callee_saves aesCcmEnc +void aesCcmEnc(void __xdata *dst, const void __xdata *src, const struct AesCcmInfo __xdata *ccmInfo) __reentrant; + +#pragma callee_saves aesCcmDec +__bit aesCcmDec(void __xdata *dst, const void __xdata *src, const struct AesCcmInfo __xdata *ccmInfo) __reentrant; + + + +#endif diff --git a/zbs243_Tag_FW/drawing.c b/zbs243_Tag_FW/drawing.c index 7adfd0d2..e718c48b 100755 --- a/zbs243_Tag_FW/drawing.c +++ b/zbs243_Tag_FW/drawing.c @@ -20,7 +20,7 @@ void drawImageAtAddress(uint32_t addr, uint8_t lut) __reentrant { drawBuffer = malloc(512); if (!drawBuffer) { #ifdef DEBUGDRAWING - pr("malloc during draw failed..\n"); + pr("DRAW: malloc during draw failed..\n"); #endif return; } @@ -30,13 +30,24 @@ void drawImageAtAddress(uint32_t addr, uint8_t lut) __reentrant { switch (eih->dataType) { case DATATYPE_IMG_RAW_1BPP: #ifdef DEBUGDRAWING - pr("Doing raw 1bpp with lut %d\n", lut); + pr("DRAW: Raw 1bpp with lut %d\n", lut); #endif - epdSetup(); + // epdSetup(); if (lut) selectLUT(lut); beginFullscreenImage(); clearScreen(); + beginWriteFramebuffer(EPD_COLOR_BLACK); + #ifdef EPD_BYTEWISE_CS + for (uint16_t c = 0; c < (SCREEN_HEIGHT * (SCREEN_WIDTH / 8)); c++) { + if (c % 512 == 0) { + eepromRead(addr + sizeof(struct EepromImageHeader) + c, drawBuffer, 512); + } + epdSelect(); + epdSend(drawBuffer[c % 512]); + epdDeselect(); + } + #else epdSelect(); for (uint16_t c = 0; c < (SCREEN_HEIGHT * (SCREEN_WIDTH / 8)); c++) { if (c % 512 == 0) { @@ -47,16 +58,29 @@ void drawImageAtAddress(uint32_t addr, uint8_t lut) __reentrant { epdSend(drawBuffer[c % 512]); } epdDeselect(); + #endif endWriteFramebuffer(); + break; case DATATYPE_IMG_RAW_2BPP: #ifdef DEBUGDRAWING - pr("Doing raw 2bpp with lut %d\n", lut); + pr("DRAW: Raw 2bpp with lut %d\n", lut); #endif - epdSetup(); if (lut) selectLUT(lut); beginFullscreenImage(); + + beginWriteFramebuffer(EPD_COLOR_BLACK); + #ifdef EPD_BYTEWISE_CS + for (uint16_t c = 0; c < (SCREEN_HEIGHT * (SCREEN_WIDTH / 8)); c++) { + if (c % 512 == 0) { + eepromRead(addr + sizeof(struct EepromImageHeader) + c, drawBuffer, 512); + } + epdSelect(); + epdSend(drawBuffer[c % 512]); + epdDeselect(); + } + #else epdSelect(); for (uint16_t c = 0; c < (SCREEN_HEIGHT * (SCREEN_WIDTH / 8)); c++) { if (c % 512 == 0) { @@ -67,9 +91,20 @@ void drawImageAtAddress(uint32_t addr, uint8_t lut) __reentrant { epdSend(drawBuffer[c % 512]); } epdDeselect(); + #endif endWriteFramebuffer(); beginWriteFramebuffer(EPD_COLOR_RED); + #ifdef EPD_BYTEWISE_CS + for (uint16_t c = 0; c < (SCREEN_HEIGHT * (SCREEN_WIDTH / 8)); c++) { + if (c % 512 == 0) { + eepromRead(addr + sizeof(struct EepromImageHeader) + (SCREEN_HEIGHT * (SCREEN_WIDTH / 8)) + c, drawBuffer, 512); + } + epdSelect(); + epdSend(drawBuffer[c % 512]); + epdDeselect(); + } + #else epdSelect(); for (uint16_t c = 0; c < (SCREEN_HEIGHT * (SCREEN_WIDTH / 8)); c++) { if (c % 512 == 0) { @@ -80,11 +115,12 @@ void drawImageAtAddress(uint32_t addr, uint8_t lut) __reentrant { epdSend(drawBuffer[c % 512]); } epdDeselect(); + #endif endWriteFramebuffer(); break; default: // prevent drawing from an unknown file image type #ifdef DEBUGDRAWING - pr("Image with type 0x%02X was requested, but we don't know what to do with that currently...\n", eih->dataType); + pr("DRAW: Image with type 0x%02X was requested, but we don't know what to do with that currently...\n", eih->dataType); #endif free(drawBuffer); return; diff --git a/zbs243_Tag_FW/i2cdevices.c b/zbs243_Tag_FW/i2cdevices.c index 7eb9296c..d9fe5069 100755 --- a/zbs243_Tag_FW/i2cdevices.c +++ b/zbs243_Tag_FW/i2cdevices.c @@ -18,6 +18,8 @@ #include "printf.h" #include "timer.h" +#include "settings.h" + #define __packed #include "../oepl-definitions.h" #include "../oepl-proto.h" @@ -39,7 +41,10 @@ bool supportsNFCWake() { } if (pcount < 10000) { // P1_3 (Field Detect) dropped to 'low' pretty fast, this means the load on this pin is high + #ifdef DEBUGNFC + pr("counts = %d\n", pcount); pr("NFC: This tag currently does not support NFC wake, load on the FD pin (P1.3) is pretty high.\nOn some boards, a pull-up resistor backpowers the NFC IC. Consider removing it!\n"); + #endif return false; } else { // No reason to believe this pin is currently loaded down severely diff --git a/zbs243_Tag_FW/main.c b/zbs243_Tag_FW/main.c index 78217398..fa7f2904 100755 --- a/zbs243_Tag_FW/main.c +++ b/zbs243_Tag_FW/main.c @@ -161,7 +161,7 @@ uint8_t channelSelect(uint8_t rounds) { // returns 0 if no accesspoints were fo if (detectAP(channelList[c])) { if (mLastLqi > result[c]) result[c] = mLastLqi; #ifdef DEBUGMAIN - if (rounds > 2) pr("Channel: %d - LQI: %d RSSI %d\n", channelList[c], mLastLqi, mLastRSSI); + if (rounds > 2) pr("MAIN: Channel: %d - LQI: %d RSSI %d\n", channelList[c], mLastLqi, mLastRSSI); #endif } } @@ -754,8 +754,12 @@ void main() { wdt10s(); if (currentChannel) { - showAPFound(); +#ifdef DEBUGMAIN + pr("MAIN: Ap Found!\n"); +#endif + //showNoAP(); + showAPFound(); // write the settings to the eeprom powerUp(INIT_EEPROM); writeSettings(); @@ -765,8 +769,11 @@ void main() { currentTagMode = TAG_MODE_ASSOCIATED; doSleep(5000UL); } else { +#ifdef DEBUGMAIN + pr("MAIN: No AP found...\n"); +#endif + //showAPFound(); showNoAP(); - // write the settings to the eeprom powerUp(INIT_EEPROM); writeSettings(); diff --git a/zbs243_Tag_FW/settings.c b/zbs243_Tag_FW/settings.c index c2697d62..c352fd5b 100755 --- a/zbs243_Tag_FW/settings.c +++ b/zbs243_Tag_FW/settings.c @@ -116,5 +116,8 @@ void writeSettings() { void invalidateSettingsEEPROM() { int32_t __xdata valid = 0x0000; + #ifdef DEBUGSETTINGS + pr("SETTINGS: Invalidated settings in EEPROM\n"); + #endif eepromWrite(EEPROM_SETTINGS_AREA_START, (void*)&valid, 4); } \ No newline at end of file diff --git a/zbs243_Tag_FW/settings.h b/zbs243_Tag_FW/settings.h index 06c449f2..e3850c91 100755 --- a/zbs243_Tag_FW/settings.h +++ b/zbs243_Tag_FW/settings.h @@ -6,15 +6,15 @@ #define FW_VERSION 0x0026 // version number #define FW_VERSION_SUFFIX "-MD5" // suffix, like -RC1 or whatever. // #define DEBUGBLOCKS // uncomment to enable extra debug information on the block transfers -// #define DEBUGPROTO // debug protocol +#define DEBUGPROTO // debug protocol // #define DEBUGOTA // debug OTA FW updates -// #define DEBUGDRAWING // debug the drawing part -// #define DEBUGEPD // debug the EPD driver -// #define DEBUGMAIN // parts in the main loop -// #define DEBUGNFC // debug NFC functions +#define DEBUGDRAWING // debug the drawing part +#define DEBUGEPD // debug the EPD driver +#define DEBUGMAIN // parts in the main loop +#define DEBUGNFC // debug NFC functions // #define DEBUGGUI // debug GUI drawing (enabled) -// #define DEBUGSETTINGS // debug settings module (preferences/eeprom) - +#define DEBUGSETTINGS // debug settings module (preferences/eeprom) +// #define DEBUGEEPROM // eeprom-related debug messages #define VALIDATE_IMAGE_MD5 // The firmware can validate the image MD5 before displaying it. This costs about 8mAS (milliamp-second) for a 1.54, 16 // #define PRINT_LUT // uncomment if you want the tag to print the LUT for the current temperature bracket // #define ENABLE_GPIO_WAKE // uncomment to enable GPIO wake @@ -22,7 +22,7 @@ // #define LEAN_VERSION // makes a smaller version, leaving extra flash space for other things // #define WRITE_MAC_FROM_FLASH // takes mac address from flash if none is set in the infopage -#if defined(DEBUGSETTINGS) || defined(DEBUGMSG) || defined(DEBUGBLOCKS) || defined(DEBUGPROTO) || defined(DEBUGOTA) || defined(DEBUGNFC) || defined(DEBUGEPD) || defined(DEBUGMAIN) +#if defined(DEBUGSETTINGS) || defined(DEBUGMSG) || defined(DEBUGBLOCKS) || defined(DEBUGPROTO) || defined(DEBUGOTA) || defined(DEBUGNFC) || defined(DEBUGEPD) || defined(DEBUGMAIN) || defined(DEBUGEEPROM) #define ISDEBUGBUILD #endif diff --git a/zbs243_Tag_FW/syncedproto.c b/zbs243_Tag_FW/syncedproto.c index d3bec98e..ef8e7bd1 100755 --- a/zbs243_Tag_FW/syncedproto.c +++ b/zbs243_Tag_FW/syncedproto.c @@ -217,6 +217,9 @@ static void sendAvailDataReq() { commsTxNoCpy(outBuffer); } struct AvailDataInfo *__xdata getAvailDataInfo() { + #ifdef DEBUGPROTO + pr("PROTO: Full AvailData\n"); + #endif radioRxEnable(true, true); uint32_t __xdata t; for (uint8_t c = 0; c < DATA_REQ_MAX_ATTEMPTS; c++) { @@ -241,6 +244,9 @@ struct AvailDataInfo *__xdata getAvailDataInfo() { return NULL; } struct AvailDataInfo *__xdata getShortAvailDataInfo() { + #ifdef DEBUGPROTO + pr("PROTO: Short AvailData\n"); + #endif radioRxEnable(true, true); uint32_t __xdata t; for (uint8_t c = 0; c < DATA_REQ_MAX_ATTEMPTS; c++) { @@ -314,7 +320,6 @@ static bool processBlockPart(const struct blockPart *bp) { uint16_t __xdata size = BLOCK_PART_DATA_SIZE; // validate if it's okay to copy data if (bp->blockId != curBlock.blockId) { - // pr("got a packet for block %02X\n", bp->blockId); return false; } if (start >= (sizeof(blockbuffer) - 1)) return false; @@ -380,7 +385,6 @@ static void sendBlockRequest() { f->seq = seq++; f->pan = APsrcPan; memcpy(blockreq, &curBlock, sizeof(struct blockRequest)); - // pr("req ver: %02X%02X%02X%02X%02X%02X%02X%02X\n", ((uint8_t*)&blockreq->ver)[0],((uint8_t*)&blockreq->ver)[1],((uint8_t*)&blockreq->ver)[2],((uint8_t*)&blockreq->ver)[3],((uint8_t*)&blockreq->ver)[4],((uint8_t*)&blockreq->ver)[5],((uint8_t*)&blockreq->ver)[6],((uint8_t*)&blockreq->ver)[7]); addCRC(blockreq, sizeof(struct blockRequest)); commsTxNoCpy(outBuffer); } @@ -410,7 +414,7 @@ static struct blockRequestAck *__xdata performBlockRequest() __reentrant { return NULL; default: #ifdef DEBUGPROTO - pr("pkt w/type %02X\n", getPacketType(inBuffer)); + pr("PROTO: pkt w/type %02X\n", getPacketType(inBuffer)); #endif break; } @@ -451,7 +455,7 @@ static void sendXferComplete() { if (ret > 1) { if (getPacketType(inBuffer) == PKT_XFER_COMPLETE_ACK) { #ifdef DEBUGPROTO - pr("XFC ACK\n"); + pr("PROTO: XFC ACK\n"); #endif return; } @@ -459,7 +463,7 @@ static void sendXferComplete() { } } #ifdef DEBUGPROTO - pr("XFC NACK!\n"); + pr("PROTO: XFC NACK!\n"); #endif return; } @@ -481,14 +485,14 @@ static void getNumSlots() { eeSize = eepromGetSize(); uint16_t nSlots = mathPrvDiv32x16(eeSize - EEPROM_IMG_START, EEPROM_IMG_EACH >> 8) >> 8; if (eeSize < EEPROM_IMG_START || !nSlots) { -#ifdef DEBUGPROTO - pr("eeprom is too small\n"); +#ifdef DEBUGEEPROM + pr("EEPROM: eeprom is too small\n"); #endif while (1) ; } else if (nSlots >> 8) { -#ifdef DEBUGPROTO - pr("eeprom is too big, some will be unused\n"); +#ifdef DEBUGEEPROM + pr("EEPROM: eeprom is too big, some will be unused\n"); #endif imgSlots = 254; } else @@ -585,7 +589,7 @@ static uint32_t getHighSlotId() { } } #ifdef DEBUGPROTO - pr("found high id=%lu in slot %d\n", temp, nextImgSlot); + pr("PROTO: found high id=%lu in slot %d\n", temp, nextImgSlot); #endif return temp; } @@ -631,7 +635,7 @@ static bool getDataBlock(const uint16_t blockSize) { if (ack == NULL) { #ifdef DEBUGPROTO - pr("Cancelled request\n"); + pr("PROTO: Cancelled request\n"); #endif return false; } @@ -679,7 +683,9 @@ static bool getDataBlock(const uint16_t blockSize) { curBlock.requestedParts[c / 8] |= (1 << (c % 8)); } requestPartialBlock = false; - pr("blk failed validation!\n"); + #ifdef DEBUGPROTO + pr("PROTO: blk failed validation!\n"); + #endif } } else { #ifndef DEBUGBLOCKS @@ -689,7 +695,9 @@ static bool getDataBlock(const uint16_t blockSize) { requestPartialBlock = true; } } - pr("failed getting block\n"); + #ifdef DEBUGPROTO + pr("PROTO: failed getting block\n"); + #endif return false; } @@ -760,7 +768,7 @@ static bool downloadImageDataToEEPROM(const struct AvailDataInfo *__xdata avail) xferDataInfo.dataSize) { // looks like we did. We'll carry on where we left off. #ifdef DEBUGPROTO - pr("restarting image download"); + pr("PROTO: restarting image download\n"); #endif } else { // new transfer @@ -780,7 +788,7 @@ static bool downloadImageDataToEEPROM(const struct AvailDataInfo *__xdata avail) if (nextImgSlot == startingSlot) { powerDown(INIT_EEPROM); #ifdef DEBUGPROTO - pr("No slots available. Too many images in the slideshow?\n"); + pr("PROTO: No slots available. Too many images in the slideshow?\n"); #endif return true; } @@ -813,7 +821,7 @@ static bool downloadImageDataToEEPROM(const struct AvailDataInfo *__xdata avail) eraseSuccess: powerDown(INIT_EEPROM); #ifdef DEBUGPROTO - pr("new download, writing to slot %d\n", xferImgSlot); + pr("PROTO: new download, writing to slot %d\n", xferImgSlot); #endif // start, or restart the transfer. Copy data from the AvailDataInfo struct, and the struct intself. This forces a new transfer curBlock.blockId = 0; @@ -837,7 +845,7 @@ static bool downloadImageDataToEEPROM(const struct AvailDataInfo *__xdata avail) powerUp(INIT_EEPROM); timerDelay(TIMER_TICKS_PER_MS * 100); #ifdef DEBUGBLOCKS - pr("Saving block %d to slot %d\n", curBlock.blockId, xferImgSlot); + pr("BLOCKS: Saving block %d to slot %d\n", curBlock.blockId, xferImgSlot); #endif saveImgBlockData(xferImgSlot, curBlock.blockId); timerDelay(TIMER_TICKS_PER_MS * 100); @@ -871,7 +879,7 @@ static bool downloadImageDataToEEPROM(const struct AvailDataInfo *__xdata avail) eih->argument = xferDataInfo.dataTypeArgument; #ifdef DEBUGBLOCKS - pr("Now writing datatype 0x%02X to slot %d\n", xferDataInfo.dataType, xferImgSlot); + pr("BLOCKS: Now writing datatype 0x%02X to slot %d\n", xferDataInfo.dataType, xferImgSlot); #endif eepromWrite(getAddressForSlot(xferImgSlot), eih, sizeof(struct EepromImageHeader)); powerDown(INIT_EEPROM); @@ -884,7 +892,7 @@ inline bool processImageDataAvail(struct AvailDataInfo *__xdata avail) { *((uint8_t *)arg) = avail->dataTypeArgument; if (arg.preloadImage) { #ifdef DEBUGPROTO - pr("Preloading image with type 0x%02X from arg 0x%02X\n", arg.specialType, avail->dataTypeArgument); + pr("PROTO: Preloading image with type 0x%02X from arg 0x%02X\n", arg.specialType, avail->dataTypeArgument); #endif powerUp(INIT_EEPROM); switch (arg.specialType) { @@ -911,12 +919,12 @@ inline bool processImageDataAvail(struct AvailDataInfo *__xdata avail) { } powerDown(INIT_EEPROM); #ifdef DEBUGPROTO - pr("downloading preload image...\n"); + pr("PROTO: downloading preload image...\n"); #endif if (downloadImageDataToEEPROM(avail)) { // sets xferImgSlot to the right slot #ifdef DEBUGPROTO - pr("preload complete!\n"); + pr("PROTO: preload complete!\n"); #endif powerUp(INIT_RADIO); sendXferComplete(); @@ -931,7 +939,7 @@ inline bool processImageDataAvail(struct AvailDataInfo *__xdata avail) { if (xMemEqual((const void *__xdata) & avail->dataVer, (const void *__xdata)curDispDataVer, 8)) { // currently displayed, not doing anything except for sending an XFC #ifdef DEBUGPROTO - pr("currently shown image, send xfc\n"); + pr("PROTO: currently shown image, send xfc\n"); #endif powerUp(INIT_RADIO); sendXferComplete(); @@ -965,12 +973,12 @@ inline bool processImageDataAvail(struct AvailDataInfo *__xdata avail) { } else { // not found in cache, prepare to download #ifdef DEBUGPROTO - pr("downloading image...\n"); + pr("PROTO: downloading image...\n"); #endif if (downloadImageDataToEEPROM(avail)) { // sets xferImgSlot to the right slot #ifdef DEBUGPROTO - pr("download complete!\n"); + pr("PROTO: download complete!\n"); #endif powerUp(INIT_RADIO); sendXferComplete(); @@ -1097,7 +1105,7 @@ bool processAvailDataInfo(struct AvailDataInfo *__xdata avail) { case DATATYPE_TAG_CONFIG_DATA: if (xferDataInfo.dataSize == 0 && xMemEqual((const void *__xdata) & avail->dataVer, (const void *__xdata) & xferDataInfo.dataVer, 8)) { #ifdef DEBUGPROTO - pr("this was the same as the last transfer, disregard\n"); + pr("PROTO: this was the same as the last transfer, disregard\n"); #endif powerUp(INIT_RADIO); sendXferComplete(); @@ -1123,7 +1131,7 @@ bool processAvailDataInfo(struct AvailDataInfo *__xdata avail) { break; case DATATYPE_COMMAND_DATA: #ifdef DEBUGPROTO - pr("CMD received\n"); + pr("PROTO: CMD received\n"); #endif powerUp(INIT_RADIO); sendXferComplete(); @@ -1144,11 +1152,11 @@ bool processAvailDataInfo(struct AvailDataInfo *__xdata avail) { } #ifdef EPD_SSD1619 #ifdef DEBUGPROTO - pr("OTA LUT received\n"); + pr("PROTO: OTA LUT received\n"); #endif if (xferDataInfo.dataSize == 0 && xMemEqual((const void *__xdata) & avail->dataVer, (const void *__xdata) & xferDataInfo.dataVer, 8)) { #ifdef DEBUGPROTO - pr("this was the same as the last transfer, disregard\n"); + pr("PROTO: this was the same as the last transfer, disregard\n"); #endif powerUp(INIT_RADIO); sendXferComplete(); @@ -1191,12 +1199,12 @@ bool validateMD5(uint32_t __xdata addr, uint16_t __xdata len) { md5Finalize(); if (xMemEqual((const void *__xdata)ctxdigest, (const void *__xdata) & xferDataInfo.dataVer, 8)) { #ifdef DEBUGPROTO - pr("MD5 pass!"); + pr("PROTO: MD5 pass!\n"); #endif return true; } else { #ifdef DEBUGPROTO - pr("MD5 fail..."); + pr("PROTO: MD5 fail...\n"); #endif return false; } @@ -1206,13 +1214,13 @@ bool validateFWMagic() { flashRead(0x8b, (void *)(blockbuffer + 1024), 256); eepromRead(eeSize - OTA_UPDATE_SIZE, blockbuffer, 256); if (xMemEqual((const void *__xdata)(blockbuffer + 1024), (const void *__xdata)(blockbuffer + 0x8b), 8)) { -#ifdef DEBUGPROTO - pr("magic number matches! good fw"); +#ifdef DEBUGOTA + pr("OTA: magic number matches! good fw\n"); #endif return true; } else { -#ifdef DEBUGPROTO - pr("this probably isn't a (recent) firmware file\n"); +#ifdef DEBUGOTA + pr("OTA: this probably isn't a (recent) firmware file\n"); #endif return false; } diff --git a/zbs243_Tag_FW/userinterface.c b/zbs243_Tag_FW/userinterface.c index 8984d9e3..ff8f5780 100755 --- a/zbs243_Tag_FW/userinterface.c +++ b/zbs243_Tag_FW/userinterface.c @@ -49,7 +49,7 @@ void addCapabilities() { void addOverlay() { if ((currentChannel == 0) && (tagSettings.enableNoRFSymbol)) { -#if (SCREEN_WIDTH == 152) +#if (SCREEN_WIDTH == 152) || (SCREEN_WIDTH == 176) || (SCREEN_WIDTH == 200) loadRawBitmap(ant, SCREEN_WIDTH - 16, 0, EPD_COLOR_BLACK); loadRawBitmap(cross, SCREEN_WIDTH - 8, 7, EPD_COLOR_RED); #elif (SCREEN_WIDTH == 128) @@ -65,7 +65,7 @@ void addOverlay() { } if ((batteryVoltage < tagSettings.batLowVoltage) && (tagSettings.enableLowBatSymbol)) { -#if (SCREEN_WIDTH == 152) +#if (SCREEN_WIDTH == 152) || (SCREEN_WIDTH == 176) || (SCREEN_WIDTH == 200) loadRawBitmap(battery, SCREEN_WIDTH - 16, SCREEN_HEIGHT - 10, EPD_COLOR_BLACK); #elif (SCREEN_WIDTH == 400) loadRawBitmap(battery, SCREEN_WIDTH - 24, SCREEN_HEIGHT - 16, EPD_COLOR_BLACK); @@ -78,17 +78,19 @@ void addOverlay() { } #ifdef ISDEBUGBUILD -#if (SCREEN_WIDTH == 152) +#if (SCREEN_WIDTH == 152) || (SCREEN_WIDTH == 176) || (SCREEN_WIDTH == 200) epdPrintBegin(139, 151, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_RED); #elif (SCREEN_WIDTH == 400) epdPrintBegin(87, 0, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_RED); #elif (SCREEN_WIDTH == 128) epdPrintBegin(87, 0, EPD_DIRECTION_X, EPD_SIZE_SINGLE, EPD_COLOR_RED); +#elif (SCREEN_WIDTH == 176) + loadRawBitmap(debugbuild, 144, 2, EPD_COLOR_RED); + // epdPrintBegin(130, 1, EPD_DIRECTION_X, EPD_SIZE_SINGLE, EPD_COLOR_RED); #endif - epdpr("DEBUG"); - epdPrintEnd(); + // epdpr("DEBUG"); + // epdPrintEnd(); #endif - } void afterFlashScreenSaver() { @@ -97,7 +99,7 @@ void afterFlashScreenSaver() { clearScreen(); setColorMode(EPD_MODE_NORMAL, EPD_MODE_INVERT); -#if (SCREEN_WIDTH == 152) // 1.54" +#if (SCREEN_WIDTH == 152) || (SCREEN_WIDTH == 200) // 1.54" epdPrintBegin(0, 0, EPD_DIRECTION_X, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); epdpr("OpenEPaperLink"); epdPrintEnd(); @@ -223,7 +225,7 @@ void showSplashScreen() { clearScreen(); setColorMode(EPD_MODE_NORMAL, EPD_MODE_INVERT); -#if (SCREEN_WIDTH == 152) // 1.54" +#if (SCREEN_WIDTH == 152) || (SCREEN_WIDTH == 200) // 1.54" epdPrintBegin(5, 55, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); epdpr("Starting"); epdPrintEnd(); @@ -254,7 +256,6 @@ void showSplashScreen() { epdPrintEnd(); #endif - #endif #if (SCREEN_WIDTH == 128) // 2.9" @@ -295,6 +296,46 @@ void showSplashScreen() { loadRawBitmap(cloud, 0, 0, EPD_COLOR_RED); #endif #endif + +#if (SCREEN_WIDTH == 176) // 2.7" + + epdPrintBegin(1, SCREEN_HEIGHT - 2, EPD_DIRECTION_Y, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); + epdpr("OpenEPaperLink"); + epdPrintEnd(); + +#ifdef ISDEBUGBUILD + epdPrintBegin(35, SCREEN_HEIGHT - 16, EPD_DIRECTION_Y, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); + epdpr("DEBUG"); + epdPrintEnd(); +#endif + + epdPrintBegin(64, SCREEN_HEIGHT - 1, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); + addCapabilities(); + epdPrintEnd(); + + epdPrintBegin(SCREEN_WIDTH - 36, SCREEN_HEIGHT - 1, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); + epdpr("zbs27 %04X%s", fwVersion, fwVersionSuffix); + epdPrintEnd(); + + epdPrintBegin(SCREEN_WIDTH - 17, SCREEN_HEIGHT - 26, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_RED); + epdpr("MAC: %02X:%02X", mSelfMac[7], mSelfMac[6]); + epdpr(":%02X:%02X", mSelfMac[5], mSelfMac[4]); + epdpr(":%02X:%02X", mSelfMac[3], mSelfMac[2]); + epdpr(":%02X:%02X", mSelfMac[1], mSelfMac[0]); + epdPrintEnd(); + + uint8_t __xdata buffer[17]; + spr(buffer, "%02X%02X", mSelfMac[7], mSelfMac[6]); + spr(buffer + 4, "%02X%02X", mSelfMac[5], mSelfMac[4]); + spr(buffer + 8, "%02X%02X", mSelfMac[3], mSelfMac[2]); + spr(buffer + 12, "%02X%02X", mSelfMac[1], mSelfMac[0]); + printBarcode(buffer, 120, 284); +#ifndef LEAN_VERSION + loadRawBitmap(oepli, 24, 12, EPD_COLOR_BLACK); + loadRawBitmap(cloud, 24, 0, EPD_COLOR_RED); +#endif +#endif + #if (SCREEN_WIDTH == 400) // 4.2" epdPrintBegin(3, 3, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); epdpr("Starting"); @@ -327,7 +368,7 @@ void showSplashScreen() { #endif drawWithSleep(); - powerUp(INIT_EPD); + powerDown(INIT_EPD); } void showApplyUpdate() { @@ -336,7 +377,7 @@ void showApplyUpdate() { clearScreen(); setColorMode(EPD_MODE_IGNORE, EPD_MODE_NORMAL); -#if (SCREEN_WIDTH == 152) +#if (SCREEN_WIDTH == 152)|| (SCREEN_WIDTH == 200) epdPrintBegin(12, 60, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); #endif #if (SCREEN_WIDTH == 128) @@ -357,7 +398,7 @@ void showFailedUpdate() { selectLUT(1); clearScreen(); setColorMode(EPD_MODE_IGNORE, EPD_MODE_NORMAL); -#if (SCREEN_WIDTH == 152) +#if (SCREEN_WIDTH == 152)|| (SCREEN_WIDTH == 200) epdPrintBegin(18, 60, EPD_DIRECTION_X, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); #endif #if (SCREEN_WIDTH == 128) @@ -374,7 +415,7 @@ void showFailedUpdate() { void showAPFound() { if (displayCustomImage(CUSTOM_IMAGE_APFOUND)) return; - powerUp(INIT_EPD | INIT_EEPROM); + powerUp(INIT_EPD); clearScreen(); setColorMode(EPD_MODE_NORMAL, EPD_MODE_INVERT); @@ -382,6 +423,42 @@ void showAPFound() { selectLUT(1); #endif +#if (SCREEN_WIDTH == 176) + epdPrintBegin(0, SCREEN_HEIGHT - 10, EPD_DIRECTION_Y, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); + epdpr("Waiting for data"); + epdPrintEnd(); + epdPrintBegin(48, SCREEN_HEIGHT - 17, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); + epdpr("Found the following AP:"); + epdPrintEnd(); + + epdPrintBegin(64, SCREEN_HEIGHT - 3, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); + epdpr("AP MAC: %02X:%02X", APmac[7], APmac[6]); + epdpr(":%02X:%02X", APmac[5], APmac[4]); + epdpr(":%02X:%02X", APmac[3], APmac[2]); + epdpr(":%02X:%02X", APmac[1], APmac[0]); + epdPrintEnd(); + epdPrintBegin(80, SCREEN_HEIGHT - 3, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); + epdpr("Ch: %d RSSI: %d LQI: %d", currentChannel, mLastRSSI, mLastLqi); + epdPrintEnd(); + + epdPrintBegin(SCREEN_WIDTH - 30, SCREEN_HEIGHT - 18, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); + epdpr("Tag MAC: %02X:%02X", mSelfMac[7], mSelfMac[6]); + epdpr(":%02X:%02X", mSelfMac[5], mSelfMac[4]); + epdpr(":%02X:%02X", mSelfMac[3], mSelfMac[2]); + epdpr(":%02X:%02X", mSelfMac[1], mSelfMac[0]); + epdPrintEnd(); + + uint8_t __xdata buffer[17]; + spr(buffer, "%02X%02X", mSelfMac[7], mSelfMac[6]); + spr(buffer + 4, "%02X%02X", mSelfMac[5], mSelfMac[4]); + spr(buffer + 8, "%02X%02X", mSelfMac[3], mSelfMac[2]); + spr(buffer + 12, "%02X%02X", mSelfMac[1], mSelfMac[0]); + printBarcode(buffer, 168, SCREEN_HEIGHT - 30); +#ifndef LEAN_VERSION + loadRawBitmap(receive, 36, 1, EPD_COLOR_BLACK); +#endif +#endif + #if (SCREEN_WIDTH == 128) epdPrintBegin(0, 285, EPD_DIRECTION_Y, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); epdpr("Waiting for data..."); @@ -416,7 +493,7 @@ void showAPFound() { loadRawBitmap(receive, 36, 14, EPD_COLOR_BLACK); #endif #endif -#if (SCREEN_WIDTH == 152) // 1.54" +#if (SCREEN_WIDTH == 152) || (SCREEN_WIDTH == 200) // 1.54" epdPrintBegin(25, 0, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); epdpr("Waiting"); epdPrintEnd(); @@ -486,19 +563,19 @@ void showAPFound() { #endif addOverlay(); drawWithSleep(); - powerDown(INIT_EPD | INIT_EEPROM); + powerDown(INIT_EPD); } void showNoAP() { if (displayCustomImage(CUSTOM_IMAGE_NOAPFOUND)) return; - powerUp(INIT_EPD | INIT_EEPROM); + powerUp(INIT_EPD); #if (HW_TYPE != SOLUM_M2_BW_29_LOWTEMP) selectLUT(EPD_LUT_NO_REPEATS); #endif setColorMode(EPD_MODE_NORMAL, EPD_MODE_INVERT); clearScreen(); -#if (SCREEN_WIDTH == 128) // 2,9" +#if (SCREEN_WIDTH == 128) || (SCREEN_WIDTH == 176) // 2,9" epdPrintBegin(0, 285, EPD_DIRECTION_Y, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); epdpr("No AP found :("); epdPrintEnd(); @@ -513,7 +590,7 @@ void showNoAP() { loadRawBitmap(failed, 42, 26, EPD_COLOR_RED); #endif #endif -#if (SCREEN_WIDTH == 152) // 1.54" +#if (SCREEN_WIDTH == 152) || (SCREEN_WIDTH == 200) // 1.54" epdPrintBegin(40, 0, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); epdpr("No AP"); epdPrintEnd(); @@ -542,7 +619,7 @@ void showNoAP() { #endif addOverlay(); drawWithSleep(); - powerDown(INIT_EPD | INIT_EEPROM); + powerDown(INIT_EPD); } void showLongTermSleep() { @@ -577,7 +654,20 @@ void showNoEEPROM() { loadRawBitmap(failed, 42, 26, EPD_COLOR_RED); #endif #endif -#if (SCREEN_WIDTH == 152) // 1.54" + +#if (SCREEN_WIDTH == 176) // 2.9" + epdPrintBegin(1, 260, EPD_DIRECTION_Y, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); + epdpr("EEPROM FAILED :("); + epdPrintEnd(); + epdPrintBegin(160, 200, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); + epdpr("Sleeping forever :'("); + epdPrintEnd(); +#ifndef LEAN_VERSION + loadRawBitmap(failed, 80, 114, EPD_COLOR_RED); +#endif +#endif + +#if (SCREEN_WIDTH == 152) || (SCREEN_WIDTH == 200) // 1.54" epdPrintBegin(26, 0, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); epdpr("EEPROM "); epdPrintEnd(); @@ -620,7 +710,7 @@ void showNoMAC() { loadRawBitmap(failed, 42, 26, EPD_COLOR_RED); #endif #endif -#if (SCREEN_WIDTH == 152) // 1.54" +#if (SCREEN_WIDTH == 152) || (SCREEN_WIDTH == 200) // 1.54" epdPrintBegin(20, 0, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); epdpr("NO MAC"); epdPrintEnd(); diff --git a/zbs243_shared/bitmaps.h b/zbs243_shared/bitmaps.h index 80221f03..24c91677 100644 --- a/zbs243_shared/bitmaps.h +++ b/zbs243_shared/bitmaps.h @@ -6,6 +6,22 @@ #include "screen.h" +#ifdef ISDEBUGBUILD +static const uint8_t __code debugbuild[] = { +32,11, + 0x7f, 0xff, 0xff, 0xe0, + 0x80, 0x00, 0x00, 0x10, + 0xb9, 0xee, 0x49, 0x90, + 0xa5, 0x09, 0x4a, 0x50, + 0xa5, 0x09, 0x4a, 0x10, + 0xa5, 0xce, 0x4a, 0xd0, + 0xa5, 0x09, 0x4a, 0x50, + 0xa5, 0x09, 0x4a, 0x50, + 0xb9, 0xee, 0x31, 0x90, + 0x80, 0x00, 0x00, 0x10, + 0x7f, 0xff, 0xff, 0xe0, +}; +#endif #ifndef LEAN_VERSION diff --git a/zbs243_shared/board/ssd1619.c b/zbs243_shared/board/ssd1619.c index 054329d3..f80d95f4 100755 --- a/zbs243_shared/board/ssd1619.c +++ b/zbs243_shared/board/ssd1619.c @@ -238,32 +238,39 @@ void epdEnterSleep() { isInited = false; } void epdSetup() { - epdReset(); + epdReset(); + #ifdef VAR_BW16 + commandBegin(CMD_DRV_OUTPUT_CTRL); + epdSend((SCREEN_HEIGHT - 1) & 0xff); + epdSend((SCREEN_HEIGHT - 1) >> 8); + epdSend(0x00); + commandEnd(); + shortCommand1(CMD_BORDER_WAVEFORM_CTRL, 0x0B); // stock says 0x33 + shortCommand1(CMD_DUMMY_PERIOD, 0x1B); + shortCommand1(CMD_GATE_LINE_WIDTH, 0x0B); + shortCommand1(CMD_TEMP_SENSOR_CONTROL, 0x80); + shortCommand1(CMD_DISP_UPDATE_CTRL, 0x40); + #else shortCommand1(CMD_ANALOG_BLK_CTRL, 0x54); shortCommand1(CMD_DIGITAL_BLK_CTRL, 0x3B); shortCommand2(CMD_UNKNOWN_1, 0x04, 0x63); - commandBegin(CMD_SOFT_START_CTRL); epdSend(0x8f); epdSend(0x8f); epdSend(0x8f); epdSend(0x3f); commandEnd(); - commandBegin(CMD_DRV_OUTPUT_CTRL); epdSend((SCREEN_HEIGHT - 1) & 0xff); epdSend((SCREEN_HEIGHT - 1) >> 8); epdSend(0x00); commandEnd(); - - // shortCommand1(CMD_DATA_ENTRY_MODE, 0x03); - // shortCommand1(CMD_BORDER_WAVEFORM_CTRL, 0xC0); // blurry edges shortCommand1(CMD_BORDER_WAVEFORM_CTRL, 0x01); shortCommand1(CMD_TEMP_SENSOR_CONTROL, 0x80); shortCommand1(CMD_DISP_UPDATE_CTRL2, 0xB1); // mode 1 (i2C) - // shortCommand1(CMD_DISP_UPDATE_CTRL2, 0xB9); // mode 2? shortCommand(CMD_ACTIVATION); epdBusyWait(TIMER_TICKS_PER_SECOND); + #endif isInited = true; currentLut = EPD_LUT_DEFAULT; } @@ -372,6 +379,7 @@ static void lutGroupRepeatReduce(uint8_t group, uint8_t factor) { } } void selectLUT(uint8_t lut) { + #ifdef CUSTOMLUTS if (currentLut == lut) { return; } @@ -468,6 +476,7 @@ void selectLUT(uint8_t lut) { } writeLut(); free(waveformbuffer); + #endif } void setWindowX(uint16_t start, uint16_t end) { @@ -516,7 +525,11 @@ void clearScreen() { epdBusyWait(TIMER_TICKS_PER_MS * 100); } void draw() { + #ifdef VAR_BW16 + shortCommand1(0x22, 0xF7); + #else shortCommand1(0x22, 0xCF); + #endif // shortCommand1(0x22, SCREEN_CMD_REFRESH); shortCommand(0x20); epdBusyWait(TIMER_TICKS_PER_SECOND * 120); diff --git a/zbs243_shared/board/uc-var-27.c b/zbs243_shared/board/uc-var-27.c new file mode 100644 index 00000000..996738ca --- /dev/null +++ b/zbs243_shared/board/uc-var-27.c @@ -0,0 +1,824 @@ +#include "uc8151.h" + +#include +#include + +#include "asmUtil.h" +#include "barcode.h" +#include "board.h" +#include "cpu.h" +#include "font.h" +#include "lut.h" +#include "printf.h" +#include "screen.h" +#include "settings.h" +#include "sleep.h" +#include "spi.h" +#include "timer.h" +#include "wdt.h" +#include "stdarg.h" + +#define CMD_PANEL_SETTING 0x00 +#define CMD_POWER_SETTING 0x01 +#define CMD_POWER_OFF 0x02 +#define CMD_POWER_OFF_SEQUENCE 0x03 +#define CMD_POWER_ON 0x04 +#define CMD_POWER_ON_MEASURE 0x05 +#define CMD_BOOSTER_SOFT_START 0x06 +#define CMD_DEEP_SLEEP 0x07 +#define CMD_DISPLAY_START_TRANSMISSION_DTM1 0x10 +#define CMD_DATA_STOP 0x11 +#define CMD_DISPLAY_REFRESH 0x12 +#define CMD_DISPLAY_START_TRANSMISSION_DTM2 0x13 +#define CMD_PLL_CONTROL 0x30 +#define CMD_TEMPERATURE_CALIB 0x40 +#define CMD_TEMPERATURE_SELECT 0x41 +#define CMD_TEMPERATURE_WRITE 0x42 +#define CMD_TEMPERATURE_READ 0x43 +#define CMD_VCOM_INTERVAL 0x50 +#define CMD_LOWER_POWER_DETECT 0x51 +#define CMD_TCON_SETTING 0x60 +#define CMD_RESOLUTION_SETING 0x61 +#define CMD_REVISION 0x70 +#define CMD_STATUS 0x71 +#define CMD_AUTO_MEASUREMENT_VCOM 0x80 +#define CMD_READ_VCOM 0x81 +#define CMD_VCOM_DC_SETTING 0x82 +#define CMD_PARTIAL_WINDOW 0x90 +#define CMD_PARTIAL_IN 0x91 +#define CMD_PARTIAL_OUT 0x92 +#define CMD_PROGRAM_MODE 0xA0 +#define CMD_ACTIVE_PROGRAM 0xA1 +#define CMD_READ_OTP 0xA2 +#define CMD_CASCADE_SET 0xE0 +#define CMD_POWER_SAVING 0xE3 +#define CMD_FORCE_TEMPERATURE 0xE5 + +enum PSR_FLAGS { + RES_96x230 = 0b00000000, + RES_96x252 = 0b01000000, + RES_128x296 = 0b10000000, + RES_160x296 = 0b11000000, + + LUT_OTP = 0b00000000, + LUT_REG = 0b00100000, + + FORMAT_BWR = 0b00000000, + FORMAT_BW = 0b00010000, + + SCAN_DOWN = 0b00000000, + SCAN_UP = 0b00001000, + + SHIFT_LEFT = 0b00000000, + SHIFT_RIGHT = 0b00000100, + + BOOSTER_OFF = 0b00000000, + BOOSTER_ON = 0b00000010, + + RESET_SOFT = 0b00000000, + RESET_NONE = 0b00000001 +}; + +enum PWR_FLAGS_1 { + VDS_EXTERNAL = 0b00000000, + VDS_INTERNAL = 0b00000010, + + VDG_EXTERNAL = 0b00000000, + VDG_INTERNAL = 0b00000001 +}; + +enum PWR_FLAGS_2 { + VCOM_VD = 0b00000000, + VCOM_VG = 0b00000100, + + VGHL_16V = 0b00000000, + VGHL_15V = 0b00000001, + VGHL_14V = 0b00000010, + VGHL_13V = 0b00000011 +}; + +enum BOOSTER_FLAGS { + START_10MS = 0b00000000, + START_20MS = 0b01000000, + START_30MS = 0b10000000, + START_40MS = 0b11000000, + + STRENGTH_1 = 0b00000000, + STRENGTH_2 = 0b00001000, + STRENGTH_3 = 0b00010000, + STRENGTH_4 = 0b00011000, + STRENGTH_5 = 0b00100000, + STRENGTH_6 = 0b00101000, + STRENGTH_7 = 0b00110000, + STRENGTH_8 = 0b00111000, + + OFF_0_27US = 0b00000000, + OFF_0_34US = 0b00000001, + OFF_0_40US = 0b00000010, + OFF_0_54US = 0b00000011, + OFF_0_80US = 0b00000100, + OFF_1_54US = 0b00000101, + OFF_3_34US = 0b00000110, + OFF_6_58US = 0b00000111 +}; + +enum PFS_FLAGS { + FRAMES_1 = 0b00000000, + FRAMES_2 = 0b00010000, + FRAMES_3 = 0b00100000, + FRAMES_4 = 0b00110000 +}; + +enum TSE_FLAGS { + TEMP_INTERNAL = 0b00000000, + TEMP_EXTERNAL = 0b10000000, + + OFFSET_0 = 0b00000000, + OFFSET_1 = 0b00000001, + OFFSET_2 = 0b00000010, + OFFSET_3 = 0b00000011, + OFFSET_4 = 0b00000100, + OFFSET_5 = 0b00000101, + OFFSET_6 = 0b00000110, + OFFSET_7 = 0b00000111, + + OFFSET_MIN_8 = 0b00001000, + OFFSET_MIN_7 = 0b00001001, + OFFSET_MIN_6 = 0b00001010, + OFFSET_MIN_5 = 0b00001011, + OFFSET_MIN_4 = 0b00001100, + OFFSET_MIN_3 = 0b00001101, + OFFSET_MIN_2 = 0b00001110, + OFFSET_MIN_1 = 0b00001111 +}; + +enum PLL_FLAGS { + // other frequency options exist but there doesn't seem to be much + // point in including them - this is a fair range of options... + HZ_29 = 0b00111111, + HZ_33 = 0b00111110, + HZ_40 = 0b00111101, + HZ_50 = 0b00111100, + HZ_67 = 0b00111011, + HZ_100 = 0b00111010, + HZ_200 = 0b00111001 +}; + +#define commandEnd() \ + do { \ + P1_7 = 1; \ + } while (0) + +#define markCommand() \ + do { \ + P2_2 = 0; \ + } while (0) + +#define markData() \ + do { \ + P2_2 = 1; \ + } while (0) + +extern void dump(uint8_t* __xdata a, uint16_t __xdata l); // remove me when done + +static uint8_t __xdata epdCharSize = 1; // character size, 1 or 2 (doubled) +static bool __xdata directionY = true; // print direction, X or Y (true) +static uint8_t __xdata rbuffer[32]; // used to rotate bits around +static uint16_t __xdata fontCurXpos = 0; // current X value we're working with +static uint16_t __xdata fontCurYpos = 0; // current Y value we're working with +static uint8_t __xdata currentLut = 0; +static uint8_t __xdata dispLutSize = 0; +static bool __xdata drawDirection = false; +static bool __xdata isInited = false; + +bool __xdata epdGPIOActive = false; + +#define LUT_BUFFER_SIZE 128 +uint8_t waveformbuffer[LUT_BUFFER_SIZE]; +struct waveform10* __xdata waveform10 = (struct waveform10*)waveformbuffer; // holds the LUT/waveform +struct waveform* __xdata waveform7 = (struct waveform*)waveformbuffer; // holds the LUT/waveform + +#pragma callee_saves epdBusySleep +#pragma callee_saves epdBusyWait +static void epdBusySleep(uint32_t timeout) { + uint8_t tmp_P2FUNC = P2FUNC; + uint8_t tmp_P2DIR = P2DIR; + uint8_t tmp_P2PULL = P2PULL; + uint8_t tmp_P2LVLSEL = P2LVLSEL; + P2FUNC &= 0xfd; + P2DIR |= 2; + P2PULL |= 2; + P2LVLSEL &= ~(2); + + P2CHSTA &= 0xfd; + P2INTEN |= 2; + P2CHSTA &= 0xfd; + sleepForMsec(timeout); + wdtOn(); + P2CHSTA &= 0xfd; + P2INTEN &= 0xfd; + + P2FUNC = tmp_P2FUNC; + P2DIR = tmp_P2DIR; + P2PULL = tmp_P2PULL; + P2LVLSEL = tmp_P2LVLSEL; + eepromPrvDeselect(); +} +static void epdBusyWait(uint32_t timeout) { + uint32_t __xdata start = timerGet(); + + while (timerGet() - start < timeout) { + if (P2_1) + return; + } +#ifdef DEBUGEPD + pr("screen timeout %lu ticks :(\n", timerGet() - start); +#endif + while (1) + ; +} + +static void epdWaitUntilBusy(uint32_t timeout) { + uint32_t __xdata start = timerGet(); + + while (timerGet() - start < timeout) { + if (!P2_1) + return; + } +#ifdef DEBUGEPD + pr("Waited until the EPD would start doing anything, timeout %lu ticks :(\n", timerGet() - start); +#endif + while (1) + ; +} + +static void commandReadBegin(uint8_t cmd) { + epdSelect(); + markCommand(); + spiByte(cmd); // dump LUT + + P0DIR = (P0DIR & ~(1 << 0)) | (1 << 1); + P0 &= ~(1 << 0); + P0FUNC &= ~((1 << 0) | (1 << 1)); + P2_2 = 1; +} +static void commandReadEnd() { + // set up pins for spi (0.0,0.1,0.2) + P0FUNC |= (1 << 0) | (1 << 1); + epdDeselect(); +} +#pragma callee_saves epdReadByte +static uint8_t epdReadByte() { + uint8_t val = 0, i; + + for (i = 0; i < 8; i++) { + P0_0 = 1; + __asm__("nop\nnop\nnop\nnop\nnop\nnop\n"); + val <<= 1; + if (P0_1) + val++; + P0_0 = 0; + __asm__("nop\nnop\nnop\nnop\nnop\nnop\n"); + } + + return val; +} +static void shortCommand(uint8_t cmd) { + epdSelect(); + markCommand(); + spiTXByte(cmd); + epdDeselect(); +} +static void shortCommand1(uint8_t cmd, uint8_t arg) { + epdSelect(); + markCommand(); + spiTXByte(cmd); + markData(); + spiTXByte(arg); + epdDeselect(); +} +static void shortCommand2(uint8_t cmd, uint8_t arg1, uint8_t arg2) { + epdSelect(); + markCommand(); + spiTXByte(cmd); + markData(); + spiTXByte(arg1); + spiTXByte(arg2); + epdDeselect(); +} +static void commandBegin(uint8_t cmd) { + epdSelect(); + markCommand(); + spiTXByte(cmd); + markData(); +} +static void epdReset() { + timerDelay(TIMER_TICKS_PER_SECOND / 1000); + P2_0 = 0; + timerDelay(TIMER_TICKS_PER_SECOND / 1000); + P2_0 = 1; + epdBusyWait(133300); + timerDelay(TIMER_TICKS_PER_SECOND / 1000); +} +void epdConfigGPIO(bool setup) { + // data / _command: 2.2 + // busy 2.1 + // reset 2.0 + // _select 1.7 + // bs1 1.2 + + // GENERIC SPI BUS PINS + // spi.clk 0.0 + // spi.mosi 0.1 + if (epdGPIOActive == setup) return; + if (setup) { + pr("EPD: configuring GPIO\n"); + P2DIR |= (1 << 1); // busy as input + P2DIR &= ~((1 << 2) | (1 << 0)); // D/C and Reset as output + P1DIR &= ~((1 << 7) | (1 << 2)); // select and bs1 as output + P1_2 = 0; // select 4-wire SPI / BS1 = low + P1_7 = 1; // deselect EPD + } else { + pr("EPD: Deconfiguring GPIO\n"); + P2DIR |= ((1 << 2) | (1 << 0)); // DC and Reset as input + P2 &= ~((1 << 2) | (1 << 0)); + P1DIR |= ((1 << 7) | (1 << 2)); // Select and BS1 as input + P2 &= ~((1 << 7)); + } + epdGPIOActive = setup; +} +void epdEnterSleep() { + pr("EPD Entering sleep\n"); + timerDelay(20 * TIMER_TICKS_PER_MS); + epdReset(); + timerDelay(20 * TIMER_TICKS_PER_MS); + shortCommand1(CMD_DEEP_SLEEP, 0xA5); + isInited = false; +} + +void epdWrite(uint8_t reg, uint8_t len, ...) { + va_list valist; + va_start(valist, len); + markCommand(); + epdSelect(); + epdSend(reg); + epdDeselect(); + markData(); + for (uint8_t i = 0; i < len; i++) { + epdSelect(); + epdSend(va_arg(valist, int)); + epdDeselect(); + } + va_end(valist); +} + +static void epdDrawDirection(bool direction) { + if (direction == drawDirection) return; + + drawDirection = direction; + + uint8_t psr_setting = FORMAT_BWR | BOOSTER_ON | RESET_NONE | LUT_OTP | SHIFT_RIGHT; + if (drawDirection) { + psr_setting |= SCAN_DOWN; + } else { + psr_setting |= SCAN_UP; + } + epdWrite(CMD_PANEL_SETTING, 1, psr_setting); +} + +void epdSetup() { + pr("EPD: Start setup\n"); + epdReset(); + + epdWrite(0x06, 3, 0x07, 0x07, 0x17); + epdWrite(0xF8, 2, 0x60, 0xA5); + epdWrite(0xF8, 2, 0x89, 0xA5); + epdWrite(0xF8, 2, 0x90, 0x00); + epdWrite(0xF8, 2, 0x93, 0x2A); + epdWrite(0xF8, 2, 0xA0, 0xA5); + epdWrite(0xF8, 2, 0xA1, 0x00); + epdWrite(0xF8, 2, 0x73, 0x41); + // epdWrite(0x00, 1, 0x07); <<- stock init + drawDirection = true; + epdDrawDirection(false); + epdWrite(0x16, 1, 0x00); + epdWrite(0x50, 1, 0x87); + // epdWrite(0x50, 1, 0x57); <<- this is the stock init + + shortCommand(CMD_POWER_ON); + epdWaitUntilBusy(133300); + epdWaitRdy(); + timerDelay(1333 * 5); + pr("EPD: setup complete\n"); +} +static uint8_t epdGetStatus() { + uint8_t sta; + commandReadBegin(0x2F); + sta = epdReadByte(); + commandReadEnd(); + return sta; +} +uint16_t epdGetBattery(void) { + uint8_t sta; + commandReadBegin(0x51); + sta = epdReadByte(); + commandReadEnd(); + if (sta) return 3000; + return 2100; +} + +void selectLUT(uint8_t lut) { + // implement alternative LUTs here. Currently just reset the watchdog to two minutes, + // to ensure it doesn't reset during the much longer bootup procedure + lut += 1; // make the compiler a happy camper + wdtSetResetVal(0xFF8E797F); // 120 s + wdtOn(); + return; +} + +static uint16_t __xdata xWindowStart = 0; +static uint16_t __xdata xWidth = 0; +static uint16_t __xdata yWindowStart = 0; +static uint16_t __xdata yHeight = 0; + +void setWindowXY(uint16_t xstart, uint16_t xend, uint16_t ystart, uint16_t yend) { + xstart /= 8; + xstart *= 8; + + xWindowStart = xstart; + xWidth = xend - xstart; + yWindowStart = ystart; + yHeight = yend - ystart; + + xWidth /= 8; + xWidth *= 8; + + return; +} + +void startWindow(bool color) { + if (color) { + shortCommand(0x15); + markData(); + } else { + shortCommand(0x14); + markData(); + } + epdSelect(); + epdSend((xWindowStart >> 8) & 0x01); + epdDeselect(); + + epdSelect(); + epdSend(xWindowStart & 0xFF); + epdDeselect(); + + epdSelect(); + epdSend((yWindowStart >> 8) & 0x01); + epdDeselect(); + + epdSelect(); + epdSend(yWindowStart & 0xFF); + epdDeselect(); + + epdSelect(); + epdSend((xWidth >> 8) & 0x01); + epdDeselect(); + + epdSelect(); + epdSend(xWidth & 0xFF); + epdDeselect(); + + epdSelect(); + epdSend((yHeight >> 8) & 0x01); + epdDeselect(); + + epdSelect(); + epdSend(yHeight & 0xFF); + epdDeselect(); +} + +void setColorMode(uint8_t red, uint8_t bw) { + // this does exactly nothing, just keeps the compiler from barking + red = 1; + bw = 0; + return; +} +void clearScreen() { + // shortCommand(CMD_PARTIAL_OUT); + commandBegin(CMD_DISPLAY_START_TRANSMISSION_DTM2); + for (uint16_t c = 0; c < ((1UL * SCREEN_HEIGHT * SCREEN_WIDTH) / 2); c++) { + epdSelect(); + epdSend(0x00); + epdDeselect(); + } + commandEnd(); + epdWaitRdy(); + commandBegin(CMD_DISPLAY_START_TRANSMISSION_DTM1); + for (uint16_t c = 0; c < ((1UL * SCREEN_HEIGHT * SCREEN_WIDTH) / 2); c++) { + epdSelect(); + epdSend(0x00); + epdDeselect(); + } +} +void draw() { + shortCommand(CMD_DISPLAY_REFRESH); + epdWaitRdy(); + timerDelay(133300); +} +void drawNoWait() { + shortCommand(CMD_DISPLAY_REFRESH); +} +void drawWithSleep() { + shortCommand(CMD_DISPLAY_REFRESH); + + epdWaitUntilBusy(1333000); + + uint8_t tmp_P2FUNC = P2FUNC; + uint8_t tmp_P2DIR = P2DIR; + uint8_t tmp_P2PULL = P2PULL; + uint8_t tmp_P2LVLSEL = P2LVLSEL; + P2FUNC &= 0xfd; + P2DIR |= 2; + P2PULL |= 2; + P2LVLSEL &= ~(2); + + P2CHSTA &= 0xfd; + P2INTEN = 2; + P2CHSTA &= 0xfd; + sleepForMsec(TIMER_TICKS_PER_SECOND * 120); + wdtOn(); + P2CHSTA &= 0xfd; + P2INTEN &= 0xfd; + + P2FUNC = tmp_P2FUNC; + P2DIR = tmp_P2DIR; + P2PULL = tmp_P2PULL; + P2LVLSEL = tmp_P2LVLSEL; + eepromPrvDeselect(); + timerDelay(133300); +} +void epdWaitRdy() { + epdBusyWait(TIMER_TICKS_PER_SECOND * 120); + timerDelay(133300); +} +void beginFullscreenImage() { + //drawDirection = true; + // epdDrawDirection(false); +} +void beginWriteFramebuffer(bool color) { + if (color == EPD_COLOR_RED) { + epdWrite(CMD_DISPLAY_START_TRANSMISSION_DTM2, 0); + } else { + epdWrite(CMD_DISPLAY_START_TRANSMISSION_DTM1, 0); + } +} +void endWriteFramebuffer() { +} + +void loadRawBitmap(uint8_t* bmp, uint16_t x, uint16_t y, bool color) __reentrant { + // this function is very badly hurt by the switch to UC8151, taking up LOTS of valuable idata space. Only defining variables + // as static, or the function as reentrant (relegating variables to the stack) seemed to fix the idata issue. Fix me, or put me out of my misery... + + uint16_t xsize = bmp[0] / 8; + if (bmp[0] % 8) xsize++; + uint16_t ysize = bmp[1]; + uint16_t size = xsize * bmp[1]; + + // shortCommand1(CMD_DATA_ENTRY_MODE, 3); + + bmp += 2; + + uint16_t c = 0; + uint16_t curY = y; + while (1) { + if (c % xsize == 0) { + if (drawDirection) { + setWindowXY(x, x + xsize * 8, SCREEN_HEIGHT - curY - 1, SCREEN_HEIGHT - curY); + } else { + setWindowXY(x, x + xsize * 8, curY - 1, curY); + } + curY++; + if (color) { + startWindow(true); + } else { + startWindow(false); + } + } + epdSelect(); + epdSend(*(bmp++)); + epdDeselect(); + c++; + if (!size--) break; + } +} +void printBarcode(const uint8_t* string, uint16_t x, uint16_t y) { + setWindowXY(x, x + 8, SCREEN_HEIGHT - y, SCREEN_HEIGHT); + startWindow(false); + struct BarcodeInfo __xdata bci = { + .str = string, + }; + while (!barcodeIsDone(&bci)) { + epdSelect(); + if (barcodeNextBar(&bci)) { + epdSend(0xFF); + } else { + epdSend(0x00); + } + epdDeselect(); + } +} +// stuff for printing text +static void pushXFontBytesToEPD(uint8_t byte1, uint8_t byte2) { + if (epdCharSize == 1) { + uint8_t offset = 7 - (fontCurXpos % 8); + for (uint8_t c = 0; c < 8; c++) { + if (byte2 & (1 << (7 - c))) rbuffer[c] |= (1 << offset); + } + for (uint8_t c = 0; c < 8; c++) { + if (byte1 & (1 << (7 - c))) rbuffer[8 + c] |= (1 << offset); + } + fontCurXpos++; + } else { + uint8_t offset = 6 - (fontCurXpos % 8); + // double font size + for (uint8_t c = 0; c < 8; c++) { + if (byte2 & (1 << (7 - c))) { + rbuffer[c * 2] |= (3 << offset); + rbuffer[(c * 2) + 1] |= (3 << offset); + } + } + for (uint8_t c = 0; c < 8; c++) { + if (byte1 & (1 << (7 - c))) { + rbuffer[(c * 2) + 16] |= (3 << offset); + rbuffer[(c * 2) + 17] |= (3 << offset); + } + } + fontCurXpos += 2; + } + if (fontCurXpos % 8 == 0) { + // next byte, flush current byte to EPD + for (uint8_t i = 0; i < (16 * epdCharSize); i++) { + epdSelect(); + epdSend(rbuffer[i]); + epdDeselect(); + } + memset(rbuffer, 0, 32); + } +} +static void bufferByteShift(uint8_t byte) { + /* + rbuffer[0] = 0; // previous value + rbuffer[1] = y%8; // offset + rbuffer[2] = 0; // current byte counter; + rbuffer[3] = 1+(epdCharsize*2); + */ + + if (rbuffer[1] == 0) { + epdSelect(); + epdSend(byte); + epdDeselect(); + } else { + uint8_t offset = rbuffer[1]; + rbuffer[0] |= (byte >> offset); + epdSelect(); + epdSend(rbuffer[0]); + epdDeselect(); + // epdSend(byte); + rbuffer[0] = (byte << (8 - offset)); + rbuffer[2]++; + if (rbuffer[2] == rbuffer[3]) { + epdSelect(); + epdSend(rbuffer[0]); + epdDeselect(); + rbuffer[0] = 0; + rbuffer[2] = 0; + } + } +} +static void pushYFontBytesToEPD(uint8_t byte1, uint8_t byte2) { + if (epdCharSize == 2) { + for (uint8_t j = 0; j < 2; j++) { + uint8_t c = 0; + for (uint8_t i = 7; i != 255; i--) { + if (byte1 & (1 << i)) c |= (0x03 << ((i % 4) * 2)); + if ((i % 4) == 0) { + bufferByteShift(c); + c = 0; + } + } + for (uint8_t i = 7; i != 255; i--) { + if (byte2 & (1 << i)) c |= (0x03 << ((i % 4) * 2)); + if ((i % 4) == 0) { + bufferByteShift(c); + c = 0; + } + } + } + } else { + bufferByteShift(byte1); + bufferByteShift(byte2); + } +} +void writeCharEPD(uint8_t c) { + c -= 0x20; + // Writes a single character to the framebuffer + bool empty = true; + for (uint8_t i = 0; i < 20; i++) { + if (font[c][i]) empty = false; + } + if (empty) { + for (uint8_t i = 0; i < 8; i++) { + if (directionY) { + pushYFontBytesToEPD(0x00, 0x00); + } else { + pushXFontBytesToEPD(0x00, 0x00); + } + } + return; + } + + uint8_t begin = 0; + while (font[c][begin] == 0x00 && font[c][begin + 1] == 0x00) { + begin += 2; + } + + uint8_t end = 20; + while (font[c][end - 1] == 0x00 && font[c][end - 2] == 0x00) { + end -= 2; + } + + for (uint8_t pos = begin; pos < end; pos += 2) { + if (directionY) { + pushYFontBytesToEPD(font[c][pos + 1], font[c][pos]); + } else { + pushXFontBytesToEPD(font[c][pos], font[c][pos + 1]); + } + } + + // spacing between characters + if (directionY) { + pushYFontBytesToEPD(0x00, 0x00); + } else { + pushXFontBytesToEPD(0x00, 0x00); + } +} + +// Print text to the EPD. Origin is top-left +void epdPrintBegin(uint16_t x, uint16_t y, bool direction, bool fontsize, bool color) { + directionY = direction; + epdCharSize = 1 + fontsize; + if (directionY) { + uint8_t extra = 0; + + // provisions for dealing with font in Y direction, byte-unaligned + if (x % 8) { + extra = 8; + rbuffer[0] = 0; // previous value + rbuffer[1] = x % 8; // offset + rbuffer[2] = 0; // current byte counter; + rbuffer[3] = (epdCharSize * 2); + } else { + rbuffer[1] = 0; + } + + // setWindowY(y, 1); + if (epdCharSize == 2) { + setWindowXY(x, x + 32 + extra, SCREEN_HEIGHT - y, SCREEN_HEIGHT); + // setPosXY(x, y); + } else { + setWindowXY(x, x + 16 + extra, SCREEN_HEIGHT - y, SCREEN_HEIGHT); + // setPosXY(x, y); + } + // shortCommand1(CMD_DATA_ENTRY_MODE, 1); // was 3 + } else { + if (epdCharSize == 2) { + x /= 2; + x *= 2; + setWindowXY(x, SCREEN_WIDTH, y, y + 32); + } else { + setWindowXY(x, SCREEN_WIDTH, y, y + 16); + } + // setPosXY(x, y); + fontCurXpos = x; + // setWindowXY(x, SCREEN_WIDTH); + // shortCommand1(CMD_DATA_ENTRY_MODE, 7); + memset(rbuffer, 0, 32); + } + + if (color) { + startWindow(true); + } else { + startWindow(false); + } + epdSelect(); +} +void epdPrintEnd() { + if (!directionY && ((fontCurXpos % 8) != 0)) { + for (uint8_t i = 0; i < (16 * epdCharSize); i++) { + epdSelect(); + epdSend(rbuffer[i]); + epdDeselect(); + } + } + epdDrawDirection(true); +} \ No newline at end of file diff --git a/zbs243_shared/board/uc-var-27.h b/zbs243_shared/board/uc-var-27.h new file mode 100644 index 00000000..0bf5de3b --- /dev/null +++ b/zbs243_shared/board/uc-var-27.h @@ -0,0 +1,74 @@ +#ifndef _JSCREEN_H_ +#define _JSCREEN_H_ + +#include +#include + +#define epdSend spiTXByte +#define EPD_DIRECTION_X false +#define EPD_DIRECTION_Y true +#define EPD_SIZE_SINGLE false +#define EPD_SIZE_DOUBLE true +#define EPD_COLOR_RED true +#define EPD_COLOR_BLACK false +#define EPD_LOAD_CUSTOM_LUT true +#define EPD_LOAD_OTP_LUT false +#define EPD_MODE_NORMAL 0x00 +#define EPD_MODE_INVERT 0x08 +#define EPD_MODE_IGNORE 0x04 + +#define EPD_LUT_DEFAULT 0 +#define EPD_LUT_NO_REPEATS 1 +#define EPD_LUT_FAST_NO_REDS 2 +#define EPD_LUT_FAST 3 + + +#define epdSelect() \ + do { \ + P1_7 = 0; \ + } while (0) + +#define epdDeselect() \ + do { \ + P1_7 = 1; \ + } while (0) + +void epdSetup(); +void epdEnterSleep(); +uint16_t epdGetBattery(); +void epdConfigGPIO(bool setup); + +extern bool __xdata epdGPIOActive; + +void setColorMode(uint8_t red, uint8_t bw) ; +void clearWindow(bool color); +void clearScreen(); +void draw(); +void drawNoWait(); +void drawWithSleep(); +void epdWaitRdy(); + +void beginFullscreenImage(); +void beginWriteFramebuffer(bool color); +void endWriteFramebuffer(); +void loadRawBitmap(uint8_t* bmp, uint16_t x, uint16_t y, bool color) __reentrant; +void printBarcode(const uint8_t* string, uint16_t x, uint16_t y); + +void selectLUT(uint8_t lut); + +void ByteDecode(uint8_t byte); + +void epdPrintBegin(uint16_t x, uint16_t y, bool direction, bool fontsize, bool red); +void epdPrintEnd(); + +void beginFullscreenImage(); +void beginWriteFramebuffer(bool color); + +void lutTest(); + +void epdTest(); + +// for printf.c +void writeCharEPD(uint8_t c); + +#endif \ No newline at end of file diff --git a/zbs243_shared/board/uc8151.c b/zbs243_shared/board/uc8151.c index 1916e37d..4aa6f9bd 100755 --- a/zbs243_shared/board/uc8151.c +++ b/zbs243_shared/board/uc8151.c @@ -230,7 +230,9 @@ static void epdBusyWait(uint32_t timeout) { if (P2_1) return; } + #ifdef DEBUGEPD pr("screen timeout %lu ticks :(\n", timerGet() - start); + #endif while (1) ; } @@ -640,6 +642,7 @@ static void pushYFontBytesToEPD(uint8_t byte1, uint8_t byte2) { } } void writeCharEPD(uint8_t c) { + c-=0x20; // Writes a single character to the framebuffer bool empty = true; for (uint8_t i = 0; i < 20; i++) { diff --git a/zbs243_shared/board/zbs154_ssd1619/screen.h b/zbs243_shared/board/zbs154_ssd1619/screen.h index a08dfdd8..1fe92af2 100644 --- a/zbs243_shared/board/zbs154_ssd1619/screen.h +++ b/zbs243_shared/board/zbs154_ssd1619/screen.h @@ -8,19 +8,8 @@ #define SCREEN_WIDTH 152 #define SCREEN_HEIGHT 152 -#define SCREEN_NUM_GREYS 5 -#define SCREEN_FIRST_GREY_IDX 0 -#define SCREEN_EXTRA_COLOR_INDEX 5 //set to negative if nonexistent -#define SCREEN_TX_BPP 4 //in transit +#define CUSTOMLUTS -#define SCREEN_WIDTH_MM 27 -#define SCREEN_HEIGHT_MM 27 - -#define SCREEN_BYTE_FILL 0x44 //white - -#define SCREEN_TYPE TagScreenEink_BWR_6colors - -#define SCREEN_DATA_PASSES 2 #endif diff --git a/zbs243_shared/board/zbs16_ssd1619/board.c b/zbs243_shared/board/zbs16_ssd1619/board.c new file mode 100644 index 00000000..15cf44cc --- /dev/null +++ b/zbs243_shared/board/zbs16_ssd1619/board.c @@ -0,0 +1 @@ +#include "../boardZBS29common.c" diff --git a/zbs243_shared/board/zbs16_ssd1619/board.h b/zbs243_shared/board/zbs16_ssd1619/board.h new file mode 100644 index 00000000..e7368ff6 --- /dev/null +++ b/zbs243_shared/board/zbs16_ssd1619/board.h @@ -0,0 +1,35 @@ +#ifndef _BOARD_H_ +#define _BOARD_H_ + +#include + +#define __packed +#include "../oepl-definitions.h" + +#include "spi.h" + +#define eepromByte spiByte +#define eepromPrvSelect() do { __asm__("nop\nnop\nnop\n"); P1_1 = 0; __asm__("nop\nnop\nnop\n"); } while(0) +#define eepromPrvDeselect() do { __asm__("nop\nnop\nnop\n"); P1_1 = 1; __asm__("nop\nnop\nnop\n"); } while(0) + +//eeprom map +#define EEPROM_SETTINGS_AREA_START (0x00000UL) +#define EEPROM_SETTINGS_AREA_LEN (0x01000UL) +#define EEPROM_IMG_START (0x01000UL) +#define EEPROM_IMG_EACH (0x02000UL) +//till end of eeprom really. do not put anything after - it will be erased at pairing time!!! +#define EEPROM_PROGRESS_BYTES (128) + + +#define HAS_EEPROM 1 +#define HAS_SCREEN 1 +#define NFC_TYPE 1 +#define AP_EMULATE_TAG 1 + +//hw types +#define HW_TYPE SOLUM_M2_BW_16 + +#include "../boardCommon.h" + + +#endif diff --git a/zbs243_shared/board/zbs16_ssd1619/make.mk b/zbs243_shared/board/zbs16_ssd1619/make.mk new file mode 100644 index 00000000..d1083181 --- /dev/null +++ b/zbs243_shared/board/zbs16_ssd1619/make.mk @@ -0,0 +1,7 @@ +FLAGS += --code-size 0xfc00 + +SOC = zbs243 + +BARCODE = datamatrix + +# 0xfc00 and not 0x10000 to leave some space for update header and updater in flash \ No newline at end of file diff --git a/zbs243_shared/board/zbs16_ssd1619/screen.c b/zbs243_shared/board/zbs16_ssd1619/screen.c new file mode 100644 index 00000000..9494884c --- /dev/null +++ b/zbs243_shared/board/zbs16_ssd1619/screen.c @@ -0,0 +1 @@ +#include "../ssd1619.c" diff --git a/zbs243_shared/board/zbs16_ssd1619/screen.h b/zbs243_shared/board/zbs16_ssd1619/screen.h new file mode 100644 index 00000000..2502e3f9 --- /dev/null +++ b/zbs243_shared/board/zbs16_ssd1619/screen.h @@ -0,0 +1,11 @@ +#ifndef _SCREEN_H_ +#define _SCREEN_H_ + +#include +#include +#include "../ssd1619.h" + +#define SCREEN_WIDTH 200 +#define SCREEN_HEIGHT 200 + +#endif diff --git a/zbs243_shared/board/zbs27_ucvar/board.c b/zbs243_shared/board/zbs27_ucvar/board.c new file mode 100644 index 00000000..15cf44cc --- /dev/null +++ b/zbs243_shared/board/zbs27_ucvar/board.c @@ -0,0 +1 @@ +#include "../boardZBS29common.c" diff --git a/zbs243_shared/board/zbs27_ucvar/board.h b/zbs243_shared/board/zbs27_ucvar/board.h new file mode 100644 index 00000000..74cb4605 --- /dev/null +++ b/zbs243_shared/board/zbs27_ucvar/board.h @@ -0,0 +1,33 @@ +#ifndef _BOARD_H_ +#define _BOARD_H_ + +#include +#include "spi.h" + +#define __packed +#include "../oepl-definitions.h" + + +#define eepromByte spiByte +#define eepromPrvSelect() do { __asm__("nop\nnop\nnop\n"); P1_1 = 0; __asm__("nop\nnop\nnop\n"); } while(0) +#define eepromPrvDeselect() do { __asm__("nop\nnop\nnop\n"); P1_1 = 1; __asm__("nop\nnop\nnop\n"); } while(0) + +//eeprom map +#define EEPROM_SETTINGS_AREA_START (0x00000UL) +#define EEPROM_SETTINGS_AREA_LEN (0x01000UL) +#define EEPROM_IMG_START (0x01000UL) +#define EEPROM_IMG_EACH (0x03000UL) + +#define HAS_EEPROM 1 +#define HAS_SCREEN 1 +#define NFC_TYPE 1 +#define AP_EMULATE_TAG 1 + + +//hw types +#define HW_TYPE SOLUM_M2_BWR_27 + +#include "../boardCommon.h" + + +#endif diff --git a/zbs243_shared/board/zbs27_ucvar/make.mk b/zbs243_shared/board/zbs27_ucvar/make.mk new file mode 100644 index 00000000..d1083181 --- /dev/null +++ b/zbs243_shared/board/zbs27_ucvar/make.mk @@ -0,0 +1,7 @@ +FLAGS += --code-size 0xfc00 + +SOC = zbs243 + +BARCODE = datamatrix + +# 0xfc00 and not 0x10000 to leave some space for update header and updater in flash \ No newline at end of file diff --git a/zbs243_shared/board/zbs27_ucvar/screen.c b/zbs243_shared/board/zbs27_ucvar/screen.c new file mode 100644 index 00000000..3678692c --- /dev/null +++ b/zbs243_shared/board/zbs27_ucvar/screen.c @@ -0,0 +1 @@ +#include "../uc-var-27.c" diff --git a/zbs243_shared/board/zbs27_ucvar/screen.h b/zbs243_shared/board/zbs27_ucvar/screen.h new file mode 100644 index 00000000..404e0586 --- /dev/null +++ b/zbs243_shared/board/zbs27_ucvar/screen.h @@ -0,0 +1,13 @@ +#ifndef _SCREEN_H_ +#define _SCREEN_H_ + +#include +#include +#include "../uc-var-27.h" + + +#define EPD_BYTEWISE_CS // this EPD requires every byte to be toggled +#define SCREEN_WIDTH 176 +#define SCREEN_HEIGHT 264 + +#endif diff --git a/zbs243_shared/board/zbs29_ssd1619/screen.h b/zbs243_shared/board/zbs29_ssd1619/screen.h index 6569cd44..ebeb06a6 100644 --- a/zbs243_shared/board/zbs29_ssd1619/screen.h +++ b/zbs243_shared/board/zbs29_ssd1619/screen.h @@ -5,22 +5,9 @@ #include #include "../ssd1619.h" +#define SCREEN_WIDTH 128 +#define SCREEN_HEIGHT 296 -#define SCREEN_WIDTH 128 -#define SCREEN_HEIGHT 296 - -#define SCREEN_NUM_GREYS 5 -#define SCREEN_FIRST_GREY_IDX 0 -#define SCREEN_EXTRA_COLOR_INDEX 5 //set to negative if nonexistent -#define SCREEN_TX_BPP 4 //in transit - -#define SCREEN_WIDTH_MM 29 -#define SCREEN_HEIGHT_MM 67 - -#define SCREEN_BYTE_FILL 0x44 //white - -#define SCREEN_TYPE TagScreenEink_BWR_6colors - -#define SCREEN_DATA_PASSES 2 +#define CUSTOMLUTS #endif diff --git a/zbs243_shared/board/zbs42_ssd1619/screen.h b/zbs243_shared/board/zbs42_ssd1619/screen.h index 8b8c147a..8358c03b 100644 --- a/zbs243_shared/board/zbs42_ssd1619/screen.h +++ b/zbs243_shared/board/zbs42_ssd1619/screen.h @@ -9,19 +9,8 @@ #define SCREEN_WIDTH 400 #define SCREEN_HEIGHT 300 -#define SCREEN_NUM_GREYS 5 -#define SCREEN_FIRST_GREY_IDX 0 -#define SCREEN_EXTRA_COLOR_INDEX 5 //set to negative if nonexistent -#define SCREEN_TX_BPP 4 //in transit +#define CUSTOMLUTS -#define SCREEN_WIDTH_MM 84 -#define SCREEN_HEIGHT_MM 63 - -#define SCREEN_BYTE_FILL 0x44 //white - -#define SCREEN_TYPE TagScreenEink_BWR_6colors - -#define SCREEN_DATA_PASSES 2 #endif diff --git a/zbs243_shared/cpu/8051/aes.c b/zbs243_shared/cpu/8051/aes.c new file mode 100644 index 00000000..8c7d5eb9 --- /dev/null +++ b/zbs243_shared/cpu/8051/aes.c @@ -0,0 +1,451 @@ +#include "asmUtil.h" +#include "aes.h" +#include "cpu.h" + + + +static uint8_t __xdata mAesKeySchedule[176]; + +static void aesSbox(void) __naked +{ + __asm__( + " .db 0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5,0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76 \n" + " .db 0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0,0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0 \n" + " .db 0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc,0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15 \n" + " .db 0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a,0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75 \n" + " .db 0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0,0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84 \n" + " .db 0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b,0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf \n" + " .db 0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85,0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8 \n" + " .db 0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5,0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2 \n" + " .db 0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17,0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73 \n" + " .db 0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88,0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb \n" + " .db 0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c,0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79 \n" + " .db 0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9,0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08 \n" + " .db 0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6,0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a \n" + " .db 0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e,0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e \n" + " .db 0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94,0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf \n" + " .db 0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68,0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16 \n" + ); +} + +void aesEnc(uint8_t __xdata *data) __reentrant __naked +{ + __asm__( + " push _R7 \n" + " push _R6 \n" + " push _R5 \n" + " push _R4 \n" + " push _R3 \n" + " push _R2 \n" + " push _R1 \n" + " push _R0 \n" + + //get key schedule pointer + " mov R0, #_mAesKeySchedule \n" + " mov R1, #_mAesKeySchedule >> 8 \n" + + " lcall 00094$ \n" //AddRoundKey + + //10 rounds + " mov R2, #10 \n" + "00002$: \n" + + " mov R4, DPH \n" + " mov R3, DPL \n" + + //SubBytes + " mov R6, #0 \n" + "00003$: \n" + " movx A, @DPTR \n" + " mov R5, DPL \n" + " mov R7, DPH \n" + " mov DPTR, #_aesSbox \n" + " movc A, @A+DPTR \n" + " mov DPL, R5 \n" + " mov DPH, R7 \n" + " movx @DPTR, A \n" + " inc DPTR \n" + " inc R6 \n" + " cjne R6, #16, 00003$ \n" + + //ShiftRows using swaps + " mov R6, #0 \n" + "00004$: \n" + " mov DPTR, #00098$ \n" + " mov A, R6 \n" + " movc A, @A + DPTR \n" + " anl A, #0x0f \n" + " add A, R3 \n" + " mov DPL, A \n" + " clr A \n" + " addc A, R4 \n" + " mov DPH, A \n" + " movx A, @DPTR \n" + " mov R7, A \n" + + " mov DPTR, #00098$ \n" + " mov A, R6 \n" + " movc A, @A + DPTR \n" + " swap A \n" + " anl A, #0x0f \n" + " add A, R3 \n" + " mov DPL, A \n" + " clr A \n" + " addc A, R4 \n" + " mov DPH, A \n" + " movx A, @DPTR \n" + " xch A, R7 \n" + " movx @DPTR, A \n" + + " mov DPTR, #00098$ \n" + " mov A, R6 \n" + " movc A, @A + DPTR \n" + " anl A, #0x0f \n" + " add A, R3 \n" + " mov DPL, A \n" + " clr A \n" + " addc A, R4 \n" + " mov DPH, A \n" + " mov A, R7 \n" + " movx @DPTR, A \n" + " inc R6 \n" + " cjne R6, #8, 00004$ \n" + + //MixColumns (Except for final round) + " cjne R2, #1, 00005$ \n" + " ljmp 00007$ \n" + "00005$: \n" + + " mov B, #4 \n" + " mov DPH, R4 \n" + " mov DPL, R3 \n" + + "00006$: \n" + //calc [3] row + " mov R6, DPH \n" + " mov R7, DPL \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " mov R5, A \n" + " lcall 00097$ \n" + " xrl _R5, A \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " xrl _R5, A \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " xrl _R5, A \n" + " movx A, @DPTR \n" + " lcall 00097$ \n" + " xrl A, R5 \n" + " push A \n" + + //calc [2] row + " mov DPH, R6 \n" + " mov DPL, R7 \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " mov R5, A \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " xrl _R5, A \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " lcall 00097$ \n" + " xrl _R5, A \n" + " movx A, @DPTR \n" + " xrl _R5, A \n" + " lcall 00097$ \n" + " xrl A, R5 \n" + " push A \n" + + //calc [1] row + " mov DPH, R6 \n" + " mov DPL, R7 \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " mov R5, A \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " lcall 00097$ \n" + " xrl _R5, A \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " xrl _R5, A \n" + " lcall 00097$ \n" + " xrl _R5, A \n" + " movx A, @DPTR \n" + " xrl A, R5 \n" + " push A \n" + + //cals [0] row + " mov DPH, R6 \n" + " mov DPL, R7 \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " lcall 00097$ \n" + " mov R5, A \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " xrl _R5, A \n" + " lcall 00097$ \n" + " xrl _R5, A \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " xrl _R5, A \n" + " movx A, @DPTR \n" + " xrl A, R5 \n" + + //write them + " mov DPH, R6 \n" + " mov DPL, R7 \n" + " movx @DPTR, A \n" + " inc DPTR \n" + " pop A \n" + " movx @DPTR, A \n" + " inc DPTR \n" + " pop A \n" + " movx @DPTR, A \n" + " inc DPTR \n" + " pop A \n" + " movx @DPTR, A \n" + " inc DPTR \n" + + " dec B \n" + " mov A, B \n" + " jz 00007$ \n" + " ljmp 00006$ \n" + + "00007$: \n" + + " mov DPH, R4 \n" + " mov DPL, R3 \n" + + " lcall 00094$ \n" + + " dec R2 \n" + " mov A, R2 \n" + " jz 00008$ \n" + " ljmp 00002$ \n" + "00008$: \n" + + //pop off regs + " pop _R0 \n" + " pop _R1 \n" + " pop _R2 \n" + " pop _R3 \n" + " pop _R4 \n" + " pop _R5 \n" + " pop _R6 \n" + " pop _R7 \n" + + " ret \n" + + //AddRoundKey() + "00094$: \n" + " mov R4, DPH \n" + " mov R3, DPL \n" + " mov R7, #16 \n" + "00093$: \n" + " lcall _mathPrvSwapDptrR1R0 \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " mov B, A \n" + " lcall _mathPrvSwapDptrR1R0 \n" + " movx A, @DPTR \n" + " xrl A, B \n" + " movx @DPTR, A \n" + " inc DPTR \n" + " djnz R7, 00093$ \n" + " mov DPH, R4 \n" + " mov DPL, R3 \n" + " ret \n" + + //inc DPTR 4x + "00095$: \n" + " inc DPTR \n" + " inc DPTR \n" + " inc DPTR \n" + " inc DPTR \n" + " ret \n" + + //galois multiply by 2 of A + "00097$: \n" + " add A, ACC \n" + " jnc 00096$ \n" + " xrl A, #0x1b \n" + "00096$: \n" + " ret \n" + + + //ShiftRows swaps + "00098$: \n" + " .db 0x15, 0x59, 0x9d \n" + " .db 0x2a, 0x6e \n" + " .db 0xfb, 0xb7, 0x73 \n" + ); + + (void)data; +} + +void aesSetKey(const uint8_t __xdata *key) __reentrant __naked +{ + __asm__( + " push _R5 \n" + " push _R4 \n" + " push _R3 \n" + " push _R2 \n" + " push _R1 \n" + " push _R0 \n" + + //move key pointer into R1:R0 + " mov _R1, DPH \n" + " mov _R0, DPL \n" + + // save keyschedule ptr (and thus get pointer to [0]) + " mov DPTR, #_mAesKeySchedule \n" + " push _DPH \n" + " push _DPL \n" + + //copy key into state (and thus get pointer to [16] into DPTR) + " mov B, #16 \n" + "00001$: \n" + " lcall _mathPrvSwapDptrR1R0 \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " lcall _mathPrvSwapDptrR1R0 \n" + " movx @DPTR, A \n" + " inc DPTR \n" + " djnz B, 00001$ \n" + + //get pointer to [0] into R1:R0 + " pop _R0 \n" + " pop _R1 \n" + + //the loop + " mov B, #0 \n" + "00002$: \n" + " mov A, #-4 \n" //point DPTR to [12] + " add A, DPL \n" + " mov DPL, A \n" + " mov A, #0xff \n" + " addc A, DPH \n" + " mov DPH, A \n" + " mov A, #3 \n" + " anl A, B \n" + " jz 00003$ \n" + + //the normal 3/4 rounds + " movx A, @DPTR \n" //[12] + " inc DPTR \n" + " mov R2, A \n" + " movx A, @DPTR \n" //[13] + " inc DPTR \n" + " mov R3, A \n" + " movx A, @DPTR \n" //[14] + " inc DPTR \n" + " mov R4, A \n" + " movx A, @DPTR \n" //[15] + " inc DPTR \n" + " mov R5, A \n" + " sjmp 00004$ \n" + + //the weird 1/4 round + "00003$: \n" + " movx A, @DPTR \n" //[12] + " inc DPTR \n" + " push DPL \n" + " push DPH \n" + " mov DPTR, #_aesSbox \n" + " movc A, @A+DPTR \n" + " mov _R5, A \n" + " pop DPH \n" + " pop DPL \n" + + " movx A, @DPTR \n" //[13] + " inc DPTR \n" + " push DPL \n" + " push DPH \n" + " mov DPTR, #_aesSbox \n" + " movc A, @A+DPTR \n" + " mov _R2, A \n" + " mov DPTR, #00098$ \n" + " mov A, B \n" + " rr A \n" + " rr A \n" + " movc A, @A+DPTR \n" + " xrl _R2, A \n" + " pop DPH \n" + " pop DPL \n" + + " movx A, @DPTR \n" //[14] + " inc DPTR \n" + " push DPL \n" + " push DPH \n" + " mov DPTR, #_aesSbox \n" + " movc A, @A+DPTR \n" + " mov _R3, A \n" + " pop DPH \n" + " pop DPL \n" + + " movx A, @DPTR \n" //[15] + " inc DPTR \n" + " push DPL \n" + " push DPH \n" + " mov DPTR, #_aesSbox \n" + " movc A, @A+DPTR \n" + " mov _R4, A \n" + " pop DPH \n" + " pop DPL \n" + + "00004$: \n" + " lcall _mathPrvSwapDptrR1R0 \n" + " movx A, @DPTR \n" //[0] + " inc DPTR \n" + " xrl _R2, A \n" + " movx A, @DPTR \n" //[1] + " inc DPTR \n" + " xrl _R3, A \n" + " movx A, @DPTR \n" //[2] + " inc DPTR \n" + " xrl _R4, A \n" + " movx A, @DPTR \n" //[3] + " inc DPTR \n" + " xrl _R5, A \n" + " lcall _mathPrvSwapDptrR1R0 \n" + " mov A, R2 \n" + " movx @DPTR, A \n" //[16] + " inc DPTR \n" + " mov A, R3 \n" + " movx @DPTR, A \n" //[17] + " inc DPTR \n" + " mov A, R4 \n" + " movx @DPTR, A \n" //[18] + " inc DPTR \n" + " mov A, R5 \n" + " movx @DPTR, A \n" //[19] + " inc DPTR \n" + + " inc B \n" + " mov A, #-40 \n" + " add A, B \n" + " jz 00005$ \n" + " ljmp 00002$ \n" + + "00005$: \n" + " pop _R0 \n" + " pop _R1 \n" + " pop _R2 \n" + " pop _R3 \n" + " pop _R4 \n" + " pop _R5 \n" + " ret \n" + + //round constants + "00098$: \n" + " .db 0x01,0x02,0x04,0x08,0x10\n" + " .db 0x20,0x40,0x80,0x1b,0x36\n" + ); + + (void)key; +} diff --git a/zbs243_shared/eeprom.c b/zbs243_shared/eeprom.c index 0aeb77c1..c3746cd9 100755 --- a/zbs243_shared/eeprom.c +++ b/zbs243_shared/eeprom.c @@ -5,6 +5,7 @@ #include "board.h" #include "cpu.h" #include +#include "settings.h" static uint32_t __xdata mEepromSize; static uint8_t __xdata mOpcodeErz4K = 0, mOpcodeErz32K = 0, mOpcodeErz64K = 0; @@ -46,8 +47,9 @@ static bool eepromPrvBusyWait(void) { eepromPrvSelect(); eepromByte(0x05); - while ((val = eepromByte(0x00)) & 1) + while ((val = eepromByte(0x00)) & 1) { ; + } eepromPrvDeselect(); return true; @@ -103,8 +105,9 @@ __bit eepromInit(void) { eepromPrvSfdpRead(0, buf, 8); if (buf[0] != 0x53 || buf[1] != 0x46 || buf[2] != 0x44 || buf[3] != 0x50 || buf[7] != 0xff) { + #ifdef DEBUGEEPROM pr("SFDP: header not found\n"); - + #endif __bit valid = false; // try manual ID for chips we know of @@ -113,29 +116,44 @@ __bit eepromInit(void) { eepromByte(0x00); eepromByte(0x00); eepromByte(0x00); - if (eepromByte(0) == 0xc2) { // old macronix chips - valid = true; - mOpcodeErz4K = 0x20; - switch (eepromByte(0)) { - case 0x05: // MX25V512 - mEepromSize = 0x00010000ul; - break; + switch (eepromByte(0)) { + case 0xc2: // old macronix chips + valid = true; + mOpcodeErz4K = 0x20; + switch (eepromByte(0)) { + case 0x05: // MX25V512 + mEepromSize = 0x00010000ul; + break; - case 0x12: // MX25V4005 - mEepromSize = 0x00080000ul; - break; + case 0x12: // MX25V4005 + mEepromSize = 0x00080000ul; + break; - default: - valid = false; - break; - } + default: + valid = false; + break; + } + break; + case 0xEF: // winbond + valid = true; + mOpcodeErz4K = 0x20; + switch (eepromByte(0)) { + case 0x13: // W25Q80DV without SFDP + mEepromSize = 0x00080000ul; + break; + default: + valid = false; + } + break; } eepromPrvDeselect(); free(tempBufferE); return valid; } if (buf[5] != 0x01) { + #ifdef DEBUGEEPROM pr("SFDP: version wrong: %u.%d\n", buf[5], buf[4]); + #endif return false; } nParamHdrs = buf[6]; @@ -150,29 +168,39 @@ __bit eepromInit(void) { eepromPrvSfdpRead(*(uint16_t __xdata *)(buf + 4), tempBufferE, 9 * 4); if ((tempBufferE[0] & 3) != 1) { + #ifdef DEBUGEEPROM pr("SFDP: no 4K ERZ\n"); + #endif break; } if (!(tempBufferE[0] & 0x04)) { + #ifdef DEBUGEEPROM pr("SFDP: no large write buf\n"); + #endif break; } if ((tempBufferE[2] & 0x06)) { + #ifdef DEBUGEEPROM pr("SFDP: addr.len != 3\n"); + #endif break; } if (!tempBufferE[1] || tempBufferE[1] == 0xff) { + #ifdef DEBUGEEPROM pr("SFDP: 4K ERZ opcode invalid\n"); + #endif break; } mOpcodeErz4K = tempBufferE[1]; if (tempBufferE[7] & 0x80) { + #ifdef DEBUGEEPROM pr("SFDP: device too big\n"); + #endif break; } else { - uint8_t t; + uint8_t __xdata t; if (t = tempBufferE[7]) mEepromSize = 0x00200000UL; @@ -181,7 +209,9 @@ __bit eepromInit(void) { else if (t = tempBufferE[5]) mEepromSize = 0x00000020UL; else { + #ifdef DEBUGEEPROM pr("SFDP: device so small?!\n"); + #endif break; } @@ -201,7 +231,9 @@ __bit eepromInit(void) { switch (tempBufferE[j]) { case 0x0c: if (mOpcodeErz4K != instr) { + #ifdef DEBUGEEPROM pr("4K ERZ opcode disagreement\n"); + #endif return false; } break; @@ -231,8 +263,9 @@ __bit eepromInit(void) { return true; } } - + #ifdef DEBUGEEPROM pr("SFDP: no JEDEC table of expected version found\n"); + #endif return false; } diff --git a/zbs243_shared/soc/zbs243/make.mk b/zbs243_shared/soc/zbs243/make.mk index 3b4f9da9..e6b330f2 100644 --- a/zbs243_shared/soc/zbs243/make.mk +++ b/zbs243_shared/soc/zbs243/make.mk @@ -3,6 +3,6 @@ FLAGS += -Isoc/zbs243 FLAGS += -DSOC_ZBS243 --xram-loc 0xe000 --xram-size 0x2000 --model-large SOURCES += soc/zbs243/soc.c soc/zbs243/wdt.c soc/zbs243/sleep.c soc/zbs243/spi.c soc/zbs243/uart.c soc/zbs243/timer.c soc/zbs243/radio.c -SOURCES += soc/zbs243/flash.c soc/zbs243/temperature.c cpu/8051/random.c cpu/8051/printf.c +SOURCES += soc/zbs243/flash.c soc/zbs243/temperature.c cpu/8051/random.c cpu/8051/aes.c cpu/8051/printf.c SOURCES += soc/zbs243/i2c.c CPU = 8051