diff --git a/graphics/Makefile b/graphics/Makefile index c8c5f5d3..6eea5666 100644 --- a/graphics/Makefile +++ b/graphics/Makefile @@ -2,8 +2,8 @@ all: graphics.py graphics_mk4.py graphics_q1.py -SOURCES = $(filter-out mk4_%, $(wildcard *.txt) $(wildcard *.png)) -MK4_SOURCES = $(wildcard mk4_*.txt) $(wildcard mk4_*.png) +SOURCES = $(filter-out mono/mk4_%, $(wildcard mono/*.txt) $(wildcard mono/*.png)) +MK4_SOURCES = $(wildcard mono/mk4_*.txt) $(wildcard mono/mk4_*.png) Q1_SOURCES = colour/*.??? graphics.py: Makefile $(SOURCES) build.py diff --git a/graphics/build.py b/graphics/build.py index c3a69071..d32b5471 100755 --- a/graphics/build.py +++ b/graphics/build.py @@ -33,7 +33,7 @@ def read_text(fname): def read_img(fn): img = Image.open(fn) w,h = img.size - assert 1 <= w < 128, w + assert 1 <= w < 128, (w, fn) img = img.convert('L') # fix colour issues: assume minority colour is white (1) @@ -88,7 +88,7 @@ class Graphics: assert img.mode == '1' #img.show() - varname = fn.split('.')[0].replace('-', '_') + varname = fn.split('/')[-1].split('.')[0].replace('-', '_') w,h = img.size raw = img.tobytes() diff --git a/graphics/colour/testfont1.png b/graphics/colour/testfont1.png deleted file mode 100644 index f0e61513..00000000 Binary files a/graphics/colour/testfont1.png and /dev/null differ diff --git a/graphics/compress.py b/graphics/compress.py index c53f68b7..062cb325 100755 --- a/graphics/compress.py +++ b/graphics/compress.py @@ -2,15 +2,19 @@ # # (c) Copyright 2023 by Coinkite Inc. This file is covered by license found in COPYING-CC. # -# Read in PNG (or even JPG)... output heavily compressed BGR232 data. +# Read in PNG (or even JPG) and output heavily compressed RGB565 data suited to Q1's LCD panel. +# +# - also renders status bar icons/indicators # import os, sys, pdb -from PIL import Image, ImageOps +from PIL import Image, ImageOps, ImageFont, ImageDraw import zlib from struct import pack WBITS = -10 +FONT_PATH = './fonts/' + def read_img(fn): img = Image.open(fn) w,h = img.size @@ -69,6 +73,79 @@ def into_bgr565(img): rv.extend(swizzle(r,g,b)) return rv + +def make_icons(): + # return list of (varname, img) for each image + + # - see shared/lcd_display.py TOP_MARGIN for this + ICON_SIZE = 14 + MAX_HEIGHT = 14 + + # PROBLEM: this file costs money... altho free version looks okay too + try: + awesome = ImageFont.truetype(FONT_PATH + 'Font Awesome 6 Sharp-Regular-400.otf', ICON_SIZE) + except: + raise + + sm_font = ImageFont.truetype(FONT_PATH + 'iosevka-heavy.ttf') + + targets = [ + ( 'shift', True, 'SHIFT', {} ), + ( 'symbol', True, 'SYMB', {} ), + ( 'caps', True, 'CAPS', {} ), + ( 'bip39', True, 'PASSPHRASE', {} ), + ( 'tmp', True, 'EPHEMERAL', dict(col_0='black') ), + ( 'bat_0', False, '\uf244', dict(col='red', y=0)), + ( 'bat_1', False, '\uf243', dict(col='yellow', y=0)), + ( 'bat_2', False, '\uf242', dict(col='#0f0', y=0)), + ( 'bat_3', False, '\uf240', dict(col='green', y=0)), + ( 'plugged', False, '\uf1e6', dict(col='green')), + #( 'locked', False, '\uf023', dict(col='green')), + #( 'unlocked', False, '\uf3c1', dict(col='green')), # why tho? + ] + + samples = Image.new('RGB', (320*2, ICON_SIZE+1)) + s_x = 5 + + for basename, is_text, body, opts in targets: + for state in [0, 1]: + col = opts.get('col', '#fff' if state else '#444') + vn = f'{basename}_{state}' + + if 'col' in opts: + if state == 0: continue + vn = basename + + if state == 0 and 'col_0' in opts: + col = opts['col_0'] + + img = Image.new('RGB', (100,100)) + d = ImageDraw.Draw(img) + f = sm_font if is_text else awesome + + + x, y = (0, 1 if is_text else 0) + y += opts.get('y', 0) + x += opts.get('x', 0) + + tl = (x, y) + _,_, w,h = d.textbbox(tl, body, font=f) + + if h > MAX_HEIGHT: + h = MAX_HEIGHT + print(f'{vn} too tall, cropped') + + d.text(tl, body, font=f, fill=col) + rv = img.crop( (0, 0, w,h) ) + + samples.paste(rv, (s_x, 0)) + s_x += w + 10 + + yield (vn, rv) + + samples = samples.crop( (0,0, s_x, samples.height )) + samples.save('icon-samples.png') + def doit(outfname, fnames): @@ -89,25 +166,22 @@ class Graphics: """) + fnames += make_icons() + for fn in fnames: - img = read_img(fn) + if isinstance(fn, str): + img = read_img(fn) + varname = fn.split('/')[-1].split('.')[0].replace('-', '_') + else: + varname, img = fn assert img.mode == 'RGB' - varname = fn.split('/')[-1].split('.')[0].replace('-', '_') - w,h = img.size raw = into_bgr565(img) comp = compress(raw) #crunch(raw) - if 0: - # is compression better? - is_comp = len(comp)+8 < len(raw) - else: - # disable; taking too much runtime memory - is_comp = False - print(" %s = (%d, %d,\n %r\n )\n" % (varname, w, h, comp), file=fp) print("done: '%s' (%d x %d) => %d raw => %d compressed bytes" % ( @@ -117,3 +191,5 @@ class Graphics: if 1: doit(sys.argv[1], sys.argv[2:]) + +# EOF diff --git a/graphics/fonts/.gitignore b/graphics/fonts/.gitignore new file mode 100644 index 00000000..14eb9095 --- /dev/null +++ b/graphics/fonts/.gitignore @@ -0,0 +1,3 @@ +Font Awesome 6*.otf +iosevka-*.ttf +!iosevka-heavy.ttf diff --git a/graphics/fonts/README.md b/graphics/fonts/README.md new file mode 100644 index 00000000..6856e94c --- /dev/null +++ b/graphics/fonts/README.md @@ -0,0 +1,11 @@ + +# Fonts for Q1 + +This directory may contain font files from Font Awesome. + +We cannot re-distribute the OTF files themselves due to their license. + +However, once we render and build the compressed graphics file that we need, +the font is not required anymore. + +Iosveka is open and can be re-distributed here. diff --git a/graphics/fonts/font-awesome-license.txt b/graphics/fonts/font-awesome-license.txt new file mode 100644 index 00000000..ca51a9eb --- /dev/null +++ b/graphics/fonts/font-awesome-license.txt @@ -0,0 +1,18 @@ +Font Awesome Pro License +------------------------ + +Font Awesome Pro is commercial software that requires a paid license. Full +Font Awesome Pro license: https://fontawesome.com/license. + +# Commercial License +The Font Awesome Pro commercial license allows you to pay for FA Pro once, own +it, and use it just about everywhere you'd like. + +# Attribution +Attribution is not required by the Font Awesome Pro commercial license. + +# Brand Icons +All brand icons are trademarks of their respective owners. The use of these +trademarks does not indicate endorsement of the trademark holder by Font +Awesome, nor vice versa. **Please do not use brand logos for any purpose except +to represent the company, product, or service to which they refer.** diff --git a/graphics/fonts/iosevka-heavy.ttf b/graphics/fonts/iosevka-heavy.ttf new file mode 100644 index 00000000..21ed00b3 Binary files /dev/null and b/graphics/fonts/iosevka-heavy.ttf differ diff --git a/graphics/graphics_q1.py b/graphics/graphics_q1.py index b2ee3bb5..eddbf975 100644 --- a/graphics/graphics_q1.py +++ b/graphics/graphics_q1.py @@ -5,28 +5,68 @@ class Graphics: # (w,h, data) - bars75 = (320, 240, - b'\xed\xd21N\xc30\x18\x86a\xb6f\x8b7#$\xe8U\x12\xa7k/\x80\xea\x8a\x8dk\xb4\xd9{\x02\x9aSq\x81\x8ef\xca\x150H\xc0\\\xc2\x84\x1e\xbd\xfa\xbc\xfd\x9e\x9e<\xe7?m;w\xf3fNs\xff\xbd\xeb\xfa\xb9J\xb5n~|\xde\xaf\xf2:\xc7]\xdc\xc7]\x9b\xe3\xd2\xb6\xb1k\x878\xb6}\x9bb\x1f\xd3/\xaaW\x1f\xb7u\xc3\xba[\xdd\xbd>\x94\xfb\xb7\\\xa6\x92\xcb\xd7\xbb\xa4S9\x94\xa1\x1c/\xa9\x8c\xf5\xad\xbb\xba\xf1s\xb5\xcbP\xffzy\x9an\xce\xb7Ss\x0e9L\xcd\x14\x96v\n\x87f\x08cHM\n\xc7f\x0cK\xcb\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xfc\xf1\xc7\x1f\x7f\xff\xdc\xdf;' - ) - - green = (320, 240, - b'\xed\xc21\r\x00\x00\x00\x02\xa0\xd3\xfe\x8d\x8cf\n?\x06M\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x93\x01' - ) - - ios = (161, 184, - b'\xed\x92\xbb\xad\xeaL\x17\x86\x1d\x10\x108\x98\x80\xc0\xa9K\xa0\x05J w\xe4\x12\xe8\xc0\xb2\x08\x08\x08\x10\xa2\x03J\xa0\x057a\xc9\x94\xe0\x12\xf8\xf5\xe8\xd5\xd2\x8c\xf1\x05\xd8\xec}\xbe}\xfe\x83G\\fy]\x9f\xf5^o\xd7\xcfy\xf3D\xbd\xe7c{\xc5\xf6SU\\y\xbd\xb9\xf2\xff\x97`\xe1\\\xe9\xca\xc2\xfd]\x04]Y7\x85\x93\xadpuc\xf9C\xbf\xfd&\xa9\xf6\x9b\x9f\'\x18\xe7\xd7[\xdd<\xd2\xe0\xe2|\xbd-\xce\xde\x06\x95\xac\x8d\xa2\xac\x15\x1d\xb3\xe1\x83\xaf\xd9x\x0e\xc7\xeb\xedp\xb4\xd8Y\x9aT\xd7[R\xcd\xd2(\xe2\x1f\xf5\xd5G\xdd\x98\xdd\xc7\x9e.\xd7\xdb\xe9r\xdf5\x19\x89\x94\x8d\x0c\xbe\xc2X\xdd\x9f#H\x8f\xcc\xfd3\x04g)\\8u\x03\x1bf\xd2\x9d\xd9\x88.\x1c~\xdb\xa5\xac0|DP\xc4\xe0g\xb6\xd0"\x1b\xea\x13A\x94\xf8\xb3\x04\x99b\xb7\xfe\nA\x94\x0b\x9f)\x82\x10\xa0\x02\x1fH\xe0\x81\x0e\xf9\xe5\xdb\xa6#6\xa9\xe6+\xba\x10\xe91\x82\x85#\xd7\xbd\xb6\xa0\x95\xb5\x85\x93My\xfc\xe1\xfeS\x04\xb5{*\xff\x0cA\xa6\xddo\xd0\x874+\x82\xe8nq\xde\xad\xbd\x1f\xd6\xd3\x05\xa6\xd7\xdbv9E\x90l\xc6\xca\xfb\x89\xeb~c\xb6\xed\x92n8\xae\x0c\xf3}?A\xed^\xb6W\x082\x87\x11\xa4on\xdd\xbds\xb7\xf70\xe3t5Hm\x9bN\xf9\xf8\xb6}\x0e\xd7\x8d\xa2\xa4\xf2\n\x0c\'A\x856\x89Er\xe4\x1bj\xf5^\xbf\xef\x11\xa4\x1ft\xf0*A4E\xbf\xc4\xc7\xf98A\xe2P\x87\xd7\x0c3h\xb2\xd3\x05U*\x9f\xd4\xc7Q\x95\xf1\x89\xc9\xb6[\xf7\'A\xd1>\x9fn\xf3\x15\x19\xf1\xfe)\x82\x85\xa3\xc2|\xf5:\xc1!?4\x85\x0f\xbel\x05[\xe1D\xf6t\x99\xa5\xf2\x9b\xa5PO*\xdd\xef5S7b=VC\xa4\xefcy\xfc\x1b\xd5=\x1c\xf7\x1bz:\x1cM\xd3\xb0\xb7\x03\xeb\xef \xe8\xf7\xf6S\x04\x99\xe5t\x11\x1b\x9b\xce&6\x92"\xa3\xf9\x98\xfa1ASt\xe8\'5tktc\x9f%\xf8\ni4}\xbaC0\xa9\x1eW\x81\xcc\xe2\x1cE0q\xa5lp\xf4\x1f\xd9\xc85KC\r\x8a\x8b+\x0b\xc7/u\xc6{a\x0e\xaa\xdc\xf7B\x1eu\xf8\x9a\x12\xb4[v\xfc\xba\xdf}/\x8f\xd4\xca\xc4\xaf\x12\x9c\xaf`\xc2\xc9Z\xd4.\xdd\xa1\x15\xd4\xc0\xe1W1\xfePo\xac\x17\xf6n\x9d\xf8^\xd4a\x9c\xbfN\x10\xedr\xa4\xeb\xc7~!AfS\xdc\xcfi0\x8a\n\xc7}q.\x9c\xfc \x90T\xccL\xce\xa4\x12\xad\xc2\x9d.Y[7\xf3\x15V\xe9r\xac\x17\xf4|\xdf\x0bj@\xe3\xaf\x13\xd4l\xd7\x1b\xfb\x9d\xf6\xa3FXw\xbb$Ns=&\xf8\x8e\r\xb2\x10\xfd\xae|\xf3\x15\xbd\xb2+\xb3I\xc1R\xc7Wj\xd4\xcdW\xe83\x17Z\xf8\xfb\x08F\x11:F\xcd\xb2\xf9\xdb\xd7\xf2\xc1\xdf\xa2_\x89E\xbb6\xd7\xcf\x12\xfc\t\xdb|\xd5\xd5\xa0\xe9\xef\xf5|\xfbM\xa8\xa4\xe7c\x0b\x17\xea\xfe\xef#\xf8}\xb6\xc2-\xce\xb3\xf4{\xf2\xfd\x9b\x04\xbf\xd3\xf69\xef\x9f\x8f\x8e\xde\xd5\xe0\x87\xc2\x87\xe0o \xe8\xca\xba\xb9\xde\xea\xc6\x95\xa1\xe7\xe2\xcc\xfb\xed\xd2\xdb\xf6\x1b\xf9\xed7\xde\x16\xe7}\x9br^oIe6|\xec,\xce\xdeo\x96b\x99\xaf\xcc/k\xbd_\xd6>Sw\xb7\xfe\xb3\x04\x8d\x95\xf5\x82\x95Y\xed\xc0\x10[\xe1N\x17Y<\xc1\xfd\xc6\xfb\xc5\xb9l\xbbu\xdf\xa6\x07\x16~\xba1\x82\x87\xa3q\x1e\'\x18\xd6 #\xb68\xf76\xf8\xff)\x82}\x06\xd6\xf5\xe1\xa8i\xac\xeb\xa4\xc2\xd6%\x08\x05\xa6G\x9bu#\x1b\x9cO\x97\xc2a\x83\x84UfB|\xc2Xm-\xec\xb0pF\xe5\xbek\xb6z_C\xbfa/\xfd\xba?M\x90\xba\xb0\xf2\x0c\xae7M\x01\xa7\xed\xd2\xee\xec=\xce\xfd\x1bE/\xce\xa7\x0b\xb7\xf9J\xe4\xf9\x1c\x8e\xa7\x0b\x1a@\'F\x9f\x87\r\xa0\xe7i\x82\xc6\xa9\xdf\xb56\xd8\x8de\xff\xeaZ\x9dQ7\xec\xe5U2\x85;\x1c\xebF\xf3\xf6\xfd\nW7\x87c\xe1\xba\xb1\x87\xe3\xe18K\xc3y\xaf\xb7Y\xaa\xef(\xb2\x7f\x96\xf1\x9e\xa0=C]\x93\xd14\xe3w1M\xb0pY\x1bZ}>O\xc84\x88\xce\xa0*\r\xea\xbd\xef\xd9S0\x9d\x86\xf9\x86ltLOY\xcb4C\x04\xe7+\xba\xab\x9b\xddz\x88\xbe\xed>$X8*=C\xf0p\x0ci\xf1\xccR\xa6[\x9c\xcd\x86\xc6\xb9u\t\xaa#\x11\xc3\x16\xe7\xe4\xc7\x16\xe7\xf7\xd3i\xc3\xb2icd0\xaa\xf7\x1a4\x82\xc4\xd9\x1b\xcb7d\x9b\xa5\x9auqf\xcb\xd8\xe8\xcd\x8e\xb4\xc5\xfc\xcc\x01}v\x15\xf6\xb7]\xe2\x7f8\x86\x04\xe7+u\xf8\x98\xa0:bf\xb3Iquc\xdd(N|\xccf\xd9\xc3X\xa8\xdf\xdb\xfc\x8e\xa4\x1a\xd9\xd88\xc7\x95\xe1F\x98\x9f\x19mb\xe3\xd9\xa5\xd5\xb7\xed7\xcc\x9fT\x9al\x9c\xa0f\xa3\xcb\xace\xef\xbe?\xe9A\xb3\x19A\xe9\xf51\xc1\xfd\x06\x1b\xf4\xfb\x04\xf1T\x87\xea\xef\x9e`Rib\xd3/]\x1b\x85\xae\xa6\xf1\xf6Z-\x9c\xb1&CW\xbf\xb2\xfaX\xb4%\xf6\xe36\xea*{\xd7/|B\x1b\xf3\x84T\xc5\xc96b\x04\xe9M\xff\xa6\x08\xaao\xf1\x0b\xabt)0\x7f\x9cw\t\xc6\xf9~C&)\x82\xcc\xcaN\x1f\xde\xa6l\xea\xc3\xd7E\x91Y\x1b\xe7LNm\xeb\xc5t\xdd\xd5\xefc2\xe49]f\xe9\xbdmH\x83t\xc3\x06B\x1b\xfd\xb0\xb5.A\xf2="8K\xa5\x9a\xa1\x0e\xcd\xd7kz\xa8\x1b\xab\xe1\t\xfa\xba\x9e ;g\x1b\xe1tPb\x7f\xdd|\xb2\xd8\x96\x9e%8_\xc1>kM\x87S\x04\xf7\x1b\xde\xd4\r\x14\xbc\x06]\xb9[{\x82\x9e\x93\xa9f\x8c\xa0+\xad_\x8bF{\x8b\xb3,R\xd4\x18\xc1\xfd\xc6\x95\xd0\n\xf56\xa6Avn{\x9a\xda\xb0\xd4\xee\xca\x90\x16\xb1\xa7K\x97\xe0\x90\xcd\xc8P\xff\x15\xd2}?\xe3\x7f8J\x9d!\xff{\x82I%\xbf\xb0\n\xb1\xcc\x80nB\n~\x1f>\xf6t\x81\xb8\xf4e6\xf8\x876\x1er\xfa\x1d\xfb\x1a\xda`\xa8\x05\xab`6\xedB{\x99\xb2\xf1\xccR\xc8j\xebCd\x14w\xba\xb0\xbb.A\xcd\x12\x12\xa43;t:FpH\xe9P\xb7\x83n\xc6\x08jZ\x9d8\xb7\x1d\xf7m^\x91\xbe\xeb\xb0\x06\x1b\x0c\'\xb1\x8d\xcafUBZf\xd3N\xba\xb4v\xebn\xcf]u,\xce\xb6\xc7\xb0\xc6,U>\x91\x15A\x18\xa2\xd7\xba\x81\xdfk\x04\xc7b\xef\tFQ\x9c\xcbo\xbf\t\xa7\x93\r~>\xdf\xf5\x96T\xdd\xae\x87j\x88\xb4)\xc4\xea\xa2+\xaf\x0fO:\x9cc\x88\xd6+\xb6\xbe\x06\xdf\xcd\xf8\xfbmuS7?U\xe3_ \xb88_oR\xf9\x87\xe0Wl\xfb\xcd\xf5\x96T?W\xe3\xff\x9f`\xe1\x16\xe7Y\xfa!\xf8{m\x9f\xf3\xfe\xf9\xe8\xe8]\r~(|\x08\xfe\x06\x82q^7\xd7[\xdd\xc4y\xe8)\x9b\x8f\xceZ\xfc\xaf\xb7\xa4\x9a\xaf\xbc\x9f+\xe5\xb7\xdft\xfd\xb26\xf4\xc3\xc7N\xd6\xca\xb6\xdf\xf4mc\xf9v\xeb(\xda\xad\xbd\xdf\xe9\xe2cO\x17\xdf\xb3\xf5\xc8$\xe6w8Zl\xe1\xacnR\x85\x14xk\x93R\x9d\xbbrm\x97\xdd\xbaDw\xfb\xc3\x8a\x87\x1d:\x95\'\xd58\x85\xbb\'\xc8!\xf3=\x05\xeb:\xf4\x83\xe1+\x04C\x1b=\x8e\x11\\\x9c\xbd\xdf\xe2\xdc\xdd\xfa\x10\xc1\xa4\xd2\xef8AM\xaa\xa9=AWv\xeb\xf6\xfb\xc3Jv\xeb\x90\xcc\xeaf\xbe\xf2\x0c\xc2I\nG\x97\xd6\x8d\xfdg"\xb6\xe8\xfdf)y-\x1f~\xda\x9a\xd7t\x7f\x12\x9f\xefp\xbc\xcfw\xaf\x05\xd5\x84\x9e\xc5\xdaC\x8e.\xc1\xedR\n\x9c&h5B\x82\xf4\x10\xd6\xed\xf7\'O\xcb\x97T\xa1Z=\xe9\xee$\xae42\xda\x18z\xdc.O\x17\xd3\x82\xf9i\x07\xf8\xbf\x9e`R%\xd5s\x04\xf1\xdaoN\x17\xdfa\xa8R?\x89N\xdd\xb0\xd1W\t\xfa\x1d\xf9I\xba6\x8b@\xe5\x9e\x96\xaf\xfbu\x82\xdb\xe5#\x82\x8bs\xd6\xea\x13\x12\xe4\x86\x8e\x9e#\xb8[{\x82\xdb%\x9c\xd4\r\xd5\xbb\x93d\xed|\xf5w\x11|F\x83\xa8O\xdf\x9e \xf4\x0e\xc7\xaf\x10$\x92*\xe4\xb3nD\xa6pC\x19\x9f!\xb8\xdft\xfd\xfa\x93\xf8|\xf4\x13\x12$_h{\x85 \xf1Y[\xb8i\x82u\xc3\xde\\I\xb4\'8_\x89\xe9\xeb\x04\xa1d\x87\xfd\x85\x93\x14\x0e+*}\x86 \xde\xff-\xc1\xc5\xd9t0Mp\xbbL\xaa\xed\xb2Kp\xb7\xc6\xfbY\x82\xfbMRY\x87\xd4\xb4C\xb5>\xc1\xf9Jt`\x19E\xdb\xe5\xe9r\xbat\xfd\xf0x\x8d\xa0\xcf\xf7:A\xe6W6\xf37\x82\x87c\x9c[\xa5q\x82d\xf6\xd1\xbe\xae(\xa9n8\xaf\xcdf\x04\xe5\xd7\xa55_\x89Bw\x92\xc2I\x9f\x9e\x0c\x1ae\x9a\xba\t\xfdf)[\xb0|\xcf\x11T\xec\xe1X8&\x7f\x8d\xa0&\xd8\xad\xb57\xa6\xf4\x04\x0bg\xf3\xbcNP\xbd[]\x9b\x17\x06\x9aW\x9e\xe4\xdbo\xb2\xb6nTeH\xad\xcah\x87,\xd6\x8d\x9d8\xf7\x13\xdb\xb1\xae\xa9l\xc7\xba\x19"\x08\x15\xce#\x82\xe6\xc7\x81\xa2\xd1\xf2:\x08\tz\xda\xf7=K\t\xd3\x04]\xd9\xed\xd9\x0e\x8a\x10A\xb4\x82\xe73;\xe1\xd4\x8d\xd4$-\xb8\x12:\xa1M~\xec\x05~\xaf\x11,\x9c\x94\xbb]N\x13\xf4\xb4\xa0m\xb1\x8bs\xd6f\xed\xe9R\xb8{\x82R&\xb4^\'\x18\xf6Btw^\xac\xf8\xdb\xf1d\xba\xcf\xc76f\x935\xceM#\x1f2_#\xf8!\xf3!\xf8!\xf87\x13\xfc\x9cw\xcfGG\xefj\xf0_\x9b\xb8p\xaete\xe1>\x04\x9f\xb51\xa3\xce|%[\xdd\\oq\xde\xf5\x9b\xaf\xbc_\x98o\xb7\x8e\xf3\xdd\xfa\x11\xc1\xd3E\x91u\xe3J\xef\xb9\xdfP\xa9n\xf6\x1b\xb3e\xad\xf9y\x9b\xf7\xb3\xd8\xc2\xf9^8\xdc\x15K\'\xbb\xf5\xf5\x96\xb5\xf8\xd9?\x1e\xbd\xbd\xde\x0e\xc7\xebmq\x96mq\xd6}\xbb\xb4\xe95%w|\xc9\x1cE\xaa\xc6\x1b\xdf\x1fG5\x86\t\x92\xf9ty\x86\xa0Y\x89|\x86 \x07\x0e\xd8\xf6\x1bo\x83\xd7}\x87\xecp\xd8\xefY\x82\xb3\x94\xb7\xb34\x8a\xec\x1f\x19\xfclt\xc5=\x8a\x92\n\x96Q\x04\xcf\xa4\xf2\xbd\xd0C\x9c{Z\xe3\x04E\xc0(\x84\xbb\xeb\x92\x111\xb3\x15N\xda\xe0\xc3\xb6\xa6\t\xd2\xa1+}e\xe2\xac\xeb\xba\xf1\x1dB\x81\x1d\x9a\r?T\x13\xfa\x99\x82LM\xc3\x04e3my]\x86\x04\xb9{JF\r\x1b\xf5\xf0\xb4\xde\xc3\xe9\xe8\xc9H\x0f\x11\xd4\x8e\xb7\xcbG\x04\xc5c\x96R\xd7\x945M\xd02\x9b\x8e\xa8\xc1\xed^G\xaa\xd3\xb5\xcdRW\x86U\x9e!\x88\xb6\xd0-J\xd3\xc4d\xe6\x1f\x0fo\xb9\xd3\x97f \xd2\xb4 \xeaz\x03\x9f{\n\xd4\x1a#\xa8\xdct;EP\x93\x9b\xceu\x7fD\xd0\xaa]o\xb3\x94\x7f\xb3\x142\xfa\xd7\xa5\xe5\t\xb2o\xdf\xcbk\x04\xd1\x91\xe9\\:"sR\xd1q\x9c3\xa5\xea\xca\x83c]\x9a\xd2\xb0\xa3\xfc\x90\x02\xd3\x84\xb6!\x82l\xc365Fp\xb7\xceZ\xbf\xcd\xac\xa5\xab\xe758M0\xd4 \xbd\xc8\xfa:Az\xa2GX\xb1klX\xc8\xe9J\xac\x96Oz\xa07_c\x88\xaa\xf5\x8b\xb2\xa7\x08\xda\x04S\x04\xe1\x01\x01e\xc5\xf71Az\xd2t\xd3\x04\xa1\xc3\x96\x95\x91I\xaf\xb7\xd3E\xfd\xbcB\x10.\xe4AM\xb0\x91\xa6\x93J\xb1I\xe5k\xa8\x8a)b\x9c\xaa\xcd\x10\xf62D\xd0\xf73E\xb0Ok\x8a\xa0\x1dWN\x13\xb4c\x9a\xf1j\xa8\x9bpO\xcf\x10T}\xb4\xec\xbb\x86[Re\xad~\xa7\x08\x8a<\x94\xbd\xadp\xd4\x91*\xa7\t\x9aj\xbe\x97`\xdd\xc0\xef\x19\x82\xe6\xe7+\xf3\x0eb\xaf\x11\x84K\x9c\x1b\x1b\xf5R7uc\xdf\xe6\xa7.\xd4\xd1x\x8d(\xdao\xbc\xd74A<\xbb\xf4\xdf%h\xfbxDp\xb7\xe6{\xbf\xb9\xcf\x08\x07\xee\xaf\x11\xc4\x8b\xea\xf2\xc4v8\xd6M\xd6\xee7Y[7\xf4$?\xa9\xdc\xba\x1c\'\x88*\xe1\xfe\x98\xe0v\xd9\xdf\xc8w\x12,\x1co\xb6K\xab\xc4\xdd(0\x8d\xb6\x87\xdd\x95\xae,\\\x97\xf4\xf3\x04\xa5\x99p#\xa6"\xb3b+\x1c\xd1\xd4\xcdZj\x8d\xd5 w\x9f\xd60A\xd1\x8e\xf3\x9f"\xa8\x89]\x19E\xae\xf4\x13\x8b\x82\xa6\x83\x86\x91f\xd2\xd0oh\xba\xa4B\x1d\x85\xa3VR\x99\x9f:\xb6\t\x8d\x02y\x8c86\xf4\r;l\xcc\xc1\xf1\xd8w\x08\x1e\x8eT\xad\x9b\xc2\xbdK\xd0\xcf{8\x9am\x98`\x14\xb15|\x88\x08\xa3\xf9pN\x17\xd9DSg\xbf\xf1]+\xda\xc7\x86~la\x8c\xe0P\xec\xd0$\xcc\xd9\xcf7FP\xf3\xb0\x99\xe1\xd8\xe7\t\x86s(\xdf\x18\xc1\xf9\x8a\x9aI\xc5\xf6\xc2I\xe2<\xa9\xb0\xfb}\xba\x12\xcf\xba\x81\x9fl\x85\x93O\x18k~Y\xcb<\xe3\x04\x87b\x87&1\xd2\xe16\xa7\x08*_\xe1\x86c\x9f\'\xe8\xe7\x85\xdf\x14\xc1\xff\xca\xb6]n\x97l\xa7\xdb\xf53\xb1\xaet%\xbb8\x1c\xc5\xe5O\xf5\xfc\xdb\x08\xb2_\xb6\x8b\x12P\xd2\xf3\xb1(\xc6\x95\x85#C\xa8\xf3\x7f\x8d\xa0+\xe9I\'\xce_\xd3\xa0\x8fD\x8b\xff*A\x18\xa2\xa2\xba\xd9o^\xa7\x8f\x0e\xebf\xbe\xfa\x93=\xff>\x82\x7f\x9b\xeds\xde?\x1f\x1d\xbd\xab\xc1\x7fa\xe2\xdd:\xa9\xb2v\xbe\x1a\xf7\x9b\xaf\xb26\xa9v\xeb\x0f\xc1!\xdb\xe1\xc8\x9c\xd7[Hpq\xbe\xde\x16\xe7\x90\xa0|\x0e\xc7\xdfAp\xbf\xb9\xde\xea\xe6w\x10\x9c\xa5L\xe9\xca\xc2\x85~\xf7\x04\xa3\xa8p\xae\xc4s\x96~\x08vmq>\xd4K\x9f O\xdd\\oq\xfe!\xd8\xb5\xed\xd6L)\x05N\x13,\x1c\x9e\xbb\xf5\x87`\xd7&.R\xd64A\xd4j\xac\xa7j\xb8r\x96v\tf\xed\xf5\xb6\xdf$\xd5\xf5\x96T\xc4c+\x9c\xeed\xcdZ\x8b\xd6\x8exs8\x9a\xcd\x95\xc4\xd7\x8d+\xad\n\xef\xed\x98\x1f>l\x17E(\xdf|e\xfdjF\xee\x87\xe3\xf5v\xba\xa8\xb7\xd3E\xf7\xc2\x11KvW\x12\x8b\xb7"\xb6\xcb(\xda.\x95\xc5j\xd8\xf1=+\x93e\x9d"8\xe47L\xb0n\x8c\xa1\'\x98\xb5\xaaO\x06ldS\'\xf7\x04\xeb\xa6n\xd4?6\xa6\xb2\xc3\x94\xcf\x13\x94m\xbe\x8a"\xd8\xc9\xc6\xbeB\x82\xdc\xa5h\xc8i\xd3\xbe\x06\xff\xf1H*\x9fo\x88 =>C\x90\x9c\xd2\x81\xd9\xe2\\z+\x1c\xbd{\xaa\x8bs\xdd\x98V\xad2\x93\xd2)w}d\xa3R\x97 V"4\x9d\xe9\x11%\xda$\xcaT7\xe1\xee\x86\x08Z\xc7L\xa8XX&U\xe1\xb6\xcb\xc2\xf1\x96;\xfd\xb33\xee\xea\xdb6\x07\x01Tj[\xd23Km\x1e\xd9\xe6+\xa2\xbbd\x86\t\x92\xb3n\xd8\xa9l\xe4VM\xe6\xa1\xbe\xd7\xe3\xe9b\xbd\x84\xd3\xcdR\xee\x85\xd3\x07\x95u\'\x96?\x9e\xbe2JI*\xd3\xf4k\x04M\x1b\xe4\x90\xb6\xa8\x9bTD\xef7t\xcc]Z\x90\xb2\xe2\xdc\xf2\xc1\x96\nxu\xf5\xd1%\r)m\xe51AmMv\xa6\x17?\xee|[\x0f\xfe\x90u\x88 \xdf\xf6o\x88\xa0vd\x95\xb7K\xa2\xc9\xe6w\xf7,Az\xe4?\xef\xd8\x96\xfc\x92J\xd3%\x95\xaf\x1bE\xcc`\x19\xa5Km\x9bX\xa3e:R\xb6w\t\xb2\xd7\xc3Q\x1cU\xfbg\x08\xc2\x81Z\xa6\xceW\x08\xca\x8a\x9a\xb0\xc8\x96Tu\xe3?\xe3\x04\xa55t\x81\x97\xef\x85>\\\xd9\xed\x8f\xd8\xc3\xf11\xc1\xc3\x91\x1aF\x7f\xb7>]\xf8\x1f\xe7t\x02\x0b\xaf\xf3(:]L\xe7\xe1t\xaa\x0fW\xb1%\xfe1Am\x8f\x8e\xb4\'\xeeL\xc6\xcd\x95\xda\xe2\x18A\xd8\x13y\xbax\xcd\xd4M\xd6\xba2k\xebFZ\xb0|\x9c8\xf7uQ\x1b\x14\xc5F\xba\x84\x95\x88\x86\xfd\xc9\xf31A\xb2u\xe9w\x1fo;\x1c\xc5/$H6v\xc0]\x1fe\xa3\xd2\x14Ab\xf7\x1b\xa9\xce\xfb\x89\x93\x94\xcc\x7fi\x88\x1a\xdd|Dq\xc8 \x9b,\x8a\xc4\x1a\x92a+\xda;\xdeh\xd7\xf7\x83\x8d\xfe\xa9z?\xb1\xe7\xfcX\x83\xf7\xa4\x87\x08\xba\xb2n\xac\x8a\'\xc8\x87\x83\x1a\xb0\xa1\x0e\x8e\xde\x8d\x13\xa4\x13;^3\x85\xb3|Y\x8b\x9e\xa5\x83~>\xa9^j\x97\r\xde\xa8\x17fh\xd6\xa8\x92\xc7\xb6e\x93\xa8\x86i\xc1\xeeV\xa7[C\x15\xa6\t\x86\x9e\xd3\x04\xc3-Y\xe58gSIe;.\x9c\xeeq>M\x90\xcd\x89\xca\xe1\xe8\xf5\x81B`P7x+\x1f;\xb9\xcfg\xdb\xf3\xf9P\x1f[\xc4\x9b>!\x84\x8f+\xb5\x05\xdb\x88i+\xd4\xcc0A*\xb2\x93\xc7\x04\xb5\xb78\x7fD\xb0k\xb3\xca\xec{\xc8\x13M\x84\x13?\xce\xf8\xe7l\x10\x84\xec\xb4\xdf|\xc5\x94\xfb\x8d\xd7\xea0\xc1\xc2\xa1uS\xc8\xbf@\x10-\xda\xbc\xd3\xb1\xe8\xd9|\xc7\x08\x8a\xf3\xf5v\xba\xbc\xda\xcb\xdfKP3KY\x8fb\xf7\x9b\xa4\xca\xdai\x82Y\x9bT\xfb\xcd\xeb\xbd\xfc\xbd\x04]y\xbd%\xd5\x7f\xdf\xcb\xef#\xf3\xb7\xd9>\xe7\xfd\xf3\'vbo]\xf9su\xff;\xbd\xfd\xbf\x13\xdco\x92\xaap\xd7\xdb,\x1d\xf7\xdb\xad\xeb&k\xeb\xe6p\xac\x9b(J\xaa\xdd\xfa]\x82uC\xd6\x7f\x87 \xdfY\x1bE\xf3\xd5\xf5\xb6]2\xfb\xdfA\xf0t9]\x16\xe7\xc5\x99\xef\xa4\xfa\x19\x82Yk\xf5\xe6\xabg\x08\xd6MR\xd5\x8d\x08\x16\xeep$>k\x0f\xc7\xc2\xfdF\x82\x8b\xb3+\xb1\x15.\xce\xeb\xe6Q\xecv\xb9]\xbe\xd2\x0b\xba\x0b\tf-*|D\xf0t\xc9\xda\xd3E\x04\x93*\xa9\xa8\xb9]\xf2\xef7\x12\xac\x1b\xd8A\xc6\x95\x8b\xf3\xa3XM\xf1l/\xbb53\xc0\xe5t\xe1\xbe\xdf\\o\x87\xe3P\xec|\xd5%8K\x17g\x08b\x879\xcf,\xd5}\xba\xc3Y\x8a"\xfe\xac\x06\xb7\xcb8/\x1c\x931\xe7T,3YO\xd7\x1bQ\xe3\xbd\xcc\xd2\xd3\xc5b\x8d \xff\xa4\xa3n\xdcv\x89JC\x82\xf4B5W\xda\xc6\xb4\xbf\xb0\xf7\xa1\x0egi\xdd<&8_\xf1\xa6n\xe6\xab\xef!H\xc5\xc3\xb1p\xbb\xb5\xa6\x1b\x8f\xa5.\x95\xadF\xd6\x1e\x8e\xdb\xe5\x10\xc1n\x8di\x82\x85S^\xfe\xc7yw\x0eW\x9e.\x85c\x17\xfa\x9d&H\xa6\xc5\xd9G\x8f\x11T=?\x89\xbd\x8ds\xab\xff\n\xc1\xba)\xdc~\xb3]\xa2D\xaa_o\x8b\xf3p\xec~c\xb7\xfd&\xac\x91T\xa6F\xf9\xed\xd6\xd6\xe1=A*\xb3\xaf.A\xaf\xd5\xbe\x12\x0e\xc7\xd3%\xce\xe91k\xe3\xfct9\x1c\xc7\t\xc2\xcf65Ep\xbb\xf4Q\xec\x9f\x89y\xa7\xdc\x87\xe3\xeb\x1a\x9c\xaf \xc0d\xd2\x07\xdd\x86q\xdc\xe8\xcf[\xb3\xb6p\xdd\xdcR\xe3\xf56K\x8dG\x97\xa0\xa7\r\xeb\x90\x96\xdf\xcb\x18AW\xd2\x97X\x8f\x13,\\R\xdd\xdb\x9e%(-j\xef\xa6\xcb\xe7\t\xd2!6\x94(\x82\xe1TR\x9cH\x87\xb6!\x9d\x1a\xed)\x82uc[\x8fsz\x99\xa5z\xa7-\xfd\x1c\xc1\xddZ\xeaT\x15\xb1\xf2\xb4\xf4N\xbb\x97\x1e_!\x88*\xf6\x9bY:_\xed\xd6D\xcb\xcfw#\xaa\xe1\xde\xc6\x0e}\xf5\xa7\x10A\xf58_\xd5\r]\xdbf\xac\xeb\xeb-\xce\xdf%\x18E\x85\xab\x1b\xd5\xb1hO\xd0\xde\xa9\n}\xf0v\xbe\x92_\xe1\xe4\xe3J\x94\xf4*\xc1\xc5y\xb7\x9e\xaff)\xf3\x98\x06C\xa5K3Cd\xc2\x93Tt*\xfd\xde\xeb\xd0\x13Tm\x9f\xdbx\xf8\xba\xf7\x04]\xd9%\x18\xf6\xde\x9f\x0eN\x87\xe3\x10A\xd4^7\x8b\xf3p\x95!\xdb+\x1a\xdco\xa0\x8f\xddo\t\xb2\x8f4\xad\x93\xb5\xae\x9c\xa5a/\xb3T\xb1c\x04\xe7\xab\xfb\x1c\xc4\x8f\x11L\xaa8\xaf\x9b\xc2em\x9c\'\xd54Aqb\x16O0k\xd1=G\x9b\xfd\t\x82X\n\x87\x12\xe1e~\xf4\x9c\xb5S\x9aF;q>\xdc\xcb|E\xf7\xf7\x04\xe7+\xa6(\x1c\xca\xf0Y\xa4\x9a\xe19\xa0=KO\x97\xeb\xedt\x99\xa5C\xf4\xef\xa7\x9b\xa5]\x82c~\xdfGpq\x8e\xf3\xedr\xbb\x8c\xf3\xc2\xd5M\x98/\xce\x8d\xcfp>S\xdeX/\xfb\x8dm]\xbf:\xcc\x87-\xce\xbby\xc6fK\xaa\xa4\xda.\xa3h\xbb\xe4\xdf\xf86\x1f\x91a:6\xf1\xfd\x04O\x97\xd3eq\xd6G\x1d\xbe\x9ao\xbc\x17\xa9\'$\xb8\xdfL\xd1\x1a\xb2\x15\xeep$>k\x0f\xc7\xc2}\x95`\xe1\x92\xeaty\xa5\xf2\xf3\x04\x9f\x9d\xe4=\xdb~\x93T\x85{\xa4\xb7\xaf\xcf\xf6(z\xb7\xa6\xfe\x87\xe0\xd7\t~O\x95\xff\x92\xe0O\xcf\xf6!\xf8!\xf8\xdf\x13\xfc\x9c\xf7N\xf4y>\xcf\xe7\xf9\xeb\x9f\xfd\xe6zK\xaa\x9f\xac\xb0[_oY\xfb^\x8e\xc2\xd5M\xd6\xee7\xdf\xd9\xd7vy\xbd]o\xf3U\x14\xcdW\xfc\xdb.e_\x9c\xc3\x1b\x84\xea\xe6z\xab\x1b_=\xceC\xcb\xdfAP3~w\x9fIu\xbd\x1d\x8eQt8Z\xee\xc2\x9d.T\xf2\x04\xe1c\'\xcem\x9e\xd0\xf2\xefj\x10-\xa9\xb3\xac5:b\x1a\x12Dm\x8b\xb3\x94Y7X`|\xba\x14\x0e\x0b\xe4\xfe\x0e\x82?\xf3\x14\x0ev\xae\xa4\xbf\xc2\xa9\xd78/\\Hpq>]\xf8?_a\xc5r8\x9e.\xf3\x95\x9fk\x88\xa0+!_7\xae\xd4\x9d:v\x88\xf15\xb6K\xfe\xa9z\xbf?6\x9aT\xb6\xe9\xa1\xccC>\xfd\x87\x199\xd6\'\xfd\xec\xd6~\x06~\x93\xaan\x92j\xb7\xce\xda\xd3\xc5|\xf6\x1be\xb7\xfe\\\x89\xd5W\x87\x862\x1f\x8ea\xdf!A{<\xc1P\x19\xa8\xb2O\xd0\xfa\xe5\xa8\xd6=A\xa9}\xbf\x89"&\x1fS0jW\x84E\xf53\xf7}\xbeJ0k\xb5\x1b\xde1\xbd2\xaas1\xedW7\x05ty\r\x13\x845\xbc\xec\x99\xa50X\x9c\x87\x08J\xd9C1\xbc\xd1\xb6\xe8\x86h|\xc2\xfd\x85\x8f\xedvq6:\x16O\x94,}\x9f)\x8aS\x04\x17g<\\I&\xdeY-\xe6\x93v\x98\x18\x0bJ\xf4\x13K\xa5a\xa5!\x82T\xb8\xde\xe2\xdc\xee"_7\xa8\xbbOp\xbb\xdc.y\x83n\xc3\xa9\xa8\xa5\x18\xbd\x83.6\xfa\xed?\xbe\x0f\x9b\xd3[T\xbfp}\x9f\xef%\xc8\xef,U-\xe9=\xa9fi7\xef3\x04\xb5\x85P)F\x10\xaf>A\xba\xad\x1b\xa9\xdbOE\x7f>\xaf\xaa\x14\x8e>\xc5\xf4\xfeQ\xe7\xf4ksz\x8b\xfd\xeb\xfb\xfc\x14Ajl\x97\xd8\xc82_u\xbb\xd4\xfb1\x82q~\xcfO^TBE}\x82\xbc\xb1cS\x89\xb9+\xbb\xbb#\xf7=\xfd\xdfK\x90)\xd0!\x877<\x87\xa3\xee!\x9f.\xc1YJ\xa6\xc5\xb9\xdf\x91\xfc\xfa\x04e\x8f\xf3(\x9a\xafl\xaa\xc2\xa1\xc9.+M\xd4\xdfM\xbf\x0f\x9b\xd3[\xb4\x8f\xc2\xf5}\xbe\x9f\xa0\xd5\xeak\x87\xffxA1kC\x8f\x90 Y\xbbo\x17\xe7\xc5Y\xf7)\x82\xc4+\xd66\x95\xb5\xa1\xd2\xc5\x973_\x8d\xcdl\xaa\xa5c\xe5Q\xbf\x96o\xd8\xe7\x19\x82\xec\x13UX\xd4\x18A|\xa42\xab\xbe\xdfhb\xd5\x8as\xd1\xe1\r\x9a\x19"\xd8W\t\xde\xf4L\x1e#\xe8\x0fl\xe9\x8f\xccx\xfa\xc9\xed\xf89e\xf5\xdb\xb9\x7fN\x17\x8b\xb0(f\xb4C\x0fC>\xcf\x10\xb4<\x165F\xd0\xfa>]\x88\xe2\x8d\x1d\xd8z:P\xf6*\xea\x12\xec\xcf\xae\x9d\xf8<}\x82\xf3\x15\x0c\x93J\x1b\x1a\'H\xfdP\xbd\xf7O\xe1\xe4\xe1\xf30;\xb9\xebF\xfc\x86}\x1e\x13,\x1c\xe4}\xd4\x18\xc18Wv\xdb\xf2\xe1(\xae\x87#\x96\xed\x92y\xe6+&\x0e\x99="\xd8\x9f\xe2\xab\x0f\xdd\xbd\x9bc\xbb\xdc.\x99\x06\x06\xc3\x04]\xe9\xcaY\xaa\xcdKK\xcf=L\x0e\xc9\xdf\xfbhSl\xf0\x9d\x87]\xb2\x05\x943\xacgH\xb8\xb2px\x1e\x8e\xffO\x04\xa5|\xf4\xf3\xce\xe3J\xb2\xe8\xc4\xf9#\x0f\xb4\xf8\xffC\x90\xc9\x86U\xf3j\x1e\xd4U7\xfb\xcd\xb8\x074\xea\xe65\xbd\xff~\x82\x9fG\xcf\xff\x00' - ) - splash = (264, 88, b'\xed\x92\xb1k\xf2\\\x14\xc6\x03\xde!\xa3\xa3\xa3\xdd\x1c;:\x1ay\x87.\x82\x0e\x82\x08\x82c\xc1\xa5c\xa1K\x9b\xa9\x83CG\x11\x11\xdf\xd1\xc1\xa1\xa3C\x07\x1b(\x88\x83\x88`y\x11\xf4Opt\xf4\xcb1Ms\x93\x9c\xe4\xdeDk\xed\xd7\xf3\xdc\xc16\xb99\xe7<\xcf\xf9)\xcayI\xcd\x17\x1aj^\xf9\xb5\x9aT\'U\xff\xd3B\xa3\xd0\xc0\x9e\x9f\xbbJ\xcd\xf6\x02Ny0\xbd\x8bWa\xdeY\xef\xe6\x1dw\xcdR3Qy\x80Z\xef/\xd6\xb7\x90\xbas\x03\xfa\x17\x1a\xf6\x9cv}\xab3\xbcsN\xb4]@-\x8b+v\xe1\xb8\x9d\xde-W\x96S\x879\xd8r\xa9\xc9\xf7\xb5\xdd\xf2\x1d\xbd\x93\xf0U\x81>1q\xe7\xc3\xc3\xf4n\xbdS\xf3\xf0Wm\xb3\\\xc1_\xf0\xb6\xd4\xb43\xefn\xed\x1d\xc1\xaf%5?\xef8\x99\xc1\xbdB\x03\\\xc3\xaf\xbd\xbf(\xa6w\xd3;k\x93\xd0\x0b\xb6\x07\xbf\xcel2\x9aTm\x87P\xd7\xfa\x16r\x98w\n\x8dR\x93\xdf_{\xd1\xddZ\xa9\xa8y\xab\xaf\xed\x96\xe7\x81\xf7oU{\x7f\xe9n\xed\xac\x1c\x92~\x02\x0fv\xe6\xf0k;\xb6\xdd\xc23\xcb\x0b\x10\x1f\xee\xaa\xbd\xe0\x13\x8a\xc6Cm\x83\xdfpx\x80g<\x81\xce\xb7\xf1\xb2\x06\x02\xdd{\xabm\xecJ\xb0A\x8b\x16p\xb5\xde\x01\rb\xb7\xee\'@\x97U\xa3<\xc0\'?w\x1e\xf8g\xf6\xdf\xce>\xc4\xc9\x1f\xc2Cy \xe2\x01\xf2m/\xe6\x1d{\x9aCy\xb09\xb0\xb9\x98T\xd7\xbb\xe5\n<\xc0q\xaa\xb6\x17\xcb\x95\x9c[\xef\x93\xda&\xf5\xc6\xff\xfe$\x1e&\xd5\xef\xe5\xc1]\x19\xe3\x01\x9e\xd66\xeb\xddz\xd7\xdd\xc2\xb4\x87\xf2\x00|\x15\x1aP\x7fzgwz\x7f\x99w\xeccw\rr%\xe6\x01\\\xa8y\xe8cu\xf8)<\xd8\x7f\x9f;\x0f 5_jv\xb7\xb5M\x18\x0fj\x1e\xf6\xcc.\xc2\xa7`\x17\xeb]yP\x1e\xacw\xd6Mo\'\x91+1\x0fj\x1ef{\x7f\xe9n\x15\xe5\xe7\xf0\xc0.j\x9b\xf7\x17;\x11\x9b\xe4\xe5\xca\xf2\xf6}\xe1Iu\xb9\x82\xa7\xce.dyP\xf3pO\xcd\xbb\x89\xb6s\xb1\x9f\xfb\xb7\xdc^\xd8\xb7\xdc}\xfd7\xc1Ym\xa3\xfchM\xaa\x85\x86C\xc8\xf7\xce\xe1}Vh\x14\x1a<\x0b\xc7\x17\xbb\x80\x1e\xc7\xf2\x0f\xc4yI\'\xfd^\xcd;\xeb\x9d\x9a\xa7\x1cH\x8aRj\xb6\x17\xeb]y@I\x90@\x85\xc6\xbcSjR\x0e$\x12\x89D"\x91H$\x12\x89D"\x91H$\x12\x89D"\x91H$\x12\x89D"\x91H$\x12\x89D"\x91H$\x12\x89D"\x91H$\x12\x89D"\x91H$\x12\x89D"\x91H\xbfAZ.\xd1g\xb3?\xff\xfc\x87\x8d\x8d\x96\x96\x91\xa8\x901Zl\x8cV\x98%\xfaZ.\xfc;62\xee\x95d\xdc\xe9\xf5:\x1b\xfeA\xa7w\xfb\xc8\xa5\xa5\xca\xa5\x8d\xa7 \'\xec\xf9\xa1\x18q\xb8\xa4q\xcfFf\xf7\x9ev)\xb5\x89l\xd0&\\s\x84$\x1a\xb6M\xdfV\x92\xec\x99\r\xf5\x1b\xa3\x97\xf8\xcb\xe5Y\x11}\xabeE.D\xfd\xf5\nN\x83\xf3\x1d\x1b\xc6#\xc2\xb8\x0f\xef\xcc3!&\xdb\x9ch,pr\x13a\xb8\x94I\xaa\x93bNt\xfd\xe1J\xd6\x8b9G=\xa0F1B\x8d\x8a^\xd4\xaf\xf5\xbaI\xc5\xb3,\rb"\xc44\x04\x11\x91\xe8\xc7N\xfas\x7f\xf2\xee\xf7Dd\x0f\xa3!\xd2\x9c\x1c\rrD\xb0Q\x1478\x112\x0ex/ZV\xbb|(>\\\xc9\xd3\x10\xeeE\x8e\x06\x9c\x08\xf7\xfbD?:\x0fz=\x8a\xfbp\xb2\xe5h\x90&\xc2C\x83\x98\x88\\:\x9a\x17\x8c\x08-\x13\xb9\x06\xb7\x15Y\x1a\x82\xbdh9Y\x1a\x90\xf9UO\x87\xe7\x18<\\G\xf5\x1fD\x84<\rRD 4\x88\x88\x88\xbeK?\x11\xdae\x8c\x1a\x1fD\xe8\xf5\xc8I\xe6\x0e\xa1\xc17\xff\xb7\xf0\x80\x13\x11\x8d\x06!\x11\x014X\xe7\xe1\xeaxk\x0b7\xe4d\xa8$\x11\'#\xee\xfd^\xc6#\xe2\xe4:\x1e\r8\x11\xdeD\x8d\'\xcc1\x9ah%\x88\x07\xe3\x11)\xa1\x1a=\xf1|F\xcbCC\x00\x11\xda%\xde\x19\xa1!`~\xbd~b\x1e\xd0-\xd9\\\xc3[1\r8\x11\xfa\x8d\x0c\rl\xe6O\x11#B\x8e\x074\xd1\xebH<\x00\x11-!\r\xb8\xed\xdf\xca\x83^g#\xd8\xc5\xeb-O\xc5\xe9y\xc0h8\t\x0fI\xf6\x8c\xdd\xfb\x9d<\x18\x8f\xf8\xbd\xd3\xf3`\xdcc\xd5\x8f\xc5\x83\xd1\x92\xa1\xc1\xdc\xd9LQ\xf1\xcel\xa8$\x032l\x9d\x01\x0f)6\x92\xe5\x81\x8d\x95\x94\x98\x86}\x8d\xecW\xf2\xc0F\xc6\xe3\xc7\xe9a;\xd3o\x0e\xe1\xc1\xbb\x15\x84\x08UD\xc3>\x83K\xbc\xf3~\x9fI\x99\xbe\xdf\xc0C\x8a\r}>\x02y\x80M`Dxi\xe07\xf2\x15<\xf05\xfc\xbd\xe1\xbc\xde\xc6\xe4A\x15\xd1\xb0\xff\xb6\xe7!\x02\xa1\xc1\xc9\xd1;=J\x04\xda\xf7sg\xa7\xe2\x01\xa1\xe1\xcf?n\xe3I\xc4\x89\x8f\x08l#r\xbb<\x06\x0fAD\x18\xf71xP\x8d\x1e\xe2x\x86<\x1b\xb3!w\xc6\xc8\x8d\xa1S\x96\x8dbU\x98}&\xed\xe5a\xe6\xfa\x16=\x89\xbe^\t\xe3\xc1\xd3?x\n\x17{\x89\xbe\xd0\xc9\x08\xdb\x86\x969\x1d\x0frDxy@3E\xb7\xa2W\xb0\xea\xe1\x87\xcd\xb4,\xd7;\x8b1%:\xdc>\xd5\xe8_{s\xf2\xf2 \xed#\xe3J1\x83e$tr\xcdW\xf8z\x1e\x82\x88\xd0o\x82y\x88\xb2\x15\xbd\x1e9\xc5\x9c{>-\x17\x95\x08\xbd\xce}\x1e\x93\x87?\xff\x9c9\xe2\xf0\xe0\xa6:.\x11\xfc\x16N\xc5C\x10\x11J\xfa0\x1e\xec\xad\xe8\x95Ch\x88N\x84\x8b\x86\x03xx\xbd\x8d\xcf\x03FCt"\xdc4\x9c\x8e\x07\x93\x88{d\x9a\xca!<8_\xcb\x13\x81\xd3\xb0\x9f +K\x04\xdf\xd7\xd2\x11x\xa8\x1f\x87\x86hDxi0\x95\x92\xe5A\xbb\xf2\xd4\xaa\xdboriO\x8dG\xbc\x82\x9f\x08\x8e\x87\xcc!4\xc8\x12\x11\x96\xa2,\x11~\x1a\x14%\xd1\x8f\xc7\x83v\x15\xcf?\x1b\x87\xf9\x90%\x02\xa1\xc1\x14\x1b\x89\xdc~\x92\xe3JK\xcb\x04\xd6(\x06\x95\xf0\x12\xa1\xa5\xb9\x1a\xe3Ch\x90!"\x9c\x069"\xf0|\xcc\xfcg\xd1i0Za\xd9\x84\xd2\x90Q\x04\x12\x13\x81\xd3`~\x99\xe3:\xf5\xc3z\xe8\xd7\x9c\x97G\xfe\xcd\xc3\x95\xf3&\x11Z\x83wm\xdc\xbbj\x14\x0f\xa3\xc1\xf2\x92\xe8\xe3\x9bac\xa3%N\x11r4Zx\x92l\x96\xe8k\xb9\xe8\xdf\x05\xect\xe8\xdf\x87^g\xc3?3\x11\x0bF+\x97Vd\x946\x9e\x82\x9c\xb0\xe7\x87bH\x06Y\xa3g\xde\x19\xbd\xde*jx\x0b\xbd\xc8\x9e\xcd\x9bC\xbd\xee\xaf\x01\x9b`#]\\\xa3\xf2Q\xa3"\xbf\xcd\xb0\xad\xfc\x07' ) - testfont1 = (163, 215, - b'\xed\x92i\x8e\xe40\x08\x85\xfb\x10}\xff\x7f}\xcf\xd1(\xb2l\xc3c1^\x92TA4\xd3\x15\xc2\xfa\xf1~~\xd2\xd2\xd2\xd2\xd2\xd2\xd2\xd2\xe2\xf6\xfb\xd7?\xd1\x98\xa4\xb8\x8f\xe2Y\xe2|\xbe\xd8\xddQ\x8e^c\x86\xa2\xf5~y\xa4Z\xeb\x19\xd2_|\xe6\xeb\x97\xd5\x9d\xcfgM<\xa7E>a?#\x9a\x87\xdfv\x05Q\xde\x85O-oaU\xb3.?\xab\xc5\xfe\xf2\x98"\xe7^c\xe9\xffq\x8am\xff:W\xdbI\xde\x02\xed\xd4\xd7\xd39bB\xfc\xad\xefB\xbd\x1aE\xea\xe1\x7f\xdb[\xcch\xb1\xe5\xd5\xf7\x96\xb5(\xbf[\x14\xf1%\xfa_\xf4\x8e\xe8\rqD\x9d4\x8a3\x0c\xfbNXy\xbd:mB\\\x8b\xf8\xd2\xb6\xce\xe8\xce\xed\x04\\\xedH\x8f\xd2;\xa5(+{\x86h?q;\xb9\xadET\ryvQ\x94&\xd4(\xcei\x91\xd7\xd5\xb5\x88\x99!\x86\xb6\x07\xed\xce\x7fq\xaatBK{\xe8\xc6H\x83k9\xf6\x97\xe2\xd4\xb4\xcbJ\xea\xc4z\xc59H\xe7\x92^\xa3\x14kv\x7f\x1f\xbeK\x8c#\xd6\x19\x9d\xc1We\x9e\xa2\x1d#)\x8d\xee\xc0\xeb\xa0\xeb\xff\xbc\xdc\xa2\x14\xa3\xdd~>\xd2\xceR\xfcTK\x8aI1\xed\r\xda\xfa\xfc=#\xdf\n\x99J\xa8\xf0j\x99\xf9\xf8\xf1(\x8f\xc7_\xf7\xc4\x15\xe5\x1e\xfd\x17\xfc\xd6\xfe\xbd~\xf7\x0c\xed\rx\x14\xca\x1b\'q\x92a\x99\xd9\xf2K*\x93)\x967}\x0b\xae`\xa4\xe9q\x16u\x1a+\x13m\xe9\xbb\xbf\xae\x05\xee\xc5\xbbz(\x8e\xee\xe1\xf7P\x9fg\xeb2\x91g\xcf\x18ET[\x9e\x92Rl\xafO\xb5\xec\xd1c\x84"\xed\xee\xd9TR\x1fR\xe3\xcfO\x84\xa2\xac<\x0f\xc5re:\x91\xbd\xe3(E\xae\x18\x8f\x86P\x8cw\xf7sZ\xe4\x14[}\xf2]\x9f\xa0E4O\x84\xa1\x94\xe5\xd9\x15\xd5\xea)\xf6uVS\x8c\xcdW\'\xc4\n\x9e\xa1\xa8\xfbq/[\x8b\xf2\xe555 >\xb1\xdd|\xfaAj\x8c\xd4\xb2\xbfH\x9d4\x8a(\x07\xcfLg@\xef\xab\x19\xae5m6Y\x1f\xab51\xeeIK[\xad\xc2\xf6I"iiO\xb2\xdf\xbfu\x95\xdaZ\xfd\xdb\xa9]\xe6{\xf2-\xfe\xbf\x97\xbf\xe5{\x1bu}\xab\x1e\xf4\xab\xad\xc0\xabk\x1b\x9c\xe7\xb8\x87""\xc3\xdf\xe5X\xcc\xde\xcb\xec4\xc55\xfd\xa8~\xb0\x0fQ\xb4+\xe1\x0bY\x1b\x9c\xe5\xb8\x9e"\xfeZ\x1f?\xc5\x92\x19\xe9\x1dQ\xf0\xbd\x0c\xed:\\U\x98\xcf8\xc3\xef\xa6\x88\x18\xf1\xef\x97^m\xa5k\xde\xabO}\xa8O\xabk\xc5\x9c\xbd\x06\xa2\xc89b\x8a\xb1-\xd0\xc5,u\xde\xabDO\x1ft\xd7\x9e\xac\xb4\xe5\xb3)\x9eb\xa8i\xf1\x0cEo\xa5\xbb)\xfa6\xa5\xc4Z\x1f\xa7\xe9\xdf\x9dG\xc4v\xe3z\xf5h\xfc\xdcE\xb8\x16\xaf\x89\x91\x12\xfb_H\xc3;)\x8e\xc5\xecP\xf7\xf8\xd4{\xae\xb8\x8f\xe1\x8a[\xa5%\xc5\xb4\xb44n\xbf\x7f\xe5\xa1^-\x06g\xb5y5\x02\xe5\xc91\xfe^\xfe\xfd\xfc_b\xbd\xfa\xe9q\x07\x1e#ei_|\x1b\x8d\xf4\x9ac8>\xfd(E\xe9\x1a\xb2\xf6<;k\x93\x8dS\xf4\xd4\xb7YH\x11\xf3\x14eM\xef\xa2(M1G\xd1G\xc2\xbb\xa9]\xe3\xfa\xa7\xcf\x88"\xac\x9dy\x0c\xbeP\xebAYs\xfa\xe0\x95-\xdac\x9dF(\xea7\xe3\x14\xe5\x18\xad\x97D\x0f\xd3\x1fU\x98/z\x94\xa1\x9f\xa2T\xb9%d)-Jq\x05\x99\x9d\x0c}\x9bi\x95=\xb4u\x8aR\xa7Y\x8ax6~g\xaf^f)ju\xcfQ\xb4;Q>\x1e"\x11f\xab(zv\xe5\xbff(z\x94\xa9]\xd0\xcf0\xc6\x95\xab\xbcz\xea\xf64\x8aga>Re]c(\xcb\xaf\x07/\x15\xfce\x8d:\xd3\xd2\xd2\xd2\xd2\xd2\xe6\xed\xf7\xaf<\xd4\xc7#xL\xf1\xf0\x886\xeb\xf2r\x0f\xaeC\x7f\xd1\x18\xee\xe3Y4Z\x8f\xd1\xf6\xf02\x94\xa6\xd6b\xe8$\xdad\xbc\x0e\xf7Y\xf9x\xafQ\x8a\xff}\xf4\xaa\xde\xe9\xd7S\x1c\xbb\xb4L\xc2Sg\x84\xa2u\xc3^i\xf5\xf7\x0e\x8a}\xe5\xf7P\xc4\x97\xb7)rM\xc6(\xb6\x950E\x14aS\xe4Y\xe3u\xbc\x14\xad\xf8\xb2\x15b\x7f\x8a\xe2^-j\xfa\xf0S\xf4\xf4\xe2\x14i\xf7\x95\x14\xb1bvQDY{\xb4\xa8\xf7ZGq\xac\xdb\x1d\x14\xa5,\x1cs\x9ab\xa4\xdb\x93(\xea\x14\xf6S\x1c\xdfL\x9a\xdf\xb7\x07\xf7\xad\xa1\x18\xbd\xf3,\xc5\xa2C\x8bT\x1f\xd3zq\x95>K\xda\x0c\xd7\xc1\xdcpm\xcf\xcc#\xcc\xd0\xa6iiiiii\x97\xfd\xfe\xfd\xfey#\xd7t+\x0f\xf7\xc5b.o\xff\xad\xdf,\xe6)\xbfi\xa7~\x02\x8d"\xcd)\x9eu7\x9b\xdb\x95\xbf\xed\xa3h\xf5\xd3\xd5\x88\xafr/Ek\xc2\xf1k\xf0\xcd\xa4\xae\xf2\x05}3Z\xcaM\x8a\xf2\x94\xf3\xca[E\xd13a\xb4\xf2\xf5\x9b\xf3\xb2\xb4v7\xc5~F\xbc+\xdf\x83\xefeQ\xe4:+\xef{(\xfa}\xeb\xb4hi\xc83\xd1.\x8aQ\xe5=\x8f\xa2g\xa6\x08E\xaas|3\xb9\x8fN\xc7G{\x0f\xc5~\x93u\x14\xa9\xce\xdaN\x9fG\xb1e\xa9\xa9s\x05\xc5\x99\xca\x1e:\xfa=vQ\xac\x04\xf9>\xfd\xaf\x9e\x08\xde\x1c\xc5\xa0\xf8Q\x8a\xbc6\xea%e\xfe\x1c\xb3\xb3\xdd\x9e\xb1I\x7f\x9f5\xfb\x7f\n\xc7\xcf\xd1CZZ\xda\x19\xfb\xfd\xfb\xffX\x11c\xf5\xacnr\x84\xf4\r\xfb=\xbdNro\xa2H\xa7\xc6z\xf5(e\x9eb\xd4\x10{\xea\x93\xee\xce/&\xd5\xe9c\xc6n\x88\xe7\xf1\xf4Gw\xdd\xc1\xd0\xaf\xb3\'\xd8\xd3\xe6y\x13E\xa4\xce\xa4\x18\x9b\xf1z~\xd2\x1a"\xcf\xd2P?\xd1\xfe\ty\xbf1\x9d\xa3\xa9}\x99c\xdf\xbd\xf3\xf2y\xbc\x13J\xfa\xb0+\xa1\x9b\xe9Y\xb4\x86o\xc6xeN\xc4\xbe{dB\xf9^5\x13W\xc2\xf3\x8ce\x95\xcd\xce\xcd\xe3\xa1?:\xa1\xa5\xf9o3~\x9f\x98\x16y<\xbff\xb9\x0f\xed\xf6$\x8f\xb5\x0b\xf2h\xba\x1d\xe3\xe8\xa1\xa8\xd5\x9e\xf3xz\xf9\xe7y>Ez\xfd5\x1e\xdc\x9d\xc7X\x9e8E_\xe5\xb5Z\x1c\xb9\xe2\x98gN\xdbo\xd1bR\xf4q\\\xc5\xe3\x0e\xcf\xfd\x14\xaf\x0cZ\xdd\xefi\xfb\xcexb\xdd\x9f\xa2\xc5h\xce*\xe34\xdeg\xf4\x06\xdf\xd4\xfds\xb4\xf0\tJL[\xad\x88\xa7O\xd7\xce\xc8=\xefeh\xe5\xe1\xef\xbd7\xd6\xfbi\x14\xffOR\x1fO\x14\xf5i\x9b\xf1\x9a\xbc\x13\x8d\xc1\xca\xd3\xe7\xd3\xa6\xe6\x9d\xda\xbf\xb8\xf2h7Ot\xe9\x89\xf2j>\xd6\x87\xbe\x87\x1cC\xebj=}u0E_\xe6.\x8a\xe7l\x8e\xa2vy_\x9d(E\xaasI\x8b\xbd\xeem\x8f\x87G\xcc\xd3\xf6\xaa1\x98\xa36\xcf\x0cE\x99Y?\xd1\t\x1e\xb3\x1e\xec\xc3\x84\xf6jQb\x89\xb2\x9eG\x11\xa9N\xd7+g8\xca\x11\xc5\xf3n\xef\xa3x\xb7\x16\x11\xb3\xcf\xa0\x88\xb4\x88\xd4\x97\x14\xb9O\xd6\xd9Z-\xf6\x17*U\xda\x9b\xf1\x8b\xd1\x9c\x1d\x9eX\xaf~ZJd\x0f\xc5\xe7ZL\x11\xf1^E9Iq~{\xae\xde\xf7\xd2\xfb\x94]\xd2\x9e\xa5\xaa\xeb\xef7\xed<\xea\xd1\xf8T\x82\xa7\x18z6x:C\x8f\xf2\xae\x986\x82{\xa2\xdb\xe3*\'\xb9\xaea\xd8\xcf\x8d~\xd1\\-\xe6\x8dZ\xdcs\x19\xc4\xaa\xd5\xde\xe7P\xec\xf7\x92\x95\xa6\xeb\x8c\xf2\xa9\x1eMy\x12\xc5\xd8\xf6\x1e\x8ax\xcf~\x9e\x19\xf6\xf2\x1e\x9e\xedu\xae3\x14q\x1d|\xfb\xd8\x96|\xd7X]>\xd1\x1a\x8a\xad"g(ZLz\xaem_\xba\x99M,\xc2ql\x8fq\x8ae\x1f\xe9b\x92\xa6\xa4\xb94e\x8dj\xf1M\x14#\xbb\xe2:\x16E\xed\x16Z\x86M\xf6m\x14\xe3\xec\xf9\xf6\xba\xc6\x11\xb5\x18\xc3\xda\x8bvD\xf3P\xb2\xad\xc7\xcb\xb5\xcf\xe3\x1e\xd4k\xfc\x02-\x11K\x9di\x96\xcab\xd7\xf8v\x8a\x88d\x92I\xfb.+\x9ao\xff\xb6\xff.\xdf\xff\xa7\xfe\xad^Z\xcb\xf2\xd4:c3\xd2,O\x1d_\xd6\xe8,^\x92\x94cO0)\xa6\x16S\x8b\xa9\xc5\xd4bj\xf1>-^\xb1\xa3\x14yV}\x97y\xd4,\xea\xf1e}\xa6\x16\xf1w\x8f\x16\xed\xcb>Y\x8b\xb2\x864U\xc9\x1a\x8ai\xd1W\xd9\xee\x15\xe3z\xa7\x16=\xfa\xf0d\xf9T\xee\xa31^c\x8d\x16\xbf\x9dbj1\xb5\x98ZL-&\xc5\xd4\xe2.\x8a6\x8fX\xb7U\\q\xdd=1I1)&\xc5\xa4\x98\x14\x93\xe2\xf7R,\x8fE\xb1\x8d\xe1\x8f\xe4\xe7\x95\xf5\xc7\xaa\xf3f-\x8ev\x8a\xcd\xb7\xd2\xec{\xa1\x0b\xcdgy\x94\x17S\xd5\x1dZ<\xa9W[\x8bR\x95\xd1\x98U\x95\x93bRL\x8aI1)&\xc5\xa4\xf8f\x8a\xb1J(+2\x8d\xaf\x8e\xcd\xa2\x7f\xe4\x18O\xb6T\xe7\x1f' + shift_0 = (25, 11, + b'\xcd\x90\xa1\x0e\xc0 \x0cD+&N"\xb1|\x02\x12I?\r\xc1\x8f!\xf6[\xcb\xe5B60\xd8AH/\xa5\x8f\xf60\xfb\xe7\xea\x19\xde\xb3\xd9\x88p3\xf8\x88-\xc0\xb9[\xa8\x90\x1a\xf1JRWb\x9d\xceK\x88f$\xc1\x17**\x94ST\xaf/\xc1\xca\n\xc5\x16t?sfw\xe9\x99\x8a\x84&X\t\xf8]V\x82N\x98#A\x07;\xc1Iv\x82}V\x1f_bVM}v\xbe\x13\xe7\xdf\xdd\x89\x07' ) - testfont2 = (163, 215, - b'\xed\x92\t\x8e\xe40\x08E\xfb\xfe\x97\xec\xa3\xf4h\x14Y\xb6\xe1\xb3\x18/I\xaa \x9a\xe9\na}\xfc\x9f\x9f\xb4\xb4\xb4\xb4\xb4\xb4\xb4\xb4\xb8\xfd\xfe\xf5O4&)\xee\xa3x\x968\x9f/vw\x94\xa3\xd7\x98\xa1h\xbd_\x1e\xa9\xd6z\x86\xf4\x17\x9f\xf9\xfaeu\xe7\xf3Y\x13\xcfi\x91O\xd8\xcf\x88\xe6\xe1\xb7]A\x94w\xe1S\xcb[X\xd5\xac\xcb\xcfj\xb1\xbf<\xa6\xc8\xb9\xd7X\xfa\x7f\x9cb\xdb\xbf\xce\xd5v\x92\xb7@;\xf5\xf5t\x8e\x98\x10\x7f\xeb\xbbP\xafF\x91z\xf8\xdf\xf6\x163Zly\xf5\xbde-\xca\xef\x16E|\x89\xfe\x17\xbd#zC\x1cQ\'\x8d\xe2\x0c\xc3\xbe\x13V^\xafN\x9b\x10\xd7"\xbe\xb4\xad3\xbas;\x01W;\xd2\xa3\xf4N)\xca\xca\x9e!\xdaO\xdcNnk\x11UC\x9e]\x14\xa5\t5\x8asZ\xe4uu-bf\x88\xa1\xedA\xbb\xf3_\x9c*\x9d\xd0\xd2\x1e\xba1\xd2\xe0Z\x8e\xfd\xa585\xed\xb2\x92:\xb1^q\x0e\xd2\xb9\xa4\xd7(\xc5\x9a\xdd\xdf\x87\xef\x12\xe3\x88uFg\xf0U\x99\xa7h\xc7HJ\xa3;\xf0:\xe8\xfa?/\xb7(\xc5h\xb7\x9f\x8f\xb4\xb3\x14?\xd5\x92bRL{\x83\xb6>\x7f\xcf\xc8\xb7B\xa6\x12*\xbcZf>~<\xca\xe3\xf1\xd7=qE\xb9G\xff\x05\xbf\xb5\x7f\xaf\xdf=C{\x03\x1e\x85\xf2\xc6I\x9cdXf\xb6\xfc\x92\xcad\x8a\xe5M\xdf\x82+\x18iz\x9cE\x9d\xc6\xcaD[\xfa\xee\xafk\x81{\xf1\xae\x1e\x8a\xa3{\xf8=\xd4\xe7\xd9\xbaL\xe4\xd93F\x11\xd5\x96\xa7\xa4\x14\xdb\xebS-{\xf4\x18\xa1H\xbb{6\x95\xd4\x87\xd4\xf8\xf3\x13\xa1(+\xcfC\xb1\\\x99Nd\xef8J\x91+\xc6\xa3!\x14\xe3\xdd\xfd\x9c\x169\xc5V\x9f|\xd7\'h\x11\xcd\x13a(eyvE\xb5z\x8a}\x9d\xd5\x14c\xf3\xd5\t\xb1\x82g(\xea~\xdc\xcb\xd6\xa2|yM\r\x88Ol7\x9f~\x90\x1a#\xb5\xec/R\'\x8d"\xca\xc13\xd3\x19\xd0\xfbj\x86kM\x9bM\xd6\xc7jM\x8c{\xd2\xd2V\xab\xb0}\x92HZ\xda\x93\xec\xf7o]\xa5\xb6V\xffvj\x97\xf9\x9e|\x8b\xff\xef\xe5o\xf9\xdeF]\xdf\xaa\x07\xfdj+\xf0\xea\xda\x06\xe79\xee\xa1\x88\xc8\xf0w9\x16\xb3\xf72;MqM?\xaa\x1f\xecC\x14\xedJ\xf8B\xd6\x06g9\xae\xa7\x88\xbf\xd6\xc7O\xb1dFzG\x14|/C\xbb\x0eW\x15\xe63\xce\xf0\xbb)"F\xfc\xfb\xa5W[\xe9\x9a\xf7\xeaS\x1f\xea\xd3\xeaZ1g\xaf\x81(r\x8e\x98bl\x0bt1K\x9d\xf7*\xd1\xd3\x07\xdd\xb5\'+m\xf9l\x8a\xa7\x18jZ\xf5\x9e+\xeec\xb8\xe2ViI1--\x8d\xdb\xef_y\xa8W\x8b\xc1Ym^\x8d@yr\x8c\xbf\x97\x7f?\xff\x97X\xaf~z\xdc\x81\xc7HY\xda\x17\xdfF#\xbd\xe6\x18\x8eO?JQ\xba\x86\xac=\xcf\xce\xdad\xe3\x14=\xf5m\x16R\xc4xe\x8b\xf6X\xa7\x11\x8a\xfa\xcd8E9F\xeb%\xd1\xc3\xf4G\x15\xe6\x8b\x1ee\xe8\xa7(Un\tYJ\x8bR\\Af\'C\xdffZe\x0fm\x9d\xa2\xd4i\x96"\x9e\x8d\xdf\xd9\xab\x97Y\x8aZ\xdds\x14\xedN\x94\x8f\x87H\x84\xd9*\x8a\x9e]\xf9\xaf\x19\x8a\x1eej\x17\xf43\x8cq\xe5*\xaf\x9e\xba=\x8d\xe2Y\x98\x8fTY\xd7\x18\xca\xf2\xeb\xc1K\x05\x7fY\xa3\xce\xb4\xb4\xb4\xb4\xb4\xb4y\xfb\xfd+\x0f\xf5\xf1\x08\x1eS<<\xa2\xcd\xba\xbc\xdc\x83\xeb\xd0_4\x86\xfbx\x16\x8d\xd6c\xb4=\xbc\x0c\xa5\xa9\xb5\x18:\x896\x19\xaf\xc3}V>\xdek\x94\xe2\x7f\x1f\xbd\xaaw\xfa\xf5\x14\xc7.-\x93\xf0\xd4\x19\xa1h\xdd\xb0WZ\xfd\xbd\x83b_\xf9=\x14\xf1\xe5m\x8a\\\x931\x8am%L\x11E\xd8\x14y\xd6x\x1d/E+\xbel\x85\xd8\x9f\xa2\xb8W\x8b\x9a>\xfc\x14=\xbd8E\xda}%E\xac\x98]\x14Q\xd6\x1e-\xea\xbd\xd6Q\x1c\xebv\x07E)\x0b\xc7\x9c\xa6\x18\xe9\xf6$\x8a:\x85\xfd\x14\xc77\x93\xe6\xf7\xed\xc1}k(F\xef)K\x8a\xb1{\xc5)rn\xda-\xa5o\xfd\xcco\xb2\x91\xb9W*\xe6\x13,\xc6#)""\xd7\xb3?+-\xed^\xa5\'\x85\x08\xb5\x96\x1b\x7f\xeb\xa9\x16\xcf\xb3h\xdf;\x0bg\xa1{*\xc1g1|\x17\xc5\xb7h\xe1\x8d\x14#\xda\xbcr\xfaL\xea\xd3c\xa4:\xfc\xd7J\x0f\x9e\xc8sW\x9d\xd1\xf5u\x94\xe3\xecf\xf2|\xb1\xca|\x0f\xf4K\xee\xe1!&3\xb2\xea\xad\xa1\xa8\xeb\xde\xa2\xe8%$i\x8cv\x94\xfa\xc5\xb5x\x9a""\x19\xa5\xd8\xfb\xbc\x14\xad+z=wSD\x1a\xb2&B\x84"\x14}*\x8bP\xac\xcf\x9b(\xd2\xa9\xb1^=J\x99\xa7\x185\xc4\x9e\xfa\xa4\xbb\xf3\x8bIu\xfa\x98\xb1\x1b\xe2y<\xfd\xd1]w0\xf4\xeb\xec\t\xf6\xb4y\xdeD\x11\xa93)\xc6f\xbc\x9e\x9f\xb4\x86\xc8\xb34\xd4O\xb4\x7fB\xdeoL\xe7hj_\xe6\xd8w\xef\xbc|\x1e\xef\x84\x92>\xecJ\xe8fz\x16\xad\xe1\x9b1^\x99\x13\xb1\xef\x1e\x99P\xbeW\xcd\xc4\x95\xf0e\x97\xb4g\xa9\xea\xfa\xfbM;\x8fz4>\x95\xe0)\x86\x9e\r\x9e\xce\xd0\xa3\xbc+\xa6\x8d\xe0\x9e\xe8\xf6\xb8\xcaI\xaek\x18\xf6s\xa3_4W\x8by\xa3\x16\xf7\\\x06\xb1j\xb5\xf79\x14\xfb\xbdd\xa5\xe9:\xa3|\xaaGS\x9eD1\xb6\xbd\x87"\xde\xb3\x9fg\x86\xbd\xbc\x87g{\x9d\xeb\x0cE\\\x07\xdf>\xb6%\xdf5V\x97O\xb4\x86b\xab\xc8\x19\x8a\x16\x93\x9ek\xdb\x97nf\x13\x8bp\x1c\xdbc\x9cb\xd9G\xba\x98\xa4)i.MY\xa3Z|\x13\xc5\xc8\xae\xb8\x8eEQ\xbb\x85\x96a\x93}\x1b\xc58{\xbe\xbd\xaeqD-\xc6\xb0\xf6\xa2\x1d\xd1<\x94l\xeb\xf1r\xed\xf3\xb8\x07\xf5\x1a\xbf@K\xc4Rg\x9a\xa5\xb2\xd85\xbe\x9d""\x99d\xd2\xbe\xcb\x8a\xe6\xdb\xbf\xed\xbf\xcb\xf7\xff\xa9\x7f\xab\x97\xd6\xb2<\xb5\xce\xd8\x8c4\xcbS\xc7\x975:\x8b\x97$\xe5\xd8\x13L\x8a\xa9\xc5\xd4bj1\xb5\x98Z\xbcO\x8bW\xec(E\x9eU\xdfe\x1e5\x8bz|Y\x9f\xa9E\xfc\xdd\xa3E\xfb\xb2O\xd6\xa2\xac!MU\xb2\x86bZ\xf4U\xb6{\xc5\xb8\xde\xa9E\x8f>\x95\xfbh\x8c\xd7X\xa3\xc5o\xa7\x98ZL-\xa6\x16S\x8bI1\xb5\xb8\x8b\xa2\xcd#\xd6m\x15W\\wOLRL\x8aI1)&\xc5\xa4\xf8\xbd\x14\xcbcQlc\xf8#\xf9ye\xfd\xb1\xea\xbcY\x8b\xa3\x9db\xf3\xad4\xfb^\xe8B\xf3Y\x1e\xe5\xc5Tu\x87\x16O\xea\xd5\xd6\xa2Te4fU\xe5\xa4\x98\x14\x93bRL\x8aI1)\xbe\x99b\xac\x12\xca\x8aL\xe3\xabc\xb3\xe8\x1f9\xc6\x93-\xd5\xf9\x07' + shift_1 = (25, 11, + b'\xcd\xd0\xa1\x0e\x830\x10\x06\xe0\x13\x15\'\x10\x95\x88\x99\xcaI$\xb2$\x13[\xc2\x03\x8cd\n\x89\xec\x1b4\x04\xc9#\xf0&\xa8% Hf\x11$TNN"\xbb\\\x9a\xa5\x83\x05\xbf\xd64\xd7\xff\xcb\xf5\n\xf0\x8fK\xe2\xd8\x1a;\xb6\x12k\xd5,\x00\xcdR+L\x8c\xa5\x8d\xc9\xe9\xe8N\xb5\xe2\xa5;\xf1r\xc8\x8c\rrc\x87\xcc\x0b\xcd\xd3\xc2\xd8\xb4\xd0\x9cDZ\x9c/L0\xe1jL\x90\xd0\\"\x00\t\x89$\x00\xaa\xc8\xd8*\x02 \xd1\xc7t\xebk\x12\xa7\xf9\xfa`\x82\xc4\xe7\x05ka\xec4\x7f\x0b\x80{8\xb6\x87\xa7\xe6\xd4\xa3\x8f\x7f{\x04\xb9\xcby!Q\xe2\xedU+?\xc7Z\xb8\x94\xafQn\xc8(\xb77\xf9Vh\x1ev\xc6\x86\xdd\xfe\xefn\xc5\x1b' + ) + + symbol_0 = (20, 11, + b'\xc5P!\x0e\xc40\x0c\x0b\x080\x1c\x1c\r,,,l\xa4~l\xa0\x1f\x1b\xe8\xb7N\x96U\xdd4\xe9\xf0\xb5J\x94&\xb6\x93\xd4\xec_gV\xe4\xacf\x1e\xab\x99\xad\xe61\xca(f\xf4\xf7\x89D\xf2\xc5H\xd6\x81\xbc\x0ed\xc7(b\x08G\xbb\x0e\xfa\xad\xbc\x1a/\x95\xc4\x10N|Vg\xed \xce\x03\xe9A\x1cs[\x0fI\xae&TD\r2G\xd1\xcc\xc21{\x9f\xbb##v\xa027\xd06\x9ajV\x8f\xef\x1eO\x1c\xf7\x7f\xeb\xed\x7f\xf9\x85S\xf5\x03' + ) + + symbol_1 = (20, 11, + b'\xc5\x8f\xa1k\xc3P\x10\xc6OL\x86\xe0c\x08\xbeu\xd9l\x9a\xde\x0f\xae$\x84v\x87nA\xe4\xaf\xd8Mm7\x9cNQ;Ede5\xaf\xb9JMme\x91T\xd5R%\xc7\xba\xab\xa7\xa4z\xbb\xc8P\xde\xc5"\x87,U0t%\xc7\xb8\x9d\x19\xb8\xa1\xc8P\xdb\r]\xbe\x1c\xdcq\x9f\xf3\xdd\xee. \xc2\x97*X\x9c0o\xf8\xc4\xa4+\x9fr\xfb\xca\xa8\xb1k\xfc\x00\x7f\xc1_>\x1f\xec\xbb\xcd\'\xb8P_' + ) + + caps_1 = (20, 11, + b"\xc5\x90\xa1j\xc4@\x10\x86G\x9cXqb\xe5\x8a\x98\x93}\x84\xc8-T\xb4\x10\x91\xba\x04V\x9d\x8c\xcc\x1b,\xa7J\x88\x08\xa1\xf2\xde\xa2rU!\x11\x81\xd8\x15\x0772r\xe5\xc9)\xc3P\xd27\xe8\xa8\x85\xef[\xfe\xf9\x07\xe0\x7f\xc6\xaa\x18\x90>\xbf\xac\x028\x9e\x91\x8eg\x80\xd77$\xa4\x18\xac\x12\xca\xaf\xa2a\x86\xb4\xd4\x00e\x87Tv\xe2-\xf5\xf5\xd1\xb7K\xfdK\xf5\xe5v\x07xy\xf2\x1a \x86j\x8dA<\xaf\xabu\x18\xd9\xf3\x9a\xb3\xc4\x93\xc9\xb6\xb2\xcb6\xf1\x0e'\x97\xf4\xc5\xaa\xdb\xbdZ\x0f\xa7\xbf\x9e\xd7H\x1f\xef\xfc_\xf6s\x89\xf9\xb7\x89!\xdb\xbc\xdes\xe7\x9c)\xd2\x9c\xb3\xa7\x9e9\x8d{Z\xe5R\xdf\xee=\x8a\xc6\xa59w\xa9hd?\xb6\xfa\xf6\xfa\x90F\xfb]\x86\xd1L\x00f\x1a\xc6\xdd\xf3\xdaLHf\xb2\xea\x07" + ) + + bip39_0 = (50, 11, + b'\xedR\xb1\x0e\x85 \x0cd`\xe8\xc8\xe8\xea\xe8\xc8\xc8\x08\x89?\xc6\xc0\x8f9\xf0[\xe6ri\x8a/5\xf1\x03\x1eFs\xb6w\xb4\xf4\x08\xe1\xbf\xbe\xae\x9e\xa4I\x1b\x19\xf8\xda\xa4]\x1b\xd0\xc8\x1aSd<\xb0B\x00\x13\xe8]\xcb,\xa2\xd0j>\xee\xd2\xe2\xae|\xdd\x85\xaf\xf1\x9e5\x18\x7f\xd3\xf6\xd4S\x15pP\x1b\xf9\x91\xf1h\xa7\xda\x9d\x9d\x97\xbcg\x8d\x10f\xf9\xa2\xadB\x1e\xbe\xb3 :\xcb\xc8UVd<\x9b\x81U\xf3\xb4\xe4!\xc69\xcf\x82(O\xce\xda#S\xa1\xc8x6!\xdb\xc5\xd3\x92\xa7\xfd\xf5d\xee\xeb\x1f\xfa\xa1\x87D\xc6{\xcej\x96\xf3\xf0\xb5\xbfs\xa6v\x96\x9e4\xeby\xbe\xcey\xcd\xbekW\xcf\xb1\xce\x03\x9e\x8d\x8c\xbe\xfc\xbb\xeb\xd5\x00\x8a\xbb\xa75\xdfn' + ) + + bip39_1 = (50, 11, + b'\xed\x92!o\x84@\x10\x85G \x10\'VT 0\xfc\x84J$u\\\x82\xa0\x8eKP\'\x91\xc8:\xd2T4\x04AP\x15\xb8\xfe\x0c\xd4% H\xae\xae\x88KX\x89D"\xb7y\xd9\\\xe6\xae\xe1\xda\xfe\x80\xaez\xd9y\xdf\xbe\xd9\x9d%\xfa_\x7f]\xfeV*\xa9\x86\xc63\x896{\xa96{"\xcf\x1c\x1a\xbd\xc7\x8a}EZ/D\xf5R\xa4E\xfa\x13\xdb\xefP\x95\xaaH\xc1\xf6;\x10Da.U\x98\x13\xa1\n\xa6\xdf\xb1b\xdfeF\xbd\xbc>b\xff\x16\xebo\xfd\xad\xe1\x80\xcdDt,+\xa2\xa1\x89\x8eC\xa3}\x99@w\xac\xd8\x87\x93=\x93\xd3N\xa3x\xfe\x9d5\x9cx\x86\xcf\x9e\xc2\xdc\x9ep\xdf\xd3\x18\x1d\r\xe7R\xb1O\xbf\x10\xde\x00\x19\x07\xab^\x82d\x8d\xd5ou\x1a\xcf\xf3\x88g\xc3\xc9\x84T\xb8y&\x88\x0e\xd6\xd0\xd8\xd3\xa5b\x1fN\xee\\\x9e\x07\xaak,2:\xf7\xe5^g\x98\x0f\xb8Q\xe7\xea\xfe:\x17\xddxf:\xf2h<\x1aw\xfa \x1f\xe7\xe0\xb5\xc9\xacJ\xdd\xbb\x10\xf5.L\xe6\x1a\xf6\xbd=\xa3\x8bh\xb24v\xb2\xbc\'+\x81\xbf\x82\xac\xc4\xec\xb4Z\xa3c\xe092\xabR\x1b\xeb\r\x8de2\xd7\xf8\x04e%R\xa2\xf3av:\x1f\xee\xc9\xc6\x96\x15\x93;\xfd\xa8\x16)\xbb\x84\xdfF\x95\xba\xac\xfc\xbc\xac\xdcm\xa0\x06\xf2\x87\xbf\xbd\x861\xdcL\x96p\xd5&\x17\x01\xbe\xf9\x9e\xa3\x9a]\x16\x81;3\xabR\xfb\xb9\xb1~\xced\xae\xf1\tz\x17%\x940\x16\xf7\xa2D\x9b\xccY\x82\xec\r\x1b\x97\x8e\xcc*\x12\x14\xa9K\x90k\xd8\xf7\xfe%5Q\x11\xb0\xcb"\xf8+A%\\\xc7\xcf\x047{\xa2\xcd\xfe>A\xcc\x84\x12a\x1c\xd5E\x10\xd5a\x0cr\x18CmO\xddod7u\xb7d7uH:\xaa?_Vk?\'\xf2\xf3\xd5\x1ad,\x91~\x03' + ) + + bat_0 = (16, 13, + b'c`\xa01X\x80\x07v\x00\xe5\x7f0\x9c`\xd8\x80\x15^`x\x00\x96\x0f\xc0ar\x01A\xf9\x1f\x0c\x07h*\xff\x81!\x01(_\xc0`\x80\x15v@\xdd\x87\x1b\x82\xe4\x15\xf0@\t\x06\x06\x00' + ) + + bat_1 = (16, 13, + b'c`\xa0-80\x077t\xe8\x01\xca\xffw8\xe7\xb0\x16\x1bl\xb8v\xe0\x1eX\xde\x0b\xbb\xc9\x0e\xd90\xf9\x03Q\x07\xfe\x03\xa1%\x86\xfc\xff\x03{\xa9!\xef\xa0y\xa0\x1a\x08%\xd0\xe5\x1d\xde\x83t6\x14;hb\x85=\x10\xf7\xe1\x81 y\t|\x90\x81\x01\x00' + ) + + bat_2 = (16, 13, + b'\xb5\xceA\x0e\x800\x08DQZ(\\k\x8e\xd6\xa3\xcd\xd1\xb4V\x13M\xb0+\xe5-\x7f \x88\xfc;\xb4w\xb0\xbd\x07\x1c-\xd3\x9d~\xf4\x9a_\x86^\x9d\x95q\xf2G\x0f\xb6/:\nu\x82\xde;blvEI\xd9\xfcoa\xf4%\x91\r' + ) + + bat_3 = (16, 13, + b'\xb5\x8e\xc1\r\xc00\x08\x03\r\xee`\x8c\xc6h\x8cVS\xa9\x9f\x88\xe4\xd5r\x0f$l\x0c\xc0\xbf\x95\xbe\x07.\xc3\x05\x96O\x04\x93\xad\x87\xcd\xc9e\xaf\x9e\xa6\x94\x15\xab\x9e\xf2\x0b\xbd\x00_I\xdd/\xf6\xa6:&\xe4y\xfe\xdb\xd3z\x1e\x08\xad\xdf' + ) + + plugged = (11, 14, + b'}\x8e\xd1\x11\xc0 \x08C\x038\x18\xa3e4F+*\xd5\xebq\xd7\xf0\x83\x0f"\x01R\xe2\xd8\n\x10G\x03R\x9dA\xff\xa9[TG\xe5\x9a\xbb\xf4\xe2t\xf7\xd2\xc9\xe3\xdeE(\xf3go\xd4\xd7\xbd0\x97K\xf3\xb2\xeci\xe6y%Qy\x98\xdb\x98\xfb\x02M\xdf\xc9\x9b<\xdf\x18,\xf7\x15\x85\x86\xa6/}\x00' ) diff --git a/graphics/icon-samples.png b/graphics/icon-samples.png new file mode 100644 index 00000000..847a2ed3 Binary files /dev/null and b/graphics/icon-samples.png differ diff --git a/graphics/arrow_down.txt b/graphics/mono/arrow_down.txt similarity index 100% rename from graphics/arrow_down.txt rename to graphics/mono/arrow_down.txt diff --git a/graphics/arrow_up.txt b/graphics/mono/arrow_up.txt similarity index 100% rename from graphics/arrow_up.txt rename to graphics/mono/arrow_up.txt diff --git a/graphics/box.txt b/graphics/mono/box.txt similarity index 100% rename from graphics/box.txt rename to graphics/mono/box.txt diff --git a/graphics/mk4_nfc_1.txt b/graphics/mono/mk4_nfc_1.txt similarity index 100% rename from graphics/mk4_nfc_1.txt rename to graphics/mono/mk4_nfc_1.txt diff --git a/graphics/mk4_nfc_2.txt b/graphics/mono/mk4_nfc_2.txt similarity index 100% rename from graphics/mk4_nfc_2.txt rename to graphics/mono/mk4_nfc_2.txt diff --git a/graphics/mk4_nfc_3.txt b/graphics/mono/mk4_nfc_3.txt similarity index 100% rename from graphics/mk4_nfc_3.txt rename to graphics/mono/mk4_nfc_3.txt diff --git a/graphics/mk4_nfc_4.txt b/graphics/mono/mk4_nfc_4.txt similarity index 100% rename from graphics/mk4_nfc_4.txt rename to graphics/mono/mk4_nfc_4.txt diff --git a/graphics/scroll.txt b/graphics/mono/scroll.txt similarity index 100% rename from graphics/scroll.txt rename to graphics/mono/scroll.txt diff --git a/graphics/selected.txt b/graphics/mono/selected.txt similarity index 100% rename from graphics/selected.txt rename to graphics/mono/selected.txt diff --git a/graphics/sm_box.txt b/graphics/mono/sm_box.txt similarity index 100% rename from graphics/sm_box.txt rename to graphics/mono/sm_box.txt diff --git a/graphics/space.txt b/graphics/mono/space.txt similarity index 100% rename from graphics/space.txt rename to graphics/mono/space.txt diff --git a/graphics/spin.txt b/graphics/mono/spin.txt similarity index 100% rename from graphics/spin.txt rename to graphics/mono/spin.txt diff --git a/graphics/wedge.txt b/graphics/mono/wedge.txt similarity index 100% rename from graphics/wedge.txt rename to graphics/mono/wedge.txt diff --git a/graphics/xbox.txt b/graphics/mono/xbox.txt similarity index 100% rename from graphics/xbox.txt rename to graphics/mono/xbox.txt