From 0db6eed9e093928ea6bb28c3c2f36d25c9b5cd4d Mon Sep 17 00:00:00 2001 From: kamorris Date: Mon, 25 May 2020 15:29:41 -0700 Subject: [PATCH 1/5] add 4bit image support, tools and examples --- Tools/Images/README.txt | 25 + Tools/Images/bmp2array4bit.py | 251 +++ Tools/Images/star.bmp | Bin 0 -> 12986 bytes .../Sprite/Sprite_image_4bit/Sprite_image.ino | 162 ++ .../Sprite_image_4bit/Sprite_image_4bit.ino | 162 ++ .../Sprite/Sprite_image_4bit/sample_images.h | 3 + .../Sprite/Sprite_image_4bit/starImage.cpp | 1444 +++++++++++++++++ 7 files changed, 2047 insertions(+) create mode 100644 Tools/Images/README.txt create mode 100644 Tools/Images/bmp2array4bit.py create mode 100644 Tools/Images/star.bmp create mode 100644 examples/Sprite/Sprite_image_4bit/Sprite_image.ino create mode 100644 examples/Sprite/Sprite_image_4bit/Sprite_image_4bit.ino create mode 100644 examples/Sprite/Sprite_image_4bit/sample_images.h create mode 100644 examples/Sprite/Sprite_image_4bit/starImage.cpp diff --git a/Tools/Images/README.txt b/Tools/Images/README.txt new file mode 100644 index 0000000..8ba629c --- /dev/null +++ b/Tools/Images/README.txt @@ -0,0 +1,25 @@ + +bmp2array4bit.py creates C (or C++) code that contains two arrays for adding images to four-bit sprites. See Sprite_image_4bit for an example. + +It is loosely based on Spark Fun's bmp2array script. + +You'll need python 3.6 (the original use Python 2.7) + +usage: python bmp2array4bit.py [-v] star.bmp [-o myfile.c] + +Create the bmp file in Gimp from any image by: + +. Remove the alpha channel (if it has one) + Layer -> Transparency -> Remove Alpha Channel +. Set the mode to indexed. + Image -> Mode -> Indexed... +. Select Generate optimum palette with 16 colors (max) +. Export the file with a .bmp extension. Do NOT select options: + . Run-Length Encoded + . Compatibility Options: "Do not write color space information" + . There are no Advanced Options available with these settings + +I don't have photoshop so cannot help you with that. + +The first array produced is the palette for the image. +The second is the image itself. \ No newline at end of file diff --git a/Tools/Images/bmp2array4bit.py b/Tools/Images/bmp2array4bit.py new file mode 100644 index 0000000..3b6d850 --- /dev/null +++ b/Tools/Images/bmp2array4bit.py @@ -0,0 +1,251 @@ +''' + + This script takes in a bitmap and outputs a text file that is a + byte array used in Arduino files. + + It is loosely based on Spark Fun's bmp2array script. + + You'll need python 3.6 (the original use Python 2.7) + + usage: python fourbitbmp2array.py [-v] star.bmp [-o myfile.c] + + Create the bmp file in Gimp by : + + . Remove the alpha channel (if it has one) Layer -> Transparency -> Remove Alpha Channel + . Set the mode to indexed. Image -> Mode -> Indexed... + . Select Generate optimum palette with 16 colors (max) + . Export the file with a .bmp extension. Options are: + . Run-Length Encoded: not selected + . Compatibility Options: "Do not write color space information" not selected + . There are no Advanced Options available with these settings + + + + +''' + +import sys +import struct +import math +import argparse +import os + +debug = None + +def debugOut(s): + if debug: + print(s) + +# look at arguments +parser = argparse.ArgumentParser(description="Convert bmp file to C array") +parser.add_argument("-v", "--verbose", help="debug output", action="store_true") +parser.add_argument("input", help="input file name") +parser.add_argument("-o", "--output", help="output file name") +args = parser.parse_args() + +if not os.path.exists(args.input): + parser.print_help() + print("The input file {} does not exist".format(args.input)) + sys.exit(1) + +if args.output == None: + output = os.path.basename(args.input).replace(".bmp", ".c") +else: + output = args.output + +debug = args.verbose + +try: + #Open our input file which is defined by the first commandline argument + #then dump it into a list of bytes + infile = open(args.input,"rb") #b is for binary + contents = bytearray(infile.read()) + infile.close() +except: + print("could not read input file {}".format(args.input)) + sys.exit(1) + +# first two bytes should be "BM" +upto = 2 +#Get the size of this image +data = struct.pack("BBBB", contents[upto], contents[upto+1], contents[upto+2], contents[upto+3]) +fileSize = struct.unpack("I", bytearray(data)) + +upto += 4 +# four bytes are reserved + +upto += 4 + +debugOut("Size of file: {}".format(fileSize[0])) + +#Get the header offset amount +data = struct.pack("BBBB", contents[upto], contents[upto+1], contents[upto+2], contents[upto+3]) +offset = struct.unpack("I", bytearray(data)) + +debugOut("Offset: {}".format(offset[0])) +upto += 4 + +data = struct.pack("BBBB", contents[upto], contents[upto+1], contents[upto+2], contents[upto+3]) +headersize = struct.unpack("I", bytearray(data)) +headerLength = headersize[0] +startOfDefinitions = headerLength + upto +debugOut("header size: {}, up to {}, startOfDefinitions {}".format(headersize[0], upto, startOfDefinitions)) +upto += 4 + +data = struct.pack("BBBB", contents[upto], contents[upto+1], contents[upto+2], contents[upto+3]) +t = struct.unpack("I", bytearray(data)) +debugOut("width: {}".format(t[0])) +width = t[0] + +upto += 4 +data = struct.pack("BBBB", contents[upto], contents[upto+1], contents[upto+2], contents[upto+3]) +t = struct.unpack("I", bytearray(data)) +debugOut("height: {}".format(t[0])) +height = t[0] + +# 26 +upto += 4 + +data = struct.pack("BB", contents[upto], contents[upto+1]) +t = struct.unpack("H", bytearray(data)) +debugOut("planes: {}".format(t[0])) + +upto = upto + 2 +data = struct.pack("BB", contents[upto], contents[upto+1]) +t = struct.unpack("H", bytearray(data)) +debugOut("bits per pixel: {}".format(t[0])) +bitsPerPixel = t[0] + +upto = upto + 2 +data = struct.pack("BBBB", contents[upto], contents[upto+1], contents[upto+2], contents[upto+3]) +t = struct.unpack("I", bytearray(data)) +debugOut("biCompression: {}".format(t[0])) + +upto = upto + 4 +data = struct.pack("BBBB", contents[upto], contents[upto+1], contents[upto+2], contents[upto+3]) +t = struct.unpack("I", bytearray(data)) +debugOut("biSizeImage: {}".format(t[0])) + +upto = upto + 4 +data = struct.pack("BBBB", contents[upto], contents[upto+1], contents[upto+2], contents[upto+3]) +t = struct.unpack("I", bytearray(data)) +debugOut("biXPelsPerMeter: {}".format(t[0])) + +upto = upto + 4 +data = struct.pack("BBBB", contents[upto], contents[upto+1], contents[upto+2], contents[upto+3]) +t = struct.unpack("I", bytearray(data)) +debugOut("biYPelsPerMeter: {}".format(t[0])) + +upto = upto + 4 +data = struct.pack("BBBB", contents[upto], contents[upto+1], contents[upto+2], contents[upto+3]) +t = struct.unpack("I", bytearray(data)) +debugOut("biClrUsed: {}".format(t[0])) +colorsUsed = t + +upto = upto + 4 +data = struct.pack("BBBB", contents[upto], contents[upto+1], contents[upto+2], contents[upto+3]) +t = struct.unpack("I", bytearray(data)) +debugOut("biClrImportant: {}".format(t[0])) + +upto += 4 + +debugOut("Upto: {} Number of colors used: {} definitions start at: {}".format(upto, colorsUsed[0], startOfDefinitions)) + +#Create color definition array and init the array of color values +colorIndex = [] #(colorsUsed[0]) +for i in range(colorsUsed[0]): + colorIndex.append(0) + +#Assign the colors to the array. upto = 54 +# startOfDefinitions = upto +for i in range(colorsUsed[0]): + upto = startOfDefinitions + (i * 4) + blue = contents[upto] + green = contents[upto + 1] + red = contents[upto + 2] + # ignore the alpha channel. + + # data = struct.pack("BBBB", contents[upto], contents[upto+1], contents[upto+2], contents[upto+3]) + # t = struct.unpack("I", bytearray(data)) + # colorIndex[i] = t[0] + + colorIndex[i] = (((red & 0xf8)<<8) + ((green & 0xfc)<<3)+(blue>>3)) + debugOut("color at index {0} is {1:04x}, (r,g,b,a) = ({2:02x}, {3:02x}, {4:02x}, {5:02x})".format(i, colorIndex[i], red, green, blue, contents[upto+3])) + +#debugOut(the color definitions +# for i in range(colorsUsed[0]): +# print hex(colorIndex[i]) + +# perfect, except upside down. + +#Make a string to hold the output of our script +arraySize = (len(contents) - offset[0]) +outputString = "/* This was generated using a script based on the SparkFun BMPtoArray python script" + '\n' +outputString += " See https://github.com/sparkfun/BMPtoArray for more info */" + '\n\n' +outputString += "static const uint16_t palette[" + str(colorsUsed[0]) + "] = {"; +for i in range(colorsUsed[0]): + # print hexlify(colorIndex[i]) + if i % 4 == 0: + outputString += "\n\t" + outputString += "0x{:04x}, ".format(colorIndex[i]) + +outputString = outputString[:-2] +outputString += "\n};\n\n" +outputString += "// width is " + str(width) + ", height is " + str(height) + "\n" +outputString += "static const uint8_t myGraphic[" + str(arraySize) + "] PROGMEM = {" + '\n' + +if bitsPerPixel != 4: + print("Expected 4 bits per pixel; found {}".format(bitsPerPixel)) + sys.exit(1) + +#Start converting spots to values +#Start at the offset and go to the end of the file +dropLastNumber = True #(width % 4) == 2 or (width % 4) == 1 +paddedWidth = int(math.ceil(bitsPerPixel * width / 32.0) * 4) +debugOut("array range is {} {} len(contents) is {} paddedWidth is {} width is {}".format(offset[0], fileSize[0], len(contents), paddedWidth, width)) + +r = 0 +width = int(width / 2) +#for i in range(offset[0], fileSize[0]): # close but image is upside down. Each row is correct but need to swap columns. +#for i in range(fileSize[0], offset[0], -1): + +for col in range(height-1, -1, -1): + i = 0 + for row in range(width): + colorCode1 = contents[row + col*paddedWidth + offset[0]] + + if r > 0 and r % width == 0: + i = 0 + outputString += '\n\n' + elif (i + 1) % 12 == 0 : + outputString += '\n' + i = 0 + + #debugOut("cell ({0}, {1})".format(row, col) + + r = r + 1 + i = i + 1 + outputString += "0x{:02x}, ".format(colorCode1) + + + +#Once we've reached the end of our input string, pull the last two +#characters off (the last comma and space) since we don't need +#them. Top it off with a closing bracket and a semicolon. +outputString = outputString[:-2] +outputString += "};" + +try: + #Write the output string to our output file + outfile = open(output, "w") + outfile.write(outputString) + outfile.close() +except: + print("could not write output to file {}".format(output)) + sys.exit(1) + +debugOut("{} complete".format(output)) +debugOut("Copy and paste this array into a image.h or other header file") + +if not debug: + print("Completed; the output is in {}".format(output)) diff --git a/Tools/Images/star.bmp b/Tools/Images/star.bmp new file mode 100644 index 0000000000000000000000000000000000000000..21166da425051845d0ce6e6c894b51655639a51e GIT binary patch literal 12986 zcmeHN&u<(_6)rnj-;j36Vu83s0vT~zBGzXsB*O_QWV1dGY}}p$CsxEhf%Y=-{sX{d zE(j!~BqtD;c=8XxPJ9BvA;}5E#p?(pu4}&U{iv?)uI`?h_?VJB(_K~X>+gN9-m99H zum9lqT99^(&!6D$H}{=JP`{$2n6?TWn`7I>9y7SD zVYqE5-@jWFALU2byIHJ&SNyOI@U3Dcyfz6hf&41`iXtx|;fkV-e7;{yifjeKChttduEv@EVxXRL{Mhb!UTCthvc zZnJN6G;Tbo`q=v2I*n*m6qQ8%3VZgCj_|0?e5~VL61*dk@K!mf;vEUzPTAdm1;ay_ zsf3XUSfjBY{D%D~<%|u(t4cT^oIGb$JeANY!xrI2q(|b*@>9D+LRrX&g|wCNqJ*V* z1T1o?Q|eW}+NA8C{+gC1p)TYRd)U7c-b4V$l@R&?UMh;8wsJI6vB2Oh&vq0v!A9xa?f2=_oF z7%$5Yc)*$wPh$c=xnY+GTJ@;&PPPxhI~EL*Gq}eQFTXiwakbn}CJ$ya0Tc;Eyy~OXh~-cPXR?t=eOJjw^8zYN*5(2a`9QoZRB@SM})C5lfp8y(du6S7AoU`|xXw-VKhEmTa zp5nveQ0p|ST4v2!xIT-Gr|E| z@ecgK9V))N>u@Y5C7ux^T*NE4(KZ!bIXgn7cmgPJyz+uLc8a%ir7J3@JB9Frv7*3Z z@m92Sypm$`uo{)qU6%eLXCumdZg5;Z7~nWtn~L9b>I{T7mH@$f`CK{9=g&T$8(svw zkBv^+UOdHyux@M4l>?xcJJ5Ow6m7gxex=KL;w0n;u3|$u+bW#j*{Q;voF#ar&*gdP zsw`q`KHA(_pOn>m$@y;M2;gla1v^C_3 zG*i)kst_;6A;LXk)~zvW&A9cQ5GKhYyyH_`diru+6+-n z@VHQFcoERIDTa9r0AGGwG#j`_x36L&2WJKE)fdF%r*ue2I7L-tOkh4FPHelXAPD+4 z<^=%!UY!$=A6PeR5s^M;=!L)^Q%2CVQ%hNQug=c_m*B;c4LGBhsz;V}f(ab>oqxeU zkTik@n9z%!+C@ST%BXU{d@0JEOCz4=vie-o8`kk^1eG3h3=Q1a1TRv=Q#L( zu7Sra7J3Y?sh4}zRaFos#?I+Qf+AvtUiP<0Q$git-j*JdA6HCC?^Z)Sb_^mX$A((=C7=nQG zH|0lv!4Lc)3+cU=)vfH@Rs~@o0Xa$JljV1s;6c6KwVc;I zw1j>UuXLAXAN&*#l?wc>mY(IWHl!#35AnrZGp#Xa^omNblc5pLl1N=#VJ4zsyyPh@#$Un?s ze0h(5O9^bxIAj}68=v}Y|DK9~iMu|)fPjK~*Z7X%a0AT8&JH{XsCei|o~HqBErA=J zZN!76G+c_q>Tc4D0pN{0_P8x8exwx}=pdR;b+yz-x-(9*Eh6a!@aV9*Tfu|tn9^}# z(`>8ZK|r1b(Gn4oIqd;Kw)wj&nSUQ|lMdzd3x|^he1OifwP&1$LuVdf8rw+XIVIi` z*Ps36d#Q12#%Z?UC0BgQ1w+7_!|E=-$d3tprcXq2R$fZ3hP|sV#@V zbYi?#haq6a-8d{4`HVw2D(!=7Z^r~ggdfHe%RAo~R3^4$9DiSWyYW5!f0IhELiZ_LP z2+h6v33q)!t6|kj@Aj@`b^x@_s%bxrc0ufKsC1Zu?rx+2;DV z8JK{5d+nlt8@giZ$+4(;W1d!R?i5Il#^?$inj#|K;(5^V95_4zTD2B*%@hjBAP@x;rfsmhF~(9$qhN*EW9uhcC`uc~v_a zcbv=Gc(nCn7vX=$WwwJhi=KX@h;NiVGZ!1)B;Ihbxr@w#!x!mp2!Okw_yXOP p6>~AQz}3B2ckvHd9lz52nag~?wX@9Z{<&-YQ{K#YqrmbC{2%kDSkM3f literal 0 HcmV?d00001 diff --git a/examples/Sprite/Sprite_image_4bit/Sprite_image.ino b/examples/Sprite/Sprite_image_4bit/Sprite_image.ino new file mode 100644 index 0000000..e004df4 --- /dev/null +++ b/examples/Sprite/Sprite_image_4bit/Sprite_image.ino @@ -0,0 +1,162 @@ +/* + + Sketch to show how a Sprite can use a four-bit image with + a palette to change the appearance of an image while rendering + it only once. + + Example for library: + https://github.com/Bodmer/TFT_eSPI + + A Sprite is notionally an invisible graphics screen that is + kept in the processors RAM. Graphics can be drawn into the + Sprite just as it can be drawn directly to the screen. Once + the Sprite is completed it can be plotted onto the screen in + any position. If there is sufficient RAM then the Sprite can + be the same size as the screen and used as a frame buffer. + + A 16 bit Sprite occupies (2 * width * height) bytes in RAM. + + On a ESP8266 Sprite sizes up to 126 x 160 can be accomodated, + this size requires 40kBytes of RAM for a 16 bit color depth. + + When 8 bit color depth sprites are created they occupy + (width * height) bytes in RAM, so larger sprites can be + created, or the RAM required is halved. + +*/ + + +// Set delay after plotting the sprite +#define DELAY 30 + +// Width and height of sprite +#define WIDTH 164 +#define HEIGHT 164 + +#include "sample_images.h" + +TFT_eSPI tft = TFT_eSPI(); // Declare object "tft" + +TFT_eSprite spr = TFT_eSprite(&tft); // Declare Sprite object "spr" with pointer to "tft" object + +const int freq = 5000; +int screenBrightnessChannel = 0; +int resolution = 8; + +byte red = 31; // Red is the top 5 bits of a 16 bit colour value +byte green = 0;// Green is the middle 6 bits +byte blue = 0; // Blue is the bottom 5 bits +byte state = 0; + +int rloop = 0; +int incr = 1; + +uint16_t cmap[16]; + +void setup() +{ + pinMode(21, OUTPUT); + ledcSetup(screenBrightnessChannel, freq, resolution); + ledcAttachPin(21, screenBrightnessChannel); + ledcWrite(screenBrightnessChannel, 127); + + Serial.begin(9600); + Serial.println(); + + delay(50); + + // Initialise the TFT registers + tft.init(); + + spr.setColorDepth(4); + + // Create a sprite of defined size + spr.createSprite(WIDTH, HEIGHT); + + // Clear the TFT screen to black + tft.fillScreen(TFT_BLACK); + + // push the image - only need to do this once. + spr.pushImage(2, 2, 160, 160, (uint16_t *)stars); + + for (int i = 0; i < 16; i++) + cmap[i] = rainbow(); +} + +void loop(void) +{ + // create a palette with the defined colors and push it. + spr.createPalette(cmap, 16); + spr.pushSprite(tft.width() / 2 - WIDTH / 2, tft.height() / 2 - HEIGHT / 2); + + // update the colors + for (int i = 0; i < 15; i++) { + cmap[i] = cmap[i + 1]; + } + if (incr == 2) { + (void)rainbow(); // skip alternate steps + } + cmap[15] = rainbow(); + rloop += incr; + if (rloop > 0xc0) { + incr = incr == 2 ? 1 : 2; + Serial.printf("incr %d, rloop %d\r\n", incr, rloop); + rloop = 0; + + } + delay(DELAY); + +} + +// ######################################################################### +// Return a 16 bit rainbow colour +// ######################################################################### +unsigned int rainbow() +{ + switch (state) { + case 0: + green ++; + if (green == 64) { + green = 63; + state = 1; + } + break; + case 1: + red--; + if (red == 255) { + red = 0; + state = 2; + } + break; + case 2: + blue ++; + if (blue == 32) { + blue = 31; + state = 3; + } + break; + case 3: + green --; + if (green == 255) { + green = 0; + state = 4; + } + break; + case 4: + red ++; + if (red == 32) { + red = 31; + state = 5; + } + break; + case 5: + blue --; + if (blue == 255) { + blue = 0; + state = 0; + } + break; + } + return red << 11 | green << 5 | blue; +} + diff --git a/examples/Sprite/Sprite_image_4bit/Sprite_image_4bit.ino b/examples/Sprite/Sprite_image_4bit/Sprite_image_4bit.ino new file mode 100644 index 0000000..e004df4 --- /dev/null +++ b/examples/Sprite/Sprite_image_4bit/Sprite_image_4bit.ino @@ -0,0 +1,162 @@ +/* + + Sketch to show how a Sprite can use a four-bit image with + a palette to change the appearance of an image while rendering + it only once. + + Example for library: + https://github.com/Bodmer/TFT_eSPI + + A Sprite is notionally an invisible graphics screen that is + kept in the processors RAM. Graphics can be drawn into the + Sprite just as it can be drawn directly to the screen. Once + the Sprite is completed it can be plotted onto the screen in + any position. If there is sufficient RAM then the Sprite can + be the same size as the screen and used as a frame buffer. + + A 16 bit Sprite occupies (2 * width * height) bytes in RAM. + + On a ESP8266 Sprite sizes up to 126 x 160 can be accomodated, + this size requires 40kBytes of RAM for a 16 bit color depth. + + When 8 bit color depth sprites are created they occupy + (width * height) bytes in RAM, so larger sprites can be + created, or the RAM required is halved. + +*/ + + +// Set delay after plotting the sprite +#define DELAY 30 + +// Width and height of sprite +#define WIDTH 164 +#define HEIGHT 164 + +#include "sample_images.h" + +TFT_eSPI tft = TFT_eSPI(); // Declare object "tft" + +TFT_eSprite spr = TFT_eSprite(&tft); // Declare Sprite object "spr" with pointer to "tft" object + +const int freq = 5000; +int screenBrightnessChannel = 0; +int resolution = 8; + +byte red = 31; // Red is the top 5 bits of a 16 bit colour value +byte green = 0;// Green is the middle 6 bits +byte blue = 0; // Blue is the bottom 5 bits +byte state = 0; + +int rloop = 0; +int incr = 1; + +uint16_t cmap[16]; + +void setup() +{ + pinMode(21, OUTPUT); + ledcSetup(screenBrightnessChannel, freq, resolution); + ledcAttachPin(21, screenBrightnessChannel); + ledcWrite(screenBrightnessChannel, 127); + + Serial.begin(9600); + Serial.println(); + + delay(50); + + // Initialise the TFT registers + tft.init(); + + spr.setColorDepth(4); + + // Create a sprite of defined size + spr.createSprite(WIDTH, HEIGHT); + + // Clear the TFT screen to black + tft.fillScreen(TFT_BLACK); + + // push the image - only need to do this once. + spr.pushImage(2, 2, 160, 160, (uint16_t *)stars); + + for (int i = 0; i < 16; i++) + cmap[i] = rainbow(); +} + +void loop(void) +{ + // create a palette with the defined colors and push it. + spr.createPalette(cmap, 16); + spr.pushSprite(tft.width() / 2 - WIDTH / 2, tft.height() / 2 - HEIGHT / 2); + + // update the colors + for (int i = 0; i < 15; i++) { + cmap[i] = cmap[i + 1]; + } + if (incr == 2) { + (void)rainbow(); // skip alternate steps + } + cmap[15] = rainbow(); + rloop += incr; + if (rloop > 0xc0) { + incr = incr == 2 ? 1 : 2; + Serial.printf("incr %d, rloop %d\r\n", incr, rloop); + rloop = 0; + + } + delay(DELAY); + +} + +// ######################################################################### +// Return a 16 bit rainbow colour +// ######################################################################### +unsigned int rainbow() +{ + switch (state) { + case 0: + green ++; + if (green == 64) { + green = 63; + state = 1; + } + break; + case 1: + red--; + if (red == 255) { + red = 0; + state = 2; + } + break; + case 2: + blue ++; + if (blue == 32) { + blue = 31; + state = 3; + } + break; + case 3: + green --; + if (green == 255) { + green = 0; + state = 4; + } + break; + case 4: + red ++; + if (red == 32) { + red = 31; + state = 5; + } + break; + case 5: + blue --; + if (blue == 255) { + blue = 0; + state = 0; + } + break; + } + return red << 11 | green << 5 | blue; +} + diff --git a/examples/Sprite/Sprite_image_4bit/sample_images.h b/examples/Sprite/Sprite_image_4bit/sample_images.h new file mode 100644 index 0000000..3c56f1d --- /dev/null +++ b/examples/Sprite/Sprite_image_4bit/sample_images.h @@ -0,0 +1,3 @@ +#include // Include the graphics library (this includes the sprite functions) + +extern const uint8_t stars[12800] PROGMEM ; \ No newline at end of file diff --git a/examples/Sprite/Sprite_image_4bit/starImage.cpp b/examples/Sprite/Sprite_image_4bit/starImage.cpp new file mode 100644 index 0000000..531cdeb --- /dev/null +++ b/examples/Sprite/Sprite_image_4bit/starImage.cpp @@ -0,0 +1,1444 @@ +#include "sample_images.h" + + +// width is 160, height is 160 +const uint8_t stars[12800] PROGMEM = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x11, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x12, 0x11, 0x10, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x13, 0x31, 0x11, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x23, 0x32, 0x11, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x12, 0x33, 0x33, 0x11, 0x10, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x11, 0x13, 0x33, 0x33, 0x21, 0x10, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x11, 0x23, 0x34, 0x33, 0x31, 0x11, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x11, 0x33, 0x34, 0x43, 0x33, 0x11, 0x10, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x12, 0x33, 0x44, 0x44, 0x33, 0x21, 0x10, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x11, 0x23, 0x33, 0x44, 0x44, 0x33, 0x31, 0x11, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x11, 0x33, 0x34, 0x44, 0x44, 0x43, 0x32, 0x11, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x12, 0x33, 0x44, 0x46, 0x54, 0x43, 0x33, 0x21, +0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x11, 0x13, 0x33, 0x44, 0x56, 0x64, 0x44, 0x33, 0x31, +0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x11, 0x23, 0x34, 0x44, 0x66, 0x66, 0x44, 0x43, 0x32, +0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x12, 0x33, 0x34, 0x45, 0x66, 0x66, 0x54, 0x43, 0x33, +0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x11, 0x13, 0x33, 0x44, 0x46, 0x66, 0x66, 0x64, 0x44, 0x33, +0x21, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x11, 0x23, 0x34, 0x44, 0x66, 0x67, 0x76, 0x65, 0x44, 0x33, +0x32, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x11, 0x33, 0x34, 0x45, 0x66, 0x78, 0x86, 0x66, 0x44, 0x43, +0x33, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x12, 0x33, 0x44, 0x46, 0x66, 0x88, 0x87, 0x66, 0x64, 0x44, +0x33, 0x21, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x11, 0x23, 0x33, 0x44, 0x56, 0x67, 0x88, 0x88, 0x76, 0x65, 0x44, +0x33, 0x31, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x11, 0x33, 0x34, 0x44, 0x66, 0x68, 0x88, 0x88, 0x86, 0x66, 0x44, +0x43, 0x32, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x12, 0x33, 0x44, 0x46, 0x66, 0x78, 0x89, 0x98, 0x87, 0x66, 0x54, +0x43, 0x33, 0x21, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, +0x13, 0x33, 0x44, 0x56, 0x67, 0x88, 0x89, 0x98, 0x88, 0x66, 0x65, +0x44, 0x33, 0x31, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, +0x23, 0x34, 0x44, 0x66, 0x68, 0x88, 0x99, 0x99, 0x88, 0x86, 0x66, +0x44, 0x43, 0x32, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x12, +0x33, 0x34, 0x45, 0x66, 0x78, 0x89, 0x99, 0x99, 0x88, 0x87, 0x66, +0x54, 0x43, 0x33, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x13, +0x33, 0x44, 0x46, 0x66, 0x88, 0x89, 0x9a, 0x99, 0x98, 0x88, 0x66, +0x64, 0x44, 0x33, 0x21, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x11, 0x11, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x23, +0x34, 0x44, 0x66, 0x67, 0x88, 0x99, 0x9b, 0xa9, 0x99, 0x88, 0x76, +0x65, 0x44, 0x43, 0x32, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, +0x11, 0x11, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x33, +0x34, 0x45, 0x66, 0x78, 0x88, 0x99, 0xab, 0xba, 0x99, 0x88, 0x86, +0x66, 0x54, 0x43, 0x33, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x11, 0x11, +0x11, 0x11, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x11, 0x33, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, +0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x12, 0x33, +0x44, 0x46, 0x66, 0x88, 0x89, 0x99, 0xbb, 0xbb, 0x99, 0x98, 0x88, +0x66, 0x64, 0x44, 0x33, 0x21, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x12, 0x22, +0x23, 0x32, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x11, 0x23, 0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x11, +0x11, 0x11, 0x11, 0x11, 0x10, 0x00, 0x00, 0x00, 0x11, 0x23, 0x33, +0x44, 0x56, 0x67, 0x88, 0x99, 0x9a, 0xbb, 0xbb, 0xa9, 0x99, 0x88, +0x76, 0x65, 0x44, 0x33, 0x31, 0x11, 0x00, 0x00, 0x00, 0x11, 0x11, +0x11, 0x11, 0x11, 0x11, 0x11, 0x12, 0x22, 0x22, 0x33, 0x33, 0x33, +0x33, 0x31, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x11, 0x13, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x22, +0x22, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x33, 0x34, +0x44, 0x66, 0x68, 0x88, 0x99, 0xab, 0xbb, 0xbb, 0xb9, 0x99, 0x88, +0x86, 0x66, 0x44, 0x43, 0x33, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, +0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, +0x33, 0x31, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x12, 0x33, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, +0x33, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x11, 0x12, 0x33, 0x44, +0x46, 0x66, 0x78, 0x89, 0x99, 0xbb, 0xbc, 0xbb, 0xba, 0x99, 0x98, +0x87, 0x66, 0x54, 0x44, 0x33, 0x21, 0x11, 0x11, 0x11, 0x22, 0x22, +0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, +0x33, 0x21, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x12, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x43, 0x33, +0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x32, 0x22, 0x23, 0x33, 0x44, +0x56, 0x67, 0x88, 0x89, 0x9a, 0xbb, 0xbc, 0xcb, 0xbb, 0xa9, 0x98, +0x88, 0x66, 0x65, 0x44, 0x33, 0x32, 0x22, 0x33, 0x33, 0x33, 0x33, +0x33, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x44, 0x44, 0x44, 0x43, +0x33, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x11, 0x33, 0x34, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, +0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x34, 0x44, +0x66, 0x68, 0x88, 0x99, 0x9b, 0xbb, 0xcc, 0xcc, 0xbb, 0xb9, 0x99, +0x88, 0x86, 0x66, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, +0x34, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x55, 0x44, 0x43, +0x33, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x11, 0x23, 0x34, 0x44, 0x66, 0x66, 0x65, 0x55, 0x54, 0x44, +0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x43, 0x33, 0x33, 0x44, 0x45, +0x66, 0x78, 0x89, 0x99, 0xab, 0xbb, 0xcc, 0xcc, 0xbb, 0xba, 0x99, +0x98, 0x87, 0x66, 0x54, 0x43, 0x33, 0x33, 0x34, 0x44, 0x44, 0x44, +0x44, 0x44, 0x44, 0x44, 0x45, 0x55, 0x56, 0x66, 0x65, 0x44, 0x43, +0x32, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x11, 0x23, 0x33, 0x44, 0x56, 0x66, 0x66, 0x66, 0x66, 0x66, +0x55, 0x55, 0x54, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x56, +0x66, 0x88, 0x89, 0x9a, 0xbb, 0xbc, 0xcc, 0xcc, 0xcb, 0xbb, 0x99, +0x98, 0x88, 0x66, 0x64, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, +0x45, 0x55, 0x56, 0x66, 0x66, 0x66, 0x66, 0x66, 0x65, 0x44, 0x33, +0x31, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x11, 0x13, 0x33, 0x44, 0x46, 0x66, 0x66, 0x66, 0x66, 0x66, +0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, +0x68, 0x88, 0x99, 0x9b, 0xbb, 0xcc, 0xcc, 0xcc, 0xcb, 0xbb, 0xb9, +0x99, 0x88, 0x76, 0x66, 0x44, 0x44, 0x44, 0x45, 0x55, 0x56, 0x66, +0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x67, 0x66, 0x64, 0x44, 0x33, +0x21, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x12, 0x33, 0x44, 0x46, 0x66, 0x88, 0x88, 0x77, 0x77, +0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x66, +0x78, 0x88, 0x99, 0xab, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xba, +0x99, 0x88, 0x87, 0x66, 0x55, 0x56, 0x66, 0x66, 0x66, 0x66, 0x66, +0x66, 0x66, 0x66, 0x77, 0x77, 0x88, 0x87, 0x66, 0x54, 0x43, 0x33, +0x21, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x11, 0x33, 0x34, 0x45, 0x66, 0x78, 0x88, 0x88, 0x88, +0x88, 0x87, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, +0x88, 0x89, 0x99, 0xbb, 0xbc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcb, 0xbb, +0x99, 0x98, 0x88, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, +0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x86, 0x66, 0x54, 0x43, 0x33, +0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x11, 0x33, 0x34, 0x44, 0x66, 0x68, 0x88, 0x88, 0x88, +0x88, 0x88, 0x88, 0x88, 0x88, 0x87, 0x77, 0x76, 0x66, 0x66, 0x67, +0x88, 0x99, 0x9a, 0xbb, 0xbc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcb, 0xbb, +0xa9, 0x99, 0x88, 0x76, 0x66, 0x66, 0x67, 0x77, 0x78, 0x88, 0x88, +0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x86, 0x66, 0x44, 0x43, 0x32, +0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x11, 0x23, 0x34, 0x44, 0x56, 0x67, 0x88, 0x99, 0x99, +0x99, 0x98, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x87, 0x78, +0x88, 0x99, 0xab, 0xbb, 0xcc, 0xcc, 0xcd, 0xdc, 0xcc, 0xcc, 0xbb, +0xba, 0x99, 0x88, 0x87, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, +0x88, 0x89, 0x99, 0x99, 0x99, 0x88, 0x76, 0x65, 0x44, 0x33, 0x31, +0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x11, 0x13, 0x33, 0x44, 0x56, 0x67, 0x88, 0x89, 0x99, +0x99, 0x99, 0x99, 0x99, 0x99, 0x98, 0x88, 0x88, 0x88, 0x88, 0x88, +0x89, 0x99, 0xbb, 0xbc, 0xcc, 0xcc, 0xcd, 0xdc, 0xcc, 0xcc, 0xbb, +0xbb, 0x99, 0x98, 0x88, 0x88, 0x88, 0x88, 0x88, 0x89, 0x99, 0x99, +0x99, 0x99, 0x99, 0x99, 0x98, 0x88, 0x66, 0x64, 0x44, 0x33, 0x31, +0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x12, 0x33, 0x44, 0x46, 0x66, 0x88, 0x89, 0x99, +0xa9, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x98, 0x88, +0x99, 0x9a, 0xbb, 0xbc, 0xcc, 0xcc, 0xdd, 0xdd, 0xcc, 0xcc, 0xcb, +0xbb, 0xa9, 0x98, 0x88, 0x89, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, +0x99, 0x99, 0xaa, 0x99, 0x98, 0x87, 0x66, 0x64, 0x44, 0x33, 0x21, +0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x12, 0x33, 0x34, 0x45, 0x66, 0x78, 0x89, 0x99, +0xab, 0xbb, 0xba, 0xaa, 0xa9, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, +0x99, 0x9b, 0xbb, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, +0xbb, 0xb9, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, +0xab, 0xbb, 0xba, 0x99, 0x98, 0x87, 0x66, 0x54, 0x43, 0x33, 0x11, +0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x11, 0x33, 0x34, 0x44, 0x66, 0x68, 0x88, 0x99, +0xab, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xba, 0xaa, 0xa9, 0x99, 0x99, +0x99, 0xab, 0xbb, 0xcc, 0xcc, 0xcd, 0xdd, 0xdd, 0xdc, 0xcc, 0xcc, +0xbb, 0xba, 0x99, 0x99, 0x99, 0x9a, 0xaa, 0xab, 0xbb, 0xbb, 0xbb, +0xbb, 0xbb, 0xb9, 0x99, 0x88, 0x86, 0x66, 0x44, 0x43, 0x32, 0x11, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x11, 0x23, 0x34, 0x44, 0x66, 0x68, 0x88, 0x99, +0x9b, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, +0xaa, 0xbb, 0xbc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, +0xcb, 0xbb, 0xaa, 0xab, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, +0xbb, 0xbb, 0xb9, 0x99, 0x88, 0x76, 0x65, 0x44, 0x43, 0x32, 0x11, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x11, 0x13, 0x33, 0x44, 0x56, 0x67, 0x88, 0x99, +0x9a, 0xbb, 0xbc, 0xcc, 0xcb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, +0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xdd, 0xde, 0xed, 0xdd, 0xcc, 0xcc, +0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbc, 0xcc, +0xcb, 0xbb, 0xa9, 0x98, 0x88, 0x76, 0x65, 0x44, 0x33, 0x31, 0x11, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x11, 0x13, 0x33, 0x44, 0x46, 0x66, 0x88, 0x89, +0x9a, 0xbb, 0xbc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcb, 0xbb, 0xbb, +0xbb, 0xbb, 0xcc, 0xcc, 0xcd, 0xdd, 0xee, 0xee, 0xdd, 0xdc, 0xcc, +0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xbc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, +0xcb, 0xbb, 0x99, 0x98, 0x88, 0x66, 0x64, 0x44, 0x33, 0x21, 0x10, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x12, 0x33, 0x44, 0x46, 0x66, 0x78, 0x89, +0x99, 0xbb, 0xbc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, +0xcc, 0xbc, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xdd, 0xdc, 0xcc, +0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, +0xbb, 0xba, 0x99, 0x98, 0x87, 0x66, 0x54, 0x43, 0x33, 0x21, 0x10, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x11, 0x33, 0x34, 0x45, 0x66, 0x78, 0x88, +0x99, 0xab, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, +0xcc, 0xcc, 0xcc, 0xcc, 0xdd, 0xde, 0xee, 0xee, 0xed, 0xdd, 0xcc, +0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, +0xbb, 0xba, 0x99, 0x88, 0x86, 0x66, 0x54, 0x43, 0x33, 0x11, 0x10, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x11, 0x23, 0x34, 0x44, 0x66, 0x68, 0x88, +0x99, 0x9b, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, +0xcc, 0xcc, 0xcc, 0xcd, 0xdd, 0xde, 0xee, 0xee, 0xed, 0xdd, 0xdc, +0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, +0xbb, 0xb9, 0x99, 0x88, 0x86, 0x66, 0x44, 0x43, 0x32, 0x11, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x11, 0x23, 0x33, 0x44, 0x56, 0x67, 0x88, +0x99, 0x9a, 0xbb, 0xbc, 0xcc, 0xcc, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, +0xcc, 0xcc, 0xcc, 0xcd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdc, +0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xdd, 0xcc, 0xcc, 0xcb, +0xbb, 0xa9, 0x99, 0x88, 0x76, 0x65, 0x44, 0x33, 0x31, 0x11, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x11, 0x13, 0x33, 0x44, 0x56, 0x66, 0x88, +0x89, 0x9a, 0xbb, 0xbc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, +0xdc, 0xcc, 0xcc, 0xdd, 0xde, 0xee, 0xee, 0xee, 0xee, 0xed, 0xdd, +0xcc, 0xcc, 0xcd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcb, +0xbb, 0xa9, 0x98, 0x88, 0x66, 0x64, 0x44, 0x33, 0x31, 0x10, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x12, 0x33, 0x44, 0x46, 0x66, 0x88, +0x89, 0x99, 0xbb, 0xbc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, +0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xee, 0xee, 0xee, 0xee, 0xed, 0xdd, +0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdc, 0xcc, 0xcc, 0xcb, +0xbb, 0x99, 0x98, 0x87, 0x66, 0x64, 0x44, 0x33, 0x21, 0x10, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x33, 0x34, 0x45, 0x66, 0x78, +0x89, 0x99, 0xab, 0xbb, 0xcc, 0xcc, 0xcd, 0xdd, 0xdd, 0xdd, 0xdd, +0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xdd, +0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdc, 0xcc, 0xcc, 0xbb, +0xba, 0x99, 0x98, 0x87, 0x66, 0x54, 0x43, 0x33, 0x11, 0x10, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x33, 0x34, 0x44, 0x66, 0x68, +0x88, 0x99, 0xab, 0xbb, 0xcc, 0xcc, 0xcd, 0xdd, 0xde, 0xee, 0xee, +0xee, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xef, 0xfe, 0xee, 0xee, 0xdd, +0xdd, 0xde, 0xee, 0xee, 0xee, 0xed, 0xdd, 0xdc, 0xcc, 0xcc, 0xbb, +0xb9, 0x99, 0x88, 0x86, 0x66, 0x44, 0x43, 0x32, 0x11, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x23, 0x34, 0x44, 0x66, 0x67, +0x88, 0x99, 0x9b, 0xbb, 0xcc, 0xcc, 0xcc, 0xdd, 0xde, 0xee, 0xee, +0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xfe, 0xee, 0xee, 0xee, +0xee, 0xee, 0xee, 0xee, 0xee, 0xed, 0xdd, 0xcc, 0xcc, 0xcc, 0xbb, +0xb9, 0x99, 0x88, 0x76, 0x65, 0x44, 0x33, 0x32, 0x11, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x13, 0x33, 0x44, 0x56, 0x67, +0x88, 0x99, 0x9a, 0xbb, 0xbc, 0xcc, 0xcc, 0xdd, 0xde, 0xee, 0xee, +0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xee, 0xee, 0xee, +0xee, 0xee, 0xee, 0xee, 0xee, 0xed, 0xdd, 0xcc, 0xcc, 0xcb, 0xbb, +0xa9, 0x98, 0x88, 0x76, 0x65, 0x44, 0x33, 0x31, 0x11, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x12, 0x33, 0x44, 0x46, 0x66, +0x88, 0x89, 0x99, 0xbb, 0xbc, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, +0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xee, 0xee, 0xee, +0xee, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xcb, 0xbb, +0x99, 0x98, 0x88, 0x66, 0x64, 0x44, 0x33, 0x21, 0x10, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x12, 0x33, 0x44, 0x45, 0x66, +0x78, 0x89, 0x99, 0xbb, 0xbb, 0xcc, 0xcc, 0xcd, 0xdd, 0xee, 0xee, +0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xff, 0xff, 0xfe, 0xee, 0xee, +0xee, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdc, 0xcc, 0xcc, 0xbb, 0xba, +0x99, 0x98, 0x87, 0x66, 0x54, 0x43, 0x33, 0x21, 0x10, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x33, 0x34, 0x45, 0x66, +0x78, 0x88, 0x99, 0xab, 0xbb, 0xcc, 0xcc, 0xcd, 0xdd, 0xee, 0xee, +0xee, 0xff, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, +0xee, 0xff, 0xee, 0xee, 0xee, 0xdd, 0xdc, 0xcc, 0xcc, 0xbb, 0xba, +0x99, 0x88, 0x86, 0x66, 0x44, 0x43, 0x33, 0x11, 0x10, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x23, 0x34, 0x44, 0x66, +0x68, 0x88, 0x99, 0x9b, 0xbb, 0xcc, 0xcc, 0xcd, 0xdd, 0xde, 0xee, +0xee, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xfe, 0xee, 0xee, 0xed, 0xdd, 0xcc, 0xcc, 0xcc, 0xbb, 0xb9, +0x99, 0x88, 0x86, 0x66, 0x44, 0x43, 0x32, 0x11, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x23, 0x33, 0x44, 0x56, +0x67, 0x88, 0x99, 0x9a, 0xbb, 0xbc, 0xcc, 0xcc, 0xdd, 0xde, 0xee, +0xee, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xfe, 0xee, 0xee, 0xed, 0xdd, 0xcc, 0xcc, 0xcb, 0xbb, 0xa9, +0x99, 0x88, 0x76, 0x65, 0x44, 0x33, 0x32, 0x11, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x33, 0x34, 0x44, 0x56, +0x66, 0x88, 0x89, 0x9a, 0xbb, 0xbc, 0xcc, 0xcc, 0xdd, 0xde, 0xee, +0xee, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xfe, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xcb, 0xbb, 0xa9, +0x98, 0x88, 0x66, 0x65, 0x44, 0x43, 0x33, 0x11, 0x10, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x13, 0x33, 0x44, 0x44, 0x66, +0x67, 0x88, 0x89, 0x99, 0xbb, 0xbc, 0xcc, 0xcc, 0xcd, 0xdd, 0xee, +0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xee, 0xee, 0xee, 0xdd, 0xdc, 0xcc, 0xcc, 0xcb, 0xbb, 0x99, +0x98, 0x88, 0x76, 0x66, 0x44, 0x44, 0x33, 0x31, 0x11, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x33, 0x34, 0x44, 0x46, 0x66, +0x78, 0x88, 0x99, 0x9a, 0xbb, 0xbb, 0xcc, 0xcc, 0xcd, 0xdd, 0xee, +0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xee, 0xee, 0xee, 0xdd, 0xdc, 0xcc, 0xcc, 0xbb, 0xbb, 0xa9, +0x99, 0x88, 0x87, 0x66, 0x65, 0x44, 0x43, 0x33, 0x11, 0x10, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x11, 0x13, 0x33, 0x44, 0x44, 0x66, 0x67, +0x88, 0x89, 0x99, 0xab, 0xbb, 0xbc, 0xcc, 0xcc, 0xcd, 0xdd, 0xde, +0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xee, 0xee, 0xed, 0xdd, 0xdc, 0xcc, 0xcc, 0xcb, 0xbb, 0xba, +0x99, 0x98, 0x88, 0x76, 0x66, 0x54, 0x44, 0x33, 0x31, 0x11, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x11, 0x33, 0x34, 0x44, 0x56, 0x66, 0x78, +0x88, 0x99, 0x9a, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, +0xee, 0xee, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xfe, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, +0xa9, 0x99, 0x88, 0x87, 0x66, 0x65, 0x44, 0x43, 0x33, 0x11, 0x10, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x11, 0x13, 0x33, 0x44, 0x45, 0x66, 0x67, 0x88, +0x89, 0x99, 0xab, 0xbb, 0xbc, 0xcc, 0xcc, 0xcd, 0xdd, 0xde, 0xee, +0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xee, 0xee, 0xee, 0xed, 0xdd, 0xdc, 0xcc, 0xcc, 0xcb, 0xbb, +0xba, 0x99, 0x98, 0x88, 0x76, 0x66, 0x54, 0x44, 0x33, 0x32, 0x11, +0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x11, 0x33, 0x34, 0x44, 0x56, 0x66, 0x78, 0x88, +0x99, 0x9a, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, +0xee, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xfe, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xbb, +0xbb, 0xa9, 0x99, 0x88, 0x87, 0x66, 0x65, 0x44, 0x43, 0x33, 0x21, +0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x11, 0x13, 0x33, 0x44, 0x45, 0x66, 0x67, 0x88, 0x89, +0x99, 0xab, 0xbb, 0xbc, 0xcc, 0xcc, 0xcd, 0xdd, 0xde, 0xee, 0xee, +0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xee, 0xee, 0xee, 0xed, 0xdd, 0xdc, 0xcc, 0xcc, 0xcc, +0xbb, 0xba, 0x99, 0x98, 0x88, 0x76, 0x66, 0x54, 0x44, 0x33, 0x32, +0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x11, 0x33, 0x34, 0x44, 0x56, 0x66, 0x78, 0x88, 0x99, +0x9a, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xee, +0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xfe, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, +0xcb, 0xbb, 0xa9, 0x99, 0x88, 0x87, 0x66, 0x65, 0x44, 0x43, 0x33, +0x21, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x11, 0x13, 0x33, 0x44, 0x45, 0x66, 0x67, 0x88, 0x89, 0x99, +0xab, 0xbb, 0xcc, 0xcc, 0xcc, 0xcd, 0xdd, 0xde, 0xee, 0xee, 0xee, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xed, 0xdd, 0xdc, 0xcc, 0xcc, +0xcc, 0xbb, 0xba, 0x99, 0x98, 0x88, 0x76, 0x66, 0x54, 0x44, 0x33, +0x32, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x11, 0x12, 0x33, 0x34, 0x44, 0x56, 0x66, 0x78, 0x88, 0x99, 0x9a, +0xbb, 0xbc, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, +0xcc, 0xcb, 0xbb, 0xa9, 0x99, 0x88, 0x87, 0x66, 0x65, 0x44, 0x43, +0x33, 0x21, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x11, 0x23, 0x33, 0x44, 0x45, 0x66, 0x67, 0x88, 0x89, 0x99, 0xab, +0xbb, 0xcc, 0xcc, 0xcc, 0xcd, 0xdd, 0xde, 0xee, 0xee, 0xee, 0xee, +0xee, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xfe, 0xee, 0xee, 0xee, 0xee, 0xee, 0xed, 0xdd, 0xdc, 0xcc, +0xcc, 0xcc, 0xbb, 0xba, 0x99, 0x98, 0x88, 0x76, 0x66, 0x54, 0x44, +0x33, 0x32, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, +0x12, 0x33, 0x34, 0x44, 0x56, 0x66, 0x78, 0x88, 0x99, 0x9a, 0xbb, +0xbc, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, +0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xcc, +0xcc, 0xcc, 0xcb, 0xbb, 0xa9, 0x99, 0x88, 0x87, 0x66, 0x65, 0x44, +0x43, 0x33, 0x21, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, +0x23, 0x33, 0x44, 0x45, 0x66, 0x67, 0x88, 0x89, 0x99, 0xab, 0xbb, +0xcc, 0xcc, 0xcc, 0xcd, 0xdd, 0xdd, 0xde, 0xee, 0xee, 0xee, 0xee, +0xee, 0xee, 0xee, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, +0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xed, 0xdd, 0xdd, 0xdc, +0xcc, 0xcc, 0xcc, 0xbb, 0xba, 0x99, 0x98, 0x88, 0x86, 0x66, 0x54, +0x44, 0x33, 0x32, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x12, +0x33, 0x34, 0x44, 0x56, 0x66, 0x78, 0x88, 0x99, 0x9a, 0xbb, 0xbc, +0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, +0xee, 0xee, 0xee, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, +0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, +0xcc, 0xcc, 0xcc, 0xcb, 0xbb, 0xa9, 0x99, 0x88, 0x88, 0x66, 0x65, +0x44, 0x43, 0x33, 0x21, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x23, +0x33, 0x44, 0x45, 0x66, 0x67, 0x88, 0x89, 0x99, 0xab, 0xbb, 0xcc, +0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xee, +0xee, 0xee, 0xee, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, +0xee, 0xee, 0xee, 0xee, 0xed, 0xdd, 0xdd, 0xdd, 0xdd, 0xdc, 0xcc, +0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0x99, 0x98, 0x88, 0x86, 0x66, +0x54, 0x44, 0x33, 0x32, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x12, 0x33, +0x34, 0x44, 0x56, 0x66, 0x78, 0x88, 0x99, 0x9a, 0xbb, 0xbc, 0xcc, +0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, +0xee, 0xee, 0xee, 0xef, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, +0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, +0xcc, 0xcc, 0xcc, 0xcc, 0xcb, 0xbb, 0xb9, 0x99, 0x88, 0x88, 0x66, +0x65, 0x44, 0x43, 0x33, 0x21, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x23, 0x33, +0x44, 0x45, 0x66, 0x67, 0x88, 0x89, 0x99, 0xab, 0xbb, 0xbb, 0xcc, +0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xdd, 0xdd, 0xdd, +0xdd, 0xee, 0xee, 0xef, 0xff, 0xff, 0xee, 0xee, 0xff, 0xff, 0xfe, +0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xdc, 0xcc, 0xcc, 0xcc, 0xcc, +0xcc, 0xcc, 0xcc, 0xcb, 0xbb, 0xbb, 0xbb, 0x99, 0x99, 0x88, 0x86, +0x66, 0x54, 0x44, 0x33, 0x32, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x12, 0x33, 0x34, +0x44, 0x56, 0x66, 0x88, 0x88, 0x99, 0x9a, 0xbb, 0xbb, 0xbb, 0xbb, +0xbc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, +0xdd, 0xee, 0xee, 0xef, 0xff, 0xee, 0xee, 0xee, 0xee, 0xff, 0xfe, +0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, +0xcc, 0xcc, 0xcb, 0xbb, 0xbb, 0xbb, 0xbb, 0xa9, 0x99, 0x98, 0x88, +0x66, 0x66, 0x44, 0x43, 0x33, 0x21, 0x11, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x23, 0x33, 0x44, +0x45, 0x66, 0x68, 0x88, 0x89, 0x99, 0x99, 0x9a, 0xab, 0xbb, 0xbb, +0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, +0xdd, 0xee, 0xee, 0xef, 0xfe, 0xee, 0xee, 0xee, 0xee, 0xef, 0xfe, +0xee, 0xee, 0xdd, 0xdc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, +0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xba, 0xa9, 0x99, 0x99, 0x99, 0x88, +0x86, 0x66, 0x64, 0x44, 0x33, 0x32, 0x11, 0x10, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x12, 0x33, 0x34, 0x44, +0x56, 0x66, 0x88, 0x88, 0x88, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xbb, +0xbb, 0xbb, 0xbb, 0xbc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, +0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, +0xee, 0xee, 0xdd, 0xdc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcb, +0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0x99, 0x99, 0x99, 0x99, 0x88, 0x88, +0x88, 0x66, 0x66, 0x44, 0x43, 0x33, 0x21, 0x11, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x23, 0x33, 0x44, 0x45, +0x66, 0x67, 0x88, 0x88, 0x88, 0x88, 0x89, 0x99, 0x99, 0x99, 0x9a, +0xab, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, +0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, +0xee, 0xee, 0xdd, 0xdc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, +0xbb, 0xbb, 0xba, 0xa9, 0x99, 0x99, 0x99, 0x98, 0x88, 0x88, 0x88, +0x87, 0x76, 0x66, 0x64, 0x44, 0x33, 0x32, 0x11, 0x10, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x12, 0x33, 0x34, 0x44, 0x56, +0x66, 0x66, 0x66, 0x77, 0x88, 0x88, 0x88, 0x88, 0x99, 0x99, 0x99, +0x99, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbc, 0xcc, 0xcc, 0xcc, 0xcd, +0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, +0xee, 0xee, 0xdd, 0xdc, 0xcc, 0xcc, 0xcc, 0xcb, 0xbb, 0xbb, 0xbb, +0xbb, 0xaa, 0x99, 0x99, 0x99, 0x99, 0x88, 0x88, 0x88, 0x88, 0x77, +0x66, 0x66, 0x66, 0x65, 0x44, 0x43, 0x33, 0x21, 0x11, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x23, 0x33, 0x44, 0x44, 0x45, +0x56, 0x66, 0x66, 0x66, 0x67, 0x78, 0x88, 0x88, 0x88, 0x89, 0x99, +0x99, 0x99, 0x9a, 0xab, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcd, +0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xed, 0xde, 0xee, 0xee, 0xee, +0xee, 0xee, 0xdd, 0xdc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xba, +0xa9, 0x99, 0x99, 0x99, 0x98, 0x88, 0x88, 0x88, 0x87, 0x76, 0x66, +0x66, 0x66, 0x65, 0x44, 0x44, 0x44, 0x33, 0x33, 0x11, 0x10, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x11, 0x12, 0x33, 0x33, 0x44, 0x44, 0x44, +0x44, 0x55, 0x66, 0x66, 0x66, 0x66, 0x77, 0x88, 0x88, 0x88, 0x88, +0x99, 0x99, 0x99, 0x99, 0xaa, 0xbb, 0xbb, 0xbb, 0xbc, 0xcc, 0xcd, +0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xee, 0xee, 0xee, +0xee, 0xed, 0xdd, 0xdc, 0xcc, 0xcb, 0xbb, 0xbb, 0xbb, 0xaa, 0x99, +0x99, 0x99, 0x99, 0x88, 0x88, 0x88, 0x88, 0x77, 0x66, 0x66, 0x66, +0x66, 0x54, 0x44, 0x44, 0x44, 0x43, 0x33, 0x33, 0x31, 0x11, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x01, 0x11, 0x23, 0x33, 0x33, 0x33, 0x34, 0x44, +0x44, 0x44, 0x45, 0x56, 0x66, 0x66, 0x66, 0x67, 0x78, 0x88, 0x88, +0x88, 0x89, 0x99, 0x99, 0x99, 0x9a, 0xab, 0xbb, 0xbc, 0xcc, 0xcc, +0xdd, 0xde, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, +0xee, 0xed, 0xdd, 0xdc, 0xcc, 0xcb, 0xbb, 0xba, 0xa9, 0x99, 0x99, +0x99, 0x98, 0x88, 0x88, 0x88, 0x87, 0x76, 0x66, 0x66, 0x66, 0x65, +0x44, 0x44, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x32, 0x11, 0x10, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x12, 0x33, 0x33, 0x33, 0x33, +0x44, 0x44, 0x44, 0x44, 0x55, 0x66, 0x66, 0x66, 0x66, 0x77, 0x88, +0x88, 0x88, 0x88, 0x99, 0x99, 0x99, 0x9a, 0xbb, 0xbc, 0xcc, 0xcc, +0xdd, 0xde, 0xee, 0xee, 0xed, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, +0xee, 0xed, 0xdd, 0xcc, 0xcc, 0xcb, 0xbb, 0xa9, 0x99, 0x99, 0x99, +0x88, 0x88, 0x88, 0x88, 0x77, 0x66, 0x66, 0x66, 0x66, 0x54, 0x44, +0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x21, 0x11, 0x11, 0x11, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x11, 0x23, 0x33, 0x33, +0x33, 0x34, 0x44, 0x44, 0x44, 0x45, 0x56, 0x66, 0x66, 0x66, 0x67, +0x78, 0x88, 0x88, 0x88, 0x89, 0x99, 0x99, 0xbb, 0xbc, 0xcc, 0xcc, +0xdd, 0xde, 0xee, 0xed, 0xdd, 0xdd, 0xdc, 0xcd, 0xdd, 0xdd, 0xde, +0xee, 0xed, 0xdd, 0xcc, 0xcc, 0xcb, 0xbb, 0x99, 0x99, 0x98, 0x88, +0x88, 0x88, 0x87, 0x76, 0x66, 0x66, 0x66, 0x65, 0x44, 0x44, 0x44, +0x44, 0x43, 0x33, 0x33, 0x33, 0x32, 0x11, 0x11, 0x11, 0x11, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x11, 0x11, 0x12, 0x33, +0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x55, 0x66, 0x66, 0x66, +0x66, 0x77, 0x88, 0x88, 0x88, 0x89, 0x99, 0xbb, 0xbc, 0xcc, 0xcc, +0xdd, 0xde, 0xed, 0xdd, 0xdd, 0xdc, 0xcc, 0xcc, 0xcd, 0xdd, 0xdd, +0xde, 0xed, 0xdd, 0xcc, 0xcc, 0xcb, 0xbb, 0x99, 0x98, 0x88, 0x88, +0x88, 0x77, 0x66, 0x66, 0x66, 0x66, 0x54, 0x44, 0x44, 0x44, 0x44, +0x33, 0x33, 0x33, 0x33, 0x21, 0x11, 0x11, 0x11, 0x10, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x11, +0x23, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x44, 0x45, 0x56, 0x66, +0x66, 0x66, 0x67, 0x78, 0x88, 0x89, 0x99, 0xbb, 0xbc, 0xcc, 0xcc, +0xdd, 0xde, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, +0xdd, 0xed, 0xdd, 0xcc, 0xcc, 0xcb, 0xbb, 0x99, 0x98, 0x88, 0x87, +0x76, 0x66, 0x66, 0x66, 0x65, 0x44, 0x44, 0x44, 0x44, 0x43, 0x33, +0x33, 0x33, 0x32, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x11, +0x11, 0x12, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x55, +0x66, 0x66, 0x66, 0x66, 0x78, 0x89, 0x99, 0xbb, 0xbc, 0xcc, 0xcc, +0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xdd, +0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcb, 0xbb, 0x99, 0x98, 0x87, 0x66, +0x66, 0x66, 0x66, 0x54, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, +0x33, 0x21, 0x11, 0x11, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, +0x11, 0x11, 0x11, 0x23, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x44, +0x44, 0x56, 0x66, 0x66, 0x68, 0x88, 0x99, 0xab, 0xbc, 0xcc, 0xcc, +0xdd, 0xdd, 0xdd, 0xdc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, +0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcb, 0xba, 0x99, 0x88, 0x86, 0x66, +0x66, 0x65, 0x44, 0x44, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x32, +0x11, 0x11, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x11, 0x11, 0x11, 0x12, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, +0x44, 0x44, 0x55, 0x66, 0x68, 0x88, 0x99, 0xab, 0xbc, 0xcc, 0xcc, +0xdd, 0xdd, 0xdc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, +0xcd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcb, 0xba, 0x99, 0x88, 0x86, 0x66, +0x54, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x21, 0x11, +0x11, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x11, 0x11, 0x11, 0x11, 0x23, 0x33, 0x33, 0x33, 0x34, +0x44, 0x44, 0x44, 0x56, 0x68, 0x88, 0x99, 0xab, 0xbb, 0xcc, 0xcc, +0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xcb, 0xbc, 0xcc, 0xcc, 0xcc, +0xcc, 0xdd, 0xdd, 0xcc, 0xcc, 0xcb, 0xba, 0x99, 0x88, 0x86, 0x66, +0x44, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x32, 0x11, 0x11, 0x11, +0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x11, 0x11, 0x11, 0x12, 0x33, 0x33, 0x33, +0x33, 0x44, 0x44, 0x56, 0x68, 0x88, 0x99, 0xab, 0xbb, 0xcc, 0xcc, +0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, +0xcc, 0xcc, 0xdd, 0xcc, 0xcc, 0xbb, 0xba, 0x99, 0x88, 0x86, 0x65, +0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x21, 0x11, 0x11, 0x11, 0x10, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x11, 0x23, 0x33, +0x33, 0x33, 0x44, 0x56, 0x67, 0x88, 0x99, 0xab, 0xbb, 0xcc, 0xcc, +0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, +0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xba, 0x99, 0x88, 0x76, 0x65, +0x44, 0x33, 0x33, 0x33, 0x32, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x11, 0x11, 0x12, +0x33, 0x33, 0x44, 0x56, 0x67, 0x88, 0x99, 0xab, 0xbb, 0xcc, 0xcc, +0xcc, 0xcc, 0xcc, 0xcc, 0xcb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, +0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xba, 0x99, 0x88, 0x76, 0x65, +0x44, 0x33, 0x33, 0x21, 0x11, 0x11, 0x11, 0x10, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, +0x12, 0x33, 0x44, 0x56, 0x67, 0x88, 0x99, 0x9b, 0xbb, 0xcc, 0xcc, +0xcc, 0xcc, 0xcc, 0xcb, 0xbb, 0xbb, 0xa9, 0x9a, 0xbb, 0xbb, 0xbc, +0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xb9, 0x99, 0x88, 0x76, 0x65, +0x44, 0x33, 0x21, 0x11, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, +0x12, 0x33, 0x44, 0x46, 0x67, 0x88, 0x99, 0x9b, 0xbb, 0xcc, 0xcc, +0xcc, 0xcc, 0xcb, 0xbb, 0xbb, 0xba, 0x99, 0x99, 0xab, 0xbb, 0xbb, +0xbc, 0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xb9, 0x99, 0x88, 0x76, 0x65, +0x44, 0x33, 0x21, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x12, 0x33, 0x44, 0x46, 0x67, 0x88, 0x99, 0x9b, 0xbb, 0xcc, 0xcc, +0xcc, 0xcc, 0xbb, 0xbb, 0xba, 0x99, 0x99, 0x99, 0x99, 0xab, 0xbb, +0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xb9, 0x99, 0x88, 0x76, 0x64, +0x44, 0x33, 0x21, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x12, 0x33, 0x44, 0x46, 0x66, 0x88, 0x99, 0x9b, 0xbb, 0xcc, 0xcc, +0xcc, 0xbb, 0xbb, 0xbb, 0xa9, 0x99, 0x99, 0x99, 0x99, 0x9a, 0xbb, +0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xbb, 0xb9, 0x99, 0x88, 0x66, 0x64, +0x44, 0x33, 0x21, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x11, 0x33, 0x44, 0x46, 0x66, 0x88, 0x89, 0x9a, 0xbb, 0xcc, 0xcc, +0xcb, 0xbb, 0xbb, 0xa9, 0x99, 0x99, 0x88, 0x88, 0x99, 0x99, 0x9a, +0xbb, 0xbb, 0xbc, 0xcc, 0xcc, 0xbb, 0xb9, 0x99, 0x88, 0x66, 0x64, +0x44, 0x33, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x11, 0x33, 0x34, 0x46, 0x66, 0x88, 0x89, 0x9a, 0xbb, 0xcc, 0xcb, +0xbb, 0xbb, 0xba, 0x99, 0x99, 0x98, 0x88, 0x88, 0x88, 0x99, 0x99, +0xab, 0xbb, 0xbb, 0xbc, 0xcc, 0xbb, 0xa9, 0x98, 0x88, 0x66, 0x64, +0x43, 0x33, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x11, 0x33, 0x34, 0x45, 0x66, 0x88, 0x89, 0x9a, 0xbb, 0xcc, 0xbb, +0xbb, 0xba, 0x99, 0x99, 0x98, 0x88, 0x88, 0x88, 0x88, 0x89, 0x99, +0x99, 0xab, 0xbb, 0xbb, 0xcc, 0xbb, 0xa9, 0x98, 0x88, 0x66, 0x64, +0x43, 0x33, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x11, 0x33, 0x34, 0x45, 0x66, 0x88, 0x89, 0x9a, 0xbb, 0xbb, 0xbb, +0xbb, 0xa9, 0x99, 0x98, 0x88, 0x88, 0x76, 0x67, 0x88, 0x88, 0x89, +0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xa9, 0x98, 0x88, 0x66, 0x54, +0x43, 0x33, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x11, 0x33, 0x34, 0x45, 0x66, 0x78, 0x89, 0x9a, 0xbb, 0xbb, 0xbb, +0xa9, 0x99, 0x99, 0x88, 0x88, 0x86, 0x66, 0x66, 0x68, 0x88, 0x88, +0x99, 0x99, 0x9a, 0xbb, 0xbb, 0xbb, 0xa9, 0x98, 0x87, 0x66, 0x54, +0x43, 0x33, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x11, 0x23, 0x34, 0x45, 0x66, 0x78, 0x89, 0x9a, 0xbb, 0xbb, 0xba, +0x99, 0x99, 0x88, 0x88, 0x87, 0x66, 0x66, 0x66, 0x66, 0x78, 0x88, +0x88, 0x99, 0x99, 0x9a, 0xbb, 0xbb, 0xa9, 0x98, 0x87, 0x66, 0x54, +0x43, 0x32, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x11, 0x23, 0x34, 0x45, 0x66, 0x78, 0x89, 0x99, 0xbb, 0xba, 0x99, +0x99, 0x98, 0x88, 0x88, 0x66, 0x66, 0x65, 0x56, 0x66, 0x66, 0x78, +0x88, 0x89, 0x99, 0x99, 0xab, 0xbb, 0xa9, 0x98, 0x87, 0x66, 0x54, +0x43, 0x32, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x11, 0x23, 0x34, 0x44, 0x66, 0x78, 0x89, 0x99, 0xbb, 0xa9, 0x99, +0x98, 0x88, 0x88, 0x76, 0x66, 0x66, 0x44, 0x44, 0x56, 0x66, 0x67, +0x88, 0x88, 0x89, 0x99, 0x99, 0xab, 0x99, 0x98, 0x87, 0x66, 0x54, +0x43, 0x32, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x11, 0x23, 0x34, 0x44, 0x66, 0x78, 0x89, 0x99, 0xa9, 0x99, 0x99, +0x88, 0x88, 0x86, 0x66, 0x66, 0x54, 0x44, 0x44, 0x45, 0x66, 0x66, +0x67, 0x88, 0x88, 0x99, 0x99, 0x9a, 0x99, 0x98, 0x87, 0x66, 0x44, +0x43, 0x32, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x11, 0x23, 0x34, 0x44, 0x66, 0x68, 0x89, 0x99, 0x99, 0x99, 0x88, +0x88, 0x87, 0x66, 0x66, 0x64, 0x44, 0x44, 0x44, 0x44, 0x45, 0x66, +0x66, 0x78, 0x88, 0x88, 0x99, 0x99, 0x99, 0x98, 0x87, 0x66, 0x44, +0x43, 0x32, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x11, 0x13, 0x34, 0x44, 0x66, 0x68, 0x88, 0x99, 0x99, 0x98, 0x88, +0x87, 0x66, 0x66, 0x65, 0x44, 0x44, 0x33, 0x33, 0x44, 0x44, 0x56, +0x66, 0x66, 0x78, 0x88, 0x88, 0x99, 0x99, 0x98, 0x86, 0x66, 0x44, +0x43, 0x31, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x11, 0x13, 0x33, 0x44, 0x66, 0x68, 0x88, 0x99, 0x98, 0x88, 0x88, +0x76, 0x66, 0x65, 0x44, 0x44, 0x43, 0x33, 0x33, 0x34, 0x44, 0x44, +0x56, 0x66, 0x67, 0x88, 0x88, 0x89, 0x99, 0x88, 0x86, 0x66, 0x44, +0x43, 0x31, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x13, 0x33, 0x44, 0x66, 0x68, 0x88, 0x99, 0x88, 0x88, 0x76, +0x66, 0x66, 0x54, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x34, 0x44, +0x45, 0x66, 0x66, 0x67, 0x88, 0x88, 0x89, 0x88, 0x86, 0x66, 0x44, +0x33, 0x31, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x13, 0x33, 0x44, 0x56, 0x68, 0x88, 0x88, 0x88, 0x87, 0x66, +0x66, 0x54, 0x44, 0x44, 0x33, 0x33, 0x21, 0x12, 0x33, 0x33, 0x44, +0x44, 0x45, 0x66, 0x66, 0x78, 0x88, 0x88, 0x88, 0x86, 0x65, 0x44, +0x33, 0x31, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x13, 0x33, 0x44, 0x56, 0x67, 0x88, 0x88, 0x87, 0x66, 0x66, +0x65, 0x44, 0x44, 0x33, 0x33, 0x32, 0x11, 0x11, 0x23, 0x33, 0x33, +0x44, 0x44, 0x46, 0x66, 0x66, 0x78, 0x88, 0x88, 0x86, 0x65, 0x44, +0x33, 0x31, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x12, 0x33, 0x44, 0x56, 0x67, 0x88, 0x88, 0x76, 0x66, 0x65, +0x44, 0x44, 0x43, 0x33, 0x32, 0x11, 0x11, 0x11, 0x11, 0x23, 0x33, +0x34, 0x44, 0x44, 0x56, 0x66, 0x66, 0x88, 0x88, 0x76, 0x65, 0x44, +0x33, 0x31, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x12, 0x33, 0x44, 0x56, 0x67, 0x88, 0x76, 0x66, 0x66, 0x54, +0x44, 0x43, 0x33, 0x33, 0x21, 0x11, 0x10, 0x01, 0x11, 0x12, 0x33, +0x33, 0x34, 0x44, 0x44, 0x66, 0x66, 0x67, 0x88, 0x76, 0x65, 0x44, +0x33, 0x21, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x12, 0x33, 0x44, 0x56, 0x67, 0x87, 0x66, 0x66, 0x54, 0x44, +0x44, 0x33, 0x33, 0x21, 0x11, 0x11, 0x00, 0x00, 0x11, 0x11, 0x12, +0x33, 0x33, 0x34, 0x44, 0x45, 0x66, 0x66, 0x67, 0x76, 0x65, 0x44, +0x33, 0x21, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x12, 0x33, 0x44, 0x46, 0x66, 0x66, 0x66, 0x65, 0x44, 0x44, +0x33, 0x33, 0x32, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, +0x13, 0x33, 0x33, 0x44, 0x44, 0x45, 0x66, 0x66, 0x66, 0x65, 0x44, +0x33, 0x21, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x12, 0x33, 0x44, 0x46, 0x66, 0x66, 0x65, 0x44, 0x44, 0x43, +0x33, 0x32, 0x11, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, +0x11, 0x23, 0x33, 0x33, 0x44, 0x44, 0x56, 0x66, 0x66, 0x64, 0x44, +0x33, 0x21, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x11, 0x33, 0x44, 0x46, 0x66, 0x66, 0x44, 0x44, 0x43, 0x33, +0x33, 0x21, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x11, 0x11, 0x33, 0x33, 0x34, 0x44, 0x44, 0x56, 0x66, 0x64, 0x44, +0x33, 0x21, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x11, 0x33, 0x34, 0x46, 0x66, 0x54, 0x44, 0x44, 0x33, 0x33, +0x21, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x11, 0x12, 0x33, 0x33, 0x34, 0x44, 0x45, 0x66, 0x64, 0x44, +0x33, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x11, 0x33, 0x34, 0x46, 0x64, 0x44, 0x44, 0x33, 0x33, 0x32, +0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x11, 0x11, 0x13, 0x33, 0x33, 0x44, 0x44, 0x45, 0x64, 0x43, +0x33, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x11, 0x33, 0x34, 0x44, 0x44, 0x44, 0x43, 0x33, 0x32, 0x11, +0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x11, 0x11, 0x23, 0x33, 0x33, 0x44, 0x44, 0x44, 0x43, +0x33, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x11, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x21, 0x11, +0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x11, 0x11, 0x23, 0x33, 0x34, 0x44, 0x44, 0x43, +0x33, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x11, 0x23, 0x34, 0x44, 0x43, 0x33, 0x33, 0x21, 0x11, 0x10, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x11, 0x12, 0x33, 0x33, 0x34, 0x44, 0x43, +0x33, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x11, 0x23, 0x34, 0x44, 0x33, 0x33, 0x31, 0x11, 0x11, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x12, 0x33, 0x33, 0x44, 0x43, +0x32, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x11, 0x23, 0x34, 0x33, 0x33, 0x32, 0x11, 0x11, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x23, 0x33, 0x33, 0x43, +0x32, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x11, 0x23, 0x33, 0x33, 0x33, 0x11, 0x11, 0x10, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x11, 0x23, 0x33, 0x33, +0x32, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x11, 0x23, 0x33, 0x33, 0x21, 0x11, 0x10, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x12, 0x33, 0x33, +0x32, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x11, 0x13, 0x33, 0x31, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x12, 0x33, +0x32, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x11, 0x13, 0x32, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x13, +0x31, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x11, 0x12, 0x11, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x11, +0x21, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x11, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, +0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00}; \ No newline at end of file From 5ffd4feac43c600ab00333b8f67e10bdd6add995 Mon Sep 17 00:00:00 2001 From: kamorris Date: Mon, 25 May 2020 17:09:56 -0700 Subject: [PATCH 2/5] prepare for merging. --- Extensions/Sprite.cpp | 46 ++++++++++++++++--- Extensions/Sprite.h | 2 +- .../Sprite_image_4bit/Sprite_image_4bit.ino | 12 +---- 3 files changed, 42 insertions(+), 18 deletions(-) diff --git a/Extensions/Sprite.cpp b/Extensions/Sprite.cpp index f3d7e3e..c82024c 100644 --- a/Extensions/Sprite.cpp +++ b/Extensions/Sprite.cpp @@ -868,12 +868,46 @@ void TFT_eSprite::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint16_ } else if (_bpp == 4) { - // not supported. The image is unlikely to have the correct colors for the color map. - // we could implement a way to push a 4-bit image using the color map? - #ifdef TFT_eSPI_DEBUG - Serial.println("pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *data) not implemented"); - #endif - return; + // the image is assumed to be 4 bit, where each byte corresponds to two pixels. + // much faster when aligned to a byte boundary, because the alternative is slower, requiring + // tedious bit operations. + + const uint8_t *dataBuf = (uint8_t *)data; + int sWidth = (_iwidth >> 1); + + if ((xs & 0x01) == 0 && (xo & 0x01) == 0 && (ws & 0x01) == 0) + { + if ((ws & 0x01) == 0) // use memcpy for better perf. + { + xs = (xs >> 1) + ys * sWidth; + ws = (ws >> 1); + xo = (xo >> 1) + yo * (w>>1); + while (hs--) + { + memcpy(_img4 + xs, dataBuf + xo, ws); + xo += (w >> 1); + xs += sWidth; + } + } + } + else // not optimized + { + for (int32_t yp = yo; yp < yo + hs; yp++) + { + x = xs; + for (int32_t xp = xo; xp < xo + ws; xp++) + { + uint32_t color; + if ((xp & 0x01) == 0) + color = (dataBuf[((xp+yp*w)>>1)] & 0xF0) >> 4; // even index = bits 7 .. 4 + else + color = dataBuf[((xp-1+yp*w)>>1)] & 0x0F; // odd index = bits 3 .. 0. + drawPixel(x, ys, color); + x++; + } + ys++; + } + } } else // 1bpp diff --git a/Extensions/Sprite.h b/Extensions/Sprite.h index 74ba6b2..b1307b6 100644 --- a/Extensions/Sprite.h +++ b/Extensions/Sprite.h @@ -114,7 +114,7 @@ class TFT_eSprite : public TFT_eSPI { // 16bpp = colour, 8bpp = byte, 4bpp = colour index, 1bpp = 1 or 0 uint16_t readPixelValue(int32_t x, int32_t y); - // Write an image (colour bitmap) to the sprite. Not implemented for _bpp == 4. + // Write an image (colour bitmap) to the sprite. void pushImage(int32_t x0, int32_t y0, int32_t w, int32_t h, uint16_t *data); void pushImage(int32_t x0, int32_t y0, int32_t w, int32_t h, const uint16_t *data); diff --git a/examples/Sprite/Sprite_image_4bit/Sprite_image_4bit.ino b/examples/Sprite/Sprite_image_4bit/Sprite_image_4bit.ino index e004df4..bdf5390 100644 --- a/examples/Sprite/Sprite_image_4bit/Sprite_image_4bit.ino +++ b/examples/Sprite/Sprite_image_4bit/Sprite_image_4bit.ino @@ -39,10 +39,6 @@ TFT_eSPI tft = TFT_eSPI(); // Declare object "tft" TFT_eSprite spr = TFT_eSprite(&tft); // Declare Sprite object "spr" with pointer to "tft" object -const int freq = 5000; -int screenBrightnessChannel = 0; -int resolution = 8; - byte red = 31; // Red is the top 5 bits of a 16 bit colour value byte green = 0;// Green is the middle 6 bits byte blue = 0; // Blue is the bottom 5 bits @@ -55,11 +51,6 @@ uint16_t cmap[16]; void setup() { - pinMode(21, OUTPUT); - ledcSetup(screenBrightnessChannel, freq, resolution); - ledcAttachPin(21, screenBrightnessChannel); - ledcWrite(screenBrightnessChannel, 127); - Serial.begin(9600); Serial.println(); @@ -94,13 +85,12 @@ void loop(void) cmap[i] = cmap[i + 1]; } if (incr == 2) { - (void)rainbow(); // skip alternate steps + (void)rainbow(); // skip alternate steps to go faster } cmap[15] = rainbow(); rloop += incr; if (rloop > 0xc0) { incr = incr == 2 ? 1 : 2; - Serial.printf("incr %d, rloop %d\r\n", incr, rloop); rloop = 0; } From 3a2157805e04e353d80a92c77275632ababc2961 Mon Sep 17 00:00:00 2001 From: Kate Morris Date: Mon, 25 May 2020 17:12:24 -0700 Subject: [PATCH 3/5] Rename readme.txt to readme.md --- Tools/Images/{README.txt => README.md} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Tools/Images/{README.txt => README.md} (96%) diff --git a/Tools/Images/README.txt b/Tools/Images/README.md similarity index 96% rename from Tools/Images/README.txt rename to Tools/Images/README.md index 8ba629c..eef2149 100644 --- a/Tools/Images/README.txt +++ b/Tools/Images/README.md @@ -22,4 +22,4 @@ Create the bmp file in Gimp from any image by: I don't have photoshop so cannot help you with that. The first array produced is the palette for the image. -The second is the image itself. \ No newline at end of file +The second is the image itself. From 110128b0550a799aab3638a1702c512e54a7f5f6 Mon Sep 17 00:00:00 2001 From: Kate Morris Date: Mon, 25 May 2020 17:29:39 -0700 Subject: [PATCH 4/5] updated with formatting and links --- Tools/Images/README.md | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/Tools/Images/README.md b/Tools/Images/README.md index eef2149..02405a9 100644 --- a/Tools/Images/README.md +++ b/Tools/Images/README.md @@ -1,25 +1,26 @@ +## bmp2array4bit -bmp2array4bit.py creates C (or C++) code that contains two arrays for adding images to four-bit sprites. See Sprite_image_4bit for an example. +bmp2array4bit.py reads a bmp file, and creates C (or C++) code that contains two arrays for adding images to four-bit sprites. See [Sprite_image_4bit](../../examples/Sprite/Sprite_image_4bit) for an example. -It is loosely based on Spark Fun's bmp2array script. +It is loosely based on Spark Fun's bmp2array script, https://github.com/sparkfun/BMPtoArray/blob/master/bmp2array.py. The bmp file format is documented in https://en.wikipedia.org/wiki/BMP_file_format. -You'll need python 3.6 (the original use Python 2.7) +You'll need python 3.6 (the original uses Python 2.7) -usage: python bmp2array4bit.py [-v] star.bmp [-o myfile.c] +`usage: python bmp2array4bit.py [-v] star.bmp [-o myfile.c]` -Create the bmp file in Gimp from any image by: +Create the bmp file in Gimp (www.gimp.org) from any image as follows: -. Remove the alpha channel (if it has one) +* Remove the alpha channel (if it has one) Layer -> Transparency -> Remove Alpha Channel -. Set the mode to indexed. +* Set the mode to indexed. Image -> Mode -> Indexed... -. Select Generate optimum palette with 16 colors (max) -. Export the file with a .bmp extension. Do NOT select options: - . Run-Length Encoded - . Compatibility Options: "Do not write color space information" - . There are no Advanced Options available with these settings +* Select Generate optimum palette with 16 colors (max) +* Export the file with a .bmp extension. Do **NOT** select options: + * Run-Length Encoded + * Compatibility Options: "Do not write color space information" + * There are no Advanced Options available with these settings -I don't have photoshop so cannot help you with that. +(There are other tools that will produce bmp files, and these should work provided you don't use run-length encoding or other advanced features). The first array produced is the palette for the image. The second is the image itself. From a7be0c0ebe1687df099840a9137fe493c9fd604c Mon Sep 17 00:00:00 2001 From: kamorris Date: Thu, 18 Jun 2020 20:29:10 -0700 Subject: [PATCH 5/5] delete extraneous ino file --- .../Sprite/Sprite_image_4bit/Sprite_image.ino | 162 ------------------ 1 file changed, 162 deletions(-) delete mode 100644 examples/Sprite/Sprite_image_4bit/Sprite_image.ino diff --git a/examples/Sprite/Sprite_image_4bit/Sprite_image.ino b/examples/Sprite/Sprite_image_4bit/Sprite_image.ino deleted file mode 100644 index e004df4..0000000 --- a/examples/Sprite/Sprite_image_4bit/Sprite_image.ino +++ /dev/null @@ -1,162 +0,0 @@ -/* - - Sketch to show how a Sprite can use a four-bit image with - a palette to change the appearance of an image while rendering - it only once. - - Example for library: - https://github.com/Bodmer/TFT_eSPI - - A Sprite is notionally an invisible graphics screen that is - kept in the processors RAM. Graphics can be drawn into the - Sprite just as it can be drawn directly to the screen. Once - the Sprite is completed it can be plotted onto the screen in - any position. If there is sufficient RAM then the Sprite can - be the same size as the screen and used as a frame buffer. - - A 16 bit Sprite occupies (2 * width * height) bytes in RAM. - - On a ESP8266 Sprite sizes up to 126 x 160 can be accomodated, - this size requires 40kBytes of RAM for a 16 bit color depth. - - When 8 bit color depth sprites are created they occupy - (width * height) bytes in RAM, so larger sprites can be - created, or the RAM required is halved. - -*/ - - -// Set delay after plotting the sprite -#define DELAY 30 - -// Width and height of sprite -#define WIDTH 164 -#define HEIGHT 164 - -#include "sample_images.h" - -TFT_eSPI tft = TFT_eSPI(); // Declare object "tft" - -TFT_eSprite spr = TFT_eSprite(&tft); // Declare Sprite object "spr" with pointer to "tft" object - -const int freq = 5000; -int screenBrightnessChannel = 0; -int resolution = 8; - -byte red = 31; // Red is the top 5 bits of a 16 bit colour value -byte green = 0;// Green is the middle 6 bits -byte blue = 0; // Blue is the bottom 5 bits -byte state = 0; - -int rloop = 0; -int incr = 1; - -uint16_t cmap[16]; - -void setup() -{ - pinMode(21, OUTPUT); - ledcSetup(screenBrightnessChannel, freq, resolution); - ledcAttachPin(21, screenBrightnessChannel); - ledcWrite(screenBrightnessChannel, 127); - - Serial.begin(9600); - Serial.println(); - - delay(50); - - // Initialise the TFT registers - tft.init(); - - spr.setColorDepth(4); - - // Create a sprite of defined size - spr.createSprite(WIDTH, HEIGHT); - - // Clear the TFT screen to black - tft.fillScreen(TFT_BLACK); - - // push the image - only need to do this once. - spr.pushImage(2, 2, 160, 160, (uint16_t *)stars); - - for (int i = 0; i < 16; i++) - cmap[i] = rainbow(); -} - -void loop(void) -{ - // create a palette with the defined colors and push it. - spr.createPalette(cmap, 16); - spr.pushSprite(tft.width() / 2 - WIDTH / 2, tft.height() / 2 - HEIGHT / 2); - - // update the colors - for (int i = 0; i < 15; i++) { - cmap[i] = cmap[i + 1]; - } - if (incr == 2) { - (void)rainbow(); // skip alternate steps - } - cmap[15] = rainbow(); - rloop += incr; - if (rloop > 0xc0) { - incr = incr == 2 ? 1 : 2; - Serial.printf("incr %d, rloop %d\r\n", incr, rloop); - rloop = 0; - - } - delay(DELAY); - -} - -// ######################################################################### -// Return a 16 bit rainbow colour -// ######################################################################### -unsigned int rainbow() -{ - switch (state) { - case 0: - green ++; - if (green == 64) { - green = 63; - state = 1; - } - break; - case 1: - red--; - if (red == 255) { - red = 0; - state = 2; - } - break; - case 2: - blue ++; - if (blue == 32) { - blue = 31; - state = 3; - } - break; - case 3: - green --; - if (green == 255) { - green = 0; - state = 4; - } - break; - case 4: - red ++; - if (red == 32) { - red = 31; - state = 5; - } - break; - case 5: - blue --; - if (blue == 255) { - blue = 0; - state = 0; - } - break; - } - return red << 11 | green << 5 | blue; -} -