diff --git a/CMakeLists.txt b/CMakeLists.txt index caff4c0e..4408c03e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -279,5 +279,6 @@ add_subdirectory(data) add_subdirectory(docs) add_subdirectory(examples) add_subdirectory(opl) +add_subdirectory(textscreen) add_subdirectory(Source) add_subdirectory(toolsrc) diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index c6cadff1..daff4f87 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -28,6 +28,7 @@ set(WOOF_SOURCES g_game.c g_game.h hu_lib.c hu_lib.h hu_stuff.c hu_stuff.h + i_endoom.c i_endoom.h i_glob.c i_glob.h i_main.c i_net.c i_net.h @@ -96,6 +97,8 @@ set(WOOF_SOURCES wi_stuff.c wi_stuff.h z_zone.c z_zone.h) +list(APPEND WOOF_LIBRARIES textscreen) + if(WIN32) list(APPEND WOOF_SOURCES diff --git a/Source/i_endoom.c b/Source/i_endoom.c new file mode 100644 index 00000000..fd9e4fb5 --- /dev/null +++ b/Source/i_endoom.c @@ -0,0 +1,77 @@ +// +// Copyright(C) 2005-2014 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// DESCRIPTION: +// Exit text-mode ENDOOM screen. +// + +#include +#include + +#include "config.h" +#include "doomtype.h" +#include "i_video.h" + +#include "../textscreen/txt_main.h" + +#define ENDOOM_W 80 +#define ENDOOM_H 25 + +// +// Displays the text mode ending screen after the game quits +// + +void I_Endoom(byte *endoom_data) +{ + unsigned char *screendata; + int y; + int indent; + + // Set up text mode screen + + TXT_PreInit(I_GetSDLWindow(), I_GetSDLRenderer()); + + TXT_Init(); + + // Write the data to the screen memory + + screendata = TXT_GetScreenData(); + + indent = (ENDOOM_W - TXT_SCREEN_W) / 2; + + for (y=0; y 0) + { + break; + } + + TXT_Sleep(0); + } + + // Shut down text mode screen + + TXT_Shutdown(); +} + diff --git a/Source/i_endoom.h b/Source/i_endoom.h new file mode 100644 index 00000000..8c8ff457 --- /dev/null +++ b/Source/i_endoom.h @@ -0,0 +1,29 @@ +// +// Copyright(C) 1993-1996 Id Software, Inc. +// Copyright(C) 2005-2014 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// DESCRIPTION: +// Exit text-mode ENDOOM screen. +// + + +#ifndef __I_ENDOOM__ +#define __I_ENDOOM__ + +// Display the Endoom screen on shutdown. Pass a pointer to the +// ENDOOM lump. + +void I_Endoom(byte *data); + +#endif + diff --git a/Source/i_main.c b/Source/i_main.c index cc543aca..5207594c 100644 --- a/Source/i_main.c +++ b/Source/i_main.c @@ -72,6 +72,7 @@ int main(int argc, char **argv) */ Z_Init(); // 1/18/98 killough: start up memory stuff first + atexit(SDL_Quit); atexit(I_Quit); // 2/2/98 Stan diff --git a/Source/i_system.c b/Source/i_system.c index 9b88caa6..e490e5ce 100644 --- a/Source/i_system.c +++ b/Source/i_system.c @@ -46,6 +46,7 @@ #include "w_wad.h" #include "v_video.h" #include "m_argv.h" +#include "i_endoom.h" ticcmd_t *I_BaseTiccmd(void) { @@ -147,8 +148,6 @@ void I_Shutdown(void) SDL_SetModState(oldmod); I_ShutdownJoystick(); - - SDL_Quit(); } extern int usejoystick; @@ -385,10 +384,29 @@ void I_Error(const char *error, ...) // killough 3/20/98: add const // killough 2/22/98: Add support for ENDBOOM, which is PC-specific // killough 8/1/98: change back to ENDOOM +int show_endoom; + void I_EndDoom(void) { - // haleyjd - puts("\n" PROJECT_NAME" exiting.\n"); + int lumpnum; + byte *endoom; + + // Don't show ENDOOM if we have it disabled. + + if (!show_endoom) + { + return; + } + + lumpnum = W_CheckNumForName("ENDOOM"); + if (show_endoom == 2 && W_IsIWADLump(lumpnum)) + { + return; + } + + endoom = W_CacheLumpNum(lumpnum, PU_STATIC); + + I_Endoom(endoom); } //---------------------------------------------------------------------------- diff --git a/Source/i_video.c b/Source/i_video.c index 4c598a87..73eb02ac 100644 --- a/Source/i_video.c +++ b/Source/i_video.c @@ -69,6 +69,16 @@ char *window_position; int video_display = 0; int fullscreen_width = 0, fullscreen_height = 0; // [FG] exclusive fullscreen +void *I_GetSDLWindow(void) +{ + return screen; +} + +void *I_GetSDLRenderer(void) +{ + return renderer; +} + ///////////////////////////////////////////////////////////////////////////// // // JOYSTICK // phares 4/3/98 diff --git a/Source/i_video.h b/Source/i_video.h index 563aa6ad..19b7b28b 100644 --- a/Source/i_video.h +++ b/Source/i_video.h @@ -83,6 +83,9 @@ extern int fullscreen_width, fullscreen_height; // [FG] exclusive fullscreen boolean I_WritePNGfile(char *filename); // [FG] screenshots in PNG format +void *I_GetSDLWindow(void); +void *I_GetSDLRenderer(void); + #endif //---------------------------------------------------------------------------- diff --git a/Source/m_menu.c b/Source/m_menu.c index 7cd3a2dd..b76b0c3d 100644 --- a/Source/m_menu.c +++ b/Source/m_menu.c @@ -3576,6 +3576,7 @@ enum { general_corpse, general_realtic, general_comp, + general_endoom, general_end }; @@ -3583,6 +3584,10 @@ static const char *default_compatibility_strings[] = { "Vanilla", "Boom", "MBF", "MBF21", NULL }; +static const char *default_endoom_strings[] = { + "off", "on", "PWAD only", NULL +}; + setup_menu_t gen_settings2[] = { // General Settings screen2 {"Input Devices" ,S_SKIP|S_TITLE, m_null, G_X, G_Y - 12}, @@ -3624,6 +3629,9 @@ setup_menu_t gen_settings2[] = { // General Settings screen2 {"Default compatibility", S_CHOICE|S_LEVWARN, m_null, G_X, G_Y4 + general_comp*8, {"default_complevel"}, 0, NULL, default_compatibility_strings}, + {"Show ENDOOM screen", S_CHOICE, m_null, G_X, + G_Y4 + general_endoom*8, {"show_endoom"}, 0, NULL, default_endoom_strings}, + {"<- PREV",S_SKIP|S_PREV, m_null, KB_PREV, KB_Y+20*8, {gen_settings1}}, // Final entry diff --git a/Source/m_misc.c b/Source/m_misc.c index 2d7add8b..27cc26e9 100644 --- a/Source/m_misc.c +++ b/Source/m_misc.c @@ -88,6 +88,7 @@ extern boolean flipcorpses; // [crispy] randomly flip corpse, blood and death an extern boolean ghost_monsters; // [crispy] resurrected pools of gore ("ghost monsters") are translucent extern int cfg_mouse_acceleration; extern int mouse_threshold; +extern int show_endoom; extern char *chat_macros[], *wad_files[], *deh_files[]; // killough 10/98 @@ -167,6 +168,13 @@ default_t defaults[] = { "1 to enable flashing icon during disk IO" }, + { + "show_endoom", + (config_t *) &show_endoom, NULL, + {0}, {0,2}, number, ss_gen, wad_no, + "show ENDOOM 0=off, 1=on, 2=PWAD only" + }, + { // killough 2/21/98 "pitched_sounds", (config_t *) &pitched_sounds, NULL, diff --git a/textscreen/CMakeLists.txt b/textscreen/CMakeLists.txt new file mode 100644 index 00000000..16953f16 --- /dev/null +++ b/textscreen/CMakeLists.txt @@ -0,0 +1,14 @@ +include(WoofSettings) + +add_library(textscreen STATIC + textscreen.h + txt_main.h + txt_sdl.c txt_sdl.h + txt_utf8.c txt_utf8.h) + +target_woof_settings(textscreen) + +target_include_directories(textscreen + INTERFACE "." + PRIVATE "../Source/") +target_link_libraries(textscreen SDL2::SDL2) diff --git a/textscreen/doomkeys.h b/textscreen/doomkeys.h new file mode 100644 index 00000000..42b17293 --- /dev/null +++ b/textscreen/doomkeys.h @@ -0,0 +1,154 @@ +// +// Copyright(C) 1993-1996 Id Software, Inc. +// Copyright(C) 2005-2014 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// DESCRIPTION: +// Key definitions +// + +#ifndef __DOOMKEYS__ +#define __DOOMKEYS__ + +// +// DOOM keyboard definition. +// This is the stuff configured by Setup.Exe. +// Most key data are simple ascii (uppercased). +// +#define KEY_RIGHTARROW 0xae +#define KEY_LEFTARROW 0xac +#define KEY_UPARROW 0xad +#define KEY_DOWNARROW 0xaf +#define KEY_ESCAPE 27 +#define KEY_ENTER 13 +#define KEY_TAB 9 +#define KEY_F1 (0x80+0x3b) +#define KEY_F2 (0x80+0x3c) +#define KEY_F3 (0x80+0x3d) +#define KEY_F4 (0x80+0x3e) +#define KEY_F5 (0x80+0x3f) +#define KEY_F6 (0x80+0x40) +#define KEY_F7 (0x80+0x41) +#define KEY_F8 (0x80+0x42) +#define KEY_F9 (0x80+0x43) +#define KEY_F10 (0x80+0x44) +#define KEY_F11 (0x80+0x57) +#define KEY_F12 (0x80+0x58) + +#define KEY_BACKSPACE 0x7f +#define KEY_PAUSE 0xff + +#define KEY_EQUALS 0x3d +#define KEY_MINUS 0x2d + +#define KEY_RSHIFT (0x80+0x36) +#define KEY_RCTRL (0x80+0x1d) +#define KEY_RALT (0x80+0x38) + +#define KEY_LALT KEY_RALT + +// new keys: + +#define KEY_CAPSLOCK (0x80+0x3a) +#define KEY_NUMLOCK (0x80+0x45) +#define KEY_SCRLCK (0x80+0x46) +#define KEY_PRTSCR (0x80+0x59) + +#define KEY_HOME (0x80+0x47) +#define KEY_END (0x80+0x4f) +#define KEY_PGUP (0x80+0x49) +#define KEY_PGDN (0x80+0x51) +#define KEY_INS (0x80+0x52) +#define KEY_DEL (0x80+0x53) + +#define KEYP_0 KEY_INS +#define KEYP_1 KEY_END +#define KEYP_2 KEY_DOWNARROW +#define KEYP_3 KEY_PGDN +#define KEYP_4 KEY_LEFTARROW +#define KEYP_5 (0x80+0x4c) +#define KEYP_6 KEY_RIGHTARROW +#define KEYP_7 KEY_HOME +#define KEYP_8 KEY_UPARROW +#define KEYP_9 KEY_PGUP + +#define KEYP_DIVIDE '/' +#define KEYP_PLUS '+' +#define KEYP_MINUS '-' +#define KEYP_MULTIPLY '*' +#define KEYP_PERIOD 0 +#define KEYP_EQUALS KEY_EQUALS +#define KEYP_ENTER KEY_ENTER + +#define SCANCODE_TO_KEYS_ARRAY { \ + 0, 0, 0, 0, 'a', /* 0-9 */ \ + 'b', 'c', 'd', 'e', 'f', \ + 'g', 'h', 'i', 'j', 'k', /* 10-19 */ \ + 'l', 'm', 'n', 'o', 'p', \ + 'q', 'r', 's', 't', 'u', /* 20-29 */ \ + 'v', 'w', 'x', 'y', 'z', \ + '1', '2', '3', '4', '5', /* 30-39 */ \ + '6', '7', '8', '9', '0', \ + KEY_ENTER, KEY_ESCAPE, KEY_BACKSPACE, KEY_TAB, ' ', /* 40-49 */ \ + KEY_MINUS, KEY_EQUALS, '[', ']', '\\', \ + 0, ';', '\'', '`', ',', /* 50-59 */ \ + '.', '/', KEY_CAPSLOCK, KEY_F1, KEY_F2, \ + KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, /* 60-69 */ \ + KEY_F8, KEY_F9, KEY_F10, KEY_F11, KEY_F12, \ + KEY_PRTSCR, KEY_SCRLCK, KEY_PAUSE, KEY_INS, KEY_HOME, /* 70-79 */ \ + KEY_PGUP, KEY_DEL, KEY_END, KEY_PGDN, KEY_RIGHTARROW, \ + KEY_LEFTARROW, KEY_DOWNARROW, KEY_UPARROW, /* 80-89 */ \ + KEY_NUMLOCK, KEYP_DIVIDE, \ + KEYP_MULTIPLY, KEYP_MINUS, KEYP_PLUS, KEYP_ENTER, KEYP_1, \ + KEYP_2, KEYP_3, KEYP_4, KEYP_5, KEYP_6, /* 90-99 */ \ + KEYP_7, KEYP_8, KEYP_9, KEYP_0, KEYP_PERIOD, \ + 0, 0, 0, KEYP_EQUALS, /* 100-103 */ \ +} + +// Default names for keys, to use in English or as fallback. +#define KEY_NAMES_ARRAY { \ + { KEY_BACKSPACE, "BACKSP" }, { KEY_TAB, "TAB" }, \ + { KEY_INS, "INS" }, { KEY_DEL, "DEL" }, \ + { KEY_PGUP, "PGUP" }, { KEY_PGDN, "PGDN" }, \ + { KEY_ENTER, "ENTER" }, { KEY_ESCAPE, "ESC" }, \ + { KEY_F1, "F1" }, { KEY_F2, "F2" }, \ + { KEY_F3, "F3" }, { KEY_F4, "F4" }, \ + { KEY_F5, "F5" }, { KEY_F6, "F6" }, \ + { KEY_F7, "F7" }, { KEY_F8, "F8" }, \ + { KEY_F9, "F9" }, { KEY_F10, "F10" }, \ + { KEY_F11, "F11" }, { KEY_F12, "F12" }, \ + { KEY_HOME, "HOME" }, { KEY_END, "END" }, \ + { KEY_MINUS, "-" }, { KEY_EQUALS, "=" }, \ + { KEY_NUMLOCK, "NUMLCK" }, { KEY_SCRLCK, "SCRLCK" }, \ + { KEY_PAUSE, "PAUSE" }, { KEY_PRTSCR, "PRTSC" }, \ + { KEY_UPARROW, "UP" }, { KEY_DOWNARROW, "DOWN" }, \ + { KEY_LEFTARROW, "LEFT" }, { KEY_RIGHTARROW, "RIGHT" }, \ + { KEY_RALT, "ALT" }, { KEY_LALT, "ALT" }, \ + { KEY_RSHIFT, "SHIFT" }, { KEY_CAPSLOCK, "CAPS" }, \ + { KEY_RCTRL, "CTRL" }, { KEYP_5, "NUM5" }, \ + { ' ', "SPACE" }, \ + { 'a', "A" }, { 'b', "B" }, { 'c', "C" }, { 'd', "D" }, \ + { 'e', "E" }, { 'f', "F" }, { 'g', "G" }, { 'h', "H" }, \ + { 'i', "I" }, { 'j', "J" }, { 'k', "K" }, { 'l', "L" }, \ + { 'm', "M" }, { 'n', "N" }, { 'o', "O" }, { 'p', "P" }, \ + { 'q', "Q" }, { 'r', "R" }, { 's', "S" }, { 't', "T" }, \ + { 'u', "U" }, { 'v', "V" }, { 'w', "W" }, { 'x', "X" }, \ + { 'y', "Y" }, { 'z', "Z" }, { '0', "0" }, { '1', "1" }, \ + { '2', "2" }, { '3', "3" }, { '4', "4" }, { '5', "5" }, \ + { '6', "6" }, { '7', "7" }, { '8', "8" }, { '9', "9" }, \ + { '[', "[" }, { ']', "]" }, { ';', ";" }, { '`', "`" }, \ + { ',', "," }, { '.', "." }, { '/', "/" }, { '\\', "\\" }, \ + { '\'', "\'" }, \ +} + +#endif // __DOOMKEYS__ + diff --git a/textscreen/fonts/README b/textscreen/fonts/README new file mode 100644 index 00000000..a9b9b1b2 --- /dev/null +++ b/textscreen/fonts/README @@ -0,0 +1,38 @@ + +This directory contains the fonts used by libtextscreen: + + * normal.png is the standard DOS font, from the DOSbox project. + Copyright (C) 2002-2004 The DOSBox Team + + * small.png contains a miniature, half-size font for low-resolution + displays. This is based on the Atari-Small font by Tom Fine. The + original font was standard ASCII only; this has been extended to the + full Extended ASCII range with scaled-down versions of the full-size + DOS font. Original copyright notice: + + Copyright (c) 1999, Thomas A. Fine + + License to copy, modify, and distribute for both commercial and + non-commercial use is herby granted, provided this notice + is preserved. + + Email to my last name at head.cfa.harvard.edu + http://hea-www.harvard.edu/~fine/ + + * large.png is a scaled-up version of normal.png with extra detail + added; this is for use on modern high-resolution ("retina") displays. + +All modifications and enhancements to the above fonts are: + + Copyright (C) 2005-2016 Simon Howard + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + diff --git a/textscreen/fonts/codepage.h b/textscreen/fonts/codepage.h new file mode 100644 index 00000000..66614932 --- /dev/null +++ b/textscreen/fonts/codepage.h @@ -0,0 +1,113 @@ +// +// Copyright(C) 2017 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// + +// This file contains a #define macro mapping from the characters +// in the CP437 code page to the equivalent Unicode characters. It +// therefore defines which Unicode characters can be represented on +// a text screen using such a code page. +// +// If you're changing the textscreen font to show a different code +// page, you should update the mapping in this file to match. The +// Wikipedia pages for DOS code pages are a good place to look for +// this information. + +#define CODE_PAGE_TO_UNICODE { \ + \ + /* CP437 control codes: */ \ + \ + 0x0000, 0x263a, 0x263b, 0x2665, /* 00 - 0f */ \ + 0x2666, 0x2663, 0x2660, 0x2022, \ + 0x25d8, 0x25cb, 0x25d9, 0x2642, \ + 0x2640, 0x266a, 0x266b, 0x263c, \ + \ + 0x25ba, 0x25c4, 0x2195, 0x203c, /* 10 - 1f */ \ + 0x00b6, 0x00a7, 0x25ac, 0x21a8, \ + 0x2191, 0x2193, 0x2192, 0x2190, \ + 0x221f, 0x2194, 0x25b2, 0x25bc, \ + \ + /* Standard ASCII range: */ \ + \ + 0x0020, 0x0021, 0x0022, 0x0023, /* 20 - 2f */ \ + 0x0024, 0x0025, 0x0026, 0x0027, \ + 0x0028, 0x0029, 0x002a, 0x002b, \ + 0x002c, 0x002d, 0x002e, 0x002f, \ + \ + 0x0030, 0x0031, 0x0032, 0x0033, /* 30 - 3f */ \ + 0x0034, 0x0035, 0x0036, 0x0037, \ + 0x0038, 0x0039, 0x003a, 0x003b, \ + 0x003c, 0x003d, 0x003e, 0x003f, \ + \ + 0x0040, 0x0041, 0x0042, 0x0043, /* 40 - 4f */ \ + 0x0044, 0x0045, 0x0046, 0x0047, \ + 0x0048, 0x0049, 0x004a, 0x004b, \ + 0x004c, 0x004d, 0x004e, 0x004f, \ + \ + 0x0050, 0x0051, 0x0052, 0x0053, /* 50 - 5f */ \ + 0x0054, 0x0055, 0x0056, 0x0057, \ + 0x0058, 0x0059, 0x005a, 0x005b, \ + 0x005c, 0x005d, 0x005e, 0x005f, \ + \ + 0x0060, 0x0061, 0x0062, 0x0063, /* 60 - 6f */ \ + 0x0064, 0x0065, 0x0066, 0x0067, \ + 0x0068, 0x0069, 0x006a, 0x006b, \ + 0x006c, 0x006d, 0x006e, 0x006f, \ + \ + 0x0070, 0x0071, 0x0072, 0x0073, /* 70 - 7f */ \ + 0x0074, 0x0075, 0x0076, 0x0077, \ + 0x0078, 0x0079, 0x007a, 0x007b, \ + 0x007c, 0x007d, 0x007e, 0x2302, \ + \ + /* CP437 Extended ASCII range: */ \ + \ + 0x00c7, 0x00fc, 0x00e9, 0x00e2, /* 80-8f */ \ + 0x00e4, 0x00e0, 0x00e5, 0x00e7, \ + 0x00ea, 0x00eb, 0x00e8, 0x00ef, \ + 0x00ee, 0x00ec, 0x00c4, 0x00c5, \ + \ + 0x00c9, 0x00e6, 0x00c6, 0x00f4, /* 90-9f */ \ + 0x00f6, 0x00f2, 0x00fb, 0x00f9, \ + 0x00ff, 0x00d6, 0x00dc, 0x00a2, \ + 0x00a3, 0x00a5, 0x20a7, 0x0192, \ + \ + 0x00e1, 0x00ed, 0x00f3, 0x00fa, /* a0-af */ \ + 0x00f1, 0x00d1, 0x00aa, 0x00ba, \ + 0x00bf, 0x2310, 0x00ac, 0x00bd, \ + 0x00bc, 0x00a1, 0x00ab, 0x00bb, \ + \ + 0x2591, 0x2592, 0x2593, 0x2502, /* b0-bf */ \ + 0x2524, 0x2561, 0x2562, 0x2556, \ + 0x2555, 0x2563, 0x2551, 0x2557, \ + 0x255d, 0x255c, 0x255b, 0x2510, \ + \ + 0x2514, 0x2534, 0x252c, 0x251c, /* c0-cf */ \ + 0x2500, 0x253c, 0x255e, 0x255f, \ + 0x255a, 0x2554, 0x2569, 0x2566, \ + 0x2560, 0x2550, 0x256c, 0x2567, \ + \ + 0x2568, 0x2564, 0x2565, 0x2559, /* d0-df */ \ + 0x2558, 0x2552, 0x2553, 0x256b, \ + 0x256a, 0x2518, 0x250c, 0x2588, \ + 0x2584, 0x258c, 0x2590, 0x2580, \ + \ + 0x03b1, 0x00df, 0x0393, 0x03c0, /* e0-ef */ \ + 0x03a3, 0x03c3, 0x00b5, 0x03c4, \ + 0x03a6, 0x0398, 0x03a9, 0x03b4, \ + 0x221e, 0x03c6, 0x03b5, 0x2229, \ + \ + 0x2261, 0x00b1, 0x2265, 0x2264, /* f0-ff */ \ + 0x2320, 0x2321, 0x00f7, 0x2248, \ + 0x00b0, 0x2219, 0x00b7, 0x221a, \ + 0x207f, 0x00b2, 0x25a0, 0x00a0, \ +} + diff --git a/textscreen/fonts/convert-font b/textscreen/fonts/convert-font new file mode 100644 index 00000000..b3d828cc --- /dev/null +++ b/textscreen/fonts/convert-font @@ -0,0 +1,104 @@ +#!/usr/bin/env python3 +# +# Copyright(C) 2016 Simon Howard +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# +# Converts images into libtextscreen fonts. +# + +import sys +import os +import re + +GRID_COLUMNS = 16 +GRID_ROWS = 16 + +try: + import Image +except ImportError: + try: + from PIL import Image + except ImportError: + print("WARNING: Could not update %s. " + "Please install the Python Imaging library or Pillow." + % sys.argv[3]) + sys.exit(0) + + +def generate_font_data(filename): + """Read font data from the given file. + + Args: + filename: Image file to read. + Returns: + Tuple containing: + (width, height) dimensions of each font character. + Array of byte data for font. + """ + im = Image.open(filename) + width, height = im.size + assert (width % GRID_COLUMNS) == 0 + assert (height % GRID_ROWS) == 0 + + char_w, char_h = width // GRID_COLUMNS, height // GRID_ROWS + font_data_len = (width * height) // 8 + font_data = [0] * font_data_len + + for y in range(height): + for x in range(width): + px = im.getpixel((x, y)) + if px > (127, 127, 127): + char_x, char_y = x // char_w, y // char_h + x1, y1 = x % char_w, y % char_h + bit_index = ( + (char_y * GRID_COLUMNS + char_x) * (char_w * char_h) + + (y1 * char_w) + x1) + font_data[bit_index // 8] |= 1 << (bit_index % 8) + + return (char_w, char_h), font_data + +def convert_image(font_prefix, filename, output_filename): + """Convert the given image to a text output file. + + Args: + font_prefix: Prefix string to attach to constants. + filename: Input image file to read. + output_filename: Header file to write. + """ + dimensions, data = generate_font_data(filename) + + with open(output_filename, "w") as outfile: + outfile.write("/* Font data generated from %s; do not edit.\n" + " Please see textscreen/fonts/README for copyright\n" + " information. */\n\n" % filename) + outfile.write("static const uint8_t %s_font_data[] =\n{\n" % + font_prefix) + for index, b in enumerate(data): + if (index % 8) == 0: + outfile.write(" ") + outfile.write("0x%02x," % b) + if ((index + 1) % 8) == 0: + outfile.write("\n") + else: + outfile.write(" ") + outfile.write("};\n") + + outfile.write("\n") + outfile.write("static const txt_font_t %s_font =\n{\n" % font_prefix) + outfile.write(" \"%s\", %s_font_data, %d, %d,\n" % ( + font_prefix, font_prefix, + dimensions[0], dimensions[1])) + outfile.write("};\n") + +convert_image(sys.argv[1], sys.argv[2], sys.argv[3]) + diff --git a/textscreen/fonts/large.h b/textscreen/fonts/large.h new file mode 100644 index 00000000..5dac05ed --- /dev/null +++ b/textscreen/fonts/large.h @@ -0,0 +1,2060 @@ +/* Font data generated from large.png; do not edit. + Please see textscreen/fonts/README for copyright + information. */ + +static const uint8_t large_font_data[] = +{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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, 0x3f, 0xfe, 0x7f, 0x07, 0xe0, 0x03, 0xc0, + 0x33, 0xcc, 0x33, 0xcc, 0x03, 0xc0, 0x03, 0xc0, + 0x03, 0xc0, 0x03, 0xc0, 0xf3, 0xcf, 0xf3, 0xcf, + 0xe3, 0xc7, 0xc3, 0xc3, 0x03, 0xc0, 0x03, 0xc0, + 0x03, 0xc0, 0x07, 0xe0, 0xfe, 0x7f, 0xfc, 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, + 0xfc, 0x3f, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, + 0xcf, 0xf3, 0xcf, 0xf3, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0x0f, 0xf0, + 0x1f, 0xf8, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xfc, 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, + 0x1c, 0x0e, 0x3e, 0x1f, 0xff, 0x3f, 0xff, 0x3f, + 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3f, 0xfe, 0x1f, + 0xfe, 0x1f, 0xfc, 0x0f, 0xfc, 0x0f, 0xf8, 0x07, + 0xf0, 0x03, 0xe0, 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, + 0xc0, 0x00, 0xe0, 0x01, 0xf0, 0x03, 0xf8, 0x07, + 0xfc, 0x0f, 0xfe, 0x1f, 0xff, 0x3f, 0xff, 0x3f, + 0xfe, 0x1f, 0xfc, 0x0f, 0xf8, 0x07, 0xf0, 0x03, + 0xe0, 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, 0xc0, 0x03, 0xe0, 0x07, + 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, + 0x3e, 0x7c, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, + 0x3f, 0xfc, 0x3e, 0x7c, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xe0, 0x07, 0xf0, 0x0f, 0xf0, 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, 0xc0, 0x03, 0xe0, 0x07, + 0xf0, 0x0f, 0xf8, 0x1f, 0xfc, 0x3f, 0xfe, 0x7f, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0x7f, 0xdc, 0x3b, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xe0, 0x07, 0xf0, 0x0f, 0xf0, 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, + 0xc0, 0x03, 0xe0, 0x07, 0xf0, 0x0f, 0xf0, 0x0f, + 0xf0, 0x0f, 0xf0, 0x0f, 0xe0, 0x07, 0xc0, 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, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x3f, 0xfc, 0x1f, 0xf8, 0x0f, 0xf0, 0x0f, 0xf0, + 0x0f, 0xf0, 0x0f, 0xf0, 0x1f, 0xf8, 0x3f, 0xfc, + 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0xf8, 0x1f, + 0x3c, 0x3c, 0x1c, 0x38, 0x0c, 0x30, 0x0c, 0x30, + 0x0c, 0x30, 0x0c, 0x30, 0x1c, 0x38, 0x3c, 0x3c, + 0xf8, 0x1f, 0xf0, 0x0f, 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, + 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0x07, 0xe0, + 0xc3, 0xc3, 0xe3, 0xc7, 0xf3, 0xcf, 0xf3, 0xcf, + 0xf3, 0xcf, 0xf3, 0xcf, 0xe3, 0xc7, 0xc3, 0xc3, + 0x07, 0xe0, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x3f, 0xc0, 0x3f, 0x00, 0x3f, 0x00, 0x3f, + 0x80, 0x37, 0xc0, 0x33, 0xe0, 0x31, 0xf0, 0x30, + 0xfc, 0x03, 0xfe, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0xfe, 0x07, 0xfc, 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, + 0xf0, 0x0f, 0xf8, 0x1f, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0xf8, 0x1f, 0xf0, 0x0f, + 0xc0, 0x03, 0xc0, 0x03, 0xfc, 0x3f, 0xfc, 0x3f, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 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, + 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, + 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0x00, 0xf0, 0x00, + 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, + 0xf0, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xfe, 0x00, + 0xff, 0x00, 0xff, 0x00, 0x7f, 0x00, 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, + 0xfc, 0xff, 0xfc, 0xff, 0x3c, 0xf0, 0x3c, 0xf0, + 0xfc, 0xff, 0xfc, 0xff, 0x3c, 0xf0, 0x3c, 0xf0, + 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, + 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf8, 0x3c, 0xfc, + 0x3e, 0xfc, 0x3f, 0xfc, 0x3f, 0x7c, 0x3f, 0x38, + 0x1f, 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, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc3, 0xc3, 0xcf, 0xf3, + 0xfc, 0x3f, 0xf0, 0x0f, 0x3f, 0xfc, 0x3f, 0xfc, + 0xf0, 0x0f, 0xfc, 0x3f, 0xcf, 0xf3, 0xc3, 0xc3, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, + 0x07, 0x00, 0x0f, 0x00, 0x1f, 0x00, 0x3f, 0x00, + 0x7f, 0x00, 0xff, 0x00, 0xff, 0x01, 0xff, 0x03, + 0xff, 0x07, 0xff, 0x07, 0xff, 0x03, 0xff, 0x01, + 0xff, 0x00, 0x7f, 0x00, 0x3f, 0x00, 0x1f, 0x00, + 0x0f, 0x00, 0x07, 0x00, 0x03, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, + 0x00, 0x38, 0x00, 0x3c, 0x00, 0x3e, 0x00, 0x3f, + 0x80, 0x3f, 0xc0, 0x3f, 0xe0, 0x3f, 0xf0, 0x3f, + 0xf8, 0x3f, 0xf8, 0x3f, 0xf0, 0x3f, 0xe0, 0x3f, + 0xc0, 0x3f, 0x80, 0x3f, 0x00, 0x3f, 0x00, 0x3e, + 0x00, 0x3c, 0x00, 0x38, 0x00, 0x30, 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, + 0x80, 0x01, 0xc0, 0x03, 0xe0, 0x07, 0xf0, 0x0f, + 0xf8, 0x1f, 0xfc, 0x3f, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xfc, 0x3f, 0xf8, 0x1f, 0xf0, 0x0f, 0xe0, 0x07, + 0xc0, 0x03, 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, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x18, 0x3c, 0x3c, 0x3c, 0x3c, 0x18, 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, + 0xfc, 0xff, 0xfe, 0xff, 0xc7, 0xf3, 0xc7, 0xf3, + 0xc7, 0xf3, 0xc7, 0xf3, 0xc7, 0xf3, 0xc7, 0xf3, + 0xfe, 0xf3, 0xfc, 0xf3, 0xc0, 0xf3, 0xc0, 0xf3, + 0xc0, 0xf3, 0xc0, 0xf3, 0xc0, 0xf3, 0xc0, 0xf3, + 0xc0, 0xf3, 0xc0, 0xf3, 0xc0, 0xf3, 0xc0, 0xf3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x0f, 0xfe, 0x1f, + 0x0f, 0x3c, 0x0f, 0x38, 0x3e, 0x00, 0xfc, 0x00, + 0xf8, 0x03, 0xf0, 0x07, 0x38, 0x0f, 0x1c, 0x1e, + 0x0e, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x1c, + 0x1e, 0x0e, 0x3c, 0x07, 0xf8, 0x03, 0xf0, 0x03, + 0xc0, 0x0f, 0x00, 0x1f, 0x07, 0x3e, 0x0f, 0x3c, + 0xfe, 0x1f, 0xfc, 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, + 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3f, + 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3f, 0xff, 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, + 0x80, 0x01, 0xc0, 0x03, 0xe0, 0x07, 0xf0, 0x0f, + 0xf8, 0x1f, 0xfc, 0x3f, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xfc, 0x3f, 0xf8, 0x1f, 0xf0, 0x0f, 0xe0, 0x07, + 0xc0, 0x03, 0x80, 0x01, 0xfc, 0x3f, 0xfc, 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, + 0x80, 0x01, 0xc0, 0x03, 0xe0, 0x07, 0xf0, 0x0f, + 0xf8, 0x1f, 0xfc, 0x3f, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 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, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xfc, 0x3f, 0xf8, 0x1f, + 0xf0, 0x0f, 0xe0, 0x07, 0xc0, 0x03, 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, 0x00, 0x00, 0xc0, 0x01, 0x80, 0x03, + 0x00, 0x07, 0x00, 0x0e, 0xff, 0x1f, 0xff, 0x1f, + 0x00, 0x0e, 0x00, 0x07, 0x80, 0x03, 0xc0, 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, 0xe0, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x1c, 0x00, 0xfe, 0x3f, 0xfe, 0x3f, + 0x1c, 0x00, 0x38, 0x00, 0x70, 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, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x3f, 0xff, 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, 0x20, 0x04, 0x30, 0x0c, + 0x38, 0x1c, 0x3c, 0x3c, 0xfe, 0x7f, 0xfe, 0x7f, + 0x3c, 0x3c, 0x38, 0x1c, 0x30, 0x0c, 0x20, 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, + 0xc0, 0x00, 0xc0, 0x00, 0xe0, 0x01, 0xe0, 0x01, + 0xf0, 0x03, 0xf0, 0x03, 0xf8, 0x07, 0xf8, 0x07, + 0xfc, 0x0f, 0xfc, 0x0f, 0xfe, 0x1f, 0xfe, 0x1f, + 0xff, 0x3f, 0xff, 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, + 0xff, 0x3f, 0xff, 0x3f, 0xfe, 0x1f, 0xfe, 0x1f, + 0xfc, 0x0f, 0xfc, 0x0f, 0xf8, 0x07, 0xf8, 0x07, + 0xf0, 0x03, 0xf0, 0x03, 0xe0, 0x01, 0xe0, 0x01, + 0xc0, 0x00, 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, + 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, 0x03, 0xe0, 0x07, 0xf0, 0x0f, 0xf0, 0x0f, + 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, + 0xe0, 0x07, 0xe0, 0x07, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x38, 0x1c, 0x30, 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, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x07, 0x38, 0x07, + 0x38, 0x07, 0x38, 0x07, 0xff, 0x3f, 0xff, 0x3f, + 0x38, 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x07, + 0x38, 0x07, 0x38, 0x07, 0xff, 0x3f, 0xff, 0x3f, + 0x38, 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xfc, 0x0f, 0xfe, 0x1f, 0x0f, 0x3c, 0x0f, 0x38, + 0x0f, 0x30, 0x0f, 0x30, 0x0f, 0x00, 0x0f, 0x00, + 0xfe, 0x0f, 0xfc, 0x1f, 0x00, 0x3c, 0x00, 0x3c, + 0x00, 0x3c, 0x00, 0x3c, 0x03, 0x3c, 0x03, 0x3c, + 0x07, 0x3c, 0x0f, 0x3c, 0xfe, 0x1f, 0xfc, 0x0f, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 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, + 0x06, 0x30, 0x0f, 0x38, 0x0f, 0x3c, 0x06, 0x1e, + 0x00, 0x0f, 0x80, 0x07, 0xc0, 0x03, 0xe0, 0x01, + 0xf0, 0x00, 0x78, 0x00, 0x3c, 0x00, 0x1e, 0x00, + 0x0f, 0x18, 0x07, 0x3c, 0x03, 0x3c, 0x01, 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, + 0xf0, 0x03, 0xf8, 0x07, 0x3c, 0x0f, 0x3c, 0x0f, + 0x3c, 0x0f, 0x38, 0x07, 0xf0, 0x03, 0xf0, 0x03, + 0xfc, 0x30, 0xfe, 0x38, 0xcf, 0x1f, 0xcf, 0x1f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x8f, 0x0f, 0xfe, 0x3f, 0xfc, 0x1c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0xf0, 0x00, + 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, + 0x78, 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, 0x0f, 0x80, 0x0f, 0xc0, 0x03, 0xe0, 0x01, + 0xe0, 0x00, 0xe0, 0x00, 0xf0, 0x00, 0xf0, 0x00, + 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, + 0xf0, 0x00, 0xf0, 0x00, 0xe0, 0x00, 0xe0, 0x00, + 0xe0, 0x01, 0xc0, 0x03, 0x80, 0x0f, 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, + 0xf0, 0x00, 0xf0, 0x01, 0xc0, 0x03, 0x80, 0x07, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x0f, + 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, + 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x07, + 0x80, 0x07, 0xc0, 0x03, 0xf0, 0x01, 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, 0x1c, 0x38, 0x3c, 0x3c, 0x78, 0x1e, + 0xf0, 0x0f, 0xf0, 0x0f, 0xff, 0xff, 0xff, 0xff, + 0xf0, 0x0f, 0xf0, 0x0f, 0x78, 0x1e, 0x3c, 0x3c, + 0x1c, 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, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xfc, 0x3f, 0xfc, 0x3f, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 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, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xe0, 0x01, 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, 0xff, 0x3f, 0xff, 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, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 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, 0x20, 0x00, 0x30, 0x00, 0x38, 0x00, 0x3c, + 0x00, 0x1e, 0x00, 0x0f, 0x80, 0x07, 0xc0, 0x03, + 0xe0, 0x01, 0xf0, 0x00, 0x78, 0x00, 0x3c, 0x00, + 0x1e, 0x00, 0x0f, 0x00, 0x07, 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, + 0xf0, 0x0f, 0xf8, 0x1f, 0x3c, 0x3c, 0x1e, 0x78, + 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, + 0x8f, 0xf1, 0xcf, 0xf3, 0xcf, 0xf3, 0x8f, 0xf1, + 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, + 0x1e, 0x78, 0x3c, 0x3c, 0xf8, 0x1f, 0xf0, 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, + 0x80, 0x03, 0xc0, 0x03, 0xe0, 0x03, 0xf0, 0x03, + 0xf8, 0x03, 0xfc, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xfc, 0x3f, 0xfc, 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, + 0xf0, 0x07, 0xfc, 0x0f, 0x0e, 0x1c, 0x07, 0x3c, + 0x00, 0x3c, 0x00, 0x1e, 0x00, 0x0f, 0x80, 0x07, + 0xc0, 0x03, 0xe0, 0x01, 0xf0, 0x00, 0x78, 0x00, + 0x3c, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x0e, 0x00, + 0x0f, 0x30, 0x0f, 0x3c, 0xff, 0x3f, 0xff, 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, + 0xfc, 0x0f, 0xfe, 0x1f, 0x1f, 0x3e, 0x0f, 0x3c, + 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, + 0xf0, 0x0f, 0xf0, 0x0f, 0x00, 0x3c, 0x00, 0x3c, + 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, + 0x0f, 0x3c, 0x1f, 0x3e, 0xfe, 0x1f, 0xfc, 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, 0x0e, 0x00, 0x0f, 0x80, 0x0f, 0xc0, 0x0f, + 0xe0, 0x0f, 0xf0, 0x0f, 0x78, 0x0f, 0x3c, 0x0f, + 0x1e, 0x0f, 0x0f, 0x0f, 0xff, 0x3f, 0xff, 0x3f, + 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, + 0x00, 0x0f, 0x00, 0x0f, 0xc0, 0x3f, 0xc0, 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, + 0xff, 0x3f, 0xff, 0x3f, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0xff, 0x0f, 0xff, 0x1f, 0x00, 0x3c, 0x00, 0x3c, + 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0xfe, 0x1f, 0xfc, 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, + 0xf0, 0x03, 0xf8, 0x03, 0x3c, 0x00, 0x1e, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0xff, 0x0f, 0xff, 0x1f, 0x1f, 0x3e, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x1f, 0x3e, 0xfe, 0x1f, 0xfc, 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, + 0xff, 0x3f, 0xff, 0x3f, 0x0f, 0x3c, 0x0f, 0x3c, + 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, + 0x00, 0x1e, 0x00, 0x0f, 0x80, 0x07, 0xc0, 0x03, + 0xe0, 0x01, 0xe0, 0x01, 0xf0, 0x00, 0xf0, 0x00, + 0xf0, 0x00, 0xf0, 0x00, 0xf0, 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, + 0xfc, 0x0f, 0xfe, 0x1f, 0x1f, 0x3e, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x1e, 0x1e, + 0xfc, 0x0f, 0xfc, 0x0f, 0x1e, 0x1e, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x1f, 0x3e, 0xfe, 0x1f, 0xfc, 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, + 0xfc, 0x0f, 0xfe, 0x1f, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0xfe, 0x3f, 0xfc, 0x3f, 0x00, 0x3c, 0x00, 0x3c, + 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, + 0x00, 0x1e, 0x00, 0x0f, 0xfc, 0x07, 0xfc, 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, + 0x80, 0x01, 0xc0, 0x03, 0xc0, 0x03, 0x80, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xc0, 0x03, + 0xc0, 0x03, 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, 0x00, 0x00, + 0x80, 0x01, 0xc0, 0x03, 0xc0, 0x03, 0x80, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xe0, 0x01, 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, 0x3c, 0x00, 0x1e, + 0x00, 0x0f, 0x80, 0x07, 0xc0, 0x03, 0xe0, 0x01, + 0xf0, 0x00, 0x78, 0x00, 0x3c, 0x00, 0x3c, 0x00, + 0x78, 0x00, 0xf0, 0x00, 0xe0, 0x01, 0xc0, 0x03, + 0x80, 0x07, 0x00, 0x0f, 0x00, 0x1e, 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, 0xfc, 0x3f, 0xfc, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0x3f, 0xfc, 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, 0x3c, 0x00, 0x78, 0x00, + 0xf0, 0x00, 0xe0, 0x01, 0xc0, 0x03, 0x80, 0x07, + 0x00, 0x0f, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x3c, + 0x00, 0x1e, 0x00, 0x0f, 0x80, 0x07, 0xc0, 0x03, + 0xe0, 0x01, 0xf0, 0x00, 0x78, 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, + 0xfc, 0x0f, 0xfe, 0x1f, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3e, 0x00, 0x1f, 0x80, 0x0f, + 0xc0, 0x07, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 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, 0xfc, 0x0f, 0xfe, 0x1f, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x8f, 0x3f, 0xcf, 0x3f, 0xcf, 0x3f, 0xcf, 0x3f, + 0xcf, 0x3f, 0xcf, 0x3f, 0xcf, 0x1f, 0x8f, 0x0f, + 0x0f, 0x00, 0x0f, 0x00, 0xfe, 0x0f, 0xfc, 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, + 0xc0, 0x00, 0xe0, 0x01, 0xf0, 0x03, 0xf8, 0x07, + 0x3c, 0x0f, 0x1e, 0x1e, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0xff, 0x3f, 0xff, 0x3f, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 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, + 0xff, 0x07, 0xff, 0x0f, 0x3c, 0x1c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x1c, + 0xfc, 0x0f, 0xfc, 0x0f, 0x3c, 0x1c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x1c, 0xff, 0x0f, 0xff, 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, + 0xc0, 0x03, 0xf0, 0x0f, 0x78, 0x1e, 0x3c, 0x3c, + 0x1e, 0x38, 0x1e, 0x30, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x1e, 0x30, 0x1e, 0x38, + 0x3c, 0x3c, 0x78, 0x1e, 0xf0, 0x0f, 0xc0, 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, + 0xff, 0x01, 0xff, 0x03, 0xbc, 0x07, 0x3c, 0x0f, + 0x3c, 0x1e, 0x3c, 0x1c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x1c, 0x3c, 0x1e, + 0x3c, 0x0f, 0xbc, 0x07, 0xff, 0x03, 0xff, 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, + 0xff, 0x3f, 0xff, 0x3f, 0x3c, 0x3c, 0x3c, 0x38, + 0x3c, 0x30, 0x3c, 0x20, 0x3c, 0x03, 0x3c, 0x03, + 0xfc, 0x03, 0xfc, 0x03, 0x3c, 0x03, 0x3c, 0x03, + 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x20, 0x3c, 0x30, + 0x3c, 0x38, 0x3c, 0x3c, 0xff, 0x3f, 0xff, 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, + 0xff, 0x3f, 0xff, 0x3f, 0x3c, 0x3c, 0x3c, 0x38, + 0x3c, 0x30, 0x3c, 0x20, 0x3c, 0x03, 0x3c, 0x03, + 0xfc, 0x03, 0xfc, 0x03, 0x3c, 0x03, 0x3c, 0x03, + 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, + 0x3c, 0x00, 0x3c, 0x00, 0xff, 0x00, 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, + 0xe0, 0x07, 0xf0, 0x0f, 0x78, 0x1c, 0x3c, 0x38, + 0x1e, 0x30, 0x0e, 0x30, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0xcf, 0x3f, 0xcf, 0x3f, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0e, 0x3c, 0x1e, 0x3c, + 0x3c, 0x3c, 0x78, 0x3e, 0xf0, 0x37, 0xe0, 0x33, + 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, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0xff, 0x3f, 0xff, 0x3f, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 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, + 0xf0, 0x0f, 0xf0, 0x0f, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xf0, 0x0f, 0xf0, 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, + 0xc0, 0x3f, 0xc0, 0x3f, 0x00, 0x0f, 0x00, 0x0f, + 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, + 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0xfe, 0x07, 0xfc, 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, + 0x3f, 0x3c, 0x3f, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x1e, 0x3c, 0x0f, + 0xfc, 0x07, 0xfc, 0x03, 0xfc, 0x03, 0xfc, 0x07, + 0x3c, 0x0f, 0x3c, 0x1e, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3f, 0x3c, 0x3f, 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, + 0xff, 0x00, 0xff, 0x00, 0x3c, 0x00, 0x3c, 0x00, + 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, + 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, + 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x20, 0x3c, 0x30, + 0x3c, 0x38, 0x3c, 0x3c, 0xff, 0x3f, 0xff, 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, + 0x07, 0xe0, 0x0f, 0xf0, 0x1f, 0xf8, 0x3f, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xcf, 0xf3, 0x8f, 0xf1, 0x0f, 0xf0, 0x0f, 0xf0, + 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, + 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 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, + 0x07, 0x3c, 0x0f, 0x3c, 0x1f, 0x3c, 0x3f, 0x3c, + 0x7f, 0x3c, 0xff, 0x3c, 0xff, 0x3f, 0xff, 0x3f, + 0xcf, 0x3f, 0x8f, 0x3f, 0x0f, 0x3f, 0x0f, 0x3e, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 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, + 0xf8, 0x07, 0xfc, 0x0f, 0x1e, 0x1e, 0x1e, 0x1e, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x1e, 0x1e, 0x1e, 0x1e, 0xfc, 0x0f, 0xf8, 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, + 0xff, 0x07, 0xff, 0x0f, 0x3c, 0x1e, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x1e, + 0xfc, 0x0f, 0xfc, 0x07, 0x3c, 0x00, 0x3c, 0x00, + 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, + 0x3c, 0x00, 0x3c, 0x00, 0xff, 0x00, 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, + 0xfc, 0x0f, 0xfe, 0x1f, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0xcf, 0x3c, 0xcf, 0x3c, + 0xcf, 0x3f, 0xcf, 0x3f, 0xfe, 0x1f, 0xfc, 0x0f, + 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x3f, 0x00, 0x3c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0x07, 0xff, 0x0f, 0x3c, 0x1c, 0x3c, 0x38, + 0x3c, 0x38, 0x3c, 0x38, 0x3c, 0x3c, 0x3c, 0x1c, + 0xfc, 0x0f, 0xfc, 0x07, 0x3c, 0x07, 0x3c, 0x0e, + 0x3c, 0x1c, 0x3c, 0x1c, 0x3c, 0x38, 0x3c, 0x38, + 0x3c, 0x38, 0x3c, 0x38, 0x3f, 0x38, 0x3f, 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, + 0xfc, 0x0f, 0xfe, 0x1f, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x1e, 0x00, 0x3c, 0x00, + 0xf8, 0x00, 0xf0, 0x03, 0xc0, 0x0f, 0x00, 0x1f, + 0x00, 0x3c, 0x00, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x1f, 0x3e, 0xfe, 0x1f, 0xfc, 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, + 0xff, 0xff, 0xff, 0xff, 0xcf, 0xf3, 0xc7, 0xe3, + 0xc3, 0xc3, 0xc1, 0x83, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xf0, 0x0f, 0xf0, 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, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x1e, 0x1e, 0xfc, 0x0f, 0xf8, 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, + 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, + 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, + 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, + 0x0f, 0xf0, 0x0f, 0xf0, 0x1e, 0x78, 0x3c, 0x3c, + 0x78, 0x1e, 0xf0, 0x0f, 0xe0, 0x07, 0xc0, 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, + 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, + 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, + 0x0f, 0xf0, 0x0f, 0xf0, 0x8f, 0xf1, 0x8f, 0xf1, + 0xcf, 0xf3, 0xcf, 0xf3, 0xef, 0xf7, 0xef, 0xf7, + 0x7e, 0x7e, 0x7e, 0x7e, 0x3c, 0x3c, 0x3c, 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, + 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, + 0x1e, 0x78, 0x3c, 0x3c, 0x78, 0x1e, 0xf0, 0x0f, + 0xe0, 0x07, 0xc0, 0x03, 0xc0, 0x03, 0xe0, 0x07, + 0xf0, 0x0f, 0x78, 0x1e, 0x3c, 0x3c, 0x1e, 0x78, + 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 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, + 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, + 0x0f, 0xf0, 0x1e, 0x78, 0x3c, 0x3c, 0x78, 0x1e, + 0xf0, 0x0f, 0xe0, 0x07, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xf0, 0x0f, 0xf0, 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, + 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0x07, 0x78, + 0x03, 0x3c, 0x01, 0x1e, 0x00, 0x0f, 0x80, 0x07, + 0xc0, 0x03, 0xe0, 0x01, 0xf0, 0x00, 0x78, 0x00, + 0x3c, 0x00, 0x1e, 0x00, 0x0f, 0x80, 0x0f, 0xc0, + 0x0f, 0xe0, 0x0f, 0xf0, 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, + 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0xf0, 0x00, + 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, + 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, + 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, + 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x0f, 0xf0, 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, 0x03, 0x00, 0x03, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x3f, 0x00, 0x3f, 0x00, + 0xfc, 0x00, 0xfc, 0x00, 0xf0, 0x03, 0xf0, 0x03, + 0xc0, 0x0f, 0xc0, 0x0f, 0x00, 0x3f, 0x00, 0x3f, + 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x30, 0x00, 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, + 0xf0, 0x0f, 0xf0, 0x0f, 0x00, 0x0f, 0x00, 0x0f, + 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, + 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, + 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, + 0x00, 0x0f, 0x00, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x00, 0xe0, 0x01, 0xf0, 0x03, + 0x38, 0x07, 0x1c, 0x0e, 0x0e, 0x1c, 0x07, 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, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 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, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0xe0, 0x00, + 0xc0, 0x03, 0x80, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01, 0xfc, 0x03, + 0x00, 0x07, 0x00, 0x0f, 0xf8, 0x0f, 0xfc, 0x0f, + 0x1e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x9e, 0x0f, 0xfc, 0x3c, 0x78, 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, + 0x3f, 0x00, 0x3f, 0x00, 0x3c, 0x00, 0x3c, 0x00, + 0x3c, 0x00, 0x3c, 0x00, 0xfc, 0x01, 0xfc, 0x03, + 0x3c, 0x07, 0x3c, 0x0e, 0x3c, 0x1c, 0x3c, 0x1c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x1c, 0x3c, 0x1c, 0xfc, 0x0f, 0xfc, 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, + 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0xfc, 0x0f, + 0x1e, 0x1c, 0x0f, 0x3c, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x38, 0x1e, 0x1c, 0xfc, 0x0f, 0xf8, 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, + 0xc0, 0x0f, 0xc0, 0x0f, 0x00, 0x0f, 0x00, 0x0f, + 0x00, 0x0f, 0x00, 0x0f, 0xf0, 0x0f, 0xf8, 0x0f, + 0x3c, 0x0f, 0x1e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x1f, 0x0f, 0xfe, 0x3d, 0xfc, 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, 0xfc, 0x0f, 0xfe, 0x1f, + 0x0f, 0x3c, 0x0f, 0x3c, 0xff, 0x3f, 0xff, 0x3f, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x38, 0x1f, 0x3c, 0xfe, 0x1f, 0xfc, 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, + 0xe0, 0x01, 0xf0, 0x03, 0x38, 0x07, 0x3c, 0x0e, + 0x3c, 0x0c, 0x3c, 0x0c, 0x3c, 0x00, 0x3c, 0x00, + 0xff, 0x00, 0xff, 0x00, 0x3c, 0x00, 0x3c, 0x00, + 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, + 0x3c, 0x00, 0x3c, 0x00, 0xff, 0x00, 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, 0xf8, 0x38, 0xfc, 0x3d, + 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0e, 0x0f, 0xfc, 0x0f, 0xf8, 0x0f, + 0x00, 0x0f, 0x00, 0x0f, 0x07, 0x0f, 0x0e, 0x0f, + 0xfc, 0x03, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x3f, 0x00, 0x3c, 0x00, 0x3c, 0x00, + 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x0f, 0xbc, 0x1f, + 0xfc, 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3f, 0x3c, 0x3f, 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, + 0x80, 0x01, 0xc0, 0x03, 0xc0, 0x03, 0x80, 0x01, + 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0xf0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xf0, 0x0f, 0xf0, 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, 0x18, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x18, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x3f, + 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, + 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, + 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x38, 0x1c, + 0xf0, 0x0f, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x3f, 0x00, 0x3c, 0x00, 0x3c, 0x00, + 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x38, 0x3c, 0x1c, + 0x3c, 0x0e, 0x3c, 0x07, 0xbc, 0x03, 0xfc, 0x01, + 0xfc, 0x01, 0xfc, 0x03, 0x3c, 0x07, 0x3c, 0x0e, + 0x3c, 0x1c, 0x3c, 0x38, 0x3f, 0x38, 0x3f, 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, + 0xf0, 0x03, 0xf0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xf0, 0x0f, 0xf0, 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, 0x3f, 0x3c, 0x7f, 0x7e, + 0xff, 0xff, 0xff, 0xff, 0xcf, 0xf3, 0xcf, 0xf3, + 0xcf, 0xf3, 0xcf, 0xf3, 0xcf, 0xf3, 0xcf, 0xf3, + 0xcf, 0xf3, 0xcf, 0xf3, 0xcf, 0xf3, 0xcf, 0xf3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc7, 0x07, 0xef, 0x0f, + 0x3c, 0x1c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 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, 0xf8, 0x07, 0xfc, 0x0f, + 0x1e, 0x1e, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x1e, 0x1e, 0xfc, 0x0f, 0xf8, 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, + 0x00, 0x00, 0x00, 0x00, 0xc7, 0x07, 0xef, 0x0f, + 0x7c, 0x1e, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x1e, 0xfc, 0x0f, 0xfc, 0x07, + 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, + 0xff, 0x00, 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, 0xf8, 0x38, 0xfc, 0x3d, + 0x1e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x1e, 0x0f, 0xfc, 0x0f, 0xf8, 0x0f, + 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, + 0xc0, 0x3f, 0xc0, 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, 0x87, 0x07, 0xcf, 0x0f, + 0xfc, 0x1c, 0x7c, 0x38, 0x3c, 0x38, 0x3c, 0x38, + 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, + 0x3c, 0x00, 0x3c, 0x00, 0xff, 0x00, 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, 0xfc, 0x0f, 0xfe, 0x1f, + 0x0f, 0x3c, 0x0f, 0x3c, 0x3e, 0x00, 0xfc, 0x00, + 0xf0, 0x03, 0xc0, 0x07, 0x00, 0x0f, 0x00, 0x1e, + 0x0f, 0x3c, 0x0f, 0x3c, 0xfe, 0x1f, 0xfc, 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, + 0x80, 0x00, 0xc0, 0x00, 0xe0, 0x00, 0xf0, 0x00, + 0xf0, 0x00, 0xf0, 0x00, 0xff, 0x0f, 0xff, 0x0f, + 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, + 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, + 0xf0, 0x38, 0xe0, 0x3c, 0xc0, 0x0f, 0x80, 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, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x8f, 0x0f, 0xfe, 0x3d, 0xfc, 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, 0x0f, 0xf0, 0x0f, 0xf0, + 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, + 0x0f, 0xf0, 0x0f, 0xf0, 0x1e, 0x78, 0x3c, 0x3c, + 0x78, 0x1e, 0xf0, 0x0f, 0xe0, 0x07, 0xc0, 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, 0x0f, 0xf0, 0x0f, 0xf0, + 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, + 0xcf, 0xf3, 0xcf, 0xf3, 0xcf, 0xf3, 0xcf, 0xf3, + 0xff, 0xff, 0xff, 0xff, 0x7e, 0x7e, 0x3c, 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, 0x0f, 0xf0, 0x1f, 0xf8, + 0x3c, 0x3c, 0x78, 0x1e, 0xf0, 0x0f, 0xe0, 0x07, + 0xc0, 0x03, 0xe0, 0x07, 0xf0, 0x0f, 0x78, 0x1e, + 0x3c, 0x3c, 0x1e, 0x78, 0x0f, 0xf0, 0x07, 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, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0e, 0x3c, 0xfc, 0x3f, 0xf8, 0x3f, + 0x00, 0x3c, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x07, + 0xff, 0x03, 0xff, 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, 0xff, 0x3f, 0xff, 0x1f, + 0x07, 0x0e, 0x03, 0x07, 0x80, 0x03, 0xc0, 0x01, + 0xe0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1c, 0x00, + 0x0e, 0x30, 0x07, 0x38, 0xff, 0x3f, 0xff, 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, 0x3e, 0x00, 0x3f, 0x80, 0x03, 0xc0, 0x01, + 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, + 0xfc, 0x00, 0xfc, 0x00, 0xc0, 0x01, 0xc0, 0x01, + 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, + 0xc0, 0x03, 0xc0, 0x03, 0x00, 0x3f, 0x00, 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, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 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, + 0x7c, 0x00, 0xfc, 0x00, 0xc0, 0x01, 0x80, 0x03, + 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, + 0x00, 0x3f, 0x00, 0x3f, 0x80, 0x03, 0x80, 0x03, + 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, + 0xc0, 0x03, 0xc0, 0x01, 0xfc, 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, + 0x78, 0x38, 0xfc, 0x3c, 0xce, 0x0f, 0x87, 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, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 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, 0xe0, 0x01, 0xf0, 0x03, + 0x38, 0x07, 0x1c, 0x0e, 0x0e, 0x1c, 0x07, 0x38, + 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, + 0xff, 0x3f, 0xff, 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, + 0xe0, 0x07, 0xf0, 0x0f, 0x38, 0x1c, 0x1c, 0x38, + 0x0e, 0x30, 0x0f, 0x30, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x30, 0x0e, 0x30, 0x1c, 0x38, 0x38, 0x1c, + 0xf0, 0x0f, 0xe0, 0x0f, 0x00, 0x0f, 0x00, 0x0e, + 0x00, 0x1c, 0x00, 0x1c, 0xfc, 0x0f, 0xfc, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x8f, 0x0f, 0xfe, 0x3d, 0xfc, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x07, + 0x80, 0x03, 0xc0, 0x01, 0xe0, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x0f, 0xfe, 0x1f, + 0x0f, 0x3c, 0x0f, 0x3c, 0xff, 0x3f, 0xff, 0x3f, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x38, 0x1f, 0x3c, 0xfe, 0x1f, 0xfc, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, + 0xe0, 0x01, 0xf0, 0x03, 0x38, 0x07, 0x1c, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01, 0xfc, 0x03, + 0x00, 0x07, 0x00, 0x0f, 0xf8, 0x0f, 0xfc, 0x0f, + 0x1e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x9e, 0x0f, 0xfc, 0x3c, 0x78, 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, + 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01, 0xfc, 0x03, + 0x00, 0x07, 0x00, 0x0f, 0xf8, 0x0f, 0xfc, 0x0f, + 0x1e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x9e, 0x0f, 0xfc, 0x3c, 0x78, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x38, 0x00, + 0x70, 0x00, 0xe0, 0x00, 0xc0, 0x01, 0x80, 0x03, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01, 0xfc, 0x03, + 0x00, 0x07, 0x00, 0x0f, 0xf8, 0x0f, 0xfc, 0x0f, + 0x1e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x9e, 0x0f, 0xfc, 0x3c, 0x78, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0xf0, 0x03, + 0x1c, 0x0e, 0x1c, 0x0e, 0xf0, 0x03, 0xe0, 0x01, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01, 0xfc, 0x03, + 0x00, 0x07, 0x00, 0x0f, 0xf8, 0x0f, 0xfc, 0x0f, + 0x1e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x9e, 0x0f, 0xfc, 0x3c, 0x78, 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, 0x07, 0xf0, 0x0f, 0x38, 0x1c, 0x3c, 0x38, + 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, + 0x3c, 0x38, 0x38, 0x1c, 0xf0, 0x0f, 0xe0, 0x0f, + 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x1c, + 0xf0, 0x0f, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, + 0xe0, 0x01, 0xf0, 0x03, 0x38, 0x07, 0x1c, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x0f, 0xfe, 0x1f, + 0x0f, 0x3c, 0x0f, 0x3c, 0xff, 0x3f, 0xff, 0x3f, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x38, 0x1f, 0x3c, 0xfe, 0x1f, 0xfc, 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, + 0x0f, 0x3c, 0x0f, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x0f, 0xfe, 0x1f, + 0x0f, 0x3c, 0x0f, 0x3c, 0xff, 0x3f, 0xff, 0x3f, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x38, 0x1f, 0x3c, 0xfe, 0x1f, 0xfc, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x38, 0x00, + 0x70, 0x00, 0xe0, 0x00, 0xc0, 0x01, 0x80, 0x03, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x0f, 0xfe, 0x1f, + 0x0f, 0x3c, 0x0f, 0x3c, 0xff, 0x3f, 0xff, 0x3f, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x38, 0x1f, 0x3c, 0xfe, 0x1f, 0xfc, 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, + 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0xf0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xf0, 0x0f, 0xf0, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xc0, 0x03, + 0xe0, 0x07, 0x70, 0x0e, 0x38, 0x1c, 0x1c, 0x38, + 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0xf0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xf0, 0x0f, 0xf0, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x38, 0x00, + 0x70, 0x00, 0xe0, 0x00, 0xc0, 0x01, 0x80, 0x03, + 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0xf0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xf0, 0x0f, 0xf0, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x3c, 0x0f, 0x3c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, + 0xe0, 0x01, 0xf0, 0x03, 0x38, 0x07, 0x1c, 0x0e, + 0x0e, 0x1c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0xff, 0x3f, 0xff, 0x3f, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe0, 0x01, 0xf0, 0x03, 0x1c, 0x0e, 0x1c, 0x0e, + 0xf0, 0x03, 0xe0, 0x01, 0x00, 0x00, 0xc0, 0x00, + 0xe0, 0x01, 0xf0, 0x03, 0x38, 0x07, 0x1c, 0x0e, + 0x0e, 0x1c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0xff, 0x3f, 0xff, 0x3f, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x03, 0xc0, 0x01, 0xe0, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0x3f, 0xff, 0x3f, 0x3c, 0x38, 0x3c, 0x30, + 0x3c, 0x00, 0x3c, 0x00, 0xfc, 0x0f, 0xfc, 0x0f, + 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, + 0x3c, 0x30, 0x3c, 0x38, 0xff, 0x3f, 0xff, 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, 0x1c, 0x1e, 0x38, 0x3f, + 0xf0, 0x73, 0xe0, 0xf3, 0xc0, 0xf3, 0xc0, 0x73, + 0xf8, 0x3f, 0xfc, 0x1f, 0xce, 0x03, 0xc7, 0x03, + 0xc7, 0x07, 0xce, 0x1e, 0xfc, 0xfc, 0x78, 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, + 0xe0, 0x3f, 0xf0, 0x3f, 0x38, 0x0f, 0x1c, 0x0f, + 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0xff, 0x3f, 0xff, 0x3f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x3f, 0x0f, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xe0, 0x01, + 0xf0, 0x03, 0x38, 0x07, 0x1c, 0x0e, 0x0e, 0x1c, + 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0xfc, 0x0f, + 0x1e, 0x1e, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x1e, 0x1e, 0xfc, 0x0f, 0xf8, 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, + 0x0f, 0x3c, 0x0f, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0xfc, 0x0f, + 0x1e, 0x1e, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x1e, 0x1e, 0xfc, 0x0f, 0xf8, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x38, 0x00, + 0x70, 0x00, 0xe0, 0x00, 0xc0, 0x01, 0x80, 0x03, + 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0xfc, 0x0f, + 0x1e, 0x1e, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x1e, 0x1e, 0xfc, 0x0f, 0xf8, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0xf0, 0x00, + 0xf8, 0x01, 0x9c, 0x03, 0x0e, 0x07, 0x07, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x8f, 0x0f, 0xfe, 0x3d, 0xfc, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x38, 0x00, + 0x70, 0x00, 0xe0, 0x00, 0xc0, 0x01, 0x80, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x8f, 0x0f, 0xfe, 0x3d, 0xfc, 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, + 0x0f, 0x3c, 0x0f, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0e, 0x3c, 0xfc, 0x3f, 0xf8, 0x3f, + 0x00, 0x3c, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x07, + 0xfc, 0x03, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x3c, 0x0f, 0x3c, + 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0xfc, 0x0f, + 0x0e, 0x1c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0e, 0x1c, 0xfc, 0x0f, 0xf8, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x3c, 0x0f, 0x3c, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0e, 0x1c, 0xfc, 0x0f, 0xf8, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xf8, 0x1f, 0xfc, 0x3f, + 0x0e, 0x70, 0x07, 0xe0, 0x07, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x07, 0xe0, 0x0e, 0x70, 0xfc, 0x3f, 0xf8, 0x1f, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0xf0, 0x03, + 0x38, 0x07, 0x3c, 0x0e, 0x3c, 0x0c, 0x3c, 0x0c, + 0x3c, 0x00, 0x3c, 0x00, 0xff, 0x00, 0xff, 0x00, + 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, + 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, + 0x3f, 0x38, 0x3f, 0x1c, 0xff, 0x0f, 0xff, 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, + 0x07, 0xe0, 0x0e, 0x70, 0x1c, 0x38, 0x38, 0x1c, + 0x70, 0x0e, 0xe0, 0x07, 0xc0, 0x03, 0xc0, 0x03, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0x03, 0xc0, 0x03, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0x0f, 0xff, 0x1f, + 0x3c, 0x3c, 0x3c, 0x38, 0x3c, 0x38, 0x3c, 0x3c, + 0xfc, 0x1f, 0xfc, 0x0f, 0x3c, 0x30, 0x3c, 0x38, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0xff, 0x3c, 0xff, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0xff, 0xf8, 0xff, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x3f, + 0x80, 0x77, 0xc0, 0xe3, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xfc, 0x3f, 0xfc, 0x3f, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc7, 0x03, 0xee, 0x01, 0xfc, 0x00, 0x78, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0xc0, 0x01, + 0xe0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01, 0xfc, 0x03, + 0x00, 0x07, 0x00, 0x0f, 0xf8, 0x0f, 0xfc, 0x0f, + 0x1e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x9e, 0x0f, 0xfc, 0x3c, 0x78, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x07, + 0x80, 0x03, 0xc0, 0x01, 0xe0, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0xf0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xf0, 0x0f, 0xf0, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0xc0, 0x01, + 0xe0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0xfc, 0x0f, + 0x1e, 0x1e, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x1e, 0x1e, 0xfc, 0x0f, 0xf8, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0xc0, 0x01, + 0xe0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x8f, 0x0f, 0xfe, 0x3d, 0xfc, 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, + 0x78, 0x38, 0xfc, 0x3c, 0xcf, 0x0f, 0x87, 0x07, + 0x00, 0x00, 0x00, 0x00, 0xc7, 0x07, 0xef, 0x0f, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x78, 0x38, 0xfc, 0x3c, 0xcf, 0x0f, 0x87, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x3c, 0x0f, 0x3c, + 0x1f, 0x3c, 0x3f, 0x3c, 0x7f, 0x3c, 0xff, 0x3c, + 0xff, 0x3d, 0xef, 0x3f, 0xcf, 0x3f, 0x8f, 0x3f, + 0x0f, 0x3f, 0x0f, 0x3e, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0xf0, 0x0f, + 0x38, 0x0f, 0x1c, 0x0f, 0x1c, 0x0f, 0x38, 0x0f, + 0xf0, 0x3f, 0xe0, 0x3f, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0x3f, 0xfc, 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, 0xe0, 0x01, 0xf0, 0x03, + 0x38, 0x07, 0x1c, 0x0e, 0x1c, 0x0e, 0x38, 0x07, + 0xf0, 0x03, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0x0f, 0xfc, 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, + 0x60, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0x60, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0x00, + 0xf0, 0x00, 0x78, 0x00, 0x3c, 0x00, 0x1e, 0x00, + 0x0f, 0x00, 0x07, 0x00, 0x07, 0x38, 0x07, 0x38, + 0x07, 0x38, 0x0f, 0x3c, 0xfe, 0x1f, 0xfc, 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, + 0xff, 0x3f, 0xff, 0x3f, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 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, + 0xff, 0x3f, 0xff, 0x3f, 0x00, 0x3c, 0x00, 0x3c, + 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, + 0x00, 0x3c, 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, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x20, 0x0f, 0x30, + 0x0f, 0x38, 0x0f, 0x1c, 0x0f, 0x0e, 0x0f, 0x07, + 0x80, 0x03, 0xc0, 0x01, 0xe0, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x1c, 0x00, 0x0e, 0x3e, 0x07, 0x7f, + 0x83, 0xf3, 0xc1, 0xf1, 0x00, 0x38, 0x00, 0x1c, + 0x00, 0x0e, 0x00, 0x07, 0x80, 0xff, 0xc0, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x20, 0x0f, 0x30, + 0x0f, 0x38, 0x0f, 0x1c, 0x0f, 0x0e, 0x0f, 0x07, + 0x80, 0x03, 0xc0, 0x01, 0xe0, 0x00, 0x70, 0x00, + 0x38, 0x3c, 0x1c, 0x3e, 0x0e, 0x3f, 0x87, 0x3d, + 0xc3, 0x3c, 0x61, 0x3c, 0xf0, 0x3f, 0xf0, 0x3f, + 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xe0, 0x07, 0xe0, 0x07, + 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, + 0xf0, 0x0f, 0xf0, 0x0f, 0xe0, 0x07, 0xc0, 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, 0xf0, 0x3c, 0x78, 0x1e, + 0x3c, 0x0f, 0x9e, 0x07, 0xcf, 0x03, 0xcf, 0x03, + 0x9e, 0x07, 0x3c, 0x0f, 0x78, 0x1e, 0xf0, 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, 0xcf, 0x03, 0x9e, 0x07, + 0x3c, 0x0f, 0x78, 0x1e, 0xf0, 0x3c, 0xf0, 0x3c, + 0x78, 0x1e, 0x3c, 0x0f, 0x9e, 0x07, 0xcf, 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, + 0xc0, 0xc0, 0xc0, 0xc0, 0x0c, 0x0c, 0x0c, 0x0c, + 0xc0, 0xc0, 0xc0, 0xc0, 0x0c, 0x0c, 0x0c, 0x0c, + 0xc0, 0xc0, 0xc0, 0xc0, 0x0c, 0x0c, 0x0c, 0x0c, + 0xc0, 0xc0, 0xc0, 0xc0, 0x0c, 0x0c, 0x0c, 0x0c, + 0xc0, 0xc0, 0xc0, 0xc0, 0x0c, 0x0c, 0x0c, 0x0c, + 0xc0, 0xc0, 0xc0, 0xc0, 0x0c, 0x0c, 0x0c, 0x0c, + 0xc0, 0xc0, 0xc0, 0xc0, 0x0c, 0x0c, 0x0c, 0x0c, + 0xc0, 0xc0, 0xc0, 0xc0, 0x0c, 0x0c, 0x0c, 0x0c, + 0xcc, 0xcc, 0xcc, 0xcc, 0x33, 0x33, 0x33, 0x33, + 0xcc, 0xcc, 0xcc, 0xcc, 0x33, 0x33, 0x33, 0x33, + 0xcc, 0xcc, 0xcc, 0xcc, 0x33, 0x33, 0x33, 0x33, + 0xcc, 0xcc, 0xcc, 0xcc, 0x33, 0x33, 0x33, 0x33, + 0xcc, 0xcc, 0xcc, 0xcc, 0x33, 0x33, 0x33, 0x33, + 0xcc, 0xcc, 0xcc, 0xcc, 0x33, 0x33, 0x33, 0x33, + 0xcc, 0xcc, 0xcc, 0xcc, 0x33, 0x33, 0x33, 0x33, + 0xcc, 0xcc, 0xcc, 0xcc, 0x33, 0x33, 0x33, 0x33, + 0xcf, 0xcf, 0xcf, 0xcf, 0xfc, 0xfc, 0xfc, 0xfc, + 0xcf, 0xcf, 0xcf, 0xcf, 0xfc, 0xfc, 0xfc, 0xfc, + 0xcf, 0xcf, 0xcf, 0xcf, 0xfc, 0xfc, 0xfc, 0xfc, + 0xcf, 0xcf, 0xcf, 0xcf, 0xfc, 0xfc, 0xfc, 0xfc, + 0xcf, 0xcf, 0xcf, 0xcf, 0xfc, 0xfc, 0xfc, 0xfc, + 0xcf, 0xcf, 0xcf, 0xcf, 0xfc, 0xfc, 0xfc, 0xfc, + 0xcf, 0xcf, 0xcf, 0xcf, 0xfc, 0xfc, 0xfc, 0xfc, + 0xcf, 0xcf, 0xcf, 0xcf, 0xfc, 0xfc, 0xfc, 0xfc, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xff, 0x03, 0xff, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xff, 0x03, 0xff, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xff, 0x03, 0xff, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xff, 0x3c, 0xff, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 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, 0xff, 0x3f, 0xff, 0x3f, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0xff, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xff, 0x03, 0xff, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xff, 0x3c, 0xff, 0x3c, + 0x00, 0x3c, 0x00, 0x3c, 0xff, 0x3c, 0xff, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0x3f, 0xff, 0x3f, + 0x00, 0x3c, 0x00, 0x3c, 0xff, 0x3c, 0xff, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xff, 0x3c, 0xff, 0x3c, + 0x00, 0x3c, 0x00, 0x3c, 0xff, 0x3f, 0xff, 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, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xff, 0x3f, 0xff, 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, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xff, 0x03, 0xff, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xff, 0x03, 0xff, 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, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0xff, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0xff, 0xc0, 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, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 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, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0xff, 0xc0, 0xff, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 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, 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, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0xff, 0xc0, 0xff, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0xff, 0xc0, 0xff, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0xfc, 0xf0, 0xfc, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0xfc, 0xf0, 0xfc, + 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0xff, 0xf0, 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, 0xf0, 0xff, 0xf0, 0xff, + 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0xfc, 0xf0, 0xfc, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xff, 0xfc, 0xff, 0xfc, + 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 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, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0xff, 0xfc, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0xfc, 0xf0, 0xfc, + 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0xfc, 0xf0, 0xfc, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xff, 0xfc, 0xff, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0xff, 0xfc, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xff, 0xff, 0xff, 0xff, + 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 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, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 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, 0xff, 0xff, 0xff, 0xff, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0xff, 0xf0, 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, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0xff, 0xc0, 0xff, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0xff, 0xc0, 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, 0xc0, 0xff, 0xc0, 0xff, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0xff, 0xc0, 0xff, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 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, 0xf0, 0xff, 0xf0, 0xff, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xff, 0xff, 0xff, 0xff, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x03, 0xc0, 0x03, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xff, 0x03, 0xff, 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, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xc0, 0xff, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 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, 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, 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, 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, + 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, + 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, + 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, + 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, + 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, + 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, + 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, + 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7c, 0x3c, 0xfe, 0x3e, + 0xcf, 0x1f, 0x87, 0x0f, 0x87, 0x03, 0x87, 0x03, + 0x87, 0x03, 0x87, 0x03, 0x87, 0x03, 0x87, 0x03, + 0x87, 0x0f, 0xcf, 0x1f, 0xfe, 0x3d, 0xfc, 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, + 0xf8, 0x01, 0xfc, 0x03, 0x0e, 0x07, 0x0e, 0x07, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x8f, 0x07, + 0xcf, 0x03, 0xcf, 0x03, 0x8f, 0x07, 0x0f, 0x0f, + 0x0f, 0x0e, 0x0f, 0x1c, 0x0f, 0x1c, 0x0f, 0x1c, + 0x0f, 0x1c, 0x0f, 0x1e, 0x0f, 0x0f, 0x0f, 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, + 0xff, 0x3f, 0xff, 0x3f, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 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, + 0xff, 0x3f, 0xff, 0x3f, 0x3c, 0x0f, 0x3c, 0x0f, + 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, + 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, + 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 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, 0xff, 0x3f, 0xff, 0x3f, + 0x0f, 0x38, 0x1e, 0x30, 0x3c, 0x00, 0x78, 0x00, + 0xf0, 0x00, 0xe0, 0x01, 0xc0, 0x03, 0xc0, 0x03, + 0xe0, 0x01, 0xf0, 0x00, 0x78, 0x00, 0x3c, 0x00, + 0x1e, 0x30, 0x0f, 0x38, 0xff, 0x3f, 0xff, 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, 0xf8, 0x3f, 0xfc, 0x3f, + 0xce, 0x03, 0x87, 0x03, 0x87, 0x03, 0x87, 0x03, + 0x87, 0x03, 0x87, 0x03, 0x87, 0x03, 0x87, 0x03, + 0x87, 0x03, 0xce, 0x01, 0xfc, 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, 0x00, 0x00, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x1c, 0x3c, 0x1e, 0xfc, 0x0f, 0xfc, 0x07, + 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x1c, 0x00, + 0x0f, 0x00, 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, + 0x78, 0x38, 0xfc, 0x3c, 0xcf, 0x0f, 0xc7, 0x07, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 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, 0xfc, 0x3f, 0xfc, 0x3f, + 0xc0, 0x03, 0xc0, 0x03, 0xe0, 0x07, 0xf0, 0x0f, + 0x38, 0x1c, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, + 0x1c, 0x38, 0x38, 0x1c, 0xf0, 0x0f, 0xe0, 0x07, + 0xc0, 0x03, 0xc0, 0x03, 0xfc, 0x3f, 0xfc, 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, 0xe0, 0x01, 0xf0, 0x03, + 0x38, 0x07, 0x1c, 0x0e, 0x0e, 0x1c, 0x0e, 0x1c, + 0x07, 0x38, 0x07, 0x38, 0xff, 0x3f, 0xff, 0x3f, + 0x07, 0x38, 0x07, 0x38, 0x0e, 0x1c, 0x0e, 0x1c, + 0x1c, 0x0e, 0x38, 0x07, 0xf0, 0x03, 0xe0, 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, + 0xf0, 0x03, 0xf8, 0x07, 0x3c, 0x0f, 0x1e, 0x1e, + 0x0f, 0x3c, 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, + 0x07, 0x38, 0x07, 0x38, 0x0e, 0x1c, 0x1e, 0x1e, + 0x1c, 0x0e, 0x3c, 0x0f, 0x38, 0x07, 0x38, 0x07, + 0x38, 0x07, 0x38, 0x07, 0x3f, 0x3f, 0x3f, 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, 0x3f, 0xc0, 0x3f, 0xe0, 0x00, 0xe0, 0x00, + 0xc0, 0x01, 0x80, 0x03, 0x00, 0x07, 0x00, 0x0f, + 0xe0, 0x1f, 0xf0, 0x3f, 0x38, 0x3c, 0x1c, 0x38, + 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, + 0x1c, 0x38, 0x38, 0x1c, 0xf0, 0x0f, 0xe0, 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, + 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0xfc, 0x3f, + 0xce, 0xf3, 0xcf, 0xf3, 0xcf, 0xf3, 0xcf, 0xf3, + 0xcf, 0xf3, 0xce, 0xf3, 0xfc, 0x3f, 0xf8, 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, 0xe0, 0x00, 0x70, + 0x00, 0x38, 0x00, 0x1c, 0xf8, 0x1f, 0xfc, 0x3f, + 0x0e, 0x77, 0x8f, 0xf3, 0xcf, 0xf3, 0xef, 0xf1, + 0xff, 0xf0, 0xff, 0x70, 0xfc, 0x3f, 0xfc, 0x1f, + 0x1c, 0x00, 0x0c, 0x00, 0x0e, 0x00, 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, 0x0f, 0xc0, 0x0f, 0xe0, 0x01, 0xf0, 0x00, + 0x78, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, + 0xfc, 0x0f, 0xfc, 0x0f, 0x3c, 0x00, 0x3c, 0x00, + 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x78, 0x00, + 0xf0, 0x00, 0xe0, 0x01, 0xc0, 0x0f, 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, 0xfc, 0x0f, 0xfe, 0x1f, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, + 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 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, + 0xff, 0x3f, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0x3f, 0xff, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0x3f, 0xff, 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, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xfc, 0x3f, 0xfc, 0x3f, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xf0, 0x00, + 0xe0, 0x01, 0xc0, 0x03, 0x80, 0x07, 0x00, 0x0f, + 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x0f, 0x80, 0x07, + 0xc0, 0x03, 0xe0, 0x01, 0xf0, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0xfc, 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, 0x0e, 0x00, 0x0f, + 0x80, 0x07, 0xc0, 0x03, 0xe0, 0x01, 0xf0, 0x00, + 0x78, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xe0, 0x01, + 0xc0, 0x03, 0x80, 0x07, 0x00, 0x0f, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0xfc, 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, 0x3f, 0x80, 0x7f, 0xc0, 0xf3, 0xc0, 0xf3, + 0xc0, 0xf3, 0xc0, 0xf3, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xcf, 0x03, 0xcf, 0x03, 0xcf, 0x03, 0xcf, 0x03, + 0xcf, 0x03, 0xcf, 0x03, 0xfe, 0x01, 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, + 0x80, 0x01, 0xc0, 0x03, 0xc0, 0x03, 0x80, 0x01, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0xfc, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xc0, 0x03, + 0xc0, 0x03, 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, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x78, 0x38, 0xfc, 0x3c, + 0xcf, 0x0f, 0x87, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x78, 0x38, 0xfc, 0x3c, 0xcf, 0x0f, 0x87, 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, 0xe0, 0x01, 0xf0, 0x03, + 0x38, 0x07, 0x1c, 0x0e, 0x1c, 0x0e, 0x38, 0x07, + 0xf0, 0x03, 0xe0, 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, 0xc0, 0x03, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x03, 0xc0, 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, 0xff, 0x00, 0xff, + 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, + 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, + 0x00, 0x0f, 0x00, 0x0f, 0x07, 0x0f, 0x0f, 0x0f, + 0x1e, 0x0f, 0x3c, 0x0f, 0x78, 0x0f, 0xf0, 0x0f, + 0xe0, 0x0f, 0xc0, 0x0f, 0x80, 0x0f, 0x00, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xcf, 0x03, 0xef, 0x07, + 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, + 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, + 0x3c, 0x0f, 0x3c, 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, 0x78, 0x00, 0xfc, 0x00, + 0xce, 0x01, 0xc7, 0x03, 0xe0, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x1c, 0x00, 0x0e, 0x03, 0x07, 0x03, + 0xff, 0x03, 0xff, 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, + 0xfc, 0x0f, 0xfc, 0x0f, 0xfc, 0x0f, 0xfc, 0x0f, + 0xfc, 0x0f, 0xfc, 0x0f, 0xfc, 0x0f, 0xfc, 0x0f, + 0xfc, 0x0f, 0xfc, 0x0f, 0xfc, 0x0f, 0xfc, 0x0f, + 0xfc, 0x0f, 0xfc, 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, 0x00, 0x00, 0x00, 0x00, 0x00, + 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 txt_font_t large_font = +{ + "large", large_font_data, 16, 32, +}; diff --git a/textscreen/fonts/large.png b/textscreen/fonts/large.png new file mode 100644 index 00000000..3827ab59 Binary files /dev/null and b/textscreen/fonts/large.png differ diff --git a/textscreen/fonts/normal.h b/textscreen/fonts/normal.h new file mode 100644 index 00000000..8b6d20ed --- /dev/null +++ b/textscreen/fonts/normal.h @@ -0,0 +1,524 @@ +/* Font data generated from normal.png; do not edit. + Please see textscreen/fonts/README for copyright + information. */ + +static const uint8_t normal_font_data[] = +{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7e, 0x81, 0xa5, 0x81, 0x81, 0xbd, + 0x99, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7e, 0xff, 0xdb, 0xff, 0xff, 0xc3, + 0xe7, 0xff, 0xff, 0x7e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x36, 0x7f, 0x7f, 0x7f, + 0x7f, 0x3e, 0x1c, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x1c, 0x3e, 0x7f, + 0x3e, 0x1c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0xe7, 0xe7, + 0xe7, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, + 0x7e, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, + 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xc3, + 0xc3, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x42, + 0x42, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x99, 0xbd, + 0xbd, 0x99, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x78, 0x70, 0x58, 0x4c, 0x1e, 0x33, + 0x33, 0x33, 0x33, 0x1e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, + 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0xcc, 0xfc, 0x0c, 0x0c, 0x0c, + 0x0c, 0x0e, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, + 0xc6, 0xe6, 0xe7, 0x67, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x18, 0xdb, 0x3c, 0xe7, + 0x3c, 0xdb, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x7f, 0x1f, + 0x0f, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x60, 0x70, 0x78, 0x7c, 0x7f, 0x7c, + 0x78, 0x70, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, + 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, + 0x66, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xdb, 0xdb, 0xdb, 0xde, 0xd8, + 0xd8, 0xd8, 0xd8, 0xd8, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3e, 0x63, 0x06, 0x1c, 0x36, 0x63, 0x63, + 0x36, 0x1c, 0x30, 0x63, 0x3e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, + 0x7e, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x30, 0x7f, + 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x06, 0x7f, + 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, + 0x03, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x66, 0xff, + 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x1c, 0x1c, 0x3e, + 0x3e, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x3e, 0x3e, + 0x1c, 0x1c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x18, + 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x66, 0x66, 0x66, 0x24, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x36, 0x36, 0x7f, 0x36, 0x36, + 0x36, 0x7f, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x18, 0x3e, 0x63, 0x43, 0x03, 0x3e, 0x60, + 0x60, 0x61, 0x63, 0x3e, 0x18, 0x18, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x43, 0x63, 0x30, 0x18, + 0x0c, 0x06, 0x63, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1c, 0x36, 0x36, 0x1c, 0x6e, 0x3b, + 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0c, 0x0c, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, + 0x0c, 0x0c, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3c, 0xff, + 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, + 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x18, 0x18, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x30, 0x18, + 0x0c, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3c, 0x66, 0xc3, 0xc3, 0xdb, 0xdb, + 0xc3, 0xc3, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x1c, 0x1e, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3e, 0x63, 0x60, 0x30, 0x18, 0x0c, + 0x06, 0x03, 0x63, 0x7f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3e, 0x63, 0x60, 0x60, 0x3c, 0x60, + 0x60, 0x60, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x30, 0x38, 0x3c, 0x36, 0x33, 0x7f, + 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7f, 0x03, 0x03, 0x03, 0x3f, 0x60, + 0x60, 0x60, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1c, 0x06, 0x03, 0x03, 0x3f, 0x63, + 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7f, 0x63, 0x60, 0x60, 0x30, 0x18, + 0x0c, 0x0c, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x3e, 0x63, + 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x7e, 0x60, + 0x60, 0x60, 0x30, 0x1e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, + 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, + 0x00, 0x18, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x0c, 0x06, + 0x0c, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x06, 0x0c, 0x18, 0x30, 0x60, + 0x30, 0x18, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3e, 0x63, 0x63, 0x30, 0x18, 0x18, + 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3e, 0x63, 0x63, 0x7b, 0x7b, + 0x7b, 0x3b, 0x03, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x1c, 0x36, 0x63, 0x63, 0x7f, + 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3f, 0x66, 0x66, 0x66, 0x3e, 0x66, + 0x66, 0x66, 0x66, 0x3f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3c, 0x66, 0x43, 0x03, 0x03, 0x03, + 0x03, 0x43, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0x36, 0x66, 0x66, 0x66, 0x66, + 0x66, 0x66, 0x36, 0x1f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7f, 0x66, 0x46, 0x16, 0x1e, 0x16, + 0x06, 0x46, 0x66, 0x7f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7f, 0x66, 0x46, 0x16, 0x1e, 0x16, + 0x06, 0x06, 0x06, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3c, 0x66, 0x43, 0x03, 0x03, 0x7b, + 0x63, 0x63, 0x66, 0x5c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x7f, 0x63, + 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x78, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x33, 0x33, 0x33, 0x1e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x67, 0x66, 0x66, 0x36, 0x1e, 0x1e, + 0x36, 0x66, 0x66, 0x67, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x46, 0x66, 0x7f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc3, 0xe7, 0xff, 0xff, 0xdb, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x63, 0x67, 0x6f, 0x7f, 0x7b, 0x73, + 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, + 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3f, 0x66, 0x66, 0x66, 0x3e, 0x06, + 0x06, 0x06, 0x06, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, + 0x63, 0x6b, 0x7b, 0x3e, 0x30, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x3f, 0x66, 0x66, 0x66, 0x3e, 0x36, + 0x66, 0x66, 0x66, 0x67, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3e, 0x63, 0x63, 0x06, 0x1c, 0x30, + 0x60, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xdb, 0x99, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, + 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xdb, + 0xdb, 0xff, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc3, 0xc3, 0x66, 0x3c, 0x18, 0x18, + 0x3c, 0x66, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0x66, 0x3c, 0x18, + 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xc3, 0x61, 0x30, 0x18, 0x0c, + 0x06, 0x83, 0xc3, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, + 0x0c, 0x0c, 0x0c, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0e, 0x1c, + 0x38, 0x70, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x1c, 0x36, 0x63, 0x00, 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, 0x00, 0x00, + 0x0c, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x30, 0x3e, + 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x06, 0x06, 0x1e, 0x36, 0x66, + 0x66, 0x66, 0x66, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x63, 0x03, + 0x03, 0x03, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x30, 0x30, 0x3c, 0x36, 0x33, + 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x63, 0x7f, + 0x03, 0x03, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1c, 0x36, 0x26, 0x06, 0x0f, 0x06, + 0x06, 0x06, 0x06, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x3e, 0x30, 0x33, 0x1e, 0x00, + 0x00, 0x00, 0x07, 0x06, 0x06, 0x36, 0x6e, 0x66, + 0x66, 0x66, 0x66, 0x67, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x18, 0x00, 0x1c, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x60, 0x60, 0x00, 0x70, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x66, 0x66, 0x3c, 0x00, + 0x00, 0x00, 0x07, 0x06, 0x06, 0x66, 0x36, 0x1e, + 0x1e, 0x36, 0x66, 0x67, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0xff, 0xdb, + 0xdb, 0xdb, 0xdb, 0xdb, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x66, 0x66, + 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x63, 0x63, + 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x66, 0x66, + 0x66, 0x66, 0x66, 0x3e, 0x06, 0x06, 0x0f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x3e, 0x30, 0x30, 0x78, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x6e, 0x66, + 0x06, 0x06, 0x06, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x63, 0x06, + 0x1c, 0x30, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x0c, 0x0c, 0x3f, 0x0c, 0x0c, + 0x0c, 0x0c, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0xc3, + 0xc3, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0xc3, + 0xdb, 0xdb, 0xff, 0x66, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x66, 0x3c, + 0x18, 0x3c, 0x66, 0xc3, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x63, 0x63, + 0x63, 0x63, 0x63, 0x7e, 0x60, 0x30, 0x1f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x33, 0x18, + 0x0c, 0x06, 0x63, 0x7f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x0e, 0x18, + 0x18, 0x18, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x18, 0x18, 0x18, 0x70, 0x18, + 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x6e, 0x3b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x1c, 0x36, 0x63, + 0x63, 0x63, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3c, 0x66, 0x43, 0x03, 0x03, 0x03, + 0x43, 0x66, 0x3c, 0x30, 0x60, 0x3e, 0x00, 0x00, + 0x00, 0x00, 0x33, 0x00, 0x00, 0x33, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x30, 0x18, 0x0c, 0x00, 0x3e, 0x63, 0x7f, + 0x03, 0x03, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x1c, 0x36, 0x00, 0x1e, 0x30, 0x3e, + 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x33, 0x00, 0x00, 0x1e, 0x30, 0x3e, + 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0c, 0x18, 0x00, 0x1e, 0x30, 0x3e, + 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x36, 0x1c, 0x00, 0x1e, 0x30, 0x3e, + 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x06, 0x06, + 0x66, 0x3c, 0x30, 0x60, 0x3c, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x1c, 0x36, 0x00, 0x3e, 0x63, 0x7f, + 0x03, 0x03, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x63, 0x00, 0x00, 0x3e, 0x63, 0x7f, + 0x03, 0x03, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0c, 0x18, 0x00, 0x3e, 0x63, 0x7f, + 0x03, 0x03, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x66, 0x00, 0x00, 0x1c, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x3c, 0x66, 0x00, 0x1c, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0c, 0x18, 0x00, 0x1c, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x63, 0x00, 0x08, 0x1c, 0x36, 0x63, 0x63, + 0x7f, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x36, 0x1c, 0x00, 0x1c, 0x36, 0x63, 0x63, + 0x7f, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x0c, 0x06, 0x00, 0x7f, 0x66, 0x06, 0x3e, + 0x06, 0x06, 0x66, 0x7f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0xd8, + 0x7e, 0x1b, 0x3b, 0xee, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7c, 0x36, 0x33, 0x33, 0x7f, 0x33, + 0x33, 0x33, 0x33, 0x73, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x1c, 0x36, 0x00, 0x3e, 0x63, 0x63, + 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x63, 0x00, 0x00, 0x3e, 0x63, 0x63, + 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0c, 0x18, 0x00, 0x3e, 0x63, 0x63, + 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x1e, 0x33, 0x00, 0x33, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0c, 0x18, 0x00, 0x33, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x63, 0x00, 0x00, 0x63, 0x63, 0x63, + 0x63, 0x63, 0x63, 0x7e, 0x60, 0x30, 0x1e, 0x00, + 0x00, 0x63, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, + 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x63, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, + 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x18, 0x7e, 0xc3, 0x03, 0x03, 0x03, + 0xc3, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x36, 0x26, 0x06, 0x0f, 0x06, 0x06, + 0x06, 0x06, 0x67, 0x3f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc3, 0x66, 0x3c, 0x18, 0xff, 0x18, + 0xff, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3f, 0x66, 0x66, 0x3e, 0x46, 0x66, 0xf6, + 0x66, 0x66, 0x66, 0xcf, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x70, 0xd8, 0x18, 0x18, 0x18, 0x7e, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x1b, 0x0e, 0x00, 0x00, + 0x00, 0x18, 0x0c, 0x06, 0x00, 0x1e, 0x30, 0x3e, + 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x30, 0x18, 0x0c, 0x00, 0x1c, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x0c, 0x06, 0x00, 0x3e, 0x63, 0x63, + 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x0c, 0x06, 0x00, 0x33, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x6e, 0x3b, 0x00, 0x3b, 0x66, 0x66, + 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, + 0x6e, 0x3b, 0x00, 0x63, 0x67, 0x6f, 0x7f, 0x7b, + 0x73, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3c, 0x36, 0x36, 0x7c, 0x00, 0x7e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x36, 0x36, 0x1c, 0x00, 0x3e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x0c, 0x0c, 0x06, + 0x03, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x03, + 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x60, + 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x03, 0x43, 0x63, 0x33, 0x18, 0x0c, + 0x06, 0x73, 0xd9, 0x60, 0x30, 0xf8, 0x00, 0x00, + 0x00, 0x03, 0x03, 0x43, 0x63, 0x33, 0x18, 0x0c, + 0x66, 0x73, 0x69, 0x7c, 0x60, 0x60, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, + 0x3c, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x36, 0x1b, + 0x36, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x36, 0x6c, + 0x36, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, + 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, + 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, + 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, + 0xbb, 0xee, 0xbb, 0xee, 0xbb, 0xee, 0xbb, 0xee, + 0xbb, 0xee, 0xbb, 0xee, 0xbb, 0xee, 0xbb, 0xee, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6f, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x1f, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6f, 0x60, 0x6f, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x60, 0x6f, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6f, 0x60, 0x7f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x7f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xec, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xec, 0x0c, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x0c, 0xec, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xef, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xef, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xec, 0x0c, 0xec, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xef, 0x00, 0xef, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, + 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0xf8, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xff, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, + 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0xff, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, + 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x3b, 0x1b, + 0x1b, 0x1b, 0x3b, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1e, 0x33, 0x33, 0x33, 0x1b, 0x33, + 0x63, 0x63, 0x63, 0x33, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7f, 0x63, 0x63, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7f, 0x36, 0x36, 0x36, + 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7f, 0x63, 0x06, 0x0c, 0x18, + 0x0c, 0x06, 0x63, 0x7f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x1b, 0x1b, + 0x1b, 0x1b, 0x1b, 0x0e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, + 0x66, 0x3e, 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x6e, 0x3b, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7e, 0x18, 0x3c, 0x66, 0x66, + 0x66, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1c, 0x36, 0x63, 0x63, 0x7f, + 0x63, 0x63, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1c, 0x36, 0x63, 0x63, 0x63, 0x36, + 0x36, 0x36, 0x36, 0x77, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x78, 0x0c, 0x18, 0x30, 0x7c, 0x66, + 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xdb, 0xdb, + 0xdb, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xc0, 0x60, 0x7e, 0xdb, 0xdb, + 0xcf, 0x7e, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x0c, 0x06, 0x06, 0x3e, 0x06, + 0x06, 0x06, 0x0c, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, + 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x7f, + 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, + 0x18, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x60, 0x30, + 0x18, 0x0c, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x30, 0x18, 0x0c, 0x06, 0x0c, + 0x18, 0x30, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x70, 0xd8, 0xd8, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x1b, 0x1b, 0x1b, 0x0e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x7e, + 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x3b, 0x00, + 0x6e, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x36, 0x36, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xf0, 0x30, 0x30, 0x30, 0x30, 0x30, 0x37, + 0x36, 0x36, 0x3c, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1b, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x1b, 0x0c, 0x06, 0x13, 0x1f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x3e, 0x3e, + 0x3e, 0x3e, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +static const txt_font_t normal_font = +{ + "normal", normal_font_data, 8, 16, +}; diff --git a/textscreen/fonts/normal.png b/textscreen/fonts/normal.png new file mode 100644 index 00000000..884bb98d Binary files /dev/null and b/textscreen/fonts/normal.png differ diff --git a/textscreen/fonts/small.h b/textscreen/fonts/small.h new file mode 100644 index 00000000..06a479bf --- /dev/null +++ b/textscreen/fonts/small.h @@ -0,0 +1,140 @@ +/* Font data generated from small.png; do not edit. + Please see textscreen/fonts/README for copyright + information. */ + +static const uint8_t small_font_data[] = +{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4e, 0x00, + 0xf6, 0xf5, 0xb1, 0x6f, 0x00, 0xea, 0x04, 0x00, + 0x00, 0xe4, 0x04, 0x00, 0x40, 0xaa, 0xe4, 0x00, + 0x40, 0xee, 0xe4, 0x00, 0x00, 0x60, 0x06, 0x00, + 0xff, 0x9f, 0xf9, 0xff, 0x00, 0x96, 0x69, 0x00, + 0xff, 0x69, 0x96, 0xff, 0xe0, 0x74, 0x75, 0x00, + 0x60, 0x69, 0x6f, 0x06, 0xc0, 0x44, 0x74, 0x03, + 0xe0, 0xaa, 0xba, 0x03, 0x22, 0x27, 0x27, 0x22, + 0x10, 0x73, 0x13, 0x00, 0x80, 0xec, 0x8c, 0x00, + 0x40, 0x4e, 0xe4, 0x04, 0xa0, 0xaa, 0xa0, 0x00, + 0xf0, 0xb9, 0xaa, 0x00, 0x16, 0x96, 0x86, 0x06, + 0x00, 0x00, 0xff, 0x00, 0x40, 0x4e, 0xe4, 0xf4, + 0x40, 0x4e, 0x44, 0x04, 0x40, 0x44, 0xe4, 0x04, + 0x20, 0xf4, 0x24, 0x00, 0x40, 0xf2, 0x42, 0x00, + 0x00, 0x10, 0x07, 0x00, 0x00, 0xf5, 0x05, 0x00, + 0x00, 0x72, 0x0f, 0x00, 0x00, 0x7f, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x22, 0x02, 0x02, + 0x50, 0x05, 0x00, 0x00, 0x50, 0x57, 0x75, 0x05, + 0x22, 0x25, 0x54, 0x22, 0x50, 0x24, 0x12, 0x05, + 0x52, 0x52, 0x35, 0x06, 0x20, 0x02, 0x00, 0x00, + 0x40, 0x22, 0x22, 0x04, 0x10, 0x22, 0x22, 0x01, + 0x50, 0x72, 0x52, 0x00, 0x20, 0x72, 0x22, 0x00, + 0x00, 0x00, 0x20, 0x12, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x20, 0x02, 0x40, 0x24, 0x12, 0x01, + 0x20, 0x75, 0x55, 0x02, 0x20, 0x23, 0x22, 0x07, + 0x20, 0x45, 0x12, 0x07, 0x70, 0x24, 0x54, 0x02, + 0x40, 0x56, 0x47, 0x04, 0x70, 0x31, 0x54, 0x02, + 0x60, 0x31, 0x55, 0x02, 0x70, 0x44, 0x22, 0x02, + 0x20, 0x25, 0x55, 0x02, 0x20, 0x55, 0x46, 0x03, + 0x00, 0x02, 0x20, 0x00, 0x00, 0x02, 0x20, 0x01, + 0x00, 0x24, 0x21, 0x04, 0x00, 0x07, 0x07, 0x00, + 0x00, 0x21, 0x24, 0x01, 0x20, 0x45, 0x02, 0x02, + 0x20, 0x55, 0x11, 0x06, 0x20, 0x55, 0x57, 0x05, + 0x30, 0x35, 0x55, 0x03, 0x20, 0x15, 0x51, 0x02, + 0x30, 0x55, 0x55, 0x03, 0x70, 0x71, 0x11, 0x07, + 0x70, 0x71, 0x11, 0x01, 0x20, 0x15, 0x55, 0x02, + 0x50, 0x75, 0x55, 0x05, 0x70, 0x22, 0x22, 0x07, + 0x40, 0x44, 0x54, 0x02, 0x50, 0x35, 0x55, 0x05, + 0x10, 0x11, 0x11, 0x07, 0x50, 0x57, 0x55, 0x05, + 0x40, 0x75, 0x57, 0x01, 0x20, 0x55, 0x55, 0x02, + 0x30, 0x55, 0x13, 0x01, 0x20, 0x55, 0x35, 0x06, + 0x30, 0x55, 0x53, 0x05, 0x20, 0x25, 0x54, 0x02, + 0x70, 0x22, 0x22, 0x02, 0x50, 0x55, 0x55, 0x07, + 0x50, 0x55, 0x55, 0x02, 0x50, 0x55, 0x75, 0x05, + 0x50, 0x25, 0x55, 0x05, 0x50, 0x25, 0x22, 0x02, + 0x70, 0x24, 0x12, 0x07, 0x60, 0x22, 0x22, 0x06, + 0x10, 0x21, 0x42, 0x04, 0x30, 0x22, 0x22, 0x03, + 0x20, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, + 0x10, 0x02, 0x00, 0x00, 0x00, 0x43, 0x56, 0x06, + 0x10, 0x31, 0x55, 0x03, 0x00, 0x16, 0x11, 0x06, + 0x40, 0x64, 0x55, 0x06, 0x00, 0x52, 0x17, 0x06, + 0x40, 0x72, 0x22, 0x02, 0x00, 0x56, 0x65, 0x34, + 0x10, 0x31, 0x55, 0x05, 0x20, 0x30, 0x22, 0x07, + 0x40, 0x60, 0x44, 0x34, 0x10, 0x51, 0x53, 0x05, + 0x20, 0x22, 0x22, 0x02, 0x00, 0x75, 0x55, 0x05, + 0x00, 0x53, 0x55, 0x05, 0x00, 0x52, 0x55, 0x02, + 0x00, 0x53, 0x35, 0x11, 0x00, 0x56, 0x65, 0x44, + 0x00, 0x16, 0x11, 0x01, 0x00, 0x16, 0x42, 0x03, + 0x20, 0x72, 0x22, 0x02, 0x00, 0x55, 0x55, 0x07, + 0x00, 0x55, 0x55, 0x02, 0x00, 0x55, 0x75, 0x05, + 0x00, 0x55, 0x52, 0x05, 0x00, 0x55, 0x65, 0x34, + 0x00, 0x47, 0x12, 0x07, 0x24, 0x12, 0x22, 0x04, + 0x22, 0x02, 0x22, 0x02, 0x21, 0x42, 0x22, 0x01, + 0xa0, 0x05, 0x00, 0x00, 0x20, 0x55, 0x75, 0x00, + 0x20, 0x15, 0x51, 0x32, 0x05, 0x55, 0x55, 0x07, + 0x12, 0x52, 0x17, 0x06, 0xa4, 0x43, 0x56, 0x06, + 0x05, 0x43, 0x56, 0x06, 0x42, 0x43, 0x56, 0x06, + 0x52, 0x42, 0x56, 0x06, 0x00, 0x16, 0x11, 0x36, + 0x52, 0x52, 0x17, 0x06, 0x05, 0x52, 0x17, 0x06, + 0x42, 0x52, 0x17, 0x06, 0x50, 0x30, 0x22, 0x07, + 0x52, 0x30, 0x22, 0x07, 0x42, 0x30, 0x22, 0x07, + 0x05, 0x52, 0x57, 0x05, 0x52, 0x52, 0x57, 0x05, + 0x24, 0x17, 0x13, 0x07, 0x00, 0xad, 0x5e, 0x0e, + 0xe0, 0xf5, 0x55, 0x0d, 0x52, 0x20, 0x55, 0x02, + 0x05, 0x52, 0x55, 0x02, 0x42, 0x52, 0x55, 0x02, + 0x52, 0x50, 0x55, 0x07, 0x42, 0x50, 0x55, 0x07, + 0x05, 0x55, 0x65, 0x34, 0x05, 0x52, 0x55, 0x02, + 0x05, 0x55, 0x55, 0x07, 0x20, 0x16, 0x61, 0x02, + 0x2c, 0x72, 0x22, 0x0f, 0x50, 0x25, 0x27, 0x02, + 0x30, 0x35, 0xd5, 0x05, 0x48, 0xe4, 0x54, 0x02, + 0x24, 0x43, 0x56, 0x06, 0x24, 0x30, 0x22, 0x07, + 0x12, 0x52, 0x55, 0x02, 0x24, 0x50, 0x55, 0x07, + 0x5a, 0x30, 0x55, 0x05, 0x5a, 0x90, 0xdb, 0x09, + 0x56, 0x0e, 0x0f, 0x00, 0x52, 0x02, 0x07, 0x00, + 0x20, 0x20, 0x51, 0x02, 0x00, 0x70, 0x11, 0x00, + 0x00, 0xe0, 0x88, 0x00, 0x11, 0x25, 0x8d, 0xc4, + 0x11, 0x25, 0xa1, 0x8e, 0x20, 0x20, 0x22, 0x02, + 0x00, 0xa0, 0xa5, 0x00, 0x00, 0x50, 0x5a, 0x00, + 0x28, 0x28, 0x28, 0x28, 0x5a, 0x5a, 0x5a, 0x5a, + 0xeb, 0xeb, 0xeb, 0xeb, 0x44, 0x44, 0x44, 0x44, + 0x44, 0x74, 0x44, 0x44, 0x44, 0x47, 0x47, 0x44, + 0xaa, 0xba, 0xaa, 0xaa, 0x00, 0xf0, 0xaa, 0xaa, + 0x00, 0x47, 0x47, 0x44, 0xaa, 0x8b, 0xab, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x8f, 0xab, 0xaa, + 0xaa, 0x8b, 0x0f, 0x00, 0xaa, 0xfa, 0x00, 0x00, + 0x44, 0x47, 0x07, 0x00, 0x00, 0x70, 0x44, 0x44, + 0x44, 0xc4, 0x00, 0x00, 0x44, 0xf4, 0x00, 0x00, + 0x00, 0xf0, 0x44, 0x44, 0x44, 0xc4, 0x44, 0x44, + 0x00, 0xf0, 0x00, 0x00, 0x44, 0xf4, 0x44, 0x44, + 0x44, 0x4c, 0x4c, 0x44, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x2a, 0x0e, 0x00, 0x00, 0x2e, 0xaa, 0xaa, + 0xaa, 0x0b, 0x0f, 0x00, 0x00, 0x0f, 0xab, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x0f, 0x0f, 0x00, + 0xaa, 0x0b, 0xab, 0xaa, 0x44, 0x0f, 0x0f, 0x00, + 0xaa, 0xfa, 0x00, 0x00, 0x00, 0x0f, 0x4f, 0x44, + 0x00, 0xf0, 0xaa, 0xaa, 0xaa, 0xea, 0x00, 0x00, + 0x44, 0x4c, 0x0c, 0x00, 0x00, 0x4c, 0x4c, 0x44, + 0x00, 0xe0, 0xaa, 0xaa, 0xaa, 0xfa, 0xaa, 0xaa, + 0x44, 0x4f, 0x4f, 0x44, 0x44, 0x74, 0x00, 0x00, + 0x00, 0xc0, 0x44, 0x44, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x33, 0x33, 0x33, 0x33, + 0xcc, 0xcc, 0xcc, 0xcc, 0xff, 0xff, 0x00, 0x00, + 0x00, 0xa0, 0x55, 0x0a, 0x30, 0x35, 0x95, 0x05, + 0xf0, 0x19, 0x11, 0x01, 0x00, 0x5f, 0x55, 0x05, + 0x00, 0x17, 0x12, 0x07, 0x00, 0x5e, 0x55, 0x02, + 0x00, 0xaa, 0x2e, 0x01, 0x00, 0x5a, 0x44, 0x04, + 0x70, 0x52, 0x25, 0x07, 0x20, 0x75, 0x55, 0x02, + 0x60, 0x99, 0x66, 0x0f, 0x60, 0x21, 0x55, 0x02, + 0x00, 0xd6, 0x6b, 0x00, 0x80, 0x9f, 0xf9, 0x01, + 0x60, 0x71, 0x11, 0x06, 0x20, 0x55, 0x55, 0x05, + 0x70, 0x70, 0x70, 0x00, 0x20, 0x27, 0x70, 0x00, + 0x10, 0x42, 0x12, 0x07, 0x40, 0x12, 0x42, 0x07, + 0x80, 0x44, 0x44, 0x44, 0x44, 0x44, 0x25, 0x00, + 0x00, 0x02, 0x07, 0x02, 0xa0, 0x05, 0x5a, 0x00, + 0x52, 0x02, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x4c, 0x54, 0x46, 0x00, + 0x57, 0x55, 0x00, 0x00, 0x43, 0x72, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +static const txt_font_t small_font = +{ + "small", small_font_data, 4, 8, +}; diff --git a/textscreen/fonts/small.png b/textscreen/fonts/small.png new file mode 100644 index 00000000..155797fe Binary files /dev/null and b/textscreen/fonts/small.png differ diff --git a/textscreen/textscreen.h b/textscreen/textscreen.h new file mode 100644 index 00000000..c778994a --- /dev/null +++ b/textscreen/textscreen.h @@ -0,0 +1,48 @@ +// +// Copyright(C) 2005-2014 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// + +#ifndef TEXTSCREEN_H +#define TEXTSCREEN_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "../src/doomkeys.h" +#include "txt_main.h" + +#include "txt_button.h" +#include "txt_checkbox.h" +#include "txt_conditional.h" +#include "txt_desktop.h" +#include "txt_dropdown.h" +#include "txt_fileselect.h" +#include "txt_inputbox.h" +#include "txt_label.h" +#include "txt_radiobutton.h" +#include "txt_scrollpane.h" +#include "txt_separator.h" +#include "txt_spinctrl.h" +#include "txt_strut.h" +#include "txt_table.h" +#include "txt_widget.h" +#include "txt_window_action.h" +#include "txt_window.h" + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef TEXTSCREEN_H */ + diff --git a/textscreen/txt_main.h b/textscreen/txt_main.h new file mode 100644 index 00000000..9bb126ac --- /dev/null +++ b/textscreen/txt_main.h @@ -0,0 +1,201 @@ +// +// Copyright(C) 2005-2014 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// +// Base interface that abstracts the text mode screen. +// + +#ifndef TXT_MAIN_H +#define TXT_MAIN_H + +// For the moment, txt_sdl.c is the only implementation of the base +// text mode screen API: + +#include "txt_sdl.h" + +// textscreen key values: +// Key values are difficult because we have to support multiple conflicting +// address spaces. +// First, Doom's key constants use 0-127 as ASCII and extra values from +// 128-255 to represent special keys. Second, mouse buttons are represented +// as buttons. Finally, we want to be able to support Unicode. +// +// So we define different ranges: +// 0-255: Doom key constants, including ASCII. +// 256-511: Mouse buttons and other reserved. +// >=512: Unicode values greater than 127 are offset up into this range. + +// Special keypress values that correspond to mouse button clicks + +#define TXT_MOUSE_BASE 256 +#define TXT_MOUSE_LEFT (TXT_MOUSE_BASE + 0) +#define TXT_MOUSE_RIGHT (TXT_MOUSE_BASE + 1) +#define TXT_MOUSE_MIDDLE (TXT_MOUSE_BASE + 2) +#define TXT_MOUSE_SCROLLUP (TXT_MOUSE_BASE + 3) +#define TXT_MOUSE_SCROLLDOWN (TXT_MOUSE_BASE + 4) +#define TXT_MAX_MOUSE_BUTTONS 16 + +#define TXT_KEY_TO_MOUSE_BUTTON(x) \ + ( (x) >= TXT_MOUSE_BASE \ + && (x) < TXT_MOUSE_BASE + TXT_MAX_MOUSE_BUTTONS ? \ + (x) - TXT_MOUSE_BASE : -1 ) + +// Unicode offset. Unicode values from 128 onwards are offset up into +// this range, so TXT_UNICODE_BASE = Unicode character #128, and so on. + +#define TXT_UNICODE_BASE 512 + +// Convert a key value to a Unicode character: + +#define TXT_KEY_TO_UNICODE(x) \ + ( (x) < 128 ? (x) : \ + (x) >= TXT_UNICODE_BASE ? ((x) - TXT_UNICODE_BASE + 128) : 0 ) + +// Convert a Unicode character to a key value: + +#define TXT_UNICODE_TO_KEY(u) \ + ( (u) < 128 ? (u) : ((u) - 128 + TXT_UNICODE_BASE) ) + +// Screen size + +#define TXT_SCREEN_W 80 +#define TXT_SCREEN_H 25 + +#define TXT_COLOR_BLINKING (1 << 3) + +typedef enum +{ + TXT_COLOR_BLACK, + TXT_COLOR_BLUE, + TXT_COLOR_GREEN, + TXT_COLOR_CYAN, + TXT_COLOR_RED, + TXT_COLOR_MAGENTA, + TXT_COLOR_BROWN, + TXT_COLOR_GREY, + TXT_COLOR_DARK_GREY, + TXT_COLOR_BRIGHT_BLUE, + TXT_COLOR_BRIGHT_GREEN, + TXT_COLOR_BRIGHT_CYAN, + TXT_COLOR_BRIGHT_RED, + TXT_COLOR_BRIGHT_MAGENTA, + TXT_COLOR_YELLOW, + TXT_COLOR_BRIGHT_WHITE, +} txt_color_t; + +// Modifier keys. + +typedef enum +{ + TXT_MOD_SHIFT, + TXT_MOD_CTRL, + TXT_MOD_ALT, + TXT_NUM_MODIFIERS +} txt_modifier_t; + +// Due to the way the SDL API works, we provide different ways of configuring +// how we read input events, each of which is useful in different scenarios. +typedef enum +{ + // "Localized" output that takes software keyboard layout into account, + // but key shifting has no effect. + TXT_INPUT_NORMAL, + + // "Raw" input; the keys correspond to physical keyboard layout and + // software keyboard layout has no effect. + TXT_INPUT_RAW, + + // Used for full text input. Events are fully shifted and localized. + // However, not all keyboard keys will generate input. + // Setting this mode may activate the on-screen keyboard, depending on + // device and OS. + TXT_INPUT_TEXT, +} txt_input_mode_t; + + +#ifdef __GNUC__ + +#define PRINTF_ATTR(fmt, first) __attribute__((format(printf, fmt, first))) + +#else // __GNUC__ + +#define PRINTF_ATTR(fmt, first) + +#endif // __GNUC__ + +// Initialize the screen +// Returns 1 if successful, 0 if failed. +int TXT_Init(void); + +// Shut down text mode emulation +void TXT_Shutdown(void); + +// Get a pointer to the buffer containing the raw screen data. +unsigned char *TXT_GetScreenData(void); + +// Update an area of the screen +void TXT_UpdateScreenArea(int x, int y, int w, int h); + +// Update the whole screen +void TXT_UpdateScreen(void); + +// Set the RGB value for a particular entry in the color palette: +void TXT_SetColor(txt_color_t color, int r, int g, int b); + +// Read a character from the keyboard +int TXT_GetChar(void); + +// Given a Unicode character, get a character that can be used to represent +// it on the code page being displayed on the screen. If the character cannot +// be represented, this returns -1. +int TXT_UnicodeCharacter(unsigned int c); + +// Read the current state of modifier keys that are held down. +int TXT_GetModifierState(txt_modifier_t mod); + +// Provides a short description of a key code, placing into the provided +// buffer. Note that the key is assumed to represent a physical key on the +// keyboard (like that returned by TXT_INPUT_RAW), and the resulting string +// takes keyboard layout into consideration. For example, +// TXT_GetKeyDescription('q') on a French keyboard returns "A". +// The contents of the filled buffer will be in UTF-8 format, but will never +// contain characters which can't be shown on the screen. +void TXT_GetKeyDescription(int key, char *buf, size_t buf_len); + +// Retrieve the current position of the mouse +void TXT_GetMousePosition(int *x, int *y); + +// Sleep until an event is received or the screen needs updating +// Optional timeout in ms (timeout == 0 : sleep forever) +void TXT_Sleep(int timeout); + +// Change mode for text input. +void TXT_SetInputMode(txt_input_mode_t mode); + +// Set the window title of the window containing the text mode screen +void TXT_SetWindowTitle(const char *title); + +// Safe string copy. +void TXT_StringCopy(char *dest, const char *src, size_t dest_len); + +// Safe string concatenate. +void TXT_StringConcat(char *dest, const char *src, size_t dest_len); + +// Safe version of vsnprintf(). +int TXT_vsnprintf(char *buf, size_t buf_len, const char *s, va_list args) PRINTF_ATTR(3, 0); + +// Safe version of snprintf(). +int TXT_snprintf(char *buf, size_t buf_len, const char *s, ...) PRINTF_ATTR(3, 4); + +#endif /* #ifndef TXT_MAIN_H */ + diff --git a/textscreen/txt_sdl.c b/textscreen/txt_sdl.c new file mode 100644 index 00000000..69ed3977 --- /dev/null +++ b/textscreen/txt_sdl.c @@ -0,0 +1,1011 @@ +// +// Copyright(C) 2005-2014 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// +// Text mode emulation in SDL +// + +#include "SDL.h" + +#include +#include +#include +#include + +#include "doomkeys.h" + +#include "txt_main.h" +#include "txt_sdl.h" +#include "txt_utf8.h" + +#if defined(_MSC_VER) && !defined(__cplusplus) +#define inline __inline +#endif + +typedef struct +{ + const char *name; + const uint8_t *data; + unsigned int w; + unsigned int h; +} txt_font_t; + +// Fonts: + +#include "fonts/small.h" +#include "fonts/normal.h" +#include "fonts/large.h" +#include "fonts/codepage.h" + +// Time between character blinks in ms + +#define BLINK_PERIOD 250 + +SDL_Window *TXT_SDLWindow; +static SDL_Surface *screenbuffer; +static unsigned char *screendata; +static SDL_Renderer *renderer; + +// Current input mode. +static txt_input_mode_t input_mode = TXT_INPUT_NORMAL; + +// Dimensions of the screen image in screen coordinates (not pixels); this +// is the value that was passed to SDL_CreateWindow(). +static int screen_image_w, screen_image_h; + +static TxtSDLEventCallbackFunc event_callback; +static void *event_callback_data; + +// Font we are using: +static const txt_font_t *font; + +// Dummy "font" that means to try highdpi rendering, or fallback to +// normal_font otherwise. +static const txt_font_t highdpi_font = { "normal-highdpi", NULL, 8, 16 }; + +// Mapping from SDL keyboard scancode to internal key code. +static const int scancode_translate_table[] = SCANCODE_TO_KEYS_ARRAY; + +// String names of keys. This is a fallback; we usually use the SDL API. +static const struct { + int key; + const char *name; +} key_names[] = KEY_NAMES_ARRAY; + +// Unicode key mapping; see codepage.h. +static const short code_page_to_unicode[] = CODE_PAGE_TO_UNICODE; + +static const SDL_Color ega_colors[] = +{ + {0x00, 0x00, 0x00, 0xff}, // 0: Black + {0x00, 0x00, 0xa8, 0xff}, // 1: Blue + {0x00, 0xa8, 0x00, 0xff}, // 2: Green + {0x00, 0xa8, 0xa8, 0xff}, // 3: Cyan + {0xa8, 0x00, 0x00, 0xff}, // 4: Red + {0xa8, 0x00, 0xa8, 0xff}, // 5: Magenta + {0xa8, 0x54, 0x00, 0xff}, // 6: Brown + {0xa8, 0xa8, 0xa8, 0xff}, // 7: Grey + {0x54, 0x54, 0x54, 0xff}, // 8: Dark grey + {0x54, 0x54, 0xfe, 0xff}, // 9: Bright blue + {0x54, 0xfe, 0x54, 0xff}, // 10: Bright green + {0x54, 0xfe, 0xfe, 0xff}, // 11: Bright cyan + {0xfe, 0x54, 0x54, 0xff}, // 12: Bright red + {0xfe, 0x54, 0xfe, 0xff}, // 13: Bright magenta + {0xfe, 0xfe, 0x54, 0xff}, // 14: Yellow + {0xfe, 0xfe, 0xfe, 0xff}, // 15: Bright white +}; + +#ifdef _WIN32 + +#define WIN32_LEAN_AND_MEAN +#include + +// Examine system DPI settings to determine whether to use the large font. + +static int Win32_UseLargeFont(void) +{ + HDC hdc = GetDC(NULL); + int dpix; + + if (!hdc) + { + return 0; + } + + dpix = GetDeviceCaps(hdc, LOGPIXELSX); + ReleaseDC(NULL, hdc); + + // 144 is the DPI when using "150%" scaling. If the user has this set + // then consider this an appropriate threshold for using the large font. + + return dpix >= 144; +} + +#endif + +static const txt_font_t *FontForName(const char *name) +{ + int i; + const txt_font_t *fonts[] = + { + &small_font, + &normal_font, + &large_font, + &highdpi_font, + NULL, + }; + + for (i = 0; fonts[i]->name != NULL; ++i) + { + if (!strcmp(fonts[i]->name, name)) + { + return fonts[i]; + } + } + return NULL; +} + +// +// Select the font to use, based on screen resolution +// +// If the highest screen resolution available is less than +// 640x480, use the small font. +// + +static void ChooseFont(void) +{ + SDL_DisplayMode desktop_info; + char *env; + + // Allow normal selection to be overridden from an environment variable: + env = getenv("TEXTSCREEN_FONT"); + if (env != NULL) + { + font = FontForName(env); + + if (font != NULL) + { + return; + } + } + + // Get desktop resolution. + // If in doubt and we can't get a list, always prefer to + // fall back to the normal font: + if (SDL_GetCurrentDisplayMode(0, &desktop_info)) + { + font = &highdpi_font; + return; + } + + // On tiny low-res screens (eg. palmtops) use the small font. + // If the screen resolution is at least 1920x1080, this is + // a modern high-resolution display, and we can use the + // large font. + + if (desktop_info.w < 640 || desktop_info.h < 480) + { + font = &small_font; + } +#ifdef _WIN32 + // On Windows we can use the system DPI settings to make a + // more educated guess about whether to use the large font. + + else if (Win32_UseLargeFont()) + { + font = &large_font; + } +#endif + // TODO: Detect high DPI on Linux by inquiring about Gtk+ scale + // settings. This looks like it should just be a case of shelling + // out to invoke the 'gsettings' command, eg. + // gsettings get org.gnome.desktop.interface text-scaling-factor + // and using large_font if the result is >= 2. + else + { + // highdpi_font usually means normal_font (the normal resolution + // version), but actually means "set the HIGHDPI flag and try + // to use large_font if we initialize successfully". + font = &highdpi_font; + } +} + +// +// Initialize text mode screen +// +// Returns 1 if successful, 0 if an error occurred +// + +void TXT_PreInit(SDL_Window *preset_window, SDL_Renderer *preset_renderer) +{ + if (preset_window != NULL && preset_renderer != NULL) + { + TXT_SDLWindow = preset_window; + renderer = preset_renderer; + } +} + +int TXT_Init(void) +{ + int flags = 0; + + if (SDL_Init(SDL_INIT_VIDEO) < 0) + { + return 0; + } + + ChooseFont(); + + screen_image_w = TXT_SCREEN_W * font->w; + screen_image_h = TXT_SCREEN_H * font->h; + + // If highdpi_font is selected, try to initialize high dpi rendering. + if (font == &highdpi_font) + { + flags |= SDL_WINDOW_ALLOW_HIGHDPI; + } + + if (TXT_SDLWindow == NULL) + { + TXT_SDLWindow = + SDL_CreateWindow("", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, + screen_image_w, screen_image_h, flags); + } + + if (TXT_SDLWindow == NULL) + return 0; + + // Destroy the existing renderer, so we can create our own new one + + if (renderer != NULL) + { + SDL_DestroyRenderer(renderer); + } + + renderer = SDL_CreateRenderer(TXT_SDLWindow, -1, SDL_RENDERER_PRESENTVSYNC); + + if (renderer == NULL) + renderer = SDL_CreateRenderer(TXT_SDLWindow, -1, SDL_RENDERER_SOFTWARE); + + if (renderer == NULL) + return 0; + + // Special handling for OS X retina display. If we successfully set the + // highdpi flag, check the output size for the screen renderer. If we get + // the 2x doubled size we expect from a retina display, use the large font + // for drawing the screen. + if ((SDL_GetWindowFlags(TXT_SDLWindow) & SDL_WINDOW_ALLOW_HIGHDPI) != 0) + { + int render_w, render_h; + + if (SDL_GetRendererOutputSize(renderer, &render_w, &render_h) == 0 + && render_w >= TXT_SCREEN_W * large_font.w + && render_h >= TXT_SCREEN_H * large_font.h) + { + font = &large_font; + // Note that we deliberately do not update screen_image_{w,h} + // since these are the dimensions of textscreen image in screen + // coordinates, not pixels. + } + } + + // Failed to initialize for high dpi (retina display) rendering? If so + // then use the normal resolution font instead. + if (font == &highdpi_font) + { + font = &normal_font; + } + + // Instead, we draw everything into an intermediate 8-bit surface + // the same dimensions as the screen. SDL then takes care of all the + // 8->32 bit (or whatever depth) color conversions for us. + screenbuffer = SDL_CreateRGBSurface(0, + TXT_SCREEN_W * font->w, + TXT_SCREEN_H * font->h, + 8, 0, 0, 0, 0); + + // Set width and height of the logical viewport for automatic scaling. + SDL_RenderSetLogicalSize(renderer, screenbuffer->w, screenbuffer->h); + + SDL_LockSurface(screenbuffer); + SDL_SetPaletteColors(screenbuffer->format->palette, ega_colors, 0, 16); + SDL_UnlockSurface(screenbuffer); + + screendata = malloc(TXT_SCREEN_W * TXT_SCREEN_H * 2); + memset(screendata, 0, TXT_SCREEN_W * TXT_SCREEN_H * 2); + + return 1; +} + +void TXT_Shutdown(void) +{ + free(screendata); + screendata = NULL; + SDL_FreeSurface(screenbuffer); + screenbuffer = NULL; + SDL_QuitSubSystem(SDL_INIT_VIDEO); +} + +void TXT_SetColor(txt_color_t color, int r, int g, int b) +{ + SDL_Color c = {r, g, b, 0xff}; + + SDL_LockSurface(screenbuffer); + SDL_SetPaletteColors(screenbuffer->format->palette, &c, color, 1); + SDL_UnlockSurface(screenbuffer); +} + +unsigned char *TXT_GetScreenData(void) +{ + return screendata; +} + +static inline void UpdateCharacter(int x, int y) +{ + unsigned char character; + const uint8_t *p; + unsigned char *s, *s1; + unsigned int bit; + int bg, fg; + unsigned int x1, y1; + + p = &screendata[(y * TXT_SCREEN_W + x) * 2]; + character = p[0]; + + fg = p[1] & 0xf; + bg = (p[1] >> 4) & 0xf; + + if (bg & 0x8) + { + // blinking + + bg &= ~0x8; + + if (((SDL_GetTicks() / BLINK_PERIOD) % 2) == 0) + { + fg = bg; + } + } + + // How many bytes per line? + p = &font->data[(character * font->w * font->h) / 8]; + bit = 0; + + s = ((unsigned char *) screenbuffer->pixels) + + (y * font->h * screenbuffer->pitch) + + (x * font->w); + + for (y1=0; y1h; ++y1) + { + s1 = s; + + for (x1=0; x1w; ++x1) + { + if (*p & (1 << bit)) + { + *s1++ = fg; + } + else + { + *s1++ = bg; + } + + ++bit; + if (bit == 8) + { + ++p; + bit = 0; + } + } + + s += screenbuffer->pitch; + } +} + +static int LimitToRange(int val, int min, int max) +{ + if (val < min) + { + return min; + } + else if (val > max) + { + return max; + } + else + { + return val; + } +} + +static void GetDestRect(SDL_Rect *rect) +{ + int w, h; + + SDL_GetRendererOutputSize(renderer, &w, &h); + // Set x and y to 0 due to SDL auto-centering. + rect->x = 0; + rect->y = 0; + rect->w = screenbuffer->w; + rect->h = screenbuffer->h; +} + +void TXT_UpdateScreenArea(int x, int y, int w, int h) +{ + SDL_Texture *screentx; + SDL_Rect rect; + int x1, y1; + int x_end; + int y_end; + + SDL_LockSurface(screenbuffer); + + x_end = LimitToRange(x + w, 0, TXT_SCREEN_W); + y_end = LimitToRange(y + h, 0, TXT_SCREEN_H); + x = LimitToRange(x, 0, TXT_SCREEN_W); + y = LimitToRange(y, 0, TXT_SCREEN_H); + + for (y1=y; y1= TXT_SCREEN_W) + { + *x = TXT_SCREEN_W - 1; + } + if (*y < 0) + { + *y = 0; + } + else if (*y >= TXT_SCREEN_H) + { + *y = TXT_SCREEN_H - 1; + } +} + +// +// Translates the SDL key +// + +// XXX: duplicate from doomtype.h +#define arrlen(array) (sizeof(array) / sizeof(*array)) + +static int TranslateScancode(SDL_Scancode scancode) +{ + switch (scancode) + { + case SDL_SCANCODE_LCTRL: + case SDL_SCANCODE_RCTRL: + return KEY_RCTRL; + + case SDL_SCANCODE_LSHIFT: + case SDL_SCANCODE_RSHIFT: + return KEY_RSHIFT; + + case SDL_SCANCODE_LALT: + return KEY_LALT; + + case SDL_SCANCODE_RALT: + return KEY_RALT; + + default: + if (scancode < arrlen(scancode_translate_table)) + { + return scancode_translate_table[scancode]; + } + else + { + return 0; + } + } +} + +static int TranslateKeysym(const SDL_Keysym *sym) +{ + int translated; + + // We cheat here and make use of TranslateScancode. The range of keys + // associated with printable characters is pretty contiguous, so if it's + // inside that range we want the localized version of the key instead. + translated = TranslateScancode(sym->scancode); + + if (translated >= 0x20 && translated < 0x7f) + { + return sym->sym; + } + else + { + return translated; + } +} + +// Convert an SDL button index to textscreen button index. +// +// Note special cases because 2 == mid in SDL, 3 == mid in textscreen/setup + +static int SDLButtonToTXTButton(int button) +{ + switch (button) + { + case SDL_BUTTON_LEFT: + return TXT_MOUSE_LEFT; + case SDL_BUTTON_RIGHT: + return TXT_MOUSE_RIGHT; + case SDL_BUTTON_MIDDLE: + return TXT_MOUSE_MIDDLE; + default: + return TXT_MOUSE_BASE + button - 1; + } +} + +// Convert an SDL wheel motion to a textscreen button index. + +static int SDLWheelToTXTButton(const SDL_MouseWheelEvent *wheel) +{ + if (wheel->y <= 0) + { + return TXT_MOUSE_SCROLLDOWN; + } + else + { + return TXT_MOUSE_SCROLLUP; + } +} + +static int MouseHasMoved(void) +{ + static int last_x = 0, last_y = 0; + int x, y; + + TXT_GetMousePosition(&x, &y); + + if (x != last_x || y != last_y) + { + last_x = x; last_y = y; + return 1; + } + else + { + return 0; + } +} + +signed int TXT_GetChar(void) +{ + SDL_Event ev; + + while (SDL_PollEvent(&ev)) + { + // If there is an event callback, allow it to intercept this + // event. + + if (event_callback != NULL) + { + if (event_callback(&ev, event_callback_data)) + { + continue; + } + } + + // Process the event. + + switch (ev.type) + { + case SDL_MOUSEBUTTONDOWN: + if (ev.button.button < TXT_MAX_MOUSE_BUTTONS) + { + return SDLButtonToTXTButton(ev.button.button); + } + break; + + case SDL_MOUSEWHEEL: + return SDLWheelToTXTButton(&ev.wheel); + + case SDL_KEYDOWN: + switch (input_mode) + { + case TXT_INPUT_RAW: + return TranslateScancode(ev.key.keysym.scancode); + case TXT_INPUT_NORMAL: + return TranslateKeysym(&ev.key.keysym); + case TXT_INPUT_TEXT: + // We ignore key inputs in this mode, except for a + // few special cases needed during text input: + if (ev.key.keysym.sym == SDLK_ESCAPE + || ev.key.keysym.sym == SDLK_BACKSPACE + || ev.key.keysym.sym == SDLK_RETURN) + { + return TranslateKeysym(&ev.key.keysym); + } + break; + } + break; + + case SDL_TEXTINPUT: + if (input_mode == TXT_INPUT_TEXT) + { + // TODO: Support input of more than just the first char? + const char *p = ev.text.text; + int result = TXT_DecodeUTF8(&p); + // 0-127 is ASCII, but we map non-ASCII Unicode chars into + // a higher range to avoid conflicts with special keys. + return TXT_UNICODE_TO_KEY(result); + } + break; + + case SDL_QUIT: + // Quit = escape + return 27; + + case SDL_MOUSEMOTION: + if (MouseHasMoved()) + { + return 0; + } + + default: + break; + } + } + + return -1; +} + +int TXT_GetModifierState(txt_modifier_t mod) +{ + SDL_Keymod state; + + state = SDL_GetModState(); + + switch (mod) + { + case TXT_MOD_SHIFT: + return (state & KMOD_SHIFT) != 0; + case TXT_MOD_CTRL: + return (state & KMOD_CTRL) != 0; + case TXT_MOD_ALT: + return (state & KMOD_ALT) != 0; + default: + return 0; + } +} + +int TXT_UnicodeCharacter(unsigned int c) +{ + unsigned int i; + + // Check the code page mapping to see if this character maps + // to anything. + + for (i = 0; i < arrlen(code_page_to_unicode); ++i) + { + if (code_page_to_unicode[i] == c) + { + return i; + } + } + + return -1; +} + +// Returns true if the given UTF8 key name is printable to the screen. +static int PrintableName(const char *s) +{ + const char *p; + unsigned int c; + + p = s; + while (*p != '\0') + { + c = TXT_DecodeUTF8(&p); + if (TXT_UnicodeCharacter(c) < 0) + { + return 0; + } + } + + return 1; +} + +static const char *NameForKey(int key) +{ + const char *result; + int i; + + // Overrides purely for aesthetical reasons, so that default + // window accelerator keys match those of setup.exe. + switch (key) + { + case KEY_ESCAPE: return "ESC"; + case KEY_ENTER: return "ENTER"; + default: + break; + } + + // This key presumably maps to a scan code that is listed in the + // translation table. Find which mapping and once we have a scancode, + // we can convert it into a virtual key, then a string via SDL. + for (i = 0; i < arrlen(scancode_translate_table); ++i) + { + if (scancode_translate_table[i] == key) + { + result = SDL_GetKeyName(SDL_GetKeyFromScancode(i)); + if (TXT_UTF8_Strlen(result) > 6 || !PrintableName(result)) + { + break; + } + return result; + } + } + + // Use US English fallback names, if the localized name is too long, + // not found in the scancode table, or contains unprintable chars + // (non-extended ASCII character set): + for (i = 0; i < arrlen(key_names); ++i) + { + if (key_names[i].key == key) + { + return key_names[i].name; + } + } + + return NULL; +} + +void TXT_GetKeyDescription(int key, char *buf, size_t buf_len) +{ + const char *keyname; + int i; + + keyname = NameForKey(key); + + if (keyname != NULL) + { + TXT_StringCopy(buf, keyname, buf_len); + + // Key description should be all-uppercase to match setup.exe. + for (i = 0; buf[i] != '\0'; ++i) + { + buf[i] = toupper(buf[i]); + } + } + else + { + TXT_snprintf(buf, buf_len, "??%i", key); + } +} + +// Searches the desktop screen buffer to determine whether there are any +// blinking characters. + +int TXT_ScreenHasBlinkingChars(void) +{ + int x, y; + unsigned char *p; + + // Check all characters in screen buffer + + for (y=0; y time_to_next_blink) + { + // Add one so it is always positive + + timeout = time_to_next_blink + 1; + } + } + + if (timeout == 0) + { + // We can just wait forever until an event occurs + + SDL_WaitEvent(NULL); + } + else + { + // Sit in a busy loop until the timeout expires or we have to + // redraw the blinking screen + + start_time = SDL_GetTicks(); + + while (SDL_GetTicks() < start_time + timeout) + { + if (SDL_PollEvent(NULL) != 0) + { + // Received an event, so stop waiting + + break; + } + + // Don't hog the CPU + + SDL_Delay(1); + } + } +} + +void TXT_SetInputMode(txt_input_mode_t mode) +{ + if (mode == TXT_INPUT_TEXT && !SDL_IsTextInputActive()) + { + SDL_StartTextInput(); + } + else if (SDL_IsTextInputActive() && mode != TXT_INPUT_TEXT) + { + SDL_StopTextInput(); + } + + input_mode = mode; +} + +void TXT_SetWindowTitle(const char *title) +{ + SDL_SetWindowTitle(TXT_SDLWindow, title); +} + +void TXT_SDL_SetEventCallback(TxtSDLEventCallbackFunc callback, void *user_data) +{ + event_callback = callback; + event_callback_data = user_data; +} + +// Safe string functions. + +void TXT_StringCopy(char *dest, const char *src, size_t dest_len) +{ + if (dest_len < 1) + { + return; + } + + dest[dest_len - 1] = '\0'; + strncpy(dest, src, dest_len - 1); +} + +void TXT_StringConcat(char *dest, const char *src, size_t dest_len) +{ + size_t offset; + + offset = strlen(dest); + if (offset > dest_len) + { + offset = dest_len; + } + + TXT_StringCopy(dest + offset, src, dest_len - offset); +} + +// On Windows, vsnprintf() is _vsnprintf(). +#ifdef _WIN32 +#if _MSC_VER < 1400 /* not needed for Visual Studio 2008 */ +#define vsnprintf _vsnprintf +#endif +#endif + +// Safe, portable vsnprintf(). +int TXT_vsnprintf(char *buf, size_t buf_len, const char *s, va_list args) +{ + int result; + + if (buf_len < 1) + { + return 0; + } + + // Windows (and other OSes?) has a vsnprintf() that doesn't always + // append a trailing \0. So we must do it, and write into a buffer + // that is one byte shorter; otherwise this function is unsafe. + result = vsnprintf(buf, buf_len, s, args); + + // If truncated, change the final char in the buffer to a \0. + // A negative result indicates a truncated buffer on Windows. + if (result < 0 || result >= buf_len) + { + buf[buf_len - 1] = '\0'; + result = buf_len - 1; + } + + return result; +} + +// Safe, portable snprintf(). +int TXT_snprintf(char *buf, size_t buf_len, const char *s, ...) +{ + va_list args; + int result; + va_start(args, s); + result = TXT_vsnprintf(buf, buf_len, s, args); + va_end(args); + return result; +} + diff --git a/textscreen/txt_sdl.h b/textscreen/txt_sdl.h new file mode 100644 index 00000000..685b5e24 --- /dev/null +++ b/textscreen/txt_sdl.h @@ -0,0 +1,43 @@ +// +// Copyright(C) 2005-2014 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// +// Text mode emulation in SDL +// + +#ifndef TXT_SDL_H +#define TXT_SDL_H + +// The textscreen API itself doesn't need SDL; however, SDL needs its +// headers included where main() is defined. + +#include "SDL.h" + +// Event callback function type: a function of this type can be used +// to intercept events in the textscreen event processing loop. +// Returning 1 will cause the event to be eaten; the textscreen code +// will not see it. + +typedef int (*TxtSDLEventCallbackFunc)(SDL_Event *event, void *user_data); + +// Set a callback function to call in the SDL event loop. Useful for +// intercepting events. Pass callback=NULL to clear an existing +// callback function. +// user_data is a void pointer to be passed to the callback function. + +void TXT_SDL_SetEventCallback(TxtSDLEventCallbackFunc callback, void *user_data); + +void TXT_PreInit(SDL_Window *preset_window, SDL_Renderer *preset_renderer); + +#endif /* #ifndef TXT_SDL_H */ + diff --git a/textscreen/txt_utf8.c b/textscreen/txt_utf8.c new file mode 100644 index 00000000..4d5337b2 --- /dev/null +++ b/textscreen/txt_utf8.c @@ -0,0 +1,154 @@ +// +// Copyright(C) 2005-2014 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// + +#include +#include +#include + +#include "txt_utf8.h" + +// Encode a Unicode character as UTF-8, storing it in the buffer 'p' +// and returning the new, incremented position. + +char *TXT_EncodeUTF8(char *p, unsigned int c) +{ + if (c < 0x80) // 1 character (ASCII): + { + p[0] = c; + return p + 1; + } + else if (c < 0x800) // 2 character: + { + p[0] = 0xc0 | (c >> 6); + p[1] = 0x80 | (c & 0x3f); + return p + 2; + } + else if (c < 0x10000) // 3 chacater: + { + p[0] = 0xe0 | (c >> 12); + p[1] = 0x80 | ((c >> 6) & 0x3f); + p[2] = 0x80 | (c & 0x3f); + return p + 3; + } + else if (c < 0x200000) // 4 character: + { + p[0] = 0xf0 | (c >> 18); + p[1] = 0x80 | ((c >> 12) & 0x3f); + p[2] = 0x80 | ((c >> 6) & 0x3f); + p[3] = 0x80 | (c & 0x3f); + return p + 4; + } + else + { + // Too big! + + return p; + } +} + +// Decode UTF-8 character, incrementing *ptr over the decoded bytes. + +unsigned int TXT_DecodeUTF8(const char **ptr) +{ + const char *p = *ptr; + unsigned int c; + + // UTF-8 decode. + + if ((*p & 0x80) == 0) // 1 character (ASCII): + { + c = *p; + *ptr += 1; + } + else if ((p[0] & 0xe0) == 0xc0 // 2 character: + && (p[1] & 0xc0) == 0x80) + { + c = ((p[0] & 0x1f) << 6) + | (p[1] & 0x3f); + *ptr += 2; + } + else if ((p[0] & 0xf0) == 0xe0 // 3 character: + && (p[1] & 0xc0) == 0x80 + && (p[2] & 0xc0) == 0x80) + { + c = ((p[0] & 0x0f) << 12) + | ((p[1] & 0x3f) << 6) + | (p[2] & 0x3f); + *ptr += 3; + } + else if ((p[0] & 0xf8) == 0xf0 // 4 character: + && (p[1] & 0xc0) == 0x80 + && (p[2] & 0xc0) == 0x80 + && (p[3] & 0xc0) == 0x80) + { + c = ((p[0] & 0x07) << 18) + | ((p[1] & 0x3f) << 12) + | ((p[2] & 0x3f) << 6) + | (p[3] & 0x3f); + *ptr += 4; + } + else + { + // Decode failure. + // Don't bother with 5/6 byte sequences. + + c = 0; + } + + return c; +} + +// Count the number of characters in a UTF-8 string. + +unsigned int TXT_UTF8_Strlen(const char *s) +{ + const char *p; + unsigned int result = 0; + unsigned int c; + + for (p = s; *p != '\0';) + { + c = TXT_DecodeUTF8(&p); + + if (c == 0) + { + break; + } + + ++result; + } + + return result; +} + +// Skip past the first n characters in a UTF-8 string. + +char *TXT_UTF8_SkipChars(const char *s, unsigned int n) +{ + unsigned int i; + const char *p; + + p = s; + + for (i = 0; i < n; ++i) + { + if (TXT_DecodeUTF8(&p) == 0) + { + break; + } + } + + return (char *) p; +} + diff --git a/textscreen/txt_utf8.h b/textscreen/txt_utf8.h new file mode 100644 index 00000000..a2ee96dc --- /dev/null +++ b/textscreen/txt_utf8.h @@ -0,0 +1,26 @@ +// +// Copyright(C) 2005-2014 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// + +#ifndef TXT_UTF8_H +#define TXT_UTF8_H + +#include + +char *TXT_EncodeUTF8(char *p, unsigned int c); +unsigned int TXT_DecodeUTF8(const char **ptr); +unsigned int TXT_UTF8_Strlen(const char *s); +char *TXT_UTF8_SkipChars(const char *s, unsigned int n); + +#endif /* #ifndef TXT_UTF8_H */ +