From 9360d55bd54ed839d110a60ffab47974736b5dc2 Mon Sep 17 00:00:00 2001 From: Steveice10 <1269164+Steveice10@users.noreply.github.com> Date: Fri, 23 Jan 2015 18:37:10 -0800 Subject: [PATCH] Organize code structure, generate CBMD files without premade headers. --- CMakeLists.txt | 2 +- source/3ds/3ds.h | 9 +++ source/3ds/cbmd.cpp | 81 +++++++++++++++++++ source/3ds/cbmd.h | 33 ++++++++ source/{ => 3ds}/lz11.cpp | 15 ++-- source/{ => 3ds}/lz11.h | 2 +- source/{ => 3ds}/types.h | 2 + source/3ds/util.cpp | 51 ++++++++++++ source/3ds/util.h | 8 ++ source/data.h | 13 +-- source/{ => lodepng}/lodepng.cpp | 0 source/{ => lodepng}/lodepng.h | 0 source/main.cpp | 132 +++++++++++-------------------- 13 files changed, 245 insertions(+), 103 deletions(-) create mode 100644 source/3ds/3ds.h create mode 100644 source/3ds/cbmd.cpp create mode 100644 source/3ds/cbmd.h rename source/{ => 3ds}/lz11.cpp (88%) rename source/{ => 3ds}/lz11.h (54%) rename source/{ => 3ds}/types.h (79%) create mode 100644 source/3ds/util.cpp create mode 100644 source/3ds/util.h rename source/{ => lodepng}/lodepng.cpp (100%) rename source/{ => lodepng}/lodepng.h (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index ddd39a7..116fee9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,5 +3,5 @@ project(bannertool) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") -set(SOURCE_FILES source/main.cpp source/lz11.cpp source/lodepng.cpp) +set(SOURCE_FILES source/main.cpp source/3ds/cbmd.cpp source/3ds/lz11.cpp source/3ds/util.cpp source/lodepng/lodepng.cpp) add_executable(bannertool ${SOURCE_FILES}) \ No newline at end of file diff --git a/source/3ds/3ds.h b/source/3ds/3ds.h new file mode 100644 index 0000000..ffeffd2 --- /dev/null +++ b/source/3ds/3ds.h @@ -0,0 +1,9 @@ +#ifndef __3DS_H__ +#define __3DS_H__ + +#include "cbmd.h" +#include "lz11.h" +#include "types.h" +#include "util.h" + +#endif \ No newline at end of file diff --git a/source/3ds/cbmd.cpp b/source/3ds/cbmd.cpp new file mode 100644 index 0000000..81a6cd1 --- /dev/null +++ b/source/3ds/cbmd.cpp @@ -0,0 +1,81 @@ +#include "cbmd.h" + +#include "lz11.h" + +#include +#include + +typedef struct { + char magic[4] = {'C', 'B', 'M', 'D'}; + u32 zero = 0; + u32 cgfxOffsets[14] = {0}; + u8 padding[0x44] = {0}; + u32 cwavOffset = 0; +} CBMDHeader; + +u8* build_cbmd_data(CBMD cbmd, u32* size, bool bnr) { + u32 headerSize = sizeof(CBMDHeader); + CBMDHeader header; + + u8* compressedCGFXs[14] = {0}; + u32 compressedCGFXSizes[14] = {0}; + + u32 offset = headerSize; + for(int i = 0; i < 14; i++) { + if(cbmd.cgfxs[i] != NULL) { + compressedCGFXs[i] = lz11_compress(cbmd.cgfxs[i], cbmd.cgfxSizes[i], &compressedCGFXSizes[i]); + header.cgfxOffsets[i] = offset; + offset += compressedCGFXSizes[i]; + } + } + + u32 pad = 0; + if(bnr) { + pad = 16 - (offset % 16); + offset += pad; + } + + if(cbmd.cwav != NULL) { + header.cwavOffset = offset; + offset += cbmd.cwavSize; + } + + u8* output = (u8*) malloc(offset); + u32 pos = 0; + + memcpy(output + pos, &header, headerSize); + pos += headerSize; + + for(int i = 0; i < 14; i++) { + if(compressedCGFXs[i] != NULL) { + memcpy(output + pos, compressedCGFXs[i], compressedCGFXSizes[i]); + free(compressedCGFXs[i]); + compressedCGFXs[i] = NULL; + pos += compressedCGFXSizes[i]; + } + } + + if(bnr) { + memset(output + pos, 0, pad); + pos += pad; + } + + if(cbmd.cwav != NULL) { + memcpy(output + pos, cbmd.cwav, cbmd.cwavSize); + pos += cbmd.cwavSize; + } + + if(size != NULL) { + *size = offset; + } + + return output; +} + +u8* build_cbmd(CBMD cbmd, u32* size) { + return build_cbmd_data(cbmd, size, false); +} + +u8* build_bnr(CBMD cbmd, u32* size) { + return build_cbmd_data(cbmd, size, true); +} \ No newline at end of file diff --git a/source/3ds/cbmd.h b/source/3ds/cbmd.h new file mode 100644 index 0000000..3fa0fe9 --- /dev/null +++ b/source/3ds/cbmd.h @@ -0,0 +1,33 @@ +#ifndef __CBMD_H__ +#define __CBMD_H__ + +#include "types.h" + +typedef enum { + CGFX_COMMON, + CGFX_EUR_ENGLISH, + CGFX_EUR_FRENCH, + CGFX_EUR_GERMAN, + CGFX_EUR_ITALIAN, + CGFX_EUR_SPANISH, + CGFX_EUR_DUTCH, + CGFX_EUR_PORTUGESE, + CGFX_EUR_RUSSIAN, + CGFX_JPN_JAPANESE, + CGFX_USA_ENGLISH, + CGFX_USA_FRENCH, + CGFX_USA_SPANISH, + CGFX_USA_PORTUGESE +} CBMDCGFX; + +typedef struct { + u8* cgfxs[14] = {NULL}; + u32 cgfxSizes[14] = {0}; + u8* cwav = NULL; + u32 cwavSize = 0; +} CBMD; + +u8* build_cbmd(CBMD cbmd, u32* size); +u8* build_bnr(CBMD cbmd, u32* size); + +#endif \ No newline at end of file diff --git a/source/lz11.cpp b/source/3ds/lz11.cpp similarity index 88% rename from source/lz11.cpp rename to source/3ds/lz11.cpp index e7aeed7..e5a8c02 100644 --- a/source/lz11.cpp +++ b/source/3ds/lz11.cpp @@ -1,16 +1,15 @@ #include "lz11.h" -#include #include +#include #include -#include #define MIN(a,b) (((a)<(b))?(a):(b)) // Ported from: https://github.com/svn2github/3DS-Explorer/blob/master/3DSExplorer/DSDecmp/Formats/Nitro/LZ11.cs -int get_occurence_length(u8* newPtr, int newLength, u8* oldPtr, int oldLength, int* disp) { +int lz11_get_occurence_length(u8* newPtr, int newLength, u8* oldPtr, int oldLength, int* disp) { if(disp != NULL) { *disp = 0; } @@ -46,7 +45,7 @@ int get_occurence_length(u8* newPtr, int newLength, u8* oldPtr, int oldLength, i return maxLength; } -u8* compress_lz11(u8* input, u32 inputSize, u32* size) { +u8* lz11_compress(u8* input, u32 inputSize, u32* size) { if (inputSize > 0xFFFFFF) { printf("ERROR: LZ11 input is too large."); return NULL; @@ -74,7 +73,7 @@ u8* compress_lz11(u8* input, u32 inputSize, u32* size) { int disp = 0; int oldLength = MIN(readBytes, 0x1000); - int length = get_occurence_length(input + readBytes, MIN(inputSize - readBytes, 0x10110), input + readBytes - oldLength, oldLength, &disp); + int length = lz11_get_occurence_length(input + readBytes, MIN(inputSize - readBytes, 0x10110), input + readBytes - oldLength, oldLength, &disp); if(length < 3) { outbuffer[bufferlength++] = *(input + (readBytes++)); } else { @@ -110,11 +109,13 @@ u8* compress_lz11(u8* input, u32 inputSize, u32* size) { compressedLength += bufferlength; } - int padLength = 4 - (compressedLength % 4); - if(padLength > 0) { + if(compressedLength % 4 != 0) { + int padLength = 4 - (compressedLength % 4); u8 pad[padLength]; memset(pad, 0, (size_t) padLength); + ss.write((char*) pad, padLength); + compressedLength += padLength; } u8* buf = (u8*) malloc((size_t) compressedLength); diff --git a/source/lz11.h b/source/3ds/lz11.h similarity index 54% rename from source/lz11.h rename to source/3ds/lz11.h index 0c719ed..5fb8561 100644 --- a/source/lz11.h +++ b/source/3ds/lz11.h @@ -3,6 +3,6 @@ #include "types.h" -u8* compress_lz11(u8* input, u32 inputSize, u32* size); +u8* lz11_compress(u8* input, u32 inputSize, u32* size); #endif \ No newline at end of file diff --git a/source/types.h b/source/3ds/types.h similarity index 79% rename from source/types.h rename to source/3ds/types.h index a0ef850..7d4b75a 100644 --- a/source/types.h +++ b/source/3ds/types.h @@ -1,7 +1,9 @@ #ifndef __TYPES_H__ #define __TYPES_H__ +#include #include +#include typedef uint8_t u8; typedef uint16_t u16; diff --git a/source/3ds/util.cpp b/source/3ds/util.cpp new file mode 100644 index 0000000..f2eed40 --- /dev/null +++ b/source/3ds/util.cpp @@ -0,0 +1,51 @@ +#include "util.h" + +#include "../lodepng/lodepng.h" + +u8 TILE_ORDER[64] = { 0, 1, 8, 9, 2, 3, 10, 11, 16, 17, 24, 25, 18, 19, 26, 27, + 4, 5, 12, 13, 6, 7, 14, 15, 20, 21, 28, 29, 22, 23, 30, 31, + 32, 33, 40, 41, 34, 35, 42, 43, 48, 49, 56, 57, 50, 51, 58, 59, + 36, 37, 44, 45, 38, 39, 46, 47, 52, 53, 60, 61, 54, 55, 62, 63 }; + +u8* image_to_tiles(const char* image, u32 width, u32 height, u32* size) { + unsigned char* img; + unsigned int imgWidth, imgHeight; + if(lodepng_decode32_file(&img, &imgWidth, &imgHeight, image)) { + printf("ERROR: Could not load png file.\n"); + return NULL; + } + + if(width == 0) { + width = imgWidth; + } + + if(height == 0) { + height = imgHeight; + } + + if(imgWidth != width || imgHeight != height) { + printf("ERROR: Image must be exactly %d x %d in size.\n", width, height); + return NULL; + } + + u8* converted = (u8*) malloc(width * height * 2); + u32 n = 0; + for(int y = 0; y < height; y += 8) { + for(int x = 0; x < width; x += 8) { + for(int k = 0; k < 8 * 8; k++) { + u32 xx = (u32) (TILE_ORDER[k] & 0x7); + u32 yy = (u32) (TILE_ORDER[k] >> 3); + + u8* pixel = img + (((y + yy) * width + (x + xx)) * 4); + converted[n++] = ((pixel[2] >> 4) << 4) | (pixel[3] >> 4); + converted[n++] = ((pixel[0] >> 4) << 4) | (pixel[1] >> 4); + } + } + } + + if(size != NULL) { + *size = width * height * 2; + } + + return converted; +} \ No newline at end of file diff --git a/source/3ds/util.h b/source/3ds/util.h new file mode 100644 index 0000000..979a7c0 --- /dev/null +++ b/source/3ds/util.h @@ -0,0 +1,8 @@ +#ifndef __UTIL_H__ +#define __UTIL_H__ + +#include "types.h" + +u8* image_to_tiles(const char* image, u32 width, u32 height, u32* size); + +#endif \ No newline at end of file diff --git a/source/data.h b/source/data.h index 7ea60e1..07c13c8 100644 --- a/source/data.h +++ b/source/data.h @@ -1,16 +1,9 @@ #ifndef __DATA_H__ #define __DATA_H__ -#include "types.h" +#include "3ds/3ds.h" -u8 TILE_ORDER[64] = { 0, 1, 8, 9, 2, 3, 10, 11, 16, 17, 24, 25, 18, 19, 26, 27, - 4, 5, 12, 13, 6, 7, 14, 15, 20, 21, 28, 29, 22, 23, 30, 31, - 32, 33, 40, 41, 34, 35, 42, 43, 48, 49, 56, 57, 50, 51, 58, 59, - 36, 37, 44, 45, 38, 39, 46, 47, 52, 53, 60, 61, 54, 55, 62, 63 }; - -u8 CGFX_HEADER[0x1580] = { 0x43, 0x47, 0x46, 0x58, 0xFF, 0xFE, 0x14, 0x00, 0x00, 0x00, 0x00, 0x05, 0x80, 0x15, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, 0xE4, 0x14, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x49, 0x43, 0x54, 0x2C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xB0, 0x0F, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x44, 0x49, 0x43, 0x54, 0x2C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x8B, 0x0F, 0x00, 0x00, 0x24, 0x0F, 0x00, 0x00, 0x92, 0x00, 0x00, 0x40, 0x43, 0x4D, 0x44, 0x4C, 0x00, 0x00, 0x00, 0x07, 0x70, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 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, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0D, 0x00, 0x00, 0x68, 0x06, 0x00, 0x00, 0x74, 0x0B, 0x00, 0x00, 0x44, 0x49, 0x43, 0x54, 0x4C, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x7B, 0x0E, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x7D, 0x0E, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x81, 0x0E, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, 0x44, 0x49, 0x43, 0x54, 0x2C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x67, 0x0E, 0x00, 0x00, 0x6C, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x1F, 0x0E, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x44, 0x49, 0x43, 0x54, 0x2C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1D, 0x0E, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x11, 0x0E, 0x00, 0x00, 0x0D, 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, 0xED, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xAD, 0x0D, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x49, 0x43, 0x54, 0x3C, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xA0, 0x0D, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x9A, 0x0D, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x84, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD4, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x62, 0x0D, 0x00, 0x00, 0x72, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0D, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x44, 0x49, 0x43, 0x54, 0x2C, 0x01, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x01, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xF4, 0x0C, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x5E, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x12, 0x0D, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0x5C, 0x01, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, 0x2F, 0x0D, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00, 0x6D, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0A, 0x00, 0x4C, 0x0D, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, 0x6B, 0x0D, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x8A, 0x0D, 0x00, 0x00, 0xA4, 0x01, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0xA9, 0x0D, 0x00, 0x00, 0xC4, 0x01, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0xC8, 0x0D, 0x00, 0x00, 0xE4, 0x01, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0x08, 0x00, 0x09, 0x00, 0xE7, 0x0D, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0x6A, 0x01, 0x00, 0x00, 0x08, 0x00, 0x0B, 0x00, 0x06, 0x0E, 0x00, 0x00, 0x24, 0x02, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0x0A, 0x00, 0x0B, 0x00, 0x25, 0x0E, 0x00, 0x00, 0x44, 0x02, 0x00, 0x00, 0xDE, 0x01, 0x00, 0x00, 0x11, 0x00, 0x0C, 0x00, 0x44, 0x0E, 0x00, 0x00, 0x64, 0x02, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x04, 0x00, 0x0D, 0x00, 0x71, 0x0E, 0x00, 0x00, 0x88, 0x02, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x92, 0x0E, 0x00, 0x00, 0xAC, 0x02, 0x00, 0x00, 0x96, 0x01, 0x00, 0x00, 0x0D, 0x00, 0x0F, 0x00, 0xC5, 0x0E, 0x00, 0x00, 0xCC, 0x02, 0x00, 0x00, 0x9E, 0x01, 0x00, 0x00, 0x0F, 0x00, 0x10, 0x00, 0xE9, 0x0E, 0x00, 0x00, 0xF0, 0x02, 0x00, 0x00, 0xB6, 0x01, 0x00, 0x00, 0x10, 0x00, 0x11, 0x00, 0x0E, 0x0F, 0x00, 0x00, 0x14, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xE8, 0x0B, 0x00, 0x00, 0xB3, 0x0B, 0x00, 0x00, 0x32, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x93, 0x0B, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xE6, 0x0B, 0x00, 0x00, 0x83, 0x0B, 0x00, 0x00, 0x02, 0x0F, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x0B, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xE3, 0x0B, 0x00, 0x00, 0x53, 0x0B, 0x00, 0x00, 0xD2, 0x0E, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x0B, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xE0, 0x0B, 0x00, 0x00, 0x23, 0x0B, 0x00, 0x00, 0xA2, 0x0E, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0B, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xDF, 0x0B, 0x00, 0x00, 0xF3, 0x0A, 0x00, 0x00, 0x72, 0x0E, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD3, 0x0A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xDE, 0x0B, 0x00, 0x00, 0xC3, 0x0A, 0x00, 0x00, 0x42, 0x0E, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x0A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xDD, 0x0B, 0x00, 0x00, 0x93, 0x0A, 0x00, 0x00, 0x12, 0x0E, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x0A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xDC, 0x0B, 0x00, 0x00, 0x63, 0x0A, 0x00, 0x00, 0xE2, 0x0D, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x0A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xDB, 0x0B, 0x00, 0x00, 0x33, 0x0A, 0x00, 0x00, 0xB2, 0x0D, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x0A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xDA, 0x0B, 0x00, 0x00, 0x03, 0x0A, 0x00, 0x00, 0x82, 0x0D, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE3, 0x09, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xD9, 0x0B, 0x00, 0x00, 0xD3, 0x09, 0x00, 0x00, 0x52, 0x0D, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB3, 0x09, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xD8, 0x0B, 0x00, 0x00, 0xA3, 0x09, 0x00, 0x00, 0x30, 0x0D, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xE1, 0x0B, 0x00, 0x00, 0x6F, 0x09, 0x00, 0x00, 0x16, 0x0D, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xDE, 0x0B, 0x00, 0x00, 0x3B, 0x09, 0x00, 0x00, 0xF4, 0x0C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x09, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF1, 0x0B, 0x00, 0x00, 0x0B, 0x09, 0x00, 0x00, 0xE5, 0x0C, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF1, 0x0B, 0x00, 0x00, 0xD7, 0x08, 0x00, 0x00, 0xB1, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB7, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF2, 0x0B, 0x00, 0x00, 0xA3, 0x08, 0x00, 0x00, 0x7D, 0x0C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x53, 0x4F, 0x42, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xF8, 0xFF, 0xFF, 0x01, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4D, 0x54, 0x4F, 0x42, 0x00, 0x00, 0x00, 0x06, 0xEB, 0x07, 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, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 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, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x07, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x26, 0x01, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x01, 0xE4, 0x00, 0x00, 0x01, 0x3F, 0x80, 0x00, 0x00, 0x76, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x0F, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 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, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 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, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCD, 0xE5, 0x5D, 0xDA, 0x5E, 0x65, 0x75, 0x3B, 0xF4, 0xF7, 0x3D, 0xF4, 0x22, 0x5B, 0xE7, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x70, 0xF7, 0x66, 0xF4, 0xC8, 0x6A, 0xC0, 0x31, 0x9C, 0x09, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x65, 0x75, 0x3B, 0x6C, 0x01, 0x82, 0x35, 0xF8, 0x02, 0x01, 0x64, 0xA2, 0x01, 0xF2, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x81, 0x00, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x06, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x04, 0x00, 0x00, 0x20, 0x54, 0x58, 0x4F, 0x42, 0x00, 0x00, 0x00, 0x05, 0xBC, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x90, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x53, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x05, 0x7C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 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, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0E, 0x30, 0x0E, 0xC0, 0x00, 0x4F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x0E, 0x1F, 0x0E, 0xC8, 0x00, 0x4F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x0E, 0x1F, 0x0E, 0xD0, 0x00, 0x4F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x0E, 0x1F, 0x0E, 0xD8, 0x00, 0x4F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x0E, 0x1F, 0x0E, 0xF0, 0x00, 0x4F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x0E, 0x1F, 0x0E, 0xF8, 0x00, 0x4F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x01, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFD, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0xC3, 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, 0x01, 0x00, 0x00, 0x10, 0x53, 0x4F, 0x42, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x50, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0xD0, 0x41, 0x00, 0x00, 0x50, 0x41, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xEC, 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, 0x02, 0x00, 0x00, 0x40, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xBC, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x01, 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, 0x06, 0x14, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 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, 0x06, 0x14, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x53, 0x4F, 0x42, 0x4A, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x44, 0x49, 0x43, 0x54, 0x2C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x95, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8D, 0x01, 0x00, 0x00, 0xDC, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x20, 0x54, 0x58, 0x4F, 0x42, 0x00, 0x00, 0x00, 0x05, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x52, 0x67, 0x00, 0x00, 0x33, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x4F, 0x4D, 0x4D, 0x4F, 0x4E, 0x00, 0x43, 0x4F, 0x4D, 0x4D, 0x4F, 0x4E, 0x31, 0x00, 0x53, 0x6B, 0x65, 0x6C, 0x65, 0x74, 0x61, 0x6C, 0x41, 0x6E, 0x69, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6C, 0x69, 0x74, 0x79, 0x41, 0x6E, 0x69, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x41, 0x6E, 0x69, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x00, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x00, 0x49, 0x73, 0x56, 0x69, 0x73, 0x69, 0x62, 0x6C, 0x65, 0x00, 0x4D, 0x65, 0x73, 0x68, 0x65, 0x73, 0x5B, 0x30, 0x5D, 0x2E, 0x49, 0x73, 0x56, 0x69, 0x73, 0x69, 0x62, 0x6C, 0x65, 0x00, 0x30, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x45, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x41, 0x6D, 0x62, 0x69, 0x65, 0x6E, 0x74, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x44, 0x69, 0x66, 0x66, 0x75, 0x73, 0x65, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x53, 0x70, 0x65, 0x63, 0x75, 0x6C, 0x61, 0x72, 0x30, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x53, 0x70, 0x65, 0x63, 0x75, 0x6C, 0x61, 0x72, 0x31, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x30, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x31, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x32, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x33, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x34, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x35, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x4D, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x5B, 0x30, 0x5D, 0x2E, 0x53, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x72, 0x2E, 0x42, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x4D, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x5B, 0x30, 0x5D, 0x2E, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x46, 0x72, 0x61, 0x67, 0x6D, 0x65, 0x6E, 0x74, 0x4F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x4F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6F, 0x6F, 0x72, 0x64, 0x69, 0x6E, 0x61, 0x74, 0x6F, 0x72, 0x73, 0x5B, 0x30, 0x5D, 0x2E, 0x53, 0x63, 0x61, 0x6C, 0x65, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6F, 0x6F, 0x72, 0x64, 0x69, 0x6E, 0x61, 0x74, 0x6F, 0x72, 0x73, 0x5B, 0x30, 0x5D, 0x2E, 0x52, 0x6F, 0x74, 0x61, 0x74, 0x65, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6F, 0x6F, 0x72, 0x64, 0x69, 0x6E, 0x61, 0x74, 0x6F, 0x72, 0x73, 0x5B, 0x30, 0x5D, 0x2E, 0x54, 0x72, 0x61, 0x6E, 0x73, 0x6C, 0x61, 0x74, 0x65, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x4D, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x5B, 0x30, 0x5D, 0x2E, 0x53, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x72, 0x00, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x4D, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x5B, 0x30, 0x5D, 0x00, 0x46, 0x72, 0x61, 0x67, 0x6D, 0x65, 0x6E, 0x74, 0x4F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x4F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6F, 0x6F, 0x72, 0x64, 0x69, 0x6E, 0x61, 0x74, 0x6F, 0x72, 0x73, 0x5B, 0x30, 0x5D, 0x00, 0x00, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x4D, 0x41, 0x47, 0x88, 0x00, 0x01, 0x00, 0x00, 0x01, 0x02, 0x01, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x50, 0xC1, 0x00, 0x00, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x41, 0x00, 0x00, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xC1, 0x00, 0x00, 0xB0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x50, 0x41, 0x00, 0x00, 0xB0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 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 }; -u32 CGFX_HEADER_LENGTH = 0x1580; -u8 BANNER_CBMD_HEADER[0x84] = { 0x43, 0x42, 0x4D, 0x44, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; -u32 BANNER_CBMD_HEADER_LENGTH = 0x84; +u8 BANNER_CGFX_HEADER[0x1580] = { 0x43, 0x47, 0x46, 0x58, 0xFF, 0xFE, 0x14, 0x00, 0x00, 0x00, 0x00, 0x05, 0x80, 0x15, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x44, 0x41, 0x54, 0x41, 0xE4, 0x14, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x49, 0x43, 0x54, 0x2C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xB0, 0x0F, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x44, 0x49, 0x43, 0x54, 0x2C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x8B, 0x0F, 0x00, 0x00, 0x24, 0x0F, 0x00, 0x00, 0x92, 0x00, 0x00, 0x40, 0x43, 0x4D, 0x44, 0x4C, 0x00, 0x00, 0x00, 0x07, 0x70, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 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, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0D, 0x00, 0x00, 0x68, 0x06, 0x00, 0x00, 0x74, 0x0B, 0x00, 0x00, 0x44, 0x49, 0x43, 0x54, 0x4C, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x7B, 0x0E, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x7D, 0x0E, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x81, 0x0E, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, 0x44, 0x49, 0x43, 0x54, 0x2C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x67, 0x0E, 0x00, 0x00, 0x6C, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x1F, 0x0E, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x44, 0x49, 0x43, 0x54, 0x2C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1D, 0x0E, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x11, 0x0E, 0x00, 0x00, 0x0D, 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, 0xED, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xAD, 0x0D, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x49, 0x43, 0x54, 0x3C, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xA0, 0x0D, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x9A, 0x0D, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x84, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD4, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x62, 0x0D, 0x00, 0x00, 0x72, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0D, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x44, 0x49, 0x43, 0x54, 0x2C, 0x01, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x01, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xF4, 0x0C, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x5E, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x12, 0x0D, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0x5C, 0x01, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, 0x2F, 0x0D, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00, 0x6D, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0A, 0x00, 0x4C, 0x0D, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, 0x6B, 0x0D, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x8A, 0x0D, 0x00, 0x00, 0xA4, 0x01, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0xA9, 0x0D, 0x00, 0x00, 0xC4, 0x01, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0xC8, 0x0D, 0x00, 0x00, 0xE4, 0x01, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0x08, 0x00, 0x09, 0x00, 0xE7, 0x0D, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0x6A, 0x01, 0x00, 0x00, 0x08, 0x00, 0x0B, 0x00, 0x06, 0x0E, 0x00, 0x00, 0x24, 0x02, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0x0A, 0x00, 0x0B, 0x00, 0x25, 0x0E, 0x00, 0x00, 0x44, 0x02, 0x00, 0x00, 0xDE, 0x01, 0x00, 0x00, 0x11, 0x00, 0x0C, 0x00, 0x44, 0x0E, 0x00, 0x00, 0x64, 0x02, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x04, 0x00, 0x0D, 0x00, 0x71, 0x0E, 0x00, 0x00, 0x88, 0x02, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x92, 0x0E, 0x00, 0x00, 0xAC, 0x02, 0x00, 0x00, 0x96, 0x01, 0x00, 0x00, 0x0D, 0x00, 0x0F, 0x00, 0xC5, 0x0E, 0x00, 0x00, 0xCC, 0x02, 0x00, 0x00, 0x9E, 0x01, 0x00, 0x00, 0x0F, 0x00, 0x10, 0x00, 0xE9, 0x0E, 0x00, 0x00, 0xF0, 0x02, 0x00, 0x00, 0xB6, 0x01, 0x00, 0x00, 0x10, 0x00, 0x11, 0x00, 0x0E, 0x0F, 0x00, 0x00, 0x14, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xE8, 0x0B, 0x00, 0x00, 0xB3, 0x0B, 0x00, 0x00, 0x32, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x93, 0x0B, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xE6, 0x0B, 0x00, 0x00, 0x83, 0x0B, 0x00, 0x00, 0x02, 0x0F, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x0B, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xE3, 0x0B, 0x00, 0x00, 0x53, 0x0B, 0x00, 0x00, 0xD2, 0x0E, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x0B, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xE0, 0x0B, 0x00, 0x00, 0x23, 0x0B, 0x00, 0x00, 0xA2, 0x0E, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0B, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xDF, 0x0B, 0x00, 0x00, 0xF3, 0x0A, 0x00, 0x00, 0x72, 0x0E, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD3, 0x0A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xDE, 0x0B, 0x00, 0x00, 0xC3, 0x0A, 0x00, 0x00, 0x42, 0x0E, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x0A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xDD, 0x0B, 0x00, 0x00, 0x93, 0x0A, 0x00, 0x00, 0x12, 0x0E, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x0A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xDC, 0x0B, 0x00, 0x00, 0x63, 0x0A, 0x00, 0x00, 0xE2, 0x0D, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x0A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xDB, 0x0B, 0x00, 0x00, 0x33, 0x0A, 0x00, 0x00, 0xB2, 0x0D, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x0A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xDA, 0x0B, 0x00, 0x00, 0x03, 0x0A, 0x00, 0x00, 0x82, 0x0D, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE3, 0x09, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xD9, 0x0B, 0x00, 0x00, 0xD3, 0x09, 0x00, 0x00, 0x52, 0x0D, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB3, 0x09, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xD8, 0x0B, 0x00, 0x00, 0xA3, 0x09, 0x00, 0x00, 0x30, 0x0D, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xE1, 0x0B, 0x00, 0x00, 0x6F, 0x09, 0x00, 0x00, 0x16, 0x0D, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xDE, 0x0B, 0x00, 0x00, 0x3B, 0x09, 0x00, 0x00, 0xF4, 0x0C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x09, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF1, 0x0B, 0x00, 0x00, 0x0B, 0x09, 0x00, 0x00, 0xE5, 0x0C, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF1, 0x0B, 0x00, 0x00, 0xD7, 0x08, 0x00, 0x00, 0xB1, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB7, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF2, 0x0B, 0x00, 0x00, 0xA3, 0x08, 0x00, 0x00, 0x7D, 0x0C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x53, 0x4F, 0x42, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xF8, 0xFF, 0xFF, 0x01, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4D, 0x54, 0x4F, 0x42, 0x00, 0x00, 0x00, 0x06, 0xEB, 0x07, 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, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 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, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x07, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x26, 0x01, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x01, 0xE4, 0x00, 0x00, 0x01, 0x3F, 0x80, 0x00, 0x00, 0x76, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x0F, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 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, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 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, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCD, 0xE5, 0x5D, 0xDA, 0x5E, 0x65, 0x75, 0x3B, 0xF4, 0xF7, 0x3D, 0xF4, 0x22, 0x5B, 0xE7, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x70, 0xF7, 0x66, 0xF4, 0xC8, 0x6A, 0xC0, 0x31, 0x9C, 0x09, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x65, 0x75, 0x3B, 0x6C, 0x01, 0x82, 0x35, 0xF8, 0x02, 0x01, 0x64, 0xA2, 0x01, 0xF2, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x81, 0x00, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x06, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x04, 0x00, 0x00, 0x20, 0x54, 0x58, 0x4F, 0x42, 0x00, 0x00, 0x00, 0x05, 0xBC, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x90, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x53, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x05, 0x7C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 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, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0E, 0x30, 0x0E, 0xC0, 0x00, 0x4F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x0E, 0x1F, 0x0E, 0xC8, 0x00, 0x4F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x0E, 0x1F, 0x0E, 0xD0, 0x00, 0x4F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x0E, 0x1F, 0x0E, 0xD8, 0x00, 0x4F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x0E, 0x1F, 0x0E, 0xF0, 0x00, 0x4F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x0E, 0x1F, 0x0E, 0xF8, 0x00, 0x4F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x01, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFD, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0xC3, 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, 0x01, 0x00, 0x00, 0x10, 0x53, 0x4F, 0x42, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x50, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0xD0, 0x41, 0x00, 0x00, 0x50, 0x41, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xEC, 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, 0x02, 0x00, 0x00, 0x40, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xBC, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x01, 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, 0x06, 0x14, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 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, 0x06, 0x14, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x53, 0x4F, 0x42, 0x4A, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x44, 0x49, 0x43, 0x54, 0x2C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x95, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8D, 0x01, 0x00, 0x00, 0xDC, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x20, 0x54, 0x58, 0x4F, 0x42, 0x00, 0x00, 0x00, 0x05, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x52, 0x67, 0x00, 0x00, 0x33, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x4F, 0x4D, 0x4D, 0x4F, 0x4E, 0x00, 0x43, 0x4F, 0x4D, 0x4D, 0x4F, 0x4E, 0x31, 0x00, 0x53, 0x6B, 0x65, 0x6C, 0x65, 0x74, 0x61, 0x6C, 0x41, 0x6E, 0x69, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6C, 0x69, 0x74, 0x79, 0x41, 0x6E, 0x69, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x41, 0x6E, 0x69, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x00, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x00, 0x49, 0x73, 0x56, 0x69, 0x73, 0x69, 0x62, 0x6C, 0x65, 0x00, 0x4D, 0x65, 0x73, 0x68, 0x65, 0x73, 0x5B, 0x30, 0x5D, 0x2E, 0x49, 0x73, 0x56, 0x69, 0x73, 0x69, 0x62, 0x6C, 0x65, 0x00, 0x30, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x45, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x41, 0x6D, 0x62, 0x69, 0x65, 0x6E, 0x74, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x44, 0x69, 0x66, 0x66, 0x75, 0x73, 0x65, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x53, 0x70, 0x65, 0x63, 0x75, 0x6C, 0x61, 0x72, 0x30, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x53, 0x70, 0x65, 0x63, 0x75, 0x6C, 0x61, 0x72, 0x31, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x30, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x31, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x32, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x33, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x34, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x35, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x4D, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x5B, 0x30, 0x5D, 0x2E, 0x53, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x72, 0x2E, 0x42, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x4D, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x5B, 0x30, 0x5D, 0x2E, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x46, 0x72, 0x61, 0x67, 0x6D, 0x65, 0x6E, 0x74, 0x4F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x4F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6F, 0x6F, 0x72, 0x64, 0x69, 0x6E, 0x61, 0x74, 0x6F, 0x72, 0x73, 0x5B, 0x30, 0x5D, 0x2E, 0x53, 0x63, 0x61, 0x6C, 0x65, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6F, 0x6F, 0x72, 0x64, 0x69, 0x6E, 0x61, 0x74, 0x6F, 0x72, 0x73, 0x5B, 0x30, 0x5D, 0x2E, 0x52, 0x6F, 0x74, 0x61, 0x74, 0x65, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x73, 0x5B, 0x22, 0x6D, 0x74, 0x5F, 0x62, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x22, 0x5D, 0x2E, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6F, 0x6F, 0x72, 0x64, 0x69, 0x6E, 0x61, 0x74, 0x6F, 0x72, 0x73, 0x5B, 0x30, 0x5D, 0x2E, 0x54, 0x72, 0x61, 0x6E, 0x73, 0x6C, 0x61, 0x74, 0x65, 0x00, 0x4D, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x4D, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x5B, 0x30, 0x5D, 0x2E, 0x53, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x72, 0x00, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x4D, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x5B, 0x30, 0x5D, 0x00, 0x46, 0x72, 0x61, 0x67, 0x6D, 0x65, 0x6E, 0x74, 0x4F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x4F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6F, 0x6F, 0x72, 0x64, 0x69, 0x6E, 0x61, 0x74, 0x6F, 0x72, 0x73, 0x5B, 0x30, 0x5D, 0x00, 0x00, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x4D, 0x41, 0x47, 0x88, 0x00, 0x01, 0x00, 0x00, 0x01, 0x02, 0x01, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x50, 0xC1, 0x00, 0x00, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x41, 0x00, 0x00, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xC1, 0x00, 0x00, 0xB0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x50, 0x41, 0x00, 0x00, 0xB0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 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 }; +u32 BANNER_CGFX_HEADER_LENGTH = 0x1580; #endif \ No newline at end of file diff --git a/source/lodepng.cpp b/source/lodepng/lodepng.cpp similarity index 100% rename from source/lodepng.cpp rename to source/lodepng/lodepng.cpp diff --git a/source/lodepng.h b/source/lodepng/lodepng.h similarity index 100% rename from source/lodepng.h rename to source/lodepng/lodepng.h diff --git a/source/main.cpp b/source/main.cpp index e6285e0..8bdf0fd 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -1,73 +1,22 @@ +#include "data.h" +#include "3ds/3ds.h" + #include #include #include -#include "data.h" -#include "lz11.h" -#include "types.h" -#include "lodepng.h" - -u8* convert_to_cgfx(const char* file, u32 width, u32 height, u32* size) { - unsigned char* img; - unsigned int imgWidth, imgHeight; - if(lodepng_decode32_file(&img, &imgWidth, &imgHeight, file)) { - printf("ERROR: Could not load png file.\n"); +u8* convert_to_cgfx(const char* image, u32 width, u32 height, u32* size) { + u32 convertedSize = 0; + u8* converted = image_to_tiles(image, width, height, &convertedSize); + if(converted == NULL) { return NULL; } - if(imgWidth != width || imgHeight != height) { - printf("ERROR: Image must be exactly %d x %d in size.\n", width, height); - return NULL; - } + u8* ret = (u8*) malloc(BANNER_CGFX_HEADER_LENGTH + convertedSize); + memcpy(ret, BANNER_CGFX_HEADER, BANNER_CGFX_HEADER_LENGTH); + memcpy(ret + BANNER_CGFX_HEADER_LENGTH, converted, convertedSize); - u8 converted[width * height * 2]; - u32 n = 0; - for(int y = 0; y < height; y += 8) { - for(int x = 0; x < width; x += 8) { - for(int k = 0; k < 8 * 8; k++) { - u32 xx = (u32) (TILE_ORDER[k] & 0x7); - u32 yy = (u32) (TILE_ORDER[k] >> 3); - - u8* pixel = img + (((y + yy) * width + (x + xx)) * 4); - converted[n++] = ((pixel[2] >> 4) << 4) | (pixel[3] >> 4); - converted[n++] = ((pixel[0] >> 4) << 4) | (pixel[1] >> 4); - } - } - } - - u8* ret = (u8*) malloc(CGFX_HEADER_LENGTH + (width * height * 2)); - memcpy(ret, CGFX_HEADER, CGFX_HEADER_LENGTH); - memcpy(ret + CGFX_HEADER_LENGTH, converted, width * height * 2); - - *size = CGFX_HEADER_LENGTH + (width * height * 2); - return ret; -} - -u8* make_banner(const char* file, u32* size) { - u32 originalSize = 0; - u8* cgfx = convert_to_cgfx(file, 256, 128, &originalSize); - if(!cgfx) { - return NULL; - } - - u32 compressedSize = 0; - u8* compressed = compress_lz11(cgfx, originalSize, &compressedSize); - free(cgfx); - if(!compressed) { - return NULL; - } - - u32 pad = 16 - ((BANNER_CBMD_HEADER_LENGTH + 4 + compressedSize) % 16); - u32 totalLength = BANNER_CBMD_HEADER_LENGTH + 4 + compressedSize + pad; - - u8* ret = (u8*) malloc(totalLength); - memcpy(ret, BANNER_CBMD_HEADER, BANNER_CBMD_HEADER_LENGTH); - memcpy(ret + BANNER_CBMD_HEADER_LENGTH, &totalLength, 4); - memcpy(ret + BANNER_CBMD_HEADER_LENGTH + 4, compressed, compressedSize); - memset(ret + BANNER_CBMD_HEADER_LENGTH + 4 + compressedSize, 0, pad); - - free(compressed); - *size = (u32) totalLength; + *size = BANNER_CGFX_HEADER_LENGTH + convertedSize; return ret; } @@ -91,31 +40,46 @@ u8* make_audio(const char* file, u32* size) { return data; } +int make_banner(const char* image, const char* audio, const char* output) { + u32 cgfxSize = 0; + u8* cgfx = convert_to_cgfx(image, 256, 128, &cgfxSize); + if(!cgfx) { + return 1; + } + + u32 cwavSize = 0; + u8* cwav = make_audio(audio, &cwavSize); + if(!audio) { + return 2; + } + + CBMD cbmd; + cbmd.cgfxs[CGFX_COMMON] = cgfx; + cbmd.cgfxSizes[CGFX_COMMON] = cgfxSize; + cbmd.cwav = cwav; + cbmd.cwavSize = cwavSize; + + u32 bnrSize = 0; + u8* bnr = build_bnr(cbmd, &bnrSize); + free(cgfx); + free(cwav); + + FILE* fd = fopen(output, "wb"); + if(!fd) { + printf("ERROR: Could not open output file.\n"); + return 3; + } + + fwrite(bnr, 1, bnrSize, fd); + fclose(fd); + free(bnr); + return 0; +} + int main(int argc, char* argv[]) { if(argc != 4) { printf("Usage: %s