Start switching to HSV

This commit is contained in:
Miloslav Číž 2018-09-27 10:30:52 +02:00
parent 3d8c211046
commit 23685a022a
5 changed files with 1370 additions and 1142 deletions

View file

@ -6,12 +6,51 @@
import sys
from PIL import Image
# old code, kept just in case :)
"""
def rgbToIndex(r, g, b):
return (r & 0b00000111) | ((g & 0b00000111) << 3) | ((b & 0b00000011) << 6)
"""
def encodeHSV(hue, saturation, value):
result = 0
if value > 15:
if saturation > 85:
result = ((saturation / 86 - 1) << 7) | ((hue / 32) << 4) | ((value - 16) / 15)
# "normal" color, as 0bSHHHVVVV, VVVV != 0
else:
result = value / 16
# saturation near 0 => gray, as 0bVVVV0000, VVVV != 0
return result & 0b11111111
# value near 0 => black, as 0b00000000
def findClosest(pixel, palettePixels):
result = 0
closestDist = 255 * 255 * 255
for i in range(256):
p = palettePixels[i % 16,i / 16]
d = abs(p[0] - pixel[0]) + abs(p[1] - pixel[1]) + abs(p[2] - pixel[2])
if d < closestDist:
result = i
closestDist = d
if d == 0:
break
return result
image = Image.open(sys.argv[1])
#image = image.convert("HSV")
pixels = image.load()
pal = Image.open(sys.argv[2])
palPixels = pal.load()
sys.stdout.write("const unsigned char image[] =\n{ ")
sys.stdout.write(str(image.size[0]) + ", " + str(image.size[1]) + " // width, height")
@ -24,7 +63,9 @@ for x in range(image.size[0]):
p = pixels[x,y]
sys.stdout.write(",0x{:02x}".format(rgbToIndex(p[0] / 32, p[1] / 32, p[2] / 85)))
#sys.stdout.write(",0x{:02x}".format(rgbToIndex(p[0] / 32, p[1] / 32, p[2] / 85)))
#sys.stdout.write(",0x{:02x}".format(encodeHSV(p[0],p[1],p[2])))
sys.stdout.write(",0x{:02x}".format(findClosest(p,palPixels)))
count += 1

1611
demo1.cpp

File diff suppressed because it is too large Load diff

706
demo3.cpp
View file

@ -84,352 +84,352 @@ const int8_t heightProfile[] = {
const unsigned char imageBackground[] =
{ 110, 44 // width, height
,0xc7,0xff,0xff,0xff,0xbc,0xbc,0xbc,0xbc,0xc6,0xc6,0xff,0xff,0xbc,0xbc
,0xc5,0xc5,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3,0xc3,0xc3,0xc2,0xc3
,0xc2,0xc1,0xc2,0xc1,0xc2,0xc1,0x29,0x38,0x38,0x38,0x38,0x38,0x38,0x38
,0x38,0x38,0xc7,0xff,0xff,0xff,0xbc,0xbc,0xbc,0xbc,0xc6,0xc6,0xff,0xff
,0xbc,0xbc,0xc5,0xc5,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3,0xc3,0xc3
,0xc3,0xc2,0xc2,0xc2,0xc2,0xc2,0xc1,0xc1,0x29,0x38,0x38,0x38,0x38,0x38
,0x38,0x38,0x38,0x38,0xc7,0xff,0xff,0xff,0xbc,0xbc,0xbc,0xbc,0xc6,0xc6
,0xff,0xff,0xbc,0xbc,0xac,0xc5,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3
,0xc3,0xc3,0xc2,0xc3,0xc2,0xc1,0xc2,0xc1,0xc2,0xc1,0x29,0x38,0x38,0x38
,0x38,0x38,0x38,0x38,0x38,0x38,0xc7,0xbc,0xff,0xff,0xbc,0xbc,0xbc,0xbc
,0xc6,0xc6,0xff,0xff,0xbc,0xbc,0xbc,0xc5,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4
,0xc3,0xc3,0xc3,0xc3,0xc3,0xc2,0xc2,0xc2,0xc2,0xc2,0xc1,0xc1,0x29,0x39
,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0xc7,0xff,0xff,0xff,0xbc,0xbc
,0xbc,0xbc,0xc6,0xc6,0xff,0xff,0xbc,0xbc,0xbc,0xbc,0xc5,0xc4,0xc4,0xc4
,0xc4,0xc3,0xc4,0xc3,0xc3,0xc3,0xc2,0xc3,0xc2,0xc1,0xc2,0xc1,0xc2,0xc1
,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0xc7,0xbc,0xff,0xff
,0xbc,0xbc,0xbc,0xbc,0xc6,0xbc,0xff,0xff,0xbc,0xbc,0xbc,0xbc,0xc4,0xc5
,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3,0xc3,0xc3,0xc3,0xc2,0xc2,0xc2,0xc2,0xc2
,0xc1,0xc1,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0xc7,0xff
,0xff,0xff,0xbc,0xbc,0xbc,0xbc,0xc6,0xbc,0xff,0xff,0xbc,0xbc,0xbc,0xbc
,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3,0xc3,0xc3,0xc2,0xc3,0xc2,0xc1
,0xc2,0xc1,0xc2,0xc1,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39
,0xc7,0xbc,0xff,0xff,0xbc,0xbc,0xbc,0xbc,0xc6,0xbc,0xff,0xff,0xff,0xbc
,0xbc,0xbc,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3,0xc3,0xc3,0xc3,0xc2
,0xc2,0xc2,0xc2,0xc2,0xc1,0xc1,0x39,0x3a,0x39,0x3a,0x39,0x3a,0x39,0x3a
,0x39,0x3a,0xc7,0xbc,0xff,0xbc,0xbc,0xbc,0xbc,0xbc,0xac,0xbc,0xff,0xff
,0xff,0xbc,0xbc,0xbc,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3,0xc3,0xc3
,0xc2,0xc3,0xc2,0xc1,0xc2,0xc1,0xc2,0xc1,0x3a,0x39,0x3a,0x39,0x3a,0x39
,0x3a,0x39,0x3a,0x39,0xc7,0xbc,0xff,0xff,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc
,0xff,0xff,0xff,0xbc,0xbc,0xbc,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3
,0xc3,0xc3,0xc3,0xc2,0xc2,0xc2,0xc2,0xc2,0xc1,0xc1,0x3a,0x3a,0x3a,0x3a
,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0xc7,0xbc,0xff,0xbc,0xbc,0xbc,0xbc,0xbc
,0xbc,0xbc,0xff,0xff,0xff,0xbc,0xbc,0xbc,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3
,0xc4,0xc3,0xc3,0xc3,0xc2,0xc3,0xc2,0xc1,0xc2,0xc1,0xc2,0xc1,0x3a,0x3a
,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0xc7,0xbc,0xff,0xff,0xbc,0xbc
,0xbc,0xbc,0xbc,0xbc,0xff,0xff,0xff,0xff,0xbc,0xbc,0xc4,0xc5,0xc4,0xc4
,0xc4,0xc4,0xc3,0xc3,0xc3,0xc3,0xc3,0xc2,0xc2,0xc2,0xc2,0xc2,0xc1,0xc1
,0x3a,0x3b,0x3a,0x3b,0x3a,0x3b,0x3a,0x3b,0x3a,0x3b,0xc7,0xbc,0xff,0xbc
,0xbc,0xbc,0xff,0xbc,0xbc,0xbc,0xff,0xff,0xff,0xff,0xbc,0xbc,0xc5,0xc4
,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3,0xc3,0xc3,0xc2,0xc3,0xc2,0xc1,0xc2,0xc1
,0xc2,0xc1,0x3b,0x3a,0x3b,0x3a,0x3b,0x3a,0x3b,0x3a,0x3b,0x3a,0xc7,0xbc
,0xff,0xbc,0xbc,0xbc,0xff,0xff,0xbc,0xbc,0xff,0xff,0xff,0xff,0xbc,0xbc
,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3,0xc3,0xc3,0xc3,0xc2,0xc2,0xc2
,0xc2,0xc2,0xc1,0xc1,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b
,0xc7,0xbc,0xff,0xbc,0xbc,0xff,0xff,0xff,0xbc,0xbc,0xff,0xff,0xff,0xff
,0xbc,0xbc,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3,0xc3,0xc3,0xc2,0xc3
,0xc2,0xc1,0xc2,0xc1,0xc2,0xc1,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b
,0x3b,0x3b,0xc7,0xbc,0xbc,0xbc,0xbc,0xff,0xff,0xff,0xbc,0xbc,0xff,0xff
,0xff,0xff,0xbc,0xbc,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3,0xc3,0xc3
,0xc3,0xc2,0xc2,0xc2,0xc2,0xc2,0xc1,0xc1,0x3c,0x3b,0x3c,0x3b,0x3c,0x3b
,0x3c,0x3b,0x3c,0x3b,0xc7,0xbc,0xff,0xbc,0xc7,0xff,0xff,0xff,0xbc,0xff
,0xff,0xff,0xff,0xff,0xbc,0xbc,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3
,0xc3,0xc3,0xc2,0xc3,0xc2,0xc1,0xc2,0xc1,0xc2,0xc1,0x29,0x3c,0x3b,0x3c
,0x3b,0x3c,0x3b,0x3c,0x3b,0x3c,0xc7,0xbc,0xbc,0xbc,0xc7,0xff,0xff,0xff
,0xff,0xbc,0xff,0xff,0xff,0xff,0xbc,0xbc,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4
,0xc3,0xc3,0xc3,0xc3,0xc3,0xc2,0xc2,0xc2,0xc2,0xc2,0xc1,0xc1,0x29,0x3c
,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0xc7,0xbc,0xff,0xbc,0xc7,0xff
,0xff,0xff,0xbc,0xff,0xff,0xff,0xff,0xff,0xbc,0xbc,0xc5,0xc4,0xc4,0xc4
,0xc4,0xc3,0xc4,0xc3,0xc3,0xc3,0xc2,0xc3,0xc2,0xc1,0xc2,0xc1,0xc2,0xc1
,0x29,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0xc7,0xbc,0xbc,0xbc
,0xc7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbc,0xbc,0xbc,0xc4,0xc5
,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3,0xc3,0xc3,0xc3,0xc2,0xc2,0xc2,0xc2,0xc2
,0xc1,0xc1,0x29,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0xc7,0xbc
,0xbc,0xbc,0xc7,0xc7,0xff,0xff,0xbc,0xff,0xff,0xff,0xff,0xbc,0xbc,0xbc
,0xac,0xc4,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3,0xc3,0xc3,0xc2,0xc3,0xc2,0xc1
,0xc2,0xc1,0xc2,0xc1,0xc1,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c
,0xc7,0xbc,0xbc,0xbc,0xc7,0xc7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbc
,0xbc,0xbc,0xac,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3,0xc3,0xc3,0xc3,0xc2
,0xc2,0xc2,0xc2,0xc2,0xc1,0xc1,0xc1,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d
,0x3d,0x3d,0xc7,0xc7,0xbc,0xbc,0xc7,0xc7,0xff,0xff,0xbc,0xff,0xff,0xff
,0xbc,0xbc,0xbc,0xbc,0xbc,0xc4,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3,0xc3,0xc3
,0xc2,0xc3,0xc2,0xc1,0xc2,0xc1,0xc2,0xc1,0xc1,0x3d,0x3d,0x3d,0x3d,0x3d
,0x3d,0x3d,0x3d,0x3d,0xc7,0xc7,0xbc,0xbc,0xc7,0xc7,0xff,0xff,0xff,0xff
,0xff,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3
,0xc3,0xc3,0xc3,0xc2,0xc2,0xc2,0xc2,0xc2,0xc1,0xc1,0xc1,0x3d,0x3e,0x3d
,0x3e,0x3d,0x3e,0x3d,0x3e,0x3d,0xc7,0xc7,0xbc,0xbc,0xc7,0xc7,0xff,0xff
,0xff,0xff,0xc6,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xac,0xc4,0xc4,0xc4,0xc3
,0xc4,0xc3,0xc3,0xc3,0xc2,0xc3,0xc2,0xc1,0xc2,0xc1,0xc2,0xc1,0xc1,0xc1
,0x3d,0x3e,0x3d,0x3e,0x3d,0x3e,0x3d,0x3e,0xc7,0xc7,0xbc,0xbc,0xc7,0xc7
,0xff,0xff,0xff,0xff,0xc6,0xc6,0xbc,0xbc,0xbc,0xbc,0xbc,0xac,0xc4,0xc4
,0xc4,0xc4,0xc3,0xc3,0xc3,0xc3,0xc3,0xc2,0xc2,0xc2,0xc2,0xc2,0xc1,0xc1
,0xc1,0xc1,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0xc7,0xc7,0xbc,0xbc
,0xc7,0xc7,0xff,0xff,0xff,0xbc,0xc6,0xc5,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc
,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3,0xc3,0xc3,0xc2,0xc3,0xc2,0xc1,0xc2,0xc1
,0xc2,0xc1,0xc1,0xc1,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0xc7,0xc7
,0xbc,0xbc,0xc7,0xc7,0xff,0xff,0xff,0xbc,0xc6,0xc6,0xbc,0xbc,0xbc,0xbc
,0xbc,0xbc,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3,0xc3,0xc3,0xc3,0xc2,0xc2,0xc2
,0xc2,0xc2,0xc1,0xc1,0xc1,0xc1,0x3e,0x3f,0x3e,0x3f,0x3e,0x3f,0x3e,0x3f
,0xc7,0xc7,0xbc,0xbc,0xc7,0xc7,0xff,0xff,0xbc,0xbc,0xc6,0xc5,0xbc,0xbc
,0xbc,0xbc,0xbc,0xbc,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3,0xc3,0xc3,0xc2,0xc3
,0xc2,0xc1,0xc2,0xc1,0xc2,0xc1,0xc1,0xc1,0x29,0x3e,0x3f,0x3e,0x3f,0x3e
,0x3f,0x3e,0xc7,0xc7,0xbc,0xbc,0xc7,0xc7,0xff,0xff,0xbc,0xbc,0xc6,0xc6
,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3,0xc3,0xc3
,0xc3,0xc2,0xc2,0xc2,0xc2,0xc2,0xc1,0xc1,0xc1,0xc1,0x29,0x3f,0x3f,0x3f
,0x3f,0x3f,0x3f,0x3f,0xc7,0xc7,0xbc,0xbc,0xc7,0xc7,0xff,0xff,0xbc,0xbc
,0xc6,0xc5,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3
,0xc3,0xc3,0xc2,0xc3,0xc2,0xc1,0xc2,0xc1,0xc2,0xc1,0xc1,0xc1,0x29,0x3f
,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0xc7,0xc7,0xbc,0xbc,0xc7,0xc7,0xff,0xff
,0xbc,0xac,0xc6,0xc6,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xc4,0xc4,0xc4,0xc4
,0xc3,0xc3,0xc3,0xc3,0xc3,0xc2,0xc2,0xc2,0xc2,0xc2,0xc1,0xc1,0xc1,0xc1
,0x29,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0xc7,0xc7,0xbc,0xc7,0xc7,0xc7
,0xff,0xff,0xbc,0xc6,0xc6,0xc5,0xc6,0xbc,0xbc,0xbc,0xbc,0xbc,0xc4,0xc4
,0xc4,0xc3,0xc4,0xc3,0xc3,0xc3,0xc2,0xc3,0xc2,0xc1,0xc2,0xc1,0xc2,0xc1
,0xc1,0xc1,0x29,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0xc7,0xc7,0xbc,0xc7
,0xc7,0xc7,0xff,0xff,0xbc,0xc6,0xc6,0xc6,0xc5,0xbc,0xbc,0xbc,0xbc,0xbc
,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3,0xc3,0xc3,0xc3,0xc2,0xc2,0xc2,0xc2,0xc2
,0xc1,0xc1,0xc1,0xc1,0x29,0x3e,0x3f,0x3e,0x3f,0x3e,0x3f,0x3e,0xc7,0xc7
,0xc7,0xc7,0xc7,0xc7,0xff,0xff,0xc6,0xc6,0xc6,0xc5,0xc6,0xc5,0xbc,0xbc
,0xbc,0xac,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3,0xc3,0xc3,0xc2,0xc3,0xc2,0xc1
,0xc2,0xc1,0xc2,0xc1,0xc1,0xc1,0x29,0x3f,0x3e,0x3f,0x3e,0x3f,0x3e,0x3f
,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xff,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5
,0xbc,0xbc,0xbc,0xac,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3,0xc3,0xc3,0xc3,0xc2
,0xc2,0xc2,0xc2,0xc2,0xc1,0xc1,0xc1,0xc1,0x29,0x3e,0x3e,0x3e,0x3e,0x3e
,0x3e,0x3e,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xff,0xc6,0xc6,0xc6,0xc5
,0xc6,0xc5,0xbc,0xbc,0xbc,0xc4,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3,0xc3,0xc3
,0xc2,0xc3,0xc2,0xc1,0xc2,0xc1,0xc2,0xc1,0xc1,0xc1,0x29,0x3e,0x3e,0x3e
,0x3e,0x3e,0x3e,0x3e,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xff,0xc6,0xc6
,0xc6,0xc6,0xc5,0xc5,0xbc,0xbc,0xbc,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3
,0xc3,0xc3,0xc3,0xc2,0xc2,0xc2,0xc2,0xc2,0xc1,0xc1,0xc1,0xc1,0x29,0x3e
,0x3d,0x3e,0x3d,0x3e,0x3d,0x3e,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6
,0xc6,0xc6,0xc6,0xc5,0xc6,0xc5,0xbc,0xbc,0xbc,0xc4,0xc4,0xc4,0xc4,0xc3
,0xc4,0xc3,0xc3,0xc3,0xc2,0xc3,0xc2,0xc1,0xc2,0xc1,0xc2,0xc1,0xc1,0xc1
,0x29,0x3d,0x3e,0x3d,0x3e,0x3d,0x3e,0x3d,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7
,0xc6,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5,0xbc,0xbc,0xbc,0xc5,0xc4,0xc4
,0xc4,0xc4,0xc3,0xc3,0xc3,0xc3,0xc3,0xc2,0xc2,0xc2,0xc2,0xc2,0xc1,0xc1
,0xc1,0xc1,0x29,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0xc7,0xc7,0xc7,0xc7
,0xc7,0xc7,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc6,0xc5,0xc5,0xbc,0xac,0xc4
,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3,0xc3,0xc3,0xc2,0xc3,0xc2,0xc1,0xc2,0xc1
,0xc2,0xc1,0xc1,0xc1,0x29,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0xc7,0xc7
,0xc7,0xc7,0xc7,0xc7,0xc6,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5,0xc5,0xc5
,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3,0xc3,0xc3,0xc3,0xc2,0xc2,0xc2
,0xc2,0xc2,0xc1,0xc1,0xc1,0xc1,0x29,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c
,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc6,0xc5
,0xc5,0xc5,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3,0xc3,0xc3,0xc2,0xc3
,0xc2,0xc1,0xc2,0xc1,0xc2,0xc1,0xc1,0xc1,0x29,0x3d,0x3c,0x3d,0x3c,0x3d
,0x3c,0x3d,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc7,0xc6,0xc6,0xc6,0xc6
,0xc5,0xc5,0xc5,0xc5,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3,0xc3,0xc3
,0xc3,0xc2,0xc2,0xc2,0xc2,0xc2,0xc1,0xc1,0xc1,0xc1,0x29,0x3c,0x3c,0x3c
,0x3c,0x3c,0x3c,0x3c,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc6,0xc6
,0xc6,0xc5,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3
,0xc3,0xc3,0xc2,0xc3,0xc2,0xc1,0xc2,0xc1,0xc2,0xc1,0xc1,0xc1,0x3c,0x3c
,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc7
,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4
,0xc3,0xc3,0xc3,0xc3,0xc3,0xc2,0xc2,0xc2,0xc2,0xc2,0xc1,0xc1,0xc1,0xc1
,0x3b,0x3c,0x3b,0x3c,0x3b,0x3c,0x3b,0x3c,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7
,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc4,0xc4
,0xc4,0xc3,0xc4,0xc3,0xc3,0xc3,0xc2,0xc3,0xc2,0xc1,0xc2,0xc1,0xc2,0xc1
,0xc1,0xc1,0x3c,0x3b,0x3c,0x3b,0x3c,0x3b,0x3c,0x3b,0xc7,0xc7,0xc7,0xc7
,0xc7,0xc7,0xc6,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc5
,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3,0xc3,0xc3,0xc3,0xc2,0xc2,0xc2,0xc2,0xc2
,0xc1,0xc1,0xc1,0x29,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0xc7,0xc7
,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc6,0xc5,0xc5,0xc5
,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3,0xc3,0xc3,0xc2,0xc3,0xc2,0xc1
,0xc2,0xc1,0xc2,0xc1,0xc1,0x29,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b
,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5
,0xc5,0xc5,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3,0xc3,0xc3,0xc3,0xc2
,0xc2,0xc2,0xc2,0xc2,0xc1,0xc1,0xc1,0x29,0x3a,0x3b,0x3a,0x3b,0x3a,0x3b
,0x3a,0x3b,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5
,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3,0xc3,0xc3
,0xc2,0xc3,0xc2,0xc1,0xc2,0xc1,0xc2,0xc1,0xc1,0x29,0x3b,0x3a,0x3b,0x3a
,0x3b,0x3a,0x3b,0x3a,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc7,0xc6,0xc6
,0xc6,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3
,0xc3,0xc3,0xc3,0xc2,0xc2,0xc2,0xc2,0xc2,0xc1,0xc1,0xc1,0x29,0x3a,0x3a
,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6
,0xc6,0xc6,0xc6,0xc5,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3
,0xc4,0xc3,0xc3,0xc3,0xc2,0xc3,0xc2,0xc1,0xc2,0xc1,0xc2,0xc1,0xc1,0x3a
,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7
,0xc6,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc5,0xc4,0xc4
,0xc4,0xc4,0xc3,0xc3,0xc3,0xc3,0xc3,0xc2,0xc2,0xc2,0xc2,0xc2,0xc1,0xc1
,0xc1,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0xc7,0xc7,0xc7,0xc7
,0xc7,0xc7,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4
,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3,0xc3,0xc3,0xc2,0xc3,0xc2,0xc1,0xc2,0xc1
,0xc2,0xc1,0xc1,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0xc7,0xc7
,0xc7,0xc7,0xc7,0xc7,0xc6,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5,0xc5,0xc5
,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3,0xc3,0xc3,0xc3,0xc2,0xc2,0xc2
,0xc2,0xc2,0xc1,0xc1,0xc1,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39
,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc6,0xc5
,0xc5,0xc5,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3,0xc3,0xbc,0xac,0xc3
,0xc2,0xc1,0xc2,0xc1,0xc2,0xc1,0x29,0x39,0x39,0x39,0x39,0x39,0x39,0x39
,0x39,0x39,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc7,0xc6,0xc6,0xc6,0xc6
,0xc5,0xc5,0xc5,0xc5,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3,0xc3,0xbc
,0xbc,0xc2,0xc2,0xc2,0xc2,0xc2,0xc1,0xc1,0x29,0x39,0x39,0x39,0x39,0x39
,0x39,0x39,0x39,0x39,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc6,0xc6
,0xc6,0xc5,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3
,0xac,0xbc,0xbc,0xc3,0xc2,0xc1,0xc2,0xc1,0xc2,0xc1,0x29,0x39,0x39,0x39
,0x39,0x39,0x39,0x39,0x39,0x39,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc7
,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4
,0xc3,0xc3,0xbc,0xbc,0xbc,0xc2,0xc2,0xc2,0xc2,0xc2,0xc1,0xc1,0x29,0x38
,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7
,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc4,0xc4
,0xc4,0xc3,0xc4,0xc3,0xbc,0xbc,0xbc,0xc3,0xc2,0xc1,0xc2,0xc1,0xc2,0xc1
,0x29,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0xc7,0xc7,0xc7,0xc7
,0xc7,0xc7,0xc6,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc5
,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3,0xbc,0xbc,0xbc,0xc2,0xc2,0xc2,0xc2,0xc2
,0xc1,0xc1,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0xc7,0xc7
,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc6,0xc5,0xc5,0xc5
,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3,0xbc,0xbc,0xbc,0xbc,0xc2,0xc1
,0xc2,0xc1,0xc2,0xc1,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38
,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5
,0xc5,0xc5,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3,0xbc,0xbc,0xbc,0xbc
,0xc2,0xc2,0xc2,0xc2,0xc1,0xc1,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38
,0x38,0x38,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5
,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3,0xbc,0xbc
,0xbc,0xbc,0xac,0xc1,0xc2,0xc1,0xc2,0xc1,0x38,0x38,0x38,0x38,0x38,0x38
,0x38,0x38,0x38,0x38,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc7,0xc6,0xc6
,0xc6,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3
,0xbc,0xbc,0xbc,0xbc,0xbc,0xc2,0xc2,0xc2,0xc1,0xc1,0x38,0x38,0x38,0x38
,0x38,0x38,0x38,0x38,0x38,0x38,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6
,0xc6,0xc6,0xc6,0xc5,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3
,0xc4,0xac,0xbc,0xbc,0xbc,0xbc,0xbc,0xc1,0xc2,0xc1,0xc2,0xc1,0x39,0x39
,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7
,0xc6,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc5,0xc4,0xc4
,0xc4,0xc4,0xc3,0xbc,0xbc,0xbc,0xbc,0xbc,0xac,0xc2,0xc2,0xc2,0xc1,0xc1
,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0xc7,0xc7,0xc7,0xc7
,0xc7,0xc7,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4
,0xc4,0xc4,0xc4,0xc3,0xbc,0xbc,0xff,0xbc,0xbc,0xbc,0xc2,0xc1,0xc2,0xc1
,0xc2,0xc1,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0xc7,0xc7
,0xc7,0xc7,0xc7,0xc7,0xc6,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5,0xc5,0xc5
,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4,0xbc,0xbc,0xff,0xff,0xbc,0xbc,0xc2,0xc2
,0xc2,0xc2,0xc1,0xc1,0x39,0x3a,0x39,0x3a,0x39,0x3a,0x39,0x3a,0x39,0x3a
,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc6,0xc5
,0xc5,0xc5,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xbc,0xff,0xff,0xff,0xbc,0xbc
,0xc2,0xc1,0xc2,0xc1,0xc2,0xc1,0x29,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a
,0x3a,0x3a,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc7,0xc6,0xc6,0xc6,0xc6
,0xc5,0xc5,0xc5,0xc5,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4,0xbc,0xff,0xff,0xff
,0xbc,0xbc,0xbc,0xc2,0xc2,0xc2,0xc1,0xc1,0x29,0x3a,0x3a,0x3a,0x3a,0x3a
,0x3a,0x3a,0x3a,0x3a,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc6,0xc6
,0xc6,0xc5,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xff,0xff
,0xff,0xff,0xff,0xbc,0xbc,0xc1,0xc2,0xc1,0xc2,0xc1,0x29,0x3a,0x3b,0x3a
,0x3b,0x3a,0x3b,0x3a,0x3b,0x3a,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc7
,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4
,0xff,0xff,0xff,0xff,0xff,0xbc,0xbc,0xac,0xc2,0xc2,0xc1,0xc1,0x29,0x3b
,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7
,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc4,0xc4
,0xc4,0xff,0xff,0xff,0xff,0xff,0xff,0xbc,0xbc,0xbc,0xc2,0xc1,0xc2,0xc1
,0x29,0x3c,0x3b,0x3c,0x3b,0x3c,0x3b,0x3c,0x3b,0x3c,0xc7,0xc7,0xc7,0xc7
,0xc7,0xc7,0xc6,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc5
,0xc4,0xc4,0xc4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbc,0xbc,0xac,0xc2
,0xc1,0xc1,0xc1,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0xc7,0xc7
,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc6,0xc5,0xc5,0xc5
,0xc5,0xc4,0xc4,0xc4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbc,0xbc
,0xac,0xc1,0xc2,0xc1,0xc1,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c
,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5
,0xc5,0xc5,0xc4,0xc5,0xc4,0xc4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
,0xbc,0xbc,0xbc,0xc2,0xc1,0xc1,0xc1,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c
,0x3d,0x3c,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5
,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc4,0xc4,0xff,0xff,0xff,0xff,0xff,0xff
,0xff,0xff,0xbc,0xbc,0xbc,0xc1,0xc2,0xc1,0xc1,0x3d,0x3d,0x3d,0x3d,0x3d
,0x3d,0x3d,0x3d,0x3d,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc7,0xc6,0xc6
,0xc6,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc5,0xc4,0xc4,0xff,0xff,0xff,0xff
,0xff,0xff,0xff,0xff,0xbc,0xbc,0xbc,0xc2,0xc1,0xc1,0xc1,0x3d,0x3d,0x3d
,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6
,0xc6,0xc6,0xc6,0xc5,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc4,0xff,0xff,0xff
,0xc4,0xff,0xff,0xff,0xff,0xff,0xff,0xbc,0xbc,0xc1,0xc2,0xc1,0xc1,0x29
,0x3d,0x3e,0x3d,0x3e,0x3d,0x3e,0x3d,0x3e,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7
,0xc6,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc5,0xc4,0xff
,0xff,0xff,0xc3,0xff,0xff,0xff,0xff,0xff,0xff,0xbc,0xbc,0xc2,0xc1,0xc1
,0xc1,0x29,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0xc7,0xc7,0xc7,0xc7
,0xc7,0xc7,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4
,0xc4,0xff,0xff,0xc3,0xc4,0xff,0xff,0xff,0xff,0xff,0xff,0xbc,0xbc,0xc1
,0xc2,0xc1,0xc1,0x29,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0xc7,0xc7
,0xc7,0xc7,0xc7,0xc7,0xc6,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5,0xc5,0xc5
,0xc4,0xc5,0xc4,0xff,0xff,0xc4,0xc3,0xff,0xff,0xff,0xff,0xff,0xff,0xbc
,0xbc,0xc2,0xc1,0xc1,0xc1,0x29,0x3f,0x3e,0x3f,0x3e,0x3f,0x3e,0x3f,0x3e
,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc6,0xc5
,0xc5,0xc5,0xc5,0xc4,0xc4,0xff,0xff,0xc3,0xc4,0xff,0xff,0xff,0xff,0xff
,0xff,0xff,0xbc,0xc1,0xc2,0xc1,0xc1,0xc1,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f
,0x3f,0x3f,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc7,0xc6,0xc6,0xc6,0xc6
,0xc5,0xc5,0xc5,0xc5,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3,0xff,0xff
,0xff,0xff,0xff,0xff,0xbc,0xc2,0xc1,0xc1,0xc1,0xc1,0x3f,0x3f,0x3f,0x3f
,0x3f,0x3f,0x3f,0x3f,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc6,0xc6
,0xc6,0xc5,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3
,0xff,0xff,0xff,0xff,0xff,0xff,0xbc,0xc1,0xc2,0xc1,0xc1,0xc1,0x3f,0x3f
,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc7
,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4
,0xc3,0xc3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc2,0xc1,0xc1,0xc1,0xc1
,0xc1,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7
,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc4,0xc4
,0xc4,0xc3,0xc4,0xc3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc1,0xc2,0xc1
,0xc1,0xc1,0xc1,0x3f,0x3e,0x3f,0x3e,0x3f,0x3e,0x3f,0xc7,0xc7,0xc7,0xc7
,0xc7,0xc7,0xc6,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc5
,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc2
,0xc1,0xc1,0xc1,0xc1,0xc1,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0xc7,0xc7
,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc6,0xc5,0xc5,0xc5
,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3,0xff,0xff,0xff,0xff,0xff,0xff
,0xff,0xc1,0xc2,0xc1,0xc1,0xc1,0xc1,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e
,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5
,0xc5,0xc5,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3,0xff,0xff,0xff,0xff
,0xff,0xff,0xff,0xc2,0xc1,0xc1,0xc1,0xc1,0xc1,0x3d,0x3e,0x3d,0x3e,0x3d
,0x3e,0x3d,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5
,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3,0xff,0xff
,0xff,0xff,0xff,0xff,0xff,0xc1,0xc2,0xc1,0xc1,0xc1,0xc1,0x29,0x3d,0x3d
,0x3d,0x3d,0x3d,0x3d,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc7,0xc6,0xc6
,0xc6,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xff
,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc2,0xc1,0xc1,0xc1,0xc1,0xc1,0x29
,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6
,0xc6,0xc6,0xc6,0xc5,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3
,0xc4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc2,0xc1,0xc2,0xc1,0xc1,0xc1
,0xc1,0x29,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7
,0xc6,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc5,0xc4,0xc4
,0xc4,0xc4,0xc3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc2,0xc2,0xc1,0xc1
,0xc1,0xc1,0xc1,0x29,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0xc7,0xc7,0xc7,0xc7
,0xc7,0xc7,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4
,0xc4,0xc4,0xc4,0xc3,0xc4,0xff,0xff,0xff,0xc2,0xff,0xff,0xff,0xc2,0xc1
,0xc2,0xc1,0xc1,0xc1,0xc1,0x29,0x3c,0x3b,0x3c,0x3b,0x3c,0x3b,0xc7,0xc7
,0xc7,0xc7,0xc7,0xc7,0xc6,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5,0xc5,0xc5
,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4,0xff,0xff,0xff,0xff,0xc3,0xff,0xff,0xff
,0xc2,0xc2,0xc1,0xc1,0xc1,0xc1,0xc1,0x29,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b
,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc6,0xc5
,0xc5,0xc5,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xff,0xff,0xff,0xff,0xc2,0xff
,0xff,0xff,0xc2,0xc1,0xc2,0xc1,0xc1,0xc1,0xc1,0x29,0x3b,0x3b,0x3b,0x3b
,0x3b,0x3b,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc7,0xc6,0xc6,0xc6,0xc6
,0xc5,0xc5,0xc5,0xc5,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4,0xff,0xff,0xff,0xff
,0xc3,0xff,0xff,0xff,0xc2,0xc2,0xc1,0xc1,0xc1,0xc1,0xc1,0x29,0x3a,0x3b
,0x3a,0x3b,0x3a,0x3b,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc6,0xc6
,0xc6,0xc5,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xff,0xff
,0xff,0xff,0xc2,0xc3,0xff,0xff,0xc2,0xc1,0xc2,0xc1,0xc1,0xc1,0xc1,0x3a
,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,0xc7
,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4
,0xff,0xff,0xff,0xff,0xc3,0xc2,0xff,0xff,0xc2,0xc2,0xc1,0xc1,0xc1,0xc1
,0xc1,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7
,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc4,0xc4
,0xc4,0xc3,0xff,0xff,0xff,0xff,0xc2,0xc3,0xff,0xc1,0xc2,0xc1,0xc2,0xc1
,0xc1,0xc1,0xc1,0x39,0x3a,0x39,0x3a,0x39,0x3a,0x39,0xc7,0xc7,0xc7,0xc7
,0xc7,0xc7,0xc6,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5,0xc5,0xc5,0xc4,0xc5
,0xc4,0xc4,0xc4,0xc4,0xc3,0xff,0xff,0xff,0xc3,0xc2,0xc2,0xc2,0xc2,0xc2
,0xc1,0xc1,0xc1,0xc1,0x29,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0xc7,0xc7
,0xc7,0xbc,0xc7,0xc7,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc6,0xc5,0xc5,0xc5
,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc4,0xff,0xff,0xff,0xc2,0xc3,0xc2,0xc1
,0xc2,0xc1,0xc2,0xc1,0xc1,0xc1,0x29,0x39,0x39,0x39,0x39,0x39,0x39,0x39
,0xc7,0xc7,0xbc,0xbc,0xc7,0xc7,0xc6,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5
,0xc5,0xc5,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3,0xff,0xff,0xc3,0xc2
,0xc2,0xc2,0xc2,0xc2,0xc1,0xc1,0xc1,0xc1,0x29,0x39,0x39,0x39,0x39,0x39
,0x39,0x39,0xc7,0xc7,0xbc,0xbc,0xbc,0xc7,0xc7,0xc6,0xc6,0xc6,0xc6,0xc5
,0xff,0xc5,0xc5,0xc5,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc4,0xc3,0xff,0xff
,0xc2,0xc3,0xc2,0xc1,0xc2,0xc1,0xc2,0xc1,0xc1,0xc1,0x38,0x38,0x38,0x38
,0x38,0x38,0x38,0x38,0xc7,0xbc,0xbc,0xbc,0xbc,0xbc,0xc6,0xc7,0xc6,0xc6
,0xc6,0xff,0xff,0xbc,0xc5,0xc5,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3
,0xff,0xc3,0xc3,0xc2,0xc2,0xc2,0xc2,0xc2,0xc1,0xc1,0xc1,0xc1,0x38,0x38
,0x38,0x38,0x38,0x38,0x38,0x38,0xc7,0xbc,0xff,0xff,0xbc,0xbc,0xc7,0xc6
,0xc6,0xc6,0xc6,0xff,0xff,0xbc,0xc5,0xc5,0xc5,0xc4,0xc4,0xc4,0xc4,0xc3
,0xc4,0xc3,0xc3,0xc3,0xc2,0xc3,0xc2,0xc1,0xc2,0xc1,0xc2,0xc1,0xc1,0x29
,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0xc7,0xff,0xff,0xff,0xbc,0xbc
,0xbc,0xc7,0xc6,0xc6,0xc6,0xff,0xbc,0xbc,0xc5,0xc5,0xc4,0xc5,0xc4,0xc4
,0xc4,0xc4,0xc3,0xc3,0xc3,0xc3,0xc3,0xc2,0xc2,0xc2,0xc2,0xc2,0xc1,0xc1
,0xc1,0x29,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38
,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
,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
};
RCL_Unit floorHeightAt(int16_t x, int16_t y)
@ -473,10 +473,11 @@ 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 * 3);
intensity = pixel->depth / (RCL_UNITS_PER_SQUARE * 2);
intensity += pixel->hit.direction % 2 == 0 ? 2 : 0;
color = wallGradients[pixel->hit.type][RCL_clamp(7 + intensity,0,14)];
color = addIntensity(squareColors[pixel->hit.type],intensity - 6);
// color = wallGradients[pixel->hit.type][RCL_clamp(7 + intensity,0,14)];
}
else
color = 30;
@ -484,9 +485,10 @@ inline void pixelFunc(RCL_PixelInfo *pixel)
else if (pixel->isFloor)
{
if (!pixel->isHorizon)
intensity = pixel->depth / (RCL_UNITS_PER_SQUARE * 4);
intensity = pixel->depth / RCL_UNITS_PER_SQUARE;
color = floorGradient[RCL_clamp(7 + intensity,0,14)];
color = addIntensity(floorColor,intensity - 3);
// color = floorGradient[RCL_clamp(7 + intensity,0,14)];
}
else
{
@ -557,7 +559,9 @@ int main()
defaultConstraints.maxHits = 6;
defaultConstraints.maxSteps = 20;
floorColor = rgbToIndex(4,2,0);
// floorColor = rgbToIndex(4,2,0);
floorColor = 32;
squareColors[0] = rgbToIndex(0,0,3);
squareColors[1] = rgbToIndex(7,0,0);

View file

@ -68,7 +68,7 @@ Pokitto::Core pokitto;
#define SUBSAMPLED_WIDTH (SCREEN_WIDTH / SUBSAMPLE)
#define TRANSPARENT_COLOR 0b00000111 /// Transparent color for sprites and GUI.
#define TRANSPARENT_COLOR 0x8f /// Transparent color for sprites and GUI.
RCL_Unit zBuffer[SUBSAMPLED_WIDTH]; ///< 1D z-buffer for visibility determination.
@ -98,6 +98,120 @@ 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)
{
if (saturation > 84)
return ((saturation / 85 - 1) << 7) | ((hue / 32) << 4) | ((value - 16) / 15);
// "normal" color, as 0bSHHHVVVV, VVVV != 0
else
return value / 16;
// saturation near 0 => gray, as 0bVVVV0000, VVVV != 0
}
return 0;
// value near 0 => black, as 0b00000000
}
void decodeHSV(uint8_t hsv, uint8_t *hue, uint8_t *saturation, uint8_t *value)
{
uint8_t topHalf = hsv & 0b11110000;
uint8_t bottomHalf = hsv & 0b00001111;
if (topHalf != 0)
{
// "normal" color
*value = bottomHalf != 15 ? (bottomHalf + 1) * 16 : 255;
*saturation = (1 + ((hsv & 0b10000000) >> 7)) * 127;
*hue = ((hsv & 0b01110000) >> 4) * 32;
}
else
{
// gray/white/black
*hue = 0;
*saturation = 0;
*value = bottomHalf * 17;
}
}
void convertHSVtoRGB(uint8_t hue, uint8_t saturation, uint8_t value,
uint8_t *red, uint8_t *green, uint8_t *blue)
{
#define M 16
int32_t chroma = (value * saturation) / 256;
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;
a = a < 0 ? -a : a; // abs
int16_t x = chroma * (1 - a);
if (h <= 1)
{ *red = chroma; *green = x; *blue = 0; }
else if (h <= 2)
{ *red = x; *green = chroma; *blue = 0; }
else if (h <= 3)
{ *red = 0; *green = chroma; *blue = x; }
else if (h <= 4)
{ *red = 0; *green = x; *blue = chroma; }
else if (h <= 5)
{ *red = x; *green = 0; *blue = chroma; }
else if (h <= 6)
{ *red = chroma; *green = 0; *blue = x; }
else
{ *red = 0; *green = 0; *blue = 0; }
*/
int32_t m = value - chroma;
*red += m;
*green += m;
*blue += m;
}
/**
Gets (the index of) color by specified RGB components.
@ -116,11 +230,29 @@ inline uint8_t rgbToIndex(uint8_t r, uint8_t g, uint8_t b)
*/
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);
*/
for (uint16_t i = 0; i < 256; ++i)
{
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);
}
pokitto.display.load565Palette(palette);
}
@ -134,6 +266,21 @@ void initPalette()
*/
inline uint8_t addIntensity(uint8_t color, int16_t intensity)
{
int16_t newValue = (color & 0b00001111) + intensity;
if (newValue <= 0)
return 0; // black
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;
@ -159,6 +306,8 @@ inline uint8_t addIntensity(uint8_t color, int16_t intensity)
}
return rgbToIndex(r,g,b);
*/
}
inline uint8_t addRGB(uint8_t color, int16_t red, int16_t green, int16_t blue)
@ -411,6 +560,7 @@ void initGeneral()
pokitto.setFrameRate(FPS);
pokitto.display.setFont(fontTiny);
pokitto.display.persistence = 1;
pokitto.display.setInvisibleColor(-1);
RCL_initRayConstraints(&defaultConstraints);

BIN
palette.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 440 B