Adjust to HSV

This commit is contained in:
Miloslav Číž 2018-09-27 12:55:03 +02:00
parent 23685a022a
commit b4958c4295
4 changed files with 1088 additions and 1258 deletions

View file

@ -38,9 +38,6 @@ Player player;
Sprite sprites[SPRITES];
unsigned char floorGradient[15];
unsigned char ceilGradient[15];
/// For each level square says the texture index.
const unsigned char levelTexture[] =
{
@ -1002,16 +999,6 @@ int16_t intensity;
uint8_t color;
/*
RCL_Unit depth = pixel->depth - RCL_UNITS_PER_SQUARE * 3;
depth = depth > 0 ? depth : 1;
intensity = 0;//32 - (depth * 32) / (RCL_UNITS_PER_SQUARE * 4);
if (intensity < 0)
intensity = 0;
*/
intensity = 8 - pixel->depth / (RCL_UNITS_PER_SQUARE / 2);
if (pixel->isWall)
@ -1019,9 +1006,6 @@ int16_t intensity;
if ((pixel->hit.direction == 0 || pixel->hit.direction == 2))
intensity -= 2;
// if (intensity < 0)
// intensity = 0;
#if RCL_COMPUTE_WALL_TEXCOORDS == 1
color = sampleImage(textures[pixel->hit.type],pixel->texCoords.x,pixel->texCoords.y);
#else
@ -1029,18 +1013,14 @@ int16_t intensity;
#endif
color = addIntensity(color,intensity);
// color = addIntensity(color,intensity - 3);
}
else
{
intensity = 8 - pixel->depth / (RCL_UNITS_PER_SQUARE / 2);
color = pixel->isFloor ?
addIntensity(186,intensity):
addIntensity(135,intensity);
//floorGradient[RCL_clamp(intensity,0,14)] :
//ceilGradient[RCL_clamp(intensity,0,14)];
addIntensity(40,intensity):
addIntensity(18,intensity);
}
putSubsampledPixel(pixel->position.x,pixel->position.y,color);
@ -1048,25 +1028,6 @@ int16_t intensity;
void draw()
{
/*
uint16_t count = 0;
for (uint8_t y = 0; y < 22; ++y)
for (uint8_t x = 0; x < 16; ++x)
{
if (count > 255)
break;
for (uint8_t i = 0; i < 4; ++i)
for (uint8_t j = 0; j < 4; ++j)
pokitto.display.drawPixel(x * 4 + i,y * 4 + j,count);
count++;
}
return;
*/
RCL_renderComplex(player.mCamera,floorHeightAt,ceilingHeightAt,textureAt,defaultConstraints);
RCL_Unit previousDepth;
@ -1130,9 +1091,6 @@ int main()
{
initGeneral();
initGradient(floorGradient,rgbToIndex(3,7,0));
initGradient(ceilGradient,rgbToIndex(6,2,1));
defaultConstraints.maxHits = 8;
defaultConstraints.maxSteps = 15;

1381
demo2.cpp

File diff suppressed because it is too large Load diff

725
demo3.cpp
View file

@ -65,9 +65,6 @@ int16_t editCounter = 0;
#define SQUARE_COLORS 4
uint8_t squareColors[SQUARE_COLORS];
unsigned char floorGradient[15];
unsigned char wallGradients[SQUARE_COLORS][15];
#define HEIGHT_PROFILE_LENGTH 256
/// Used for terrain generation.
@ -84,352 +81,352 @@ const int8_t heightProfile[] = {
const unsigned char imageBackground[] =
{ 110, 44 // width, height
,0xef,0x0f,0x0f,0x0f,0x2f,0x2f,0x2f,0x2f,0xef,0xef,0x0f,0x0f,0x2f,0x2f
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xef,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf
,0xaf,0xaf,0xef,0x0f,0x0f,0x0f,0x2f,0x2f,0x2f,0x2f,0xef,0xef,0x0f,0x0f
,0x2f,0x2f,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0xaf,0xaf,0xaf,0xaf,0xaf
,0xaf,0xaf,0xaf,0xaf,0xef,0x0f,0x0f,0x0f,0x2f,0x2f,0x2f,0x2f,0xef,0xef
,0x0f,0x0f,0x2f,0x2f,0x0b,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xef,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0xaf,0xaf,0xaf
,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0x2f,0x0f,0x0f,0x2f,0x2f,0x2f,0x2f
,0xef,0xef,0x0f,0x0f,0x2f,0x2f,0x2f,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0xaf
,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0x0f,0x0f,0x0f,0x2f,0x2f
,0x2f,0x2f,0xef,0xef,0x0f,0x0f,0x2f,0x2f,0x2f,0x2f,0xef,0xef,0xef,0xef
,0xef,0xdf,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0x2f,0x0f,0x0f
,0x2f,0x2f,0x2f,0x2f,0xef,0x2f,0x0f,0x0f,0x2f,0x2f,0x2f,0x2f,0xef,0xef
,0xef,0xef,0xef,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0x0f
,0x0f,0x0f,0x2f,0x2f,0x2f,0x2f,0xef,0x2f,0x0f,0x0f,0x2f,0x2f,0x2f,0x2f
,0xef,0xef,0xef,0xef,0xef,0xdf,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf
,0xef,0x2f,0x0f,0x0f,0x2f,0x2f,0x2f,0x2f,0xef,0x2f,0x0f,0x0f,0x0f,0x2f
,0x2f,0x2f,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf
,0xaf,0xaf,0xef,0x2f,0x0f,0x2f,0x2f,0x2f,0x2f,0x2f,0x0b,0x2f,0x0f,0x0f
,0x0f,0x2f,0x2f,0x2f,0xef,0xef,0xef,0xef,0xef,0xdf,0xef,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf
,0xaf,0xaf,0xaf,0xaf,0xef,0x2f,0x0f,0x0f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f
,0x0f,0x0f,0x0f,0x2f,0x2f,0x2f,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xaf,0xaf,0xaf,0xaf
,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0x2f,0x0f,0x2f,0x2f,0x2f,0x2f,0x2f
,0x2f,0x2f,0x0f,0x0f,0x0f,0x2f,0x2f,0x2f,0xef,0xef,0xef,0xef,0xef,0xdf
,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xaf,0xaf
,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0x2f,0x0f,0x0f,0x2f,0x2f
,0x2f,0x2f,0x2f,0x2f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0xef,0xef,0xef,0xef
,0xef,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0x2f,0x0f,0x2f
,0x2f,0x2f,0x0f,0x2f,0x2f,0x2f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0xef,0xef
,0xef,0xef,0xef,0xdf,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0x2f
,0x7f,0x0f,0x0f,0x0f,0x2f,0x2f,0x2f,0x2f,0x7d,0x7d,0x0f,0x0f,0x2f,0x2f
,0x6c,0x6c,0x6c,0xee,0xee,0xee,0xee,0xec,0xee,0xec,0xec,0xec,0xdd,0xec
,0xdd,0xda,0xdd,0xda,0xdd,0xda,0x38,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9
,0xa9,0xa9,0x7f,0x0f,0x0f,0x0f,0x2f,0x2f,0x2f,0x2f,0x7d,0x7d,0x0f,0x0f
,0x2f,0x2f,0x6c,0x6c,0xee,0x6c,0xee,0xee,0xee,0xee,0xec,0xec,0xec,0xec
,0xec,0xdd,0xdd,0xdd,0xdd,0xdd,0xda,0xda,0x38,0xa9,0xa9,0xa9,0xa9,0xa9
,0xa9,0xa9,0xa9,0xa9,0x7f,0x0f,0x0f,0x0f,0x2f,0x2f,0x2f,0x2f,0x7d,0x7d
,0x0f,0x0f,0x2f,0x2f,0x08,0x6c,0x6c,0xee,0xee,0xee,0xee,0xec,0xee,0xec
,0xec,0xec,0xdd,0xec,0xdd,0xda,0xdd,0xda,0xdd,0xda,0x38,0xa9,0xa9,0xa9
,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0x7f,0x2f,0x0f,0x0f,0x2f,0x2f,0x2f,0x2f
,0x7d,0x7d,0x0f,0x0f,0x2f,0x2f,0x2f,0x6c,0xee,0x6c,0xee,0xee,0xee,0xee
,0xec,0xec,0xec,0xec,0xec,0xdd,0xdd,0xdd,0xdd,0xdd,0xda,0xda,0x38,0xa9
,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0x7f,0x0f,0x0f,0x0f,0x2f,0x2f
,0x2f,0x2f,0x7d,0x7d,0x0f,0x0f,0x2f,0x2f,0x2f,0x2f,0x6c,0xee,0xee,0xee
,0xee,0xec,0xee,0xec,0xec,0xec,0xdd,0xec,0xdd,0xda,0xdd,0xda,0xdd,0xda
,0xaa,0xa9,0xaa,0xa9,0xaa,0xa9,0xaa,0xa9,0xaa,0xa9,0x7f,0x2f,0x0f,0x0f
,0x2f,0x2f,0x2f,0x2f,0x7d,0x2f,0x0f,0x0f,0x2f,0x2f,0x2f,0x2f,0xee,0x6c
,0xee,0xee,0xee,0xee,0xec,0xec,0xec,0xec,0xec,0xdd,0xdd,0xdd,0xdd,0xdd
,0xda,0xda,0xa9,0xaa,0xa9,0xaa,0xa9,0xaa,0xa9,0xaa,0xa9,0xaa,0x7f,0x0f
,0x0f,0x0f,0x2f,0x2f,0x2f,0x2f,0x7d,0x2f,0x0f,0x0f,0x2f,0x2f,0x2f,0x2f
,0x6c,0xee,0xee,0xee,0xee,0xec,0xee,0xec,0xec,0xec,0xdd,0xec,0xdd,0xda
,0xdd,0xda,0xdd,0xda,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa
,0x7f,0x2f,0x0f,0x0f,0x2f,0x2f,0x2f,0x2f,0x7d,0x2f,0x0f,0x0f,0x0f,0x2f
,0x2f,0x2f,0xee,0x6c,0xee,0xee,0xee,0xee,0xec,0xec,0xec,0xec,0xec,0xdd
,0xdd,0xdd,0xdd,0xdd,0xda,0xda,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa
,0xaa,0xaa,0x7f,0x2f,0x0f,0x2f,0x2f,0x2f,0x2f,0x2f,0x7d,0x2f,0x0f,0x0f
,0x0f,0x2f,0x2f,0x2f,0x6c,0xee,0xee,0xee,0xee,0xec,0xee,0xec,0xec,0xec
,0xdd,0xec,0xdd,0xda,0xdd,0xda,0xdd,0xda,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa
,0xaa,0xaa,0xaa,0xaa,0x7f,0x2f,0x0f,0x0f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f
,0x0f,0x0f,0x0f,0x2f,0x2f,0x2f,0xee,0x6c,0xee,0xee,0xee,0xee,0xec,0xec
,0xec,0xec,0xec,0xdd,0xdd,0xdd,0xdd,0xdd,0xda,0xda,0xaa,0xab,0xaa,0xab
,0xaa,0xab,0xaa,0xab,0xaa,0xab,0x7f,0x2f,0x0f,0x2f,0x2f,0x2f,0x2f,0x2f
,0x2f,0x2f,0x0f,0x0f,0x0f,0x2f,0x2f,0x2f,0x6c,0xee,0xee,0xee,0xee,0xec
,0xee,0xec,0xec,0xec,0xdd,0xec,0xdd,0xda,0xdd,0xda,0xdd,0xda,0xab,0xaa
,0xab,0xaa,0xab,0xaa,0xab,0xaa,0xab,0xaa,0x7f,0x2f,0x0f,0x0f,0x2f,0x2f
,0x2f,0x2f,0x2f,0x2f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0xee,0x6c,0xee,0xee
,0xee,0xee,0xec,0xec,0xec,0xec,0xec,0xdd,0xdd,0xdd,0xdd,0xdd,0xda,0xda
,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0x7f,0x2f,0x0f,0x2f
,0x2f,0x2f,0x0f,0x2f,0x2f,0x2f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0x6c,0xee
,0xee,0xee,0xee,0xec,0xee,0xec,0xec,0xec,0xdd,0xec,0xdd,0xda,0xdd,0xda
,0xdd,0xda,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0x7f,0x2f
,0x0f,0x2f,0x2f,0x2f,0x0f,0x0f,0x2f,0x2f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f
,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf
,0xef,0x2f,0x0f,0x2f,0x2f,0x0f,0x0f,0x0f,0x2f,0x2f,0x0f,0x0f,0x0f,0x0f
,0x2f,0x2f,0xef,0xef,0xef,0xef,0xef,0xdf,0xef,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf
,0xaf,0xaf,0xef,0x2f,0x2f,0x2f,0x2f,0x0f,0x0f,0x0f,0x2f,0x2f,0x0f,0x0f
,0x0f,0x0f,0x2f,0x2f,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0x9f,0xaf,0x9f,0xaf,0x9f,0xaf
,0x9f,0xaf,0x9f,0xaf,0xef,0x2f,0x0f,0x2f,0xef,0x0f,0x0f,0x0f,0x2f,0x0f
,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0xef,0xef,0xef,0xef,0xef,0xdf,0xef,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0x9f,0xaf,0x9f
,0xaf,0x9f,0xaf,0x9f,0xaf,0x9f,0xef,0x2f,0x2f,0x2f,0xef,0x0f,0x0f,0x0f
,0x0f,0x2f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0xef,0xef,0xef,0xef,0xef,0xef
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0x9f
,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0x2f,0x0f,0x2f,0xef,0x0f
,0x0f,0x0f,0x2f,0x0f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0xef,0xef,0xef,0xef
,0xef,0xdf,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xbb,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0x2f,0x2f,0x2f
,0xef,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0x2f,0xef,0xef
,0xef,0xef,0xef,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xbb,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0x2f
,0x2f,0x2f,0xef,0xef,0x0f,0x0f,0x2f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0x2f
,0x0b,0xef,0xef,0xef,0xef,0xdf,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f
,0xef,0x2f,0x2f,0x2f,0xef,0xef,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x2f
,0x2f,0x2f,0x0b,0xef,0xef,0xef,0xef,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f
,0x9f,0x9f,0xef,0xef,0x2f,0x2f,0xef,0xef,0x0f,0x0f,0x2f,0x0f,0x0f,0x0f
,0x2f,0x2f,0x2f,0x2f,0x2f,0xef,0xef,0xef,0xef,0xdf,0xef,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0x9f,0x9f,0x9f,0x9f,0x9f
,0x9f,0x9f,0x9f,0x9f,0xef,0xef,0x2f,0x2f,0xef,0xef,0x0f,0x0f,0x0f,0x0f
,0x0f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0xef,0xef,0xef,0xef,0xef,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0x9f,0x9f,0x9f
,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0xef,0x2f,0x2f,0xef,0xef,0x0f,0x0f
,0x0f,0x0f,0xef,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x0b,0xef,0xef,0xef,0xdf
,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0xef,0x2f,0x2f,0xef,0xef
,0x0f,0x0f,0x0f,0x0f,0xef,0xef,0x2f,0x2f,0x2f,0x2f,0x2f,0x0b,0xef,0xef
,0xef,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0xef,0x2f,0x2f
,0xef,0xef,0x0f,0x0f,0x0f,0x2f,0xef,0xef,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f
,0xef,0xef,0xef,0xdf,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0xef
,0x2f,0x2f,0xef,0xef,0x0f,0x0f,0x0f,0x2f,0xef,0xef,0x2f,0x2f,0x2f,0x2f
,0x2f,0x2f,0xef,0xef,0xef,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f
,0xef,0xef,0x2f,0x2f,0xef,0xef,0x0f,0x0f,0x2f,0x2f,0xef,0xef,0x2f,0x2f
,0x2f,0x2f,0x2f,0x2f,0xef,0xef,0xef,0xdf,0xef,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0x9f,0x9f,0x9f,0x9f,0x9f
,0x9f,0x9f,0xef,0xef,0x2f,0x2f,0xef,0xef,0x0f,0x0f,0x2f,0x2f,0xef,0xef
,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0xef,0xef,0xef,0xef,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0x9f,0x9f,0x9f
,0x9f,0x9f,0x9f,0x9f,0xef,0xef,0x2f,0x2f,0xef,0xef,0x0f,0x0f,0x2f,0x2f
,0xef,0xef,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0xef,0xef,0xef,0xdf,0xef,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0x9f
,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0xef,0x2f,0x2f,0xef,0xef,0x0f,0x0f
,0x2f,0x0b,0xef,0xef,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0xef,0xef,0xef,0xef
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xbb,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0xef,0x2f,0xef,0xef,0xef
,0x0f,0x0f,0x2f,0xef,0xef,0xef,0xef,0x2f,0x2f,0x2f,0x2f,0x2f,0xef,0xef
,0xef,0xdf,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xbb,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0xef,0x2f,0xef
,0xef,0xef,0x0f,0x0f,0x2f,0xef,0xef,0xef,0xef,0x2f,0x2f,0x2f,0x2f,0x2f
,0xef,0xef,0xef,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xbb,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0xef
,0xef,0xef,0xef,0xef,0x0f,0x0f,0xef,0xef,0xef,0xef,0xef,0xef,0x2f,0x2f
,0x2f,0x0b,0xef,0xef,0xef,0xdf,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0x0f,0xef,0xef,0xef,0xef,0xef,0xef
,0x2f,0x2f,0x2f,0x0b,0xef,0xef,0xef,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0x9f,0x9f,0x9f,0x9f,0x9f
,0x9f,0x9f,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0x0f,0xef,0xef,0xef,0xef
,0xef,0xef,0x2f,0x2f,0x2f,0xef,0xef,0xef,0xef,0xdf,0xef,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0x9f,0x9f,0x9f
,0x9f,0x9f,0x9f,0x9f,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0x0f,0xef,0xef
,0xef,0xef,0xef,0xef,0x2f,0x2f,0x2f,0xef,0xef,0xef,0xef,0xef,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0x9f
,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0x2f,0x2f,0x2f,0xef,0xef,0xef,0xef,0xdf
,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xbb,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0x2f,0x2f,0x2f,0xef,0xef,0xef
,0xef,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xbb,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0x2f,0x0b,0xef
,0xef,0xef,0xef,0xdf,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xbb,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xef,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0x9f,0x9f,0x9f,0x9f,0x9f
,0x9f,0x9f,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0x9f,0x9f,0x9f
,0x9f,0x9f,0x9f,0x9f,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xef,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0x9f,0x9f
,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xaf,0x9f,0xaf,0x9f,0xaf,0x9f,0xaf,0x9f,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xdf,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0x9f,0xaf,0x9f,0xaf,0x9f,0xaf,0x9f,0xaf,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xbb,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xdf,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf
,0xaf,0xaf,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xef,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0xaf,0xaf,0xaf,0xaf
,0xaf,0xaf,0xaf,0xaf,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0xaf,0xaf
,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf
,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xaf
,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xdf,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xef,0xdf,0xdf,0x2f,0x0b,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf
,0xaf,0xaf,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xdf,0xdf,0x2f
,0x2f,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0xaf,0xaf,0xaf,0xaf,0xaf
,0xaf,0xaf,0xaf,0xaf,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xef,0xdf
,0x0b,0x2f,0x2f,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0xaf,0xaf,0xaf
,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xdf,0xdf,0x2f,0x2f,0x2f,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0xaf
,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xdf,0xef,0xdf,0x2f,0x2f,0x2f,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xbb,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xdf,0xdf,0x2f,0x2f,0x2f,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xdf,0xef,0xdf,0x2f,0x2f,0x2f,0x2f,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xdf,0x2f,0x2f,0x2f,0x2f
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf
,0xaf,0xaf,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xef,0xdf,0x2f,0x2f
,0x2f,0x2f,0x0b,0xdf,0xdf,0xdf,0xdf,0xdf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf
,0xaf,0xaf,0xaf,0xaf,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xdf
,0x2f,0x2f,0x2f,0x2f,0x2f,0xdf,0xdf,0xdf,0xdf,0xdf,0xaf,0xaf,0xaf,0xaf
,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf
,0xef,0x0b,0x2f,0x2f,0x2f,0x2f,0x2f,0xdf,0xdf,0xdf,0xdf,0xdf,0xaf,0xaf
,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xdf,0x2f,0x2f,0x2f,0x2f,0x2f,0x0b,0xdf,0xdf,0xdf,0xdf,0xdf
,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xdf,0x2f,0x2f,0x0f,0x2f,0x2f,0x2f,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0x2f,0x2f,0x0f,0x0f,0x2f,0x2f,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0x2f,0x0f,0x0f,0x0f,0x2f,0x2f
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf
,0xaf,0xaf,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0x2f,0x0f,0x0f,0x0f
,0x2f,0x2f,0x2f,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0xaf,0xaf,0xaf,0xaf,0xaf
,0xaf,0xaf,0xaf,0xaf,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0x0f,0x0f
,0x0f,0x0f,0x0f,0x2f,0x2f,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0xaf,0xaf,0xaf
,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0x0f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0x0b,0xdf,0xdf,0xdf,0xdf,0xbb,0xaf
,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0x2f,0xdf,0xdf,0xdf,0xdf
,0xbb,0x9f,0xaf,0x9f,0xaf,0x9f,0xaf,0x9f,0xaf,0x9f,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0x0b,0xdf
,0xdf,0xdf,0xdf,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f
,0x0b,0xdf,0xdf,0xdf,0xdf,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f
,0x2f,0x2f,0x2f,0xdf,0xdf,0xdf,0xdf,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f
,0x9f,0x9f,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f
,0x0f,0x0f,0x2f,0x2f,0x2f,0xdf,0xdf,0xdf,0xdf,0x9f,0x9f,0x9f,0x9f,0x9f
,0x9f,0x9f,0x9f,0x9f,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0x0f,0x0f,0x0f,0x0f
,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0x2f,0xdf,0xdf,0xdf,0xdf,0x9f,0x9f,0x9f
,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0x0f,0x0f,0x0f
,0xef,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0xdf,0xdf,0xdf,0xdf,0xbb
,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0x0f
,0x0f,0x0f,0xdf,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0xdf,0xdf,0xdf
,0xdf,0xbb,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0x0f,0x0f,0xdf,0xef,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0xdf
,0xdf,0xdf,0xdf,0xbb,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0x0f,0x0f,0xef,0xdf,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x2f
,0x2f,0xdf,0xdf,0xdf,0xdf,0xbb,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0x0f,0x0f,0xdf,0xef,0x0f,0x0f,0x0f,0x0f,0x0f
,0x0f,0x0f,0x2f,0xdf,0xdf,0xdf,0xdf,0xdf,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f
,0x9f,0x9f,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xdf,0x0f,0x0f
,0x0f,0x0f,0x0f,0x0f,0x2f,0xdf,0xdf,0xdf,0xdf,0xdf,0x9f,0x9f,0x9f,0x9f
,0x9f,0x9f,0x9f,0x9f,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xef,0xdf
,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x2f,0xdf,0xdf,0xdf,0xdf,0xdf,0x9f,0x9f
,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xdf,0xdf,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xdf,0xef,0xdf,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xdf,0xdf,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xdf,0xef,0xdf,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f
,0x0f,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xdf,0x0f,0x0f,0x0f,0x0f
,0x0f,0x0f,0x0f,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0x9f,0x9f,0x9f,0x9f,0x9f
,0x9f,0x9f,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xef,0xdf,0x0f,0x0f
,0x0f,0x0f,0x0f,0x0f,0x0f,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0x9f,0x9f
,0x9f,0x9f,0x9f,0x9f,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0x0f
,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb
,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf
,0xef,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xbb,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xdf,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xbb,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xdf,0xef,0x0f,0x0f,0x0f,0xdf,0x0f,0x0f,0x0f,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0x9f,0xaf,0x9f,0xaf,0x9f,0xaf,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0x0f,0x0f,0x0f,0x0f,0xdf,0x0f,0x0f,0x0f
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0x0f,0x0f,0x0f,0x0f,0xdf,0x0f
,0x0f,0x0f,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0xaf,0xaf,0xaf,0xaf
,0xaf,0xaf,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0x0f,0x0f,0x0f,0x0f
,0xdf,0x0f,0x0f,0x0f,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0xaf,0xaf
,0xaf,0xaf,0xaf,0xaf,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0x0f,0x0f
,0x0f,0x0f,0xdf,0xdf,0x0f,0x0f,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xaf
,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0x0f,0x0f,0x0f,0x0f,0xdf,0xdf,0x0f,0x0f,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xdf,0x0f,0x0f,0x0f,0x0f,0xdf,0xdf,0x0f,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xdf,0x0f,0x0f,0x0f,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xbb,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0xef
,0xef,0x2f,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xdf,0xef,0x0f,0x0f,0x0f,0xdf,0xdf,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf
,0xef,0xef,0x2f,0x2f,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xdf,0x0f,0x0f,0xdf,0xdf
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb,0xaf,0xaf,0xaf,0xaf,0xaf
,0xaf,0xaf,0xef,0xef,0x2f,0x2f,0x2f,0xef,0xef,0xef,0xef,0xef,0xef,0xef
,0x0f,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xef,0xdf,0x0f,0x0f
,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xaf,0xaf,0xaf,0xaf
,0xaf,0xaf,0xaf,0xaf,0xef,0x2f,0x2f,0x2f,0x2f,0x2f,0xef,0xef,0xef,0xef
,0xef,0x0f,0x0f,0x2f,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,0xdf
,0x0f,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xaf,0xaf
,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0x2f,0x0f,0x0f,0x2f,0x2f,0xef,0xef
,0xef,0xef,0xef,0x0f,0x0f,0x2f,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xdf
,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xbb
,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xef,0x0f,0x0f,0x0f,0x2f,0x2f
,0x2f,0xef,0xef,0xef,0xef,0x0f,0x2f,0x2f,0xef,0xef,0xef,0xef,0xef,0xef
,0xef,0xef,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf
,0xdf,0xbb,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf
,0xee,0x6c,0xee,0xee,0xee,0xee,0xec,0xec,0xec,0xec,0xec,0xdd,0xdd,0xdd
,0xdd,0xdd,0xda,0xda,0xac,0xab,0xac,0xab,0xac,0xab,0xac,0xab,0xac,0xab
,0x7f,0x2f,0x0f,0x2f,0x2f,0x0f,0x0f,0x0f,0x2f,0x2f,0x0f,0x0f,0x0f,0x0f
,0x2f,0x2f,0x6c,0xee,0xee,0xee,0xee,0xec,0xee,0xec,0xec,0xec,0xdd,0xec
,0xdd,0xda,0xdd,0xda,0xdd,0xda,0xab,0xac,0xab,0xac,0xab,0xac,0xab,0xac
,0xab,0xac,0x7f,0x2f,0x2f,0x2f,0x2f,0x0f,0x0f,0x0f,0x2f,0x2f,0x0f,0x0f
,0x0f,0x0f,0x2f,0x2f,0xee,0x6c,0xee,0xee,0xee,0xee,0xec,0xec,0xec,0xec
,0xec,0xdd,0xdd,0xdd,0xdd,0xdd,0xda,0xda,0xac,0xac,0xac,0xac,0xac,0xac
,0xac,0xac,0xac,0xac,0x7f,0x2f,0x0f,0x2f,0x7f,0x0f,0x0f,0x0f,0x2f,0x0f
,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0x6c,0xee,0xee,0xee,0xee,0xec,0xee,0xec
,0xec,0xec,0xdd,0xec,0xdd,0xda,0xdd,0xda,0xdd,0xda,0x38,0xac,0xac,0xac
,0xac,0xac,0xac,0xac,0xac,0xac,0x7f,0x2f,0x2f,0x2f,0x7f,0x0f,0x0f,0x0f
,0x0f,0x2f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0xee,0x6c,0xee,0xee,0xee,0xee
,0xec,0xec,0xec,0xec,0xec,0xdd,0xdd,0xdd,0xdd,0xdd,0xda,0xda,0x38,0xad
,0xac,0xad,0xac,0xad,0xac,0xad,0xac,0xad,0x7f,0x2f,0x0f,0x2f,0x7f,0x0f
,0x0f,0x0f,0x2f,0x0f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0x6c,0xee,0xee,0xee
,0xee,0xec,0xee,0xec,0xec,0xec,0xdd,0xec,0xdd,0xda,0xdd,0xda,0xdd,0xda
,0x38,0xac,0xad,0xac,0xad,0xac,0xad,0xac,0xad,0xac,0x7f,0x2f,0x2f,0x2f
,0x7f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0x2f,0xee,0x6c
,0xee,0xee,0xee,0xee,0xec,0xec,0xec,0xec,0xec,0xdd,0xdd,0xdd,0xdd,0xdd
,0xda,0xda,0x38,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0x7f,0x2f
,0x2f,0x2f,0x7f,0x7f,0x0f,0x0f,0x2f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0x2f
,0x08,0xee,0xee,0xee,0xee,0xec,0xee,0xec,0xec,0xec,0xdd,0xec,0xdd,0xda
,0xdd,0xda,0xdd,0xda,0xda,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad
,0x7f,0x2f,0x2f,0x2f,0x7f,0x7f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x2f
,0x2f,0x2f,0x08,0x6c,0xee,0xee,0xee,0xee,0xec,0xec,0xec,0xec,0xec,0xdd
,0xdd,0xdd,0xdd,0xdd,0xda,0xda,0xda,0xad,0xae,0xad,0xae,0xad,0xae,0xad
,0xae,0xad,0x7f,0x7f,0x2f,0x2f,0x7f,0x7f,0x0f,0x0f,0x2f,0x0f,0x0f,0x0f
,0x2f,0x2f,0x2f,0x2f,0x2f,0xee,0xee,0xee,0xee,0xec,0xee,0xec,0xec,0xec
,0xdd,0xec,0xdd,0xda,0xdd,0xda,0xdd,0xda,0xda,0xae,0xad,0xae,0xad,0xae
,0xad,0xae,0xad,0xae,0x7f,0x7f,0x2f,0x2f,0x7f,0x7f,0x0f,0x0f,0x0f,0x0f
,0x0f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x6c,0xee,0xee,0xee,0xee,0xec,0xec
,0xec,0xec,0xec,0xdd,0xdd,0xdd,0xdd,0xdd,0xda,0xda,0xda,0xae,0xae,0xae
,0xae,0xae,0xae,0xae,0xae,0xae,0x7f,0x7f,0x2f,0x2f,0x7f,0x7f,0x0f,0x0f
,0x0f,0x0f,0x7d,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x08,0xee,0xee,0xee,0xec
,0xee,0xec,0xec,0xec,0xdd,0xec,0xdd,0xda,0xdd,0xda,0xdd,0xda,0xda,0xda
,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0x7f,0x7f,0x2f,0x2f,0x7f,0x7f
,0x0f,0x0f,0x0f,0x0f,0x7d,0x7d,0x2f,0x2f,0x2f,0x2f,0x2f,0x08,0xee,0xee
,0xee,0xee,0xec,0xec,0xec,0xec,0xec,0xdd,0xdd,0xdd,0xdd,0xdd,0xda,0xda
,0xda,0xda,0xae,0xaf,0xae,0xaf,0xae,0xaf,0xae,0xaf,0x7f,0x7f,0x2f,0x2f
,0x7f,0x7f,0x0f,0x0f,0x0f,0x2f,0x7d,0x6c,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f
,0xee,0xee,0xee,0xec,0xee,0xec,0xec,0xec,0xdd,0xec,0xdd,0xda,0xdd,0xda
,0xdd,0xda,0xda,0xda,0xaf,0xae,0xaf,0xae,0xaf,0xae,0xaf,0xae,0x7f,0x7f
,0x2f,0x2f,0x7f,0x7f,0x0f,0x0f,0x0f,0x2f,0x7d,0x7d,0x2f,0x2f,0x2f,0x2f
,0x2f,0x2f,0xee,0xee,0xee,0xee,0xec,0xec,0xec,0xec,0xec,0xdd,0xdd,0xdd
,0xdd,0xdd,0xda,0xda,0xda,0xda,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf
,0x7f,0x7f,0x2f,0x2f,0x7f,0x7f,0x0f,0x0f,0x2f,0x2f,0x7d,0x6c,0x2f,0x2f
,0x2f,0x2f,0x2f,0x2f,0xee,0xee,0xee,0xec,0xee,0xec,0xec,0xec,0xdd,0xec
,0xdd,0xda,0xdd,0xda,0xdd,0xda,0xda,0xda,0x38,0xaf,0x2f,0xaf,0x2f,0xaf
,0x2f,0xaf,0x7f,0x7f,0x2f,0x2f,0x7f,0x7f,0x0f,0x0f,0x2f,0x2f,0x7d,0x7d
,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0xee,0xee,0xee,0xee,0xec,0xec,0xec,0xec
,0xec,0xdd,0xdd,0xdd,0xdd,0xdd,0xda,0xda,0xda,0xda,0x38,0x2f,0xaf,0x2f
,0xaf,0x2f,0xaf,0x2f,0x7f,0x7f,0x2f,0x2f,0x7f,0x7f,0x0f,0x0f,0x2f,0x2f
,0x7d,0x6c,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0xee,0xee,0xee,0xec,0xee,0xec
,0xec,0xec,0xdd,0xec,0xdd,0xda,0xdd,0xda,0xdd,0xda,0xda,0xda,0x38,0x2f
,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x7f,0x7f,0x2f,0x2f,0x7f,0x7f,0x0f,0x0f
,0x2f,0x7d,0x7d,0x7d,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0xee,0xee,0xee,0xee
,0xec,0xec,0xec,0xec,0xec,0xdd,0xdd,0xdd,0xdd,0xdd,0xda,0xda,0xda,0xda
,0x38,0x1f,0x2f,0x1f,0x2f,0x1f,0x2f,0x1f,0x7f,0x7f,0x2f,0x7f,0x7f,0x7f
,0x0f,0x0f,0x2f,0x7d,0x7d,0x6c,0x7d,0x2f,0x2f,0x2f,0x2f,0x2f,0xee,0xee
,0xee,0xec,0xee,0xec,0xec,0xec,0xdd,0xec,0xdd,0xda,0xdd,0xda,0xdd,0xda
,0xda,0xda,0x38,0x2f,0x1f,0x2f,0x1f,0x2f,0x1f,0x2f,0x7f,0x7f,0x2f,0x7f
,0x7f,0x7f,0x0f,0x0f,0x2f,0x7d,0x7d,0x7d,0x6c,0x2f,0x2f,0x2f,0x2f,0x2f
,0xee,0xee,0xee,0xee,0xec,0xec,0xec,0xec,0xec,0xdd,0xdd,0xdd,0xdd,0xdd
,0xda,0xda,0xda,0xda,0x38,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x7f,0x7f
,0x7f,0x7f,0x7f,0x7f,0x0f,0x0f,0x7d,0x7d,0x7d,0x6c,0x7d,0x6c,0x2f,0x2f
,0x2f,0x08,0xee,0xee,0xee,0xec,0xee,0xec,0xec,0xec,0xdd,0xec,0xdd,0xda
,0xdd,0xda,0xdd,0xda,0xda,0xda,0x38,0xaf,0x2f,0xaf,0x2f,0xaf,0x2f,0xaf
,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x0f,0x7d,0x7d,0x7d,0x7d,0x6c,0x6c
,0x2f,0x2f,0x2f,0x08,0xee,0xee,0xee,0xee,0xec,0xec,0xec,0xec,0xec,0xdd
,0xdd,0xdd,0xdd,0xdd,0xda,0xda,0xda,0xda,0x38,0x2f,0xaf,0x2f,0xaf,0x2f
,0xaf,0x2f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x0f,0x7d,0x7d,0x7d,0x6c
,0x7d,0x6c,0x2f,0x2f,0x2f,0xee,0xee,0xee,0xee,0xec,0xee,0xec,0xec,0xec
,0xdd,0xec,0xdd,0xda,0xdd,0xda,0xdd,0xda,0xda,0xda,0x38,0xaf,0xaf,0xaf
,0xaf,0xaf,0xaf,0xaf,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x0f,0x7d,0x7d
,0x7d,0x7d,0x6c,0x6c,0x2f,0x2f,0x2f,0x6c,0xee,0xee,0xee,0xee,0xec,0xec
,0xec,0xec,0xec,0xdd,0xdd,0xdd,0xdd,0xdd,0xda,0xda,0xda,0xda,0x38,0xaf
,0xae,0xaf,0xae,0xaf,0xae,0xaf,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d
,0x7d,0x7d,0x7d,0x6c,0x7d,0x6c,0x2f,0x2f,0x2f,0xee,0xee,0xee,0xee,0xec
,0xee,0xec,0xec,0xec,0xdd,0xec,0xdd,0xda,0xdd,0xda,0xdd,0xda,0xda,0xda
,0x38,0xae,0xaf,0xae,0xaf,0xae,0xaf,0xae,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f
,0x7d,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x6c,0x2f,0x2f,0x2f,0x6c,0xee,0xee
,0xee,0xee,0xec,0xec,0xec,0xec,0xec,0xdd,0xdd,0xdd,0xdd,0xdd,0xda,0xda
,0xda,0xda,0x38,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0x7f,0x7f,0x7f,0x7f
,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x7d,0x6c,0x6c,0x2f,0x08,0xee
,0xee,0xee,0xee,0xec,0xee,0xec,0xec,0xec,0xdd,0xec,0xdd,0xda,0xdd,0xda
,0xdd,0xda,0xda,0xda,0x38,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0x7f,0x7f
,0x7f,0x7f,0x7f,0x7f,0x7d,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x6c,0x6c,0x6c
,0xee,0x6c,0xee,0xee,0xee,0xee,0xec,0xec,0xec,0xec,0xec,0xdd,0xdd,0xdd
,0xdd,0xdd,0xda,0xda,0xda,0xda,0x38,0xad,0xae,0xad,0xae,0xad,0xae,0xad
,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x7d,0x6c
,0x6c,0x6c,0x6c,0xee,0xee,0xee,0xee,0xec,0xee,0xec,0xec,0xec,0xdd,0xec
,0xdd,0xda,0xdd,0xda,0xdd,0xda,0xda,0xda,0x38,0xae,0xad,0xae,0xad,0xae
,0xad,0xae,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7f,0x7d,0x7d,0x7d,0x7d
,0x6c,0x6c,0x6c,0x6c,0xee,0x6c,0xee,0xee,0xee,0xee,0xec,0xec,0xec,0xec
,0xec,0xdd,0xdd,0xdd,0xdd,0xdd,0xda,0xda,0xda,0xda,0x38,0xad,0xad,0xad
,0xad,0xad,0xad,0xad,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d
,0x7d,0x6c,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0xee,0xee,0xee,0xec,0xee,0xec
,0xec,0xec,0xdd,0xec,0xdd,0xda,0xdd,0xda,0xdd,0xda,0xda,0xda,0xad,0xad
,0xad,0xad,0xad,0xad,0xad,0xad,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7f
,0x7d,0x7d,0x7d,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0x6c,0xee,0xee,0xee,0xee
,0xec,0xec,0xec,0xec,0xec,0xdd,0xdd,0xdd,0xdd,0xdd,0xda,0xda,0xda,0xda
,0xac,0xad,0xac,0xad,0xac,0xad,0xac,0xad,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f
,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0xee,0xee
,0xee,0xec,0xee,0xec,0xec,0xec,0xdd,0xec,0xdd,0xda,0xdd,0xda,0xdd,0xda
,0xda,0xda,0xad,0xac,0xad,0xac,0xad,0xac,0xad,0xac,0x7f,0x7f,0x7f,0x7f
,0x7f,0x7f,0x7d,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0x6c
,0xee,0xee,0xee,0xee,0xec,0xec,0xec,0xec,0xec,0xdd,0xdd,0xdd,0xdd,0xdd
,0xda,0xda,0xda,0x38,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0x7f,0x7f
,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x7d,0x6c,0x6c,0x6c
,0x6c,0xee,0xee,0xee,0xee,0xec,0xee,0xec,0xec,0xec,0xdd,0xec,0xdd,0xda
,0xdd,0xda,0xdd,0xda,0xda,0x38,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac
,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x6c
,0x6c,0x6c,0xee,0x6c,0xee,0xee,0xee,0xee,0xec,0xec,0xec,0xec,0xec,0xdd
,0xdd,0xdd,0xdd,0xdd,0xda,0xda,0xda,0x38,0xac,0xab,0xac,0xab,0xac,0xab
,0xac,0xab,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c
,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0xee,0xee,0xee,0xec,0xee,0xec,0xec,0xec
,0xdd,0xec,0xdd,0xda,0xdd,0xda,0xdd,0xda,0xda,0x38,0xab,0xac,0xab,0xac
,0xab,0xac,0xab,0xac,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7f,0x7d,0x7d
,0x7d,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0x6c,0xee,0xee,0xee,0xee,0xec,0xec
,0xec,0xec,0xec,0xdd,0xdd,0xdd,0xdd,0xdd,0xda,0xda,0xda,0x38,0xab,0xab
,0xab,0xab,0xab,0xab,0xab,0xab,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d
,0x7d,0x7d,0x7d,0x6c,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0xee,0xee,0xee,0xec
,0xee,0xec,0xec,0xec,0xdd,0xec,0xdd,0xda,0xdd,0xda,0xdd,0xda,0xda,0xab
,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f
,0x7d,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0x6c,0xee,0xee
,0xee,0xee,0xec,0xec,0xec,0xec,0xec,0xdd,0xdd,0xdd,0xdd,0xdd,0xda,0xda
,0xda,0xab,0xaa,0xab,0xaa,0xab,0xaa,0xab,0xaa,0xab,0x7f,0x7f,0x7f,0x7f
,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x7d,0x6c,0x6c,0x6c,0x6c,0xee
,0xee,0xee,0xee,0xec,0xee,0xec,0xec,0xec,0xdd,0xec,0xdd,0xda,0xdd,0xda
,0xdd,0xda,0xda,0xaa,0xab,0xaa,0xab,0xaa,0xab,0xaa,0xab,0xaa,0x7f,0x7f
,0x7f,0x7f,0x7f,0x7f,0x7d,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x6c,0x6c,0x6c
,0xee,0x6c,0xee,0xee,0xee,0xee,0xec,0xec,0xec,0xec,0xec,0xdd,0xdd,0xdd
,0xdd,0xdd,0xda,0xda,0xda,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa
,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x7d,0x6c
,0x6c,0x6c,0x6c,0xee,0xee,0xee,0xee,0xec,0xee,0xec,0xec,0x2f,0x08,0xec
,0xdd,0xda,0xdd,0xda,0xdd,0xda,0x38,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa
,0xaa,0xaa,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7f,0x7d,0x7d,0x7d,0x7d
,0x6c,0x6c,0x6c,0x6c,0xee,0x6c,0xee,0xee,0xee,0xee,0xec,0xec,0xec,0x2f
,0x2f,0xdd,0xdd,0xdd,0xdd,0xdd,0xda,0xda,0x38,0xaa,0xaa,0xaa,0xaa,0xaa
,0xaa,0xaa,0xaa,0xaa,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d
,0x7d,0x6c,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0xee,0xee,0xee,0xec,0xee,0xec
,0x08,0x2f,0x2f,0xec,0xdd,0xda,0xdd,0xda,0xdd,0xda,0x38,0xa9,0xaa,0xa9
,0xaa,0xa9,0xaa,0xa9,0xaa,0xa9,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7f
,0x7d,0x7d,0x7d,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0x6c,0xee,0xee,0xee,0xee
,0xec,0xec,0x2f,0x2f,0x2f,0xdd,0xdd,0xdd,0xdd,0xdd,0xda,0xda,0x38,0xaa
,0xa9,0xaa,0xa9,0xaa,0xa9,0xaa,0xa9,0xaa,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f
,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0xee,0xee
,0xee,0xec,0xee,0xec,0x2f,0x2f,0x2f,0xec,0xdd,0xda,0xdd,0xda,0xdd,0xda
,0x38,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0x7f,0x7f,0x7f,0x7f
,0x7f,0x7f,0x7d,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0x6c
,0xee,0xee,0xee,0xee,0xec,0xec,0x2f,0x2f,0x2f,0xdd,0xdd,0xdd,0xdd,0xdd
,0xda,0xda,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0x7f,0x7f
,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x7d,0x6c,0x6c,0x6c
,0x6c,0xee,0xee,0xee,0xee,0xec,0xee,0xec,0x2f,0x2f,0x2f,0x2f,0xdd,0xda
,0xdd,0xda,0xdd,0xda,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9
,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x6c
,0x6c,0x6c,0xee,0x6c,0xee,0xee,0xee,0xee,0xec,0xec,0x2f,0x2f,0x2f,0x2f
,0xdd,0xdd,0xdd,0xdd,0xda,0xda,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9
,0xa9,0xa9,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c
,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0xee,0xee,0xee,0xec,0xee,0xec,0x2f,0x2f
,0x2f,0x2f,0x08,0xda,0xdd,0xda,0xdd,0xda,0xaa,0xa9,0xaa,0xa9,0xaa,0xa9
,0xaa,0xa9,0xaa,0xa9,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7f,0x7d,0x7d
,0x7d,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0x6c,0xee,0xee,0xee,0xee,0xec,0xec
,0x2f,0x2f,0x2f,0x2f,0x2f,0xdd,0xdd,0xdd,0xda,0xda,0xa9,0xaa,0xa9,0xaa
,0xa9,0xaa,0xa9,0xaa,0xa9,0xaa,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d
,0x7d,0x7d,0x7d,0x6c,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0xee,0xee,0xee,0xec
,0xee,0x08,0x2f,0x2f,0x2f,0x2f,0x2f,0xda,0xdd,0xda,0xdd,0xda,0xaa,0xaa
,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f
,0x7d,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0x6c,0xee,0xee
,0xee,0xee,0xec,0x2f,0x2f,0x2f,0x2f,0x2f,0x08,0xdd,0xdd,0xdd,0xda,0xda
,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x7f,0x7f,0x7f,0x7f
,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x7d,0x6c,0x6c,0x6c,0x6c,0xee
,0xee,0xee,0xee,0xec,0x2f,0x2f,0x0f,0x2f,0x2f,0x2f,0xdd,0xda,0xdd,0xda
,0xdd,0xda,0xaa,0xab,0xaa,0xab,0xaa,0xab,0xaa,0xab,0xaa,0xab,0x7f,0x7f
,0x7f,0x7f,0x7f,0x7f,0x7d,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x6c,0x6c,0x6c
,0xee,0x6c,0xee,0xee,0xee,0xee,0x2f,0x2f,0x0f,0x0f,0x2f,0x2f,0xdd,0xdd
,0xdd,0xdd,0xda,0xda,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab
,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x7d,0x6c
,0x6c,0x6c,0x6c,0xee,0xee,0xee,0xee,0xec,0x2f,0x0f,0x0f,0x0f,0x2f,0x2f
,0xdd,0xda,0xdd,0xda,0xdd,0xda,0x38,0xab,0xab,0xab,0xab,0xab,0xab,0xab
,0xab,0xab,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7f,0x7d,0x7d,0x7d,0x7d
,0x6c,0x6c,0x6c,0x6c,0xee,0x6c,0xee,0xee,0xee,0xee,0x2f,0x0f,0x0f,0x0f
,0x2f,0x2f,0x2f,0xdd,0xdd,0xdd,0xda,0xda,0x38,0xab,0xac,0xab,0xac,0xab
,0xac,0xab,0xac,0xab,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d
,0x7d,0x6c,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0xee,0xee,0xee,0xec,0x0f,0x0f
,0x0f,0x0f,0x0f,0x2f,0x2f,0xdd,0xdd,0xda,0xdd,0xda,0x38,0xac,0xac,0xac
,0xac,0xac,0xac,0xac,0xac,0xac,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7f
,0x7d,0x7d,0x7d,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0x6c,0xee,0xee,0xee,0xee
,0x0f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0x08,0xdd,0xdd,0xda,0xda,0x38,0xac
,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f
,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0xee,0xee
,0xee,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0x2f,0xdd,0xda,0xdd,0xda
,0x38,0xad,0xac,0xad,0xac,0xad,0xac,0xad,0xac,0xad,0x7f,0x7f,0x7f,0x7f
,0x7f,0x7f,0x7d,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0x6c
,0xee,0xee,0xee,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0x08,0xdd
,0xda,0xda,0xda,0xac,0xad,0xac,0xad,0xac,0xad,0xac,0xad,0xac,0x7f,0x7f
,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x7d,0x6c,0x6c,0x6c
,0x6c,0xee,0xee,0xee,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f
,0x08,0xda,0xdd,0xda,0xda,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad
,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x6c
,0x6c,0x6c,0xee,0x6c,0xee,0xee,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f
,0x2f,0x2f,0x2f,0xdd,0xda,0xda,0xda,0xad,0xae,0xad,0xae,0xad,0xae,0xad
,0xae,0xad,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c
,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0xee,0xee,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f
,0x0f,0x0f,0x2f,0x2f,0x2f,0xda,0xdd,0xda,0xda,0xae,0xad,0xae,0xad,0xae
,0xad,0xae,0xad,0xae,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7f,0x7d,0x7d
,0x7d,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0x6c,0xee,0xee,0x0f,0x0f,0x0f,0x0f
,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0x2f,0xdd,0xda,0xda,0xda,0xae,0xae,0xae
,0xae,0xae,0xae,0xae,0xae,0xae,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d
,0x7d,0x7d,0x7d,0x6c,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0xee,0x0f,0x0f,0x0f
,0xee,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0xda,0xdd,0xda,0xda,0x38
,0xae,0xaf,0xae,0xaf,0xae,0xaf,0xae,0xaf,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f
,0x7d,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0x6c,0xee,0x0f
,0x0f,0x0f,0xec,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0xdd,0xda,0xda
,0xda,0x38,0xaf,0xae,0xaf,0xae,0xaf,0xae,0xaf,0xae,0x7f,0x7f,0x7f,0x7f
,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x7d,0x6c,0x6c,0x6c,0x6c,0xee
,0xee,0x0f,0x0f,0xec,0xee,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x2f,0x2f,0xda
,0xdd,0xda,0xda,0x38,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0x7f,0x7f
,0x7f,0x7f,0x7f,0x7f,0x7d,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x6c,0x6c,0x6c
,0xee,0x6c,0xee,0x0f,0x0f,0xee,0xec,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x2f
,0x2f,0xdd,0xda,0xda,0xda,0x38,0xaf,0x2f,0xaf,0x2f,0xaf,0x2f,0xaf,0x2f
,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x7d,0x6c
,0x6c,0x6c,0x6c,0xee,0xee,0x0f,0x0f,0xec,0xee,0x0f,0x0f,0x0f,0x0f,0x0f
,0x0f,0x0f,0x2f,0xda,0xdd,0xda,0xda,0xda,0x2f,0xaf,0x2f,0xaf,0x2f,0xaf
,0x2f,0xaf,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7f,0x7d,0x7d,0x7d,0x7d
,0x6c,0x6c,0x6c,0x6c,0xee,0x6c,0xee,0xee,0xee,0xee,0xec,0xec,0x0f,0x0f
,0x0f,0x0f,0x0f,0x0f,0x2f,0xdd,0xda,0xda,0xda,0xda,0x2f,0x1f,0x2f,0x1f
,0x2f,0x1f,0x2f,0x1f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d
,0x7d,0x6c,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0xee,0xee,0xee,0xec,0xee,0xec
,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x2f,0xda,0xdd,0xda,0xda,0xda,0xaf,0x2f
,0xaf,0x2f,0xaf,0x2f,0xaf,0x2f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7f
,0x7d,0x7d,0x7d,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0x6c,0xee,0xee,0xee,0xee
,0xec,0xec,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0xdd,0xda,0xda,0xda,0xda
,0xda,0xaf,0x2f,0xaf,0x2f,0xaf,0x2f,0xaf,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f
,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0xee,0xee
,0xee,0xec,0xee,0xec,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0xda,0xdd,0xda
,0xda,0xda,0xda,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0x7f,0x7f,0x7f,0x7f
,0x7f,0x7f,0x7d,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0x6c
,0xee,0xee,0xee,0xee,0xec,0xec,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0xdd
,0xda,0xda,0xda,0xda,0xda,0xaf,0xae,0xaf,0xae,0xaf,0xae,0xaf,0x7f,0x7f
,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x7d,0x6c,0x6c,0x6c
,0x6c,0xee,0xee,0xee,0xee,0xec,0xee,0xec,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f
,0x0f,0xda,0xdd,0xda,0xda,0xda,0xda,0xae,0xaf,0xae,0xaf,0xae,0xaf,0xae
,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x6c
,0x6c,0x6c,0xee,0x6c,0xee,0xee,0xee,0xee,0xec,0xec,0x0f,0x0f,0x0f,0x0f
,0x0f,0x0f,0x0f,0xdd,0xda,0xda,0xda,0xda,0xda,0xae,0xae,0xae,0xae,0xae
,0xae,0xae,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c
,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0xee,0xee,0xee,0xec,0xee,0xec,0x0f,0x0f
,0x0f,0x0f,0x0f,0x0f,0x0f,0xda,0xdd,0xda,0xda,0xda,0xda,0x38,0xae,0xad
,0xae,0xad,0xae,0xad,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7f,0x7d,0x7d
,0x7d,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0x6c,0xee,0xee,0xee,0xee,0xec,0x0f
,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0xdd,0xda,0xda,0xda,0xda,0xda,0x38
,0xad,0xae,0xad,0xae,0xad,0xae,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d
,0x7d,0x7d,0x7d,0x6c,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0xee,0xee,0xee,0xec
,0xee,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0xdd,0xda,0xdd,0xda,0xda,0xda
,0xda,0x38,0xad,0xad,0xad,0xad,0xad,0xad,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f
,0x7d,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0x6c,0xee,0xee
,0xee,0xee,0xec,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0xdd,0xdd,0xda,0xda
,0xda,0xda,0xda,0x38,0xac,0xad,0xac,0xad,0xac,0xad,0x7f,0x7f,0x7f,0x7f
,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x7d,0x6c,0x6c,0x6c,0x6c,0xee
,0xee,0xee,0xee,0xec,0xee,0x0f,0x0f,0x0f,0xdd,0x0f,0x0f,0x0f,0xdd,0xda
,0xdd,0xda,0xda,0xda,0xda,0x38,0xad,0xac,0xad,0xac,0xad,0xac,0x7f,0x7f
,0x7f,0x7f,0x7f,0x7f,0x7d,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x6c,0x6c,0x6c
,0xee,0x6c,0xee,0xee,0xee,0xee,0x0f,0x0f,0x0f,0x0f,0xec,0x0f,0x0f,0x0f
,0xdd,0xdd,0xda,0xda,0xda,0xda,0xda,0x38,0xac,0xac,0xac,0xac,0xac,0xac
,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x7d,0x6c
,0x6c,0x6c,0x6c,0xee,0xee,0xee,0xee,0xec,0x0f,0x0f,0x0f,0x0f,0xdd,0x0f
,0x0f,0x0f,0xdd,0xda,0xdd,0xda,0xda,0xda,0xda,0x38,0xac,0xab,0xac,0xab
,0xac,0xab,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7f,0x7d,0x7d,0x7d,0x7d
,0x6c,0x6c,0x6c,0x6c,0xee,0x6c,0xee,0xee,0xee,0xee,0x0f,0x0f,0x0f,0x0f
,0xec,0x0f,0x0f,0x0f,0xdd,0xdd,0xda,0xda,0xda,0xda,0xda,0x38,0xab,0xac
,0xab,0xac,0xab,0xac,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d
,0x7d,0x6c,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0xee,0xee,0xee,0xec,0x0f,0x0f
,0x0f,0x0f,0xdd,0xec,0x0f,0x0f,0xdd,0xda,0xdd,0xda,0xda,0xda,0xda,0xab
,0xab,0xab,0xab,0xab,0xab,0xab,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7f
,0x7d,0x7d,0x7d,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0x6c,0xee,0xee,0xee,0xee
,0x0f,0x0f,0x0f,0x0f,0xec,0xdd,0x0f,0x0f,0xdd,0xdd,0xda,0xda,0xda,0xda
,0xda,0xab,0xaa,0xab,0xaa,0xab,0xaa,0xab,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f
,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0xee,0xee
,0xee,0xec,0x0f,0x0f,0x0f,0x0f,0xdd,0xec,0x0f,0xda,0xdd,0xda,0xdd,0xda
,0xda,0xda,0xda,0xaa,0xab,0xaa,0xab,0xaa,0xab,0xaa,0x7f,0x7f,0x7f,0x7f
,0x7f,0x7f,0x7d,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x6c,0x6c,0x6c,0xee,0x6c
,0xee,0xee,0xee,0xee,0xec,0x0f,0x0f,0x0f,0xec,0xdd,0xdd,0xdd,0xdd,0xdd
,0xda,0xda,0xda,0xda,0x38,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x7f,0x7f
,0x7f,0x2f,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x7d,0x6c,0x6c,0x6c
,0x6c,0xee,0xee,0xee,0xee,0xec,0xee,0x0f,0x0f,0x0f,0xdd,0xec,0xdd,0xda
,0xdd,0xda,0xdd,0xda,0xda,0xda,0x38,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa
,0x7f,0x7f,0x2f,0x2f,0x7f,0x7f,0x7d,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c,0x6c
,0x6c,0x6c,0xee,0x6c,0xee,0xee,0xee,0xee,0xec,0xec,0x0f,0x0f,0xec,0xdd
,0xdd,0xdd,0xdd,0xdd,0xda,0xda,0xda,0xda,0x38,0xa9,0xaa,0xa9,0xaa,0xa9
,0xaa,0xa9,0x7f,0x7f,0x2f,0x2f,0x2f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7d,0x6c
,0x0f,0x6c,0x6c,0x6c,0x6c,0xee,0xee,0xee,0xee,0xec,0xee,0xec,0x0f,0x0f
,0xdd,0xec,0xdd,0xda,0xdd,0xda,0xdd,0xda,0xda,0xda,0xa9,0xaa,0xa9,0xaa
,0xa9,0xaa,0xa9,0xaa,0x7f,0x2f,0x2f,0x2f,0x2f,0x2f,0x7d,0x7f,0x7d,0x7d
,0x7d,0x0f,0x0f,0x2f,0x6c,0x6c,0xee,0x6c,0xee,0xee,0xee,0xee,0xec,0xec
,0x0f,0xec,0xec,0xdd,0xdd,0xdd,0xdd,0xdd,0xda,0xda,0xda,0xda,0xa9,0xa9
,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0x7f,0x2f,0x0f,0x0f,0x2f,0x2f,0x7f,0x7d
,0x7d,0x7d,0x7d,0x0f,0x0f,0x2f,0x6c,0x6c,0x6c,0xee,0xee,0xee,0xee,0xec
,0xee,0xec,0xec,0xec,0xdd,0xec,0xdd,0xda,0xdd,0xda,0xdd,0xda,0xda,0x38
,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0x7f,0x0f,0x0f,0x0f,0x2f,0x2f
,0x2f,0x7f,0x7d,0x7d,0x7d,0x0f,0x2f,0x2f,0x6c,0x6c,0xee,0x6c,0xee,0xee
,0xee,0xee,0xec,0xec,0xec,0xec,0xec,0xdd,0xdd,0xdd,0xdd,0xdd,0xda,0xda
,0xda,0x38,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9
};
RCL_Unit floorHeightAt(int16_t x, int16_t y)
@ -473,22 +470,21 @@ inline void pixelFunc(RCL_PixelInfo *pixel)
{
if (pixel->hit.square.x != selectedSquare.x || pixel->hit.square.y != selectedSquare.y || (editing && pokitto.frameCount % 2) == 0)
{
intensity = pixel->depth / (RCL_UNITS_PER_SQUARE * 2);
intensity += pixel->hit.direction % 2 == 0 ? 2 : 0;
intensity = pixel->depth / (RCL_UNITS_PER_SQUARE * 2) +
((pixel->hit.direction == 0 || pixel->hit.direction == 2) ? 4 : 0);
color = addIntensity(squareColors[pixel->hit.type],intensity - 6);
// color = wallGradients[pixel->hit.type][RCL_clamp(7 + intensity,0,14)];
color = addIntensity(squareColors[pixel->hit.type],intensity);
}
else
color = 30;
}
else if (pixel->isFloor)
{
if (!pixel->isHorizon)
intensity = pixel->depth / RCL_UNITS_PER_SQUARE;
color = addIntensity(floorColor,intensity - 3);
// color = floorGradient[RCL_clamp(7 + intensity,0,14)];
color = addIntensity(floorColor,intensity);
}
else
{
@ -514,10 +510,10 @@ void draw()
if (flyBy && (pokitto.frameCount >> 3) % 3 != 0)
{
pokitto.display.setColor(255);
pokitto.display.setColor(15);
pokitto.display.fillRect(22,3,66,10);
pokitto.display.setCursor(25,5);
pokitto.display.setColor(rgbToIndex(1,0,0));
pokitto.display.setColor(31);
pokitto.display.invisiblecolor = 0;
pokitto.display.print("press any key");
}
@ -559,19 +555,12 @@ int main()
defaultConstraints.maxHits = 6;
defaultConstraints.maxSteps = 20;
// floorColor = rgbToIndex(4,2,0);
floorColor = 166;
floorColor = 32;
squareColors[0] = rgbToIndex(0,0,3);
squareColors[1] = rgbToIndex(7,0,0);
squareColors[2] = rgbToIndex(0,7,0);
squareColors[3] = rgbToIndex(4,4,0);
initGradient(floorGradient,floorColor);
for (uint8_t i = 0; i < SQUARE_COLORS; ++i)
initGradient(wallGradients[i],squareColors[i]);
squareColors[0] = 179;
squareColors[1] = 147;
squareColors[2] = 130;
squareColors[3] = 210;
player.setPositionSquare(4,5);
player.mCamera.height = floorHeightAt(4,5);

View file

@ -98,10 +98,6 @@ inline void putSubsampledPixel(int32_t x, int32_t y, uint8_t color)
}
#endif
uint8_t encodeHSV(uint8_t hue, uint8_t saturation, uint8_t value)
{
if (value > 15)
@ -143,57 +139,34 @@ void decodeHSV(uint8_t hsv, uint8_t *hue, uint8_t *saturation, uint8_t *value)
void convertHSVtoRGB(uint8_t hue, uint8_t saturation, uint8_t value,
uint8_t *red, uint8_t *green, uint8_t *blue)
{
#define M 16
#define M 16
// ^ adds precision
int32_t chroma = (value * saturation) / 256;
int32_t h = (hue * M) / 42;
int32_t h = (hue * M) / 42;
int32_t a = (h % (2 * M)) - M;
a = a < 0 ? -a : a; // abs
int32_t x = (chroma * (M - a)) / M;
if (h <= 1 * M)
{ *red = chroma; *green = x; *blue = 0; }
else if (h <= 2 * M)
{ *red = x; *green = chroma; *blue = 0; }
else if (h <= 3 * M)
{ *red = 0; *green = chroma; *blue = x; }
else if (h <= 4 * M)
{ *red = 0; *green = x; *blue = chroma; }
else if (h <= 5 * M)
{ *red = x; *green = 0; *blue = chroma; }
else if (h <= 6 * M)
{ *red = chroma; *green = 0; *blue = x; }
else
{ *red = 0; *green = 0; *blue = 0; }
#undef M
/* int16_t h = hue / 42;
int16_t a = (h % 2) - 1;
int32_t a = (h % (2 * M)) - M;
a = a < 0 ? -a : a; // abs
int16_t x = chroma * (1 - a);
int32_t x = (chroma * (M - a)) / M;
if (h <= 1)
if (h <= 1 * M)
{ *red = chroma; *green = x; *blue = 0; }
else if (h <= 2)
else if (h <= 2 * M)
{ *red = x; *green = chroma; *blue = 0; }
else if (h <= 3)
else if (h <= 3 * M)
{ *red = 0; *green = chroma; *blue = x; }
else if (h <= 4)
else if (h <= 4 * M)
{ *red = 0; *green = x; *blue = chroma; }
else if (h <= 5)
else if (h <= 5 * M)
{ *red = x; *green = 0; *blue = chroma; }
else if (h <= 6)
else if (h <= 6 * M)
{ *red = chroma; *green = 0; *blue = x; }
else
{ *red = 0; *green = 0; *blue = 0; }
*/
#undef M
int32_t m = value - chroma;
@ -202,57 +175,23 @@ else
*blue += m;
}
/**
Gets (the index of) color by specified RGB components.
@param r red, 3 bits (0 to 7)
@param g green, 3 bits (0 to 7)
@param b blue, 2 bits (0 to 3)
@return palette index of the color
*/
inline uint8_t rgbToIndex(uint8_t r, uint8_t g, uint8_t b)
{
return (r & 0b00000111) | ((g & 0b00000111) << 3) | ((b & 0b00000011) << 6);
}
/**
Inits and loads a general 256 color palette.
*/
void initPalette()
{
/*
for (uint8_t r = 0; r < 8; ++r)
for (uint8_t g = 0; g < 8; ++g)
for (uint8_t b = 0; b < 4; ++b)
palette[rgbToIndex(r,g,b)] =
pokitto.display.RGBto565(36 * r, 36 * g, 85 * b);
*/
/* the palette is HSV-basedm because it makes brightness addition fast, which
is important for fog/shadow diminishing */
for (uint16_t i = 0; i < 256; ++i)
{
for (uint16_t i = 0; i < 256; ++i)
{
uint8_t h,s,v,r,g,b;
uint8_t h,s,v,r,g,b;
decodeHSV(i,&h,&s,&v);
convertHSVtoRGB(h,s,v,&r,&g,&b);
printf("%d: %d %d %d: %d\n",i,r,g,b,pokitto.display.RGBto565(r,g,b));
palette[i] =
pokitto.display.RGBto565(r,g,b);
}
decodeHSV(i,&h,&s,&v);
convertHSVtoRGB(h,s,v,&r,&g,&b);
palette[i] =
pokitto.display.RGBto565(r,g,b);
}
pokitto.display.load565Palette(palette);
}
@ -266,71 +205,15 @@ printf("%d: %d %d %d: %d\n",i,r,g,b,pokitto.display.RGBto565(r,g,b));
*/
inline uint8_t addIntensity(uint8_t color, int16_t intensity)
{
int16_t newValue = (color & 0b00001111) + intensity; // value as in HSV
int16_t newValue = (color & 0b00001111) + intensity;
if (newValue <= 0)
return 0; // black
if (newValue <= 0)
return 0; // black
if (newValue >= 16)
newValue = 15;
if (newValue >= 16)
return 15; // white
return (color & 0b11110000) | newValue;
//return (color & 0b11110000) | RCL_clamp((color & 0b00001111) + intensity,0,15);
/*
uint8_t r = color & 0b00000111;
uint8_t g = (color & 0b00111000) >> 3;
uint8_t b = (color & 0b11000000) >> 6;
if (intensity >= 0)
{
r += intensity;
r = r > 7 ? 7 : r;
g += intensity;
g = g > 7 ? 7 : g;
b += intensity / 2;
b = b > 3 ? 3 : b;
}
else
{
intensity *= -1;
r = (intensity > r) ? 0 : r - intensity;
g = (intensity > g) ? 0 : g - intensity;
intensity /= 2;
b = intensity > b ? 0 : b - intensity;
}
return rgbToIndex(r,g,b);
*/
}
inline uint8_t addRGB(uint8_t color, int16_t red, int16_t green, int16_t blue)
{
int8_t r = color & 0b00000111;
int8_t g = (color & 0b00111000) >> 3;
int8_t b = (color & 0b11000000) >> 6;
r = RCL_clamp(r + red,0,7);
g = RCL_clamp(g + green,0,7);
b = RCL_clamp(b + blue,0,3);
return rgbToIndex(r,g,b);
}
/**
Inits a color gradient from darkest (0, -7 intensity) to brightest
(14, +7 intensity). Index 7 will have the base color.
*/
void initGradient(unsigned char dest[15], unsigned char baseColor)
{
for (int8_t i = 0; i < 15; ++i)
dest[i] = addIntensity(baseColor, i - 7);
return (color & 0b11110000) | newValue;
}
/**
@ -339,8 +222,6 @@ void initGradient(unsigned char dest[15], unsigned char baseColor)
*/
inline uint8_t sampleImage(const unsigned char *image, RCL_Unit x, RCL_Unit y)
{
// TODO: optimize
x = RCL_wrap(x,RCL_UNITS_PER_SQUARE);
y = RCL_wrap(y,RCL_UNITS_PER_SQUARE);
@ -575,19 +456,22 @@ void initGeneral()
*/
unsigned char computeAverageColor(const unsigned char *texture)
{
uint32_t sumR = 0;
uint32_t sumG = 0;
uint32_t sumB = 0;
uint8_t h,s,v;
uint32_t sumH = 0;
uint32_t sumS = 0;
uint32_t sumV = 0;
uint32_t pixels = texture[0] * texture[1];
for (uint16_t i = 0; i < pixels; ++i)
{
sumR += texture[2 + i] & 0b00000111;
sumG += (texture[2 + i] & 0b00111000) >> 3;
sumB += (texture[2 + i] & 0b11000000) >> 6;
decodeHSV(texture[2 + i],&h,&s,&v);
sumH += h;
sumS += s;
sumV += v;
}
return rgbToIndex(sumR / pixels,sumG / pixels,sumB / pixels);
return encodeHSV(sumH / pixels,sumS / pixels, sumV / pixels);
}
#endif