/**
  Raycasting demo 2 for Pokitto.

  This demo shows a simple version (wolf3D-like) raycasting. It has a fairly
  high FPS.

  There is a number of compile-time settings you can try! Look at the defines
  below.

  Don't forget to compile with -O3!

  author: Miloslav "drummyfish" Ciz
  license: CC0 1.0
*/

// settings:

//#define SUBSAMPLE 1
  /* ^ Turns high resolution in X direction on, which means twice as many rays
       that will be cast. The result looks beautiful but dramatically decreases
       FPS. */

//#define RENDER_COMPLEX
  /* ^ Turns on rendering using a more precise but slower algorithm. This can
       be seen at less shaky head bobbing when moving. However it doesn't
       support many other features, so the result actually looks worse. */

//#define NO_TEXTURES
  /* ^ Turns off textures and only uses colors, which increases FPS. */

#define RCL_COMPUTE_FLOOR_TEXCOORDS 1
  /* ^ Turns on computation of texture coordinates for the floor in raycastlib
       and makes this demo render the textures. */

#define TEXTURE_CEILING
  /* ^ Turns on texture on ceiling (RCL_COMPUTE_FLOOR_TEXCOORDS must be turned
       on as well for this to work). */

#define FLOOR_TEXTURE_SCALE 2
  /* ^ Scales the floor texture if RCL_COMPUTE_FLOOR_TEXCOORDS is on. */

//#define RCL_ACCURATE_WALL_TEXTURING 1
  /* ^ This turns on extra accurate wall texturing, but is noticable slower. */

//#define HEAD_BOB
  /* ^ Turns on head bobbing. */

//#define NO_SHADING
  /* ^ Turns off shading (fog) which increases FPS. */

//#define NO_MIRROR
  /* ^ Turns off the floor mirror effect, which should increase FPS. */

//#define RCL_USE_DIST_APPROX 1 
  /* ^ Turns on distance approximation, which won't compute exact distances but
       only approximations - this should increase performance a little, but
       results in slightly distorted walls. */

//#define RCL_USE_COS_LUT 2
  /* ^ Turns on cos look up tables (128 items, USE_COS_LUT 1 will use only 64
       items), which should theoretically be faster, but will take additional
       memory and turning can be less precise (can be seen a lot with 64 item
       LUT). */

#define DOOR_ROLL_SIGN -1
  /* ^ Defines how the door roll: -1 opens the door to the left, 1 to the
       right, 0 to both. */

#ifdef NO_TEXTURES
#define RCL_COMPUTE_WALL_TEXCOORDS 0
#endif

#define FPS 255
#define HEAD_BOB_HEIGHT 200
#define HEAD_BOB_STEP 20
#define PLAYER_SPEED (5 * RCL_UNITS_PER_SQUARE)

#define TEXTURE_W 32 // for the sake of performance we require prespecified sizes
#define TEXTURE_H 32

#ifndef RCL_COMPUTE_FLOOR_TEXCOORDS
#define RCL_COMPUTE_CEILING_DEPTH 0
#endif

#include "general.hpp"

#define LEVEL_X_RES 32
#define LEVEL_Y_RES 16

Player player;

#define SHOT_SPEED 10 * RCL_UNITS_PER_SQUARE
#define INFO_BAR_START 70
#define TEXTURE_MAX_DISTANCE (RCL_UNITS_PER_SQUARE * 6)
#define TEXTURE_MAX_DISTANCE_FLOOR (RCL_UNITS_PER_SQUARE * 6 + RCL_UNITS_PER_SQUARE / 2)

#define RESOLUTION_Y (INFO_BAR_START + 1)

// temporary defines for better visibility of walls and floors below
#define D 6
#define o 0

const unsigned char level[] =
{
/*                    10  12  14  16  18  20  22  24  26  28  30
  0 1 2 3 4 5 6 7 8 9   11  13  15  17  19  21  23  25  27  29  31 */
  4,o,o,4,o,o,4,o,o,4,o,o,2,4,o,4,4,o,o,o,o,D,o,2,o,o,o,o,o,o,o,2, // 0  15
  o,o,o,o,o,o,o,o,o,o,o,o,3,4,o,o,o,o,1,3,2,4,o,4,o,o,o,o,o,o,o,o, // 1  14
  o,o,o,o,o,o,o,o,o,o,o,o,2,4,o,o,o,o,1,o,o,o,o,3,o,o,o,o,o,o,o,o, // 2  13
  o,o,5,o,o,o,o,o,o,o,o,o,2,4,4,o,3,1,1,o,2,1,2,3,o,o,1,o,1,o,o,2, // 3  12
  o,o,o,o,o,o,o,o,o,o,o,o,2,o,o,o,o,2,o,o,o,2,o,o,o,o,o,o,o,o,o,2, // 4  11
  o,o,o,o,o,o,o,o,o,o,o,o,2,o,o,o,o,2,3,o,2,2,o,o,o,o,o,o,o,o,o,2, // 5  10
  4,o,3,1,3,1,o,2,2,2,3,2,2,2,o,o,3,2,o,o,o,o,o,o,o,o,o,o,o,o,o,o, // 6  9
  o,o,2,o,o,o,o,o,o,5,o,o,o,o,o,o,o,5,o,o,o,o,1,2,o,5,5,o,o,o,o,o, // 7  8
  o,o,1,o,o,o,o,o,o,5,o,o,o,o,o,o,o,D,o,o,o,o,4,o,o,o,5,o,o,2,o,o, // 8  7
  o,o,2,o,o,o,o,o,o,2,3,2,4,o,o,o,2,2,4,1,4,o,4,4,4,3,2,o,o,4,2,2, // 9  6
  o,o,4,4,4,o,o,o,o,o,o,o,o,o,o,3,3,4,o,o,o,o,o,1,o,o,o,o,o,o,o,4, // 10 5
  2,o,o,o,3,o,o,o,o,o,o,o,o,o,3,3,2,4,o,o,o,o,o,1,o,o,4,o,o,3,o,1, // 11 4
  1,3,1,o,4,4,4,2,2,1,2,D,2,2,3,o,o,1,4,o,o,o,3,3,3,5,2,o,o,o,o,2, // 12 3
  o,o,o,o,o,o,o,o,o,4,o,o,o,o,2,o,o,o,o,o,o,o,o,o,o,o,o,o,o,3,o,1, // 13 2
  o,o,o,3,o,5,o,3,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,4, // 14 1
  o,o,o,o,o,o,o,o,o,4,o,o,o,o,2,o,o,5,o,o,4,o,o,1,o,3,o,3,o,3,o,1  // 15 0
};

#undef D
#undef o

const unsigned char texture1[] =
{  32, 32 // width, height
  ,0x93,0x24,0x23,0x23,0x23,0x24,0x23,0x24,0x24,0x23,0x23,0x03,0x23,0x03
  ,0x03,0x23,0x23,0x03,0x23,0x24,0x23,0x23,0x23,0x24,0x23,0x23,0x03,0x23
  ,0x24,0x23,0x23,0x93,0x93,0x35,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x23
  ,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24
  ,0x24,0x24,0x34,0x24,0x23,0x23,0x23,0x93,0x93,0x35,0x24,0x23,0x24,0x24
  ,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x04,0x04,0x05,0x05,0x05,0x24,0x24
  ,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x24,0x23,0x23,0x93,0x93,0x25
  ,0x24,0x24,0x23,0x24,0x23,0x24,0x24,0x23,0x24,0x24,0x24,0x05,0x05,0x05
  ,0x06,0x06,0x35,0x35,0x23,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x24,0x23
  ,0x23,0x93,0x93,0x35,0x24,0x24,0x24,0x21,0x32,0x31,0x21,0x32,0x31,0x32
  ,0x22,0x04,0x25,0x26,0x27,0x26,0x04,0x03,0x32,0x31,0x32,0x22,0x32,0x32
  ,0x24,0x24,0x23,0x24,0x23,0x93,0x92,0x25,0x24,0x23,0x24,0x21,0x21,0x21
  ,0x21,0x21,0x32,0x22,0xa4,0x27,0x28,0x2a,0x2f,0x2b,0x26,0x24,0x33,0x32
  ,0x32,0x22,0x23,0x22,0x24,0x23,0x24,0x23,0x23,0x93,0x93,0x25,0x24,0x23
  ,0x24,0x21,0x21,0x36,0x36,0x36,0x37,0x32,0xb5,0x27,0x29,0x2b,0x2f,0x2b
  ,0x27,0x25,0x33,0x32,0x22,0x21,0x32,0x32,0x24,0x23,0x24,0x23,0x23,0x93
  ,0x92,0x35,0x24,0x24,0x24,0x21,0x21,0x36,0x36,0x22,0x36,0x32,0x33,0x26
  ,0x27,0x29,0x29,0x29,0x26,0x13,0x22,0x32,0x32,0x22,0x33,0x32,0x24,0x24
  ,0x24,0x24,0x23,0x93,0x93,0x25,0x24,0x24,0x24,0x21,0x21,0x36,0x36,0x22
  ,0x36,0x22,0x33,0x05,0x27,0x29,0x29,0x29,0x25,0x24,0x22,0x32,0x32,0x22
  ,0x22,0x32,0x24,0x24,0x24,0x23,0x23,0x93,0x93,0x24,0x24,0x23,0x23,0x11
  ,0x21,0x36,0x36,0x22,0x22,0x32,0xb5,0x27,0x29,0x2b,0x2f,0x2b,0x27,0x24
  ,0x33,0x32,0x31,0x31,0x32,0x32,0x24,0x23,0x23,0x23,0x23,0x93,0x93,0x24
  ,0x24,0x24,0x24,0x21,0x21,0x36,0x36,0x22,0x36,0x33,0xa5,0x27,0x2a,0x2c
  ,0x2f,0x2c,0x27,0x15,0x33,0x32,0x32,0x22,0x22,0x22,0x24,0x24,0x24,0x24
  ,0x23,0x93,0x93,0x25,0x24,0x24,0x24,0x11,0x21,0x36,0x36,0x36,0x36,0x32
  ,0x22,0x26,0x27,0x29,0x29,0x29,0x25,0x14,0x33,0x32,0x22,0x22,0x22,0x32
  ,0x24,0x24,0x24,0x24,0x23,0x93,0x93,0x25,0x24,0x23,0x23,0x21,0x22,0x31
  ,0x21,0x22,0x31,0x32,0x33,0x05,0x27,0x29,0x29,0x29,0x25,0x13,0x32,0x22
  ,0x32,0x22,0x22,0x32,0x24,0x23,0x23,0x23,0x23,0x93,0x93,0x25,0x24,0x24
  ,0x24,0x21,0x22,0x22,0x21,0x22,0x32,0x22,0xb5,0x28,0x29,0x2b,0x2f,0x2b
  ,0x27,0x25,0x33,0x32,0x32,0x22,0x22,0x21,0x24,0x24,0x24,0x23,0x23,0x93
  ,0x93,0x25,0x24,0x24,0x24,0x21,0x22,0x22,0x21,0x22,0x22,0x32,0xb5,0x27
  ,0x29,0x2c,0x2f,0x2c,0x27,0x15,0x33,0x32,0x32,0x11,0x22,0x32,0x24,0x24
  ,0x24,0x24,0x23,0x93,0x93,0x35,0x24,0x23,0x24,0x21,0x22,0x32,0x22,0x22
  ,0x32,0x32,0x34,0x25,0x27,0x29,0x29,0x29,0x25,0x24,0x22,0x32,0x32,0x21
  ,0x22,0x31,0x24,0x23,0x24,0x23,0x23,0x93,0x93,0x35,0x23,0x24,0x24,0x21
  ,0x22,0x32,0x22,0x22,0x32,0x32,0x33,0x05,0x27,0x29,0x29,0x29,0x25,0x04
  ,0x22,0x22,0x31,0x21,0x32,0x32,0x23,0x24,0x24,0x23,0x23,0x93,0x93,0x35
  ,0x24,0x24,0x24,0x11,0x22,0x32,0x22,0x22,0x32,0x32,0xb6,0x27,0x29,0x2b
  ,0x2f,0x2b,0x27,0x25,0x22,0x32,0x22,0x21,0x22,0x32,0x24,0x24,0x24,0x03
  ,0x23,0x93,0x93,0x35,0x24,0x24,0x24,0x21,0x22,0x22,0x21,0x22,0x32,0x32
  ,0xb5,0x27,0x29,0x2b,0x2f,0x2c,0x27,0x25,0x33,0x32,0x32,0x21,0x22,0x32
  ,0x24,0x24,0x24,0x24,0x23,0x93,0x93,0x24,0x24,0x23,0x23,0x21,0x32,0x32
  ,0x22,0x32,0x31,0x31,0x33,0x26,0x28,0x29,0x29,0x29,0x25,0x24,0x22,0x32
  ,0x32,0x21,0x22,0x22,0x24,0x23,0x23,0x23,0x23,0x93,0x92,0x25,0x24,0x24
  ,0x24,0x22,0x22,0x36,0x36,0x36,0x37,0x32,0x34,0x26,0x27,0x28,0x29,0x29
  ,0x25,0x24,0x23,0x32,0x32,0x22,0x23,0x22,0x24,0x24,0x24,0x23,0x23,0x93
  ,0x93,0x24,0x24,0x23,0x24,0x22,0x22,0x36,0x36,0x22,0x36,0x32,0xb5,0x27
  ,0x29,0x2b,0x2f,0x2b,0x27,0x25,0x33,0x32,0x22,0x22,0x22,0x32,0x24,0x23
  ,0x24,0x23,0x23,0x93,0x92,0x35,0x24,0x23,0x24,0x22,0x32,0x36,0x36,0x22
  ,0x36,0x22,0xb5,0x28,0x2a,0x2c,0x2f,0x2c,0x27,0x25,0x33,0x32,0x32,0x22
  ,0x33,0x32,0x24,0x23,0x24,0x23,0x23,0x93,0x93,0x24,0x24,0x24,0x24,0x22
  ,0x23,0x36,0x36,0x22,0x22,0x32,0x34,0x26,0x27,0x29,0x29,0x29,0x25,0x13
  ,0x22,0x32,0x32,0x22,0x22,0x32,0x24,0x24,0x24,0x24,0x23,0x93,0x93,0x24
  ,0x24,0x23,0x24,0x22,0x22,0x36,0x36,0x22,0x36,0x33,0xa4,0x05,0x27,0x29
  ,0x29,0x29,0x25,0x13,0x22,0x31,0x32,0x31,0x32,0x32,0x24,0x23,0x24,0x24
  ,0x23,0x93,0x93,0x24,0x24,0x23,0x24,0x22,0x22,0x36,0x36,0x36,0x36,0x32
  ,0xb5,0x27,0x29,0x2b,0x2f,0x2b,0x27,0x24,0x33,0x32,0x32,0x22,0x22,0x22
  ,0x24,0x23,0x24,0x23,0x23,0x93,0x93,0x35,0x24,0x24,0x24,0x22,0x22,0x31
  ,0x21,0x22,0x31,0x32,0xb4,0x26,0x28,0x2b,0x2f,0x2b,0x27,0x14,0x33,0x31
  ,0x32,0x22,0x22,0x22,0x24,0x24,0x24,0x23,0x23,0x93,0x93,0x25,0x24,0x24
  ,0x25,0x31,0x22,0x31,0x31,0x32,0x32,0x32,0x33,0x04,0x25,0x26,0x27,0x27
  ,0x04,0x03,0x22,0x32,0x22,0x22,0x32,0x32,0x24,0x24,0x24,0x23,0x23,0x93
  ,0x93,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x24,0x33,0x24,0x33,0x34,0x24
  ,0x05,0x05,0x06,0x06,0x05,0x35,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23
  ,0x24,0x24,0x23,0x93,0x93,0x35,0x24,0x23,0x24,0x24,0x24,0x24,0x24,0x23
  ,0x24,0x24,0x24,0x35,0x04,0x05,0x05,0x35,0x24,0x24,0x23,0x24,0x24,0x23
  ,0x24,0x24,0x24,0x23,0x24,0x23,0x23,0x93,0x93,0x35,0x23,0x24,0x24,0x24
  ,0x24,0x24,0x24,0x24,0x35,0x24,0x24,0x24,0x24,0x25,0x35,0x35,0x24,0x24
  ,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x24,0x23,0x93,0x93,0x23
  ,0x23,0x23,0x23,0x23,0x23,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23
  ,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x23
  ,0x23,0x93
};

const unsigned char texture2[] =
{  32, 32 // width, height
  ,0x21,0x01,0x02,0x12,0x03,0x03,0x03,0x34,0x03,0x34,0x34,0x34,0x34,0x53
  ,0x53,0x03,0x53,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03
  ,0x03,0x45,0x03,0x02,0x11,0x21,0x02,0x03,0x03,0x34,0x44,0x44,0x44,0x44
  ,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x44,0x44,0x44,0x44,0x44,0x44
  ,0x44,0x44,0x44,0x43,0x03,0x45,0x03,0x02,0x11,0x21,0x12,0x03,0x34,0x04
  ,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x4a,0x03,0x03,0x03,0x03,0x35,0x44
  ,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x43,0x03,0x45,0x03,0x02,0x11,0x21
  ,0x12,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x4b,0x35,0x35
  ,0x23,0x33,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x4b
  ,0x03,0x02,0x11,0x21,0x12,0x02,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45
  ,0x34,0x4b,0xba,0xba,0x34,0x33,0x44,0x45,0x44,0x44,0x44,0x44,0x44,0x44
  ,0x44,0x43,0x03,0x45,0x03,0x02,0x11,0x21,0x12,0x02,0x44,0x45,0x45,0x45
  ,0x45,0x45,0x45,0x03,0x34,0x4a,0x03,0x03,0x03,0x34,0x35,0x45,0x45,0x44
  ,0x44,0x44,0x44,0x44,0x44,0x43,0x03,0x45,0x03,0x02,0x02,0x21,0x12,0x02
  ,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x44,0x34,0x47,0x47,0x45,0x45,0x45
  ,0x45,0x45,0x45,0x44,0x03,0x44,0x44,0x44,0x44,0x43,0x03,0x45,0x03,0x02
  ,0x02,0x21,0x12,0x03,0x44,0x34,0x03,0x03,0x03,0x03,0x44,0x44,0x03,0x54
  ,0x54,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x34,0x34,0x02,0x02,0x02,0x21
  ,0x01,0x4b,0x03,0x02,0x02,0x11,0x03,0x03,0x03,0x43,0x45,0x45,0x44,0x44
  ,0x43,0x43,0x43,0x43,0x43,0x43,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03
  ,0x03,0x03,0x03,0x02,0x02,0x44,0x03,0x02,0x02,0x02,0x03,0x44,0x45,0x03
  ,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11
  ,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x45,0x03,0x02,0x02,0x02
  ,0x44,0x45,0x5f,0x03,0x4a,0x4b,0x4a,0x49,0x49,0x47,0x46,0x45,0x45,0x35
  ,0x35,0x45,0x45,0x35,0x35,0x35,0x34,0x34,0x35,0x34,0x34,0x34,0x12,0x45
  ,0x03,0x02,0x12,0x02,0x44,0x46,0x6e,0xc8,0x4a,0x4b,0x4b,0x4b,0x49,0x48
  ,0x46,0x37,0x45,0x45,0x45,0x45,0x45,0x45,0x35,0x35,0x35,0x35,0x35,0x34
  ,0x34,0x34,0x12,0x45,0x03,0x02,0x02,0x02,0x45,0x46,0x6e,0xc8,0x49,0x4b
  ,0x4b,0x4b,0x49,0x48,0x47,0x46,0x45,0x45,0x45,0x45,0x45,0x45,0x35,0x35
  ,0x35,0x35,0x35,0x34,0x34,0x34,0x12,0x45,0x03,0x02,0x12,0x12,0x44,0x47
  ,0x6e,0xcb,0x4b,0x0b,0x4b,0x4b,0x49,0x48,0x47,0x46,0x45,0x45,0x45,0x45
  ,0x45,0x45,0x35,0x35,0x35,0x35,0x35,0x34,0x34,0x34,0x12,0x45,0x03,0x02
  ,0x12,0x02,0x45,0xc8,0x6f,0xcb,0x4b,0x0b,0x4b,0x4a,0x49,0x48,0x03,0x03
  ,0x03,0x03,0x03,0x45,0x45,0x45,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x34
  ,0x12,0x45,0x03,0x02,0x12,0x12,0x45,0xc8,0x6f,0xcb,0x4b,0x0b,0x4b,0x4b
  ,0x49,0x47,0x34,0x37,0x45,0x45,0x03,0x45,0x45,0x45,0x03,0x34,0x35,0x35
  ,0x34,0x34,0x03,0x34,0x12,0x45,0x03,0x02,0x02,0x02,0x45,0xc8,0x6f,0xcb
  ,0x49,0x49,0x49,0x49,0x49,0x45,0x34,0x46,0x45,0x45,0x03,0x03,0x03,0x03
  ,0x03,0x35,0x35,0x35,0x35,0x35,0x03,0x03,0x12,0x45,0x03,0x02,0x12,0x02
  ,0x45,0x47,0x6e,0xcb,0x4b,0x4b,0x4b,0x4b,0x49,0x48,0x47,0x46,0x45,0x34
  ,0x35,0xba,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x34,0x34,0x34,0x12,0x45
  ,0x03,0x02,0x12,0x12,0x44,0x47,0x6e,0xcb,0x4b,0x4b,0x4a,0x4a,0x49,0x48
  ,0x47,0x37,0x45,0x35,0x35,0xba,0x33,0x34,0x35,0x35,0x35,0x35,0x35,0x34
  ,0x34,0x34,0x12,0x45,0x03,0x02,0x12,0x02,0x44,0x46,0x6e,0xc9,0x4a,0x4b
  ,0x4b,0x49,0x49,0x48,0x47,0x45,0x45,0x45,0x37,0x45,0x45,0x34,0x35,0x35
  ,0x35,0x35,0x35,0x34,0x34,0x34,0x12,0x45,0x03,0x02,0x12,0x02,0x44,0x46
  ,0x6e,0xc8,0x49,0x4b,0x4a,0x49,0x49,0x47,0x46,0x45,0x45,0x45,0x45,0x45
  ,0x35,0x34,0x35,0x35,0x35,0x35,0x35,0x34,0x34,0x34,0x12,0x45,0x03,0x02
  ,0x02,0x02,0x43,0x45,0x5f,0x03,0x4a,0x4b,0x4b,0x49,0x49,0x47,0x46,0x45
  ,0x45,0x35,0x45,0x45,0x35,0x34,0x35,0x35,0x35,0x35,0x35,0x34,0x34,0x34
  ,0x22,0x45,0x03,0x02,0x02,0x02,0x03,0x44,0x45,0x03,0x11,0x11,0x11,0x11
  ,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11
  ,0x11,0x11,0x11,0x11,0x11,0x45,0x03,0x02,0x02,0x11,0x03,0x03,0x44,0x43
  ,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x02,0x02,0x02,0x02
  ,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x45,0x03,0x02,0x02,0x11
  ,0x03,0x03,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x54,0x54,0x44
  ,0x44,0x45,0x45,0x45,0x45,0x45,0x44,0x44,0x34,0x03,0x03,0x02,0x02,0x45
  ,0x03,0x02,0x11,0x11,0x03,0x02,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45
  ,0x45,0x54,0x54,0x44,0x44,0x35,0x34,0x45,0x45,0x44,0x44,0x44,0x44,0x04
  ,0x04,0x43,0x02,0x45,0x03,0x02,0x11,0x21,0x12,0x02,0x44,0x44,0x44,0x45
  ,0x45,0x45,0x45,0x45,0x45,0x54,0x54,0x44,0x54,0x34,0x34,0x35,0x44,0x44
  ,0x44,0x44,0x44,0x34,0x04,0x43,0x03,0x45,0x03,0x02,0x11,0x21,0x12,0x02
  ,0x34,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x54,0x53,0x44,0x54,0x35
  ,0x35,0x35,0x44,0x44,0x44,0x44,0x44,0x34,0x04,0x43,0x03,0x45,0x03,0x02
  ,0x11,0x21,0x12,0x12,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x11
  ,0x11,0x11,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02
  ,0x02,0x4b,0x03,0x02,0x11,0x21,0x12,0x03,0x34,0x44,0x45,0x45,0x45,0x45
  ,0x45,0x45,0x44,0x53,0x53,0x44,0x43,0x45,0x44,0x44,0x44,0x44,0x44,0x44
  ,0x44,0x44,0x44,0x43,0x03,0x45,0x03,0x02,0x11,0x21,0x12,0x03,0x34,0x44
  ,0x44,0x44,0x45,0x45,0x45,0x44,0x44,0x54,0x54,0x44,0x54,0x44,0x45,0x44
  ,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x43,0x03,0x45,0x03,0x02,0x21,0x01
  ,0x02,0x03,0x03,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x53,0x53,0x43
  ,0x53,0x34,0x34,0x34,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x45
  ,0x03,0x02
};

const unsigned char texture3[] =
{  32, 32 // width, height
  ,0x22,0x08,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0a,0x0a,0x09,0x09,0x08,0x08,0x08,0x07,0x02
  ,0x03,0x03,0x02,0x03,0x22,0x08,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,0x09,0x08,0x08
  ,0x08,0x07,0x06,0x02,0x03,0x03,0x02,0x03,0x22,0x08,0x0b,0x0b,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0a,0x0a
  ,0x0a,0x09,0x09,0x08,0x08,0x07,0x06,0x02,0x03,0x03,0x02,0x03,0x22,0x08
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x0b,0x0b,0x0a,0x0a,0x0a,0x09,0x09,0x09,0x08,0x08,0x07,0x21,0x02,0x02
  ,0x02,0x43,0x22,0x08,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x09,0x09,0x09,0x08,0x08
  ,0x07,0x21,0x02,0x02,0x02,0x03,0x32,0x08,0x03,0x03,0x03,0x03,0x03,0x03
  ,0x03,0x03,0x03,0x03,0x03,0x0a,0x0a,0x0b,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a
  ,0x09,0x09,0x08,0x08,0x07,0x21,0x02,0x02,0x02,0x03,0x22,0x08,0x03,0x03
  ,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x05,0x04,0x0c,0x0c,0x0b,0x0b,0x0b
  ,0x0b,0x0a,0x0a,0x0a,0x09,0x09,0x08,0x08,0x07,0x21,0x03,0x02,0x02,0x03
  ,0x32,0x08,0x08,0x08,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x05,0x0c,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x09,0x09,0x08,0x08,0x07,0x21
  ,0x03,0x02,0x03,0x03,0x22,0x08,0x03,0x05,0x08,0x08,0x07,0x07,0x07,0x05
  ,0x07,0x0c,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x09,0x09
  ,0x08,0x08,0x07,0x21,0x21,0x02,0x02,0x03,0x22,0x08,0x03,0x04,0x08,0x04
  ,0x04,0x05,0x07,0x05,0x05,0x0c,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0a
  ,0x0a,0x0a,0x09,0x09,0x08,0x08,0x07,0x21,0x03,0x02,0x03,0x04,0x22,0x08
  ,0x08,0x08,0x08,0x08,0x04,0x04,0x04,0x07,0x05,0x0c,0x0b,0x0b,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x09,0x09,0x09,0x08,0x07,0x03,0x03,0x04
  ,0x03,0x03,0x22,0x08,0x03,0x07,0x07,0x07,0x07,0x07,0x07,0x05,0x04,0x0c
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x09,0x09,0x09,0x09
  ,0x07,0x03,0x03,0x03,0x03,0x03,0x22,0x08,0x03,0x04,0x05,0x04,0x05,0x05
  ,0x07,0x04,0x07,0x05,0x0c,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a
  ,0x09,0x09,0x09,0x09,0x07,0x03,0x03,0x03,0x02,0x03,0x22,0x08,0x03,0x08
  ,0x07,0x07,0x04,0x05,0x08,0x04,0x04,0x05,0x04,0x0c,0x0b,0x0b,0x0b,0x0b
  ,0x0b,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x08,0x07,0x03,0x03,0x03,0x03,0x04
  ,0x22,0x08,0x03,0x04,0x05,0x07,0x04,0x04,0x08,0x05,0x04,0x05,0x04,0x0c
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x08,0x07,0x03
  ,0x03,0x03,0x03,0x03,0x22,0x08,0x03,0x04,0x04,0x07,0x08,0x04,0x05,0x07
  ,0x07,0x07,0x04,0x0c,0x0b,0x0b,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x09,0x09
  ,0x09,0x08,0x07,0x03,0x03,0x03,0x03,0x03,0x22,0x08,0x03,0x04,0x04,0x04
  ,0x08,0x04,0x05,0x05,0x04,0x04,0x04,0x0c,0x0b,0x0b,0x0b,0x0b,0x0b,0x0a
  ,0x0a,0x0a,0x09,0x09,0x09,0x08,0x07,0x03,0x03,0x03,0x03,0x03,0x22,0x08
  ,0x03,0x07,0x07,0x07,0x08,0x04,0x05,0x04,0x05,0x05,0x04,0x0c,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x08,0x07,0x03,0x03,0x03
  ,0x03,0x03,0x22,0x08,0x03,0x06,0x48,0x06,0x08,0x05,0x05,0x07,0x05,0x05
  ,0x04,0x0c,0x0b,0x0b,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x08
  ,0x05,0x03,0x03,0x03,0x03,0x03,0x22,0x08,0x03,0x48,0x4d,0x49,0x05,0x08
  ,0x07,0x07,0x04,0x05,0x04,0x0c,0x0b,0x0b,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a
  ,0x0a,0x09,0x09,0x07,0x03,0x03,0x04,0x03,0x03,0x43,0x32,0x08,0x03,0x06
  ,0x49,0x08,0x07,0x08,0x05,0x05,0x05,0x05,0x04,0x0c,0x0b,0x0b,0x0b,0x0b
  ,0x0b,0x0a,0x0a,0x0a,0x0a,0x09,0x08,0x03,0x03,0x04,0x04,0x03,0x03,0x03
  ,0x22,0x08,0x03,0x04,0x03,0x03,0x07,0x08,0x03,0x04,0x07,0x05,0x04,0x0c
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,0x09,0x08,0x03,0x03,0x04
  ,0x04,0x03,0x03,0x03,0x32,0x08,0x03,0x04,0x03,0x11,0x08,0x03,0x11,0x04
  ,0x05,0x05,0x04,0x0c,0x0b,0x0b,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,0x09
  ,0x08,0x03,0x04,0x03,0x03,0x03,0x03,0x03,0x22,0x08,0x03,0x04,0x11,0x11
  ,0x05,0x11,0x11,0x04,0x04,0x05,0x04,0x0c,0x0b,0x0b,0x0b,0x0b,0x0b,0x0a
  ,0x0a,0x0a,0x09,0x09,0x08,0x03,0x04,0x04,0x03,0x03,0x03,0x03,0x22,0x08
  ,0x03,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x04,0x0c,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x09,0x09,0x08,0x03,0x03,0x04,0x03,0x03
  ,0x03,0x03,0x22,0x08,0x03,0x04,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05
  ,0x04,0x0c,0x0b,0x0b,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x09,0x09,0x08,0x03
  ,0x04,0x03,0x03,0x03,0x03,0x43,0x22,0x08,0x05,0x04,0x04,0x04,0x04,0x04
  ,0x04,0x04,0x04,0x04,0x04,0x0c,0x0a,0x0b,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a
  ,0x0a,0x09,0x08,0x03,0x04,0x04,0x03,0x03,0x03,0x03,0x22,0x08,0x0c,0x0c
  ,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0b,0x0b,0x0b
  ,0x0b,0x0a,0x0a,0x0a,0x0a,0x09,0x08,0x03,0x04,0x03,0x02,0x03,0x03,0x03
  ,0x22,0x08,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x09,0x09,0x08,0x03,0x04,0x03
  ,0x03,0x04,0x03,0x03,0x22,0x08,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x09,0x09
  ,0x08,0x03,0x03,0x04,0x04,0x04,0x03,0x03,0x22,0x08,0x0b,0x0b,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0a
  ,0x0a,0x0a,0x09,0x09,0x09,0x07,0x03,0x03,0x04,0x03,0x03,0x03,0x22,0x08
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x09,0x09,0x09,0x08,0x06,0x03,0x03,0x03
  ,0x03,0x43
};

const unsigned char texture4[] =
{  32, 32 // width, height
  ,0x21,0x10,0x21,0x02,0x12,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x53,0x53
  ,0x03,0x03,0x53,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03
  ,0x03,0x03,0x45,0x03,0x21,0x10,0x21,0x02,0x03,0x03,0x34,0x44,0x44,0x44
  ,0x44,0x44,0x54,0x54,0x43,0x43,0x54,0x44,0x44,0x44,0x44,0x44,0x44,0x44
  ,0x44,0x44,0x44,0x43,0x43,0x03,0x45,0x03,0x21,0x10,0x21,0x02,0x03,0x03
  ,0x34,0x04,0x44,0x44,0x44,0x04,0x53,0x53,0x43,0x43,0x54,0x44,0x44,0x44
  ,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x43,0x43,0x03,0x45,0x03,0x21,0x10
  ,0x21,0x02,0x12,0x03,0x03,0x03,0x03,0x03,0x03,0x11,0x11,0x11,0x11,0x11
  ,0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x45,0x44,0x43,0x43,0x03
  ,0x45,0x03,0x21,0x10,0x21,0x02,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12
  ,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x03
  ,0x45,0x43,0x43,0x03,0x45,0x03,0x21,0x10,0x21,0x02,0x12,0xa8,0x2c,0x07
  ,0x07,0x39,0x38,0x06,0x06,0x27,0x27,0x13,0x16,0x13,0xa3,0xa3,0xa2,0x28
  ,0x14,0x14,0x91,0x03,0x45,0x43,0x43,0x03,0x45,0x03,0x21,0x10,0x21,0x02
  ,0x12,0x48,0xa7,0x3b,0x3b,0x39,0x06,0x06,0xa8,0xa4,0xa4,0x13,0x16,0x13
  ,0xa5,0xa4,0x14,0xa2,0x14,0x14,0x91,0x03,0x45,0x43,0x43,0x03,0x45,0x03
  ,0x21,0x10,0x21,0x02,0x12,0x49,0xa7,0x07,0x39,0x39,0x06,0x06,0xa8,0xa4
  ,0xa4,0x13,0x16,0x13,0x14,0x14,0x14,0x92,0x14,0x73,0x91,0x03,0x45,0x43
  ,0x43,0x03,0x45,0x03,0x21,0x10,0x11,0x02,0x12,0x49,0x48,0xa7,0x39,0x07
  ,0x38,0xa8,0xa5,0xa6,0xa6,0x13,0x16,0x13,0x25,0x14,0x14,0x13,0x92,0x73
  ,0xa3,0x03,0x45,0x43,0x43,0x03,0x45,0x03,0x21,0x01,0x02,0x12,0x12,0x48
  ,0x48,0xa7,0x07,0xaa,0xa9,0xa8,0xa5,0xa6,0xa6,0x13,0x16,0x13,0x14,0x14
  ,0x13,0x13,0x92,0x14,0x94,0x03,0x45,0x43,0x43,0x03,0x45,0x03,0x21,0x01
  ,0x11,0x12,0x12,0x49,0x49,0xb9,0xa7,0xa6,0xa5,0xa5,0xa6,0x26,0x26,0x13
  ,0x16,0x13,0x25,0x14,0x13,0x13,0x14,0x92,0x92,0x03,0x45,0x43,0x43,0x03
  ,0x45,0x03,0x21,0x01,0x11,0x03,0x12,0x49,0xb9,0xa7,0x2b,0x2b,0x2a,0x06
  ,0xa5,0x26,0x25,0x13,0x16,0x13,0x25,0x14,0x13,0x14,0x92,0xa3,0x93,0x03
  ,0x45,0x43,0x43,0x03,0x45,0x03,0x21,0x01,0x11,0x12,0x12,0xb9,0xa7,0x2c
  ,0x07,0x39,0x06,0x06,0xa5,0x26,0x25,0x13,0x16,0x13,0x14,0x14,0x13,0x14
  ,0x93,0x13,0x13,0x03,0x45,0x43,0x43,0x03,0x45,0x03,0x21,0x01,0x11,0x12
  ,0x12,0x13,0x13,0x2c,0x39,0x28,0x06,0x06,0x06,0xa4,0xa4,0x13,0x16,0x13
  ,0x13,0x13,0x14,0x92,0xa3,0x13,0x13,0x03,0x45,0x43,0x43,0x03,0x45,0x03
  ,0x21,0x01,0x11,0x12,0x12,0x16,0x16,0x13,0x07,0x39,0x06,0x06,0x06,0xa4
  ,0xa4,0x25,0x13,0x16,0x16,0x16,0x13,0x93,0x13,0x13,0x13,0x03,0x45,0x43
  ,0x43,0x03,0x45,0x03,0x21,0x01,0x11,0x12,0x12,0x13,0x13,0x16,0x13,0x39
  ,0x06,0x06,0x06,0x06,0x05,0xa4,0xa3,0x13,0x13,0x13,0x16,0x13,0x13,0x13
  ,0x12,0x12,0x45,0x43,0x43,0x03,0x45,0x03,0x21,0x01,0x11,0x12,0x12,0xa8
  ,0x07,0x13,0x16,0x13,0x06,0x06,0x06,0x27,0x27,0xa4,0xa5,0xa5,0xa4,0x13
  ,0x13,0x16,0x13,0x13,0x12,0x03,0x45,0x43,0x43,0x03,0x45,0x03,0x21,0x01
  ,0x11,0x12,0x12,0x3a,0xa7,0x13,0x16,0x13,0x06,0x06,0xa8,0xa4,0xa4,0xa6
  ,0x15,0x25,0x14,0x14,0x13,0x16,0x13,0x13,0x12,0x03,0x45,0x43,0x43,0x03
  ,0x45,0x03,0x21,0x01,0x11,0x12,0x12,0x39,0xa7,0x13,0x16,0x13,0x06,0x06
  ,0xa8,0xa4,0xa4,0xa5,0x15,0x14,0x14,0x13,0x13,0x16,0x13,0x13,0x12,0x03
  ,0x45,0x43,0x43,0x03,0x45,0x03,0x21,0x01,0x11,0x12,0x12,0x39,0x39,0x13
  ,0x16,0x13,0x06,0xa8,0xa4,0xa6,0xa5,0x25,0x15,0x14,0x14,0x14,0x13,0x16
  ,0x13,0x13,0x12,0x03,0x45,0x43,0x43,0x03,0x45,0x03,0x21,0x01,0x11,0x12
  ,0x12,0x39,0x39,0x13,0x16,0x13,0xa8,0xa8,0xa4,0xa6,0xa6,0x25,0x15,0x14
  ,0x14,0x13,0x13,0x16,0x13,0x13,0x13,0x03,0x45,0x43,0x43,0x03,0x45,0x03
  ,0x21,0x01,0x11,0x12,0x12,0x39,0x39,0x13,0x16,0x13,0xa5,0xa5,0xa6,0x26
  ,0x25,0x25,0x15,0x15,0x14,0x14,0x13,0x16,0x13,0x92,0x92,0x03,0x45,0x43
  ,0x43,0x03,0x45,0x03,0x21,0x01,0x11,0x12,0x12,0x39,0x07,0x13,0x16,0x13
  ,0x2a,0x06,0xa4,0x26,0x25,0x25,0x15,0x14,0x14,0x14,0x13,0x16,0x13,0x27
  ,0x27,0x03,0x45,0x43,0x43,0x03,0x45,0x03,0x21,0x01,0x11,0x12,0x12,0x07
  ,0xa7,0x13,0x16,0x13,0x06,0x06,0xa4,0x26,0x25,0x25,0x15,0x15,0x14,0x14
  ,0x13,0x16,0x13,0x13,0x92,0x03,0x45,0x43,0x43,0x03,0x45,0x03,0x21,0x01
  ,0x11,0x12,0x12,0x07,0xa7,0x13,0x16,0x13,0x06,0x06,0x06,0xa4,0xa4,0x25
  ,0x05,0x04,0x14,0x14,0x13,0x16,0x13,0x13,0x91,0x03,0x45,0x43,0x43,0x03
  ,0x45,0x03,0x21,0x01,0x11,0x12,0x12,0xa8,0x2c,0x13,0x16,0x13,0x06,0x06
  ,0x06,0xa7,0xa7,0xa4,0xa3,0xa3,0xa2,0xa2,0x13,0x16,0x13,0x13,0x91,0x03
  ,0x45,0x43,0x43,0x03,0x45,0x03,0x21,0x01,0x11,0x12,0x12,0xa8,0x07,0x13
  ,0x16,0x13,0x06,0x06,0xa8,0xa4,0xa4,0x29,0x28,0x28,0x28,0x14,0x13,0x16
  ,0x13,0x13,0x91,0x03,0x45,0x43,0x43,0x03,0x45,0x03,0x21,0x01,0x11,0x12
  ,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12
  ,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x03,0x45,0x43,0x43,0x03,0x45,0x03
  ,0x21,0x01,0x11,0x12,0x12,0x03,0x03,0x03,0x03,0x03,0x03,0x02,0x11,0x11
  ,0x11,0x11,0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x45,0x44,0x43
  ,0x43,0x03,0x45,0x03,0x21,0x01,0x11,0x12,0x03,0x34,0x44,0x44,0x44,0x44
  ,0x45,0x44,0x53,0x53,0x44,0x44,0x43,0x45,0x44,0x44,0x44,0x44,0x44,0x44
  ,0x44,0x44,0x44,0x43,0x43,0x03,0x45,0x03,0x21,0x01,0x11,0x12,0x03,0x34
  ,0x44,0x44,0x44,0x44,0x44,0x44,0x54,0x54,0x44,0x44,0x54,0x44,0x45,0x44
  ,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x43,0x43,0x03,0x45,0x03,0x21,0x01
  ,0x11,0x02,0x03,0x03,0x34,0x34,0x34,0x34,0x34,0x34,0x53,0x53,0x43,0x43
  ,0x53,0x34,0x34,0x34,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03
  ,0x45,0x03
};

const unsigned char texture5[] =
{  32, 32 // width, height
  ,0x02,0x02,0x01,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03
  ,0x03,0x04,0x03,0x02,0x02,0x02,0x01,0x02,0x02,0x02,0x00,0x00,0x8f,0x00
  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8f,0x00
  ,0x00,0x03,0x03,0x03,0x03,0x04,0x03,0x02,0x02,0x02,0x01,0x02,0x02,0x03
  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x87,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f
  ,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x03,0x04,0x03,0x02,0x02,0x02
  ,0x01,0x02,0x02,0x02,0x00,0x00,0x8f,0x00,0x00,0x00,0x00,0x8f,0x00,0x00
  ,0x00,0x8f,0x00,0x00,0x00,0x00,0x8f,0x00,0x00,0x03,0x03,0x03,0x03,0x04
  ,0x03,0x02,0x02,0x02,0x01,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00
  ,0x00,0x8f,0x87,0x00,0x87,0x8f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03
  ,0x03,0x03,0x03,0x04,0x03,0x02,0x02,0x02,0x01,0x02,0x02,0x02,0x00,0x00
  ,0x8f,0x00,0x00,0x00,0x00,0x87,0x8f,0x8f,0x8f,0x87,0x00,0x00,0x00,0x00
  ,0x8f,0x00,0x00,0x03,0x03,0x03,0x03,0x04,0x03,0x02,0x02,0x02,0x01,0x02
  ,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x03,0x04,0x03,0x02
  ,0x02,0x02,0x01,0x02,0x02,0x03,0x00,0x00,0x8f,0x00,0x00,0x00,0x00,0x87
  ,0x8f,0x8f,0x8f,0x87,0x00,0x00,0x00,0x00,0x8f,0x00,0x00,0x03,0x03,0x03
  ,0x03,0x04,0x03,0x02,0x02,0x02,0x01,0x02,0x02,0x02,0x00,0x00,0x00,0x00
  ,0x00,0x00,0x00,0x8f,0x87,0x00,0x87,0x8f,0x00,0x00,0x00,0x00,0x00,0x00
  ,0x00,0x03,0x03,0x03,0x03,0x04,0x03,0x02,0x02,0x02,0x01,0x02,0x02,0x02
  ,0x00,0x00,0x8f,0x00,0x00,0x00,0x00,0x87,0x8f,0x8f,0x8f,0x87,0x00,0x00
  ,0x00,0x00,0x8f,0x00,0x00,0x03,0x03,0x03,0x03,0x04,0x03,0x02,0x02,0x02
  ,0x01,0x02,0x02,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x03,0x04
  ,0x03,0x02,0x02,0x02,0x01,0x02,0x02,0x02,0x00,0x00,0x8f,0x00,0x00,0x8f
  ,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x00,0x00,0x00,0x00,0x8f,0x00,0x00,0x03
  ,0x03,0x03,0x03,0x04,0x03,0x02,0x02,0x02,0x01,0x02,0x02,0x02,0x00,0x00
  ,0x00,0x00,0x00,0x00,0x00,0x00,0x87,0x8f,0x87,0x00,0x00,0x00,0x00,0x00
  ,0x00,0x00,0x00,0x03,0x03,0x03,0x03,0x04,0x03,0x02,0x02,0x02,0x01,0x02
  ,0x02,0x02,0x00,0x00,0x8f,0x00,0x00,0x00,0x00,0x87,0x8f,0x00,0x8f,0x87
  ,0x00,0x00,0x00,0x00,0x8f,0x00,0x00,0x03,0x03,0x03,0x03,0x04,0x03,0x02
  ,0x02,0x02,0x01,0x02,0x02,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8f
  ,0x00,0x00,0x00,0x8f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03
  ,0x03,0x04,0x03,0x02,0x02,0x02,0x01,0x02,0x02,0x02,0x00,0x00,0x8f,0x00
  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8f,0x00
  ,0x00,0x03,0x03,0x03,0x03,0x04,0x03,0x02,0x02,0x02,0x01,0x02,0x02,0x02
  ,0x00,0x00,0x00,0x00,0x00,0x8f,0x00,0x8f,0x8f,0x8f,0x8f,0x8f,0x00,0x00
  ,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x03,0x04,0x03,0x02,0x02,0x02
  ,0x01,0x02,0x02,0x03,0x00,0x00,0x8f,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  ,0x00,0x00,0x00,0x00,0x00,0x00,0x8f,0x00,0x00,0x03,0x03,0x03,0x03,0x04
  ,0x03,0x02,0x02,0x02,0x01,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00
  ,0x00,0x8f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03
  ,0x03,0x03,0x03,0x04,0x03,0x02,0x02,0x02,0x01,0x02,0x02,0x02,0x00,0x00
  ,0x8f,0x00,0x00,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x87,0x00,0x00,0x00,0x00
  ,0x8f,0x00,0x00,0x03,0x03,0x03,0x03,0x04,0x03,0x02,0x02,0x02,0x01,0x02
  ,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8f,0x00,0x00,0x87,0x8f
  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x03,0x04,0x03,0x02
  ,0x02,0x02,0x01,0x02,0x02,0x03,0x00,0x00,0x8f,0x00,0x00,0x00,0x00,0x00
  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8f,0x00,0x00,0x03,0x03,0x03
  ,0x03,0x04,0x03,0x02,0x02,0x02,0x01,0x02,0x02,0x02,0x00,0x00,0x00,0x00
  ,0x00,0x00,0x00,0x8f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  ,0x00,0x03,0x03,0x03,0x03,0x04,0x03,0x02,0x02,0x02,0x01,0x02,0x02,0x02
  ,0x00,0x00,0x8f,0x00,0x00,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x87,0x00,0x00
  ,0x00,0x00,0x8f,0x00,0x00,0x03,0x03,0x03,0x03,0x04,0x03,0x02,0x02,0x02
  ,0x01,0x02,0x02,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8f,0x00,0x00
  ,0x87,0x8f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x03,0x04
  ,0x03,0x02,0x02,0x02,0x01,0x02,0x02,0x02,0x00,0x00,0x8f,0x00,0x00,0x00
  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8f,0x00,0x00,0x03
  ,0x03,0x03,0x03,0x04,0x03,0x02,0x02,0x02,0x01,0x02,0x02,0x02,0x00,0x00
  ,0x00,0x00,0x00,0x00,0x00,0x87,0x8f,0x8f,0x8f,0x87,0x00,0x00,0x00,0x00
  ,0x00,0x00,0x00,0x03,0x03,0x03,0x03,0x04,0x03,0x02,0x02,0x02,0x01,0x02
  ,0x02,0x02,0x00,0x00,0x8f,0x00,0x00,0x00,0x00,0x8f,0x87,0x00,0x87,0x8f
  ,0x00,0x00,0x00,0x00,0x8f,0x00,0x00,0x03,0x03,0x03,0x03,0x04,0x03,0x02
  ,0x02,0x02,0x01,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x87
  ,0x8f,0x8f,0x8f,0x87,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03
  ,0x03,0x04,0x03,0x02,0x02,0x02,0x01,0x02,0x02,0x03,0x00,0x00,0x8f,0x00
  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8f,0x00
  ,0x00,0x03,0x03,0x03,0x03,0x04,0x03,0x02,0x02,0x02,0x01,0x02,0x02,0x02
  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  ,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x03,0x04,0x03,0x02,0x02,0x02
  ,0x01,0x02,0x02,0x02,0x00,0x00,0x8f,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  ,0x00,0x00,0x00,0x00,0x00,0x00,0x8f,0x00,0x00,0x03,0x03,0x03,0x03,0x04
  ,0x03,0x02
};

const unsigned char texture6[] =
{  32, 32 // width, height
  ,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1
  ,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1
  ,0xb1,0xb1,0xb1,0xb1,0xa0,0x2c,0x37,0x26,0x06,0x09,0x0c,0x0d,0x0d,0x5f
  ,0x5f,0x5f,0x5d,0x5f,0x5d,0x6f,0x6c,0x6d,0x6b,0x5b,0x59,0x58,0x5b,0x59
  ,0x5b,0x5b,0x5d,0x59,0x08,0x5b,0x06,0xb1,0x20,0x0e,0x25,0x25,0x07,0x0b
  ,0x0c,0x0d,0x0b,0x5f,0x5d,0x5d,0x5d,0x5f,0x4b,0x6c,0x6a,0x6c,0x6b,0x5d
  ,0x5b,0x59,0x58,0x58,0x59,0x5b,0x59,0x58,0x06,0x5b,0x04,0xb1,0x20,0x2e
  ,0x33,0x34,0x24,0x24,0x06,0x04,0x04,0x04,0x03,0x04,0x05,0x04,0x22,0x32
  ,0x22,0x32,0x33,0x43,0x04,0x04,0x04,0x04,0x04,0x45,0x57,0x55,0x55,0x58
  ,0x43,0xb1,0xb0,0x28,0x22,0x32,0x33,0x33,0x44,0x56,0x55,0x55,0x55,0x58
  ,0x57,0x59,0x56,0x67,0x65,0x67,0x65,0x56,0x56,0x57,0x57,0x58,0x57,0x04
  ,0x55,0x56,0x04,0x58,0x03,0xb1,0xb0,0x29,0x22,0x21,0x23,0x22,0x54,0x56
  ,0x57,0x56,0x56,0x56,0x55,0x57,0x56,0x65,0x64,0x66,0x65,0x58,0x58,0x56
  ,0x56,0x56,0x56,0x04,0x57,0x55,0x55,0x56,0x03,0xb1,0xb0,0x28,0x21,0x32
  ,0x22,0x22,0x53,0x43,0x54,0x54,0x54,0x54,0x55,0x54,0x55,0x63,0x64,0x54
  ,0x64,0x55,0x55,0x55,0x55,0x55,0x55,0x03,0x55,0x56,0x04,0x57,0x42,0xb1
  ,0x31,0x06,0x31,0x31,0x32,0x21,0x53,0x53,0x54,0x54,0x54,0x55,0x54,0x54
  ,0x54,0x64,0x63,0x63,0x64,0x55,0x55,0x55,0x55,0x55,0x55,0x04,0x5d,0x56
  ,0x05,0x57,0x03,0xb1,0xa0,0x2d,0x20,0x32,0x22,0x21,0x43,0x55,0x55,0x56
  ,0x55,0x55,0x56,0x56,0x57,0x65,0x65,0x65,0x66,0x57,0x56,0x55,0x56,0x57
  ,0x56,0x07,0x5f,0x57,0x55,0x55,0x42,0xb1,0x20,0x2b,0x31,0x21,0x23,0x21
  ,0x53,0x55,0x57,0x96,0x96,0x96,0x96,0x57,0x96,0x65,0x95,0x66,0x96,0x58
  ,0x96,0x96,0x96,0x96,0x57,0x07,0x5f,0x57,0x04,0x56,0x03,0xb1,0x20,0x05
  ,0x20,0x33,0x22,0x31,0x53,0x55,0x56,0x96,0x96,0x96,0x57,0x58,0x56,0x65
  ,0x65,0x66,0x65,0x58,0x56,0x96,0x96,0x96,0x58,0x06,0x5f,0x56,0x04,0x56
  ,0x42,0xb1,0x31,0x05,0x32,0x33,0x23,0x21,0x53,0x55,0x57,0x96,0x96,0x58
  ,0x57,0x58,0x56,0x66,0x65,0x66,0x65,0x58,0x58,0x58,0x96,0x96,0x57,0x07
  ,0x5f,0x57,0x55,0x58,0x42,0xb1,0xb0,0x29,0x31,0x22,0x22,0x21,0x43,0x55
  ,0x58,0x96,0x58,0x57,0x56,0x57,0x57,0x65,0x65,0x66,0x65,0x57,0x59,0x57
  ,0x56,0x96,0x56,0x06,0x5d,0x56,0x55,0x58,0x33,0xb1,0x20,0x26,0x21,0x21
  ,0x33,0x21,0x53,0x55,0x57,0x57,0x57,0x56,0x58,0x57,0x58,0x65,0x75,0x66
  ,0x66,0x57,0x56,0x58,0x59,0x59,0x58,0x07,0x5f,0x55,0x55,0x56,0x42,0xb1
  ,0xb0,0x06,0x32,0x31,0x22,0x31,0x53,0x55,0x57,0x58,0x57,0x58,0x57,0x58
  ,0x57,0x75,0x65,0x66,0x65,0x56,0x57,0x56,0x57,0x58,0x56,0x07,0x59,0x57
  ,0x55,0x56,0x42,0xb1,0x20,0x25,0x21,0x21,0x22,0x31,0x42,0x44,0x57,0x58
  ,0x57,0x58,0x56,0x57,0x56,0x67,0x65,0x56,0x65,0x56,0x58,0x56,0x57,0x58
  ,0x57,0x07,0x5d,0x56,0x05,0x56,0x42,0xb1,0x20,0x24,0x20,0x22,0x23,0x21
  ,0x43,0x55,0x57,0x58,0x57,0x58,0x56,0x57,0x56,0x75,0x74,0x66,0x65,0x57
  ,0x59,0x58,0x57,0x57,0x57,0x0a,0x0c,0x55,0x04,0x57,0x42,0xb1,0xb1,0x25
  ,0x31,0x21,0x22,0x22,0x43,0x55,0x57,0x57,0x56,0x57,0x57,0x58,0x58,0x65
  ,0x65,0x66,0x66,0x57,0x57,0x58,0x58,0x56,0x57,0x09,0x0d,0x57,0x05,0x57
  ,0x42,0xb1,0xb0,0x25,0x31,0x31,0x22,0x21,0x43,0x56,0x59,0x58,0x57,0x58
  ,0x58,0x58,0x57,0x75,0x75,0x66,0x65,0x58,0x58,0x59,0x57,0x58,0x59,0x09
  ,0x0c,0x57,0x55,0x56,0x02,0xb1,0xb0,0x06,0x20,0x31,0x33,0x32,0x53,0x56
  ,0x57,0x96,0x57,0x56,0x56,0x56,0x57,0x65,0x74,0x55,0x56,0x58,0x57,0x59
  ,0x57,0x96,0x58,0x0c,0x5f,0x58,0x55,0x57,0x42,0xb1,0xb0,0x04,0xb0,0x21
  ,0x23,0x22,0x43,0x55,0x57,0x96,0x96,0x59,0x56,0x57,0x56,0x67,0x74,0x66
  ,0x55,0x57,0x57,0x58,0x96,0x96,0x58,0x0d,0x0c,0x57,0x04,0x57,0x02,0xb1
  ,0x20,0x06,0x31,0x22,0x33,0x22,0x43,0x55,0x56,0x96,0x96,0x96,0x57,0x58
  ,0x58,0x65,0x65,0x66,0x56,0x56,0x58,0x96,0x96,0x96,0x57,0x09,0x0d,0x58
  ,0x55,0x57,0x33,0xb1,0xb1,0x06,0x31,0x21,0x22,0x32,0x53,0x55,0x57,0x96
  ,0x96,0x96,0x96,0x57,0x96,0x65,0x95,0x66,0x95,0x57,0x96,0x96,0x96,0x96
  ,0x58,0x07,0x5f,0x57,0x04,0x56,0x02,0xb1,0xb0,0x06,0x20,0x22,0x33,0x21
  ,0x43,0x56,0x57,0x56,0x57,0x58,0x57,0x58,0x57,0x66,0x65,0x66,0x65,0x56
  ,0x58,0x57,0x57,0x58,0x5a,0x0d,0x0d,0x57,0x04,0x56,0x03,0xb1,0x31,0x25
  ,0x31,0x21,0x23,0x22,0x45,0x59,0x5d,0x59,0x5d,0x5f,0x5d,0x5f,0x5c,0x6e
  ,0x6b,0x6d,0x5a,0x5f,0x5e,0x5c,0x5f,0x5f,0x0c,0x0a,0x0d,0x57,0x04,0x57
  ,0x03,0xb1,0xb0,0x06,0x31,0x31,0x33,0x23,0x47,0x5b,0x5f,0x5a,0x59,0x5b
  ,0x5f,0x5f,0x5c,0x69,0x6e,0x6c,0x6a,0x5d,0x0e,0x5f,0x5f,0x5f,0x0e,0x0d
  ,0x5f,0x57,0x05,0x58,0x42,0xb1,0x31,0x05,0x20,0x21,0x23,0x22,0x44,0x55
  ,0x57,0x57,0x55,0x57,0x57,0x59,0x57,0x75,0x65,0x67,0x66,0x57,0x58,0x57
  ,0x57,0x57,0x59,0x04,0x55,0x55,0x04,0x56,0x03,0xb1,0xb0,0x25,0x20,0x22
  ,0x22,0x22,0x44,0x56,0x57,0x56,0x56,0x57,0x57,0x56,0x56,0x65,0x65,0x55
  ,0x65,0x58,0x56,0x55,0x58,0x57,0x56,0x04,0x56,0x56,0x55,0x57,0x03,0xb1
  ,0xb0,0x24,0xb0,0x21,0x33,0x22,0x03,0x43,0x03,0x43,0x04,0x43,0x03,0x03
  ,0x22,0x21,0x31,0x31,0x22,0x04,0x03,0x43,0x43,0x04,0x43,0x05,0x56,0x56
  ,0x55,0x58,0x03,0xb1,0xa0,0x06,0x31,0x31,0x22,0x44,0x45,0x55,0x57,0x58
  ,0x57,0x57,0x57,0x57,0x55,0x65,0x65,0x55,0x64,0x56,0x56,0x56,0x56,0x55
  ,0x55,0x55,0x56,0x56,0x44,0x57,0x03,0xb1,0xb1,0x25,0xb0,0x31,0x32,0x03
  ,0x43,0x44,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x64,0x64,0x64,0x63,0x55
  ,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x53,0x53,0x55,0x03,0xb1,0xb1,0xb1
  ,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1
  ,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1
  ,0xb1,0xb1
};

const unsigned char imageBar[] =
{  110, 21 // width, height
  ,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x08,0x03,0x08,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x03,0x03,0x03,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x08,0x03,0x03,0x03,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x03,0x03,0x03,0x0a,0x0a,0x0a,0x0a,0x0a,0x08,0x03,0x03,0x0a
  ,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x03,0x03,0x03,0x08,0x0a
  ,0x0a,0x03,0x03,0x03,0x03,0x03,0x0a,0x00,0x0d,0x0b,0x0a,0x0a,0x03,0x03
  ,0x03,0x08,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0a
  ,0x00,0x0d,0x0b,0x0a,0x03,0x0a,0x0a,0x03,0x03,0x03,0x03,0x03,0x03,0x03
  ,0x03,0x03,0x03,0x03,0x03,0x08,0x0a,0x00,0x0d,0x0b,0x0a,0x03,0x0a,0x0a
  ,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x08,0x0a,0x0a,0x0a,0x0a
  ,0x00,0x0d,0x0b,0x0a,0x03,0x0a,0x0a,0x03,0x03,0x03,0x03,0x03,0x03,0x03
  ,0x03,0x03,0x03,0x03,0x03,0x08,0x0a,0x00,0x0d,0x0b,0x0a,0x0a,0x03,0x03
  ,0x03,0x08,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0a
  ,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x03,0x03,0x03,0x08,0x0a
  ,0x0a,0x03,0x03,0x03,0x03,0x03,0x0a,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x03,0x03,0x03,0x0a,0x0a,0x0a,0x0a,0x0a,0x08,0x03,0x03,0x0a
  ,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x08,0x03,0x03,0x03,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x03,0x03,0x03,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x08,0x03,0x08,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x0d,0x0b,0x0b,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x8f,0x00,0x0d,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x8f,0x8f,0x00,0x0d,0x0b,0x0b,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x08,0x03,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x08,0x03
  ,0x03,0x03,0x0a,0x0a,0x0a,0x0a,0x0a,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a
  ,0x0a,0x0a,0x0a,0x08,0x03,0x03,0x03,0x03,0x08,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x03,0x03,0x03,0x08
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a
  ,0x0a,0x0a,0x0a,0x03,0x08,0x0a,0x0a,0x08,0x03,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x08,0x03
  ,0x03,0x03,0x0a,0x0a,0x0a,0x0a,0x0a,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a
  ,0x0a,0x0a,0x0a,0x08,0x03,0x03,0x03,0x03,0x08,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x03,0x03,0x03,0x08
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a
  ,0x0a,0x0a,0x0a,0x03,0x08,0x0a,0x0a,0x08,0x03,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x08,0x03
  ,0x03,0x03,0x0a,0x0a,0x0a,0x0a,0x0a,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a
  ,0x0a,0x0a,0x0a,0x08,0x03,0x03,0x03,0x03,0x08,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x03,0x03,0x03,0x08
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a
  ,0x0a,0x0a,0x0a,0x03,0x08,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a
  ,0x0a,0x0a,0x0a,0x03,0x03,0x03,0x03,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x03,0x0a,0x03,0x03
  ,0x03,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a
  ,0x0a,0x0a,0x0a,0x03,0x0a,0x03,0x03,0x03,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x03,0x03,0x03,0x03
  ,0x03,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x03,0x03,0x03,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x03,0x03,0x03,0x03
  ,0x03,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a
  ,0x0a,0x0a,0x0a,0x03,0x03,0x0a,0x03,0x03,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x03,0x03,0x03,0x03
  ,0x03,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x03,0x03,0x03,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x8f,0x8f,0x8f,0x00,0x0d,0x0b,0x0b
  ,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
  ,0x8f,0x8f,0x00,0x0d,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x8f,0x00,0x0d,0x0b,0x0b,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x00,0x0d,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x08
  ,0x03,0x03,0x08,0x0a,0x03,0x03,0x0a,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x08,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0a,0x0a,0x0a,0x0a
  ,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03
  ,0x03,0x03,0x03,0x0a,0x03,0x03,0x0a,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x03
  ,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0a,0x0a,0x0a,0x0a
  ,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x03,0x03,0x03,0x03,0x03,0x03,0x03
  ,0x03,0x03,0x03,0x0a,0x03,0x03,0x0a,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a
  ,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x08,0x0a,0x0a,0x0a,0x0a
  ,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x08,0x03,0x03,0x03,0x03,0x03,0x03,0x03
  ,0x03,0x03,0x0a,0x0a,0x03,0x03,0x0a,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x03
  ,0x03,0x03,0x03,0x03,0x03,0x03,0x08,0x0a,0x03,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x03,0x03,0x03,0x03,0x03,0x03,0x0a,0x0a
  ,0x0a,0x03,0x0a,0x0a,0x03,0x03,0x0a,0x00,0x0d,0x0b,0x0a,0x03,0x0a,0x03
  ,0x03,0x03,0x03,0x03,0x03,0x0a,0x08,0x03,0x03,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x00,0x0d,0x0b,0x0a,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03
  ,0x03,0x0a,0x0a,0x0a,0x03,0x03,0x0a,0x00,0x0d,0x0b,0x0a,0x03,0x08,0x03
  ,0x03,0x03,0x03,0x03,0x03,0x03,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x00,0x0d,0x0b,0x0a,0x03,0x0a,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03
  ,0x0a,0x0a,0x0a,0x0a,0x03,0x03,0x0a,0x00,0x0d,0x0b,0x0a,0x03,0x0a,0x03
  ,0x03,0x03,0x03,0x03,0x03,0x08,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x00,0x0d,0x0b,0x0a,0x03,0x0a,0x03,0x03,0x03,0x03,0x03,0x03,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x03,0x03,0x0a,0x00,0x0d,0x0b,0x0a,0x03,0x0a,0x03
  ,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x00,0x0d,0x0b,0x0a,0x03,0x0a,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03
  ,0x03,0x03,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x0d,0x0b,0x0a,0x03,0x0a,0x03
  ,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x08,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x00,0x0d,0x0b,0x0a,0x03,0x0a,0x03,0x03,0x03,0x03,0x03,0x03,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x0d,0x0b,0x0a,0x03,0x08,0x03
  ,0x03,0x03,0x03,0x03,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x00,0x0d,0x0b,0x0a,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x0d,0x0b,0x0a,0x03,0x0a,0x03
  ,0x03,0x03,0x03,0x03,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x03,0x03,0x03,0x03,0x08,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x03
  ,0x03,0x03,0x08,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x0d,0x0b,0x0a,0x0a,0x0a,0x0a
  ,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
};

const unsigned char spritePlasma[] =
{  32, 32 // width, height
  ,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0xc6,0x8f,0x8f
  ,0x8f,0x8f,0x8f,0x8f,0x43,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f
  ,0x8f,0x8f,0x8f,0x8f,0x45,0xc6,0x8f,0x44,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f
  ,0xc6,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0xc6,0x55,0x55,0xc6,0x44,0xc6,0x8f
  ,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0xc8,0xc6,0xc6,0x8f,0x55,0x8f
  ,0x8f,0x8f,0x8f,0x8f,0x55,0x8f,0x8f,0x8f,0x8f,0x44,0xc8,0xc8,0xc6,0xc6
  ,0xc6,0xc8,0xc6,0xc6,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0xc6,0xc6
  ,0xc6,0xc8,0xc6,0xc6,0x8f,0x8f,0x8f,0x8f,0x8f,0xc6,0x8f,0x8f,0xc6,0xc6
  ,0xca,0x45,0xc6,0xc6,0xc8,0xcb,0xcb,0x45,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f
  ,0x8f,0x8f,0xc6,0x44,0xc8,0xcb,0xcb,0xc9,0x45,0x44,0x8f,0x8f,0x55,0x55
  ,0x44,0x8f,0xc6,0xc8,0xc9,0xca,0x8f,0x44,0x8f,0xc8,0xc9,0xc8,0x8f,0x8f
  ,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x55,0xc8,0xc8,0xc8,0xc9,0xc6,0xc6,0x8f
  ,0x8f,0x8f,0x44,0x8f,0xc6,0xc6,0xc8,0xc9,0xca,0xc6,0x44,0x8f,0x43,0x8f
  ,0xc8,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x44,0xc6,0xc6
  ,0x55,0x8f,0x8f,0x44,0x8f,0x8f,0x8f,0xc6,0xc6,0xca,0xc9,0x4a,0xc6,0x46
  ,0x8f,0x8f,0x8f,0x8f,0x43,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f
  ,0x8f,0x8f,0x8f,0x55,0x8f,0x8f,0x8f,0x8f,0xc6,0x8f,0x8f,0xc8,0xca,0xcb
  ,0x4a,0x4a,0x4a,0xc6,0x44,0x8f,0x8f,0x44,0xc6,0xc8,0x8f,0xc6,0xc6,0x8f
  ,0x8f,0x8f,0x8f,0x8f,0x8f,0x44,0xc6,0x44,0x8f,0x8f,0x8f,0x8f,0xc6,0x8f
  ,0x8f,0xc6,0xc6,0xca,0x4a,0x4c,0x4a,0xcb,0xc8,0xc6,0x8f,0xc6,0xc9,0xc9
  ,0xca,0xc9,0xc9,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x44,0xc6,0x8f,0x8f,0x8f
  ,0x8f,0xc6,0x45,0xc6,0x8f,0xc6,0xc8,0xca,0x4a,0x4c,0x4a,0x49,0xca,0xca
  ,0xc8,0x47,0xc9,0xcb,0xc6,0xca,0xc6,0xc6,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f
  ,0x8f,0x55,0x8f,0x8f,0x8f,0xc6,0x8f,0x8f,0xc6,0xc9,0xc8,0x49,0x4a,0x4a
  ,0x4a,0x49,0x4b,0x49,0x49,0xc8,0xca,0xc9,0xc6,0x43,0xc6,0x8f,0x8f,0x8f
  ,0x8f,0x8f,0x55,0x8f,0x8f,0x8f,0x8f,0x8f,0x55,0x44,0x8f,0x43,0xc8,0xcb
  ,0x4a,0x4a,0x4a,0x4a,0xca,0x49,0x4a,0x4a,0xcb,0xca,0xc6,0xc8,0x8f,0x8f
  ,0xc6,0x8f,0x8f,0x8f,0x8f,0xc6,0x8f,0x8f,0x8f,0x8f,0x8f,0xc6,0x8f,0x8f
  ,0x55,0xca,0x4a,0x4a,0x4a,0x4c,0x4a,0x4a,0x4a,0xcb,0x4a,0x4a,0x4a,0xc8
  ,0xc8,0x8f,0x8f,0xc6,0xc6,0xc6,0x8f,0x8f,0x8f,0x55,0xc6,0x8f,0x8f,0x8f
  ,0x43,0x8f,0xc6,0xc6,0xc8,0x4a,0x4c,0x4a,0x4a,0x4a,0x4c,0x4c,0x4a,0x4a
  ,0x4a,0x49,0x4a,0xc9,0xc6,0x8f,0x8f,0xc6,0xcb,0x46,0x55,0x8f,0x8f,0xc6
  ,0x44,0xc6,0xc8,0x8f,0x8f,0xc6,0xc6,0xc8,0x49,0x4a,0x4a,0x4a,0x4a,0x4a
  ,0x4e,0x4e,0x4d,0x4a,0x4a,0x4a,0x49,0x4a,0xc8,0xc6,0xc6,0xca,0x47,0x4b
  ,0xc6,0xc6,0xc6,0x45,0x8f,0xc8,0xcb,0xc6,0x44,0x55,0xc8,0xc9,0x4a,0x4a
  ,0x4a,0x4a,0x4c,0x4d,0x4e,0x4e,0x4d,0x4c,0x4a,0x4a,0x4a,0x4a,0xc9,0xc8
  ,0xc6,0xc6,0x4a,0x49,0x49,0x45,0xca,0xc9,0xc6,0x45,0xca,0xc6,0x8f,0xc6
  ,0xc9,0xcb,0x4a,0x4c,0x4a,0x4a,0x4c,0x4d,0x0e,0x4e,0x0e,0x4e,0x4a,0x4a
  ,0x4a,0x49,0x4a,0xc9,0xc6,0xc9,0xcb,0x4b,0xcb,0x4a,0xcb,0xcb,0x8f,0xc8
  ,0xc6,0xc6,0x8f,0x8f,0x55,0xc6,0xca,0x4a,0x4a,0x4a,0x4a,0x4a,0xce,0x4e
  ,0x4e,0xce,0x4a,0x4a,0x49,0x4a,0x49,0xc8,0x45,0xc8,0xca,0xc9,0x49,0xc9
  ,0xc8,0xc6,0x8f,0x55,0xca,0xc6,0xc6,0xc6,0x8f,0x8f,0xc6,0x49,0x4a,0x4a
  ,0x4a,0x4a,0x4d,0xce,0x4d,0x4d,0x4c,0x4a,0x49,0x49,0xcb,0xc6,0xc6,0x55
  ,0xc6,0xc9,0xc9,0xc9,0x55,0xc6,0x8f,0x8f,0x55,0xc6,0xc6,0xc6,0x8f,0x8f
  ,0x44,0xc9,0x4a,0x4a,0x4a,0x4a,0x4a,0x4d,0x4c,0x4a,0x4a,0x4a,0x49,0x4a
  ,0xc9,0xc6,0x8f,0x55,0xc8,0xc6,0xc8,0x45,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f
  ,0xc6,0xc6,0x8f,0x8f,0x55,0xca,0x4a,0x4a,0x4a,0x49,0x4c,0x4d,0x4a,0x4a
  ,0x4a,0x4a,0x4a,0xca,0x49,0xc6,0x8f,0x8f,0x55,0xc6,0xc6,0xc6,0x8f,0x8f
  ,0x8f,0x8f,0x8f,0x8f,0x55,0x8f,0x8f,0x8f,0xc6,0xcb,0x4a,0xcb,0x49,0x4a
  ,0x4a,0x4c,0x4c,0x4a,0x4a,0x4a,0x4a,0x49,0x49,0x55,0x8f,0x55,0x8f,0xc8
  ,0x45,0xc6,0x8f,0x8f,0x8f,0x8f,0x8f,0xc6,0xc6,0x44,0x8f,0x8f,0x55,0xc9
  ,0xc9,0xcb,0x4a,0x49,0x4a,0x4a,0x4a,0x4a,0x49,0xcb,0xcb,0x49,0xcb,0xc6
  ,0x8f,0x8f,0xc6,0xc8,0xc9,0xc6,0x8f,0x8f,0x8f,0x8f,0x55,0xca,0xc6,0xc6
  ,0x8f,0x8f,0xc6,0xc9,0xc8,0xca,0xcb,0x4a,0x4a,0x4a,0x4a,0xcb,0xca,0xc6
  ,0xc6,0xc9,0xca,0xc6,0x8f,0x8f,0xc6,0xc6,0xc9,0xc6,0x8f,0x8f,0x8f,0x8f
  ,0xc8,0xca,0xc8,0x44,0x8f,0x8f,0x8f,0x45,0xc6,0xc6,0xc9,0x4a,0x49,0x49
  ,0x4a,0x49,0xc6,0x8f,0x8f,0xc6,0x55,0x8f,0x8f,0x8f,0xc8,0xc6,0xc6,0x8f
  ,0x8f,0x8f,0x8f,0xc6,0xc9,0xc9,0xc9,0xc6,0x8f,0x8f,0x55,0x45,0xc6,0x44
  ,0xc9,0x49,0xcb,0xcb,0x4a,0x49,0xc6,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0xc6
  ,0x45,0xca,0xc6,0x8f,0x8f,0x8f,0x8f,0x8f,0xc6,0xc6,0xca,0xc6,0x8f,0x8f
  ,0x44,0xc6,0x8f,0x44,0xc9,0xca,0xc8,0x49,0xca,0xcb,0xc6,0x44,0xc6,0xc6
  ,0x8f,0x8f,0x44,0xc9,0xca,0xc9,0x45,0x45,0xc6,0x8f,0x8f,0x8f,0x8f,0xc8
  ,0xc9,0xc6,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0xc6,0xc6,0x46,0xc8,0xc9,0xc9
  ,0xc6,0x8f,0x45,0xc6,0xc6,0xc6,0x8f,0xc8,0xc6,0x44,0x55,0xc6,0xc6,0x8f
  ,0x8f,0x8f,0x8f,0x55,0x45,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x55,0xc9
  ,0xc6,0xc6,0xc6,0x44,0x8f,0x8f,0xc6,0xc6,0xc6,0xc8,0xc6,0x55,0x44,0x8f
  ,0x8f,0x8f,0x8f,0xc6,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f
  ,0x8f,0x8f,0x44,0x8f,0xc9,0x43,0x55,0x8f,0x8f,0x8f,0x8f,0x8f,0xc6,0x45
  ,0xc8,0xc6,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x43,0x8f,0x8f,0x8f,0x8f,0x8f
  ,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0xc6,0xc6,0xc8,0x8f,0x8f,0x8f,0x8f
  ,0x8f,0x8f,0xc6,0xc6,0xc8,0xc6,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f
  ,0x8f,0x8f,0x8f,0x8f,0x8f,0xc6,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0xc6,0xc9
  ,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0xc6,0x44,0x8f,0x8f,0x8f,0x8f,0x8f
  ,0x55,0x8f
};

#define TEXTURES 6

const unsigned char *textures[TEXTURES] =
  {texture1, texture2, texture3, texture4, texture5, texture6};

unsigned char textureAverageColors[TEXTURES];

RCL_Unit floorHeightAt(int16_t x, int16_t y)
{
  if (x < 0 || x >= LEVEL_X_RES || y < 0 || y >= LEVEL_Y_RES)
    return RCL_UNITS_PER_SQUARE * 2;

  RCL_Unit square = level[(LEVEL_Y_RES - y -1) * LEVEL_X_RES + x];

#ifdef RENDER_COMPLEX
  /* algorithm used with this version doesn't support rolling doors, so give
     door square zero height */
  return square == 0 || square == 6 ? 0 : RCL_UNITS_PER_SQUARE * 2;
#else
  return square == 0 ? 0 : RCL_UNITS_PER_SQUARE * 2;
#endif
}

RCL_Unit collisionAt(int16_t x, int16_t y)
{
  if (x < 0 || x >= LEVEL_X_RES || y < 0 || y >= LEVEL_Y_RES)
    return RCL_UNITS_PER_SQUARE;

  RCL_Unit square = level[(LEVEL_Y_RES - y -1) * LEVEL_X_RES + x];
  return square == 0 || square == 6 ? 0 : RCL_UNITS_PER_SQUARE;
}

RCL_Unit textureAt(int16_t x, int16_t y)
{
  RCL_Unit t = 0;

  if (x >= 0 && x < LEVEL_X_RES && y >= 0 && y < LEVEL_Y_RES)
    t = max(level[(LEVEL_Y_RES - y -1) * LEVEL_X_RES + x] - 1,0); 

  return t;
}

RCL_Unit rollAt(int16_t x, int16_t y)
{
  if (x >= 0 && x < LEVEL_X_RES && y >= 0 && y < LEVEL_Y_RES &&
    level[(LEVEL_Y_RES - y -1) * LEVEL_X_RES + x] == 6)
    return RCL_sinInt(pokitto.frameCount * 10) + DOOR_ROLL_SIGN * RCL_UNITS_PER_SQUARE; 

  return 0;
}

uint8_t cFloor, cCeiling;

RCL_Vector2D shotPosition;
RCL_Vector2D shotDirection;
bool shotFired = false;

uint8_t previousColumn = 255; ///< Helper for pixelIntensity.
int8_t pixelIntensity = 0; ///< Precomputed column intensity addition.

int16_t mirror = 0;

/**
  Function for drawing a single pixel (like fragment shader).
*/
inline void pixelFunc(RCL_PixelInfo *pixel)
{
  if (pixel->position.y == MIDDLE_ROW)
    zBuffer[pixel->position.x] = pixel->depth;

  uint8_t color = 0;

#ifndef NO_MIRROR
  if (pixel->position.y == 0)
    mirror = 0;
#endif
  
  bool drawCeiling = false;

  int16_t intensity = 0;

  if (!pixel->isWall)
  {
#if RCL_COMPUTE_FLOOR_TEXCOORDS == 1
    if (pixel->isFloor)
    {
      if (pixel->texCoords.y > 3 * RCL_UNITS_PER_SQUARE) // leave astrip of untextured floor
        color = pixel->depth > TEXTURE_MAX_DISTANCE_FLOOR ?
            textureAverageColors[1] : 
            sampleImage(textures[1],pixel->texCoords.x / FLOOR_TEXTURE_SCALE,pixel->texCoords.y / FLOOR_TEXTURE_SCALE);
      else
        color = cFloor;

  #ifdef TEXTURE_CEILING
      drawCeiling = true;
  #endif
    }
    else
    {
  #ifdef TEXTURE_CEILING
      // don't draw ceiling here, we'll draw it along with floor
      return;
  #else
      color = 0; // looks better :)
  #endif
    }

#else
    color = pixel->isFloor ? cFloor: cCeiling;
#endif

#ifndef NO_SHADING
  #ifndef NO_MIRROR
    intensity = pixel->isFloor ?
      2 - (pixel->depth - mirror * 128) / RCL_UNITS_PER_SQUARE : 0;
  #else
    intensity = 2 - pixel->depth / RCL_UNITS_PER_SQUARE;
  #endif

  color = addIntensity(color,intensity);
#endif


    mirror++;
  }
  else
  {
    RCL_Unit textureScroll = pixel->hit.type != 4 ? 0 : 16 * pokitto.frameCount;

#ifdef NO_TEXTURES
    color = textureAverageColors[pixel->hit.type];
#else
    color = pixel->depth < TEXTURE_MAX_DISTANCE ?
      sampleImage(textures[pixel->hit.type],pixel->texCoords.x + textureScroll,pixel->texCoords.y) :
      textureAverageColors[pixel->hit.type];
#endif

#ifndef NO_SHADING
    /* NOTE: to gain a lot of performance, it's best to have precomputed color
       color gradients and look the colors up as opposed to calling
       addIntensity(...), but for the sake of simplicity we don't do it
       here. */
    if (previousColumn == pixel->position.x)
    {
      color = addIntensity(color,pixelIntensity);
    }
    else
    {
      // optimization: precompute intensity for the whole column
      pixelIntensity = 2 - pixel->depth / RCL_UNITS_PER_SQUARE + (pixel->hit.direction == 0 || pixel->hit.direction == 2 ? 4 : 0);
      previousColumn = pixel->position.x;
      color = addIntensity(color,pixelIntensity);
    }
#endif

  }

  putSubsampledPixel(pixel->position.x,pixel->position.y,color);

#ifdef TEXTURE_CEILING
  if (drawCeiling)
  {
    /* here we sample a different texture for ceiling, but if the texture is
       same as floor, just reuse the color sampled above to save on the
       sampling and intensity addition */

    color = pixel->depth > TEXTURE_MAX_DISTANCE_FLOOR ?
            textureAverageColors[0] : 
            sampleImage(textures[0],pixel->texCoords.x / FLOOR_TEXTURE_SCALE,pixel->texCoords.y / FLOOR_TEXTURE_SCALE);
#ifndef NO_SHADING
    color = addIntensity(color,intensity);
#endif

    putSubsampledPixel(pixel->position.x,RESOLUTION_Y - pixel->position.y - 1,color);
  }
#endif

}

void draw()
{
#ifdef HEAD_BOB
  player.mCamera.height += player.mHeadBob;
#endif

#ifdef RENDER_COMPLEX
  RCL_renderComplex(player.mCamera,floorHeightAt,0,textureAt,defaultConstraints);
#else
  RCL_renderSimple(player.mCamera,floorHeightAt,textureAt,rollAt,defaultConstraints);
#endif

#ifdef HEAD_BOB
  player.mCamera.height -= player.mHeadBob;
#endif

  if (shotFired)
  {
    RCL_PixelInfo pos = RCL_mapToScreen(shotPosition,RCL_UNITS_PER_SQUARE,player.mCamera);

    drawSpriteSquare(spritePlasma,pos.position.x * SUBSAMPLE,
      pos.position.y,pos.depth,
      RCL_perspectiveScale(64,pos.depth),1);
  }

  drawImage(imageBar,0,INFO_BAR_START - 3);

  // uncomment for debuggin camera

/*
  pokitto.display.setColor(255);
  pokitto.display.setCursor(1,1);
  pokitto.display.print(player.mCamera.position.x);
  pokitto.display.print(" ");
  pokitto.display.print(player.mCamera.position.y);
  pokitto.display.print(" ");
  pokitto.display.print(player.mCamera.height);
  pokitto.display.print(" ");
  pokitto.display.print(player.mCamera.direction);
*/

}

int main()
{
  initGeneral();

  defaultConstraints.maxHits = 1;
  defaultConstraints.maxSteps = 20;

  for (uint8_t i = 0; i < TEXTURES; ++i)
    textureAverageColors[i] = computeAverageColor(textures[i]);

  cFloor = 10;
  cCeiling = 10;

  player.setPositionSquare(9,1);
  player.mCamera.height = RCL_CAMERA_COLL_HEIGHT_BELOW;

  player.mCamera.resolution.y = RESOLUTION_Y;

  uint32_t previousTime = 0;
  uint32_t dt;

  int16_t moveDirection;
  int16_t rotationDirection;

  while (pokitto.isRunning())
  {
    if (pokitto.update())
    {
      draw();

      uint32_t timeNow = pokitto.getTime();
      dt = timeNow - previousTime;
      previousTime = timeNow;

      moveDirection = 0;
      rotationDirection = 0;
 
      if (shotFired)
      {
        // update the shot

        RCL_Unit shotStep = (dt * SHOT_SPEED) / 1000;

        shotPosition.x += (shotStep * shotDirection.x) / RCL_UNITS_PER_SQUARE;
        shotPosition.y += (shotStep * shotDirection.y) / RCL_UNITS_PER_SQUARE;

        if (
         RCL_absVal(shotPosition.x - player.mCamera.position.x) > RCL_UNITS_PER_SQUARE * 5 ||
         RCL_absVal(shotPosition.y - player.mCamera.position.y) > RCL_UNITS_PER_SQUARE * 5 ||
         (textureAt(shotPosition.x / RCL_UNITS_PER_SQUARE,shotPosition.y / RCL_UNITS_PER_SQUARE) != 0)
         )
          shotFired = false;
      }
      else if (pokitto.bBtn())
      {
        shotPosition = player.mCamera.position;
        shotDirection = RCL_angleToDirection(player.mCamera.direction);
        shotFired = true;
      }

      bool strafe = pokitto.aBtn();

      if (!strafe)
      {
        if (pokitto.upBtn())
          moveDirection = 1;
        else if (pokitto.downBtn())
          moveDirection = -1;
      }

      if (pokitto.rightBtn())
      {
        if (!strafe)
          rotationDirection = 1;
        else
          moveDirection = 1;
      }  
      else if (pokitto.leftBtn())
      {
        if (!strafe)
          rotationDirection = -1;
        else
          moveDirection = -1;
      }

      player.update(moveDirection,strafe,rotationDirection,false,0,
        collisionAt,0,false,dt);
    }
  }

  return 0;
}