diff --git a/graphics/colour/splash.png b/graphics/colour/splash.png index 86731b64..2a4a5d34 100644 Binary files a/graphics/colour/splash.png and b/graphics/colour/splash.png differ diff --git a/graphics/compress.py b/graphics/compress.py index bf577da3..a0388810 100755 --- a/graphics/compress.py +++ b/graphics/compress.py @@ -90,23 +90,27 @@ def make_icons(): sm_font = ImageFont.truetype(FONT_PATH + 'iosevka-heavy.ttf') targets = [ + ( 'brand', True, 'Q1', dict(col='#ffb000') ), ( 'shift', True, 'SHIFT', {} ), ( 'symbol', True, 'SYMB', {} ), ( 'caps', True, 'CAPS', {} ), ( 'bip39', True, 'PASSPHRASE', {} ), - ( 'tmp', True, 'EPHEMERAL', dict(col_0='black') ), + ( 'tmp', True, 'EPHEMERAL', dict(col_0='black', col_1='red') ), ( 'devmode', True, 'DEV', dict(col='yellow') ), ( 'edge', True, 'EDGE', dict(col='yellow') ), - ( '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)), + ( 'bat_0', False, '\uf244', dict(col='red', y=-1)), + ( 'bat_1', False, '\uf243', dict(col='yellow', y=-1)), + ( 'bat_2', False, '\uf242', dict(col='#0f0', y=-1)), + ( 'bat_3', False, '\uf240', dict(col='green', y=-1)), ( '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)) + targets += [ ( 'ch_'+c, True, c.upper(), dict(col='white') ) for c in + '0123456789abcdef'] + + samples = Image.new('RGB', (320*3, ICON_SIZE+1)) s_x = 5 for basename, is_text, body, opts in targets: @@ -120,6 +124,8 @@ def make_icons(): if state == 0 and 'col_0' in opts: col = opts['col_0'] + if state == 1 and 'col_1' in opts: + col = opts['col_1'] img = Image.new('RGB', (100,100)) d = ImageDraw.Draw(img) diff --git a/graphics/graphics_q1.py b/graphics/graphics_q1.py index 11e41cb2..076d6988 100644 --- a/graphics/graphics_q1.py +++ b/graphics/graphics_q1.py @@ -5,8 +5,12 @@ class Graphics: # (w,h, data) - splash = (264, 88, - b'\xed\x92\xbfk:\xcd\x13\xc7\x17\xdc\xe2JKK\xd3Y\xa6\xb4\xf4\xc4"\x8d\xa0\x85 \x82`)\xd8\xa4\xfc@\x9ad\xab\x14\x16)ED|J\x0b\x0bK\x8b\x14\xe6 \x16r\x08\x06\x11\xf4O\xb0\xb4\xf4\xf9\x0c\xf7\xdd\xe7~\xed\xde\xed\x9d\xc6\x98\xaf\xf3\x9e\xc2dowf\xde3/B\xaeKy\xadU\xcck\xe4fU\x9b\xd7\xe6\xfe\xd3V\xb1U\x14\x9d_\xbb\xda\xe5U\x17bTyZ\xc4\xcb\xd0[\x1ew\xbd\xa5;g\xbb\x1cS\xfc\xffC\x7fT9\'\x0fPa_?\xee\xac\xe9^?\x0f\xadb\xab\xd8[\xee\xeb\x87\xbe5{B\xf6\xf5\xed&\xafY_\xdb\xe5\xa8<\x8c*\xf0\n\xb2\x9e\xcaCm~\xdc\xc1njs\x98\xa7\x95\xefi\xd1.C\x9fy\x8d\xb3\xca\xc9\xdd\xd7\x9f\x16\xadbm\x1e\x95\x07\xeb\x9e]\x19\xfe\xb7\xfe\xab\xcd\xdf\xbf\xf8{\xff\x96ks\xf0\x08,\xc1\xaf]\xd7\x7f\xf3i\x01\x15\xec\x1b\xd7\xcd\x03\xc4v3\xaap\x1a\xf8\xfc!`\x1bQy\xb8\xa3\x9f)\xeb\xf5\xa9<\x10\xf2\xfe\x05y\x0e}\x8b[8i\x97\xad\xdc\xc7\xdd\xbe\xee\x9cpm\xbe\xdd\xc0\xa9\xbd\x0bU\x1e\xf2\x1a\xdc\xcbkn\xa2\xf9\\\xf8\xb9\x7f\xcb\xab.\xbf\xe5\xae\xeb\xbf\t\xce\xf6u\xf2\xabU\x9b\xb7\x8a6!?\xdb\x87\xf7\xacUl\x15\x9d,\x9c_w\x14j\x9c\xcb?\x10\xe7%\x1du\xbb\xea-\x8f\xbb\xbc\x86s@\x11\xd2.\xaf\xba\xc7\xdd\xa8\x82\x93@\x81Z\xc5\xde\xb2]\xc69\xa0P(\x14\n\x85B\xa1P(\x14\n\x85B\xa1P(\x14\n\x85B\xa1P(\x14\n\x85B\xa1P(\x14\n\x85B\xa1P(\x14\n\x85B\xa1P(\x14\n\x85B\xa1P(\x14\n\x85B\xdd\x82r\xfa0a\xd2u\xc1\x1f3\xda12zx\x86\x8c\xde1f\xc2\x0c&\x1d&rz\xf0\xbb)}6\x92\xb1\xbbo\xb0\t5\x0b\xeb\xc0\x00\x1f\xe9\x9cJ\xb64y\x93:\x19\xd3\xd2K\xb4\xde\x92\xe4\xd9\x98\xd2\x19\x1d\x18\xf7\xba\xca\xfd\xact\x13\xae\x89\xd2\x9c\x1eg\x9b\xde\xad$\xc9\x98N\xe8#\x1b\x18\xff$\xec\xf7U\x16\xf66\xab\x87\xb9\x08\xab_eb\x1a\xecw\x13\x1a\x8f\x88gc]P\x8b\x19\r\';\xa3\xcfB\x9c<2\xf5\xdeRdB\xed)\xe6B\xab?\xbc\xa8zY\x17\x1a\x92>J\x11rTY\x895Y\x83\x8d\xff\x92\xaeJC8\x11\xe14\xc8\x88\x18&\xe2N\xda\xde\x9f\xba{ "\x98\xecp\x1a\xa2\xf4\xe9\xa4A\x8d\x88)\x8d\xe2FL\xc4,R\x8eG\x96\xd5\xef\xf5\xd2\xcb\xc3\x8b:\r\xc1^\xd4h\x10\x13\xe1\xfe>LD\xe7\xa1\xc1\xa2\xb8\x0f&[\x8d\x06U"\xbc4\x84\x13\x91\xceE\xf3"""\xa3G\xcd\xe1\xdcJ\x95E\x99\xa4\xc8KN\x99\x06\x7f\xff\x9a\x87\x871\x8d\xceC\x93E\xf5/#B\x9d\x06\x15"D4\x84\x11\x11}\x97~"\xeec\xe4\xe0D4X\xd4Iz\xbdD\xa3\xc1\xdb\xff\xcf\xf0 &"\x1a\raD\xc8h\xb0\xe2\xe1\xe5|\x1e\xd2\xfa\x8c"\x0f\xc8\x83\x8c\x06\xe4\xe16x\xf8\'q\xaf{#\'\xa0a]x\xd0\x91\x87\xff\x7f\x1eTcJ5\x82< \x0fV\xcchZ\'\xc8\xc3\x95\xf30\xa6\r&\x8eW\xe3\x9c<\xb8i@\x1e\xae\x95\x877i\x8e\x12;\x1f\x0f^\x1a.\xc9\x83\x86\x93Ju/\xcfC\x8aL|>\xe4<\xc0&R\n487\xf2\x1d<8s\xbc\n\xb7\xf7\xe7#\x1e\x0fZ(\r\x10\x03\x0f\x11"\x1a\xec9ft\xff7/\x11\xe2\xba\xa5\x0b\xf3 \xa2a]H9|\xfa\xbf\xfa\x89\x10m\xa4y1\x1edD<\x1b\xd1y\xd0\xc8@\x90\xcb\x14\xcchF\'\x8e\x98\tnL\x1c;\x9b\xc6\xca`\xfe7i/\x0f\xa6\xeb\xad8\x86\x89*\x0b\xe2a&x#\xea\xc2\xcd\xde0\x11\xe6D\xe4u]\xc8\xe8\x97\xe3A\x8d\x08/\x0f\xa6\xe2\x9a\'S\x1d\x97\x08\xe7\x16.\xc5\x83\x8c\x88\xf4\x89<\xf0\xadT\xd9)4D\'\xa2\xe1\x9aa|\x1e\xfe|\xc4\xe7ADCt"\xdc4\\\x8e\x07B\x9e\x05DT\xd9)\')\xa2\xca\xc3\x83gc\x8d\xffr\xa5s\xee/\xaf\x92\x1c~"\xaaR\xa6\xa2oE\x85\x88\xa0)\xaa\x12\xe1\xa7\x81\x90a"\x1e\x0f\x0fz<\xff\xb3@\x1f\xaaD<2\xd1\xdb)\rs\xcb\xc91]\xd92\xba,GI\x9a\xc3KD\xda\x91C\x95iy\x9faD\x98!ST!B<\x9f\x8c\x12I\xde\xe8\x18A\xb3\t\xa2!\x13\xe2C\x85\x88G\xc9\x96r\x0e2\x874\xa8F\xd31\xefW\x97\x97\x87\x17G\x8eDP\x0e\xa7\xebgW\x8e\xd2\xcbi4X^\x86\t\xf1ff\xb4c\x84O\x11\xe6\xd81\xc4\x934\xe90\x91\xd3\xa3\xbf\x13\xc7\x84\xfa\xf7\xd1`\x13j\x86\xb2\xd01\xd29\xa2\xa04y\x93:\x19\xd3\xd2\x8b\xfceV\x1f\x18&\x9d\xd2?\x1fZH\x8d\x12\x1bS\x93Nh\x83\xf9s\xc0&\xfe\xe6`a9\xaa\xff\xcb\xe1\xdf\xa9|\x9bA[\xf9\x17' + splash = (270, 45, + b'\xed\xd2!p\xa3L\x18\x06\xe0\x855\xc8\x93\x95\xc8\xfe2\xb2\x0e\x16U\x19\xd9\x93\x95\x91\x95Qt\xebz2\x12\x19\x19\x19\xd9\x8a\x02\x91\xc8\xc8Jd#\x91\xcc\xfc\xe12-\xb0\xfb-|K\x12z\x9d\xec\xee\xcc\xcd\xf4\x08/\xfb\xbd\xfb\x10R\xaf\xabp\xc5\x0bZ\x06\xd0\xce\xd39\'\xbd\xcb\xf1\x16\xf6G\n\'\xech\xc4~y\x8a\xf7\xc8\xe1\xbd-\xbb\x8b\xc9\xc05\xb1^m\xd5\xe9\x9bsp\x8e\xcb\x9b\xf3\\1IAW\xdc}\xd3;\xdd4\xde\xb22\xf8H\x17\xb6\xe3\x1d\xd7\xa3p\x8eP\x95\xf1\xcb\x8b\x90\x19Wa\xdfy\xae\xe3\xbc\'i\xc5\xfb&\xda\xd8\xdd\t[\x85\x8e\xe6{\x0fl\x98\x8c~\x17\xd89\xaa\xb5d}\xc6\xae5\x14?\xf0\xfa\xcdL\xd1Ase\x0c;\x8b\xfa\x1c\xa7\xc8\xc0\xca\xe8k\xb5_\x86J\xc74nKv<}\x1b/\t\xb6\t\x8c\x8e%;\xbeQX\x86\xaa\x83\xe6\xba\xb7tf\x81\xcfq\x8a\x0c\x1d\x19]\xad\xe2d\xc0\xcd,\x847o|}\x1b\x05\xd5\xe9\xa2[\x07F\x06^\x87(\xa3_G\xc4\xf4f\x81\xce\xb1\xc7)2te@\xad\xea\xc9\x90\x9b\xf9\x1e\x1b\xb0\x0e\x1d\x19\xfd:\x1e8\xb6\x83\xe3\xeeU>\xc7)2\xdcPW\x86\xd8\xaaCte\x1c\x9aq\xbc\xef\xb6!\xeb\xd0\x95qh\xd4}\xd3\x97\xd1\xa5c\xc8\xbd\xfe=Gx\xfe\x8c\x82\xbe?57\x942\xfd\xba\xbf9x\x8avBA\xe5_<\'g\xb4!L\xd01G\\g\xdc>\x0e\x9bd\x9d\x0c\x91\xa1\xd6!\xdeI\x9e\xca\xb3@\xe7hJ?E\x86\xfc|G\'V\xff\x94\x11\xfb|\xba\xb1\xe5\xa7wq;\xe1\xf6Q\xfe\xce\x96\x9d\xcf\xc6\xfb\x13\xf6\xb6\x96\xac~\xbe\x00&\xe1\xc2\xbd_\xc7y*\xfd\x8a\x0e\x93\xa1\xd2!\xde\xeb\x8d/\xe7C\xe7(\xa8^\xc6\xc4\xda\xd1\xae\x8c~\x19\xf0\xa4u\xa7\x19\xeb\x93\x01\xeb\xa8\xefo,\x1b\xd0\x1c+^?\x8dX\x9f\x0c\xd5\xad8(\x19\x1b\xbb\xa0\x18\x1d\x98{\x85\xcfQ\'\xe12 \x1d\xaaN\x0bP\x064\xed\xbd\xa5\xb2\x01\xc98\xe8\xf8~\x1b\x84\xcc9\xde\xc6s\x02g\x88\xb7\x921\x8c\x8c\xeaK\xb7\x8f\x18\x1d\xb8{\xad\xce!\xa6\xe9\xda\xa8t\x88\x19\xfa\x9d\xb6\'\xce\x98CT6\xdasb\xeeoL\x1b\xffYx\x1b\xaa>E\x1d\xed\xdf\xcd\x952\xaa\x85\xd1\x81\xbdWB\xde\x9f\x8e\xb5!g\x0c\xb1A\xc8]\xbc\xdd\xe7\x144jMr\x896\x08q\xc3\x15\xafnyc\xb7\x7f5\xb1\xbad\xa8uD\xecg\xdb\xa8\x96#\xfd\xcfe\xdaP\xad?v\xb7\x0c\x95\x8e\x82\xfe|\x1b\xc4\xd8\xe8\\b\x86,C\xa5\xe3\x14\xf7jl\xfc$\x1b;\xfa\xc0f\xc0^\'\xc6\xc6\xa5\xdb\xc0oc\xc3\xd806\x8c\x8d\xf3\xdb\xe0\xc99|\x19\x1b?\xdf\x86,\xa3\x0c\x1cc\xe3\xc2l\xcc\xd8\x8d/\xeeg@F\x9e\xd6\xe706.\xc3\x06v\xcf\xb9\xb1al@\xbb9\x89\xb1\xf1\x13l,\xec\x19\x83\xf7GzJ\x1bm\x19\xc6\xc6O\xb0\x81\xbf\x93cl\x882\xbe\xc7\x86cl\xfcs6d\x19\xe3\xdb\xb8\x8b\xb7\xfb\x9c\x82F\xacy\xff\x97i\xc3\rW\xbc\xa0e\xb0\xb1\xdb\xbf\x1a\xdf\x06$cl\x1b\x0f\x8d\xafe\xcc\xb9h\x1b\xd7q\x9e\xc2\xbf\x1b\xdf\xc6\xc4\x1a\xc7FA\xe1/\xb5eT\xfb\xdeR\xd9\xb8\x8b\xe1\x84\xdb\xc7\x7f\xc1\xc6\x9c\xe3m<\'\x18\x19e\x90\xb1\xf3\xdaX\'\x11;\xec\xf6w\x0f;O\xaf\xe3\xe16&VAq6\xca`\x07\xeax\x90$/\x99\xca\x06\xac\xe3\xf6Q<\xc3w\xd8\x90\xe7\xe8\xb2Q\x06<\xe9\x97Qm\xe7\xac6\xea\x0c\xe8\xdb\xb0\x0e\x9c\x8d\x89\xb5\xa3bZ\xfd\xb4\xa0\xfd:\xe4F\xcb \xfa\xb2\xb1\xb1\xe5\xa7\xa2\x0eYF\x19l\xd9\xd86\xa09j\xe3\x84,\x80ID\x1d\xe0\xedP2\x92\r\xbc\x0e\x8c\rHFA\xd5\x19\x87\xe7\xefO\xcd-\xff\xa2\x0c\xa6_\xf77\xe7\xd0\xf3v\x82,\xa3\x0c\x9e\x13U\x9fy\xda~[\xde[\x1617T\xdb()\xf4\x168G\xdc\x14q\xfb\xa3\xd5\xc6\x90\x84\xf6\x1c\xd5Z\x0e8I\x9e\xbaoc\xdaP\xebh\x9eC\xcc@\xcf\x12\xf6\x7fI\xa7Q\xc7\xd3\xd5\xb1eu\x13Cm\x94\xc1Kr\x9c\rq\x8e!:\xf2\x96\xd0ql\xa8\xee\xac9\xcf\x10\x1b\xe2,\xfa:\xa0F\xf5t\xb4e\x0c\xb7Q\x06\xce\x116\xa09tu\xc8m\x8ec\x03\xbe\xb3\x82\x1ec\x03\x92\xa1\xa7C\xd5(^\x87(\x83\x90\x85=\xd8\xc6WRAO#CG\x07\xd4\xa6hcb\xa9\xbe\x92\t\xbf\xd4\xcd\x80\xeel\x98\xf0z\x96\x19Y\xc7\x19[\xc7\xb3\x01:\xba\x1a\xc5\xe9\x90e\x102\x8d\x87\xc9\xc8X\x9d\xf1\x92\x9cJ\x06\xb6YH\x06!\xbf\xad\xe6o>R\xf57\xfe\xb4\xda\xda\xd8\xf5\x93{d\x86xg\xea\x0c\xdc,\xeb8\xb2\xdc\x90\x10\xdf[\xfa\x91\xa5\xa7\xa3\xaf\xd1~\x1d\x90\x8cjaT\xc9\xdb\xf7\xeb\x84\x89U\xd0S\xc9\xc0\xe8\x80e\x88\xb3\xdc[\xea/\\\x85u\xdf\x05\xbd\xf1\x9b\xcf2\x86\xcbh\xde\xd9>\xc3Re`f\x89\xac\xe7xF\xf2$c\x19\xab\xfe\x9a\t\xa7]qU\xc3y:G4\xeax\x0b\xfbC!lG#\x85\x8c\xfd{D\xfd\x1e\xbc7v\xbb\xcdJ\xc7\xab]\xd2\xfe\x1e8b\x8ej\xcdy\xae8QAW\xdc}\xeb\xeb`\xcb\xa6q\xf7\x17\xdcC\xdft?\x8b\x05gd\xe8\x8cW{"d\xfc\xf2"D\xa7\xd5,W\xe1\xc14!\xb3\xbd\x89J\x95\xef\xb9\xe1:&f\x99\xf5w-\xfd\xcaF\xc6"\xeb\x9d\x7fZ1\xcb\xacO\x0b3\xb2\x8e\x97~dU\x7f\xafc\xd3\x89Y\x87\xb5\x8e\xddpF"\xcb\r\xf3\xc4\r\xa7\xe1\xd27\x9d\x98uX\xd3pcO\xf7:\x08\x99\xef\xff\xcd\x98\x1b\x9aN\xcc\xaaudl\xe9G\xd6\xd2\xdf\xd8\xbeg\xfa0K\xf41#\x9f.\xfe\x07' + ) + + brand = (10, 14, + b'c`\xa0\x04l>\xf0\xd7a\xf3\x01\x10+\xcb\xe1\xafCU\x03\x03C\x12\xc3_\x07\x08vt8\xe3\xf0\x96\x01$\xd6t\xe0\x0e\x90\xbc\xd3\xd0\x04T\xc9\xc1\xf0\xe4\x00\xba\x18\x03\x89bU\ro\x81l\x88\xd901\r\xa0K\xde\x02\xed\xd5d@\x8810\x182\xfcm\x80\xb0\x90\xc1\x1e\xa0\xa8!\x86_\x0c\x198\x1c\x10<\x00' ) shift_0 = (25, 11, @@ -46,7 +50,7 @@ class Graphics: ) tmp_1 = (45, 11, - b'\xed\x92\xa1o\xc2@\x14\xc6\x9f@T N\x9c\xa8\xc0 \'\'+!\x99\x80\xa4\x82%\x08H\xaa\x90\x95\x95s\x97fb!\x15\x84 &p\'\x91H\xd4\x92V\x9007D\x93\x9eDV"o\xf9\xf2r)e\xdb\x7f\xb0\x9eh\xf3\xbe{\xbf\xdew\xdf#\xfa\x7f\x9ag~\xb4\x06+\xc9\xc6#\xbc\x0fgo\x90d\xd7-\xd1u\x9bd\x8d\xaa\xe5nJ\xb4\x9bj\xd9\xd4\x92\xccu\x10-\xba\xd6,\xbaD\x0fO\xd6<\xbe:\xf2x4\x1e\xf5; \xcf\x8f\xe0\xb5\xc9\xacjy\xe9\x11]zL\xe6\x1a\xf6=\xbf\xa1\x8bh9\xb1f9\xb9\'\x0b\x85\xbf\x82,\xd4i\xb6^\xa1\xc3\x1b82\xabZZ3\xf4\xaca2\xd7\xf8\x04U\x99\n\xa2\xc3\xf94;\x9c\xef\xc9\xd6T%\x93\xfb\x9d:J\x05\xbb\x84\xdfF\xd5\xb2*s\xbf*\xddm\xa0\x06\xb2\xffq\xdd\xc6!\xdc,\'p\xd5&\x07\x05\xbe\xf9\x9e\xeb\x88]\x06\x85;3\xabZ\xe6\xbe5\xb9\xcfd\xae\xf1\t.=\xa1\x84\xb2\x06\xf7"T\x9b\xccY\x82<\xf4\x1a\x97\x8e\xcc*\x12L\x85K\x90k\xd8\xf7\xf5\xae%QP\xb0\xcb\xa0\xf8+A\xa1\\\xc7\xcf\x04\xf7\x1b\xa2\xfd\xe6>A\xcc\x84PqXGAQGq\x08r\x1cBmO\xddod7u\xb7d7uH\xba\x8e^>\xd7\xab\xdc\'\xca\xfd\xf5\nd\xacT|\x03' + b'\xedR\xa1\x16\x830\x0c<\x89DN"\x91\x93\xc8I$\x12\x89D"\'\x91\xc8}B%\x12\x89DNNN"\x91H\xe4\xae\t\xb4\xf0\xd8\xfe`\xe9K\x93\x97k\x8e\x1e)\xf07o9\x16Y\x15R\x89=\x02\xe63\x91\x99\xd1\xa3\x06-k-\xa3\xafU\xae\x03(\x98\x15\x8c1\xe3\xd51\xa7\\\x910\xe7\xc2wdV\xd4`dm\\\x99\xb5f\xcfe\xd2\x054\x8c\xcd\x899\x94\xaf\xa6\x92=\xf1\x90\x8e\xc01+j\x98\xdd\xe8fW\xd3\x1b\xbcQs\xef\xd9\xd9\x9f\x98\x17\xa2\xca\x1ca\xe2\xb9\xca\xe9\xf5\xa8\xe1>\xd0\xcd\xaef\x99/\xf4R\xd44\xa2\xea\xc8\x9cH\xae\xffyZU&\xee\xce\x8a\x1a\xf2.t\xb3\xab\xe9\rF*\x08\x193\xd1rdVKE\xafW\xb91\xab\xd9\t\xd6n\x82j\xf6\xdc\x8b\x15\xf0K\xaa2\xf99\xc1\xd0u\x9c\'\xd8\xb1\xd6\x9d&XHWI\xad\t\xbd\x14\xe6R\xd0\xe3\xab\xfb\xc6\xbc\xbd\xba=\xf3\xf6\xea\xec\xa4\'\xdc9\xf5\x81\xe8\xc0\x18\xafh\x8d\x0f' ) devmode = (15, 11, @@ -57,25 +61,89 @@ class Graphics: b'c`\x18\x18\x10u\xe0?\x18\x167\x147\xfc?\xf0\xbda\xce\x01\x06\x06\x0e\x87\xbd@\x91\xbd\x078\x1c\x10\xb2 \x96\x97\x83\x97\x83"Cq\xc3\xf7\x86l\x87\xff\x07\x82\xc0d2\xc3{\xa0*\x84,\x88%\xd0\xc0\xe1\xc0\x00V\xc7\xc0p\xef@\x0bC\x0b\x90\x04\x99\xca\x80$\x0b1\x19$\x8e\xaa\xae\x85\x01f\x1bD\x16\xc4\xb2<`\xd8\x80\xaeN\x02\xe8V\x88:\x88,\x88\x05\xf1\x11\xba\xbd0u\x08\xffb\xf3G\x8f\x03\xaa/\xb1\x85\x8b\xc4\x81\xe7\x0c{\x0f\\k\x80\xb9\x0f$\x0b\x00' ) - bat_0 = (16, 13, - b'c`\xa0-X\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\xa0<\x00' + bat_0 = (16, 12, + b'c`\xa0\x0c,\xc0\x03;\x80\xf2?\x18N0l\xc0\n/0<\x00\xcb\x07\xe00\xb9\x80\xa0\xfc\x0f\x86\x034\x95\xff\xc0\x90\x00\x94/`0\xc0\n;\xa0\xee\xc3\rA\xf2\nx\xa0\x04P\x1e\x00' ) - bat_1 = (16, 13, - b'c`\xa0-\x98s\x007\xecq``\xf8\x7f\xe0\x9c\xc3Z\xac\xf0Z\xc3\xbd\x03 y/\x07\xec&g;\xc0\xe4\xa3\x0e\xfc\x07B\xcb\x03\xe8\xf2\xff\x0f\xec=@\ryM\x87\xea\x03\xd5\x07$0\xe4\xdf\x83u\x167h:`\x83=P\xf7\xe1\x86 y\x89\x03\xf8 \x03\x03\x00' + bat_1 = (16, 12, + b'c`\xa0\x0c\xcc9\x80\x1b\xf6800\xfc?p\xcea-Vx\xad\xe1\xde\x01\x90\xbc\x97\x03v\x93\xb3\x1d`\xf2Q\x07\xfe\x03\xa1\xe5\x01t\xf9\xff\x07\xf6\x1e\xa0\x86\xbc\xa6C\xf5\x81\xea\x03\x12\x18\xf2\xef\xc1:\x8b\x1b4\x1d\xb0\xc1\x1e\xa8\xfbpC\x90\xbc\xc4\x01|\x90\x81\x01\x00' ) - bat_2 = (16, 13, - b'\xb5\xceA\x0e\xc0 \x08DQ\x14\x85k\xcd\xd1<\xda\x1c\xad\xd1`\x9a&\xd4U\xeb\xdb\xf9#(\xf2\xefi<\x80\x88\xd3\xd0S6\x8c\xb3W\xe4\x93\x15\xbbWz\x987wwv~\xd1\x0b\x94\x01\x8f\xbe^\xea(\xc8\xb4\xf8\xdf\xbb\xb5\x8dGr\x01' + bat_2 = (16, 12, + b'\xad\xceA\x0e\xc0 \x08DQ\x14\x85k\xcd\xd1<\xda\x1c\xad\xd1`\x9a&\xd4M\xeb\xdb\xf9#(\xf2\xed4\x1e@\xc4i\xe8)\x1b\xc6\xd9+\xf2\xc9\x8a\xdd+=\xcc\x9b\xbb;;\xff\xe8\x05\xca\x80G_/u\x14dZ\xfc\xef\xdd\xda\xc6#\xb9\x00' ) - bat_3 = (16, 13, - b"\xb5\x8f\xc1\r\xc00\x08\xc4\x0cd\xb0\x8c\xc6h\x8c\x16P\xd5OD\xf3j\xf0\xd3\xe2\xe0\xe0\xee\xa8\x1fH?04:l\x9a\x97\x97\xd9'K\xbc^|\xb0#\xe9+\xfb\x0fO(;x\xde\x8f\xda\x94\xa0Ey\xfe\xfb\xa6<~ \x9b/" + bat_3 = (16, 12, + b"\xad\x8f\xc1\r\xc00\x08\xc4\x0cd\xb0\x8c\xc6h\x8c\x16P\xd5OD\xf3i\xf0\xd3\xe2\xe0\xe0\xdf\xa8\x1fH?04:l\x9a\x97\x97\xd9'K\xbc^|\xb0#\xe9+\xfb\x86'\x94\x1d<\xefGmJ\xd0\xa2<\xff}S\x1e?\x90\xcd\x17" ) plugged = (11, 14, b'}\x8eQ\x0e\xc00\x08B\xb1\xf4`\x1e\xcd\xa3y\xb41\xdb-]L\x86?\xcd\xab\x80\x00`\x80c)\x11\xfb\x85y\xf3\x121\xf0O\xe9r\x96FX%\x98\xf7AL\xf4Q\x8a\xf8\xe3\xaf\x8c\x1cw\x867ZW2\xcdq4[\xae_\xbe\xcc\xb4\xb3\x9dAqu\xab\x85\xdb\xbf\xb8\xf6s\x82aGCy\x83\x81\xa6/\xbd\x00' ) + ch_0 = (5, 11, + b'c`\xc0\x078\x1c\xf7^\xff\x7f\x7f\xefu\x0e\xc7l\xdf\xef\xf3\xa2N\xff\xbf\x9f\xed\xdb"p\xef6\x03\xc3\xbd\xdb-\x02 V\xf5\xf9\xff\xf7A\xac\xff\xf7{\x02ab\x10Y\x88\x8e\xef\xf3\xb2}\x11\xa6\x00\x00' + ) + + ch_1 = (5, 11, + b'c`\xc0\x0f\xb2}\xff\xdf\xaf>\xcf\xc0\xe0\xc4q.\xf2},\x88\xc5\xc0\xc0\xe1\xf8\\\x06\xc2b` \x8d\x05\x00' + ) + + ch_2 = (5, 11, + b"c`\xc0\x078\x1c\xf7^\xff\x7f\x7f\xefu\x0e\xc7\xa8\xd3\xff\xef'\xf3\x80\xb0@\x93\xa6+\x03\xc3\xfb\xd8\xe2>\x90\n/\xcf\xff\xf7\r\xdb t\xf5y\x90\x8e\xf7\xb1s.\x83d\x82\xba@\xaa\xbd<\x15Y\xb2}\xff\xdf\x07\xc1\xe2>\x00" + ) + + ch_3 = (5, 11, + b'c`\xc0\x0f\xb6N\xfb\x7f\x7f\xefu\x0eG/\xcf\xff\xf7\x93y\xfe\xdf\x8f:\r\x12Ud\xf9\x7f?\xa8\x0b\xc4z.s\xef6DeP\x17HV\x91\xc5\xb0\x8d\x81\xe1\\\xe4\x94I\xd9\xbe\xdf\xe7E\x9d\xfe>\xaf\xb8\x8f\xc3q\xef\xf5\xff\xf7\x8fIp8\x02\x00' + ) + + ch_4 = (5, 11, + b"c` \x04\xd6\x86.\x15\x01\xd1\x12\x87\xff\xdf\xb7<\x0eb\xb5\x08\x9c\x8b\x84\xc8=\x979&\xf1\xff>\x03CP\xd7\xf7y\xc5} V\x8b\xc0\xff\xfb X\xdc'q\xd8\xf28\x88'q\x18\xa42\x99\x07$\x0b\x00" + ) + + ch_5 = (5, 11, + b'c`\xc0\x07\xa2N\xff\xbf\x0f\x82N\x1c \x96\x97\xa7\x97\xa7@\x13\x88\xc5\xe1\x88\x90=&\xc1\xe1\x18\xd4\xf5>\x16\xc4\xcb\xf6\x85\xe8\xbbw\xbbE \xa8\xeb\xff\xfdd\x9e\xff\xf7\xa3N30l\x9d\xf6\xff\xfe\xd6i\x1c\x8e\x00' + ) + + ch_6 = (5, 11, + b'c`\xc0\x0f8\x1c\xbf\xcf+\xee\x03\xb1\x8a\xfb\xbe\xcf\x13h\x02\xb1\xee\xdd^*\x02\xa2\x9d8\xfe\xdf\xff\x7f\xff\x98\x04\x87c\xf5\xf9\xff\xf7\xa3N\xff\xbf\x9f\xccS}\xfe\xdem\x90\x8a\x16\x81\xa0.\x10\x1f\x84\x19\x18\xd6\x86\xfe\xbf\xbfu\x1a\x87#\x00' + ) + + ch_7 = (5, 11, + b'c`\xc0\x07\x8a\xfb\xfe\xdf\x07\xc1\xe2>E\x16/\xcf\xa0\xae\xff\xf7\xa3N\x83\xc4\x9d8\xfe\xdf\x978\x0cb\xf5\x04\xde\xbb\rQ{.r\xca$\x10-\xd0\xf4\xff~P\x17\x88\x05R/\xd0\x04b\xcd\xb9|.\x12D\x03\x00' + ) + + ch_8 = (5, 11, + b"c`\xc0\x0f\xb6N\xfb\x7f\x7f\xeb4\x06\x06'\x8e\xff\xf7\x8b\xfb\xfe\xdfw\xe2\x00\xb1\x82\xba@,\x06\x86s\x91\xff\xef\x9f\x8bd`\x908\xfc>\x16\x04%\x0e\x17\xf7\xbd\x8f\xe5p|\x1f[\xdc\x97\xed\xfb}^\xd4\xe9\xef\xf3\xb2}\x05\x9a\x8eI\xfc\xbf\x7fLB\xa0\t\x00" + ) + + ch_9 = (5, 11, + b"c`\xc0\x0f\xb6N\xfb\x7f\x7fm(\x03C\xd4\xe9\xff\xf7\xb3}\xff\xdf\x0f\xeaj\x11\xb8w\x9b\x81\xe1\xde\xed\xea\xf3\xd9\xbe\xdf\xe7i\xba~\x9fW\xdc'\xd0\xf4\\\xe6\xff\xfd\xff\xf7\x9d8\x18\x188\x1c\xd7\x86\x82T\x80X 9\x10\xab\xb8\xef\xfb<\x0eG\x06\x06\x00" + ) + + ch_a = (5, 11, + b"c`\xc0\x0f\x92y\xfe\xdfO\xe6\x01\xb1z\x02\xff\xdf\xef\t\x04\xb1\xf6^?\x17\xb9\xf7:\x88\xf5\\\xa6'\xf0\xb9\x0c\x03\x83@\xd3\xff\xfbA]\xff\xef\x0b4Y\x1e\xff\x7f\x1f\x04-\x8fg\xfb\xbe\x8f\xb5<\xfe>6\xdbw\xca\xa4c\x12\x0c\x0c\xc7$\xa6L\x02\x00" + ) + + ch_b = (5, 11, + b'c`\xc0\x07\x8a\xfb\xfe\xdf\xff\x7f\x7fm(\x88\xf5}^\xb6\xef\xff\xfbN\x1c \x96\xa6+\x84\x05\x92}.\x03\x91\xf5\xf2\xfc>/\x99\x07\xc4b`8\x179e\x12\x88\x15\xd4\xf5}^q\x1fD\xdd\xd6i\x1c\x8e\x00' + ) + + ch_c = (5, 11, + b'c`\xc0\x078\x1c\xf7^\xff\x7f\x7f\xeb4\x0e\xc7l\xdf\xff\xf7\x93y\xfe\xdf\x8f:\xdd"p\xef6\x03\x83\xa6\xab@\x13\x84\x05\x02\xe8,\x90,B\x07\xc2\x14\x00' + ) + + ch_d = (5, 11, + b'c`\xc0\x07\x8a\xfb\xfe\xdf\xff>o\xcee\x10\xeb\xfb\xbcl\xdf\xff\xf7\x83\xba@,\x06\x86{\xb7[\x04\x08\xb3`:`\xa6\x00\x00' + ) + + ch_e = (5, 11, + b'c`\xc0\x07\xa2N\xff\xbf\x0f\x82\xc5} \x96\x97\xa7\x97\xa7"\x0b\x88%\xd0\xc4\xe1\x08\x93\xbdw\x1b\xc2\xb2\x10+\xdb\xd7\xcbS\x91\x05\xc4\xb2<\xce\xe1\x08\x93\xbdw\x1b\xc2J\xe61l\x83\xb0@4v\x16\x00' + ) + # EOF diff --git a/graphics/icon-samples.png b/graphics/icon-samples.png index 945b0999..6ebd7f30 100644 Binary files a/graphics/icon-samples.png and b/graphics/icon-samples.png differ