From adbc36ad711210a2518383fd5a4c770c7ec804ac Mon Sep 17 00:00:00 2001 From: Nicole Faerber Date: Sun, 14 Feb 2021 18:03:13 +0100 Subject: [PATCH] initial commit to new repo --- README.md | 8 +- linux-bt/Makefile | 16 + linux-bt/README.txt | 17 + linux-bt/l2cap_client.c | 147 + ...W-#255737-v2-WBU_TSPA_Software_License.txt | 46 + .../bluetooth_init_cc2560_2.44.bts | Bin 0 -> 50699 bytes ...W-#255737-v2-WBU_TSPA_Software_License.txt | 46 + .../bluetooth_init_cc2564_2.8.bts | Bin 0 -> 23440 bytes metawatch/F5xx_F6xx_Core_Lib/HAL_FLASH.c | 127 + metawatch/F5xx_F6xx_Core_Lib/HAL_FLASH.h | 104 + metawatch/F5xx_F6xx_Core_Lib/HAL_MACROS.h | 51 + metawatch/F5xx_F6xx_Core_Lib/HAL_PMAP.c | 78 + metawatch/F5xx_F6xx_Core_Lib/HAL_PMAP.h | 58 + metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.c | 274 + metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.d | 7 + metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.h | 105 + metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.c | 158 + metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.h | 226 + metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.c | 340 ++ metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.d | 7 + metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.h | 163 + metawatch/Makefile | 138 + metawatch/README.txt | 4 + metawatch/bluetooth_init_cc2560_2.44.bts | 1 + metawatch/bluetooth_init_cc2560_2.44.c | 3289 +++++++++++ metawatch/bluetooth_init_cc2564_2.8.bts | 1 + metawatch/bluetooth_init_cc2564_2.8.c | 1489 +++++ metawatch/bluetooth_init_cc256x.h | 11 + metawatch/bt_hci.c | 512 ++ metawatch/bt_hci.h | 95 + metawatch/bt_l2cap.c | 281 + metawatch/bt_l2cap.h | 77 + metawatch/calendar.d | 12 + metawatch/hal_devboard_v2_defs.h | 664 +++ metawatch/hal_digital_v2_defs.h | 619 ++ metawatch/hal_io_macros.h | 116 + metawatch/mw_acc.c | 423 ++ metawatch/mw_acc.h | 120 + metawatch/mw_adc.c | 101 + metawatch/mw_adc.h | 10 + metawatch/mw_bt.c | 295 + metawatch/mw_bt.h | 67 + metawatch/mw_lcd.c | 293 + metawatch/mw_lcd.h | 31 + metawatch/mw_main.c | 738 +++ metawatch/mw_main.h | 40 + metawatch/mw_uart.c | 121 + metawatch/mw_uart.h | 19 + metawatch/oswald_hal.c | 273 + metawatch/sharp_mem_lcd.c | 113 + metawatch/sintab.py | 9 + ui/Makefile.am | 23 + ui/autogen.sh | 8 + ui/bitmaps/Bluetooth_icon.xbm | 10 + ui/bitmaps/Exit_icon.xbm | 10 + ui/bitmaps/Message_icon.xbm | 10 + ui/bitmaps/acc_icon.xbm | 10 + ui/bitmaps/alarm_icon.xbm | 10 + ui/bitmaps/battery0_icon.xbm | 7 + ui/bitmaps/battery100_icon.xbm | 7 + ui/bitmaps/battery25_icon.xbm | 7 + ui/bitmaps/battery50_icon.xbm | 7 + ui/bitmaps/battery75_icon.xbm | 7 + ui/bitmaps/bluetooth_con_icon.xbm | 7 + ui/bitmaps/bluetooth_icon.xbm | 7 + ui/bitmaps/charger_icon.xbm | 7 + ui/bitmaps/checked_icon.xbm | 4 + ui/bitmaps/downbutton_icon.xbm | 7 + ui/bitmaps/enterbutton_icon.xbm | 7 + ui/bitmaps/exit_icon.xbm | 10 + ui/bitmaps/info_icon.xbm | 10 + ui/bitmaps/lapsebutton_icon.xbm | 7 + ui/bitmaps/leftbutton_icon.xbm | 7 + ui/bitmaps/main_menu_icon.xbm | 10 + ui/bitmaps/message_icon.xbm | 10 + ui/bitmaps/resetbutton_icon.xbm | 7 + ui/bitmaps/rightbutton_icon.xbm | 7 + ui/bitmaps/startstopbutton_icon.xbm | 7 + ui/bitmaps/stopwatch.xbm | 10 + ui/bitmaps/stopwatch_icon.xbm | 10 + ui/bitmaps/timesetup_icon.xbm | 10 + ui/bitmaps/unchecked_icon.xbm | 4 + ui/bitmaps/upbutton_icon.xbm | 7 + ui/bitmaps/watch_icon.xbm | 10 + ui/calendar.c | 209 + ui/calendar.h | 21 + ui/configure.in | 17 + ui/embedvm.c | 311 + ui/embedvm.h | 53 + ui/fonts/DroidSans-Bold.ttf | Bin 0 -> 194488 bytes ui/fonts/DroidSans-Bold11x14.bdf | 3302 +++++++++++ ui/fonts/DroidSans-Bold11x14.h | 261 + ui/fonts/DroidSans.h | 261 + ui/fonts/DroidSans.ttf | Bin 0 -> 190776 bytes ui/fonts/DroidSans8x11.bdf | 2927 ++++++++++ ui/fonts/DroidSans8x11.h | 261 + ui/fonts/DroidSans8x12.bdf | 3090 ++++++++++ ui/fonts/DroidSans8x12.h | 261 + ui/fonts/DroidSansBold8x12.bdf | 3090 ++++++++++ ui/fonts/DroidSansBold8x12.h | 261 + ui/fonts/DroidSansBold9x11.bdf | 2927 ++++++++++ ui/fonts/DroidSansBold9x11.h | 261 + ui/fonts/README.txt | 17 + ui/fonts/fixed5x7.bdf | 3618 ++++++++++++ ui/fonts/fixed5x7.h | 261 + ui/fonts/fixed6x13.bdf | 5153 +++++++++++++++++ ui/fonts/fixed6x13.h | 261 + ui/fonts/fixed6x13b.bdf | 5153 +++++++++++++++++ ui/fonts/fixed6x13b.h | 261 + ui/fonts/fixed6x9.bdf | 4129 +++++++++++++ ui/fonts/fixed6x9.h | 261 + ui/fonts/lcd13x21.bdf | 316 + ui/fonts/lcd13x21.h | 17 + ui/fonts/lcd8x13.bdf | 229 + ui/fonts/lcd8x13.h | 17 + ui/oswald-ui.c | 533 ++ ui/oswald-ui.h | 33 + ui/oswald.h | 139 + ui/oswald_fonts.c | 65 + ui/oswald_fonts.h | 30 + ui/oswald_graphics.c | 246 + ui/oswald_graphics.h | 48 + ui/oswald_hal.h | 45 + ui/oswald_main.c | 248 + ui/oswald_main.h | 29 + ui/oswald_screens.c | 1533 +++++ ui/oswald_screens.h | 28 + ui/oswald_strings.c | 48 + ui/oswald_strings.h | 8 + ui/oswald_watch_faces.c | 298 + ui/oswald_watch_faces.h | 8 + 131 files changed, 52765 insertions(+), 1 deletion(-) create mode 100644 linux-bt/Makefile create mode 100644 linux-bt/README.txt create mode 100644 linux-bt/l2cap_client.c create mode 100644 metawatch/CC2560_BT_SP_BTS/TILAW-#255737-v2-WBU_TSPA_Software_License.txt create mode 100644 metawatch/CC2560_BT_SP_BTS/bluetooth_init_cc2560_2.44.bts create mode 100644 metawatch/CC2564_BT_BLE_SP_BTS/TILAW-#255737-v2-WBU_TSPA_Software_License.txt create mode 100644 metawatch/CC2564_BT_BLE_SP_BTS/bluetooth_init_cc2564_2.8.bts create mode 100644 metawatch/F5xx_F6xx_Core_Lib/HAL_FLASH.c create mode 100644 metawatch/F5xx_F6xx_Core_Lib/HAL_FLASH.h create mode 100644 metawatch/F5xx_F6xx_Core_Lib/HAL_MACROS.h create mode 100644 metawatch/F5xx_F6xx_Core_Lib/HAL_PMAP.c create mode 100644 metawatch/F5xx_F6xx_Core_Lib/HAL_PMAP.h create mode 100644 metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.c create mode 100644 metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.d create mode 100644 metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.h create mode 100644 metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.c create mode 100644 metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.h create mode 100644 metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.c create mode 100644 metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.d create mode 100644 metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.h create mode 100644 metawatch/Makefile create mode 100644 metawatch/README.txt create mode 120000 metawatch/bluetooth_init_cc2560_2.44.bts create mode 100644 metawatch/bluetooth_init_cc2560_2.44.c create mode 120000 metawatch/bluetooth_init_cc2564_2.8.bts create mode 100644 metawatch/bluetooth_init_cc2564_2.8.c create mode 100644 metawatch/bluetooth_init_cc256x.h create mode 100644 metawatch/bt_hci.c create mode 100644 metawatch/bt_hci.h create mode 100644 metawatch/bt_l2cap.c create mode 100644 metawatch/bt_l2cap.h create mode 100644 metawatch/calendar.d create mode 100644 metawatch/hal_devboard_v2_defs.h create mode 100644 metawatch/hal_digital_v2_defs.h create mode 100644 metawatch/hal_io_macros.h create mode 100644 metawatch/mw_acc.c create mode 100644 metawatch/mw_acc.h create mode 100644 metawatch/mw_adc.c create mode 100644 metawatch/mw_adc.h create mode 100644 metawatch/mw_bt.c create mode 100644 metawatch/mw_bt.h create mode 100644 metawatch/mw_lcd.c create mode 100644 metawatch/mw_lcd.h create mode 100644 metawatch/mw_main.c create mode 100644 metawatch/mw_main.h create mode 100644 metawatch/mw_uart.c create mode 100644 metawatch/mw_uart.h create mode 100644 metawatch/oswald_hal.c create mode 100644 metawatch/sharp_mem_lcd.c create mode 100644 metawatch/sintab.py create mode 100644 ui/Makefile.am create mode 100755 ui/autogen.sh create mode 100644 ui/bitmaps/Bluetooth_icon.xbm create mode 100644 ui/bitmaps/Exit_icon.xbm create mode 100644 ui/bitmaps/Message_icon.xbm create mode 100644 ui/bitmaps/acc_icon.xbm create mode 100644 ui/bitmaps/alarm_icon.xbm create mode 100644 ui/bitmaps/battery0_icon.xbm create mode 100644 ui/bitmaps/battery100_icon.xbm create mode 100644 ui/bitmaps/battery25_icon.xbm create mode 100644 ui/bitmaps/battery50_icon.xbm create mode 100644 ui/bitmaps/battery75_icon.xbm create mode 100644 ui/bitmaps/bluetooth_con_icon.xbm create mode 100644 ui/bitmaps/bluetooth_icon.xbm create mode 100644 ui/bitmaps/charger_icon.xbm create mode 100644 ui/bitmaps/checked_icon.xbm create mode 100644 ui/bitmaps/downbutton_icon.xbm create mode 100644 ui/bitmaps/enterbutton_icon.xbm create mode 100644 ui/bitmaps/exit_icon.xbm create mode 100644 ui/bitmaps/info_icon.xbm create mode 100644 ui/bitmaps/lapsebutton_icon.xbm create mode 100644 ui/bitmaps/leftbutton_icon.xbm create mode 100644 ui/bitmaps/main_menu_icon.xbm create mode 100644 ui/bitmaps/message_icon.xbm create mode 100644 ui/bitmaps/resetbutton_icon.xbm create mode 100644 ui/bitmaps/rightbutton_icon.xbm create mode 100644 ui/bitmaps/startstopbutton_icon.xbm create mode 100644 ui/bitmaps/stopwatch.xbm create mode 100644 ui/bitmaps/stopwatch_icon.xbm create mode 100644 ui/bitmaps/timesetup_icon.xbm create mode 100644 ui/bitmaps/unchecked_icon.xbm create mode 100644 ui/bitmaps/upbutton_icon.xbm create mode 100644 ui/bitmaps/watch_icon.xbm create mode 100644 ui/calendar.c create mode 100644 ui/calendar.h create mode 100644 ui/configure.in create mode 100644 ui/embedvm.c create mode 100644 ui/embedvm.h create mode 100644 ui/fonts/DroidSans-Bold.ttf create mode 100644 ui/fonts/DroidSans-Bold11x14.bdf create mode 100644 ui/fonts/DroidSans-Bold11x14.h create mode 100644 ui/fonts/DroidSans.h create mode 100644 ui/fonts/DroidSans.ttf create mode 100644 ui/fonts/DroidSans8x11.bdf create mode 100644 ui/fonts/DroidSans8x11.h create mode 100644 ui/fonts/DroidSans8x12.bdf create mode 100644 ui/fonts/DroidSans8x12.h create mode 100644 ui/fonts/DroidSansBold8x12.bdf create mode 100644 ui/fonts/DroidSansBold8x12.h create mode 100644 ui/fonts/DroidSansBold9x11.bdf create mode 100644 ui/fonts/DroidSansBold9x11.h create mode 100644 ui/fonts/README.txt create mode 100644 ui/fonts/fixed5x7.bdf create mode 100644 ui/fonts/fixed5x7.h create mode 100644 ui/fonts/fixed6x13.bdf create mode 100644 ui/fonts/fixed6x13.h create mode 100644 ui/fonts/fixed6x13b.bdf create mode 100644 ui/fonts/fixed6x13b.h create mode 100644 ui/fonts/fixed6x9.bdf create mode 100644 ui/fonts/fixed6x9.h create mode 100644 ui/fonts/lcd13x21.bdf create mode 100644 ui/fonts/lcd13x21.h create mode 100644 ui/fonts/lcd8x13.bdf create mode 100644 ui/fonts/lcd8x13.h create mode 100644 ui/oswald-ui.c create mode 100644 ui/oswald-ui.h create mode 100644 ui/oswald.h create mode 100644 ui/oswald_fonts.c create mode 100644 ui/oswald_fonts.h create mode 100644 ui/oswald_graphics.c create mode 100644 ui/oswald_graphics.h create mode 100644 ui/oswald_hal.h create mode 100644 ui/oswald_main.c create mode 100644 ui/oswald_main.h create mode 100644 ui/oswald_screens.c create mode 100644 ui/oswald_screens.h create mode 100644 ui/oswald_strings.c create mode 100644 ui/oswald_strings.h create mode 100644 ui/oswald_watch_faces.c create mode 100644 ui/oswald_watch_faces.h diff --git a/README.md b/README.md index e2fbd4e..b209c83 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,9 @@ # Oswald -Smartwatch OS for microctroller based smartwatches, originally developed for MSP430 based MetaWatch \ No newline at end of file +Smartwatch OS for microctroller based smartwatches, originally developed for MSP430 based MetaWatchOSWALD + +Open Smart Watch Application Loadable Development + +License: LGPL (Gnu Library Public License), +permission granted for static linking, +see individual files for more / different licensing information diff --git a/linux-bt/Makefile b/linux-bt/Makefile new file mode 100644 index 0000000..7d3390d --- /dev/null +++ b/linux-bt/Makefile @@ -0,0 +1,16 @@ +CFLAGS = -Wall -O2 +SRC = l2cap_client.c +PRG = l2cap_client + +OBJS = $(SRC:.c=.o) + +all: $(PRG) + +$(PRG): $(OBJS) + $(CC) -o $(PRG) $(OBJS) -lbluetooth + +%.o: %c + $(CC) -c $(CFLAGS) -o $@ $< + +clean: + rm -f $(OBJS) $(PRG) diff --git a/linux-bt/README.txt b/linux-bt/README.txt new file mode 100644 index 0000000..9de0009 --- /dev/null +++ b/linux-bt/README.txt @@ -0,0 +1,17 @@ + +l2cap_client +License: GPLv3 + +This is a small test application to test the Bluetooth connection to +Oswald-MetaWatch. It opens a L2CAP connection to a give Bluetooth address. +After successful connection establishment it output all data received to +stdout and send data received from stdin (keyboard) to the watch. Input via +stdin is not in cbreak mode, i.e. input must be finished with CR before it +is sent to the watch. + +Building +Simply type "make". Depend on libbluetooth and its development files. + +Running +Start with Bluetooth address of the watch as cmdline argument: + l2cap_client 11:22:33:44:55:66 diff --git a/linux-bt/l2cap_client.c b/linux-bt/l2cap_client.c new file mode 100644 index 0000000..c22ac89 --- /dev/null +++ b/linux-bt/l2cap_client.c @@ -0,0 +1,147 @@ +/* + * (c) 2013 Nicole Faerber, Siegen, Germany + * licensed under GPLv2 + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +typedef enum { + CMD_NULL = 0, + CMD_INVAL, + CMD_QUIT, +} cmd_t; + +// replace "markups" with appropr. chars +char *parse_buffer(char *inbuf, int *cmd) +{ + int i,o; + static char outbuf[240]; + + memset(outbuf,0,240); + + *cmd = CMD_NULL; + + // if a line starts with a \ then it is an internal command + if (inbuf[0] == '\\') { + switch (inbuf[1]) { + case 'q': + *cmd = CMD_QUIT; + break; + default: + *cmd = CMD_INVAL; + break; + } + return NULL; + } + o=0; + for (i=0; i\n", argv[0]); + exit(2); + } + + strncpy(dest, argv[1], 18); + + // allocate a socket + s = socket(AF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_L2CAP); + + // set the connection parameters (who to connect to) + addr.l2_family = AF_BLUETOOTH; + addr.l2_psm = htobs(0x1001); + str2ba( dest, &addr.l2_bdaddr ); + + // connect to server + status = connect(s, (struct sockaddr *)&addr, sizeof(addr)); + + // send a message + if ( status != 0 ) { + perror("open socket"); + close(s); + return -1; + } + + fprintf(stderr, "connected\n"); + + if (fcntl(0, F_SETFL, O_NONBLOCK) != 0) + perror("stdin nonblock"); + if (fcntl(s, F_SETFL, O_NONBLOCK) != 0) + perror("socket nonblock"); + + while (1) { + FD_ZERO(&infds); + FD_SET(s, &infds); + FD_SET(0, &infds); + FD_ZERO(&efds); + FD_SET(s, &efds); + status = select(s+1, &infds, NULL, &efds, NULL); + // fprintf(stderr, "select = %d\n", status); + if ( status > 0) { + if (FD_ISSET(0, &infds)) { + len = read(0, buf, 240); + if (len > 0) { + // status = write(s, buf, len); + out = parse_buffer(buf, &cmd); + if (cmd != CMD_NULL) { + if (cmd == CMD_QUIT) { + close(s); + exit(0); + } + } else { + len = strlen(out); + status = write(s, out, len); + if (status < 0) + perror("write"); + fsync(s); + } + } + } else if (FD_ISSET(s, &infds)) { + len = read(s, buf, 240); + // fprintf(stderr, "read = %d\n", len); + for (i=0; i83~IT0pYf? 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 literal 0 HcmV?d00001 diff --git a/metawatch/CC2564_BT_BLE_SP_BTS/TILAW-#255737-v2-WBU_TSPA_Software_License.txt b/metawatch/CC2564_BT_BLE_SP_BTS/TILAW-#255737-v2-WBU_TSPA_Software_License.txt new file mode 100644 index 0000000..0963650 --- /dev/null +++ b/metawatch/CC2564_BT_BLE_SP_BTS/TILAW-#255737-v2-WBU_TSPA_Software_License.txt @@ -0,0 +1,46 @@ + 1 TECHNOLOGY AND SOFTWARE PUBLICLY AVAILABLE + 2 SOFTWARE LICENSE + 3 + 4 Copyright (c) 2011, Texas Instruments Incorporated. + 5 + 6 All rights reserved. + 7 + 8 Redistribution. + 9 + 10 Redistribution and use in binary form, without modification, are + 11 permitted provided that the following conditions are met: + 12 +13 * Redistributions must preserve existing copyright notices and reproduce +14 this license (including the above copyright notice and the disclaimer below) +15 in the documentation and/or other materials provided with the distribution. + 16 + 17 * Neither the name of Texas Instruments Incorporated nor the names of + 18 its suppliers may be used to endorse or promote products derived + 19 from this software without specific prior written permission. + 20 + 21 * No reverse engineering, decompilation, or disassembly of this + 22 software is permitted. + 23 + 24 Limited patent license. + 25 + 26 Texas Instruments Incorporated grants a world-wide, royalty-free, + 27 non-exclusive license under patents it now or hereafter owns or controls + 28 to make, have made, use, import, offer to sell and sell ("Utilize") this + 29 software, but solely to the extent that any such patent is necessary + 30 to Utilize the software alone. The patent license shall not apply to + 31 any combinations which include this software. No hardware per se is + 32 licensed hereunder. + 33 + 34 DISCLAIMER. + 35 + 36 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + 37 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + 38 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + 39 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + 40 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + 41 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + 42 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + 43 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + 44 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + 45 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + 46 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/metawatch/CC2564_BT_BLE_SP_BTS/bluetooth_init_cc2564_2.8.bts b/metawatch/CC2564_BT_BLE_SP_BTS/bluetooth_init_cc2564_2.8.bts new file mode 100644 index 0000000000000000000000000000000000000000..bb2bee13708ab3af704898e6682663fe7c6520ac GIT binary patch literal 23440 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 0) { + while (FCTL3 & BUSY); // test busy + *Flash_ptr++ = *Data_ptr++; // Write to Flash + count--; + } + + FCTL1 = FWKEY; // Clear write bit + FCTL3 = FWKEY + LOCK; // Set LOCK bit +} + +void FlashWrite_16(unsigned int *Data_ptr, unsigned int *Flash_ptr, unsigned int count) +{ + FCTL3 = FWKEY; // Clear Lock bit + FCTL1 = FWKEY+WRT; // Enable byte/word write mode + + while (count > 0) { + while (FCTL3 & BUSY); // test busy + *Flash_ptr++ = *Data_ptr++; // Write to Flash + count--; + } + + FCTL1 = FWKEY; // Clear Erase bit + FCTL3 = FWKEY + LOCK; // Set LOCK bit +} + +void FlashWrite_32(unsigned long *Data_ptr, unsigned long *Flash_ptr, unsigned int count) +{ + FCTL3 = FWKEY; // Clear Lock bit + FCTL1 = FWKEY + BLKWRT; // Enable long-word write + + while (count > 0) { + while (FCTL3 & BUSY); // test busy + *Flash_ptr++ = *Data_ptr++; // Write to Flash + count--; + } + + FCTL1 = FWKEY; // Clear Erase bit + FCTL3 = FWKEY + LOCK; // Set LOCK bit +} + +void FlashMemoryFill_32(unsigned long value, unsigned long *Flash_ptr, unsigned int count) +{ + FCTL3 = FWKEY; // Clear Lock bit + FCTL1 = FWKEY + BLKWRT; // Enable long-word write + + while (count > 0) { + while (FCTL3 & BUSY); // test busy + *Flash_ptr++ = value; // Write to Flash + count--; + } + + FCTL1 = FWKEY; // Clear Erase bit + FCTL3 = FWKEY + LOCK; // Set LOCK bit +} diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_FLASH.h b/metawatch/F5xx_F6xx_Core_Lib/HAL_FLASH.h new file mode 100644 index 0000000..9317e5b --- /dev/null +++ b/metawatch/F5xx_F6xx_Core_Lib/HAL_FLASH.h @@ -0,0 +1,104 @@ +/******************************************************************************* + * + * HAL_FLASH.h + * Flash Library for flash memory controller of MSP430F5xx/6xx family + * + * + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Created: Version 1.0 11/24/2009 + * Updated: Version 2.0 01/18/2011 + * + ******************************************************************************/ + +#ifndef HAL_FLASH_H +#define HAL_FLASH_H + +//****************************************************************************** +// Defines +//****************************************************************************** + +#define FLASH_STATUS_OK 0 +#define FLASH_STATUS_ERROR 1 + +/******************************************************************************* + * \brief Erase a single segment of the flash memory + * + * \param *Flash_ptr Pointer into the flash segment to erase + ******************************************************************************/ +extern void Flash_SegmentErase(unsigned int *Flash_ptr); + +/******************************************************************************* + * \brief Erase Check of the flash memory + * + * \param *Flash_ptr Pointer into the flash segment to erase + * \param len give the len in word + ******************************************************************************/ +extern unsigned char Flash_EraseCheck(unsigned int *Flash_ptr, unsigned int len); + +/******************************************************************************* + * \brief Write data into the flash memory (Byte format) + * + * \param *Data_ptr Pointer to the Data to write + * \param *Flash_ptr Pointer into the flash to write data to + * \param count number of data to write + ******************************************************************************/ +extern void FlashWrite_8(unsigned char *Data_ptr, unsigned char *Flash_ptr, unsigned int count); + +/******************************************************************************* + * \brief Write data into the flash memory (Word format) + * + * \param *Data_ptr Pointer to the Data to write + * \param *Flash_ptr Pointer into the flash to write data to + * \param count number of data to write + ******************************************************************************/ +extern void FlashWrite_16(unsigned int *Data_ptr, unsigned int *Flash_ptr, unsigned int count); + +/******************************************************************************* + * \brief Write data into the flash memory (Long format) + * + * \param *Data_ptr Pointer to the Data to write + * \param *Flash_ptr Pointer into the flash to write data to + * \param count number of data to write + ******************************************************************************/ +extern void FlashWrite_32(unsigned long *Data_ptr, unsigned long *Flash_ptr, unsigned int count); + +/******************************************************************************* + * \brief Fill data into the flash memory (Long format) + * + * \param value Pointer to the Data to write + * \param *Flash_ptr pointer into the flash to write data to + * \param count number of data to write (= byte * 4) + ******************************************************************************/ +extern void FlashMemoryFill_32(unsigned long value, unsigned long *Flash_ptr, unsigned int count); + +#endif /* HAL_FLASH_H */ diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_MACROS.h b/metawatch/F5xx_F6xx_Core_Lib/HAL_MACROS.h new file mode 100644 index 0000000..398074f --- /dev/null +++ b/metawatch/F5xx_F6xx_Core_Lib/HAL_MACROS.h @@ -0,0 +1,51 @@ +/* **************************************************************************** + * + * HAL_MACROS.h + * Flash Library for flash memory controller of MSP430F5xx/6xx family + * + * + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Created: Version 1.0 11/24/2009 + * Updated: Version 2.0 12/15/2010 + * +******************************************************************************/ + +#ifndef HAL_MACROS_H +#define HAL_MACROS_H + +/* + * This macro is for use by other macros to form a fully valid C statement. + */ +#define st(x) do { x } while (__LINE__ == -1) + +#endif /* HAL_MACROS_H */ diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_PMAP.c b/metawatch/F5xx_F6xx_Core_Lib/HAL_PMAP.c new file mode 100644 index 0000000..e11c448 --- /dev/null +++ b/metawatch/F5xx_F6xx_Core_Lib/HAL_PMAP.c @@ -0,0 +1,78 @@ +/******************************************************************************* + * + * HAL_PMAP.c + * Port Mapper Library for PMAP controller of MSP430F5xx/6xx family + * + * + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Created: Version 1.0 11/24/2009 + * Updated: Version 2.0 12/15/2010 + * + ******************************************************************************/ + +#include "msp430.h" +#include "HAL_PMAP.h" +#include "portmacro.h" + +// Check and define PMAP function only if the device has port mapping capability +// Note: This macro is defined in the device-specific header file if this +// feature is available on a given MSP430. +#ifdef __MSP430_HAS_PORT_MAPPING__ + +void configure_ports(const unsigned char *port_mapping, unsigned char *PxMAPy, + unsigned char num_of_ports, unsigned char port_map_reconfig) +{ + uint16_t i; + + portENTER_CRITICAL(); + + // Get write-access to port mapping registers: + PMAPPWD = PMAPPW; + + if (port_map_reconfig) { + // Allow reconfiguration during runtime: + PMAPCTL = PMAPRECFG; + } + + // Configure Port Mapping: + for (i = 0; i < num_of_ports * 8; i++) { + PxMAPy[i] = port_mapping[i]; + } + + // Disable write-access to port mapping registers: + PMAPPWD = 0; + + portEXIT_CRITICAL(); +} + +#endif /* __MSP430_HAS_PORT_MAPPING__ */ diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_PMAP.h b/metawatch/F5xx_F6xx_Core_Lib/HAL_PMAP.h new file mode 100644 index 0000000..9fb7b77 --- /dev/null +++ b/metawatch/F5xx_F6xx_Core_Lib/HAL_PMAP.h @@ -0,0 +1,58 @@ +/******************************************************************************* + * + * HAL_PMAP.h + * Port Mapper Library for PMAP controller of MSP430F5xx/6xx family + * + * + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Created: Version 1.0 11/24/2009 + * Updated: Version 2.0 12/15/2010 + * + ******************************************************************************/ + +#ifndef HAL_PMAP_H +#define HAL_PMAP_H + +/******************************************************************************* + * \brief Configures the MSP430 Port Mapper + * + * \param *port_mapping Pointer to init Data + * \param PxMAPy Pointer start of first Port Mapper to initialize + * \param num_of_ports Number of Ports to initialize + * \param port_map_reconfig Flag to enable/disable reconfiguration + * + ******************************************************************************/ +extern void configure_ports(const unsigned char *port_mapping, unsigned char *PxMAPy, + unsigned char num_of_ports, unsigned char port_map_reconfig); + +#endif /* HAL_PMAP_H */ diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.c b/metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.c new file mode 100644 index 0000000..bf5e1e0 --- /dev/null +++ b/metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.c @@ -0,0 +1,274 @@ +/******************************************************************************* + * + * HAL_PMM.c + * Power Management Module Library for MSP430F5xx/6xx family + * + * + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Created: Version 1.0 11/24/2009 + * Updated: Version 2.0 12/15/2010 + * Modified SetVcoreUp() and SetVcoreDown() functions + * + ******************************************************************************/ + +#include "msp430.h" +#include "HAL_PMM.h" + +#define _HAL_PMM_DISABLE_SVML_ +#define _HAL_PMM_DISABLE_SVSL_ +#define _HAL_PMM_DISABLE_FULL_PERFORMANCE_ + +#ifdef _HAL_PMM_DISABLE_SVML_ +#define _HAL_PMM_SVMLE SVMLE +#else +#define _HAL_PMM_SVMLE 0 +#endif + +#ifdef _HAL_PMM_DISABLE_SVSL_ +#define _HAL_PMM_SVSLE SVSLE +#else +#define _HAL_PMM_SVSLE 0 +#endif + +#ifdef _HAL_PMM_DISABLE_FULL_PERFORMANCE_ +#define _HAL_PMM_SVSFP SVSLFP +#define _HAL_PMM_SVMFP SVMLFP +#else +#define _HAL_PMM_SVSFP 0 +#define _HAL_PMM_SVMFP 0 +#endif + +/******************************************************************************* + * \brief Increase Vcore by one level + * + * \param level Level to which Vcore needs to be increased + * \return status Success/failure + ******************************************************************************/ +static unsigned int SetVCoreUp(unsigned char level) +{ + unsigned int PMMRIE_backup, SVSMHCTL_backup, SVSMLCTL_backup; + + // The code flow for increasing the Vcore has been altered to work around + // the erratum FLASH37. + // Please refer to the Errata sheet to know if a specific device is affected + // DO NOT ALTER THIS FUNCTION + + // Open PMM registers for write access + PMMCTL0_H = 0xA5; + + // Disable dedicated Interrupts + // Backup all registers + PMMRIE_backup = PMMRIE; + PMMRIE &= ~(SVMHVLRPE | SVSHPE | SVMLVLRPE | SVSLPE | SVMHVLRIE | + SVMHIE | SVSMHDLYIE | SVMLVLRIE | SVMLIE | SVSMLDLYIE ); + SVSMHCTL_backup = SVSMHCTL; + SVSMLCTL_backup = SVSMLCTL; + + // Clear flags + PMMIFG = 0; + + // Set SVM highside to new level and check if a VCore increase is possible + SVSMHCTL = SVMHE | SVSHE | (SVSMHRRL0 * level); + + // Wait until SVM highside is settled + while ((PMMIFG & SVSMHDLYIFG) == 0); + + // Clear flag + PMMIFG &= ~SVSMHDLYIFG; + + // Check if a VCore increase is possible + if ((PMMIFG & SVMHIFG) == SVMHIFG) { // -> Vcc is too low for a Vcore increase + // recover the previous settings + PMMIFG &= ~SVSMHDLYIFG; + SVSMHCTL = SVSMHCTL_backup; + + // Wait until SVM highside is settled + while ((PMMIFG & SVSMHDLYIFG) == 0); + + // Clear all Flags + PMMIFG &= ~(SVMHVLRIFG | SVMHIFG | SVSMHDLYIFG | SVMLVLRIFG | SVMLIFG | SVSMLDLYIFG); + + PMMRIE = PMMRIE_backup; // Restore PMM interrupt enable register + PMMCTL0_H = 0x00; // Lock PMM registers for write access + return PMM_STATUS_ERROR; // return: voltage not set + } + + // Set also SVS highside to new level + // Vcc is high enough for a Vcore increase + SVSMHCTL |= (SVSHRVL0 * level); + + // Wait until SVM highside is settled + while ((PMMIFG & SVSMHDLYIFG) == 0); + + // Clear flag + PMMIFG &= ~SVSMHDLYIFG; + + // Set VCore to new level + PMMCTL0_L = PMMCOREV0 * level; + + // Set SVM, SVS low side to new level + SVSMLCTL = SVMLE | (SVSMLRRL0 * level) | SVSLE | (SVSLRVL0 * level); + + // Wait until SVM, SVS low side is settled + while ((PMMIFG & SVSMLDLYIFG) == 0); + + // Clear flag + PMMIFG &= ~SVSMLDLYIFG; + // SVS, SVM core and high side are now set to protect for the new core level + + // Restore Low side settings + // Clear all other bits _except_ level settings + SVSMLCTL &= (SVSLRVL0+SVSLRVL1+SVSMLRRL0+SVSMLRRL1+SVSMLRRL2); + + // Clear level settings in the backup register,keep all other bits + SVSMLCTL_backup &= ~(SVSLRVL0+SVSLRVL1+SVSMLRRL0+SVSMLRRL1+SVSMLRRL2); + + // Restore low-side SVS monitor settings + SVSMLCTL |= SVSMLCTL_backup; + + // Restore High side settings + // Clear all other bits except level settings + SVSMHCTL &= (SVSHRVL0+SVSHRVL1+SVSMHRRL0+SVSMHRRL1+SVSMHRRL2); + + // Clear level settings in the backup register,keep all other bits + SVSMHCTL_backup &= ~(SVSHRVL0+SVSHRVL1+SVSMHRRL0+SVSMHRRL1+SVSMHRRL2); + + // Restore backup + SVSMHCTL |= SVSMHCTL_backup; + + // Wait until high side, low side settled + while (((PMMIFG & SVSMLDLYIFG) == 0) && ((PMMIFG & SVSMHDLYIFG) == 0)); + + // Clear all Flags + PMMIFG &= ~(SVMHVLRIFG | SVMHIFG | SVSMHDLYIFG | SVMLVLRIFG | SVMLIFG | SVSMLDLYIFG); + + PMMRIE = PMMRIE_backup; // Restore PMM interrupt enable register + PMMCTL0_H = 0x00; // Lock PMM registers for write access + + return PMM_STATUS_OK; +} + +/******************************************************************************* + * \brief Decrease Vcore by one level + * + * \param level Level to which Vcore needs to be decreased + * \return status Success/failure + ******************************************************************************/ +static unsigned int SetVCoreDown(unsigned char level) +{ + unsigned int PMMRIE_backup, SVSMHCTL_backup, SVSMLCTL_backup; + + // The code flow for decreasing the Vcore has been altered to work around + // the erratum FLASH37. + // Please refer to the Errata sheet to know if a specific device is affected + // DO NOT ALTER THIS FUNCTION + + // Open PMM registers for write access + PMMCTL0_H = 0xA5; + + // Disable dedicated Interrupts + // Backup all registers + PMMRIE_backup = PMMRIE; + PMMRIE &= ~(SVMHVLRPE | SVSHPE | SVMLVLRPE | SVSLPE | SVMHVLRIE | + SVMHIE | SVSMHDLYIE | SVMLVLRIE | SVMLIE | SVSMLDLYIE ); + SVSMHCTL_backup = SVSMHCTL; + SVSMLCTL_backup = SVSMLCTL; + + // Clear flags + PMMIFG &= ~(SVMHIFG | SVSMHDLYIFG | SVMLIFG | SVSMLDLYIFG); + + // Set SVM, SVS high & low side to new settings in normal mode + SVSMHCTL = SVMHE | (SVSMHRRL0 * level) | SVSHE | (SVSHRVL0 * level); + SVSMLCTL = SVMLE | (SVSMLRRL0 * level) | SVSLE | (SVSLRVL0 * level); + + // Wait until SVM high side and SVM low side is settled + while ((PMMIFG & SVSMHDLYIFG) == 0 || (PMMIFG & SVSMLDLYIFG) == 0); + + // Clear flags + PMMIFG &= ~(SVSMHDLYIFG + SVSMLDLYIFG); + // SVS, SVM core and high side are now set to protect for the new core level + + // Set VCore to new level + PMMCTL0_L = PMMCOREV0 * level; + + // Restore Low side settings + // Clear all other bits _except_ level settings + SVSMLCTL &= (SVSLRVL0+SVSLRVL1+SVSMLRRL0+SVSMLRRL1+SVSMLRRL2); + + // Clear level settings in the backup register,keep all other bits + SVSMLCTL_backup &= ~(SVSLRVL0+SVSLRVL1+SVSMLRRL0+SVSMLRRL1+SVSMLRRL2); + + // Restore low-side SVS monitor settings + SVSMLCTL |= SVSMLCTL_backup; + + // Restore High side settings + // Clear all other bits except level settings + SVSMHCTL &= (SVSHRVL0+SVSHRVL1+SVSMHRRL0+SVSMHRRL1+SVSMHRRL2); + + // Clear level settings in the backup register, keep all other bits + SVSMHCTL_backup &= ~(SVSHRVL0+SVSHRVL1+SVSMHRRL0+SVSMHRRL1+SVSMHRRL2); + + // Restore backup + SVSMHCTL |= SVSMHCTL_backup; + + // Wait until high side, low side settled + while (((PMMIFG & SVSMLDLYIFG) == 0) && ((PMMIFG & SVSMHDLYIFG) == 0)); + + // Clear all Flags + PMMIFG &= ~(SVMHVLRIFG | SVMHIFG | SVSMHDLYIFG | SVMLVLRIFG | SVMLIFG | SVSMLDLYIFG); + + PMMRIE = PMMRIE_backup; // Restore PMM interrupt enable register + PMMCTL0_H = 0x00; // Lock PMM registers for write access + return PMM_STATUS_OK; // Return: OK +} + +unsigned int SetVCore(unsigned char level) +{ + unsigned int actlevel; + unsigned int status; + + status = 0; + level &= PMMCOREV_3; // Set Mask for Max. level + actlevel = (PMMCTL0 & PMMCOREV_3); // Get actual VCore + // step by step increase or decrease + while (((level != actlevel) && (status == 0)) || (level < actlevel)) { + if (level > actlevel) { + status = SetVCoreUp(++actlevel); + } + else { + status = SetVCoreDown(--actlevel); + } + } + + return status; +} diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.d b/metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.d new file mode 100644 index 0000000..ebe26fa --- /dev/null +++ b/metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.d @@ -0,0 +1,7 @@ +HAL_PMM.o: F5xx_F6xx_Core_Lib/HAL_PMM.c \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/msp430.h \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/msp430f5438a.h \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/iomacros.h \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/in430.h \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/intrinsics.h \ + F5xx_F6xx_Core_Lib/HAL_PMM.h F5xx_F6xx_Core_Lib/HAL_MACROS.h diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.h b/metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.h new file mode 100644 index 0000000..c56020a --- /dev/null +++ b/metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.h @@ -0,0 +1,105 @@ +/******************************************************************************* + * + * HAL_PMM.h + * Power Management Module Library for MSP430F5xx/6xx family + * + * + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Created: Version 1.0 11/24/2009 + * Updated: Version 2.0 12/15/2010 + * + ******************************************************************************/ + +#ifndef HAL_PMM_H +#define HAL_PMM_H + +#include "HAL_MACROS.h" + +/******************************************************************************* + * Macros + ******************************************************************************/ +#define ENABLE_SVSL() st(PMMCTL0_H = 0xA5; SVSMLCTL |= SVSLE; PMMCTL0_H = 0x00;) +#define DISABLE_SVSL() st(PMMCTL0_H = 0xA5; SVSMLCTL &= ~SVSLE; PMMCTL0_H = 0x00;) +#define ENABLE_SVML() st(PMMCTL0_H = 0xA5; SVSMLCTL |= SVMLE; PMMCTL0_H = 0x00;) +#define DISABLE_SVML() st(PMMCTL0_H = 0xA5; SVSMLCTL &= ~SVMLE; PMMCTL0_H = 0x00;) +#define ENABLE_SVSH() st(PMMCTL0_H = 0xA5; SVSMHCTL |= SVSHE; PMMCTL0_H = 0x00;) +#define DISABLE_SVSH() st(PMMCTL0_H = 0xA5; SVSMHCTL &= ~SVSHE; PMMCTL0_H = 0x00;) +#define ENABLE_SVMH() st(PMMCTL0_H = 0xA5; SVSMHCTL |= SVMHE; PMMCTL0_H = 0x00;) +#define DISABLE_SVMH() st(PMMCTL0_H = 0xA5; SVSMHCTL &= ~SVMHE; PMMCTL0_H = 0x00;) +#define ENABLE_SVSL_SVML() st(PMMCTL0_H = 0xA5; SVSMLCTL |= (SVSLE + SVMLE); PMMCTL0_H = 0x00;) +#define DISABLE_SVSL_SVML() st(PMMCTL0_H = 0xA5; SVSMLCTL &= ~(SVSLE + SVMLE); PMMCTL0_H = 0x00;) +#define ENABLE_SVSH_SVMH() st(PMMCTL0_H = 0xA5; SVSMHCTL |= (SVSHE + SVMHE); PMMCTL0_H = 0x00;) +#define DISABLE_SVSH_SVMH() st(PMMCTL0_H = 0xA5; SVSMHCTL &= ~(SVSHE + SVMHE); PMMCTL0_H = 0x00;) + +#define ENABLE_SVSL_RESET() st(PMMCTL0_H = 0xA5; PMMRIE |= SVSLPE; PMMCTL0_H = 0x00;) +#define DISABLE_SVSL_RESET() st(PMMCTL0_H = 0xA5; PMMRIE &= ~SVSLPE; PMMCTL0_H = 0x00;) +#define ENABLE_SVML_INTERRUPT() st(PMMCTL0_H = 0xA5; PMMRIE |= SVMLIE; PMMCTL0_H = 0x00;) +#define DISABLE_SVML_INTERRUPT() st(PMMCTL0_H = 0xA5; PMMRIE &= ~SVMLIE; PMMCTL0_H = 0x00;) +#define ENABLE_SVSH_RESET() st(PMMCTL0_H = 0xA5; PMMRIE |= SVSHPE; PMMCTL0_H = 0x00;) +#define DISABLE_SVSH_RESET() st(PMMCTL0_H = 0xA5; PMMRIE &= ~SVSHPE; PMMCTL0_H = 0x00;) +#define ENABLE_SVMH_INTERRUPT() st(PMMCTL0_H = 0xA5; PMMRIE |= SVMHIE; PMMCTL0_H = 0x00;) +#define DISABLE_SVMH_INTERRUPT() st(PMMCTL0_H = 0xA5; PMMRIE &= ~SVMHIE; PMMCTL0_H = 0x00;) +#define CLEAR_PMM_IFGS() st(PMMCTL0_H = 0xA5; PMMIFG = 0; PMMCTL0_H = 0x00;) + +// These settings use SVSH/LACE = 0 +#define SVSL_ENABLED_IN_LPM_FAST_WAKE() st(PMMCTL0_H = 0xA5; SVSMLCTL |= (SVSLFP+SVSLMD); SVSMLCTL &= ~SVSMLACE; PMMCTL0_H = 0x00;) +#define SVSL_ENABLED_IN_LPM_SLOW_WAKE() st(PMMCTL0_H = 0xA5; SVSMLCTL |= SVSLMD; SVSMLCTL &= ~(SVSLFP+SVSMLACE); PMMCTL0_H = 0x00;) + +#define SVSL_DISABLED_IN_LPM_FAST_WAKE() st(PMMCTL0_H = 0xA5; SVSMLCTL |= SVSLFP; SVSMLCTL &= ~(SVSLMD+SVSMLACE); PMMCTL0_H = 0x00;) +#define SVSL_DISABLED_IN_LPM_SLOW_WAKE() st(PMMCTL0_H = 0xA5; SVSMLCTL &= ~(SVSLFP+SVSMLACE+SVSLMD); PMMCTL0_H = 0x00;) + +#define SVSH_ENABLED_IN_LPM_NORM_PERF() st(PMMCTL0_H = 0xA5; SVSMHCTL |= SVSHMD; SVSMHCTL &= ~(SVSMHACE+SVSHFP); PMMCTL0_H = 0x00;) +#define SVSH_ENABLED_IN_LPM_FULL_PERF() st(PMMCTL0_H = 0xA5; SVSMHCTL |= (SVSHMD+SVSHFP); SVSMHCTL &= ~SVSMHACE; PMMCTL0_H = 0x00;) + +#define SVSH_DISABLED_IN_LPM_NORM_PERF() st(PMMCTL0_H = 0xA5; SVSMHCTL &= ~(SVSMHACE+SVSHFP+SVSHMD);PMMCTL0_H = 0x00;) +#define SVSH_DISABLED_IN_LPM_FULL_PERF() st(PMMCTL0_H = 0xA5; SVSMHCTL |= SVSHFP; SVSMHCTL &= ~(SVSMHACE+SVSHMD); PMMCTL0_H = 0x00;) + +// These setting use SVSH/LACE = 1 +#define SVSL_OPTIMIZED_IN_LPM_FAST_WAKE() st(PMMCTL0_H = 0xA5; SVSMLCTL |= (SVSLFP+SVSLMD+SVSMLACE); PMMCTL0_H = 0x00;) +#define SVSH_OPTIMIZED_IN_LPM_FULL_PERF() st(PMMCTL0_H = 0xA5; SVSMHCTL |= (SVSHMD+SVSHFP+SVSMHACE); PMMCTL0_H = 0x00;) + +/******************************************************************************* + * Defines + ******************************************************************************/ +#define PMM_STATUS_OK 0 +#define PMM_STATUS_ERROR 1 + +/******************************************************************************* + * \brief Set Vcore to expected level + * + * \param level Level to which Vcore needs to be increased/decreased + * \return status Success/failure + ******************************************************************************/ +extern unsigned int SetVCore(unsigned char level); + +#endif /* HAL_PMM_H */ diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.c b/metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.c new file mode 100644 index 0000000..4001672 --- /dev/null +++ b/metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.c @@ -0,0 +1,158 @@ +/******************************************************************************* + * + * HAL_TLV.c + * Provides Functions to Read the TLV Data Section of the MSP430 Devices + * + * + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Updated: Version 2.0 01/17/2011 + * + ******************************************************************************/ + +#include "msp430.h" +#include "HAL_TLV.h" + +void Get_TLV_Info(unsigned char tag, unsigned char instance, unsigned char *length, unsigned int **data_address) +{ + char *TLV_address = (char *)TLV_START; // TLV Structure Start Address + + while((TLV_address < (char *)TLV_END) + && ((*TLV_address != tag) || instance) // check for tag and instance + && (*TLV_address != TLV_TAGEND)) // do range check first + { + if (*TLV_address == tag) instance--; // repeat till requested instance is reached + TLV_address += *(TLV_address + 1) + 2; // add (Current TAG address + LENGTH) + 2 + } + + if (*TLV_address == tag) // Check if Tag match happened.. + { + *length = *(TLV_address + 1); // Return length = Address + 1 + *data_address = (unsigned int *)(TLV_address + 2); // Return address of first data/value info = Address + 2 + } + else // If there was no tag match and the end of TLV structure was reached.. + { + *length = 0; // Return 0 for TAG not found + *data_address = 0; // Return 0 for TAG not found + } +} + +unsigned int Get_Device_Type(void) +{ + unsigned int *pDeviceType = (unsigned int *)DEVICE_ID_0; + return pDeviceType[0]; // Return Value from TLV Table +} + +unsigned int Get_TLV_Memory(unsigned char instance) +{ + unsigned char *pPDTAG; + unsigned char bPDTAG_bytes; + unsigned int count; + + instance *= 2; // set tag for word access comparison + + // TLV access Function Call + Get_TLV_Info(TLV_PDTAG, 0, &bPDTAG_bytes, (unsigned int **)&pPDTAG); // Get Peripheral data pointer + + for (count = 0;count <= instance; count += 2) + { + if (pPDTAG[count] == 0) return 0; // Return 0 if end reached + if (count == instance) return (pPDTAG[count] | pPDTAG[count+1]<<8); + } + + return 0; // Return 0: not found +} + +unsigned int Get_TLV_Peripheral(unsigned char tag, unsigned char instance) +{ + unsigned char *pPDTAG; + unsigned char bPDTAG_bytes; + unsigned int count = 0; + unsigned int pcount = 0; + + Get_TLV_Info(TLV_PDTAG, 0, &bPDTAG_bytes, (unsigned int **)&pPDTAG); // Get Peripheral data pointer + + // read memory configuration from TLV to get offset for Peripherals + while (Get_TLV_Memory(count)) { + count++; + } + + pcount = pPDTAG[count * 2 + 1]; // get number of Peripheral entries + count++; // inc count to first Periperal + pPDTAG += count*2; // adjust point to first address of Peripheral + count = 0; // set counter back to 0 + pcount *= 2; // align pcount for work comparision + + // TLV access Function Call + for (count = 0; count <= pcount; count += 2) { + if (pPDTAG[count+1] == tag) { // test if required Peripheral is found + if (instance > 0) { // test if required instance is found + instance--; + } + else { + return (pPDTAG[count] | pPDTAG[count + 1] << 8); // Return found data + } + } + } + + return 0; // Return 0: not found +} + +unsigned char Get_TLV_Interrupt(unsigned char tag) +{ + unsigned char *pPDTAG; + unsigned char bPDTAG_bytes; + unsigned int count = 0; + unsigned int pcount = 0; + + Get_TLV_Info(TLV_PDTAG, 0, &bPDTAG_bytes, (unsigned int **)&pPDTAG); // Get Peripheral data pointer + + // read memory configuration from TLV to get offset for Peripherals + while (Get_TLV_Memory(count)) + { + count++; + } + + pcount = pPDTAG[count * 2 + 1]; + count++; // inc count to first Periperal + pPDTAG += (pcount + count) * 2; // adjust point to first address of Peripheral + count = 0; // set counter back to 0 + + // TLV access Function Call + for (count = 0; count <= tag; count += 2) + { + if (pPDTAG[count] == 0) return 0; // Return 0: not found/end of table + if (count == tag) return (pPDTAG[count]); // Return found data + } + + return 0; // Return 0: not found +} diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.h b/metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.h new file mode 100644 index 0000000..9b616c3 --- /dev/null +++ b/metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.h @@ -0,0 +1,226 @@ +/******************************************************************************* + * + * HAL_TLV.c + * Provides Functions to Read the TLV Data Section of the MSP430 Devices + * + * + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Updated: Version 2.0 01/17/2011 + * + ******************************************************************************/ + +#ifndef HAL_TLV_H +#define HAL_TLV_H + +/******************************************************************************* + * Device Descriptors - Fixed Memory Locations + ******************************************************************************/ +#define DEVICE_ID_0 (0x1A04) +#define DEVICE_ID_1 (0x1A05) + +/******************************************************************************* + * Data Types + ******************************************************************************/ +struct s_TLV_Die_Record { + unsigned char die_record[10]; +}; + +struct s_TLV_ADC_Cal_Data { + unsigned int adc_gain_factor; + unsigned int adc_offset; + unsigned int adc_ref15_30_temp; + unsigned int adc_ref15_85_temp; + unsigned int adc_ref20_30_temp; + unsigned int adc_ref20_85_temp; + unsigned int adc_ref25_30_temp; + unsigned int adc_ref25_85_temp; +}; + +struct s_TLV_Timer_D_Cal_Data { + unsigned int TDH0CTL1_64; + unsigned int TDH0CTL1_128; + unsigned int TDH0CTL1_200; + unsigned int TDH0CTL1_256; +}; + +struct s_TLV_REF_Cal_Data { + unsigned int ref_ref15; + unsigned int ref_ref20; + unsigned int adc_ref25; +}; + +/******************************************************************************* + * Tag Defines + ******************************************************************************/ +#define TLV_LDTAG (0x01) /* Legacy descriptor (1xx, 2xx, + 4xx families) */ +#define TLV_PDTAG (0x02) /* Peripheral discovery descriptor */ +#define TLV_Reserved3 (0x03) /* Future usage */ +#define TLV_Reserved4 (0x04) /* Future usage */ +#define TLV_BLANK (0x05) /* Blank descriptor */ +#define TLV_Reserved6 (0x06) /* Future usage */ +#define TLV_Reserved7 (0x07) /* Serial Number */ +#define TLV_DIERECORD (0x08) /* Die Record */ +#define TLV_ADCCAL (0x11) /* ADC12 calibration */ +#define TLV_ADC12CAL (0x11) /* ADC12 calibration */ +#define TLV_ADC10CAL (0x13) /* ADC10 calibration */ +#define TLV_REFCAL (0x12) /* REF calibration */ +#define TLV_TIMER_D_CAL (0x15) /* Timer_Dx calibration */ +#define TLV_TAGEXT (0xFE) /* Tag extender */ +#define TLV_TAGEND (0xFF) /* Tag End of Table */ + +/******************************************************************************* + * Peripheral Defines + ******************************************************************************/ +#define TLV_PID_NO_MODULE (0x00) /* No Module */ +#define TLV_PID_PORTMAPPING (0x10) /* Port Mapping */ +#define TLV_PID_MSP430CPUXV2 (0x23) /* MSP430CPUXV2 */ +#define TLV_PID_JTAG (0x09) /* JTAG */ +#define TLV_PID_SBW (0x0F) /* SBW */ +#define TLV_PID_EEM_XS (0x02) /* EEM X-Small */ +#define TLV_PID_EEM_S (0x03) /* EEM Small */ +#define TLV_PID_EEM_M (0x04) /* EEM Medium */ +#define TLV_PID_EEM_L (0x05) /* EEM Large */ +#define TLV_PID_PMM (0x30) /* PMM */ +#define TLV_PID_PMM_FR (0x32) /* PMM FRAM */ +#define TLV_PID_FCTL (0x39) /* Flash */ +#define TLV_PID_CRC16 (0x3C) /* CRC16 */ +#define TLV_PID_CRC16_RB (0x3D) /* CRC16 Reverse */ +#define TLV_PID_WDT_A (0x40) /* WDT_A */ +#define TLV_PID_SFR (0x41) /* SFR */ +#define TLV_PID_SYS (0x42) /* SYS */ +#define TLV_PID_RAMCTL (0x44) /* RAMCTL */ +#define TLV_PID_DMA_1 (0x46) /* DMA 1 */ +#define TLV_PID_DMA_3 (0x47) /* DMA 3 */ +#define TLV_PID_UCS (0x48) /* UCS */ +#define TLV_PID_DMA_6 (0x4A) /* DMA 6 */ +#define TLV_PID_DMA_2 (0x4B) /* DMA 2 */ +#define TLV_PID_PORT1_2 (0x51) /* Port 1 + 2 / A */ +#define TLV_PID_PORT3_4 (0x52) /* Port 3 + 4 / B */ +#define TLV_PID_PORT5_6 (0x53) /* Port 5 + 6 / C */ +#define TLV_PID_PORT7_8 (0x54) /* Port 7 + 8 / D */ +#define TLV_PID_PORT9_10 (0x55) /* Port 9 + 10 / E */ +#define TLV_PID_PORT11_12 (0x56) /* Port 11 + 12 / F */ +#define TLV_PID_PORTU (0x5E) /* Port U */ +#define TLV_PID_PORTJ (0x5F) /* Port J */ +#define TLV_PID_TA2 (0x60) /* Timer A2 */ +#define TLV_PID_TA3 (0x61) /* Timer A1 */ +#define TLV_PID_TA5 (0x62) /* Timer A5 */ +#define TLV_PID_TA7 (0x63) /* Timer A7 */ +#define TLV_PID_TB3 (0x65) /* Timer B3 */ +#define TLV_PID_TB5 (0x66) /* Timer B5 */ +#define TLV_PID_TB7 (0x67) /* Timer B7 */ +#define TLV_PID_RTC (0x68) /* RTC */ +#define TLV_PID_BT_RTC (0x69) /* BT + RTC */ +#define TLV_PID_BBS (0x6A) /* Battery Backup Switch */ +#define TLV_PID_RTC_B (0x6B) /* RTC_B */ +#define TLV_PID_TD2 (0x6C) /* Timer D2 */ +#define TLV_PID_TD3 (0x6D) /* Timer D1 */ +#define TLV_PID_TD5 (0x6E) /* Timer D5 */ +#define TLV_PID_TD7 (0x6F) /* Timer D7 */ +#define TLV_PID_TEC (0x70) /* Imer Event Control */ +#define TLV_PID_RTC_C (0x71) /* RTC_C */ +#define TLV_PID_AES (0x80) /* AES */ +#define TLV_PID_MPY16 (0x84) /* MPY16 */ +#define TLV_PID_MPY32 (0x85) /* MPY32 */ +#define TLV_PID_MPU (0x86) /* MPU */ +#define TLV_PID_USCI_AB (0x90) /* USCI_AB */ +#define TLV_PID_USCI_A (0x91) /* USCI_A */ +#define TLV_PID_USCI_B (0x92) /* USCI_B */ +#define TLV_PID_EUSCI_A (0x94) /* eUSCI_A */ +#define TLV_PID_EUSCI_B (0x95) /* eUSCI_B */ +#define TLV_PID_REF (0xA0) /* Shared Reference */ +#define TLV_PID_COMP_B (0xA8) /* COMP_B */ +#define TLV_PID_COMP_D (0xA9) /* COMP_D */ +#define TLV_PID_USB (0x98) /* USB */ +#define TLV_PID_LCD_B (0xB1) /* LCD_B */ +#define TLV_PID_LCD_C (0xB2) /* LCD_C */ +#define TLV_PID_DAC12_A (0xC0) /* DAC12_A */ +#define TLV_PID_SD16_B_1 (0xC8) /* SD16_B 1 Channel */ +#define TLV_PID_SD16_B_2 (0xC9) /* SD16_B 2 Channel */ +#define TLV_PID_SD16_B_3 (0xCA) /* SD16_B 3 Channel */ +#define TLV_PID_SD16_B_4 (0xCB) /* SD16_B 4 Channel */ +#define TLV_PID_SD16_B_5 (0xCC) /* SD16_B 5 Channel */ +#define TLV_PID_SD16_B_6 (0xCD) /* SD16_B 6 Channel */ +#define TLV_PID_SD16_B_7 (0xCE) /* SD16_B 7 Channel */ +#define TLV_PID_SD16_B_8 (0xCF) /* SD16_B 8 Channel */ +#define TLV_PID_ADC12_A (0xD1) /* ADC12_A */ +#define TLV_PID_ADC10_A (0xD3) /* ADC10_A */ +#define TLV_PID_ADC10_B (0xD4) /* ADC10_B */ +#define TLV_PID_SD16_A (0xD8) /* SD16_A */ +#define TLV_PID_TI_BSL (0xFC) /* BSL */ + +/******************************************************************************* + * \brief Get Information out of the TLV Table + * + * \param tag Tag of the TLV entry + * \param instance Instance of the Tag of the TLV entry + * \param *length return: Length of the information if found + * \param **data_address return: start pointer of Data + ******************************************************************************/ +void Get_TLV_Info(unsigned char tag, unsigned char instance, unsigned char *length, + unsigned int **data_address); + +/******************************************************************************* + * \brief Get Device Type out of the TLV Table + * + * \return Device dependent value + ******************************************************************************/ +unsigned int Get_Device_Type(void); + +/******************************************************************************* + * \brief Get Memory Info out of the TLV Table + * + * \param instance Index of the Instance [0..] + * \return Memory Data found + ******************************************************************************/ +unsigned int Get_TLV_Memory(unsigned char instance); + +/******************************************************************************* + * \brief Get Peripheral Info out of the TLV Table + * + * \param tag Tag of the TLV entry + * \param instance Index of the Instance [0..] + * \return Peripheral Data found + ******************************************************************************/ +unsigned int Get_TLV_Peripheral(unsigned char tag, unsigned char instance); + +/******************************************************************************* + * \brief Get Interrupt Info out of the TLV Table + * + * \param tag Tag of the TLV entry + * \return Interrupt Data found + ******************************************************************************/ +unsigned char Get_TLV_Interrupt(unsigned char tag); + +#endif /* HAL_TLV_H */ diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.c b/metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.c new file mode 100644 index 0000000..ae015f6 --- /dev/null +++ b/metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.c @@ -0,0 +1,340 @@ +/******************************************************************************* + * + * HAL_UCS.c + * Provides Functions to Initialize the UCS/FLL and clock sources + * + * + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Created: Version 1.0 11/24/2009 + * Updated: Version 2.0 12/15/2010 + * Added Functions: XT2_Stop() and XT1_Stop() + * Modified all functions to preserve drive settings + * + ******************************************************************************/ + +#include "msp430.h" +#include "HAL_UCS.h" +// #include "hal_calibration.h" + +/******************************************************************************* + * Check and define required Defines + ******************************************************************************/ +#ifndef XT1LFOFFG // Defines if not available in header file +#define XT1LFOFFG 0 +#endif + +#ifndef XT1HFOFFG // Defines if not available in header file +#define XT1HFOFFG 0 +#endif + +#ifndef XT2OFFG // Defines if not available in header file +#define XT2OFFG 0 +#endif + +#ifndef XTS // Defines if not available in header file +#define XTS 0 +#endif + +#ifndef XT2DRIVE_3 // Defines if not available in header file +#define XT2DRIVE_3 0 +#endif + + +/******************************************************************************* + * \brief Initializes FLL of the UCS + * + * \param fsystem Required system frequency (MCLK) in kHz + * \param ratio Ratio between fsystem and FLLREFCLK + ******************************************************************************/ +static void Init_FLL(unsigned int fsystem, unsigned int ratio); + + +#if 0 +void LFXT_Start(unsigned int xtdrive) +{ + // If the drive setting is not already set to maximum + // Set it to max for LFXT startup + if ((UCSCTL6 & XT1DRIVE_3)!= XT1DRIVE_3) { + UCSCTL6_L |= XT1DRIVE1_L + XT1DRIVE0_L; // Highest drive setting for XT1startup + } + + while (SFRIFG1 & OFIFG) { // Check OFIFG fault flag + UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG); // Clear OSC flaut Flags fault flags + SFRIFG1 &= ~OFIFG; // Clear OFIFG fault flag + } + + UCSCTL6 = (UCSCTL6 & ~(XT1DRIVE_3)) | (xtdrive); // set requested Drive mode +} +#endif + +unsigned int LFXT_Start_Timeout(unsigned int xtdrive, unsigned int timeout) +{ + // add in capacitor setting + //SetOscillatorCapacitorValues(); + + // If the drive setting is not already set to maximum + // Set it to max for LFXT startup + if ((UCSCTL6 & XT1DRIVE_3)!= XT1DRIVE_3) { + UCSCTL6_L |= XT1DRIVE1_L+XT1DRIVE0_L; // Highest drive setting for XT1startup + } + + while ((SFRIFG1 & OFIFG) && timeout--){ // Check OFIFG fault flag + UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG); // Clear OSC flaut Flags fault flags + SFRIFG1 &= ~OFIFG; // Clear OFIFG fault flag + } + + UCSCTL6 = (UCSCTL6 & ~(XT1DRIVE_3)) |(xtdrive); // set Drive mode + + // add in capacitor setting + //SetOscillatorCapacitorValues(); + + if (timeout) + return (UCS_STATUS_OK); + else + return (UCS_STATUS_ERROR); +} + +#if 0 +void XT1_Start(unsigned int xtdrive) +{ + // Check if drive value is the expected one + if ((UCSCTL6 & XT1DRIVE_3) != xtdrive) { + UCSCTL6 &= ~XT1DRIVE_3; // Clear XT1drive field + UCSCTL6 |= xtdrive; // Set requested value + } + + UCSCTL6 &= ~XT1OFF; // Enable XT1 + UCSCTL6 |= XTS; // Enable HF mode + + while (SFRIFG1 & OFIFG) { // Check OFIFG fault flag + UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG); // Clear OSC flaut Flags + SFRIFG1 &= ~OFIFG; // Clear OFIFG fault flag + } +} + +unsigned int XT1_Start_Timeout(unsigned int xtdrive, unsigned int timeout) +{ + // Check if drive value is the expected one + if ((UCSCTL6 & XT1DRIVE_3) != xtdrive) { + UCSCTL6 &= ~XT1DRIVE_3; // Clear XT1drive field + UCSCTL6 |= xtdrive; // Set requested value + } + + UCSCTL6 &= ~XT1OFF; // Enable XT1 + UCSCTL6 |= XTS; // Enable HF mode + + while ((SFRIFG1 & OFIFG) && timeout--) { // Check OFIFG fault flag + UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG); // Clear OSC flaut Flags + SFRIFG1 &= ~OFIFG; // Clear OFIFG fault flag + } + + if (timeout) { + return UCS_STATUS_OK; + } + else { + return UCS_STATUS_ERROR; + } +} + +void XT1_Bypass(void) +{ + UCSCTL6 |= XT1BYPASS; + + while (SFRIFG1 & OFIFG) { // Check OFIFG fault flag + UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG); // Clear OSC flaut Flags + SFRIFG1 &= ~OFIFG; // Clear OFIFG fault flag + } +} +#endif + +void XT1_Stop(void) +{ + UCSCTL6 |= XT1OFF; // Switch off XT1 oscillator +} + +#if 0 +void XT2_Start(unsigned int xtdrive) +{ + // Check if drive value is the expected one + if ((UCSCTL6 & XT2DRIVE_3) != xtdrive) { + UCSCTL6 &= ~XT2DRIVE_3; // Clear XT2drive field + UCSCTL6 |= xtdrive; // Set requested value + } + + UCSCTL6 &= ~XT2OFF; + + while (SFRIFG1 & OFIFG) { // Check OFIFG fault flag + UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG); // Clear OSC flaut Flags + SFRIFG1 &= ~OFIFG; // Clear OFIFG fault flag + } +} + +unsigned int XT2_Start_Timeout(unsigned int xtdrive, unsigned int timeout) +{ + // Check if drive value is the expected one + if ((UCSCTL6 & XT2DRIVE_3) != xtdrive) { + UCSCTL6 &= ~XT2DRIVE_3; // Clear XT2drive field + UCSCTL6 |= xtdrive; // Set requested value + } + + UCSCTL6 &= ~XT2OFF; + + while ((SFRIFG1 & OFIFG) && timeout--) { // Check OFIFG fault flag + UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG); // Clear OSC flaut Flags + SFRIFG1 &= ~OFIFG; // Clear OFIFG fault flag + } + + if (timeout) { + return UCS_STATUS_OK; + } + else { + return UCS_STATUS_ERROR; + } +} + +void XT2_Bypass(void) +{ +#ifdef XT2BYPASS // On devices without XT2 this function will be empty + UCSCTL6 |= XT2BYPASS; + + while (SFRIFG1 & OFIFG) { // Check OFIFG fault flag + UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG); // Clear OSC flaut Flags + SFRIFG1 &= ~OFIFG; // Clear OFIFG fault flag + } +#endif +} + +void XT2_Stop(void) +{ + UCSCTL6 |= XT2OFF; // Switch off XT2 oscillator +} +#endif + +void Init_FLL_Settle(unsigned int fsystem, unsigned int ratio) +{ + volatile unsigned int x; + + // x = ratio * 32; + x = ratio << 5; + Init_FLL(fsystem, ratio); + + /* from changes in Init_FLL we know that fll is now enabled */ + while (x--) { + __delay_cycles(30); + } +} + +static void Init_FLL(unsigned int fsystem, unsigned int ratio) +{ + unsigned int d, dco_div_bits; + unsigned int mode; + +#if 0 + unsigned int srRegisterState; +#endif + + mode = 0; + + /* we only run this at startup and we want the fll enabled on exit */ +#if 0 + // Save actual state of FLL loop control, then disable it. This is needed to + // prevent the FLL from acting as we are making fundamental modifications to + // the clock setup. + srRegisterState = __get_SR_register() & SCG0; +#endif + + d = ratio; + dco_div_bits = FLLD__2; // Have at least a divider of 2 + + if (fsystem > 16000) { + d >>= 1 ; + mode = 1; + } + else { + fsystem <<= 1; // fsystem = fsystem * 2 + } + + while (d > 512) { + dco_div_bits = dco_div_bits + FLLD0; // Set next higher div level + d >>= 1; + } + + // Disable FLL + __bis_SR_register(SCG0); + + UCSCTL0 = 0x0000; // Set DCO to lowest Tap + + UCSCTL2 &= ~(0x03FF); // Reset FN bits + UCSCTL2 = dco_div_bits | (d - 1); + + if (fsystem <= 630) // fsystem < 0.63MHz + UCSCTL1 = DCORSEL_0; + else if (fsystem < 1250) // 0.63MHz < fsystem < 1.25MHz + UCSCTL1 = DCORSEL_1; + else if (fsystem < 2500) // 1.25MHz < fsystem < 2.5MHz + UCSCTL1 = DCORSEL_2; + else if (fsystem < 5000) // 2.5MHz < fsystem < 5MHz + UCSCTL1 = DCORSEL_3; + else if (fsystem < 10000) // 5MHz < fsystem < 10MHz + UCSCTL1 = DCORSEL_4; + else if (fsystem < 20000) // 10MHz < fsystem < 20MHz + UCSCTL1 = DCORSEL_5; + else if (fsystem < 40000) // 20MHz < fsystem < 40MHz + UCSCTL1 = DCORSEL_6; + else + UCSCTL1 = DCORSEL_7; + + // Re-enable FLL + __bic_SR_register(SCG0); + + while (SFRIFG1 & OFIFG) { // Check OFIFG fault flag + UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG); // Clear OSC flaut Flags + SFRIFG1 &= ~OFIFG; // Clear OFIFG fault flag + } + + /* Init fll is only run at startup - We want the fll enabled when + * this function is complete (so don't save a restore setting) + */ +#if 0 + // Restore previous SCG0 + __bis_SR_register(srRegisterState); +#endif + + if (mode == 1) { // fsystem > 16000 + SELECT_MCLK_SMCLK(SELM__DCOCLK + SELS__DCOCLK); // Select DCOCLK + } + else { + SELECT_MCLK_SMCLK(SELM__DCOCLKDIV + SELS__DCOCLKDIV); // Select DCODIVCLK + } + +} diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.d b/metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.d new file mode 100644 index 0000000..cd525bd --- /dev/null +++ b/metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.d @@ -0,0 +1,7 @@ +HAL_UCS.o: F5xx_F6xx_Core_Lib/HAL_UCS.c \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/msp430.h \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/msp430f5438a.h \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/iomacros.h \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/in430.h \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/intrinsics.h \ + F5xx_F6xx_Core_Lib/HAL_UCS.h F5xx_F6xx_Core_Lib/HAL_MACROS.h diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.h b/metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.h new file mode 100644 index 0000000..1c5b418 --- /dev/null +++ b/metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.h @@ -0,0 +1,163 @@ +/******************************************************************************* + * + * HAL_UCS.h + * Provides Functions to Initialize the UCS/FLL and clock sources + * + * + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Created: Version 1.0 11/24/2009 + * Updated: Version 2.0 12/15/2010 + * Added Functions: XT2_Stop() and XT1_Stop() + * + ******************************************************************************/ + +#ifndef HAL_UCS_H +#define HAL_UCS_H + +#include "HAL_MACROS.h" + +/******************************************************************************* + * Macros + ******************************************************************************/ + +/* Select source for FLLREF e.g. SELECT_FLLREF(SELREF__XT1CLK) */ +#define SELECT_FLLREF(source) st(UCSCTL3 = (UCSCTL3 & ~(SELREF_7)) | (source);) +/* Select source for ACLK e.g. SELECT_ACLK(SELA__XT1CLK) */ +#define SELECT_ACLK(source) st(UCSCTL4 = (UCSCTL4 & ~(SELA_7)) | (source);) +/* Select source for MCLK e.g. SELECT_MCLK(SELM__XT2CLK) */ +#define SELECT_MCLK(source) st(UCSCTL4 = (UCSCTL4 & ~(SELM_7)) | (source);) +/* Select source for SMCLK e.g. SELECT_SMCLK(SELS__XT2CLK) */ +#define SELECT_SMCLK(source) st(UCSCTL4 = (UCSCTL4 & ~(SELS_7)) | (source);) +/* Select source for MCLK and SMCLK e.g. SELECT_MCLK_SMCLK(SELM__DCOCLK + SELS__DCOCLK) */ +#define SELECT_MCLK_SMCLK(sources) st(UCSCTL4 = (UCSCTL4 & ~(SELM_7 + SELS_7)) | (sources);) + +/* set ACLK/x */ +#define ACLK_DIV(x) st(UCSCTL5 = (UCSCTL5 & ~(DIVA_7)) | (DIVA__##x);) +/* set MCLK/x */ +#define MCLK_DIV(x) st(UCSCTL5 = (UCSCTL5 & ~(DIVM_7)) | (DIVM__##x);) +/* set SMCLK/x */ +#define SMCLK_DIV(x) st(UCSCTL5 = (UCSCTL5 & ~(DIVS_7)) | (DIVS__##x);) +/* Select divider for FLLREF e.g. SELECT_FLLREFDIV(2) */ +#define SELECT_FLLREFDIV(x) st(UCSCTL3 = (UCSCTL3 & ~(FLLREFDIV_7))|(FLLREFDIV__##x);) + +/******************************************************************************* + * Defines + ******************************************************************************/ +#define UCS_STATUS_OK 0 +#define UCS_STATUS_ERROR 1 + +#if 0 +/******************************************************************************* + * \brief Startup routine for 32kHz Crystal on LFXT1 + * + * \param xtdrive Bits defining the LFXT drive mode after startup + ******************************************************************************/ +extern void LFXT_Start(unsigned int xtdrive); +#endif + +/******************************************************************************* + * \brief Startup routine for 32kHz Crystal on LFXT1 with timeout counter + * + * \param xtdrive Bits defining the LFXT drive mode after startup + * \param timeout Value for the timeout counter + ******************************************************************************/ +extern unsigned int LFXT_Start_Timeout(unsigned int xtdrive, unsigned int timeout); + +#if 0 +/******************************************************************************* + * \brief Startup routine for XT1 + * + * \param xtdrive Bits defining the XT drive mode + ******************************************************************************/ +extern void XT1_Start(unsigned int xtdrive); + +/******************************************************************************* + * \brief Startup routine for XT1 with timeout counter + * + * \param xtdrive Bits defining the XT drive mode + * \param timeout Value for the timeout counter + ******************************************************************************/ +extern unsigned int XT1_Start_Timeout(unsigned int xtdrive, unsigned int timeout); + +/******************************************************************************* + * \brief Use XT1 in Bypasss mode + ******************************************************************************/ +extern void XT1_Bypass(void); + +#endif + +/******************************************************************************* + * \brief Stop XT1 oscillator + ******************************************************************************/ +extern void XT1_Stop(void); + +#if 0 +/******************************************************************************* + * \brief Startup routine for XT2 + * + * \param xtdrive Bits defining the XT drive mode + ******************************************************************************/ +extern void XT2_Start(unsigned int xtdrive); + +/******************************************************************************* + * \brief Startup routine for XT2 with timeout counter + * + * \param xtdrive Bits defining the XT drive mode + * \param timeout Value for the timeout counter + ******************************************************************************/ +extern unsigned int XT2_Start_Timeout(unsigned int xtdrive, unsigned int timeout); + +/******************************************************************************* + * \brief Use XT2 in Bypasss mode for MCLK + ******************************************************************************/ +extern void XT2_Bypass(void); + +/******************************************************************************* + * \brief Stop XT2 oscillator + ******************************************************************************/ +extern void XT2_Stop(void); + +#endif + +/******************************************************************************* + * \brief Initializes FLL of the UCS and wait till settled before allowing + * code execution to resume. The use of this function is preferred + * over the use of Init_FLL(). + * + * \param fsystem Required system frequency (MCLK) in kHz + * \param ratio Ratio between fsystem and FLLREFCLK + ******************************************************************************/ +extern void Init_FLL_Settle(unsigned int fsystem, unsigned int ratio); + + +#endif /* HAL_UCS_H */ diff --git a/metawatch/Makefile b/metawatch/Makefile new file mode 100644 index 0000000..388e510 --- /dev/null +++ b/metawatch/Makefile @@ -0,0 +1,138 @@ +# +# Makefile for msp430 +# adapted from the example Makefile from the mspgcc project +# +# 'make' builds everything +# 'make clean' deletes everything except source files and Makefile +# You need to set TARGET, MCU and SOURCES for your project. +# TARGET is the name of the executable file to be produced +# $(TARGET).elf $(TARGET).hex and $(TARGET).txt nad $(TARGET).map are all generated. +# The TXT file is used for BSL loading, the ELF can be used for JTAG use +# +TARGET = oswald_mw +MCU = msp430f5438a +MEMMODEL = -mmemory-model=huge -fdata-sections -ffunction-sections # -mdata-region=far +# -gdwarf-2 -fdata-sections -ffunction-sections +#MEMMODEL = -mmpy=16 -msr20 -md20 -gdwarf-2 -fdata-sections -ffunction-sections +# MEMMODEL = -mmemory-model=medium -misr20 +#MEMMODEL = -mmemory-model=medium + +#APPCONFIG = -DDIGITAL -DMW_DEVBOARD_V2 +#APPCONFIG = -DDIGITAL -DMW_DEVBOARD_V2 -DWITH_BTSTACK +#APPCONFIG = -DDIGITAL -DMW_DEVBOARD_V2 -DCC256x_TRANSP +#APPCONFIG = -DDIGITAL -DMW_DIGITAL_V2 -DMW_DEBUG_UART +APPCONFIG = -DDIGITAL -DMW_DIGITAL_V2 + +#BTCC256x_SCRIPT = bluetooth_init_cc2560_2.44.c +BTCC256x_SCRIPT = bluetooth_init_cc2564_2.8.c + +# List all the source files here +# eg if you have a source file foo.c then list it here + +OSWALD_SRC = ../ui/oswald_main.c ../ui/oswald_screens.c \ + ../ui/oswald_watch_faces.c \ + ../ui/oswald_strings.c ../ui/calendar.c \ + ../ui/oswald_graphics.c ../ui/oswald_fonts.c \ + ../ui/embedvm.c + +SOURCES = mw_main.c mw_uart.c mw_lcd.c mw_adc.c mw_bt.c \ + mw_acc.c $(BTCC256x_SCRIPT) \ + bt_hci.c bt_l2cap.c \ + oswald_hal.c $(OSWALD_SRC) \ + F5xx_F6xx_Core_Lib/HAL_PMM.c \ + F5xx_F6xx_Core_Lib/HAL_UCS.c +# $(BT_SMALLTOOTH_SRC) +# $(BT_STACK_SRC) \ + +#BT_STACK_INC = -Ibtstack/ -Ibtstack/include/ +#BT_SMALLTOOTH_INV = -IBluetooth/ +# Include are located in the Include directory +#INCLUDES = $(BT_STACK_INC) +#INCLUDES = $(BT_SMALLTOOTH_INV) +INCLUDES = -I../ui/ + +# BUILDNO = \"\#$(shell cat .buildno)-$(shell date +%y%m%d)\" +BUILDNO = \"$(shell date +%y%m%d)-\#$(shell cat .buildno)\" + +# Add or subtract whatever MSPGCC flags you want. There are plenty more +####################################################################################### +CFLAGS = -mmcu=$(MCU) $(MEMMODEL) -g -Os -Wall -Wunused $(INCLUDES) $(APPCONFIG) -DBUILDNO=$(BUILDNO) +ASFLAGS = -mmcu=$(MCU) $(MEMMODEL) -x assembler-with-cpp -Wa,-gstabs +LDFLAGS = -mmcu=$(MCU) $(MEMMODEL) -Wl,-gc-sections -Wl,-Map=$(TARGET).map +######################################################################################## +CC = msp430-gcc +LD = msp430-ld +AR = msp430-ar +AS = msp430-gcc +GASP = msp430-gasp +NM = msp430-nm +OBJCOPY = msp430-objcopy +RANLIB = msp430-ranlib +STRIP = msp430-strip +SIZE = msp430-size +READELF = msp430-readelf +MAKETXT = srec_cat +CP = cp -p +RM = rm -f +MV = mv +######################################################################################## +# the file which will include dependencies +DEPEND = $(SOURCES:.c=.d) + +# all the object files +OBJECTS = $(SOURCES:.c=.o) + +all: .buildno $(TARGET).elf $(TARGET).hex $(TARGET).txt + +prog: $(TARGET).hex + mspdebug tilib -d /dev/ttyACM3 -v 2500 "prog $(TARGET).hex" + +prog_watch: $(TARGET).hex + mspdebug rf2500 -v 2500 "prog $(TARGET).hex" + +$(TARGET).elf: $(OBJECTS) + echo "Linking $@" + $(CC) $(OBJECTS) $(LDFLAGS) $(LIBS) -o $@ + echo + echo ">>>> Size of Firmware <<<<" + $(SIZE) $(TARGET).elf + echo + +%.hex: %.elf + $(OBJCOPY) -O ihex $< $@ + +%.txt: %.hex + $(MAKETXT) -O $@ -TITXT $< -I + unix2dos $(TARGET).txt +# The above line is required for the DOS based TI BSL tool to be able to read the txt file generated from linux/unix systems. + +%.o: %.c + echo "Compiling $<" + $(CC) -c $(CFLAGS) -o $@ $< + +# rule for making assembler source listing, to see the code +%.lst: %.c + $(CC) -c $(ASFLAGS) -Wa,-anlhd $< > $@ + +# include the dependencies unless we're going to clean, then forget about them. +ifneq ($(MAKECMDGOALS), clean) +-include $(DEPEND) +endif +# dependencies file +# includes also considered, since some of these are our own +# (otherwise use -MM instead of -M) +%.d: %.c + echo "Generating dependencies $@ from $<" + $(CC) -M ${CFLAGS} $< >$@ + +#.SILENT: +.PHONY: clean +clean: + -$(RM) $(OBJECTS) + -$(RM) $(TARGET).* + -$(RM) $(SOURCES:.c=.lst) + -$(RM) $(DEPEND) + +.buildno: $(OBJECTS) + @if ! test -f .buildno; then echo 0 > .buildno; fi + @echo $$(($$(cat .buildno) + 1)) > .buildno diff --git a/metawatch/README.txt b/metawatch/README.txt new file mode 100644 index 0000000..692900b --- /dev/null +++ b/metawatch/README.txt @@ -0,0 +1,4 @@ + +To compile basically just type "make". +Have a look into the Makefile for configurable options, like watch type, +Bluetooth firmware version etc. diff --git a/metawatch/bluetooth_init_cc2560_2.44.bts b/metawatch/bluetooth_init_cc2560_2.44.bts new file mode 120000 index 0000000..952d842 --- /dev/null +++ b/metawatch/bluetooth_init_cc2560_2.44.bts @@ -0,0 +1 @@ +CC2560_BT_SP_BTS/bluetooth_init_cc2560_2.44.bts \ No newline at end of file diff --git a/metawatch/bluetooth_init_cc2560_2.44.c b/metawatch/bluetooth_init_cc2560_2.44.c new file mode 100644 index 0000000..858309c --- /dev/null +++ b/metawatch/bluetooth_init_cc2560_2.44.c @@ -0,0 +1,3289 @@ +// init script created from bluetooth_init_cc2560_2.44.bts +#include + +const char *cc256x_version = "CC2560 v2.44"; + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +const uint8_t cc256x_init_script[] = { + + // #-------------------------------------------------------------------------------- + // # Description : ORCA-Trio BTIP 2.0 ROM Initialization Script + // # + // # Compatibility: BL6450, WL1271/3 2.0 ROM + // # + // # Last Updated: 21-Dec-2011 11:53:12.59 + // # + // # Version : TI_P31.123 + // # + // # + // # + // # Notes : Use this script on BL6450, WL1271/3 2.0 ROM device only (FW v2.0.31) + // #-------------------------------------------------------------------------------- + // + // ################################################################# + // ## START of Panasonic Adds-On + // ################################################################# + // + // ## Change UART baudrate + // + // + // ################################################################# + // ## END of Panasonic Adds-On + // ################################################################# + // + 0x01, 0x37, 0xfe, 0x02, 0x02, 0x1f, + + // + 0x01, 0x0f, 0xfd, 0x01, 0x01, + + 0x01, 0x63, 0xfd, 0x1c, 0x04, 0x04, 0x00, 0xbc, 0x02, 0xef, 0xcd, 0xab, 0x89, 0xef, 0xcd, + 0xab, 0x89, 0x03, 0x06, 0x0a, 0x20, 0x03, 0x4b, 0x38, 0x1f, 0xbf, 0xb5, 0xb0, 0x01, 0x08, + 0x06, 0x0d, + + 0x01, 0x01, 0xff, 0x06, 0xa0, 0x09, 0x1a, 0x00, 0x03, 0x00, + + 0x01, 0x01, 0xff, 0x06, 0x7e, 0x09, 0x1a, 0x00, 0xc4, 0x04, + + 0x01, 0x01, 0xff, 0x06, 0xa0, 0x09, 0x1a, 0x00, 0x02, 0x00, + + 0x01, 0x2e, 0xfd, 0x0d, 0x00, 0x2c, 0x01, 0x0a, 0x01, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + + // + 0x01, 0x05, 0xff, 0xff, 0x90, 0x5f, 0x08, 0x00, 0xfa, 0x02, 0x1f, 0x1f, 0x7b, 0x41, 0x00, + 0x44, 0x24, 0x61, 0x09, 0x00, 0x00, 0x05, 0xc0, 0x03, 0xc0, 0x1e, 0x08, 0x05, 0x00, 0x04, + 0xc0, 0x03, 0xc0, 0x1e, 0x08, 0x3d, 0x01, 0x04, 0xc0, 0x03, 0xc0, 0x1e, 0x08, 0x76, 0x02, + 0x04, 0xc0, 0x03, 0xc0, 0x1e, 0x08, 0xae, 0x03, 0x04, 0xc0, 0x03, 0xc0, 0x1e, 0x08, 0xae, + 0x0b, 0x01, 0x00, 0x34, 0x30, 0x41, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0x49, 0x0a, 0x1c, 0x2c, 0x32, 0x12, 0x78, 0x04, 0x2a, 0x02, 0xd1, 0x09, 0x78, 0x04, 0x29, + 0x01, 0xd0, 0x06, 0x21, 0x00, 0xe0, 0x07, 0x21, 0x41, 0x60, 0x02, 0x48, 0x1b, 0x30, 0xf7, + 0x46, 0x84, 0x4d, 0x08, 0x00, 0x4d, 0x24, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x11, 0xd0, 0x0a, 0x78, 0xff, 0x2a, 0x0e, + 0xd1, 0xc2, 0x78, 0x00, 0x2a, 0x0b, 0xd1, 0x42, 0x7e, 0x01, 0x2a, 0x08, 0xd1, 0x42, 0x8c, + 0x0d, 0x2a, 0x05, 0xd1, 0x03, 0x4a, 0x80, 0x8c, 0x90, 0x42, 0x01, 0xd1, 0x00, 0x20, 0x08, + 0x70, 0xf7, 0x46, 0xc0, 0x46, 0x26, 0x11, 0x00, 0x00, 0xf8, 0xb5, 0x07, 0x7f, 0x01, 0x79, + 0x00, 0x91, 0x80, 0x69, 0x06, 0x89, 0xdf, 0x49, 0x29, 0x31, 0x82, 0x88, 0x8a, 0x42, 0x07, + 0xd1, 0xdb, 0x49, 0x09, 0x88, 0xb1, 0x42, 0x01, 0xd1, 0x16, 0x24, 0x04, 0xe0, 0x22, 0x24, + 0x02, 0xe0, 0xff, 0x21, 0x29, 0x31, 0x0c, 0x5c, 0x01, 0x25, 0xae, 0x46, 0xd5, 0x49, 0xfe, + 0x44, 0x08, 0x47, 0x00, 0x98, 0x00, 0x28, 0x07, 0xd0, 0x00, 0x2f, 0x05, 0xd0, 0x30, 0x1c, + 0x21, 0x1c, 0xae, 0x46, + + 0x01, 0x05, 0xff, 0xff, 0x8a, 0x60, 0x08, 0x00, 0xfa, 0xeb, 0x4a, 0xfe, 0x44, 0x10, 0x47, + 0xea, 0x49, 0xeb, 0x4a, 0x11, 0x32, 0x15, 0x20, 0xae, 0x46, 0xea, 0x4b, 0xfe, 0x44, 0x18, + 0x47, 0xea, 0x48, 0xe9, 0x49, 0x08, 0x18, 0xf8, 0xbd, 0xfc, 0xb5, 0x41, 0x68, 0xc9, 0x48, + 0x01, 0x60, 0x01, 0x24, 0xa6, 0x46, 0xe6, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x00, 0x20, 0xa6, + 0x46, 0xe5, 0x49, 0xfe, 0x44, 0x08, 0x47, 0xbd, 0x27, 0x00, 0x20, 0x05, 0x1c, 0xbf, 0x4e, + 0x02, 0x3e, 0xf6, 0x20, 0x85, 0x55, 0xff, 0x20, 0x12, 0x30, 0xa6, 0x46, 0xed, 0x49, 0xfe, + 0x44, 0x08, 0x47, 0xa4, 0x20, 0x85, 0x51, 0xa8, 0x20, 0x85, 0x51, 0x01, 0x20, 0x40, 0x03, + 0xea, 0x49, 0x08, 0x80, 0xa6, 0x46, 0xe9, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x8c, 0x25, 0xa8, + 0x59, 0x00, 0x28, 0x05, 0xd0, 0xa6, 0x46, 0xe6, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x00, 0x20, + 0xa8, 0x51, 0xb8, 0x5d, 0xe4, 0x4f, 0x02, 0x28, 0x01, 0xd0, 0x00, 0x94, 0x16, 0xe0, 0xd9, + 0x20, 0x80, 0x5d, 0x23, 0x21, 0x09, 0x01, 0x41, 0x43, 0x78, 0x18, 0xff, 0x21, 0x29, 0x31, + 0x16, 0x22, 0x0a, 0x54, 0xa6, 0x46, 0xdd, 0x48, 0xfe, 0x44, 0x00, 0x47, 0xff, 0x20, 0x10, + 0x30, 0x0a, 0x21, 0xa6, 0x46, 0xdb, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x20, 0x00, 0x90, + 0xbe, 0x20, 0x80, 0x19, 0x01, 0x90, 0x00, 0x25, 0x25, 0xe0, 0x39, 0x78, 0xff, 0x29, 0x09, + 0xd0, 0xff, 0x20, 0x29, 0x30, 0x16, 0x21, 0xc1, 0x55, 0x38, 0x1c, 0xa6, 0x46, 0xba, 0x49, + 0xfe, 0x44, 0x08, 0x47, 0x30, 0x78, 0x01, 0x35, 0x23, 0x21, 0x09, 0x01, 0xcf, 0x19, 0x1a, + 0xe0, 0x28, 0x1c, 0xa6, 0x46, 0xce, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x01, 0x98, 0x28, 0x5c, + 0x23, 0x21, 0x09, 0x01, + + 0x01, 0x05, 0xff, 0xff, 0x84, 0x61, 0x08, 0x00, 0xfa, 0x41, 0x43, 0x78, 0x18, 0xff, 0x21, + 0x29, 0x31, 0x16, 0x22, 0x0a, 0x54, 0xa6, 0x46, 0xae, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x01, + 0x35, 0xc5, 0x20, 0x80, 0x5d, 0x85, 0x42, 0xe7, 0xd3, 0xc2, 0x4e, 0x30, 0x78, 0x00, 0x25, + 0x85, 0x42, 0xd0, 0xd3, 0xa6, 0x46, 0xc1, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x00, 0x98, 0x01, + 0x28, 0x0a, 0xd1, 0x86, 0x48, 0x00, 0x68, 0xc3, 0x21, 0x00, 0x22, 0xa6, 0x46, 0xbc, 0x4b, + 0xfe, 0x44, 0x18, 0x47, 0x00, 0x20, 0x81, 0x49, 0x08, 0x60, 0xba, 0x48, 0x0f, 0x30, 0xfc, + 0xbd, 0xba, 0x48, 0x17, 0x30, 0xf7, 0x46, 0x10, 0xb5, 0x0c, 0x21, 0x81, 0x60, 0xb8, 0x49, + 0xb8, 0x4c, 0x22, 0x1c, 0xad, 0x32, 0x1c, 0x20, 0x01, 0x23, 0x9e, 0x46, 0x94, 0x4b, 0xfe, + 0x44, 0x18, 0x47, 0x20, 0x1c, 0x9f, 0x30, 0x10, 0xbd, 0x10, 0xb5, 0x81, 0x68, 0x04, 0x22, + 0xc2, 0x60, 0xb1, 0x4a, 0x0a, 0x60, 0x41, 0x68, 0x41, 0x61, 0xb0, 0x49, 0xae, 0x4c, 0x22, + 0x1c, 0x9d, 0x32, 0x1c, 0x20, 0x01, 0x23, 0x9e, 0x46, 0x8a, 0x4b, 0xfe, 0x44, 0x18, 0x47, + 0x20, 0x1c, 0xaf, 0x30, 0x10, 0xbd, 0xf0, 0xb5, 0x47, 0x68, 0x08, 0x24, 0xe1, 0x19, 0xa9, + 0x4d, 0x28, 0x1c, 0x50, 0x38, 0x0a, 0x22, 0x01, 0x26, 0xb6, 0x46, 0xa9, 0x4b, 0xfe, 0x44, + 0x18, 0x47, 0xe0, 0x48, 0x00, 0x78, 0x01, 0x28, 0x0e, 0xd1, 0x38, 0x1c, 0x0a, 0x22, 0x2b, + 0x78, 0x01, 0x7a, 0x19, 0x40, 0x29, 0x70, 0x01, 0x30, 0x01, 0x35, 0x01, 0x3a, 0xf7, 0xd1, + 0xe0, 0x19, 0xb6, 0x46, 0x9d, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x9d, 0x48, 0x0d, 0x30, 0xf0, + 0xbd, 0x01, 0x1c, 0x56, 0x48, 0x06, 0x30, 0x02, 0x68, 0x9b, 0x48, 0x00, 0x2a, 0x03, 0xd0, + 0x08, 0x22, 0x8a, 0x60, + + 0x01, 0x05, 0xff, 0xff, 0x7e, 0x62, 0x08, 0x00, 0xfa, 0x0b, 0x30, 0xf7, 0x46, 0x83, 0x30, + 0xf7, 0x46, 0x70, 0xb5, 0x43, 0x69, 0x1c, 0x68, 0x81, 0x89, 0x6e, 0x4a, 0x95, 0x48, 0x00, + 0x29, 0x01, 0xd0, 0x14, 0x3a, 0x2d, 0xe0, 0xa5, 0x88, 0x85, 0x21, 0xc9, 0x00, 0x8d, 0x42, + 0x06, 0xd0, 0x91, 0x49, 0x0e, 0x1c, 0x08, 0x3e, 0xb5, 0x42, 0x01, 0xd0, 0x8d, 0x42, 0x20, + 0xd1, 0xd9, 0x7f, 0x00, 0x29, 0x1d, 0xd1, 0x42, 0x21, 0xc9, 0x5c, 0x01, 0x29, 0x01, 0xd0, + 0x02, 0x29, 0x17, 0xd1, 0x20, 0x21, 0xc9, 0x18, 0x4d, 0x78, 0x09, 0x78, 0x29, 0x43, 0x09, + 0x09, 0x10, 0xd3, 0x40, 0x25, 0xe9, 0x5a, 0x33, 0x26, 0x36, 0x01, 0x0e, 0x42, 0x0a, 0xd0, + 0x33, 0x22, 0x12, 0x01, 0x91, 0x43, 0xe9, 0x52, 0xff, 0x21, 0x29, 0x31, 0x00, 0x22, 0x0a, + 0x55, 0xff, 0x30, 0x88, 0x30, 0x70, 0xbd, 0x30, 0x3a, 0x10, 0x18, 0x70, 0xbd, 0x10, 0xb5, + 0x04, 0x1c, 0xa0, 0x69, 0xff, 0x28, 0x13, 0xd1, 0x7a, 0x48, 0x00, 0x78, 0xff, 0x28, 0x0f, + 0xd0, 0x01, 0x20, 0x86, 0x46, 0x78, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x78, 0x4a, 0x78, 0x4b, + 0x18, 0x78, 0x51, 0x78, 0x88, 0x42, 0x02, 0xd0, 0x11, 0x78, 0x88, 0x42, 0x01, 0xd1, 0xff, + 0x20, 0x18, 0x70, 0xff, 0x20, 0x60, 0x60, 0x73, 0x48, 0x45, 0x30, 0x10, 0xbd, 0x70, 0xb5, + 0x05, 0x1c, 0x2e, 0x6a, 0x71, 0x48, 0x01, 0x68, 0x00, 0x29, 0x12, 0xd1, 0x70, 0x48, 0x08, + 0x21, 0x01, 0x24, 0xa6, 0x46, 0x6f, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x28, 0x00, 0xd1, + 0x3d, 0x20, 0x00, 0x04, 0x6d, 0x49, 0x08, 0x1a, 0x93, 0x21, 0x49, 0x00, 0xa6, 0x46, 0x6b, + 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x6c, 0x48, 0x70, 0x43, 0x6a, 0x4a, 0x10, 0x1a, 0x01, 0x22, + 0x96, 0x46, 0x67, 0x4a, + + 0x01, 0x05, 0xff, 0xff, 0x78, 0x63, 0x08, 0x00, 0xfa, 0xfe, 0x44, 0x10, 0x47, 0xff, 0x39, + 0x09, 0x39, 0x08, 0x04, 0x00, 0x14, 0x68, 0x61, 0x66, 0x49, 0x2f, 0x48, 0x6c, 0x38, 0x40, + 0x18, 0x70, 0xbd, 0x03, 0x21, 0x41, 0x60, 0x0f, 0x21, 0x89, 0x01, 0x81, 0x60, 0x62, 0x48, + 0x43, 0x30, 0xf7, 0x46, 0x10, 0xb5, 0x01, 0x1c, 0x07, 0x23, 0x60, 0x4a, 0x00, 0x20, 0x34, + 0x24, 0xa4, 0x5c, 0xa1, 0x42, 0x06, 0xd1, 0x33, 0x24, 0xa4, 0x5c, 0x01, 0x2c, 0x02, 0xd1, + 0x40, 0x1c, 0x00, 0x06, 0x00, 0x0e, 0xac, 0x32, 0x01, 0x3b, 0xf1, 0xd1, 0x10, 0xbd, 0x52, + 0x0f, 0x08, 0x00, 0x85, 0xf2, 0x00, 0x00, 0xdd, 0x03, 0x00, 0x00, 0xcc, 0x5f, 0x08, 0x00, + 0xf0, 0xb5, 0x3c, 0x21, 0x57, 0x48, 0x12, 0x38, 0x02, 0x78, 0x01, 0x2a, 0x25, 0xd1, 0x09, + 0x5c, 0x00, 0x29, 0x22, 0xd0, 0x40, 0x68, 0x00, 0x27, 0x2c, 0x21, 0x0d, 0x18, 0x38, 0x1c, + 0x01, 0x24, 0xa6, 0x46, 0x4d, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x06, 0x1c, 0x38, 0x1c, 0xa6, + 0x46, 0x49, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x80, 0x19, 0x28, 0x70, 0x20, 0x1c, 0xa6, 0x46, + 0x46, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x06, 0x1c, 0x20, 0x1c, 0xa6, 0x46, 0x42, 0x49, 0xfe, + 0x44, 0x08, 0x47, 0x80, 0x19, 0x68, 0x70, 0x01, 0x20, 0x40, 0x02, 0x41, 0x49, 0x08, 0x80, + 0x41, 0x48, 0xa9, 0x30, 0xf0, 0xbd, 0x53, 0x99, 0x02, 0x00, 0x33, 0x68, 0x08, 0x00, 0x41, + 0x36, 0x00, 0x00, 0xa1, 0x69, 0x08, 0x00, 0x9f, 0x02, 0x00, 0x00, 0xb9, 0xd1, 0x01, 0x00, + 0xb1, 0x2e, 0x05, 0x00, 0x01, 0x0f, 0x02, 0x00, 0x10, 0xb5, 0x28, 0x49, 0x3e, 0x31, 0x09, + 0x78, 0x37, 0x4c, 0x00, 0x29, 0x0f, 0xd0, 0x22, 0x49, 0x48, 0x78, 0x09, 0x78, 0xac, 0x22, + 0x4a, 0x43, 0x2d, 0x49, + + 0x01, 0x05, 0xff, 0xff, 0x72, 0x64, 0x08, 0x00, 0xfa, 0x34, 0x31, 0x89, 0x5c, 0x01, 0x22, + 0x96, 0x46, 0xd6, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x20, 0x1c, 0x35, 0x30, 0x10, 0xbd, 0x3b, + 0x21, 0xc1, 0x60, 0x20, 0x1c, 0x40, 0x1d, 0x10, 0xbd, 0x61, 0x7d, 0x03, 0x00, 0x0c, 0x12, + 0x08, 0x00, 0xc9, 0x02, 0x01, 0x00, 0x4d, 0xee, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0xb5, + 0x02, 0x01, 0x00, 0x6d, 0x00, 0x01, 0x00, 0x21, 0x50, 0x08, 0x00, 0x09, 0x0d, 0x01, 0x00, + 0x75, 0x59, 0x04, 0x00, 0xd3, 0x96, 0x02, 0x00, 0x63, 0x08, 0x00, 0x00, 0x3d, 0x9d, 0x04, + 0x00, 0xfd, 0x61, 0x08, 0x00, 0xad, 0x35, 0x03, 0x00, 0x32, 0x2e, 0x33, 0x31, 0xdd, 0x61, + 0x08, 0x00, 0xf2, 0x13, 0x08, 0x00, 0x97, 0x6f, 0x01, 0x00, 0x5d, 0x8c, 0x01, 0x00, 0xc1, + 0x78, 0x05, 0x00, 0x45, 0xee, 0x00, 0x00, 0x61, 0x20, 0x01, 0x00, 0x0f, 0x04, 0x00, 0x00, + 0x12, 0x25, 0x08, 0x00, 0x71, 0x9a, 0x01, 0x00, 0x5f, 0x1f, 0x08, 0x00, 0x72, 0x25, 0x08, + 0x00, 0x55, 0x9e, 0x01, 0x00, 0x8c, 0x51, 0x08, 0x00, 0x46, 0x75, 0x1a, 0x00, 0xdb, 0xae, + 0x04, 0x00, 0x00, 0x00, 0x91, 0x02, 0x2d, 0x6a, 0x05, 0x00, 0x67, 0xe6, 0x11, 0x03, 0x20, + 0x30, 0x06, 0x00, 0xcd, 0x60, 0x03, 0x00, 0x29, 0xd6, 0x02, 0x00, 0x94, 0x1a, 0x08, 0x00, + 0xa1, 0x63, 0x08, 0x00, 0x3b, 0xa3, 0x01, 0x00, 0x44, 0x7c, 0x1a, 0x00, 0x5d, 0x4c, 0x02, + 0x00, 0x46, 0x24, 0x08, 0x00, 0x8f, 0x49, 0x02, 0x00, 0xfc, 0xb5, 0x41, 0x68, 0x01, 0x91, + 0x01, 0x8a, 0x80, 0x68, 0x80, 0x7b, 0xcf, 0x4a, 0x14, 0x1c, 0x3e, 0x3c, 0x27, 0x8e, 0xce, + 0x4d, 0x1a, 0x4e, 0x01, 0x29, 0x36, 0xd1, 0x02, 0x28, 0x00, 0xd0, 0x03, 0x28, 0x00, 0xd1, + 0xdb, 0xe0, 0x00, 0x28, + + 0x01, 0x05, 0xff, 0xff, 0x6c, 0x65, 0x08, 0x00, 0xfa, 0x2c, 0xd1, 0x00, 0x2f, 0x03, 0xd0, + 0x82, 0x2f, 0x01, 0xd0, 0x50, 0x2f, 0x0c, 0xd1, 0x00, 0x20, 0x20, 0x86, 0x25, 0x80, 0x30, + 0x78, 0x01, 0x28, 0x06, 0xd1, 0xc2, 0x48, 0x09, 0x21, 0x01, 0x22, 0x96, 0x46, 0xd7, 0x4a, + 0xfe, 0x44, 0x10, 0x47, 0xd3, 0x48, 0x87, 0x42, 0x0c, 0xd1, 0xd3, 0x48, 0x20, 0x86, 0x25, + 0x80, 0x30, 0x78, 0x01, 0x28, 0x06, 0xd1, 0xba, 0x48, 0x09, 0x21, 0x01, 0x22, 0x96, 0x46, + 0xcf, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xdb, 0x48, 0x87, 0x42, 0x40, 0xd1, 0x11, 0x20, 0x40, + 0x01, 0x20, 0x86, 0x28, 0x1c, 0xf6, 0xe0, 0xa2, 0x52, 0x08, 0x00, 0x01, 0x28, 0x00, 0xd1, + 0x90, 0xe0, 0x02, 0x29, 0x59, 0xd1, 0x00, 0x28, 0x2d, 0xd1, 0x00, 0x2f, 0x06, 0xd0, 0xc3, + 0x48, 0x87, 0x42, 0x03, 0xd0, 0x11, 0x20, 0x40, 0x01, 0x87, 0x42, 0x0c, 0xd1, 0x00, 0x20, + 0x20, 0x86, 0x65, 0x80, 0x30, 0x78, 0x01, 0x28, 0x06, 0xd1, 0xa6, 0x48, 0x0a, 0x21, 0x01, + 0x22, 0x96, 0x46, 0xbb, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xb8, 0x48, 0x87, 0x42, 0x10, 0xd0, + 0x31, 0x78, 0xc6, 0x48, 0x87, 0x42, 0x3a, 0xd1, 0x65, 0x80, 0x82, 0x20, 0x20, 0x86, 0x01, + 0x29, 0x64, 0xd1, 0x9d, 0x48, 0x0a, 0x21, 0x01, 0x22, 0x96, 0x46, 0xb2, 0x4a, 0xfe, 0x44, + 0x10, 0x47, 0xc4, 0xe0, 0x65, 0x80, 0x50, 0x20, 0x20, 0x86, 0xc0, 0xe0, 0x01, 0x28, 0x36, + 0xd0, 0x02, 0x28, 0x01, 0xd0, 0x03, 0x28, 0x68, 0xd1, 0x00, 0x2f, 0x02, 0xd0, 0xa9, 0x48, + 0x87, 0x42, 0x02, 0xd1, 0x11, 0x20, 0x40, 0x01, 0x20, 0x86, 0x50, 0x2f, 0x02, 0xd0, 0xa4, + 0x48, 0x87, 0x42, 0x03, 0xd1, 0x25, 0x80, 0x11, 0x20, 0x40, 0x01, 0x20, 0x86, 0x82, 0x2f, + 0x01, 0xd1, 0xaf, 0x48, + + 0x01, 0x05, 0xff, 0xff, 0x66, 0x66, 0x08, 0x00, 0xfa, 0x20, 0x86, 0xe3, 0x48, 0x00, 0x21, + 0x01, 0x25, 0xae, 0x46, 0xe4, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x28, 0x01, 0xd1, 0xe0, + 0x48, 0x00, 0xe0, 0xe0, 0x48, 0x60, 0x80, 0x30, 0x78, 0x01, 0x28, 0x6b, 0xd1, 0x81, 0x4c, + 0x20, 0x1c, 0x09, 0x21, 0xae, 0x46, 0x96, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x20, 0x1c, 0x0a, + 0x21, 0xae, 0x46, 0xda, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x87, 0xe0, 0x00, 0x2f, 0x08, 0xd0, + 0x11, 0x20, 0x40, 0x01, 0x87, 0x42, 0x04, 0xd0, 0x82, 0x2f, 0x02, 0xd0, 0x9b, 0x48, 0x87, + 0x42, 0x13, 0xd1, 0x8b, 0x48, 0x20, 0x86, 0x00, 0x20, 0x60, 0x80, 0x30, 0x78, 0x01, 0x28, + 0x06, 0xd1, 0x71, 0x48, 0x0a, 0x21, 0x01, 0x22, 0x96, 0x46, 0x86, 0x4a, 0xfe, 0x44, 0x10, + 0x47, 0x82, 0x2f, 0x02, 0xd0, 0x92, 0x48, 0x87, 0x42, 0x00, 0xd1, 0x25, 0x80, 0x50, 0x2f, + 0x66, 0xd1, 0x7f, 0x48, 0x20, 0x86, 0x00, 0x20, 0x60, 0x80, 0x61, 0xe0, 0x11, 0x20, 0x40, + 0x01, 0x87, 0x42, 0x05, 0xd0, 0x8a, 0x48, 0x87, 0x42, 0x02, 0xd0, 0x65, 0x80, 0x82, 0x20, + 0x00, 0xe0, 0x87, 0x48, 0x20, 0x86, 0x00, 0x20, 0x20, 0x80, 0x30, 0x78, 0x01, 0x28, 0x50, + 0xd1, 0x5f, 0x48, 0x09, 0x21, 0x01, 0x22, 0x96, 0x46, 0x74, 0x4a, 0xfe, 0x44, 0x10, 0x47, + 0x48, 0xe0, 0x82, 0x2f, 0x24, 0xd0, 0x00, 0x2f, 0x22, 0xd0, 0x11, 0x20, 0x40, 0x01, 0x87, + 0x42, 0x1e, 0xd0, 0x7c, 0x48, 0x87, 0x42, 0x1b, 0xd0, 0x6b, 0x48, 0x87, 0x42, 0x3a, 0xd1, + 0x69, 0x48, 0x20, 0x86, 0xad, 0x48, 0x00, 0x21, 0x01, 0x25, 0xae, 0x46, 0xae, 0x4a, 0xfe, + 0x44, 0x10, 0x47, 0x00, 0x28, 0x01, 0xd1, 0xa9, 0x48, 0x00, 0xe0, 0xa9, 0x48, 0x20, 0x80, + 0x30, 0x78, 0x01, 0x28, + + 0x01, 0x05, 0xff, 0xff, 0x60, 0x67, 0x08, 0x00, 0xfa, 0x28, 0xd1, 0x4b, 0x48, 0x09, 0x21, + 0xae, 0x46, 0xa7, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x21, 0xe0, 0x50, 0x20, 0x20, 0x86, 0x65, + 0x80, 0x30, 0x78, 0x01, 0x28, 0x0d, 0xd1, 0x44, 0x4e, 0x30, 0x1c, 0x09, 0x21, 0x01, 0x25, + 0xae, 0x46, 0xa0, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x30, 0x1c, 0x0a, 0x21, 0xae, 0x46, 0x56, + 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x97, 0x48, 0x00, 0x21, 0x01, 0x22, 0x96, 0x46, 0x98, 0x4a, + 0xfe, 0x44, 0x10, 0x47, 0x00, 0x28, 0x02, 0xd1, 0x94, 0x48, 0x05, 0x1c, 0x07, 0xe7, 0x93, + 0x48, 0x20, 0x80, 0x00, 0x21, 0x68, 0x46, 0x01, 0x70, 0x01, 0x98, 0xf3, 0x21, 0x88, 0x22, + 0x06, 0x23, 0x01, 0x24, 0xa6, 0x46, 0xe6, 0x4c, 0xfe, 0x44, 0x20, 0x47, 0xe5, 0x48, 0xff, + 0x30, 0x66, 0x30, 0xfc, 0xbd, 0x2b, 0x49, 0x02, 0x00, 0x30, 0xb5, 0xe3, 0x49, 0xe3, 0x4a, + 0x37, 0x32, 0x10, 0x20, 0x01, 0x24, 0xa6, 0x46, 0xe4, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xe3, + 0x48, 0x00, 0x78, 0xdf, 0x4d, 0x00, 0x28, 0x03, 0xd1, 0x28, 0x1c, 0xff, 0x30, 0x32, 0x30, + 0x30, 0xbd, 0x01, 0x28, 0x01, 0xd0, 0x04, 0x28, 0x0b, 0xd1, 0xa6, 0x46, 0xda, 0x48, 0xfe, + 0x44, 0x00, 0x47, 0x7a, 0x48, 0x0e, 0x38, 0x04, 0x21, 0x00, 0x22, 0xa6, 0x46, 0xea, 0x4b, + 0xfe, 0x44, 0x18, 0x47, 0x28, 0x1c, 0xff, 0x30, 0x70, 0x30, 0x30, 0xbd, 0xe8, 0x49, 0x09, + 0x68, 0x81, 0x60, 0xe7, 0x48, 0x3f, 0x30, 0xf7, 0x46, 0x81, 0x69, 0xe4, 0x4a, 0x11, 0x60, + 0xe9, 0x49, 0x81, 0x60, 0xe9, 0x48, 0x13, 0x30, 0xf7, 0x46, 0x00, 0xb5, 0xe8, 0x49, 0xca, + 0x4a, 0xff, 0x32, 0x1c, 0x32, 0x10, 0x20, 0x01, 0x23, 0x9e, 0x46, 0xc9, 0x4b, 0xfe, 0x44, + 0x18, 0x47, 0xe4, 0x48, + + 0x01, 0x05, 0xff, 0xff, 0x5a, 0x68, 0x08, 0x00, 0xfa, 0x00, 0x78, 0x00, 0x28, 0x02, 0xd1, + 0x00, 0x20, 0xe3, 0x49, 0x08, 0x60, 0xc1, 0x48, 0x8d, 0x30, 0x00, 0xbd, 0x10, 0xb5, 0x01, + 0x24, 0xa6, 0x46, 0xbf, 0x48, 0xfe, 0x44, 0x00, 0x47, 0xde, 0x4a, 0x11, 0x68, 0x08, 0x20, + 0x08, 0x43, 0x10, 0x60, 0xa6, 0x46, 0xdc, 0x48, 0xfe, 0x44, 0x00, 0x47, 0xdc, 0x48, 0x47, + 0x30, 0x10, 0xbd, 0xdc, 0x7c, 0x1a, 0x00, 0xff, 0xff, 0x00, 0x00, 0x30, 0xb5, 0xc4, 0x69, + 0x02, 0x23, 0xd8, 0x4a, 0x15, 0x68, 0xd8, 0x49, 0xa5, 0x42, 0x14, 0xd1, 0x15, 0x79, 0x02, + 0x2d, 0x11, 0xd1, 0x15, 0x7b, 0x26, 0x2d, 0x0e, 0xd1, 0xff, 0x25, 0x2a, 0x35, 0x2d, 0x5d, + 0x02, 0x2d, 0x09, 0xd1, 0x01, 0x22, 0xff, 0x20, 0x16, 0x30, 0x02, 0x55, 0xff, 0x20, 0x19, + 0x30, 0x02, 0x55, 0x08, 0x1c, 0xf5, 0x30, 0x30, 0xbd, 0x4c, 0x32, 0x01, 0x3b, 0xe3, 0xd1, + 0x42, 0x68, 0x16, 0x32, 0x42, 0x60, 0x08, 0x1c, 0xe1, 0x30, 0x30, 0xbd, 0x54, 0x04, 0x00, + 0x00, 0x04, 0x04, 0x00, 0x00, 0x15, 0xab, 0x04, 0x00, 0xf0, 0xb5, 0x07, 0x1c, 0x0a, 0x25, + 0xc4, 0x4c, 0x00, 0x26, 0x20, 0x78, 0x00, 0x28, 0x09, 0xd0, 0x60, 0x1c, 0x39, 0x1c, 0x06, + 0x22, 0x01, 0x23, 0x9e, 0x46, 0xc0, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x00, 0x28, 0x03, 0xd0, + 0x0c, 0x34, 0x01, 0x36, 0x01, 0x3d, 0xee, 0xd1, 0x30, 0x06, 0x00, 0x0e, 0xf0, 0xbd, 0xc0, + 0x46, 0xa2, 0x02, 0x00, 0x00, 0x70, 0xb5, 0x05, 0x1c, 0x68, 0x68, 0xe9, 0x69, 0x00, 0x29, + 0x14, 0xd1, 0x10, 0x30, 0x01, 0x24, 0xa6, 0x46, 0xb5, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x06, + 0x1c, 0x0a, 0x2e, 0x0f, 0xd0, 0xff, 0x30, 0x14, 0x30, 0x00, 0x04, 0x00, 0x0c, 0xa6, 0x46, + 0xb1, 0x49, 0xfe, 0x44, + + 0x01, 0x05, 0xff, 0xff, 0x54, 0x69, 0x08, 0x00, 0xfa, 0x08, 0x47, 0x0c, 0x20, 0x70, 0x43, + 0xab, 0x49, 0x01, 0xe0, 0xff, 0x21, 0x33, 0x31, 0x00, 0x22, 0x0a, 0x54, 0x68, 0x68, 0x68, + 0x61, 0xaa, 0x48, 0x40, 0x1d, 0x70, 0xbd, 0x10, 0xb5, 0x04, 0x1c, 0xe0, 0x69, 0x39, 0x21, + 0x09, 0x5c, 0x25, 0x29, 0x0b, 0xd1, 0xff, 0x21, 0x29, 0x31, 0x09, 0x5c, 0x22, 0x29, 0x06, + 0xd1, 0x10, 0x30, 0x05, 0x21, 0x01, 0x22, 0x96, 0x46, 0xa2, 0x4a, 0xfe, 0x44, 0x10, 0x47, + 0x38, 0x20, 0xa0, 0x61, 0xa1, 0x48, 0x13, 0x30, 0x10, 0xbd, 0x40, 0x1e, 0x80, 0x00, 0xa0, + 0x4b, 0x19, 0x50, 0x9e, 0x49, 0x0a, 0x50, 0xf7, 0x46, 0x01, 0x69, 0x8a, 0x04, 0xd2, 0x0f, + 0x53, 0x03, 0x8a, 0x05, 0x92, 0x0d, 0x1a, 0x43, 0x01, 0xd1, 0x9b, 0x4a, 0x11, 0x40, 0x01, + 0x61, 0x9a, 0x49, 0x81, 0x61, 0x9a, 0x48, 0x1f, 0x30, 0xf7, 0x46, 0x30, 0xb5, 0x04, 0x1c, + 0x99, 0x48, 0x05, 0x78, 0x60, 0x68, 0x01, 0x21, 0x8e, 0x46, 0x97, 0x49, 0xfe, 0x44, 0x08, + 0x47, 0x01, 0x1c, 0xa0, 0x61, 0x96, 0x48, 0x03, 0xd0, 0x00, 0x2d, 0x01, 0xd0, 0x17, 0x30, + 0x30, 0xbd, 0x11, 0x30, 0x30, 0xbd, 0xc0, 0x46, 0x22, 0xf6, 0x1a, 0x00, 0xea, 0x80, 0x00, + 0x00, 0xea, 0xba, 0x00, 0x00, 0x59, 0xae, 0x04, 0x00, 0xfd, 0xaa, 0x04, 0x00, 0x30, 0xb5, + 0x04, 0x1c, 0x01, 0x25, 0xae, 0x46, 0x8b, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x00, 0x28, 0x0e, + 0xd0, 0x8a, 0x48, 0x00, 0x78, 0x03, 0x28, 0x03, 0xd0, 0x01, 0x28, 0x01, 0xd0, 0x04, 0x28, + 0x06, 0xd1, 0x87, 0x48, 0x29, 0x1c, 0x00, 0x22, 0xae, 0x46, 0x87, 0x4b, 0xfe, 0x44, 0x18, + 0x47, 0x37, 0x20, 0x60, 0x60, 0x83, 0x48, 0xff, 0x30, 0xaa, 0x30, 0x30, 0xbd, 0xf0, 0xb5, + 0x06, 0x1c, 0xf5, 0x69, + + 0x01, 0x05, 0xff, 0xff, 0x4e, 0x6a, 0x08, 0x00, 0xfa, 0x34, 0x6a, 0x39, 0x27, 0x78, 0x5d, + 0x00, 0x28, 0x31, 0xd0, 0x7f, 0x48, 0x01, 0x1c, 0x0b, 0x39, 0x22, 0x88, 0x8a, 0x42, 0x02, + 0xd1, 0xa9, 0x88, 0x81, 0x42, 0x01, 0xd0, 0x01, 0x20, 0x27, 0xe0, 0x78, 0x5d, 0x25, 0x28, + 0x11, 0xd1, 0x3b, 0x20, 0x40, 0x5d, 0x01, 0x28, 0x05, 0xd1, 0x28, 0x1c, 0x01, 0x21, 0x8e, + 0x46, 0x77, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x10, 0x20, 0x40, 0x19, 0xa1, 0x7a, 0x01, 0x22, + 0x96, 0x46, 0x62, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xa1, 0x7a, 0x28, 0x1c, 0x01, 0x24, 0xa6, + 0x46, 0x70, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x28, 0x1c, 0x00, 0x21, 0xa6, 0x46, 0x6e, 0x4a, + 0xfe, 0x44, 0x10, 0x47, 0x00, 0x20, 0x78, 0x55, 0x3b, 0x21, 0x48, 0x55, 0xa8, 0x80, 0x00, + 0x20, 0x70, 0x60, 0x66, 0x48, 0x2f, 0x30, 0xf0, 0xbd, 0x69, 0x48, 0x01, 0x68, 0x69, 0x48, + 0x02, 0x78, 0x69, 0x48, 0x02, 0x2a, 0x03, 0xd0, 0x09, 0x8a, 0x05, 0x29, 0x03, 0xda, 0x04, + 0xe0, 0x09, 0x8a, 0x04, 0x29, 0x01, 0xdb, 0x43, 0x30, 0xf7, 0x46, 0x35, 0x30, 0xf7, 0x46, + 0x63, 0x48, 0x63, 0x49, 0x09, 0x68, 0x01, 0x60, 0x63, 0x49, 0x81, 0x80, 0x63, 0x4a, 0x11, + 0x68, 0x81, 0x60, 0x91, 0x88, 0x81, 0x81, 0x63, 0x48, 0x00, 0x88, 0x60, 0x49, 0x08, 0x80, + 0x60, 0x48, 0xa1, 0x30, 0xf7, 0x46, 0xf8, 0xb5, 0x07, 0x1c, 0x07, 0x26, 0x61, 0x4d, 0x00, + 0x24, 0x00, 0x94, 0x32, 0x20, 0x40, 0x5d, 0x02, 0x28, 0x14, 0xd1, 0x37, 0x20, 0x40, 0x5d, + 0x5b, 0x49, 0x08, 0x18, 0x40, 0x00, 0x02, 0x21, 0x01, 0x22, 0x96, 0x46, 0x5b, 0x4a, 0xfe, + 0x44, 0x10, 0x47, 0x00, 0x28, 0x07, 0xd0, 0x9a, 0x20, 0x40, 0x5d, 0x00, 0x28, 0x01, 0xd1, + 0x01, 0x24, 0x01, 0xe0, + + 0x01, 0x05, 0xff, 0xff, 0x48, 0x6b, 0x08, 0x00, 0xfa, 0x01, 0x20, 0x00, 0x90, 0xac, 0x35, + 0x01, 0x3e, 0xe3, 0xd1, 0xfc, 0x61, 0x00, 0x98, 0x38, 0x62, 0x4f, 0x48, 0x43, 0x30, 0xf8, + 0xbd, 0xc0, 0x46, 0xb9, 0x34, 0x03, 0x00, 0x09, 0xef, 0x02, 0x00, 0x43, 0x68, 0x08, 0x00, + 0x3d, 0x31, 0x05, 0x00, 0xa9, 0xb7, 0x04, 0x00, 0x8d, 0x62, 0x02, 0x00, 0xa1, 0x69, 0x08, + 0x00, 0x70, 0x55, 0x08, 0x00, 0x70, 0xb5, 0x4b, 0x48, 0x05, 0x78, 0x00, 0x24, 0x46, 0x48, + 0x00, 0x88, 0x80, 0x09, 0x10, 0xd3, 0x01, 0x20, 0x06, 0x1c, 0x86, 0x46, 0x44, 0x49, 0xfe, + 0x44, 0x08, 0x47, 0x00, 0x28, 0x08, 0xd0, 0x3c, 0x22, 0x44, 0x49, 0x08, 0x78, 0x01, 0x28, + 0x03, 0xd1, 0x50, 0x5c, 0x00, 0x28, 0x00, 0xd0, 0x34, 0x1c, 0x3e, 0x48, 0xff, 0x2d, 0x01, + 0xd0, 0x00, 0x2c, 0x01, 0xd0, 0x41, 0x30, 0x70, 0xbd, 0x0d, 0x30, 0x70, 0xbd, 0xb9, 0xab, + 0x04, 0x00, 0xdc, 0x5f, 0x08, 0x00, 0x0b, 0xd8, 0x04, 0x00, 0xc1, 0x69, 0x82, 0x69, 0x51, + 0x1a, 0x01, 0x61, 0x37, 0x48, 0x73, 0x30, 0xf7, 0x46, 0xc0, 0x46, 0x35, 0xff, 0x00, 0x00, + 0x41, 0x36, 0x00, 0x00, 0xd9, 0x67, 0x08, 0x00, 0x07, 0x53, 0x08, 0x00, 0xc4, 0x30, 0x19, + 0x00, 0x84, 0x51, 0x08, 0x00, 0x95, 0x04, 0x01, 0x00, 0x99, 0x5f, 0x03, 0x00, 0x9c, 0x14, + 0x08, 0x00, 0xdf, 0xd7, 0x01, 0x00, 0x34, 0x15, 0x08, 0x00, 0x13, 0x84, 0x05, 0x00, 0xf1, + 0x68, 0x08, 0x00, 0x25, 0x32, 0x04, 0x00, 0x61, 0x7d, 0x03, 0x00, 0xef, 0x9f, 0x02, 0x00, + 0x29, 0xd5, 0x01, 0x00, 0x04, 0xf3, 0x1a, 0x00, 0x80, 0x7b, 0x08, 0x00, 0xff, 0xe7, 0x00, + 0x00, 0x08, 0x14, 0x08, 0x00, 0xb5, 0xa4, 0x03, 0x00, 0x5f, 0x50, 0x08, 0x00, 0x49, 0xa0, + 0x02, 0x00, 0x0b, 0x97, + + 0x01, 0x05, 0xff, 0xff, 0x42, 0x6c, 0x08, 0x00, 0xfa, 0x02, 0x00, 0xf9, 0xb3, 0x02, 0x00, + 0x26, 0x25, 0x08, 0x00, 0x20, 0x01, 0x1a, 0x00, 0x79, 0x98, 0x01, 0x00, 0x65, 0xab, 0x04, + 0x00, 0x11, 0x04, 0x00, 0x00, 0xb7, 0xc8, 0x01, 0x00, 0xd3, 0xfe, 0x00, 0x00, 0x7d, 0x98, + 0x02, 0x00, 0x11, 0x00, 0x01, 0x00, 0x90, 0x49, 0x08, 0x00, 0x76, 0x53, 0x08, 0x00, 0xb7, + 0x2a, 0x02, 0x00, 0x88, 0x0b, 0x1a, 0x00, 0x94, 0x5f, 0x08, 0x00, 0x61, 0x09, 0x00, 0x00, + 0xb8, 0x64, 0x06, 0x00, 0x34, 0x33, 0x19, 0x00, 0xfd, 0xa0, 0x03, 0x00, 0xd0, 0x5f, 0x08, + 0x00, 0x11, 0x01, 0x0d, 0x00, 0x97, 0x4d, 0x02, 0x00, 0x94, 0x1a, 0x08, 0x00, 0x9f, 0xae, + 0x04, 0x00, 0x7a, 0x7f, 0x1a, 0x00, 0x03, 0x28, 0x04, 0x00, 0xb7, 0x95, 0x01, 0x00, 0x12, + 0x25, 0x08, 0x00, 0x34, 0x24, 0x08, 0x00, 0x19, 0x8f, 0x02, 0x00, 0x70, 0xb5, 0x06, 0x1c, + 0xdc, 0x4d, 0x28, 0x68, 0xdc, 0x4c, 0x00, 0x28, 0x01, 0xd1, 0x08, 0x34, 0x0b, 0xe0, 0x28, + 0x68, 0xc3, 0x21, 0x00, 0x22, 0x01, 0x23, 0x9e, 0x46, 0xd8, 0x4b, 0xfe, 0x44, 0x18, 0x47, + 0x00, 0x20, 0x28, 0x60, 0xff, 0x34, 0x97, 0x34, 0x34, 0x62, 0x70, 0xbd, 0x10, 0xb5, 0x40, + 0x69, 0x00, 0x7a, 0x80, 0x06, 0x84, 0x0e, 0x07, 0x2c, 0x01, 0xd0, 0x09, 0x2c, 0x06, 0xd1, + 0x00, 0x20, 0x0f, 0x21, 0x01, 0x22, 0x96, 0x46, 0xce, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x0f, + 0x2c, 0x15, 0xd1, 0xcd, 0x48, 0x00, 0x78, 0x01, 0x28, 0x11, 0xd1, 0xcc, 0x4a, 0x11, 0x88, + 0x10, 0x20, 0x08, 0x43, 0x10, 0x80, 0xca, 0x48, 0x03, 0x21, 0x06, 0x22, 0x01, 0x24, 0xa6, + 0x46, 0xc9, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x96, 0x20, 0xa6, 0x46, 0xc7, 0x49, 0xfe, 0x44, + 0x08, 0x47, 0x10, 0xbd, + + 0x01, 0x05, 0xff, 0xff, 0x3c, 0x6d, 0x08, 0x00, 0xfa, 0x70, 0xb5, 0x05, 0x1c, 0xee, 0x69, + 0x68, 0x69, 0x40, 0x78, 0x31, 0x28, 0x1f, 0xd1, 0xc3, 0x4c, 0xc3, 0x48, 0x03, 0x78, 0x00, + 0x21, 0x02, 0xe0, 0x48, 0x1c, 0x01, 0x06, 0x09, 0x0e, 0x99, 0x42, 0x15, 0xda, 0x23, 0x20, + 0x00, 0x01, 0x48, 0x43, 0x20, 0x18, 0x38, 0x22, 0x12, 0x5c, 0x0a, 0x2a, 0xf2, 0xd1, 0x00, + 0x21, 0x01, 0x24, 0xa6, 0x46, 0xba, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x74, 0x80, 0x03, 0x20, + 0x30, 0x80, 0xb8, 0x49, 0xaf, 0x20, 0xc0, 0x00, 0x40, 0x18, 0x28, 0x62, 0x70, 0xbd, 0xfe, + 0xb5, 0x02, 0x90, 0x81, 0x8a, 0x84, 0x69, 0xab, 0x48, 0x00, 0x78, 0xb3, 0x4a, 0x8a, 0x1a, + 0x1e, 0xd0, 0x1a, 0x3a, 0x00, 0xd1, 0xa2, 0xe0, 0x01, 0x3a, 0x00, 0xd1, 0x8b, 0xe0, 0xe6, + 0x4b, 0xd2, 0x1a, 0x7e, 0xd0, 0x3c, 0x3a, 0x04, 0xd0, 0x16, 0x3a, 0x63, 0xd0, 0x04, 0x3a, + 0x28, 0xd0, 0xfe, 0xbd, 0x01, 0x28, 0x1a, 0xd1, 0xe1, 0x48, 0x0b, 0x21, 0x09, 0x19, 0x0a, + 0x23, 0x0c, 0x78, 0x02, 0x78, 0x22, 0x40, 0x0a, 0x70, 0x01, 0x30, 0x01, 0x31, 0x01, 0x3b, + 0xf7, 0xd1, 0xfe, 0xbd, 0x20, 0x1c, 0x00, 0x21, 0x6a, 0x46, 0x01, 0x25, 0xae, 0x46, 0xd9, + 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x68, 0x46, 0xae, 0x46, 0xd7, 0x49, 0xfe, 0x44, 0x08, 0x47, + 0x00, 0x28, 0x00, 0xd0, 0x87, 0xe0, 0x20, 0x1c, 0x4e, 0x21, 0x02, 0x22, 0x6b, 0x46, 0xae, + 0x46, 0xd3, 0x4c, 0xfe, 0x44, 0x20, 0x47, 0x49, 0xe0, 0x0b, 0x20, 0x06, 0x57, 0xd1, 0x48, + 0x07, 0x1c, 0x10, 0x3f, 0x11, 0x22, 0x94, 0x46, 0x0f, 0x23, 0x00, 0x22, 0x85, 0x56, 0xea, + 0x0f, 0x52, 0x19, 0x52, 0x10, 0x96, 0x42, 0x05, 0xdc, 0xfd, 0x56, 0xea, 0x0f, 0x52, 0x19, + 0x52, 0x10, 0x96, 0x42, + + 0x01, 0x05, 0xff, 0xff, 0x36, 0x6e, 0x08, 0x00, 0xfa, 0x03, 0xdc, 0x01, 0x38, 0x01, 0x3b, + 0xef, 0xd1, 0x03, 0xe0, 0xe1, 0x48, 0x03, 0x70, 0x00, 0x20, 0x84, 0x46, 0x88, 0x05, 0x00, + 0x0f, 0x80, 0x01, 0x40, 0x28, 0x07, 0xdb, 0x62, 0x46, 0x20, 0x1c, 0x01, 0x23, 0x9e, 0x46, + 0xdc, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x1f, 0xe0, 0x88, 0x0a, 0x80, 0x01, 0x89, 0x05, 0x89, + 0x0d, 0x01, 0x43, 0x09, 0x04, 0x09, 0x0c, 0x62, 0x46, 0x20, 0x1c, 0x01, 0x23, 0x9e, 0x46, + 0x70, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x10, 0xe0, 0x06, 0x20, 0xa0, 0x80, 0xd2, 0x48, 0x00, + 0x78, 0x02, 0x28, 0x00, 0xdb, 0x01, 0x20, 0xa0, 0x73, 0x01, 0x23, 0x63, 0x80, 0x20, 0x1c, + 0xe8, 0x49, 0x00, 0x22, 0x9e, 0x46, 0xe7, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xe4, 0x49, 0xff, + 0x31, 0x23, 0x31, 0x02, 0x98, 0x01, 0x62, 0xfe, 0xbd, 0xe4, 0x49, 0xe4, 0x48, 0x42, 0x1c, + 0x05, 0x20, 0x01, 0x23, 0x9e, 0x46, 0xe3, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xfe, 0xbd, 0x20, + 0x1c, 0x00, 0x21, 0x6a, 0x46, 0x01, 0x25, 0xae, 0x46, 0x9f, 0x4b, 0xfe, 0x44, 0x18, 0x47, + 0x68, 0x46, 0xae, 0x46, 0x9e, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x1d, 0x21, 0x09, 0x19, 0xae, + 0x46, 0xeb, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xfe, 0xbd, 0x20, 0x1c, 0x00, 0x21, 0x01, 0x25, + 0xae, 0x46, 0xe8, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xae, 0x46, 0xe7, 0x49, 0xfe, 0x44, 0x08, + 0x47, 0x19, 0x21, 0x09, 0x19, 0xae, 0x46, 0xe2, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xfe, 0xbd, + 0xf0, 0xb5, 0x06, 0x1c, 0xb4, 0x8a, 0xb7, 0x69, 0xe7, 0x48, 0x84, 0x42, 0x0d, 0xdc, 0x84, + 0x42, 0x70, 0xd0, 0x6a, 0x38, 0x20, 0x1a, 0x67, 0xd0, 0x10, 0x38, 0x59, 0xd0, 0x08, 0x38, + 0x50, 0xd0, 0x46, 0x38, + + 0x01, 0x05, 0xff, 0xff, 0x30, 0x6f, 0x08, 0x00, 0xfa, 0x42, 0xd0, 0x04, 0x38, 0x39, 0xd0, + 0xf0, 0xbd, 0xe2, 0x48, 0x20, 0x1a, 0x2e, 0xd0, 0x03, 0x38, 0x07, 0xd0, 0x59, 0x38, 0x26, + 0xd0, 0x01, 0x38, 0x1d, 0xd0, 0xff, 0x38, 0xf6, 0x38, 0x13, 0xd0, 0xf0, 0xbd, 0xdd, 0x48, + 0x00, 0x78, 0x01, 0x28, 0x5e, 0xd0, 0xdc, 0x48, 0x00, 0x78, 0xff, 0x28, 0x5a, 0xd0, 0xeb, + 0x48, 0x00, 0x78, 0x01, 0x28, 0x56, 0xd1, 0x38, 0x1c, 0x01, 0x21, 0x8e, 0x46, 0xd1, 0x49, + 0xfe, 0x44, 0x08, 0x47, 0x44, 0xe0, 0x38, 0x1c, 0x01, 0x21, 0x8e, 0x46, 0xcf, 0x49, 0xfe, + 0x44, 0x08, 0x47, 0x3d, 0xe0, 0x38, 0x1c, 0x01, 0x21, 0x8e, 0x46, 0xcc, 0x49, 0xfe, 0x44, + 0x08, 0x47, 0x36, 0xe0, 0xf8, 0x7a, 0xeb, 0x49, 0x08, 0x70, 0x32, 0xe0, 0x38, 0x1c, 0x01, + 0x21, 0x8e, 0x46, 0xe9, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x33, 0xe0, 0x38, 0x1c, 0x01, 0x21, + 0x8e, 0x46, 0xe6, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x24, 0xe0, 0x38, 0x1c, 0x01, 0x25, 0xae, + 0x46, 0xe4, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x38, 0x1c, 0xae, 0x46, 0xe2, 0x49, 0xfe, 0x44, + 0x08, 0x47, 0x18, 0xe0, 0x38, 0x1c, 0x01, 0x21, 0x8e, 0x46, 0xe0, 0x49, 0xfe, 0x44, 0x08, + 0x47, 0x11, 0xe0, 0x38, 0x1c, 0x01, 0x25, 0xae, 0x46, 0xdd, 0x49, 0xfe, 0x44, 0x08, 0x47, + 0x38, 0x1c, 0xae, 0x46, 0xdc, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x05, 0xe0, 0x38, 0x1c, 0x01, + 0x21, 0x8e, 0x46, 0xd9, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x38, 0x1c, 0x21, 0x1c, 0x00, 0x22, + 0x01, 0x23, 0x9e, 0x46, 0xeb, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xe9, 0x48, 0x9c, 0x30, 0x30, + 0x62, 0xf0, 0xbd, 0xe9, 0x49, 0x09, 0x78, 0x01, 0x29, 0x03, 0xd0, 0xe8, 0x49, 0x09, 0x78, + 0x00, 0x29, 0x02, 0xd1, + + 0x01, 0x05, 0xff, 0xff, 0x2a, 0x70, 0x08, 0x00, 0xfa, 0xe7, 0x49, 0x0e, 0x31, 0x01, 0x62, + 0xf7, 0x46, 0xc0, 0x46, 0xcc, 0x5f, 0x08, 0x00, 0x65, 0x0d, 0x02, 0x00, 0xd3, 0x96, 0x02, + 0x00, 0xb9, 0x6e, 0x03, 0x00, 0xa2, 0x52, 0x08, 0x00, 0x44, 0x7f, 0x1a, 0x00, 0x6a, 0x0a, + 0x1a, 0x00, 0x65, 0xab, 0x04, 0x00, 0x3f, 0x4a, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x21, + 0x50, 0x08, 0x00, 0xb7, 0xc8, 0x01, 0x00, 0xe1, 0xa1, 0x00, 0x00, 0x0e, 0x04, 0x00, 0x00, + 0x30, 0xb5, 0xa8, 0x49, 0x09, 0x78, 0x40, 0x69, 0x3f, 0x22, 0x82, 0x1a, 0x01, 0x2a, 0x45, + 0xd9, 0x0f, 0x3a, 0xd3, 0x48, 0x1f, 0xd0, 0x2d, 0x3a, 0x5d, 0xd1, 0x00, 0x24, 0x00, 0x78, + 0x80, 0x08, 0x0f, 0xd3, 0x01, 0x25, 0xae, 0x46, 0xcf, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x00, + 0x28, 0x07, 0xd0, 0x01, 0x38, 0x03, 0xd0, 0x02, 0x38, 0x03, 0xd0, 0x01, 0x38, 0x02, 0xd1, + 0x02, 0x24, 0x00, 0xe0, 0x2c, 0x1c, 0xcb, 0x48, 0x32, 0x38, 0x21, 0x1c, 0x0b, 0x22, 0x01, + 0x23, 0x9e, 0x46, 0xc9, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x30, 0xbd, 0x00, 0x78, 0x40, 0x08, + 0x3c, 0xd3, 0x01, 0x29, 0x3a, 0xd1, 0xc1, 0x48, 0x01, 0x78, 0xc1, 0x48, 0x00, 0x29, 0x09, + 0xd0, 0x04, 0x29, 0x0d, 0xd1, 0x06, 0x21, 0x08, 0x22, 0x01, 0x23, 0x9e, 0x46, 0xc0, 0x4b, + 0xfe, 0x44, 0x18, 0x47, 0x05, 0xe0, 0x01, 0x21, 0x00, 0x22, 0x8e, 0x46, 0xbc, 0x4b, 0xfe, + 0x44, 0x18, 0x47, 0xed, 0x48, 0x02, 0x30, 0x01, 0x21, 0x03, 0x22, 0x8e, 0x46, 0xb8, 0x4b, + 0xfe, 0x44, 0x18, 0x47, 0x30, 0xbd, 0x00, 0x29, 0x1a, 0xd1, 0xe8, 0x49, 0x01, 0x39, 0x4a, + 0x78, 0xe5, 0x48, 0x00, 0x2a, 0x0d, 0xd1, 0x0c, 0x22, 0x51, 0x56, 0x00, 0x29, 0x09, 0xdd, + 0x32, 0x29, 0x07, 0xda, + + 0x01, 0x05, 0xff, 0xff, 0x24, 0x71, 0x08, 0x00, 0xfa, 0x16, 0x21, 0x00, 0x22, 0x01, 0x23, + 0x9e, 0x46, 0xec, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x30, 0xbd, 0x19, 0x21, 0x00, 0x22, 0x01, + 0x23, 0x9e, 0x46, 0xe8, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x30, 0xbd, 0xda, 0x07, 0x00, 0x00, + 0xa2, 0x13, 0x08, 0x00, 0xad, 0x24, 0x00, 0x00, 0x81, 0xf4, 0x00, 0x00, 0x81, 0x97, 0x02, + 0x00, 0x27, 0x31, 0x19, 0x00, 0x70, 0xb5, 0xe2, 0x48, 0x00, 0x78, 0xe0, 0x49, 0x08, 0x70, + 0x6a, 0x48, 0x00, 0x78, 0x01, 0x28, 0x17, 0xd0, 0xdf, 0x4d, 0x86, 0x3d, 0x28, 0x1c, 0x04, + 0x21, 0x01, 0x24, 0xa6, 0x46, 0xec, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x28, 0x1f, 0xd1, + 0x28, 0x1c, 0x08, 0x21, 0xa6, 0x46, 0xe9, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x28, 0x1c, 0x07, + 0x21, 0xa6, 0x46, 0xe6, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x70, 0xbd, 0xc2, 0x4d, 0x4c, 0x35, + 0x28, 0x1c, 0x00, 0x26, 0x31, 0x1c, 0x01, 0x24, 0xa6, 0x46, 0xea, 0x4a, 0xfe, 0x44, 0x10, + 0x47, 0xe8, 0x49, 0x08, 0x80, 0x28, 0x1c, 0x1c, 0x21, 0x32, 0x1c, 0xa6, 0x46, 0xc8, 0x4b, + 0xfe, 0x44, 0x18, 0x47, 0x70, 0xbd, 0xc0, 0x46, 0x7f, 0x19, 0x08, 0x00, 0xe9, 0x96, 0x02, + 0x00, 0xa3, 0x10, 0x08, 0x00, 0xf0, 0xb5, 0x06, 0x1c, 0x35, 0x8b, 0x7e, 0x48, 0x00, 0x78, + 0x04, 0x28, 0x26, 0xd1, 0xde, 0x4f, 0x38, 0x1c, 0x00, 0x21, 0x01, 0x24, 0xa6, 0x46, 0xdc, + 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x29, 0x01, 0x01, 0x43, 0x2d, 0x02, 0x0d, 0x43, 0x38, 0x1c, + 0x0c, 0x21, 0xa6, 0x46, 0xd7, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x03, 0x28, 0x43, 0x38, + 0x80, 0xb6, 0x4d, 0x3a, 0x3d, 0x38, 0x1c, 0x08, 0x21, 0xa6, 0x46, 0xd2, 0x4a, 0xfe, 0x44, + 0x10, 0x47, 0x41, 0x1c, + + 0x01, 0x05, 0xff, 0xff, 0x1e, 0x72, 0x08, 0x00, 0xfa, 0x28, 0x68, 0xa6, 0x46, 0xd1, 0x4a, + 0xfe, 0x44, 0x10, 0x47, 0xe9, 0x60, 0xce, 0x48, 0xda, 0x30, 0x30, 0x62, 0xf0, 0xbd, 0xc0, + 0x46, 0x25, 0x00, 0x00, 0x00, 0x55, 0x0c, 0x00, 0x00, 0xbd, 0x97, 0x02, 0x00, 0xa9, 0x60, + 0x08, 0x00, 0x63, 0x08, 0x00, 0x00, 0xa1, 0x69, 0x08, 0x00, 0x00, 0xb5, 0x30, 0x48, 0x00, + 0x78, 0x01, 0x28, 0x0c, 0xd1, 0xc5, 0x49, 0x08, 0x88, 0x10, 0x22, 0x90, 0x43, 0x08, 0x80, + 0xc3, 0x48, 0x00, 0x21, 0x06, 0x22, 0x01, 0x23, 0x9e, 0x46, 0x5d, 0x4b, 0xfe, 0x44, 0x18, + 0x47, 0x00, 0xbd, 0x00, 0xb5, 0x40, 0x69, 0x41, 0x7c, 0x0f, 0x29, 0x07, 0xd1, 0x00, 0x7c, + 0x01, 0x28, 0x04, 0xd1, 0x01, 0x20, 0x86, 0x46, 0xe7, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x00, + 0xbd, 0xc0, 0x46, 0x15, 0x60, 0x08, 0x00, 0x7d, 0x24, 0x00, 0x00, 0xc3, 0xf3, 0x00, 0x00, + 0x00, 0xb5, 0x40, 0x69, 0x00, 0x7a, 0x0f, 0x28, 0x04, 0xd1, 0x01, 0x20, 0x86, 0x46, 0xde, + 0x48, 0xfe, 0x44, 0x00, 0x47, 0x00, 0xbd, 0xc0, 0x46, 0x76, 0xfd, 0x00, 0x00, 0x39, 0x05, + 0x18, 0x00, 0x55, 0x00, 0x18, 0x00, 0x5d, 0x04, 0x18, 0x00, 0x7f, 0xfd, 0x00, 0x00, 0xd5, + 0x5f, 0x08, 0x00, 0xd3, 0x5f, 0x08, 0x00, 0x30, 0xb5, 0xa0, 0x4c, 0x21, 0x88, 0x0e, 0x48, + 0x00, 0x78, 0x01, 0x28, 0x1a, 0xd0, 0x83, 0x4d, 0x86, 0x3d, 0x28, 0x1c, 0x04, 0x21, 0x01, + 0x24, 0xa6, 0x46, 0x90, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x28, 0x1b, 0xd1, 0x28, 0x1c, + 0x08, 0x21, 0xa6, 0x46, 0xcc, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x28, 0x1c, 0x07, 0x21, 0xa6, + 0x46, 0xc9, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x0e, 0xe0, 0xc0, 0x46, 0xa2, 0x52, 0x08, 0x00, + 0xc4, 0x4d, 0xa9, 0x42, + + 0x01, 0x05, 0xff, 0xff, 0x18, 0x73, 0x08, 0x00, 0xfa, 0x08, 0xd0, 0x63, 0x48, 0x4c, 0x30, + 0x00, 0x22, 0x01, 0x23, 0x9e, 0x46, 0x6e, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x25, 0x80, 0x6e, + 0x48, 0x00, 0x78, 0x6c, 0x49, 0x09, 0x78, 0x81, 0x42, 0x04, 0xd0, 0x01, 0x20, 0x86, 0x46, + 0x89, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x30, 0xbd, 0xd2, 0x5f, 0x08, 0x00, 0x01, 0x00, 0x18, + 0x00, 0xab, 0x06, 0x18, 0x00, 0x95, 0x52, 0x00, 0x00, 0xad, 0x03, 0x18, 0x00, 0x19, 0x06, + 0x18, 0x00, 0xed, 0x53, 0x00, 0x00, 0x99, 0x00, 0x18, 0x00, 0x01, 0x07, 0x18, 0x00, 0x00, + 0xb5, 0x40, 0x69, 0x00, 0x88, 0x01, 0x04, 0x09, 0x0e, 0x0a, 0x02, 0x09, 0x21, 0x89, 0x02, + 0x51, 0x1a, 0x04, 0xd0, 0x0f, 0x20, 0x40, 0x02, 0x09, 0x1a, 0x0e, 0xd0, 0x00, 0xbd, 0x00, + 0x06, 0x00, 0x0e, 0x09, 0x28, 0x12, 0xd1, 0xa8, 0x49, 0xa8, 0x4a, 0x09, 0x32, 0x05, 0x20, + 0x01, 0x23, 0x9e, 0x46, 0xa9, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x00, 0xbd, 0xa5, 0x49, 0xa5, + 0x48, 0x42, 0x1d, 0x05, 0x20, 0x01, 0x23, 0x9e, 0x46, 0xa4, 0x4b, 0xfe, 0x44, 0x18, 0x47, + 0x00, 0xbd, 0xc0, 0x46, 0x11, 0x67, 0x00, 0x00, 0xb5, 0x41, 0x05, 0x00, 0x37, 0x10, 0x08, + 0x00, 0x30, 0x25, 0x08, 0x00, 0x5f, 0x44, 0x05, 0x00, 0x4e, 0x50, 0x08, 0x00, 0xed, 0x01, + 0x01, 0x00, 0x70, 0x55, 0x08, 0x00, 0x88, 0x7c, 0x1a, 0x00, 0x48, 0x31, 0x19, 0x00, 0x65, + 0xab, 0x04, 0x00, 0x7b, 0xab, 0x04, 0x00, 0x30, 0xb5, 0x01, 0x24, 0xa6, 0x46, 0xda, 0x48, + 0xfe, 0x44, 0x00, 0x47, 0xa6, 0x46, 0xd9, 0x48, 0xfe, 0x44, 0x00, 0x47, 0xa6, 0x46, 0xe5, + 0x48, 0xfe, 0x44, 0x00, 0x47, 0xa6, 0x46, 0xe4, 0x48, 0xfe, 0x44, 0x00, 0x47, 0xa6, 0x46, + 0xe3, 0x48, 0xfe, 0x44, + + 0x01, 0x05, 0xff, 0xff, 0x12, 0x74, 0x08, 0x00, 0xfa, 0x00, 0x47, 0xde, 0x4d, 0x6a, 0x78, + 0x01, 0x2a, 0x08, 0xd1, 0xa6, 0x46, 0xe0, 0x48, 0xfe, 0x44, 0x00, 0x47, 0xa6, 0x46, 0xdf, + 0x48, 0xfe, 0x44, 0x00, 0x47, 0x6a, 0x78, 0xde, 0x4b, 0x18, 0x78, 0x00, 0x28, 0x1b, 0xd0, + 0xde, 0x49, 0x01, 0x28, 0x12, 0xd0, 0xdb, 0x4d, 0x2d, 0x78, 0x03, 0x28, 0x02, 0xd0, 0x00, + 0x2d, 0x02, 0xd1, 0x11, 0xe0, 0x00, 0x2d, 0x09, 0xd0, 0x02, 0x28, 0x0d, 0xd1, 0x03, 0x20, + 0x18, 0x70, 0xa0, 0x20, 0x08, 0x70, 0x59, 0x20, 0x48, 0x70, 0x32, 0x20, 0x04, 0xe0, 0x02, + 0x20, 0x18, 0x70, 0x00, 0x20, 0x08, 0x70, 0x48, 0x70, 0x88, 0x70, 0x01, 0x2a, 0x18, 0xd1, + 0xd0, 0x48, 0x00, 0x21, 0xa6, 0x46, 0xcf, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x01, 0x1c, 0x3b, + 0x48, 0x05, 0xd1, 0x0a, 0x21, 0xa6, 0x46, 0x29, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x05, 0xe0, + 0x0a, 0x21, 0xa6, 0x46, 0x65, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x02, 0x24, 0xe1, 0x48, 0x00, + 0x68, 0x41, 0x21, 0x0c, 0x54, 0x30, 0xbd, 0xc0, 0x46, 0x0c, 0x74, 0x1a, 0x00, 0x1e, 0xf6, + 0x1a, 0x00, 0x7d, 0x51, 0x08, 0x00, 0x10, 0xb5, 0xdc, 0x4c, 0xdd, 0x48, 0x00, 0x78, 0x21, + 0x78, 0x81, 0x42, 0x0d, 0xdd, 0x07, 0x21, 0xd9, 0x48, 0x00, 0x22, 0x32, 0x23, 0x1b, 0x5c, + 0x00, 0x2b, 0x02, 0xd0, 0x52, 0x1c, 0x12, 0x06, 0x12, 0x0e, 0xac, 0x30, 0x01, 0x39, 0xf5, + 0xd1, 0x22, 0x70, 0x10, 0xbd, 0x1f, 0xac, 0x04, 0x00, 0xd6, 0x5f, 0x08, 0x00, 0x0a, 0x53, + 0x08, 0x00, 0x04, 0x7d, 0x1a, 0x00, 0xf0, 0xb5, 0x01, 0x24, 0xa6, 0x46, 0xd2, 0x48, 0xfe, + 0x44, 0x00, 0x47, 0xa6, 0x46, 0xcd, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x00, 0x28, 0x10, 0xd0, + 0x11, 0x27, 0x09, 0x26, + + 0x01, 0x05, 0xff, 0xff, 0x0c, 0x75, 0x08, 0x00, 0xfa, 0xca, 0x4d, 0x3e, 0x20, 0x40, 0x5d, + 0xff, 0x28, 0x06, 0xd0, 0x3b, 0x20, 0x47, 0x55, 0x28, 0x1c, 0xa6, 0x46, 0xc7, 0x49, 0xfe, + 0x44, 0x08, 0x47, 0x4c, 0x35, 0x01, 0x3e, 0xf1, 0xd1, 0xf0, 0xbd, 0x77, 0xae, 0x04, 0x00, + 0xfd, 0xaa, 0x04, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0xc2, 0x48, 0x04, 0x21, 0x01, 0x22, 0x96, + 0x46, 0x9d, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x28, 0x02, 0xd0, 0x84, 0x48, 0x34, 0x30, + 0x20, 0x62, 0x10, 0xbd, 0xc0, 0x46, 0xd8, 0x5f, 0x08, 0x00, 0xd1, 0xae, 0x04, 0x00, 0x1e, + 0x60, 0x1a, 0x00, 0x9f, 0xae, 0x04, 0x00, 0x47, 0xa5, 0x03, 0x00, 0x2d, 0x6a, 0x05, 0x00, + 0x44, 0x7f, 0x1a, 0x00, 0x6a, 0x0a, 0x1a, 0x00, 0x30, 0xb5, 0x04, 0x1c, 0x20, 0x69, 0xa1, + 0x69, 0x00, 0x29, 0x44, 0xd0, 0x02, 0x78, 0xff, 0x2a, 0x41, 0xd0, 0x8a, 0x88, 0x89, 0x18, + 0x08, 0x22, 0xca, 0x42, 0x3c, 0xd0, 0x09, 0x7a, 0x4a, 0x08, 0xc9, 0x07, 0xc9, 0x0f, 0xc3, + 0x78, 0x00, 0x2b, 0x0a, 0xd0, 0x11, 0x2a, 0x08, 0xd1, 0x8b, 0x42, 0x06, 0xd1, 0xc3, 0x7f, + 0xdb, 0x08, 0x03, 0xd3, 0xa6, 0x4b, 0x1b, 0x78, 0xdb, 0x08, 0x1b, 0xd2, 0x3a, 0x23, 0x1b, + 0x5c, 0x25, 0x2b, 0x01, 0xd1, 0x17, 0x2a, 0x0d, 0xd0, 0x39, 0x23, 0x1b, 0x5c, 0x0a, 0x2b, + 0x20, 0xd1, 0x0f, 0x2a, 0x1e, 0xd1, 0x0f, 0x22, 0x2a, 0x23, 0x01, 0x25, 0xae, 0x46, 0x9d, + 0x4d, 0xfe, 0x44, 0x28, 0x47, 0x13, 0xe0, 0x17, 0x22, 0x2a, 0x23, 0x01, 0x25, 0xae, 0x46, + 0x99, 0x4d, 0xfe, 0x44, 0x28, 0x47, 0x0b, 0xe0, 0xff, 0x22, 0x8a, 0x32, 0x11, 0x23, 0x13, + 0x54, 0xff, 0x22, 0x89, 0x32, 0x11, 0x54, 0x01, 0x21, 0x8e, 0x46, 0x95, 0x49, 0xfe, 0x44, + 0x08, 0x47, 0x92, 0x48, + + 0x01, 0x05, 0xff, 0xff, 0x06, 0x76, 0x08, 0x00, 0xfa, 0xf0, 0x30, 0x20, 0x62, 0x30, 0xbd, + 0x00, 0xb5, 0x92, 0x49, 0x93, 0x48, 0x92, 0x4a, 0x12, 0x18, 0x15, 0x20, 0x01, 0x23, 0x9e, + 0x46, 0x08, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x00, 0xbd, 0x4d, 0x72, 0x08, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x15, 0xab, 0x04, 0x00, 0x6d, 0x62, 0x08, 0x00, 0x45, 0xee, 0x00, 0x00, 0x27, + 0x62, 0x08, 0x00, 0x5d, 0x8c, 0x01, 0x00, 0xa1, 0x69, 0x08, 0x00, 0x70, 0xb5, 0x05, 0x1c, + 0x6e, 0x69, 0x28, 0x69, 0x29, 0x7e, 0xc9, 0x1e, 0x55, 0xd0, 0x21, 0x39, 0x43, 0xd0, 0x01, + 0x39, 0x01, 0x29, 0x2d, 0xd9, 0x02, 0x39, 0x01, 0x29, 0x16, 0xd9, 0x58, 0x39, 0x77, 0xd1, + 0xff, 0x21, 0x8d, 0x31, 0x89, 0x5d, 0x0c, 0x29, 0x72, 0xd1, 0x7c, 0x49, 0xc2, 0x78, 0x4a, + 0x70, 0x02, 0x79, 0x8a, 0x70, 0x42, 0x79, 0xca, 0x70, 0x82, 0x79, 0x0a, 0x71, 0xc2, 0x79, + 0x4a, 0x71, 0x02, 0x7a, 0xca, 0x80, 0x80, 0x7a, 0x08, 0x81, 0x70, 0xbd, 0x71, 0x7e, 0x00, + 0x29, 0x5f, 0xd0, 0x26, 0x21, 0x89, 0x5d, 0x03, 0x29, 0x5b, 0xda, 0xc2, 0x78, 0xf9, 0x21, + 0x11, 0x40, 0xc1, 0x70, 0x01, 0x79, 0x49, 0x06, 0x49, 0x0e, 0x01, 0x71, 0x42, 0x79, 0xfe, + 0x21, 0x11, 0x40, 0x41, 0x71, 0x70, 0xbd, 0x31, 0x7e, 0x00, 0x29, 0x4b, 0xd0, 0x00, 0x78, + 0x03, 0x28, 0x48, 0xda, 0x71, 0x7f, 0xf9, 0x20, 0x08, 0x40, 0x70, 0x77, 0xb0, 0x7f, 0x40, + 0x06, 0x40, 0x0e, 0xb0, 0x77, 0xf1, 0x7f, 0xfe, 0x20, 0x08, 0x40, 0xf0, 0x77, 0x70, 0xbd, + 0x01, 0x24, 0xa6, 0x46, 0x57, 0x48, 0xfe, 0x44, 0x00, 0x47, 0xa6, 0x46, 0x52, 0x49, 0xfe, + 0x44, 0x08, 0x47, 0x00, 0x28, 0x30, 0xd0, 0x5d, 0x48, 0x5c, 0x49, 0x08, 0x18, 0x28, 0x62, + 0x70, 0xbd, 0x00, 0x78, + + 0x01, 0x05, 0xff, 0xff, 0x00, 0x77, 0x08, 0x00, 0xfa, 0x11, 0x28, 0x28, 0xd1, 0xff, 0x20, + 0x71, 0x30, 0x80, 0x19, 0x01, 0x24, 0xa6, 0x46, 0x58, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x81, + 0x21, 0xc9, 0x00, 0x00, 0x88, 0x88, 0x42, 0x1b, 0xd1, 0x55, 0x49, 0xb0, 0x88, 0x88, 0x42, + 0x17, 0xd1, 0x3a, 0x20, 0x80, 0x5d, 0x00, 0x28, 0x03, 0xd1, 0x39, 0x21, 0x89, 0x5d, 0x0f, + 0x29, 0x0d, 0xd0, 0x0f, 0x28, 0x0d, 0xd1, 0x39, 0x20, 0x80, 0x5d, 0x00, 0x28, 0x09, 0xd1, + 0x00, 0x21, 0xb1, 0x80, 0x30, 0x1c, 0xa6, 0x46, 0x4b, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x70, + 0xbd, 0x00, 0x20, 0xb0, 0x80, 0x70, 0xbd, 0xbb, 0x2e, 0x05, 0x00, 0x71, 0x8d, 0x02, 0x00, + 0x70, 0xb5, 0x05, 0x1c, 0x6e, 0x69, 0x49, 0x48, 0x00, 0x78, 0x01, 0x28, 0x0e, 0xd1, 0x03, + 0x20, 0x42, 0x49, 0x01, 0x24, 0xa6, 0x46, 0x42, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x30, 0x1c, + 0xa6, 0x46, 0x40, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x40, 0x48, 0x1a, 0x30, 0x28, 0x62, 0x70, + 0xbd, 0xc0, 0x46, 0xa1, 0x52, 0x08, 0x00, 0x75, 0x59, 0x04, 0x00, 0xb5, 0x74, 0x08, 0x00, + 0xf1, 0x74, 0x08, 0x00, 0xd9, 0x5b, 0x18, 0x00, 0x61, 0x5c, 0x18, 0x00, 0x22, 0x50, 0x08, + 0x00, 0x20, 0x24, 0x08, 0x00, 0x10, 0x31, 0x19, 0x00, 0x4a, 0x75, 0x1a, 0x00, 0x59, 0xae, + 0x04, 0x00, 0xf0, 0xb5, 0xa4, 0xb0, 0x06, 0x1c, 0x31, 0x7c, 0x75, 0x69, 0xa8, 0x7c, 0x00, + 0x28, 0x03, 0xd1, 0x28, 0x68, 0xc0, 0x78, 0x00, 0x28, 0x25, 0xd1, 0x04, 0x29, 0x23, 0xd1, + 0x28, 0x68, 0x01, 0x78, 0x1b, 0x20, 0x01, 0x24, 0xa6, 0x46, 0x2b, 0x4a, 0xfe, 0x44, 0x10, + 0x47, 0x01, 0x06, 0x09, 0x0e, 0x68, 0x46, 0xa6, 0x46, 0x28, 0x4a, 0xfe, 0x44, 0x10, 0x47, + 0x12, 0x21, 0x4f, 0x19, + + 0x01, 0x05, 0xff, 0xff, 0xfa, 0x77, 0x08, 0x00, 0xfa, 0x01, 0x06, 0x09, 0x0e, 0x68, 0x46, + 0x3a, 0x1c, 0xa6, 0x46, 0x24, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xe8, 0x74, 0x15, 0x48, 0x39, + 0x1c, 0xa6, 0x46, 0x22, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x28, 0x01, 0xd0, 0x02, 0x20, + 0x30, 0x61, 0x24, 0xb0, 0xf0, 0xbd, 0x38, 0x24, 0x08, 0x00, 0x2b, 0x10, 0x08, 0x00, 0x94, + 0x1a, 0x08, 0x00, 0x21, 0x50, 0x08, 0x00, 0xcd, 0x05, 0x01, 0x00, 0xb4, 0x46, 0x08, 0x00, + 0xd1, 0x34, 0x02, 0x00, 0xed, 0x01, 0x01, 0x00, 0x4a, 0x0c, 0x1a, 0x00, 0x99, 0x16, 0x08, + 0x00, 0xcb, 0xbf, 0x00, 0x00, 0xd1, 0xbe, 0x00, 0x00, 0xbf, 0x00, 0x03, 0x00, 0x45, 0x60, + 0x08, 0x00, 0x89, 0x02, 0x00, 0x00, 0xb9, 0xd1, 0x01, 0x00, 0x08, 0x60, 0x08, 0x00, 0x22, + 0x0c, 0x00, 0x00, 0x4d, 0xa8, 0x00, 0x00, 0x55, 0xf3, 0x03, 0x00, 0x05, 0x04, 0x00, 0x00, + 0xb7, 0xc8, 0x01, 0x00, 0xab, 0x05, 0x00, 0x00, 0x39, 0xa7, 0x04, 0x00, 0x4d, 0xee, 0x03, + 0x00, 0x7d, 0xbb, 0x03, 0x00, 0xd2, 0x5f, 0x08, 0x00, 0xaf, 0xf3, 0x04, 0x00, 0xb9, 0x08, + 0x01, 0x00, 0x87, 0x2d, 0x01, 0x00, 0xad, 0xaf, 0x02, 0x00, 0xff, 0xb5, 0x68, 0x46, 0xfe, + 0xf0, 0xfb, 0xf9, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xff, 0xf7, 0x5b, 0xfd, 0xff, 0xbd, + 0xff, 0xb5, 0x68, 0x46, 0xff, 0xf7, 0x96, 0xfd, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xff, + 0xf7, 0x3b, 0xfa, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xff, 0xf7, 0x52, 0xfe, 0xff, 0xbd, + 0xff, 0xb5, 0x68, 0x46, 0xff, 0xf7, 0x43, 0xff, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xff, + 0xf7, 0x6c, 0xff, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xff, 0xf7, 0x8f, 0xfe, 0xff, 0xbd, + 0xff, 0xb5, 0x68, 0x46, + + 0x01, 0x05, 0xff, 0x83, 0xf4, 0x78, 0x08, 0x00, 0x7e, 0xff, 0xf7, 0xa6, 0xfe, 0xff, 0xbd, + 0xff, 0xb5, 0x68, 0x46, 0xff, 0xf7, 0x19, 0xfe, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xff, + 0xf7, 0xef, 0xf9, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xff, 0xf7, 0x3b, 0xfa, 0xff, 0xbd, + 0xff, 0xb5, 0x68, 0x46, 0xff, 0xf7, 0x7d, 0xfb, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xff, + 0xf7, 0xc9, 0xf9, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xff, 0xf7, 0xed, 0xfa, 0xff, 0xbd, + 0xff, 0xb5, 0x68, 0x46, 0xff, 0xf7, 0x97, 0xfb, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xff, + 0xf7, 0xaa, 0xfc, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xff, 0xf7, 0xbf, 0xfc, 0xff, 0xbd, + 0xff, 0xb5, 0x68, 0x46, 0xff, 0xf7, 0x8b, 0xfc, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xff, + 0xf7, 0xfb, 0xfb, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xff, 0xf7, 0x32, 0xfc, 0xff, 0xbd, + + + 0x01, 0x05, 0xff, 0x0d, 0x74, 0x7b, 0x08, 0x00, 0x08, 0x00, 0xb5, 0xf8, 0xf0, 0xf3, 0xfe, + 0x00, 0xbd, + + 0x01, 0x05, 0xff, 0x85, 0x80, 0x7b, 0x08, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x21, 0x5f, + 0x18, 0x00, 0x0f, 0x6b, 0x08, 0x00, 0x49, 0x6a, 0x08, 0x00, 0x27, 0x62, 0x08, 0x00, 0x87, + 0x62, 0x08, 0x00, 0xfb, 0x62, 0x08, 0x00, 0xe1, 0x5f, 0x08, 0x00, 0xeb, 0x6a, 0x08, 0x00, + 0x37, 0x63, 0x08, 0x00, 0x91, 0x63, 0x08, 0x00, 0x59, 0x64, 0x08, 0x00, 0xd9, 0x63, 0x08, + 0x00, 0xd1, 0x6b, 0x08, 0x00, 0x81, 0x6b, 0x08, 0x00, 0x43, 0x68, 0x08, 0x00, 0x6d, 0x68, + 0x08, 0x00, 0x99, 0x68, 0x08, 0x00, 0xaf, 0x69, 0x08, 0x00, 0x27, 0x68, 0x08, 0x00, 0x33, + 0x68, 0x08, 0x00, 0x5d, 0x5f, 0x18, 0x00, 0x29, 0x69, 0x08, 0x00, 0x71, 0x69, 0x08, 0x00, + 0xcf, 0x69, 0x08, 0x00, 0x0d, 0x6a, 0x08, 0x00, 0xd7, 0x61, 0x08, 0x00, 0xdd, 0x61, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x6a, 0x08, 0x00, 0x45, 0x65, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, + + 0x01, 0x05, 0xff, 0x85, 0x04, 0xf3, 0x1a, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xa8, 0x4e, + 0x02, 0x00, 0xb0, 0x4d, 0x02, 0x00, 0xe4, 0xc8, 0x01, 0x00, 0x62, 0x8c, 0x01, 0x00, 0xcc, + 0x22, 0x01, 0x00, 0x98, 0x9e, 0x01, 0x00, 0x5c, 0x24, 0x03, 0x00, 0x8c, 0xa1, 0x03, 0x00, + 0xc4, 0x62, 0x03, 0x00, 0x68, 0xd6, 0x02, 0x00, 0x92, 0x49, 0x02, 0x00, 0x64, 0x4c, 0x02, + 0x00, 0x8a, 0x8f, 0x02, 0x00, 0xc2, 0x95, 0x01, 0x00, 0x74, 0x31, 0x05, 0x00, 0xdc, 0x5f, + 0x03, 0x00, 0xbe, 0xd8, 0x01, 0x00, 0xd2, 0xa4, 0x03, 0x00, 0x14, 0xd8, 0x04, 0x00, 0x52, + 0x36, 0x00, 0x00, 0x78, 0x4f, 0x02, 0x00, 0x28, 0x32, 0x04, 0x00, 0x3a, 0xd5, 0x01, 0x00, + 0x0c, 0x97, 0x02, 0x00, 0x20, 0x9a, 0x01, 0x00, 0x4c, 0x9d, 0x04, 0x00, 0x4a, 0x36, 0x03, + 0x00, 0xff, 0xff, 0xff, 0xff, 0xe6, 0x2a, 0x02, 0x00, 0x12, 0xef, 0x02, 0x00, 0xff, 0xff, + 0xff, 0xff, + + 0x01, 0x05, 0xff, 0xff, 0x00, 0x00, 0x18, 0x00, 0xfa, 0xf0, 0xb5, 0xff, 0xb0, 0xfc, 0xb0, + 0x05, 0x1c, 0x00, 0x21, 0x01, 0x24, 0xa6, 0x46, 0xe1, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xeb, + 0x7b, 0xe0, 0x49, 0xfa, 0x2b, 0x12, 0xdc, 0xda, 0x1c, 0x92, 0x10, 0x05, 0xd0, 0x01, 0xae, + 0x07, 0x68, 0x37, 0x60, 0x04, 0x36, 0x01, 0x3a, 0xfa, 0xd1, 0x68, 0x46, 0x03, 0x70, 0x28, + 0x1c, 0x00, 0x22, 0x01, 0xab, 0xa6, 0x46, 0xd8, 0x4c, 0xfe, 0x44, 0x20, 0x47, 0x05, 0xe0, + 0x28, 0x1c, 0x1e, 0x22, 0xa6, 0x46, 0xd5, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x7f, 0xb0, 0x7c, + 0xb0, 0xf0, 0xbd, 0x7e, 0xb5, 0x0f, 0x20, 0x6d, 0x46, 0x28, 0x72, 0xd1, 0x48, 0x00, 0x78, + 0xe8, 0x80, 0x7d, 0x26, 0xf6, 0x00, 0x04, 0xe0, 0x0a, 0x20, 0xa6, 0x46, 0xce, 0x49, 0xfe, + 0x44, 0x08, 0x47, 0x68, 0x46, 0x01, 0x24, 0xa6, 0x46, 0xed, 0x49, 0xfe, 0x44, 0x08, 0x47, + 0x00, 0x28, 0x05, 0xd0, 0x30, 0x1c, 0x41, 0x1e, 0x0e, 0x04, 0x36, 0x0c, 0x00, 0x28, 0xec, + 0xd1, 0xa6, 0x46, 0xe8, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x7e, 0xbd, 0xfc, 0xb5, 0x06, 0x1c, + 0xf1, 0x7a, 0x00, 0x91, 0x01, 0x21, 0x0c, 0x1c, 0x8e, 0x46, 0xbb, 0x4a, 0xfe, 0x44, 0x10, + 0x47, 0x05, 0x1c, 0xb0, 0x7d, 0x01, 0x90, 0xde, 0x48, 0x00, 0x78, 0xe0, 0x4e, 0x00, 0x28, + 0x00, 0xd0, 0xc3, 0xe0, 0x69, 0x1c, 0x00, 0xd1, 0xc0, 0xe0, 0x30, 0x1c, 0x00, 0x78, 0x01, + 0x28, 0x02, 0xd1, 0x01, 0x20, 0xc0, 0x03, 0x01, 0xe0, 0x7d, 0x20, 0x00, 0x02, 0x68, 0x43, + 0xd8, 0x49, 0x08, 0x18, 0xd8, 0x49, 0xa6, 0x46, 0xd8, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x09, + 0x04, 0x09, 0x0c, 0xd8, 0x48, 0x04, 0x30, 0x06, 0x22, 0xa6, 0x46, 0xd5, 0x4b, 0xfe, 0x44, + 0x18, 0x47, 0xd4, 0x48, + + 0x01, 0x05, 0xff, 0xff, 0xfa, 0x00, 0x18, 0x00, 0xfa, 0x5a, 0x30, 0x00, 0x21, 0xa6, 0x46, + 0xd3, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x06, 0x1c, 0xd0, 0x48, 0x08, 0x21, 0xa6, 0x46, 0xd0, + 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x86, 0x19, 0x14, 0x2e, 0x00, 0xd8, 0x14, 0x26, 0xcd, 0x4f, + 0x38, 0x1c, 0x0a, 0x21, 0xa6, 0x46, 0xcc, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x06, 0x28, 0x43, + 0xd0, 0x00, 0x98, 0x01, 0x28, 0x40, 0xd0, 0xc0, 0x48, 0x00, 0x78, 0x01, 0x28, 0x02, 0xd1, + 0x01, 0x20, 0xc0, 0x03, 0x01, 0xe0, 0x7d, 0x20, 0x00, 0x02, 0x68, 0x43, 0xbc, 0x49, 0x08, + 0x18, 0xbc, 0x49, 0xa6, 0x46, 0xbc, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x88, 0x1b, 0x01, 0x04, + 0x09, 0x0c, 0x00, 0x26, 0x38, 0x1c, 0x32, 0x1c, 0xa6, 0x46, 0xb8, 0x4b, 0xfe, 0x44, 0x18, + 0x47, 0xf0, 0x48, 0x08, 0x21, 0xa6, 0x46, 0xb7, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x07, 0x1c, + 0xec, 0x48, 0x31, 0x1c, 0xa6, 0x46, 0xb4, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xb8, 0x42, 0x06, + 0xdd, 0xe8, 0x48, 0x31, 0x1c, 0xa6, 0x46, 0xb0, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x05, 0xe0, + 0xe5, 0x48, 0x08, 0x21, 0xa6, 0x46, 0xac, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x07, 0x1c, 0xa9, + 0x48, 0x31, 0x1c, 0xa6, 0x46, 0xa9, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x3e, 0x18, 0x08, 0x36, + 0x2c, 0xe0, 0x38, 0x1c, 0x14, 0x21, 0x00, 0x22, 0xa6, 0x46, 0xa2, 0x4b, 0xfe, 0x44, 0x18, + 0x47, 0xd9, 0x48, 0x08, 0x21, 0xa6, 0x46, 0xa1, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x07, 0x1c, + 0xd6, 0x48, 0x00, 0x21, 0xa6, 0x46, 0x9d, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xb8, 0x42, 0x06, + 0xdd, 0xd2, 0x48, 0x00, 0x21, 0xa6, 0x46, 0x99, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x05, 0xe0, + 0xce, 0x48, 0x08, 0x21, + + 0x01, 0x05, 0xff, 0xff, 0xf4, 0x01, 0x18, 0x00, 0xfa, 0xa6, 0x46, 0x96, 0x4a, 0xfe, 0x44, + 0x10, 0x47, 0x07, 0x1c, 0x93, 0x48, 0x00, 0x21, 0xa6, 0x46, 0x92, 0x4a, 0xfe, 0x44, 0x10, + 0x47, 0x38, 0x18, 0x36, 0x18, 0x1e, 0x36, 0x89, 0x48, 0x00, 0x78, 0x01, 0x28, 0x02, 0xd1, + 0x01, 0x20, 0xc0, 0x03, 0x01, 0xe0, 0x7d, 0x20, 0x00, 0x02, 0x68, 0x43, 0x85, 0x49, 0x08, + 0x18, 0x85, 0x49, 0xa6, 0x46, 0x85, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x70, 0x18, 0x01, 0x04, + 0x09, 0x0c, 0xbd, 0x48, 0x00, 0x22, 0xa6, 0x46, 0xbd, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x93, + 0xe0, 0x01, 0x28, 0x00, 0xd0, 0xa1, 0xe0, 0x69, 0x1c, 0x00, 0xd1, 0x8f, 0xe0, 0x7e, 0x48, + 0x7e, 0x30, 0x00, 0x21, 0xa6, 0x46, 0xeb, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x07, 0x1c, 0x7a, + 0x48, 0x82, 0x30, 0x00, 0x21, 0xa6, 0x46, 0xe6, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xc7, 0x19, + 0x76, 0x48, 0x02, 0x38, 0x00, 0x21, 0xa6, 0x46, 0xe4, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xe3, + 0x49, 0x01, 0x28, 0x34, 0xd0, 0x00, 0x98, 0x01, 0x28, 0x31, 0xd0, 0x30, 0x78, 0x01, 0x28, + 0x02, 0xd1, 0x01, 0x20, 0xc0, 0x03, 0x01, 0xe0, 0x7d, 0x20, 0x00, 0x02, 0x68, 0x43, 0x67, + 0x49, 0x08, 0x18, 0x67, 0x49, 0xa6, 0x46, 0x67, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xc8, 0x1b, + 0x01, 0x04, 0x09, 0x0c, 0xd7, 0x48, 0xa6, 0x46, 0xd7, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x30, + 0x78, 0x01, 0x28, 0x02, 0xd1, 0x01, 0x20, 0xc0, 0x03, 0x01, 0xe0, 0x7d, 0x20, 0x00, 0x02, + 0x68, 0x43, 0x5b, 0x49, 0x08, 0x18, 0x5b, 0x49, 0xa6, 0x46, 0x5b, 0x4a, 0xfe, 0x44, 0x10, + 0x47, 0x48, 0x1d, 0x01, 0x04, 0x09, 0x0c, 0x93, 0x48, 0x00, 0x22, 0xa6, 0x46, 0x92, 0x4b, + 0xfe, 0x44, 0x18, 0x47, + + 0x01, 0x05, 0xff, 0xff, 0xee, 0x02, 0x18, 0x00, 0xfa, 0x3e, 0xe0, 0x08, 0x1c, 0x00, 0x21, + 0xa6, 0x46, 0xc7, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x53, 0x48, 0x90, 0x30, 0x00, 0x21, 0xa6, + 0x46, 0xc3, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x30, 0x78, 0x01, 0x28, 0x02, 0xd1, 0x01, 0x20, + 0xc0, 0x03, 0x01, 0xe0, 0x7d, 0x20, 0x00, 0x02, 0x68, 0x43, 0x47, 0x49, 0x08, 0x18, 0x47, + 0x49, 0xa6, 0x46, 0x47, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x09, 0x04, 0x09, 0x0c, 0x47, 0x48, + 0x8e, 0x30, 0xa6, 0x46, 0xb7, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x30, 0x78, 0x01, 0x28, 0x02, + 0xd1, 0x01, 0x20, 0xc0, 0x03, 0x01, 0xe0, 0x7d, 0x20, 0x00, 0x02, 0x68, 0x43, 0x3b, 0x49, + 0x08, 0x18, 0x3b, 0x49, 0xa6, 0x46, 0x3b, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x78, 0x18, 0x05, + 0x30, 0x01, 0x04, 0x09, 0x0c, 0x73, 0x48, 0x00, 0x22, 0xa6, 0x46, 0x72, 0x4b, 0xfe, 0x44, + 0x18, 0x47, 0x2f, 0x48, 0x00, 0x78, 0x01, 0x28, 0x0c, 0xd1, 0x00, 0x98, 0x00, 0x28, 0x09, + 0xd0, 0x01, 0x98, 0xff, 0x28, 0x06, 0xd1, 0x32, 0x48, 0x04, 0x21, 0x08, 0x22, 0xa6, 0x46, + 0xda, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xfc, 0xbd, 0xc0, 0x46, 0x91, 0x24, 0x00, 0x00, 0x7f, + 0xfd, 0x00, 0x00, 0x29, 0x42, 0x05, 0x00, 0xb5, 0x41, 0x05, 0x00, 0x7e, 0x51, 0x08, 0x00, + 0x3f, 0x4a, 0x04, 0x00, 0x70, 0xb5, 0x45, 0x7b, 0x86, 0x7b, 0x1e, 0x49, 0x09, 0x78, 0x01, + 0x29, 0x37, 0xd1, 0x00, 0x7b, 0x40, 0x1e, 0x07, 0xd0, 0x01, 0x38, 0x03, 0xd0, 0x01, 0x38, + 0x30, 0xd1, 0x00, 0x21, 0x02, 0xe0, 0x02, 0x21, 0x00, 0xe0, 0x03, 0x21, 0x1e, 0x48, 0x32, + 0x30, 0x07, 0x22, 0x01, 0x24, 0xa6, 0x46, 0xc7, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xc5, 0x48, + 0x01, 0x2d, 0x11, 0xd0, + + 0x01, 0x05, 0xff, 0xff, 0xe8, 0x03, 0x18, 0x00, 0xfa, 0x00, 0x2d, 0x08, 0xd0, 0x02, 0x2d, + 0x1c, 0xd1, 0x00, 0x21, 0x0e, 0x22, 0xa6, 0x46, 0xc1, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x70, + 0xbd, 0x03, 0x21, 0x0e, 0x22, 0xa6, 0x46, 0xbd, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x70, 0xbd, + 0x00, 0x2e, 0x06, 0xd1, 0x02, 0x21, 0x0e, 0x22, 0xa6, 0x46, 0xb9, 0x4b, 0xfe, 0x44, 0x18, + 0x47, 0x70, 0xbd, 0x21, 0x1c, 0x0e, 0x22, 0xa6, 0x46, 0xb5, 0x4b, 0xfe, 0x44, 0x18, 0x47, + 0x70, 0xbd, 0xa2, 0x52, 0x08, 0x00, 0xe7, 0x63, 0x04, 0x00, 0x23, 0xda, 0x03, 0x00, 0x0b, + 0x53, 0x08, 0x00, 0x3f, 0x42, 0x0f, 0x00, 0x40, 0x42, 0x0f, 0x00, 0x2d, 0x6a, 0x05, 0x00, + 0xbd, 0xac, 0x04, 0x00, 0x16, 0x74, 0x1a, 0x00, 0xd1, 0xae, 0x04, 0x00, 0x42, 0x74, 0x1a, + 0x00, 0x81, 0xae, 0x04, 0x00, 0xf0, 0xb5, 0xdc, 0x49, 0x09, 0x78, 0x01, 0x29, 0x60, 0xd1, + 0xc2, 0x7a, 0xd4, 0x49, 0x0a, 0x70, 0xd4, 0x49, 0x03, 0x7b, 0x0b, 0x70, 0x40, 0x7b, 0xd3, + 0x4b, 0x18, 0x70, 0x00, 0x2a, 0x55, 0xd1, 0x9e, 0x4d, 0x2f, 0x1c, 0xb4, 0x3f, 0xd1, 0x4e, + 0x01, 0x24, 0xa6, 0x46, 0xd0, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x39, 0x88, 0x01, 0x40, 0x48, + 0x08, 0x05, 0xd0, 0x30, 0x1c, 0x41, 0x1e, 0x0e, 0x04, 0x36, 0x0c, 0x00, 0x28, 0xf0, 0xd1, + 0xa6, 0x46, 0xc9, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x39, 0x88, 0x01, 0x40, 0x48, 0x08, 0x04, + 0xd0, 0x58, 0x20, 0xa6, 0x46, 0xe8, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x00, 0x26, 0x0c, 0x20, + 0x02, 0x1c, 0xe6, 0x48, 0x31, 0x1c, 0xa6, 0x46, 0xe5, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x08, + 0x20, 0x02, 0x1c, 0x28, 0x1c, 0x28, 0x38, 0x31, 0x1c, 0xa6, 0x46, 0xe2, 0x4b, 0xfe, 0x44, + 0x18, 0x47, 0x04, 0x3d, + + 0x01, 0x05, 0xff, 0xff, 0xe2, 0x04, 0x18, 0x00, 0xfa, 0x28, 0x1c, 0x21, 0x1c, 0x0c, 0x22, + 0xa6, 0x46, 0x84, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xde, 0x48, 0x08, 0x30, 0x08, 0x21, 0xa6, + 0x46, 0xdb, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x14, 0x20, 0xa6, 0x46, 0xdb, 0x49, 0xfe, 0x44, + 0x08, 0x47, 0xd8, 0x48, 0x07, 0x21, 0xa6, 0x46, 0x3f, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xaa, + 0x49, 0x08, 0x70, 0x28, 0x1c, 0x31, 0x1c, 0x0c, 0x22, 0xa6, 0x46, 0x76, 0x4b, 0xfe, 0x44, + 0x18, 0x47, 0x3e, 0x80, 0xf0, 0xbd, 0xc0, 0x46, 0x44, 0x74, 0x1a, 0x00, 0x04, 0x60, 0x1a, + 0x00, 0xf3, 0xac, 0x04, 0x00, 0xf0, 0xb5, 0x85, 0xb0, 0x6c, 0x46, 0x0b, 0x21, 0x09, 0x18, + 0x68, 0x46, 0x14, 0x22, 0x01, 0x26, 0xb6, 0x46, 0xca, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x20, + 0x78, 0x01, 0x28, 0x01, 0xd0, 0x02, 0x28, 0x12, 0xd1, 0x9a, 0x48, 0x00, 0x78, 0x04, 0xab, + 0x00, 0x22, 0x99, 0x56, 0x81, 0x42, 0x0b, 0xdd, 0x99, 0x56, 0x08, 0x1a, 0x03, 0x06, 0x1b, + 0x0e, 0x10, 0x21, 0x68, 0x46, 0x40, 0x1c, 0x85, 0x56, 0xed, 0x1a, 0x05, 0x70, 0x01, 0x39, + 0xf9, 0xd1, 0x21, 0x78, 0xbd, 0x48, 0x00, 0x29, 0x30, 0xd0, 0x01, 0x39, 0x26, 0xd0, 0x01, + 0x39, 0x1d, 0xd0, 0x01, 0x39, 0x31, 0xd1, 0x67, 0x1c, 0x05, 0x1c, 0x78, 0x3d, 0x58, 0x20, + 0x40, 0x19, 0x39, 0x1c, 0x10, 0x22, 0xb6, 0x46, 0xb3, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x68, + 0x20, 0x40, 0x19, 0x39, 0x1c, 0x10, 0x22, 0xb6, 0x46, 0xaf, 0x4b, 0xfe, 0x44, 0x18, 0x47, + 0x78, 0x20, 0x40, 0x19, 0x39, 0x1c, 0x10, 0x22, 0xb6, 0x46, 0xab, 0x4b, 0xfe, 0x44, 0x18, + 0x47, 0x15, 0xe0, 0x61, 0x1c, 0x10, 0x22, 0xb6, 0x46, 0xa8, 0x4b, 0xfe, 0x44, 0x18, 0x47, + 0x0e, 0xe0, 0x61, 0x1c, + + 0x01, 0x05, 0xff, 0xff, 0xdc, 0x05, 0x18, 0x00, 0xfa, 0x10, 0x38, 0x10, 0x22, 0xb6, 0x46, + 0xa4, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x06, 0xe0, 0x61, 0x1c, 0x20, 0x38, 0x10, 0x22, 0xb6, + 0x46, 0xa0, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x60, 0x8a, 0xa0, 0x49, 0x08, 0x80, 0x05, 0xb0, + 0xf0, 0xbd, 0xc0, 0x46, 0xdb, 0xae, 0x04, 0x00, 0xf9, 0xae, 0x04, 0x00, 0x59, 0xae, 0x04, + 0x00, 0x92, 0x74, 0x1a, 0x00, 0xe9, 0xac, 0x04, 0x00, 0xf8, 0xb5, 0x04, 0x1c, 0x27, 0x7b, + 0xe0, 0x7a, 0x97, 0x49, 0x09, 0x78, 0x81, 0x42, 0x3f, 0xd1, 0x93, 0x48, 0x24, 0x38, 0x00, + 0x88, 0x61, 0x7b, 0x81, 0x42, 0x39, 0xd1, 0xa0, 0x7b, 0x00, 0x90, 0x93, 0x48, 0x05, 0x1c, + 0x02, 0x3d, 0x28, 0x1c, 0x14, 0x21, 0x01, 0x26, 0xb6, 0x46, 0x8f, 0x4a, 0xfe, 0x44, 0x10, + 0x47, 0x8e, 0x48, 0x0b, 0x21, 0x00, 0x22, 0xb6, 0x46, 0x82, 0x4b, 0xfe, 0x44, 0x18, 0x47, + 0x28, 0x1c, 0x14, 0x21, 0xb6, 0x46, 0x81, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x88, 0x4d, 0x06, + 0x3d, 0xb8, 0x01, 0xe8, 0x82, 0x2f, 0x8a, 0x19, 0x20, 0x28, 0x82, 0x02, 0x20, 0xb6, 0x46, + 0x7d, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x00, 0x98, 0x00, 0x28, 0x10, 0xd0, 0x00, 0x98, 0xc0, + 0x1c, 0x82, 0x10, 0xa1, 0x7c, 0xe0, 0x7c, 0x00, 0x02, 0x08, 0x43, 0x21, 0x7d, 0x09, 0x04, + 0x01, 0x43, 0x60, 0x7d, 0x00, 0x06, 0x08, 0x43, 0x28, 0x60, 0x04, 0x34, 0x01, 0x3a, 0xf1, + 0xd1, 0x2f, 0x82, 0xf8, 0xbd, 0x30, 0xb5, 0xc5, 0x7a, 0x01, 0x24, 0xa6, 0x46, 0x76, 0x49, + 0xfe, 0x44, 0x08, 0x47, 0x75, 0x48, 0x01, 0x78, 0x75, 0x48, 0x00, 0x2d, 0x0d, 0xd0, 0x01, + 0x2d, 0x01, 0xd0, 0x02, 0x2d, 0x12, 0xd1, 0x0c, 0x22, 0x4a, 0x43, 0x72, 0x49, 0x89, 0x18, + 0x0c, 0x22, 0xa6, 0x46, + + 0x01, 0x05, 0xff, 0xff, 0xd6, 0x06, 0x18, 0x00, 0xfa, 0x67, 0x4b, 0xfe, 0x44, 0x18, 0x47, + 0x30, 0xbd, 0x0c, 0x22, 0x4a, 0x43, 0x6e, 0x49, 0x89, 0x18, 0x0c, 0x22, 0xa6, 0x46, 0x62, + 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x30, 0xbd, 0xc0, 0x46, 0x1f, 0xac, 0x04, 0x00, 0xb4, 0x7c, + 0x1a, 0x00, 0x65, 0xab, 0x04, 0x00, 0xf0, 0xb5, 0x07, 0x1c, 0x01, 0x24, 0xa6, 0x46, 0x65, + 0x49, 0xfe, 0x44, 0x08, 0x47, 0x7e, 0x7b, 0x2f, 0x4d, 0x01, 0x3d, 0x68, 0x78, 0x71, 0x08, + 0x30, 0xd1, 0xb9, 0x7b, 0x00, 0x28, 0x17, 0xd1, 0x01, 0x29, 0x0d, 0xd1, 0x61, 0x48, 0x0a, + 0x38, 0x00, 0x21, 0x04, 0x22, 0xa6, 0x46, 0x4c, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x20, 0x1c, + 0x21, 0x1c, 0x8e, 0x46, 0x5a, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x59, 0x48, 0x68, 0x38, 0x0a, + 0x21, 0xa6, 0x46, 0x47, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x14, 0xe0, 0x01, 0x28, 0x14, 0xd1, + 0x41, 0x48, 0x00, 0x21, 0x04, 0x22, 0xa6, 0x46, 0x40, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x20, + 0x1c, 0x05, 0x21, 0xa6, 0x46, 0x4e, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x4e, 0x48, 0x00, 0x21, + 0xa6, 0x46, 0x43, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x68, 0x78, 0xb9, 0x7b, 0x00, 0x28, 0x1a, + 0xd1, 0x01, 0x29, 0x18, 0xd1, 0x02, 0x2e, 0x05, 0xd0, 0x03, 0x2e, 0x03, 0xd0, 0x04, 0x2e, + 0x01, 0xd0, 0x01, 0x2e, 0x10, 0xd1, 0xf8, 0x7b, 0x00, 0x28, 0x0d, 0xd1, 0x42, 0x48, 0x54, + 0x38, 0x00, 0x21, 0x0a, 0x1c, 0xa6, 0x46, 0x42, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x3f, 0x48, + 0x21, 0x1c, 0x8e, 0x46, 0x34, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xf0, 0xbd, 0xc0, 0x46, 0xd4, + 0x5f, 0x08, 0x00, 0xd5, 0x5f, 0x08, 0x00, 0xd3, 0x5f, 0x08, 0x00, 0xff, 0x7f, 0x00, 0x00, + 0x1d, 0x05, 0x04, 0x00, + + 0x01, 0x05, 0xff, 0xff, 0xd0, 0x07, 0x18, 0x00, 0xfa, 0xa2, 0x52, 0x08, 0x00, 0x00, 0x20, + 0x4d, 0x49, 0x08, 0x70, 0x36, 0x49, 0x08, 0x1c, 0xbc, 0x38, 0x84, 0x22, 0x12, 0x18, 0x34, + 0x4b, 0x43, 0x62, 0x34, 0x4b, 0xd3, 0x63, 0x34, 0x4b, 0x03, 0x61, 0x34, 0x4b, 0xcb, 0x67, + 0x34, 0x4b, 0x53, 0x67, 0x34, 0x4b, 0x43, 0x61, 0x34, 0x4b, 0x93, 0x67, 0x34, 0x4b, 0xcb, + 0x66, 0x34, 0x49, 0x81, 0x65, 0x34, 0x49, 0x81, 0x62, 0x34, 0x49, 0xd1, 0x67, 0x34, 0x49, + 0x51, 0x65, 0x34, 0x49, 0x01, 0x60, 0x34, 0x49, 0xd1, 0x60, 0x34, 0x49, 0x01, 0x65, 0x34, + 0x49, 0xc1, 0x64, 0x34, 0x49, 0x11, 0x60, 0x34, 0x49, 0x11, 0x62, 0x34, 0x49, 0xc1, 0x66, + 0x37, 0x49, 0x09, 0x78, 0x01, 0x29, 0x01, 0xd1, 0x32, 0x49, 0x81, 0x64, 0x32, 0x49, 0x81, + 0x61, 0x34, 0x48, 0x01, 0x78, 0x01, 0x29, 0x05, 0xd1, 0x33, 0x21, 0x40, 0x68, 0x0a, 0x5c, + 0x12, 0x07, 0x12, 0x0f, 0x0a, 0x54, 0xf7, 0x46, 0xc0, 0x46, 0x1b, 0xa7, 0x04, 0x00, 0x16, + 0xf6, 0x1a, 0x00, 0xb9, 0xab, 0x04, 0x00, 0x7b, 0xab, 0x04, 0x00, 0xfd, 0xaa, 0x04, 0x00, + 0x00, 0xf0, 0x1a, 0x00, 0x3f, 0x4a, 0x04, 0x00, 0xc1, 0x78, 0x05, 0x00, 0x38, 0x31, 0x19, + 0x00, 0x3c, 0x20, 0x08, 0x00, 0x7d, 0x51, 0x08, 0x00, 0x15, 0xab, 0x04, 0x00, 0x06, 0x02, + 0x19, 0x00, 0x01, 0x71, 0x00, 0x00, 0xba, 0x52, 0x08, 0x00, 0x48, 0x31, 0x19, 0x00, 0x3c, + 0x09, 0x18, 0x00, 0x18, 0x09, 0x18, 0x00, 0x1d, 0x50, 0x00, 0x00, 0x85, 0x67, 0x05, 0x00, + 0x04, 0x7d, 0x1a, 0x00, 0x1e, 0xf6, 0x1a, 0x00, 0x65, 0xab, 0x04, 0x00, 0x80, 0x4e, 0x08, + 0x00, 0x05, 0x79, 0x08, 0x00, 0x23, 0x79, 0x08, 0x00, 0x2d, 0x79, 0x08, 0x00, 0x19, 0x79, + 0x08, 0x00, 0x0f, 0x79, + + 0x01, 0x05, 0xff, 0xff, 0xca, 0x08, 0x18, 0x00, 0xfa, 0x08, 0x00, 0x37, 0x79, 0x08, 0x00, + 0x5f, 0x79, 0x08, 0x00, 0x69, 0x79, 0x08, 0x00, 0x55, 0x79, 0x08, 0x00, 0x41, 0x79, 0x08, + 0x00, 0x4b, 0x79, 0x08, 0x00, 0xfb, 0x78, 0x08, 0x00, 0xb5, 0x78, 0x08, 0x00, 0xc9, 0x78, + 0x08, 0x00, 0xe7, 0x78, 0x08, 0x00, 0xbf, 0x78, 0x08, 0x00, 0xf1, 0x78, 0x08, 0x00, 0xd3, + 0x78, 0x08, 0x00, 0xdd, 0x78, 0x08, 0x00, 0xa1, 0x78, 0x08, 0x00, 0xab, 0x78, 0x08, 0x00, + 0x22, 0x50, 0x08, 0x00, 0xa2, 0x52, 0x08, 0x00, 0x34, 0x24, 0x08, 0x00, 0x00, 0x10, 0x80, + 0x0f, 0x40, 0x0f, 0x00, 0x0f, 0x80, 0x0e, 0xc0, 0x0d, 0xc0, 0x0f, 0x40, 0x0f, 0x00, 0x0f, + 0xc0, 0x0e, 0x40, 0x0e, 0xc0, 0x0d, 0x40, 0x10, 0xc0, 0x0f, 0x80, 0x0f, 0x40, 0x0f, 0xc0, + 0x0e, 0x00, 0x0e, 0x80, 0x0e, 0x40, 0x0e, 0xc0, 0x0d, 0x80, 0x0d, 0x00, 0x0d, 0x40, 0x0c, + 0xc0, 0x0d, 0x80, 0x0d, 0x40, 0x0d, 0xc0, 0x0c, 0xc0, 0x0c, 0x40, 0x0c, 0x00, 0x0e, 0x00, + 0x0e, 0x80, 0x0d, 0x80, 0x0d, 0x00, 0x0d, 0x80, 0x0c, 0xf0, 0xb5, 0x91, 0xb0, 0xd9, 0x48, + 0x06, 0xc8, 0x68, 0x46, 0x0c, 0x90, 0x06, 0xc0, 0xd8, 0x48, 0x06, 0xc8, 0x02, 0xa8, 0x06, + 0xc0, 0xd7, 0x48, 0x06, 0xc8, 0x04, 0xa8, 0x06, 0xc0, 0xd6, 0x48, 0x06, 0xc8, 0x06, 0xa8, + 0x06, 0xc0, 0xd5, 0x48, 0x06, 0xc8, 0x08, 0xa8, 0x06, 0xc0, 0xd4, 0x48, 0x06, 0xc8, 0x0a, + 0xa8, 0x06, 0xc0, 0xd3, 0x4e, 0x02, 0x20, 0x30, 0x70, 0x1f, 0x23, 0x73, 0x70, 0xb3, 0x70, + 0x7b, 0x20, 0xf0, 0x70, 0x03, 0x20, 0x02, 0x22, 0xcf, 0x4f, 0x39, 0x1c, 0x01, 0x39, 0x01, + 0x24, 0xa6, 0x46, 0xf1, 0x4d, 0xfe, 0x44, 0x28, 0x47, 0xb2, 0x78, 0xf3, 0x78, 0x03, 0x20, + 0x39, 0x1c, 0xa6, 0x46, + + 0x01, 0x05, 0xff, 0xff, 0xc4, 0x09, 0x18, 0x00, 0xfa, 0xed, 0x4d, 0xfe, 0x44, 0x28, 0x47, + 0x03, 0x20, 0x39, 0x1c, 0x01, 0x31, 0xa6, 0x46, 0xeb, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xa6, + 0x46, 0xeb, 0x48, 0xfe, 0x44, 0x00, 0x47, 0xe8, 0x49, 0x08, 0x60, 0xea, 0x48, 0xe9, 0x49, + 0x08, 0x80, 0xea, 0x48, 0x04, 0x70, 0xff, 0x20, 0xe9, 0x49, 0x08, 0x70, 0x00, 0x25, 0xe9, + 0x48, 0x05, 0x70, 0xa6, 0x46, 0xe8, 0x48, 0xfe, 0x44, 0x00, 0x47, 0xe8, 0x4a, 0x28, 0x1c, + 0x01, 0x1c, 0x13, 0x68, 0x00, 0x2b, 0x02, 0xd0, 0x23, 0x1c, 0x8b, 0x40, 0x18, 0x43, 0x04, + 0x32, 0x01, 0x31, 0x20, 0x29, 0xf5, 0xd3, 0xe7, 0x4f, 0x39, 0x1c, 0x84, 0x31, 0x08, 0x60, + 0xe0, 0x48, 0x05, 0x60, 0xe5, 0x48, 0x40, 0x78, 0x01, 0x28, 0x08, 0xd1, 0xf0, 0x78, 0x40, + 0x06, 0x41, 0x0e, 0x1d, 0x20, 0x00, 0x02, 0x08, 0x43, 0xdb, 0x49, 0x09, 0x68, 0x88, 0x86, + 0xdb, 0x48, 0x06, 0x1c, 0xb4, 0x72, 0xda, 0x48, 0x01, 0x78, 0xda, 0x48, 0x2a, 0x1c, 0xa6, + 0x46, 0xf0, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xf0, 0x48, 0x48, 0x30, 0x0c, 0x21, 0xa6, 0x46, + 0xed, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xed, 0x48, 0x04, 0x21, 0xa6, 0x46, 0xea, 0x4a, 0xfe, + 0x44, 0x10, 0x47, 0x38, 0x1c, 0x05, 0x21, 0xa6, 0x46, 0xe7, 0x4a, 0xfe, 0x44, 0x10, 0x47, + 0xe9, 0x48, 0x4c, 0x38, 0x02, 0x21, 0xa6, 0x46, 0xe4, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xff, + 0x20, 0x44, 0x30, 0x85, 0x55, 0xf2, 0x20, 0x80, 0x5d, 0xe2, 0x4e, 0x64, 0x28, 0x08, 0xda, + 0xe1, 0x48, 0x09, 0x21, 0xa6, 0x46, 0xe1, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x06, 0x00, + 0x0e, 0x01, 0xe0, 0x80, 0x07, 0x80, 0x0f, 0xb0, 0x75, 0x0d, 0x96, 0xdd, 0x49, 0x48, 0x70, + 0xdf, 0x4f, 0x3e, 0x1c, + + 0x01, 0x05, 0xff, 0xff, 0xbe, 0x0a, 0x18, 0x00, 0xfa, 0xaa, 0x3e, 0xa5, 0x21, 0x88, 0x55, + 0xa6, 0x46, 0xda, 0x48, 0xfe, 0x44, 0x00, 0x47, 0xa6, 0x46, 0xd9, 0x48, 0xfe, 0x44, 0x00, + 0x47, 0x05, 0x20, 0x01, 0x1c, 0xd2, 0x48, 0xa6, 0x46, 0xd7, 0x4a, 0xfe, 0x44, 0x10, 0x47, + 0x01, 0x1c, 0x38, 0x1c, 0x2a, 0x1c, 0xa6, 0x46, 0xd5, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xd7, + 0x48, 0x07, 0x1c, 0x02, 0x3f, 0x38, 0x1c, 0x05, 0x21, 0xa6, 0x46, 0xd1, 0x4a, 0xfe, 0x44, + 0x10, 0x47, 0x38, 0x1c, 0x08, 0x21, 0xa6, 0x46, 0xce, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xce, + 0x4f, 0x38, 0x1c, 0x04, 0x21, 0x2a, 0x1c, 0xa6, 0x46, 0xc9, 0x4b, 0xfe, 0x44, 0x18, 0x47, + 0x04, 0x20, 0x02, 0x1c, 0x38, 0x1c, 0x11, 0x1c, 0xa6, 0x46, 0xc5, 0x4b, 0xfe, 0x44, 0x18, + 0x47, 0xc7, 0x48, 0x04, 0x70, 0xbc, 0x48, 0x0a, 0x30, 0x06, 0x21, 0x2a, 0x1c, 0xa6, 0x46, + 0xc0, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xf2, 0x48, 0x1b, 0x21, 0xc1, 0x81, 0xc1, 0x48, 0x02, + 0x30, 0x02, 0x21, 0x07, 0x22, 0xa6, 0x46, 0xef, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x8d, 0x4f, + 0x7f, 0x08, 0x0e, 0x96, 0xb3, 0x4e, 0xec, 0x48, 0x80, 0x78, 0x00, 0x28, 0x32, 0xd1, 0x13, + 0x21, 0xe8, 0x48, 0xc1, 0x81, 0x94, 0x48, 0x40, 0x78, 0x00, 0x28, 0x16, 0xd0, 0x01, 0x28, + 0x29, 0xd1, 0xb5, 0x48, 0x04, 0x21, 0xa6, 0x46, 0xa5, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xb2, + 0x48, 0x08, 0x38, 0x29, 0x1c, 0x0a, 0x1c, 0xa6, 0x46, 0xab, 0x4b, 0xfe, 0x44, 0x18, 0x47, + 0x20, 0x1c, 0x04, 0x21, 0xa6, 0x46, 0xde, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x14, 0xe0, 0x03, + 0x20, 0x01, 0x1c, 0xa9, 0x48, 0xa6, 0x46, 0x9a, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xa7, 0x48, + 0x0a, 0x38, 0x29, 0x1c, + + 0x01, 0x05, 0xff, 0xff, 0xb8, 0x0b, 0x18, 0x00, 0xfa, 0x0c, 0x22, 0xa6, 0x46, 0xa0, 0x4b, + 0xfe, 0x44, 0x18, 0x47, 0x20, 0x1c, 0x03, 0x21, 0xa6, 0x46, 0xd3, 0x4a, 0xfe, 0x44, 0x10, + 0x47, 0xd3, 0x49, 0x08, 0x1c, 0x0f, 0x91, 0x40, 0x38, 0x0f, 0x90, 0x0a, 0x9a, 0xc2, 0x63, + 0x0c, 0x98, 0x82, 0x8d, 0x0a, 0x80, 0x21, 0x1c, 0xce, 0x48, 0x98, 0x30, 0xa6, 0x46, 0x8b, + 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xcb, 0x48, 0x00, 0x99, 0x01, 0x60, 0x01, 0x99, 0x41, 0x60, + 0x02, 0x99, 0x01, 0x62, 0x03, 0x99, 0x41, 0x62, 0x04, 0x99, 0x01, 0x63, 0x05, 0x99, 0x41, + 0x63, 0x06, 0x99, 0x81, 0x64, 0x07, 0x99, 0xc1, 0x64, 0x08, 0x99, 0x01, 0x66, 0x09, 0x99, + 0x41, 0x66, 0x9c, 0x30, 0x21, 0x1c, 0xa6, 0x46, 0x7d, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x66, + 0x48, 0x40, 0x78, 0xf3, 0x49, 0x00, 0x28, 0x5d, 0xd1, 0x08, 0x27, 0x08, 0x1c, 0x4e, 0x38, + 0x07, 0x21, 0x3a, 0x1c, 0xa6, 0x46, 0xed, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x70, 0x78, 0x00, + 0x28, 0x10, 0xd0, 0x01, 0x28, 0x0e, 0xd0, 0xea, 0x48, 0x0d, 0x21, 0x2a, 0x1c, 0xa6, 0x46, + 0x6f, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xe7, 0x48, 0x18, 0x21, 0x3a, 0x1c, 0xa6, 0x46, 0x6c, + 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x0e, 0xe0, 0xe3, 0x4f, 0x38, 0x1c, 0x10, 0x21, 0x2a, 0x1c, + 0xa6, 0x46, 0x67, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x38, 0x1c, 0x1c, 0x21, 0x08, 0x22, 0xa6, + 0x46, 0x64, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x70, 0x78, 0x00, 0x28, 0x0d, 0xd1, 0x0c, 0x20, + 0x80, 0x57, 0x00, 0x28, 0x09, 0xdd, 0x32, 0x28, 0x07, 0xda, 0xd7, 0x48, 0x42, 0x38, 0x16, + 0x21, 0x2a, 0x1c, 0xa6, 0x46, 0x5b, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xd3, 0x48, 0x04, 0x30, + 0x05, 0x21, 0x08, 0x22, + + 0x01, 0x05, 0xff, 0xff, 0xb2, 0x0c, 0x18, 0x00, 0xfa, 0xa6, 0x46, 0xda, 0x4b, 0xfe, 0x44, + 0x18, 0x47, 0xcf, 0x48, 0x44, 0x38, 0x04, 0x21, 0x2a, 0x1c, 0xa6, 0x46, 0xcb, 0x4b, 0xfe, + 0x44, 0x18, 0x47, 0x79, 0xe1, 0x9c, 0x5f, 0x08, 0x00, 0xa4, 0x5f, 0x08, 0x00, 0xac, 0x5f, + 0x08, 0x00, 0xb4, 0x5f, 0x08, 0x00, 0xbc, 0x5f, 0x08, 0x00, 0xc4, 0x5f, 0x08, 0x00, 0x7c, + 0x7b, 0x08, 0x00, 0xc6, 0x05, 0x00, 0x00, 0x01, 0x28, 0x00, 0xd0, 0x68, 0xe1, 0xee, 0x48, + 0x06, 0x1c, 0x88, 0x3e, 0xa6, 0x46, 0xe8, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x31, 0x88, 0x01, + 0x40, 0x48, 0x08, 0x05, 0xd0, 0x38, 0x1c, 0x41, 0x1e, 0x0f, 0x04, 0x3f, 0x0c, 0x00, 0x28, + 0xf1, 0xd1, 0xa6, 0x46, 0xe1, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x31, 0x88, 0x01, 0x40, 0x48, + 0x08, 0x04, 0xd0, 0x58, 0x20, 0xa6, 0x46, 0xdd, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x2f, 0x1c, + 0xb1, 0x48, 0xb4, 0x30, 0x39, 0x1c, 0xa6, 0x46, 0xda, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x02, + 0x28, 0x00, 0xdc, 0x27, 0x1c, 0xac, 0x48, 0xf4, 0x30, 0x29, 0x1c, 0xa6, 0x46, 0xd5, 0x4a, + 0xfe, 0x44, 0x10, 0x47, 0x38, 0x43, 0xd4, 0x4f, 0x35, 0xd1, 0xa7, 0x48, 0xbc, 0x30, 0x29, + 0x1c, 0xa6, 0x46, 0xd0, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x01, 0x28, 0x2c, 0xd0, 0x38, 0x1c, + 0x09, 0x21, 0x06, 0x22, 0xa6, 0x46, 0x28, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x2b, 0xe0, 0xc0, + 0x46, 0x4f, 0xa7, 0x04, 0x00, 0x39, 0xa7, 0x04, 0x00, 0xdc, 0x5f, 0x08, 0x00, 0x0b, 0xd8, + 0x04, 0x00, 0xd8, 0x5f, 0x08, 0x00, 0xff, 0xff, 0x00, 0x00, 0xd5, 0x5f, 0x08, 0x00, 0xd3, + 0x5f, 0x08, 0x00, 0xd4, 0x5f, 0x08, 0x00, 0xd5, 0x07, 0x18, 0x00, 0x80, 0x7b, 0x08, 0x00, + 0xcc, 0x5f, 0x08, 0x00, + + 0x01, 0x05, 0xff, 0xff, 0xac, 0x0d, 0x18, 0x00, 0xfa, 0x38, 0x24, 0x08, 0x00, 0x5c, 0x4f, + 0x08, 0x00, 0xc8, 0x52, 0x08, 0x00, 0x02, 0x20, 0x19, 0x00, 0x00, 0xf3, 0x1a, 0x00, 0xa1, + 0x52, 0x08, 0x00, 0x38, 0x1c, 0x0c, 0x21, 0x06, 0x22, 0xa6, 0x46, 0x11, 0x4b, 0xfe, 0x44, + 0x18, 0x47, 0x38, 0x1c, 0x0c, 0x21, 0xa6, 0x46, 0x0f, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xb3, + 0x49, 0x10, 0x91, 0x08, 0x8f, 0x38, 0x31, 0x10, 0x91, 0x04, 0x28, 0x33, 0xda, 0x82, 0x48, + 0x2a, 0x30, 0x18, 0x21, 0x2a, 0x1c, 0xa6, 0x46, 0x07, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xab, + 0x48, 0x32, 0x30, 0x02, 0x21, 0x0a, 0x1c, 0xa6, 0x46, 0x42, 0x4b, 0xfe, 0x44, 0x18, 0x47, + 0x04, 0x20, 0x10, 0x99, 0x08, 0x80, 0x1f, 0xe0, 0x1f, 0xac, 0x04, 0x00, 0xfd, 0xaa, 0x04, + 0x00, 0x10, 0x60, 0x1a, 0x00, 0xa4, 0x52, 0x08, 0x00, 0xc4, 0x61, 0x1a, 0x00, 0x81, 0xae, + 0x04, 0x00, 0x7c, 0x51, 0x08, 0x00, 0xdd, 0x5e, 0x03, 0x00, 0x39, 0x6f, 0x03, 0x00, 0x6a, + 0x31, 0x19, 0x00, 0x9f, 0xae, 0x04, 0x00, 0xb9, 0xab, 0x04, 0x00, 0x15, 0xab, 0x04, 0x00, + 0x6e, 0x50, 0x1a, 0x00, 0x07, 0x10, 0x08, 0x00, 0x1e, 0xf6, 0x1a, 0x00, 0x2a, 0x1c, 0x97, + 0x48, 0x0c, 0x38, 0x97, 0x49, 0xa6, 0x46, 0x97, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x02, 0x20, + 0x01, 0x1c, 0x95, 0x4f, 0x38, 0x1c, 0x0a, 0x38, 0xa6, 0x46, 0x8f, 0x4a, 0xfe, 0x44, 0x10, + 0x47, 0x38, 0x1c, 0x07, 0x21, 0x2a, 0x1c, 0xa6, 0x46, 0x5d, 0x4b, 0xfe, 0x44, 0x18, 0x47, + 0x38, 0x1c, 0x07, 0x21, 0x03, 0x22, 0xa6, 0x46, 0x59, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x38, + 0x1c, 0x02, 0x38, 0x07, 0x21, 0x0c, 0x22, 0xa6, 0x46, 0x55, 0x4b, 0xfe, 0x44, 0x18, 0x47, + 0x8a, 0x48, 0x0c, 0x90, + + 0x01, 0x05, 0xff, 0xff, 0xa6, 0x0e, 0x18, 0x00, 0xfa, 0x02, 0x38, 0x0c, 0x90, 0x37, 0x21, + 0xa6, 0x46, 0x85, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x0c, 0x98, 0x08, 0x21, 0x07, 0x22, 0xa6, + 0x46, 0x82, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x82, 0x48, 0x04, 0x21, 0xa6, 0x46, 0x7e, 0x4a, + 0xfe, 0x44, 0x10, 0x47, 0x7f, 0x48, 0x02, 0x30, 0x29, 0x1c, 0xa6, 0x46, 0x76, 0x4a, 0xfe, + 0x44, 0x10, 0x47, 0x7c, 0x48, 0x05, 0x80, 0x7c, 0x48, 0x00, 0x78, 0x00, 0x28, 0x1d, 0xd0, + 0x04, 0x28, 0x29, 0xd1, 0x6f, 0x48, 0x06, 0x21, 0x08, 0x22, 0xa6, 0x46, 0x3f, 0x4b, 0xfe, + 0x44, 0x18, 0x47, 0x77, 0x48, 0x03, 0x21, 0x02, 0x22, 0xa6, 0x46, 0x88, 0x4b, 0xfe, 0x44, + 0x18, 0x47, 0x1a, 0xe0, 0xc0, 0x46, 0x04, 0x14, 0x08, 0x00, 0x65, 0xab, 0x04, 0x00, 0x0c, + 0x53, 0x08, 0x00, 0x85, 0x67, 0x05, 0x00, 0x9c, 0x0b, 0x1a, 0x00, 0x08, 0x09, 0x1a, 0x00, + 0x2a, 0x1c, 0x61, 0x48, 0x21, 0x1c, 0x8e, 0x46, 0x31, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x69, + 0x48, 0x03, 0x21, 0x2a, 0x1c, 0xa6, 0x46, 0x7a, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x2d, 0x48, + 0x78, 0x30, 0x07, 0x21, 0xa6, 0x46, 0x59, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xa6, 0x46, 0x62, + 0x48, 0xfe, 0x44, 0x00, 0x47, 0x28, 0x48, 0x0c, 0x90, 0x32, 0x38, 0x0c, 0x90, 0x29, 0x1c, + 0x2a, 0x1c, 0xa6, 0x46, 0x23, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x03, 0x20, 0x02, 0x1c, 0x0c, + 0x98, 0x29, 0x1c, 0xa6, 0x46, 0x1f, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x1f, 0x48, 0x10, 0x30, + 0x0c, 0x21, 0xa6, 0x46, 0x4b, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xff, 0x20, 0xd3, 0x30, 0x0f, + 0x99, 0x08, 0x80, 0x53, 0x48, 0x10, 0x99, 0xc8, 0x83, 0x18, 0x48, 0x0c, 0x90, 0x22, 0x38, + 0x0c, 0x90, 0x03, 0x21, + + 0x01, 0x05, 0xff, 0xff, 0xa0, 0x0f, 0x18, 0x00, 0xfa, 0xa6, 0x46, 0x5b, 0x4a, 0xfe, 0x44, + 0x10, 0x47, 0x96, 0x20, 0xa6, 0x46, 0x4d, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x0c, 0x98, 0x03, + 0x21, 0xa6, 0x46, 0x3d, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x35, 0x80, 0x54, 0x48, 0x40, 0x78, + 0x49, 0x4e, 0x00, 0x28, 0x1a, 0xd1, 0x0b, 0x48, 0x16, 0x30, 0x07, 0x21, 0xa6, 0x46, 0x45, + 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x28, 0x0f, 0xd1, 0x0e, 0x98, 0x88, 0x30, 0x0d, 0x99, + 0x89, 0x7d, 0x0c, 0x22, 0x51, 0x43, 0x71, 0x18, 0xa6, 0x46, 0x40, 0x4b, 0xfe, 0x44, 0x18, + 0x47, 0x30, 0xe0, 0x7b, 0xab, 0x04, 0x00, 0x4e, 0x74, 0x1a, 0x00, 0x45, 0x48, 0x40, 0x78, + 0x01, 0x28, 0x0f, 0xd0, 0x0e, 0x98, 0x88, 0x30, 0x0d, 0x99, 0x89, 0x7d, 0x0c, 0x22, 0x51, + 0x43, 0x38, 0x4b, 0x59, 0x18, 0xa6, 0x46, 0x36, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x1b, 0xe0, + 0xc0, 0x46, 0xf7, 0xab, 0x04, 0x00, 0x07, 0x20, 0x34, 0x4f, 0xb8, 0x70, 0x0e, 0x98, 0x88, + 0x30, 0x0d, 0x99, 0x89, 0x7d, 0x0c, 0x22, 0x51, 0x43, 0x71, 0x18, 0xa6, 0x46, 0x2d, 0x4b, + 0xfe, 0x44, 0x18, 0x47, 0x38, 0x1c, 0x06, 0x21, 0xa6, 0x46, 0x32, 0x4a, 0xfe, 0x44, 0x10, + 0x47, 0x2b, 0x48, 0x05, 0x70, 0x54, 0x21, 0x0e, 0x98, 0x0d, 0x52, 0x0e, 0x98, 0x45, 0x81, + 0x94, 0x30, 0x2e, 0x49, 0x89, 0x78, 0x2a, 0x1c, 0xa6, 0x46, 0x26, 0x4b, 0xfe, 0x44, 0x18, + 0x47, 0x03, 0x20, 0xf2, 0x22, 0x2b, 0x49, 0x50, 0x54, 0x23, 0x21, 0xc9, 0x00, 0x23, 0x4a, + 0x88, 0x5c, 0x01, 0x30, 0x88, 0x54, 0x22, 0x48, 0x05, 0x70, 0x19, 0x20, 0x80, 0x01, 0x26, + 0x49, 0x08, 0x80, 0x6e, 0x21, 0x24, 0x48, 0x41, 0x74, 0x55, 0x20, 0xc0, 0x00, 0x1d, 0x49, + 0x08, 0x80, 0x11, 0xb0, + + 0x01, 0x05, 0xff, 0x93, 0x9a, 0x10, 0x18, 0x00, 0x8e, 0xf0, 0xbd, 0x1d, 0x05, 0x04, 0x00, + 0x1b, 0xa7, 0x04, 0x00, 0x77, 0xae, 0x04, 0x00, 0x6a, 0x74, 0x1a, 0x00, 0x88, 0x7c, 0x1a, + 0x00, 0xfd, 0xaa, 0x04, 0x00, 0x10, 0x60, 0x1a, 0x00, 0xdd, 0x03, 0x00, 0x00, 0xf3, 0xac, + 0x04, 0x00, 0x0c, 0x30, 0x1a, 0x00, 0x4b, 0xac, 0x04, 0x00, 0x35, 0xac, 0x04, 0x00, 0x06, + 0x0f, 0x1a, 0x00, 0x68, 0x60, 0x1a, 0x00, 0x70, 0x55, 0x08, 0x00, 0xb0, 0x7c, 0x1a, 0x00, + 0x15, 0x60, 0x03, 0x00, 0x53, 0x51, 0x00, 0x00, 0x3f, 0x4a, 0x04, 0x00, 0x59, 0xae, 0x04, + 0x00, 0x18, 0x09, 0x18, 0x00, 0xc1, 0x78, 0x05, 0x00, 0x3c, 0x09, 0x18, 0x00, 0x10, 0x20, + 0x19, 0x00, 0x9f, 0x51, 0x08, 0x00, 0x67, 0xac, 0x04, 0x00, 0x88, 0x4c, 0x08, 0x00, 0xd2, + 0x5f, 0x08, 0x00, 0xd0, 0x5f, 0x08, 0x00, 0x15, 0xab, 0x04, 0x00, 0xa1, 0x52, 0x08, 0x00, + 0x0c, 0x53, 0x08, 0x00, 0x5c, 0x4f, 0x08, 0x00, 0x04, 0x14, 0x08, 0x00, 0x65, 0xab, 0x04, + 0x00, + + 0x01, 0x05, 0xff, 0xff, 0xd8, 0x5b, 0x18, 0x00, 0xfa, 0xf0, 0xb5, 0xbe, 0x49, 0x04, 0x39, + 0x4f, 0x68, 0x33, 0x20, 0xc0, 0x5d, 0x00, 0x09, 0x84, 0x46, 0x08, 0x78, 0x01, 0x28, 0x37, + 0xd1, 0xba, 0x48, 0x06, 0x78, 0x00, 0x24, 0x25, 0x1c, 0x22, 0x1c, 0x1b, 0xe0, 0x23, 0x20, + 0x00, 0x01, 0x50, 0x43, 0xb6, 0x49, 0x0b, 0x18, 0x38, 0x20, 0xc0, 0x5c, 0x00, 0x28, 0x0f, + 0xd0, 0x18, 0x78, 0xac, 0x21, 0x41, 0x43, 0xb3, 0x48, 0x33, 0x30, 0x40, 0x5c, 0x01, 0x28, + 0x07, 0xd0, 0xff, 0x20, 0x22, 0x30, 0xc0, 0x5c, 0x01, 0x28, 0x01, 0xd1, 0x01, 0x25, 0x00, + 0xe0, 0x01, 0x24, 0x50, 0x1c, 0x02, 0x06, 0x12, 0x0e, 0xb2, 0x42, 0xe1, 0xdb, 0x00, 0x20, + 0x00, 0x2d, 0x02, 0xd0, 0x00, 0x2c, 0x00, 0xd1, 0x01, 0x20, 0x60, 0x45, 0x0b, 0xd0, 0x33, + 0x21, 0xc9, 0x19, 0x0a, 0x78, 0x12, 0x07, 0x12, 0x0f, 0x00, 0x01, 0x10, 0x43, 0x08, 0x70, + 0x01, 0x20, 0x40, 0x02, 0x9d, 0x49, 0x08, 0x80, 0xf0, 0xbd, 0x70, 0xb5, 0x07, 0x26, 0x9e, + 0x4d, 0x32, 0x20, 0x40, 0x5d, 0x02, 0x28, 0x0c, 0xd1, 0x37, 0x20, 0x40, 0x5d, 0x9c, 0x49, + 0x08, 0x18, 0x40, 0x00, 0x02, 0x21, 0x01, 0x24, 0xa6, 0x46, 0x9b, 0x4a, 0xfe, 0x44, 0x10, + 0x47, 0x00, 0x28, 0x03, 0xd1, 0xac, 0x35, 0x01, 0x3e, 0xeb, 0xd1, 0x70, 0xbd, 0x95, 0x48, + 0x09, 0x21, 0xa6, 0x46, 0x96, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x70, 0xbd, 0xf0, 0xb5, 0x8d, + 0xb0, 0x06, 0x90, 0x93, 0x4c, 0x20, 0x88, 0x40, 0x08, 0x07, 0x90, 0xe0, 0x7f, 0x00, 0x21, + 0x08, 0x91, 0x41, 0x09, 0x0f, 0xd3, 0x98, 0x4a, 0x11, 0x78, 0x00, 0x29, 0x08, 0xd0, 0x92, + 0x78, 0x91, 0x42, 0x05, 0xd0, 0x01, 0x21, 0x01, 0x43, 0x08, 0x06, 0x00, 0x0e, 0xe0, 0x77, + 0x02, 0xe0, 0x10, 0x20, + + 0x01, 0x05, 0xff, 0xff, 0xd2, 0x5c, 0x18, 0x00, 0xfa, 0xe0, 0x77, 0xe0, 0x7f, 0x8e, 0x49, + 0x09, 0x91, 0x02, 0x39, 0x09, 0x91, 0x40, 0x08, 0x1b, 0xd3, 0x67, 0x7f, 0x02, 0x2f, 0x18, + 0xdb, 0x08, 0x9e, 0x38, 0x1c, 0x03, 0x21, 0x01, 0x25, 0xae, 0x46, 0x82, 0x4a, 0xfe, 0x44, + 0x10, 0x47, 0x00, 0x28, 0x00, 0xd0, 0x2e, 0x1c, 0x38, 0x1c, 0x03, 0x21, 0xae, 0x46, 0x7e, + 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x71, 0x18, 0xa0, 0x8c, 0x40, 0x08, 0xae, 0x46, 0x7b, 0x4a, + 0xfe, 0x44, 0x10, 0x47, 0x01, 0xe0, 0xa0, 0x8c, 0x41, 0x08, 0x21, 0x85, 0x08, 0x9f, 0xa7, + 0x77, 0xe7, 0x85, 0x85, 0x20, 0x40, 0x00, 0x01, 0x25, 0xae, 0x46, 0x75, 0x49, 0xfe, 0x44, + 0x08, 0x47, 0x43, 0x20, 0x80, 0x00, 0xae, 0x46, 0x72, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x20, + 0x8d, 0x00, 0x90, 0x07, 0x98, 0x01, 0x90, 0x6b, 0x48, 0x02, 0x7b, 0xe3, 0x7f, 0x03, 0x20, + 0x82, 0x21, 0xae, 0x46, 0x6c, 0x4e, 0xfe, 0x44, 0x30, 0x47, 0x67, 0x48, 0x00, 0x7b, 0x0a, + 0x90, 0x0b, 0x97, 0x03, 0x28, 0x13, 0xd1, 0x20, 0x88, 0x41, 0x08, 0x0c, 0x91, 0x26, 0x8d, + 0x30, 0x1c, 0xae, 0x46, 0x62, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x28, 0x07, 0xd0, 0x31, + 0x1c, 0x0c, 0x98, 0xae, 0x46, 0x5e, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x28, 0x00, 0xd1, + 0x0b, 0x95, 0x0b, 0x9e, 0x4e, 0x48, 0x01, 0x78, 0x01, 0x29, 0x07, 0xd1, 0x3c, 0x21, 0x09, + 0x5c, 0x00, 0x29, 0x03, 0xd0, 0x40, 0x8e, 0x40, 0x09, 0x00, 0xd3, 0x08, 0x95, 0x00, 0x2e, + 0x29, 0xd0, 0x08, 0x98, 0x00, 0x28, 0x26, 0xd1, 0x27, 0x8d, 0x38, 0x1c, 0x07, 0x99, 0xae, + 0x46, 0x51, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x08, 0x04, 0x00, 0x0c, 0x0c, 0x90, 0x38, 0x1c, + 0x07, 0x99, 0xae, 0x46, + + 0x01, 0x05, 0xff, 0xff, 0xcc, 0x5d, 0x18, 0x00, 0xfa, 0x4c, 0x4a, 0xfe, 0x44, 0x10, 0x47, + 0x08, 0x04, 0x00, 0x0c, 0x01, 0xd0, 0x02, 0x21, 0x00, 0xe0, 0x29, 0x1c, 0x09, 0x98, 0x81, + 0x70, 0x07, 0x98, 0x39, 0x1c, 0x2f, 0x1c, 0xae, 0x46, 0x45, 0x4a, 0xfe, 0x44, 0x10, 0x47, + 0x0c, 0x98, 0x01, 0x43, 0x08, 0x04, 0x00, 0x0c, 0xe0, 0x85, 0x09, 0x99, 0x08, 0x80, 0x02, + 0xe0, 0x09, 0x98, 0x0a, 0x99, 0x81, 0x70, 0x09, 0x98, 0x80, 0x78, 0x41, 0x08, 0x19, 0xd3, + 0x20, 0x1c, 0x01, 0x8d, 0x00, 0x2f, 0x0d, 0xd1, 0x00, 0x2e, 0x0b, 0xd0, 0x07, 0x98, 0x88, + 0x42, 0x08, 0xdd, 0x48, 0x08, 0x09, 0x18, 0x85, 0x20, 0x40, 0x00, 0xae, 0x46, 0x38, 0x4a, + 0xfe, 0x44, 0x10, 0x47, 0x05, 0xe0, 0x85, 0x20, 0x40, 0x00, 0xae, 0x46, 0x34, 0x4a, 0xfe, + 0x44, 0x10, 0x47, 0x34, 0x48, 0x00, 0x78, 0x80, 0x08, 0x18, 0xd3, 0x00, 0x2f, 0x0f, 0xd1, + 0x00, 0x2e, 0x0d, 0xd0, 0x21, 0x8d, 0x07, 0x98, 0x81, 0x42, 0x09, 0xdb, 0x07, 0x98, 0x41, + 0x08, 0x41, 0x18, 0x43, 0x20, 0x80, 0x00, 0xae, 0x46, 0x2a, 0x4a, 0xfe, 0x44, 0x10, 0x47, + 0x06, 0xe0, 0x07, 0x99, 0x43, 0x20, 0x80, 0x00, 0xae, 0x46, 0x26, 0x4a, 0xfe, 0x44, 0x10, + 0x47, 0x1f, 0x48, 0x00, 0x78, 0x80, 0x06, 0x80, 0x0e, 0x1d, 0x49, 0x08, 0x70, 0x08, 0x1c, + 0x01, 0x7b, 0x29, 0x40, 0x68, 0x46, 0x01, 0x72, 0x21, 0x8d, 0x41, 0x81, 0x61, 0x8c, 0x49, + 0x08, 0x81, 0x81, 0x87, 0x73, 0x17, 0x49, 0x09, 0x7b, 0x49, 0x08, 0x29, 0x40, 0x01, 0x74, + 0x07, 0x99, 0x41, 0x82, 0xa1, 0x88, 0x49, 0x08, 0x81, 0x82, 0x87, 0x75, 0xa0, 0x20, 0x02, + 0xa9, 0xae, 0x46, 0x19, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x15, 0x49, 0xff, 0x31, 0x5d, 0x31, + 0x06, 0x98, 0x01, 0x62, + + 0x01, 0x05, 0xff, 0xff, 0xc6, 0x5e, 0x18, 0x00, 0xfa, 0x0d, 0xb0, 0xf0, 0xbd, 0xc0, 0x46, + 0x34, 0x24, 0x08, 0x00, 0x44, 0x7c, 0x1a, 0x00, 0x38, 0x24, 0x08, 0x00, 0x21, 0x50, 0x08, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x94, 0x1a, 0x08, 0x00, 0x11, 0x01, 0x0d, 0x00, 0x46, 0x7f, + 0x1a, 0x00, 0x9f, 0xae, 0x04, 0x00, 0xfd, 0xaa, 0x04, 0x00, 0xe2, 0x11, 0x08, 0x00, 0x02, + 0x12, 0x08, 0x00, 0xe1, 0x60, 0x05, 0x00, 0xe1, 0x60, 0x05, 0x00, 0x61, 0x7d, 0x03, 0x00, + 0x6f, 0xa7, 0x04, 0x00, 0x43, 0x7a, 0x03, 0x00, 0x04, 0x10, 0x08, 0x00, 0x55, 0xf9, 0x00, + 0x00, 0x2b, 0x10, 0x08, 0x00, 0xaf, 0xf3, 0x04, 0x00, 0x30, 0xb5, 0x5b, 0x4d, 0x0a, 0x20, + 0x41, 0x19, 0x5a, 0x48, 0x04, 0x22, 0x01, 0x24, 0xa6, 0x46, 0x5d, 0x4b, 0xfe, 0x44, 0x18, + 0x47, 0xa6, 0x46, 0x57, 0x48, 0xfe, 0x44, 0x00, 0x47, 0xa6, 0x46, 0x56, 0x48, 0xfe, 0x44, + 0x00, 0x47, 0x00, 0x28, 0x05, 0xd0, 0x29, 0x8b, 0x58, 0x20, 0xa6, 0x46, 0x53, 0x4a, 0xfe, + 0x44, 0x10, 0x47, 0x53, 0x48, 0x6b, 0x30, 0x30, 0xbd, 0xfe, 0xb5, 0x00, 0x90, 0x5a, 0x48, + 0x00, 0x78, 0x01, 0x28, 0x00, 0xd0, 0x8b, 0xe0, 0x50, 0x4d, 0x3c, 0x20, 0x40, 0x19, 0x01, + 0x90, 0x47, 0x48, 0x00, 0x26, 0x01, 0x24, 0x69, 0x8e, 0x09, 0x09, 0x21, 0x40, 0x40, 0x8d, + 0x00, 0x09, 0x20, 0x40, 0x88, 0x42, 0x04, 0xd0, 0x49, 0x48, 0x00, 0x78, 0x03, 0x28, 0x00, + 0xd1, 0x26, 0x1c, 0x08, 0x20, 0x40, 0x19, 0x3e, 0x49, 0x30, 0x22, 0xa6, 0x46, 0x4c, 0x4b, + 0xfe, 0x44, 0x18, 0x47, 0x00, 0x2e, 0x03, 0xd0, 0xa6, 0x46, 0x42, 0x48, 0xfe, 0x44, 0x00, + 0x47, 0x49, 0x4e, 0x49, 0x48, 0x00, 0x78, 0x00, 0x27, 0x62, 0xe0, 0x30, 0x78, 0xff, 0x28, + 0x5c, 0xd0, 0x38, 0x20, + + 0x01, 0x05, 0xff, 0xff, 0xc0, 0x5f, 0x18, 0x00, 0xfa, 0x80, 0x5d, 0x0c, 0x28, 0x58, 0xd1, + 0x00, 0x20, 0x02, 0x90, 0x3b, 0x48, 0x0b, 0x21, 0xa6, 0x46, 0x42, 0x4a, 0xfe, 0x44, 0x10, + 0x47, 0x00, 0x28, 0x04, 0xd0, 0x2d, 0x48, 0x40, 0x8d, 0xc0, 0x08, 0x00, 0xd3, 0x02, 0x94, + 0x02, 0x98, 0x00, 0x28, 0x0b, 0xd0, 0x28, 0x78, 0x01, 0x28, 0x08, 0xd1, 0x01, 0x98, 0x00, + 0x78, 0x00, 0x28, 0x04, 0xd0, 0xff, 0x20, 0x1e, 0x30, 0x81, 0x5d, 0x01, 0x29, 0x2a, 0xd0, + 0x2d, 0x48, 0x0b, 0x21, 0xa6, 0x46, 0x34, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x28, 0x0a, + 0xd0, 0x1f, 0x48, 0x40, 0x8d, 0xc0, 0x08, 0x06, 0xd2, 0x28, 0x78, 0x01, 0x28, 0x03, 0xd1, + 0x01, 0x98, 0x00, 0x78, 0x00, 0x28, 0x07, 0xd1, 0x23, 0x48, 0x0b, 0x21, 0xa6, 0x46, 0x2b, + 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x28, 0x1f, 0xd1, 0xf0, 0x7e, 0xc0, 0x08, 0x1c, 0xd3, + 0x1f, 0x48, 0x00, 0x78, 0x00, 0x28, 0x18, 0xd0, 0xff, 0x20, 0x21, 0x30, 0x80, 0x5d, 0x40, + 0x08, 0x13, 0xd3, 0xff, 0x20, 0x1e, 0x30, 0x84, 0x55, 0x0f, 0xe0, 0x00, 0x21, 0x81, 0x55, + 0x70, 0x78, 0x4c, 0x21, 0x41, 0x43, 0x17, 0x48, 0x40, 0x18, 0x3b, 0x23, 0x1a, 0x5c, 0x21, + 0x1c, 0x11, 0x43, 0x19, 0x54, 0xa6, 0x46, 0x14, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x01, 0x37, + 0x17, 0x48, 0x00, 0x78, 0x87, 0x42, 0x9a, 0xd3, 0x00, 0x98, 0x41, 0x68, 0x09, 0x78, 0x41, + 0x60, 0x0f, 0x48, 0x40, 0x1d, 0xfe, 0xbd, 0x50, 0x7f, 0x1a, 0x00, 0x46, 0x24, 0x08, 0x00, + 0x25, 0x4e, 0x02, 0x00, 0xa3, 0x4a, 0x02, 0x00, 0x43, 0x7a, 0x03, 0x00, 0x4b, 0x4e, 0x02, + 0x00, 0xc1, 0x78, 0x05, 0x00, 0x34, 0x24, 0x08, 0x00, 0x0e, 0x12, 0x08, 0x00, 0x55, 0xf9, + 0x00, 0x00, 0xca, 0x74, + + 0x01, 0x05, 0xff, 0x2b, 0xba, 0x60, 0x18, 0x00, 0x26, 0x1a, 0x00, 0x3c, 0x10, 0x08, 0x00, + 0xb4, 0x46, 0x08, 0x00, 0xd1, 0x34, 0x02, 0x00, 0x75, 0x4f, 0x02, 0x00, 0xa2, 0x52, 0x08, + 0x00, 0xc1, 0x78, 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x21, 0x50, 0x08, 0x00, 0x59, 0xae, + 0x04, 0x00, + + 0x01, 0x83, 0xff, 0x14, 0x75, 0x7b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + // + // + // + 0x01, 0xdc, 0xfd, 0x03, 0x00, 0x00, 0x12, + + // ##-------------------------------------------------------------------------------- + // ## Description: BTIP2.0 PHY FW Initialization Script + // ## Version: 2.54 - Modified with TPC default values + // ##-------------------------------------------------------------------------------- + // + 0x01, 0x01, 0xff, 0x06, 0x00, 0x24, 0x19, 0x00, 0x01, 0x00, + + 0x01, 0x05, 0xff, 0xff, 0x00, 0x40, 0x19, 0x00, 0xfa, 0x00, 0x0c, 0x00, 0x20, 0xb9, 0x2d, + 0x00, 0x00, 0xf7, 0x2d, 0x00, 0x00, 0xf7, 0x2d, 0x00, 0x00, 0xf7, 0x2d, 0x00, 0x00, 0xf7, + 0x2d, 0x00, 0x00, 0xf7, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x2d, 0x00, 0x00, 0xf7, 0x2d, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x2d, 0x00, 0x00, 0xf7, 0x2d, 0x00, 0x00, 0xf7, 0x2d, + 0x00, 0x00, 0xf7, 0x2d, 0x00, 0x00, 0x25, 0x27, 0x00, 0x00, 0xfb, 0x24, 0x00, 0x00, 0xf7, + 0x2d, 0x00, 0x00, 0xf7, 0x2d, 0x00, 0x00, 0xf7, 0x2d, 0x00, 0x00, 0xf7, 0x2d, 0x00, 0x00, + 0xf7, 0x2d, 0x00, 0x00, 0xf7, 0x2d, 0x00, 0x00, 0xf7, 0x2d, 0x00, 0x00, 0xf7, 0x2d, 0x00, + 0x00, 0xf7, 0x2d, 0x00, 0x00, 0xf7, 0x2d, 0x00, 0x00, 0xf7, 0x2d, 0x00, 0x00, 0xf7, 0x2d, + 0x00, 0x00, 0xf7, 0x2d, 0x00, 0x00, 0xf7, 0x2d, 0x00, 0x00, 0xf7, 0x2d, 0x00, 0x00, 0xd3, + 0x07, 0x00, 0x20, 0xf7, 0x2d, 0x00, 0x00, 0x07, 0x07, 0x00, 0x20, 0x2d, 0xe9, 0xf0, 0x43, + 0x81, 0x46, 0x00, 0x26, 0x7b, 0x4c, 0x01, 0x27, 0x7b, 0x48, 0x26, 0x73, 0x04, 0xf8, 0x04, + 0x7c, 0x00, 0x78, 0xdf, 0xf8, 0xc0, 0x82, 0x00, 0x28, 0x0c, 0xbf, 0x98, 0xf8, 0x7a, 0x10, + 0x98, 0xf8, 0x78, 0x10, 0x77, 0x48, 0x00, 0x88, 0x75, 0x4d, 0x20, 0xf4, 0x7c, 0x50, 0x40, + 0xea, 0x01, 0x20, 0x68, 0x80, 0xa8, 0x88, 0x98, 0xf8, 0x7e, 0x10, 0x20, 0xf0, 0x7f, 0x00, + 0x01, 0x43, 0x38, 0x46, 0xa9, 0x80, 0x27, 0x70, 0x02, 0xf0, 0x50, 0xfb, 0x26, 0x70, 0x38, + 0x46, 0x02, 0xf0, 0x4c, 0xfb, 0x26, 0x71, 0x27, 0x72, 0x4f, 0xf0, 0x30, 0x00, 0x05, 0xf8, + 0x01, 0x0c, 0x84, 0xf8, + + 0x01, 0x05, 0xff, 0xff, 0xfa, 0x40, 0x19, 0x00, 0xfa, 0xfc, 0x60, 0x84, 0xf8, 0x0c, 0x61, + 0x84, 0xf8, 0x2c, 0x61, 0x28, 0x88, 0x20, 0xf4, 0x00, 0x70, 0x40, 0xf4, 0x80, 0x70, 0x28, + 0x80, 0x98, 0xf8, 0x76, 0x00, 0x88, 0xb1, 0x62, 0x48, 0x00, 0x88, 0x40, 0x08, 0x0d, 0xd3, + 0x61, 0x48, 0x07, 0x72, 0x80, 0xf8, 0x40, 0x61, 0x06, 0x70, 0x28, 0x88, 0x20, 0xf0, 0x07, + 0x00, 0x28, 0x80, 0x98, 0xf8, 0x77, 0x00, 0x40, 0xf0, 0x01, 0x00, 0x03, 0xe0, 0x98, 0xf8, + 0x77, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x88, 0xf8, 0x77, 0x00, 0x84, 0xf8, 0x54, 0x70, 0x02, + 0x20, 0x84, 0xf8, 0x50, 0x70, 0x84, 0xf8, 0x4c, 0x90, 0x02, 0xf0, 0x16, 0xfb, 0xbd, 0xe8, + 0xf0, 0x83, 0x2d, 0xe9, 0xf0, 0x47, 0x52, 0x4c, 0x81, 0x46, 0x52, 0x48, 0x01, 0x25, 0x25, + 0x70, 0x00, 0x88, 0xdf, 0xf8, 0x28, 0x81, 0x92, 0x46, 0x00, 0x28, 0x40, 0x46, 0x4c, 0x4e, + 0x02, 0xd0, 0x6a, 0x30, 0x1f, 0x21, 0x01, 0x70, 0x84, 0xf8, 0x80, 0x52, 0x05, 0x20, 0x02, + 0xf0, 0xfd, 0xfa, 0x25, 0x73, 0x28, 0x46, 0x02, 0xf0, 0xf9, 0xfa, 0x00, 0x27, 0x27, 0x73, + 0xb9, 0xf1, 0x00, 0x0f, 0x25, 0x71, 0x25, 0x72, 0x44, 0x46, 0x04, 0xf1, 0xc2, 0x04, 0x14, + 0xbf, 0x40, 0xf6, 0xff, 0x70, 0x40, 0xf2, 0x73, 0x50, 0x24, 0xf8, 0xa4, 0x0c, 0x38, 0x46, + 0x02, 0xf0, 0xe6, 0xfa, 0xb9, 0xf1, 0x00, 0x0f, 0x14, 0xbf, 0x0f, 0x20, 0x05, 0x20, 0x04, + 0xf8, 0xa2, 0x0c, 0x03, 0x20, 0x04, 0xf8, 0xa1, 0x0c, 0x28, 0x46, 0x02, 0xf0, 0xd9, 0xfa, + 0x38, 0x48, 0x04, 0xf8, 0xa1, 0x7c, 0x05, 0x70, 0x86, 0xf8, 0xf0, 0x50, 0x38, 0x46, 0x02, + 0xf0, 0xd0, 0xfa, 0x20, 0x88, 0x40, 0xf0, 0x0c, 0x00, 0x20, 0x80, 0x08, 0x20, 0x02, 0xf0, + 0xc9, 0xfa, 0xba, 0xf1, + + 0x01, 0x05, 0xff, 0xff, 0xf4, 0x41, 0x19, 0x00, 0xfa, 0x00, 0x0f, 0x0f, 0xd0, 0x86, 0xf8, + 0xf0, 0x70, 0x38, 0x46, 0x02, 0xf0, 0xc1, 0xfa, 0x86, 0xf8, 0xf0, 0x50, 0x38, 0x46, 0x02, + 0xf0, 0xbc, 0xfa, 0x20, 0x88, 0x20, 0xf0, 0x08, 0x00, 0x40, 0xf0, 0x04, 0x00, 0x20, 0x80, + 0x86, 0xf8, 0x04, 0x90, 0x35, 0x70, 0xbd, 0xe8, 0xf0, 0x87, 0xf0, 0xb5, 0x11, 0x20, 0x24, + 0x4d, 0x01, 0x24, 0x24, 0x4e, 0xe8, 0x70, 0x02, 0x20, 0x34, 0x70, 0x02, 0xf0, 0xa7, 0xfa, + 0x34, 0x71, 0x02, 0x20, 0x02, 0xf0, 0xa3, 0xfa, 0x34, 0x74, 0x02, 0x20, 0x86, 0xf8, 0x34, + 0x40, 0x02, 0xf0, 0x9d, 0xfa, 0x85, 0xf8, 0x4a, 0x40, 0x20, 0x46, 0x34, 0x73, 0x02, 0xf0, + 0x97, 0xfa, 0x00, 0x27, 0x85, 0xf8, 0x4a, 0x70, 0x02, 0x20, 0x02, 0xf0, 0x91, 0xfa, 0x28, + 0x88, 0x40, 0xf4, 0xff, 0x50, 0x28, 0x80, 0x86, 0xf8, 0x28, 0x40, 0x08, 0x20, 0x85, 0xf8, + 0x20, 0x7f, 0x02, 0xf0, 0x86, 0xfa, 0x12, 0x20, 0xe8, 0x70, 0xf0, 0xbd, 0x30, 0xb1, 0x0f, + 0x49, 0x08, 0x88, 0x40, 0xf4, 0x40, 0x70, 0x08, 0x80, 0x4c, 0x20, 0x08, 0x73, 0x70, 0x47, + 0x04, 0x03, 0x04, 0x42, 0xe4, 0x08, 0x00, 0x20, 0x1a, 0x20, 0x00, 0x40, 0x1c, 0x20, 0x00, + 0x40, 0x14, 0x22, 0x00, 0x40, 0x00, 0x40, 0x04, 0x42, 0x80, 0x1b, 0x04, 0x42, 0x80, 0x04, + 0x04, 0x42, 0x0e, 0x03, 0x00, 0x20, 0xe0, 0x20, 0x00, 0x42, 0x64, 0x11, 0x00, 0x40, 0x80, + 0x2c, 0x02, 0x42, 0x4a, 0x10, 0x00, 0x40, 0x2d, 0xe9, 0xf0, 0x4f, 0xad, 0xf1, 0x40, 0x0d, + 0x86, 0x4b, 0x00, 0x90, 0x86, 0x48, 0x4f, 0xf0, 0x00, 0x09, 0x83, 0xf8, 0x32, 0x90, 0x83, + 0xf8, 0x33, 0x90, 0x80, 0xf8, 0x00, 0x90, 0x18, 0x7d, 0x22, 0x4c, 0x00, 0x28, 0x06, 0xbf, + 0xe0, 0x8e, 0x02, 0x1c, + + 0x01, 0x05, 0xff, 0xff, 0xee, 0x42, 0x19, 0x00, 0xfa, 0x94, 0xf8, 0x35, 0x20, 0xb1, 0x48, + 0xaf, 0x4e, 0x01, 0x88, 0x62, 0xf3, 0x1f, 0x31, 0x02, 0x46, 0x01, 0x92, 0x11, 0x80, 0x94, + 0xf8, 0x33, 0x10, 0x60, 0x8b, 0x40, 0x18, 0xd1, 0x88, 0x60, 0xf3, 0x1f, 0x31, 0xd1, 0x80, + 0xaa, 0x4a, 0x48, 0x46, 0x11, 0x78, 0x51, 0x29, 0x08, 0xbf, 0x01, 0x20, 0x02, 0x90, 0xa7, + 0x48, 0x4f, 0x46, 0xc5, 0x8b, 0x01, 0x8c, 0x03, 0x97, 0x04, 0x97, 0x05, 0x97, 0x06, 0x97, + 0x07, 0x93, 0xdd, 0xf8, 0x00, 0xc0, 0xa3, 0x4b, 0xa3, 0x4f, 0xbc, 0xf1, 0x00, 0x0f, 0x19, + 0xd0, 0x9c, 0x46, 0xcd, 0xf8, 0x20, 0xc0, 0x4f, 0xf4, 0x80, 0x53, 0xac, 0xf8, 0x30, 0x30, + 0xa0, 0xf8, 0x22, 0x90, 0x09, 0x91, 0xe8, 0x13, 0x82, 0x46, 0xb7, 0xf8, 0x9c, 0x00, 0x40, + 0x08, 0x34, 0xbf, 0x94, 0xf8, 0x5f, 0x10, 0x94, 0xf8, 0x61, 0x10, 0x94, 0xf8, 0x3b, 0x00, + 0x11, 0xe0, 0xc0, 0x46, 0x00, 0x02, 0x00, 0x20, 0x08, 0x93, 0x4f, 0xf0, 0x10, 0x01, 0x19, + 0x86, 0xa0, 0xf8, 0x06, 0x90, 0x45, 0x88, 0x80, 0x88, 0x09, 0x90, 0x94, 0xf8, 0x39, 0x00, + 0x94, 0xf8, 0x65, 0x10, 0xdd, 0xf8, 0x18, 0xa0, 0x01, 0x44, 0x4f, 0xea, 0xc1, 0x00, 0x08, + 0x99, 0x08, 0x80, 0x02, 0x98, 0x08, 0x99, 0x78, 0xb9, 0x01, 0x20, 0x01, 0xf8, 0x07, 0x0c, + 0x08, 0x88, 0x89, 0x88, 0x00, 0x1f, 0x88, 0x42, 0x04, 0xda, 0x11, 0x78, 0x21, 0x20, 0xff, + 0x22, 0x02, 0xf0, 0x2c, 0xfa, 0x08, 0x20, 0x02, 0xf0, 0x0a, 0xfa, 0x4f, 0xea, 0x65, 0x00, + 0x00, 0xf0, 0x1f, 0x00, 0x0a, 0x90, 0xa7, 0x48, 0x94, 0xf8, 0x77, 0x10, 0x4f, 0xf0, 0x01, + 0x08, 0x0b, 0x90, 0x07, 0x9b, 0x90, 0xf8, 0x5c, 0x0e, 0x4f, 0xea, 0xa5, 0x12, 0x02, 0xf0, + 0x7f, 0x02, 0x98, 0x72, + + 0x01, 0x05, 0xff, 0xff, 0xe8, 0x43, 0x19, 0x00, 0xfa, 0xa1, 0x48, 0x00, 0x88, 0x83, 0xf8, + 0x0b, 0x80, 0x18, 0x81, 0x60, 0x88, 0x60, 0xb9, 0x28, 0x2a, 0xbc, 0xbf, 0x02, 0xf2, 0xb1, + 0x40, 0x40, 0x00, 0x05, 0xdb, 0x4f, 0xea, 0x65, 0x10, 0x00, 0xf0, 0xfe, 0x00, 0x00, 0xf6, + 0x13, 0x10, 0x80, 0xb2, 0x0c, 0x90, 0x0c, 0x9a, 0x97, 0x48, 0x4c, 0xf2, 0x50, 0x33, 0x00, + 0xfb, 0x02, 0xf0, 0x0d, 0x90, 0x78, 0x89, 0x95, 0x4a, 0x6f, 0xf3, 0x9f, 0x20, 0x03, 0xfb, + 0x00, 0x25, 0x94, 0xf8, 0x76, 0x00, 0x30, 0xb1, 0x48, 0x09, 0x04, 0xd3, 0x0d, 0x98, 0x29, + 0x46, 0x01, 0xf0, 0xbb, 0xfd, 0xa0, 0xb9, 0xb4, 0xf8, 0xac, 0x01, 0x0c, 0x99, 0x80, 0xb9, + 0x4f, 0xf4, 0xfa, 0x30, 0x48, 0x43, 0xb4, 0xf9, 0x06, 0x10, 0xa0, 0xeb, 0x41, 0x10, 0x00, + 0xf5, 0x7a, 0x60, 0x4f, 0xf4, 0xfa, 0x51, 0xb0, 0xfb, 0xf1, 0xf0, 0x80, 0xb2, 0xcd, 0xf8, + 0x38, 0x80, 0x05, 0xe0, 0x0d, 0x98, 0x29, 0x46, 0x01, 0xf0, 0xc1, 0xfd, 0x06, 0x99, 0x0e, + 0x91, 0x81, 0x49, 0x4f, 0xf4, 0x96, 0x72, 0x81, 0x4d, 0xc1, 0xeb, 0x00, 0x51, 0xb1, 0xfb, + 0xf2, 0xf1, 0x40, 0x31, 0xc1, 0xf3, 0xd0, 0x11, 0xa6, 0xf6, 0x64, 0x72, 0x11, 0x60, 0xb4, + 0xf9, 0x08, 0x10, 0xb4, 0xf9, 0x06, 0x20, 0x89, 0x18, 0x26, 0xf8, 0x2c, 0x1c, 0x77, 0x49, + 0x01, 0xeb, 0x60, 0x01, 0xb1, 0xfb, 0xf0, 0xf0, 0x26, 0xf8, 0x2a, 0x0c, 0x00, 0x98, 0x08, + 0x99, 0x00, 0x28, 0x40, 0xf0, 0x8a, 0x80, 0xa1, 0xf8, 0x20, 0x90, 0x02, 0x20, 0x88, 0x83, + 0x0a, 0x98, 0x03, 0x28, 0x14, 0xdb, 0x78, 0x6a, 0x70, 0x65, 0xb8, 0x6a, 0xb0, 0x65, 0xf8, + 0x6a, 0xf0, 0x65, 0x38, 0x6b, 0x30, 0x66, 0x78, 0x6b, 0x70, 0x66, 0xb8, 0x6b, 0xb0, 0x66, + 0x0a, 0x98, 0x80, 0x10, + + 0x01, 0x05, 0xff, 0xff, 0xe2, 0x44, 0x19, 0x00, 0xfa, 0x86, 0xf8, 0x76, 0x00, 0x0c, 0xe0, + 0xd0, 0x08, 0x00, 0x20, 0x10, 0x01, 0x04, 0x42, 0x0a, 0x98, 0x07, 0xeb, 0xc0, 0x00, 0xc1, + 0x68, 0x71, 0x65, 0x00, 0x69, 0xb0, 0x65, 0x86, 0xf8, 0x76, 0x80, 0x4f, 0xf0, 0x3f, 0x0a, + 0x4f, 0xf4, 0x80, 0x70, 0xa6, 0xf8, 0x6c, 0xa0, 0x85, 0xf8, 0xe0, 0x9c, 0xa6, 0xf8, 0x74, + 0x00, 0x05, 0x20, 0xa6, 0xf8, 0x7a, 0x00, 0x1f, 0x20, 0xa6, 0xf8, 0x78, 0x00, 0x82, 0x20, + 0x86, 0xf8, 0x8d, 0x00, 0x4f, 0xf4, 0x9b, 0x70, 0xa6, 0xf8, 0x7e, 0x00, 0x4f, 0xf4, 0xc3, + 0x70, 0xa6, 0xf8, 0x7c, 0x00, 0x43, 0xf2, 0x3a, 0x50, 0xa6, 0xf8, 0x88, 0x00, 0x42, 0xf2, + 0x09, 0x30, 0xa6, 0xf8, 0x90, 0x00, 0x41, 0xf2, 0x1b, 0x40, 0xa6, 0xf8, 0x92, 0x00, 0x04, + 0x20, 0x86, 0xf8, 0x96, 0x00, 0x3a, 0x20, 0x86, 0xf8, 0x95, 0x00, 0x4f, 0xf4, 0xa3, 0x70, + 0xa6, 0xf8, 0xa2, 0x00, 0xe4, 0x20, 0xa6, 0xf8, 0xa6, 0x00, 0xa6, 0xf8, 0xa4, 0x00, 0x7a, + 0x20, 0xa6, 0xf8, 0xa0, 0x00, 0x6c, 0x20, 0xf0, 0x80, 0x4f, 0xf6, 0x94, 0x70, 0x30, 0x81, + 0x1a, 0x20, 0x70, 0x82, 0xf0, 0x83, 0x30, 0x8e, 0x6f, 0xf3, 0x09, 0x00, 0x40, 0xf4, 0xcd, + 0x70, 0x30, 0x86, 0x85, 0xf8, 0x20, 0x98, 0x85, 0xf8, 0x00, 0x80, 0xb0, 0x8a, 0x20, 0xf4, + 0x60, 0x60, 0x40, 0xf4, 0xa0, 0x60, 0xb0, 0x82, 0x85, 0xf8, 0x30, 0x94, 0x30, 0x88, 0x20, + 0xf4, 0x40, 0x70, 0x30, 0x80, 0xcc, 0xe0, 0xc0, 0x46, 0x68, 0x10, 0x00, 0x40, 0x08, 0x20, + 0x00, 0x40, 0x1c, 0x09, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x3c, 0x24, 0x00, 0x40, 0xc0, + 0x00, 0x00, 0x20, 0x08, 0x99, 0x31, 0x20, 0xba, 0xf1, 0x00, 0x0f, 0x08, 0x84, 0x86, 0xf8, + 0x76, 0x80, 0x0a, 0x98, + + 0x01, 0x05, 0xff, 0xff, 0xdc, 0x45, 0x19, 0x00, 0xfa, 0x00, 0xf0, 0x07, 0x00, 0x0a, 0x90, + 0x29, 0x48, 0x52, 0xd1, 0xf9, 0x6b, 0xb1, 0x65, 0x39, 0x6c, 0x31, 0x66, 0x79, 0x6c, 0xb1, + 0x66, 0x97, 0xf8, 0x95, 0x10, 0x19, 0xb1, 0x4f, 0xf0, 0x07, 0x01, 0x86, 0xf8, 0x76, 0x10, + 0x1f, 0x21, 0xa6, 0xf8, 0x6c, 0x10, 0x00, 0x88, 0xa6, 0xf8, 0x74, 0x00, 0x04, 0x20, 0xa6, + 0xf8, 0x7a, 0x00, 0x13, 0x20, 0xa6, 0xf8, 0x78, 0x00, 0xad, 0x20, 0x86, 0xf8, 0x8d, 0x00, + 0x4f, 0xf4, 0xa8, 0x70, 0xa6, 0xf8, 0xa2, 0x00, 0xee, 0x20, 0xa6, 0xf8, 0xa6, 0x00, 0xa6, + 0xf8, 0xa4, 0x00, 0x83, 0x20, 0xa6, 0xf8, 0xa0, 0x00, 0xa6, 0xf8, 0x06, 0x90, 0xa6, 0xf8, + 0x08, 0x90, 0x30, 0x8e, 0x6f, 0xf3, 0x09, 0x00, 0x40, 0xf0, 0x64, 0x00, 0x30, 0x86, 0x85, + 0xf8, 0x00, 0x90, 0xb0, 0x8a, 0x20, 0xf4, 0x70, 0x60, 0x40, 0xf4, 0x00, 0x70, 0xb0, 0x82, + 0x85, 0xf8, 0x30, 0x84, 0x30, 0x88, 0x20, 0xf4, 0x00, 0x70, 0x40, 0xf4, 0x80, 0x70, 0x48, + 0xe0, 0xc0, 0x46, 0x64, 0x8c, 0x03, 0x42, 0x18, 0x1c, 0x00, 0x40, 0x40, 0x42, 0x0f, 0x00, + 0x00, 0xab, 0x87, 0x04, 0x6a, 0xff, 0xff, 0x5f, 0xeb, 0x51, 0xb8, 0x1e, 0x00, 0x0f, 0x02, + 0x42, 0xb0, 0x03, 0x00, 0x20, 0xb7, 0xf8, 0x96, 0x10, 0xa6, 0xf8, 0x5a, 0x10, 0x0f, 0x21, + 0xa6, 0xf8, 0x6c, 0x10, 0x80, 0x1c, 0x00, 0x88, 0xa6, 0xf8, 0x74, 0x00, 0x05, 0x20, 0xa6, + 0xf8, 0x7a, 0x00, 0x1f, 0x20, 0xa6, 0xf8, 0x78, 0x00, 0x82, 0x20, 0x86, 0xf8, 0x8d, 0x00, + 0x4f, 0xf4, 0xa3, 0x70, 0xa6, 0xf8, 0xa2, 0x00, 0xe4, 0x20, 0xa6, 0xf8, 0xa6, 0x00, 0xa6, + 0xf8, 0xa4, 0x00, 0x7a, 0x20, 0xa6, 0xf8, 0xa0, 0x00, 0x6c, 0x20, 0xf0, 0x80, 0x4f, 0xf6, + 0x94, 0x70, 0x30, 0x81, + + 0x01, 0x05, 0xff, 0xff, 0xd6, 0x46, 0x19, 0x00, 0xfa, 0x30, 0x8e, 0x6f, 0xf3, 0x09, 0x00, + 0x40, 0xf4, 0xcd, 0x70, 0x30, 0x86, 0x85, 0xf8, 0x00, 0x80, 0xb0, 0x8a, 0x20, 0xf4, 0x60, + 0x60, 0x40, 0xf4, 0xa0, 0x60, 0xb0, 0x82, 0x85, 0xf8, 0x30, 0x94, 0x30, 0x88, 0x20, 0xf4, + 0x40, 0x70, 0x30, 0x80, 0xaa, 0x20, 0x85, 0xf8, 0xe0, 0x8c, 0xa6, 0xf8, 0x7e, 0x00, 0xfa, + 0x20, 0xa6, 0xf8, 0x7c, 0x00, 0x43, 0xf2, 0x28, 0x60, 0xa6, 0xf8, 0x88, 0x00, 0x41, 0xf2, + 0x08, 0x30, 0xa6, 0xf8, 0x90, 0x00, 0x00, 0xf1, 0x01, 0x00, 0xa6, 0xf8, 0x92, 0x00, 0x02, + 0x20, 0x86, 0xf8, 0x96, 0x00, 0x32, 0x20, 0x86, 0xf8, 0x95, 0x00, 0x1a, 0x20, 0x70, 0x82, + 0xf0, 0x83, 0xb4, 0xf8, 0x62, 0x00, 0x00, 0x28, 0x0c, 0xbf, 0x85, 0xf8, 0x20, 0x98, 0x85, + 0xf8, 0x20, 0x88, 0x4f, 0xf0, 0x3f, 0x0a, 0x40, 0xf6, 0x12, 0x00, 0xb0, 0x84, 0x41, 0x20, + 0x06, 0xf8, 0x12, 0x0c, 0x09, 0x98, 0x03, 0x28, 0x05, 0xd1, 0xa0, 0x88, 0x40, 0x08, 0x28, + 0xbf, 0xdd, 0xf8, 0x18, 0xb0, 0x00, 0xd2, 0xc3, 0x46, 0xa5, 0xf5, 0x70, 0x60, 0x80, 0xf8, + 0x00, 0xb0, 0xb4, 0xf9, 0x06, 0x10, 0xfa, 0x20, 0x01, 0xfb, 0x00, 0xf1, 0x0d, 0x98, 0x40, + 0x1a, 0x01, 0xf0, 0x27, 0xfb, 0x07, 0x99, 0x00, 0xf5, 0x00, 0x03, 0x09, 0x68, 0x0f, 0x91, + 0xdd, 0xf8, 0x3c, 0xc0, 0x0d, 0x9a, 0x19, 0x0e, 0x0c, 0xfb, 0x11, 0x21, 0x00, 0x29, 0xb8, + 0xbf, 0x49, 0x42, 0x74, 0x4a, 0x8a, 0x42, 0x1b, 0xdd, 0xb4, 0xf8, 0xee, 0x10, 0x01, 0xf0, + 0x01, 0x01, 0x03, 0x91, 0x03, 0xf0, 0x7f, 0x43, 0x1b, 0x1a, 0x0f, 0x98, 0x10, 0x33, 0x59, + 0x11, 0x00, 0xf5, 0x80, 0x70, 0x40, 0x0a, 0x4f, 0xf4, 0x00, 0x72, 0x00, 0xfb, 0x01, 0x20, + 0x80, 0x12, 0x4f, 0xf4, + + 0x01, 0x05, 0xff, 0xff, 0xd0, 0x47, 0x19, 0x00, 0xfa, 0x00, 0x41, 0x40, 0xf2, 0x5b, 0x32, + 0x02, 0xfb, 0x00, 0x10, 0x00, 0x14, 0x26, 0xf8, 0x14, 0x0c, 0x58, 0x46, 0xff, 0xf7, 0x59, + 0xfc, 0x07, 0x98, 0x80, 0x7b, 0x60, 0xb1, 0x02, 0x98, 0x50, 0xb9, 0x00, 0x98, 0x00, 0x28, + 0x07, 0xbf, 0x08, 0x98, 0x80, 0xf8, 0x11, 0x80, 0x08, 0x98, 0x80, 0xf8, 0x13, 0x80, 0x01, + 0xf0, 0x82, 0xfe, 0x0e, 0x9a, 0x58, 0x46, 0xff, 0xf7, 0xa7, 0xfc, 0x0c, 0x98, 0x41, 0x46, + 0x01, 0xf0, 0x0d, 0xfb, 0x07, 0x98, 0x00, 0x7d, 0x40, 0xb9, 0x06, 0x98, 0x07, 0x21, 0x01, + 0xf0, 0xe6, 0xfa, 0x0b, 0x98, 0x00, 0x78, 0x0b, 0x99, 0xc0, 0x43, 0x08, 0x70, 0x94, 0xf8, + 0x76, 0x00, 0x28, 0xb1, 0x08, 0x98, 0xa0, 0xf5, 0x0a, 0x70, 0x00, 0x88, 0x40, 0x08, 0x05, + 0xd2, 0x01, 0x98, 0x40, 0x8a, 0x01, 0x99, 0x40, 0xf0, 0x07, 0x00, 0x48, 0x82, 0xa6, 0xf6, + 0x68, 0x70, 0x80, 0xf8, 0x00, 0xa0, 0x96, 0x48, 0x0f, 0x90, 0x80, 0xf8, 0x5c, 0x80, 0xa6, + 0xf6, 0x62, 0x60, 0x02, 0x78, 0xa6, 0xf6, 0x62, 0x60, 0x00, 0x88, 0xa6, 0xf6, 0x62, 0x61, + 0x40, 0xf0, 0x0f, 0x00, 0x08, 0x80, 0xa6, 0xf6, 0x62, 0x60, 0x00, 0x88, 0x02, 0xf0, 0x0f, + 0x02, 0x20, 0xf0, 0x0f, 0x00, 0x02, 0x43, 0xa6, 0xf6, 0x62, 0x60, 0x02, 0x80, 0xff, 0xf7, + 0xcb, 0xfc, 0x08, 0x98, 0x30, 0xf8, 0x10, 0x0c, 0x07, 0x99, 0xc0, 0x11, 0x00, 0xf0, 0x01, + 0x00, 0x81, 0xf8, 0x32, 0x00, 0x40, 0x46, 0x86, 0xf8, 0x54, 0x81, 0x01, 0xf0, 0x6e, 0xff, + 0x01, 0xf0, 0x73, 0xfa, 0x94, 0xf9, 0x52, 0x10, 0x81, 0x42, 0xbc, 0xbf, 0x07, 0x98, 0x80, + 0xf8, 0x33, 0x80, 0x02, 0x98, 0x00, 0x28, 0x40, 0xf0, 0x64, 0x81, 0x03, 0x98, 0x18, 0xb1, + 0xa5, 0xf2, 0xdc, 0x50, + + 0x01, 0x05, 0xff, 0xff, 0xca, 0x48, 0x19, 0x00, 0xfa, 0x80, 0xf8, 0x00, 0x90, 0x00, 0x98, + 0x00, 0x28, 0x14, 0xbf, 0x07, 0x20, 0x03, 0x20, 0x08, 0x99, 0xdf, 0xf8, 0x34, 0xa2, 0x01, + 0xf8, 0x33, 0x0c, 0x00, 0x98, 0x20, 0xb9, 0x0a, 0x98, 0x81, 0x10, 0x50, 0x46, 0x00, 0x1d, + 0x01, 0x80, 0x09, 0x98, 0x03, 0x28, 0x4d, 0xd0, 0x00, 0x98, 0x01, 0x28, 0x08, 0xd0, 0xb7, + 0xf8, 0xa8, 0x00, 0x08, 0x99, 0xc0, 0x00, 0xa0, 0xf5, 0x18, 0x70, 0x08, 0x80, 0x88, 0x20, + 0x00, 0xe0, 0x81, 0x20, 0x01, 0xf0, 0x56, 0xff, 0x07, 0x46, 0x38, 0x0a, 0x07, 0x98, 0x03, + 0xd2, 0x90, 0xf8, 0x32, 0x00, 0x01, 0x28, 0x07, 0xd1, 0xa5, 0xf2, 0xdc, 0x50, 0x80, 0xf8, + 0x00, 0x80, 0xcd, 0xf8, 0x10, 0x80, 0x06, 0x98, 0x03, 0x90, 0x00, 0x98, 0x38, 0xbb, 0x38, + 0x0a, 0x02, 0xd3, 0x08, 0x20, 0x01, 0xf0, 0x3f, 0xff, 0x86, 0xf8, 0x54, 0x81, 0x40, 0x46, + 0x01, 0xf0, 0x1c, 0xff, 0x01, 0xf0, 0x21, 0xfa, 0x94, 0xf9, 0xc1, 0x10, 0x81, 0x42, 0x0f, + 0xdb, 0x07, 0x98, 0x90, 0xf8, 0x32, 0x00, 0x01, 0x28, 0x0a, 0xd0, 0x94, 0xf8, 0xc0, 0x00, + 0x40, 0x08, 0x0e, 0xd3, 0x09, 0x98, 0x60, 0xb9, 0x01, 0xf0, 0xcc, 0xfd, 0x0a, 0xe1, 0x28, + 0xe7, 0x09, 0x00, 0x03, 0x98, 0xff, 0xf7, 0x80, 0xfc, 0x0a, 0x20, 0x01, 0xf0, 0x00, 0xff, + 0x85, 0xf8, 0x00, 0x88, 0x09, 0x98, 0x02, 0x28, 0x01, 0xd1, 0x01, 0xf0, 0x79, 0xfb, 0x09, + 0x98, 0x03, 0x28, 0x2a, 0xd1, 0xb4, 0xf8, 0x5c, 0x00, 0x38, 0xb3, 0x86, 0xf8, 0x54, 0x81, + 0x40, 0x46, 0x01, 0xf0, 0xee, 0xfe, 0x01, 0xf0, 0xf3, 0xf9, 0x94, 0xf9, 0xc1, 0x10, 0x81, + 0x42, 0x18, 0xdb, 0x01, 0xf0, 0x66, 0xfb, 0x4f, 0xf4, 0xfa, 0x60, 0x01, 0xf0, 0x18, 0xff, + 0x91, 0x20, 0x01, 0xf0, + + 0x01, 0x05, 0xff, 0xff, 0xc4, 0x49, 0x19, 0x00, 0xfa, 0xfd, 0xfe, 0x07, 0x46, 0x17, 0xf0, + 0x81, 0x0f, 0x0b, 0xd1, 0x01, 0xf0, 0xb3, 0xfb, 0x64, 0x20, 0x01, 0xf0, 0x0c, 0xff, 0x91, + 0x20, 0x01, 0xf0, 0xf1, 0xfe, 0x07, 0x46, 0x17, 0xf0, 0x81, 0x0f, 0xdb, 0xd0, 0x38, 0x0a, + 0x01, 0xd3, 0x01, 0xf0, 0xa5, 0xfb, 0x00, 0x98, 0x01, 0x28, 0x04, 0xd1, 0x38, 0x0a, 0x02, + 0xd3, 0x40, 0x46, 0x01, 0xf0, 0xe1, 0xfe, 0x00, 0x98, 0x10, 0xb9, 0x40, 0x46, 0x01, 0xf0, + 0xdc, 0xfe, 0x28, 0x20, 0x01, 0xf0, 0xfa, 0xfe, 0x00, 0x98, 0x01, 0x28, 0x02, 0xd1, 0x03, + 0x98, 0xff, 0xf7, 0x32, 0xfc, 0xb4, 0xf8, 0x4e, 0x00, 0x00, 0xf1, 0x01, 0x00, 0xa4, 0xf8, + 0x4e, 0x00, 0x03, 0x98, 0xe0, 0xb9, 0x94, 0xf8, 0xc0, 0x00, 0xdd, 0xf8, 0x18, 0xb0, 0x00, + 0x11, 0x00, 0xf0, 0x07, 0x00, 0x02, 0x28, 0x08, 0xbf, 0xc3, 0x46, 0xbb, 0xf1, 0x00, 0x0f, + 0x0d, 0xd1, 0x01, 0x28, 0x09, 0x98, 0x0c, 0xd0, 0x58, 0xb9, 0x04, 0x98, 0x48, 0xb1, 0x07, + 0x98, 0x90, 0xf8, 0x32, 0x00, 0x28, 0xb9, 0x07, 0x98, 0x90, 0xf8, 0x33, 0x00, 0x08, 0xb9, + 0xcd, 0xf8, 0x14, 0x80, 0x84, 0xf8, 0x0c, 0x90, 0x05, 0x98, 0x18, 0xb9, 0x0a, 0x20, 0x01, + 0xf0, 0x89, 0xfe, 0x03, 0xe0, 0x01, 0xf0, 0x06, 0xfb, 0x84, 0xf8, 0x0c, 0x80, 0x00, 0x98, + 0x10, 0xb9, 0x0a, 0x98, 0x03, 0x28, 0x16, 0xdb, 0x96, 0xf8, 0x99, 0x00, 0x03, 0x28, 0x08, + 0xbf, 0x04, 0x20, 0x00, 0x99, 0x00, 0x29, 0x08, 0xbf, 0xaa, 0xf8, 0x04, 0x00, 0x0d, 0xd0, + 0x8a, 0xf8, 0x06, 0x00, 0x96, 0xf8, 0x98, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x8a, 0xf8, 0x07, + 0x00, 0x04, 0xe0, 0xc0, 0x46, 0x08, 0x20, 0x00, 0x42, 0xaa, 0xf8, 0x04, 0x90, 0x35, 0x4f, + 0x0a, 0x20, 0x87, 0xf8, + + 0x01, 0x05, 0xff, 0xff, 0xbe, 0x4a, 0x19, 0x00, 0xfa, 0x24, 0x90, 0x01, 0xf0, 0x60, 0xfe, + 0x86, 0xf8, 0x54, 0x81, 0x40, 0x46, 0x01, 0xf0, 0x5b, 0xfe, 0x87, 0xf8, 0x00, 0x90, 0x0f, + 0x98, 0x80, 0xf8, 0x00, 0x90, 0x0c, 0x20, 0x01, 0xf0, 0x7c, 0xfe, 0x08, 0x98, 0x80, 0x8b, + 0x01, 0x28, 0x08, 0xbf, 0xcd, 0xf8, 0x18, 0x80, 0xe0, 0x89, 0x84, 0xf8, 0x0d, 0x90, 0x01, + 0x28, 0x0f, 0xd1, 0x06, 0x98, 0x01, 0x28, 0x0c, 0xd1, 0x05, 0x98, 0x01, 0x28, 0x09, 0xd1, + 0xbb, 0xf1, 0x00, 0x0f, 0x06, 0xd1, 0x01, 0xf0, 0x17, 0xfb, 0x84, 0xf8, 0x0d, 0x80, 0x06, + 0xe0, 0x30, 0x00, 0x00, 0x20, 0x85, 0xf8, 0x00, 0x98, 0x06, 0x20, 0x01, 0xf0, 0x33, 0xfe, + 0x85, 0xf8, 0x40, 0x88, 0x00, 0x98, 0x08, 0x99, 0x00, 0x28, 0x2f, 0xd1, 0x04, 0x20, 0x01, + 0xf8, 0x33, 0x0c, 0x10, 0x20, 0x01, 0xf0, 0x66, 0xfe, 0x09, 0x20, 0x01, 0xf0, 0x42, 0xfe, + 0x61, 0x7b, 0x01, 0x29, 0x08, 0xbf, 0x85, 0xf8, 0x00, 0x98, 0x40, 0x08, 0x0a, 0xd3, 0x07, + 0x98, 0x90, 0xf8, 0x32, 0x00, 0x30, 0xb9, 0x07, 0x98, 0x90, 0xf8, 0x33, 0x00, 0x10, 0xb9, + 0x40, 0xf2, 0x14, 0x60, 0xb0, 0x84, 0x08, 0x98, 0x06, 0x21, 0x00, 0xf8, 0x33, 0x1c, 0x64, + 0x20, 0x01, 0xf0, 0x4a, 0xfe, 0x09, 0x20, 0x01, 0xf0, 0x31, 0xfe, 0x40, 0x08, 0x08, 0xd3, + 0x0a, 0x20, 0x01, 0xf0, 0x03, 0xfe, 0xa5, 0xf5, 0xb2, 0x65, 0x87, 0xf8, 0x1c, 0x90, 0x85, + 0xf8, 0x00, 0x80, 0x10, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x90, 0x2c, 0x02, 0x42, 0x30, 0xb5, + 0x29, 0x4c, 0x00, 0x25, 0x20, 0x78, 0x01, 0x28, 0x47, 0xd1, 0x28, 0x48, 0x02, 0x46, 0xbe, + 0x3a, 0x15, 0x80, 0x95, 0x70, 0x15, 0x71, 0x95, 0x71, 0xb2, 0xf8, 0x42, 0x10, 0xc9, 0xb2, + 0xa2, 0xf8, 0x42, 0x10, + + 0x01, 0x05, 0xff, 0xff, 0xb8, 0x4b, 0x19, 0x00, 0xfa, 0x21, 0x49, 0x0d, 0x70, 0xa2, 0xf6, + 0xf4, 0x31, 0x0d, 0x80, 0xa2, 0xf6, 0xf2, 0x31, 0x0d, 0x80, 0x00, 0x88, 0x20, 0xf0, 0x03, + 0x00, 0xa2, 0xf8, 0xbe, 0x00, 0xb1, 0x48, 0x81, 0x6b, 0xa2, 0xf6, 0xfc, 0x33, 0x19, 0x60, + 0xc1, 0x6b, 0xa2, 0xf6, 0xf8, 0x33, 0x19, 0x60, 0x90, 0xf8, 0x41, 0x10, 0xac, 0x4b, 0x19, + 0x70, 0x90, 0xf8, 0x40, 0x10, 0x82, 0xf8, 0xe1, 0x15, 0x90, 0xf8, 0x42, 0x10, 0x82, 0xf8, + 0xdd, 0x14, 0x90, 0xf8, 0x43, 0x10, 0x82, 0xf8, 0xdc, 0x14, 0x41, 0x6c, 0xa6, 0x4a, 0x11, + 0x60, 0xa6, 0x49, 0x90, 0xf8, 0x48, 0x20, 0x81, 0xf8, 0x7a, 0x20, 0x90, 0xf8, 0x49, 0x00, + 0x81, 0xf8, 0x7e, 0x00, 0x28, 0x46, 0x01, 0xf0, 0xd1, 0xfa, 0x09, 0x48, 0x00, 0x78, 0x10, + 0xb9, 0x10, 0x20, 0x08, 0x49, 0x08, 0x80, 0x25, 0x70, 0x30, 0xbd, 0x01, 0x12, 0x49, 0x42, + 0x08, 0x43, 0xc0, 0xb2, 0x70, 0x47, 0x24, 0x09, 0x00, 0x20, 0x4c, 0x8c, 0x03, 0x42, 0xd6, + 0x1c, 0x00, 0x40, 0x87, 0x00, 0x00, 0x20, 0x1e, 0x24, 0x00, 0x40, 0x2d, 0xe9, 0xf0, 0x4f, + 0xad, 0xf1, 0x7c, 0x0d, 0x04, 0x93, 0x05, 0x92, 0x06, 0x91, 0x91, 0x49, 0x07, 0x90, 0x40, + 0x08, 0x08, 0x91, 0x94, 0x49, 0x09, 0x91, 0x95, 0x49, 0x0a, 0x91, 0x96, 0x49, 0x0b, 0x91, + 0xc0, 0xf0, 0x70, 0x81, 0xdf, 0xf8, 0x20, 0x82, 0x8c, 0x48, 0x01, 0x46, 0x89, 0x1e, 0x0a, + 0x68, 0xc8, 0xf8, 0x38, 0x20, 0x4a, 0x68, 0xc8, 0xf8, 0x3c, 0x20, 0x84, 0x4a, 0x12, 0x1f, + 0x92, 0xf8, 0x05, 0x31, 0x88, 0xf8, 0x40, 0x30, 0x80, 0x4d, 0x2b, 0x78, 0x88, 0xf8, 0x41, + 0x30, 0x53, 0x78, 0x88, 0xf8, 0x42, 0x30, 0x13, 0x78, 0x88, 0xf8, 0x43, 0x30, 0x52, 0x68, + 0xc8, 0xf8, 0x44, 0x20, + + 0x01, 0x05, 0xff, 0xff, 0xb2, 0x4c, 0x19, 0x00, 0xfa, 0xdd, 0xf8, 0x20, 0x90, 0x99, 0xf8, + 0x7a, 0x20, 0x88, 0xf8, 0x48, 0x20, 0x99, 0xf8, 0x7e, 0x20, 0x88, 0xf8, 0x49, 0x20, 0x99, + 0xf8, 0x78, 0x20, 0x89, 0xf8, 0x7a, 0x20, 0x99, 0xf8, 0x7c, 0x20, 0x89, 0xf8, 0x7e, 0x20, + 0x19, 0x22, 0x8a, 0x70, 0x00, 0x24, 0x72, 0x49, 0x0c, 0x91, 0x81, 0xf8, 0x20, 0x40, 0x0c, + 0x70, 0x01, 0x88, 0x21, 0xf4, 0x00, 0x61, 0x41, 0xf4, 0xe0, 0x61, 0x01, 0x80, 0x6f, 0x4f, + 0xa7, 0xf5, 0xa3, 0x71, 0x00, 0x88, 0x20, 0xf4, 0x40, 0x50, 0x08, 0x80, 0x3f, 0x20, 0xa7, + 0xf5, 0xa2, 0x71, 0x08, 0x70, 0x08, 0x20, 0xa7, 0xf2, 0x43, 0x11, 0x08, 0x70, 0x3c, 0x20, + 0xa7, 0xf5, 0xa1, 0x71, 0x08, 0x70, 0x4f, 0xf0, 0x18, 0x0b, 0xa7, 0xf2, 0x41, 0x10, 0x80, + 0xf8, 0x00, 0xb0, 0x63, 0x48, 0x01, 0xf0, 0x55, 0xf8, 0x01, 0x22, 0xc7, 0xf8, 0xf4, 0x0a, + 0x0d, 0x92, 0x2a, 0x70, 0x99, 0xf8, 0xd4, 0x00, 0x00, 0x11, 0x40, 0xf0, 0x10, 0x00, 0x87, + 0xf8, 0x91, 0x0f, 0x99, 0xf8, 0xd4, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x87, 0xf8, 0x90, 0x0f, + 0xd8, 0xf8, 0x04, 0x00, 0xc7, 0xf8, 0x94, 0x0f, 0x59, 0x48, 0x4f, 0xf4, 0xa0, 0x71, 0x09, + 0x9d, 0x84, 0x80, 0x41, 0x80, 0x85, 0xf8, 0x9f, 0x45, 0x0a, 0x9e, 0x51, 0x20, 0x96, 0xf8, + 0x00, 0xa0, 0x30, 0x70, 0x20, 0x46, 0x25, 0xf8, 0x42, 0x4c, 0x88, 0xf8, 0x14, 0x20, 0xff, + 0xf7, 0xa3, 0xfa, 0x42, 0xf2, 0x09, 0x00, 0x86, 0xf8, 0x00, 0xa0, 0x38, 0x80, 0xb9, 0xf8, + 0xae, 0x00, 0x25, 0xf8, 0x4a, 0x0c, 0x4c, 0x48, 0x0e, 0x90, 0x06, 0x98, 0x0f, 0x90, 0x05, + 0x98, 0x10, 0x90, 0x0b, 0x98, 0xdd, 0xf8, 0x10, 0xa0, 0x86, 0x1c, 0x11, 0x90, 0x45, 0xf6, + 0xe3, 0x50, 0x12, 0x90, + + 0x01, 0x05, 0xff, 0xff, 0xac, 0x4d, 0x19, 0x00, 0xfa, 0x0d, 0xf1, 0x07, 0x00, 0xcd, 0xf8, + 0x4c, 0xb0, 0x14, 0x90, 0x0d, 0xf1, 0x0b, 0x00, 0x15, 0x90, 0x0d, 0xf1, 0x03, 0x00, 0x16, + 0x90, 0xad, 0xf1, 0x01, 0x00, 0x17, 0x90, 0x40, 0xf6, 0x6c, 0x10, 0x18, 0x90, 0x3f, 0x48, + 0x19, 0x94, 0xcd, 0xf8, 0x68, 0x80, 0x1b, 0x90, 0x19, 0x98, 0x28, 0xb1, 0x25, 0xf8, 0x42, + 0x4c, 0x18, 0x98, 0x0d, 0x99, 0x01, 0xf0, 0x24, 0xf8, 0xdd, 0xf8, 0x34, 0x80, 0xdd, 0xf8, + 0x38, 0xb0, 0x40, 0x46, 0x8b, 0xf8, 0x00, 0x80, 0x01, 0xf0, 0xc5, 0xfc, 0xd7, 0xf8, 0x24, + 0x0b, 0x8b, 0xf8, 0x00, 0x40, 0x17, 0x99, 0x01, 0xf8, 0x01, 0x0f, 0x17, 0x91, 0x16, 0x9a, + 0x01, 0x0a, 0x02, 0xf8, 0x01, 0x1f, 0x16, 0x92, 0x15, 0x9a, 0x01, 0x0c, 0x02, 0xf8, 0x01, + 0x1f, 0x15, 0x92, 0x14, 0x99, 0x00, 0x0e, 0x01, 0xf8, 0x01, 0x0f, 0x14, 0x91, 0x99, 0xf8, + 0xcc, 0x10, 0x28, 0x88, 0xaa, 0xf1, 0x02, 0x0a, 0x61, 0xf3, 0x1f, 0x20, 0x28, 0x80, 0x8b, + 0xf8, 0xbc, 0x86, 0x09, 0xf1, 0xcb, 0x08, 0x4f, 0xf0, 0x05, 0x0b, 0x1a, 0x98, 0x1b, 0x99, + 0x00, 0x68, 0x13, 0x9a, 0xb0, 0xfb, 0xf1, 0xf1, 0xb9, 0xf8, 0xb2, 0x00, 0x42, 0x43, 0xb9, + 0xf8, 0xb6, 0x00, 0x40, 0x02, 0xa0, 0xeb, 0x12, 0x10, 0x00, 0x0c, 0x48, 0x43, 0x81, 0x01, + 0x01, 0xeb, 0x40, 0x11, 0x12, 0x98, 0xb1, 0xfb, 0xf0, 0xf0, 0x80, 0xb2, 0x2a, 0xf8, 0x02, + 0x0f, 0x25, 0xf8, 0x4e, 0x0c, 0x28, 0x88, 0x18, 0xf8, 0x01, 0x1f, 0x61, 0xf3, 0x1f, 0x20, + 0x28, 0x80, 0x0d, 0x98, 0xa7, 0xf2, 0x4b, 0x11, 0x08, 0x70, 0x01, 0xf0, 0x79, 0xfc, 0x4f, + 0xf4, 0x80, 0x70, 0x1d, 0xe0, 0xd0, 0x08, 0x00, 0x20, 0x00, 0x3f, 0x04, 0x42, 0xf8, 0x20, + 0x00, 0x40, 0x00, 0x02, + + 0x01, 0x05, 0xff, 0xff, 0xa6, 0x4e, 0x19, 0x00, 0xfa, 0x00, 0x20, 0x80, 0x03, 0x02, 0x42, + 0x1e, 0x10, 0x00, 0x40, 0x64, 0x11, 0x00, 0x40, 0x00, 0x09, 0x3d, 0x00, 0x5a, 0x1c, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x20, 0x1c, 0x09, 0x00, 0x20, 0x90, 0x85, 0x03, 0x42, 0x40, 0x04, + 0x00, 0x20, 0xa0, 0x86, 0x01, 0x00, 0xa0, 0xf1, 0x01, 0x00, 0x0c, 0x99, 0x91, 0xf8, 0xa0, + 0x11, 0x09, 0xb9, 0x00, 0x28, 0xf7, 0xd1, 0xa7, 0xf5, 0x9c, 0x71, 0x0f, 0x9a, 0x09, 0x88, + 0x22, 0xf8, 0x02, 0x1b, 0x0f, 0x92, 0xa7, 0xf5, 0x9b, 0x71, 0x10, 0x9a, 0x09, 0x88, 0x22, + 0xf8, 0x02, 0x1b, 0x10, 0x92, 0x11, 0x99, 0x21, 0xf8, 0x08, 0x4b, 0x11, 0x91, 0x34, 0x80, + 0x74, 0x80, 0xb4, 0x80, 0x13, 0x99, 0x40, 0x31, 0x13, 0x91, 0x12, 0x99, 0x08, 0x36, 0xbb, + 0xf1, 0x01, 0x0b, 0x01, 0xf1, 0x28, 0x01, 0x12, 0x91, 0x91, 0xd1, 0x18, 0x98, 0x14, 0x30, + 0x80, 0xb2, 0x18, 0x90, 0x19, 0x98, 0x0a, 0xf1, 0x02, 0x0a, 0x40, 0x1c, 0x04, 0x28, 0x19, + 0x90, 0xff, 0xf4, 0x50, 0xaf, 0xec, 0x80, 0xb5, 0xf8, 0x7c, 0x00, 0x40, 0xf0, 0x03, 0x00, + 0xa5, 0xf8, 0x7c, 0x00, 0x0f, 0x20, 0x87, 0xf8, 0x00, 0x0b, 0x0d, 0x98, 0x01, 0xf0, 0x19, + 0xfc, 0x87, 0xf8, 0x00, 0x4b, 0x07, 0x98, 0x0a, 0x9c, 0x80, 0x08, 0xc0, 0xf0, 0x90, 0x81, + 0x20, 0x78, 0x41, 0x28, 0x12, 0xbf, 0x07, 0x25, 0x77, 0x48, 0x05, 0x78, 0x40, 0xf2, 0x6e, + 0x20, 0x01, 0xf0, 0x47, 0xfc, 0x00, 0x26, 0x37, 0x46, 0x00, 0x2d, 0xba, 0x46, 0xb0, 0x46, + 0x4f, 0xf4, 0x8e, 0x70, 0x1c, 0x94, 0x00, 0xf0, 0x6a, 0x81, 0x09, 0x9c, 0x14, 0x90, 0x4f, + 0xf4, 0x8d, 0x70, 0x15, 0x90, 0x4f, 0xf4, 0x8f, 0x70, 0x16, 0x90, 0x4f, 0xf4, 0x90, 0x70, + 0x17, 0x90, 0x4f, 0xf4, + + 0x01, 0x05, 0xff, 0xff, 0xa0, 0x4f, 0x19, 0x00, 0xfa, 0x9a, 0x70, 0x0e, 0x90, 0x69, 0x48, + 0x1d, 0x90, 0x01, 0x20, 0x0a, 0x90, 0x0d, 0x95, 0x08, 0x9d, 0xd1, 0x46, 0xdd, 0xf8, 0x2c, + 0xb0, 0x08, 0x96, 0x50, 0x46, 0x09, 0x90, 0x64, 0x48, 0x1e, 0x90, 0x04, 0x98, 0x10, 0x90, + 0x06, 0x98, 0x18, 0x90, 0x05, 0x98, 0x07, 0x90, 0x04, 0x20, 0x0c, 0x90, 0x09, 0x98, 0x19, + 0x90, 0x0d, 0xf1, 0x07, 0x00, 0x0f, 0x90, 0x0d, 0xf1, 0x0b, 0x00, 0x1a, 0x90, 0x0d, 0xf1, + 0x03, 0x00, 0x13, 0x90, 0xad, 0xf1, 0x01, 0x00, 0x12, 0x90, 0x12, 0x99, 0x11, 0xf8, 0x01, + 0x0f, 0x00, 0x02, 0x12, 0x91, 0x24, 0xf8, 0x42, 0x0c, 0x13, 0x98, 0x10, 0xf8, 0x01, 0x1f, + 0x13, 0x90, 0x04, 0xf8, 0x40, 0x1c, 0x1a, 0x98, 0x10, 0xf8, 0x01, 0x1f, 0x1a, 0x90, 0x04, + 0xf8, 0x3e, 0x1c, 0x0f, 0x98, 0x10, 0xf8, 0x01, 0x1f, 0x0f, 0x90, 0x05, 0xf1, 0xcb, 0x00, + 0x04, 0xf8, 0x3c, 0x1c, 0x11, 0x90, 0x05, 0x20, 0x1b, 0x90, 0x10, 0x98, 0x80, 0x1e, 0x10, + 0x90, 0x18, 0x98, 0x80, 0x1e, 0x18, 0x90, 0x07, 0x98, 0x80, 0x1e, 0x07, 0x90, 0x10, 0x99, + 0x31, 0xf8, 0x02, 0x0f, 0x10, 0x91, 0x24, 0xf8, 0x4e, 0x0c, 0x11, 0x98, 0x10, 0xf8, 0x01, + 0x1f, 0x11, 0x90, 0x20, 0x88, 0x61, 0xf3, 0x1f, 0x20, 0x20, 0x80, 0x18, 0x99, 0x31, 0xf8, + 0x02, 0x0f, 0x18, 0x91, 0xa4, 0xf6, 0x36, 0x41, 0x08, 0x80, 0x07, 0x99, 0x31, 0xf8, 0x02, + 0x0f, 0x07, 0x91, 0xa4, 0xf6, 0x34, 0x41, 0x08, 0x80, 0x1c, 0x98, 0x0a, 0x99, 0x00, 0x78, + 0x41, 0x28, 0x2f, 0xd0, 0xa4, 0xf6, 0x42, 0x40, 0x01, 0x70, 0x38, 0x46, 0xff, 0xf7, 0xd5, + 0xfd, 0x0b, 0xf8, 0x06, 0x00, 0x40, 0x46, 0xff, 0xf7, 0xd0, 0xfd, 0x5e, 0x44, 0x70, 0x70, + 0x50, 0x46, 0xff, 0xf7, + + 0x01, 0x05, 0xff, 0xff, 0x9a, 0x50, 0x19, 0x00, 0xfa, 0xcb, 0xfd, 0xb0, 0x70, 0x48, 0x46, + 0xff, 0xf7, 0xc7, 0xfd, 0xf0, 0x70, 0x08, 0x99, 0x8a, 0x01, 0x02, 0xeb, 0x01, 0x12, 0x19, + 0x99, 0x89, 0x18, 0x1d, 0x9a, 0x12, 0x78, 0x00, 0x2a, 0xfb, 0xd0, 0x8e, 0xb2, 0xa4, 0xf6, + 0x24, 0x41, 0x0f, 0x88, 0xa4, 0xf6, 0x26, 0x41, 0xb1, 0xf8, 0x00, 0x80, 0xa4, 0xf6, 0x2a, + 0x41, 0xb1, 0xf8, 0x00, 0xa0, 0xa4, 0xf6, 0x28, 0x41, 0xb1, 0xf8, 0x00, 0x90, 0x9e, 0xe0, + 0x0a, 0x9e, 0x30, 0x46, 0x01, 0xf0, 0x50, 0xfb, 0xa4, 0xf6, 0x42, 0x40, 0x06, 0x70, 0x09, + 0x98, 0x01, 0xf0, 0x4a, 0xfb, 0x1d, 0x98, 0x00, 0x78, 0x00, 0x28, 0xfb, 0xd0, 0xa4, 0xf6, + 0x24, 0x40, 0x07, 0x88, 0xa4, 0xf6, 0x26, 0x40, 0xb0, 0xf8, 0x00, 0x80, 0xa4, 0xf6, 0x2a, + 0x40, 0xb0, 0xf8, 0x00, 0xa0, 0x47, 0x45, 0xa4, 0xf6, 0x28, 0x40, 0xb0, 0xf8, 0x00, 0x90, + 0xb4, 0xbf, 0x40, 0x46, 0x38, 0x1c, 0xca, 0x45, 0xb4, 0xbf, 0x49, 0x46, 0x51, 0x46, 0x88, + 0x42, 0xb8, 0xbf, 0x08, 0x1c, 0x14, 0x99, 0x69, 0x5a, 0x81, 0x42, 0x0f, 0xdb, 0x15, 0x99, + 0x69, 0x5a, 0x81, 0x42, 0x46, 0xdc, 0x95, 0xf8, 0xd5, 0x00, 0x16, 0x99, 0x00, 0xf0, 0x0f, + 0x00, 0x09, 0xe0, 0x16, 0x01, 0x00, 0x20, 0x00, 0x05, 0x02, 0x42, 0x40, 0x24, 0x00, 0x40, + 0x95, 0xf8, 0xd5, 0x00, 0x00, 0x11, 0x17, 0x99, 0x6e, 0x5a, 0x00, 0x2e, 0x84, 0xf8, 0x9f, + 0x05, 0x31, 0xd0, 0xa4, 0xf6, 0x36, 0x40, 0x09, 0x9f, 0x07, 0x80, 0xa4, 0xf6, 0x34, 0x40, + 0x07, 0x80, 0xdd, 0xf8, 0x28, 0x80, 0x40, 0x46, 0x01, 0xf0, 0x03, 0xfb, 0xa4, 0xf6, 0x42, + 0x40, 0x80, 0xf8, 0x00, 0x80, 0x38, 0x46, 0x01, 0xf0, 0xfc, 0xfa, 0x1d, 0x98, 0x00, 0x78, + 0x00, 0x28, 0xfb, 0xd0, + + 0x01, 0x05, 0xff, 0xff, 0x94, 0x51, 0x19, 0x00, 0xfa, 0xa4, 0xf6, 0x24, 0x40, 0x00, 0x88, + 0x70, 0x43, 0x00, 0x12, 0x87, 0xb2, 0xa4, 0xf6, 0x26, 0x40, 0x00, 0x88, 0x70, 0x43, 0x00, + 0x12, 0x1f, 0xfa, 0x80, 0xf8, 0xa4, 0xf6, 0x2a, 0x40, 0x00, 0x88, 0x70, 0x43, 0x00, 0x12, + 0x1f, 0xfa, 0x80, 0xfa, 0xa4, 0xf6, 0x28, 0x40, 0x00, 0x88, 0x46, 0x43, 0x30, 0x12, 0x1f, + 0xfa, 0x80, 0xf9, 0x19, 0x98, 0x86, 0xb2, 0x70, 0x00, 0x3b, 0xf8, 0x00, 0x10, 0xb9, 0x42, + 0xb8, 0xbf, 0x2b, 0xf8, 0x00, 0x70, 0x0b, 0xeb, 0x46, 0x00, 0x80, 0x1c, 0x01, 0x88, 0x41, + 0x45, 0xb8, 0xbf, 0xa0, 0xf8, 0x00, 0x80, 0x41, 0x88, 0x51, 0x45, 0xb8, 0xbf, 0xa0, 0xf8, + 0x02, 0xa0, 0x81, 0x88, 0x49, 0x45, 0xb8, 0xbf, 0xa0, 0xf8, 0x04, 0x90, 0x09, 0x98, 0x84, + 0xf8, 0x9f, 0x05, 0x0a, 0x98, 0x84, 0xf8, 0xdb, 0x07, 0x1e, 0x98, 0x01, 0x88, 0x0e, 0x98, + 0x28, 0x5a, 0xb1, 0xeb, 0xc0, 0x0f, 0x32, 0xdc, 0x19, 0x99, 0x09, 0x1d, 0x19, 0x91, 0x1b, + 0x99, 0x49, 0x1e, 0x1b, 0x91, 0x7f, 0xf4, 0x08, 0xaf, 0x07, 0x99, 0x89, 0x1c, 0x07, 0x91, + 0x18, 0x99, 0x89, 0x1c, 0x18, 0x91, 0x10, 0x99, 0x89, 0x1c, 0x10, 0x91, 0x0c, 0x99, 0x49, + 0x1e, 0x0c, 0x91, 0x7f, 0xf4, 0xd3, 0xae, 0x09, 0x98, 0x01, 0xf0, 0x9c, 0xfa, 0x08, 0x99, + 0x49, 0x1c, 0x08, 0x91, 0x0d, 0x99, 0x49, 0x1e, 0x0d, 0x91, 0x7f, 0xf4, 0xb2, 0xae, 0x1c, + 0x98, 0x00, 0x78, 0x41, 0x28, 0x0d, 0xd0, 0x38, 0x46, 0x0b, 0x9a, 0xff, 0xf7, 0xe3, 0xfc, + 0x90, 0x55, 0x40, 0x46, 0xff, 0xf7, 0xdf, 0xfc, 0xb6, 0x18, 0x70, 0x70, 0x50, 0x46, 0xff, + 0xf7, 0xda, 0xfc, 0xb0, 0x70, 0x1f, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x10, 0xb5, 0xad, 0xf1, + 0x78, 0x0d, 0x58, 0x4c, + + 0x01, 0x05, 0xff, 0xff, 0x8e, 0x52, 0x19, 0x00, 0xfa, 0x4f, 0xf0, 0x00, 0x00, 0x84, 0xf8, + 0x57, 0x00, 0x57, 0x48, 0x00, 0x78, 0x58, 0xb9, 0x01, 0x20, 0x56, 0x49, 0x08, 0x70, 0x14, + 0xab, 0x0a, 0xaa, 0x69, 0x46, 0x03, 0x20, 0xff, 0xf7, 0xd1, 0xfc, 0xff, 0x20, 0x84, 0xf8, + 0x57, 0x00, 0x1e, 0xb0, 0x10, 0xbd, 0x4f, 0x48, 0x01, 0x78, 0x02, 0x29, 0x03, 0xd1, 0x00, + 0x21, 0x4e, 0x4a, 0x11, 0x70, 0x01, 0x70, 0x4d, 0x49, 0x10, 0x20, 0x08, 0x80, 0x70, 0x47, + 0xf0, 0xb5, 0x4c, 0x4a, 0x11, 0x88, 0x53, 0x88, 0x8b, 0x42, 0xd8, 0xbf, 0x19, 0x1c, 0x54, + 0x88, 0x93, 0x88, 0xa2, 0xf8, 0xa0, 0x10, 0xa3, 0x42, 0xb4, 0xbf, 0x26, 0x1c, 0x1e, 0x1c, + 0x11, 0x46, 0x0d, 0x88, 0xae, 0x42, 0x05, 0xdc, 0xa3, 0x42, 0xa8, 0xbf, 0xa1, 0xf8, 0xa2, + 0x30, 0x25, 0x46, 0x01, 0xda, 0xa2, 0xf8, 0xa2, 0x50, 0x4c, 0x27, 0xa4, 0x32, 0xce, 0x88, + 0x8d, 0x88, 0x0b, 0x88, 0x4c, 0x88, 0xae, 0x42, 0xb4, 0xbf, 0xac, 0x46, 0xb4, 0x46, 0x9c, + 0x42, 0xb4, 0xbf, 0x9e, 0x46, 0xa6, 0x46, 0xf4, 0x45, 0x04, 0xdc, 0xae, 0x42, 0xa8, 0xbf, + 0x35, 0x1c, 0x2c, 0x46, 0x01, 0xe0, 0x9c, 0x42, 0x00, 0xdb, 0x23, 0x46, 0x13, 0x80, 0x7f, + 0x1e, 0x01, 0xf1, 0x02, 0x01, 0x02, 0xf1, 0x02, 0x02, 0xe2, 0xd1, 0x08, 0x88, 0x4b, 0x88, + 0x83, 0x42, 0xb4, 0xbf, 0x04, 0x1c, 0x1c, 0x1c, 0x89, 0x88, 0xa1, 0x42, 0x03, 0xdd, 0x83, + 0x42, 0xa8, 0xbf, 0x18, 0x1c, 0x01, 0x46, 0x11, 0x80, 0xf0, 0xbd, 0x2d, 0xe9, 0xf0, 0x41, + 0xad, 0xf1, 0xa0, 0x0d, 0x27, 0x4d, 0x22, 0x4c, 0x02, 0x20, 0xa9, 0x89, 0x20, 0x70, 0x4f, + 0xf6, 0xff, 0x76, 0x48, 0xb2, 0x00, 0x28, 0x0a, 0xdc, 0x00, 0x02, 0x40, 0x42, 0x80, 0xb2, + 0x01, 0xf0, 0x97, 0xfa, + + 0x01, 0x05, 0xff, 0xff, 0x88, 0x53, 0x19, 0x00, 0xfa, 0x42, 0xf6, 0x5d, 0x71, 0x41, 0x43, + 0x09, 0x0c, 0x0e, 0x46, 0xa9, 0x89, 0x16, 0x4a, 0x00, 0x23, 0x0d, 0xf1, 0x04, 0x0c, 0x6f, + 0xf0, 0x00, 0x07, 0xee, 0x46, 0x6f, 0xf0, 0xff, 0x38, 0x13, 0x25, 0x08, 0x32, 0x6d, 0x1e, + 0x03, 0xf1, 0x04, 0x03, 0x4c, 0xf8, 0x08, 0x7b, 0x42, 0xf8, 0x04, 0x8b, 0x4e, 0xf8, 0x08, + 0x7b, 0xf5, 0xd1, 0x4f, 0xf6, 0xff, 0x77, 0x0d, 0xeb, 0x43, 0x0c, 0x00, 0x25, 0x03, 0x23, + 0x5b, 0x1e, 0x02, 0xf8, 0x01, 0x5b, 0x2c, 0xf8, 0x02, 0x7b, 0xf9, 0xd1, 0x48, 0x0a, 0x06, + 0xd3, 0x68, 0x46, 0xff, 0xf7, 0x78, 0xff, 0x31, 0x46, 0x68, 0x46, 0x01, 0xf0, 0x3f, 0xfe, + 0x28, 0xb0, 0x25, 0x70, 0xbd, 0xe8, 0xf0, 0x81, 0x30, 0x00, 0x00, 0x20, 0xde, 0x08, 0x00, + 0x20, 0x24, 0x09, 0x00, 0x20, 0x87, 0x00, 0x00, 0x20, 0x1e, 0x24, 0x00, 0x40, 0x40, 0x04, + 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0xb5, 0x0a, 0x20, 0x01, 0xf0, 0xd6, 0xf9, 0x80, + 0x08, 0x05, 0xd3, 0x02, 0x20, 0x01, 0xf0, 0xb3, 0xf9, 0x02, 0x49, 0x01, 0x20, 0x08, 0x70, + 0x00, 0xbd, 0xc0, 0x46, 0x24, 0x20, 0x00, 0x42, 0x2d, 0xe9, 0xf0, 0x4f, 0xad, 0xf1, 0x38, + 0x0d, 0xa0, 0x49, 0x00, 0x90, 0xa1, 0x4a, 0x01, 0x91, 0x9f, 0x49, 0x01, 0x27, 0x02, 0x91, + 0x0f, 0x70, 0x13, 0x78, 0x00, 0x21, 0x51, 0x2b, 0x08, 0xbf, 0x39, 0x1c, 0x03, 0x91, 0x9c, + 0x4c, 0x9d, 0x4e, 0xdf, 0xf8, 0x80, 0x82, 0x31, 0xbb, 0x00, 0x98, 0x68, 0xb1, 0x40, 0x46, + 0x24, 0x30, 0x00, 0x88, 0x40, 0x08, 0x39, 0xbf, 0x94, 0xf8, 0x5e, 0x10, 0x20, 0x1c, 0x20, + 0x1c, 0x90, 0xf8, 0x60, 0x10, 0x90, 0xf8, 0x3a, 0x00, 0x03, 0xe0, 0x94, 0xf8, 0x38, 0x00, + 0x94, 0xf8, 0x64, 0x10, + + 0x01, 0x05, 0xff, 0xff, 0x82, 0x54, 0x19, 0x00, 0xfa, 0x09, 0x18, 0xc8, 0x00, 0x30, 0x80, + 0x30, 0x46, 0xc0, 0x1f, 0x07, 0x70, 0x30, 0x88, 0xb1, 0x88, 0x00, 0x1f, 0x88, 0x42, 0x04, + 0xda, 0x11, 0x78, 0x21, 0x20, 0xff, 0x22, 0x01, 0xf0, 0xb9, 0xf9, 0x08, 0x20, 0x01, 0xf0, + 0x97, 0xf9, 0x88, 0x4b, 0x89, 0x49, 0x1d, 0x88, 0x04, 0x91, 0x05, 0x96, 0xa6, 0xf1, 0x34, + 0x06, 0x05, 0x96, 0x00, 0x9a, 0x86, 0x49, 0x4f, 0xf0, 0x00, 0x06, 0x62, 0xb9, 0x06, 0x96, + 0x0a, 0x46, 0x07, 0x92, 0x31, 0x46, 0x82, 0xf8, 0x0f, 0x17, 0x05, 0x9a, 0xa2, 0xf8, 0x64, + 0x70, 0x05, 0xf0, 0x03, 0x06, 0x2a, 0x46, 0x0f, 0xe0, 0x07, 0x91, 0x81, 0xf8, 0x0f, 0x77, + 0x4f, 0xf4, 0x80, 0x71, 0x05, 0x9a, 0xa2, 0xf8, 0x64, 0x10, 0x9a, 0x8b, 0x4f, 0xea, 0xe2, + 0x31, 0x4f, 0xf0, 0x00, 0x06, 0x06, 0x96, 0x4f, 0xf0, 0x03, 0x06, 0x8e, 0x46, 0x4f, 0xea, + 0xe2, 0x01, 0x4f, 0xea, 0xe2, 0x12, 0x02, 0xf0, 0x7f, 0x02, 0x08, 0x96, 0x94, 0x46, 0x08, + 0x9a, 0x01, 0xf0, 0x0f, 0x01, 0xdf, 0xf8, 0xa4, 0x92, 0x05, 0xf0, 0x04, 0x0a, 0xa6, 0x4e, + 0xba, 0xb1, 0x52, 0x1e, 0x04, 0xd0, 0x52, 0x1e, 0x01, 0x2a, 0x4a, 0x46, 0x23, 0xd9, 0x25, + 0xe0, 0xea, 0x08, 0x0a, 0xd3, 0x1a, 0x8a, 0x12, 0x11, 0x02, 0xf0, 0x0f, 0x02, 0x8a, 0x42, + 0x03, 0xdd, 0x89, 0x1a, 0x0f, 0x31, 0xc9, 0xb2, 0x00, 0xe0, 0x0f, 0x21, 0x94, 0xf9, 0xc9, + 0x30, 0x42, 0x46, 0x13, 0xe0, 0xba, 0xf1, 0x00, 0x0f, 0x09, 0xd0, 0x1a, 0x8a, 0x02, 0xf0, + 0x0f, 0x02, 0x8a, 0x42, 0x03, 0xdd, 0x89, 0x1a, 0x0f, 0x31, 0xc9, 0xb2, 0x00, 0xe0, 0x0f, + 0x21, 0x4a, 0x46, 0x94, 0xf9, 0xc8, 0x30, 0x10, 0x32, 0x01, 0xe0, 0x94, 0xf9, 0xc7, 0x30, + 0x55, 0x56, 0xdd, 0xf8, + + 0x01, 0x05, 0xff, 0xff, 0x7c, 0x55, 0x19, 0x00, 0xfa, 0x00, 0x80, 0x94, 0xf8, 0xc6, 0x20, + 0xb8, 0xf1, 0x00, 0x0f, 0x02, 0xd1, 0xab, 0x42, 0xb8, 0xbf, 0x12, 0x11, 0x02, 0xf0, 0x01, + 0x0b, 0x92, 0x08, 0x2c, 0xbf, 0xc0, 0x22, 0x60, 0x22, 0x09, 0x92, 0x08, 0x9a, 0x04, 0xeb, + 0x41, 0x00, 0x02, 0xb3, 0x52, 0x1e, 0x19, 0xd0, 0x52, 0x1e, 0x01, 0x2a, 0x2b, 0xd8, 0x04, + 0xeb, 0x41, 0x00, 0xb0, 0xf8, 0xd4, 0x01, 0xbb, 0xf1, 0x00, 0x0f, 0x4f, 0xf4, 0x00, 0x71, + 0x09, 0xd0, 0x40, 0xf2, 0x55, 0x42, 0x02, 0xfb, 0x00, 0x10, 0x80, 0x12, 0x41, 0x0a, 0x14, + 0xbf, 0x40, 0xf2, 0xff, 0x10, 0x80, 0xb2, 0x07, 0x99, 0xa1, 0xf8, 0x41, 0x07, 0x14, 0xe0, + 0x04, 0xeb, 0x41, 0x00, 0xb0, 0xf8, 0x14, 0x22, 0x01, 0xe0, 0xb0, 0xf8, 0xf4, 0x21, 0x4f, + 0xf4, 0x00, 0x71, 0x07, 0x98, 0x40, 0xf2, 0xd5, 0x23, 0x03, 0xfb, 0x02, 0x11, 0x00, 0xf2, + 0x41, 0x70, 0x4f, 0xea, 0xa1, 0x21, 0x01, 0x80, 0x20, 0xf8, 0x02, 0x2c, 0x6e, 0x48, 0x96, + 0xf8, 0x03, 0x17, 0x01, 0x73, 0x0a, 0x90, 0x03, 0x98, 0x38, 0xb9, 0x94, 0xf9, 0x67, 0x00, + 0xa8, 0x42, 0xa4, 0xbf, 0x94, 0xf8, 0x66, 0x00, 0x86, 0xf8, 0x03, 0x07, 0x0a, 0x98, 0xc0, + 0x7c, 0x38, 0xb9, 0x06, 0x98, 0xb4, 0xf9, 0x86, 0x10, 0xa9, 0x42, 0xa8, 0xbf, 0x38, 0x1c, + 0x0a, 0x99, 0x88, 0x74, 0x0a, 0x98, 0x01, 0x99, 0x41, 0xf6, 0x11, 0x75, 0x80, 0x7c, 0xaa, + 0x46, 0xbb, 0xf1, 0x00, 0x0f, 0x81, 0xf8, 0xa4, 0x00, 0x0a, 0x98, 0x05, 0xeb, 0x06, 0x01, + 0x80, 0x7c, 0x20, 0x44, 0x90, 0xf8, 0xa4, 0x20, 0x08, 0x88, 0x20, 0xf4, 0x70, 0x60, 0x40, + 0xea, 0x02, 0x20, 0x2a, 0xf8, 0x06, 0x00, 0x37, 0xd1, 0x94, 0xf8, 0x35, 0x20, 0x31, 0xf8, + 0x0a, 0x0c, 0x62, 0xf3, + + 0x01, 0x05, 0xff, 0xff, 0x76, 0x56, 0x19, 0x00, 0xfa, 0x1f, 0x30, 0x21, 0xf8, 0x0a, 0x0c, + 0x08, 0x98, 0x80, 0x08, 0x0e, 0xd3, 0x50, 0x48, 0x00, 0x78, 0x02, 0x28, 0x18, 0xbf, 0x04, + 0x28, 0x08, 0xd1, 0x50, 0x46, 0xa0, 0xf1, 0x04, 0x00, 0x81, 0x5b, 0x6f, 0xf3, 0x1f, 0x31, + 0x41, 0xf4, 0x00, 0x51, 0x09, 0xe0, 0x94, 0xf8, 0x33, 0x00, 0x62, 0x8b, 0x12, 0x18, 0x50, + 0x46, 0xa0, 0xf1, 0x04, 0x00, 0x81, 0x5b, 0x62, 0xf3, 0x1f, 0x31, 0x81, 0x53, 0x21, 0xe0, + 0x80, 0x1d, 0x04, 0x42, 0x10, 0x01, 0x04, 0x42, 0x1c, 0x09, 0x00, 0x20, 0x00, 0x02, 0x00, + 0x20, 0x3c, 0x24, 0x00, 0x40, 0x00, 0x00, 0x00, 0x20, 0x0a, 0x03, 0x00, 0x20, 0xf1, 0x10, + 0x00, 0x40, 0x38, 0x01, 0x00, 0x20, 0x28, 0x46, 0xa0, 0xf1, 0x0a, 0x00, 0x82, 0x19, 0x94, + 0xf8, 0x34, 0x30, 0x11, 0x88, 0x63, 0xf3, 0x1f, 0x31, 0x81, 0x53, 0x94, 0xf8, 0x32, 0x10, + 0xd0, 0x88, 0x61, 0xf3, 0x1f, 0x30, 0xd0, 0x80, 0x04, 0x98, 0x00, 0x88, 0x80, 0x08, 0x24, + 0xbf, 0xa1, 0x48, 0x07, 0x70, 0x08, 0x98, 0x05, 0x99, 0xdf, 0xf8, 0x80, 0x82, 0x4f, 0xea, + 0x00, 0x10, 0x40, 0xf0, 0x01, 0x00, 0xa1, 0xf8, 0x54, 0x00, 0x60, 0x88, 0x50, 0xb9, 0xbc, + 0xf1, 0x28, 0x0f, 0xb9, 0xbf, 0x0c, 0xf2, 0xb1, 0x40, 0x40, 0x00, 0x4f, 0xea, 0x4c, 0x00, + 0x00, 0xf6, 0x13, 0x10, 0x80, 0xb2, 0x0b, 0x90, 0x09, 0x98, 0x0b, 0x99, 0xbe, 0xf1, 0x00, + 0x0f, 0x4f, 0xea, 0x00, 0x60, 0x00, 0xeb, 0x61, 0x00, 0xb0, 0xfb, 0xf1, 0xf0, 0x07, 0x99, + 0x4f, 0xea, 0x80, 0x00, 0xc1, 0xf8, 0x9f, 0x07, 0x18, 0xbf, 0x29, 0x20, 0x04, 0xd1, 0x00, + 0x98, 0x00, 0x28, 0x14, 0xbf, 0x40, 0x20, 0x52, 0x20, 0x09, 0x99, 0x48, 0x43, 0x0b, 0x99, + 0xc0, 0x02, 0x00, 0xeb, + + 0x01, 0x05, 0xff, 0xff, 0x70, 0x57, 0x19, 0x00, 0xfa, 0x61, 0x00, 0x90, 0xfb, 0xf1, 0xf0, + 0x07, 0x99, 0xa1, 0xf8, 0x2b, 0x07, 0xe1, 0x8a, 0x85, 0x48, 0x49, 0x08, 0x21, 0xd2, 0x06, + 0x99, 0x88, 0xf8, 0x00, 0x10, 0x88, 0xf8, 0x10, 0x70, 0x41, 0xf6, 0x43, 0x31, 0x8b, 0x5b, + 0x04, 0x9a, 0x23, 0xf0, 0x07, 0x03, 0x12, 0x88, 0x4f, 0xea, 0x22, 0x12, 0x02, 0xf0, 0x0f, + 0x02, 0x42, 0xea, 0x03, 0x02, 0x8a, 0x53, 0x07, 0x70, 0x40, 0xf2, 0xb6, 0x40, 0x40, 0xf2, + 0xef, 0x29, 0x13, 0xe0, 0xc0, 0x46, 0x01, 0x01, 0x00, 0x40, 0x18, 0x01, 0x00, 0x20, 0xd0, + 0x08, 0x00, 0x20, 0x5a, 0x01, 0x00, 0x20, 0x88, 0xf8, 0x00, 0x70, 0x06, 0x99, 0x88, 0xf8, + 0x10, 0x10, 0x06, 0x99, 0x01, 0x70, 0x40, 0xf2, 0xf2, 0x40, 0x40, 0xf2, 0x6d, 0x29, 0x0c, + 0x90, 0x0a, 0x98, 0x40, 0x7b, 0x60, 0xb1, 0x03, 0x98, 0x50, 0xb9, 0x00, 0x98, 0x00, 0x28, + 0x07, 0xbf, 0x05, 0x98, 0x80, 0xf8, 0x45, 0x70, 0x05, 0x98, 0x80, 0xf8, 0x47, 0x70, 0x00, + 0xf0, 0x85, 0xfe, 0x02, 0x98, 0x80, 0xf8, 0x00, 0xb2, 0x02, 0x98, 0xbb, 0xf1, 0x00, 0x0f, + 0x80, 0xf8, 0xf0, 0x71, 0x14, 0xbf, 0x94, 0xf8, 0x79, 0x10, 0x94, 0xf8, 0x78, 0x10, 0x05, + 0xf1, 0x0a, 0x05, 0xbb, 0xf1, 0x00, 0x0f, 0xa8, 0x5b, 0x20, 0xf4, 0x7c, 0x50, 0x40, 0xea, + 0x01, 0x20, 0xa8, 0x53, 0x14, 0xbf, 0x94, 0xf8, 0x7d, 0x10, 0x94, 0xf8, 0x7c, 0x10, 0x50, + 0x46, 0x00, 0xf1, 0x0c, 0x00, 0x85, 0x19, 0x2a, 0x88, 0x22, 0xf0, 0x7f, 0x02, 0x11, 0x43, + 0x81, 0x53, 0x02, 0x98, 0x80, 0xf8, 0xf4, 0x71, 0x38, 0x46, 0x00, 0xf0, 0x97, 0xff, 0x06, + 0x98, 0x02, 0x99, 0x81, 0xf8, 0xf4, 0x01, 0x38, 0x46, 0x00, 0xf0, 0x90, 0xff, 0x35, 0xf8, + 0x06, 0x0c, 0x20, 0xf0, + + 0x01, 0x05, 0xff, 0xff, 0x6a, 0x58, 0x19, 0x00, 0xfa, 0x08, 0x00, 0x40, 0xf0, 0x04, 0x00, + 0x25, 0xf8, 0x06, 0x0c, 0x07, 0x98, 0x4f, 0xf0, 0xb1, 0x0a, 0x80, 0xf8, 0x28, 0xaf, 0x10, + 0x20, 0x68, 0x80, 0x35, 0xf8, 0x04, 0x0c, 0x20, 0xf4, 0x80, 0x70, 0x40, 0xf4, 0x00, 0x70, + 0x25, 0xf8, 0x04, 0x0c, 0xb5, 0xf8, 0xd2, 0x00, 0x40, 0xf0, 0x70, 0x00, 0xa5, 0xf8, 0xd2, + 0x00, 0x30, 0x88, 0xb7, 0x4d, 0x40, 0xf0, 0x30, 0x00, 0x30, 0x80, 0x05, 0xf8, 0x98, 0x7c, + 0x06, 0x98, 0x0d, 0x90, 0x07, 0x99, 0xc1, 0xf8, 0x6f, 0x0b, 0x2f, 0x70, 0xe0, 0x8a, 0x40, + 0x08, 0x38, 0xbf, 0x2f, 0x72, 0x38, 0x46, 0x00, 0xf0, 0x5f, 0xff, 0x06, 0x98, 0x28, 0x70, + 0xe0, 0x8a, 0x40, 0x08, 0x3c, 0xbf, 0x06, 0x98, 0x28, 0x72, 0x03, 0x98, 0x60, 0xb9, 0xbb, + 0xf1, 0x01, 0x0f, 0x0e, 0xd1, 0x94, 0xf8, 0x84, 0x00, 0x07, 0x99, 0x81, 0xf8, 0x2d, 0x0b, + 0x94, 0xf8, 0x82, 0x00, 0x07, 0x99, 0x81, 0xf8, 0x2b, 0x0b, 0xbb, 0xf1, 0x01, 0x0f, 0x4f, + 0xf0, 0x2e, 0x00, 0x04, 0xd0, 0x08, 0x98, 0x80, 0x08, 0x2c, 0xbf, 0x31, 0x20, 0x50, 0x46, + 0x07, 0x99, 0xbb, 0xf1, 0x00, 0x0f, 0x81, 0xf8, 0x28, 0x0f, 0x02, 0x98, 0x80, 0xf8, 0xf0, + 0xb2, 0x0d, 0x99, 0x03, 0xd0, 0x08, 0x98, 0x80, 0x08, 0x38, 0xbf, 0x39, 0x1c, 0x02, 0x98, + 0x80, 0xf8, 0x20, 0x13, 0x0a, 0x98, 0x4f, 0xf4, 0x7a, 0x71, 0x0c, 0x9b, 0x00, 0x68, 0xb0, + 0xfb, 0xf1, 0xf2, 0x0b, 0x98, 0x58, 0x43, 0x09, 0x9b, 0x41, 0x43, 0xb1, 0xfb, 0xf2, 0xf0, + 0x19, 0x46, 0x03, 0xfb, 0x19, 0x02, 0x08, 0x02, 0xb2, 0xfb, 0xf0, 0xf0, 0x80, 0xb2, 0x03, + 0xfb, 0x00, 0xf1, 0xa2, 0xeb, 0x01, 0x22, 0xe1, 0x8a, 0x92, 0xb2, 0xb2, 0xfb, 0xf3, 0xf2, + 0x49, 0x08, 0x93, 0xb2, + + 0x01, 0x05, 0xff, 0xff, 0x64, 0x59, 0x19, 0x00, 0xfa, 0x18, 0xd3, 0x86, 0xf8, 0x33, 0x27, + 0x09, 0x99, 0xdd, 0xf8, 0x34, 0x90, 0xc0, 0x29, 0x08, 0xbf, 0xb9, 0x46, 0xb9, 0xf1, 0x00, + 0x0f, 0x03, 0xd0, 0x80, 0x2b, 0xa4, 0xbf, 0x40, 0x1c, 0x80, 0xb2, 0x40, 0x1c, 0x86, 0xf8, + 0x07, 0x07, 0x23, 0xe0, 0x40, 0x85, 0x03, 0x42, 0x90, 0x88, 0x03, 0x42, 0x14, 0x07, 0x01, + 0x42, 0x41, 0xf6, 0x43, 0x31, 0x8a, 0x5b, 0x22, 0xf0, 0xe0, 0x02, 0x42, 0xea, 0x40, 0x12, + 0x8a, 0x53, 0x86, 0xf8, 0x33, 0x37, 0x40, 0x1c, 0x86, 0xf8, 0x07, 0x07, 0x07, 0x99, 0xa1, + 0xf6, 0xb9, 0x00, 0x00, 0x88, 0x20, 0xf0, 0x1e, 0x00, 0x40, 0xf0, 0x0c, 0x00, 0xa1, 0xf6, + 0xb9, 0x01, 0x08, 0x80, 0xdd, 0xf8, 0x34, 0x90, 0x09, 0x98, 0xc0, 0x28, 0x08, 0xbf, 0xb9, + 0x46, 0x02, 0x20, 0x00, 0xf0, 0xd5, 0xfe, 0x36, 0xf8, 0x01, 0x0c, 0x40, 0xf4, 0xe0, 0x60, + 0x26, 0xf8, 0x01, 0x0c, 0x05, 0xf8, 0xd8, 0x9c, 0x05, 0xf8, 0xa4, 0x7c, 0x0d, 0x99, 0x0b, + 0x98, 0x00, 0xf0, 0x1d, 0xfa, 0x00, 0x98, 0x38, 0xb1, 0x41, 0xf6, 0x59, 0x30, 0x81, 0x5b, + 0x21, 0xf4, 0x00, 0x61, 0x41, 0xf4, 0x80, 0x61, 0x81, 0x53, 0x04, 0x9a, 0x41, 0xf6, 0x43, + 0x33, 0x98, 0x5b, 0x11, 0x88, 0x20, 0xf4, 0xc0, 0x60, 0x99, 0x46, 0x49, 0x00, 0x01, 0xf4, + 0xc0, 0x61, 0x01, 0x43, 0x48, 0x46, 0x81, 0x53, 0x10, 0x88, 0x00, 0x13, 0x00, 0xf0, 0x01, + 0x00, 0x88, 0xf8, 0x1c, 0x00, 0xb4, 0xf8, 0x88, 0x00, 0x00, 0x28, 0x40, 0xf0, 0xa4, 0x80, + 0x05, 0x20, 0x00, 0xf0, 0xe0, 0xfe, 0x0d, 0x98, 0x04, 0x21, 0x00, 0xf0, 0xd3, 0xf9, 0x98, + 0xf8, 0xd4, 0x03, 0xc0, 0x43, 0x88, 0xf8, 0xd4, 0x03, 0x96, 0xf8, 0x05, 0x11, 0xb6, 0xf8, + 0x05, 0x01, 0x40, 0xf0, + + 0x01, 0x05, 0xff, 0xff, 0x5e, 0x5a, 0x19, 0x00, 0xfa, 0x0f, 0x00, 0xa6, 0xf8, 0x05, 0x01, + 0xb6, 0xf8, 0x05, 0x01, 0x01, 0xf0, 0x0f, 0x01, 0x20, 0xf0, 0x0f, 0x00, 0x01, 0x43, 0xa6, + 0xf8, 0x05, 0x11, 0x07, 0x98, 0x00, 0xf2, 0x87, 0x7a, 0x11, 0x20, 0x8a, 0xf8, 0x00, 0x70, + 0x86, 0xf8, 0xff, 0x06, 0x01, 0x98, 0x80, 0xf8, 0x40, 0x70, 0x07, 0x71, 0x07, 0x70, 0x08, + 0x20, 0x00, 0xf0, 0x95, 0xfe, 0x2a, 0xf8, 0x44, 0x7c, 0x07, 0x20, 0x00, 0xf0, 0x72, 0xfe, + 0x06, 0x98, 0x05, 0xf8, 0xe0, 0x0c, 0x88, 0xf8, 0xbc, 0x73, 0x05, 0x9d, 0x02, 0x20, 0x28, + 0x70, 0x60, 0x8c, 0x00, 0xf0, 0xa6, 0xfe, 0x38, 0x46, 0x05, 0x21, 0x00, 0xf0, 0x99, 0xf9, + 0x0a, 0x20, 0x00, 0xf0, 0x7e, 0xfe, 0x98, 0xf8, 0xd4, 0x03, 0xc0, 0x43, 0x88, 0xf8, 0xd4, + 0x03, 0x03, 0x20, 0x28, 0x70, 0x04, 0x98, 0x4d, 0x46, 0xac, 0x19, 0x00, 0x88, 0x80, 0x08, + 0x05, 0xd2, 0x08, 0x98, 0x02, 0x28, 0x51, 0xda, 0xff, 0xf7, 0x92, 0xfc, 0x4e, 0xe0, 0x20, + 0x88, 0x6f, 0xf3, 0x9f, 0x30, 0xa8, 0x53, 0x38, 0x46, 0x00, 0xf0, 0x46, 0xfe, 0xa8, 0x5b, + 0x6f, 0xf3, 0x9f, 0x30, 0x40, 0xf4, 0x80, 0x40, 0xa8, 0x53, 0x60, 0x88, 0x20, 0xf0, 0x07, + 0x00, 0x40, 0xf0, 0x08, 0x00, 0x60, 0x80, 0x88, 0xf8, 0x20, 0x70, 0x32, 0x20, 0x88, 0xf8, + 0x24, 0x70, 0x00, 0xf0, 0x33, 0xfe, 0x60, 0x88, 0x20, 0xf0, 0x0f, 0x00, 0x40, 0xf0, 0x07, + 0x00, 0x60, 0x80, 0x28, 0x20, 0x00, 0xf0, 0x2a, 0xfe, 0x60, 0x88, 0x20, 0xf0, 0x0f, 0x00, + 0x40, 0xf0, 0x04, 0x00, 0x60, 0x80, 0x32, 0x20, 0x00, 0xf0, 0x60, 0xfe, 0x08, 0x98, 0x02, + 0x28, 0x01, 0xda, 0xff, 0xf7, 0x60, 0xfc, 0x08, 0x20, 0x00, 0xf0, 0x37, 0xfe, 0x29, 0x46, + 0x01, 0xf1, 0x02, 0x01, + + 0x01, 0x05, 0xff, 0xff, 0x58, 0x5b, 0x19, 0x00, 0xfa, 0x8c, 0x19, 0x20, 0x88, 0x20, 0xf0, + 0x0f, 0x00, 0x40, 0xf0, 0x03, 0x00, 0x88, 0x53, 0x08, 0x98, 0x02, 0x28, 0x0d, 0xd1, 0x32, + 0x20, 0x00, 0xf0, 0x09, 0xfe, 0x34, 0xf8, 0x02, 0x1c, 0x06, 0x48, 0x08, 0x43, 0x24, 0xf8, + 0x02, 0x0c, 0x03, 0xe0, 0x04, 0x21, 0x00, 0x42, 0x88, 0xf8, 0xbc, 0x73, 0x0e, 0xb0, 0xbd, + 0xe8, 0xf0, 0x8f, 0xc0, 0x46, 0x00, 0xc0, 0xff, 0xff, 0x2d, 0xe9, 0xf0, 0x4f, 0x17, 0x46, + 0x81, 0x46, 0x0e, 0x46, 0x9c, 0x4a, 0x6f, 0xf4, 0x4f, 0x70, 0x9b, 0x49, 0x10, 0x5a, 0x4f, + 0xea, 0x00, 0x2b, 0x08, 0x46, 0x14, 0x30, 0x10, 0x5a, 0x45, 0x02, 0x6f, 0xf4, 0x50, 0x70, + 0x10, 0x5a, 0x00, 0x04, 0x51, 0x5a, 0xcc, 0x02, 0x00, 0xf0, 0xf1, 0xfe, 0x80, 0x46, 0x28, + 0x46, 0x00, 0xf0, 0xed, 0xfe, 0x82, 0x46, 0x20, 0x46, 0x00, 0xf0, 0xe9, 0xfe, 0x05, 0x46, + 0x90, 0x48, 0x00, 0x78, 0x00, 0x28, 0x0c, 0xbf, 0x61, 0x24, 0x91, 0x24, 0xb9, 0xf1, 0x01, + 0x0f, 0x44, 0x44, 0xa4, 0xeb, 0x0a, 0x04, 0x10, 0xd0, 0x58, 0x46, 0x00, 0xf0, 0xd9, 0xfe, + 0x28, 0x1a, 0xb6, 0x30, 0x04, 0xd4, 0xb0, 0xf5, 0x80, 0x7f, 0xa8, 0xbf, 0xff, 0x20, 0x00, + 0xe0, 0x00, 0x20, 0x30, 0x70, 0x84, 0x48, 0x00, 0x88, 0x02, 0x28, 0x00, 0xd1, 0x2c, 0x19, + 0x00, 0x2c, 0x04, 0xd4, 0xb4, 0xf5, 0x80, 0x7f, 0xa8, 0xbf, 0xff, 0x24, 0x00, 0xe0, 0x00, + 0x24, 0x3c, 0x70, 0xbd, 0xe8, 0xf0, 0x8f, 0x7e, 0x49, 0x7d, 0x48, 0x09, 0x68, 0x01, 0x60, + 0x7d, 0x49, 0x03, 0x68, 0x0a, 0x88, 0x7d, 0x49, 0xb3, 0xeb, 0x82, 0x2f, 0x14, 0xd9, 0xb3, + 0xeb, 0xc2, 0x2f, 0x08, 0xd9, 0x02, 0x68, 0x92, 0x08, 0x02, 0x60, 0x08, 0x88, 0x20, 0xf0, + 0x04, 0x00, 0x40, 0xf0, + + 0x01, 0x05, 0xff, 0xff, 0x52, 0x5c, 0x19, 0x00, 0xfa, 0x08, 0x00, 0x0b, 0xe0, 0x02, 0x68, + 0x52, 0x08, 0x02, 0x60, 0x08, 0x88, 0x20, 0xf0, 0x08, 0x00, 0x40, 0xf0, 0x04, 0x00, 0x02, + 0xe0, 0x08, 0x88, 0x40, 0xf0, 0x0c, 0x00, 0x08, 0x80, 0x70, 0x47, 0x6c, 0x48, 0x01, 0x89, + 0x00, 0x29, 0x0c, 0xbf, 0x00, 0x68, 0x40, 0x68, 0x99, 0x49, 0xb0, 0xfb, 0xf1, 0xf0, 0x00, + 0x1d, 0xc1, 0x08, 0x64, 0x48, 0x20, 0x38, 0x01, 0x70, 0x70, 0x47, 0x10, 0xb5, 0xb0, 0xf9, + 0x00, 0x20, 0x47, 0xf6, 0xff, 0x73, 0x93, 0x42, 0x08, 0xd0, 0x4f, 0xf4, 0x2a, 0x53, 0x4b, + 0x43, 0x55, 0x24, 0x04, 0xfb, 0x12, 0x31, 0x02, 0xeb, 0xe1, 0x12, 0x00, 0xe0, 0xca, 0x01, + 0x02, 0x80, 0x10, 0xbd, 0x03, 0x78, 0x4f, 0xf0, 0x56, 0x02, 0x2b, 0xb1, 0x5a, 0x43, 0xaa, + 0x23, 0x03, 0xfb, 0x01, 0x21, 0x80, 0x31, 0x09, 0x12, 0x01, 0x70, 0x70, 0x47, 0x2d, 0xe9, + 0xf0, 0x41, 0xdf, 0xf8, 0xdc, 0xc2, 0x01, 0x28, 0x14, 0x46, 0x88, 0x46, 0x50, 0x4f, 0xb3, + 0x4e, 0x19, 0x46, 0x34, 0xd0, 0x60, 0x46, 0x80, 0x1d, 0x00, 0x88, 0x40, 0x10, 0x10, 0xf0, + 0x07, 0x0f, 0x00, 0xf0, 0x07, 0x05, 0x06, 0xd1, 0x86, 0xf8, 0x58, 0x10, 0x86, 0xf8, 0x60, + 0x80, 0x86, 0xf8, 0x68, 0x40, 0x16, 0xe0, 0x07, 0xeb, 0x45, 0x07, 0x07, 0xf1, 0x14, 0x00, + 0xff, 0xf7, 0xc0, 0xff, 0xb7, 0xf9, 0x14, 0x00, 0xad, 0x19, 0x40, 0x30, 0x41, 0x46, 0xc0, + 0x11, 0x85, 0xf8, 0x58, 0x00, 0x05, 0xf1, 0x60, 0x00, 0xff, 0xf7, 0xc7, 0xff, 0x21, 0x46, + 0x05, 0xf1, 0x68, 0x00, 0xff, 0xf7, 0xc2, 0xff, 0x3c, 0x48, 0x57, 0x30, 0x00, 0x78, 0x80, + 0x08, 0x28, 0xd3, 0x60, 0x46, 0x40, 0x88, 0x80, 0x11, 0x00, 0xf0, 0x7f, 0x00, 0x36, 0x18, + 0x34, 0x72, 0xbd, 0xe8, + + 0x01, 0x05, 0xff, 0xff, 0x4c, 0x5d, 0x19, 0x00, 0xfa, 0xf0, 0x81, 0x60, 0x46, 0x22, 0x30, + 0x00, 0x88, 0x45, 0x10, 0x05, 0xf0, 0x07, 0x05, 0x06, 0x2d, 0x12, 0xda, 0x07, 0xeb, 0x45, + 0x07, 0x07, 0xf1, 0x24, 0x00, 0xff, 0xf7, 0x93, 0xff, 0xb7, 0xf9, 0x24, 0x10, 0x70, 0x19, + 0x40, 0x31, 0xc9, 0x11, 0x80, 0xf8, 0x70, 0x10, 0x7e, 0x30, 0x21, 0x46, 0xff, 0xf7, 0x9b, + 0xff, 0xbd, 0xe8, 0xf0, 0x81, 0x76, 0x19, 0x86, 0xf8, 0x70, 0x10, 0x86, 0xf8, 0x7e, 0x40, + 0xbd, 0xe8, 0xf0, 0x81, 0x97, 0x49, 0x0b, 0x46, 0x67, 0x3b, 0xb3, 0xf9, 0x1d, 0x00, 0x1a, + 0x78, 0x40, 0x01, 0x12, 0x02, 0x00, 0xb2, 0x12, 0xb2, 0x93, 0xf8, 0x20, 0x30, 0xd2, 0x10, + 0x80, 0x1a, 0xc9, 0x5c, 0x09, 0x02, 0x09, 0xb2, 0x49, 0x10, 0x40, 0x1a, 0x80, 0x30, 0xc1, + 0x11, 0x00, 0xeb, 0x11, 0x60, 0x00, 0x12, 0x0d, 0x30, 0x00, 0xb2, 0x10, 0xf1, 0x80, 0x0f, + 0xb8, 0xbf, 0x6f, 0xf0, 0x7f, 0x00, 0x40, 0xb2, 0x70, 0x47, 0x12, 0x49, 0x09, 0x68, 0xb0, + 0xfb, 0xf1, 0xf2, 0x02, 0xfb, 0x11, 0x00, 0x80, 0x01, 0x89, 0x0a, 0xb0, 0xfb, 0xf1, 0xf0, + 0x00, 0xeb, 0x02, 0x40, 0x00, 0x02, 0x70, 0x47, 0x4a, 0x00, 0xa1, 0x49, 0x01, 0xeb, 0xc0, + 0x01, 0xa0, 0x48, 0x83, 0x5a, 0x0b, 0x80, 0x03, 0x46, 0x10, 0x33, 0x20, 0x30, 0x9b, 0x5a, + 0x4b, 0x80, 0x80, 0x5a, 0x88, 0x80, 0x70, 0x47, 0xc0, 0x46, 0x59, 0x14, 0x00, 0x40, 0xad, + 0xfc, 0xff, 0xff, 0xc0, 0x22, 0x02, 0x42, 0x58, 0x24, 0x00, 0x40, 0xd0, 0x08, 0x00, 0x20, + 0xc0, 0x00, 0x00, 0x20, 0x6c, 0x02, 0x00, 0x20, 0xf2, 0x20, 0x00, 0x40, 0x2d, 0xe9, 0xf0, + 0x43, 0x88, 0x46, 0xb8, 0xf1, 0x00, 0x0f, 0x07, 0x46, 0x14, 0xbf, 0x01, 0x20, 0x02, 0x20, + 0x8d, 0x49, 0xaf, 0x4d, + + 0x01, 0x05, 0xff, 0xff, 0x46, 0x5e, 0x19, 0x00, 0xfa, 0xb8, 0xf1, 0x00, 0x0f, 0xa1, 0xf1, + 0xb0, 0x01, 0x09, 0x88, 0x8b, 0x4b, 0x21, 0xf0, 0x03, 0x01, 0x40, 0xea, 0x01, 0x00, 0xa5, + 0xf2, 0xc4, 0x41, 0x08, 0x80, 0x10, 0xd0, 0x28, 0x88, 0x40, 0xf0, 0x70, 0x00, 0x28, 0x80, + 0x01, 0x21, 0x18, 0x46, 0xd4, 0x38, 0x01, 0x70, 0x01, 0x71, 0x80, 0xf8, 0x3c, 0x10, 0x00, + 0x22, 0xa5, 0xf5, 0x92, 0x64, 0x22, 0x60, 0x80, 0xf8, 0xd4, 0x10, 0x17, 0x48, 0xb8, 0xf1, + 0x00, 0x0f, 0xa9, 0x4c, 0x00, 0xfb, 0x07, 0xf0, 0x07, 0xd0, 0xfa, 0x22, 0x21, 0x46, 0x89, + 0x1d, 0xb1, 0xf9, 0x00, 0x10, 0x01, 0xfb, 0x02, 0xf1, 0x40, 0x1a, 0xff, 0xf7, 0x97, 0xff, + 0xa5, 0xf2, 0x9c, 0x41, 0x08, 0x60, 0x00, 0x26, 0x1e, 0x70, 0xe0, 0x8a, 0x40, 0x08, 0x03, + 0xd2, 0xb8, 0xf1, 0x00, 0x0f, 0x08, 0xbf, 0x1e, 0x72, 0xff, 0x20, 0xa5, 0xf2, 0x8c, 0x41, + 0x08, 0x70, 0x9b, 0x48, 0xb8, 0xf1, 0x00, 0x0f, 0x01, 0x78, 0x0b, 0xd1, 0xaf, 0x48, 0x00, + 0x78, 0x80, 0x00, 0x00, 0xeb, 0x41, 0x00, 0x20, 0x18, 0xb0, 0xf8, 0xa6, 0x20, 0x04, 0xe0, + 0xc0, 0x46, 0x40, 0x42, 0x0f, 0x00, 0xb4, 0xf8, 0xaa, 0x20, 0x48, 0x00, 0x07, 0xfb, 0x02, + 0xf1, 0xa5, 0xf2, 0xdc, 0x42, 0x00, 0x19, 0x09, 0x0c, 0x11, 0x80, 0xb0, 0xf8, 0xb6, 0x10, + 0xb0, 0xf8, 0xb2, 0x30, 0xa7, 0xf6, 0x62, 0x12, 0x49, 0x02, 0x03, 0xfb, 0x12, 0x11, 0x09, + 0x14, 0xa5, 0xf2, 0xe4, 0x42, 0x11, 0x80, 0xa5, 0xf5, 0x9c, 0x61, 0xb0, 0xf8, 0xae, 0x00, + 0x37, 0x46, 0x4f, 0xf0, 0x08, 0x09, 0x08, 0x80, 0xa5, 0xf2, 0x8c, 0x40, 0x06, 0x70, 0xf9, + 0xb2, 0xf8, 0xb2, 0xff, 0xf7, 0x5e, 0xff, 0x17, 0xb1, 0x48, 0x46, 0x00, 0xf0, 0x4d, 0xfc, + 0xa5, 0xf5, 0x92, 0x60, + + 0x01, 0x05, 0xff, 0xff, 0x40, 0x5f, 0x19, 0x00, 0xfa, 0x00, 0x88, 0x49, 0xfa, 0x07, 0xf1, + 0x20, 0xf0, 0x0f, 0x00, 0x01, 0x43, 0xa5, 0xf5, 0x92, 0x60, 0x01, 0x80, 0x05, 0x20, 0x00, + 0xf0, 0x55, 0xfc, 0x7f, 0x1c, 0x04, 0x2f, 0xe6, 0xdb, 0xa5, 0xf2, 0x8e, 0x40, 0x00, 0x88, + 0xa5, 0xf2, 0x8e, 0x41, 0x40, 0xf0, 0x70, 0x00, 0x08, 0x80, 0xa5, 0xf2, 0x8e, 0x40, 0x00, + 0x88, 0xa5, 0xf2, 0x8e, 0x41, 0x20, 0xf4, 0x80, 0x70, 0x40, 0xf0, 0x80, 0x00, 0x08, 0x80, + 0x48, 0x46, 0x00, 0xf0, 0x27, 0xfc, 0x82, 0x48, 0xb8, 0xf1, 0x00, 0x0f, 0x05, 0xd0, 0x94, + 0xf8, 0xc0, 0x10, 0x49, 0x09, 0x07, 0xd2, 0x04, 0x46, 0x04, 0xe0, 0x04, 0x46, 0x01, 0x20, + 0x20, 0x70, 0x00, 0xf0, 0xef, 0xfb, 0x26, 0x70, 0xbd, 0xe8, 0xf0, 0x83, 0x30, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0xb5, 0x5e, 0x4a, 0xfa, 0x23, 0x92, 0x1d, 0xb2, 0xf9, + 0x00, 0x20, 0x02, 0xfb, 0x03, 0xf2, 0x80, 0x1a, 0xf0, 0x30, 0x4f, 0xf4, 0xf0, 0x72, 0xb0, + 0xfb, 0xf2, 0xf3, 0x71, 0x4a, 0x01, 0xeb, 0x53, 0x00, 0xb0, 0xfb, 0xf3, 0xf0, 0x8c, 0x1a, + 0x43, 0x43, 0x9c, 0x42, 0x4f, 0xf0, 0x00, 0x00, 0x03, 0xd8, 0x52, 0x18, 0x9a, 0x42, 0x28, + 0xbf, 0x01, 0x20, 0x10, 0xbd, 0x00, 0x12, 0x00, 0x40, 0x30, 0xb5, 0x02, 0x46, 0x6c, 0x48, + 0x69, 0x4d, 0x67, 0x49, 0x03, 0x68, 0x18, 0x0d, 0x0c, 0x28, 0x4f, 0xea, 0x13, 0x54, 0x05, + 0xd0, 0x18, 0x28, 0x03, 0xd0, 0x31, 0x28, 0x18, 0xbf, 0x00, 0x20, 0x05, 0xd1, 0x91, 0x42, + 0x3a, 0xbf, 0x28, 0x1c, 0x80, 0x1c, 0x28, 0x1c, 0x00, 0x88, 0x12, 0x2c, 0x18, 0xbf, 0x24, + 0x2c, 0x05, 0xd1, 0x28, 0x46, 0x00, 0x1d, 0x91, 0x42, 0x34, 0xbf, 0x40, 0x88, 0x00, 0x88, + 0x10, 0x2c, 0x18, 0xbf, + + 0x01, 0x05, 0xff, 0xff, 0x3a, 0x60, 0x19, 0x00, 0xfa, 0x20, 0x2c, 0x05, 0xd1, 0x28, 0x46, + 0x08, 0x30, 0x91, 0x42, 0x34, 0xbf, 0x40, 0x88, 0x00, 0x88, 0x56, 0x4a, 0x01, 0x21, 0x11, + 0x70, 0x4f, 0xf4, 0x7a, 0x72, 0xb3, 0xfb, 0xf2, 0xf4, 0x53, 0x4b, 0xe1, 0x0a, 0x0d, 0x1f, + 0x89, 0xb2, 0x41, 0x43, 0x1d, 0x80, 0x65, 0x08, 0x02, 0xfb, 0x01, 0x51, 0xb1, 0xfb, 0xf4, + 0xf1, 0xc9, 0x09, 0x09, 0x1f, 0x59, 0x80, 0x30, 0xbd, 0xc0, 0x46, 0xdc, 0x1c, 0x00, 0x40, + 0x70, 0x03, 0x00, 0x20, 0x04, 0x21, 0x00, 0x42, 0x2d, 0xe9, 0xf0, 0x41, 0x49, 0x4c, 0x94, + 0xf8, 0x00, 0x80, 0x20, 0x88, 0x27, 0x46, 0x0c, 0x3f, 0x20, 0xf0, 0x0f, 0x00, 0x40, 0xf0, + 0x03, 0x00, 0x20, 0x80, 0x38, 0x88, 0x54, 0x3c, 0x20, 0xf4, 0xe0, 0x60, 0x40, 0xf4, 0x00, + 0x70, 0xa4, 0xf8, 0x48, 0x00, 0x02, 0x20, 0x00, 0xf0, 0x68, 0xfb, 0xd4, 0xf8, 0x88, 0x50, + 0x38, 0x88, 0x20, 0xf4, 0xe0, 0x60, 0x38, 0x80, 0x01, 0x20, 0x00, 0xf0, 0x5f, 0xfb, 0x38, + 0x88, 0x0e, 0x4e, 0x20, 0xf0, 0x0f, 0x00, 0xa4, 0xf8, 0x48, 0x00, 0x01, 0x20, 0x00, 0xf0, + 0x56, 0xfb, 0x36, 0x48, 0x01, 0x27, 0x07, 0x70, 0x38, 0x46, 0x00, 0xf0, 0x50, 0xfb, 0x94, + 0xf8, 0x70, 0x00, 0x40, 0x00, 0x40, 0xb2, 0x40, 0x10, 0xa0, 0xeb, 0xe5, 0x20, 0x41, 0xb2, + 0xe8, 0x0a, 0x3c, 0xbf, 0x20, 0x88, 0xa0, 0xeb, 0x01, 0x20, 0x08, 0xd3, 0x02, 0xe0, 0xc0, + 0x46, 0xf0, 0x20, 0x00, 0x40, 0x20, 0x88, 0xa0, 0xeb, 0x01, 0x20, 0x00, 0xf5, 0x80, 0x70, + 0x20, 0x80, 0x38, 0x46, 0x00, 0xf0, 0x35, 0xfb, 0x27, 0x49, 0x00, 0x20, 0x84, 0xf8, 0x54, + 0x80, 0x08, 0x70, 0x30, 0x88, 0x20, 0xf0, 0x70, 0x00, 0x30, 0x80, 0xbd, 0xe8, 0xf0, 0x81, + 0x00, 0x02, 0x00, 0x20, + + 0x01, 0x05, 0xff, 0xff, 0x34, 0x61, 0x19, 0x00, 0xfa, 0x10, 0x03, 0x04, 0x42, 0xf0, 0xb5, + 0x20, 0x48, 0x01, 0x88, 0x41, 0xf0, 0x70, 0x01, 0x01, 0x80, 0x1c, 0x48, 0x01, 0x26, 0x06, + 0x70, 0x30, 0x46, 0x00, 0xf0, 0x1a, 0xfb, 0x1b, 0x48, 0x17, 0x4c, 0x01, 0x89, 0x0c, 0x3c, + 0x00, 0x27, 0x24, 0xf8, 0x48, 0x1c, 0x80, 0x7a, 0x0c, 0x4d, 0x85, 0xf8, 0x50, 0x0e, 0x07, + 0x21, 0xf8, 0xb2, 0xff, 0xf7, 0x41, 0xfe, 0x7f, 0x1c, 0x04, 0x2f, 0xf8, 0xdb, 0x20, 0x88, + 0x20, 0xf0, 0x0f, 0x00, 0x40, 0xf0, 0x01, 0x00, 0x20, 0x80, 0x2e, 0x70, 0x30, 0x46, 0x00, + 0xf0, 0xfe, 0xfa, 0x00, 0x20, 0x28, 0x70, 0xf0, 0xbd, 0xc0, 0x46, 0xe2, 0x08, 0x00, 0x20, + 0x70, 0x8c, 0x03, 0x42, 0x40, 0x0d, 0x03, 0x00, 0x00, 0x72, 0x6f, 0x91, 0xa0, 0x03, 0x00, + 0x20, 0x80, 0x42, 0x04, 0x42, 0x04, 0x22, 0x00, 0x40, 0xc0, 0x00, 0x00, 0x20, 0x6c, 0x1c, + 0x00, 0x40, 0xc0, 0x9a, 0x03, 0x42, 0x6c, 0x20, 0x00, 0x42, 0xf0, 0x20, 0x00, 0x40, 0xd0, + 0x08, 0x00, 0x20, 0x2d, 0xe9, 0xf0, 0x4f, 0xad, 0xf1, 0x34, 0x0d, 0xaa, 0x4d, 0x01, 0x90, + 0xa6, 0x48, 0x02, 0x95, 0xa5, 0xf1, 0x34, 0x05, 0x02, 0x8b, 0x4f, 0xf0, 0x00, 0x01, 0x02, + 0xb1, 0x01, 0x21, 0xa3, 0x4a, 0x29, 0x75, 0x10, 0x21, 0x11, 0x70, 0xa2, 0x4a, 0x01, 0x21, + 0x03, 0x91, 0x11, 0x70, 0xae, 0x49, 0x00, 0x24, 0x82, 0xf8, 0x4c, 0x40, 0x04, 0x91, 0xad, + 0x49, 0xac, 0x4e, 0xb1, 0x4f, 0x09, 0x88, 0xa6, 0xf6, 0xee, 0x73, 0x21, 0xf4, 0x80, 0x71, + 0x41, 0xf4, 0x00, 0x71, 0x19, 0x80, 0x41, 0x21, 0xa6, 0xf6, 0xe2, 0x73, 0x19, 0x70, 0x82, + 0xf8, 0xdc, 0x4d, 0x82, 0xf8, 0x1c, 0x4e, 0xa6, 0xf6, 0xd4, 0x61, 0x0c, 0x80, 0x05, 0x94, + 0x06, 0x90, 0x95, 0xf8, + + 0x01, 0x05, 0xff, 0xff, 0x2e, 0x62, 0x19, 0x00, 0xfa, 0x34, 0x00, 0x00, 0x28, 0x22, 0xd1, + 0x06, 0x98, 0xb0, 0xf8, 0xca, 0x00, 0xf0, 0xb1, 0x9e, 0x48, 0x00, 0x78, 0x00, 0x11, 0x02, + 0x28, 0x19, 0xd1, 0x01, 0x98, 0x20, 0xb9, 0x38, 0x46, 0x80, 0x1d, 0x00, 0x88, 0x40, 0x08, + 0x07, 0xd2, 0x01, 0x98, 0x01, 0x28, 0x0f, 0xd1, 0x38, 0x46, 0x22, 0x30, 0x00, 0x88, 0x40, + 0x08, 0x0a, 0xd3, 0xff, 0xf7, 0x95, 0xfd, 0x07, 0x90, 0x6a, 0x46, 0x01, 0x98, 0x0d, 0xf1, + 0x01, 0x01, 0xff, 0xf7, 0x8f, 0xfc, 0x03, 0x98, 0x05, 0x90, 0xff, 0x20, 0xa6, 0xf5, 0x75, + 0x71, 0x08, 0x70, 0x03, 0x98, 0x00, 0xf0, 0x7e, 0xfa, 0xa6, 0xf5, 0x75, 0x70, 0x04, 0x70, + 0xa6, 0xf5, 0x76, 0x70, 0x04, 0x80, 0xe8, 0x7a, 0x38, 0xb1, 0xec, 0x72, 0xa8, 0x7a, 0x87, + 0x49, 0x08, 0x70, 0x28, 0x89, 0xa6, 0xf5, 0x84, 0x61, 0x08, 0x80, 0x85, 0x48, 0x4f, 0xf0, + 0x0a, 0x08, 0x08, 0x90, 0x80, 0xf8, 0x3c, 0x40, 0xb6, 0xf8, 0xb8, 0x10, 0x21, 0xf0, 0x70, + 0x01, 0xa6, 0xf8, 0xb8, 0x10, 0x04, 0x70, 0x04, 0x71, 0x4f, 0xf4, 0x40, 0x50, 0x46, 0xf8, + 0x20, 0x0c, 0x70, 0x88, 0x20, 0xf0, 0x03, 0x00, 0x70, 0x80, 0x70, 0x88, 0x20, 0xf0, 0x0c, + 0x00, 0x70, 0x80, 0x79, 0x48, 0x09, 0x90, 0x80, 0xf8, 0x80, 0x42, 0x34, 0x80, 0x04, 0x71, + 0x95, 0xf8, 0x34, 0x10, 0x00, 0x29, 0x76, 0xd1, 0x0a, 0x97, 0xf8, 0x89, 0x75, 0x4a, 0x00, + 0x28, 0x0b, 0x92, 0x35, 0xd0, 0x01, 0x98, 0x00, 0x28, 0x32, 0xd1, 0x47, 0xf6, 0xff, 0x70, + 0x6f, 0xf0, 0xff, 0x3a, 0x0b, 0x99, 0x60, 0x31, 0x6f, 0xf0, 0x80, 0x32, 0x01, 0xf1, 0x08, + 0x0b, 0x0c, 0x92, 0xa1, 0xf1, 0x08, 0x09, 0x05, 0xf1, 0x1a, 0x03, 0x05, 0xf1, 0x18, 0x0c, + 0x05, 0xf1, 0x16, 0x0e, + + 0x01, 0x05, 0xff, 0xff, 0x28, 0x63, 0x19, 0x00, 0xfa, 0x4f, 0xf0, 0x02, 0x08, 0x03, 0x22, + 0x4b, 0xf8, 0x04, 0xab, 0x41, 0xf8, 0x04, 0xab, 0x0c, 0x9f, 0x07, 0x2a, 0x23, 0xf8, 0x08, + 0x0b, 0x49, 0xf8, 0x04, 0x7b, 0x2c, 0xf8, 0x08, 0x0b, 0x2e, 0xf8, 0x08, 0x0b, 0x3c, 0xbf, + 0x05, 0xeb, 0x42, 0x07, 0xf8, 0x82, 0xb8, 0xf1, 0x01, 0x08, 0x02, 0xf1, 0x04, 0x02, 0xe8, + 0xd1, 0x0a, 0x99, 0xcc, 0x81, 0x02, 0x99, 0x09, 0x78, 0x4f, 0xf0, 0x08, 0x08, 0x00, 0x29, + 0x0a, 0x99, 0x37, 0xd1, 0x89, 0x8c, 0x00, 0x29, 0x34, 0xd0, 0x01, 0x99, 0x01, 0x29, 0x31, + 0xd1, 0x6f, 0xf0, 0x80, 0x31, 0x47, 0xf6, 0xff, 0x73, 0x0c, 0x91, 0x0b, 0x99, 0x03, 0x22, + 0x4f, 0xf0, 0x02, 0x0a, 0x01, 0xf1, 0x70, 0x0b, 0x05, 0xf1, 0x28, 0x0c, 0x05, 0xf1, 0x26, + 0x0e, 0x05, 0xf1, 0x24, 0x09, 0x81, 0xf8, 0x7e, 0x40, 0x0c, 0x9f, 0x07, 0x2a, 0x81, 0xf8, + 0x81, 0x40, 0x4b, 0xf8, 0x04, 0x7b, 0x2c, 0xf8, 0x08, 0x3b, 0x81, 0xf8, 0x80, 0x40, 0x2e, + 0xf8, 0x08, 0x3b, 0x81, 0xf8, 0x7f, 0x40, 0x29, 0xf8, 0x08, 0x3b, 0x3c, 0xbf, 0x05, 0xeb, + 0x42, 0x07, 0xbb, 0x84, 0xba, 0xf1, 0x01, 0x0a, 0x01, 0xf1, 0x04, 0x01, 0x02, 0xf1, 0x04, + 0x02, 0xe2, 0xd1, 0x0a, 0x98, 0xa8, 0xf1, 0x02, 0x08, 0x84, 0x84, 0x05, 0x98, 0x48, 0xb1, + 0x01, 0x98, 0x9d, 0xf8, 0x01, 0x10, 0x07, 0x9b, 0x9d, 0xf8, 0x00, 0x20, 0xff, 0xf7, 0x6e, + 0xfc, 0xa8, 0xf1, 0x04, 0x08, 0x95, 0xf8, 0x34, 0x00, 0x18, 0xb9, 0x1f, 0xfa, 0x88, 0xf0, + 0x00, 0xf0, 0xc0, 0xf9, 0x09, 0x98, 0x04, 0x72, 0x86, 0xf8, 0x4c, 0x40, 0x04, 0x70, 0x08, + 0x98, 0x80, 0xf8, 0x34, 0x40, 0x04, 0x98, 0x34, 0x54, 0x2d, 0x48, 0x04, 0x70, 0xb6, 0xf8, + 0xa4, 0x00, 0x20, 0xf0, + + 0x01, 0x05, 0xff, 0xff, 0x22, 0x64, 0x19, 0x00, 0xfa, 0x03, 0x00, 0xa6, 0xf8, 0xa4, 0x00, + 0xb6, 0xf8, 0xa4, 0x00, 0x20, 0xf0, 0x0c, 0x00, 0xa6, 0xf8, 0xa4, 0x00, 0x06, 0x98, 0x90, + 0xf8, 0x77, 0x00, 0xf8, 0xb1, 0x25, 0x49, 0x81, 0xf8, 0x80, 0x42, 0x03, 0x98, 0x08, 0x70, + 0x81, 0xf8, 0x40, 0x01, 0x0c, 0x72, 0x06, 0x98, 0x90, 0xf8, 0x77, 0x10, 0x01, 0xf0, 0xf0, + 0x01, 0x80, 0xf8, 0x77, 0x10, 0x90, 0xf8, 0x77, 0x00, 0x68, 0xb1, 0x06, 0x98, 0x90, 0xf8, + 0x76, 0x00, 0x70, 0xb9, 0x08, 0xe0, 0xc0, 0x46, 0x00, 0x02, 0x00, 0x20, 0x67, 0x11, 0x00, + 0x40, 0x24, 0x09, 0x02, 0x42, 0x04, 0x09, 0x00, 0x20, 0x16, 0x48, 0x04, 0x70, 0x06, 0x98, + 0x80, 0xf8, 0x77, 0x40, 0x08, 0x98, 0x03, 0x99, 0x80, 0xf8, 0xb0, 0x10, 0x13, 0x48, 0xa0, + 0xf8, 0x1f, 0x40, 0x04, 0x70, 0x84, 0x70, 0x95, 0xf8, 0x34, 0x00, 0x10, 0xb9, 0x03, 0x20, + 0x00, 0xf0, 0x70, 0xf9, 0x0d, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0xc0, 0x46, 0xc8, 0xe0, 0xff, + 0xff, 0x38, 0x20, 0x00, 0x40, 0x4a, 0x10, 0x00, 0x40, 0x1c, 0x09, 0x00, 0x20, 0xc0, 0x9a, + 0x03, 0x42, 0x30, 0x20, 0x00, 0x42, 0x80, 0x04, 0x04, 0x42, 0x00, 0x00, 0x00, 0x20, 0x30, + 0x00, 0x00, 0x20, 0x70, 0x1c, 0x04, 0x42, 0x00, 0x40, 0x04, 0x42, 0x3c, 0x42, 0x04, 0x42, + 0x4d, 0x24, 0x00, 0x40, 0x95, 0x48, 0x94, 0x49, 0x08, 0x60, 0x95, 0x49, 0x08, 0x78, 0x20, + 0xf0, 0x03, 0x00, 0x08, 0x70, 0x08, 0x78, 0x93, 0x49, 0x08, 0x70, 0x00, 0xf0, 0x68, 0xbc, + 0x92, 0x49, 0x10, 0x20, 0x08, 0x70, 0x91, 0x48, 0x14, 0x30, 0x00, 0x78, 0x00, 0xf0, 0xc3, + 0xbc, 0x90, 0x48, 0x90, 0x49, 0x08, 0x60, 0x8a, 0x49, 0x08, 0x78, 0x20, 0xf0, 0x03, 0x00, + 0x08, 0x70, 0x08, 0x78, + + 0x01, 0x05, 0xff, 0xff, 0x1c, 0x65, 0x19, 0x00, 0xfa, 0x88, 0x49, 0x08, 0x70, 0x00, 0xf0, + 0x64, 0xbc, 0x2d, 0xe9, 0xf0, 0x4f, 0xad, 0xf1, 0x2c, 0x0d, 0x88, 0x4f, 0xdf, 0xf8, 0x1c, + 0x92, 0x71, 0x20, 0x80, 0x3f, 0xc7, 0xf8, 0x00, 0x90, 0x00, 0x90, 0x81, 0x20, 0x01, 0x90, + 0x80, 0x20, 0x02, 0x90, 0x40, 0x20, 0x03, 0x90, 0x82, 0x48, 0x04, 0x90, 0x82, 0x48, 0x05, + 0x90, 0x82, 0x48, 0x06, 0x90, 0x82, 0x48, 0x07, 0x90, 0x82, 0x48, 0x85, 0x4c, 0xdf, 0xf8, + 0x08, 0xb2, 0x08, 0x90, 0x84, 0x48, 0x84, 0x4d, 0x4f, 0xf0, 0x01, 0x0a, 0x09, 0x90, 0x7f, + 0x48, 0x4f, 0xf0, 0x00, 0x08, 0x82, 0x4e, 0x0a, 0x90, 0x13, 0xe0, 0xc7, 0xf8, 0x80, 0x90, + 0x21, 0x78, 0x41, 0xb9, 0x0a, 0x99, 0x09, 0x88, 0x49, 0x08, 0x04, 0xd3, 0x00, 0x99, 0x21, + 0x70, 0x21, 0x78, 0x31, 0x70, 0x04, 0xe0, 0x31, 0x78, 0x11, 0xb9, 0xc7, 0xf8, 0x00, 0x90, + 0x30, 0xbf, 0xc7, 0xf8, 0x00, 0x90, 0x31, 0x78, 0x00, 0x29, 0xe8, 0xd0, 0x31, 0x78, 0x30, + 0x29, 0x19, 0xdc, 0x30, 0x29, 0x59, 0xd0, 0x20, 0x29, 0x0c, 0xdc, 0x20, 0x29, 0x6b, 0xd0, + 0x10, 0x39, 0x72, 0xd0, 0x49, 0x1e, 0x73, 0xd0, 0xc9, 0x1e, 0x6e, 0xd0, 0x49, 0x1e, 0x6a, + 0xd0, 0x49, 0x1e, 0x65, 0xd0, 0x6f, 0xe0, 0x21, 0x39, 0x5a, 0xd0, 0xc9, 0x1e, 0x56, 0xd0, + 0x49, 0x1e, 0x52, 0xd0, 0x49, 0x1e, 0x4d, 0xd0, 0x66, 0xe0, 0x51, 0x29, 0x0a, 0xdc, 0x51, + 0x29, 0x2c, 0xd0, 0x31, 0x39, 0x34, 0xd0, 0x0f, 0x39, 0x0d, 0xd0, 0x49, 0x1e, 0x29, 0xd0, + 0x0f, 0x39, 0x3b, 0xd0, 0x59, 0xe0, 0x70, 0x39, 0x1e, 0xd0, 0x49, 0x1e, 0x19, 0xd0, 0x0f, + 0x39, 0x14, 0xd0, 0x49, 0x1e, 0x0e, 0xd0, 0x50, 0xe0, 0x9b, 0xf8, 0x00, 0x00, 0x41, 0x28, + 0x06, 0xd1, 0x28, 0x78, + + 0x01, 0x05, 0xff, 0xff, 0x16, 0x66, 0x19, 0x00, 0xfa, 0x20, 0xb9, 0x09, 0x98, 0x80, 0x7b, + 0x08, 0xb9, 0x01, 0x98, 0x28, 0x70, 0xfe, 0xf7, 0xb7, 0xfa, 0x42, 0xe0, 0xfe, 0xf7, 0x9b, + 0xfe, 0x02, 0x98, 0x0e, 0xe0, 0xfe, 0xf7, 0x42, 0xfe, 0x3b, 0xe0, 0x00, 0xf0, 0x0a, 0xfc, + 0x38, 0xe0, 0x00, 0xf0, 0xe4, 0xfb, 0x35, 0xe0, 0x00, 0xf0, 0xd3, 0xf9, 0x32, 0xe0, 0xfe, + 0xf7, 0x1d, 0xfe, 0x03, 0x98, 0x28, 0x70, 0x84, 0xf8, 0x00, 0x80, 0x2b, 0xe0, 0x05, 0x98, + 0x06, 0x99, 0x00, 0xf0, 0xfc, 0xf8, 0x00, 0xf0, 0xc7, 0xfd, 0x24, 0xe0, 0x05, 0x98, 0x06, + 0x99, 0x00, 0xf0, 0xf5, 0xf8, 0x00, 0xf0, 0x9e, 0xfc, 0x07, 0x98, 0x08, 0x99, 0x00, 0xf0, + 0xef, 0xf8, 0x19, 0xe0, 0x00, 0xf0, 0x06, 0xfc, 0x16, 0xe0, 0x50, 0x46, 0x02, 0xe0, 0x50, + 0x46, 0x04, 0xe0, 0x40, 0x46, 0xfd, 0xf7, 0x1b, 0xfe, 0x0e, 0xe0, 0x40, 0x46, 0xff, 0xf7, + 0x97, 0xfd, 0x0a, 0xe0, 0x00, 0xf0, 0xf4, 0xfb, 0x07, 0xe0, 0x50, 0x46, 0x03, 0xe0, 0x00, + 0xf0, 0xb3, 0xfa, 0x02, 0xe0, 0x40, 0x46, 0xfe, 0xf7, 0xbf, 0xfe, 0xc7, 0xf8, 0x80, 0x90, + 0x31, 0x78, 0x8b, 0xf8, 0x00, 0x10, 0x86, 0xf8, 0x00, 0x80, 0x09, 0x99, 0x81, 0xf8, 0x34, + 0x80, 0x21, 0x78, 0x11, 0xf0, 0x03, 0x0f, 0x17, 0xd1, 0x21, 0x78, 0x70, 0x29, 0x12, 0xd0, + 0x29, 0x78, 0x39, 0xb1, 0x22, 0x78, 0x02, 0xf0, 0x04, 0x02, 0x29, 0x78, 0x01, 0xf0, 0x04, + 0x01, 0x8a, 0x42, 0x08, 0xd0, 0x21, 0x78, 0xc9, 0x08, 0x39, 0xbf, 0x04, 0x99, 0x81, 0xf8, + 0x00, 0xa0, 0x04, 0x99, 0x81, 0xf8, 0x02, 0xa0, 0x84, 0xf8, 0x00, 0x80, 0x21, 0x78, 0x00, + 0x29, 0x7f, 0xf4, 0x4d, 0xaf, 0x29, 0x78, 0x00, 0x29, 0x3f, 0xf4, 0x49, 0xaf, 0x29, 0x78, + 0x21, 0x70, 0x21, 0x78, + + 0x01, 0x05, 0xff, 0xff, 0x10, 0x67, 0x19, 0x00, 0xfa, 0x31, 0x70, 0x85, 0xf8, 0x00, 0x80, + 0x41, 0xe7, 0x00, 0xb5, 0xff, 0xf7, 0x85, 0xfa, 0xff, 0xf7, 0xa8, 0xfa, 0x00, 0xbd, 0x07, + 0x49, 0x10, 0x20, 0x08, 0x70, 0x15, 0x48, 0x00, 0x78, 0x00, 0xf0, 0xaf, 0xbb, 0xc0, 0x46, + 0x80, 0xe1, 0x00, 0xe0, 0x0c, 0x00, 0x28, 0x00, 0x1c, 0x09, 0x00, 0x20, 0x1e, 0x09, 0x00, + 0x20, 0x02, 0x01, 0x00, 0x40, 0x34, 0x24, 0x00, 0x40, 0x0c, 0x00, 0x28, 0x00, 0x80, 0xe1, + 0x00, 0xe0, 0x4c, 0x24, 0x00, 0x40, 0x4c, 0x04, 0x00, 0x10, 0xf4, 0x03, 0x00, 0x00, 0x41, + 0x08, 0x00, 0x10, 0xea, 0x03, 0x00, 0x00, 0x1f, 0x09, 0x00, 0x20, 0xdc, 0x02, 0x00, 0x20, + 0x1c, 0x09, 0x00, 0x20, 0xd0, 0x08, 0x00, 0x20, 0x1d, 0x09, 0x00, 0x20, 0x1e, 0x09, 0x00, + 0x20, 0x44, 0x24, 0x00, 0x40, 0x8c, 0x49, 0x0a, 0x89, 0x00, 0x2a, 0x0c, 0xbf, 0x09, 0x68, + 0x49, 0x68, 0x8a, 0x4a, 0xb1, 0xfb, 0xf2, 0xf1, 0xc9, 0xb2, 0x48, 0x43, 0x81, 0x42, 0x2c, + 0xbf, 0x01, 0x20, 0x40, 0x1a, 0x87, 0x49, 0x04, 0x22, 0x20, 0xf0, 0x7f, 0x40, 0x0a, 0x80, + 0x48, 0x60, 0x00, 0x20, 0x08, 0x81, 0x05, 0x20, 0x08, 0x80, 0x48, 0x88, 0x00, 0x28, 0xfc, + 0xd0, 0x0a, 0x80, 0x70, 0x47, 0x80, 0x4a, 0x01, 0x46, 0xc8, 0x43, 0x90, 0x80, 0x10, 0x88, + 0x01, 0x42, 0x02, 0xd1, 0x20, 0xbf, 0x20, 0xbf, 0x10, 0x88, 0x70, 0x47, 0x10, 0xb5, 0x7a, + 0x4b, 0x04, 0x46, 0xe0, 0x43, 0x98, 0x80, 0x01, 0x20, 0xff, 0xf7, 0xcf, 0xff, 0x18, 0x88, + 0x20, 0x46, 0xff, 0xf7, 0xe9, 0xff, 0x10, 0xbd, 0x74, 0x4a, 0x01, 0x21, 0x51, 0x72, 0x91, + 0x8a, 0x01, 0xeb, 0xc0, 0x00, 0x50, 0x82, 0x10, 0x88, 0x70, 0x47, 0x70, 0x4a, 0x01, 0x21, + 0x51, 0x72, 0x91, 0x8a, + + 0x01, 0x05, 0xff, 0xff, 0x0a, 0x68, 0x19, 0x00, 0xfa, 0x01, 0xeb, 0xc0, 0x00, 0x10, 0x82, + 0x10, 0x88, 0x70, 0x47, 0x30, 0xb5, 0x6c, 0x4c, 0x23, 0x78, 0x65, 0x78, 0x5d, 0x1b, 0x05, + 0xf0, 0x3f, 0x05, 0x3d, 0x2d, 0x16, 0xda, 0x04, 0xeb, 0x43, 0x05, 0x68, 0x80, 0x5b, 0x1c, + 0x03, 0xf0, 0x3f, 0x03, 0x04, 0xeb, 0x43, 0x00, 0x41, 0x80, 0x5b, 0x1c, 0x03, 0xf0, 0x3f, + 0x03, 0x04, 0xeb, 0x43, 0x00, 0x42, 0x80, 0x5b, 0x1c, 0x03, 0xf0, 0x3f, 0x03, 0x23, 0x70, + 0x01, 0x21, 0x5d, 0x48, 0x0e, 0x38, 0x01, 0x80, 0x30, 0xbd, 0xf0, 0xb5, 0x5c, 0x4b, 0x06, + 0x46, 0x0c, 0x46, 0x18, 0x68, 0xb0, 0x42, 0x27, 0xd0, 0x5a, 0x4f, 0x00, 0x20, 0x38, 0x70, + 0x02, 0x20, 0xff, 0xf7, 0x8a, 0xff, 0x58, 0x48, 0x05, 0x46, 0x00, 0x88, 0xad, 0x1f, 0x20, + 0xf0, 0x07, 0x00, 0x40, 0xf0, 0x0b, 0x00, 0xe8, 0x80, 0x01, 0x20, 0x38, 0x70, 0xb0, 0x08, + 0x00, 0xf5, 0xa0, 0x60, 0xe8, 0x82, 0x19, 0x20, 0x2f, 0x8a, 0x28, 0x82, 0x02, 0x20, 0xff, + 0xf7, 0x75, 0xff, 0x00, 0x2c, 0x04, 0xf1, 0x03, 0x04, 0x06, 0xd0, 0xa1, 0x08, 0x4c, 0x4c, + 0x2a, 0x68, 0x49, 0x1e, 0x44, 0xf8, 0x04, 0x2b, 0xfa, 0xd1, 0x1e, 0x60, 0x2f, 0x82, 0xf0, + 0xbd, 0x70, 0xb5, 0xad, 0xf1, 0x1c, 0x0d, 0x01, 0x46, 0x47, 0x48, 0x6a, 0x46, 0x78, 0xc8, + 0x78, 0xc2, 0x90, 0xe8, 0x19, 0x00, 0x82, 0xe8, 0x19, 0x00, 0x06, 0x20, 0x91, 0xfb, 0xf0, + 0xf1, 0x0a, 0x12, 0xc9, 0xb2, 0x00, 0x29, 0x4f, 0xf4, 0x80, 0x30, 0x40, 0xfa, 0x02, 0xf0, + 0x08, 0xbf, 0x00, 0x01, 0x08, 0xd0, 0xca, 0x00, 0x02, 0xeb, 0x81, 0x02, 0x80, 0x32, 0x11, + 0x12, 0x3d, 0xf8, 0x11, 0x10, 0x48, 0x43, 0x00, 0x0b, 0x07, 0xb0, 0x70, 0xbd, 0xc1, 0x0b, + 0x12, 0xbf, 0x37, 0x49, + + 0x01, 0x05, 0xff, 0xff, 0x04, 0x69, 0x19, 0x00, 0xfa, 0x00, 0x04, 0x37, 0x49, 0xc3, 0x0d, + 0x37, 0x4a, 0x03, 0xd1, 0x00, 0x02, 0x13, 0x46, 0x5b, 0x00, 0xc9, 0x1a, 0xc3, 0x0e, 0x04, + 0xbf, 0x00, 0x01, 0x89, 0x1a, 0x42, 0x0f, 0x03, 0xd1, 0x80, 0x00, 0x49, 0xf6, 0x20, 0x22, + 0x89, 0x1a, 0x82, 0x0f, 0x03, 0xd1, 0x40, 0x00, 0x44, 0xf6, 0x10, 0x52, 0x89, 0x1a, 0x00, + 0xeb, 0x50, 0x02, 0x13, 0x08, 0x03, 0xd2, 0x10, 0x46, 0x42, 0xf6, 0x14, 0x52, 0x89, 0x1a, + 0x00, 0xeb, 0x90, 0x02, 0x13, 0x08, 0x03, 0xd2, 0x10, 0x46, 0x41, 0xf6, 0xcf, 0x02, 0x89, + 0x1a, 0x00, 0xeb, 0xd0, 0x02, 0x13, 0x08, 0x3c, 0xbf, 0x10, 0x1c, 0xa1, 0xf6, 0x18, 0x51, + 0x00, 0xeb, 0x10, 0x12, 0x13, 0x08, 0x3c, 0xbf, 0x10, 0x1c, 0xa1, 0xf2, 0xbd, 0x61, 0x00, + 0xeb, 0x50, 0x12, 0x13, 0x08, 0x3c, 0xbf, 0x10, 0x1c, 0xa1, 0xf2, 0x6b, 0x31, 0x00, 0xeb, + 0x90, 0x12, 0x13, 0x08, 0x3c, 0xbf, 0x10, 0x1c, 0xa1, 0xf2, 0xb9, 0x11, 0x00, 0xeb, 0xd0, + 0x12, 0x13, 0x08, 0x3c, 0xbf, 0x10, 0x1c, 0xdd, 0x39, 0xc0, 0xf1, 0x00, 0x40, 0xa1, 0xeb, + 0xd0, 0x31, 0x08, 0x46, 0x70, 0x47, 0x00, 0xb5, 0xff, 0xf7, 0xa9, 0xff, 0x00, 0xeb, 0x80, + 0x00, 0xc0, 0x12, 0x00, 0xb2, 0x00, 0xbd, 0xc0, 0x46, 0xc0, 0x00, 0x00, 0x20, 0x40, 0x42, + 0x0f, 0x00, 0x10, 0xe0, 0x00, 0xe0, 0x2c, 0x24, 0x00, 0x40, 0x70, 0x01, 0x00, 0x20, 0x20, + 0x09, 0x00, 0x20, 0xd0, 0x40, 0x00, 0x42, 0x06, 0x02, 0x00, 0x40, 0xac, 0x2f, 0x00, 0x00, + 0xe0, 0x2e, 0x00, 0x00, 0xf4, 0x83, 0x04, 0x00, 0xf0, 0xb2, 0xff, 0xff, 0x41, 0x34, 0x01, + 0x00, 0x70, 0xb5, 0x6a, 0x49, 0x68, 0x48, 0x02, 0x68, 0x08, 0x68, 0x02, 0xf0, 0x01, 0x06, + 0x00, 0x0d, 0x0c, 0x28, + + 0x01, 0x05, 0xff, 0xff, 0xfe, 0x69, 0x19, 0x00, 0xfa, 0x0b, 0xd0, 0x10, 0x28, 0x09, 0xd0, + 0x12, 0x28, 0x07, 0xd0, 0x18, 0x28, 0x05, 0xd0, 0x20, 0x28, 0x03, 0xd0, 0x24, 0x28, 0x18, + 0xbf, 0x31, 0x28, 0x00, 0xd1, 0x16, 0x46, 0x60, 0x4c, 0x00, 0x20, 0x60, 0x4d, 0xa0, 0x67, + 0x84, 0xf8, 0x7d, 0x00, 0x91, 0xf8, 0x9a, 0x00, 0x04, 0x28, 0x08, 0xd1, 0x95, 0xf8, 0x56, + 0x20, 0xb1, 0xf8, 0x9e, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x90, 0x42, 0x00, 0xf0, 0xa6, 0x80, + 0x32, 0x0c, 0xb1, 0xb2, 0x01, 0x20, 0xff, 0xf7, 0xe5, 0xfe, 0x16, 0xf0, 0x09, 0x0f, 0x09, + 0xd0, 0x54, 0x48, 0x55, 0x49, 0xff, 0xf7, 0xff, 0xfe, 0x00, 0xf0, 0xa8, 0xfa, 0xa0, 0x6f, + 0x40, 0xf0, 0x08, 0x00, 0xa0, 0x67, 0x16, 0xf0, 0x81, 0x0f, 0x09, 0xd0, 0x50, 0x48, 0x50, + 0x49, 0xff, 0xf7, 0xf2, 0xfe, 0x00, 0xf0, 0x9b, 0xfa, 0xa0, 0x6f, 0x40, 0xf0, 0x80, 0x00, + 0xa0, 0x67, 0x70, 0x08, 0x09, 0xd3, 0x4c, 0x48, 0x4c, 0x49, 0xff, 0xf7, 0xe6, 0xfe, 0x00, + 0xf0, 0xd8, 0xfa, 0xa0, 0x6f, 0x40, 0xf0, 0x01, 0x00, 0xa0, 0x67, 0xf0, 0x09, 0x09, 0xd3, + 0x48, 0x48, 0x48, 0x49, 0xff, 0xf7, 0xda, 0xfe, 0x00, 0xf0, 0xf8, 0xfa, 0xa0, 0x6f, 0x40, + 0xf0, 0x40, 0x00, 0xa0, 0x67, 0xf0, 0x0a, 0x09, 0xd3, 0x44, 0x48, 0x44, 0x49, 0xff, 0xf7, + 0xce, 0xfe, 0x00, 0xf0, 0x86, 0xfb, 0xa0, 0x6f, 0x40, 0xf4, 0x80, 0x60, 0xa0, 0x67, 0x70, + 0x09, 0x0f, 0xd3, 0x40, 0x48, 0x40, 0x49, 0xff, 0xf7, 0xc2, 0xfe, 0x00, 0xf0, 0x0e, 0xfb, + 0x3f, 0x48, 0x3f, 0x49, 0xff, 0xf7, 0xbc, 0xfe, 0x00, 0xf0, 0x83, 0xfa, 0xa0, 0x6f, 0x40, + 0xf0, 0x10, 0x00, 0xa0, 0x67, 0xb0, 0x09, 0x0c, 0xd3, 0x3b, 0x48, 0x3b, 0x49, 0xff, 0xf7, + 0xb0, 0xfe, 0x00, 0xf0, + + 0x01, 0x05, 0xff, 0xff, 0xf8, 0x6a, 0x19, 0x00, 0xfa, 0x1a, 0xfb, 0x94, 0xf8, 0x7d, 0x00, + 0x18, 0xb9, 0xa0, 0x6f, 0x40, 0xf0, 0x20, 0x00, 0xa0, 0x67, 0x70, 0x0a, 0x09, 0xd3, 0x35, + 0x48, 0x36, 0x49, 0xff, 0xf7, 0xa1, 0xfe, 0x00, 0xf0, 0x61, 0xfa, 0xa0, 0x6f, 0x40, 0xf4, + 0x80, 0x70, 0xa0, 0x67, 0xb0, 0x0a, 0x09, 0xd3, 0x31, 0x48, 0x32, 0x49, 0xff, 0xf7, 0x95, + 0xfe, 0x00, 0xf0, 0xf6, 0xfa, 0xa0, 0x6f, 0x40, 0xf4, 0x00, 0x70, 0xa0, 0x67, 0x30, 0x0b, + 0x09, 0xd3, 0x2d, 0x48, 0x2e, 0x49, 0xff, 0xf7, 0x89, 0xfe, 0x00, 0xf0, 0x32, 0xfa, 0xa0, + 0x6f, 0x40, 0xf4, 0x00, 0x60, 0xa0, 0x67, 0x70, 0x0b, 0x09, 0xd3, 0x29, 0x48, 0x2a, 0x49, + 0xff, 0xf7, 0x7d, 0xfe, 0x00, 0xf0, 0xd6, 0xfa, 0xa0, 0x6f, 0x40, 0xf4, 0x80, 0x50, 0xa0, + 0x67, 0xb0, 0x0b, 0x03, 0xd3, 0xa0, 0x6f, 0x40, 0xf4, 0x00, 0x50, 0xa0, 0x67, 0xf0, 0x0b, + 0x09, 0xd3, 0x22, 0x48, 0x23, 0x49, 0xff, 0xf7, 0x6b, 0xfe, 0x00, 0xf0, 0x5e, 0xfa, 0xa0, + 0x6f, 0x40, 0xf4, 0x80, 0x40, 0xa0, 0x67, 0x08, 0x20, 0x28, 0x80, 0x70, 0xbd, 0xc0, 0x46, + 0x08, 0x00, 0x00, 0x20, 0xc0, 0x00, 0x00, 0x20, 0x30, 0x00, 0x00, 0x20, 0x1e, 0x24, 0x00, + 0x40, 0x60, 0x24, 0x00, 0x10, 0xb4, 0x00, 0x00, 0x00, 0xc0, 0x25, 0x00, 0x10, 0x6c, 0x00, + 0x00, 0x00, 0x68, 0x23, 0x00, 0x10, 0xf8, 0x00, 0x00, 0x00, 0xf8, 0x21, 0x00, 0x10, 0x6e, + 0x01, 0x00, 0x00, 0x74, 0x19, 0x00, 0x10, 0xe8, 0x02, 0x00, 0x00, 0x38, 0x20, 0x00, 0x10, + 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x4c, 0x04, 0x00, 0x00, 0x88, 0x16, 0x00, + 0x10, 0xec, 0x02, 0x00, 0x00, 0x70, 0x1e, 0x00, 0x10, 0xc8, 0x01, 0x00, 0x00, 0x2c, 0x0c, + 0x00, 0x10, 0xd0, 0x03, + + 0x01, 0x05, 0xff, 0xff, 0xf2, 0x6b, 0x19, 0x00, 0xfa, 0x00, 0x00, 0x14, 0x25, 0x00, 0x10, + 0xac, 0x00, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x10, 0x5a, 0x03, 0x00, 0x00, 0x5c, 0x1c, 0x00, + 0x10, 0x14, 0x02, 0x00, 0x00, 0x2d, 0xe9, 0xf0, 0x4f, 0xdf, 0xf8, 0x34, 0xa1, 0xdf, 0xf8, + 0x34, 0xb1, 0x4f, 0xf0, 0x01, 0x09, 0x8a, 0xf8, 0x00, 0x90, 0xbb, 0xf8, 0x88, 0x00, 0x4f, + 0x4e, 0x58, 0xb9, 0x49, 0x49, 0x4f, 0xf0, 0x00, 0x00, 0x08, 0x80, 0x30, 0x46, 0x00, 0xf1, + 0x28, 0x00, 0x00, 0x78, 0x10, 0xb9, 0x07, 0x20, 0xff, 0xf7, 0xa2, 0xfd, 0x44, 0x4d, 0x05, + 0xf6, 0x53, 0x30, 0x01, 0x88, 0x00, 0x24, 0x43, 0x4f, 0x6f, 0xf3, 0x9f, 0x31, 0x41, 0xf4, + 0x80, 0x41, 0x01, 0x80, 0x42, 0x49, 0xdf, 0xf8, 0x00, 0x81, 0xa5, 0xf6, 0xed, 0x03, 0xa1, + 0xf6, 0x15, 0x52, 0x87, 0xf8, 0x70, 0x43, 0x87, 0xf8, 0x74, 0x43, 0x88, 0xf8, 0x00, 0x90, + 0x14, 0x70, 0x32, 0x78, 0x81, 0xf8, 0x5b, 0x4f, 0x81, 0xf8, 0x5f, 0x4f, 0x1a, 0x70, 0x81, + 0xf8, 0x9b, 0x4f, 0x02, 0x88, 0x22, 0xf4, 0xc0, 0x62, 0x02, 0x80, 0x37, 0x48, 0x05, 0xf6, + 0x27, 0x76, 0x87, 0xf8, 0x60, 0x43, 0x04, 0x70, 0xa5, 0xf6, 0xf1, 0x00, 0x85, 0xf8, 0x2d, + 0x4b, 0x85, 0xf8, 0x2b, 0x4b, 0x04, 0x70, 0x4f, 0xf4, 0x40, 0x50, 0x85, 0xf8, 0x87, 0x47, + 0x30, 0x80, 0xa1, 0xf6, 0x25, 0x20, 0x04, 0x70, 0xa1, 0xf6, 0x15, 0x20, 0x04, 0x70, 0xa1, + 0xf6, 0xf5, 0x10, 0x04, 0x70, 0xa6, 0xf5, 0x6e, 0x70, 0x00, 0x88, 0xa6, 0xf5, 0x6e, 0x72, + 0x20, 0xf0, 0x0f, 0x00, 0x10, 0x80, 0xa6, 0xf2, 0xbe, 0x30, 0x87, 0xf8, 0x50, 0x93, 0x3c, + 0x70, 0x00, 0x88, 0xa6, 0xf2, 0xbe, 0x32, 0x20, 0xf4, 0x40, 0x60, 0x10, 0x80, 0x81, 0xf8, + 0xff, 0x9f, 0x36, 0xf8, + + 0x01, 0x05, 0xff, 0xff, 0xec, 0x6c, 0x19, 0x00, 0xfa, 0x06, 0x0c, 0x9b, 0xf8, 0xa5, 0x10, + 0x20, 0xf4, 0x70, 0x60, 0x40, 0xea, 0x01, 0x20, 0x26, 0xf8, 0x06, 0x0c, 0xff, 0x20, 0x85, + 0xf8, 0x73, 0x0b, 0x48, 0x46, 0xff, 0xf7, 0x3d, 0xfd, 0x85, 0xf8, 0x73, 0x4b, 0x70, 0x88, + 0x20, 0xf4, 0x40, 0x70, 0x70, 0x80, 0x87, 0xf8, 0x0c, 0x47, 0x8a, 0xf8, 0x48, 0x40, 0xb6, + 0xf8, 0xd8, 0x00, 0xa5, 0xf5, 0x7f, 0x65, 0x20, 0xf0, 0x70, 0x00, 0xa6, 0xf8, 0xd8, 0x00, + 0x8a, 0xf8, 0x3c, 0x40, 0x2c, 0x70, 0x28, 0xf8, 0x04, 0x4c, 0x08, 0xf8, 0x23, 0x4c, 0x08, + 0xf8, 0x21, 0x4c, 0x88, 0xf8, 0x00, 0x40, 0xbd, 0xe8, 0xf0, 0x8f, 0x24, 0x20, 0x00, 0x42, + 0x00, 0x02, 0x00, 0x20, 0x34, 0x18, 0x00, 0x40, 0xf1, 0x10, 0x00, 0x40, 0x40, 0x85, 0x03, + 0x42, 0x70, 0x24, 0x00, 0x40, 0x25, 0x0e, 0x04, 0x42, 0xdc, 0x08, 0x00, 0x20, 0x14, 0x07, + 0x01, 0x42, 0x00, 0x0c, 0x00, 0x20, 0xa0, 0x2e, 0x00, 0x00, 0xdc, 0x2e, 0x00, 0x00, 0x5f, + 0xf8, 0x0c, 0x00, 0x5f, 0xf8, 0x0c, 0x10, 0x88, 0x42, 0x18, 0xd0, 0x02, 0x68, 0x00, 0xf1, + 0x04, 0x00, 0x03, 0x68, 0x00, 0xf1, 0x04, 0x00, 0x00, 0x2a, 0x08, 0xd0, 0x04, 0x78, 0x1c, + 0x70, 0x00, 0xf1, 0x01, 0x00, 0x03, 0xf1, 0x01, 0x03, 0xa2, 0xf1, 0x01, 0x02, 0xf4, 0xe7, + 0x4f, 0xf0, 0x04, 0x04, 0xa4, 0xeb, 0x00, 0x04, 0x04, 0xf0, 0x03, 0x04, 0x20, 0x44, 0xe4, + 0xe7, 0x70, 0x47, 0x5f, 0xf8, 0x50, 0x00, 0x85, 0x46, 0xff, 0xf7, 0xdb, 0xff, 0xff, 0xf7, + 0xa9, 0xfc, 0xff, 0xf7, 0xad, 0xfb, 0x06, 0x48, 0x00, 0x99, 0x88, 0x42, 0x04, 0xd1, 0x03, + 0x48, 0x07, 0x90, 0x04, 0x48, 0x08, 0x90, 0x00, 0xbd, 0x02, 0xbc, 0xf4, 0xe7, 0xed, 0x2d, + 0x00, 0x00, 0xf9, 0xff, + + 0x01, 0x05, 0xff, 0xff, 0xe6, 0x6d, 0x19, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, 0x00, 0x61, + 0x5f, 0xf8, 0x84, 0x00, 0x85, 0x46, 0xff, 0xf7, 0x97, 0xfb, 0x4f, 0xf0, 0x0a, 0x00, 0x4f, + 0xf0, 0x02, 0x01, 0x06, 0x9a, 0xff, 0xf7, 0x08, 0xfd, 0xfe, 0xe7, 0x00, 0x00, 0x70, 0xb5, + 0x1b, 0x4d, 0x1b, 0x4e, 0x01, 0x24, 0x2c, 0x72, 0xb6, 0xf8, 0xdc, 0x00, 0x00, 0x11, 0x00, + 0xf0, 0x0f, 0x00, 0xff, 0xf7, 0xb2, 0xfc, 0x2c, 0x70, 0xb6, 0xf8, 0xdc, 0x00, 0x00, 0x11, + 0x00, 0xf0, 0x0f, 0x00, 0xff, 0xf7, 0xaa, 0xfc, 0x2c, 0x73, 0xb6, 0xf8, 0xdc, 0x00, 0x00, + 0x11, 0x00, 0xf0, 0x0f, 0x00, 0xff, 0xf7, 0xa2, 0xfc, 0x2c, 0x71, 0xb6, 0xf8, 0xdc, 0x00, + 0x00, 0x12, 0xff, 0xf7, 0x9c, 0xfc, 0x70, 0xbd, 0x30, 0xb5, 0x09, 0x4d, 0x00, 0x24, 0x01, + 0x20, 0x2c, 0x71, 0xff, 0xf7, 0x94, 0xfc, 0x2c, 0x73, 0x01, 0x20, 0xff, 0xf7, 0x90, 0xfc, + 0x2c, 0x70, 0x01, 0x20, 0xff, 0xf7, 0x8c, 0xfc, 0x04, 0x49, 0x04, 0x20, 0x2c, 0x72, 0x08, + 0x70, 0x30, 0xbd, 0xc0, 0x46, 0x00, 0x01, 0x04, 0x42, 0x00, 0x02, 0x00, 0x20, 0x02, 0x01, + 0x00, 0x40, 0x01, 0x20, 0xfe, 0xf7, 0xd1, 0xba, 0x01, 0x20, 0xfd, 0xf7, 0x1a, 0xba, 0x82, + 0xb0, 0x00, 0x94, 0x01, 0x4c, 0x01, 0x94, 0x10, 0xbd, 0x00, 0xbf, 0x71, 0x06, 0x00, 0x20, + 0x01, 0x00, 0x00, 0x00, 0x1c, 0x09, 0x00, 0x20, 0x00, 0xc0, 0x46, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x1d, 0x09, 0x00, 0x20, 0x00, 0xc0, 0x46, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x09, + 0x00, 0x20, 0x00, 0xc0, 0x46, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x1f, 0x09, 0x00, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x09, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x01, 0x05, 0xff, 0x21, 0xe0, 0x6e, 0x19, 0x00, 0x1c, 0xff, 0xff, 0xad, 0xf1, 0x28, 0xe4, + 0x65, 0xd7, 0x58, 0xcb, 0xf8, 0xbf, 0x3b, 0xb5, 0x18, 0xab, 0x85, 0xa1, 0x7d, 0x98, 0xf5, + 0x8f, 0xe7, 0x87, 0x4d, 0x80, 0x00, 0x00, + + 0x01, 0x05, 0xff, 0xff, 0x70, 0x36, 0x19, 0x00, 0xfa, 0x70, 0xb5, 0x00, 0xf0, 0x03, 0x01, + 0x01, 0x29, 0x04, 0xd1, 0x73, 0x49, 0x01, 0x22, 0x0a, 0x70, 0x00, 0x22, 0x0a, 0x70, 0x74, + 0x4c, 0x75, 0x49, 0x22, 0x78, 0x00, 0x2a, 0x32, 0xd0, 0x0a, 0x78, 0x6e, 0x4b, 0x52, 0xb9, + 0x22, 0x78, 0x22, 0xf0, 0x03, 0x02, 0x22, 0x70, 0x22, 0x78, 0x0a, 0x70, 0x21, 0x78, 0x81, + 0x42, 0x29, 0xd0, 0x19, 0x46, 0x26, 0xe0, 0x22, 0x78, 0x68, 0x4e, 0x69, 0x4d, 0x12, 0xf0, + 0x03, 0x0f, 0x0a, 0xd1, 0x21, 0x78, 0x81, 0x42, 0x23, 0xd0, 0x18, 0x70, 0x00, 0x20, 0x29, + 0x88, 0x01, 0x29, 0x08, 0xbf, 0x01, 0x20, 0x30, 0x70, 0x70, 0xbd, 0x22, 0x78, 0x22, 0xf0, + 0x03, 0x02, 0x22, 0x70, 0x22, 0x78, 0x0a, 0x70, 0x21, 0x78, 0x81, 0x42, 0x07, 0xd0, 0x19, + 0x46, 0x08, 0x70, 0x00, 0x20, 0x29, 0x88, 0x01, 0x29, 0x08, 0xbf, 0x01, 0x20, 0x30, 0x70, + 0x00, 0xf0, 0xd1, 0xf8, 0x70, 0xbd, 0x20, 0x70, 0x20, 0x78, 0x08, 0x70, 0x59, 0x48, 0x59, + 0x49, 0x08, 0x60, 0x00, 0xf0, 0xc0, 0xf8, 0x70, 0xbd, 0xf0, 0xb5, 0x4f, 0x4e, 0x57, 0x48, + 0x19, 0x36, 0x01, 0x88, 0x96, 0xf8, 0x27, 0x20, 0x55, 0x48, 0x01, 0xf0, 0x01, 0x03, 0x93, + 0x42, 0x4f, 0xea, 0x21, 0x17, 0x4f, 0xea, 0x21, 0x25, 0x07, 0xf0, 0x03, 0x07, 0x05, 0xf0, + 0x03, 0x05, 0x4b, 0xd1, 0x49, 0x0b, 0x49, 0x4c, 0x2f, 0xd2, 0x01, 0x46, 0x27, 0xb1, 0x01, + 0xf1, 0x0d, 0x01, 0x4f, 0xf0, 0x01, 0x02, 0x0a, 0x70, 0x4f, 0xf0, 0x01, 0x01, 0x0d, 0xb1, + 0x0e, 0x30, 0x01, 0x70, 0x01, 0x2f, 0x02, 0xd1, 0x20, 0x78, 0x11, 0x28, 0x0b, 0xd0, 0x01, + 0x2d, 0x0d, 0xd1, 0x20, 0x78, 0x21, 0x28, 0x06, 0xd0, 0x20, 0x46, 0x01, 0x78, 0x31, 0x29, + 0x02, 0xd0, 0x00, 0x78, + + 0x01, 0x05, 0xff, 0xff, 0x6a, 0x37, 0x19, 0x00, 0xfa, 0x41, 0x28, 0x03, 0xd1, 0x01, 0x20, + 0x30, 0x70, 0x00, 0xf0, 0x8f, 0xf8, 0x01, 0x2f, 0x02, 0xd1, 0x20, 0x78, 0x15, 0x28, 0x04, + 0xd0, 0x01, 0x2d, 0x25, 0xd1, 0x20, 0x78, 0x25, 0x28, 0x22, 0xd1, 0x01, 0x25, 0xb5, 0x70, + 0x00, 0xf0, 0x81, 0xf8, 0xf0, 0xbd, 0x01, 0x25, 0x45, 0x73, 0x85, 0x73, 0x20, 0x78, 0x11, + 0x28, 0x08, 0xd0, 0x20, 0x78, 0x21, 0x28, 0x05, 0xd0, 0x20, 0x78, 0x31, 0x28, 0x02, 0xd0, + 0x20, 0x78, 0x41, 0x28, 0x02, 0xd1, 0x35, 0x70, 0x00, 0xf0, 0x6e, 0xf8, 0x20, 0x78, 0x15, + 0x28, 0xe6, 0xd0, 0x20, 0x78, 0x25, 0x28, 0x05, 0xd1, 0xe2, 0xe7, 0x00, 0x21, 0x41, 0x73, + 0x81, 0x73, 0x31, 0x70, 0xb1, 0x70, 0xf0, 0xbd, 0x10, 0xb5, 0x29, 0x48, 0x38, 0x38, 0x00, + 0x88, 0x40, 0x08, 0x32, 0xd3, 0x24, 0x48, 0x24, 0x4b, 0x00, 0x88, 0xc1, 0x12, 0x11, 0xf0, + 0x03, 0x0f, 0x23, 0x48, 0x04, 0xd0, 0x19, 0x46, 0x01, 0xf1, 0x76, 0x01, 0x09, 0x78, 0xd9, + 0xb9, 0x21, 0x4a, 0x00, 0x21, 0x12, 0x78, 0x22, 0xf0, 0x0f, 0x02, 0x20, 0x2a, 0x08, 0xbf, + 0x01, 0x21, 0x69, 0xb9, 0x00, 0x21, 0x80, 0xf8, 0x40, 0x11, 0xa0, 0xf5, 0xa0, 0x74, 0x01, + 0x22, 0x22, 0x70, 0x02, 0x70, 0xa0, 0xf5, 0x9c, 0x72, 0x11, 0x70, 0x80, 0xf8, 0xfc, 0x10, + 0x0c, 0xe0, 0x93, 0xf8, 0x77, 0x10, 0x01, 0xf0, 0x0f, 0x01, 0x07, 0xe0, 0x01, 0x21, 0x80, + 0xf8, 0xfc, 0x10, 0x01, 0x70, 0x93, 0xf8, 0x77, 0x10, 0x41, 0xf0, 0x10, 0x01, 0x83, 0xf8, + 0x77, 0x10, 0x10, 0xbd, 0xc0, 0x46, 0x34, 0x24, 0x00, 0x40, 0x1d, 0x09, 0x00, 0x20, 0x04, + 0x09, 0x00, 0x20, 0x0a, 0x02, 0x00, 0x20, 0x1c, 0x09, 0x00, 0x20, 0x1e, 0x09, 0x00, 0x20, + 0x0c, 0x00, 0x28, 0x00, + + 0x01, 0x05, 0xff, 0x45, 0x64, 0x38, 0x19, 0x00, 0x40, 0x80, 0xe1, 0x00, 0xe0, 0x5e, 0x01, + 0x00, 0x20, 0xd0, 0x08, 0x00, 0x20, 0xca, 0x00, 0x00, 0x20, 0x00, 0x02, 0x00, 0x20, 0x40, + 0x41, 0x04, 0x42, 0x44, 0x24, 0x00, 0x40, 0x1c, 0x09, 0x00, 0x20, 0x82, 0xb0, 0x00, 0x94, + 0x01, 0x4c, 0x01, 0x94, 0x10, 0xbd, 0x00, 0xbf, 0xcb, 0x2d, 0x00, 0x00, 0x82, 0xb0, 0x00, + 0x94, 0x01, 0x4c, 0x01, 0x94, 0x10, 0xbd, 0x00, 0xbf, 0xe1, 0x24, 0x00, 0x00, + + 0x01, 0x01, 0xff, 0x06, 0x06, 0x02, 0x19, 0x00, 0x1b, 0x00, + + 0x01, 0x01, 0xff, 0x06, 0x16, 0x02, 0x19, 0x00, 0x00, 0x05, + + 0x01, 0x01, 0xff, 0x06, 0x10, 0x02, 0x19, 0x00, 0x19, 0x00, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x70, 0xb5, 0x04, 0x46, 0x0c, 0x4d, + 0xa0, 0x08, 0x00, 0xf5, 0xa0, 0x60, 0x0e, 0x46, 0x81, 0xb2, 0x28, 0x46, 0x10, 0x30, 0x82, + 0x88, 0x91, 0x42, 0x05, 0xd0, 0x81, 0x80, 0x15, 0x21, 0x01, 0x80, 0x02, 0x20, 0xff, 0xf7, + 0xd9, 0xfb, 0x04, 0xf0, 0x03, 0x04, 0x00, 0x2e, 0x25, 0x44, 0x0c, 0xbf, 0x28, 0x78, 0x28, + 0x88, 0x70, 0xbd, 0xc0, 0x46, 0x00, 0x02, 0x00, 0x40, 0x2d, 0xe9, 0xf0, 0x4f, 0xad, 0xf1, + 0x30, 0x0d, 0xdf, 0xf8, 0x2c, 0x82, 0xdf, 0xf8, 0x34, 0x92, 0x8a, 0x4d, 0xb8, 0xf8, 0xa0, + 0x00, 0x98, 0xf8, 0xa4, 0x70, 0x29, 0x46, 0x44, 0x10, 0x78, 0xb2, 0x00, 0x90, 0x48, 0x46, + 0xcd, 0xf8, 0x04, 0x90, 0xa4, 0x38, 0x01, 0x90, 0x02, 0x95, 0x10, 0x39, 0x02, 0x91, 0x48, + 0x78, 0x09, 0x78, 0x08, 0x2f, 0x00, 0xf0, 0x1f, 0x00, 0x01, 0xf0, 0x1f, 0x01, 0x15, 0xf8, + 0x00, 0xc0, 0xa0, 0xf1, 0x01, 0x02, 0x15, 0xf8, 0x01, 0xe0, 0xd2, 0xb2, 0xa1, 0xf1, 0x01, + 0x03, 0xae, 0x5c, 0xdb, 0xb2, 0xed, 0x5c, 0x04, 0xf0, 0x0f, 0x04, 0x03, 0xda, 0x0b, 0x46, + 0x02, 0x46, 0x75, 0x46, 0x66, 0x46, 0x02, 0x99, 0x08, 0x88, 0x20, 0xf0, 0x1f, 0x00, 0x03, + 0x43, 0x0b, 0x80, 0x08, 0x88, 0x0f, 0x46, 0x20, 0xf4, 0xf8, 0x50, 0x40, 0xea, 0x02, 0x20, + 0x08, 0x80, 0xbd, 0x70, 0x02, 0x20, 0x6e, 0x4d, 0xfe, 0x70, 0x00, 0x26, 0x03, 0x96, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x2e, 0x70, 0xff, 0xf7, 0x85, 0xfb, + 0xa7, 0xf6, 0xaa, 0x70, 0x00, 0x88, 0xa7, 0xf6, 0xaa, 0x71, 0x4f, 0xf0, 0x01, 0x0a, 0x20, + 0xf0, 0x07, 0x00, 0x40, 0xf0, 0x0b, 0x00, 0x08, 0x80, 0xa7, 0xf6, 0x9c, 0x70, 0x85, 0xf8, + 0x00, 0xa0, 0x06, 0x80, 0xa7, 0xf5, 0x7a, 0x60, 0x00, 0x88, 0x04, 0x90, 0x9c, 0x48, 0x31, + 0x46, 0x00, 0x19, 0xff, 0xf7, 0x7f, 0xff, 0x35, 0x46, 0xc6, 0xb2, 0x00, 0x99, 0x99, 0x48, + 0x00, 0xeb, 0x41, 0x00, 0x51, 0x46, 0xff, 0xf7, 0x76, 0xff, 0x01, 0x46, 0x71, 0x43, 0xcd, + 0xf8, 0x14, 0x80, 0x0f, 0x22, 0x95, 0x4e, 0xc9, 0x13, 0x89, 0xb2, 0x16, 0xf8, 0x01, 0x3f, + 0x8b, 0x42, 0x02, 0xdd, 0x6d, 0x1c, 0x52, 0x1e, 0xf8, 0xd1, 0x08, 0x2d, 0xea, 0xb2, 0x3c, + 0xbf, 0xc5, 0xf1, 0x07, 0x00, 0xc2, 0xb2, 0x1f, 0x20, 0xff, 0xf7, 0x92, 0xfb, 0x03, 0x9f, + 0x9c, 0x48, 0x39, 0x46, 0x40, 0x19, 0xff, 0xf7, 0x58, 0xff, 0x01, 0x9b, 0x01, 0x11, 0xca, + 0xb2, 0xd9, 0x8c, 0x21, 0xf0, 0xf0, 0x01, 0x41, 0xea, 0x02, 0x11, 0xd9, 0x84, 0xb3, 0xf8, + 0x88, 0x60, 0x19, 0x46, 0x60, 0xf3, 0x03, 0x06, 0xa3, 0xf8, 0x88, 0x60, 0x08, 0x88, 0x62, + 0xf3, 0x1f, 0x30, 0x40, 0xf4, 0x80, 0x50, 0x18, 0x80, 0xa4, 0x48, 0x39, 0x46, 0x40, 0x19, + 0xff, 0xf7, 0x3d, 0xff, 0x02, 0x9e, 0x86, 0xf8, 0xe0, 0x0e, 0xa1, 0x48, 0x39, 0x46, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x40, 0x19, 0xff, 0xf7, 0x35, 0xff, + 0x86, 0xf8, 0xe4, 0x0e, 0x08, 0x2c, 0x06, 0x94, 0xbc, 0xbf, 0xc4, 0xf1, 0x07, 0x00, 0x06, + 0x90, 0x06, 0x98, 0x02, 0x2c, 0xc0, 0xb2, 0x02, 0xd1, 0x00, 0x99, 0x08, 0x29, 0x09, 0xdc, + 0x0a, 0x2c, 0x00, 0x99, 0x01, 0xd1, 0x08, 0x29, 0x04, 0xdc, 0x0d, 0x2c, 0x00, 0x99, 0x03, + 0xd1, 0x0a, 0x29, 0x01, 0xdb, 0x40, 0x1e, 0xc0, 0xb2, 0xc1, 0x00, 0x92, 0x4e, 0x03, 0x9d, + 0x05, 0x27, 0x01, 0xeb, 0x40, 0x01, 0x76, 0x18, 0x51, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x0f, + 0xff, 0x49, 0x46, 0x09, 0x1d, 0x7f, 0x1e, 0x06, 0xf1, 0x02, 0x06, 0x48, 0x53, 0x05, 0xf1, + 0x0c, 0x05, 0xf2, 0xd1, 0x06, 0x98, 0x02, 0x2c, 0xc0, 0xb2, 0x02, 0xd1, 0x00, 0x99, 0x08, + 0x29, 0x09, 0xdc, 0x0a, 0x2c, 0x00, 0x99, 0x01, 0xd1, 0x08, 0x29, 0x04, 0xdc, 0x0d, 0x2c, + 0x00, 0x99, 0x03, 0xd1, 0x0a, 0x29, 0x01, 0xdb, 0x40, 0x1e, 0xc0, 0xb2, 0x00, 0xeb, 0x80, + 0x00, 0x03, 0x9d, 0x4f, 0x46, 0xdf, 0xf8, 0xf8, 0xb1, 0x82, 0x46, 0x2e, 0x46, 0x0a, 0xeb, + 0x06, 0x00, 0x03, 0x99, 0x58, 0x44, 0xff, 0xf7, 0xe5, 0xfe, 0x01, 0x46, 0x39, 0xf8, 0x05, + 0x00, 0x76, 0x1c, 0x20, 0xf4, 0x7f, 0x60, 0x05, 0x2e, 0x40, 0xea, 0x01, 0x10, 0x78, 0x53, + 0x05, 0xf1, 0x0c, 0x05, 0xec, 0xd3, 0x06, 0x98, 0x02, 0x2c, 0xc5, 0xb2, 0x02, 0xd1, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x00, 0x98, 0x0a, 0x28, 0x12, 0xda, + 0x0a, 0x2c, 0x00, 0x98, 0x01, 0xd1, 0x0a, 0x28, 0x0d, 0xda, 0x0d, 0x2c, 0x00, 0x98, 0x0c, + 0xd1, 0x0a, 0x28, 0x0a, 0xdb, 0x07, 0xe0, 0xc0, 0x00, 0x00, 0x20, 0xc0, 0x11, 0x00, 0x40, + 0xd0, 0x40, 0x00, 0x42, 0xa4, 0x20, 0x00, 0x40, 0x6d, 0x1e, 0xed, 0xb2, 0x03, 0x9c, 0x65, + 0x4f, 0x05, 0xeb, 0x85, 0x05, 0x26, 0x46, 0xa8, 0x19, 0x03, 0x99, 0x38, 0x18, 0xff, 0xf7, + 0xb2, 0xfe, 0x49, 0x46, 0x76, 0x1c, 0x89, 0x1c, 0x05, 0x2e, 0x08, 0x55, 0x04, 0xf1, 0x0c, + 0x04, 0xf2, 0xd3, 0x06, 0x98, 0x00, 0xeb, 0x80, 0x00, 0x07, 0x90, 0x03, 0x9d, 0xdf, 0xf8, + 0x70, 0xb1, 0xdf, 0xf8, 0x68, 0x81, 0x2f, 0x46, 0x07, 0x9e, 0xdd, 0xf8, 0x0c, 0xa0, 0xf6, + 0x19, 0x51, 0x46, 0x08, 0xeb, 0x06, 0x00, 0xff, 0xf7, 0x97, 0xfe, 0xc4, 0xb2, 0x51, 0x46, + 0x0b, 0xeb, 0x06, 0x00, 0xff, 0xf7, 0x91, 0xfe, 0x00, 0x99, 0x88, 0x42, 0xdc, 0xbf, 0xa4, + 0x1c, 0xe4, 0xb2, 0x48, 0x46, 0x7f, 0x1c, 0x40, 0x1e, 0x05, 0x2f, 0x44, 0x55, 0x05, 0xf1, + 0x0c, 0x05, 0xe3, 0xd3, 0x4d, 0x48, 0xdd, 0xf8, 0x0c, 0x90, 0x08, 0x90, 0x4c, 0x48, 0x09, + 0x90, 0x4c, 0x48, 0x4e, 0x46, 0xdf, 0xf8, 0x20, 0x81, 0x0a, 0x90, 0x0b, 0x90, 0x07, 0x9c, + 0xdd, 0xf8, 0x0c, 0xb0, 0xa4, 0x19, 0x59, 0x46, 0x08, 0xeb, 0x04, 0x00, 0xff, 0xf7, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x6f, 0xfe, 0xc1, 0x10, 0x00, 0xf0, + 0x07, 0x00, 0x05, 0x46, 0xa2, 0x46, 0x08, 0x98, 0xcf, 0xb2, 0x59, 0x46, 0x50, 0x44, 0xff, + 0xf7, 0x64, 0xfe, 0x00, 0x9a, 0x00, 0xf0, 0x0f, 0x01, 0xbb, 0x46, 0x91, 0x42, 0x19, 0xdc, + 0x00, 0x99, 0x06, 0x9c, 0xb1, 0xeb, 0x20, 0x1f, 0x23, 0xdb, 0xbb, 0x46, 0x0c, 0xb3, 0x5f, + 0x45, 0x1f, 0xd1, 0x64, 0x1e, 0x04, 0xeb, 0x84, 0x00, 0x03, 0x99, 0x30, 0x18, 0x40, 0x44, + 0xff, 0xf7, 0x4d, 0xfe, 0xc0, 0x10, 0xc7, 0xb2, 0xf1, 0xe7, 0x58, 0x13, 0x00, 0x10, 0x68, + 0x13, 0x00, 0x10, 0xe7, 0x33, 0x00, 0x00, 0x06, 0x9c, 0x5f, 0x45, 0x0b, 0xd1, 0x64, 0x1c, + 0x04, 0xeb, 0x84, 0x00, 0x03, 0x99, 0x30, 0x18, 0x40, 0x44, 0xff, 0xf7, 0x39, 0xfe, 0xc0, + 0x10, 0x10, 0x2c, 0xc7, 0xb2, 0xf1, 0xd3, 0x09, 0x98, 0x03, 0x99, 0x50, 0x44, 0xff, 0xf7, + 0x30, 0xfe, 0x00, 0x9a, 0x00, 0xf0, 0x0f, 0x01, 0x91, 0x42, 0x08, 0xdc, 0x00, 0x99, 0xb1, + 0xeb, 0x20, 0x1f, 0x06, 0xdb, 0xad, 0x1c, 0x03, 0xe0, 0xc0, 0x46, 0x80, 0x13, 0x00, 0x10, + 0xad, 0x1e, 0xed, 0xb2, 0x0a, 0x98, 0x48, 0x44, 0x01, 0x88, 0x0b, 0x9a, 0x21, 0xf4, 0xf8, + 0x71, 0x41, 0xea, 0x07, 0x11, 0x22, 0xf8, 0x09, 0x10, 0x09, 0xf1, 0x0c, 0x09, 0x81, 0x88, + 0x76, 0x1c, 0x05, 0x2e, 0x21, 0xf0, 0x07, 0x01, 0x45, 0xea, 0x01, 0x05, 0x85, 0x80, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x92, 0xd3, 0x02, 0x98, 0x04, 0x99, + 0xa0, 0xf5, 0x7a, 0x60, 0x01, 0x80, 0x01, 0x9a, 0x05, 0x99, 0xb2, 0xf8, 0xe6, 0x00, 0xb1, + 0xf8, 0xaa, 0x10, 0x0c, 0xb0, 0x20, 0xf0, 0x0f, 0x00, 0x01, 0x43, 0xa2, 0xf8, 0xe6, 0x10, + 0xbd, 0xe8, 0xf0, 0x8f, 0x90, 0x13, 0x00, 0x10, 0xa0, 0x13, 0x00, 0x10, 0xb0, 0x13, 0x00, + 0x10, 0x50, 0x14, 0x00, 0x10, 0xa0, 0x14, 0x00, 0x10, 0xf0, 0x14, 0x00, 0x10, 0x40, 0x15, + 0x00, 0x10, 0x90, 0x15, 0x00, 0x10, 0xe8, 0x15, 0x00, 0x10, 0x38, 0x16, 0x00, 0x10, 0xa0, + 0x20, 0x00, 0x40, 0xc3, 0xbc, 0xb5, 0xae, 0xa6, 0x9f, 0x98, 0x91, 0x89, 0x82, 0x7b, 0x74, + 0x6c, 0x65, 0x5e, 0x00, 0x10, 0xb5, 0x8a, 0x4a, 0x4f, 0xf0, 0x00, 0x00, 0x01, 0x46, 0x14, + 0x46, 0xa4, 0xf1, 0xbe, 0x04, 0x21, 0x80, 0xa0, 0x70, 0x20, 0x71, 0xa0, 0x71, 0xb4, 0xf8, + 0x42, 0x30, 0xdb, 0xb2, 0xa4, 0xf8, 0x42, 0x30, 0x81, 0x4b, 0x18, 0x70, 0xa4, 0xf6, 0xf4, + 0x33, 0x19, 0x80, 0xa4, 0xf6, 0xf2, 0x33, 0x19, 0x80, 0x11, 0x88, 0xa4, 0xf6, 0xfc, 0x33, + 0x21, 0xf0, 0x03, 0x01, 0xa4, 0xf8, 0xbe, 0x10, 0x7b, 0x49, 0x8a, 0x6b, 0x1a, 0x60, 0xca, + 0x6b, 0xa4, 0xf6, 0xf8, 0x33, 0x1a, 0x60, 0x91, 0xf8, 0x41, 0x20, 0x78, 0x4b, 0x1a, 0x70, + 0x91, 0xf8, 0x40, 0x20, 0x77, 0x4b, 0x84, 0xf8, 0xe1, 0x25, 0x91, 0xf8, 0x42, 0x20, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x84, 0xf8, 0xdd, 0x24, 0x91, 0xf8, + 0x43, 0x20, 0x84, 0xf8, 0xdc, 0x24, 0x4a, 0x6c, 0x1a, 0x60, 0x91, 0xf8, 0x48, 0x30, 0x91, + 0xf8, 0x49, 0x10, 0x7e, 0x4a, 0x82, 0xf8, 0x7e, 0x10, 0x8f, 0x49, 0x82, 0xf8, 0x7a, 0x30, + 0x91, 0xf8, 0x7c, 0x20, 0x3a, 0xb9, 0x01, 0x22, 0x81, 0xf8, 0x7c, 0x20, 0xff, 0xf7, 0xc0, + 0xf8, 0x68, 0x49, 0x20, 0x20, 0x08, 0x80, 0x10, 0xbd, 0x2d, 0xe9, 0xfc, 0x4f, 0x4f, 0xf4, + 0x91, 0x71, 0xdf, 0xf8, 0xcc, 0xc1, 0x4f, 0xf0, 0x06, 0x0e, 0x4f, 0xf4, 0x92, 0x7b, 0xdf, + 0xf8, 0x88, 0xa1, 0x00, 0x91, 0x0c, 0xf5, 0x81, 0x71, 0x01, 0x91, 0x00, 0x22, 0x4f, 0x21, + 0x54, 0x46, 0x14, 0xf8, 0x01, 0x3b, 0x93, 0x42, 0xa8, 0xbf, 0x1a, 0x1c, 0x49, 0x1e, 0xf8, + 0xd1, 0x00, 0x9b, 0x3c, 0xf8, 0x0b, 0x10, 0x3c, 0xf8, 0x03, 0x30, 0x02, 0xfb, 0x03, 0x11, + 0x01, 0xf5, 0x80, 0x71, 0x0c, 0x13, 0x9c, 0xf8, 0xe0, 0x10, 0xa1, 0x42, 0xa8, 0xbf, 0x0c, + 0x1c, 0x9c, 0xf8, 0xe1, 0x10, 0xa1, 0x42, 0xb4, 0xbf, 0x1f, 0xfa, 0x84, 0xf8, 0x88, 0x46, + 0x05, 0x46, 0x01, 0x99, 0xd1, 0x46, 0x00, 0x23, 0x0a, 0x78, 0x9a, 0x42, 0x12, 0xbf, 0xa6, + 0xb2, 0x46, 0x46, 0x49, 0x1c, 0x19, 0xf8, 0x01, 0x7b, 0x00, 0x22, 0xbe, 0x42, 0xd8, 0xbf, + 0x01, 0x22, 0x5b, 0x1c, 0x2e, 0x78, 0x02, 0xfa, 0x0e, 0xf2, 0x4f, 0x2b, 0x42, 0xea, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x06, 0x02, 0x05, 0xf8, 0x01, 0x2b, + 0xe9, 0xd3, 0xbe, 0xf1, 0x01, 0x0e, 0xaa, 0xf1, 0x50, 0x0a, 0xc0, 0xd5, 0xbd, 0xe8, 0xfc, + 0x8f, 0x2d, 0xe9, 0xf0, 0x4f, 0x4f, 0xf0, 0x00, 0x09, 0x4b, 0x49, 0xca, 0x46, 0x40, 0x1e, + 0xd4, 0x46, 0xc8, 0x46, 0x91, 0xf8, 0xe2, 0xb0, 0x54, 0x46, 0x91, 0xf8, 0xe3, 0x60, 0x62, + 0x46, 0x63, 0x46, 0x65, 0x46, 0x10, 0xf8, 0x01, 0x7f, 0x01, 0x2f, 0x2c, 0xd0, 0x40, 0x2f, + 0x2a, 0xd0, 0xf9, 0x43, 0x11, 0xf0, 0x1e, 0x0f, 0x0f, 0xd0, 0x11, 0xf0, 0x3c, 0x0f, 0x09, + 0xd0, 0x11, 0xf0, 0x0f, 0x0f, 0x06, 0xd0, 0x11, 0xf0, 0x78, 0x0f, 0xce, 0x46, 0x18, 0xbf, + 0x4f, 0xf0, 0x01, 0x0e, 0x00, 0xe0, 0xce, 0x46, 0x71, 0x46, 0x00, 0xe0, 0x49, 0x46, 0x5f, + 0xfa, 0x81, 0xfe, 0x1f, 0xb1, 0x09, 0x01, 0x49, 0x1c, 0xc9, 0xb2, 0x00, 0xe0, 0x49, 0x46, + 0xba, 0xf1, 0x00, 0x0f, 0x4f, 0xf0, 0x01, 0x07, 0x01, 0x70, 0x04, 0xd1, 0x11, 0xb1, 0xbe, + 0xf1, 0x00, 0x0f, 0x00, 0xd0, 0x4f, 0x46, 0x01, 0x78, 0xba, 0x46, 0x02, 0xe0, 0x49, 0x46, + 0x80, 0xf8, 0x00, 0x90, 0x12, 0xb1, 0x11, 0xb9, 0x03, 0xf1, 0x01, 0x03, 0x49, 0xb1, 0x11, + 0x29, 0x02, 0xf1, 0x01, 0x02, 0x08, 0xbf, 0x64, 0x1c, 0x9e, 0x42, 0x02, 0xd9, 0x1c, 0x19, + 0x9a, 0x18, 0x4b, 0x46, 0x4f, 0x2d, 0x18, 0xbf, 0x9e, 0x42, 0x10, 0xd1, 0x93, 0x45, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x09, 0xd3, 0x94, 0x42, 0x04, 0xd1, + 0x00, 0x2a, 0x14, 0xbf, 0x01, 0x21, 0x61, 0x46, 0x8c, 0x46, 0x5f, 0xfa, 0x8c, 0xfc, 0x01, + 0xe0, 0x4f, 0xf0, 0x10, 0x08, 0x4b, 0x46, 0x4c, 0x46, 0x4a, 0x46, 0x6d, 0x1c, 0x50, 0x2d, + 0xa4, 0xd3, 0x0c, 0xeb, 0xca, 0x10, 0x40, 0x44, 0xc0, 0xb2, 0xbd, 0xe8, 0xf0, 0x8f, 0xc0, + 0x46, 0x4c, 0x8c, 0x03, 0x42, 0xd6, 0x1c, 0x00, 0x40, 0xd0, 0x08, 0x00, 0x20, 0x00, 0x3f, + 0x04, 0x42, 0xf8, 0x20, 0x00, 0x40, 0x1e, 0x24, 0x00, 0x40, 0x20, 0x06, 0x00, 0x20, 0x2d, + 0xe9, 0xf0, 0x4f, 0xad, 0xf5, 0x92, 0x7d, 0x0a, 0x4f, 0x63, 0x48, 0x4f, 0xf0, 0x00, 0x05, + 0x05, 0x70, 0x97, 0xf8, 0xe7, 0x00, 0x38, 0xb9, 0x87, 0xf8, 0xe6, 0x50, 0x87, 0xf8, 0xe8, + 0x50, 0x87, 0xf8, 0xe9, 0x50, 0xa7, 0xf8, 0xea, 0x50, 0x5c, 0x48, 0x00, 0x78, 0x00, 0x28, + 0x40, 0xf0, 0xad, 0x80, 0x01, 0xe0, 0x00, 0x02, 0x00, 0x20, 0x59, 0x4e, 0x35, 0x70, 0x02, + 0x20, 0xff, 0xf7, 0xa9, 0xfa, 0x58, 0x48, 0x04, 0x46, 0x00, 0x88, 0xa4, 0x1f, 0x20, 0xf0, + 0x07, 0x00, 0x40, 0xf0, 0x0b, 0x00, 0xe0, 0x80, 0x01, 0x20, 0x46, 0x90, 0x30, 0x70, 0x08, + 0x48, 0x4f, 0xf0, 0x19, 0x0a, 0x4f, 0xf4, 0x00, 0x7b, 0x47, 0x90, 0x50, 0x48, 0x6f, 0xf0, + 0xff, 0x38, 0xa9, 0x46, 0x48, 0x90, 0x97, 0xf8, 0xde, 0x20, 0x4a, 0x45, 0x70, 0xd9, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x02, 0xe0, 0xc0, 0x46, 0x30, 0x00, + 0x00, 0x20, 0x14, 0x21, 0x1e, 0xaa, 0x32, 0xab, 0x49, 0x1e, 0x42, 0xf8, 0x04, 0x8b, 0x43, + 0xf8, 0x04, 0x8b, 0xf9, 0xd1, 0x14, 0xab, 0x0a, 0xaa, 0x69, 0x46, 0x03, 0x20, 0xfd, 0xf7, + 0xe1, 0xfc, 0xa4, 0xf8, 0x16, 0xb0, 0x26, 0x8a, 0x02, 0x20, 0xa4, 0xf8, 0x10, 0xa0, 0xff, + 0xf7, 0x73, 0xfa, 0x48, 0x9b, 0x8c, 0x21, 0x53, 0xf8, 0x04, 0x2b, 0x49, 0x1e, 0x22, 0x60, + 0xfa, 0xd1, 0x26, 0x82, 0x08, 0x20, 0xff, 0xf7, 0x86, 0xfa, 0x14, 0xab, 0x0a, 0xaa, 0x69, + 0x46, 0x02, 0x20, 0xfd, 0xf7, 0xc8, 0xfc, 0x28, 0x46, 0xfe, 0xf7, 0x7f, 0xff, 0x32, 0xa8, + 0xff, 0xf7, 0xc0, 0xfe, 0xa4, 0xf8, 0x16, 0xb0, 0x02, 0x20, 0xa4, 0xf8, 0x10, 0xa0, 0xff, + 0xf7, 0x55, 0xfa, 0x8c, 0x21, 0x48, 0x9b, 0x22, 0x68, 0x49, 0x1e, 0x43, 0xf8, 0x04, 0x2b, + 0xfa, 0xd1, 0x26, 0x82, 0x1e, 0xa8, 0xff, 0xf7, 0xae, 0xfe, 0x1e, 0xa8, 0xff, 0xf7, 0xfc, + 0xfe, 0x87, 0xf8, 0xe4, 0x00, 0x32, 0xa8, 0xff, 0xf7, 0xf7, 0xfe, 0x87, 0xf8, 0xe5, 0x00, + 0x97, 0xf8, 0xe5, 0x10, 0x97, 0xf8, 0xe4, 0x20, 0x97, 0xf8, 0xe6, 0x30, 0x09, 0xf1, 0x01, + 0x09, 0x11, 0x43, 0x97, 0xf8, 0xe7, 0x20, 0x52, 0x1c, 0x87, 0xf8, 0xe7, 0x20, 0x01, 0xf0, + 0x01, 0x02, 0xd2, 0x18, 0x97, 0xf8, 0xe8, 0x30, 0x87, 0xf8, 0xe6, 0x20, 0x0a, 0x11, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x02, 0xf0, 0x01, 0x02, 0xd2, 0x18, + 0x87, 0xf8, 0xe8, 0x20, 0x97, 0xf8, 0xe9, 0x20, 0x02, 0xeb, 0xe1, 0x12, 0x87, 0xf8, 0xe9, + 0x20, 0x4a, 0x09, 0x8a, 0xd2, 0x48, 0x08, 0x0d, 0xd2, 0x97, 0xf8, 0xdf, 0x00, 0x02, 0x28, + 0x09, 0xd0, 0x01, 0x28, 0x01, 0xd1, 0x48, 0x09, 0x05, 0xd2, 0x31, 0xf0, 0x7f, 0x01, 0x04, + 0xbf, 0x02, 0x20, 0x46, 0x90, 0x04, 0xd0, 0xb7, 0xf8, 0xea, 0x00, 0x40, 0x1c, 0xa7, 0xf8, + 0xea, 0x00, 0x46, 0x99, 0x47, 0x98, 0x80, 0xf8, 0x7c, 0x10, 0x07, 0x49, 0x49, 0xb0, 0x20, + 0x20, 0x08, 0x80, 0xbd, 0xe8, 0xf0, 0x8f, 0xac, 0x00, 0x00, 0x20, 0xde, 0x08, 0x00, 0x20, + 0xd0, 0x40, 0x00, 0x42, 0x06, 0x02, 0x00, 0x40, 0x40, 0x04, 0x00, 0x20, 0x1e, 0x24, 0x00, + 0x40, 0x2d, 0xe9, 0xfe, 0x4f, 0x0c, 0xaf, 0xa3, 0x4c, 0x06, 0x46, 0x8c, 0x46, 0x34, 0xf8, + 0x02, 0x5c, 0x24, 0x88, 0x39, 0x78, 0x02, 0xfb, 0x05, 0x42, 0x02, 0xf5, 0x80, 0x72, 0x4f, + 0xea, 0x22, 0x3b, 0x9d, 0x4a, 0x12, 0x88, 0x5a, 0x45, 0xa8, 0xbf, 0x93, 0x46, 0x9d, 0x4c, + 0x9b, 0x4a, 0x5d, 0x00, 0x99, 0x42, 0x2c, 0x44, 0x1a, 0x44, 0x4f, 0xf0, 0x00, 0x0e, 0x3b, + 0xdb, 0xdf, 0xf8, 0x64, 0x82, 0xad, 0x19, 0xad, 0x1e, 0xc9, 0x1a, 0x4b, 0x1c, 0xa4, 0x1e, + 0x08, 0x26, 0xb2, 0x46, 0x04, 0x21, 0x00, 0x91, 0x03, 0x21, 0x01, 0x91, 0x4f, 0xf0, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x02, 0x09, 0xcd, 0xf8, 0x08, 0xe0, + 0x34, 0xf8, 0x02, 0x7f, 0x35, 0xf8, 0x02, 0x1f, 0x39, 0x40, 0x8b, 0x45, 0x1c, 0xda, 0x98, + 0xf8, 0x50, 0x10, 0x07, 0xfb, 0x01, 0x61, 0xbc, 0xeb, 0x21, 0x1f, 0x13, 0xdc, 0x98, 0xf8, + 0x51, 0x10, 0x07, 0xfb, 0x01, 0xa1, 0xbc, 0xeb, 0x21, 0x1f, 0x09, 0xdc, 0x98, 0xf8, 0x52, + 0x10, 0x07, 0xfb, 0x01, 0xa1, 0xbc, 0xeb, 0x21, 0x1f, 0xd4, 0xbf, 0x00, 0x99, 0x01, 0x99, + 0x03, 0xe0, 0x82, 0xf8, 0x00, 0x90, 0x01, 0xe0, 0x02, 0x99, 0x11, 0x70, 0x12, 0xf8, 0x01, + 0x1b, 0x71, 0x45, 0xa8, 0xbf, 0x8e, 0x46, 0x5b, 0x1e, 0xd4, 0xd1, 0x70, 0x46, 0xbd, 0xe8, + 0xfe, 0x8f, 0x2d, 0xe9, 0xf0, 0x4f, 0xad, 0xf1, 0x70, 0x0d, 0x8c, 0x4c, 0x05, 0x91, 0x01, + 0x46, 0x06, 0x91, 0x04, 0xf5, 0x93, 0x71, 0x07, 0x91, 0x94, 0xf8, 0x2b, 0x11, 0x70, 0x4b, + 0x00, 0x25, 0x08, 0x91, 0x19, 0x80, 0x70, 0x49, 0xac, 0x46, 0x94, 0xf8, 0x2a, 0x21, 0x09, + 0x91, 0x0a, 0x95, 0x0b, 0x95, 0x01, 0x25, 0x0c, 0x95, 0x0d, 0x93, 0x6a, 0x4b, 0x81, 0x4d, + 0x0e, 0x93, 0x08, 0x23, 0x0f, 0x93, 0x10, 0x95, 0x69, 0x4d, 0x61, 0x46, 0x02, 0xf0, 0x0f, + 0x02, 0x11, 0x95, 0x12, 0x93, 0x13, 0x93, 0x14, 0x94, 0x0b, 0x9b, 0xe2, 0x46, 0x15, 0x94, + 0x16, 0x93, 0x0b, 0xe0, 0x52, 0x1e, 0x64, 0x1e, 0x40, 0xf0, 0x42, 0x81, 0x0c, 0x9a, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x52, 0x1c, 0x0c, 0x92, 0x5b, 0x4a, + 0x92, 0x1d, 0x12, 0x78, 0x02, 0xf0, 0x0f, 0x02, 0x0c, 0x9b, 0x06, 0x9d, 0x09, 0x9e, 0x9a, + 0x42, 0x09, 0x9b, 0x07, 0x9a, 0xc0, 0xf0, 0x3e, 0x81, 0xa0, 0x33, 0x15, 0x88, 0x56, 0x88, + 0x0b, 0x9a, 0x02, 0x2a, 0x05, 0xdb, 0x0a, 0x9a, 0x92, 0xb2, 0x08, 0x92, 0x0d, 0x9a, 0x08, + 0x9c, 0x14, 0x80, 0xdd, 0xf8, 0x58, 0x80, 0x4f, 0x24, 0xdd, 0xf8, 0x18, 0xe0, 0x99, 0x46, + 0x39, 0xf8, 0x02, 0x7b, 0x3e, 0xf8, 0x02, 0x2b, 0x3a, 0x40, 0x42, 0x45, 0xa8, 0xbf, 0x90, + 0x46, 0x64, 0x1e, 0x08, 0xfb, 0x05, 0x62, 0xf3, 0xd1, 0x02, 0xf5, 0x00, 0x62, 0x12, 0x13, + 0x0a, 0x92, 0x08, 0x9c, 0x94, 0x42, 0x24, 0xbf, 0x22, 0x1c, 0x0a, 0x92, 0x09, 0x9a, 0x9b, + 0x1e, 0x17, 0x93, 0x92, 0x1e, 0x18, 0x92, 0x16, 0x9c, 0xdd, 0xf8, 0x18, 0xb0, 0x19, 0x94, + 0xa1, 0x46, 0x18, 0x9a, 0x32, 0xf8, 0x02, 0x7f, 0x18, 0x92, 0x17, 0x9b, 0x33, 0xf8, 0x02, + 0x5f, 0xaf, 0x42, 0x17, 0x93, 0xb4, 0xbf, 0x2b, 0x1c, 0x3b, 0x1c, 0xbb, 0xf8, 0x00, 0x20, + 0x0a, 0x9e, 0x13, 0x40, 0x9e, 0x42, 0x84, 0xbf, 0x0c, 0xf1, 0x01, 0x03, 0x5f, 0xfa, 0x83, + 0xfc, 0x03, 0xd8, 0x49, 0x1c, 0xc9, 0xb2, 0xdd, 0xf8, 0x58, 0xc0, 0xba, 0xf1, 0x00, 0x0f, + 0x08, 0xbf, 0x01, 0x29, 0x19, 0x9b, 0x03, 0xd0, 0xba, 0xf1, 0x01, 0x0f, 0x09, 0xd0, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0xca, 0xe0, 0x5f, 0xfa, 0x83, 0xf9, + 0xdd, 0xf8, 0x58, 0xc0, 0x4f, 0xf0, 0x01, 0x0a, 0xcd, 0xf8, 0x68, 0xc0, 0xe0, 0x46, 0x14, + 0x9b, 0x03, 0xf5, 0x93, 0x73, 0x07, 0x93, 0x14, 0x9b, 0x93, 0xf8, 0x2a, 0x31, 0x1e, 0x11, + 0x14, 0x9b, 0x93, 0xf8, 0x2d, 0xe1, 0x8e, 0x45, 0x03, 0xd1, 0x61, 0x44, 0xc9, 0xb2, 0xdd, + 0xf8, 0x58, 0xc0, 0x1a, 0x9b, 0xbb, 0x42, 0xdc, 0xbf, 0x02, 0xea, 0x07, 0x03, 0x1a, 0x93, + 0x2a, 0x40, 0x42, 0x45, 0xa8, 0xbf, 0x1f, 0xfa, 0x82, 0xf8, 0x66, 0x45, 0x03, 0xd0, 0x19, + 0x9a, 0x4e, 0x2a, 0x40, 0xf0, 0xa0, 0x80, 0x15, 0x9a, 0x8e, 0x45, 0x92, 0xf8, 0x2c, 0x51, + 0x19, 0x9a, 0xa2, 0xeb, 0x0c, 0x02, 0xd6, 0xb2, 0x2a, 0xdd, 0x00, 0x29, 0x77, 0xd0, 0x8d, + 0xf8, 0x00, 0x60, 0x06, 0x98, 0x05, 0x99, 0x1a, 0x46, 0x4b, 0x46, 0xff, 0xf7, 0xcd, 0xfe, + 0x0d, 0x99, 0x1b, 0x90, 0x1a, 0x9a, 0x09, 0x88, 0x08, 0x91, 0x15, 0x99, 0x91, 0xf8, 0x2e, + 0x11, 0xb2, 0xeb, 0x01, 0x1f, 0x64, 0xdd, 0x15, 0x99, 0x08, 0x9a, 0x91, 0xf8, 0x32, 0x51, + 0x91, 0xf8, 0x30, 0x11, 0x91, 0x42, 0x57, 0xdb, 0x08, 0x91, 0x0d, 0x9a, 0x11, 0x80, 0x53, + 0xe0, 0x24, 0x03, 0x00, 0x20, 0x95, 0x33, 0x00, 0x00, 0x38, 0x00, 0x00, 0x20, 0x40, 0x04, + 0x00, 0x20, 0xc0, 0x00, 0x00, 0x20, 0x10, 0x9a, 0x12, 0x78, 0x17, 0x01, 0x11, 0x9a, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x92, 0xf8, 0x50, 0x30, 0x12, 0x9a, + 0x08, 0xfb, 0x03, 0x23, 0x05, 0x9a, 0xb2, 0xeb, 0x23, 0x1f, 0x1c, 0xdc, 0x11, 0x9a, 0x13, + 0x9b, 0x92, 0xf8, 0x51, 0xc0, 0x08, 0xfb, 0x0c, 0x3c, 0x05, 0x9b, 0xb3, 0xeb, 0x2c, 0x1f, + 0xc8, 0xbf, 0x02, 0x22, 0x11, 0xdc, 0x92, 0xf8, 0x52, 0x30, 0x0f, 0x9a, 0x08, 0xfb, 0x03, + 0x23, 0x05, 0x9a, 0xb2, 0xeb, 0x23, 0x1f, 0xcc, 0xbf, 0x03, 0x22, 0x04, 0x22, 0x05, 0xe0, + 0xc0, 0x46, 0x00, 0x02, 0x00, 0x20, 0x2f, 0x03, 0x00, 0x20, 0x16, 0x9a, 0x4e, 0x45, 0x0e, + 0x9b, 0x1b, 0x92, 0x09, 0xd3, 0xa6, 0xeb, 0x09, 0x02, 0x52, 0x1c, 0x4b, 0x44, 0xdd, 0xf8, + 0x6c, 0xc0, 0x52, 0x1e, 0x03, 0xf8, 0x01, 0xcb, 0xf9, 0xd1, 0x47, 0x45, 0x15, 0x9a, 0x12, + 0xda, 0x92, 0xf8, 0x33, 0x51, 0x92, 0xf8, 0x31, 0x21, 0x08, 0x92, 0x0d, 0x9b, 0x1a, 0x80, + 0x0b, 0x9a, 0x52, 0x1c, 0xd2, 0xb2, 0x0b, 0x92, 0xb1, 0xeb, 0x4e, 0x0f, 0x04, 0xdb, 0x0b, + 0x99, 0x01, 0xf1, 0x01, 0x01, 0xc9, 0xb2, 0x0b, 0x91, 0x1b, 0x99, 0xb9, 0xb1, 0x05, 0x2c, + 0x16, 0x99, 0x14, 0xd2, 0xb9, 0xeb, 0x05, 0x02, 0x58, 0xbf, 0x01, 0x21, 0x12, 0xb2, 0x01, + 0xfb, 0x02, 0xf1, 0x04, 0xeb, 0x0d, 0x02, 0xad, 0x19, 0x11, 0x71, 0x04, 0xeb, 0x0d, 0x01, + 0x4e, 0x2d, 0x01, 0xf1, 0x0c, 0x01, 0xd4, 0xbf, 0xea, 0xb2, 0x4e, 0x22, 0x64, 0x1c, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x0a, 0x70, 0x16, 0x99, 0x8a, 0x46, + 0x8c, 0x46, 0x19, 0x9a, 0x0b, 0xf1, 0x02, 0x0b, 0x52, 0x1c, 0x4f, 0x2a, 0x19, 0x92, 0xff, + 0xf4, 0x08, 0xaf, 0x00, 0x2c, 0x04, 0xeb, 0x0d, 0x02, 0x3f, 0xf4, 0xc2, 0xae, 0x04, 0xeb, + 0x0d, 0x03, 0x0b, 0x32, 0x1b, 0x1d, 0x13, 0xf8, 0x01, 0x5d, 0x16, 0x78, 0x16, 0x9f, 0xae, + 0x42, 0x06, 0x9e, 0xff, 0xf4, 0xb2, 0xae, 0x26, 0xf8, 0x15, 0x70, 0x6d, 0x1c, 0xf5, 0xe7, + 0x4f, 0x23, 0x16, 0x9a, 0x36, 0xf8, 0x02, 0x4b, 0x35, 0xf8, 0x02, 0x1b, 0x21, 0x40, 0x91, + 0x42, 0xa8, 0xbf, 0x0a, 0x1c, 0x5b, 0x1e, 0xf5, 0xd1, 0x4e, 0x20, 0x8d, 0xf8, 0x00, 0x00, + 0x06, 0x98, 0x05, 0x99, 0x16, 0x9b, 0xff, 0xf7, 0x0f, 0xfe, 0x1c, 0xb0, 0xbd, 0xe8, 0xf0, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2d, 0xe9, 0xf0, 0x4f, 0x56, 0x4d, 0x8b, 0x46, 0xa5, 0xf2, + 0x75, 0x47, 0x55, 0x4c, 0x39, 0x88, 0x01, 0x26, 0x92, 0x46, 0x21, 0xf0, 0x01, 0x01, 0x41, + 0xf0, 0x02, 0x01, 0x39, 0x80, 0xa4, 0xf5, 0x96, 0x61, 0x84, 0xf8, 0xe0, 0x60, 0x0e, 0x70, + 0x4f, 0xf4, 0x80, 0x51, 0x41, 0xfa, 0x00, 0xf8, 0x58, 0x46, 0x27, 0xf8, 0x08, 0x8c, 0x26, + 0x70, 0xff, 0xf7, 0xce, 0xfb, 0x05, 0xf6, 0xbf, 0x75, 0x28, 0x88, 0x20, 0xf4, 0xe0, 0x60, + 0x40, 0xf4, 0x00, 0x70, 0x28, 0x80, 0x50, 0x46, 0xff, 0xf7, 0xc3, 0xfb, 0xc8, 0xf1, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x00, 0x00, 0xd5, 0xf8, 0x40, 0x90, + 0x27, 0xf8, 0x08, 0x0c, 0x58, 0x46, 0x26, 0x70, 0xff, 0xf7, 0xb9, 0xfb, 0x28, 0x88, 0x20, + 0xf4, 0x40, 0x70, 0x40, 0xf4, 0x80, 0x60, 0x28, 0x80, 0x50, 0x46, 0xff, 0xf7, 0xb0, 0xfb, + 0x4f, 0xf0, 0x00, 0x08, 0xd5, 0xf8, 0x40, 0xb0, 0x30, 0x46, 0x27, 0xf8, 0x08, 0x8c, 0x26, + 0x70, 0xff, 0xf7, 0xa6, 0xfb, 0xdf, 0xf8, 0xd8, 0xa0, 0x30, 0x46, 0x8a, 0xf8, 0x00, 0x80, + 0xff, 0xf7, 0x9f, 0xfb, 0x38, 0x88, 0x20, 0xf0, 0x03, 0x00, 0x38, 0x80, 0x30, 0x46, 0x84, + 0xf8, 0xe0, 0x60, 0xff, 0xf7, 0x96, 0xfb, 0xa4, 0xf5, 0x96, 0x64, 0x84, 0xf8, 0x00, 0x80, + 0x8a, 0xf8, 0x00, 0x60, 0x28, 0x88, 0xa9, 0xeb, 0x0b, 0x09, 0x20, 0xf4, 0xe0, 0x60, 0x28, + 0x80, 0x48, 0x46, 0xbd, 0xe8, 0xf0, 0x8f, 0x10, 0xb5, 0x94, 0x4a, 0x27, 0x4c, 0x92, 0xf8, + 0x8a, 0x10, 0x20, 0x78, 0x92, 0xf8, 0x8b, 0x20, 0xff, 0xf7, 0x91, 0xff, 0x21, 0x88, 0x01, + 0x22, 0xc1, 0xf1, 0x10, 0x03, 0x9a, 0x40, 0xc1, 0xf1, 0x0a, 0x01, 0x80, 0x18, 0x08, 0x41, + 0x10, 0xbd, 0x70, 0xb5, 0xaf, 0x4d, 0x28, 0x88, 0x89, 0x4e, 0x20, 0xf4, 0xc0, 0x40, 0x40, + 0xf4, 0x80, 0x50, 0x28, 0x80, 0x96, 0xf8, 0x8c, 0x00, 0xff, 0xf7, 0x66, 0xfb, 0x28, 0x88, + 0x20, 0xf4, 0xe0, 0x40, 0x40, 0xf4, 0x00, 0x50, 0x28, 0x80, 0x96, 0xf8, 0x8d, 0x00, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0xff, 0xf7, 0x5c, 0xfb, 0x2c, 0x6c, + 0x28, 0x88, 0x20, 0xf4, 0x80, 0x40, 0x40, 0xf4, 0x40, 0x50, 0x28, 0x80, 0x96, 0xf8, 0x8c, + 0x00, 0xff, 0xf7, 0x51, 0xfb, 0x28, 0x88, 0x20, 0xf4, 0x40, 0x50, 0x40, 0xf4, 0x80, 0x40, + 0x28, 0x80, 0x96, 0xf8, 0x8d, 0x00, 0xff, 0xf7, 0x47, 0xfb, 0x29, 0x6c, 0x28, 0x88, 0x64, + 0x1a, 0x20, 0xf4, 0xe0, 0x40, 0x04, 0xf5, 0x80, 0x74, 0x28, 0x80, 0x60, 0x12, 0x70, 0xbd, + 0xc0, 0x46, 0xa1, 0x0c, 0x00, 0x40, 0xc0, 0x04, 0x01, 0x42, 0x4c, 0x8c, 0x03, 0x42, 0x12, + 0x03, 0x00, 0x20, 0x2d, 0xe9, 0xf0, 0x4f, 0xad, 0xf1, 0x50, 0x0d, 0x8f, 0x48, 0x69, 0x4c, + 0x01, 0x25, 0x00, 0x68, 0x00, 0x90, 0x94, 0xf8, 0xc6, 0x00, 0x05, 0x90, 0x8a, 0x48, 0x01, + 0x46, 0x0c, 0x31, 0x09, 0x78, 0x07, 0x46, 0x0d, 0x30, 0x06, 0x91, 0x89, 0x49, 0x7f, 0x1e, + 0x07, 0x91, 0x09, 0x78, 0x08, 0x91, 0x87, 0x49, 0x0d, 0x70, 0x0d, 0x74, 0xa4, 0xf8, 0x88, + 0x50, 0x4d, 0x21, 0x09, 0x91, 0x00, 0x88, 0x00, 0x21, 0x20, 0xf0, 0x07, 0x00, 0x40, 0xf0, + 0x08, 0x00, 0xf8, 0x81, 0xb4, 0xf8, 0x12, 0x01, 0x00, 0x01, 0x58, 0x38, 0x78, 0x73, 0x0a, + 0x91, 0x40, 0xf2, 0xfa, 0x70, 0xa4, 0xf8, 0xae, 0x00, 0xa4, 0xf8, 0xb0, 0x00, 0x4b, 0xf2, + 0x8c, 0x50, 0xa4, 0xf8, 0xb6, 0x00, 0xa4, 0xf8, 0xb8, 0x00, 0x78, 0x48, 0xa4, 0xf8, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0xb2, 0x10, 0xa4, 0xf8, 0xb4, 0x10, + 0xc5, 0x74, 0x81, 0x74, 0x0b, 0x90, 0x80, 0x7c, 0x02, 0x28, 0x80, 0xf2, 0xce, 0x80, 0x11, + 0x20, 0x0c, 0x90, 0x72, 0x48, 0x0d, 0x90, 0x04, 0xf1, 0xae, 0x00, 0x0e, 0x90, 0x0a, 0x98, + 0x0f, 0x90, 0x10, 0x90, 0x10, 0x98, 0x00, 0x28, 0x0c, 0xbf, 0x0a, 0x98, 0x0c, 0x98, 0x84, + 0xf8, 0xc6, 0x00, 0x04, 0x20, 0x11, 0x90, 0xdd, 0xf8, 0x28, 0x80, 0x01, 0xa8, 0xc3, 0x46, + 0x12, 0x90, 0xad, 0xf1, 0x01, 0x00, 0x13, 0x90, 0x13, 0x98, 0x10, 0xf8, 0x01, 0x6f, 0x13, + 0x90, 0x0d, 0x99, 0xf0, 0x01, 0x40, 0xf0, 0x02, 0x00, 0x08, 0x80, 0xdd, 0xf8, 0x28, 0x90, + 0x48, 0x46, 0xfe, 0xf7, 0x1b, 0xf9, 0x78, 0x5b, 0x20, 0xf0, 0x20, 0x00, 0x40, 0xf0, 0x10, + 0x00, 0x78, 0x53, 0x06, 0x20, 0xff, 0xf7, 0xbe, 0xfa, 0x78, 0x5b, 0x20, 0xf0, 0x10, 0x00, + 0x40, 0xf0, 0x20, 0x00, 0x78, 0x53, 0x28, 0x46, 0xff, 0xf7, 0xb5, 0xfa, 0x78, 0x5b, 0x20, + 0xf0, 0x30, 0x00, 0x71, 0x00, 0x78, 0x53, 0x09, 0x98, 0x01, 0xf6, 0x13, 0x11, 0x04, 0x26, + 0x38, 0x5a, 0x00, 0x04, 0xb0, 0xfb, 0xf1, 0xf0, 0x83, 0x44, 0xff, 0xf7, 0x1e, 0xff, 0x09, + 0xeb, 0x00, 0x01, 0x76, 0x1e, 0x89, 0x46, 0xf8, 0xd1, 0x4f, 0xf0, 0x04, 0x0a, 0x0a, 0x9e, + 0xff, 0xf7, 0x28, 0xff, 0xba, 0xf1, 0x01, 0x0a, 0x06, 0x44, 0xf9, 0xd1, 0x12, 0x99, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x4f, 0xea, 0x99, 0x00, 0x41, 0xf8, + 0x04, 0x0b, 0x12, 0x91, 0xff, 0xf7, 0xd3, 0xfc, 0x08, 0xeb, 0x96, 0x08, 0x11, 0x99, 0x49, + 0x1e, 0x11, 0x91, 0xb3, 0xd1, 0x10, 0x98, 0x4f, 0xea, 0x98, 0x08, 0x4f, 0xea, 0x9b, 0x0b, + 0x40, 0xbb, 0xb4, 0xf9, 0x90, 0x00, 0x02, 0x99, 0x48, 0x43, 0xb4, 0xf9, 0x8e, 0x20, 0x01, + 0x9b, 0x03, 0xfb, 0x02, 0x00, 0xb4, 0xf9, 0x92, 0x20, 0x03, 0x9e, 0x06, 0xfb, 0x02, 0x00, + 0xb4, 0xf9, 0x94, 0x20, 0xdd, 0xf8, 0x10, 0xc0, 0x0c, 0xfb, 0x02, 0x00, 0xc0, 0x09, 0xb4, + 0xf9, 0x98, 0x20, 0x51, 0x43, 0xb4, 0xf9, 0x96, 0x20, 0x03, 0xfb, 0x02, 0x11, 0xb4, 0xf9, + 0x9a, 0x20, 0x06, 0xfb, 0x02, 0x11, 0xb4, 0xf9, 0x9c, 0x20, 0x0c, 0xfb, 0x02, 0x11, 0x8a, + 0x0a, 0x0b, 0xe0, 0xc0, 0x46, 0x00, 0x02, 0x00, 0x20, 0x01, 0x99, 0x02, 0x98, 0x40, 0x18, + 0x03, 0x99, 0x09, 0x18, 0x04, 0x98, 0x40, 0x18, 0x82, 0x08, 0x0a, 0x98, 0xdd, 0xf8, 0x38, + 0x90, 0xa9, 0xf8, 0x00, 0x80, 0x0b, 0x99, 0x0f, 0x9e, 0x89, 0x7c, 0x06, 0xeb, 0x81, 0x01, + 0x61, 0x18, 0xa1, 0xf8, 0xa6, 0xb0, 0x81, 0xb2, 0xa9, 0xf8, 0x08, 0x20, 0xa9, 0xf8, 0x04, + 0x00, 0x92, 0xb2, 0x15, 0x20, 0xff, 0xf7, 0x84, 0xfa, 0x1f, 0xfa, 0x8b, 0xf2, 0x1f, 0xfa, + 0x88, 0xf1, 0x16, 0x20, 0xff, 0xf7, 0x7d, 0xfa, 0xb6, 0x1c, 0x0f, 0x96, 0x09, 0xf1, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x02, 0x03, 0x0e, 0x93, 0x10, 0x98, + 0x40, 0x1c, 0x02, 0x28, 0x10, 0x90, 0xff, 0xf4, 0x44, 0xaf, 0x0b, 0x99, 0x88, 0x7c, 0x40, + 0x1c, 0x88, 0x74, 0x88, 0x7c, 0x02, 0x28, 0xff, 0xf6, 0x36, 0xaf, 0x0a, 0x99, 0x0b, 0x98, + 0xc1, 0x74, 0x05, 0x98, 0x84, 0xf8, 0xc6, 0x00, 0x06, 0x98, 0x78, 0x73, 0x08, 0x9a, 0x07, + 0x98, 0x14, 0xb0, 0x02, 0x70, 0xa4, 0xf8, 0x88, 0x10, 0xbd, 0xe8, 0xf0, 0x8f, 0x60, 0x1c, + 0x00, 0x40, 0x78, 0x33, 0x00, 0x00, 0x04, 0x08, 0x00, 0x40, 0x80, 0x00, 0x01, 0x42, 0xd0, + 0x08, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x2c, 0x37, 0x40, 0x4a, 0x2d, 0xe9, 0xf0, 0x41, + 0x55, 0x4c, 0x4f, 0xf0, 0x01, 0x08, 0x20, 0x46, 0x0b, 0x38, 0x80, 0xf8, 0x00, 0x80, 0x0a, + 0x20, 0xff, 0xf7, 0xe0, 0xfb, 0x20, 0x46, 0x08, 0x30, 0x26, 0x46, 0x01, 0x88, 0x20, 0x46, + 0x00, 0x24, 0x01, 0x80, 0x25, 0x46, 0x0a, 0x30, 0x00, 0x88, 0x0c, 0x3e, 0x10, 0x27, 0xf0, + 0x81, 0x86, 0xf8, 0x00, 0x80, 0x08, 0x20, 0xff, 0xf7, 0xce, 0xfb, 0x31, 0x8b, 0x7f, 0x1e, + 0x0c, 0x44, 0x71, 0x8b, 0x0d, 0x44, 0xf4, 0xd1, 0x28, 0x09, 0x80, 0xb2, 0x00, 0xeb, 0x40, + 0x00, 0x21, 0x09, 0x89, 0xb2, 0x09, 0x02, 0x91, 0xfb, 0xf0, 0xf0, 0x80, 0xb2, 0xbd, 0xe8, + 0xf0, 0x81, 0x2d, 0xe9, 0xf0, 0x4f, 0xad, 0xf1, 0x14, 0x0d, 0x80, 0x46, 0xaf, 0x48, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x00, 0x68, 0x00, 0x90, 0xae, 0x48, + 0x00, 0x88, 0x8b, 0x46, 0xad, 0xf8, 0x04, 0x00, 0x0b, 0xeb, 0x0d, 0x00, 0x00, 0x79, 0x3d, + 0xf8, 0x1b, 0xa0, 0x04, 0x25, 0x02, 0x90, 0xa9, 0x48, 0x4f, 0xf0, 0x00, 0x09, 0x10, 0x24, + 0x03, 0x90, 0x01, 0x20, 0x04, 0x90, 0xbb, 0xf1, 0x01, 0x0f, 0x03, 0x9a, 0x04, 0xd0, 0x03, + 0x98, 0x60, 0x38, 0x00, 0xf8, 0x38, 0x40, 0x16, 0xe0, 0x41, 0x46, 0xc8, 0x00, 0x00, 0xeb, + 0x81, 0x00, 0x12, 0x18, 0x00, 0x20, 0x03, 0x46, 0x07, 0x26, 0x04, 0x99, 0x99, 0x40, 0x0c, + 0x42, 0x18, 0xbf, 0x30, 0x44, 0x5b, 0x1c, 0xf1, 0x00, 0x80, 0xb2, 0x05, 0x2b, 0x8e, 0xb2, + 0xf4, 0xd3, 0x90, 0x80, 0xa4, 0xf1, 0x40, 0x00, 0x50, 0x70, 0xff, 0xf7, 0x93, 0xff, 0x06, + 0x46, 0xba, 0xeb, 0x06, 0x07, 0x54, 0xbf, 0x04, 0x9a, 0x4f, 0xf0, 0xff, 0x32, 0xb6, 0xeb, + 0x0a, 0x06, 0x54, 0xbf, 0x30, 0x1c, 0x38, 0x1c, 0x02, 0x99, 0x81, 0x42, 0x25, 0xda, 0xb9, + 0xf1, 0x00, 0x0f, 0x28, 0xb2, 0x06, 0xd0, 0x91, 0x45, 0x07, 0xd0, 0x05, 0xeb, 0xd5, 0x75, + 0x68, 0x10, 0x45, 0x42, 0x02, 0xe0, 0x00, 0xfb, 0x02, 0xf0, 0x45, 0xb2, 0x28, 0x19, 0x84, + 0xb2, 0x20, 0x2c, 0x91, 0x46, 0x02, 0xda, 0x1f, 0x2c, 0x01, 0xd0, 0x02, 0xe0, 0x1f, 0x24, + 0x01, 0x2a, 0x07, 0xd0, 0x00, 0x2c, 0x08, 0xbf, 0xb2, 0xf1, 0xff, 0x3f, 0x02, 0xd0, + +#if 0 +#if defined(__GNUC__) && (__MSP430X__ > 0) +}; +__attribute__((section (".fartext"))) +const uint8_t cc256x_init_script_2[] = { + +#endif +#endif + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x00, 0x2d, 0xae, 0xd1, 0x04, 0xe0, + 0x92, 0xb2, 0x21, 0x46, 0x0e, 0x20, 0xff, 0xf7, 0x92, 0xfb, 0x00, 0x2e, 0x48, 0xbf, 0x3e, + 0x1c, 0x41, 0x46, 0x1d, 0x20, 0xb2, 0xb2, 0xff, 0xf7, 0x8a, 0xfb, 0x05, 0xb0, 0xbd, 0xe8, + 0xf0, 0x8f, 0xc0, 0x46, 0x24, 0x10, 0x00, 0x40, 0x2d, 0xe9, 0xf0, 0x4f, 0xad, 0xf1, 0x14, + 0x0d, 0xdf, 0xf8, 0xc4, 0x91, 0xdf, 0xf8, 0xc4, 0xa1, 0x4c, 0x46, 0x9a, 0xf8, 0x00, 0x00, + 0xdf, 0xf8, 0xc8, 0x81, 0x4e, 0x34, 0x00, 0x90, 0x20, 0x88, 0x46, 0x46, 0xb6, 0x1e, 0x01, + 0x90, 0x30, 0x68, 0x02, 0x90, 0x70, 0x68, 0x03, 0x90, 0x6a, 0x48, 0x4f, 0xf4, 0xa0, 0x71, + 0x01, 0x25, 0x41, 0x80, 0x85, 0x80, 0x00, 0x20, 0xfd, 0xf7, 0xbc, 0xf8, 0x0a, 0x20, 0xff, + 0xf7, 0x19, 0xfb, 0x65, 0x48, 0x00, 0x27, 0x07, 0x70, 0x80, 0xf8, 0x20, 0x70, 0x64, 0x20, + 0xb0, 0x70, 0x40, 0x46, 0x01, 0x88, 0x21, 0xf4, 0x00, 0x61, 0x41, 0xf4, 0xe0, 0x61, 0x01, + 0x80, 0x00, 0x88, 0xdf, 0xf8, 0x7c, 0xb1, 0x10, 0x23, 0x20, 0xf4, 0x40, 0x50, 0x70, 0x80, + 0xab, 0xf5, 0x1f, 0x70, 0x07, 0x70, 0x3e, 0x20, 0x04, 0x90, 0x30, 0x71, 0x2f, 0x20, 0x73, + 0x71, 0xb0, 0x71, 0x2c, 0x20, 0xf0, 0x71, 0x58, 0x48, 0x07, 0x70, 0x48, 0x46, 0x82, 0x38, + 0x8a, 0xf8, 0x00, 0x50, 0x01, 0x88, 0x21, 0xf0, 0x07, 0x01, 0x01, 0x80, 0x81, 0x8a, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0xdf, 0xf8, 0x4c, 0x81, 0x1c, 0x22, + 0x21, 0xf0, 0x06, 0x01, 0x24, 0xf8, 0xbc, 0x1c, 0xa4, 0xf6, 0x78, 0x71, 0x88, 0xf8, 0x04, + 0x50, 0x0a, 0x70, 0x8b, 0xf8, 0x00, 0x50, 0x88, 0xf8, 0x00, 0x50, 0xc1, 0x8a, 0x4c, 0x46, + 0x21, 0xf0, 0x03, 0x01, 0xc1, 0x82, 0xc1, 0x8a, 0x6c, 0x3c, 0x4f, 0xf0, 0x22, 0x09, 0x41, + 0xf0, 0x0c, 0x01, 0x21, 0x80, 0x30, 0x21, 0x84, 0xf8, 0xc0, 0x71, 0x84, 0xf8, 0xc1, 0x91, + 0x86, 0xf8, 0x63, 0x11, 0x86, 0xf8, 0x62, 0x31, 0xb0, 0xf8, 0xd0, 0x10, 0x41, 0xf0, 0x70, + 0x01, 0xa0, 0xf8, 0xd0, 0x10, 0xb0, 0xf8, 0xd0, 0x10, 0x21, 0xf4, 0x80, 0x61, 0x41, 0xf4, + 0x40, 0x71, 0xa0, 0xf8, 0xd0, 0x10, 0x29, 0x46, 0x03, 0x20, 0x84, 0xf8, 0x44, 0x70, 0xff, + 0xf7, 0xf9, 0xfe, 0xb4, 0xf8, 0x94, 0x50, 0x04, 0x23, 0x36, 0x48, 0x0c, 0x21, 0x94, 0xf8, + 0x91, 0xc0, 0x42, 0x18, 0x15, 0x80, 0x5b, 0x1e, 0x02, 0xf8, 0x03, 0xcc, 0x01, 0xf1, 0x0c, + 0x01, 0xf7, 0xd1, 0x88, 0xf8, 0x00, 0x70, 0x20, 0x88, 0x40, 0xf0, 0x03, 0x00, 0x20, 0x80, + 0x20, 0x88, 0x20, 0xf0, 0x0c, 0x00, 0x20, 0x80, 0x84, 0xf8, 0xc0, 0x91, 0x84, 0xf8, 0xc1, + 0x71, 0x04, 0x98, 0x3d, 0x46, 0x86, 0xf8, 0x63, 0x01, 0x86, 0xf8, 0x62, 0x71, 0xb4, 0xf8, + 0xba, 0x00, 0x20, 0xf0, 0x70, 0x00, 0x40, 0xea, 0x05, 0x10, 0xa4, 0xf8, 0xba, 0x00, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x35, 0xb1, 0x02, 0x2d, 0xcc, 0xbf, + 0x4f, 0xf4, 0x80, 0x70, 0x4f, 0xf4, 0x00, 0x70, 0x01, 0xe0, 0x4f, 0xf4, 0x40, 0x70, 0xb4, + 0xf8, 0xba, 0x10, 0x21, 0xf4, 0xe0, 0x61, 0x08, 0x43, 0xa4, 0xf8, 0xba, 0x00, 0x39, 0x46, + 0xe8, 0xb2, 0xff, 0xf7, 0xb9, 0xfe, 0x6d, 0x1c, 0x08, 0x2d, 0xdf, 0xdb, 0x38, 0x46, 0xfe, + 0xf7, 0x8f, 0xff, 0x84, 0xf8, 0xc0, 0x71, 0x84, 0xf8, 0xc1, 0x71, 0x88, 0xf8, 0x00, 0x70, + 0x88, 0xf8, 0x04, 0x70, 0x8b, 0xf8, 0x00, 0x70, 0x00, 0x98, 0x8a, 0xf8, 0x00, 0x00, 0x01, + 0x98, 0xa4, 0xf8, 0xba, 0x00, 0x02, 0x98, 0x30, 0x60, 0x03, 0x98, 0x05, 0xb0, 0x70, 0x60, + 0xbd, 0xe8, 0xf0, 0x8f, 0x00, 0x33, 0x00, 0x00, 0x04, 0x33, 0x00, 0x00, 0xa6, 0x20, 0x00, + 0x40, 0x00, 0x3f, 0x04, 0x42, 0x00, 0x00, 0x00, 0x20, 0x80, 0x03, 0x02, 0x42, 0x1e, 0x10, + 0x00, 0x40, 0x00, 0x2f, 0x02, 0x42, 0xf9, 0x21, 0x00, 0x40, 0x00, 0x13, 0x04, 0x42, 0xaa, + 0x20, 0x00, 0x40, 0x7c, 0x01, 0x0e, 0x01, 0x0c, 0x03, 0x00, 0x00, 0x94, 0x9c, 0xa3, 0xaa, + 0xb1, 0xb9, 0xc0, 0xc7, 0x8d, 0x86, 0x7e, 0x77, 0x70, 0x69, 0x61, 0x5a, 0x81, 0x7c, 0x67, + 0x7c, 0x90, 0x7c, 0x0f, 0x7d, 0xb8, 0x7d, 0xbe, 0x7e, 0x00, 0x80, 0x73, 0x81, 0x4e, 0x83, + 0x54, 0x85, 0xa4, 0x87, 0x43, 0x8a, 0xf7, 0xe6, 0xd5, 0xc4, 0xb3, 0xa2, 0x91, 0x80, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, + 0x1e, 0x0f, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, + 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, + 0x44, 0x44, 0x44, 0x44, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x11, 0x11, 0x01, 0x01, 0x01, 0x11, + 0x11, 0x01, 0x01, 0x01, 0x11, 0x11, 0x01, 0x01, 0x01, 0x11, 0x11, 0x01, 0x01, 0x01, 0x11, + 0x11, 0x01, 0x01, 0x01, 0x22, 0x22, 0x02, 0x02, 0x02, 0x22, 0x22, 0x02, 0x02, 0x02, 0x22, + 0x22, 0x02, 0x02, 0x02, 0x22, 0x22, 0x02, 0x02, 0x02, 0x22, 0x22, 0x02, 0x02, 0x02, 0x44, + 0x44, 0x04, 0x04, 0x04, 0x44, 0x44, 0x04, 0x04, 0x04, 0x44, 0x44, 0x04, 0x04, 0x04, 0x88, + 0x88, 0x08, 0x08, 0x08, 0x88, 0x88, 0x08, 0x08, 0x08, 0x88, 0x88, 0x08, 0x08, 0x08, 0x01, + 0x01, 0x11, 0x11, 0x11, 0x01, 0x01, 0x11, 0x11, 0x11, 0x01, 0x01, 0x11, 0x11, 0x11, 0x01, + 0x01, 0x11, 0x11, 0x11, 0x01, 0x01, 0x11, 0x11, 0x11, 0x02, 0x02, 0x22, 0x22, 0x22, 0x02, + 0x02, 0x22, 0x22, 0x22, 0x02, 0x02, 0x22, 0x22, 0x22, 0x02, 0x02, 0x22, 0x22, 0x22, 0x02, + 0x02, 0x22, 0x22, 0x22, 0x04, 0x04, 0x44, 0x44, 0x44, 0x04, 0x04, 0x44, 0x44, 0x44, 0x04, + 0x04, 0x44, 0x44, 0x44, 0x08, 0x08, 0x88, 0x88, 0x88, 0x08, 0x08, 0x88, 0x88, 0x88, 0x08, + 0x08, 0x88, 0x88, 0x88, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1a, + 0x1a, 0x1a, 0x1a, 0x1a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x16, 0x16, 0x16, 0x16, 0x16, 0x14, + 0x14, 0x14, 0x14, 0x14, 0x12, 0x12, 0x12, 0x12, 0x12, 0x10, 0x10, 0x10, 0x10, 0x10, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0c, + 0x0c, 0x0c, 0x0c, 0x0c, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x08, 0x08, 0x08, 0x08, 0x08, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x04, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x84, 0x84, 0x84, 0x1c, 0x1c, 0x84, + 0x84, 0x84, 0x1c, 0x1c, 0x84, 0x84, 0x84, 0x1c, 0x1c, 0x84, 0x84, 0x84, 0x1c, 0x1c, 0xc4, + 0xc4, 0xc4, 0x9c, 0x9c, 0xc4, 0xc4, 0xc4, 0x9c, 0x9c, 0xa4, 0xa4, 0xa4, 0x5c, 0x5c, 0xa4, + 0xa4, 0xa4, 0x5c, 0x5c, 0xe4, 0xe4, 0xe4, 0xdc, 0xdc, 0xe4, 0xe4, 0xe4, 0xdc, 0xdc, 0xe4, + 0xe4, 0xe4, 0xdc, 0xdc, 0x94, 0x94, 0x94, 0x3c, 0x3c, 0x94, 0x94, 0x94, 0x3c, 0x3c, 0xd4, + 0xd4, 0xd4, 0xbc, 0xbc, 0xd4, 0xd4, 0xd4, 0xbc, 0xbc, 0xb4, 0xb4, 0xb4, 0x7c, 0x7c, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0xf0, 0xf0, 0xf0, 0xf8, 0xf8, 0xc0, + 0x46, 0xc0, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0x70, 0x47, 0x2d, + 0xe9, 0xf0, 0x4f, 0xad, 0xf1, 0x18, 0x0d, 0x06, 0x46, 0x02, 0x2e, 0x06, 0xeb, 0xc1, 0x09, + 0x4f, 0xf0, 0x00, 0x01, 0x15, 0x46, 0xb8, 0xbf, 0x01, 0x21, 0xa7, 0x48, 0x00, 0x2d, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x00, 0x90, 0x10, 0xf8, 0x09, 0x00, + 0x20, 0xfa, 0x01, 0xf0, 0x44, 0xb2, 0x6c, 0xd0, 0x00, 0x20, 0x01, 0x90, 0xdf, 0xf8, 0x8c, + 0xa2, 0x01, 0x27, 0x70, 0x08, 0x2c, 0xbf, 0x02, 0x20, 0x01, 0x98, 0xa0, 0x49, 0x47, 0xf6, + 0xff, 0x7b, 0x09, 0x18, 0x02, 0x91, 0x00, 0x98, 0xdd, 0xf8, 0x04, 0x80, 0x03, 0x90, 0x9d, + 0x48, 0x04, 0x90, 0x02, 0x2e, 0xba, 0xbf, 0x60, 0x00, 0xc0, 0xb2, 0xe0, 0xb2, 0x03, 0x99, + 0x01, 0xf8, 0x09, 0x00, 0x01, 0x98, 0x8a, 0xf8, 0x00, 0x00, 0x05, 0x20, 0x8a, 0xf8, 0x00, + 0x70, 0xff, 0xf7, 0xb1, 0xfb, 0x04, 0x98, 0x07, 0x70, 0x38, 0x46, 0xff, 0xf7, 0xac, 0xfb, + 0x02, 0x98, 0x00, 0x88, 0xc0, 0x00, 0x01, 0xb2, 0x08, 0x46, 0x00, 0x28, 0xb8, 0xbf, 0x40, + 0x42, 0x83, 0x45, 0x03, 0xdd, 0x0f, 0xfa, 0x80, 0xfb, 0xe0, 0xb2, 0x05, 0x90, 0x00, 0x29, + 0x4c, 0xbf, 0x4f, 0xf0, 0xff, 0x30, 0x38, 0x1c, 0xb8, 0xf1, 0x00, 0x0f, 0x05, 0xd1, 0xb0, + 0xf1, 0xff, 0x3f, 0x04, 0xbf, 0x69, 0x42, 0x4d, 0xb2, 0x05, 0xe0, 0x80, 0x45, 0x03, 0xd0, + 0x05, 0xeb, 0xd5, 0x75, 0x69, 0x10, 0x4d, 0x42, 0x02, 0x2e, 0x0a, 0xdb, 0x1f, 0x2c, 0x08, + 0xbf, 0xb0, 0xf1, 0xff, 0x3f, 0x1a, 0xd0, 0x00, 0x2c, 0x08, 0xbf, 0x01, 0x28, 0x16, 0xd0, + 0x64, 0x1b, 0x09, 0xe0, 0x1f, 0x2c, 0x08, 0xbf, 0x01, 0x28, 0x10, 0xd0, 0x00, 0x2c, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x08, 0xbf, 0xb0, 0xf1, 0xff, 0x3f, + 0x2c, 0x44, 0x0a, 0xd0, 0x64, 0xb2, 0x20, 0x2c, 0x03, 0xda, 0x00, 0x2c, 0x48, 0xbf, 0x01, + 0x9c, 0x00, 0xe0, 0x1f, 0x24, 0x00, 0x2d, 0x80, 0x46, 0xa6, 0xd1, 0x02, 0x2e, 0xa8, 0xbf, + 0x05, 0x98, 0x02, 0xda, 0x05, 0x98, 0x40, 0x00, 0xc0, 0xb2, 0x00, 0x99, 0x06, 0xb0, 0x01, + 0xf8, 0x09, 0x00, 0xbd, 0xe8, 0xf0, 0x8f, 0x70, 0xb5, 0x05, 0x46, 0x69, 0x48, 0x01, 0x26, + 0x69, 0x4c, 0x05, 0x70, 0x63, 0x48, 0x20, 0x21, 0x08, 0x22, 0x00, 0xeb, 0xc5, 0x00, 0x26, + 0x70, 0x01, 0x70, 0x41, 0x70, 0x10, 0x21, 0x81, 0x70, 0xc1, 0x70, 0x29, 0x46, 0x02, 0x20, + 0xff, 0xf7, 0x5b, 0xff, 0x08, 0x22, 0x29, 0x46, 0x03, 0x20, 0xff, 0xf7, 0x56, 0xff, 0x00, + 0x20, 0x08, 0x22, 0x29, 0x46, 0x20, 0x70, 0xff, 0xf7, 0x50, 0xff, 0x08, 0x22, 0x29, 0x46, + 0x30, 0x46, 0xff, 0xf7, 0x4b, 0xff, 0x32, 0x46, 0x29, 0x46, 0x02, 0x20, 0xff, 0xf7, 0x46, + 0xff, 0x32, 0x46, 0x29, 0x46, 0x03, 0x20, 0xff, 0xf7, 0x41, 0xff, 0x70, 0xbd, 0x2d, 0xe9, + 0xf0, 0x4f, 0xad, 0xf1, 0x18, 0x0d, 0x3b, 0x20, 0x00, 0x27, 0x8d, 0xf8, 0x00, 0x00, 0x31, + 0x20, 0x4f, 0x49, 0x8d, 0xf8, 0x01, 0x00, 0x8d, 0xf8, 0x05, 0x70, 0x44, 0x20, 0x8d, 0xf8, + 0x02, 0x00, 0x4e, 0x20, 0x8d, 0xf8, 0x03, 0x00, 0x28, 0x20, 0x8d, 0xf8, 0x04, 0x00, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x49, 0x48, 0x81, 0xf8, 0x7d, 0x70, + 0xb9, 0x46, 0x02, 0x90, 0x00, 0x78, 0xad, 0xf1, 0x01, 0x04, 0x01, 0x26, 0x03, 0x90, 0x45, + 0x48, 0xdf, 0xf8, 0x18, 0xb1, 0x4f, 0xf0, 0x05, 0x0a, 0xb0, 0xf8, 0x52, 0x20, 0x44, 0x4d, + 0x80, 0x46, 0x04, 0x92, 0x4f, 0xf4, 0xc8, 0x62, 0x02, 0x81, 0x4f, 0xf6, 0xba, 0x72, 0xa0, + 0xf8, 0x52, 0x20, 0x05, 0x91, 0x14, 0xf8, 0x01, 0x0f, 0x80, 0x01, 0xae, 0x80, 0xa0, 0xf5, + 0x20, 0x60, 0x68, 0x80, 0x38, 0x46, 0xfd, 0xf7, 0x8e, 0xf8, 0x38, 0x46, 0xff, 0xf7, 0x0b, + 0xf8, 0x9b, 0xf8, 0x33, 0x00, 0x28, 0xb1, 0xba, 0xf1, 0x01, 0x0a, 0x09, 0xf1, 0x01, 0x09, + 0xea, 0xd1, 0x64, 0x1c, 0xa8, 0xf8, 0x08, 0x70, 0x04, 0x98, 0xb9, 0xf1, 0x05, 0x0f, 0xa8, + 0xf8, 0x52, 0x00, 0x3f, 0xd0, 0x20, 0x78, 0x80, 0x01, 0x68, 0x80, 0x38, 0x46, 0xfd, 0xf7, + 0x74, 0xf8, 0x05, 0x98, 0x22, 0x78, 0x90, 0xf8, 0x7d, 0x10, 0x19, 0x20, 0xff, 0xf7, 0x15, + 0xfb, 0x2a, 0x4c, 0x20, 0x88, 0x40, 0xf0, 0x03, 0x00, 0x20, 0x80, 0x20, 0x88, 0x40, 0xf0, + 0x0c, 0x00, 0x20, 0x80, 0x02, 0x98, 0x06, 0x70, 0x98, 0xf8, 0xd4, 0x00, 0x04, 0xf1, 0xba, + 0x05, 0x00, 0x11, 0x2e, 0x88, 0x40, 0xf0, 0x10, 0x00, 0x84, 0xf8, 0xbb, 0x00, 0x98, 0xf8, + 0xd4, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x84, 0xf8, 0xba, 0x00, 0x38, 0x46, 0xff, 0xf7, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x54, 0xff, 0x68, 0x68, 0xcb, 0xf8, + 0x04, 0x00, 0xa4, 0xf8, 0xba, 0x60, 0x3c, 0x46, 0x20, 0x46, 0xff, 0xf7, 0x4b, 0xff, 0x64, + 0x1c, 0x20, 0x2c, 0x03, 0x99, 0xf8, 0xd3, 0x02, 0x98, 0x01, 0x70, 0x0d, 0x48, 0x07, 0x70, + 0x38, 0x46, 0xfe, 0xf7, 0xbb, 0xff, 0x08, 0xe0, 0x05, 0x98, 0x80, 0xf8, 0x7d, 0x60, 0x31, + 0x46, 0x9d, 0xf8, 0x05, 0x20, 0x19, 0x20, 0xff, 0xf7, 0xd9, 0xfa, 0x06, 0xb0, 0xbd, 0xe8, + 0xf0, 0x8f, 0xf8, 0x20, 0x00, 0x40, 0x84, 0x2c, 0x02, 0x42, 0x14, 0x10, 0x00, 0x40, 0x00, + 0x02, 0x02, 0x42, 0xf9, 0x21, 0x00, 0x40, 0x00, 0x13, 0x04, 0x42, 0x30, 0x00, 0x00, 0x20, + 0x00, 0x3f, 0x04, 0x42, 0x00, 0x02, 0x00, 0x20, 0xd0, 0x08, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x20, 0x3a, 0x20, 0x00, 0x40, 0x10, 0xb5, 0xab, 0x48, 0x01, 0x68, 0x4f, 0xf4, 0x80, 0x74, + 0x09, 0x03, 0x0a, 0x46, 0x03, 0x68, 0x1b, 0x03, 0x93, 0x42, 0xa8, 0xbf, 0x1a, 0x1c, 0x8b, + 0x42, 0xd8, 0xbf, 0x19, 0x1c, 0x64, 0x1e, 0xf5, 0xd1, 0x52, 0x1a, 0xa3, 0x4b, 0x00, 0x20, + 0x02, 0xeb, 0x82, 0x02, 0x18, 0x70, 0x10, 0x14, 0x10, 0xbd, 0xf0, 0xb5, 0x00, 0x20, 0xfe, + 0xf7, 0x23, 0xfa, 0x06, 0x21, 0x02, 0x20, 0xfe, 0xf7, 0x01, 0xff, 0x9d, 0x4d, 0x28, 0x78, + 0xc0, 0x43, 0x28, 0x70, 0x0a, 0x20, 0xff, 0xf7, 0xc4, 0xfb, 0x01, 0x24, 0x02, 0x20, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x2c, 0x73, 0xff, 0xf7, 0xbf, 0xfb, + 0x98, 0x48, 0x01, 0x88, 0x41, 0xf4, 0xe0, 0x61, 0x01, 0x80, 0x96, 0x48, 0x04, 0x70, 0x04, + 0x74, 0x97, 0x48, 0x40, 0xf2, 0xff, 0x31, 0x06, 0x46, 0x0a, 0x3e, 0x31, 0x80, 0x93, 0x49, + 0x04, 0x25, 0x09, 0x88, 0x4f, 0xf0, 0x40, 0x17, 0x00, 0x22, 0x41, 0xea, 0x01, 0x41, 0x83, + 0x18, 0x1f, 0x60, 0x6d, 0x1e, 0x19, 0x61, 0x02, 0xf1, 0x04, 0x02, 0xf8, 0xd1, 0x1f, 0x20, + 0x70, 0x72, 0x0f, 0x20, 0x30, 0x72, 0xf4, 0x71, 0x85, 0x48, 0x00, 0x21, 0x01, 0x74, 0x04, + 0x70, 0x05, 0x20, 0xff, 0xf7, 0x96, 0xfb, 0xf0, 0xbd, 0x2d, 0xe9, 0xf0, 0x4f, 0xad, 0xf1, + 0x24, 0x0d, 0x00, 0x20, 0x31, 0x21, 0x02, 0x90, 0x8d, 0xf8, 0x00, 0x00, 0xdf, 0xf8, 0x08, + 0x92, 0x8d, 0xf8, 0x01, 0x10, 0x3b, 0x21, 0x8d, 0xf8, 0x02, 0x10, 0x1d, 0x21, 0x8d, 0xf8, + 0x03, 0x10, 0x27, 0x21, 0x8d, 0xf8, 0x04, 0x10, 0x11, 0x21, 0x8d, 0xf8, 0x05, 0x00, 0x89, + 0xf8, 0xc6, 0x10, 0x7a, 0x49, 0x72, 0x4e, 0x08, 0x70, 0x31, 0x46, 0x08, 0x39, 0x08, 0x88, + 0x79, 0x4b, 0x78, 0x4a, 0x20, 0xf4, 0x80, 0x70, 0x40, 0xf4, 0x00, 0x70, 0xd0, 0x52, 0x97, + 0x20, 0xa2, 0xf6, 0x19, 0x62, 0x10, 0x70, 0x08, 0x88, 0x6f, 0xf3, 0x1f, 0x30, 0x08, 0x80, + 0x48, 0x88, 0x4f, 0xf0, 0xff, 0x37, 0x76, 0x1f, 0x20, 0xf0, 0x0f, 0x00, 0x40, 0xf0, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x07, 0x00, 0x6f, 0x49, 0xf0, 0x53, + 0x06, 0x20, 0x70, 0x70, 0x01, 0x20, 0x03, 0x90, 0x08, 0x70, 0x99, 0xf8, 0x33, 0x20, 0x04, + 0x92, 0x99, 0xf8, 0x28, 0x10, 0x1a, 0x20, 0x05, 0x91, 0xff, 0xf7, 0x95, 0xfb, 0x41, 0xf6, + 0x15, 0x6a, 0x99, 0xf8, 0x24, 0x50, 0x99, 0xf8, 0x25, 0x00, 0x65, 0x49, 0x4c, 0x46, 0x06, + 0x97, 0x07, 0x91, 0x21, 0x46, 0x08, 0x91, 0x04, 0xe0, 0x6d, 0x1c, 0xed, 0xb2, 0x08, 0x98, + 0x90, 0xf8, 0x25, 0x00, 0xa8, 0x42, 0x14, 0xda, 0x06, 0x98, 0xa9, 0xf8, 0x2e, 0x00, 0x04, + 0x9a, 0x89, 0xf8, 0x32, 0x20, 0x05, 0x99, 0xa9, 0xf8, 0x2a, 0x10, 0x36, 0xf8, 0x0a, 0x00, + 0x20, 0xf0, 0x0f, 0x00, 0x08, 0x43, 0x26, 0xf8, 0x0a, 0x00, 0x89, 0xb2, 0x1a, 0x20, 0xff, + 0xf7, 0x6d, 0xfb, 0x43, 0xe0, 0x99, 0xf8, 0x30, 0x00, 0x89, 0xf8, 0x32, 0x00, 0x94, 0xf8, + 0x31, 0x00, 0x94, 0xf8, 0x32, 0x10, 0xdd, 0xf8, 0x08, 0x80, 0xeb, 0x46, 0x88, 0x42, 0xd6, + 0xdb, 0x05, 0x27, 0x1b, 0xf8, 0x01, 0x0b, 0x07, 0x99, 0xc0, 0x01, 0x40, 0xf0, 0x7a, 0x00, + 0x08, 0x80, 0x36, 0xf8, 0x0a, 0x00, 0x20, 0xf0, 0x0f, 0x00, 0x28, 0x43, 0x26, 0xf8, 0x0a, + 0x00, 0xff, 0xf7, 0x33, 0xff, 0xff, 0xf7, 0x18, 0xff, 0x80, 0x45, 0x38, 0xbf, 0x80, 0x46, + 0xff, 0xf7, 0x43, 0xfd, 0x03, 0x98, 0xff, 0xf7, 0xfc, 0xfa, 0x7f, 0x1e, 0xe3, 0xd1, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x94, 0xf8, 0x32, 0x00, 0x94, 0xf8, + 0x33, 0x10, 0x81, 0x42, 0x04, 0xd1, 0x21, 0x8d, 0xa9, 0x42, 0x08, 0xbf, 0xa4, 0xf8, 0x2c, + 0x80, 0x06, 0x99, 0x41, 0x45, 0x03, 0xd9, 0x05, 0x95, 0x04, 0x90, 0xcd, 0xf8, 0x18, 0x80, + 0x94, 0xf8, 0x32, 0x00, 0x40, 0x1c, 0x84, 0xf8, 0x32, 0x00, 0x99, 0xf8, 0x31, 0x00, 0xc1, + 0xe7, 0x09, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x2d, 0xe9, 0xf0, 0x4f, 0xad, 0xf1, 0x28, 0x0d, + 0x29, 0x4c, 0xdf, 0xf8, 0xb8, 0x80, 0x08, 0x22, 0x26, 0x4e, 0x6f, 0x46, 0x94, 0xf8, 0xc6, + 0x00, 0x00, 0x21, 0x04, 0xf5, 0x85, 0x75, 0x08, 0x90, 0xd8, 0xf8, 0x00, 0xb0, 0x73, 0x58, + 0x52, 0x1e, 0x47, 0xf8, 0x04, 0x3b, 0x01, 0xf1, 0x04, 0x01, 0xf8, 0xd1, 0x94, 0xf8, 0x64, + 0xa0, 0x02, 0x27, 0x84, 0xf8, 0x64, 0x70, 0x94, 0xf8, 0x22, 0x00, 0x09, 0x90, 0x67, 0x84, + 0xb5, 0xf8, 0x00, 0x90, 0x29, 0xf0, 0x02, 0x00, 0x28, 0x80, 0xff, 0xf7, 0x1f, 0xff, 0x84, + 0xf8, 0x64, 0xa0, 0x09, 0x98, 0x60, 0x84, 0x18, 0x48, 0xa5, 0xf8, 0x00, 0x90, 0x00, 0x25, + 0x05, 0x70, 0x38, 0x46, 0xff, 0xf7, 0xa8, 0xfa, 0x0d, 0x48, 0x05, 0x70, 0x08, 0x21, 0x05, + 0x74, 0x08, 0x98, 0x6b, 0x46, 0xc8, 0xf8, 0x00, 0xb0, 0x84, 0xf8, 0xc6, 0x00, 0x53, 0xf8, + 0x04, 0x2b, 0x49, 0x1e, 0x72, 0x51, 0x05, 0xf1, 0x04, 0x05, 0xf8, 0xd1, 0x0a, 0xb0, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0xbd, 0xe8, 0xf0, 0x8f, 0x0c, 0x02, + 0x00, 0x40, 0x00, 0x07, 0x03, 0x42, 0x64, 0x8c, 0x03, 0x42, 0x00, 0x01, 0x00, 0x40, 0x80, + 0x00, 0x01, 0x42, 0x26, 0x02, 0x00, 0x20, 0x3c, 0x18, 0x00, 0x40, 0x00, 0x02, 0x00, 0x20, + 0xe2, 0x08, 0x00, 0x20, 0x1d, 0x10, 0x00, 0x40, 0xe7, 0xf1, 0xff, 0xff, 0xd0, 0x40, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x20, 0x38, 0x18, 0x00, 0x40, 0x30, 0xb5, 0x7d, 0x4c, 0x01, 0x25, + 0x28, 0x46, 0x25, 0x70, 0x84, 0xf8, 0xde, 0x5e, 0xff, 0xf7, 0xe3, 0xfb, 0x00, 0x20, 0x20, + 0x70, 0x28, 0x46, 0xff, 0xf7, 0xde, 0xfb, 0xa5, 0x73, 0x28, 0x46, 0xff, 0xf7, 0xda, 0xfb, + 0xa5, 0x73, 0x28, 0x46, 0xff, 0xf7, 0xd6, 0xfb, 0x73, 0x48, 0x00, 0x78, 0x30, 0xbd, 0x30, + 0xb5, 0x03, 0x11, 0x00, 0xf0, 0x0f, 0x00, 0x03, 0xf0, 0x0f, 0x03, 0x00, 0xfb, 0x03, 0xf0, + 0xc0, 0xb2, 0x12, 0x18, 0x00, 0x23, 0xd4, 0xb2, 0x50, 0xb2, 0x00, 0x28, 0x06, 0xd4, 0x0f, + 0x38, 0x40, 0xb2, 0x00, 0x28, 0x03, 0xf1, 0x01, 0x03, 0xdb, 0xb2, 0xf8, 0xd5, 0xc3, 0xeb, + 0x03, 0x10, 0x42, 0xb2, 0x94, 0x42, 0x4f, 0xf0, 0x00, 0x00, 0x05, 0xda, 0x40, 0x1c, 0xc0, + 0xb2, 0x03, 0xfb, 0x10, 0x25, 0xac, 0x42, 0xf9, 0xdb, 0xc0, 0xf1, 0x0f, 0x00, 0xc0, 0xb2, + 0x43, 0xea, 0x00, 0x13, 0x5f, 0x48, 0x0a, 0x46, 0x03, 0x70, 0x9b, 0xb2, 0x13, 0x20, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x19, 0x46, 0xff, 0xf7, 0xeb, 0xfb, + 0x30, 0xbd, 0x2d, 0xe9, 0xfe, 0x4f, 0x5a, 0x4c, 0x4f, 0xf0, 0x00, 0x00, 0x94, 0xf8, 0x94, + 0x10, 0x31, 0xb9, 0x94, 0xf8, 0x9a, 0x10, 0x31, 0xf0, 0x02, 0x02, 0x14, 0xbf, 0x04, 0x29, + 0x01, 0x20, 0x55, 0x49, 0x08, 0x80, 0x55, 0x48, 0x4f, 0xf0, 0x00, 0x0a, 0x4f, 0xf0, 0x01, + 0x08, 0xa0, 0xf8, 0x02, 0xa0, 0xa0, 0xf8, 0x04, 0x80, 0x50, 0x46, 0xfd, 0xf7, 0x25, 0xf9, + 0x4c, 0x4d, 0xa5, 0xf6, 0xd9, 0x60, 0x00, 0x78, 0x00, 0x90, 0xa5, 0xf6, 0xde, 0x60, 0x00, + 0x78, 0x01, 0x90, 0x68, 0x78, 0x00, 0xf0, 0x03, 0x00, 0x83, 0x46, 0xa5, 0xf6, 0xd9, 0x60, + 0x80, 0xf8, 0x00, 0x80, 0x25, 0xf8, 0x62, 0xac, 0xa5, 0xf6, 0xde, 0x60, 0x80, 0xf8, 0x00, + 0x80, 0x94, 0xf8, 0xa4, 0x00, 0x02, 0x28, 0x07, 0xda, 0x42, 0xf2, 0x1f, 0x20, 0x25, 0xf8, + 0x02, 0x0c, 0x40, 0x46, 0xff, 0xf7, 0x63, 0xfb, 0x0b, 0xe0, 0x42, 0xf2, 0x1f, 0x00, 0x25, + 0xf8, 0x02, 0x0c, 0x3c, 0x4c, 0x84, 0xf8, 0x00, 0x80, 0x02, 0x20, 0xff, 0xf7, 0x58, 0xfb, + 0x84, 0xf8, 0x00, 0xa0, 0x02, 0x20, 0x28, 0x71, 0x0a, 0x20, 0xff, 0xf7, 0x51, 0xfb, 0x05, + 0x20, 0x28, 0x70, 0x85, 0xf8, 0x01, 0xa0, 0xff, 0xf7, 0x5f, 0xff, 0x01, 0x28, 0x18, 0xbf, + 0xd1, 0x46, 0x56, 0x46, 0x0d, 0xd1, 0x04, 0x24, 0x10, 0x27, 0x6c, 0x70, 0xff, 0xf7, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x55, 0xff, 0x76, 0x1c, 0x01, 0x28, + 0x03, 0xd1, 0x7f, 0x1e, 0x04, 0xf1, 0x04, 0x04, 0xf5, 0xd1, 0x5f, 0xfa, 0x86, 0xf9, 0xcd, + 0xf8, 0x08, 0xa0, 0x44, 0x46, 0xa4, 0xf1, 0x10, 0x00, 0x28, 0x70, 0xff, 0xf7, 0x44, 0xff, + 0x01, 0x28, 0x03, 0xd0, 0x64, 0x1c, 0x10, 0x2c, 0xf5, 0xdb, 0x01, 0xe0, 0xcd, 0xf8, 0x08, + 0x80, 0x64, 0xb2, 0x0f, 0x26, 0x10, 0x34, 0xe7, 0xb2, 0x2f, 0x70, 0xff, 0xf7, 0x35, 0xff, + 0x01, 0x28, 0x04, 0xd0, 0x76, 0x1e, 0x04, 0xf1, 0x10, 0x04, 0xf5, 0xd1, 0x01, 0xe0, 0xcd, + 0xf8, 0x08, 0x80, 0xb9, 0xf1, 0x10, 0x0f, 0x02, 0x98, 0x05, 0xd1, 0x20, 0xb9, 0x51, 0x46, + 0x0a, 0x46, 0x13, 0x20, 0xff, 0xf7, 0x56, 0xfb, 0x28, 0x88, 0x4f, 0xea, 0x0b, 0x24, 0x20, + 0xf4, 0x40, 0x70, 0x03, 0x22, 0x49, 0x46, 0x20, 0x43, 0x28, 0x80, 0x78, 0xb2, 0xff, 0xf7, + 0x2f, 0xff, 0x00, 0x98, 0xa5, 0xf6, 0xd9, 0x61, 0x08, 0x70, 0x01, 0x98, 0xa5, 0xf6, 0xde, + 0x61, 0x08, 0x70, 0x28, 0x88, 0x20, 0xf4, 0x40, 0x70, 0x04, 0x43, 0x50, 0x46, 0x2c, 0x80, + 0xff, 0xf7, 0x12, 0xf8, 0xbd, 0xe8, 0xfe, 0x8f, 0xae, 0x11, 0x00, 0x40, 0x00, 0x37, 0x02, + 0x42, 0x86, 0x20, 0x00, 0x40, 0xc0, 0x00, 0x00, 0x20, 0x0e, 0x03, 0x00, 0x20, 0x00, 0x00, + 0x00, 0x20, 0x8c, 0x04, 0x04, 0x42, 0x10, 0xb5, 0x6a, 0x4a, 0x13, 0x68, 0x6a, 0x4a, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x12, 0x68, 0xa2, 0xfb, 0x03, 0x23, + 0x1b, 0x02, 0x12, 0x0e, 0x1a, 0x43, 0x02, 0x60, 0x67, 0x48, 0x8c, 0x1a, 0x94, 0xfb, 0xf0, + 0xf0, 0x81, 0xb2, 0x40, 0x42, 0x82, 0xb2, 0x05, 0x20, 0xff, 0xf7, 0x1f, 0xfc, 0x20, 0x46, + 0x10, 0xbd, 0x2d, 0xe9, 0xf0, 0x4f, 0xad, 0xf1, 0x14, 0x0d, 0xdf, 0xf8, 0x80, 0xa1, 0x5c, + 0x4c, 0x5f, 0x49, 0x4f, 0xf0, 0x01, 0x0b, 0x9a, 0xf8, 0xc6, 0x00, 0x5b, 0x4d, 0x26, 0x46, + 0x01, 0x90, 0x41, 0xf6, 0x82, 0x50, 0x08, 0x80, 0xaa, 0xf8, 0x88, 0xb0, 0xba, 0xf8, 0x80, + 0x00, 0x4f, 0xf0, 0x00, 0x08, 0xb4, 0x3e, 0x45, 0x43, 0x11, 0x20, 0x02, 0x95, 0x8a, 0xf8, + 0xc6, 0x00, 0x40, 0x46, 0x86, 0xf8, 0x02, 0x80, 0x86, 0xf8, 0x00, 0x80, 0xfe, 0xf7, 0x04, + 0xfa, 0x70, 0x3c, 0x20, 0x88, 0x20, 0xf0, 0x0f, 0x00, 0xa6, 0xf8, 0x44, 0x00, 0xff, 0x20, + 0x86, 0xf8, 0x48, 0x00, 0x05, 0x20, 0xff, 0xf7, 0xa4, 0xfb, 0x86, 0xf8, 0x48, 0x80, 0x29, + 0x46, 0x68, 0x46, 0xff, 0xf7, 0xb2, 0xff, 0x41, 0x46, 0xdf, 0xf8, 0x20, 0x91, 0x45, 0x46, + 0x44, 0x46, 0x05, 0x27, 0x03, 0x91, 0x04, 0x91, 0x01, 0x46, 0x00, 0x29, 0xb8, 0xbf, 0x49, + 0x42, 0x4a, 0x46, 0x52, 0x1c, 0x8a, 0x42, 0x25, 0xdc, 0x09, 0xeb, 0x01, 0x02, 0x49, 0x46, + 0x49, 0x00, 0x00, 0x28, 0x92, 0xfb, 0xf1, 0xf1, 0x4c, 0xbf, 0x61, 0x1a, 0x21, 0x44, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x0c, 0xb2, 0x60, 0x42, 0x82, 0xb2, + 0x06, 0x20, 0xa1, 0xb2, 0xff, 0xf7, 0xc5, 0xfb, 0x10, 0x2c, 0x05, 0xda, 0x14, 0xf1, 0x10, + 0x0f, 0x05, 0xda, 0x6f, 0xf0, 0x0f, 0x04, 0x00, 0xe0, 0x0f, 0x24, 0xcd, 0xf8, 0x0c, 0xb0, + 0xb4, 0x70, 0x05, 0x20, 0xff, 0xf7, 0x6e, 0xfb, 0x02, 0x99, 0x68, 0x46, 0xff, 0xf7, 0x7e, + 0xff, 0x7f, 0x1e, 0xd1, 0xd1, 0xdf, 0xf8, 0xb8, 0x90, 0x05, 0x27, 0x01, 0x46, 0x00, 0x29, + 0xb8, 0xbf, 0x49, 0x42, 0x4a, 0x46, 0x52, 0x1c, 0x8a, 0x42, 0x25, 0xdc, 0x09, 0xeb, 0x01, + 0x02, 0x49, 0x46, 0x49, 0x00, 0x00, 0x28, 0x92, 0xfb, 0xf1, 0xf1, 0x4c, 0xbf, 0x69, 0x1a, + 0x29, 0x44, 0x0d, 0xb2, 0x68, 0x42, 0x82, 0xb2, 0x07, 0x20, 0xa9, 0xb2, 0xff, 0xf7, 0x94, + 0xfb, 0x10, 0x2d, 0x05, 0xda, 0x15, 0xf1, 0x10, 0x0f, 0x05, 0xda, 0x6f, 0xf0, 0x0f, 0x05, + 0x00, 0xe0, 0x0f, 0x25, 0xcd, 0xf8, 0x10, 0xb0, 0x35, 0x70, 0x05, 0x20, 0xff, 0xf7, 0x3d, + 0xfb, 0x02, 0x99, 0x68, 0x46, 0xff, 0xf7, 0x4d, 0xff, 0x7f, 0x1e, 0xd1, 0xd1, 0xaa, 0xf8, + 0x84, 0x40, 0xaa, 0xf8, 0x82, 0x50, 0x03, 0x98, 0x20, 0xb1, 0x0f, 0x20, 0x42, 0x46, 0xa1, + 0xb2, 0xff, 0xf7, 0x74, 0xfb, 0x04, 0x98, 0x20, 0xb1, 0x10, 0x20, 0x42, 0x46, 0xa9, 0xb2, + 0xff, 0xf7, 0x6d, 0xfb, 0x01, 0x98, 0x8a, 0xf8, 0xc6, 0x00, 0x86, 0xf8, 0x02, 0x80, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x86, 0xf8, 0x00, 0x80, 0xff, 0xf7, + 0x60, 0xfd, 0x05, 0xb0, 0xaa, 0xf8, 0x88, 0x80, 0xbd, 0xe8, 0xf0, 0x8f, 0xc0, 0x46, 0xd0, + 0x1c, 0x00, 0x40, 0xd0, 0x08, 0x00, 0x20, 0x40, 0x42, 0x0f, 0x00, 0x00, 0x02, 0x00, 0x20, + 0x00, 0x00, 0x00, 0x20, 0x80, 0x96, 0x98, 0x00, 0x10, 0x55, 0x22, 0x00, 0x49, 0x10, 0x49, + 0x1c, 0x01, 0x40, 0x49, 0x42, 0x01, 0x43, 0x01, 0x20, 0x90, 0x40, 0x40, 0x1e, 0x08, 0x40, + 0x70, 0x47, 0xf8, 0xb5, 0x0e, 0x68, 0x06, 0xf0, 0x07, 0x04, 0x14, 0x19, 0x08, 0x2c, 0x4f, + 0xea, 0xe6, 0x05, 0x05, 0xf0, 0x03, 0x07, 0x06, 0xf0, 0x07, 0x03, 0x04, 0xdd, 0xf4, 0x10, + 0x04, 0xf0, 0x03, 0x04, 0x03, 0x2c, 0x11, 0xd0, 0x3f, 0x18, 0x90, 0x19, 0xb5, 0xeb, 0xe0, + 0x0f, 0x3c, 0x78, 0x18, 0xbf, 0x17, 0xf8, 0x01, 0x6f, 0x12, 0xd1, 0x01, 0x20, 0x90, 0x40, + 0x40, 0x1e, 0xc3, 0xf1, 0x08, 0x03, 0x9b, 0x1a, 0x1c, 0x41, 0x04, 0x40, 0x1f, 0xe0, 0x52, + 0x4c, 0x27, 0x68, 0x00, 0x97, 0x6d, 0x1c, 0x05, 0xf0, 0x03, 0x05, 0x1d, 0xf8, 0x05, 0x60, + 0xc4, 0x78, 0x07, 0x60, 0xc2, 0xf1, 0x08, 0x00, 0x9d, 0x18, 0xc0, 0x1a, 0x08, 0x3d, 0x08, + 0x30, 0xc3, 0xf1, 0x08, 0x03, 0xc6, 0x40, 0x01, 0x20, 0x00, 0xfa, 0x05, 0xf7, 0x00, 0xfa, + 0x03, 0xf3, 0x7f, 0x1e, 0x5b, 0x1e, 0x90, 0x40, 0x1c, 0x40, 0x37, 0x40, 0x40, 0x1e, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0xac, 0x40, 0x3c, 0x43, 0x23, 0xb2, + 0x0c, 0x68, 0x12, 0x19, 0x0a, 0x60, 0x01, 0x46, 0x10, 0x22, 0x18, 0x46, 0xff, 0xf7, 0xa9, + 0xff, 0x00, 0xb2, 0xf8, 0xbd, 0xfc, 0xb5, 0x3c, 0x4e, 0x84, 0x46, 0x30, 0x68, 0x01, 0x90, + 0x9d, 0xf8, 0x05, 0x10, 0x9d, 0xf8, 0x04, 0x00, 0xfe, 0x27, 0x9d, 0xf8, 0x06, 0x30, 0x41, + 0xea, 0x00, 0x21, 0x9d, 0xf8, 0x07, 0x00, 0x0a, 0xb2, 0x2c, 0xf8, 0x04, 0x1b, 0x40, 0xea, + 0x03, 0x20, 0x00, 0xb2, 0x04, 0x46, 0x2c, 0xf8, 0x04, 0x0b, 0x80, 0x1a, 0x05, 0xb2, 0x20, + 0x20, 0x00, 0x90, 0x00, 0x98, 0x10, 0xf0, 0x1f, 0x0f, 0x04, 0xbf, 0x30, 0x68, 0x01, 0x90, + 0x02, 0x22, 0x69, 0x46, 0x01, 0xa8, 0xff, 0xf7, 0x89, 0xff, 0x10, 0xf1, 0x02, 0x0f, 0x0a, + 0xd1, 0x00, 0x98, 0x10, 0xf0, 0x1f, 0x0f, 0x04, 0xbf, 0x30, 0x68, 0x01, 0x90, 0x01, 0xa8, + 0x08, 0x22, 0x69, 0x46, 0xff, 0xf7, 0x7b, 0xff, 0x41, 0x19, 0x0d, 0xb2, 0x7f, 0x1e, 0x05, + 0xeb, 0x04, 0x01, 0x2c, 0xf8, 0x04, 0x1b, 0x0c, 0xb2, 0xdd, 0xd1, 0xfc, 0xbd, 0x10, 0xb5, + 0x1d, 0x4c, 0x20, 0x46, 0x80, 0x1e, 0xff, 0xf7, 0xba, 0xff, 0x20, 0x46, 0xff, 0xf7, 0xb7, + 0xff, 0x10, 0xbd, 0x2d, 0xe9, 0xf0, 0x41, 0x19, 0x4e, 0x00, 0x25, 0x02, 0x20, 0x35, 0x70, + 0xff, 0xf7, 0x41, 0xfb, 0x17, 0x4c, 0x01, 0x27, 0x20, 0x88, 0x20, 0xf0, 0x07, 0x00, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x40, 0xf0, 0x0b, 0x00, 0x20, 0x80, + 0x14, 0x48, 0x37, 0x70, 0x00, 0x78, 0x04, 0x28, 0x04, 0xdb, 0x08, 0x28, 0xcc, 0xbf, 0x02, + 0x21, 0x39, 0x1c, 0x00, 0xe0, 0x29, 0x46, 0x88, 0x01, 0x20, 0x82, 0x0a, 0x02, 0x1c, 0x20, + 0xff, 0xf7, 0x70, 0xfb, 0x19, 0x20, 0xb4, 0xf8, 0x0a, 0x80, 0x60, 0x81, 0x02, 0x20, 0xff, + 0xf7, 0x21, 0xfb, 0x09, 0x4e, 0x37, 0x70, 0xff, 0xf7, 0xca, 0xff, 0x35, 0x70, 0xa4, 0xf8, + 0x0a, 0x80, 0xbd, 0xe8, 0xf0, 0x81, 0x00, 0x02, 0x00, 0x40, 0x02, 0x04, 0x00, 0x40, 0xd0, + 0x40, 0x00, 0x42, 0x06, 0x02, 0x00, 0x40, 0x64, 0x01, 0x00, 0x20, 0xc0, 0x00, 0x01, 0x42, + 0x70, 0xb5, 0x51, 0x4c, 0x04, 0xf2, 0xb2, 0x32, 0x11, 0x88, 0x21, 0xf4, 0x70, 0x61, 0x41, + 0xea, 0x00, 0x20, 0x10, 0x80, 0x02, 0x20, 0xff, 0xf7, 0xdf, 0xfb, 0x4c, 0x4e, 0x01, 0x25, + 0x02, 0x20, 0x35, 0x70, 0xff, 0xf7, 0xd9, 0xfb, 0x00, 0x20, 0x30, 0x70, 0x02, 0x20, 0xff, + 0xf7, 0xd4, 0xfb, 0x20, 0x88, 0x20, 0xf0, 0x20, 0x00, 0x40, 0xf0, 0x10, 0x00, 0x20, 0x80, + 0x06, 0x20, 0xff, 0xf7, 0xcb, 0xfb, 0x20, 0x88, 0x20, 0xf0, 0x10, 0x00, 0x40, 0xf0, 0x20, + 0x00, 0x20, 0x80, 0x28, 0x46, 0xff, 0xf7, 0xc2, 0xfb, 0x20, 0x88, 0x20, 0xf0, 0x30, 0x00, + 0x20, 0x80, 0x0a, 0x20, 0xb4, 0xf8, 0x4c, 0x40, 0xff, 0xf7, 0xb9, 0xfb, 0x20, 0x46, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x70, 0xbd, 0xf8, 0xb5, 0x38, 0x48, + 0x00, 0x27, 0x3a, 0x4d, 0x00, 0x88, 0x37, 0x49, 0x38, 0x4e, 0xad, 0xf8, 0x00, 0x00, 0xaf, + 0x74, 0x41, 0xf6, 0x82, 0x50, 0x08, 0x80, 0x01, 0x20, 0xa6, 0xf8, 0x88, 0x00, 0xe8, 0x74, + 0xa8, 0x7c, 0x02, 0x28, 0x27, 0xda, 0x38, 0x46, 0xfe, 0xf7, 0xf4, 0xf9, 0x0a, 0x20, 0xff, + 0xf7, 0x9d, 0xfb, 0xa8, 0x7c, 0x1d, 0xf8, 0x00, 0x40, 0x20, 0x46, 0xff, 0xf7, 0xab, 0xff, + 0x0e, 0x2c, 0x0a, 0xdc, 0xb6, 0xf8, 0x6a, 0x10, 0x81, 0x42, 0x06, 0xda, 0x64, 0x1c, 0xe4, + 0xb2, 0x20, 0x46, 0xff, 0xf7, 0xa0, 0xff, 0x0f, 0x2c, 0xf4, 0xdb, 0xa8, 0x7c, 0x30, 0x18, + 0x80, 0xf8, 0xa4, 0x40, 0xff, 0xf7, 0xc8, 0xfd, 0x0a, 0x20, 0xff, 0xf7, 0x81, 0xfb, 0xa8, + 0x7c, 0x40, 0x1c, 0xa8, 0x74, 0xa8, 0x7c, 0x02, 0x28, 0xd7, 0xdb, 0xa6, 0xf8, 0x88, 0x70, + 0xef, 0x74, 0xf8, 0xbd, 0x00, 0xb5, 0xff, 0xf7, 0xbd, 0xff, 0x1b, 0x4b, 0x4f, 0xf0, 0x00, + 0x01, 0x93, 0xf8, 0x9a, 0x00, 0x40, 0xb9, 0x93, 0xf8, 0xa4, 0x00, 0x0a, 0x28, 0x04, 0xdb, + 0x93, 0xf8, 0xa5, 0x00, 0x02, 0x28, 0x08, 0xbf, 0x01, 0x21, 0x12, 0x48, 0x00, 0xf1, 0x1a, + 0x00, 0x01, 0x80, 0xb3, 0xf8, 0x54, 0x00, 0xa0, 0xb1, 0x11, 0x49, 0x01, 0x20, 0x08, 0x70, + 0x93, 0xf8, 0xa4, 0x00, 0x04, 0x28, 0x04, 0xdb, 0x08, 0x28, 0xd4, 0xbf, 0x06, 0x20, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x03, 0x20, 0x00, 0xe0, 0x04, 0x20, + 0x0c, 0x4a, 0x10, 0x70, 0x93, 0xf8, 0xa4, 0x10, 0x12, 0x78, 0x20, 0x20, 0xff, 0xf7, 0x91, + 0xfb, 0x00, 0xbd, 0x60, 0x1c, 0x00, 0x40, 0x98, 0x8c, 0x03, 0x42, 0x18, 0x31, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x00, 0x02, 0x00, 0x20, 0xd0, 0x08, 0x00, 0x20, 0xc0, 0x00, 0x00, + 0x20, 0x18, 0x02, 0x04, 0x42, 0x12, 0x20, 0x00, 0x40, 0x04, 0x04, 0x00, 0x00, 0x2d, 0xe9, + 0xf0, 0x47, 0x36, 0x48, 0x4f, 0xf4, 0x0c, 0x61, 0x41, 0x80, 0x36, 0x49, 0x4f, 0xf0, 0x01, + 0x06, 0x09, 0x88, 0x86, 0x80, 0x4f, 0xf0, 0x00, 0x00, 0x01, 0xb1, 0x30, 0x46, 0x31, 0x49, + 0xdf, 0xf8, 0xc8, 0x80, 0x08, 0x70, 0x00, 0x20, 0xfd, 0xf7, 0x76, 0xf9, 0x45, 0x46, 0x31, + 0x4c, 0x4f, 0xf0, 0x03, 0x0a, 0x0f, 0x21, 0x20, 0x46, 0x4f, 0xf0, 0x00, 0x09, 0x2c, 0x4f, + 0x80, 0x1e, 0x80, 0xf8, 0x04, 0xa0, 0x01, 0x80, 0x02, 0x20, 0x87, 0xf8, 0x00, 0x90, 0xff, + 0xf7, 0xc4, 0xfb, 0x20, 0x88, 0x20, 0xf0, 0x0f, 0x00, 0x40, 0xf0, 0x03, 0x00, 0x20, 0x80, + 0x50, 0x46, 0x3e, 0x70, 0xa4, 0xf8, 0x0a, 0x90, 0xff, 0xf7, 0xb8, 0xfb, 0x14, 0x27, 0xa0, + 0x79, 0x08, 0xf8, 0x01, 0x0b, 0x30, 0x46, 0xff, 0xf7, 0xb1, 0xfb, 0x7f, 0x1e, 0xf7, 0xd1, + 0x05, 0x24, 0x29, 0x88, 0x6a, 0x88, 0x14, 0x20, 0xff, 0xf7, 0xf1, 0xfb, 0x64, 0x1e, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x05, 0xf1, 0x04, 0x05, 0xf6, 0xd1, + 0xbd, 0xe8, 0xf0, 0x87, 0x10, 0xb5, 0x15, 0x48, 0x40, 0xf2, 0x36, 0x21, 0x08, 0x38, 0x36, + 0x22, 0x01, 0x80, 0x02, 0x21, 0x00, 0x20, 0xff, 0xf7, 0xe0, 0xfb, 0x0d, 0x48, 0x00, 0x24, + 0x01, 0x21, 0xc4, 0x80, 0xc1, 0x81, 0x81, 0x84, 0x0b, 0x48, 0x14, 0x38, 0x44, 0x73, 0x84, + 0x73, 0xc4, 0x72, 0x04, 0x74, 0xff, 0xf7, 0x9e, 0xff, 0x20, 0x46, 0xff, 0xf7, 0xa7, 0xf8, + 0x4f, 0xf0, 0x80, 0x41, 0x0f, 0x20, 0xa1, 0xf8, 0x04, 0x42, 0x81, 0xf8, 0x06, 0x02, 0x1c, + 0x20, 0x81, 0xf8, 0x08, 0x02, 0x10, 0xbd, 0x00, 0x00, 0x00, 0x20, 0xe4, 0x08, 0x00, 0x20, + 0x18, 0x02, 0x00, 0x20, 0x38, 0x00, 0x00, 0x20, 0xd0, 0x40, 0x00, 0x42, 0x06, 0x02, 0x00, + 0x40, 0x2d, 0xe9, 0xf0, 0x41, 0xfe, 0xf7, 0x3a, 0xfe, 0xfe, 0xf7, 0x5d, 0xfe, 0x22, 0x48, + 0x23, 0x49, 0x03, 0x68, 0xb1, 0xfb, 0xf3, 0xf0, 0xb1, 0xfb, 0xf3, 0xf1, 0x49, 0x1c, 0x89, + 0xb2, 0x03, 0xfb, 0x01, 0xf2, 0x1f, 0x49, 0x40, 0x1c, 0x80, 0xb2, 0x91, 0x42, 0x03, 0xfb, + 0x00, 0xf5, 0x4f, 0xf0, 0x00, 0x00, 0x23, 0xd3, 0x1b, 0x4e, 0x1c, 0x4c, 0xdf, 0xf8, 0x70, + 0xc0, 0x8e, 0x46, 0xa0, 0x46, 0xb5, 0xfb, 0xf4, 0xf1, 0x8f, 0xb2, 0x04, 0xfb, 0x17, 0x57, + 0xbc, 0x45, 0x06, 0xeb, 0x00, 0x07, 0x01, 0xf1, 0x01, 0x02, 0x03, 0xd9, 0x62, 0x39, + + 0x01, 0x97, 0xfd, 0xcd, 0x00, 0x02, 0x19, 0x00, 0xc8, 0x87, 0xf8, 0x02, 0x11, 0x40, 0x1c, + 0x91, 0xb2, 0x08, 0xfb, 0x01, 0xf1, 0x49, 0x1b, 0x8c, 0x45, 0x06, 0xeb, 0x00, 0x01, 0x03, + 0xd9, 0x62, 0x3a, 0x81, 0xf8, 0x02, 0x21, 0x40, 0x1c, 0x5d, 0x19, 0xae, 0x45, 0xe1, 0xd2, + 0x07, 0x28, 0x08, 0xd8, 0x0b, 0x49, 0xc0, 0xf1, 0x08, 0x02, 0xff, 0x23, 0x09, 0x18, 0x52, + 0x1e, 0x01, 0xf8, 0x01, 0x3b, 0xfb, 0xd1, 0xbd, 0xe8, 0xf0, 0x81, 0xc0, 0x46, 0xd0, 0x08, + 0x00, 0x20, 0x80, 0x9c, 0x2b, 0x8f, 0x3f, 0x0e, 0xe1, 0x93, 0x00, 0x02, 0x00, 0x20, 0x40, + 0x42, 0x0f, 0x00, 0x28, 0xe7, 0x09, 0x00, 0x02, 0x03, 0x00, 0x20, 0x2d, 0xe9, 0xf0, 0x4f, + 0x00, 0x20, 0xff, 0xf7, 0x80, 0xfc, 0x25, 0x4d, 0x95, 0xf8, 0xa4, 0x10, 0x49, 0x08, 0x05, + 0xeb, 0x41, 0x01, 0xb1, 0xf8, 0x88, 0x10, 0x4f, 0xf4, 0x80, 0x3a, 0x02, 0x09, 0xa1, 0xf2, + 0x66, 0x31, 0x8e, 0xb2, 0x87, 0x35, 0x1e, 0x49, 0xdf, 0xf8, 0x7c, 0x80, 0x2f, 0x27, 0xb1, + 0xfb, 0xf2, 0xf1, 0x49, 0x09, 0x8c, 0xb2, 0xa4, 0xf2, 0xfe, 0x31, 0x1f, 0xfa, 0x81, 0xfb, + 0x07, 0xf0, 0x0f, 0x01, 0x0f, 0x29, 0x15, 0xd1, 0x0f, 0x2f, 0x06, 0xf2, 0x66, 0x31, 0x03, + 0xd1, 0x8e, 0xb2, 0xa4, 0xeb, 0x0b, 0x04, 0xa4, 0xb2, 0x95, 0xf9, 0x00, 0x10, 0xc9, 0x01, + 0xb1, 0x42, 0xbc, 0xbf, 0x70, 0x1a, 0x4f, 0xf0, 0x00, 0x09, 0x09, 0xdb, 0x89, 0x1b, + + 0x01, 0x97, 0xfd, 0xb1, 0x00, 0x02, 0x19, 0x00, 0xac, 0x1f, 0xfa, 0x81, 0xf9, 0x61, 0x10, + 0x0b, 0xe0, 0x95, 0xf9, 0x00, 0x00, 0xa6, 0xeb, 0xc0, 0x10, 0x48, 0x44, 0x80, 0xb2, 0xff, + 0xf7, 0x43, 0xfc, 0x01, 0x09, 0x04, 0xfb, 0x01, 0xa1, 0x49, 0x0c, 0xa8, 0xf8, 0x00, 0x10, + 0x7f, 0x1e, 0xa5, 0xf1, 0x01, 0x05, 0xa8, 0xf1, 0x02, 0x08, 0xd1, 0xd5, 0xbd, 0xe8, 0xf0, + 0x8f, 0xc0, 0x00, 0x00, 0x20, 0x00, 0x00, 0xc0, 0x7f, 0x32, 0x04, 0x00, 0x20, 0xad, 0xf1, + 0x0c, 0x0d, 0x11, 0x48, 0x00, 0x68, 0x00, 0x90, 0x11, 0x48, 0x00, 0x68, 0x01, 0x90, 0x10, + 0x48, 0x00, 0x68, 0x02, 0x90, 0x10, 0x48, 0x00, 0x78, 0x10, 0x4a, 0x80, 0x10, 0x10, 0xf8, + 0x0d, 0x10, 0x82, 0xf8, 0x79, 0x10, 0x18, 0x21, 0x82, 0xf8, 0x7d, 0x10, 0x00, 0xeb, 0x0d, + 0x01, 0x09, 0x79, 0x68, 0x44, 0x82, 0xf8, 0x78, 0x10, 0x00, 0x7a, 0x03, 0xb0, 0x0a, 0x21, + 0x82, 0xf8, 0x7a, 0x00, 0x82, 0xf8, 0x7e, 0x10, 0x82, 0xf8, 0x7c, 0x10, 0x70, 0x47, 0x0c, + 0x30, 0x00, 0x00, 0x10, 0x30, 0x00, 0x00, 0x14, 0x30, 0x00, 0x00, 0x64, 0x01, 0x00, 0x20, + 0x00, 0x02, 0x00, 0x20, 0x25, 0x2c, 0x33, 0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x14, 0x14, 0x14, + 0x00, + + 0x01, 0x01, 0xff, 0x06, 0x20, 0x10, 0x19, 0x00, 0x3e, 0x0e, + + 0x01, 0x01, 0xff, 0x06, 0x22, 0x10, 0x19, 0x00, 0x37, 0x21, + + 0x01, 0x01, 0xff, 0x06, 0x4a, 0x10, 0x19, 0x00, 0x00, 0x02, + + 0x01, 0x01, 0xff, 0x06, 0x9a, 0x10, 0x19, 0x00, 0x10, 0x00, + + 0x01, 0x01, 0xff, 0x06, 0x84, 0x11, 0x19, 0x00, 0x01, 0x06, + + 0x01, 0x01, 0xff, 0x06, 0x86, 0x11, 0x19, 0x00, 0x00, 0x04, + + 0x01, 0x01, 0xff, 0x06, 0x94, 0x11, 0x19, 0x00, 0x1e, 0x03, + + 0x01, 0x01, 0xff, 0x06, 0xa0, 0x11, 0x19, 0x00, 0x01, 0x01, + + 0x01, 0x01, 0xff, 0x06, 0xb0, 0x11, 0x19, 0x00, 0x34, 0x28, + + 0x01, 0x01, 0xff, 0x06, 0xb2, 0x11, 0x19, 0x00, 0xd8, 0xdb, + + 0x01, 0x01, 0xff, 0x06, 0xc0, 0x11, 0x19, 0x00, 0xba, 0xc0, + + 0x01, 0x01, 0xff, 0x06, 0xc2, 0x11, 0x19, 0x00, 0xc6, 0xc9, + + 0x01, 0x01, 0xff, 0x06, 0xc4, 0x11, 0x19, 0x00, 0xcc, 0xcf, + + 0x01, 0x01, 0xff, 0x06, 0xc6, 0x11, 0x19, 0x00, 0xd2, 0xd5, + + 0x01, 0x01, 0xff, 0x06, 0xc8, 0x11, 0x19, 0x00, 0xd8, 0xdb, + + 0x01, 0x01, 0xff, 0x06, 0xca, 0x11, 0x19, 0x00, 0xde, 0xe1, + + 0x01, 0x01, 0xff, 0x06, 0xcc, 0x11, 0x19, 0x00, 0xe4, 0xe7, + + 0x01, 0x01, 0xff, 0x06, 0xce, 0x11, 0x19, 0x00, 0xf4, 0x81, + + 0x01, 0x01, 0xff, 0x06, 0xd0, 0x11, 0x19, 0x00, 0xc6, 0xcc, + + 0x01, 0x01, 0xff, 0x06, 0xd2, 0x11, 0x19, 0x00, 0xcf, 0xd2, + + 0x01, 0x01, 0xff, 0x06, 0xd4, 0x11, 0x19, 0x00, 0xd5, 0xd8, + + 0x01, 0x01, 0xff, 0x06, 0xd6, 0x11, 0x19, 0x00, 0xdb, 0xde, + + 0x01, 0x01, 0xff, 0x06, 0xd8, 0x11, 0x19, 0x00, 0xe1, 0xe4, + + 0x01, 0x01, 0xff, 0x06, 0xda, 0x11, 0x19, 0x00, 0xe7, 0xe8, + + 0x01, 0x01, 0xff, 0x06, 0xdc, 0x11, 0x19, 0x00, 0xeb, 0xee, + + 0x01, 0x01, 0xff, 0x06, 0xde, 0x11, 0x19, 0x00, 0xf4, 0x00, + + 0x01, 0x01, 0xff, 0x06, 0xe0, 0x11, 0x19, 0x00, 0xce, 0xcf, + + 0x01, 0x01, 0xff, 0x06, 0xe2, 0x11, 0x19, 0x00, 0xcf, 0xd0, + + 0x01, 0x01, 0xff, 0x06, 0xe4, 0x11, 0x19, 0x00, 0xd2, 0xd4, + + 0x01, 0x01, 0xff, 0x06, 0xe6, 0x11, 0x19, 0x00, 0xd6, 0xd9, + + 0x01, 0x01, 0xff, 0x06, 0xe8, 0x11, 0x19, 0x00, 0xdc, 0xdf, + + 0x01, 0x01, 0xff, 0x06, 0xea, 0x11, 0x19, 0x00, 0xe2, 0xe4, + + 0x01, 0x01, 0xff, 0x06, 0xec, 0x11, 0x19, 0x00, 0xe7, 0xf5, + + 0x01, 0x01, 0xff, 0x06, 0xee, 0x11, 0x19, 0x00, 0xfb, 0x7f, + + 0x01, 0x01, 0xff, 0x06, 0xf0, 0x11, 0x19, 0x00, 0xd3, 0xd4, + + 0x01, 0x01, 0xff, 0x06, 0xf2, 0x11, 0x19, 0x00, 0xd5, 0xd7, + + 0x01, 0x01, 0xff, 0x06, 0xf4, 0x11, 0x19, 0x00, 0xd9, 0xdc, + + 0x01, 0x01, 0xff, 0x06, 0xf6, 0x11, 0x19, 0x00, 0xdf, 0xe2, + + 0x01, 0x01, 0xff, 0x06, 0xf8, 0x11, 0x19, 0x00, 0xe4, 0xe7, + + 0x01, 0x01, 0xff, 0x06, 0xfa, 0x11, 0x19, 0x00, 0xec, 0xee, + + 0x01, 0x01, 0xff, 0x06, 0xfc, 0x11, 0x19, 0x00, 0xf0, 0xf5, + + 0x01, 0x01, 0xff, 0x06, 0xfe, 0x11, 0x19, 0x00, 0xfb, 0x00, + + 0x01, 0x01, 0xff, 0x06, 0x00, 0x12, 0x19, 0x00, 0x7c, 0x70, + + 0x01, 0x01, 0xff, 0x06, 0x02, 0x12, 0x19, 0x00, 0x64, 0x5e, + + 0x01, 0x01, 0xff, 0x06, 0x04, 0x12, 0x19, 0x00, 0x58, 0x52, + + 0x01, 0x01, 0xff, 0x06, 0x06, 0x12, 0x19, 0x00, 0x4c, 0x46, + + 0x01, 0x01, 0xff, 0x06, 0x08, 0x12, 0x19, 0x00, 0x40, 0x3a, + + 0x01, 0x01, 0xff, 0x06, 0x0a, 0x12, 0x19, 0x00, 0x34, 0x2e, + + 0x01, 0x01, 0xff, 0x06, 0x0c, 0x12, 0x19, 0x00, 0x28, 0x22, + + 0x01, 0x01, 0xff, 0x06, 0x0e, 0x12, 0x19, 0x00, 0x08, 0xfc, + + 0x01, 0x01, 0xff, 0x06, 0x10, 0x12, 0x19, 0x00, 0x64, 0x58, + + 0x01, 0x01, 0xff, 0x06, 0x12, 0x12, 0x19, 0x00, 0x52, 0x4c, + + 0x01, 0x01, 0xff, 0x06, 0x14, 0x12, 0x19, 0x00, 0x46, 0x40, + + 0x01, 0x01, 0xff, 0x06, 0x16, 0x12, 0x19, 0x00, 0x3a, 0x34, + + 0x01, 0x01, 0xff, 0x06, 0x18, 0x12, 0x19, 0x00, 0x2e, 0x28, + + 0x01, 0x01, 0xff, 0x06, 0x1a, 0x12, 0x19, 0x00, 0x22, 0x20, + + 0x01, 0x01, 0xff, 0x06, 0x1c, 0x12, 0x19, 0x00, 0x1a, 0x14, + + 0x01, 0x01, 0xff, 0x06, 0x1e, 0x12, 0x19, 0x00, 0x08, 0xfc, + + 0x01, 0x01, 0xff, 0x06, 0x24, 0x1c, 0x19, 0x00, 0x27, 0x00, + + 0x01, 0x01, 0xff, 0x06, 0x44, 0x1c, 0x19, 0x00, 0x1c, 0x00, + + 0x01, 0x01, 0xff, 0x06, 0x46, 0x1c, 0x19, 0x00, 0x00, 0x00, + + 0x01, 0x01, 0xff, 0x06, 0x04, 0x08, 0x19, 0x00, 0x00, 0x00, + + 0x01, 0x01, 0xff, 0x06, 0x38, 0x08, 0x19, 0x00, 0x01, 0xf0, + + 0x01, 0x01, 0xff, 0x06, 0x28, 0x20, 0x19, 0x00, 0xe3, 0x0c, + + 0x01, 0x01, 0xff, 0x06, 0x2c, 0x20, 0x19, 0x00, 0xc3, 0x0c, + + 0x01, 0x01, 0xff, 0x06, 0x30, 0x20, 0x19, 0x00, 0x83, 0x18, + + 0x01, 0x01, 0xff, 0x06, 0x34, 0x20, 0x19, 0x00, 0x03, 0x0c, + + 0x01, 0x01, 0xff, 0x06, 0xf0, 0x20, 0x19, 0x00, 0x00, 0x00, + + 0x01, 0x01, 0xff, 0x06, 0xf4, 0x20, 0x19, 0x00, 0x00, 0x11, + + 0x01, 0x01, 0xff, 0x06, 0xfc, 0x20, 0x19, 0x00, 0x00, 0x12, + + 0x01, 0x01, 0xff, 0x06, 0x04, 0x21, 0x19, 0x00, 0x00, 0x13, + + 0x01, 0x01, 0xff, 0x06, 0x0c, 0x21, 0x19, 0x00, 0x10, 0x13, + + 0x01, 0x01, 0xff, 0x06, 0x14, 0x21, 0x19, 0x00, 0x00, 0x14, + + 0x01, 0x01, 0xff, 0x06, 0x1c, 0x21, 0x19, 0x00, 0x10, 0x14, + + 0x01, 0x01, 0xff, 0x06, 0x24, 0x21, 0x19, 0x00, 0x20, 0x14, + + 0x01, 0x01, 0xff, 0x06, 0x2c, 0x21, 0x19, 0x00, 0x30, 0x14, + + 0x01, 0x01, 0xff, 0x06, 0x34, 0x21, 0x19, 0x00, 0x40, 0x14, + + 0x01, 0x01, 0xff, 0x06, 0x3c, 0x21, 0x19, 0x00, 0x50, 0x14, + + 0x01, 0x01, 0xff, 0x06, 0x44, 0x21, 0x19, 0x00, 0x41, 0x14, + + 0x01, 0x01, 0xff, 0x06, 0x4c, 0x21, 0x19, 0x00, 0x51, 0x14, + + 0x01, 0x01, 0xff, 0x06, 0x54, 0x21, 0x19, 0x00, 0x42, 0x14, + + 0x01, 0x01, 0xff, 0x06, 0x5c, 0x21, 0x19, 0x00, 0x52, 0x14, + + 0x01, 0x01, 0xff, 0x06, 0x64, 0x21, 0x19, 0x00, 0x33, 0x14, + + 0x01, 0x01, 0xff, 0x06, 0x6c, 0x21, 0x19, 0x00, 0x53, 0x14, + + 0x01, 0x01, 0xff, 0x06, 0x74, 0x21, 0x19, 0x00, 0x02, 0x11, + + 0x01, 0x01, 0xff, 0x06, 0x7c, 0x21, 0x19, 0x00, 0x02, 0x12, + + 0x01, 0x01, 0xff, 0x06, 0x84, 0x21, 0x19, 0x00, 0x12, 0x12, + + 0x01, 0x01, 0xff, 0x06, 0x8c, 0x21, 0x19, 0x00, 0x02, 0x13, + + 0x01, 0x01, 0xff, 0x06, 0x94, 0x21, 0x19, 0x00, 0x12, 0x13, + + 0x01, 0x01, 0xff, 0x06, 0x9c, 0x21, 0x19, 0x00, 0x02, 0x14, + + 0x01, 0x01, 0xff, 0x06, 0xa4, 0x21, 0x19, 0x00, 0x12, 0x14, + + 0x01, 0x01, 0xff, 0x06, 0xac, 0x21, 0x19, 0x00, 0x22, 0x14, + + 0x01, 0x01, 0xff, 0x06, 0xb4, 0x21, 0x19, 0x00, 0x32, 0x14, + + 0x01, 0x01, 0xff, 0x06, 0xbc, 0x21, 0x19, 0x00, 0x42, 0x14, + + 0x01, 0x01, 0xff, 0x06, 0xc4, 0x21, 0x19, 0x00, 0x52, 0x14, + + 0x01, 0x01, 0xff, 0x06, 0xcc, 0x21, 0x19, 0x00, 0x33, 0x12, + + 0x01, 0x01, 0xff, 0x06, 0xd4, 0x21, 0x19, 0x00, 0x43, 0x12, + + 0x01, 0x01, 0xff, 0x06, 0xdc, 0x21, 0x19, 0x00, 0x53, 0x12, + + 0x01, 0x01, 0xff, 0x06, 0xe4, 0x21, 0x19, 0x00, 0x53, 0x13, + + 0x01, 0x01, 0xff, 0x06, 0xec, 0x21, 0x19, 0x00, 0x53, 0x14, + + 0x01, 0x01, 0xff, 0x06, 0x36, 0x24, 0x19, 0x00, 0x00, 0x00, + + 0x01, 0x09, 0xfd, 0x08, 0x10, 0x20, 0x19, 0x00, 0x10, 0x00, 0x10, 0x00, + + 0x01, 0x09, 0xfd, 0x08, 0x12, 0x20, 0x19, 0x00, 0x00, 0x04, 0x00, 0x0f, + + // ############################################ END OF SCRIPT ! ! ! ############################################ + 0x01, 0x05, 0xff, 0x69, 0x00, 0x32, 0x19, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x60, 0x09, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, + 0x0b, 0x0f, 0xff, 0x07, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x06, + 0x06, 0x06, 0x06, 0x04, 0x00, 0x17, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xab, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x08, + 0x44, 0x10, 0x00, 0x00, + + 0x01, 0x05, 0xff, 0x69, 0x64, 0x32, 0x19, 0x00, 0x64, 0x26, 0x10, 0x11, 0x00, 0x01, 0x00, + 0x60, 0x04, 0xc0, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x11, + 0x2a, 0x0c, 0x00, 0x04, 0x18, 0x08, 0x00, 0x54, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, + 0x00, 0x00, 0x20, 0x14, 0x20, 0x14, 0xfa, 0x03, 0x1c, 0x01, 0xc3, 0xfe, 0x27, 0xfc, 0x84, + 0x03, 0xb4, 0x01, 0x37, 0x00, 0x91, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, + 0x71, 0x75, 0x71, 0x75, 0x71, 0x75, 0x71, 0x75, 0x47, 0x08, 0xe8, 0x08, 0xbe, 0x49, 0x00, + 0x00, 0xb7, 0x9d, 0xbc, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x97, 0x00, 0x00, + 0x00, 0x00, 0x10, 0x14, + + 0x01, 0x05, 0xff, 0x69, 0xc8, 0x32, 0x19, 0x00, 0x64, 0xe8, 0xe8, 0x01, 0x00, 0x06, 0x02, + 0x03, 0x01, 0x05, 0x00, 0xc4, 0xc2, 0x00, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, + 0x03, 0x01, 0x01, 0x04, 0x05, 0x08, 0x04, 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc2, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x78, 0x00, 0xd2, 0x00, 0xfb, 0x03, 0x9f, 0x1f, 0xe8, 0x03, 0x14, 0x12, 0xdc, 0x05, + 0x00, 0x08, 0x42, 0x04, + + 0x01, 0x05, 0xff, 0x69, 0x2c, 0x33, 0x19, 0x00, 0x64, 0x08, 0x0d, 0x45, 0x1f, 0x08, 0x19, + 0x0a, 0x0c, 0xee, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc5, 0x05, 0xc5, 0x05, 0xc5, 0x05, 0x87, 0x07, 0x85, 0x05, 0xa8, 0x08, 0x96, + 0x06, 0x13, 0x03, 0x02, 0x1f, 0x22, 0x1f, 0x52, 0x15, 0x9e, 0x11, 0x98, 0x11, 0x98, 0x11, + 0x91, 0x11, 0x90, 0x11, + + 0x01, 0x05, 0xff, 0x49, 0x90, 0x33, 0x19, 0x00, 0x44, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x1e, 0x1e, 0x19, 0x19, 0x15, 0x9d, 0x40, 0x9f, 0xcd, + 0x9c, 0xef, 0x9e, 0x73, 0x9c, 0x9a, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x47, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x82, 0xfd, 0x14, 0x00, 0x9c, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xdc, + 0xe6, 0xf0, 0xfa, 0x04, 0x0e, 0x18, 0xff, 0x00, 0x00, + + 0x01, 0x82, 0xfd, 0x14, 0x01, 0x9c, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xd8, + 0xe2, 0xec, 0xf6, 0x00, 0x0a, 0x14, 0xff, 0x00, 0x00, + + 0x01, 0x82, 0xfd, 0x14, 0x02, 0x9c, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xd8, + 0xe2, 0xec, 0xf6, 0x00, 0x0a, 0x14, 0xff, 0x00, 0x00, + + 0x01, 0x87, 0xfd, 0x03, 0x0d, 0x0d, 0x0d, + + 0x01, 0x01, 0xff, 0x06, 0x00, 0x24, 0x19, 0x00, 0x00, 0x00, + + // + // ## For SMPS/DC2DC with trim 7 (default value) use the command below: + // ## Send_HCI_VS_Class_1p5_LDO_mode 0xFD6E, 0x1, 0x7 + // ## Wait_HCI_Command_Complete_VS_Class_1p5_LDO_mode_Event 5000, any, HCI_VS_Class_1p5_LDO_mode, 0x00 + // + // ## For VBAT with trim 7 (default value) use the command below: + // ## Send_HCI_VS_Class_1p5_LDO_mode 0xFD6E, 0x0, 0x7 + // ## Wait_HCI_Command_Complete_VS_Class_1p5_LDO_mode_Event 5000, any, HCI_VS_Class_1p5_LDO_mode, 0x00 + 0x01, 0x24, 0xfd, 0x97, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xc0, 0x00, 0x01, 0xc0, 0x07, 0x00, 0x07, 0x00, 0x01, 0xc0, 0x00, 0x1c, 0x00, 0x00, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x03, 0x4d, 0x34, 0xdd, 0xdc, 0x77, + 0x07, 0x07, 0x01, 0xc0, 0x00, 0x00, 0x00, 0xd0, 0xd0, 0xd3, 0x77, 0x77, 0x71, 0xc7, 0x00, + 0x00, 0xd3, 0x77, 0x1c, 0x00, 0xd3, 0x70, 0x00, 0xdc, 0x73, 0x77, 0x0d, 0xc0, 0xdb, 0xf9, + 0x30, 0xdc, 0xc0, 0xdb, 0xf9, 0x20, 0x20, 0x00, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x34, 0x00, 0x0d, 0x0d, 0x34, 0xd3, 0x43, 0x43, 0x40, 0x00, 0x00, 0xd0, 0xd0, + 0x34, 0xd3, 0x77, 0x77, 0x40, 0x34, 0xd3, 0x77, 0x77, 0x71, 0xc0, 0x70, 0x1c, 0x70, 0x00, + 0x00, 0x1d, 0xc0, 0x0d, 0x07, 0x77, 0x03, 0x47, 0x77, 0x01, 0xc1, 0xdd, 0xc0, 0xc4, 0x43, + 0x70, 0x40, 0x0f, 0x41, 0x34, 0x34, 0x34, 0xf4, 0x47, 0x30, 0x08, 0x0b, 0xc4, 0x2f, 0xe5, + 0x34, 0xbf, 0x98, 0x08, 0xc0, + + 0x01, 0x24, 0xfd, 0x9b, 0x00, 0x01, 0x00, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xc0, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x0d, 0x03, 0x43, 0x4d, 0xd3, 0x71, 0xdc, 0x70, + 0x70, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x34, 0x0d, 0x34, 0xdd, 0xdd, 0xdc, 0x71, 0xc0, 0x00, + 0x03, 0x4d, 0xdc, 0x1c, 0x03, 0x4d, 0xc0, 0x00, 0xdd, 0xcd, 0x37, 0x03, 0x70, 0xc7, 0xd3, + 0x03, 0x03, 0x03, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x54, 0x00, 0x00, 0x07, + 0x00, 0x0d, 0x00, 0x00, 0x03, 0x40, 0x00, 0x07, 0x00, 0xd3, 0x4d, 0xd0, 0xd0, 0x0d, 0x00, + 0x0d, 0x00, 0xd3, 0x43, 0x4d, 0xdd, 0xc7, 0x1c, 0x77, 0x74, 0xdc, 0x00, 0x1c, 0x1d, 0xc0, + 0x0d, 0x34, 0x00, 0x70, 0x01, 0xdd, 0x0c, 0x00, 0x1c, 0x1d, 0xd3, 0x70, 0x04, 0xd3, 0x1c, + 0x1d, 0x37, 0x11, 0xcd, 0xc7, 0x7d, 0x10, 0x30, 0xd7, 0x00, 0x40, 0xbf, 0x98, 0x0b, 0xdc, + 0x4b, 0xf9, 0x5b, 0xf9, 0xbf, 0xa0, 0x30, 0x00, 0x00, + + 0x01, 0x24, 0xfd, 0x9b, 0x00, 0x02, 0x00, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xcd, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xd0, 0x00, 0x0d, 0x00, 0x34, 0x0d, 0x0d, 0x34, 0xd3, 0x77, 0x71, 0xc7, 0x1c, + 0x00, 0x70, 0x00, 0x00, 0x03, 0x40, 0xd0, 0xd3, 0x4d, 0xdd, 0xdd, 0xc7, 0x1c, 0x00, 0x00, + 0x0d, 0x37, 0x70, 0x70, 0x0d, 0x37, 0x1c, 0x0d, 0x37, 0x03, 0x77, 0x00, 0xdf, 0x77, 0x03, + 0x70, 0xdc, 0xdc, 0x80, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x35, 0xc0, 0x00, 0x00, 0xd0, 0xd0, 0x00, 0x34, 0x00, 0x70, 0x00, 0x37, 0x07, + 0x74, 0x34, 0x0d, 0x31, 0xd3, 0x43, 0x40, 0xd0, 0xd0, 0x31, 0xc0, 0x00, 0x01, 0xc7, 0x1d, + 0xc1, 0xc0, 0x00, 0x01, 0xc7, 0x1b, 0xfa, 0x02, 0xc7, 0x71, 0xdd, 0xdd, 0xc1, 0xdc, 0x1d, + 0xc1, 0x00, 0x0c, 0xe0, 0x2c, 0x37, 0x5c, 0x74, 0x0d, 0xc3, 0x80, 0x83, 0x04, 0xc0, 0x70, + 0x02, 0x02, 0x2f, 0xed, 0x1e, 0x02, 0xcb, 0xf9, 0x40, + + 0x01, 0x24, 0xfd, 0x9b, 0x00, 0x00, 0x01, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xc0, 0x1c, 0x07, 0x01, 0xc0, 0x70, 0x1c, 0x01, 0xc0, 0x1c, 0x01, 0xc0, 0x01, 0xc0, 0x00, + 0x1c, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x34, 0x00, 0x03, 0x40, 0xd0, 0xd3, 0x77, + 0x77, 0x70, 0x70, 0x1c, 0x00, 0x00, 0x03, 0x40, 0xd3, 0x4d, 0xdd, 0xdd, 0xc7, 0x01, 0xc0, + 0x03, 0x43, 0x71, 0xc0, 0x00, 0x37, 0x70, 0x0d, 0x31, 0xc3, 0x70, 0x0d, 0xc3, 0x03, 0x7d, + 0xdf, 0x00, 0xcc, 0x50, 0x00, 0x55, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, + 0xdd, 0xdd, 0xd3, 0x43, 0x40, 0x34, 0x0d, 0x34, 0xdd, 0xd3, 0x74, 0x0d, 0x34, 0xdc, 0x4d, + 0xd3, 0x77, 0x77, 0x74, 0x34, 0x03, 0x77, 0x1c, 0x77, 0x71, 0xd3, 0x43, 0x1c, 0x07, 0x1c, + 0x00, 0x77, 0x1d, 0x0d, 0xc1, 0xc0, 0x07, 0x77, 0x1d, 0x30, 0x10, 0xc0, 0x38, 0x0b, 0x70, + 0x77, 0x43, 0x41, 0xf7, 0x70, 0x6f, 0xe5, 0x1b, 0xf4, 0x52, 0xfe, 0x5e, 0x02, 0xc1, 0xbf, + 0xb8, 0x0b, 0x20, 0x2b, 0xf8, 0x20, 0x20, 0x00, 0x00, + + 0x01, 0x24, 0xfd, 0x97, 0x00, 0x01, 0x01, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xc0, 0x00, 0x1c, 0x00, 0x70, 0x01, 0xc0, 0x00, 0x70, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x40, 0x03, 0x40, 0xd0, 0xd3, 0x4d, 0xdd, 0xdc, + 0x71, 0xc0, 0x1c, 0x00, 0x00, 0x34, 0x03, 0x43, 0x4d, 0xdd, 0xdd, 0xdc, 0x70, 0x70, 0x00, + 0x0d, 0x37, 0x77, 0x00, 0x00, 0xdd, 0xc0, 0x03, 0x77, 0x03, 0x71, 0xbf, 0x90, 0xc3, 0x70, + 0x30, 0x0c, 0x0d, 0xcc, 0x80, 0x80, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x00, 0x70, + 0x00, 0x00, 0x00, 0x00, 0xd3, 0x4d, 0x00, 0xd0, 0x00, 0x70, 0x03, 0x43, 0x74, 0xd3, 0x40, + 0xd0, 0x37, 0x71, 0xd3, 0x43, 0x4d, 0x00, 0xd0, 0xdc, 0x71, 0xd3, 0x4d, 0xc7, 0x13, 0x4d, + 0xc7, 0x34, 0x37, 0x5c, 0x77, 0x00, 0x1d, 0xd0, 0xdc, 0x07, 0x1d, 0xc0, 0x07, 0x07, 0x07, + 0x10, 0x3d, 0xd1, 0xc7, 0x40, 0xc1, 0xd7, 0x38, 0x0b, 0x2f, 0xe4, 0x1d, 0xd3, 0x07, 0x07, + 0x07, 0x20, 0x2b, 0xf9, 0x00, + + 0x01, 0x24, 0xfd, 0x97, 0x00, 0x02, 0x01, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xc0, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0xd0, 0x03, 0x40, 0x34, 0x0d, 0x0d, 0x0d, 0x34, 0xdd, 0x37, 0x77, 0x71, + 0xc7, 0x07, 0x00, 0x00, 0x00, 0x34, 0x34, 0x37, 0x4d, 0xdd, 0xc7, 0x1c, 0x70, 0x07, 0x34, + 0x0d, 0xdd, 0xdc, 0x00, 0x03, 0x77, 0x06, 0xfe, 0x40, 0xc7, 0x0d, 0x31, 0xf4, 0xc0, 0xdc, + 0x03, 0x00, 0xdc, 0xdc, 0x80, 0xa0, 0x20, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x01, 0xcd, 0x00, 0x00, 0xd3, 0x43, 0x41, 0xc0, 0x0d, 0x0d, 0x0d, 0x0d, 0x03, 0x40, 0x0d, + 0xdd, 0xd3, 0x74, 0xdd, 0x37, 0x40, 0x0d, 0x37, 0x1d, 0xd0, 0x34, 0x00, 0xc7, 0x38, 0x0b, + 0x07, 0x74, 0xdd, 0xc7, 0x77, 0x77, 0x01, 0x00, 0x37, 0x74, 0xd3, 0x77, 0x04, 0x0d, 0xf4, + 0x1d, 0x0d, 0xdf, 0x40, 0x01, 0xd0, 0xdc, 0xd1, 0x3d, 0x1c, 0x07, 0x74, 0xf1, 0x1b, 0xfa, + 0x02, 0x0d, 0xdf, 0x80, 0x80, + + 0x01, 0x24, 0xfd, 0x9b, 0x01, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x34, 0x00, 0x0d, 0x00, 0x00, 0x34, 0x00, 0x03, 0x40, 0x03, 0x40, 0x03, 0x40, 0x34, + 0x03, 0x40, 0x34, 0x0d, 0x03, 0x43, 0x40, 0xd3, 0x43, 0x4d, 0x37, 0x77, 0x77, 0x70, 0x70, + 0x70, 0x00, 0x00, 0x00, 0x34, 0x0d, 0x0d, 0x37, 0x4d, 0xdd, 0xdd, 0xc7, 0x07, 0x00, 0x0d, + 0x0d, 0x37, 0x70, 0x70, 0x03, 0x4d, 0xc7, 0x00, 0xd3, 0x1c, 0x0d, 0xc0, 0x37, 0x03, 0x70, + 0x37, 0x0c, 0x03, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x48, 0x00, 0x00, 0x07, + 0x00, 0xd0, 0x1c, 0x00, 0x0d, 0x00, 0x00, 0xd3, 0x77, 0x43, 0x40, 0x34, 0x37, 0x4d, 0x00, + 0x34, 0x03, 0x4d, 0x00, 0xd3, 0x43, 0x77, 0x77, 0x4d, 0x37, 0x71, 0xdd, 0xdc, 0x70, 0x34, + 0x71, 0xc7, 0x01, 0xc7, 0x07, 0x40, 0x00, 0xc7, 0x01, 0xd3, 0x40, 0xc0, 0x0c, 0x44, 0xdc, + 0x4d, 0xc7, 0x70, 0x1d, 0xc4, 0x00, 0x3d, 0x10, 0x6f, 0xee, 0x02, 0xf4, 0x80, 0x8e, 0xfe, + 0x20, 0x20, 0xdf, 0x80, 0x8d, 0x0b, 0xf8, 0x80, 0x90, + + 0x01, 0x24, 0xfd, 0x9b, 0x01, 0x01, 0x00, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x40, 0x34, 0x00, 0xd0, 0x03, 0x40, 0x0d, 0x00, 0xd0, 0x34, 0x03, 0x40, 0xd0, 0xd0, + 0xd0, 0x34, 0xd0, 0xd0, 0xd3, 0x43, 0x4d, 0x34, 0xd3, 0x77, 0x4d, 0xc7, 0x71, 0xc7, 0x01, + 0xc0, 0x00, 0x00, 0x03, 0x43, 0x43, 0x4d, 0xd3, 0x77, 0x77, 0x1c, 0x70, 0x70, 0x00, 0xd0, + 0xd3, 0x77, 0x1c, 0x00, 0x00, 0xdd, 0xc7, 0x00, 0xd3, 0x1c, 0x37, 0x70, 0x0d, 0xc0, 0x37, + 0x00, 0x30, 0x0c, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x1c, 0x03, 0x43, 0x40, 0x00, 0x01, 0xc0, 0x00, 0xd0, 0xdd, 0xd0, 0x00, 0x00, + 0x03, 0x4d, 0x00, 0x00, 0x00, 0xd0, 0xd0, 0x0d, 0x37, 0x4d, 0xdd, 0xdd, 0xc0, 0x70, 0x1c, + 0x70, 0x07, 0x43, 0x4c, 0x1d, 0xdd, 0xc7, 0x1d, 0xc0, 0x04, 0x31, 0xc7, 0x10, 0xdc, 0x43, + 0x7d, 0x07, 0x4c, 0x74, 0x31, 0xc0, 0x1b, 0xf9, 0x70, 0x07, 0x17, 0xbf, 0x81, 0x4f, 0x40, + 0x13, 0x6f, 0xe8, 0x0b, 0xe0, 0x40, 0x00, 0x00, 0x00, + + 0x01, 0x24, 0xfd, 0x97, 0x01, 0x02, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xbf, 0x90, 0xd0, 0xd0, 0x34, 0x03, 0x40, 0xd0, 0x34, 0x0d, 0x03, 0x43, 0x43, 0x43, 0x43, + 0x43, 0x4d, 0x34, 0x34, 0xd3, 0x4d, 0x34, 0xdd, 0x37, 0x4d, 0xdd, 0xdd, 0xdc, 0x71, 0xc1, + 0xc0, 0x07, 0x00, 0x34, 0x03, 0x43, 0x4d, 0x37, 0x4d, 0xdd, 0xc7, 0x1c, 0x70, 0x00, 0x00, + 0xd3, 0x4d, 0xc7, 0x1c, 0x00, 0x34, 0x37, 0x07, 0x03, 0x4d, 0xc0, 0x0d, 0xdc, 0x0d, 0xdc, + 0x34, 0xdc, 0x37, 0x70, 0x80, 0x80, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x00, 0x70, 0x1c, 0x34, 0x00, 0x00, 0x00, 0x03, 0x40, 0x00, 0x03, 0x4c, 0x4d, 0xdd, 0x34, + 0x0d, 0x00, 0xd3, 0x40, 0x03, 0x43, 0x40, 0x0d, 0xdd, 0x34, 0x34, 0xdd, 0xd3, 0x4c, 0x70, + 0x1c, 0x77, 0x1c, 0x00, 0x4d, 0x03, 0x70, 0x1c, 0x4d, 0xdd, 0xdc, 0x00, 0x1d, 0xc0, 0x71, + 0x37, 0x00, 0x07, 0x40, 0xdd, 0xdc, 0xd7, 0x5c, 0xdc, 0xd4, 0xbf, 0x90, 0x38, 0x09, 0xfc, + 0x41, 0xd7, 0x00, 0x00, 0x00, + + 0x01, 0x24, 0xfd, 0x97, 0x01, 0x00, 0x01, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xc0, 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x34, 0x00, 0x34, 0x0d, 0x00, 0x34, 0xd3, 0x4d, + 0xdd, 0xdc, 0x71, 0xc0, 0x07, 0x0d, 0x00, 0x34, 0xd3, 0x77, 0x77, 0x1c, 0x70, 0x1c, 0x00, + 0x34, 0xd3, 0x70, 0x70, 0x0d, 0x37, 0x70, 0x0d, 0x31, 0xc3, 0x71, 0xf7, 0x73, 0x70, 0xdc, + 0x0d, 0xbf, 0x9d, 0xbf, 0x93, 0x20, 0x20, 0x00, 0x00, 0x43, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x00, 0xd0, 0x0e, 0x02, 0xc0, 0x34, 0x34, 0xd0, 0x00, 0x0d, 0x34, 0xd0, + 0x34, 0x00, 0x34, 0x0d, 0x03, 0x43, 0x43, 0x4d, 0xdd, 0xdd, 0xdd, 0xd0, 0x00, 0x0d, 0x0d, + 0xdc, 0x77, 0x74, 0xc0, 0x70, 0x01, 0xc7, 0x1d, 0xdc, 0x70, 0x1c, 0x71, 0xdd, 0x31, 0xc0, + 0x71, 0xc1, 0xc7, 0x77, 0x00, 0x01, 0x00, 0xc1, 0xdc, 0x1c, 0xd4, 0x31, 0x37, 0x07, 0x35, + 0x5b, 0xf1, 0x40, 0x00, 0x00, + + 0x01, 0x24, 0xfd, 0x9b, 0x01, 0x01, 0x01, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xf4, 0x03, 0x40, 0x00, 0x0d, 0x00, 0x00, 0xd0, 0x00, 0xd0, 0x03, 0x40, 0x34, 0x0d, 0x03, + 0x43, 0x43, 0x43, 0x43, 0x4d, 0x0d, 0x34, 0xd3, 0x4d, 0xd3, 0x77, 0x77, 0x77, 0x71, 0xc7, + 0x1c, 0x07, 0x00, 0x00, 0x03, 0x43, 0x43, 0x74, 0xdd, 0xc7, 0x71, 0xc0, 0x70, 0x03, 0x43, + 0x4d, 0xdd, 0xc1, 0xc0, 0xd0, 0xdd, 0xc0, 0x00, 0xdd, 0xc0, 0x37, 0x70, 0xdd, 0xc3, 0x77, + 0x03, 0x70, 0xdc, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x39, 0x00, 0x00, 0x01, + 0xc3, 0x40, 0x00, 0xd3, 0x40, 0x01, 0xc0, 0x00, 0x34, 0x0d, 0x03, 0x40, 0x0d, 0xdc, 0x4d, + 0x34, 0x34, 0x00, 0x00, 0x0d, 0x70, 0x34, 0x37, 0x1d, 0xd0, 0x00, 0xdd, 0xdc, 0x74, 0xd3, + 0x4d, 0xdc, 0x1f, 0x40, 0x10, 0xdc, 0x74, 0x0c, 0x00, 0x4d, 0x37, 0x13, 0x71, 0xd3, 0x00, + 0x04, 0x30, 0xd1, 0x03, 0xd0, 0x70, 0x4c, 0x03, 0x44, 0xbf, 0x92, 0x02, 0x0c, 0xf8, 0x08, + 0xc7, 0xe0, 0x23, 0x20, 0x2f, 0x70, 0x00, 0x00, 0x00, + + 0x01, 0x24, 0xfd, 0x93, 0x01, 0x02, 0x01, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xf4, 0x34, 0x03, 0x40, 0x03, 0x40, 0x34, 0x03, 0x40, 0xd0, 0x34, 0x34, 0x34, 0x34, 0xd0, + 0xd3, 0x4d, 0x37, 0x4d, 0x37, 0x4d, 0xdd, 0x37, 0x77, 0x77, 0x77, 0x1d, 0xc7, 0x1c, 0x70, + 0x70, 0x70, 0x00, 0x00, 0x00, 0x03, 0x43, 0x4d, 0xdd, 0xdc, 0x71, 0xc0, 0x1f, 0x40, 0x34, + 0xdd, 0xc7, 0x1c, 0x00, 0xd3, 0x77, 0x1c, 0x0d, 0x37, 0x70, 0xd3, 0x70, 0x0d, 0xdc, 0x0d, + 0xdc, 0xd3, 0x00, 0x50, 0x00, 0x32, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x1c, + 0x00, 0x34, 0x0d, 0x0d, 0x37, 0x4d, 0x1c, 0x00, 0x00, 0x0d, 0x00, 0x34, 0x03, 0x43, 0x71, + 0xc7, 0x1d, 0x34, 0x0d, 0x0d, 0x00, 0xd3, 0x4d, 0x03, 0x40, 0xc7, 0x01, 0xd3, 0x43, 0x4d, + 0xdc, 0x74, 0xdc, 0x40, 0x31, 0xdd, 0xc7, 0x77, 0x77, 0x07, 0x74, 0x30, 0xe0, 0x2d, 0x03, + 0x31, 0x04, 0xdc, 0x74, 0xf1, 0x4c, 0x34, 0x70, 0x5f, 0x06, 0xfe, 0x20, 0x20, 0xc0, 0x40, + 0x00, + + 0x01, 0x24, 0xfd, 0x9b, 0x02, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xbf, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x00, + 0x00, 0x00, 0x00, 0xd0, 0x00, 0x03, 0x40, 0x0d, 0x03, 0x4d, 0x34, 0xdd, 0xdd, 0xc7, 0x07, + 0x01, 0xc0, 0x00, 0x00, 0x00, 0x34, 0x03, 0x43, 0x4d, 0x34, 0xdd, 0xdd, 0xdc, 0x71, 0xc0, + 0x00, 0x03, 0x4d, 0xdc, 0x70, 0x00, 0x0d, 0xdc, 0x00, 0x34, 0xc0, 0x0d, 0xc0, 0x31, 0xbf, + 0x93, 0x00, 0xc0, 0xc3, 0x73, 0x60, 0x20, 0x00, 0x00, 0x56, 0x00, 0x56, 0x00, 0x00, 0x07, + 0x00, 0x34, 0xd0, 0x0d, 0x00, 0xd3, 0x43, 0x40, 0x00, 0x34, 0xd0, 0xd0, 0x0d, 0x00, 0x00, + 0xdd, 0xd3, 0x74, 0xdd, 0x37, 0x71, 0xc4, 0xdc, 0x71, 0xc0, 0x07, 0x01, 0xbf, 0x90, 0x00, + 0x00, 0x1c, 0x1c, 0x71, 0xc0, 0x00, 0x01, 0xc1, 0x37, 0x71, 0xdd, 0xc4, 0x0c, 0x77, 0x10, + 0x37, 0x80, 0xb3, 0x1c, 0x43, 0x74, 0x34, 0x0d, 0x13, 0xdd, 0x7c, 0x01, 0x0b, 0xfa, 0x02, + 0x37, 0x4b, 0xf9, 0x4d, 0xbf, 0x86, 0x02, 0x00, 0x00, + + 0x01, 0x24, 0xfd, 0x9f, 0x02, 0x01, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xbf, 0x90, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x34, 0x00, 0x03, + 0x40, 0x00, 0xd0, 0x03, 0x40, 0x34, 0x0d, 0x03, 0x4d, 0x34, 0xdd, 0xdd, 0xdc, 0x71, 0xc0, + 0x07, 0x00, 0x00, 0x34, 0x00, 0xd0, 0x34, 0xd3, 0x4d, 0x37, 0x77, 0x71, 0xc7, 0x07, 0x00, + 0x00, 0xd0, 0xdd, 0xc7, 0x07, 0x0d, 0x0d, 0xdc, 0x00, 0x37, 0x70, 0x0d, 0xc0, 0x0c, 0x00, + 0xdc, 0x37, 0x37, 0x7d, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x00, 0x03, 0x43, 0x4d, 0x00, 0xd0, 0x00, 0x00, 0x03, 0x43, 0x74, 0x0d, 0x0d, + 0xdd, 0xdd, 0x00, 0xd0, 0x34, 0x34, 0xdd, 0xdd, 0x37, 0x00, 0x1c, 0x74, 0xdc, 0xd0, 0x77, + 0x1c, 0x00, 0x70, 0x00, 0x1c, 0x77, 0x40, 0x37, 0x00, 0x01, 0x1c, 0x0c, 0x1c, 0x04, 0xc7, + 0x07, 0x71, 0x13, 0x0d, 0x03, 0x70, 0x20, 0x2c, 0xbf, 0x9e, 0x02, 0x3d, 0x5e, 0xfe, 0x54, + 0xbf, 0x80, 0x48, 0x0a, 0xfe, 0xbf, 0xb8, 0x0f, 0x1f, 0x80, 0xd0, 0x00, 0x00, + + 0x01, 0x24, 0xfd, 0x9b, 0x02, 0x02, 0x00, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xbf, 0x90, 0x00, 0xd0, 0x00, 0x00, 0xd0, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0xd0, + 0x03, 0x40, 0xd0, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x37, 0x4d, 0xdd, 0xdd, 0xc7, 0x07, 0x00, + 0x70, 0x00, 0x34, 0x00, 0xd0, 0x34, 0xd0, 0xdd, 0x37, 0x77, 0x77, 0x1d, 0xc1, 0xc0, 0x00, + 0x0d, 0x0d, 0xdd, 0xdc, 0x00, 0x00, 0xd3, 0x1c, 0x00, 0x37, 0x1c, 0x34, 0xc0, 0x0c, 0x70, + 0x37, 0x03, 0x70, 0xdd, 0x20, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x37, 0x4d, 0x0d, 0x37, 0x40, 0x00, 0x00, 0x03, 0x40, 0x0d, 0x00, + 0x0d, 0x31, 0xdd, 0x0d, 0x03, 0x43, 0x4d, 0x37, 0x07, 0x04, 0xc7, 0x07, 0x1c, 0x70, 0x70, + 0x01, 0xd3, 0x70, 0x1c, 0x70, 0x73, 0x41, 0xd0, 0xd0, 0x0c, 0x70, 0x04, 0x0c, 0x1c, 0x47, + 0xc0, 0x04, 0x03, 0x04, 0x30, 0x1d, 0x0c, 0x40, 0x1c, 0x7c, 0x38, 0x08, 0x2f, 0xe8, 0x09, + 0xbf, 0x8d, 0x80, 0xbb, 0xfa, 0x02, 0xc0, 0x20, 0x20, + + 0x01, 0x24, 0xfd, 0x97, 0x02, 0x00, 0x01, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xc0, 0x07, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x40, 0x03, 0x40, 0xd0, 0xd3, 0x4d, 0xdd, 0xc7, + 0x70, 0x1c, 0x00, 0x00, 0x03, 0x40, 0xd0, 0xd3, 0x4d, 0xdd, 0xdd, 0xc7, 0x1c, 0x1c, 0x00, + 0x34, 0x37, 0x77, 0x00, 0x00, 0x37, 0x70, 0x00, 0xdc, 0x73, 0x4c, 0x00, 0xc0, 0x30, 0x0c, + 0x0c, 0x0c, 0x0c, 0x50, 0x00, 0x51, 0x00, 0x51, 0x00, 0x00, 0x00, 0x1c, 0x34, 0x34, 0x0d, + 0x00, 0xd0, 0x0d, 0x03, 0x40, 0x00, 0x34, 0xdd, 0xdd, 0x34, 0x34, 0xd3, 0x43, 0x4d, 0x37, + 0x13, 0x40, 0x00, 0x03, 0x43, 0x4d, 0xdd, 0xc0, 0x6f, 0xe4, 0xd0, 0x00, 0x1d, 0xdc, 0x1c, + 0x1c, 0x01, 0xd3, 0x00, 0x1c, 0x1c, 0x71, 0xdd, 0xd3, 0x40, 0xc7, 0x04, 0xc3, 0x50, 0x00, + 0x00, 0xc1, 0x03, 0x00, 0x01, 0x80, 0xaf, 0xec, 0x5b, 0xfb, 0x80, 0x9f, 0x04, 0x31, 0x1f, + 0x46, 0xfe, 0x40, 0x00, 0x00, + + 0x01, 0x24, 0xfd, 0x9b, 0x02, 0x01, 0x01, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xc0, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, + 0x00, 0x0d, 0x00, 0x00, 0xd0, 0x03, 0x40, 0xd0, 0x34, 0xd3, 0x4d, 0x37, 0x77, 0x1c, 0x70, + 0x70, 0x00, 0x00, 0x0d, 0x03, 0x43, 0x4d, 0x34, 0xdd, 0xdd, 0xc7, 0x1c, 0x70, 0x07, 0xd0, + 0x0d, 0x37, 0x1c, 0x1c, 0x34, 0x37, 0x70, 0x00, 0xdd, 0xc0, 0xdd, 0xc0, 0xc7, 0xdd, 0xc0, + 0xc0, 0x37, 0x30, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x40, 0x00, 0x00, 0x03, 0x43, 0x4d, 0xd3, 0x40, 0x00, 0xd0, 0x03, 0x43, 0x43, + 0x77, 0x00, 0x70, 0x77, 0x40, 0x00, 0xd3, 0x77, 0x70, 0x07, 0x4d, 0x0d, 0xdc, 0x77, 0x1c, + 0x1c, 0x1c, 0x07, 0x77, 0x70, 0x07, 0x1d, 0xdd, 0xdc, 0x43, 0x40, 0xdd, 0xc1, 0xd0, 0x0c, + 0x1c, 0x1d, 0xd3, 0x04, 0x30, 0x1d, 0xc7, 0x80, 0x8c, 0x30, 0xd2, 0x02, 0xf1, 0x34, 0x0c, + 0x80, 0xef, 0xed, 0x6f, 0xd7, 0x50, 0x00, 0x00, 0x00, + + 0x01, 0x24, 0xfd, 0x9f, 0x02, 0x02, 0x01, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x34, 0x00, 0x0d, 0x00, 0x0d, + 0x00, 0xd0, 0x0d, 0x0d, 0x03, 0x43, 0x4d, 0x34, 0xd3, 0x74, 0xdd, 0xdd, 0xdc, 0x71, 0xc1, + 0xc0, 0x00, 0x00, 0x00, 0xd0, 0xd0, 0xdd, 0x37, 0x77, 0x1d, 0xc7, 0x07, 0x00, 0x00, 0x00, + 0xd3, 0x77, 0x1c, 0x00, 0x0d, 0x37, 0x70, 0x03, 0x4c, 0x70, 0xdd, 0xc0, 0xdc, 0x7d, 0x30, + 0x0d, 0xc0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x34, 0x00, 0xd3, 0x4d, 0x34, 0x34, 0x0d, 0x00, 0xd0, 0x34, 0xd3, 0x40, 0x34, + 0x31, 0xd3, 0x40, 0x37, 0x71, 0xc7, 0x74, 0x00, 0x00, 0x0d, 0x34, 0xd3, 0x77, 0x77, 0x74, + 0x37, 0x07, 0x1c, 0x07, 0x1d, 0xc0, 0x13, 0x4d, 0x34, 0xd3, 0x40, 0xc6, 0xfe, 0x47, 0x71, + 0xd3, 0x70, 0x34, 0x41, 0xf0, 0x1e, 0x02, 0xf6, 0xfe, 0x44, 0x0d, 0xc1, 0xd6, 0xfe, 0x1b, + 0xf9, 0x07, 0x4c, 0xe0, 0x23, 0x78, 0x0a, 0xfd, 0x20, 0x30, 0x00, 0x00, 0x00, + + 0x01, 0x05, 0xff, 0x65, 0xd4, 0x33, 0x19, 0x00, 0x60, 0x00, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x12, 0x00, 0x1c, + 0x00, 0x2d, 0x00, 0x48, 0x00, 0x72, 0x00, 0xb5, 0x00, 0x1f, 0x01, 0x00, 0x00, 0x0e, 0x00, + 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x17, + 0x00, 0x24, 0x00, 0x39, 0x00, 0x5a, 0x00, 0x90, 0x00, 0xe4, 0x00, 0x6a, 0x01, 0x00, 0x00, + 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, + 0x00, 0x17, 0x00, 0x24, 0x00, 0x39, 0x00, 0x5a, 0x00, 0x90, 0x00, 0xe4, 0x00, 0x6a, 0x01, + + + 0x01, 0x76, 0xfd, 0x31, 0x01, 0x21, 0x54, 0x00, 0x00, 0x61, 0x57, 0x00, 0x00, 0x14, 0x05, + 0x0a, 0x05, 0x00, 0x07, 0x06, 0x0a, 0x04, 0x05, 0x08, 0x09, 0x0b, 0x0c, 0x0d, 0x0e, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, + + 0x01, 0x80, 0xfd, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, + + 0x01, 0x80, 0xfd, 0x06, 0x3c, 0xf0, 0x5f, 0x00, 0x00, 0x00, + + // + // + 0x01, 0xd1, 0xff, 0x02, 0x00, 0x00, + + 0x01, 0x1c, 0xfd, 0x14, 0xff, 0x88, 0x13, 0x00, 0x00, 0xd0, 0x07, 0x00, 0x00, 0xff, 0xff, + 0x04, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x00, 0x00, 0x00, + + 0x01, 0x38, 0xfe, 0x00, + + // + // ################################################################# + // ## START of Panasonic Adds-On + // ################################################################# + // + // ## Enable fast clock XTAL support + 0x01, 0x1c, 0xfd, 0x14, 0x01, 0x88, 0x13, 0x00, 0x00, 0xd0, 0x07, 0x00, 0x00, 0xff, 0xff, + 0x04, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x00, 0x00, 0x00, + + // + // ## Enable LPS + 0x01, 0x2e, 0xfd, 0x0d, 0x01, 0x58, 0x02, 0x06, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + + // + // ## Enable eHCILL + 0x01, 0x2b, 0xfd, 0x05, 0x10, 0x00, 0x50, 0x00, 0x96, + + // + 0x01, 0x0c, 0xfd, 0x09, 0x01, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x64, 0x00, + + // + // ################################################################# + // ## END of Panasonic Adds-On + // ################################################################# +}; + +// with eHCILL +const uint32_t cc256x_init_script_size = 41239; + +// without eHCILL +//const uint32_t cc256x_init_script_size = 41217; + diff --git a/metawatch/bluetooth_init_cc2564_2.8.bts b/metawatch/bluetooth_init_cc2564_2.8.bts new file mode 120000 index 0000000..eaabc8d --- /dev/null +++ b/metawatch/bluetooth_init_cc2564_2.8.bts @@ -0,0 +1 @@ +CC2564_BT_BLE_SP_BTS/bluetooth_init_cc2564_2.8.bts \ No newline at end of file diff --git a/metawatch/bluetooth_init_cc2564_2.8.c b/metawatch/bluetooth_init_cc2564_2.8.c new file mode 100644 index 0000000..ad90ff3 --- /dev/null +++ b/metawatch/bluetooth_init_cc2564_2.8.c @@ -0,0 +1,1489 @@ +// init script created from bluetooth_init_cc2564_2.8.bts +#include + +const char *cc256x_version = "CC2564 v2.8"; + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((section (".fartext"))) +#endif +const uint8_t cc256x_init_script[] = { + + // #-------------------------------------------------------------------------------- + // # Description : Orca 5500 L ROM Initialization Script + // # + // # Compatibility: Orca, 6.0.15 ROM + // # + // # Last Updated: 20-Dec-2012 14:33:32.90 + // # + // # Version : TI_P6_15.77 + // # + // # + // # + // # + // # Notes : Use this script on Orca 5500 L, 6.0.15 ROM device only (FW v6.0.15) + // #-------------------------------------------------------------------------------- + // + // ################################################################# + // ## START of CC256x Add-On + // ################################################################# + // + // ## Change UART baudrate + // + // ################################################################# + // ## END of CC256x Add-On + // ################################################################# + // + // + 0x01, 0x37, 0xfe, 0x02, 0x06, 0x0f, + + // + // + 0x01, 0x05, 0xff, 0xff, 0xa0, 0x62, 0x08, 0x00, 0xfa, 0x06, 0x0f, 0x3d, 0x4d, 0xfb, 0x01, + 0x00, 0x1f, 0x00, 0x00, 0x05, 0x00, 0x05, 0xc0, 0x03, 0xc0, 0x1e, 0x38, 0x05, 0x00, 0x05, + 0xc0, 0x01, 0x40, 0x1f, 0x30, 0x05, 0x00, 0x04, 0xc0, 0x03, 0xc0, 0x1e, 0x38, 0x3d, 0x01, + 0x04, 0xc0, 0x03, 0xc0, 0x1e, 0x38, 0x76, 0x02, 0x04, 0xc0, 0x03, 0xc0, 0x1e, 0x38, 0xae, + 0x03, 0x04, 0xc0, 0x03, 0xc0, 0x1e, 0x38, 0xae, 0x0b, 0x01, 0x00, 0x34, 0x30, 0x41, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x12, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x31, 0x9d, + 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xb5, 0x85, 0xb0, + 0x06, 0x06, 0x36, 0x0e, 0x6c, 0x46, 0x26, 0x70, 0x03, 0x21, 0x08, 0x1a, 0x60, 0x70, 0x02, + 0xa8, 0x04, 0xa9, 0x03, 0xaa, 0x01, 0xab, 0x01, 0x25, 0xae, 0x46, 0x0d, 0x4f, 0xfe, 0x44, + 0x38, 0x47, 0x0d, 0x48, 0x2f, 0x30, 0xa1, 0x89, 0x81, 0x42, 0x03, 0xdb, 0xa0, 0x89, 0xff, + 0x38, 0x91, 0x38, 0x01, 0xe0, 0xa0, 0x89, 0xc8, 0x30, 0xa0, 0x80, 0x6b, 0x46, 0x1e, 0x70, + 0x02, 0x98, 0x99, 0x88, 0x04, 0x9a, 0x9b, 0x89, 0xae, 0x46, 0x03, 0x4c, 0xfe, 0x44, 0x20, + 0x47, 0x05, 0xb0, 0xf0, 0xbd, 0xa5, 0xc4, 0x03, 0x00, 0x51, 0xc2, 0x03, 0x00, 0x43, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x05, 0xff, 0xff, 0x9a, 0x63, 0x08, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe2, 0x48, 0x00, 0x78, 0x02, 0x28, 0x0f, 0xd1, 0xe1, 0x48, 0x41, 0x88, 0x09, 0x09, 0x0b, + 0xd2, 0x41, 0x88, 0x49, 0x08, 0x08, 0xd2, 0x42, 0x88, 0x10, 0x21, 0x11, 0x43, 0x41, 0x80, + 0x02, 0x88, 0x01, 0x21, 0x89, 0x03, 0x11, 0x43, 0x01, 0x80, 0xf7, 0x46, 0xd8, 0x48, 0x00, + 0x78, 0x02, 0x28, 0x0f, 0xd1, 0xd7, 0x48, 0x41, 0x88, 0x09, 0x09, 0x0b, 0xd2, 0x41, 0x88, + 0x49, 0x08, 0x08, 0xd2, 0x10, 0x22, 0x41, 0x88, 0x91, 0x43, 0x41, 0x80, 0x01, 0x22, 0x92, + 0x03, 0x01, 0x88, 0x91, 0x43, 0x01, 0x80, 0xf7, 0x46, 0x10, 0xb5, 0x03, 0x7e, 0xe2, 0x49, + 0xe3, 0x4a, 0xe4, 0x48, 0x00, 0x2b, 0x09, 0xd1, 0x94, 0x38, 0x82, 0x18, 0x04, 0x20, 0x00, + 0x23, 0x01, 0x24, 0xa6, 0x46, 0xdf, 0x4c, 0xfe, 0x44, 0x20, 0x47, 0x10, 0xbd, 0x82, 0x18, + 0x04, 0x20, 0x00, 0x23, 0x01, 0x24, 0xa6, 0x46, 0xda, 0x4c, 0xfe, 0x44, 0x20, 0x47, 0x10, + 0xbd, 0xf0, 0xb5, 0x04, 0x69, 0xc7, 0x26, 0x30, 0x5d, 0x04, 0x28, 0x24, 0xd1, 0xc8, 0x25, + 0x28, 0x5d, 0x18, 0x28, 0x03, 0xd1, 0x6a, 0x20, 0x00, 0x5d, 0x04, 0x28, 0x16, 0xd0, 0x28, + 0x5d, 0x19, 0x28, 0x19, 0xd1, 0xce, 0x20, 0x00, 0x5d, 0x16, 0x28, 0x15, 0xd1, 0xb5, 0x27, + 0x38, 0x5d, 0x01, 0x21, + + 0x01, 0x05, 0xff, 0xff, 0x94, 0x64, 0x08, 0x00, 0xfa, 0x8e, 0x46, 0xce, 0x4a, 0xfe, 0x44, + 0x10, 0x47, 0x00, 0x22, 0x38, 0x5d, 0x60, 0x21, 0x41, 0x43, 0xcb, 0x48, 0x42, 0x54, 0x32, + 0x55, 0x2a, 0x55, 0xf0, 0xbd, 0x20, 0x1c, 0x01, 0x21, 0x8e, 0x46, 0xc8, 0x49, 0xfe, 0x44, + 0x08, 0x47, 0xf0, 0xbd, 0xf0, 0xb5, 0x86, 0xb0, 0x07, 0x1c, 0xbe, 0x69, 0xb9, 0x8a, 0x03, + 0x91, 0x00, 0x20, 0x6a, 0x46, 0x50, 0x71, 0x6c, 0x46, 0x20, 0x71, 0xe8, 0x48, 0x44, 0x38, + 0x08, 0x1a, 0x01, 0x28, 0x0b, 0xd9, 0x05, 0x38, 0x09, 0xd0, 0x68, 0x38, 0x01, 0x28, 0x06, + 0xd9, 0x04, 0x38, 0x04, 0xd0, 0x2f, 0x38, 0x02, 0xd0, 0x24, 0x38, 0x02, 0x28, 0x0b, 0xd8, + 0x00, 0x97, 0x03, 0x98, 0x31, 0x1c, 0x52, 0x1d, 0x01, 0xab, 0x01, 0x25, 0xae, 0x46, 0xe5, + 0x4d, 0xfe, 0x44, 0x28, 0x47, 0x00, 0x28, 0x5d, 0xd1, 0x03, 0x98, 0xd9, 0x49, 0x41, 0x1a, + 0xe2, 0x48, 0x3a, 0xd0, 0x59, 0x39, 0x46, 0xd0, 0x1c, 0x39, 0x2d, 0xd0, 0x2c, 0x39, 0x52, + 0xd1, 0x30, 0x1c, 0x00, 0x21, 0x01, 0x25, 0xae, 0x46, 0xef, 0x4a, 0xfe, 0x44, 0x10, 0x47, + 0x04, 0x90, 0xae, 0x46, 0xed, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x00, 0x28, 0x04, 0xd1, 0x02, + 0x20, 0x6a, 0x46, 0x10, 0x71, 0x7f, 0x20, 0x02, 0xe0, 0x00, 0x78, 0xe9, 0x49, 0x08, 0x56, + 0x05, 0x90, 0x02, 0xa8, 0x04, 0x99, 0xae, 0x46, 0xe7, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x05, + 0x99, 0x01, 0x70, 0x03, 0x20, 0x6a, 0x46, 0x10, 0x70, 0x30, 0x1c, 0xc2, 0x49, 0xa1, 0x31, + 0x12, 0x79, 0x02, 0xab, 0xae, 0x46, 0xe1, 0x4d, 0xfe, 0x44, 0x28, 0x47, 0x26, 0xe0, 0x0e, + 0x21, 0x01, 0x22, 0x96, 0x46, 0xde, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x01, 0x28, 0x08, 0xd0, + 0x1d, 0xe0, 0x0d, 0x21, + + 0x01, 0x05, 0xff, 0xff, 0x8e, 0x65, 0x08, 0x00, 0xfa, 0x01, 0x22, 0x96, 0x46, 0xda, 0x4a, + 0xfe, 0x44, 0x10, 0x47, 0x01, 0x28, 0x15, 0xd1, 0x0c, 0x21, 0x68, 0x46, 0x01, 0x71, 0x01, + 0x21, 0x41, 0x71, 0x13, 0xe0, 0xec, 0x48, 0xf1, 0x7a, 0x01, 0x70, 0x31, 0x7b, 0x41, 0x70, + 0x71, 0x7b, 0x81, 0x70, 0xb1, 0x7b, 0xc1, 0x70, 0x01, 0x20, 0x6a, 0x46, 0x50, 0x71, 0xe7, + 0x48, 0x9e, 0x30, 0x38, 0x62, 0x03, 0xe0, 0x6a, 0x46, 0x50, 0x79, 0x01, 0x28, 0x0b, 0xd1, + 0x30, 0x1c, 0x03, 0x99, 0x6a, 0x46, 0x12, 0x79, 0x01, 0x23, 0x9e, 0x46, 0xe1, 0x4b, 0xfe, + 0x44, 0x18, 0x47, 0xdf, 0x48, 0x9e, 0x30, 0x38, 0x62, 0x06, 0xb0, 0xf0, 0xbd, 0xf8, 0xb5, + 0x06, 0x1c, 0xb5, 0x69, 0xb2, 0x8a, 0xdc, 0x48, 0x01, 0x1c, 0x11, 0x39, 0x52, 0x1a, 0x65, + 0xd0, 0x12, 0x1a, 0xda, 0x49, 0x22, 0xd0, 0x07, 0x3a, 0x00, 0xd0, 0x8d, 0xe0, 0x0e, 0x20, + 0x40, 0x19, 0x06, 0x22, 0xaa, 0x80, 0x08, 0x22, 0x6a, 0x80, 0x09, 0x78, 0x02, 0x29, 0x0c, + 0xd1, 0xd4, 0x49, 0x01, 0x24, 0xa6, 0x46, 0xd4, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x21, + 0xa6, 0x46, 0xd1, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x22, 0x00, 0xe0, 0x0c, 0x22, 0x28, + 0x1c, 0x87, 0x21, 0x89, 0x00, 0x01, 0x23, 0x9e, 0x46, 0xcd, 0x4b, 0xfe, 0x44, 0x18, 0x47, + 0x6a, 0xe0, 0x08, 0x78, 0x02, 0x28, 0x33, 0xd1, 0x0b, 0x20, 0x40, 0x19, 0x01, 0x24, 0xa6, + 0x46, 0xc8, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x00, 0x90, 0xa6, 0x46, 0xc7, 0x49, 0xfe, 0x44, + 0x08, 0x47, 0x00, 0x06, 0x00, 0x0e, 0xa6, 0x46, 0xc5, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x07, + 0x1c, 0x0e, 0x20, 0x40, 0x19, 0x00, 0x99, 0xa6, 0x46, 0x9d, 0x4a, 0xfe, 0x44, 0x10, 0x47, + 0x06, 0x21, 0xa9, 0x80, + + 0x01, 0x05, 0xff, 0xff, 0x88, 0x66, 0x08, 0x00, 0xfa, 0x07, 0x21, 0x69, 0x80, 0x00, 0x2f, + 0x0b, 0xd0, 0x00, 0x99, 0xc9, 0x0a, 0x08, 0xd3, 0x3a, 0x21, 0xc9, 0x19, 0x05, 0x22, 0xa6, + 0x46, 0xba, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x00, 0x22, 0x08, 0xe0, 0x00, 0x21, 0x05, 0x22, + 0xa6, 0x46, 0xb7, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x02, 0x22, 0x00, 0xe0, 0x0c, 0x22, 0x28, + 0x1c, 0xb4, 0x49, 0x01, 0x23, 0x9e, 0x46, 0xb4, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x2a, 0xe0, + 0x2f, 0x1c, 0x06, 0x20, 0xa8, 0x80, 0x0e, 0x20, 0x40, 0x19, 0x40, 0x21, 0x01, 0x24, 0xa6, + 0x46, 0xaf, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xae, 0x48, 0x01, 0x1c, 0xcf, 0x22, 0x0a, 0x72, + 0x08, 0x31, 0x61, 0x22, 0x0a, 0x74, 0x19, 0x21, 0x02, 0x78, 0xba, 0x73, 0x01, 0x37, 0x01, + 0x30, 0x01, 0x39, 0xf9, 0xd1, 0x04, 0x20, 0xec, 0x49, 0x0a, 0x78, 0xba, 0x73, 0x01, 0x37, + 0x01, 0x31, 0x01, 0x38, 0xf9, 0xd1, 0x40, 0x20, 0x68, 0x80, 0x28, 0x1c, 0x81, 0x21, 0x49, + 0x00, 0x00, 0x22, 0xa6, 0x46, 0x97, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xe2, 0x48, 0xfa, 0x30, + 0x30, 0x62, 0xf8, 0xbd, 0x30, 0xb5, 0x05, 0x1c, 0xe1, 0x48, 0x00, 0x78, 0x00, 0x28, 0x17, + 0xd1, 0x01, 0x24, 0xa6, 0x46, 0xdf, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x00, 0x28, 0x0b, 0xd1, + 0xa6, 0x46, 0xdd, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x01, 0x28, 0x05, 0xd0, 0xa6, 0x46, 0xdb, + 0x48, 0xfe, 0x44, 0x00, 0x47, 0x01, 0x28, 0x04, 0xd1, 0x00, 0x20, 0x28, 0x60, 0xd9, 0x48, + 0x52, 0x30, 0x28, 0x62, 0x30, 0xbd, 0xc0, 0x46, 0xe8, 0x57, 0x08, 0x00, 0x60, 0x7a, 0x1a, + 0x00, 0x70, 0xb5, 0xd5, 0x49, 0x80, 0x8a, 0x88, 0x42, 0x20, 0xd1, 0xd4, 0x4b, 0xd4, 0x4a, + 0x00, 0x21, 0x40, 0x20, + + 0x01, 0x05, 0xff, 0xff, 0x82, 0x67, 0x08, 0x00, 0xfa, 0x80, 0x5c, 0x00, 0x28, 0x0e, 0xd0, + 0x18, 0x78, 0xd2, 0x4e, 0x8c, 0x00, 0xd2, 0x4d, 0x2c, 0x19, 0x25, 0x6a, 0xb5, 0x42, 0x0b, + 0xd8, 0x64, 0x68, 0xb4, 0x42, 0x08, 0xd8, 0x01, 0x24, 0x8c, 0x40, 0xa0, 0x43, 0x18, 0x70, + 0xa8, 0x32, 0x01, 0x31, 0x07, 0x29, 0xe8, 0xdb, 0x70, 0xbd, 0x0a, 0x06, 0x12, 0x0e, 0x01, + 0x21, 0x91, 0x40, 0x01, 0x43, 0x19, 0x70, 0x70, 0xbd, 0xc0, 0x46, 0xf1, 0x70, 0x08, 0x00, + 0xc9, 0x98, 0x00, 0x00, 0x33, 0x70, 0x08, 0x00, 0xd3, 0x03, 0x00, 0x00, 0xc9, 0xa2, 0x00, + 0x00, 0x76, 0xa0, 0x1b, 0x00, 0x6d, 0x97, 0x00, 0x00, 0x70, 0xb5, 0x06, 0x1c, 0xb5, 0x69, + 0x28, 0x88, 0x00, 0x0a, 0x01, 0x02, 0x35, 0x20, 0x00, 0x02, 0x08, 0x1a, 0x23, 0xd0, 0x09, + 0x21, 0x49, 0x02, 0x40, 0x1a, 0x3c, 0xd1, 0xe8, 0x48, 0x00, 0x68, 0x00, 0x28, 0x0e, 0xd1, + 0xe8, 0x88, 0x00, 0x04, 0xa9, 0x88, 0x08, 0x43, 0x01, 0x24, 0xa6, 0x46, 0x54, 0x49, 0xfe, + 0x44, 0x08, 0x47, 0x28, 0x1c, 0xa6, 0x46, 0xe2, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x24, 0xe0, + 0x7d, 0x20, 0xc0, 0x00, 0x01, 0x24, 0xa6, 0x46, 0xdf, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x28, + 0x1c, 0xa6, 0x46, 0xe9, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x17, 0xe0, 0xe8, 0x88, 0x11, 0x21, + 0x49, 0x01, 0x41, 0x43, 0xe7, 0x48, 0x40, 0x18, 0x3b, 0x21, 0x0a, 0x5c, 0x3c, 0x21, 0x09, + 0x5c, 0x11, 0x43, 0x05, 0xd1, 0x00, 0x21, 0x01, 0x22, 0x96, 0x46, 0xe3, 0x4a, 0xfe, 0x44, + 0x10, 0x47, 0x28, 0x1c, 0x01, 0x21, 0x8e, 0x46, 0xcf, 0x49, 0xfe, 0x44, 0x08, 0x47, 0xdc, + 0x49, 0x05, 0x20, 0x00, 0x02, 0x40, 0x18, 0x30, 0x62, 0x70, 0xbd, 0x5b, 0xfd, 0x00, 0x00, + 0x10, 0xb5, 0x04, 0x1c, + + 0x01, 0x05, 0xff, 0xff, 0x7c, 0x68, 0x08, 0x00, 0xfa, 0xe9, 0x48, 0x00, 0x78, 0x01, 0x28, + 0x08, 0xd1, 0x60, 0x69, 0x01, 0x21, 0x8e, 0x46, 0xc5, 0x49, 0xfe, 0x44, 0x08, 0x47, 0xe5, + 0x48, 0x1a, 0x30, 0x20, 0x62, 0x10, 0xbd, 0xf3, 0x06, 0x18, 0x00, 0xc0, 0x61, 0x1a, 0x00, + 0x30, 0xb5, 0x04, 0x1c, 0xa1, 0x69, 0x00, 0x29, 0x1c, 0xd0, 0x20, 0x69, 0x02, 0x78, 0xff, + 0x2a, 0x18, 0xd0, 0x8a, 0x88, 0x89, 0x18, 0x08, 0x22, 0xca, 0x42, 0x13, 0xd0, 0x39, 0x22, + 0x12, 0x5c, 0x0a, 0x2a, 0x0f, 0xd1, 0x09, 0x7a, 0x4a, 0x08, 0x0f, 0x2a, 0x0b, 0xd1, 0xc9, + 0x07, 0xc9, 0x0f, 0x0f, 0x22, 0x2a, 0x23, 0x01, 0x25, 0xae, 0x46, 0xdd, 0x4d, 0xfe, 0x44, + 0x28, 0x47, 0xc1, 0x48, 0xf0, 0x30, 0x20, 0x62, 0x30, 0xbd, 0xc0, 0x46, 0xd1, 0x2b, 0x00, + 0x00, 0x65, 0x8b, 0x01, 0x00, 0x50, 0x21, 0x08, 0x00, 0x69, 0x2c, 0x00, 0x00, 0x0d, 0x78, + 0x05, 0x00, 0x2f, 0x4a, 0x05, 0x00, 0x70, 0xb5, 0x85, 0xb0, 0x05, 0x1c, 0x68, 0x69, 0xec, + 0x4e, 0x01, 0x24, 0x34, 0x70, 0x01, 0x7a, 0x89, 0x06, 0x09, 0x0e, 0xea, 0x4a, 0x52, 0x58, + 0x69, 0x46, 0xa6, 0x46, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x20, 0x30, 0x70, 0x68, 0x46, 0x01, + 0x7c, 0x6e, 0x46, 0x72, 0x7c, 0x14, 0x20, 0xa6, 0x46, 0xe4, 0x4b, 0xfe, 0x44, 0x18, 0x47, + 0x68, 0x46, 0x01, 0x7c, 0x06, 0x29, 0x04, 0xd0, 0xa6, 0x46, 0xe1, 0x49, 0xfe, 0x44, 0x08, + 0x47, 0x04, 0xe0, 0xe0, 0x4a, 0x34, 0x21, 0x88, 0x5c, 0x01, 0x30, 0x88, 0x54, 0xdf, 0x48, + 0x4e, 0x30, 0x28, 0x62, 0x05, 0xb0, 0x70, 0xbd, 0x68, 0x63, 0x08, 0x00, 0x81, 0x60, 0x00, + 0x00, 0x99, 0x77, 0x05, 0x00, 0x13, 0x10, 0x00, 0x00, 0x41, 0x10, 0x08, 0x00, 0xff, 0xff, + 0xff, 0x1f, 0x53, 0x2c, + + 0x01, 0x05, 0xff, 0xff, 0x76, 0x69, 0x08, 0x00, 0xfa, 0x00, 0x00, 0xc1, 0x50, 0x02, 0x00, + 0x73, 0x2c, 0x00, 0x00, 0x71, 0x8b, 0x04, 0x00, 0x9b, 0x8b, 0x04, 0x00, 0x21, 0xa7, 0x05, + 0x00, 0xc1, 0xad, 0x05, 0x00, 0x15, 0x20, 0x00, 0x00, 0xa7, 0x50, 0x02, 0x00, 0x91, 0x1c, + 0x04, 0x00, 0xb3, 0x11, 0x08, 0x00, 0xf8, 0xb5, 0x07, 0x1c, 0x7c, 0x69, 0x3d, 0x69, 0x38, + 0x7f, 0x17, 0x21, 0x40, 0x1a, 0x26, 0xd0, 0x0d, 0x38, 0x16, 0xd0, 0x5b, 0x38, 0x63, 0xd1, + 0xff, 0x20, 0x7d, 0x30, 0x00, 0x5d, 0x0c, 0x28, 0x5e, 0xd1, 0xc4, 0x48, 0xe9, 0x78, 0x41, + 0x70, 0x29, 0x79, 0x81, 0x70, 0x69, 0x79, 0xc1, 0x70, 0xa9, 0x79, 0x01, 0x71, 0xe9, 0x79, + 0x41, 0x71, 0x29, 0x7a, 0xc1, 0x80, 0xa9, 0x7a, 0x01, 0x81, 0x4e, 0xe0, 0x01, 0x25, 0xae, + 0x46, 0xbc, 0x48, 0xfe, 0x44, 0x00, 0x47, 0xae, 0x46, 0xbb, 0x49, 0xfe, 0x44, 0x08, 0x47, + 0x00, 0x28, 0x43, 0xd0, 0xb9, 0x48, 0xc4, 0x38, 0x3d, 0xe0, 0xff, 0x20, 0x7d, 0x30, 0x06, + 0x19, 0x28, 0x78, 0x30, 0x70, 0x31, 0x78, 0x02, 0x20, 0x08, 0x40, 0x30, 0x70, 0x01, 0x35, + 0x28, 0x1c, 0x01, 0x21, 0x8e, 0x46, 0xb2, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x70, 0x80, 0x02, + 0x35, 0x28, 0x1c, 0x01, 0x21, 0x8e, 0x46, 0xae, 0x49, 0xfe, 0x44, 0x08, 0x47, 0xb0, 0x80, + 0xff, 0x20, 0x83, 0x30, 0x00, 0x19, 0x00, 0x90, 0x02, 0x35, 0x28, 0x1c, 0x01, 0x21, 0x8e, + 0x46, 0xa8, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x00, 0x99, 0x08, 0x80, 0x02, 0x35, 0x28, 0x1c, + 0x01, 0x21, 0x8e, 0x46, 0xa4, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x00, 0x99, 0x48, 0x80, 0xb1, + 0x88, 0x70, 0x88, 0x08, 0x43, 0x40, 0x08, 0x1c, 0xd2, 0x00, 0x98, 0x00, 0x88, 0x00, 0x28, + 0x18, 0xd0, 0x4a, 0x08, + + 0x01, 0x05, 0xff, 0xff, 0x70, 0x6a, 0x08, 0x00, 0xfa, 0x90, 0x42, 0x15, 0xdc, 0x08, 0x29, + 0x10, 0xdb, 0x99, 0x48, 0xe1, 0x49, 0x40, 0x18, 0x38, 0x62, 0x60, 0x7e, 0x00, 0x28, 0x10, + 0xd0, 0x26, 0x20, 0x00, 0x5d, 0x04, 0x28, 0x0c, 0xda, 0x20, 0x22, 0x11, 0x5d, 0xf7, 0x20, + 0x08, 0x40, 0x10, 0x55, 0xf8, 0xbd, 0x91, 0x48, 0x12, 0x38, 0x00, 0xe0, 0xd8, 0x48, 0xd7, + 0x49, 0x40, 0x18, 0x38, 0x62, 0xf8, 0xbd, 0xc0, 0x46, 0x25, 0x00, 0x00, 0x00, 0xbc, 0x63, + 0x08, 0x00, 0xef, 0x22, 0x08, 0x00, 0x5d, 0x8b, 0x04, 0x00, 0x7b, 0x5f, 0x03, 0x00, 0xab, + 0xb9, 0x03, 0x00, 0xbf, 0x70, 0x05, 0x00, 0x76, 0x81, 0x00, 0x00, 0x65, 0x63, 0x08, 0x00, + 0x60, 0x19, 0x08, 0x00, 0x10, 0x27, 0x00, 0x00, 0xcc, 0x24, 0x08, 0x00, 0xf8, 0xb5, 0xca, + 0x4f, 0xcc, 0x48, 0x00, 0x78, 0x02, 0x28, 0x0c, 0xd1, 0x01, 0x24, 0xa6, 0x46, 0xc7, 0x48, + 0xfe, 0x44, 0x00, 0x47, 0xa6, 0x46, 0xc6, 0x48, 0xfe, 0x44, 0x00, 0x47, 0xa6, 0x46, 0xea, + 0x48, 0xfe, 0x44, 0x00, 0x47, 0x01, 0x26, 0xb6, 0x46, 0xe9, 0x48, 0xfe, 0x44, 0x00, 0x47, + 0xb6, 0x46, 0xe8, 0x48, 0xfe, 0x44, 0x00, 0x47, 0xb6, 0x46, 0xe7, 0x48, 0xfe, 0x44, 0x00, + 0x47, 0x30, 0x4d, 0x00, 0x24, 0x00, 0x94, 0x38, 0x20, 0x40, 0x5d, 0x0c, 0x28, 0x25, 0xd1, + 0xe8, 0x78, 0x00, 0x28, 0x04, 0xd0, 0x3a, 0x20, 0x40, 0x5d, 0x0e, 0x28, 0x00, 0xd1, 0x00, + 0x96, 0x3b, 0x20, 0x41, 0x5d, 0x3c, 0x20, 0x40, 0x5d, 0x08, 0x43, 0x17, 0xd1, 0xff, 0x20, + 0x6d, 0x30, 0x40, 0x19, 0xb6, 0x46, 0xe2, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x00, 0x28, 0x0e, + 0xd0, 0x04, 0x20, 0xb6, 0x46, 0xdf, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x00, 0x28, 0x07, 0xd0, + 0xc4, 0x80, 0x35, 0x21, + + 0x01, 0x05, 0xff, 0xff, 0x6a, 0x6b, 0x08, 0x00, 0xfa, 0x09, 0x02, 0x01, 0x80, 0xb6, 0x46, + 0xdb, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x11, 0x20, 0x40, 0x01, 0x45, 0x19, 0x01, 0x34, 0x07, + 0x2c, 0xcf, 0xd3, 0x00, 0x98, 0x00, 0x28, 0x03, 0xd1, 0x39, 0x78, 0xdf, 0x20, 0x08, 0x40, + 0x02, 0xe0, 0x39, 0x78, 0x20, 0x20, 0x08, 0x43, 0x38, 0x70, 0xf8, 0xbd, 0xc0, 0x46, 0x2c, + 0x51, 0x08, 0x00, 0x2d, 0x61, 0x04, 0x00, 0xbb, 0x16, 0x04, 0x00, 0x10, 0xb5, 0x97, 0x4b, + 0x15, 0x3b, 0xcd, 0x48, 0x00, 0x78, 0x19, 0x78, 0x81, 0x42, 0x0d, 0xdd, 0x07, 0x21, 0xcb, + 0x48, 0x00, 0x22, 0x40, 0x24, 0x24, 0x5c, 0x00, 0x2c, 0x02, 0xd0, 0x52, 0x1c, 0x12, 0x06, + 0x12, 0x0e, 0xa8, 0x30, 0x01, 0x39, 0xf5, 0xd1, 0x1a, 0x70, 0x10, 0xbd, 0xc0, 0x46, 0xe9, + 0x3f, 0x05, 0x00, 0xd5, 0xb4, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x5b, 0xf5, 0x00, 0x00, + 0xf0, 0xb5, 0x01, 0x24, 0xa6, 0x46, 0x3a, 0x48, 0xfe, 0x44, 0x00, 0x47, 0xa6, 0x46, 0x39, + 0x49, 0xfe, 0x44, 0x08, 0x47, 0x00, 0x28, 0x10, 0xd0, 0x11, 0x27, 0x09, 0x26, 0xb9, 0x4d, + 0x3e, 0x20, 0x40, 0x5d, 0xff, 0x28, 0x06, 0xd0, 0x3b, 0x20, 0x47, 0x55, 0x28, 0x1c, 0xa6, + 0x46, 0xb6, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x50, 0x35, 0x01, 0x3e, 0xf1, 0xd1, 0xf0, 0xbd, + 0xc9, 0x63, 0x08, 0x00, 0x5d, 0xf0, 0x03, 0x00, 0x00, 0xb5, 0xb1, 0x48, 0x00, 0x88, 0x02, + 0x28, 0x01, 0xda, 0x01, 0x21, 0x02, 0xe0, 0x40, 0x1e, 0x01, 0x04, 0x09, 0x0c, 0xad, 0x48, + 0x00, 0x22, 0x01, 0x23, 0x9e, 0x46, 0xac, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x00, 0xbd, 0x55, + 0xf6, 0x00, 0x00, 0xf0, 0xb5, 0xa4, 0xb0, 0x06, 0x1c, 0x31, 0x7c, 0x75, 0x69, 0xa8, 0x7c, + 0x00, 0x28, 0x03, 0xd1, + + 0x01, 0x05, 0xff, 0xff, 0x64, 0x6c, 0x08, 0x00, 0xfa, 0x28, 0x68, 0xc0, 0x78, 0x00, 0x28, + 0x25, 0xd1, 0x04, 0x29, 0x23, 0xd1, 0x28, 0x68, 0x01, 0x78, 0x1b, 0x20, 0x01, 0x24, 0xa6, + 0x46, 0xa1, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x01, 0x06, 0x09, 0x0e, 0x68, 0x46, 0xa6, 0x46, + 0x9e, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x12, 0x21, 0x4f, 0x19, 0x01, 0x06, 0x09, 0x0e, 0x68, + 0x46, 0x3a, 0x1c, 0xa6, 0x46, 0x9a, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xe8, 0x74, 0x0b, 0x48, + 0x39, 0x1c, 0xa6, 0x46, 0x98, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x28, 0x01, 0xd0, 0x02, + 0x20, 0x30, 0x61, 0x24, 0xb0, 0xf0, 0xbd, 0xca, 0x63, 0x08, 0x00, 0xb4, 0x8a, 0x06, 0x00, + 0xa9, 0xd3, 0x04, 0x00, 0x61, 0x97, 0x04, 0x00, 0x28, 0x19, 0x08, 0x00, 0x57, 0x98, 0x04, + 0x00, 0xd0, 0x63, 0x08, 0x00, 0x37, 0x98, 0x01, 0x00, 0x37, 0x9b, 0x01, 0x00, 0xdc, 0x0c, + 0x00, 0x00, 0x73, 0x2c, 0x00, 0x00, 0xff, 0xb5, 0x00, 0x90, 0x88, 0x48, 0x06, 0x1c, 0x32, + 0x3e, 0x60, 0x21, 0x89, 0x19, 0x00, 0x78, 0x0a, 0x78, 0x00, 0x2a, 0x75, 0xd0, 0x09, 0x7b, + 0x00, 0x29, 0x72, 0xd1, 0xff, 0x28, 0x5f, 0xd1, 0x34, 0x1c, 0x82, 0x48, 0x05, 0x1c, 0x01, + 0x95, 0x81, 0x48, 0x02, 0x90, 0x00, 0x27, 0xe1, 0x88, 0x7e, 0x48, 0x81, 0x42, 0x2b, 0xd0, + 0xa9, 0x42, 0x15, 0xdb, 0xa9, 0x42, 0x27, 0xd1, 0x7c, 0x49, 0x78, 0x00, 0x30, 0x18, 0x4c, + 0x22, 0x10, 0x5a, 0x08, 0x1a, 0x01, 0x22, 0x96, 0x46, 0x79, 0x4a, 0xfe, 0x44, 0x10, 0x47, + 0x01, 0x04, 0x09, 0x0c, 0x20, 0x89, 0x09, 0x18, 0x01, 0x9a, 0x02, 0x98, 0x10, 0x18, 0x81, + 0x42, 0x13, 0xd2, 0xe5, 0x88, 0x20, 0x89, 0x01, 0x90, 0x38, 0x06, 0x00, 0x0e, 0x03, 0x90, + 0x6f, 0x49, 0x40, 0x00, + + 0x01, 0x05, 0xff, 0xff, 0x5e, 0x6d, 0x08, 0x00, 0xfa, 0x30, 0x18, 0x4c, 0x22, 0x10, 0x5a, + 0x08, 0x1a, 0x01, 0x22, 0x96, 0x46, 0x6c, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x04, 0x00, + 0x0c, 0x02, 0x90, 0x10, 0x34, 0x01, 0x37, 0x03, 0x2f, 0xcb, 0xdb, 0x65, 0x48, 0x01, 0x99, + 0x81, 0x42, 0x1a, 0xd0, 0x02, 0x2d, 0x09, 0xda, 0x03, 0x98, 0x01, 0x99, 0x00, 0x22, 0xd2, + 0x43, 0x01, 0x23, 0x9e, 0x46, 0x62, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x2a, 0xe0, 0x03, 0x98, + 0x01, 0x1c, 0x09, 0x01, 0x71, 0x58, 0x69, 0x18, 0x01, 0x39, 0x89, 0x01, 0x8a, 0x09, 0x01, + 0x99, 0x01, 0x23, 0x9e, 0x46, 0x5a, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x1b, 0xe0, 0x01, 0x20, + 0x86, 0x46, 0x58, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x15, 0xe0, 0x1c, 0x21, 0x41, 0x43, 0x70, + 0x18, 0x89, 0x21, 0x08, 0x5c, 0x00, 0x01, 0x30, 0x18, 0x01, 0x89, 0x03, 0x20, 0x00, 0x22, + 0xd2, 0x43, 0x01, 0x23, 0x9e, 0x46, 0x4f, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x04, 0xe0, 0x01, + 0x20, 0x86, 0x46, 0x4e, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x4d, 0x49, 0xce, 0x31, 0x00, 0x98, + 0x01, 0x62, 0x00, 0x90, 0xff, 0xbd, 0x0d, 0xe2, 0x00, 0x00, 0x3a, 0x0e, 0x00, 0x00, 0xd4, + 0x0f, 0x08, 0x00, 0x53, 0x63, 0x05, 0x00, 0xad, 0x98, 0x02, 0x00, 0x41, 0x10, 0x08, 0x00, + 0xf8, 0xb5, 0x00, 0x90, 0x58, 0x21, 0x6c, 0x22, 0x60, 0x27, 0x3b, 0x4c, 0x32, 0x3c, 0x32, + 0x20, 0x03, 0x5d, 0x55, 0x20, 0x00, 0x5d, 0x41, 0x4e, 0x85, 0x07, 0x31, 0xd1, 0x40, 0x06, + 0x80, 0x0f, 0x0a, 0xd1, 0x1c, 0x20, 0x58, 0x43, 0x00, 0x19, 0x88, 0x25, 0x28, 0x5c, 0x02, + 0x28, 0x03, 0xd0, 0x08, 0x5b, 0x39, 0x49, 0x01, 0x42, 0x23, 0xd0, 0x12, 0x5d, 0x00, 0x2a, + 0x07, 0xd1, 0x00, 0x20, + + 0x01, 0x05, 0xff, 0xff, 0x58, 0x6e, 0x08, 0x00, 0xfa, 0x38, 0x55, 0x30, 0x78, 0x01, 0x30, + 0x00, 0x06, 0x00, 0x0e, 0x30, 0x70, 0x08, 0xe0, 0x02, 0x20, 0x4b, 0x21, 0xc9, 0x00, 0x01, + 0x25, 0xae, 0x46, 0x31, 0x4d, 0xfe, 0x44, 0x28, 0x47, 0x30, 0x78, 0x0a, 0x28, 0x0f, 0xdd, + 0x01, 0x25, 0x2f, 0x48, 0x05, 0x80, 0xae, 0x46, 0x2e, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x2c, + 0x48, 0x05, 0x80, 0xae, 0x46, 0x2b, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x3d, 0x55, 0x00, 0x20, + 0x30, 0x70, 0x29, 0x49, 0xbe, 0x31, 0x00, 0x98, 0x01, 0x62, 0xf8, 0xbd, 0xc0, 0x46, 0x15, + 0x7e, 0x04, 0x00, 0xe9, 0x6b, 0x08, 0x00, 0x2d, 0x6c, 0x08, 0x00, 0xa9, 0x6b, 0x08, 0x00, + 0x10, 0xb5, 0x04, 0x1c, 0x00, 0x20, 0x01, 0x21, 0x8e, 0x46, 0x21, 0x49, 0xfe, 0x44, 0x08, + 0x47, 0x40, 0x1c, 0x03, 0xd1, 0x1f, 0x48, 0xff, 0x30, 0x5f, 0x30, 0x20, 0x62, 0x10, 0xbd, + 0xc0, 0x46, 0xf7, 0x64, 0x04, 0x00, 0x9b, 0x60, 0x04, 0x00, 0xdb, 0x3f, 0x05, 0x00, 0x83, + 0x50, 0x08, 0x00, 0x60, 0x19, 0x08, 0x00, 0xf4, 0x46, 0x08, 0x00, 0xa5, 0x1e, 0x02, 0x00, + 0x8c, 0x18, 0x08, 0x00, 0x36, 0x02, 0x1a, 0x00, 0x15, 0x49, 0x05, 0x00, 0xa7, 0x31, 0x05, + 0x00, 0x0d, 0x9e, 0x01, 0x00, 0xf7, 0x64, 0x01, 0x00, 0x81, 0x8a, 0x02, 0x00, 0x26, 0x23, + 0x08, 0x00, 0xff, 0xff, 0x00, 0x00, 0xe2, 0x04, 0x00, 0x00, 0x6d, 0x94, 0x05, 0x00, 0x81, + 0xa3, 0x02, 0x00, 0xeb, 0xa3, 0x02, 0x00, 0x4f, 0xa3, 0x02, 0x00, 0x65, 0xad, 0x02, 0x00, + 0x20, 0x20, 0x00, 0x00, 0x5c, 0x63, 0x08, 0x00, 0xc7, 0xd6, 0x04, 0x00, 0x82, 0x07, 0x1a, + 0x00, 0xf1, 0x16, 0x04, 0x00, 0x59, 0xaa, 0x02, 0x00, 0x49, 0xa3, 0x00, 0x00, 0x8d, 0x7e, + 0x00, 0x00, 0x30, 0xb5, + + 0x01, 0x05, 0xff, 0xff, 0x52, 0x6f, 0x08, 0x00, 0xfa, 0xdc, 0x4a, 0x00, 0x28, 0x09, 0xd0, + 0x13, 0x18, 0x84, 0x18, 0xa5, 0x7b, 0x4d, 0x19, 0xa5, 0x73, 0x01, 0x28, 0x02, 0xd9, 0x5c, + 0x7b, 0x0c, 0x19, 0x5c, 0x73, 0x4e, 0x28, 0x09, 0xd2, 0x13, 0x18, 0x82, 0x18, 0x14, 0x7c, + 0x0c, 0x19, 0x14, 0x74, 0x4d, 0x28, 0x02, 0xd2, 0x58, 0x7c, 0x08, 0x18, 0x58, 0x74, 0x30, + 0xbd, 0xf0, 0xb5, 0x07, 0x1c, 0xcf, 0x4e, 0xcf, 0x4d, 0x00, 0x24, 0x2a, 0x78, 0x00, 0x2a, + 0x1e, 0xd0, 0x6b, 0x20, 0x81, 0x5d, 0x4b, 0x1c, 0xa0, 0x19, 0xc0, 0x7e, 0x00, 0x07, 0x00, + 0x0f, 0x98, 0x42, 0x0b, 0xd0, 0x98, 0x42, 0x13, 0xdd, 0x50, 0x1c, 0x01, 0x06, 0x09, 0x0e, + 0x20, 0x1c, 0x01, 0x22, 0x96, 0x46, 0xe6, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x09, 0xe0, 0x50, + 0x1c, 0x00, 0x06, 0x00, 0x0e, 0x41, 0x43, 0x20, 0x1c, 0x01, 0x22, 0x96, 0x46, 0xe1, 0x4a, + 0xfe, 0x44, 0x10, 0x47, 0x01, 0x35, 0x01, 0x34, 0x4f, 0x2c, 0xd9, 0xd3, 0x78, 0x68, 0x40, + 0x0b, 0x78, 0x60, 0xde, 0x48, 0xdc, 0x49, 0x08, 0x18, 0xf0, 0xbd, 0x00, 0xb5, 0xdc, 0x48, + 0x00, 0x78, 0x01, 0x21, 0x8e, 0x46, 0xdb, 0x49, 0xfe, 0x44, 0x08, 0x47, 0xdb, 0x48, 0xc1, + 0x30, 0x00, 0xbd, 0x70, 0xb5, 0xda, 0x48, 0x00, 0x78, 0x01, 0x24, 0xa6, 0x46, 0xd6, 0x49, + 0xfe, 0x44, 0x08, 0x47, 0xe9, 0x4d, 0x28, 0x78, 0x00, 0x28, 0x09, 0xd1, 0xe8, 0x49, 0xd3, + 0x4a, 0xad, 0x32, 0x0e, 0x20, 0x00, 0x23, 0xa6, 0x46, 0xe6, 0x4e, 0xfe, 0x44, 0x30, 0x47, + 0x2c, 0x70, 0xea, 0x48, 0x67, 0x30, 0x70, 0xbd, 0x40, 0x1e, 0x80, 0x00, 0xea, 0x4b, 0x19, + 0x50, 0xe8, 0x49, 0x0a, 0x50, 0xf7, 0x46, 0x80, 0x69, 0xb8, 0x21, 0x09, 0x5c, 0x01, 0x29, + 0x06, 0xd0, 0xb5, 0x21, + + 0x01, 0x05, 0xff, 0xff, 0x4c, 0x70, 0x08, 0x00, 0xfa, 0x08, 0x5c, 0x60, 0x21, 0x41, 0x43, + 0xe4, 0x4a, 0x00, 0x20, 0x50, 0x54, 0xe3, 0x48, 0x1b, 0x30, 0xf7, 0x46, 0x10, 0xb5, 0x04, + 0x1c, 0xe2, 0x48, 0x00, 0x68, 0x01, 0x21, 0x8e, 0x46, 0xe1, 0x49, 0xfe, 0x44, 0x08, 0x47, + 0xe0, 0x68, 0x0c, 0x30, 0xe0, 0x60, 0xe8, 0x48, 0xff, 0x30, 0x02, 0x30, 0x10, 0xbd, 0x30, + 0xb5, 0x42, 0x69, 0x11, 0x88, 0x09, 0x06, 0x0b, 0x0e, 0xe7, 0x49, 0x02, 0x2b, 0x1a, 0xd1, + 0xd7, 0x4b, 0x1b, 0x6b, 0x9b, 0x68, 0xdb, 0x88, 0x01, 0x24, 0xa4, 0x02, 0x1d, 0x05, 0xad, + 0x0f, 0xad, 0x02, 0xa5, 0x42, 0x06, 0xdb, 0x05, 0x24, 0x24, 0x02, 0x1b, 0x05, 0x1b, 0x0f, + 0x1b, 0x02, 0xa3, 0x42, 0x02, 0xdb, 0xd2, 0x88, 0x52, 0x1d, 0x01, 0xe0, 0x52, 0x88, 0x52, + 0x1c, 0x42, 0x60, 0x08, 0x1c, 0x9f, 0x30, 0x30, 0xbd, 0x08, 0x1c, 0x87, 0x30, 0x30, 0xbd, + 0x00, 0xb5, 0x01, 0x1c, 0x48, 0x68, 0xc9, 0x69, 0xb5, 0x22, 0x51, 0x5c, 0xdc, 0x22, 0x4a, + 0x43, 0xda, 0x49, 0x89, 0x18, 0x08, 0x22, 0x01, 0x23, 0x9e, 0x46, 0xd8, 0x4b, 0xfe, 0x44, + 0x18, 0x47, 0xd8, 0x48, 0x3f, 0x30, 0x00, 0xbd, 0x40, 0x69, 0x01, 0x8f, 0xc0, 0x8e, 0x40, + 0x1a, 0x00, 0x04, 0x01, 0x0c, 0xd7, 0x48, 0x40, 0x0a, 0x81, 0x42, 0x01, 0xd3, 0xd2, 0x48, + 0x00, 0xe0, 0xd3, 0x48, 0xd2, 0x49, 0x40, 0x18, 0xf7, 0x46, 0xf8, 0xb5, 0x81, 0x69, 0x08, + 0x04, 0x00, 0x0c, 0x00, 0x90, 0xe4, 0x4d, 0xe5, 0x4c, 0xc8, 0x08, 0x2a, 0xd3, 0xe1, 0x48, + 0xff, 0x21, 0x3d, 0x31, 0x0f, 0x18, 0x29, 0x5c, 0x00, 0x26, 0x21, 0xe0, 0xa8, 0x00, 0x30, + 0x58, 0xc2, 0x22, 0x12, 0x5c, 0x00, 0x2a, 0x0a, 0xd0, 0xb5, 0x21, 0x08, 0x5c, 0x0a, 0x30, + 0x00, 0x06, 0x00, 0x0e, + + 0x01, 0x05, 0xff, 0xff, 0x46, 0x71, 0x08, 0x00, 0xfa, 0x01, 0x21, 0x8e, 0x46, 0xd9, 0x49, + 0xfe, 0x44, 0x08, 0x47, 0x21, 0x78, 0x01, 0x35, 0x19, 0xe0, 0xb0, 0x00, 0x38, 0x58, 0xc2, + 0x22, 0x12, 0x5c, 0x00, 0x2a, 0x07, 0xd0, 0xb5, 0x21, 0x08, 0x5c, 0x01, 0x21, 0x8e, 0x46, + 0xd1, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x21, 0x78, 0x01, 0x36, 0x8e, 0x42, 0xee, 0xd3, 0x00, + 0x98, 0x00, 0x09, 0x07, 0xd3, 0xca, 0x48, 0xff, 0x21, 0x3d, 0x31, 0x0e, 0x18, 0x29, 0x5c, + 0x00, 0x25, 0x8d, 0x42, 0xd0, 0xd3, 0xe4, 0x48, 0x87, 0x30, 0xf8, 0xbd, 0x70, 0xb5, 0x06, + 0x1c, 0xb0, 0x68, 0xe2, 0x4d, 0x00, 0x28, 0x02, 0xd1, 0x28, 0x1c, 0xdf, 0x30, 0x70, 0xbd, + 0x91, 0x4c, 0x04, 0x3c, 0x20, 0x7a, 0x02, 0x28, 0x08, 0xd0, 0xdd, 0x49, 0x08, 0x5c, 0x01, + 0x21, 0x8e, 0x46, 0xdc, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x00, 0x28, 0x02, 0xd0, 0x28, 0x1c, + 0xcf, 0x30, 0x70, 0xbd, 0x00, 0x20, 0x20, 0x60, 0x70, 0x60, 0x28, 0x1c, 0xff, 0x30, 0x20, + 0x30, 0x70, 0xbd, 0x10, 0xb5, 0x9a, 0x49, 0x11, 0x31, 0x06, 0x22, 0x00, 0x23, 0x0c, 0x78, + 0xff, 0x2c, 0x02, 0xd1, 0x5b, 0x1c, 0x1b, 0x06, 0x1b, 0x0e, 0xdc, 0x31, 0x01, 0x3a, 0xf6, + 0xd1, 0x43, 0x60, 0xe3, 0x48, 0x19, 0x30, 0x10, 0xbd, 0x01, 0x1c, 0xe2, 0x4b, 0x1a, 0x78, + 0xe2, 0x48, 0x05, 0x2a, 0x04, 0xd1, 0xe2, 0x4a, 0x12, 0x68, 0x12, 0x78, 0x01, 0x2a, 0x02, + 0xd0, 0x4b, 0x60, 0x5b, 0x30, 0xf7, 0x46, 0x7d, 0x30, 0xf7, 0x46, 0x10, 0xb5, 0x01, 0x1c, + 0xdd, 0x48, 0x00, 0x68, 0xde, 0x4c, 0x00, 0x28, 0x0b, 0xd0, 0x88, 0x69, 0x09, 0x7a, 0x01, + 0x22, 0x96, 0x46, 0xd9, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x28, 0x02, 0xd0, 0x20, 0x1c, + 0x21, 0x30, 0x10, 0xbd, + + 0x01, 0x05, 0xff, 0xff, 0x40, 0x72, 0x08, 0x00, 0xfa, 0x20, 0x1c, 0x33, 0x30, 0x10, 0xbd, + 0xf8, 0xb5, 0x81, 0x69, 0x00, 0x91, 0xd1, 0x4c, 0x25, 0x1c, 0x0c, 0x3d, 0xe9, 0x68, 0x08, + 0x22, 0x57, 0x18, 0x40, 0x69, 0xd0, 0x4a, 0x00, 0x28, 0x02, 0xd0, 0x10, 0x1c, 0xd3, 0x30, + 0xf8, 0xbd, 0x00, 0x26, 0x04, 0xe0, 0x70, 0x1c, 0x06, 0x06, 0x36, 0x0e, 0x06, 0x37, 0x21, + 0x68, 0x48, 0x88, 0x86, 0x42, 0x14, 0xda, 0x38, 0x1c, 0x00, 0x99, 0x01, 0x22, 0x96, 0x46, + 0xe1, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x28, 0xee, 0xd1, 0x0c, 0x34, 0xe8, 0x68, 0x41, + 0x88, 0x01, 0x20, 0x88, 0x40, 0xe1, 0x6f, 0x81, 0x43, 0xe1, 0x67, 0xe9, 0x68, 0x48, 0x88, + 0x01, 0x38, 0x48, 0x80, 0xbd, 0x48, 0xff, 0x30, 0x14, 0x30, 0xf8, 0xbd, 0x01, 0x1c, 0xd8, + 0x48, 0x02, 0x78, 0xd6, 0x48, 0x00, 0x2a, 0x01, 0xd0, 0xed, 0x30, 0xf7, 0x46, 0x41, 0x22, + 0x4a, 0x60, 0x39, 0x30, 0xf7, 0x46, 0xd0, 0x11, 0x08, 0x00, 0x50, 0x21, 0x08, 0x00, 0x38, + 0x30, 0x19, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x75, 0x69, 0xb7, 0x69, 0x31, 0x6a, 0x30, 0x7f, + 0x00, 0x28, 0x2d, 0xd1, 0x01, 0x21, 0xa8, 0x8d, 0x18, 0x28, 0x27, 0xdc, 0xcd, 0x48, 0x00, + 0x78, 0x00, 0x90, 0x00, 0x24, 0x01, 0x22, 0xa2, 0x40, 0x00, 0x98, 0x10, 0x42, 0x1b, 0xd0, + 0xc6, 0x48, 0x20, 0x5c, 0x11, 0x21, 0x49, 0x01, 0x41, 0x43, 0xc4, 0x48, 0x41, 0x18, 0xff, + 0x20, 0x1e, 0x30, 0x40, 0x5c, 0x01, 0x28, 0x01, 0xd1, 0x02, 0x20, 0x00, 0xe0, 0x00, 0x20, + 0xc9, 0x78, 0x08, 0x18, 0xc1, 0x49, 0x08, 0x5c, 0xa9, 0x8d, 0x01, 0x22, 0x96, 0x46, 0xc0, + 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x48, 0x1c, 0x01, 0x06, 0x09, 0x0e, 0x01, 0x34, 0x07, 0x2c, + 0xdb, 0xdb, 0xa8, 0x8d, + + 0x01, 0x05, 0xff, 0xff, 0x3a, 0x73, 0x08, 0x00, 0xfa, 0x01, 0xe0, 0x48, 0x7d, 0xa9, 0x8d, + 0x48, 0x43, 0x39, 0x68, 0x40, 0x18, 0x80, 0x01, 0x80, 0x09, 0x38, 0x60, 0x70, 0x60, 0xb3, + 0x48, 0x5d, 0x30, 0xf8, 0xbd, 0x51, 0x6f, 0x08, 0x00, 0x43, 0x02, 0x00, 0x00, 0x8d, 0x42, + 0x01, 0x00, 0x5c, 0x18, 0x08, 0x00, 0xfd, 0x62, 0x08, 0x00, 0x17, 0x38, 0x04, 0x00, 0x0c, + 0x18, 0x08, 0x00, 0x01, 0x1c, 0x4a, 0x68, 0x13, 0x06, 0x1b, 0x0e, 0xac, 0x48, 0x03, 0xd1, + 0x82, 0x4b, 0x1b, 0x78, 0x03, 0x2b, 0x05, 0xd0, 0x00, 0x2a, 0x01, 0xd0, 0x1d, 0x30, 0xf7, + 0x46, 0xff, 0x30, 0xf7, 0x46, 0x45, 0x4a, 0x30, 0x23, 0x9b, 0x5c, 0x00, 0x2b, 0x07, 0xd1, + 0x9a, 0x4b, 0x92, 0x88, 0x9a, 0x42, 0x03, 0xd1, 0xa3, 0x4a, 0x12, 0x78, 0x00, 0x2a, 0x01, + 0xd0, 0x00, 0x22, 0x00, 0xe0, 0x07, 0x22, 0x4a, 0x60, 0xff, 0x30, 0xa2, 0x30, 0xf7, 0x46, + 0x67, 0x63, 0x08, 0x00, 0xeb, 0x6f, 0x08, 0x00, 0x33, 0x70, 0x08, 0x00, 0x40, 0x69, 0x78, + 0x21, 0x09, 0x5a, 0x9a, 0x48, 0xac, 0x29, 0x01, 0xda, 0x3b, 0x30, 0xf7, 0x46, 0x89, 0x30, + 0xf7, 0x46, 0xd1, 0x8c, 0x03, 0x00, 0x04, 0xf3, 0x1a, 0x00, 0x80, 0x7b, 0x08, 0x00, 0x76, + 0xa0, 0x1b, 0x00, 0x6d, 0x97, 0x00, 0x00, 0x6c, 0x55, 0x08, 0x00, 0x4f, 0x61, 0x04, 0x00, + 0x01, 0x1c, 0x64, 0x48, 0x02, 0x78, 0xe8, 0x48, 0x05, 0x2a, 0x07, 0xd1, 0x20, 0x22, 0x51, + 0x5c, 0x01, 0x29, 0x03, 0xd1, 0xe3, 0x49, 0x09, 0x78, 0x49, 0x08, 0x01, 0xd2, 0x8f, 0x30, + 0xf7, 0x46, 0x85, 0x30, 0xf7, 0x46, 0x39, 0xc1, 0x02, 0x00, 0xe0, 0x48, 0x59, 0x30, 0xf7, + 0x46, 0xf4, 0x48, 0x67, 0x30, 0xf7, 0x46, 0x7d, 0xc4, 0x02, 0x00, 0xc1, 0x69, 0x82, 0x69, + 0x51, 0x1a, 0x01, 0x61, + + 0x01, 0x05, 0xff, 0xff, 0x34, 0x74, 0x08, 0x00, 0xfa, 0xf0, 0x48, 0x73, 0x30, 0xf7, 0x46, + 0x00, 0x21, 0x41, 0x60, 0xef, 0x48, 0xa1, 0x30, 0xf7, 0x46, 0x5c, 0x27, 0x08, 0x00, 0x4b, + 0x1e, 0x04, 0x00, 0x05, 0x5e, 0x02, 0x00, 0xe7, 0x03, 0x00, 0x00, 0xc9, 0x98, 0x00, 0x00, + 0x83, 0x05, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x81, 0xb0, 0x00, 0x90, 0x00, 0x21, 0x68, + 0x46, 0x42, 0x88, 0x03, 0x88, 0x93, 0x42, 0x03, 0xd1, 0x02, 0x78, 0x40, 0x78, 0x90, 0x42, + 0x0f, 0xd0, 0x00, 0x98, 0xc3, 0x0f, 0x1e, 0x20, 0x00, 0x9a, 0xc2, 0x40, 0xd2, 0x07, 0xd2, + 0x0f, 0x93, 0x42, 0x00, 0xd0, 0x01, 0x31, 0x18, 0x29, 0x03, 0xd8, 0x1a, 0x28, 0x03, 0xd1, + 0x02, 0x29, 0x01, 0xd2, 0x00, 0x20, 0x03, 0xe0, 0x13, 0x1c, 0x01, 0x38, 0xed, 0xd5, 0x01, + 0x20, 0x01, 0xb0, 0xf7, 0x46, 0x48, 0x25, 0x08, 0x00, 0x6a, 0x0a, 0x00, 0x00, 0x47, 0x93, + 0x02, 0x00, 0xb2, 0x2f, 0x08, 0x00, 0xf0, 0xb5, 0x06, 0x1c, 0x77, 0x68, 0x0a, 0x25, 0x05, + 0xe0, 0xa6, 0x46, 0xd8, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x07, 0x1c, 0x01, 0x3d, 0x00, 0x2d, + 0x07, 0xd0, 0x38, 0x1c, 0x01, 0x24, 0xa6, 0x46, 0xd4, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x00, + 0x28, 0xef, 0xd0, 0x77, 0x60, 0xf0, 0x69, 0xb0, 0x60, 0xd1, 0x48, 0xff, 0x30, 0x34, 0x30, + 0xf0, 0xbd, 0x10, 0xb5, 0x44, 0x68, 0x3a, 0x20, 0x00, 0x5d, 0x22, 0x28, 0x06, 0xd1, 0x20, + 0x1c, 0x00, 0x21, 0x01, 0x22, 0x96, 0x46, 0xcb, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x20, 0x1c, + 0x00, 0x21, 0x01, 0x22, 0x96, 0x46, 0xc9, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xc8, 0x48, 0x6f, + 0x30, 0x10, 0xbd, 0xc0, 0x46, 0x49, 0xa0, 0x02, 0x00, 0x25, 0x6e, 0x03, 0x00, 0x3c, 0x91, + 0x06, 0x00, 0x17, 0x62, + + 0x01, 0x05, 0xff, 0xff, 0x2e, 0x75, 0x08, 0x00, 0xfa, 0x04, 0x00, 0x30, 0xb5, 0x04, 0x1c, + 0x14, 0x48, 0xbf, 0x38, 0x01, 0x78, 0x02, 0x29, 0x01, 0xd1, 0x00, 0x21, 0x01, 0x70, 0xbf, + 0x49, 0xbf, 0x48, 0x42, 0x1c, 0x1d, 0x20, 0x00, 0x23, 0x01, 0x25, 0xae, 0x46, 0xbe, 0x4d, + 0xfe, 0x44, 0x28, 0x47, 0x60, 0x69, 0x00, 0x68, 0x60, 0x60, 0xba, 0x48, 0xff, 0x30, 0x3a, + 0x30, 0x30, 0xbd, 0x10, 0xb5, 0xba, 0x49, 0xb7, 0x4a, 0xff, 0x32, 0x38, 0x32, 0x1d, 0x20, + 0x00, 0x23, 0x01, 0x24, 0xa6, 0x46, 0xb5, 0x4c, 0xfe, 0x44, 0x20, 0x47, 0xb1, 0x48, 0xc0, + 0x1d, 0x10, 0xbd, 0xc0, 0x46, 0xef, 0x8a, 0x04, 0x00, 0x41, 0x10, 0x08, 0x00, 0xd9, 0xae, + 0x02, 0x00, 0xf4, 0x62, 0x08, 0x00, 0xec, 0x0e, 0x08, 0x00, 0x5d, 0x86, 0x01, 0x00, 0xdd, + 0xf8, 0x03, 0x00, 0xf0, 0xb5, 0x9c, 0x46, 0x17, 0x4c, 0x0e, 0x1c, 0x26, 0x40, 0x05, 0x1c, + 0x25, 0x40, 0x2f, 0x1c, 0x77, 0x43, 0x09, 0x0c, 0x00, 0x0c, 0x03, 0x1c, 0x4b, 0x43, 0x69, + 0x43, 0x70, 0x43, 0x05, 0x1c, 0x25, 0x40, 0x0c, 0x40, 0x64, 0x19, 0x00, 0x0c, 0x09, 0x0c, + 0x08, 0x18, 0x39, 0x0c, 0x61, 0x18, 0x09, 0x0c, 0x00, 0xd0, 0x01, 0x30, 0x21, 0x04, 0xcf, + 0x19, 0xc3, 0x18, 0x60, 0x46, 0x07, 0x60, 0x13, 0x60, 0xf0, 0xbd, 0x1c, 0xb5, 0x9b, 0x49, + 0x6a, 0x46, 0x01, 0xab, 0x01, 0x24, 0xa6, 0x46, 0x99, 0x4c, 0xfe, 0x44, 0x20, 0x47, 0x01, + 0x98, 0xc1, 0x0b, 0x00, 0x98, 0x40, 0x04, 0x08, 0x43, 0x1c, 0xbd, 0xc0, 0x46, 0xff, 0xff, + 0x00, 0x00, 0x79, 0x1c, 0x04, 0x00, 0xdd, 0x84, 0x01, 0x00, 0xca, 0x63, 0x08, 0x00, 0x00, + 0x16, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x09, 0x82, 0x01, 0x00, 0x65, 0x63, 0x08, 0x00, + 0x68, 0x63, 0x08, 0x00, + + 0x01, 0x05, 0xff, 0xff, 0x28, 0x76, 0x08, 0x00, 0xfa, 0x6d, 0x94, 0x05, 0x00, 0xbd, 0x7b, + 0x03, 0x00, 0xf5, 0x50, 0x08, 0x00, 0xe5, 0x85, 0x00, 0x00, 0xf0, 0xb5, 0x8d, 0xb0, 0x03, + 0xa8, 0x01, 0x21, 0x8e, 0x46, 0x86, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x86, 0x48, 0x06, 0x90, + 0x72, 0x38, 0x06, 0x90, 0x84, 0x48, 0x07, 0x90, 0x06, 0x38, 0x07, 0x90, 0x38, 0x21, 0x41, + 0x80, 0x01, 0x20, 0x86, 0x46, 0x7f, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x03, 0xa8, 0x08, 0x90, + 0x4b, 0x48, 0x09, 0x90, 0x69, 0x38, 0x09, 0x90, 0x00, 0x20, 0x0a, 0x90, 0x0a, 0x98, 0x00, + 0x06, 0x00, 0x0e, 0x0b, 0x90, 0x79, 0x48, 0x0b, 0x99, 0x01, 0x22, 0x96, 0x46, 0x78, 0x4a, + 0xfe, 0x44, 0x10, 0x47, 0x00, 0x28, 0xf6, 0xd0, 0x08, 0x98, 0x00, 0x68, 0x09, 0x99, 0x89, + 0x6a, 0x01, 0x24, 0xa6, 0x46, 0x73, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x28, 0x00, 0xd5, + 0x40, 0x42, 0xa6, 0x46, 0x71, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x05, 0x1c, 0x0b, 0x98, 0x01, + 0xa9, 0x02, 0xaa, 0x64, 0x23, 0xa6, 0x46, 0x6d, 0x4e, 0xfe, 0x44, 0x30, 0x47, 0x68, 0x46, + 0x0c, 0x90, 0x00, 0x89, 0x46, 0x1b, 0x13, 0xd5, 0x70, 0x4f, 0x39, 0x1c, 0x30, 0x1c, 0xa6, + 0x46, 0x71, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x4d, 0x42, 0x30, 0x1c, 0x39, 0x1c, 0xa6, 0x46, + 0x65, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x28, 0x00, 0xd0, 0x01, 0x35, 0x6f, 0x43, 0xbe, + 0x19, 0x00, 0xe0, 0x00, 0x25, 0x01, 0x98, 0x40, 0x1b, 0x80, 0x01, 0x80, 0x09, 0x0a, 0x99, + 0x00, 0x29, 0x2c, 0xd1, 0x01, 0x9a, 0x06, 0x99, 0x4a, 0x60, 0x0c, 0x9a, 0x12, 0x89, 0xca, + 0x81, 0x08, 0x60, 0x8e, 0x81, 0x59, 0x4d, 0x28, 0x1c, 0x00, 0x21, 0xa6, 0x46, 0x5d, 0x4a, + 0xfe, 0x44, 0x10, 0x47, + + 0x01, 0x05, 0xff, 0xff, 0x22, 0x77, 0x08, 0x00, 0xfa, 0x02, 0x20, 0x07, 0x99, 0x08, 0x80, + 0xa6, 0x46, 0x55, 0x48, 0xfe, 0x44, 0x00, 0x47, 0xa6, 0x46, 0x53, 0x48, 0xfe, 0x44, 0x00, + 0x47, 0x4a, 0x48, 0x04, 0x21, 0xa6, 0x46, 0x4a, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x28, + 0xf7, 0xd1, 0x28, 0x1c, 0x00, 0x21, 0xa6, 0x46, 0x4d, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xa6, + 0x46, 0x4c, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x0a, 0xe0, 0x0c, 0x9b, 0x0b, 0x99, 0x19, 0x70, + 0x31, 0x04, 0x09, 0x0c, 0x01, 0x9a, 0x1b, 0x89, 0xa6, 0x46, 0x4a, 0x4c, 0xfe, 0x44, 0x20, + 0x47, 0x09, 0x98, 0x04, 0x30, 0x09, 0x90, 0x08, 0x98, 0x04, 0x30, 0x08, 0x90, 0x0a, 0x98, + 0x01, 0x30, 0x0a, 0x90, 0x03, 0x28, 0x00, 0xd2, 0x74, 0xe7, 0x3f, 0x48, 0xff, 0x30, 0x0c, + 0x30, 0x0d, 0xb0, 0xf0, 0xbd, 0xc0, 0x46, 0x55, 0x53, 0x08, 0x00, 0x37, 0xeb, 0x03, 0x00, + 0x3d, 0x68, 0x03, 0x00, 0x30, 0xb5, 0x40, 0x69, 0x00, 0x28, 0x1f, 0xd0, 0x00, 0x68, 0x85, + 0x08, 0x01, 0x24, 0xa6, 0x46, 0x3a, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x01, 0x1c, 0x28, 0x1c, + 0xa6, 0x46, 0x2a, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x28, 0x00, 0xda, 0x40, 0x42, 0x03, + 0x21, 0x09, 0x02, 0x41, 0x43, 0xc8, 0x0b, 0x28, 0x18, 0x81, 0x00, 0x34, 0x48, 0x00, 0x88, + 0x80, 0x00, 0x08, 0x1a, 0x00, 0x01, 0x00, 0x09, 0xa6, 0x46, 0x2f, 0x49, 0xfe, 0x44, 0x08, + 0x47, 0x2e, 0x48, 0x45, 0x30, 0x30, 0xbd, 0xc0, 0x46, 0xdb, 0xf5, 0x02, 0x00, 0xd1, 0x7a, + 0x02, 0x00, 0xc9, 0x9c, 0x03, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x2a, 0x49, 0xa0, 0x8b, 0x88, + 0x42, 0x07, 0xd0, 0x60, 0x69, 0x40, 0x30, 0x2c, 0x21, 0x01, 0x22, 0x96, 0x46, 0x27, 0x4a, + 0xfe, 0x44, 0x10, 0x47, + + 0x01, 0x05, 0xff, 0xff, 0x1c, 0x78, 0x08, 0x00, 0xfa, 0x40, 0x20, 0x20, 0x62, 0x25, 0x48, + 0x29, 0x30, 0x10, 0xbd, 0xc0, 0x46, 0xdb, 0xe3, 0x03, 0x00, 0x61, 0x74, 0x08, 0x00, 0x0b, + 0xe2, 0x03, 0x00, 0x8b, 0x96, 0x01, 0x00, 0x91, 0xe5, 0x02, 0x00, 0x71, 0xe3, 0x02, 0x00, + 0x65, 0x75, 0x08, 0x00, 0xcd, 0x98, 0x01, 0x00, 0x95, 0xf4, 0x03, 0x00, 0x33, 0x70, 0x08, + 0x00, 0x31, 0x75, 0x08, 0x00, 0x00, 0xa6, 0x0e, 0x00, 0xa1, 0x75, 0x08, 0x00, 0x87, 0xca, + 0x04, 0x00, 0xfb, 0x16, 0x04, 0x00, 0x72, 0x61, 0x1a, 0x00, 0x2f, 0x4a, 0x05, 0x00, 0x65, + 0xcb, 0x04, 0x00, 0xe5, 0x75, 0x08, 0x00, 0x9b, 0xc3, 0x03, 0x00, 0x6d, 0x94, 0x05, 0x00, + 0x70, 0x61, 0x1a, 0x00, 0xf1, 0x16, 0x04, 0x00, 0x89, 0x49, 0x05, 0x00, 0xc1, 0xc0, 0x03, + 0x00, 0xfb, 0xbc, 0x03, 0x00, 0xe2, 0x04, 0x00, 0x00, 0x61, 0x48, 0x05, 0x00, 0x51, 0xc2, + 0x03, 0x00, 0x6d, 0x94, 0x05, 0x00, 0x51, 0xca, 0x04, 0x00, 0x87, 0x24, 0x04, 0x00, 0x45, + 0x25, 0x04, 0x00, 0x48, 0x53, 0x08, 0x00, 0xd9, 0xfc, 0x00, 0x00, 0x91, 0x1c, 0x04, 0x00, + 0x51, 0x8c, 0x00, 0x00, 0xff, 0xb5, 0x68, 0x46, 0xff, 0xf7, 0x6e, 0xf8, 0xff, 0xbd, 0xff, + 0xb5, 0x68, 0x46, 0xff, 0xf7, 0x07, 0xf9, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xfe, 0xf7, + 0xe4, 0xff, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xff, 0xf7, 0x0f, 0xf8, 0xff, 0xbd, 0xff, + 0xb5, 0x68, 0x46, 0xff, 0xf7, 0xfe, 0xf9, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xff, 0xf7, + 0x91, 0xfa, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xff, 0xf7, 0xdc, 0xfa, 0xff, 0xbd, 0xff, + 0xb5, 0x68, 0x46, 0xff, 0xf7, 0xa5, 0xf9, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xfe, 0xf7, + 0xa8, 0xfd, 0xff, 0xbd, + + 0x01, 0x05, 0xff, 0x5f, 0x16, 0x79, 0x08, 0x00, 0x5a, 0xff, 0xb5, 0x68, 0x46, 0xfe, 0xf7, + 0xcf, 0xfd, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xfe, 0xf7, 0x84, 0xfd, 0xff, 0xbd, 0xff, + 0xb5, 0x68, 0x46, 0xfe, 0xf7, 0x55, 0xfd, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xfe, 0xf7, + 0x65, 0xfd, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xfe, 0xf7, 0x15, 0xff, 0xff, 0xbd, 0xff, + 0xb5, 0x68, 0x46, 0xfe, 0xf7, 0x94, 0xff, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xfe, 0xf7, + 0x41, 0xff, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xfe, 0xf7, 0x44, 0xfe, 0xff, 0xbd, 0xff, + 0xb5, 0x68, 0x46, 0xfe, 0xf7, 0xdd, 0xfe, 0xff, 0xbd, + + 0x01, 0x05, 0xff, 0x8d, 0x78, 0x7b, 0x08, 0x00, 0x88, 0x00, 0xb5, 0xf9, 0xf0, 0xd5, 0xf8, + 0x00, 0xbd, 0xcb, 0x70, 0x08, 0x00, 0x5f, 0x70, 0x08, 0x00, 0x7f, 0x70, 0x08, 0x00, 0xf1, + 0x70, 0x08, 0x00, 0x01, 0x78, 0x08, 0x00, 0xfd, 0x02, 0x18, 0x00, 0x41, 0x70, 0x08, 0x00, + 0x11, 0x71, 0x08, 0x00, 0x95, 0x71, 0x08, 0x00, 0xd7, 0x71, 0x08, 0x00, 0xfb, 0x71, 0x08, + 0x00, 0x1b, 0x72, 0x08, 0x00, 0x01, 0x70, 0x08, 0x00, 0x89, 0x03, 0x18, 0x00, 0x61, 0x03, + 0x18, 0x00, 0xad, 0x72, 0x08, 0x00, 0xd1, 0x72, 0x08, 0x00, 0x2d, 0x74, 0x08, 0x00, 0x47, + 0x72, 0x08, 0x00, 0x71, 0x73, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc5, 0x73, 0x08, 0x00, + 0x3b, 0x74, 0x08, 0x00, 0xf5, 0x73, 0x08, 0x00, 0x1d, 0x74, 0x08, 0x00, 0x23, 0x74, 0x08, + 0x00, 0xb9, 0x74, 0x08, 0x00, 0xf1, 0x74, 0x08, 0x00, 0x65, 0x75, 0x08, 0x00, 0x39, 0x76, + 0x08, 0x00, 0xa5, 0x77, 0x08, 0x00, 0x87, 0x6f, 0x08, 0x00, + + 0x01, 0x05, 0xff, 0x85, 0x04, 0xf3, 0x1a, 0x00, 0x80, 0x36, 0x5e, 0x02, 0x00, 0x38, 0xc2, + 0x02, 0x00, 0x00, 0xc5, 0x02, 0x00, 0x9c, 0x9c, 0x00, 0x00, 0x70, 0x8c, 0x00, 0x00, 0x02, + 0x69, 0x00, 0x00, 0x84, 0x97, 0x00, 0x00, 0x6a, 0xa0, 0x02, 0x00, 0xf0, 0x6e, 0x03, 0x00, + 0xf0, 0x8a, 0x04, 0x00, 0x32, 0xaf, 0x02, 0x00, 0xf4, 0xf8, 0x03, 0x00, 0x24, 0x8d, 0x03, + 0x00, 0xa8, 0x55, 0x00, 0x00, 0x00, 0x16, 0x04, 0x00, 0x14, 0x85, 0x01, 0x00, 0x54, 0x82, + 0x01, 0x00, 0x42, 0x7b, 0x02, 0x00, 0xac, 0xf9, 0x03, 0x00, 0xd6, 0x7b, 0x03, 0x00, 0xff, + 0xff, 0xff, 0xff, 0x1c, 0x86, 0x00, 0x00, 0x68, 0x9d, 0x03, 0x00, 0xb4, 0xeb, 0x03, 0x00, + 0x78, 0x68, 0x03, 0x00, 0x3e, 0xf6, 0x02, 0x00, 0x3c, 0xe3, 0x03, 0x00, 0xdc, 0xe3, 0x02, + 0x00, 0xce, 0x98, 0x01, 0x00, 0x3a, 0xbd, 0x03, 0x00, 0x72, 0x25, 0x04, 0x00, 0xce, 0x44, + 0x01, 0x00, + + 0x01, 0x05, 0xff, 0xff, 0x00, 0x00, 0x18, 0x00, 0xfa, 0xff, 0xb5, 0x00, 0x93, 0x01, 0x92, + 0x02, 0x91, 0x06, 0x1c, 0xe4, 0x4f, 0x38, 0x78, 0x44, 0x1e, 0x01, 0x28, 0x02, 0xd1, 0x01, + 0x21, 0xc9, 0x03, 0x01, 0xe0, 0x7d, 0x21, 0x09, 0x02, 0xd2, 0x48, 0x01, 0x22, 0x96, 0x46, + 0xd1, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x03, 0x91, 0xd4, 0x48, 0x00, 0x78, 0x02, 0x28, 0x00, + 0xd0, 0xb8, 0xe0, 0xd3, 0x4d, 0xcd, 0x48, 0x01, 0x2e, 0x53, 0xd0, 0x06, 0x1c, 0xb0, 0x89, + 0x00, 0x2c, 0x02, 0xd0, 0x7d, 0x20, 0x00, 0x02, 0x01, 0xe0, 0x01, 0x20, 0xc0, 0x03, 0x02, + 0x99, 0x48, 0x43, 0xc7, 0x49, 0x08, 0x18, 0xf0, 0x49, 0x01, 0x22, 0x96, 0x46, 0xc6, 0x4a, + 0xfe, 0x44, 0x10, 0x47, 0xb1, 0x81, 0x38, 0x78, 0x01, 0x28, 0x02, 0xd1, 0x01, 0x20, 0xc0, + 0x03, 0x01, 0xe0, 0x7d, 0x20, 0x00, 0x02, 0xc1, 0x4c, 0x0f, 0x27, 0x21, 0x88, 0x39, 0x40, + 0x22, 0x88, 0x12, 0x09, 0x3a, 0x40, 0x8a, 0x42, 0x04, 0xdd, 0x21, 0x88, 0x09, 0x11, 0x09, + 0x07, 0x0f, 0x0f, 0x01, 0xe0, 0x21, 0x88, 0x0f, 0x40, 0x02, 0x99, 0x41, 0x43, 0xb6, 0x48, + 0x40, 0x18, 0xdf, 0x49, 0x01, 0x22, 0x96, 0x46, 0xb4, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x28, + 0x1c, 0x00, 0x8e, 0x1f, 0x22, 0x10, 0x40, 0x40, 0x18, 0xa1, 0x89, 0x11, 0x40, 0x08, 0x18, + 0x31, 0x8a, 0x08, 0x18, 0x29, 0x88, 0x09, 0x0a, 0x08, 0x18, 0x29, 0x89, 0x09, 0x0a, 0x08, + 0x18, 0x39, 0x18, 0x01, 0x98, 0x40, 0x18, 0x05, 0x30, 0x01, 0x04, 0x09, 0x0c, 0xdc, 0x48, + 0x00, 0x22, 0x01, 0x23, 0x9e, 0x46, 0xdb, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x54, 0xe0, 0x06, + 0x1c, 0x30, 0x88, 0x00, 0x2c, 0x02, 0xd0, 0x7d, 0x20, 0x00, 0x02, 0x01, 0xe0, 0x01, 0x20, + 0xc0, 0x03, 0x02, 0x99, + + 0x01, 0x05, 0xff, 0xff, 0xfa, 0x00, 0x18, 0x00, 0xfa, 0x48, 0x43, 0x9d, 0x49, 0x08, 0x18, + 0xc6, 0x49, 0x01, 0x22, 0x96, 0x46, 0x9c, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x31, 0x80, 0x38, + 0x78, 0x01, 0x28, 0x02, 0xd1, 0x01, 0x20, 0xc0, 0x03, 0x01, 0xe0, 0x7d, 0x20, 0x00, 0x02, + 0x97, 0x4c, 0x0f, 0x25, 0xa1, 0x88, 0x09, 0x09, 0x29, 0x40, 0xa2, 0x88, 0x2a, 0x40, 0x8a, + 0x42, 0x03, 0xdd, 0xa1, 0x88, 0x09, 0x07, 0x0d, 0x0f, 0x02, 0xe0, 0xa1, 0x88, 0x09, 0x09, + 0x0d, 0x40, 0x1f, 0x27, 0x02, 0x99, 0x41, 0x43, 0x8b, 0x48, 0x40, 0x18, 0xb4, 0x49, 0x01, + 0x22, 0x96, 0x46, 0x8a, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x30, 0x89, 0x38, 0x40, 0x40, 0x18, + 0xb1, 0x88, 0x39, 0x40, 0x08, 0x18, 0x21, 0x89, 0x39, 0x40, 0x08, 0x18, 0x87, 0x49, 0x09, + 0x88, 0x09, 0x0a, 0x08, 0x18, 0x85, 0x49, 0x09, 0x89, 0x09, 0x0a, 0x08, 0x18, 0x29, 0x18, + 0x01, 0x98, 0x40, 0x18, 0x05, 0x30, 0x01, 0x04, 0x09, 0x0c, 0xb1, 0x48, 0x00, 0x22, 0x01, + 0x23, 0x9e, 0x46, 0xb0, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x00, 0x98, 0x03, 0x99, 0x41, 0x18, + 0xae, 0x48, 0x40, 0x18, 0xaf, 0x49, 0x01, 0x22, 0x96, 0x46, 0x75, 0x4a, 0xfe, 0x44, 0x10, + 0x47, 0x08, 0xe0, 0xa9, 0x48, 0x00, 0x99, 0x40, 0x18, 0xaa, 0x49, 0x01, 0x22, 0x96, 0x46, + 0x70, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xc8, 0x1c, 0xa5, 0x49, 0x08, 0x80, 0x09, 0x99, 0xa6, + 0x48, 0x49, 0x1c, 0x01, 0xd0, 0x59, 0x30, 0x00, 0xe0, 0x61, 0x30, 0x00, 0x90, 0xff, 0xbd, + 0xf8, 0xb5, 0x05, 0x1c, 0x9e, 0x48, 0x40, 0x19, 0x9f, 0x49, 0x01, 0x24, 0xa6, 0x46, 0x65, + 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xc8, 0x1c, 0x9a, 0x49, 0x08, 0x80, 0x6b, 0x48, 0x00, 0x78, + 0x01, 0x28, 0x02, 0xd1, + + 0x01, 0x05, 0xff, 0xff, 0xf4, 0x01, 0x18, 0x00, 0xfa, 0x01, 0x20, 0xc0, 0x03, 0x01, 0xe0, + 0x7d, 0x20, 0x00, 0x02, 0x68, 0x43, 0x5c, 0x4e, 0x30, 0x18, 0x85, 0x49, 0xa6, 0x46, 0x5b, + 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x09, 0x04, 0x09, 0x0c, 0x94, 0x48, 0x04, 0x30, 0x06, 0x22, + 0xa6, 0x46, 0x91, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x90, 0x48, 0x5a, 0x30, 0x00, 0x21, 0xa6, + 0x46, 0x8f, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x07, 0x1c, 0x8c, 0x48, 0x08, 0x21, 0xa6, 0x46, + 0x8c, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xc7, 0x19, 0x14, 0x2f, 0x00, 0xd8, 0x14, 0x27, 0x55, + 0x48, 0x00, 0x78, 0x01, 0x28, 0x02, 0xd1, 0x01, 0x20, 0xc0, 0x03, 0x01, 0xe0, 0x7d, 0x20, + 0x00, 0x02, 0x68, 0x43, 0x30, 0x18, 0x70, 0x49, 0xa6, 0x46, 0x46, 0x4a, 0xfe, 0x44, 0x10, + 0x47, 0xc8, 0x1b, 0x05, 0x38, 0x01, 0x04, 0x09, 0x0c, 0x7d, 0x48, 0x2c, 0x30, 0x00, 0x22, + 0xa6, 0x46, 0x7a, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x7d, 0x4f, 0x38, 0x1c, 0x08, 0x21, 0xa6, + 0x46, 0x79, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x90, 0x38, 0x1c, 0x00, 0x21, 0xa6, 0x46, + 0x75, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x99, 0x88, 0x42, 0x06, 0xdd, 0x38, 0x1c, 0x00, + 0x21, 0xa6, 0x46, 0x71, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x05, 0xe0, 0x38, 0x1c, 0x08, 0x21, + 0xa6, 0x46, 0x6d, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x07, 0x1c, 0x6a, 0x48, 0x00, 0x21, 0xa6, + 0x46, 0x6a, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x3f, 0x18, 0x08, 0x37, 0x34, 0x48, 0x00, 0x78, + 0x01, 0x28, 0x02, 0xd1, 0x01, 0x20, 0xc0, 0x03, 0x01, 0xe0, 0x7d, 0x20, 0x00, 0x02, 0x68, + 0x43, 0x30, 0x18, 0x4f, 0x49, 0xa6, 0x46, 0x25, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x78, 0x18, + 0x01, 0x04, 0x09, 0x0c, + + 0x01, 0x05, 0xff, 0xff, 0xee, 0x02, 0x18, 0x00, 0xfa, 0x56, 0x48, 0x00, 0x22, 0xa6, 0x46, + 0x55, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xf8, 0xbd, 0x10, 0xb5, 0x43, 0x69, 0x5f, 0x49, 0x09, + 0x78, 0x5b, 0x4a, 0x12, 0x78, 0x01, 0x2a, 0x04, 0xd1, 0x1c, 0x78, 0x00, 0x2c, 0x01, 0xd1, + 0x5c, 0x49, 0x09, 0x78, 0x1a, 0x4c, 0x24, 0x78, 0x00, 0x2c, 0x1b, 0xd0, 0xff, 0x29, 0x19, + 0xd0, 0x01, 0x2a, 0x08, 0xd0, 0x58, 0x4a, 0x12, 0x78, 0x01, 0x2a, 0x13, 0xd0, 0x1a, 0x78, + 0x01, 0x2a, 0x01, 0xd0, 0x02, 0x2a, 0x0e, 0xd1, 0x10, 0x22, 0xd4, 0x56, 0x8c, 0x42, 0x0a, + 0xdd, 0x61, 0x1a, 0x09, 0x06, 0x09, 0x0e, 0x5b, 0x1c, 0x00, 0x24, 0x1c, 0x57, 0x64, 0x1a, + 0x1c, 0x70, 0x01, 0x33, 0x01, 0x3a, 0xf8, 0xd1, 0x48, 0x49, 0x81, 0x60, 0x48, 0x48, 0x15, + 0x30, 0x10, 0xbd, 0x4a, 0x48, 0x15, 0x30, 0xf7, 0x46, 0xc0, 0x46, 0x80, 0xc3, 0xc9, 0x01, + 0x6d, 0x94, 0x05, 0x00, 0xc0, 0x79, 0x1a, 0x00, 0x3f, 0x42, 0x0f, 0x00, 0x05, 0x9a, 0x05, + 0x00, 0x28, 0x79, 0x1a, 0x00, 0xe8, 0x57, 0x08, 0x00, 0x2c, 0x7a, 0x1a, 0x00, 0xff, 0xb5, + 0x05, 0x1c, 0x03, 0x48, 0x00, 0x78, 0x01, 0x28, 0x05, 0xd1, 0x01, 0x26, 0xf6, 0x03, 0x04, + 0xe0, 0xc0, 0x46, 0x5e, 0x56, 0x08, 0x00, 0x7d, 0x26, 0x36, 0x02, 0x28, 0x48, 0x00, 0x21, + 0x01, 0x24, 0xa6, 0x46, 0x38, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x01, 0x1c, 0x19, 0x48, 0x48, + 0x43, 0x31, 0x1c, 0xa6, 0x46, 0x3b, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x01, 0x91, 0x6d, 0x69, + 0xee, 0x7a, 0x28, 0x1c, 0x21, 0x1c, 0xa6, 0x46, 0x31, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x07, + 0x1c, 0x28, 0x1c, 0x05, 0x21, 0xa6, 0x46, 0x2d, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x02, 0x90, + 0x28, 0x7f, 0x03, 0x90, + + 0x01, 0x05, 0xff, 0xff, 0xe8, 0x03, 0x18, 0x00, 0xfa, 0xed, 0x7e, 0xff, 0x2e, 0x04, 0xd0, + 0x30, 0x1c, 0xa6, 0x46, 0x29, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x78, 0x1c, 0x19, 0xd0, 0x1b, + 0x48, 0x0a, 0x21, 0xa6, 0x46, 0x26, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x06, 0x28, 0x09, 0xd0, + 0x01, 0x2e, 0x07, 0xd0, 0x38, 0x1c, 0xa6, 0x46, 0x22, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x09, + 0xe0, 0x40, 0x42, 0x0f, 0x00, 0x38, 0x1c, 0x31, 0x1c, 0x03, 0x9a, 0x2b, 0x1c, 0xa6, 0x46, + 0x1e, 0x4e, 0xfe, 0x44, 0x30, 0x47, 0x02, 0x98, 0x00, 0x90, 0x28, 0x1c, 0x39, 0x1c, 0x03, + 0x9a, 0x01, 0x9b, 0xa6, 0x46, 0x1a, 0x4c, 0xfe, 0x44, 0x20, 0x47, 0x00, 0x90, 0xff, 0xbd, + 0x04, 0x60, 0x1a, 0x00, 0xc9, 0x49, 0x05, 0x00, 0xe1, 0x04, 0x00, 0x00, 0x48, 0x53, 0x08, + 0x00, 0xe2, 0x04, 0x00, 0x00, 0x71, 0x55, 0x00, 0x00, 0x93, 0x49, 0x05, 0x00, 0x16, 0x74, + 0x1a, 0x00, 0x6b, 0x4a, 0x05, 0x00, 0x42, 0x74, 0x1a, 0x00, 0x44, 0x74, 0x1a, 0x00, 0xc6, + 0x63, 0x08, 0x00, 0x10, 0x30, 0x19, 0x00, 0xef, 0x68, 0x00, 0x00, 0xc1, 0x63, 0x08, 0x00, + 0xc0, 0x63, 0x08, 0x00, 0xc3, 0x63, 0x08, 0x00, 0xff, 0x15, 0x04, 0x00, 0xa7, 0x4a, 0x05, + 0x00, 0xe5, 0x2b, 0x00, 0x00, 0x81, 0x42, 0x02, 0x00, 0x4d, 0x4a, 0x05, 0x00, 0xd3, 0x01, + 0x18, 0x00, 0x55, 0x3f, 0x02, 0x00, 0x01, 0x00, 0x18, 0x00, 0x6d, 0x94, 0x05, 0x00, 0x70, + 0xb5, 0xde, 0x4d, 0xae, 0x7f, 0x01, 0x24, 0xa6, 0x46, 0xda, 0x48, 0xfe, 0x44, 0x00, 0x47, + 0xb0, 0x42, 0xf8, 0xd1, 0x03, 0x20, 0x17, 0x21, 0x89, 0x01, 0xa6, 0x46, 0xd6, 0x4a, 0xfe, + 0x44, 0x10, 0x47, 0xad, 0x7f, 0xa6, 0x46, 0xd3, 0x48, 0xfe, 0x44, 0x00, 0x47, 0xa8, 0x42, + 0xf9, 0xd1, 0xfe, 0xe7, + + 0x01, 0x05, 0xff, 0xff, 0xe2, 0x04, 0x18, 0x00, 0xfa, 0xf0, 0xb5, 0x88, 0xb0, 0x0b, 0x21, + 0x09, 0x18, 0x68, 0x46, 0x0c, 0x22, 0x01, 0x24, 0xa6, 0x46, 0xd8, 0x4b, 0xfe, 0x44, 0x18, + 0x47, 0x68, 0x46, 0x01, 0x78, 0x03, 0x91, 0x45, 0x78, 0x81, 0x78, 0x04, 0x91, 0xc0, 0x78, + 0x05, 0x90, 0x01, 0x98, 0x06, 0x90, 0x02, 0x98, 0x07, 0x90, 0xa6, 0x46, 0xc7, 0x48, 0xfe, + 0x44, 0x00, 0x47, 0xcf, 0x4f, 0x38, 0x78, 0xc9, 0x4e, 0x81, 0x09, 0x16, 0xd3, 0x14, 0x20, + 0xb0, 0x80, 0xc8, 0x20, 0xa6, 0x46, 0xcc, 0x49, 0xfe, 0x44, 0x08, 0x47, 0xc0, 0x48, 0x00, + 0x21, 0xa6, 0x46, 0xc0, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xbf, 0x48, 0x03, 0x21, 0xa6, 0x46, + 0xbf, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x39, 0x78, 0xdf, 0x20, 0x08, 0x40, 0x38, 0x70, 0xc0, + 0x09, 0x0a, 0xd3, 0x24, 0x20, 0xb0, 0x80, 0xc8, 0x20, 0xa6, 0x46, 0xbf, 0x49, 0xfe, 0x44, + 0x08, 0x47, 0x39, 0x78, 0xbf, 0x20, 0x08, 0x40, 0x38, 0x70, 0xb7, 0x48, 0x07, 0x2d, 0x09, + 0xd0, 0xaa, 0x00, 0xb6, 0x49, 0x0b, 0x1c, 0x38, 0x3b, 0x9b, 0x58, 0x05, 0x1c, 0xab, 0x60, + 0x88, 0x58, 0x07, 0x90, 0x02, 0xe0, 0x05, 0x1c, 0x06, 0x98, 0xa8, 0x60, 0x07, 0x98, 0x68, + 0x60, 0x28, 0x1c, 0x00, 0x21, 0xa6, 0x46, 0xaa, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x03, 0x98, + 0x80, 0x1e, 0xac, 0x49, 0x10, 0xd0, 0x01, 0x38, 0x0c, 0xd0, 0x01, 0x38, 0x01, 0xd0, 0x02, + 0x20, 0x0b, 0xe0, 0x04, 0x98, 0x40, 0x06, 0x80, 0x0c, 0x78, 0x30, 0x88, 0x83, 0x15, 0x20, + 0xb0, 0x80, 0x20, 0x20, 0x10, 0xe0, 0x20, 0x1c, 0x00, 0xe0, 0x00, 0x20, 0x80, 0x07, 0x82, + 0x0f, 0x05, 0x98, 0x00, 0x07, 0x40, 0x0e, 0x80, 0x18, 0x04, 0x9a, 0x52, 0x06, 0x92, 0x0c, + 0x10, 0x18, 0x08, 0x80, + + 0x01, 0x05, 0xff, 0xff, 0xdc, 0x05, 0x18, 0x00, 0xfa, 0x11, 0x20, 0x30, 0x80, 0x04, 0x20, + 0x39, 0x78, 0x08, 0x43, 0x38, 0x70, 0x03, 0x98, 0x00, 0x28, 0x05, 0xd0, 0x91, 0x48, 0x00, + 0x21, 0xa6, 0x46, 0x92, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xc8, 0x20, 0xa6, 0x46, 0x97, 0x49, + 0xfe, 0x44, 0x08, 0x47, 0x8d, 0x48, 0x0c, 0x21, 0xa6, 0x46, 0x8d, 0x4a, 0xfe, 0x44, 0x10, + 0x47, 0x03, 0x98, 0x00, 0x28, 0x02, 0xd0, 0xff, 0x20, 0x02, 0x30, 0x28, 0x80, 0x08, 0xb0, + 0xf0, 0xbd, 0xf8, 0xb5, 0xc1, 0x7a, 0x00, 0x91, 0x07, 0x7b, 0x00, 0x2f, 0x03, 0xd0, 0x01, + 0x2f, 0x02, 0xd1, 0x01, 0x27, 0x00, 0xe0, 0x02, 0x27, 0x01, 0x24, 0xa6, 0x46, 0x7d, 0x48, + 0xfe, 0x44, 0x00, 0x47, 0x85, 0x4e, 0x30, 0x78, 0x7f, 0x4d, 0x81, 0x09, 0x16, 0xd3, 0x14, + 0x20, 0xa8, 0x80, 0xc8, 0x20, 0xa6, 0x46, 0x82, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x76, 0x48, + 0x00, 0x21, 0xa6, 0x46, 0x76, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x75, 0x48, 0x03, 0x21, 0xa6, + 0x46, 0x75, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x31, 0x78, 0xdf, 0x20, 0x08, 0x40, 0x30, 0x70, + 0xc0, 0x09, 0x0a, 0xd3, 0x24, 0x20, 0xa8, 0x80, 0xc8, 0x20, 0xa6, 0x46, 0x75, 0x49, 0xfe, + 0x44, 0x08, 0x47, 0x31, 0x78, 0xbf, 0x20, 0x08, 0x40, 0x30, 0x70, 0x73, 0x48, 0x01, 0x78, + 0x6e, 0x48, 0x01, 0x29, 0x12, 0xd0, 0x00, 0x99, 0x89, 0x01, 0x41, 0x80, 0x87, 0x80, 0x21, + 0x20, 0x28, 0x80, 0xc8, 0x20, 0xa6, 0x46, 0x6b, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x62, 0x48, + 0x0c, 0x21, 0xa6, 0x46, 0x61, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x02, 0x20, 0x13, 0xe0, 0x00, + 0x99, 0x8a, 0x01, 0x02, 0x21, 0x11, 0x43, 0xc1, 0x83, 0x07, 0x84, 0x25, 0x20, 0xa8, 0x80, + 0xc8, 0x20, 0xa6, 0x46, + + 0x01, 0x05, 0xff, 0xff, 0xd6, 0x06, 0x18, 0x00, 0xfa, 0x61, 0x49, 0xfe, 0x44, 0x08, 0x47, + 0x57, 0x48, 0x0c, 0x21, 0xa6, 0x46, 0x57, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x40, 0x20, 0x31, + 0x78, 0x08, 0x43, 0x30, 0x70, 0xf8, 0xbd, 0xf8, 0xb5, 0x00, 0x92, 0x0f, 0x1c, 0x05, 0x1c, + 0x61, 0x48, 0x01, 0x78, 0x01, 0x24, 0x58, 0x4e, 0xb5, 0x42, 0x0e, 0xdc, 0x5b, 0x48, 0xb5, + 0x42, 0x4e, 0xd0, 0x44, 0x4a, 0xaa, 0x1a, 0x52, 0xd0, 0x01, 0x3a, 0x49, 0xd0, 0x04, 0x3a, + 0x32, 0xd0, 0x68, 0x3a, 0x4c, 0xd0, 0x01, 0x3a, 0x50, 0xd0, 0x3a, 0xe0, 0x30, 0x1c, 0x2f, + 0x30, 0x28, 0x1a, 0x3a, 0xd0, 0x24, 0x38, 0x36, 0xd0, 0x01, 0x38, 0x18, 0xd0, 0x01, 0x38, + 0x30, 0xd1, 0x47, 0x48, 0x6d, 0x30, 0x00, 0x78, 0x02, 0x28, 0x0e, 0xd1, 0xf8, 0x7a, 0x00, + 0x07, 0x00, 0x0f, 0x47, 0x49, 0x0a, 0x1c, 0xb6, 0x3a, 0x10, 0x70, 0x02, 0x01, 0x02, 0x43, + 0x12, 0x01, 0x02, 0x43, 0x12, 0x01, 0x02, 0x43, 0x0a, 0x80, 0x0b, 0xe0, 0x0c, 0x20, 0x18, + 0x70, 0x08, 0xe0, 0x01, 0x29, 0x01, 0xd0, 0x04, 0x29, 0x04, 0xd1, 0x38, 0x1c, 0xa6, 0x46, + 0x3e, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x25, 0x1c, 0x00, 0x98, 0x05, 0x70, 0x4c, 0xe0, 0x00, + 0x29, 0x4a, 0xd1, 0xb8, 0x7d, 0x01, 0x28, 0x47, 0xd1, 0x04, 0x20, 0xa6, 0x46, 0x38, 0x49, + 0xfe, 0x44, 0x08, 0x47, 0xff, 0x20, 0xb8, 0x75, 0x3f, 0xe0, 0x00, 0x24, 0x3d, 0xe0, 0x39, + 0x48, 0x00, 0xe0, 0x2f, 0x48, 0xf9, 0x7a, 0x01, 0x70, 0xe6, 0xe7, 0x00, 0x21, 0x06, 0x22, + 0xa6, 0x46, 0x35, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x30, 0xe0, 0x03, 0x21, 0x06, 0x22, 0xa6, + 0x46, 0x32, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x31, 0x48, 0x00, 0x68, 0x00, 0x28, 0x13, 0xd1, + 0x04, 0x3e, 0xb5, 0x42, + + 0x01, 0x05, 0xff, 0xd1, 0xd0, 0x07, 0x18, 0x00, 0xcc, 0x09, 0xd0, 0x13, 0x48, 0x85, 0x42, + 0x20, 0xd1, 0x38, 0x1c, 0x25, 0x1c, 0xa6, 0x46, 0x26, 0x49, 0xfe, 0x44, 0x08, 0x47, 0xc9, + 0xe7, 0x38, 0x1c, 0x25, 0x1c, 0xa6, 0x46, 0x23, 0x49, 0xfe, 0x44, 0x08, 0x47, 0xc2, 0xe7, + 0x04, 0x20, 0xa6, 0x46, 0x25, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x47, 0x21, 0x09, 0x02, 0x01, + 0x80, 0x87, 0x80, 0x39, 0x0c, 0xc1, 0x80, 0xa6, 0x46, 0x21, 0x49, 0xfe, 0x44, 0x08, 0x47, + 0x21, 0x48, 0x9e, 0x30, 0x06, 0x99, 0x08, 0x62, 0x20, 0x1c, 0xf8, 0xbd, 0xc0, 0x46, 0x17, + 0xfd, 0x00, 0x00, 0x8b, 0x05, 0x05, 0x00, 0xf5, 0xd3, 0x04, 0x00, 0x8c, 0x4f, 0x08, 0x00, + 0x0d, 0x82, 0x03, 0x00, 0x0d, 0x18, 0x19, 0x00, 0x79, 0x48, 0x05, 0x00, 0x62, 0x1c, 0x19, + 0x00, 0x61, 0x48, 0x05, 0x00, 0x44, 0x24, 0x19, 0x00, 0x0c, 0x18, 0x19, 0x00, 0xc8, 0x8d, + 0x06, 0x00, 0x00, 0x30, 0x19, 0x00, 0x21, 0xa7, 0x05, 0x00, 0xd4, 0x0f, 0x08, 0x00, 0xbb, + 0x16, 0x04, 0x00, 0xc8, 0x63, 0x08, 0x00, 0x88, 0xfd, 0x00, 0x00, 0x4c, 0xa6, 0x1b, 0x00, + 0x6d, 0x09, 0x18, 0x00, 0xe1, 0x42, 0x02, 0x00, 0x6a, 0x0a, 0x1a, 0x00, 0x21, 0x06, 0x18, + 0x00, 0xe3, 0x04, 0x18, 0x00, 0xe8, 0x57, 0x08, 0x00, 0xc9, 0x63, 0x08, 0x00, 0x91, 0x48, + 0x05, 0x00, 0x2c, 0x51, 0x08, 0x00, 0x9b, 0x60, 0x04, 0x00, 0xe9, 0x3f, 0x05, 0x00, 0x81, + 0x60, 0x00, 0x00, + + 0x01, 0x05, 0xff, 0xff, 0xd0, 0x2d, 0x18, 0x00, 0xfa, 0xf0, 0xb5, 0xc6, 0x48, 0x00, 0x78, + 0x02, 0x28, 0x00, 0xd0, 0x9e, 0xe0, 0xc5, 0x48, 0x05, 0x21, 0x01, 0x25, 0xae, 0x46, 0xc4, + 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x01, 0x1c, 0xc0, 0x48, 0x00, 0x22, 0xae, 0x46, 0xf3, 0x4b, + 0xfe, 0x44, 0x18, 0x47, 0xf2, 0x48, 0x00, 0x78, 0x00, 0x28, 0x18, 0xd1, 0x13, 0x20, 0xbe, + 0x49, 0x08, 0x80, 0x03, 0x27, 0x39, 0x1c, 0x28, 0x1c, 0xae, 0x46, 0xbc, 0x4a, 0xfe, 0x44, + 0x10, 0x47, 0xec, 0x4e, 0x30, 0x1c, 0x0a, 0x30, 0x39, 0x1c, 0xae, 0x46, 0xb9, 0x4a, 0xfe, + 0x44, 0x10, 0x47, 0x30, 0x1c, 0x00, 0x21, 0x0c, 0x22, 0xae, 0x46, 0xe4, 0x4b, 0xfe, 0x44, + 0x18, 0x47, 0xb6, 0x4c, 0x27, 0x1c, 0x02, 0x3f, 0x38, 0x1c, 0x02, 0x21, 0x00, 0x22, 0xae, + 0x46, 0xb1, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xb2, 0x4e, 0x30, 0x1c, 0xc8, 0x38, 0x20, 0x60, + 0x38, 0x1c, 0x03, 0x21, 0x00, 0x22, 0xae, 0x46, 0xac, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x26, + 0x60, 0x38, 0x1c, 0x04, 0x21, 0x00, 0x22, 0xae, 0x46, 0xa8, 0x4b, 0xfe, 0x44, 0x18, 0x47, + 0xa9, 0x4e, 0x30, 0x1c, 0xd1, 0x38, 0x20, 0x60, 0x38, 0x1c, 0x05, 0x21, 0x00, 0x22, 0xae, + 0x46, 0xa2, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x26, 0x60, 0x38, 0x1c, 0x06, 0x21, 0x00, 0x22, + 0xae, 0x46, 0x9e, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x30, 0x1c, 0x32, 0x30, 0x20, 0x60, 0x38, + 0x1c, 0x07, 0x21, 0x00, 0x22, 0xae, 0x46, 0x99, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x30, 0x1c, + 0x62, 0x30, 0x20, 0x60, 0x38, 0x1c, 0x08, 0x21, 0x00, 0x22, 0xae, 0x46, 0x94, 0x4b, 0xfe, + 0x44, 0x18, 0x47, 0xc2, 0x36, 0x26, 0x60, 0x38, 0x1c, 0x09, 0x21, 0x00, 0x22, 0xae, 0x46, + 0x90, 0x4b, 0xfe, 0x44, + + 0x01, 0x05, 0xff, 0xff, 0xca, 0x2e, 0x18, 0x00, 0xfa, 0x18, 0x47, 0xe9, 0x48, 0x20, 0x60, + 0x38, 0x1c, 0x0a, 0x21, 0x00, 0x22, 0xae, 0x46, 0x8b, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xe6, + 0x48, 0x20, 0x60, 0x38, 0x1c, 0x0b, 0x21, 0x00, 0x22, 0xae, 0x46, 0x87, 0x4b, 0xfe, 0x44, + 0x18, 0x47, 0xe2, 0x48, 0x20, 0x60, 0xe2, 0x48, 0x00, 0x88, 0x80, 0x0b, 0x0e, 0xd3, 0x00, + 0x22, 0x10, 0x1c, 0xc3, 0x00, 0xe0, 0x49, 0x0c, 0x1c, 0x02, 0x3c, 0xe4, 0x18, 0x25, 0x88, + 0x2d, 0x06, 0x2d, 0x0e, 0x25, 0x80, 0xca, 0x52, 0x01, 0x30, 0x14, 0x28, 0xf2, 0xdb, 0xf0, + 0xbd, 0x10, 0xb5, 0x73, 0x48, 0x00, 0x78, 0x00, 0x28, 0x32, 0xd0, 0x02, 0x28, 0x3b, 0xd1, + 0xd7, 0x48, 0x48, 0x21, 0x09, 0x18, 0x0b, 0x88, 0x01, 0x22, 0x1a, 0x43, 0x0a, 0x80, 0xd1, + 0x4a, 0x70, 0x3a, 0x13, 0x88, 0x9b, 0x10, 0x9b, 0x00, 0x13, 0x80, 0x7c, 0x23, 0x8a, 0x8e, + 0x9a, 0x43, 0x32, 0x23, 0x13, 0x43, 0x8b, 0x86, 0xce, 0x4b, 0x19, 0x88, 0x49, 0x09, 0x4a, + 0x01, 0x08, 0x21, 0x11, 0x43, 0x19, 0x80, 0x01, 0x88, 0x49, 0x10, 0x49, 0x00, 0x01, 0x80, + 0xca, 0x4b, 0xff, 0x24, 0x19, 0x88, 0x21, 0x40, 0x03, 0x22, 0x12, 0x02, 0x0a, 0x43, 0x1a, + 0x80, 0x19, 0x89, 0x21, 0x40, 0xff, 0x22, 0x01, 0x32, 0x0a, 0x43, 0x1a, 0x81, 0x02, 0x22, + 0x01, 0x88, 0x91, 0x43, 0x01, 0x80, 0x10, 0xbd, 0x07, 0x21, 0x09, 0x02, 0xc0, 0x48, 0x0a, + 0x1c, 0x01, 0x24, 0xa6, 0x46, 0xbf, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xbf, 0x48, 0x04, 0x70, + 0x10, 0xbd, 0xf0, 0xb5, 0xbe, 0x4d, 0x06, 0x26, 0x2e, 0x70, 0x0f, 0x20, 0x68, 0x70, 0x3d, + 0x20, 0xa8, 0x70, 0x4d, 0x20, 0xe8, 0x70, 0x03, 0x20, 0x32, 0x1c, 0x0f, 0x23, 0xd2, 0x49, + 0xe4, 0x31, 0x01, 0x24, + + 0x01, 0x05, 0xff, 0xff, 0xc4, 0x2f, 0x18, 0x00, 0xfa, 0xa6, 0x46, 0xb7, 0x4f, 0xfe, 0x44, + 0x38, 0x47, 0xaa, 0x78, 0xeb, 0x78, 0x03, 0x20, 0xcd, 0x49, 0xe5, 0x31, 0xa6, 0x46, 0xb2, + 0x4d, 0xfe, 0x44, 0x28, 0x47, 0x03, 0x20, 0xc9, 0x49, 0xe6, 0x31, 0xa6, 0x46, 0xb0, 0x4a, + 0xfe, 0x44, 0x10, 0x47, 0xa6, 0x46, 0xaf, 0x48, 0xfe, 0x44, 0x00, 0x47, 0xae, 0x4a, 0x00, + 0x21, 0x08, 0x1c, 0x13, 0x68, 0x00, 0x2b, 0x04, 0xd0, 0x03, 0x07, 0x1d, 0x0f, 0x23, 0x1c, + 0xab, 0x40, 0x19, 0x43, 0x03, 0x07, 0x1b, 0x0f, 0xa9, 0x4d, 0x0f, 0x2b, 0x04, 0xd1, 0xc7, + 0x08, 0x33, 0x1c, 0x3b, 0x40, 0xe9, 0x52, 0x00, 0x21, 0x04, 0x32, 0x01, 0x30, 0x20, 0x28, + 0xe9, 0xd3, 0xa4, 0x4e, 0x30, 0x78, 0x81, 0x08, 0x07, 0xd2, 0x28, 0x1c, 0x02, 0x30, 0x0f, + 0x21, 0xa6, 0x46, 0xa1, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x30, 0x78, 0xc0, 0x08, 0x05, 0xd2, + 0x28, 0x1c, 0x0c, 0x21, 0xa6, 0x46, 0x9c, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x9c, 0x48, 0x00, + 0x21, 0xa6, 0x46, 0x99, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x26, 0x99, 0x48, 0x06, 0x70, + 0x99, 0x48, 0x06, 0x70, 0x46, 0x70, 0x19, 0x20, 0x40, 0x01, 0x98, 0x49, 0x08, 0x80, 0xff, + 0x21, 0x97, 0x48, 0x01, 0x70, 0x97, 0x48, 0x01, 0x70, 0x97, 0x48, 0x06, 0x70, 0x98, 0x48, + 0x97, 0x4a, 0x10, 0x60, 0x98, 0x48, 0x24, 0x22, 0x02, 0x70, 0x18, 0x22, 0x42, 0x70, 0x20, + 0x22, 0x82, 0x70, 0x10, 0x22, 0xc2, 0x70, 0x98, 0x4d, 0x28, 0x1c, 0x00, 0x0a, 0x93, 0x4a, + 0x10, 0x80, 0x93, 0x48, 0x01, 0x70, 0xa6, 0x46, 0x92, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x92, + 0x4f, 0xa6, 0x46, 0x93, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x39, 0x88, 0x01, 0x40, 0x48, 0x08, + 0x04, 0xd0, 0x00, 0x20, + + 0x01, 0x05, 0xff, 0xff, 0xbe, 0x30, 0x18, 0x00, 0xfa, 0xc0, 0x43, 0x45, 0x19, 0x85, 0x42, + 0xf2, 0xd1, 0xa6, 0x46, 0x8c, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x39, 0x88, 0x01, 0x40, 0x48, + 0x08, 0x04, 0xd0, 0x5c, 0x20, 0xa6, 0x46, 0x89, 0x49, 0xfe, 0x44, 0x08, 0x47, 0xa6, 0x46, + 0x88, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x3e, 0x80, 0xf0, 0xbd, 0xe8, 0x57, 0x08, 0x00, 0x6a, + 0x31, 0x19, 0x00, 0xc4, 0x61, 0x1a, 0x00, 0x57, 0x4a, 0x05, 0x00, 0x9e, 0x13, 0x08, 0x00, + 0x21, 0x99, 0x05, 0x00, 0x61, 0x48, 0x05, 0x00, 0xff, 0x48, 0x05, 0x00, 0x0c, 0x60, 0x1a, + 0x00, 0xdc, 0x09, 0x04, 0x00, 0x25, 0x0d, 0x04, 0x00, 0xf0, 0xb5, 0x94, 0xb0, 0x7b, 0x48, + 0x06, 0xc8, 0x6d, 0x46, 0x68, 0x46, 0x06, 0xc0, 0x7a, 0x48, 0x06, 0xc8, 0x02, 0xa8, 0x06, + 0xc0, 0x79, 0x48, 0x06, 0xc8, 0x04, 0xa8, 0x06, 0xc0, 0x78, 0x48, 0x06, 0xc8, 0x06, 0xa8, + 0x06, 0xc0, 0x77, 0x48, 0x06, 0xc8, 0x08, 0xa8, 0x06, 0xc0, 0x76, 0x48, 0x06, 0xc8, 0x0a, + 0xa8, 0x06, 0xc0, 0x75, 0x48, 0x06, 0xc8, 0x0c, 0xa8, 0x06, 0xc0, 0x74, 0x48, 0x06, 0xc8, + 0x0e, 0xa8, 0x06, 0xc0, 0x73, 0x48, 0x06, 0xc8, 0x10, 0xa8, 0x06, 0xc0, 0x72, 0x48, 0x06, + 0xc8, 0x12, 0xa8, 0x06, 0xc0, 0x0c, 0x20, 0x01, 0x1c, 0x71, 0x4e, 0x30, 0x1c, 0x48, 0x30, + 0x01, 0x24, 0xa6, 0x46, 0x72, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x10, 0x48, 0x00, 0x78, 0x00, + 0x28, 0x20, 0xd1, 0x03, 0x27, 0x39, 0x1c, 0x69, 0x48, 0xa6, 0x46, 0x6d, 0x4a, 0xfe, 0x44, + 0x10, 0x47, 0x35, 0x48, 0x39, 0x1c, 0xa6, 0x46, 0x6a, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x08, + 0x48, 0x00, 0x21, 0x0c, 0x22, 0xa6, 0x46, 0x04, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x2f, 0x48, + 0x02, 0x21, 0xa6, 0x46, + + 0x01, 0x05, 0xff, 0xff, 0xb8, 0x31, 0x18, 0x00, 0xfa, 0x40, 0x4a, 0xfe, 0x44, 0x10, 0x47, + 0x05, 0xe0, 0xd3, 0x48, 0x05, 0x00, 0x62, 0x56, 0x08, 0x00, 0x14, 0xf6, 0x1a, 0x00, 0x30, + 0x1c, 0x04, 0x21, 0xa6, 0x46, 0x3a, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x39, 0x48, 0x02, 0x21, + 0xa6, 0x46, 0x5a, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x55, 0x48, 0x0e, 0x99, 0x01, 0x60, 0xa9, + 0x8f, 0x81, 0x80, 0x10, 0x99, 0x81, 0x60, 0x11, 0xa9, 0x09, 0x88, 0x81, 0x81, 0x12, 0x99, + 0x01, 0x61, 0x13, 0xa9, 0x09, 0x88, 0x81, 0x82, 0x42, 0x21, 0x4e, 0x4d, 0x28, 0x1c, 0x60, + 0x30, 0x01, 0x60, 0x21, 0x1c, 0x28, 0x1c, 0xa6, 0x46, 0x4d, 0x4a, 0xfe, 0x44, 0x10, 0x47, + 0x28, 0x1c, 0xa0, 0x38, 0x00, 0x99, 0x01, 0x60, 0x01, 0x99, 0x41, 0x60, 0x02, 0x99, 0x81, + 0x60, 0x03, 0x99, 0xc1, 0x60, 0x04, 0x99, 0x01, 0x61, 0x05, 0x99, 0x41, 0x61, 0x06, 0x99, + 0x81, 0x62, 0x07, 0x99, 0xc1, 0x62, 0x08, 0x99, 0x81, 0x63, 0x09, 0x99, 0xc1, 0x63, 0x0a, + 0x99, 0x01, 0x65, 0x0b, 0x99, 0x41, 0x65, 0x0c, 0x99, 0x81, 0x66, 0x0d, 0x99, 0xc1, 0x66, + 0x28, 0x1c, 0x04, 0x30, 0x21, 0x1c, 0xa6, 0x46, 0x3a, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xa6, + 0x46, 0x37, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x14, 0xb0, 0xf0, 0xbd, 0xc0, 0x46, 0x1e, 0xf6, + 0x1a, 0x00, 0x2f, 0x0e, 0x04, 0x00, 0x6a, 0x12, 0x40, 0x00, 0x85, 0x12, 0x00, 0x00, 0x5c, + 0x7b, 0x1a, 0x00, 0x04, 0x09, 0x1a, 0x00, 0x24, 0x79, 0x1a, 0x00, 0x54, 0x7d, 0x1a, 0x00, + 0x2c, 0x7a, 0x1a, 0x00, 0x00, 0x74, 0x1a, 0x00, 0xdb, 0x4a, 0x05, 0x00, 0x08, 0x51, 0x08, + 0x00, 0x0c, 0x51, 0x08, 0x00, 0x0b, 0xd4, 0x04, 0x00, 0xf5, 0xd3, 0x04, 0x00, 0x89, 0x0b, + 0x18, 0x00, 0x80, 0x7b, + + 0x01, 0x05, 0xff, 0x9f, 0xb2, 0x32, 0x18, 0x00, 0x9a, 0x08, 0x00, 0x84, 0xf3, 0x1a, 0x00, + 0xb2, 0x50, 0x08, 0x00, 0x79, 0x48, 0x05, 0x00, 0x78, 0x61, 0x1a, 0x00, 0x65, 0x63, 0x08, + 0x00, 0x60, 0x63, 0x08, 0x00, 0xcc, 0x24, 0x08, 0x00, 0xc0, 0x63, 0x08, 0x00, 0xc1, 0x63, + 0x08, 0x00, 0xca, 0x63, 0x08, 0x00, 0xf4, 0x62, 0x08, 0x00, 0x36, 0xa0, 0x1b, 0x00, 0x68, + 0x63, 0x08, 0x00, 0x4c, 0x25, 0x08, 0x00, 0xc3, 0x63, 0x08, 0x00, 0x19, 0x31, 0x18, 0x00, + 0x00, 0x7c, 0x1a, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x07, 0xff, 0x03, 0x00, 0xd7, 0xd3, 0x04, + 0x00, 0x1d, 0x2f, 0x18, 0x00, 0xe1, 0x04, 0x00, 0x00, 0xa4, 0x62, 0x08, 0x00, 0xac, 0x62, + 0x08, 0x00, 0xb4, 0x62, 0x08, 0x00, 0xbc, 0x62, 0x08, 0x00, 0xc4, 0x62, 0x08, 0x00, 0xcc, + 0x62, 0x08, 0x00, 0xd4, 0x62, 0x08, 0x00, 0xdc, 0x62, 0x08, 0x00, 0xe4, 0x62, 0x08, 0x00, + 0xec, 0x62, 0x08, 0x00, 0x08, 0xf0, 0x1a, 0x00, 0x10, 0x60, 0x1a, 0x00, 0x98, 0x0b, 0x1a, + 0x00, 0xa0, 0x09, 0x1a, 0x00, 0xd1, 0x2d, 0x18, 0x00, 0x61, 0x48, 0x05, 0x00, + + 0x01, 0x05, 0xff, 0xff, 0xfc, 0x08, 0x18, 0x00, 0xfa, 0xf0, 0xb5, 0xd6, 0x49, 0x0d, 0x78, + 0x14, 0x2d, 0x2c, 0xda, 0xd8, 0x4c, 0x26, 0x1c, 0x30, 0x3e, 0x68, 0x1c, 0x00, 0x06, 0x00, + 0x0e, 0x30, 0x70, 0xd1, 0x4b, 0xaa, 0x00, 0xd1, 0x4f, 0x9f, 0x50, 0x14, 0x28, 0x18, 0xda, + 0xaa, 0x1c, 0x12, 0x06, 0x12, 0x0e, 0x72, 0x70, 0x80, 0x00, 0xce, 0x4e, 0x1e, 0x50, 0x14, + 0x2a, 0x08, 0xda, 0xe8, 0x1c, 0x20, 0x70, 0x90, 0x00, 0xcc, 0x4a, 0x1a, 0x50, 0x08, 0x78, + 0x03, 0x30, 0x08, 0x70, 0xf0, 0xbd, 0x0a, 0x70, 0x01, 0x20, 0x86, 0x46, 0xc9, 0x48, 0xfe, + 0x44, 0x00, 0x47, 0xfe, 0xe7, 0x08, 0x70, 0x01, 0x20, 0x86, 0x46, 0xc5, 0x48, 0xfe, 0x44, + 0x00, 0x47, 0xfe, 0xe7, 0x01, 0x20, 0x86, 0x46, 0xc2, 0x48, 0xfe, 0x44, 0x00, 0x47, 0xfe, + 0xe7, 0xf8, 0xb5, 0x00, 0x90, 0xc5, 0x7a, 0xc0, 0x49, 0x0d, 0x70, 0x02, 0x7b, 0xbf, 0x49, + 0x0a, 0x70, 0xbf, 0x49, 0x04, 0x1c, 0x63, 0x7b, 0x0b, 0x70, 0xbe, 0x48, 0xa4, 0x7b, 0x04, + 0x70, 0xc7, 0x4e, 0x00, 0x2d, 0x00, 0xd0, 0xba, 0xe0, 0xc0, 0x4a, 0x15, 0x1c, 0x8c, 0x3d, + 0xca, 0x4f, 0xbf, 0x0b, 0x01, 0x24, 0xa6, 0x46, 0xb8, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x29, + 0x88, 0x01, 0x40, 0x48, 0x08, 0x05, 0xd0, 0x38, 0x1c, 0x41, 0x1e, 0x0f, 0x04, 0x3f, 0x0c, + 0x00, 0x28, 0xf0, 0xd1, 0xa6, 0x46, 0xb1, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x29, 0x88, 0x01, + 0x40, 0x48, 0x08, 0x04, 0xd0, 0x58, 0x20, 0xa6, 0x46, 0xae, 0x49, 0xfe, 0x44, 0x08, 0x47, + 0xaa, 0x48, 0x00, 0x78, 0xac, 0x4f, 0x01, 0x28, 0x32, 0xd0, 0x00, 0x20, 0x01, 0x1c, 0x0c, + 0x20, 0x02, 0x1c, 0x38, 0x1c, 0xa6, 0x46, 0xa9, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xa8, 0x48, + 0x00, 0x21, 0x08, 0x22, + + 0x01, 0x05, 0xff, 0xff, 0xf6, 0x09, 0x18, 0x00, 0xfa, 0xa6, 0x46, 0xa7, 0x4b, 0xfe, 0x44, + 0x18, 0x47, 0xa5, 0x4f, 0x24, 0x37, 0x38, 0x1c, 0x21, 0x1c, 0x0c, 0x22, 0xa6, 0x46, 0xa4, + 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x07, 0x20, 0x01, 0x1c, 0x20, 0x1c, 0xa6, 0x46, 0xa1, 0x4a, + 0xfe, 0x44, 0x10, 0x47, 0x14, 0x20, 0xa6, 0x46, 0xa0, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x07, + 0x20, 0xa6, 0x46, 0x9f, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x30, 0x70, 0x38, 0x1c, 0x00, 0x21, + 0x0c, 0x22, 0xa6, 0x46, 0x97, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x59, 0xe0, 0x38, 0x1c, 0x00, + 0x21, 0x08, 0x22, 0xa6, 0x46, 0x90, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x38, 0x1c, 0x00, 0x21, + 0x0c, 0x22, 0xa6, 0x46, 0x8d, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x8c, 0x48, 0x00, 0x21, 0x0a, + 0x1c, 0xa6, 0x46, 0x8b, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x89, 0x48, 0x00, 0x21, 0x08, 0x22, + 0xa6, 0x46, 0x88, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x03, 0x20, 0x02, 0x1c, 0x84, 0x48, 0x02, + 0x21, 0xa6, 0x46, 0x85, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x0b, 0x20, 0x02, 0x1c, 0x80, 0x48, + 0x21, 0x1c, 0x8e, 0x46, 0x81, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x20, 0x1c, 0x06, 0x21, 0xa6, + 0x46, 0x7f, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x07, 0x27, 0x39, 0x1c, 0x20, 0x1c, 0xa6, 0x46, + 0x7b, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x14, 0x20, 0xa6, 0x46, 0x7a, 0x49, 0xfe, 0x44, 0x08, + 0x47, 0x38, 0x1c, 0xa6, 0x46, 0x79, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x07, 0x1c, 0x06, 0x20, + 0xa6, 0x46, 0x76, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x40, 0x00, 0x38, 0x43, 0x30, 0x70, 0x6d, + 0x48, 0x00, 0x21, 0x03, 0x22, 0xa6, 0x46, 0x6d, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x6a, 0x48, + 0x00, 0x21, 0x0b, 0x22, + + 0x01, 0x05, 0xff, 0xff, 0xf0, 0x0a, 0x18, 0x00, 0xfa, 0xa6, 0x46, 0x6a, 0x4b, 0xfe, 0x44, + 0x18, 0x47, 0x00, 0x20, 0x28, 0x80, 0x5f, 0x48, 0x03, 0x78, 0x5f, 0x48, 0x04, 0x78, 0x32, + 0x78, 0x00, 0xe0, 0x32, 0x70, 0x00, 0x98, 0xc0, 0x7b, 0x01, 0x2c, 0x26, 0xd1, 0x00, 0x2b, + 0x0d, 0xd1, 0x10, 0x1c, 0x09, 0xd0, 0x01, 0x38, 0x05, 0xd0, 0x01, 0x38, 0x01, 0xd0, 0x06, + 0x21, 0x16, 0xe0, 0x04, 0x21, 0x14, 0xe0, 0x02, 0x21, 0x12, 0xe0, 0x00, 0x21, 0x10, 0xe0, + 0x10, 0x1c, 0x0d, 0xd0, 0x01, 0x38, 0x09, 0xd0, 0x01, 0x38, 0x05, 0xd0, 0x01, 0x38, 0x01, + 0xd0, 0x10, 0x21, 0x06, 0xe0, 0x0e, 0x21, 0x04, 0xe0, 0x0c, 0x21, 0x02, 0xe0, 0x0a, 0x21, + 0x00, 0xe0, 0x08, 0x21, 0x00, 0x98, 0x08, 0x18, 0xc1, 0x7b, 0x55, 0x4b, 0x19, 0x70, 0x00, + 0x7c, 0x54, 0x4d, 0x28, 0x70, 0x54, 0x48, 0x11, 0x04, 0x09, 0x0c, 0x0c, 0x22, 0x01, 0x24, + 0xa6, 0x46, 0x47, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x32, 0x78, 0x2b, 0x78, 0x03, 0x20, 0x4f, + 0x49, 0xa6, 0x46, 0x4f, 0x4c, 0xfe, 0x44, 0x20, 0x47, 0xf8, 0xbd, 0x70, 0xb5, 0x00, 0x20, + 0x62, 0x49, 0x08, 0x70, 0x62, 0x49, 0xf7, 0x22, 0x0a, 0x70, 0xff, 0x22, 0x4a, 0x70, 0x8a, + 0x70, 0x7f, 0x22, 0xca, 0x70, 0x2e, 0x4b, 0x19, 0x1f, 0x48, 0x4a, 0x11, 0x60, 0x48, 0x49, + 0x08, 0x70, 0x5c, 0x49, 0x08, 0x70, 0x5c, 0x49, 0x08, 0x70, 0x46, 0x49, 0x08, 0x70, 0x47, + 0x48, 0x04, 0x1c, 0x71, 0x3c, 0x01, 0x22, 0x22, 0x70, 0x44, 0x49, 0x19, 0x60, 0x02, 0x21, + 0x01, 0x70, 0x44, 0x49, 0x59, 0x60, 0x03, 0x21, 0x21, 0x71, 0x43, 0x49, 0x99, 0x60, 0x01, + 0x1c, 0x33, 0x39, 0x04, 0x25, 0x0d, 0x70, 0x41, 0x4d, 0xdd, 0x60, 0x05, 0x25, 0xcd, 0x73, + 0x40, 0x49, 0x19, 0x61, + + 0x01, 0x05, 0xff, 0xff, 0xea, 0x0b, 0x18, 0x00, 0xfa, 0x06, 0x21, 0xa1, 0x71, 0x3f, 0x49, + 0x59, 0x61, 0x07, 0x21, 0xe1, 0x71, 0xe5, 0x1d, 0x3d, 0x49, 0x99, 0x61, 0x08, 0x26, 0x01, + 0x1c, 0x48, 0x39, 0x0e, 0x70, 0x3b, 0x49, 0xd9, 0x61, 0x09, 0x21, 0x69, 0x77, 0x3a, 0x49, + 0x19, 0x62, 0x0a, 0x21, 0x0d, 0x19, 0x29, 0x70, 0x39, 0x49, 0x59, 0x62, 0x0b, 0x21, 0xe9, + 0x75, 0x38, 0x49, 0x99, 0x62, 0x1b, 0x21, 0x09, 0x19, 0x0c, 0x25, 0x0d, 0x70, 0x36, 0x4d, + 0xdd, 0x62, 0x0d, 0x25, 0x65, 0x73, 0x35, 0x4c, 0x1c, 0x63, 0x0e, 0x24, 0x4c, 0x77, 0x34, + 0x49, 0x59, 0x63, 0x0f, 0x21, 0x21, 0x30, 0x01, 0x70, 0x32, 0x48, 0x98, 0x63, 0x03, 0x48, + 0x01, 0x70, 0x96, 0x46, 0x31, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x70, 0xbd, 0xc0, 0x46, 0x64, + 0x63, 0x08, 0x00, 0x6c, 0x63, 0x08, 0x00, 0x2b, 0x79, 0x08, 0x00, 0x35, 0x79, 0x08, 0x00, + 0xfb, 0x53, 0x08, 0x00, 0x21, 0x79, 0x08, 0x00, 0xb1, 0x04, 0x18, 0x00, 0xc2, 0x63, 0x08, + 0x00, 0xc5, 0x63, 0x08, 0x00, 0xc4, 0x63, 0x08, 0x00, 0xc6, 0x63, 0x08, 0x00, 0x07, 0xff, + 0x03, 0x00, 0xd7, 0xd3, 0x04, 0x00, 0x16, 0xf6, 0x1a, 0x00, 0xd3, 0x48, 0x05, 0x00, 0x8c, + 0x7c, 0x1a, 0x00, 0xa7, 0x48, 0x05, 0x00, 0x91, 0x48, 0x05, 0x00, 0x21, 0x99, 0x05, 0x00, + 0xbb, 0x16, 0x04, 0x00, 0xc3, 0x63, 0x08, 0x00, 0x67, 0x99, 0x05, 0x00, 0xc0, 0x63, 0x08, + 0x00, 0xc1, 0x63, 0x08, 0x00, 0x08, 0x31, 0x19, 0x00, 0xae, 0x05, 0x00, 0x00, 0x0b, 0xd4, + 0x04, 0x00, 0xff, 0xff, 0xff, 0x1f, 0x88, 0x53, 0x08, 0x00, 0x66, 0x63, 0x08, 0x00, 0x67, + 0x63, 0x08, 0x00, 0xc7, 0x78, 0x08, 0x00, 0xfd, 0x53, 0x08, 0x00, 0x0d, 0x79, 0x08, 0x00, + 0x17, 0x79, 0x08, 0x00, + + 0x01, 0x05, 0xff, 0x79, 0xe4, 0x0c, 0x18, 0x00, 0x74, 0x5d, 0x79, 0x08, 0x00, 0x67, 0x79, + 0x08, 0x00, 0x53, 0x79, 0x08, 0x00, 0x3f, 0x79, 0x08, 0x00, 0x49, 0x79, 0x08, 0x00, 0xd1, + 0x78, 0x08, 0x00, 0xdb, 0x78, 0x08, 0x00, 0xbd, 0x78, 0x08, 0x00, 0x03, 0x79, 0x08, 0x00, + 0xe5, 0x78, 0x08, 0x00, 0xef, 0x78, 0x08, 0x00, 0xf9, 0x78, 0x08, 0x00, 0xfd, 0x08, 0x18, + 0x00, 0xc9, 0x63, 0x08, 0x00, 0xbc, 0x63, 0x08, 0x00, 0xc8, 0x63, 0x08, 0x00, 0x5c, 0x63, + 0x08, 0x00, 0x10, 0xb5, 0x01, 0x24, 0xa6, 0x46, 0x06, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x08, + 0x20, 0x06, 0x49, 0x04, 0x22, 0x04, 0x4b, 0xa6, 0x46, 0x05, 0x4c, 0xfe, 0x44, 0x20, 0x47, + 0x10, 0xbd, 0xc0, 0x46, 0xa5, 0x2f, 0x18, 0x00, 0xd0, 0x2d, 0x18, 0x00, 0x0c, 0x04, 0x00, + 0x00, 0xd1, 0x5e, 0x04, 0x00, + + 0x01, 0x83, 0xff, 0x14, 0x79, 0x7b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + // + // + 0x01, 0xdc, 0xfd, 0x05, 0x00, 0x00, 0x00, 0x00, 0x12, + + 0x01, 0x0f, 0xfd, 0x01, 0x01, + + 0x01, 0x1c, 0xfd, 0x14, 0xff, 0x88, 0x13, 0x00, 0x00, 0xd0, 0x07, 0x00, 0x00, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0xfa, 0x01, 0x00, 0x00, 0x00, + + 0x01, 0x1c, 0xfd, 0x14, 0xff, 0x88, 0x13, 0x00, 0x00, 0xd0, 0x07, 0x00, 0x00, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x00, 0x00, 0x00, + + 0x01, 0x58, 0xfd, 0x21, 0x01, 0xc4, 0xc4, 0xc4, 0xe2, 0xe2, 0xe2, 0xf1, 0xec, 0xab, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x14, 0x0a, 0x90, 0x00, 0x90, 0x00, 0x3c, 0x0a, 0x32, 0x02, 0x01, + 0x01, 0x01, 0x03, 0xf6, 0xec, 0xf6, 0xec, + + 0x01, 0x09, 0xfd, 0x08, 0x7e, 0x7c, 0x1a, 0x00, 0x10, 0x00, 0x10, 0x00, + + // + // + // ##-------------------------------------------------------------------------------- + // ## Description: QRCA_L_TRIOL PHY FW Initialization Script + // ## Version: 3.17_3 (based on ROM version) + // ##-------------------------------------------------------------------------------- + 0x01, 0x01, 0xff, 0x06, 0xc6, 0x32, 0x19, 0x00, 0x10, 0x10, + + 0x01, 0x01, 0xff, 0x06, 0x60, 0x32, 0x19, 0x00, 0x32, 0x10, + + 0x01, 0x82, 0xfd, 0x14, 0x00, 0x9c, 0x18, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xdc, + 0xe6, 0xf0, 0xfa, 0x04, 0x0e, 0x18, 0xff, 0x00, 0x00, + + 0x01, 0x82, 0xfd, 0x14, 0x01, 0x9c, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xd8, + 0xe2, 0xec, 0xf6, 0x00, 0x0a, 0x14, 0xff, 0x00, 0x00, + + 0x01, 0x82, 0xfd, 0x14, 0x02, 0x9c, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xd8, + 0xe2, 0xec, 0xf6, 0x00, 0x0a, 0x14, 0xff, 0x00, 0x00, + + 0x01, 0x87, 0xfd, 0x03, 0x0d, 0x0d, 0x0d, + + 0x01, 0x76, 0xfd, 0x31, 0x01, 0x21, 0x54, 0x00, 0x00, 0x61, 0x57, 0x00, 0x00, 0x14, 0x05, + 0x0a, 0x05, 0x00, 0x07, 0x06, 0x0a, 0x04, 0x05, 0x08, 0x09, 0x0b, 0x0c, 0x0d, 0x0e, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, + + 0x01, 0x80, 0xfd, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, + + 0x01, 0x80, 0xfd, 0x06, 0x3c, 0xf0, 0x5f, 0x00, 0x00, 0x00, + + // + // + // + 0x01, 0x38, 0xfe, 0x00, + + // + // #-------------------------------------------------------------------------------- + // # Description: BLE FW Initialization Script + // # + // # Compatibility: BL6450L, WL127x , WL128x, NL5500L + // # + // # Last Updated: 12-Mar-2012 19:04:40.59 + // # + // # Version: 1.2 + // # + // #-------------------------------------------------------------------------------- + // + // + // #LE Enable + 0x01, 0x5b, 0xfd, 0x02, 0x01, 0x01, + + // + // # Disable Cortex Sleep + 0x01, 0xa8, 0xfd, 0x01, 0x01, + + // + // + // # Cortex Reset (hold in reset while loading IMEM) + 0x01, 0x09, 0xfd, 0x08, 0x00, 0xc0, 0x1b, 0x00, 0x01, 0x00, 0x01, 0x00, + + // ######################## + // # Patch Start + // ######################## + // + 0x01, 0x05, 0xff, 0x19, 0xbc, 0x00, 0x1b, 0x00, 0x14, 0x37, 0x83, 0x49, 0x00, 0x01, 0xa0, + 0x40, 0x5a, 0x78, 0x44, 0x87, 0x46, 0xe8, 0x05, 0xc8, 0x05, 0x62, 0x06, 0x3c, 0x05, + + 0x01, 0x05, 0xff, 0x09, 0xfc, 0x00, 0x1b, 0x00, 0x04, 0x28, 0x46, 0x15, 0xe3, + + 0x01, 0x05, 0xff, 0x09, 0x34, 0x01, 0x1b, 0x00, 0x04, 0xfa, 0xe2, 0x40, 0xf6, + + 0x01, 0x05, 0xff, 0x09, 0x68, 0x01, 0x1b, 0x00, 0x04, 0x00, 0x20, 0xdf, 0xe2, + + 0x01, 0x05, 0xff, 0x09, 0xb0, 0x02, 0x1b, 0x00, 0x04, 0x00, 0x20, 0x3b, 0xe2, + + 0x01, 0x05, 0xff, 0x0d, 0xb4, 0x03, 0x1b, 0x00, 0x08, 0x01, 0x22, 0x00, 0x21, 0xe8, 0x7d, + 0x0b, 0x46, + + 0x01, 0x05, 0xff, 0x0d, 0xe0, 0x03, 0x1b, 0x00, 0x08, 0x53, 0x5c, 0x01, 0x22, 0x02, 0x21, + 0x00, 0xf0, + + 0x01, 0x05, 0xff, 0x09, 0x1c, 0x04, 0x1b, 0x00, 0x04, 0xcd, 0xfd, 0x85, 0xe1, + + 0x01, 0x05, 0xff, 0x09, 0x4c, 0x04, 0x1b, 0x00, 0x04, 0x00, 0xf0, 0x6e, 0x81, + + 0x01, 0x05, 0xff, 0x09, 0x34, 0x05, 0x1b, 0x00, 0x04, 0xc0, 0xf0, 0xfa, 0x80, + + 0x01, 0x05, 0xff, 0x09, 0x50, 0x05, 0x1b, 0x00, 0x04, 0xec, 0xe0, 0x04, 0xf0, + + 0x01, 0x05, 0xff, 0x09, 0xa8, 0x05, 0x1b, 0x00, 0x04, 0xcb, 0xff, 0xbf, 0xe0, + + 0x01, 0x05, 0xff, 0x0d, 0xfc, 0x05, 0x1b, 0x00, 0x08, 0x40, 0xf0, 0x88, 0x80, 0x00, 0x20, + 0x93, 0xe0, + + 0x01, 0x05, 0xff, 0x09, 0x3c, 0x06, 0x1b, 0x00, 0x04, 0x76, 0xe0, 0x94, 0xf8, + + 0x01, 0x05, 0xff, 0x09, 0x8c, 0x06, 0x1b, 0x00, 0x04, 0x23, 0x60, 0x4d, 0xe0, + + 0x01, 0x05, 0xff, 0xb9, 0xb8, 0x06, 0x1b, 0x00, 0xb4, 0x94, 0xf8, 0x34, 0x20, 0xc2, 0xf2, + 0x00, 0x05, 0xa7, 0x8c, 0x01, 0x11, 0x92, 0x1c, 0xab, 0x89, 0x01, 0xf0, 0x0f, 0x01, 0x94, + 0xf8, 0x33, 0x00, 0x62, 0xf3, 0x09, 0x03, 0x2f, 0x81, 0xab, 0x81, 0x04, 0xf0, 0xf4, 0xfa, + 0x00, 0x21, 0x94, 0xf8, 0x33, 0x00, 0x0a, 0x46, 0x04, 0xf0, 0xb4, 0xfd, 0x94, 0xf8, 0x33, + 0x00, 0x4f, 0xf0, 0x03, 0x0a, 0xc4, 0xf8, 0x00, 0xa0, 0x06, 0xeb, 0x40, 0x01, 0xb1, 0xf8, + 0x14, 0x06, 0x40, 0x1c, 0xa1, 0xf8, 0x14, 0x06, 0x96, 0xf8, 0x46, 0x06, 0x00, 0x28, 0x08, + 0xbf, 0x00, 0x20, 0x0e, 0xd0, 0x09, 0x21, 0x40, 0xf6, 0x6a, 0x20, 0xc2, 0xf2, 0x32, 0x00, + 0x05, 0xf0, 0x85, 0xff, 0x40, 0xf6, 0x6a, 0x20, 0x02, 0x21, 0xc2, 0xf2, 0x32, 0x00, 0x05, + 0xf0, 0x85, 0xff, 0x00, 0x20, 0x06, 0xb0, 0xbd, 0xe8, 0xf0, 0x87, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0xe9, 0xf8, + 0x43, 0x40, 0xf2, 0xf8, 0x54, 0xc2, 0xf2, 0x00, 0x04, 0x27, 0x88, 0x0d, 0x46, 0x04, 0x46, + 0x79, 0x08, 0x40, 0xf2, 0x00, 0x07, 0x16, 0x46, 0x98, 0x46, 0x0a, 0xd3, 0x01, 0x46, 0x4f, + 0xf4, 0xe2, 0x70, 0x13, 0x46, 0x2a, 0x46, 0xcd, 0xf8, + + 0x01, 0x05, 0xff, 0xcd, 0x84, 0x07, 0x1b, 0x00, 0xc8, 0x00, 0xf0, 0x1b, 0x82, 0x0e, 0x2c, + 0x00, 0xf0, 0xa6, 0x81, 0x11, 0x2c, 0x00, 0xf0, 0xa0, 0x81, 0x97, 0xf8, 0x48, 0x26, 0x4f, + 0xf0, 0x01, 0x09, 0x09, 0xfa, 0x04, 0xf1, 0x11, 0x40, 0x31, 0x43, 0x4f, 0xf0, 0x00, 0x06, + 0x18, 0xbf, 0x4e, 0x46, 0x01, 0x2d, 0x18, 0xbf, 0x02, 0x2d, 0x72, 0xd1, 0x97, 0xf8, 0x47, + 0x16, 0x00, 0x29, 0x6e, 0xd1, 0x47, 0xf6, 0x0e, 0x50, 0xc2, 0xf2, 0x32, 0x00, 0x41, 0xf6, + 0x44, 0x41, 0x80, 0xf8, 0x00, 0x80, 0xc2, 0xf2, 0x00, 0x01, 0x09, 0x88, 0x19, 0xb9, 0x0b, + 0x21, 0x05, 0xf0, 0x2d, 0xff, 0x02, 0xe0, 0x0b, 0x21, 0x05, 0xf0, 0x22, 0xff, 0x46, 0xf6, + 0x78, 0x68, 0xc0, 0xf2, 0x00, 0x08, 0x41, 0xf6, 0x28, 0x47, 0x18, 0xf8, 0x04, 0x00, 0xc2, + 0xf2, 0x00, 0x07, 0x6e, 0xb9, 0x10, 0x38, 0xc1, 0xb2, 0x47, 0xf6, 0x4c, 0x70, 0xc2, 0xf2, + 0x32, 0x00, 0x05, 0xf0, 0x16, 0xff, 0x18, 0xf8, 0x04, 0x00, 0x10, 0x38, 0xc4, 0xb2, 0xb8, + 0x7f, 0x09, 0xe0, 0x10, 0x38, 0xc4, 0xb2, 0x47, 0xf6, 0x4c, 0x70, 0x21, 0x46, 0xc2, 0xf2, + 0x32, 0x00, 0x05, 0xf0, 0x00, 0xff, 0xb8, 0x7f, 0x38, 0xb9, 0x47, 0xf6, 0x48, 0x70, 0xc2, + 0xf2, 0x32, 0x00, 0x21, 0x46, 0x05, 0xf0, 0xfe, 0xfe, 0x06, 0xe0, 0x21, 0x46, 0x47, 0xf6, + 0x48, 0x70, 0xc2, 0xf2, 0x32, 0x00, 0x05, 0xf0, 0xef, 0xfe, 0x02, 0x2d, 0x0e, 0xd0, + + 0x01, 0x05, 0xff, 0xcd, 0x4c, 0x08, 0x1b, 0x00, 0xc8, 0x40, 0xf6, 0x6a, 0x20, 0xc2, 0xf2, + 0x32, 0x00, 0x09, 0x21, 0x05, 0xf0, 0xed, 0xfe, 0x40, 0xf6, 0x6a, 0x20, 0x02, 0x21, 0xc2, + 0xf2, 0x32, 0x00, 0x05, 0xf0, 0xe6, 0xfe, 0x0d, 0xe0, 0x09, 0x21, 0x40, 0xf6, 0x6a, 0x20, + 0xc2, 0xf2, 0x32, 0x00, 0x05, 0xf0, 0xd7, 0xfe, 0x40, 0xf6, 0x6a, 0x20, 0x02, 0x21, 0xc2, + 0xf2, 0x32, 0x00, 0x05, 0xf0, 0xd7, 0xfe, 0x40, 0xf6, 0x6a, 0x20, 0xc2, 0xf2, 0x32, 0x00, + 0x07, 0x21, 0x05, 0xf0, 0xc9, 0xfe, 0x48, 0x46, 0xbd, 0xe8, 0xf8, 0x83, 0x0f, 0x2c, 0x08, + 0xbf, 0x05, 0x24, 0x11, 0xd0, 0x10, 0x2c, 0x08, 0xbf, 0x06, 0x24, 0x0d, 0xd0, 0x03, 0x2c, + 0x0b, 0xd9, 0x0e, 0x2c, 0x09, 0xd2, 0x24, 0x1f, 0x0c, 0x22, 0xe1, 0xb2, 0x47, 0xf6, 0x0e, + 0x50, 0xc2, 0xf2, 0x32, 0x00, 0x05, 0xf0, 0x55, 0xfe, 0x04, 0x24, 0x00, 0x2d, 0x00, 0xf0, + 0xb6, 0x80, 0xed, 0x1e, 0x47, 0xd0, 0x6d, 0x1e, 0x40, 0xf0, 0xff, 0x80, 0x40, 0xf6, 0x6a, + 0x20, 0xc2, 0xf2, 0x32, 0x00, 0x09, 0x21, 0x05, 0xf0, 0xa8, 0xfe, 0x40, 0xf6, 0x6a, 0x20, + 0x02, 0x21, 0xc2, 0xf2, 0x32, 0x00, 0x05, 0xf0, 0xa1, 0xfe, 0x40, 0xf6, 0x6a, 0x20, 0x07, + 0x21, 0xc2, 0xf2, 0x32, 0x00, 0x05, 0xf0, 0x9a, 0xfe, 0x40, 0xf6, 0x6a, 0x20, 0x02, 0x21, + 0xc2, 0xf2, 0x32, 0x00, 0x05, 0xf0, 0x93, 0xfe, 0x40, 0xf6, 0x6a, 0x20, 0x08, 0x21, + + 0x01, 0x05, 0xff, 0xcd, 0x14, 0x09, 0x1b, 0x00, 0xc8, 0xc2, 0xf2, 0x32, 0x00, 0x05, 0xf0, + 0x85, 0xfe, 0x40, 0xf6, 0x6a, 0x20, 0x06, 0x21, 0xc2, 0xf2, 0x32, 0x00, 0x05, 0xf0, 0x7e, + 0xfe, 0x97, 0xf8, 0x47, 0x06, 0x00, 0x28, 0x40, 0xf0, 0xd0, 0x80, 0x46, 0xf6, 0x78, 0x60, + 0xc0, 0xf2, 0x00, 0x00, 0x00, 0x5d, 0x10, 0x38, 0xc1, 0xb2, 0x47, 0xf6, 0x44, 0x70, 0xc2, + 0xf2, 0x32, 0x00, 0x05, 0xf0, 0x6c, 0xfe, 0x47, 0xf6, 0x0e, 0x51, 0x48, 0x46, 0xc2, 0xf2, + 0x32, 0x01, 0x81, 0xf8, 0x00, 0x80, 0xbd, 0xe8, 0xf8, 0x83, 0x97, 0xf8, 0x47, 0x06, 0x00, + 0x28, 0x37, 0xd1, 0x47, 0xf6, 0x4c, 0x70, 0xc2, 0xf2, 0x32, 0x00, 0x47, 0xf6, 0x60, 0x01, + 0x05, 0xf0, 0x73, 0xfe, 0x47, 0xf6, 0x44, 0x70, 0x47, 0xf6, 0x60, 0x01, 0xc2, 0xf2, 0x32, + 0x00, 0x05, 0xf0, 0x6b, 0xfe, 0x41, 0xf6, 0x46, 0x40, 0xc2, 0xf2, 0x00, 0x00, 0x00, 0x78, + 0x08, 0xbb, 0x46, 0xf6, 0x78, 0x60, 0xc0, 0xf2, 0x00, 0x00, 0x00, 0x5d, 0x10, 0x38, 0xc1, + 0xb2, 0x47, 0xf6, 0x48, 0x70, 0xc2, 0xf2, 0x32, 0x00, 0x05, 0xf0, 0x43, 0xfe, 0x97, 0xf8, + 0x4a, 0x06, 0x06, 0x21, 0x04, 0x28, 0x09, 0xd0, 0x01, 0x28, 0x0d, 0xd1, 0x47, 0xf6, 0x40, + 0x40, 0xc2, 0xf2, 0x32, 0x00, 0x06, 0x21, 0x05, 0xf0, 0x2e, 0xfe, 0x05, 0xe0, 0x47, 0xf6, + 0x70, 0x40, 0xc2, 0xf2, 0x32, 0x00, 0x05, 0xf0, 0x27, 0xfe, 0x40, 0xf6, 0x6a, 0x20, + + 0x01, 0x05, 0xff, 0xcd, 0xdc, 0x09, 0x1b, 0x00, 0xc8, 0xc2, 0xf2, 0x32, 0x00, 0x09, 0x21, + 0x05, 0xf0, 0x27, 0xfe, 0x40, 0xf6, 0x6a, 0x20, 0x02, 0x21, 0xc2, 0xf2, 0x32, 0x00, 0x05, + 0xf0, 0x20, 0xfe, 0x40, 0xf6, 0x6a, 0x20, 0x07, 0x21, 0xc2, 0xf2, 0x32, 0x00, 0x05, 0xf0, + 0x19, 0xfe, 0x0a, 0x20, 0x04, 0xf0, 0x84, 0xfe, 0x40, 0xf6, 0x6a, 0x20, 0x02, 0x21, 0xc2, + 0xf2, 0x32, 0x00, 0x05, 0xf0, 0x08, 0xfe, 0x40, 0xf6, 0x6a, 0x20, 0x08, 0x21, 0xc2, 0xf2, + 0x32, 0x00, 0x05, 0xf0, 0x08, 0xfe, 0x40, 0xf6, 0x6a, 0x20, 0x06, 0x21, 0xc2, 0xf2, 0x32, + 0x00, 0x05, 0xf0, 0x01, 0xfe, 0x48, 0x46, 0xbd, 0xe8, 0xf8, 0x83, 0x97, 0xf8, 0x47, 0x06, + 0x46, 0xf6, 0x78, 0x65, 0xc0, 0xf2, 0x00, 0x05, 0x00, 0x28, 0x30, 0xd1, 0x28, 0x5d, 0x86, + 0xb9, 0x10, 0x38, 0xc1, 0xb2, 0x47, 0xf6, 0x4c, 0x70, 0xc2, 0xf2, 0x32, 0x00, 0x05, 0xf0, + 0xec, 0xfd, 0x28, 0x5d, 0x10, 0x38, 0xc4, 0xb2, 0x41, 0xf6, 0x46, 0x40, 0xc2, 0xf2, 0x00, + 0x00, 0x00, 0x78, 0x0d, 0xe0, 0x10, 0x38, 0xc4, 0xb2, 0x47, 0xf6, 0x4c, 0x70, 0x21, 0x46, + 0xc2, 0xf2, 0x32, 0x00, 0x05, 0xf0, 0xd3, 0xfd, 0x41, 0xf6, 0x46, 0x40, 0xc2, 0xf2, 0x00, + 0x00, 0x00, 0x78, 0x38, 0xb9, 0x47, 0xf6, 0x48, 0x70, 0xc2, 0xf2, 0x32, 0x00, 0x21, 0x46, + 0x05, 0xf0, 0xcd, 0xfd, 0x06, 0xe0, 0x21, 0x46, 0x47, 0xf6, 0x48, 0x70, 0xc2, 0xf2, + + 0x01, 0x05, 0xff, 0xcd, 0xa4, 0x0a, 0x1b, 0x00, 0xc8, 0x32, 0x00, 0x05, 0xf0, 0xbe, 0xfd, + 0x40, 0xf6, 0x6a, 0x20, 0xc2, 0xf2, 0x32, 0x00, 0x09, 0x21, 0x05, 0xf0, 0xbe, 0xfd, 0x40, + 0xf6, 0x6a, 0x20, 0x02, 0x21, 0xc2, 0xf2, 0x32, 0x00, 0x05, 0xf0, 0xb7, 0xfd, 0x40, 0xf6, + 0x6a, 0x20, 0x07, 0x21, 0xc2, 0xf2, 0x32, 0x00, 0x05, 0xf0, 0xb0, 0xfd, 0x01, 0x20, 0xbd, + 0xe8, 0xf8, 0x83, 0x97, 0xf8, 0x47, 0x06, 0x58, 0xbb, 0x47, 0xf6, 0x4c, 0x70, 0xc2, 0xf2, + 0x32, 0x00, 0x47, 0xf6, 0x60, 0x01, 0x05, 0xf0, 0xb7, 0xfd, 0x47, 0xf6, 0x44, 0x70, 0x47, + 0xf6, 0x60, 0x01, 0xc2, 0xf2, 0x32, 0x00, 0x05, 0xf0, 0xaf, 0xfd, 0x47, 0xf6, 0x0e, 0x50, + 0x0b, 0x21, 0xc2, 0xf2, 0x32, 0x00, 0x05, 0xf0, 0x93, 0xfd, 0x97, 0xf8, 0x4a, 0x06, 0x06, + 0x21, 0x04, 0x28, 0x09, 0xd0, 0x01, 0x28, 0x0d, 0xd1, 0x47, 0xf6, 0x40, 0x40, 0xc2, 0xf2, + 0x32, 0x00, 0x06, 0x21, 0x05, 0xf0, 0x7e, 0xfd, 0x05, 0xe0, 0x47, 0xf6, 0x70, 0x40, 0xc2, + 0xf2, 0x32, 0x00, 0x05, 0xf0, 0x77, 0xfd, 0x40, 0xf6, 0x6a, 0x20, 0xc2, 0xf2, 0x32, 0x00, + 0x09, 0x21, 0x05, 0xf0, 0x77, 0xfd, 0x40, 0xf6, 0x6a, 0x20, 0x02, 0x21, 0xc2, 0xf2, 0x32, + 0x00, 0x05, 0xf0, 0x70, 0xfd, 0x40, 0xf6, 0x6a, 0x20, 0x07, 0x21, 0xc2, 0xf2, 0x32, 0x00, + 0x05, 0xf0, 0x69, 0xfd, 0x0a, 0x20, 0x04, 0xf0, 0xd4, 0xfd, 0x40, 0xf6, 0x6a, 0x20, + + 0x01, 0x05, 0xff, 0xbd, 0x6c, 0x0b, 0x1b, 0x00, 0xb8, 0x09, 0x21, 0xc2, 0xf2, 0x32, 0x00, + 0x05, 0xf0, 0x58, 0xfd, 0x40, 0xf6, 0x6a, 0x20, 0x02, 0x21, 0xc2, 0xf2, 0x32, 0x00, 0x05, + 0xf0, 0x58, 0xfd, 0x40, 0xf6, 0x6a, 0x20, 0x07, 0x21, 0xc2, 0xf2, 0x32, 0x00, 0x05, 0xf0, + 0x4a, 0xfd, 0x40, 0xf6, 0x6a, 0x20, 0x02, 0x21, 0xc2, 0xf2, 0x32, 0x00, 0x05, 0xf0, 0x43, + 0xfd, 0x40, 0xf6, 0x6a, 0x20, 0x08, 0x21, 0xc2, 0xf2, 0x32, 0x00, 0x05, 0xf0, 0x43, 0xfd, + 0x40, 0xf6, 0x6a, 0x20, 0x06, 0x21, 0xc2, 0xf2, 0x32, 0x00, 0x05, 0xf0, 0x3c, 0xfd, 0x01, + 0x20, 0xbd, 0xe8, 0xf8, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 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, 0x05, 0xff, 0x11, 0xa4, 0x12, 0x1b, 0x00, 0x0c, 0x4b, 0x46, 0xa1, 0x62, 0x20, 0x79, + 0x01, 0x22, 0x19, 0x46, 0xff, 0xf7, + + 0x01, 0x05, 0xff, 0x09, 0x30, 0x13, 0x1b, 0x00, 0x04, 0x31, 0x46, 0xff, 0xf7, + + 0x01, 0x05, 0xff, 0x0d, 0x1c, 0x14, 0x1b, 0x00, 0x08, 0x20, 0x79, 0x1a, 0x46, 0x19, 0x46, + 0xff, 0xf7, + + 0x01, 0x05, 0xff, 0xcd, 0xa4, 0x1b, 0x1b, 0x00, 0xc8, 0x2d, 0xe9, 0xf0, 0x47, 0x41, 0xf6, + 0xac, 0x31, 0xc2, 0xf2, 0x00, 0x01, 0x41, 0xf6, 0x30, 0x46, 0x41, 0xf2, 0x30, 0x14, 0x01, + 0xf1, 0x14, 0x07, 0xc2, 0xf2, 0x00, 0x06, 0xba, 0x88, 0xc2, 0xf2, 0x00, 0x04, 0x38, 0x7a, + 0x01, 0x25, 0xb2, 0x82, 0x83, 0x01, 0x41, 0xf6, 0x86, 0x42, 0xc2, 0xf2, 0x00, 0x02, 0x84, + 0xf8, 0x24, 0x00, 0x03, 0xeb, 0x40, 0x13, 0x15, 0x70, 0xc2, 0x01, 0x02, 0xeb, 0x80, 0x02, + 0xa2, 0x18, 0x28, 0x32, 0xf8, 0x79, 0x22, 0x60, 0x40, 0xf2, 0x00, 0x02, 0xa0, 0x72, 0xc2, + 0xf2, 0x00, 0x02, 0x02, 0xf2, 0x4c, 0x68, 0xb8, 0x79, 0xd2, 0x18, 0x38, 0x32, 0x62, 0x60, + 0x0a, 0x7f, 0xe0, 0x72, 0xd0, 0x01, 0x00, 0xeb, 0x82, 0x00, 0x20, 0x18, 0x54, 0x30, 0x91, + 0xe8, 0x0c, 0x00, 0x08, 0x31, 0x80, 0xe8, 0x0c, 0x00, 0x08, 0x22, 0x04, 0xf1, 0x0c, 0x00, + 0x03, 0xf0, 0x3c, 0xfc, 0xe0, 0x7a, 0x61, 0x68, 0x81, 0xf8, 0x44, 0x00, 0x20, 0x68, 0x90, + 0xf8, 0x37, 0x00, 0x00, 0x28, 0x04, 0xbf, 0x0f, 0x20, 0xf0, 0x75, 0x04, 0xd0, 0x94, 0xf8, + 0x24, 0x00, 0x00, 0x1d, 0xc0, 0xb2, 0xf0, 0x75, 0xa3, 0x7a, 0x4f, 0xf0, 0x00, 0x0a, 0x86, + 0xf8, 0x16, 0xa0, 0x52, 0x46, 0x04, 0x21, 0xfe, 0xf7, 0x74, 0xfd, 0x41, 0xf2, 0x30, 0x19, + 0xc2, 0xf2, 0x00, 0x09, 0xd9, 0xf8, 0x00, 0x10, 0xa3, 0x7a, 0xf0, 0x7d, 0x91, 0xf8, + + 0x01, 0x05, 0xff, 0xcd, 0x6c, 0x1c, 0x1b, 0x00, 0xc8, 0x3a, 0x10, 0x2a, 0x46, 0xfe, 0xf7, + 0x67, 0xfd, 0x14, 0x20, 0x03, 0xf0, 0x4b, 0xfd, 0x25, 0x72, 0x48, 0xf2, 0x22, 0x0e, 0xb5, + 0x75, 0x65, 0x72, 0x41, 0xf6, 0x2c, 0x23, 0xd9, 0xf8, 0x00, 0x20, 0xc2, 0xf2, 0x20, 0x0e, + 0x77, 0x21, 0x82, 0xf8, 0x00, 0xa0, 0x82, 0xf8, 0x06, 0xa0, 0x84, 0xf8, 0x25, 0xa0, 0xd9, + 0xf8, 0x04, 0x00, 0x4f, 0xf6, 0xff, 0x7c, 0xc2, 0xf2, 0x00, 0x03, 0x80, 0xf8, 0x42, 0xa0, + 0xae, 0xf8, 0x00, 0x10, 0xae, 0xf8, 0x06, 0xc0, 0x40, 0xf6, 0x00, 0x3c, 0xd9, 0xf8, 0x00, + 0x10, 0xc2, 0xf2, 0x00, 0x0c, 0x02, 0xf1, 0x6c, 0x0e, 0x01, 0xf1, 0x3b, 0x00, 0x0c, 0xf1, + 0x8d, 0x01, 0xa3, 0xf8, 0x70, 0xe0, 0xa3, 0xf8, 0x68, 0x00, 0xd9, 0xf8, 0x04, 0xe0, 0xa3, + 0xf8, 0x4a, 0x10, 0x0c, 0xf1, 0xcd, 0x00, 0x0e, 0xf1, 0x28, 0x01, 0x1f, 0xfa, 0x81, 0xfc, + 0x02, 0xf1, 0x54, 0x01, 0x1f, 0xfa, 0x81, 0xfe, 0xa3, 0xf8, 0x08, 0xc0, 0x02, 0xf1, 0x44, + 0x01, 0x89, 0xb2, 0xa3, 0xf8, 0x38, 0xe0, 0x19, 0x85, 0x41, 0xf6, 0x6c, 0x13, 0xc2, 0xf2, + 0x00, 0x03, 0x58, 0x87, 0xa3, 0xf8, 0x70, 0xe0, 0xa3, 0xf8, 0x08, 0xc0, 0x19, 0x85, 0x10, + 0x6c, 0xa3, 0xf8, 0x60, 0x10, 0x04, 0xf0, 0xdd, 0xf9, 0xd9, 0xf8, 0x00, 0x00, 0x01, 0x6c, + 0x49, 0x08, 0x2e, 0xbf, 0xa8, 0xf8, 0x04, 0xa0, 0x02, 0x21, 0xa8, 0xf8, 0x04, 0x10, + + 0x01, 0x05, 0xff, 0xad, 0x34, 0x1d, 0x1b, 0x00, 0xa8, 0xb8, 0xf8, 0x00, 0x10, 0x90, 0xf8, + 0x3a, 0x30, 0x94, 0xf8, 0x0a, 0xe0, 0x09, 0x07, 0x49, 0x0e, 0x43, 0xf2, 0x00, 0x02, 0x41, + 0xea, 0xce, 0x11, 0x01, 0x2b, 0x4f, 0xea, 0x8e, 0x1c, 0xc2, 0xf2, 0x31, 0x02, 0x91, 0x83, + 0xb6, 0xf8, 0x14, 0xe0, 0xa2, 0xf8, 0x1e, 0xc0, 0x15, 0x84, 0x3f, 0x68, 0x2e, 0xd0, 0x2c, + 0x30, 0x90, 0xe8, 0x03, 0x00, 0x36, 0x1d, 0x42, 0xf2, 0x48, 0x4c, 0x86, 0xe8, 0x03, 0x00, + 0xc2, 0xf2, 0x31, 0x0c, 0xac, 0xf8, 0x02, 0xe0, 0x4f, 0xf0, 0x15, 0x0a, 0xac, 0xf8, 0x00, + 0xa0, 0xbc, 0xf8, 0x00, 0x00, 0x15, 0x28, 0x02, 0xd0, 0x5e, 0x20, 0x04, 0xf0, 0x6b, 0xfc, + 0x40, 0xf2, 0x00, 0x00, 0xc2, 0xf2, 0x00, 0x00, 0x90, 0xf8, 0x05, 0x36, 0x4f, 0xf2, 0x04, + 0x01, 0xc2, 0xf2, 0x32, 0x01, 0x10, 0x2b, 0x04, 0xda, 0x0a, 0x88, 0x28, 0x46, 0x98, 0x40, + 0x10, 0x43, 0x08, 0x80, 0x28, 0x46, 0x01, 0xf0, 0x79, 0xff, 0x03, 0xf0, 0xf6, 0xf8, 0xbd, + 0xe8, 0xf0, 0x87, 0x2c, 0x30, 0x90, 0xe8, 0x03, 0x00, 0x0c, 0x36, 0x86, 0xe8, 0x03, 0x00, + 0x27, 0x83, 0x01, 0xf0, 0x64, 0xf8, 0xbd, 0xe8, 0xf0, 0x87, 0x2d, 0xe9, + + 0x01, 0x05, 0xff, 0x11, 0x2c, 0x21, 0x1b, 0x00, 0x0c, 0xf1, 0xfa, 0x00, 0x21, 0x30, 0x79, + 0x0a, 0x46, 0x0b, 0x46, 0xfe, 0xf7, + + 0x01, 0x05, 0xff, 0xcd, 0xc0, 0x21, 0x1b, 0x00, 0xc8, 0x2d, 0xe9, 0xf0, 0x43, 0xad, 0xf1, + 0x0c, 0x0d, 0x41, 0xf6, 0xac, 0x35, 0x41, 0xf6, 0x44, 0x49, 0xc2, 0xf2, 0x00, 0x05, 0xc2, + 0xf2, 0x00, 0x09, 0xa8, 0x8a, 0x03, 0x21, 0x6f, 0x8a, 0xa9, 0xf8, 0x00, 0x00, 0x2c, 0x8a, + 0x40, 0xf2, 0x0a, 0x50, 0xc2, 0xf2, 0x32, 0x00, 0x04, 0xf0, 0x5f, 0xfa, 0x40, 0xf2, 0x00, + 0x06, 0xc2, 0xf2, 0x30, 0x06, 0xb0, 0x46, 0x48, 0xea, 0x07, 0x08, 0x08, 0xf1, 0x01, 0x08, + 0x46, 0xea, 0x04, 0x06, 0x38, 0xb9, 0x03, 0x21, 0x40, 0xf2, 0x1e, 0x50, 0xc2, 0xf2, 0x32, + 0x00, 0x04, 0xf0, 0x4c, 0xfa, 0x20, 0xb1, 0xb9, 0xf8, 0x00, 0x00, 0x00, 0x28, 0x00, 0xf0, + 0xac, 0x80, 0x40, 0xf6, 0x31, 0x31, 0xc2, 0xf2, 0x00, 0x01, 0x04, 0x22, 0x68, 0x46, 0x03, + 0xf0, 0x36, 0xf9, 0x00, 0x98, 0x03, 0xf0, 0x51, 0xff, 0x01, 0xa8, 0x04, 0xf0, 0xe6, 0xf8, + 0x41, 0xf6, 0x5c, 0x34, 0xc2, 0xf2, 0x00, 0x04, 0x04, 0xf1, 0x0c, 0x07, 0x08, 0x22, 0x05, + 0xf1, 0x08, 0x01, 0x07, 0xf1, 0x0c, 0x00, 0x03, 0xf0, 0x23, 0xf9, 0xe8, 0x7d, 0x84, 0xf8, + 0x31, 0x00, 0x04, 0xf0, 0x5b, 0xf8, 0x29, 0x7e, 0x84, 0xf8, 0x36, 0x00, 0x00, 0x22, 0x84, + 0xf8, 0x30, 0x10, 0x31, 0xf0, 0x01, 0x03, 0x08, 0xbf, 0x01, 0x22, 0x01, 0x20, 0x00, 0x29, + 0x84, 0xf8, 0x2e, 0x20, 0x1c, 0xbf, 0x06, 0x29, 0x00, 0x20, 0x2a, 0x8a, 0x69, 0x8a, + + 0x01, 0x05, 0xff, 0xcd, 0x88, 0x22, 0x1b, 0x00, 0xc8, 0x84, 0xf8, 0x2f, 0x00, 0xa2, 0x84, + 0xe1, 0x84, 0x70, 0x78, 0x00, 0xf0, 0x3f, 0x00, 0xc1, 0x00, 0x50, 0x31, 0x84, 0xf8, 0x34, + 0x00, 0x21, 0x85, 0x98, 0xf8, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0xc1, 0x00, 0x50, 0x31, + 0x84, 0xf8, 0x35, 0x00, 0x61, 0x85, 0x30, 0x78, 0x06, 0x22, 0xb1, 0x1c, 0x80, 0x11, 0x00, + 0xf0, 0x01, 0x00, 0x84, 0xf8, 0x37, 0x00, 0x38, 0x46, 0x03, 0xf0, 0xeb, 0xf8, 0x94, 0xf8, + 0x30, 0x00, 0x01, 0x28, 0x09, 0xd1, 0x30, 0x78, 0x06, 0xf1, 0x08, 0x01, 0xc2, 0x11, 0xb8, + 0x1d, 0x84, 0xf8, 0x38, 0x20, 0x06, 0x22, 0x03, 0xf0, 0xdd, 0xf8, 0xa8, 0x7d, 0x4f, 0xf0, + 0x01, 0x02, 0x30, 0xb9, 0x04, 0xf0, 0x04, 0xf8, 0x84, 0xf8, 0x33, 0x00, 0x94, 0xf8, 0x30, + 0x00, 0x10, 0xe0, 0x94, 0xf8, 0x31, 0x10, 0x94, 0xf8, 0x33, 0x00, 0x40, 0x1c, 0xc0, 0xb2, + 0x03, 0x28, 0x08, 0xbf, 0x00, 0x20, 0x02, 0xfa, 0x00, 0xf3, 0x19, 0x42, 0xf6, 0xd0, 0x84, + 0xf8, 0x33, 0x00, 0x94, 0xf8, 0x30, 0x00, 0x01, 0x28, 0x07, 0xd0, 0x00, 0x25, 0x89, 0xf8, + 0x03, 0x50, 0x89, 0xf8, 0x02, 0x50, 0x28, 0x46, 0x01, 0x26, 0x06, 0xe0, 0x10, 0x20, 0x01, + 0x26, 0x89, 0xf8, 0x03, 0x00, 0x00, 0x25, 0x89, 0xf8, 0x02, 0x60, 0x94, 0xf8, 0x33, 0x10, + 0x41, 0xf6, 0x2c, 0x42, 0xc2, 0xf2, 0x00, 0x02, 0x53, 0x5c, 0x04, 0x21, 0x2a, 0x46, + + 0x01, 0x05, 0xff, 0x51, 0x50, 0x23, 0x1b, 0x00, 0x4c, 0xfe, 0xf7, 0xf7, 0xf9, 0x43, 0xf2, + 0x20, 0x00, 0x84, 0xf8, 0x39, 0x50, 0x40, 0xf2, 0x0d, 0x02, 0xc2, 0xf2, 0x31, 0x00, 0x84, + 0xf8, 0x32, 0x50, 0xc2, 0xf2, 0x00, 0x02, 0x06, 0x80, 0x21, 0x8d, 0x15, 0x70, 0x28, 0x46, + 0x00, 0xf0, 0x20, 0xfe, 0x06, 0xe0, 0x11, 0x20, 0x89, 0xf8, 0x03, 0x00, 0x00, 0x21, 0x01, + 0x20, 0x01, 0xf0, 0x4f, 0xfa, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x47, + + 0x01, 0x05, 0xff, 0x09, 0x7c, 0x24, 0x1b, 0x00, 0x04, 0x04, 0xf0, 0xe8, 0xfd, + + 0x01, 0x05, 0xff, 0x09, 0xd4, 0x26, 0x1b, 0x00, 0x04, 0x78, 0xb5, 0x02, 0xf0, + + 0x01, 0x05, 0xff, 0xcd, 0x14, 0x27, 0x1b, 0x00, 0xc8, 0x00, 0x28, 0x42, 0xd0, 0x0a, 0x20, + 0x02, 0xf0, 0xf9, 0xff, 0x20, 0x68, 0x90, 0xf8, 0x3a, 0x00, 0x01, 0x28, 0x2c, 0xd1, 0x96, + 0xf8, 0x47, 0x06, 0x4f, 0xf0, 0x00, 0x01, 0xa9, 0x82, 0x80, 0xb9, 0x47, 0xf6, 0x48, 0x70, + 0xc2, 0xf2, 0x32, 0x00, 0x05, 0x21, 0x03, 0xf0, 0x72, 0xff, 0x96, 0xf8, 0x47, 0x06, 0x30, + 0xb9, 0x05, 0x21, 0x47, 0xf6, 0x4c, 0x70, 0xc2, 0xf2, 0x32, 0x00, 0x03, 0xf0, 0x6f, 0xff, + 0x40, 0xf6, 0x6a, 0x20, 0xc2, 0xf2, 0x32, 0x00, 0x09, 0x21, 0x03, 0xf0, 0x68, 0xff, 0x40, + 0xf6, 0x6a, 0x20, 0x02, 0x21, 0xc2, 0xf2, 0x32, 0x00, 0x03, 0xf0, 0x61, 0xff, 0x40, 0xf6, + 0x6a, 0x20, 0x07, 0x21, 0xc2, 0xf2, 0x32, 0x00, 0x03, 0xf0, 0x5a, 0xff, 0x0d, 0xe0, 0x09, + 0x21, 0x40, 0xf6, 0x6a, 0x20, 0xc2, 0xf2, 0x32, 0x00, 0x03, 0xf0, 0x52, 0xff, 0x40, 0xf6, + 0x6a, 0x20, 0x02, 0x21, 0xc2, 0xf2, 0x32, 0x00, 0x03, 0xf0, 0x4b, 0xff, 0x03, 0xf0, 0x80, + 0xfb, 0x00, 0x20, 0x60, 0x72, 0x20, 0x68, 0x81, 0x1d, 0x91, 0xf8, 0x34, 0x20, 0x01, 0x2a, + 0x0c, 0xd1, 0x09, 0x78, 0x51, 0xb9, 0x61, 0x68, 0x4f, 0xf0, 0x01, 0x02, 0x81, 0xf8, 0x5e, + 0x20, 0x90, 0xf8, 0x37, 0x10, 0x11, 0xb9, 0x02, 0xf0, 0xe9, 0xfa, 0x20, 0x68, 0xc0, 0x6e, + 0x00, 0xf0, 0x03, 0x00, 0x03, 0x28, 0x29, 0xd1, 0x96, 0xf8, 0x0b, 0x16, 0x4f, 0xf2, + + 0x01, 0x05, 0xff, 0xcd, 0xdc, 0x27, 0x1b, 0x00, 0xc8, 0x04, 0x02, 0xc2, 0xf2, 0x32, 0x02, + 0x10, 0x29, 0x0b, 0xda, 0x13, 0x88, 0x01, 0x20, 0x00, 0xfa, 0x01, 0xf1, 0x19, 0x43, 0x11, + 0x80, 0x96, 0xf8, 0x0b, 0x36, 0x11, 0x88, 0x98, 0x40, 0x81, 0x43, 0x11, 0x80, 0x94, 0xf8, + 0x24, 0x30, 0xd9, 0x01, 0x01, 0xeb, 0x83, 0x01, 0x60, 0x18, 0x09, 0x19, 0x28, 0x31, 0x28, + 0x30, 0x82, 0x6c, 0x0c, 0x6f, 0x45, 0x6c, 0x10, 0x06, 0x91, 0xf8, 0x35, 0x20, 0x21, 0x78, + 0x40, 0xea, 0x15, 0x20, 0x00, 0x90, 0xa6, 0x20, 0x03, 0xf0, 0x46, 0xfd, 0x78, 0xbd, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, + 0xb5, 0xad, 0xf1, 0x08, 0x0d, 0x41, 0xf6, 0xbc, 0x24, 0x41, 0xf6, 0x30, 0x45, 0xc2, 0xf2, + 0x00, 0x04, 0x20, 0x88, 0xc2, 0xf2, 0x00, 0x05, 0x03, 0x21, 0xa8, 0x82, 0x40, 0xf2, 0x0a, + 0x50, 0xc2, 0xf2, 0x32, 0x00, 0x03, 0xf0, 0x1e, 0xff, 0x38, 0xb9, 0x40, 0xf2, 0x1e, 0x50, + 0xc2, 0xf2, 0x32, 0x00, 0x03, 0x21, 0x03, 0xf0, 0x16, 0xff, 0x10, 0xb1, 0xa8, 0x8a, 0x00, + 0x28, 0x7d, 0xd0, 0x40, 0xf6, 0x31, 0x31, 0xc2, 0xf2, 0x00, 0x01, 0x04, 0x22, 0x01, 0xa8, + 0x02, 0xf0, 0x02, 0xfe, 0x01, 0x98, 0x03, 0xf0, 0x1d, 0xfc, 0x41, 0xf6, 0x2c, 0x42, + + 0x01, 0x05, 0xff, 0xcd, 0xa4, 0x28, 0x1b, 0x00, 0xc8, 0xe0, 0x78, 0x01, 0x26, 0xc2, 0xf2, + 0x00, 0x02, 0xa0, 0x70, 0x20, 0x79, 0xa1, 0x78, 0xae, 0x75, 0xe8, 0x75, 0x53, 0x5c, 0x00, + 0x22, 0x04, 0x21, 0xfd, 0xf7, 0x41, 0xff, 0x20, 0x79, 0x00, 0x26, 0xe6, 0x62, 0x01, 0x28, + 0x1b, 0xd0, 0x40, 0xf6, 0x90, 0x42, 0xc2, 0xf2, 0x30, 0x02, 0x40, 0xf2, 0x00, 0x05, 0x91, + 0x1c, 0xc2, 0xf2, 0x00, 0x05, 0x02, 0x23, 0x04, 0xf1, 0x0f, 0x00, 0x62, 0x63, 0x85, 0xf8, + 0x32, 0x30, 0x06, 0x22, 0x02, 0xf0, 0xd8, 0xfd, 0x61, 0x6b, 0x06, 0x22, 0x04, 0xf1, 0x17, + 0x00, 0x08, 0x31, 0x02, 0xf0, 0xd1, 0xfd, 0x40, 0xf2, 0xf4, 0x53, 0x16, 0xe0, 0x40, 0xf2, + 0x00, 0x01, 0xc2, 0xf2, 0x30, 0x01, 0x40, 0xf2, 0x00, 0x05, 0xc2, 0xf2, 0x00, 0x05, 0x02, + 0x23, 0x01, 0xf5, 0x48, 0x62, 0xe0, 0x1d, 0x01, 0xf6, 0x82, 0x41, 0xae, 0x77, 0x6e, 0x77, + 0x2b, 0x77, 0x62, 0x63, 0x06, 0x22, 0x02, 0xf0, 0xb9, 0xfd, 0x40, 0xf2, 0xf4, 0x53, 0x02, + 0xf0, 0xd2, 0xfb, 0xe8, 0x5a, 0x80, 0x08, 0x0c, 0xd3, 0x41, 0xf6, 0xac, 0x30, 0xc2, 0xf2, + 0x00, 0x00, 0x85, 0x89, 0x83, 0x68, 0x82, 0x88, 0x01, 0x68, 0x00, 0x95, 0x40, 0xf2, 0xa5, + 0x10, 0x03, 0xf0, 0xa0, 0xfc, 0x04, 0xf1, 0x4a, 0x00, 0x31, 0x46, 0x06, 0x22, 0x03, 0xf0, + 0x06, 0xf9, 0x84, 0xf8, 0x50, 0x60, 0x06, 0x22, 0x31, 0x46, 0x04, 0xf1, 0x1e, 0x00, + + 0x01, 0x05, 0xff, 0x41, 0x6c, 0x29, 0x1b, 0x00, 0x3c, 0x03, 0xf0, 0xfe, 0xf8, 0x43, 0xf2, + 0x20, 0x00, 0x03, 0x21, 0x84, 0xf8, 0x24, 0x60, 0xc2, 0xf2, 0x31, 0x00, 0x01, 0x80, 0x03, + 0xf0, 0x0c, 0xf8, 0x04, 0xe0, 0x11, 0x20, 0xe8, 0x75, 0x01, 0x20, 0x01, 0xf0, 0x85, 0xfd, + 0x02, 0xb0, 0x70, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x01, 0x05, 0xff, 0xcd, 0x44, 0x2c, 0x1b, 0x00, 0xc8, 0xf0, 0x83, 0x2d, 0xe9, 0xf0, 0x43, + 0xad, 0xf1, 0x08, 0x0d, 0x40, 0xf2, 0x4e, 0x68, 0xc2, 0xf2, 0x00, 0x08, 0x06, 0x46, 0xb8, + 0xf8, 0x00, 0x00, 0x41, 0xf6, 0x28, 0x44, 0xc2, 0xf2, 0x00, 0x04, 0x68, 0xb1, 0x41, 0xf6, + 0x34, 0x40, 0xc2, 0xf2, 0x00, 0x00, 0x03, 0x46, 0x41, 0xf6, 0x28, 0x44, 0x6f, 0xf0, 0x01, + 0x02, 0x00, 0x21, 0x02, 0xf0, 0x02, 0xfe, 0xc2, 0xf2, 0x00, 0x04, 0x20, 0x8a, 0xa1, 0x89, + 0x48, 0xf2, 0x00, 0x05, 0xcf, 0xf6, 0xff, 0x75, 0x46, 0xf2, 0x0a, 0x07, 0xc2, 0xf2, 0x20, + 0x07, 0x28, 0x43, 0xa7, 0xf8, 0x4c, 0x10, 0xa7, 0xf8, 0x4a, 0x00, 0x32, 0x7b, 0x31, 0x68, + 0x05, 0x20, 0x02, 0xf0, 0x10, 0xfe, 0xb0, 0x7b, 0x04, 0xf1, 0x0c, 0x09, 0x14, 0x34, 0x00, + 0x28, 0x1a, 0xbf, 0x30, 0x89, 0x80, 0x1c, 0x30, 0x89, 0x71, 0x89, 0x4f, 0xf0, 0x64, 0x0e, + 0x40, 0x18, 0x45, 0xea, 0xc0, 0x00, 0x78, 0x84, 0xa7, 0xf8, 0x00, 0xe0, 0x38, 0x88, 0xc0, + 0x09, 0x02, 0xd3, 0x38, 0x88, 0xc0, 0x09, 0xfc, 0xd2, 0x48, 0xf2, 0x18, 0x01, 0x4f, 0xf6, + 0xff, 0x70, 0xc2, 0xf2, 0x20, 0x01, 0xc8, 0x81, 0xb8, 0xf8, 0x00, 0x00, 0x20, 0xb1, 0x41, + 0xf6, 0xf8, 0x60, 0xc2, 0xf2, 0x00, 0x00, 0x08, 0x80, 0xb0, 0x88, 0x08, 0x80, 0xb8, 0xf8, + 0x00, 0x00, 0x31, 0x89, 0x23, 0x46, 0x00, 0xeb, 0xc1, 0x00, 0x50, 0x30, 0x80, 0xb2, + + 0x01, 0x05, 0xff, 0x75, 0x0c, 0x2d, 0x1b, 0x00, 0x70, 0x00, 0x21, 0x02, 0xb2, 0xad, 0xf8, + 0x04, 0x00, 0x48, 0x46, 0x02, 0xf0, 0xb4, 0xfd, 0xbd, 0xf8, 0x04, 0x00, 0x6b, 0x46, 0x00, + 0x21, 0x40, 0x1c, 0x02, 0xb2, 0x48, 0x46, 0x02, 0xf0, 0xab, 0xfd, 0xbd, 0xf8, 0x04, 0x10, + 0xbd, 0xf8, 0x00, 0x00, 0x02, 0xb0, 0x0d, 0x43, 0xa7, 0xf8, 0x48, 0x00, 0xa7, 0xf8, 0x46, + 0x50, 0xbd, 0xe8, 0xf0, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, + 0xb5, + + 0x01, 0x05, 0xff, 0x09, 0xb4, 0x30, 0x1b, 0x00, 0x04, 0x5b, 0x5c, 0x02, 0x21, + + 0x01, 0x05, 0xff, 0x11, 0x38, 0x39, 0x1b, 0x00, 0x0c, 0x00, 0x21, 0xc2, 0xf2, 0x00, 0x04, + 0x0a, 0x46, 0x20, 0x79, 0x0b, 0x46, + + 0x01, 0x05, 0xff, 0x15, 0x90, 0x41, 0x1b, 0x00, 0x10, 0x30, 0x40, 0x00, 0x21, 0xc2, 0xf2, + 0x00, 0x00, 0x0a, 0x46, 0xc0, 0x7d, 0x0b, 0x46, 0xfc, 0xf7, + + 0x01, 0x05, 0xff, 0x09, 0x08, 0x4a, 0x1b, 0x00, 0x04, 0x19, 0x46, 0x1a, 0x46, + + 0x01, 0x05, 0xff, 0x71, 0x58, 0x4c, 0x1b, 0x00, 0x6c, 0x10, 0xb5, 0x04, 0x46, 0x41, 0xf2, + 0x24, 0x03, 0x46, 0xf2, 0x0e, 0x00, 0x4f, 0xf6, 0xfc, 0x71, 0x1f, 0x22, 0xc2, 0xf2, 0x20, + 0x00, 0xc2, 0xf2, 0x31, 0x03, 0xa0, 0xf8, 0x5a, 0x10, 0x06, 0x21, 0x1a, 0x80, 0x4f, 0xf4, + 0xb6, 0x42, 0x01, 0x83, 0x18, 0x21, 0xc2, 0x82, 0x4f, 0xf4, 0x08, 0x52, 0x41, 0x83, 0x07, + 0x21, 0x02, 0x80, 0x41, 0x80, 0x02, 0xf0, 0x44, 0xfa, 0x01, 0x2c, 0x0e, 0xd1, 0x43, 0xf2, + 0x00, 0x00, 0xc2, 0xf2, 0x31, 0x00, 0x00, 0x21, 0xc1, 0x83, 0x81, 0x83, 0x47, 0xf6, 0x44, + 0x70, 0xc2, 0xf2, 0x32, 0x00, 0x47, 0xf6, 0x60, 0x01, 0x01, 0xf0, 0xd4, 0xfc, 0x10, 0xbd, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x01, 0x05, 0xff, 0x09, 0xd0, 0x4f, 0x1b, 0x00, 0x04, 0xe8, 0x7d, 0x02, 0x21, + + 0x01, 0x05, 0xff, 0x69, 0x14, 0x50, 0x1b, 0x00, 0x64, 0xad, 0xf1, 0x14, 0x0d, 0x4f, 0xf0, + 0x00, 0x04, 0x03, 0xb9, 0x01, 0x24, 0x41, 0xf6, 0x28, 0x43, 0x45, 0xf2, 0x55, 0x5c, 0x41, + 0xf6, 0x0c, 0x46, 0xc2, 0xf2, 0x00, 0x03, 0x02, 0x90, 0xc0, 0xf2, 0x55, 0x0c, 0xc2, 0xf2, + 0x00, 0x06, 0x00, 0x27, 0x9a, 0x18, 0x03, 0x91, 0x8d, 0xf8, 0x11, 0x40, 0x15, 0x79, 0xcd, + 0xf8, 0x00, 0xc0, 0x03, 0xf1, 0x14, 0x00, 0x01, 0x96, 0x40, 0xf2, 0x4e, 0x62, 0xc2, 0xf2, + 0x00, 0x02, 0x8d, 0xf8, 0x10, 0x50, 0x17, 0x80, 0x01, 0xf0, 0xd4, 0xf9, 0x68, 0x46, 0xfd, + 0xf7, 0x89, 0xfe, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xb5, + + 0x01, 0x05, 0xff, 0x59, 0x58, 0x52, 0x1b, 0x00, 0x54, 0xfc, 0x32, 0x41, 0xf6, 0x2c, 0x4c, + 0xc2, 0xf2, 0x00, 0x02, 0xc2, 0xf2, 0x00, 0x0c, 0x40, 0xf2, 0x4e, 0x63, 0x45, 0xf2, 0x55, + 0x57, 0x00, 0x26, 0x91, 0x89, 0x01, 0x25, 0x1c, 0xf8, 0x00, 0x00, 0x02, 0x24, 0xc2, 0xf2, + 0x00, 0x03, 0xc0, 0xf2, 0x55, 0x07, 0x6f, 0xf3, 0x9f, 0x21, 0x8d, 0xf8, 0x0c, 0x00, 0xad, + 0xf8, 0x0a, 0x60, 0x8d, 0xf8, 0x0e, 0x50, 0x01, 0x92, 0x1c, 0x80, 0x89, 0x1e, 0x00, 0x97, + 0x68, 0x46, 0xad, 0xf8, 0x08, 0x10, 0xfd, 0xf7, 0xd1, 0xfc, 0x04, 0xb0, 0xf0, 0xbd, 0x00, + 0x00, 0x18, 0xb5, + + 0x01, 0x05, 0xff, 0x15, 0x44, 0x55, 0x1b, 0x00, 0x10, 0x47, 0x40, 0x00, 0x21, 0xc2, 0xf2, + 0x00, 0x00, 0x0a, 0x46, 0x00, 0x78, 0x0b, 0x46, 0xfb, 0xf7, + + 0x01, 0x05, 0xff, 0x2d, 0xc4, 0x56, 0x1b, 0x00, 0x28, 0x10, 0xb5, 0x40, 0xf2, 0x00, 0x04, + 0x02, 0x20, 0xc2, 0xf2, 0x00, 0x04, 0x60, 0x77, 0xff, 0xf7, 0x0d, 0xff, 0x05, 0x20, 0x00, + 0xf0, 0x1a, 0xf8, 0x41, 0xf6, 0xc0, 0x20, 0x00, 0x21, 0x01, 0x22, 0xc2, 0xf2, 0x00, 0x00, + 0x00, 0x78, 0x0b, 0x46, + + 0x01, 0x05, 0xff, 0x09, 0x0c, 0x57, 0x1b, 0x00, 0x04, 0x11, 0x80, 0x10, 0xbd, + + 0x01, 0x05, 0xff, 0x49, 0xcc, 0x58, 0x1b, 0x00, 0x44, 0x46, 0xf2, 0x28, 0x04, 0xc2, 0xf2, + 0x20, 0x04, 0x4f, 0xf0, 0x18, 0x05, 0x40, 0xf2, 0x4e, 0x63, 0x25, 0x80, 0xc2, 0xf2, 0x00, + 0x03, 0x1b, 0x88, 0x41, 0xf6, 0x28, 0x45, 0xc2, 0xf2, 0x00, 0x05, 0x03, 0xeb, 0xc0, 0x03, + 0x63, 0x80, 0x2b, 0x78, 0x4f, 0xea, 0x01, 0x66, 0x4f, 0xea, 0x11, 0x21, 0xa1, 0x81, 0x4f, + 0xea, 0x16, 0x45, 0x65, 0x81, 0x13, 0xb1, 0x11, 0x46, 0x01, 0xf0, 0x1a, 0xfc, 0x70, 0xbd, + 0x00, 0x00, + + 0x01, 0x05, 0xff, 0x31, 0x2c, 0x59, 0x1b, 0x00, 0x2c, 0x00, 0x94, 0xad, 0xf8, 0x0a, 0x10, + 0xad, 0xf8, 0x08, 0x30, 0x38, 0x78, 0x00, 0x21, 0x8d, 0xf8, 0x0e, 0x10, 0x8d, 0xf8, 0x0c, + 0x00, 0x01, 0xf0, 0xe2, 0xfb, 0x68, 0x46, 0xfd, 0xf7, 0x7d, 0xf9, 0x04, 0xb0, 0x90, 0xbd, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xb5, + + 0x01, 0x05, 0xff, 0x3d, 0x34, 0x5b, 0x1b, 0x00, 0x38, 0x45, 0xf2, 0x55, 0x56, 0x40, 0xf2, + 0x4e, 0x64, 0x01, 0x90, 0x01, 0x27, 0x00, 0x25, 0xc0, 0xf2, 0x55, 0x06, 0xc2, 0xf2, 0x00, + 0x04, 0x8d, 0xf8, 0x10, 0x30, 0x03, 0x91, 0x02, 0x92, 0x68, 0x46, 0x8d, 0xf8, 0x11, 0x70, + 0x00, 0x96, 0x25, 0x80, 0xfd, 0xf7, 0x0d, 0xf9, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x01, 0x05, 0xff, 0x75, 0x60, 0x5c, 0x1b, 0x00, 0x70, 0x01, 0x68, 0xb1, 0xf1, 0xff, 0x3f, + 0x1c, 0xbf, 0x49, 0x1c, 0x01, 0x60, 0x13, 0xd1, 0x41, 0x68, 0x00, 0x23, 0x03, 0x60, 0x01, + 0xf0, 0x7f, 0x02, 0x7f, 0x2a, 0x04, 0xbf, 0x21, 0xf0, 0x7f, 0x01, 0x41, 0x60, 0x4f, 0xea, + 0x41, 0x62, 0x06, 0xd0, 0x02, 0xf1, 0x00, 0x72, 0x21, 0xf0, 0x7f, 0x01, 0x41, 0xea, 0x52, + 0x61, 0x41, 0x60, 0x70, 0x47, 0x00, 0x00, 0x70, 0xb5, 0xad, 0xf1, 0x14, 0x0d, 0x41, 0xf6, + 0xcc, 0x36, 0x40, 0xf2, 0x4e, 0x65, 0x03, 0x90, 0x00, 0x24, 0xc2, 0xf2, 0x00, 0x06, 0xc2, + 0xf2, 0x00, 0x05, 0x00, 0x93, 0x8d, 0xf8, 0x10, 0x20, 0x02, 0x91, 0x68, 0x46, 0x8d, 0xf8, + 0x11, 0x40, 0x01, 0x96, 0x2c, 0x80, 0xfd, 0xf7, 0x58, 0xf8, 0x05, 0xb0, 0x70, 0xbd, 0x00, + 0x00, + + 0x01, 0x05, 0xff, 0xcd, 0x78, 0x6e, 0x1b, 0x00, 0xc8, 0x1d, 0x1c, 0x1b, 0xff, 0x15, 0x1e, + 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xfe, 0xf7, 0x31, + 0xfb, 0x40, 0xf6, 0x6a, 0x20, 0x07, 0x21, 0xc2, 0xf2, 0x32, 0x00, 0xff, 0xf7, 0xcc, 0xfb, + 0x40, 0xf6, 0x6a, 0x20, 0x09, 0x21, 0xc2, 0xf2, 0x32, 0x00, 0xff, 0xf7, 0xc5, 0xfb, 0x40, + 0xf6, 0x6a, 0x20, 0x02, 0x21, 0xc2, 0xf2, 0x32, 0x00, 0xff, 0xf7, 0xbe, 0xfb, 0x00, 0xbd, + 0x70, 0xb5, 0x41, 0xf6, 0x48, 0x44, 0xc2, 0xf2, 0x00, 0x04, 0xe0, 0x68, 0x81, 0x79, 0x4f, + 0xf4, 0xaf, 0x70, 0xa0, 0xeb, 0xc1, 0x00, 0x80, 0xb2, 0xfe, 0xf7, 0x1d, 0xfc, 0x40, 0xf6, + 0x6a, 0x20, 0x07, 0x21, 0xc2, 0xf2, 0x32, 0x00, 0xff, 0xf7, 0xa1, 0xfb, 0x40, 0xf6, 0x6a, + 0x20, 0x09, 0x21, 0xc2, 0xf2, 0x32, 0x00, 0xff, 0xf7, 0x9a, 0xfb, 0x40, 0xf6, 0x6a, 0x20, + 0x02, 0x21, 0xc2, 0xf2, 0x32, 0x00, 0xff, 0xf7, 0x9a, 0xfb, 0x14, 0x20, 0xfe, 0xf7, 0x05, + 0xfc, 0x40, 0xf2, 0x00, 0x01, 0xc2, 0xf2, 0x00, 0x01, 0x91, 0xf8, 0x96, 0x05, 0x63, 0x7a, + 0x41, 0xf6, 0x44, 0x42, 0xc2, 0xf2, 0x00, 0x02, 0x40, 0xea, 0x03, 0x10, 0x43, 0xf2, 0x1c, + 0x03, 0x12, 0x88, 0xc0, 0x00, 0xc2, 0xf2, 0x31, 0x03, 0x00, 0x24, 0x40, 0xf2, 0x4e, 0x65, + 0x42, 0xf2, 0x48, 0x46, 0x18, 0x80, 0x4c, 0x53, 0xc2, 0xf2, 0x31, 0x06, 0x72, 0x80, + + 0x01, 0x05, 0xff, 0xcd, 0x40, 0x6f, 0x1b, 0x00, 0xc8, 0x15, 0x20, 0x30, 0x80, 0x30, 0x88, + 0x15, 0x28, 0x02, 0xd0, 0x5e, 0x20, 0xff, 0xf7, 0x8d, 0xfb, 0x40, 0xf2, 0x00, 0x00, 0xc2, + 0xf2, 0x00, 0x00, 0x90, 0xf8, 0x05, 0x36, 0x4f, 0xf2, 0x04, 0x01, 0xc2, 0xf2, 0x32, 0x01, + 0x10, 0x2b, 0x04, 0xda, 0x0a, 0x88, 0x01, 0x20, 0x98, 0x40, 0x10, 0x43, 0x08, 0x80, 0x41, + 0xf6, 0x48, 0x40, 0xc2, 0xf2, 0x00, 0x00, 0xc1, 0x68, 0x42, 0x7a, 0x41, 0xf6, 0x6c, 0x40, + 0x89, 0x79, 0xc2, 0xf2, 0x00, 0x00, 0xfe, 0xf7, 0x2b, 0xfd, 0x70, 0xbd, 0x00, 0xb5, 0x41, + 0xf6, 0x48, 0x40, 0x07, 0x21, 0xc2, 0xf2, 0x00, 0x00, 0xff, 0xf7, 0x9b, 0xfb, 0x40, 0xf6, + 0x6a, 0x20, 0x07, 0x21, 0xc2, 0xf2, 0x32, 0x00, 0xff, 0xf7, 0x3d, 0xfb, 0x14, 0x20, 0xfe, + 0xf7, 0xaf, 0xfb, 0x40, 0xf2, 0x97, 0x50, 0xc2, 0xf2, 0x00, 0x00, 0x00, 0x78, 0x43, 0xf2, + 0x20, 0x01, 0xc2, 0xf2, 0x31, 0x01, 0x08, 0x80, 0x00, 0xbd, 0x00, 0xb5, 0x41, 0xf6, 0x47, + 0x40, 0x03, 0x21, 0xc2, 0xf2, 0x00, 0x00, 0x01, 0x70, 0x40, 0xf6, 0x6a, 0x20, 0x07, 0x21, + 0xc2, 0xf2, 0x32, 0x00, 0xff, 0xf7, 0x28, 0xfb, 0x40, 0xf6, 0x6a, 0x20, 0x09, 0x21, 0xc2, + 0xf2, 0x32, 0x00, 0xff, 0xf7, 0x21, 0xfb, 0x40, 0xf6, 0x6a, 0x20, 0x02, 0x21, 0xc2, 0xf2, + 0x32, 0x00, 0xff, 0xf7, 0x1a, 0xfb, 0x40, 0xf6, 0x6a, 0x20, 0x02, 0x21, 0xc2, 0xf2, + + 0x01, 0x05, 0xff, 0xcd, 0x08, 0x70, 0x1b, 0x00, 0xc8, 0x32, 0x00, 0xff, 0xf7, 0x13, 0xfb, + 0x40, 0xf6, 0x6a, 0x20, 0x08, 0x21, 0xc2, 0xf2, 0x32, 0x00, 0xff, 0xf7, 0x05, 0xfb, 0x40, + 0xf6, 0x6a, 0x20, 0x06, 0x21, 0xc2, 0xf2, 0x32, 0x00, 0xff, 0xf7, 0xfe, 0xfa, 0x43, 0xf2, + 0x5c, 0x10, 0x00, 0x21, 0xc2, 0xf2, 0x31, 0x00, 0xff, 0xf7, 0xf7, 0xfa, 0x41, 0xf6, 0x50, + 0x40, 0xc2, 0xf2, 0x00, 0x00, 0x00, 0x78, 0x10, 0xb9, 0x00, 0xf0, 0xbc, 0xff, 0x00, 0xbd, + 0x00, 0xf0, 0x22, 0xff, 0x00, 0xbd, 0xf0, 0xb5, 0x40, 0xf2, 0x00, 0x02, 0xc2, 0xf2, 0x00, + 0x02, 0xd2, 0xf8, 0x8c, 0x35, 0x04, 0x78, 0x40, 0xf2, 0x00, 0x01, 0x6f, 0xf3, 0x1f, 0x43, + 0xc2, 0xf2, 0x30, 0x01, 0x19, 0x43, 0x42, 0xf2, 0x6c, 0x45, 0x0c, 0x80, 0x43, 0xf2, 0x00, + 0x01, 0x00, 0x23, 0xc4, 0xf2, 0x00, 0x05, 0x2b, 0x80, 0x4f, 0xf4, 0x20, 0x65, 0xc2, 0xf2, + 0x31, 0x01, 0x01, 0x24, 0x41, 0xf2, 0x08, 0x46, 0x40, 0x27, 0x4f, 0xf0, 0x78, 0x0c, 0x4d, + 0x80, 0x0e, 0x80, 0xcf, 0x83, 0xa1, 0xf8, 0x1c, 0xc0, 0x8c, 0x80, 0x0c, 0x84, 0x01, 0x78, + 0x10, 0x29, 0x29, 0xda, 0x11, 0xb3, 0x49, 0x1e, 0x16, 0xd0, 0x49, 0x1e, 0x0a, 0xd0, 0x49, + 0x1e, 0x22, 0xd1, 0x42, 0xf2, 0x46, 0x40, 0xc2, 0xf2, 0x31, 0x00, 0x83, 0x80, 0x04, 0x80, + 0x92, 0xf8, 0x49, 0x06, 0x1b, 0xe0, 0x42, 0xf2, 0x46, 0x40, 0xc2, 0xf2, 0x31, 0x00, + + 0x01, 0x05, 0xff, 0xcd, 0xd0, 0x70, 0x1b, 0x00, 0xc8, 0x02, 0x21, 0x81, 0x80, 0x04, 0x80, + 0x92, 0xf8, 0x49, 0x06, 0x11, 0xe0, 0x42, 0xf2, 0x46, 0x40, 0xc2, 0xf2, 0x31, 0x00, 0x02, + 0x21, 0x81, 0x80, 0x04, 0x80, 0x92, 0xf8, 0x49, 0x06, 0x07, 0xe0, 0x42, 0xf2, 0x46, 0x40, + 0xc2, 0xf2, 0x31, 0x00, 0x83, 0x80, 0x04, 0x80, 0x92, 0xf8, 0x49, 0x06, 0x00, 0xf0, 0x7f, + 0x00, 0x82, 0xf8, 0x49, 0x06, 0xf0, 0xbd, 0x40, 0xf2, 0x00, 0x00, 0xc2, 0xf2, 0x00, 0x00, + 0xb0, 0xf8, 0x50, 0x16, 0xa0, 0xf8, 0x4e, 0x16, 0x70, 0x47, 0x10, 0xb5, 0x41, 0xf6, 0xf8, + 0x60, 0x46, 0xf2, 0x01, 0x03, 0x42, 0xf2, 0x01, 0x02, 0xc2, 0xf2, 0x00, 0x00, 0x4f, 0xf4, + 0x00, 0x61, 0x4f, 0xf4, 0x33, 0x64, 0x43, 0x80, 0x82, 0x80, 0xc1, 0x80, 0x04, 0x80, 0x10, + 0xbd, 0x10, 0xb5, 0x40, 0xf2, 0x4e, 0x62, 0x46, 0xf6, 0x40, 0x63, 0xc2, 0xf2, 0x00, 0x02, + 0x46, 0xf2, 0x0c, 0x04, 0xc0, 0xf2, 0x00, 0x03, 0x12, 0x88, 0xc2, 0xf2, 0x20, 0x04, 0x59, + 0x5c, 0x02, 0xeb, 0xc0, 0x00, 0x20, 0x80, 0x48, 0xf2, 0xe0, 0x12, 0x08, 0x02, 0xe2, 0x80, + 0x20, 0x81, 0x10, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x05, 0xff, 0x25, 0x98, 0x71, 0x1b, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 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, 0x05, 0xff, 0xcd, 0xf4, 0x78, 0x1b, 0x00, 0xc8, 0xf0, 0x83, 0x70, 0xb5, 0x41, 0xf6, + 0x48, 0x44, 0x06, 0x46, 0xc2, 0xf2, 0x00, 0x04, 0xe0, 0x68, 0x07, 0x21, 0x45, 0x78, 0x40, + 0xf6, 0x6a, 0x20, 0xc2, 0xf2, 0x32, 0x00, 0xfe, 0xf7, 0x90, 0xfe, 0x01, 0x20, 0xfd, 0xf7, + 0xae, 0xfb, 0x00, 0x2e, 0x40, 0xf2, 0x00, 0x01, 0x46, 0xd1, 0xc2, 0xf2, 0x00, 0x01, 0x91, + 0xf8, 0x98, 0x05, 0x01, 0xf2, 0xfc, 0x56, 0x90, 0xb9, 0xe0, 0x68, 0x2d, 0x18, 0x2a, 0x79, + 0xe9, 0x78, 0xa8, 0x78, 0xfb, 0xf7, 0x9c, 0xfe, 0x30, 0xb9, 0x61, 0x69, 0x49, 0x1c, 0x61, + 0x61, 0x2c, 0x20, 0xfe, 0xf7, 0xe2, 0xfd, 0x70, 0xbd, 0x30, 0x88, 0x40, 0x1c, 0x30, 0x80, + 0x70, 0xbd, 0xff, 0xf7, 0x5e, 0xfe, 0xe0, 0x68, 0x28, 0x18, 0x02, 0x79, 0xc1, 0x78, 0x80, + 0x78, 0xff, 0xf7, 0x92, 0xfd, 0x00, 0xf0, 0xd0, 0xf9, 0xb6, 0xf8, 0x42, 0x00, 0x80, 0x08, + 0x2c, 0xbf, 0x01, 0x22, 0x00, 0x22, 0x0e, 0x20, 0x00, 0x21, 0xfb, 0xf7, 0xe7, 0xfe, 0x06, + 0x46, 0xe0, 0x68, 0x2d, 0x18, 0xa8, 0x78, 0xe9, 0x78, 0x2a, 0x79, 0xfb, 0xf7, 0x73, 0xfe, + 0x01, 0x2e, 0x04, 0xbf, 0xa1, 0x69, 0x00, 0x28, 0x07, 0xd0, 0x4e, 0xb9, 0x01, 0x28, 0x07, + 0xd1, 0xa1, 0x69, 0x88, 0x8f, 0x40, 0x1c, 0x88, 0x87, 0x70, 0xbd, 0x48, 0x8f, 0x40, 0x1c, + 0x48, 0x87, 0x70, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x01, 0x05, 0xff, 0x75, 0xbc, 0x79, 0x1b, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x05, 0xff, 0x09, 0x04, 0x7b, 0x1b, 0x00, 0x04, 0x28, 0xb9, 0x0f, 0x20, + + 0x01, 0x05, 0xff, 0x55, 0x98, 0x7e, 0x1b, 0x00, 0x50, 0x00, 0x20, 0xad, 0xf8, 0x04, 0x00, + 0x00, 0x90, 0xff, 0xf7, 0x75, 0xf8, 0x41, 0xf6, 0x48, 0x44, 0x41, 0xf6, 0x74, 0x40, 0xc2, + 0xf2, 0x00, 0x04, 0x6a, 0x46, 0x69, 0x46, 0x63, 0x7a, 0xc2, 0xf2, 0x00, 0x00, 0xfd, 0xf7, + 0x38, 0xfe, 0x02, 0xb0, 0x02, 0x20, 0xe0, 0x61, 0x10, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xb5, 0x41, 0xf6, 0x48, 0x44, 0xc2, 0xf2, + 0x00, 0x04, 0xe0, 0x69, 0x01, 0x28, 0x14, 0xd1, 0xfe, 0xf7, 0xd1, 0xff, 0x60, 0x69, + + 0x01, 0x05, 0xff, 0x15, 0x0c, 0x7f, 0x1b, 0x00, 0x10, 0x10, 0xbd, 0x00, 0xb5, 0x41, 0xf6, + 0x50, 0x40, 0xc2, 0xf2, 0x00, 0x00, 0x00, 0x21, 0x02, 0x78, + + 0x01, 0x05, 0xff, 0x45, 0x30, 0x7f, 0x1b, 0x00, 0x40, 0xff, 0xf7, 0x4a, 0xf8, 0x00, 0xbd, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 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, 0x05, 0xff, 0x0d, 0xd4, 0x7f, 0x1b, 0x00, 0x08, 0x56, 0xfc, 0xfe, 0xf7, 0x70, 0xff, + 0x00, 0xbd, + + // + // ######################## + // # Patch End + // ######################## + // #release Cortex Reset + 0x01, 0x09, 0xfd, 0x08, 0x00, 0xc0, 0x1b, 0x00, 0x00, 0x00, 0x01, 0x00, + + // + // # Enable Cortex Sleep + 0x01, 0xa8, 0xfd, 0x01, 0x00, + + // + // #RESET BLE + 0x01, 0x5b, 0xfd, 0x02, 0x01, 0x00, + + // + 0x01, 0xdd, 0xfd, 0x01, 0x01, + + // + // ################################################################# + // ## START of CC256x Add-On + // ################################################################# + // + // ## Enable fast clock XTAL support + 0x01, 0x1c, 0xfd, 0x14, 0x01, 0x88, 0x13, 0x00, 0x00, 0xd0, 0x07, 0x00, 0x00, 0xff, 0xff, + 0x04, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x00, 0x00, 0x00, + + // + // ## Enable eHCILL + 0x01, 0x2b, 0xfd, 0x05, 0x10, 0x00, 0x50, 0x00, 0x96, + + // + 0x01, 0x0c, 0xfd, 0x09, 0x01, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x64, 0x00, + + // + // ################################################################# + // ## END of CC256x Add-On + // ################################################################# +}; + +const uint32_t cc256x_init_script_size = 17759; + diff --git a/metawatch/bluetooth_init_cc256x.h b/metawatch/bluetooth_init_cc256x.h new file mode 100644 index 0000000..fcc092c --- /dev/null +++ b/metawatch/bluetooth_init_cc256x.h @@ -0,0 +1,11 @@ +#ifndef _BT_CC2560_H +#define _BT_CC2560_H + +/* the init/patch script for CC256x chipset */ +/* see TI license for details */ + +extern const uint8_t cc256x_init_script[]; +extern const uint8_t cc256x_init_script_2[]; +extern const uint32_t cc256x_init_script_size; +extern const char *cc256x_version; +#endif diff --git a/metawatch/bt_hci.c b/metawatch/bt_hci.c new file mode 100644 index 0000000..56e490e --- /dev/null +++ b/metawatch/bt_hci.c @@ -0,0 +1,512 @@ +#include +#include +#include +#include +#include + +#include "mw_main.h" + +#include "mw_uart.h" +#include "mw_bt.h" +#include "bt_hci.h" +#include "bt_l2cap.h" + + +static uint8_t local_bdaddr[6]; + +uint8_t *bt_hci_get_local_bdaddr(void) +{ + return local_bdaddr; +} + +static void bt_print_bd_addr(uint8_t *bd_addr) +{ +#if defined MW_DEVBOARD_V2 + int i; + char nums[4]; + + for (i=5; i>=0; i--) { + snprintf(nums, 4, "%02x", bd_addr[i]); + debug_uart_tx(nums); + if (i>0) + debug_uart_tx_char(':'); + } +#endif +} + +void bt_hci_process_acl_packet(unsigned char *packet) +{ +#if defined MW_DEVBOARD_V2 + char tstr[32]; +#endif + uint16_t dlen; + uint16_t handle; + L2CAP_PB_FLAG PB; + L2CAP_BC_FLAG BC; + uint16_t channel; + uint16_t mlen; + +// debug_uart_tx("ACL packet, "); + handle = packet[0] | ((packet[1] & 0x0f) << 8); +// snprintf(tstr, 32, "handle 0x%04x ", handle); +// debug_uart_tx(tstr); + PB = (packet[1] >> 4) & 0x03; + BC = (packet[1] >> 6) & 0x03; +// snprintf(tstr, 32, "PB 0x%02x BC 0x%02x ", PB, BC); +// debug_uart_tx(tstr); + + dlen = packet[2] | ((uint16_t)packet[3] << 8); +// snprintf(tstr, 32, "len 0x%04x \n", dlen); +// debug_uart_tx(tstr); +// debug_dump_hex(dlen+4, packet); + + channel = packet[4+2] | (packet[4+3] << 8); + mlen = packet[4] | (packet[4+1] << 8); + switch (channel) { + case L2CAP_CID_SIGNALING: + bt_l2cap_proc_signalling(handle, (packet+8), mlen); + break; + case L2CAP_CID_CONNECTIONLESS_CHANNEL: + break; + case L2CAP_CID_ATTRIBUTE_PROTOCOL: + break; + case L2CAP_CID_SIGNALING_LE: + break; + case L2CAP_CID_SECURITY_MANAGER_PROTOCOL: + break; + default: + if (channel > 0x3f) { + // just for sure, add a 0 as string delimiter + packet[mlen+8] = 0x00; + bt_l2cap_proc_dyn_channel(channel, handle, (packet+8), mlen); + } else { +#if defined MW_DEVBOARD_V2 + snprintf(tstr, 32, "L2CAP unhandled CID 0x%04x\n", channel); + debug_uart_tx(tstr); +#endif + } + break; + } +} + +void bt_hci_process_event_packet(unsigned char *packet) +{ +#if defined MW_DEVBOARD_V2 + char tstr[32]; +#endif + int i; + // uint8_t bd_addr[6]; + uint32_t dev_type; + +// debug_uart_tx("Event packet, "); +// snprintf(tstr, 32, "evt 0x%02x: ", packet[0]); +// debug_uart_tx(tstr); + + switch (packet[0]) { + case HCI_EVENT_INQUIRY_COMPLETE: + debug_uart_tx("inq complete\n"); + break; + case HCI_EVENT_INQUIRY_RESULT: + debug_uart_tx("inq result\n"); + break; + case HCI_EVENT_CONNECTION_COMPLETE: + debug_uart_tx("con complete from "); +#if defined MW_DEVBOARD_V2 + bt_print_bd_addr((packet+5)); + snprintf(tstr, 32, " status 0x%02x handle 0x%02x", packet[2], packet[3]); + debug_uart_tx(tstr); + snprintf(tstr, 32, " type 0x%02x enc 0x%02x\n", packet[11], packet[12]); + debug_uart_tx(tstr); + if (packet[2] == 0x00) + debug_uart_tx("connection established\n"); + else + debug_uart_tx("connection failed\n"); +#endif + break; + case HCI_EVENT_CONNECTION_REQUEST: { + uint8_t bd_addr[7]; + + switch (packet[11]) { + case HCI_LINK_TYPE_SCO: + debug_uart_tx("SCO"); + break; + case HCI_LINK_TYPE_ACL: + debug_uart_tx("ACL"); + break; + case HCI_LINK_TYPE_ESCO: + debug_uart_tx("eSCO"); + break; + default: + debug_uart_tx("unknown type"); + break; + } + debug_uart_tx(" con req from "); + for (i=0; i<6; i++) { + bd_addr[i] = packet[i+2]; + } + bt_print_bd_addr(bd_addr); + dev_type = (uint32_t)packet[8] << 16; + dev_type |= (uint32_t)packet[9] << 8; + dev_type |= packet[10]; +#if defined MW_DEVBOARD_V2 + snprintf(tstr, 32, " rem. dtype 0x%06lx\n", dev_type); + debug_uart_tx(tstr); +#endif + //memcpy(tstr, bd_addr, 6); + //tstr[6] = 0x01; /* remain slave */ + bd_addr[6] = 0x01; /* remain slave */ + bt_hci_cmd(HCI_LINK_CTRL_OGF, HCI_ACCEPT_CONN_REQ_OCF, 7, bd_addr); + } break; + case HCI_EVENT_DISCONNECTION_COMPLETE: + debug_uart_tx("discon complete\n"); + break; + case HCI_EVENT_AUTHENTICATION_COMPLETE_EVENT: + debug_uart_tx("auth complete\n"); + break; + case HCI_EVENT_REMOTE_NAME_REQUEST_COMPLETE: + debug_uart_tx("rem name req complete\n"); + break; + case HCI_EVENT_ENCRYPTION_CHANGE: + debug_uart_tx("enc change\n"); + break; + case HCI_EVENT_CHANGE_CONNECTION_LINK_KEY_COMPLETE: + debug_uart_tx("change con link key complete\n"); + break; + case HCI_EVENT_MASTER_LINK_KEY_COMPLETE: + debug_uart_tx("master link key complete\n"); + break; + case HCI_EVENT_READ_REMOTE_SUPPORTED_FEATURES_COMPLETE: + debug_uart_tx("read rem feat. complete\n"); + break; + case HCI_EVENT_READ_REMOTE_VERSION_INFORMATION_COMPLETE: + debug_uart_tx("read rem version complete\n"); + break; + case HCI_EVENT_QOS_SETUP_COMPLETE: + debug_uart_tx("qos setup complete\n"); + break; + case HCI_EVENT_COMMAND_COMPLETE: + // snprintf(tstr, 32, "%d cmd(s) complete: 0x%02x%02x=%d", packet[2], packet[3], packet[4], packet[5]); + // debug_uart_tx(tstr); + if (packet[2] > 0 && + packet[3] == ((HCI_R_BD_ADDR_OCF | (HCI_INFO_PARAM_OGF << 10)) & 0xff) && + packet[4] == (((HCI_R_BD_ADDR_OCF | (HCI_INFO_PARAM_OGF << 10)) & 0xff00) >> 8)) { // read local bdaddr + memcpy(local_bdaddr, (packet+6), 6); +#if defined MW_DEVBOARD_V2 + debug_uart_tx("local bdaddr = "); + bt_print_bd_addr((uint8_t *)(packet+6)); + debug_uart_tx("\n"); +#endif + } + break; + case HCI_EVENT_COMMAND_STATUS: + debug_uart_tx("cmd status\n"); + break; + case HCI_EVENT_HARDWARE_ERROR: +#if defined MW_DEVBOARD_V2 + debug_uart_tx("hardw err"); + snprintf(tstr, 32, " 0x%02x\n", packet[2]); + debug_uart_tx(tstr); +#endif + break; + case HCI_EVENT_FLUSH_OCCURED: + debug_uart_tx("flush occured\n"); + break; + case HCI_EVENT_ROLE_CHANGE: + debug_uart_tx("role change\n"); + break; + case HCI_EVENT_NUMBER_OF_COMPLETED_PACKETS: + debug_uart_tx("numb compl. packets\n"); + break; + case HCI_EVENT_MODE_CHANGE_EVENT: + debug_uart_tx("mode change\n"); + break; + case HCI_EVENT_RETURN_LINK_KEYS: + debug_uart_tx("return link keys\n"); + break; + case HCI_EVENT_PIN_CODE_REQUEST: + debug_uart_tx("pin code request\n"); +#if defined MW_DEVBOARD_V2 + debug_uart_tx("from "); + bt_print_bd_addr((uint8_t *)(packet+2)); + debug_uart_tx("\n"); +#endif + memmove(packet, (packet+2), 6); + packet[6] = 0x04; // PIN has length of 4 + memcpy((packet+7), BT_PIN, 4); + packet[7] = '4'; + packet[8] = '3'; + packet[9] = '1'; + packet[10] = '2'; + bt_hci_cmd(HCI_LINK_CTRL_OGF, HCI_PIN_CODE_REQ_REP_OCF, 11, packet); + break; + case HCI_EVENT_LINK_KEY_REQUEST: + debug_uart_tx("link key request\n"); + break; + case HCI_EVENT_LINK_KEY_NOTIFICATION: + debug_uart_tx("link key notify\n"); + break; + case HCI_EVENT_DATA_BUFFER_OVERFLOW: + debug_uart_tx("evt data buf overflow\n"); + break; + case HCI_EVENT_MAX_SLOTS_CHANGED: + debug_uart_tx("max slots changed\n"); + break; + case HCI_EVENT_READ_CLOCK_OFFSET_COMPLETE: + debug_uart_tx("read clock offset compl.\n"); + break; + case HCI_EVENT_PACKET_TYPE_CHANGED: + debug_uart_tx("packet type changed\n"); + break; + case HCI_EVENT_PAGE_SCAN_REPETION_MODE_CHANGE: + debug_uart_tx("page scan repetition mode changed\n"); + break; + case HCI_EVENT_INQUIRY_RESULT_WITH_RSSI: + debug_uart_tx("inq result with RSSI\n"); + break; + case HCI_EVENT_EXTENDED_INQUIRY_RESPONSE: + debug_uart_tx("ext. inq. resp.\n"); + break; + case HCI_EVENT_LE_META: + debug_uart_tx("LE meta\n"); + break; + case HCI_EVENT_VENDOR_SPECIFIC: + debug_uart_tx("vend. spec.\n"); + break; + default: + debug_uart_tx("unknown\n"); + break; + } +// debug_uart_tx("\n"); +// for (i=2; i<=(packet[1]+1); i++) { +// snprintf(tstr, 32, " 0x%02x", packet[i]); +// debug_uart_tx(tstr); +// } +// debug_uart_tx("\n"); +} + +typedef enum { + HCI_PACKET_START = 0, + HCI_CMD_PACKET, + HCI_ACL_PACKET_HEADER, + HCI_ACL_PACKET_DATA, + HCI_SCO_PACKET, + HCI_EVENT_PACKET_HEADER, + HCI_EVENT_PACKET_DATA, + HCI_EHCILL_PACKET, + EHCILL_SLEEPING +} bt_hci_state_t; + +static bt_hci_state_t state = HCI_PACKET_START; + +unsigned char bt_feed_packet_data(unsigned char pdata) +{ + char tstr[32]; + static unsigned char packet[255]; + static uint16_t bytes_left = 0; + static uint16_t pdata_pos = 0; + +// snprintf(tstr, 32, "bt 0x%02x ", pdata); +// debug_uart_tx(tstr); + switch (state) { + case HCI_PACKET_START: + switch (pdata) { + case HCI_EVENT_PACKET: + state = HCI_EVENT_PACKET_HEADER; + bytes_left = 1; + pdata_pos = 0; + memset(packet, 0, 64); + break; + case HCI_ACL_DATA_PACKET: + state = HCI_ACL_PACKET_HEADER; + bytes_left = 3; + pdata_pos = 0; + memset(packet, 0, 64); + break; + case EHCILL_GO_TO_SLEEP_IND: + debug_uart_tx("eHCILL go to sleep ind\n"); + state = HCI_PACKET_START; + // disable BT UART? + // mabye UCA1CTL1 = UCSWRST ? + + pdata = EHCILL_GO_TO_SLEEP_ACK; + mw_bt_uart_tx(&pdata, 0x01); + + // pull RTS -> stop data + BT_IO_POUT |= BT_IO_RTS; + + // enable IRQ on CTS + P1IFG &= ~BT_IO_CTS; + P1IE |= BT_IO_CTS; + + state = EHCILL_SLEEPING; + break; + case EHCILL_GO_TO_SLEEP_ACK: + debug_uart_tx("eHCILL go to sleep ack\n"); + state = HCI_PACKET_START; + break; + case EHCILL_WAKE_UP_IND: + debug_uart_tx("eHCILL wake up ind\n"); + state = HCI_PACKET_START; + break; + case EHCILL_WAKE_UP_ACK: + debug_uart_tx("eHCILL wake up ack\n"); + state = HCI_PACKET_START; + break; + default: + debug_uart_tx("unexpected packet start\n"); + break; + } + break; + case HCI_EVENT_PACKET_HEADER: + if (bytes_left != 0) { + packet[pdata_pos++] = pdata; + bytes_left--; + } else { + state = HCI_EVENT_PACKET_DATA; + packet[pdata_pos++] = pdata; + bytes_left = pdata; + } + break; + case HCI_EVENT_PACKET_DATA: + packet[pdata_pos++] = pdata; + bytes_left--; + if (bytes_left == 0) { + state = HCI_PACKET_START; + bt_hci_process_event_packet(packet); + } + break; + case HCI_ACL_PACKET_HEADER: + if (bytes_left != 0) { + packet[pdata_pos++] = pdata; + bytes_left--; + } else { + state = HCI_ACL_PACKET_DATA; + packet[pdata_pos] = pdata; + bytes_left = (packet[pdata_pos-1] | (packet[pdata_pos] << 8)); +// snprintf(tstr, 32, "ACL data len 0x%04x\n", bytes_left); +// debug_uart_tx(tstr); +// snprintf(tstr, 32, "%d (0x%02x 0x%02x)\n", pdata_pos, packet[pdata_pos-1], packet[pdata_pos]); +// debug_uart_tx(tstr); + pdata_pos++; + } + break; + case HCI_ACL_PACKET_DATA: +// snprintf(tstr, 32, "%02x ", pdata); +// debug_uart_tx(tstr); + packet[pdata_pos++] = pdata; + bytes_left--; + if (bytes_left == 0) { +// debug_uart_tx("\n"); + state = HCI_PACKET_START; + bt_hci_process_acl_packet(packet); + } + break; + default: + debug_uart_tx("hosed HCI state!\n"); + snprintf(tstr, 32, " state = %d\n", state); + debug_uart_tx(tstr); + break; + }; + + // one byte consumed + return 1; +} + +typedef struct { + uint8_t type; + uint16_t cmd; + uint8_t length; +} __attribute__((packed)) bt_hci_cmd_t; + +void bt_hci_cmd(const uint8_t OGF, const uint8_t OCF, const uint8_t data_len, const void *data) +{ + bt_hci_cmd_t packet; + + // refuse any HCI if interface is not enabled + if (mw_bt_is_enabled() == 0) + return; + + if (state == EHCILL_SLEEPING) { + uint8_t ehcill_p = EHCILL_WAKE_UP_IND; + + debug_uart_tx("wakeup HCILL\n"); + state = HCI_PACKET_START; + mw_bt_uart_tx(&ehcill_p, 1); + __delay_cycles(300000); + BT_IO_POUT &= ~BT_IO_RTS; // drop RTS -> start data + } + packet.type = HCI_COMMAND_PACKET; + packet.cmd = OCF | (OGF<<10); + packet.length = data_len; + mw_bt_uart_tx(&packet, sizeof(bt_hci_cmd_t)); + if (data_len > 0 && data != NULL) + mw_bt_uart_tx(data, data_len); +} + +typedef struct { + uint16_t acl_handle; + uint16_t max_interval; + uint16_t min_interval; + uint16_t sniff_attempt; + uint16_t sniff_timeout; +} __attribute__((packed)) bt_hci_sniff_cmd_t; + +void bt_hci_set_sniff_mode(const uint16_t acl_handle, const uint16_t max_interval, const uint16_t min_interval, const uint16_t sniff_attempt, const uint16_t sniff_timeout) +{ + bt_hci_sniff_cmd_t sniff_cmd; + + sniff_cmd.acl_handle = acl_handle; + sniff_cmd.max_interval = max_interval; + sniff_cmd.min_interval = min_interval; + sniff_cmd.sniff_attempt = sniff_attempt; + sniff_cmd.sniff_timeout = sniff_timeout; + + bt_hci_cmd(HCI_LINK_POLICY_OGF, HCI_SNIFF_MODE_OCF, sizeof(sniff_cmd), &sniff_cmd); +} + +typedef struct { + uint8_t type; + uint16_t handle; + uint16_t total_length; + uint16_t data_length; + uint16_t channel; +} __attribute__((packed)) bt_hci_acl_t; + +void bt_acl_send(const uint16_t handle, const uint8_t PB, const uint8_t BC, const uint16_t channel, const uint16_t dlen, const void *dat) +{ + bt_hci_acl_t packet; + + // refuse any HCI if interface is not enabled + if (mw_bt_is_enabled() == 0) + return; + + packet.type = HCI_ACL_DATA_PACKET; + packet.handle = handle | ((PB & 0x03) << 12) | ((BC & 0x03) << 14); + packet.total_length = dlen + 4; + packet.data_length = dlen; + packet.channel = channel; + mw_bt_uart_tx(&packet, sizeof(bt_hci_acl_t)); + mw_bt_uart_tx(dat, dlen); +} + +void bt_hci_init(void) +{ + state = HCI_PACKET_START; +} + +void bt_hci_ehcill_wake(void) +{ + const uint8_t ehcill_p = EHCILL_WAKE_UP_ACK; + + debug_uart_tx("HCILL wakeup\n"); + + P1IE &= ~BT_IO_CTS; + P1IFG &= ~BT_IO_CTS; + state = HCI_PACKET_START; + + BT_IO_POUT &= ~BT_IO_RTS; // drop RTS -> start data + + mw_bt_uart_tx(&ehcill_p, 1); + //__delay_cycles(160000); +} + diff --git a/metawatch/bt_hci.h b/metawatch/bt_hci.h new file mode 100644 index 0000000..e446b09 --- /dev/null +++ b/metawatch/bt_hci.h @@ -0,0 +1,95 @@ +#ifndef _BT_HCI_H +#define _BT_HCI_H + +/* HCI Command OGF */ +#define HCI_LINK_CTRL_OGF 0x01 +#define HCI_LINK_POLICY_OGF 0x02 +#define HCI_HC_BB_OGF 0x03 +#define HCI_INFO_PARAM_OGF 0x04 + +/* HCI Command OCF */ +#define HCI_DISCONN_OCF 0x06 +#define HCI_ACCEPT_CONN_REQ_OCF 0x09 +#define HCI_RESET_OCF 0x03 +#define HCI_W_SCAN_EN_OCF 0x1A +#define HCI_R_COD_OCF 0x23 +#define HCI_W_COD_OCF 0x24 +#define HCI_H_BUF_SIZE_OCF 0x33 +#define HCI_H_NUM_COMPL_OCF 0x35 +#define HCI_R_BUF_SIZE_OCF 0x05 +#define HCI_R_BD_ADDR_OCF 0x09 +#define HCI_W_LOCAL_NAME_OCF 0x13 +#define HCI_PIN_CODE_REQ_REP_OCF 0x0D +#define HCI_R_STORED_LINK_KEY_OCF 0x0D +#define HCI_W_STORED_LINK_KEY_OCF 0x11 +#define HCI_LINK_KEY_REQ_REP_OCF 0x0B +#define HCI_SNIFF_MODE_OCF 0x03 + +#define HCI_COMMAND_PACKET 0x01 +#define HCI_ACL_DATA_PACKET 0x02 +#define HCI_SCO_DATA_PACKET 0x03 +#define HCI_EVENT_PACKET 0x04 + +#define HCI_EVENT_INQUIRY_COMPLETE 0x01 +#define HCI_EVENT_INQUIRY_RESULT 0x02 +#define HCI_EVENT_CONNECTION_COMPLETE 0x03 +#define HCI_EVENT_CONNECTION_REQUEST 0x04 +#define HCI_EVENT_DISCONNECTION_COMPLETE 0x05 +#define HCI_EVENT_AUTHENTICATION_COMPLETE_EVENT 0x06 +#define HCI_EVENT_REMOTE_NAME_REQUEST_COMPLETE 0x07 +#define HCI_EVENT_ENCRYPTION_CHANGE 0x08 +#define HCI_EVENT_CHANGE_CONNECTION_LINK_KEY_COMPLETE 0x09 +#define HCI_EVENT_MASTER_LINK_KEY_COMPLETE 0x0A +#define HCI_EVENT_READ_REMOTE_SUPPORTED_FEATURES_COMPLETE 0x0B +#define HCI_EVENT_READ_REMOTE_VERSION_INFORMATION_COMPLETE 0x0C +#define HCI_EVENT_QOS_SETUP_COMPLETE 0x0D +#define HCI_EVENT_COMMAND_COMPLETE 0x0E +#define HCI_EVENT_COMMAND_STATUS 0x0F +#define HCI_EVENT_HARDWARE_ERROR 0x10 +#define HCI_EVENT_FLUSH_OCCURED 0x11 +#define HCI_EVENT_ROLE_CHANGE 0x12 +#define HCI_EVENT_NUMBER_OF_COMPLETED_PACKETS 0x13 +#define HCI_EVENT_MODE_CHANGE_EVENT 0x14 +#define HCI_EVENT_RETURN_LINK_KEYS 0x15 +#define HCI_EVENT_PIN_CODE_REQUEST 0x16 +#define HCI_EVENT_LINK_KEY_REQUEST 0x17 +#define HCI_EVENT_LINK_KEY_NOTIFICATION 0x18 +#define HCI_EVENT_DATA_BUFFER_OVERFLOW 0x1A +#define HCI_EVENT_MAX_SLOTS_CHANGED 0x1B +#define HCI_EVENT_READ_CLOCK_OFFSET_COMPLETE 0x1C +#define HCI_EVENT_PACKET_TYPE_CHANGED 0x1D +#define HCI_EVENT_PAGE_SCAN_REPETION_MODE_CHANGE 0x20 +#define HCI_EVENT_INQUIRY_RESULT_WITH_RSSI 0x22 +#define HCI_EVENT_EXTENDED_INQUIRY_RESPONSE 0x2F +#define HCI_EVENT_LE_META 0x3E +#define HCI_EVENT_VENDOR_SPECIFIC 0xFF + +#define HCI_SUBEVENT_LE_CONNECTION_COMPLETE 0x01 +#define HCI_SUBEVENT_LE_ADVERTISING_REPORT 0x02 +#define HCI_SUBEVENT_LE_CONNECTION_UPDATE_COMPLETE 0x03 +#define HCI_SUBEVENT_LE_READ_REMOTE_USED_FEATURES_COMPLETE 0x04 +#define HCI_SUBEVENT_LE_LONG_TERM_KEY_REQUEST 0x05 + +#define HCI_LINK_TYPE_SCO 0x00 +#define HCI_LINK_TYPE_ACL 0x01 +#define HCI_LINK_TYPE_ESCO 0x02 + +#define HCI_BB_SCAN_NOSCAN 0x00 +#define HCI_BB_SCAN_INQUIRY 0x01 +#define HCI_BB_SCAN_PAGE 0x02 + +/* CC256x specific eHCILL */ +#define EHCILL_GO_TO_SLEEP_IND 0x30 +#define EHCILL_GO_TO_SLEEP_ACK 0x31 +#define EHCILL_WAKE_UP_IND 0x32 +#define EHCILL_WAKE_UP_ACK 0x33 + +#define BT_PIN "4312" + +void bt_hci_init(void); +void bt_hci_cmd(const uint8_t OGF, const uint8_t OCF, const uint8_t data_len, const void *data); +void bt_hci_set_sniff_mode(const uint16_t acl_handle, const uint16_t max_interval, const uint16_t min_interval, const uint16_t sniff_attempt, const uint16_t sniff_timeout); +void bt_acl_send(const uint16_t handle, const uint8_t PB, const uint8_t BC, const uint16_t channel, const uint16_t len, const void *dat); +uint8_t *bt_hci_get_local_bdaddr(void); +void bt_hci_ehcill_wake(void); +#endif diff --git a/metawatch/bt_l2cap.c b/metawatch/bt_l2cap.c new file mode 100644 index 0000000..1a7c686 --- /dev/null +++ b/metawatch/bt_l2cap.c @@ -0,0 +1,281 @@ +#include +#include +#include + +#include "mw_uart.h" +#include "mw_bt.h" +#include "bt_hci.h" +#include "bt_l2cap.h" + +#include "oswald_main.h" + +static bt_l2cap_con_t _l2cap_con; + +void init_l2cap(void) +{ + memset(&_l2cap_con, 0, sizeof(bt_l2cap_con_t)); +} + +void bt_l2cap_proc_dyn_channel(const uint16_t channel, const uint16_t handle, const void *mdat, uint16_t mlen) +{ + if (channel == _l2cap_con.locCID) { + debug_uart_tx("L2CAP data rcvd: "); + debug_dump_ascii(mlen, mdat); + if (_l2cap_con.PSM == 0x1001) { + oswald_handle_comm_input(mlen, mdat); + } else if (_l2cap_con.PSM == 0x0001) { // SDP + debug_uart_tx("SDP req: "); + debug_dump_hex(mlen, mdat); + } else + debug_uart_tx("L2CAP data on unhandled PSM\n"); + } else { + debug_uart_tx("L2CAP CID does not match local CID\n"); + } +} + +uint8_t bt_l2cap_get_connected(const uint16_t channel) +{ + if (_l2cap_con.locCID == channel) + return _l2cap_con.cstate; + else + return BT_L2CAP_CON_IDLE; +} + +void bt_l2cap_send_channel(const uint16_t channel, const void *mdat, uint16_t mlen) +{ + if (_l2cap_con.cstate == BT_L2CAP_CON_CONNECTED && _l2cap_con.hci_handle != 0 && _l2cap_con.remCID != 0 && + mlen != 0 && mdat != NULL) { + bt_acl_send(_l2cap_con.hci_handle, PB_FIRST_FLUSHABLE, BC_NO_BROADCAST, _l2cap_con.remCID, mlen, mdat); + } +} + +typedef struct { + uint8_t resp; + uint8_t ident; + uint16_t length; + uint16_t DCID; + uint16_t SCID; +} __attribute__((packed)) bt_l2cap_disconn_resp_t; + +typedef struct { + uint8_t resp; + uint8_t ident; + uint16_t length; + uint16_t SCID; + uint16_t flags; + uint16_t result; + uint16_t config; +} __attribute__((packed)) bt_l2cap_conf_resp_t; + + +void bt_l2cap_proc_signalling(const uint16_t handle, unsigned char *mdat, uint16_t mlen) +{ +#if defined MW_DEVBOARD_V2 + char tstr[16]; +#endif + debug_uart_tx("ACL L2CAP signalling "); + switch (mdat[0]) { + case COMMAND_REJECT: + debug_uart_tx("command reject\n"); + break; + case CONNECTION_REQUEST: { + uint8_t ident = mdat[1]; + uint16_t PSM = mdat[4] | (mdat[5] << 8);; + uint16_t src_CID = mdat[6] | (mdat[7] << 8);; + +#if defined MW_DEVBOARD_V2 + debug_uart_tx("connection request on "); + snprintf(tstr, 16, "PSM 0x%04x ", PSM); + debug_uart_tx(tstr); + snprintf(tstr, 16, "srcCID 0x%04x\n", src_CID); + debug_uart_tx(tstr); +#endif + bt_l2cap_handle_connection_request(handle, ident, PSM, src_CID); + } break; + case CONNECTION_RESPONSE: + debug_uart_tx("connection response\n"); + break; + case CONFIGURE_REQUEST: { + uint8_t ident = mdat[1]; + uint16_t len = mdat[2] | (mdat[3] << 8); + uint16_t dst_CID = mdat[4] | (mdat[5] << 8); + uint16_t flags = mdat[6] | (mdat[7] << 8); + bt_l2cap_conf_resp_t resp; + +#if defined MW_DEVBOARD_V2 + debug_uart_tx("configure request "); + snprintf(tstr, 16, "len 0x%04x ", len); + debug_uart_tx(tstr); + snprintf(tstr, 16, "DCID 0x%04x ", dst_CID); + debug_uart_tx(tstr); + snprintf(tstr, 16, "flags 0x%04x\n", flags); + debug_uart_tx(tstr); +#if 0 + for (i=8; i<((len-4)+8); i++) { + snprintf(tstr, 16, "0x%02x ", mdat[i]); + debug_uart_tx(tstr); + } + debug_uart_tx("\n"); +#endif + debug_dump_hex(len-4+8, (mdat+8)); +#endif + resp.resp = CONFIGURE_RESPONSE; + resp.ident = ident; + resp.length = 0x06; + if (dst_CID != _l2cap_con.locCID) + debug_uart_tx("warning: DCID does not match\n"); + resp.SCID = _l2cap_con.remCID; + resp.flags = flags; + resp.result = 0x0000; // success + resp.config = 0x0000; // OK? + + bt_acl_send(handle, PB_FIRST_FLUSHABLE, BC_NO_BROADCAST, L2CAP_CID_SIGNALING, sizeof(bt_l2cap_conf_resp_t)-2, &resp); + + } break; + case CONFIGURE_RESPONSE: + debug_uart_tx("configure response\n"); + break; + case DISCONNECTION_REQUEST: { + bt_l2cap_disconn_resp_t resp; + uint8_t ident = mdat[1]; + uint16_t dst_CID = mdat[4] | (mdat[5] << 8); + uint16_t src_CID = mdat[6] | (mdat[7] << 8); + + debug_uart_tx("disconnect request\n"); + + if (dst_CID != _l2cap_con.locCID || src_CID != _l2cap_con.remCID) + debug_uart_tx("warning: discon on unknown CID\n"); + resp.resp = DISCONNECTION_RESPONSE; + resp.ident = ident; + resp.length = 0x0004; + resp.DCID = _l2cap_con.locCID; + resp.SCID = _l2cap_con.remCID; + + bt_acl_send(handle, PB_FIRST_FLUSHABLE, BC_NO_BROADCAST, L2CAP_CID_SIGNALING, sizeof(bt_l2cap_disconn_resp_t), &resp); + + init_l2cap(); + } break; + case DISCONNECTION_RESPONSE: + debug_uart_tx("disconnect response\n"); + break; + case ECHO_REQUEST: + debug_uart_tx("echo request\n"); + mdat[0] = ECHO_RESPONSE; + bt_acl_send(handle, PB_FIRST_FLUSHABLE, BC_NO_BROADCAST, L2CAP_CID_SIGNALING, mlen, mdat); + break; + case ECHO_RESPONSE: + debug_uart_tx("echo response\n"); + break; + case INFORMATION_REQUEST: { + uint16_t info_type = mdat[4] | (mdat[5] << 8); + debug_uart_tx("information request "); + switch (info_type) { + case 0x0001: + debug_uart_tx("connectionless mtu\n"); + break; + case 0x0002: + debug_uart_tx("ext. feat. support\n"); + mdat[0] = INFORMATION_RESPONSE; + mdat[2] = 0x02; + mdat[3] = 0x00; + mdat[6] = 0x01; // not supported + mdat[7] = 0x00; + bt_acl_send(handle, PB_FIRST_FLUSHABLE, BC_NO_BROADCAST, L2CAP_CID_SIGNALING, 0x08, mdat); + break; + case 0x0003: + debug_uart_tx("fixed channel support\n"); + break; + default: + debug_uart_tx("unknown\n"); + break; + }; + } break; + case INFORMATION_RESPONSE: + debug_uart_tx("information response\n"); + break; + default: + debug_uart_tx("unknown\n"); + break; + } +} + +typedef struct { + uint8_t resp; + uint8_t ident; + uint16_t length; + uint16_t DCID; + uint16_t SCID; + uint16_t result; + uint16_t status; +} __attribute__((packed)) bt_l2cap_conn_resp_t; + +typedef struct { + uint8_t resp; + uint8_t ident; + uint16_t length; + uint16_t DCID; + uint16_t flags; + uint8_t option; + uint8_t olen; + uint16_t odat; +} __attribute__((packed)) bt_l2cap_conf_req_t; + +void bt_l2cap_handle_connection_request(const uint16_t handle, const uint8_t ident, const uint16_t PSM, const uint16_t src_CID) +{ + bt_l2cap_conn_resp_t resp; + + // for now we only support one connection, only on PSM 0x1001 + if (_l2cap_con.cstate == BT_L2CAP_CON_IDLE && PSM == 0x1001) { + bt_l2cap_conf_req_t req; + + _l2cap_con.cstate = BT_L2CAP_CON_CONNECTED; + _l2cap_con.hci_handle = handle; + _l2cap_con.PSM = PSM; + + _l2cap_con.locCID = 0x0040; + _l2cap_con.remCID = src_CID; + + _l2cap_con.locMTU = 0xf0; + _l2cap_con.remMTU = 0x00; + + resp.resp = CONNECTION_RESPONSE; + resp.ident = ident; + resp.length = 0x0008; + resp.DCID = _l2cap_con.locCID; + resp.SCID = _l2cap_con.remCID; + resp.result = BT_L2CAP_CON_RES_SUCCESS; + resp.status = BT_L2CAP_CON_STAT_NOINFO; + + debug_uart_tx("l2cap accepting connection\n"); + bt_acl_send(handle, PB_FIRST_FLUSHABLE, BC_NO_BROADCAST, L2CAP_CID_SIGNALING, sizeof(bt_l2cap_conn_resp_t), &resp); + + req.resp = CONFIGURE_REQUEST; + req.ident = ident; + req.length = 0x08; + req.DCID = _l2cap_con.remCID; + req.flags = 0x00; + req.option = 0x01; // MTU + req.olen = 0x02; + req.odat = _l2cap_con.locMTU; + + bt_acl_send(handle, PB_FIRST_FLUSHABLE, BC_NO_BROADCAST, L2CAP_CID_SIGNALING, sizeof(bt_l2cap_conf_req_t), &req); + + // max_interval Mandatory Range: 0x0006 to 0x0540 + // min_interval Mandatory Range: 0x0006 to 0x0540 + // sniff_attempt Mandatory Range for Controller: 1 to Tsniff/2 + // sniff_timeout Mandatory Range for Controller: 0 to 0x0028 + bt_hci_set_sniff_mode(handle, 0x10, 0x06, 0x20, 0x10); + } else { + resp.resp = CONNECTION_RESPONSE; + resp.ident = ident; + resp.length = 0x0008; + resp.DCID = 0x0000; + resp.SCID = src_CID; + resp.result = BT_L2CAP_CON_RES_REFUSED_RSRC; + resp.status = BT_L2CAP_CON_STAT_NOINFO; + + debug_uart_tx("l2cap refusing connection\n"); + bt_acl_send(handle, PB_FIRST_FLUSHABLE, BC_NO_BROADCAST, L2CAP_CID_SIGNALING, sizeof(bt_l2cap_conn_resp_t), &resp); + } +} + diff --git a/metawatch/bt_l2cap.h b/metawatch/bt_l2cap.h new file mode 100644 index 0000000..075ee6b --- /dev/null +++ b/metawatch/bt_l2cap.h @@ -0,0 +1,77 @@ +#ifndef _BT_L2CAP_H +#define _BT_L2CAP_H + + +#define L2CAP_CID_SIGNALING 0x0001 +#define L2CAP_CID_CONNECTIONLESS_CHANNEL 0x0002 +#define L2CAP_CID_ATTRIBUTE_PROTOCOL 0x0004 +#define L2CAP_CID_SIGNALING_LE 0x0005 +#define L2CAP_CID_SECURITY_MANAGER_PROTOCOL 0x0006 + +typedef enum { + COMMAND_REJECT = 1, + CONNECTION_REQUEST, + CONNECTION_RESPONSE, + CONFIGURE_REQUEST, + CONFIGURE_RESPONSE, + DISCONNECTION_REQUEST, + DISCONNECTION_RESPONSE, + ECHO_REQUEST, + ECHO_RESPONSE, + INFORMATION_REQUEST, + INFORMATION_RESPONSE +} L2CAP_SIGNALING_COMMANDS; + +typedef enum { + PB_FIRST_NON_FLUSH = 0, + PB_CONTINUE_FRAGMENT, + PB_FIRST_FLUSHABLE, + PB_COMPLETE_PDU +} L2CAP_PB_FLAG; + +typedef enum { + BC_NO_BROADCAST = 0, + BC_ACTIVE_SLAVE, + BC_PARKED_SLAVE, + BC_RESERVED +} L2CAP_BC_FLAG; + +// Connection result values +#define BT_L2CAP_CON_RES_SUCCESS 0x0000 +#define BT_L2CAP_CON_RES_PENDING 0x0001 +#define BT_L2CAP_CON_RES_REFUSED_PSM 0x0002 +#define BT_L2CAP_CON_RES_REFUSED_SECURITY 0x0003 +#define BT_L2CAP_CON_RES_REFUSED_RSRC 0x0004 + +#define BT_L2CAP_CON_STAT_NOINFO 0x0000 +#define BT_L2CAP_CON_STAT_AUTHEN_PENDING 0x0001 +#define BT_L2CAP_CON_STAT_AUTHOR_PENDING 0x0002 + +typedef enum { + BT_L2CAP_CON_IDLE = 0, + BT_L2CAP_CON_CONNECTED +} bt_l2cap_con_state_t; + +// describes the L2CAP connection +typedef struct { + bt_l2cap_con_state_t cstate; + + uint16_t hci_handle; + uint16_t PSM; // PSM of this connection + + uint16_t locCID; // our local CID + uint16_t remCID; // remote host CID + + uint16_t locMTU; + uint16_t remMTU; +} bt_l2cap_con_t; + +void init_l2cap(void); +void bt_l2cap_proc_dyn_channel(const uint16_t channel, const uint16_t handle, const void *mdat, uint16_t mlen); +uint8_t bt_l2cap_get_connected(const uint16_t channel); +void bt_l2cap_send_channel(const uint16_t channel, const void *mdat, uint16_t mlen); +void bt_l2cap_proc_signalling(const uint16_t handle, unsigned char *mdat, uint16_t mlen); +void bt_l2cap_handle_connection_request(const uint16_t handle, const uint8_t ident, const uint16_t PSM, const uint16_t src_CID); + +#endif + diff --git a/metawatch/calendar.d b/metawatch/calendar.d new file mode 100644 index 0000000..20d6983 --- /dev/null +++ b/metawatch/calendar.d @@ -0,0 +1,12 @@ +calendar.o: calendar.c oswald.h \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/stdio.h \ + /opt/msp430/lib/gcc/msp430/4.7.0/include/stddef.h \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/sys/types.h \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/sys/cdefs.h \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/sys/inttypes.h \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/inttypes.h \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/stdint.h \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/msp430libc.h \ + /opt/msp430/lib/gcc/msp430/4.7.0/include/stdarg.h \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/string.h \ + calendar.h diff --git a/metawatch/hal_devboard_v2_defs.h b/metawatch/hal_devboard_v2_defs.h new file mode 100644 index 0000000..ef57cf2 --- /dev/null +++ b/metawatch/hal_devboard_v2_defs.h @@ -0,0 +1,664 @@ +//============================================================================== +// Copyright 2011 Meta Watch Ltd. - http://www.MetaWatch.org/ +// +// Licensed under the Meta Watch License, Version 1.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.MetaWatch.org/licenses/license-1.0.html +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//============================================================================== + +/******************************************************************************/ +/*! \file hal_devboard_v2_defs.h + * + * Pin and peripheral definitions for Development Board Version 2 + */ +/******************************************************************************/ + + +#ifndef HAL_DEVBOARD_V2_DEFS_H +#define HAL_DEVBOARD_V2_DEFS_H + + +// Defines for the LCD display interface, single channel SPI output +#define LCD_5V_PDIR P4DIR +#define LCD_5V_POUT P4OUT +#define LCD_5V_BIT BIT0 + +#define ENABLE_LCD_POWER() { \ + LCD_5V_PDIR |= LCD_5V_BIT; \ + LCD_5V_POUT |= LCD_5V_BIT; \ +} + +#define DISABLE_LCD_POWER() { \ + LCD_5V_PDIR |= LCD_5V_BIT; \ + LCD_5V_POUT &= ~LCD_5V_BIT; \ +} + +#define LCD_ENABLE_PDIR ( P3DIR ) +#define LCD_ENABLE_POUT ( P3OUT ) +#define LCD_ENABLE_PIN ( BIT6 ) + +#define ENABLE_LCD_ENABLE() { \ + LCD_ENABLE_PDIR |= LCD_ENABLE_PIN; \ + LCD_ENABLE_POUT |= LCD_ENABLE_PIN; \ +} + +#define DISABLE_LCD_ENABLE() { \ + LCD_ENABLE_PDIR |= LCD_ENABLE_PIN; \ + LCD_ENABLE_POUT &= ~LCD_ENABLE_PIN; \ +} + +#define LCD_CS_PDIR ( P9DIR ) +#define LCD_CS_POUT ( P9OUT ) +#define LCD_CS_PIN ( BIT0 ) + +#define LCD_SPI_PORT_SEL ( P3SEL ) +#define LCD_SPI_SIMO_BIT ( BIT1 ) +#define LCD_SPI_CLK_BIT ( BIT3 ) +#define LCD_SPI_SOMI_BIT ( BIT2 ) + +#define LCD_CS_ASSERT() { LCD_CS_POUT |= LCD_CS_PIN; } +#define LCD_CS_DEASSERT() { LCD_CS_POUT &= ~LCD_CS_PIN; } + +#define CONFIG_LCD_PINS() { \ + LCD_SPI_PORT_SEL |= LCD_SPI_SIMO_BIT; \ + LCD_SPI_PORT_SEL |= LCD_SPI_CLK_BIT; \ + LCD_SPI_PORT_SEL |= LCD_SPI_SOMI_BIT; \ + ENABLE_LCD_ENABLE(); \ + LCD_CS_PDIR |= LCD_CS_PIN; \ + LCD_CS_DEASSERT(); \ +} + +// labeled EL_EN on schematic +#define LCD_LED_PDIR ( P4DIR ) +#define LCD_LED_POUT ( P4OUT ) +#define LCD_LED_PIN ( BIT4 ) + +#define DISABLE_LCD_LED() { \ + LCD_LED_PDIR |= LCD_LED_PIN; \ + LCD_LED_POUT &= ~LCD_LED_PIN; \ +} + +#define ENABLE_LCD_LED() { \ + LCD_LED_PDIR |= LCD_LED_PIN; \ + LCD_LED_POUT |= LCD_LED_PIN; \ +} + +#define LCD_SPI_UCBxCTL0 UCB0CTL0 // Control register +#define LCD_SPI_UCBxCTL1 UCB0CTL1 // Control register +#define LCD_SPI_UCBxBR0 UCB0BR0 // Baudrate prescale +#define LCD_SPI_UCBxBR1 UCB0BR1 // Baudrate divider + +#define LCD_SPI_UCBxTXBUF UCB0TXBUF // Transmit buffer +#define LCD_SPI_UCBxRXBUF UCB0RXBUF // Receive buffer + +#define LCD_SPI_UCBxIE UCB0IE // Interrupt enable register +#define LCD_SPI_UCBxIFG UCB0IFG // Interrupt flag register +#define LCD_SPI_UCBxIV UCB0IV // Interrupt vector register +#define LCD_SPI_UCBxSTAT UCB0STAT // status register + + +// Definitions for the OLED Display +// peripheral mapping for OLED +#define OLED_I2C_CTL0 ( UCB0CTL0 ) +#define OLED_I2C_CTL1 ( UCB0CTL1 ) +#define OLED_I2C_BR0 ( UCB0BR0 ) +#define OLED_I2C_BR1 ( UCB0BR1 ) +#define OLED_I2C_I2CSA ( UCB0I2CSA ) +#define OLED_I2C_IE ( UCB0IE ) +#define OLED_I2C_IFG ( UCB0IFG ) +#define OLED_I2C_TXBUF ( UCB0TXBUF ) +#define OLED_I2C_RXBUF ( UCB0RXBUF ) +// interrupt mapping for OLED +#define USCI_OLED_I2C_VECTOR ( USCI_B0_VECTOR ) +#define USCI_OLED_I2C_IV ( UCB0IV ) + +// OLED reset is active low +#define OLED_RSTN_PDIR ( P8DIR ) +#define OLED_RSTN_POUT ( P8OUT ) +#define OLED_RSTN_PIN ( BIT7 ) + +#define OLED_RSTN_CONFIG() { OLED_RSTN_PDIR |= OLED_RSTN_PIN; OLED_RSTN_ASSERT(); } +#define OLED_RSTN_ASSERT() { OLED_RSTN_POUT &= ~OLED_RSTN_PIN; } +#define OLED_RSTN_DEASSERT() { OLED_RSTN_POUT |= OLED_RSTN_PIN; } + +#define OLED_CS1N_PDIR ( P8DIR ) +#define OLED_CS1N_POUT ( P8OUT ) +#define OLED_CS1N_PIN ( BIT0 ) + +#define OLED_CS1N_CONFIG() { OLED_CS1N_PDIR |= OLED_CS1N_PIN; OLED_CS1N_DISABLE(); } +#define OLED_CS1N_ENABLE() { OLED_CS1N_POUT &= ~OLED_CS1N_PIN; } +#define OLED_CS1N_DISABLE() { OLED_CS1N_POUT |= OLED_CS1N_PIN; } + +#define OLED_CS2N_PDIR ( P8DIR ) +#define OLED_CS2N_POUT ( P8OUT ) +#define OLED_CS2N_PIN ( BIT1 ) + +#define OLED_CS2N_CONFIG() { OLED_CS2N_PDIR |= OLED_CS2N_PIN; OLED_CS2N_DISABLE(); } +#define OLED_CS2N_ENABLE() { OLED_CS2N_POUT &= ~OLED_CS2N_PIN; } +#define OLED_CS2N_DISABLE() { OLED_CS2N_POUT |= OLED_CS2N_PIN; } + +#define OLED_SDA_PDIR ( P3DIR ) +#define OLED_SDA_POUT ( P3OUT ) +#define OLED_SDA_PIN ( BIT1 ) +#define OLED_SDA_PSEL ( P3SEL) + +#define OLED_SCL_PDIR ( P3DIR ) +#define OLED_SCL_POUT ( P3OUT ) +#define OLED_SCL_PORT ( P3 ) +#define OLED_SCL_PIN ( BIT2 ) +#define OLED_SCL_PSEL ( P3SEL ) + +// the select line overrides the pdir and pout settings +#define OLED_SDA_CONFIG_FOR_PERIPHERAL_USE() { OLED_SDA_PSEL |= OLED_SDA_PIN; } +#define OLED_SCL_CONFIG_FOR_PERIPHERAL_USE() { OLED_SCL_PSEL |= OLED_SCL_PIN; } + +#define OLED_I2C_CONFIG_FOR_PERIPHERAL_USE() { \ + OLED_SDA_CONFIG_FOR_PERIPHERAL_USE(); \ + OLED_SCL_CONFIG_FOR_PERIPHERAL_USE(); } + +#define OLED_SDA_CONFIG_FOR_SLEEP() { \ + OLED_SDA_PSEL &= ~OLED_SDA_PIN; \ + OLED_SDA_PDIR |= OLED_SDA_PIN; \ + OLED_SDA_POUT |= OLED_SDA_PIN; } + +#define OLED_SCL_CONFIG_FOR_SLEEP() { \ + OLED_SCL_PSEL &= ~OLED_SCL_PIN; \ + OLED_SCL_PDIR |= OLED_SCL_PIN; \ + OLED_SCL_POUT |= OLED_SCL_PIN; } + +#define OLED_I2C_CONFIG_FOR_SLEEP() { \ + OLED_SDA_CONFIG_FOR_SLEEP(); \ + OLED_SCL_CONFIG_FOR_SLEEP(); } + +#define OLED_POWER_ENABLE_PIN ( BIT0 ) +#define OLED_POWER_ENABLE_POUT ( P4OUT ) +#define OLED_POWER_ENABLE_PDIR ( P4DIR ) +#define OLED_POWER_CONFIG() { P4DIR |= OLED_POWER_ENABLE_PIN; OLED_POWER_DISABLE(); } +#define OLED_POWER_ENABLE() { P4OUT |= OLED_POWER_ENABLE_PIN; } +#define OLED_POWER_DISABLE() { P4OUT &= ~OLED_POWER_ENABLE_PIN; } + +// VLED_EN is active low +#define OLED_IO_POWER_ENABLE_PIN ( BIT3 ) +#define OLED_IO_POWER_ENABLE_POUT ( P5OUT ) +#define OLED_IO_POWER_ENABLE_PDIR ( P5DIR ) +#define OLED_IO_POWER_CONFIG() { P5DIR |= OLED_IO_POWER_ENABLE_PIN; OLED_IO_POWER_DISABLE(); } +#define OLED_IO_POWER_ENABLE() { P5OUT &= ~OLED_IO_POWER_ENABLE_PIN; } +#define OLED_IO_POWER_DISABLE() { P5OUT |= OLED_IO_POWER_ENABLE_PIN; } + +#ifdef ANALOG +#define CONFIG_OLED_PINS() { \ + OLED_RSTN_CONFIG(); \ + OLED_CS1N_CONFIG(); \ + OLED_CS2N_CONFIG(); \ + OLED_POWER_CONFIG(); \ + OLED_I2C_CONFIG_FOR_SLEEP(); \ + OLED_IO_POWER_CONFIG(); \ +} +#else +/* jumpers for 10V must be removed for power consumption measurements */ +#define CONFIG_OLED_PINS() { \ + OLED_RSTN_CONFIG(); \ + OLED_CS1N_CONFIG(); \ + OLED_CS1N_ENABLE(); \ + OLED_CS2N_CONFIG(); \ + OLED_CS2N_ENABLE(); \ + OLED_POWER_CONFIG(); \ + OLED_IO_POWER_CONFIG(); \ +} +#endif + + +// Real time clock defines +// RTC 1 Hz output, also used to toggle the bias on the LCD +#define RTC_1HZ_PORT_DIR ( P2DIR ) +#define RTC_1HZ_PORT_SEL ( P2SEL ) +#define RTC_1HZ_BIT ( BIT4 ) + + +// Button defines + +#define BUTTON_TIME_COUNT_ARRAY_LEN 8 +#define ALL_BUTTONS_OFF 0xFF + +#define SW_A BIT0 +#define SW_B BIT1 +#define SW_C BIT2 +#define SW_D BIT3 +// Bit 4 is not used +#define SW_E BIT5 +#define SW_F BIT6 +#define SW_P BIT7 + +#define SW_A_INDEX ( 0 ) +#define SW_B_INDEX ( 1 ) +#define SW_C_INDEX ( 2 ) +#define SW_D_INDEX ( 3 ) +#define SW_UNUSED_INDEX ( 4 ) +#define SW_E_INDEX ( 5 ) +#define SW_F_INDEX ( 6 ) +#define SW_P_INDEX ( 7 ) +#define TOTAL_BTN_NUM ( 8 ) + +#ifdef ANALOG + /* analog board has traces for all of the buttons but + * only 3 and pull switch are populated */ + #define ALL_BUTTONS (SW_A | SW_B | SW_C | SW_P) + +#elif defined(DIGITAL) + + #define ALL_BUTTONS (SW_A | SW_B | SW_C | SW_D | SW_E | SW_F) + +#endif + +#define RESISTOR_ENABLE_BUTTONS ( ALL_BUTTONS ) +#define INT_EDGE_SEL_BUTTONS (ALL_BUTTONS) + +#define BUTTON_PORT_VECTOR PORT2_VECTOR +#define BUTTON_PORT_DIR P2DIR +#define BUTTON_PORT_SEL P2SEL +#define BUTTON_PORT_OUT P2OUT +#define BUTTON_PORT_REN P2REN +#define BUTTON_PORT_IE P2IE +#define BUTTON_PORT_IES P2IES +#define BUTTON_PORT_IFG P2IFG + +#define DISABLE_BUTTONS() { \ + BUTTON_PORT_IE &= ~INT_EDGE_SEL_BUTTONS; \ + BUTTON_PORT_REN &= ~ALL_BUTTONS; \ + BUTTON_PORT_OUT &= ~ALL_BUTTONS; \ +} + +/* SHIPPING */ +/* S5 or SW_E is the button that takes the watch out of shipping mode */ +#define ENABLE_SHIPPING_WAKEUP() { \ + P1IE = 0x00; \ + PMMCTL0_H = 0xA5; \ + PMMRIE = 0x0000; \ + RTCPS0CTL = 0x0000; \ + RTCPS1CTL = 0x0000; \ + UCSCTL8 = 0x0700; \ + BUTTON_PORT_REN = SW_E; \ + BUTTON_PORT_OUT = SW_E; \ + BUTTON_PORT_DIR &= ~SW_E; \ + BUTTON_PORT_IES = SW_E; \ + BUTTON_PORT_IFG = 0x00; \ + BUTTON_PORT_IE = SW_E; \ +} + +// NOTE the the buttons are grounded. That means that we want to invert the bits +// when reading the port to have positive logic where a button press is a "1" +#define BUTTON_PORT_IN ~P2IN + +// Configure the hardware port for the button support P2.4 is excluded +#define CONFIGURE_BUTTON_PINS() { \ + BUTTON_PORT_REN = (unsigned char) RESISTOR_ENABLE_BUTTONS; \ + BUTTON_PORT_OUT = (unsigned char) ALL_BUTTONS; \ + BUTTON_PORT_DIR &= (unsigned char) ~ALL_BUTTONS; \ + BUTTON_PORT_IES |= INT_EDGE_SEL_BUTTONS; \ + BUTTON_PORT_IFG &= ~ALL_BUTTONS; \ + BUTTON_PORT_IE |= ALL_BUTTONS; \ +} + + +// Battery charger control for a BQ24080 +#define BAT_CHARGE_DIR P6DIR +#define BAT_CHARGE_REN P6REN +#define BAT_CHARGE_OUT P6OUT +#define BAT_CHARGE_IN P6IN +//#define BAT_CHARGE_IE P6IE +//#define PWR_PORT_VECTOR PORT6_VECTOR +//#define PWR_PORT_IFG P6IFG + +#define BAT_CHARGE_ENABLE_PIN BIT2 +#define BAT_CHARGE_STAT1 BIT3 +#define BAT_CHARGE_STAT2 BIT4 +#define BAT_CHARGE_PWR_BIT BIT5 + +// Enable charging, asserted low +#define BATTERY_CHARGE_ENABLE() { BAT_CHARGE_OUT &= ~BAT_CHARGE_ENABLE_PIN; } + +// disable charging, sleep the part +#define BATTERY_CHARGE_DISABLE() { BAT_CHARGE_OUT |= BAT_CHARGE_ENABLE_PIN; } + +//RESET PIN NMI or RESET +#define SET_RESET_PIN_NMI() {SFRRPCR &= ~SYSRSTRE; SFRRPCR |= SYSNMI;} +#define SET_RESET_PIN_RST() {SFRRPCR |= SYSRSTRE; SFRRPCR &= ~SYSNMI;} +#define RESET_PIN (SFRRPCR & SYSNMI) // return 1 for NMI + +// +// Ambient Light Sensor +// +#define GC1_PDIR ( P6DIR ) +#define GC1_POUT ( P6OUT ) +#define GC1_PSEL ( P6SEL ) +#define GC1_PIN ( BIT0 ) + +#define GC2_PDIR ( P6DIR ) +#define GC2_POUT ( P6OUT ) +#define GC2_PSEL ( P6SEL ) +#define GC2_PIN ( BIT6 ) + +#define IOUT_PDIR ( P6DIR ) +#define IOUT_PSEL ( P6SEL ) +#define IOUT_PIN ( BIT1 ) + +#define LIGHT_SENSE_INIT() \ +{ \ + IOUT_PDIR &= ~IOUT_PIN; \ + IOUT_PSEL |= IOUT_PIN; \ + GC1_PDIR |= GC1_PIN; \ + GC2_PDIR |= GC2_PIN; \ + LIGHT_SENSE_DISABLE(); \ +} + +#define LIGHT_SENSOR_SHUTDOWN() \ +{ \ + GC1_POUT &= ~GC1_PIN; \ + GC2_POUT &= ~GC2_PIN; \ +} + +#define LIGHT_SENSOR_L_GAIN() \ +{ \ + GC1_POUT |= GC1_PIN; \ + GC2_POUT |= GC2_PIN; \ +} + +#define LIGHT_SENSE_ENABLE()\ +{ \ + LIGHT_SENSOR_L_GAIN(); \ +} + +#define LIGHT_SENSE_DISABLE() \ +{ \ + LIGHT_SENSOR_SHUTDOWN(); \ +} + + + +// +// This pin controls if the battery voltage can be read +// +#define BATTERY_READ_CONTROL_PDIR ( P4DIR ) +#define BATTERY_READ_CONTROL_POUT ( P4OUT ) +#define BATTERY_READ_CONTROL_PIN ( BIT6 ) + +#define BATTERY_SENSE_INPUT_PDIR ( P7DIR ) +#define BATTERY_SENSE_INPUT_PSEL ( P7SEL ) +#define BATTERY_SENSE_INPUT_PIN ( BIT7 ) + +#define BATTERY_SENSE_INIT() \ +{ \ + BATTERY_READ_CONTROL_PDIR |= BATTERY_READ_CONTROL_PIN; \ + BATTERY_SENSE_INPUT_PDIR &= ~BATTERY_SENSE_INPUT_PIN; \ + BATTERY_SENSE_INPUT_PSEL |= BATTERY_SENSE_INPUT_PIN; \ + BATTERY_SENSE_DISABLE(); \ +} + +#define BATTERY_SENSE_ENABLE() \ +{ \ + BATTERY_READ_CONTROL_POUT |= BATTERY_READ_CONTROL_PIN; \ +} + +#define BATTERY_SENSE_DISABLE() \ +{ \ + BATTERY_READ_CONTROL_POUT &= ~BATTERY_READ_CONTROL_PIN; \ +} + +// +// hardware configuration is a voltage divider to ADC input +// +#define HARDWARE_CFG_CONTROL_PDIR ( P5DIR ) +#define HARDWARE_CFG_CONTROL_POUT ( P5OUT ) +#define HARDWARE_CFG_CONTROL_PIN ( BIT0 ) + +#define HARDWARE_CFG_INPUT_PDIR ( P7DIR ) +#define HARDWARE_CFG_INPUT_PSEL ( P7SEL ) +#define HARDWARE_CFG_INPUT_PIN ( BIT5 ) + +#define HARDWARE_CFG_SENSE_INIT() \ +{ \ + HARDWARE_CFG_CONTROL_PDIR |= HARDWARE_CFG_CONTROL_PIN; \ + HARDWARE_CFG_INPUT_PDIR &= ~HARDWARE_CFG_INPUT_PIN; \ + HARDWARE_CFG_INPUT_PSEL |= HARDWARE_CFG_INPUT_PIN; \ + HARDWARE_CFG_SENSE_DISABLE(); \ +} + +#define HARDWARE_CFG_SENSE_ENABLE() \ +{ \ + HARDWARE_CFG_CONTROL_POUT |= HARDWARE_CFG_CONTROL_PIN; \ +} + +#define HARDWARE_CFG_SENSE_DISABLE() \ +{ \ + HARDWARE_CFG_CONTROL_POUT &= ~HARDWARE_CFG_CONTROL_PIN; \ +} + + +#define APPLE_SDA_PDIR ( P10DIR ) +#define APPLE_SDA_POUT ( P10OUT ) +#define APPLE_SDA_PIN ( BIT1 ) + +#define APPLE_SCL_PDIR ( P10DIR ) +#define APPLE_SCL_POUT ( P10OUT ) +#define APPLE_SCL_PIN ( BIT2 ) + +#define APPLE_POWER_PDIR ( P4DIR ) +#define APPLE_POWER_POUT ( P4OUT ) +#define APPLE_POWER_PIN ( BIT5 ) + +/* power enable is active low */ +#define APPLE_POWER_ENABLE() { APPLE_POWER_POUT &= ~APPLE_POWER_PIN; } +#define APPLE_POWER_DISABLE() { APPLE_POWER_POUT |= APPLE_POWER_PIN; } + +#define APPLE_POWER_CONFIG() { \ + APPLE_POWER_PDIR |= APPLE_POWER_PIN; \ + APPLE_POWER_DISABLE(); \ +} + + +/* since the apple chip is currently not powered + * the pins should be at 0 instead of 1 + */ +#define APPLE_I2C_PIN_CONFIG() { \ + APPLE_SDA_PDIR |= APPLE_SDA_PIN; \ + APPLE_SDA_POUT &= ~APPLE_SDA_PIN; \ + APPLE_SCL_PDIR |= APPLE_SCL_PIN; \ + APPLE_SCL_POUT &= ~APPLE_SCL_PIN; \ +} + +#define APPLE_CONFIG() { \ + APPLE_POWER_CONFIG(); \ + APPLE_I2C_PIN_CONFIG(); \ +} + +#define SRAM_SCLK_PSEL ( P3SEL ) +#define SRAM_SCLK_PDIR ( P3DIR ) +#define SRAM_SCLK_POUT ( P3OUT ) +#define SRAM_SCLK_PIN ( BIT0 ) + +#define SRAM_SOMI_PSEL ( P3SEL ) +#define SRAM_SOMI_PDIR ( P3DIR ) +#define SRAM_SOMI_POUT ( P3OUT ) +#define SRAM_SOMI_PIN ( BIT5 ) + +#define SRAM_SIMO_PSEL ( P3SEL ) +#define SRAM_SIMO_PDIR ( P3DIR ) +#define SRAM_SIMO_POUT ( P3OUT ) +#define SRAM_SIMO_PIN ( BIT4 ) + +#define SRAM_CSN_PDIR ( P9DIR ) +#define SRAM_CSN_POUT ( P9OUT ) +#define SRAM_CSN_PIN ( BIT6) + +#define SRAM_HOLDN_PDIR ( P9DIR ) +#define SRAM_HOLDN_POUT ( P9OUT ) +#define SRAM_HOLDN_PIN ( BIT7 ) + +#define CONFIG_SRAM_PINS() \ +{ \ + SRAM_CSN_PDIR |= SRAM_CSN_PIN; \ + SRAM_CSN_POUT |= SRAM_CSN_PIN; \ + SRAM_HOLDN_PDIR |= SRAM_HOLDN_PIN; \ + SRAM_HOLDN_POUT |= SRAM_HOLDN_PIN; \ +} + +#define SRAM_CSN_ASSERT() { SRAM_CSN_POUT &= ~SRAM_CSN_PIN; } + +#define SRAM_CSN_DEASSERT() { \ + WAIT_FOR_SRAM_SPI_SHIFT_COMPLETE(); \ + SRAM_CSN_POUT |= SRAM_CSN_PIN; \ +} + +/* wait for shift to complete ( ~3 us ) */ +#define WAIT_FOR_SRAM_SPI_SHIFT_COMPLETE() { while( (UCA0STAT & 0x01) != 0 ); } + +#define ACCELEROMETER_SDA_PIN ( BIT7 ) +#define ACCELEROMETER_SDA_PSEL ( P3SEL ) +#define ACCELEROMETER_SDA_POUT ( P3OUT ) +#define ACCELEROMETER_SDA_PDIR ( P3OUT ) +#define ACCELEROMETER_SDA_PREN ( P1REN ) + +#define ACCELEROMETER_SCL_PIN ( BIT4 ) +#define ACCELEROMETER_SCL_PSEL ( P5SEL ) +#define ACCELEROMETER_SCL_POUT ( P5OUT ) +#define ACCELEROMETER_SCL_PDIR ( P5OUT ) +#define ACCELEROMETER_SCL_PREN ( P5REN ) + +#define ACCELEROMETER_INT_PIN ( BIT7 ) +#define ACCELEROMETER_INT_PDIR ( P1DIR ) +#define ACCELEROMETER_INT_PSEL ( P1SEL ) +#define ACCELEROMETER_INT_PIFG ( P1IFG ) +#define ACCELEROMETER_INT_PIE ( P1IE ) + +#define ACCELEROMETER_POWER_POUT ( P9OUT ) +#define ACCELEROMETER_POWER_PDIR ( P9DIR ) +#define ACCELEROMETER_POWER_PINS ( BIT1 | BIT2 ) + +/* this is for reference only (it doesn't control anything) */ +#define ACCELEROMETER_INT_NUM (PIN7_INT) + +#define LED4_PIN ( BIT2 ) +#define LED5_PIN ( BIT3 ) +#define LED6_PIN ( BIT4 ) +#define LED7_PIN ( BIT5 ) + +#define LEDS_PDIR ( P8DIR ) +#define LEDS_POUT ( P8OUT ) + +#define LED4_ON() { LEDS_POUT |= LED4_PIN; } +#define LED5_ON() { LEDS_POUT |= LED5_PIN; } +#define LED6_ON() { LEDS_POUT |= LED6_PIN; } +#define LED7_ON() { LEDS_POUT |= LED7_PIN; } + +#define LED4_OFF() { LEDS_POUT &= ~LED4_PIN; } +#define LED5_OFF() { LEDS_POUT &= ~LED5_PIN; } +#define LED6_OFF() { LEDS_POUT &= ~LED6_PIN; } +#define LED7_OFF() { LEDS_POUT &= ~LED7_PIN; } + +#define LED4_TOGGLE() { LEDS_POUT ^= LED4_PIN; } +#define LED5_TOGGLE() { LEDS_POUT ^= LED5_PIN; } +#define LED6_TOGGLE() { LEDS_POUT ^= LED6_PIN; } +#define LED7_TOGGLE() { LEDS_POUT ^= LED7_PIN; } + +#define CONFIG_LED_PINS() { \ + LEDS_PDIR |= LED4_PIN | LED5_PIN | LED6_PIN | LED7_PIN; \ + LED4_OFF(); LED5_OFF(); LED6_OFF(); LED7_OFF(); \ +} + +#define DEBUG1_PIN ( BIT1 ) +#define DEBUG3_PIN ( BIT4 ) +#define DEBUG4_PIN ( BIT7 ) +#define DEBUG5_PIN ( BIT6 ) + +#define DEBUG1_PDIR ( P5DIR ) +#define DEBUG3_PDIR ( P7DIR ) +#define DEBUG4_PDIR ( P6DIR ) +#define DEBUG5_PDIR ( P7DIR ) + +#define DEBUG1_POUT ( P5OUT ) +#define DEBUG3_POUT ( P7OUT ) +#define DEBUG4_POUT ( P6OUT ) +#define DEBUG5_POUT ( P7OUT ) + +#define DEBUG1_HIGH() { DEBUG1_POUT |= DEBUG1_PIN; } +#define DEBUG3_HIGH() { DEBUG3_POUT |= DEBUG3_PIN; } +#define DEBUG4_HIGH() { DEBUG4_POUT |= DEBUG4_PIN; } +#define DEBUG5_HIGH() { DEBUG5_POUT |= DEBUG5_PIN; } + +#define DEBUG1_LOW() { DEBUG1_POUT &= ~DEBUG1_PIN; } +#define DEBUG3_LOW() { DEBUG3_POUT &= ~DEBUG3_PIN; } +#define DEBUG4_LOW() { DEBUG4_POUT &= ~DEBUG4_PIN; } +#define DEBUG5_LOW() { DEBUG5_POUT &= ~DEBUG5_PIN; } + +#define DEBUG1_PULSE() { DEBUG1_HIGH(); DEBUG1_LOW(); } +#define DEBUG3_PULSE() { DEBUG3_HIGH(); DEBUG3_LOW(); } +#define DEBUG4_PULSE() { DEBUG4_HIGH(); DEBUG4_LOW(); } +#define DEBUG5_PULSE() { DEBUG5_HIGH(); DEBUG5_LOW(); } + +#define DEBUG1_TOGGLE() { DEBUG1_POUT ^= DEBUG1_PIN; } +#define DEBUG3_TOGGLE() { DEBUG3_POUT ^= DEBUG3_PIN; } +#define DEBUG4_TOGGLE() { DEBUG4_POUT ^= DEBUG4_PIN; } +#define DEBUG5_TOGGLE() { DEBUG5_POUT ^= DEBUG5_PIN; } + +#define CONFIG_DEBUG_PINS() { \ + DEBUG1_PDIR |= DEBUG1_PIN; \ + DEBUG3_PDIR |= DEBUG3_PIN; \ + DEBUG4_PDIR |= DEBUG4_PIN; \ + DEBUG5_PDIR |= DEBUG5_PIN; \ + DEBUG1_POUT &= ~DEBUG1_PIN; \ + DEBUG3_POUT &= ~DEBUG3_PIN; \ + DEBUG4_POUT &= ~DEBUG4_PIN; \ + DEBUG5_POUT &= ~DEBUG5_PIN; \ +} + + + +/* + * Sideband signals (for lack of another word) + */ +#define BT_CLK_REQ_PDIR ( P1DIR ) +#define BT_CLK_REQ_POUT ( P1OUT ) +#define BT_CLK_REQ_PIN ( BIT4 ) + +#define BT_IO1_PDIR ( P1DIR ) +#define BT_IO1_POUT ( P1OUT ) +#define BT_IO1_PIN ( BIT5 ) + +#define BT_IO2_PDIR ( P1DIR ) +#define BT_IO2_POUT ( P1OUT ) +#define BT_IO2_PIN ( BIT6 ) + +/******************************************************************************/ + +/* peripheral mapping for accelerometer */ +#define ACCELEROMETER_CTL0 ( UCB1CTL0 ) +#define ACCELEROMETER_CTL1 ( UCB1CTL1 ) +#define ACCELEROMETER_BR0 ( UCB1BR0 ) +#define ACCELEROMETER_BR1 ( UCB1BR1 ) +#define ACCELEROMETER_I2CSA ( UCB1I2CSA ) +#define ACCELEROMETER_IE ( UCB1IE ) +#define ACCELEROMETER_IFG ( UCB1IFG ) +#define ACCELEROMETER_TXBUF ( UCB1TXBUF ) +#define ACCELEROMETER_RXBUF ( UCB1RXBUF ) +#define ACCELEROMETER_STAT ( UCB1STAT ) +/* interrupt mapping for accelerometer */ +#define USCI_ACCELEROMETER_VECTOR ( USCI_B1_VECTOR ) +#define USCI_ACCELEROMETER_IV ( UCB1IV ) + + + + +#endif // HAL_DEVBOARD_V2_DEFS_H + + + + + diff --git a/metawatch/hal_digital_v2_defs.h b/metawatch/hal_digital_v2_defs.h new file mode 100644 index 0000000..854996c --- /dev/null +++ b/metawatch/hal_digital_v2_defs.h @@ -0,0 +1,619 @@ +//============================================================================== +// Copyright 2011 Meta Watch Ltd. - http://www.MetaWatch.org/ +// +// Licensed under the Meta Watch License, Version 1.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.MetaWatch.org/licenses/license-1.0.html +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//============================================================================== + +/******************************************************************************/ +/*! \file hal_digital_v2_defs.h + * + * Pin and peripheral definitions for Digital Watch Version 2 + */ +/******************************************************************************/ + +#ifndef HAL_DIGITAL_V2_DEFS_H +#define HAL_DIGITAL_V2_DEFS_H + + +// Defines for the LCD display interface, single channel SPI output +#define LCD_5V_PDIR P4DIR +#define LCD_5V_POUT P4OUT +#define LCD_5V_BIT BIT0 + +#define ENABLE_LCD_POWER() { \ + LCD_5V_PDIR |= LCD_5V_BIT; \ + LCD_5V_POUT |= LCD_5V_BIT; \ +} + +#define DISABLE_LCD_POWER() { \ + LCD_5V_PDIR |= LCD_5V_BIT; \ + LCD_5V_POUT &= ~LCD_5V_BIT; \ +} + +#define LCD_ENABLE_PDIR ( P3DIR ) +#define LCD_ENABLE_POUT ( P3OUT ) +#define LCD_ENABLE_PIN ( BIT6 ) + +#define ENABLE_LCD_ENABLE() { \ + LCD_ENABLE_PDIR |= LCD_ENABLE_PIN; \ + LCD_ENABLE_POUT |= LCD_ENABLE_PIN; \ +} + +#define DISABLE_LCD_ENABLE() { \ + LCD_ENABLE_PDIR |= LCD_ENABLE_PIN; \ + LCD_ENABLE_POUT &= ~LCD_ENABLE_PIN; \ +} + +#define LCD_CS_PDIR ( P3DIR ) +#define LCD_CS_POUT ( P3OUT ) +#define LCD_CS_PIN ( BIT2 ) + +#define LCD_SPI_PORT_SEL ( P3SEL ) +#define LCD_SPI_SIMO_BIT ( BIT1 ) +#define LCD_SPI_CLK_BIT ( BIT3 ) + +#define LCD_CS_ASSERT() { LCD_CS_POUT |= LCD_CS_PIN; } +#define LCD_CS_DEASSERT() { LCD_CS_POUT &= ~LCD_CS_PIN; } + +/* unused in this version */ +#define SPECIAL_DMA_CONFIG() { } +#define OLED_CS1N_ENABLE() { } +#define OLED_CS1N_DISABLE() { } + + +#define CONFIG_LCD_PINS() { \ + LCD_SPI_PORT_SEL |= LCD_SPI_SIMO_BIT; \ + LCD_SPI_PORT_SEL |= LCD_SPI_CLK_BIT; \ + ENABLE_LCD_ENABLE(); \ + LCD_CS_PDIR |= LCD_CS_PIN; \ + LCD_CS_DEASSERT(); \ +} + +// labeled EL_EN on schematic +#define LCD_LED_PDIR ( P4DIR ) +#define LCD_LED_POUT ( P4OUT ) +#define LCD_LED_PIN ( BIT4 ) + +#define DISABLE_LCD_LED() { \ + LCD_LED_PDIR |= LCD_LED_PIN; \ + LCD_LED_POUT &= ~LCD_LED_PIN; \ +} + +#define ENABLE_LCD_LED() { \ + LCD_LED_PDIR |= LCD_LED_PIN; \ + LCD_LED_POUT |= LCD_LED_PIN; \ +} +// Use UCB2 as the SPI port define the registers and interrupt vector to all be +// for UCB2 by replacing the x in the last section of the name with a 2 +#define LCD_SPI_UCBxCTL0 UCB0CTL0 // Control register +#define LCD_SPI_UCBxCTL1 UCB0CTL1 // Control register +#define LCD_SPI_UCBxBR0 UCB0BR0 // Baudrate prescale +#define LCD_SPI_UCBxBR1 UCB0BR1 // Baudrate divider + +#define LCD_SPI_UCBxTXBUF UCB0TXBUF // Transmit buffer +#define LCD_SPI_UCBxRXBUF UCB0RXBUF // Receive buffer + +#define LCD_SPI_UCBxIE UCB0IE // Interrupt enable register +#define LCD_SPI_UCBxIFG UCB0IFG // Interrupt flag register +#define LCD_SPI_UCBxIV UCB0IV // Interrupt vector register +#define LCD_SPI_UCBxSTAT UCB0STAT // status register + +#if 0 +// Definitions for the OLED Display +// peripheral mapping for OLED +#define OLED_I2C_CTL0 ( UCB0CTL0 ) +#define OLED_I2C_CTL1 ( UCB0CTL1 ) +#define OLED_I2C_BR0 ( UCB0BR0 ) +#define OLED_I2C_BR1 ( UCB0BR1 ) +#define OLED_I2C_I2CSA ( UCB0I2CSA ) +#define OLED_I2C_IE ( UCB0IE ) +#define OLED_I2C_IFG ( UCB0IFG ) +#define OLED_I2C_TXBUF ( UCB0TXBUF ) +#define OLED_I2C_RXBUF ( UCB0RXBUF ) +// interrupt mapping for OLED +#define USCI_OLED_I2C_VECTOR ( USCI_B0_VECTOR ) +#define USCI_OLED_I2C_IV ( UCB0IV ) + +// OLED reset is active low +#define OLED_RSTN_PDIR ( P3DIR ) +#define OLED_RSTN_POUT ( P3OUT ) +#define OLED_RSTN_PIN ( BIT3 ) + +#define OLED_RSTN_CONFIG() { OLED_RSTN_PDIR |= OLED_RSTN_PIN; OLED_RSTN_ASSERT(); } +#define OLED_RSTN_ASSERT() { OLED_RSTN_POUT &= ~OLED_RSTN_PIN; } +#define OLED_RSTN_DEASSERT() { OLED_RSTN_POUT |= OLED_RSTN_PIN; } + +#define OLED_CS1N_PDIR ( P8DIR ) +#define OLED_CS1N_POUT ( P8OUT ) +#define OLED_CS1N_PIN ( BIT0 ) + +#define OLED_CS1N_CONFIG() { OLED_CS1N_PDIR |= OLED_CS1N_PIN; OLED_CS1N_DISABLE(); } +#define OLED_CS1N_ENABLE() { OLED_CS1N_POUT &= ~OLED_CS1N_PIN; } +#define OLED_CS1N_DISABLE() { OLED_CS1N_POUT |= OLED_CS1N_PIN; } + +#define OLED_CS2N_PDIR ( P8DIR ) +#define OLED_CS2N_POUT ( P8OUT ) +#define OLED_CS2N_PIN ( BIT1 ) + +#define OLED_CS2N_CONFIG() { OLED_CS2N_PDIR |= OLED_CS2N_PIN; OLED_CS2N_DISABLE(); } +#define OLED_CS2N_ENABLE() { OLED_CS2N_POUT &= ~OLED_CS2N_PIN; } +#define OLED_CS2N_DISABLE() { OLED_CS2N_POUT |= OLED_CS2N_PIN; } + +#define OLED_SDA_PDIR ( P3DIR ) +#define OLED_SDA_POUT ( P3OUT ) +#define OLED_SDA_PIN ( BIT1 ) +#define OLED_SDA_PSEL ( P3SEL) + +#define OLED_SCL_PDIR ( P3DIR ) +#define OLED_SCL_POUT ( P3OUT ) +#define OLED_SCL_PORT ( P3 ) +#define OLED_SCL_PIN ( BIT2 ) +#define OLED_SCL_PSEL ( P3SEL ) + +// the select line overrides the pdir and pout settings +#define OLED_SDA_CONFIG_FOR_PERIPHERAL_USE() { OLED_SDA_PSEL |= OLED_SDA_PIN; } +#define OLED_SCL_CONFIG_FOR_PERIPHERAL_USE() { OLED_SCL_PSEL |= OLED_SCL_PIN; } + +#define OLED_I2C_CONFIG_FOR_PERIPHERAL_USE() { \ + OLED_SDA_CONFIG_FOR_PERIPHERAL_USE(); \ + OLED_SCL_CONFIG_FOR_PERIPHERAL_USE(); } + +#define OLED_SDA_CONFIG_FOR_SLEEP() { \ + OLED_SDA_PSEL &= ~OLED_SDA_PIN; \ + OLED_SDA_PDIR |= OLED_SDA_PIN; \ + OLED_SDA_POUT |= OLED_SDA_PIN; } + +#define OLED_SCL_CONFIG_FOR_SLEEP() { \ + OLED_SCL_PSEL &= ~OLED_SCL_PIN; \ + OLED_SCL_PDIR |= OLED_SCL_PIN; \ + OLED_SCL_POUT |= OLED_SCL_PIN; } + +#define OLED_I2C_CONFIG_FOR_SLEEP() { \ + OLED_SDA_CONFIG_FOR_SLEEP(); \ + OLED_SCL_CONFIG_FOR_SLEEP(); } + +#define OLED_POWER_ENABLE_PIN ( BIT0 ) +#define OLED_POWER_ENABLE_POUT ( P4OUT ) +#define OLED_POWER_ENABLE_PDIR ( P4DIR ) +#define OLED_POWER_CONFIG() { P4DIR |= OLED_POWER_ENABLE_PIN; OLED_POWER_DISABLE(); } +#define OLED_POWER_ENABLE() { P4OUT |= OLED_POWER_ENABLE_PIN; } +#define OLED_POWER_DISABLE() { P4OUT &= ~OLED_POWER_ENABLE_PIN; } + +// VLED_EN is active low +#define OLED_IO_POWER_ENABLE_PIN ( BIT3 ) +#define OLED_IO_POWER_ENABLE_POUT ( P5OUT ) +#define OLED_IO_POWER_ENABLE_PDIR ( P5DIR ) +#define OLED_IO_POWER_CONFIG() { P5DIR |= OLED_IO_POWER_ENABLE_PIN; OLED_IO_POWER_DISABLE(); } +#define OLED_IO_POWER_ENABLE() { P5OUT &= ~OLED_IO_POWER_ENABLE_PIN; } +#define OLED_IO_POWER_DISABLE() { P5OUT |= OLED_IO_POWER_ENABLE_PIN; } + + + + + + +#endif // OLED + +#define CONFIG_OLED_PINS() { } + + +// Real time clock defines +// RTC 1 Hz output, also used to toggle the bias on the LCD +#define RTC_1HZ_PORT_DIR ( P2DIR ) +#define RTC_1HZ_PORT_SEL ( P2SEL ) +#define RTC_1HZ_BIT ( BIT4 ) + + +// Button defines + +#define BUTTON_TIME_COUNT_ARRAY_LEN 8 +#define ALL_BUTTONS_OFF 0xFF + +#define SW_A BIT0 +#define SW_B BIT1 +#define SW_C BIT2 +#define SW_D BIT3 +// Bit 4 is not used +#define SW_E BIT5 +#define SW_F BIT6 +#define SW_P BIT7 + +#define SW_A_INDEX ( 0 ) +#define SW_B_INDEX ( 1 ) +#define SW_C_INDEX ( 2 ) +#define SW_D_INDEX ( 3 ) +#define SW_UNUSED_INDEX ( 4 ) +#define SW_E_INDEX ( 5 ) +#define SW_F_INDEX ( 6 ) +#define SW_P_INDEX ( 7 ) +/* the switch does not count */ +#define TOTAL_BTN_NUM ( 7 ) + +#ifdef ANALOG + #define ALL_BUTTONS (SW_A | SW_B | SW_C | SW_D | SW_E | SW_F | SW_P) +#elif defined(DIGITAL) + #define ALL_BUTTONS (SW_A | SW_B | SW_C | SW_D | SW_E | SW_F) +#endif + +// The digital watch version 1 has 1 Meg pull downs +// so the code below wont work +#define RESISTOR_ENABLE_BUTTONS ALL_BUTTONS + +// Setting the edge select bit high generates and interrupt on the falling edge +#define INT_EDGE_SEL_BUTTONS (ALL_BUTTONS) + +#define BUTTON_PORT_VECTOR PORT2_VECTOR +#define BUTTON_PORT_DIR P2DIR +#define BUTTON_PORT_SEL P2SEL +#define BUTTON_PORT_OUT P2OUT +#define BUTTON_PORT_REN P2REN +#define BUTTON_PORT_IE P2IE +#define BUTTON_PORT_IES P2IES +#define BUTTON_PORT_IFG P2IFG + +#define DISABLE_BUTTONS() { \ + BUTTON_PORT_IE &= ~INT_EDGE_SEL_BUTTONS; \ + BUTTON_PORT_REN &= ~ALL_BUTTONS; \ + BUTTON_PORT_OUT &= ~ALL_BUTTONS; \ +} + +/* SHIPPING */ +/* S5 or SW_E is the button that takes the watch out of shipping mode */ +#define ENABLE_SHIPPING_WAKEUP() { \ + P1IE = 0x00; \ + PMMCTL0_H = 0xA5; \ + PMMRIE = 0x0000; \ + RTCPS0CTL = 0x0000; \ + RTCPS1CTL = 0x0000; \ + UCSCTL8 = 0x0700; \ + BUTTON_PORT_REN = SW_E; \ + BUTTON_PORT_OUT = SW_E; \ + BUTTON_PORT_DIR &= ~SW_E; \ + BUTTON_PORT_IES |= SW_E; \ + BUTTON_PORT_IFG = 0x00; \ + BUTTON_PORT_IE |= SW_E; \ +} + +// NOTE the the buttons are grounded. That means that we want to invert the bits +// when reading the port to have positive logic where a button press is a "1" +#define BUTTON_PORT_IN ~P2IN + +// Configure the hardware port for the button support P2.4 is excluded +#define CONFIGURE_BUTTON_PINS() { \ + BUTTON_PORT_REN = (unsigned char) RESISTOR_ENABLE_BUTTONS; \ + BUTTON_PORT_OUT = (unsigned char) ALL_BUTTONS; \ + BUTTON_PORT_DIR &= (unsigned char) ~ALL_BUTTONS; \ + BUTTON_PORT_IES |= INT_EDGE_SEL_BUTTONS; \ + BUTTON_PORT_IFG &= ~ALL_BUTTONS; \ + BUTTON_PORT_IE |= ALL_BUTTONS; \ +} + + +// Battery charger control for a BQ24080 +#define BAT_CHARGE_DIR P6DIR +#define BAT_CHARGE_REN P6REN +#define BAT_CHARGE_OUT P6OUT +#define BAT_CHARGE_IN P6IN + +#define BAT_CHARGE_ENABLE_PIN BIT2 +#define BAT_CHARGE_STAT1 BIT3 +#define BAT_CHARGE_STAT2 BIT4 +#define BAT_CHARGE_PWR_BIT BIT5 + +// Enable charging, asserted low +#define BATTERY_CHARGE_ENABLE() { BAT_CHARGE_OUT &= ~BAT_CHARGE_ENABLE_PIN; } + +// disable charging, sleep the part +#define BATTERY_CHARGE_DISABLE() { BAT_CHARGE_OUT |= BAT_CHARGE_ENABLE_PIN; } + +//RESET PIN NMI or RESET +#define SET_RESET_PIN_NMI() {SFRRPCR &= ~SYSRSTRE; SFRRPCR |= SYSNMI;} +#define SET_RESET_PIN_RST() {SFRRPCR |= SYSRSTRE; SFRRPCR &= ~SYSNMI;} +#define RESET_PIN (SFRRPCR & SYSNMI) // return 1 for NMI + +// +// Ambient Light Sensor +// +#define GC1_PDIR ( P6DIR ) +#define GC1_POUT ( P6OUT ) +#define GC1_PSEL ( P6SEL ) +#define GC1_PIN ( BIT0 ) + +#define GC2_PDIR ( P6DIR ) +#define GC2_POUT ( P6OUT ) +#define GC2_PSEL ( P6SEL ) +#define GC2_PIN ( BIT6 ) + +#define IOUT_PDIR ( P6DIR ) +#define IOUT_PSEL ( P6SEL ) +#define IOUT_PIN ( BIT1 ) + +#define LIGHT_SENSE_INIT() \ +{ \ + IOUT_PDIR &= ~IOUT_PIN; \ + IOUT_PSEL |= IOUT_PIN; \ + GC1_PDIR |= GC1_PIN; \ + GC2_PDIR |= GC2_PIN; \ + LIGHT_SENSE_DISABLE(); \ +} + +#define LIGHT_SENSOR_SHUTDOWN() \ +{ \ + GC1_POUT &= ~GC1_PIN; \ + GC2_POUT &= ~GC2_PIN; \ +} + +#define LIGHT_SENSOR_L_GAIN() \ +{ \ + GC1_POUT |= GC1_PIN; \ + GC2_POUT |= GC2_PIN; \ +} + +#define LIGHT_SENSE_ENABLE()\ +{ \ + LIGHT_SENSOR_L_GAIN(); \ +} + +#define LIGHT_SENSE_DISABLE() \ +{ \ + LIGHT_SENSOR_SHUTDOWN(); \ +} + + + +// +// This pin controls if the battery voltage can be read +// +#define BATTERY_READ_CONTROL_PDIR ( P4DIR ) +#define BATTERY_READ_CONTROL_POUT ( P4OUT ) +#define BATTERY_READ_CONTROL_PIN ( BIT6 ) + +#define BATTERY_SENSE_INPUT_PDIR ( P7DIR ) +#define BATTERY_SENSE_INPUT_PSEL ( P7SEL ) +#define BATTERY_SENSE_INPUT_PIN ( BIT7 ) + +#define BATTERY_SENSE_INIT() \ +{ \ + BATTERY_READ_CONTROL_PDIR |= BATTERY_READ_CONTROL_PIN; \ + BATTERY_SENSE_INPUT_PDIR &= ~BATTERY_SENSE_INPUT_PIN; \ + BATTERY_SENSE_INPUT_PSEL |= BATTERY_SENSE_INPUT_PIN; \ + BATTERY_SENSE_DISABLE(); \ +} + +#define BATTERY_SENSE_ENABLE() \ +{ \ + BATTERY_READ_CONTROL_POUT |= BATTERY_READ_CONTROL_PIN; \ +} + +#define BATTERY_SENSE_DISABLE() \ +{ \ + BATTERY_READ_CONTROL_POUT &= ~BATTERY_READ_CONTROL_PIN; \ +} + +// +// hardware configuration is a voltage divider to ADC input +// +#define HARDWARE_CFG_CONTROL_PDIR ( P8DIR ) +#define HARDWARE_CFG_CONTROL_POUT ( P8OUT ) +#define HARDWARE_CFG_CONTROL_PIN ( BIT2 ) + +#define HARDWARE_CFG_INPUT_PDIR ( P7DIR ) +#define HARDWARE_CFG_INPUT_PSEL ( P7SEL ) +#define HARDWARE_CFG_INPUT_PIN ( BIT5 ) + +#define HARDWARE_CFG_SENSE_INIT() \ +{ \ + HARDWARE_CFG_CONTROL_PDIR |= HARDWARE_CFG_CONTROL_PIN; \ + HARDWARE_CFG_INPUT_PDIR &= ~HARDWARE_CFG_INPUT_PIN; \ + HARDWARE_CFG_INPUT_PSEL |= HARDWARE_CFG_INPUT_PIN; \ + HARDWARE_CFG_SENSE_DISABLE(); \ +} + +#define HARDWARE_CFG_SENSE_ENABLE() \ +{ \ + HARDWARE_CFG_CONTROL_POUT |= HARDWARE_CFG_CONTROL_PIN; \ +} + +#define HARDWARE_CFG_SENSE_DISABLE() \ +{ \ + HARDWARE_CFG_CONTROL_POUT &= ~HARDWARE_CFG_CONTROL_PIN; \ +} + + +#define APPLE_SDA_PDIR ( P10DIR ) +#define APPLE_SDA_POUT ( P10OUT ) +#define APPLE_SDA_PIN ( BIT1 ) + +#define APPLE_SCL_PDIR ( P10DIR ) +#define APPLE_SCL_POUT ( P10OUT ) +#define APPLE_SCL_PIN ( BIT2 ) + +#define APPLE_POWER_PDIR ( P4DIR ) +#define APPLE_POWER_POUT ( P4OUT ) +#define APPLE_POWER_PIN ( BIT5 ) + +/* power enable is active low */ +#define APPLE_POWER_ENABLE() { APPLE_POWER_POUT &= ~APPLE_POWER_PIN; } +#define APPLE_POWER_DISABLE() { APPLE_POWER_POUT |= APPLE_POWER_PIN; } + +#define APPLE_POWER_CONFIG() { \ + APPLE_POWER_PDIR |= APPLE_POWER_PIN; \ + APPLE_POWER_DISABLE(); \ +} + + +/* since the apple chip is currently not powered + * the pins should be at 0 instead of 1 + */ +#define APPLE_I2C_PIN_CONFIG() { \ + APPLE_SDA_PDIR |= APPLE_SDA_PIN; \ + APPLE_SDA_POUT &= ~APPLE_SDA_PIN; \ + APPLE_SCL_PDIR |= APPLE_SCL_PIN; \ + APPLE_SCL_POUT &= ~APPLE_SCL_PIN; \ +} + +#define APPLE_CONFIG() { \ + APPLE_POWER_CONFIG(); \ + APPLE_I2C_PIN_CONFIG(); \ +} + +#define SRAM_SCLK_PSEL ( P3SEL ) +#define SRAM_SCLK_PDIR ( P3DIR ) +#define SRAM_SCLK_POUT ( P3OUT ) +#define SRAM_SCLK_PIN ( BIT0 ) + +#define SRAM_SOMI_PSEL ( P3SEL ) +#define SRAM_SOMI_PDIR ( P3DIR ) +#define SRAM_SOMI_POUT ( P3OUT ) +#define SRAM_SOMI_PIN ( BIT5 ) + +#define SRAM_SIMO_PSEL ( P3SEL ) +#define SRAM_SIMO_PDIR ( P3DIR ) +#define SRAM_SIMO_POUT ( P3OUT ) +#define SRAM_SIMO_PIN ( BIT4 ) + +#define SRAM_CSN_PDIR ( P9DIR ) +#define SRAM_CSN_POUT ( P9OUT ) +#define SRAM_CSN_PIN ( BIT6) + +#define SRAM_HOLDN_PDIR ( P9DIR ) +#define SRAM_HOLDN_POUT ( P9OUT ) +#define SRAM_HOLDN_PIN ( BIT7 ) + +#define CONFIG_SRAM_PINS() \ +{ \ + SRAM_CSN_PDIR |= SRAM_CSN_PIN; \ + SRAM_CSN_POUT |= SRAM_CSN_PIN; \ + SRAM_HOLDN_PDIR |= SRAM_HOLDN_PIN; \ + SRAM_HOLDN_POUT |= SRAM_HOLDN_PIN; \ +} + +#define SRAM_CSN_ASSERT() { SRAM_CSN_POUT &= ~SRAM_CSN_PIN; } + +#define SRAM_CSN_DEASSERT() { \ + WAIT_FOR_SRAM_SPI_SHIFT_COMPLETE(); \ + SRAM_CSN_POUT |= SRAM_CSN_PIN; \ +} + +/* wait for shift to complete ( ~3 us ) */ +#define WAIT_FOR_SRAM_SPI_SHIFT_COMPLETE() { while( (UCA0STAT & 0x01) != 0 ); } + +#define ACCELEROMETER_SDA_PIN ( BIT7 ) +#define ACCELEROMETER_SDA_PSEL ( P3SEL ) +#define ACCELEROMETER_SDA_POUT ( P3OUT ) +#define ACCELEROMETER_SDA_PDIR ( P3OUT ) +#define ACCELEROMETER_SDA_PREN ( P1REN ) + +#define ACCELEROMETER_SCL_PIN ( BIT4 ) +#define ACCELEROMETER_SCL_PSEL ( P5SEL ) +#define ACCELEROMETER_SCL_POUT ( P5OUT ) +#define ACCELEROMETER_SCL_PDIR ( P5OUT ) +#define ACCELEROMETER_SCL_PREN ( P5REN ) + +#define ACCELEROMETER_INT_PIN ( BIT7 ) +#define ACCELEROMETER_INT_PDIR ( P1DIR ) +#define ACCELEROMETER_INT_PSEL ( P1SEL ) +#define ACCELEROMETER_INT_PIFG ( P1IFG ) +#define ACCELEROMETER_INT_PIE ( P1IE ) + +#define ACCELEROMETER_POWER_POUT ( P9OUT ) +#define ACCELEROMETER_POWER_PDIR ( P9DIR ) +#define ACCELEROMETER_POWER_PINS ( BIT1 | BIT2 ) + +/* this is for reference only (it doesn't control anything) */ +#define ACCELEROMETER_INT_NUM (PIN7_INT) + +#define LED4_ON() { } +#define LED5_ON() { } +#define LED6_ON() { } +#define LED7_ON() { } + +#define LED4_OFF() { } +#define LED5_OFF() { } +#define LED6_OFF() { } +#define LED7_OFF() { } + +#define CONFIG_LED_PINS() { } + + + +#define DEBUG1_HIGH() { } +#define DEBUG3_HIGH() { } +#define DEBUG4_HIGH() { } +#define DEBUG5_HIGH() { } + +#define DEBUG1_LOW() { } +#define DEBUG3_LOW() { } +#define DEBUG4_LOW() { } +#define DEBUG5_LOW() { } + +#define DEBUG1_PULSE() { } +#define DEBUG3_PULSE() { } +#define DEBUG4_PULSE() { } +#define DEBUG5_PULSE() { } + +#define DEBUG1_TOGGLE() { } +#define DEBUG3_TOGGLE() { } +#define DEBUG4_TOGGLE() { } +#define DEBUG5_TOGGLE() { } + +#define CONFIG_DEBUG_PINS() { } + +/* + * Sideband signals (for lack of another word) + */ +#define BT_CLK_REQ_PDIR ( P1DIR ) +#define BT_CLK_REQ_POUT ( P1OUT ) +#define BT_CLK_REQ_PIN ( BIT4 ) + +#define BT_IO1_PDIR ( P1DIR ) +#define BT_IO1_POUT ( P1OUT ) +#define BT_IO1_PIN ( BIT5 ) + +#define BT_IO2_PDIR ( P1DIR ) +#define BT_IO2_POUT ( P1OUT ) +#define BT_IO2_PIN ( BIT6 ) + +/******************************************************************************/ + +/* peripheral mapping for accelerometer */ +#define ACCELEROMETER_CTL0 ( UCB1CTL0 ) +#define ACCELEROMETER_CTL1 ( UCB1CTL1 ) +#define ACCELEROMETER_BR0 ( UCB1BR0 ) +#define ACCELEROMETER_BR1 ( UCB1BR1 ) +#define ACCELEROMETER_I2CSA ( UCB1I2CSA ) +#define ACCELEROMETER_IE ( UCB1IE ) +#define ACCELEROMETER_IFG ( UCB1IFG ) +#define ACCELEROMETER_TXBUF ( UCB1TXBUF ) +#define ACCELEROMETER_RXBUF ( UCB1RXBUF ) +#define ACCELEROMETER_STAT ( UCB1STAT ) +/* interrupt mapping for accelerometer */ +#define USCI_ACCELEROMETER_VECTOR ( USCI_B1_VECTOR ) +#define USCI_ACCELEROMETER_IV ( UCB1IV ) + +/******************************************************************************/ + +/* IN1 on mux */ +#define MUX_CONTROL1_PDIR ( P10DIR ) +#define MUX_CONTROL1_POUT ( P10OUT ) +#define MUX_CONTROL1_PIN ( BIT7 ) + +#define MUX_CONTROL2_PDIR ( P10DIR ) +#define MUX_CONTROL2_POUT ( P10OUT ) +#define MUX_CONTROL2_PIN ( BIT6 ) + + +#endif // HAL_DIGITAL_V2_DEFS_H + + + diff --git a/metawatch/hal_io_macros.h b/metawatch/hal_io_macros.h new file mode 100644 index 0000000..182a147 --- /dev/null +++ b/metawatch/hal_io_macros.h @@ -0,0 +1,116 @@ +//============================================================================== +// Copyright Meta Watch Ltd. - http://www.MetaWatch.org/ +// +// Licensed under the Meta Watch License, Version 1.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.MetaWatch.org/licenses/license-1.0.html +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//============================================================================== + +/******************************************************************************/ +/*! \file hal_io_macros.c + * + * Separate the pin definitions for each board type from the macros + * + */ +/******************************************************************************/ + +#ifndef HAL_IO_MACROS +#define HAL_IO_MACROS + +/******************************************************************************/ + +#define BT_CLK_REQ_CONFIG_AS_INPUT() { \ + BT_CLK_REQ_PDIR &= ~BT_CLK_REQ_PIN; \ +} + +#define BT_CLK_REQ_CONFIG_AS_OUTPUT_LOW() { \ + BT_CLK_REQ_PDIR |= BT_CLK_REQ_PIN; \ + BT_CLK_REQ_POUT &= ~BT_CLK_REQ_PIN; \ +} + +#define BT_IO1_CONFIG_AS_INPUT() { \ + BT_IO1_PDIR &= ~BT_IO1_PIN; } + +#define BT_IO1_CONFIG_AS_OUTPUT_LOW() { \ + BT_IO1_PDIR |= BT_IO1_PIN; \ + BT_IO1_POUT &= ~BT_IO1_PIN; \ +} + +#define BT_IO2_CONFIG_AS_INPUT() { \ + BT_IO2_PDIR &= ~BT_IO2_PIN; \ +} + +#define BT_IO2_CONFIG_AS_OUTPUT_LOW() { \ + BT_IO2_PDIR |= BT_IO2_PIN; \ + BT_IO2_POUT &= ~BT_IO2_PIN; } + +/******************************************************************************/ + +#define ACCELEROMETER_INT_ENABLE() { \ + ACCELEROMETER_INT_PIFG &= ~ACCELEROMETER_INT_PIN; \ + ACCELEROMETER_INT_PIE |= ACCELEROMETER_INT_PIN; \ +} + +#define ACCELEROMETER_INT_DISABLE() { \ + ACCELEROMETER_INT_PIE &= ~ACCELEROMETER_INT_PIN; \ + ACCELEROMETER_INT_PIFG &= ~ACCELEROMETER_INT_PIN; \ +} + +#define CONFIG_ACCELEROMETER_PINS() { \ + ACCELEROMETER_SDA_PSEL |= ACCELEROMETER_SDA_PIN; \ + ACCELEROMETER_SCL_PSEL |= ACCELEROMETER_SCL_PIN; \ + ACCELEROMETER_INT_PDIR &= ~ACCELEROMETER_INT_PIN; \ +} + +/* only configuration 5 and later boards support turning on/off the power + * to the accelerometer + */ +#define ENABLE_ACCELEROMETER_POWER() { \ + ACCELEROMETER_POWER_PDIR |= ACCELEROMETER_POWER_PINS; \ + ACCELEROMETER_POWER_POUT |= ACCELEROMETER_POWER_PINS; \ +} + +#define DISABLE_ACCELEROMETER_POWER() { \ + ACCELEROMETER_POWER_PDIR |= ACCELEROMETER_POWER_PINS; \ + ACCELEROMETER_POWER_POUT &= ~ACCELEROMETER_POWER_PINS; \ +} + +/******************************************************************************/ + +#define ENABLE_MUX_OUTPUT_CONTROL() { \ + MUX_CONTROL1_PDIR |= MUX_CONTROL1_PIN; \ + MUX_CONTROL2_PDIR |= MUX_CONTROL2_PIN; \ +} + +#define MUX_OUTPUT_OFF() { \ + MUX_CONTROL1_POUT &= ~MUX_CONTROL1_PIN; \ + MUX_CONTROL2_POUT &= ~MUX_CONTROL2_PIN; \ +} + +#define MUX_OUTPUT_SELECTS_SERIAL() { \ + MUX_CONTROL1_POUT |= MUX_CONTROL1_PIN; \ + MUX_CONTROL2_POUT &= ~MUX_CONTROL2_PIN; \ +} + +#define MUX_OUTPUT_SELECTS_GND() { \ + MUX_CONTROL1_POUT &= ~MUX_CONTROL1_PIN; \ + MUX_CONTROL2_POUT |= MUX_CONTROL2_PIN; \ +} + +#define MUX_OUTPUT_SELECTS_SPY() { \ + MUX_CONTROL1_POUT |= MUX_CONTROL1_PIN; \ + MUX_CONTROL2_POUT |= MUX_CONTROL2_PIN; \ +} + + +/******************************************************************************/ + +#endif /* HAL_IO_MACROS */ diff --git a/metawatch/mw_acc.c b/metawatch/mw_acc.c new file mode 100644 index 0000000..1080c3e --- /dev/null +++ b/metawatch/mw_acc.c @@ -0,0 +1,423 @@ +#include +#include +#include +#include + +#include "mw_main.h" +#include "mw_uart.h" + +#include "mw_acc.h" + +#include "oswald_main.h" + +#define ACCEL_STATE_DISABLED 0x00 +#define ACCEL_STATE_ENABLED 0x01 + +static uint8_t AccelState; +static uint8_t AccelerometerBusy; +static uint8_t LengthCount; +static uint8_t Index; +static uint8_t *pAccelerometerData; + +/* + * Accelerometer is a Kionix KXTF9-4100 connected to I2C + * I2C is pretty slow so reading and writing should be done non blocking + * using interrupts. + */ + +#define ACCELEROMETER_NO_INTERRUPTS 0x00 +#define ACCELEROMETER_ALIFG 0x02 +#define ACCELEROMETER_NACKIFG 0x04 +#define ACCELEROMETER_STTIFG 0x06 +#define ACCELEROMETER_STPIFG 0x08 +#define ACCELEROMETER_RXIFG 0x0a +#define ACCELEROMETER_TXIFG 0x0c + +#pragma vector=USCI_B1_VECTOR +__interrupt void ACCERLEROMETER_I2C_ISR(void) +{ + // debug_uart_tx("ACC i2c irq\n"); + switch (USCI_ACCELEROMETER_IV) { + case ACCELEROMETER_NO_INTERRUPTS: + break; + case ACCELEROMETER_ALIFG: + break; + case ACCELEROMETER_NACKIFG: + nop(); + break; + case ACCELEROMETER_STTIFG: + nop(); + break; + case ACCELEROMETER_STPIFG: + nop(); + break; + case ACCELEROMETER_RXIFG: + if (LengthCount > 0) { + pAccelerometerData[Index++] = ACCELEROMETER_RXBUF; + LengthCount--; + if ( LengthCount == 1 ) { + /* All but one byte received. Send stop */ + ACCELEROMETER_CTL1 |= UCTXSTP; + } else if ( LengthCount == 0 ) { + /* Last byte received; disable rx interrupt */ + ACCELEROMETER_IE &= ~UCRXIE; + AccelerometerBusy = 0; + } + } + break; + case ACCELEROMETER_TXIFG: + if ( LengthCount > 0 ) { + ACCELEROMETER_TXBUF = pAccelerometerData[Index++]; + LengthCount--; + } else { + /* disable transmit interrupt and send stop */ + ACCELEROMETER_IE &= ~UCTXIE; + ACCELEROMETER_CTL1 |= UCTXSTP; + AccelerometerBusy = 0; + } + break; + default: + break; + } + +} + +void mw_acc_init_i2c(void) +{ + /* enable reset before configuration */ + ACCELEROMETER_CTL1 |= UCSWRST; + + /* configure as master using smclk / 40 = 399.5 kHz */ + ACCELEROMETER_CTL0 = UCMST + UCMODE_3 + UCSYNC; + ACCELEROMETER_CTL1 = UCSSEL__SMCLK + UCSWRST; + ACCELEROMETER_BR0 = 42; + + ACCELEROMETER_BR1 = 0; + ACCELEROMETER_I2CSA = KIONIX_DEVICE_ADDRESS; + + /* release reset */ + ACCELEROMETER_CTL1 &= ~UCSWRST; +} + +void mw_acc_disable_i2c(void) +{ + /* enable reset to hold it */ + ACCELEROMETER_CTL1 |= UCSWRST; +} + +void mw_acc_i2c_write(uint8_t RegisterAddress, uint8_t *pData, uint8_t Length) +{ + int tmo; + + if (Length == 0 || pData == 0) + return; + + while (UCB1STAT & UCBBUSY) + nop(); + + AccelerometerBusy = 1; + LengthCount = Length; + Index = 0; + pAccelerometerData = pData; + + /* + * enable transmit interrupt and + * setup for write and send the start condition + */ + ACCELEROMETER_IFG = 0; + ACCELEROMETER_CTL1 |= UCTR + UCTXSTT; + while(!(ACCELEROMETER_IFG & UCTXIFG)) + nop(); + + /* + * clear transmit interrupt flag, enable interrupt, + * send the register address + */ + ACCELEROMETER_IFG = 0; + ACCELEROMETER_IE |= UCTXIE; + ACCELEROMETER_TXBUF = RegisterAddress; + + tmo = 0; + while (AccelerometerBusy) { + while (tmo++ < 1000) + __delay_cycles(16000); + if (tmo >= 1000) { + debug_uart_tx("ACC I2C tx tmo\n"); + return; + } + } + + while (ACCELEROMETER_CTL1 & UCTXSTP) + nop(); + + /* the rest of TX will be handled by the ISR */ +} + +void mw_acc_i2c_read_single(const uint8_t RegisterAddress, const uint8_t *pData) +{ + if ( pData == 0 ) + return; + + /* wait for bus to be free */ + while (UCB1STAT & UCBBUSY) + nop(); + + AccelerometerBusy = 1; + LengthCount = 1; + Index = 0; + pAccelerometerData = (uint8_t *)pData; + + /* transmit address */ + ACCELEROMETER_IFG = 0; + ACCELEROMETER_CTL1 |= UCTR + UCTXSTT; + while (!(ACCELEROMETER_IFG & UCTXIFG)) + nop(); + + /* write register address */ + ACCELEROMETER_IFG = 0; + ACCELEROMETER_TXBUF = RegisterAddress; + while (!(ACCELEROMETER_IFG & UCTXIFG)) + nop(); + + /* send a repeated start (same slave address now it is a read command) + * read possible extra character from rxbuffer + */ + ACCELEROMETER_RXBUF; + ACCELEROMETER_IFG = 0; + ACCELEROMETER_IE |= UCRXIE; + ACCELEROMETER_CTL1 &= ~UCTR; + /* for a read of a single byte the stop must be sent while the byte is being + * received. If this is interrupted an extra byte may be read. + * however, it will be discarded during the next read + */ + if (LengthCount == 1) { + /* errata usci30: prevent interruption of sending stop + * so that only one byte is read + * this requires 62 us @ 320 kHz, 51 @ 400 kHz + */ + __disable_interrupt(); + + ACCELEROMETER_CTL1 |= UCTXSTT; + + while(ACCELEROMETER_CTL1 & UCTXSTT) + nop(); + + ACCELEROMETER_CTL1 |= UCTXSTP; + + __enable_interrupt(); + } else { + ACCELEROMETER_CTL1 |= UCTXSTT; + } + + /* wait until all data has been received and the stop bit has been sent */ + while (AccelerometerBusy) + nop(); + while (ACCELEROMETER_CTL1 & UCTXSTP) + nop(); + Index = 0; + pAccelerometerData = 0; +} + +/* errata usci30: only perform single reads + * second solution: use DMA + */ +void mw_acc_i2c_read(const uint8_t RegisterAddress, uint8_t *pData, const uint8_t Length) +{ + int i; + + for ( i = 0; i < Length; i++ ) { + mw_acc_i2c_read_single(RegisterAddress + i, (pData + i)); + } +} + + +void mw_acc_init(void) +{ + uint8_t WriteRegisterData; + uint8_t pReadRegisterData[4]; +#if defined MW_DEVBOARD_V2 + char tstr[16]; +#endif + + // it takes at least 20ms to power up + ENABLE_ACCELEROMETER_POWER(); + __delay_cycles(320000); + + mw_acc_init_i2c(); + + /* + * make sure part is in standby mode because some registers can only + * be changed when the part is not active. + */ + WriteRegisterData = PC1_STANDBY_MODE; + mw_acc_i2c_write(KIONIX_CTRL_REG1, &WriteRegisterData, 1); + + /* enable face-up and face-down detection */ + WriteRegisterData = TILT_FDM | TILT_FUM; + mw_acc_i2c_write(KIONIX_CTRL_REG2, &WriteRegisterData, 1); + + /* + * the interrupt from the accelerometer can be used to get periodic data + * the real time clock can also be used + */ + + /* change to output data rate to 25 Hz */ + WriteRegisterData = WUF_ODR_25HZ | TAP_ODR_400HZ; + mw_acc_i2c_write(KIONIX_CTRL_REG3, &WriteRegisterData, 1); + + /* enable interrupt and make it active high */ + WriteRegisterData = IEN | IEA; + mw_acc_i2c_write(KIONIX_INT_CTRL_REG1, &WriteRegisterData, 1); + + /* enable motion detection interrupt for all three axis */ + WriteRegisterData = XBW | YBW | ZBW; + mw_acc_i2c_write(KIONIX_INT_CTRL_REG2, &WriteRegisterData, 1); + + /* enable tap interrupt for Z-axis */ + WriteRegisterData = TFDM; + mw_acc_i2c_write(KIONIX_INT_CTRL_REG3, &WriteRegisterData, 1); + + /* set TDT_TIMER to 0.2 secs*/ + WriteRegisterData = 0x50; + mw_acc_i2c_write(KIONIX_TDT_TIMER, &WriteRegisterData, 1); + + /* set tap low and high thresholds (default: 26 and 182) */ + WriteRegisterData = 40; //78; + mw_acc_i2c_write(KIONIX_TDT_L_THRESH, &WriteRegisterData, 1); + WriteRegisterData = 128; + mw_acc_i2c_write(KIONIX_TDT_H_THRESH, &WriteRegisterData, 1); + + /* set WUF_TIMER counter */ + WriteRegisterData = 10; + mw_acc_i2c_write(KIONIX_WUF_TIMER, &WriteRegisterData, 1); + + /* this causes data to always be sent */ + // WriteRegisterData = 0x00; + WriteRegisterData = 0x01 /*0x08*/; + mw_acc_i2c_write(KIONIX_WUF_THRESH, &WriteRegisterData, 1); + + /* single byte read test */ + mw_acc_i2c_read(KIONIX_DCST_RESP, pReadRegisterData, 1); +#if defined MW_DEVBOARD_V2 + snprintf(tstr, 16, "acc DCST 0x%02x\n", pReadRegisterData[0]); + debug_uart_tx(tstr); +#endif + + /* multiple byte read test */ + mw_acc_i2c_read(KIONIX_WHO_AM_I, pReadRegisterData, 2); +#if defined MW_DEVBOARD_V2 + snprintf(tstr, 16, "acc is 0x%02x 0x%02x\n", pReadRegisterData[0], pReadRegisterData[1]); + debug_uart_tx(tstr); +#endif + + /* + * KIONIX_CTRL_REG3 and DATA_CTRL_REG can remain at their default values + * + * 50 Hz + */ +#if 0 + /* KTXF9 300 uA; KTXI9 165 uA */ + WriteRegisterData = PC1_OPERATING_MODE | TAP_ENABLE_TDTE; + + /* 180 uA; KTXI9 115 uA */ + WriteRegisterData = PC1_OPERATING_MODE | RESOLUTION_8BIT | WUF_ENABLE; + + /* 180 uA; KTXI9 8.7 uA */ + WriteRegisterData = PC1_OPERATING_MODE | TILT_ENABLE_TPE; + + /* 720 uA; KTXI9 330 uA */ + WriteRegisterData = PC1_OPERATING_MODE | RESOLUTION_12BIT | WUF_ENABLE; +#endif + + /* setup the default for the AccelerometerEnable command */ +#if 0 + OperatingModeRegister = PC1_OPERATING_MODE | RESOLUTION_12BIT | TAP_ENABLE_TDTE | TILT_ENABLE_TPE; // | WUF_ENABLE; + InterruptControl = INTERRUPT_CONTROL_DISABLE_INTERRUPT; + SidControl = SID_CONTROL_SEND_DATA; + SidAddr = KIONIX_XOUT_L; + SidLength = XYZ_DATA_LENGTH; + + AccelState = ACCEL_STATE_INIT; +#endif +} + +void mw_acc_enable(void) +{ + uint8_t sdata; + + mw_acc_init(); + + sdata = PC1_OPERATING_MODE | RESOLUTION_12BIT | TAP_ENABLE_TDTE | TILT_ENABLE_TPE | WUF_ENABLE; + //sdata = PC1_OPERATING_MODE | RESOLUTION_8BIT | TAP_ENABLE_TDTE | TILT_ENABLE_TPE; // | WUF_ENABLE; + mw_acc_i2c_write(KIONIX_CTRL_REG1, &sdata, 1); + + ACCELEROMETER_INT_ENABLE(); + mw_acc_i2c_read(KIONIX_INT_REL, &sdata, 1); + AccelState = ACCEL_STATE_ENABLED; +} + +void mw_acc_disable(void) +{ + uint8_t sdata; + + if (AccelState == ACCEL_STATE_ENABLED) { + sdata = PC1_STANDBY_MODE; + mw_acc_i2c_write(KIONIX_CTRL_REG1, &sdata, 1); + + ACCELEROMETER_INT_DISABLE(); + mw_acc_disable_i2c(); + /// DISABLE_ACCELEROMETER_POWER(); + AccelState = ACCEL_STATE_DISABLED; + } +} + +void mw_acc_read(int16_t *x, int16_t *y, int16_t *z) +{ + uint8_t rdata[6]; + + if (AccelState == ACCEL_STATE_ENABLED) { + mw_acc_i2c_read(KIONIX_XOUT_L, rdata, 6); + + *x = rdata[0] | (rdata[1] << 8); + *y = rdata[2] | (rdata[3] << 8); + *z = rdata[4] | (rdata[5] << 8); + } else { + *x = 0; + *y = 0; + *z = 0; + } +} + +void mw_acc_handle_irq(void) +{ + uint8_t sdata, srcreg1, srcreg2; +#if defined MW_DEVBOARD_V2 + char tstr[16]; +#endif + + if (AccelState != ACCEL_STATE_ENABLED) + return; + + mw_acc_i2c_read(KIONIX_INT_SRC_REG1, &srcreg1, 1); +#if defined MW_DEVBOARD_V2 + snprintf(tstr, 16, "accsrc1: 0x%02x\n", srcreg1); + debug_uart_tx(tstr); +#endif + mw_acc_i2c_read(KIONIX_INT_SRC_REG2, &srcreg2, 1); +#if defined MW_DEVBOARD_V2 + snprintf(tstr, 16, "accsrc2: 0x%02x\n", srcreg2); + debug_uart_tx(tstr); +#endif + if (srcreg1 & INT_TAP_SINGLE) { + }; + if (srcreg1 & INT_TAP_DOUBLE) { + }; + if (srcreg2 & INT_WUFS) { + int16_t x, y, z; + mw_acc_read(&x, &y, &z); + oswald_handle_accel_event((int8_t)(x / (32768 / 255)), (int8_t)(y / (32768 / 255)), (int8_t)(z / (32768 / 255))); + } + + mw_acc_i2c_read(KIONIX_INT_REL, &sdata, 1); +} + diff --git a/metawatch/mw_acc.h b/metawatch/mw_acc.h new file mode 100644 index 0000000..2acf7c7 --- /dev/null +++ b/metawatch/mw_acc.h @@ -0,0 +1,120 @@ +#ifndef _MW_ACC_H +#define _MW_ACC_H + +#define KIONIX_DEVICE_ADDRESS ( 0x0F ) + +/* KIONIX accelerometer register addresses */ +#define KIONIX_XOUT_HPF_L ( 0x00 ) +#define KIONIX_XOUT_HPF_H ( 0x01 ) +#define KIONIX_YOUT_HPF_L ( 0x02 ) +#define KIONIX_YOUT_HPF_H ( 0x03 ) +#define KIONIX_ZOUT_HPF_L ( 0x04 ) +#define KIONIX_ZOUT_HPF_H ( 0x05 ) +#define KIONIX_XOUT_L ( 0x06 ) +#define KIONIX_XOUT_H ( 0x07 ) +#define KIONIX_YOUT_L ( 0x08 ) +#define KIONIX_YOUT_H ( 0x09 ) +#define KIONIX_ZOUT_L ( 0x0A ) +#define KIONIX_ZOUT_H ( 0x0B ) +#define KIONIX_DCST_RESP ( 0x0C ) +#define KIONIX_WHO_AM_I ( 0x0F ) +#define KIONIX_TILT_POS_CUR ( 0x10 ) +#define KIONIX_TILT_POS_PRE ( 0x11 ) +#define KIONIX_INT_SRC_REG1 ( 0x15 ) +#define KIONIX_INT_SRC_REG2 ( 0x16 ) +#define KIONIX_STATUS_REG ( 0x18 ) +#define KIONIX_INT_REL ( 0x1A ) +#define KIONIX_CTRL_REG1 ( 0x1B ) +#define KIONIX_CTRL_REG2 ( 0x1C ) +#define KIONIX_CTRL_REG3 ( 0x1D ) +#define KIONIX_INT_CTRL_REG1 ( 0x1E ) +#define KIONIX_INT_CTRL_REG2 ( 0x1F ) +#define KIONIX_INT_CTRL_REG3 ( 0x20 ) +#define KIONIX_DATA_CTRL_REG ( 0x21 ) +#define KIONIX_TILT_TIMER ( 0x28 ) +#define KIONIX_WUF_TIMER ( 0x29 ) +#define KIONIX_TDT_TIMER ( 0x2B ) +#define KIONIX_TDT_H_THRESH ( 0x2C ) +#define KIONIX_TDT_L_THRESH ( 0x2D ) +#define KIONIX_TDT_TAP_TIMER ( 0x2E ) +#define KIONIX_TDT_TOTAL_TIMER ( 0x2F ) +#define KIONIX_TDT_LATENCY_TIMER ( 0x30 ) +#define KIONIX_TDT_WINDOW_TIMER ( 0x31 ) +#define KIONIX_SELF_TEST ( 0x3A ) +#define KIONIX_WUF_THRESH ( 0x5A ) +#define KIONIX_TILT_ANGLE ( 0x5C ) +#define KIONIX_HYST_SET ( 0x5F ) + +/* CTRL_REG1 */ +#define PC1_STANDBY_MODE ( 0 << 7 ) +#define PC1_OPERATING_MODE ( 1 << 7 ) +#define RESOLUTION_8BIT ( 0 << 6 ) +#define RESOLUTION_12BIT ( 1 << 6 ) +#define DRDYE_DATA_AVAILABLE ( 1 << 5 ) +#define WUF_ENABLE ( 1 << 1 ) +#define TAP_ENABLE_TDTE ( 1 << 2 ) +#define TILT_ENABLE_TPE ( 1 << 0 ) + +/* CTRL_REG2 */ +#define TILT_LEM (1 << 5 ) +#define TILT_RIM (1 << 4 ) +#define TILT_DOM (1 << 3 ) +#define TILT_UPM (1 << 2 ) +#define TILT_FDM (1 << 1 ) +#define TILT_FUM (1 << 0 ) + +/* CTRL_REG3 */ +#define SRST ( 1 << 7 ) +#define TILT_ODR_1_6HZ ( 0 << 5 ) +#define TILT_ODR_6_3HZ ( 1 << 5 ) +#define TILT_ODR_12_5HZ ( 2 << 5 ) +#define TILT_ODR_50HZ ( 3 << 5 ) +#define DCST ( 1 << 4 ) +#define TAP_ODR_50HZ ( 0 << 2 ) +#define TAP_ODR_100HZ ( 1 << 2 ) +#define TAP_ODR_200HZ ( 2 << 2 ) +#define TAP_ODR_400HZ ( 3 << 2 ) +#define WUF_ODR_25HZ ( 0 << 0 ) +#define WUF_ODR_50HZ ( 1 << 0 ) +#define WUF_ODR_100HZ ( 2 << 0 ) +#define WUF_ODR_200HZ ( 3 << 0 ) + +/* INT_CTRL_REG1 */ +#define IEN ( 1 << 5 ) +#define IEA ( 1 << 4 ) +#define IEL ( 1 << 3 ) +#define IEU ( 1 << 2 ) + +/* INT_CTRL_REG2 */ +#define XBW ( 1 << 7 ) +#define YBW ( 1 << 6 ) +#define ZBW ( 1 << 5 ) + +/* INT_CTRL_REG3 */ +#define TLEM (1 << 5) +#define TRIM (1 << 4) +#define TDOM (1 << 3) +#define TUPM (1 << 2) +#define TFDM (1 << 1) +#define TFUM (1 << 0) + +/* INT_SRC_REG2 */ +#define INT_TPS 0x01 +#define INT_WUFS 0x02 +#define INT_TAP_SINGLE 0x04 +#define INT_TAP_DOUBLE 0x08 +#define INT_DRDY 0x10 + + +void mw_acc_init_i2c(void); +void mw_acc_disable_i2c(void); +void mw_acc_i2c_read(const uint8_t RegisterAddress, uint8_t *pData, const uint8_t Length); +void mw_acc_i2c_write(uint8_t RegisterAddress, uint8_t *pData, uint8_t Length); + +void mw_acc_init(void); +void mw_acc_enable(void); +void mw_acc_disable(void); +void mw_acc_read(int16_t *x, int16_t *y, int16_t *z); +void mw_acc_handle_irq(void); + +#endif diff --git a/metawatch/mw_adc.c b/metawatch/mw_adc.c new file mode 100644 index 0000000..d5db450 --- /dev/null +++ b/metawatch/mw_adc.c @@ -0,0 +1,101 @@ +#include +#include +#include + +#include "mw_main.h" + +#define HARDWARE_CFG_INPUT_CHANNEL ( ADC12INCH_13 ) +#define BATTERY_SENSE_INPUT_CHANNEL ( ADC12INCH_15 ) +#define LIGHT_SENSE_INPUT_CHANNEL ( ADC12INCH_1 ) + +#define ENABLE_ADC() { ADC12CTL0 |= ADC12ON; ADC12CTL0 |= ADC12ENC + ADC12SC; } +#define DISABLE_ADC() { ADC12CTL0 &= ~ADC12ENC; ADC12CTL0 &= ~ADC12ON; } +#define CLEAR_START_ADDR() { ADC12CTL1 &= 0x0FFF; } + +const double CONVERSION_FACTOR_BATTERY = ((24300.0+38300.0)*2.5*1000.0)/(4095.0*24300.0); +#define BATTERY_FULL_LEVEL (4140) +#define BATTERY_CRITICAL_LEVEL (3300) +#define BATTERY_LEVEL_RANGE (BATTERY_FULL_LEVEL - BATTERY_CRITICAL_LEVEL) + +/*! conversion factor */ +const double CONVERSION_FACTOR = 2.5*10000.0/4096.0; + + +void mw_init_adc(void) +{ + REFCTL0 = REFMSTR | REFTCOFF; + + LIGHT_SENSE_INIT(); + BATTERY_SENSE_INIT(); + HARDWARE_CFG_SENSE_INIT(); + + /* allow conditional request for modosc */ + UCSCTL8 |= MODOSCREQEN; + + /* select ADC12SC bit as sample and hold source (00) + * and use pulse mode + * use modosc / 8 because frequency must be 0.45 MHz to 2.7 MHz (0.625 MHz) + */ + ADC12CTL1 = ADC12CSTARTADD_0 + ADC12SHP + ADC12SSEL_0 + ADC12DIV_7; + + /* 12 bit resolution, only use reference when doing a conversion */ + ADC12CTL2 = ADC12TCOFF + ADC12RES_2 + ADC12REFBURST; + + /* setup input channels */ + ADC12MCTL0 = HARDWARE_CFG_INPUT_CHANNEL + ADC12EOS; + ADC12MCTL1 = BATTERY_SENSE_INPUT_CHANNEL + ADC12EOS; + ADC12MCTL2 = LIGHT_SENSE_INPUT_CHANNEL + ADC12EOS; +} + +unsigned int mw_get_battery_adc_val(void) +{ + BATTERY_SENSE_ENABLE(); + + /* low_bat_en assertion to bat_sense valid is ~100 ns */ + /* Start battery sense conversion */ + CLEAR_START_ADDR(); + ADC12CTL1 |= ADC12CSTARTADD_1; + ENABLE_ADC(); + + /* WaitForAdcBusy(); */ + while (ADC12CTL1 & ADC12BUSY) + nop(); + + /* Convert the ADC count for the battery input into a voltage + * ADC12MEM1: Counts Battery Voltage in ADC counts + * Result: Battery voltage in millivolts */ + BATTERY_SENSE_DISABLE(); + + return (unsigned int)(CONVERSION_FACTOR_BATTERY * (double)ADC12MEM1); +} + +uint8_t mw_get_battery_percentage_from_val(unsigned int BattVal) +{ + if (BattVal > BATTERY_FULL_LEVEL) + BattVal = BATTERY_FULL_LEVEL; + if (BattVal < BATTERY_CRITICAL_LEVEL) + BattVal = 0; + else + BattVal -= BATTERY_CRITICAL_LEVEL; + BattVal = (BattVal > 0) ? (BattVal * 10 / (BATTERY_LEVEL_RANGE / 10)) : 0; + + return (unsigned char)BattVal; +} + +uint16_t mw_get_amblight_adc_val(void) +{ + LIGHT_SENSE_ENABLE(); + + CLEAR_START_ADDR(); + ADC12CTL1 |= ADC12CSTARTADD_2; + ENABLE_ADC(); + + /* WaitForAdcBusy(); */ + while (ADC12CTL1 & ADC12BUSY) + nop(); + + LIGHT_SENSE_DISABLE(); + + return ADC12MEM2; +} + diff --git a/metawatch/mw_adc.h b/metawatch/mw_adc.h new file mode 100644 index 0000000..8ab0511 --- /dev/null +++ b/metawatch/mw_adc.h @@ -0,0 +1,10 @@ +#ifndef _MW_ADC_H +#define _MW_ADC_H + +void mw_init_adc(void); +unsigned int mw_get_battery_adc_val(void); +uint8_t mw_get_battery_percentage_from_val(unsigned int BatVal); +uint16_t mw_get_amblight_adc_val(void); + +#endif + diff --git a/metawatch/mw_bt.c b/metawatch/mw_bt.c new file mode 100644 index 0000000..ace18e9 --- /dev/null +++ b/metawatch/mw_bt.c @@ -0,0 +1,295 @@ +#include +#include +#include +#include +#include + +#include "mw_main.h" + +#include "mw_uart.h" +#include "mw_bt.h" +#include "bt_hci.h" +#include "bt_l2cap.h" + +#include "bluetooth_init_cc256x.h" + + +static char bt_rx_buf[BT_RX_MAX_SIZE]; +static unsigned char bt_rx_buf_wpos = 0; +static unsigned char bt_rx_buf_rpos = 0; +static uint8_t mw_bt_enabled = 0; + +int mw_bt_get_rxbuf_len(void) +{ + if (bt_rx_buf_rpos > bt_rx_buf_wpos) + return (BT_RX_MAX_SIZE - bt_rx_buf_rpos) + bt_rx_buf_wpos; + else + return bt_rx_buf_wpos - bt_rx_buf_rpos; +} + +const unsigned char *mw_bt_get_rx_buf(unsigned char **rpos, unsigned char *len) +{ + *rpos = &bt_rx_buf_rpos; + + if (bt_rx_buf_rpos > bt_rx_buf_wpos) + *len = (BT_RX_MAX_SIZE - bt_rx_buf_rpos) + bt_rx_buf_wpos; + else + *len = bt_rx_buf_wpos - bt_rx_buf_rpos; + + // if we reach high water mark raise RTS to stop more data + if (*len > (BT_RX_MAX_SIZE-(BT_RX_MAX_SIZE/10))) { + debug_uart_tx("BT UART RTS\n"); + BT_IO_POUT |= BT_IO_RTS; // low == ready, high == !ready + } else { + BT_IO_POUT &= ~BT_IO_RTS; // low == ready, high == !ready + } + + return (unsigned char *)bt_rx_buf; +} + +#pragma vector=USCI_A1_VECTOR +__interrupt void UCA1_ISR (void) +{ + switch (UCA1IV) { + case 2: // RXIFG + /* clear IRQ flag */ + //UCA1IFG &= ~UCRXIFG; + /* wake up to handle the received char */ + if (UCA1STAT & UCRXERR) { + debug_uart_tx("BT UART RXERR: "); + if (UCA1STAT & UCOE) + debug_uart_tx("overrun "); + if (UCA1STAT & UCPE) + debug_uart_tx("parity err "); + if (UCA1STAT & UCFE) + debug_uart_tx("frm-err "); + debug_uart_tx("\n"); + } + bt_rx_buf[bt_rx_buf_wpos++] = UCA1RXBUF; + bt_rx_buf_wpos %= BT_RX_MAX_SIZE; + // LPM3_EXIT; + LPM3_EXIT_ISR(); + _event_src |= BT_UART_RCV_EVENT; + break; + case 4: // TXIFG + debug_uart_tx("BT UART TX IRQ - huh?\n"); + break; + default: + break; + }; +} + +void mw_init_bt_uart(const bt_uart_baud_t baud) +{ + UCA1CTL1 = UCSWRST; + + UCA1CTL1 |= UCSSEL__SMCLK; + + switch (baud) { + case BT_UART_BD115200: + default: + UCA1BR0 = 138; + UCA1MCTL = UCBRS_7 + UCBRF_0; + break; + }; + UCA1STAT = 0; + // UCA1CTL0 = UCMODE_0; // UART mode + // UCA1CTL0 &= ~UC7BIT; // 8bit char + //UCA1CTL0 |= UCRXEIE; + + UCA1CTL1 &= ~UCSWRST; + + /* clear interrup flags */ + UCA1IFG = 0; + UCA1IE = UCRXIE; +} + +#if 0 // Does never finish, presumably trigger does not trigger, unknown :( +void mw_bt_uart_tx(const void *buf, const unsigned int len) +{ + UCA1IE &= UCTXIE; + + DMACTL0 = DMA0TSEL_21; + + DMA0DA = (unsigned int) &UCA1TXBUF; + DMA0SA = (uint32_t) buf; + DMA0SZ = len; + + //DMA0CTL = 0x03F0; + DMA0CTL = DMADT_1 | DMASRCINCR_3 | DMASBDB | DMALEVEL | DMAIE; + UCA1IFG &= ~UCTXIFG; + DMA0CTL |= DMAEN; + + while ((DMA0CTL & DMAIFG) == 0 && (DMA0CTL & DMAABORT) == 0) + nop(); +} +#else +int mw_bt_uart_tx(const void *buf, const unsigned int len) +{ + unsigned int pos, i; + // char txstr[8]; + + pos = 0; + // debug_uart_tx("BT tx: "); + while (pos < len) { + // watch for CTS to be low + i = 0; + while ((BT_IO_PIN & BT_IO_CTS) && (i < 1000)) { + __delay_cycles(16000); + i++; + if (i >= 1000) + return -1; + // nop(); + } + + // do not start a transfer if UART is busy, e.g. rx-ing + while (UCA1STAT & UCBUSY) + nop(); + + UCA1TXBUF = *(unsigned char *) (buf+pos); + // debug_uart_tx_char(*(unsigned char *) (buf+pos)); + // snprintf(txstr, 8, "0x%02x ", *(unsigned char *) (buf+pos)); + // debug_uart_tx(txstr); + pos++; + while ((UCA1IFG & UCTXIFG) == 0) + nop(); + } + while (UCA1STAT & UCBUSY) + nop(); + + return len; +} +#endif + +static int load_cc256x_init_script(void) +{ + uint32_t pos; + unsigned char *tptr; + int tlen; + + pos = 0; + while (pos < cc256x_init_script_size) { + if (_event_src != 0) + handle_event(); + tptr = (unsigned char *)(cc256x_init_script + pos); + tlen = mw_bt_uart_tx(tptr, 4 + tptr[3]); + if (tlen < 0) + return -1; + pos += tlen /*4 + tptr[3]*/; + // each init script part is one HCI command so wait for reply + if (_event_src != 0) + handle_event(); + } + return 0; +} + +void mw_enable_bt(void) +{ + int i; + + /* make sure it resets */ + BT_SHUTDOWN(); + __delay_cycles(16000); + + /* enable 32kHz ACLK output to BT module */ + P11DIR |= BIT0; + P11SEL |= BIT0; + + // wait for clock to stabilize + __delay_cycles(16000); + + // disable the IRQ on CTS, later used to get a wakeup IRQ from eHCILL + // will be enabled when going to sleep + P1IE &= ~BT_IO_CTS; + P1IES &= ~BT_IO_CTS; + + BT_IO_PDIR &= ~(BT_IO_CTS | BT_IO_PIN1 | BT_IO_PIN2 | BT_IO_CLKREQ); + BT_IO_PDIR |= BT_IO_RTS; + + BT_IO_POUT &= ~(BT_IO_CTS | BT_IO_PIN1 | BT_IO_PIN2 | BT_IO_CLKREQ); + BT_IO_POUT &= ~BT_IO_RTS; // low == ready, high == !ready + + BT_IO_REN |= BT_IO_CTS; // enable pull-down on CTS, POUT-CTS is 0 already + + /* setup UART pins */ + BT_UART_PSEL |= BT_UART_TX_PIN | BT_UART_RX_PIN; + // P5OUT |= BT_UART_TX_PIN | BT_UART_RX_PIN; + // P5REN |= BT_UART_TX_PIN | BT_UART_RX_PIN; + + mw_init_bt_uart(BT_UART_BD115200); + + bt_rx_buf_wpos = 0; + bt_rx_buf_rpos = 0; + + /* release BT reset pin */ + BT_ENABLE(); + + for (i=0; i<1000; i++) { + __delay_cycles(16000); + if ((BT_IO_PIN & BT_IO_CTS) == 0) // when CTS goes low module is ready + break; + } + if (i>=1000) { + debug_uart_tx("Timeout waiting for CC256x to lower CTS\n"); + mw_bt_enabled = 0; + } else { + debug_uart_tx("CC256x CTS low - uploading init\n"); + + // the init script consists of HCI cmds so HCI must be setup before + bt_hci_init(); + + // give it some more time before anyone sends data + for (i=0; i<10; i++) { + __delay_cycles(16000); + } + if (load_cc256x_init_script() < 0) { + debug_uart_tx("init upload failed!\n"); + return; + } + + __delay_cycles(32000); + + debug_uart_tx("init uploaded\n"); + + init_l2cap(); + + if (_event_src != 0) + handle_event(); + + mw_bt_enabled = 1; + } +} + +void mw_disable_bt(void) +{ + mw_bt_enabled = 0; + + // disable the IRQ on CTS + P1IE &= ~BT_IO_CTS; + P1IES &= ~BT_IO_CTS; + // BT_IO_REN &= ~BT_IO_CTS; // disable pull-down on CTS + P1IFG &= ~BT_IO_CTS; + + /* disable UART RX interrupt */ + UCA1IE &= ~UCRXIE; + + /* disable UART pins */ + BT_UART_PSEL &= ~(BT_UART_TX_PIN | BT_UART_RX_PIN); + + /* set BT reset pin */ + BT_SHUTDOWN(); + + /* disable 32kHz ACLK output to BT module */ + P11DIR &= ~BIT0; + P11SEL &= ~BIT0; + + /* make all I/O Pins inputs so we do not drive against a "deaf" module */ + BT_IO_PDIR &= ~(BT_IO_RTS | BT_IO_CTS | BT_IO_PIN1 | BT_IO_PIN2 | BT_IO_CLKREQ); + BT_IO_POUT &= ~(BT_IO_RTS | BT_IO_CTS | BT_IO_PIN1 | BT_IO_PIN2 | BT_IO_CLKREQ); +} + +uint8_t mw_bt_is_enabled(void) +{ + return mw_bt_enabled; +} + diff --git a/metawatch/mw_bt.h b/metawatch/mw_bt.h new file mode 100644 index 0000000..913a9ef --- /dev/null +++ b/metawatch/mw_bt.h @@ -0,0 +1,67 @@ +#ifndef _MW_BT_H +#define _MW_BT_H + +#define BT_RST_PIN BIT3 +#define BT_RST_PSEL P10SEL +#define BT_RST_POUT P10OUT +#define BT_RST_PDIR P10DIR + +#define BT_IO_PSEL P1SEL +#define BT_IO_RTS BIT0 +#define BT_IO_CTS BIT3 +#define BT_IO_POUT P1OUT +#define BT_IO_PIN P1IN +#define BT_IO_PDIR P1DIR +#define BT_IO_REN P1REN + +#define BT_IO_PIN1 BIT5 +#define BT_IO_PIN2 BIT6 +#define BT_IO_CLKREQ BIT4 + +#define BT_SHUTDOWN() { BT_RST_POUT &= ~BT_RST_PIN; } +#define BT_ENABLE() { BT_RST_POUT |= BT_RST_PIN; } + +#define BT_UART_PSEL P5SEL +#define BT_UART_PDIR P5DIR +#define BT_UART_REN P5REN +#define BT_UART_POUT P5OUT +#define BT_UART_TX_PIN BIT6 +#define BT_UART_RX_PIN BIT7 + +#define CONFIG_BT_PINS() { \ + BT_RST_PSEL &= ~BT_RST_PIN; \ + BT_RST_PDIR |= BT_RST_PIN; \ + BT_SHUTDOWN(); \ + BT_IO_PSEL &= ~(BT_IO_RTS | BT_IO_CTS | BT_IO_PIN1 | BT_IO_PIN2 | BT_IO_CLKREQ); \ + BT_IO_PDIR &= ~(BT_IO_RTS | BT_IO_CTS | BT_IO_PIN1 | BT_IO_PIN2 | BT_IO_CLKREQ); \ + BT_IO_POUT &= ~(BT_IO_RTS | BT_IO_CTS | BT_IO_PIN1 | BT_IO_PIN2 | BT_IO_CLKREQ); \ + BT_UART_PSEL &= ~(BT_UART_TX_PIN | BT_UART_RX_PIN); \ + BT_UART_PDIR &= ~(BT_UART_TX_PIN | BT_UART_RX_PIN); \ + BT_UART_REN |= BT_UART_TX_PIN | BT_UART_RX_PIN; \ + BT_UART_POUT |= BT_UART_TX_PIN | BT_UART_RX_PIN; \ +} + +void mw_enable_bt(void); +void mw_disable_bt(void); + +typedef enum { + BT_UART_BD19200 = 0, + BT_UART_BD38400, + BT_UART_BD57600, + BT_UART_BD115200, + BT_UART_BD234000, +} bt_uart_baud_t; + +#define BT_MW_DEVICE_CLASS 0x842704 /* Limited discovery, Rendering, Information, Wearable, Wrist Watch */ +#define BT_RX_MAX_SIZE 255 + +void mw_init_bt_uart(const bt_uart_baud_t baud); + +int mw_bt_uart_tx(const void *buf, const unsigned int len); +// extern char BT_UART_RX_CHAR; + +int mw_bt_get_rxbuf_len(void); +const unsigned char *mw_bt_get_rx_buf(unsigned char **rpos, unsigned char *len); +unsigned char bt_feed_packet_data(unsigned char pdata); +uint8_t mw_bt_is_enabled(void); +#endif diff --git a/metawatch/mw_lcd.c b/metawatch/mw_lcd.c new file mode 100644 index 0000000..2082a6d --- /dev/null +++ b/metawatch/mw_lcd.c @@ -0,0 +1,293 @@ +#include +#include + +#include "mw_main.h" + +#include "mw_lcd.h" +#include "mw_uart.h" + +// SMCLK = 16MHz -> divide by 16 to get 1 MHz SPI clock, +// 1MHz maximum according to LCD spec +//#define SPI_PRESCALE_L 0x10 +// currently we only run @1MHz +#define SPI_PRESCALE_L 0x10 +#define SPI_PRESCALE_H 0x00 + +#define LCD_STATIC_CMD 0x00 +#define LCD_WRITE_CMD 0x01 +#define LCD_CLEAR_CMD 0x04 + +static const unsigned char LCD_CLEAR_COMMAND[] = {LCD_CLEAR_CMD, 0x00}; +#define LCD_CLEAR_CMD_SIZE 0x02 +static const unsigned char LCD_STATIC_COMMAND[] = {LCD_STATIC_CMD, 0x00}; +#define LCD_STATIC_CMD_SIZE 0x02 + + +/* the LCD frame buffer, 96 lines */ +tLcdLine lcd_buf[96]; + + +#define LCD_DMA +/* errata - DMA variables cannot be function scope */ +#ifdef LCD_DMA +static unsigned char LcdDmaBusy = 0; +#endif + + +void memfill(void *target, unsigned char val, unsigned int count) +{ + while (count--) { + *(unsigned char *)(target+count) = val; + } +} + +void mw_lcd_init(void) +{ + int i; + + /* basic I/O setup */ + ENABLE_LCD_POWER(); + CONFIG_LCD_PINS(); + + // DISABLE_LCD_ENABLE(); + ENABLE_LCD_ENABLE(); + + /* Put state machine in reset while it is configured */ + LCD_SPI_UCBxCTL1 |= UCSWRST; + + /* + * 3-pin, 8-bit SPI master, Clock polarity low + * Clock phase set, least sig bit first + * SMCLK is the clock source + * set the clock prescaler + */ + LCD_SPI_UCBxCTL0 |= UCMST+ UCCKPH + UCSYNC; + + LCD_SPI_UCBxCTL1 |= UCSSEL_2; + LCD_SPI_UCBxBR0 = SPI_PRESCALE_L; + LCD_SPI_UCBxBR1 = SPI_PRESCALE_H; + + /* remove reset */ + LCD_SPI_UCBxCTL1 &= ~UCSWRST; + + /* pre-fill the frame-buffer */ + for (i=0; i<96; i++) { + lcd_buf[i].Row = i+1; + memfill(lcd_buf[i].Data, 0xff, 12); + // lcd_buf[i].Data[0] = i; + lcd_buf[i].Dummy = 0x00; + }; +} + +static void mw_lcd_write_line(const void *pData, unsigned char Size) +{ +#ifndef xLCD_DMA + unsigned char Index; +#endif + + LCD_CS_ASSERT(); + +#ifdef xLCD_DMA + LcdDmaBusy = 1; + + /* USCIB0 TXIFG is the DMA trigger + * DMACTL1 controls dma2 and [dma3] + */ + DMACTL1 = DMA2TSEL_19; + + DMA2SA = (unsigned int) pData; + DMA2DA = (unsigned int) &LCD_SPI_UCBxTXBUF; + + DMA2SZ = (unsigned int)Size; + + /* + * single transfer, increment source address, source byte and dest byte, + * level sensitive, enable interrupt, clear interrupt flag + */ + DMA2CTL = DMADT_0 + DMASRCINCR_3 + DMASBDB + DMALEVEL + DMAIE; + + /* start the transfer */ + DMA2CTL |= DMAEN; + + while (LcdDmaBusy) + nop(); +#else +// debug_uart_tx("+wl1"); + for ( Index = 0; Index < Size; Index++ ) { + LCD_SPI_UCBxTXBUF = ((unsigned char *)pData)[Index]; +// debug_uart_tx("."); + while (!(LCD_SPI_UCBxIFG & UCTXIFG)) { +// debug_uart_tx("+"); + nop(); + } + } +// debug_uart_tx("\n+wl2\n"); +#endif + + /* wait for shift to complete ( ~3 us ) */ + while (LCD_SPI_UCBxSTAT & 0x01) { + nop(); +// debug_uart_tx("."); + }; + + /* now the chip select can be deasserted */ + LCD_CS_DEASSERT(); +// debug_uart_tx("\n-wl\n"); +} + + +void mw_lcd_static_mode(void) +{ + mw_lcd_write_line(LCD_STATIC_COMMAND, LCD_STATIC_CMD_SIZE); +} + +void mw_lcd_clear(void) +{ + unsigned char i; + + mw_lcd_write_line(LCD_CLEAR_COMMAND, LCD_CLEAR_CMD_SIZE); + + /* pre-fill the frame-buffer */ + for (i=0; i<96; i++) { + memfill(lcd_buf[i].Data, 0xff, 12); + }; +} + +void mw_lcd_clear_fb(void) +{ + unsigned char i; + + /* pre-fill the frame-buffer */ + for (i=0; i<96; i++) { +#if LCD_BLACK == 0 + memfill(lcd_buf[i].Data, 0xff, 12); +#else + memfill(lcd_buf[i].Data, 0x00, 12); +#endif + }; +} + +#pragma vector=DMA_VECTOR +__interrupt void DMA_ISR (void) +{ + switch (DMAIV) { + case 0: + DMA0CTL &= ~DMAEN; // disable + DMA0CTL &= ~DMAIFG; // clear IRQ flag + debug_uart_tx("DMA0 IRQ\n"); + break; + case 2: + debug_uart_tx("DMA1 IRQ\n"); + break; + case 4: + debug_uart_tx("DMA2b IRQ\n"); + break; + case 6: + DMA2CTL &= ~DMAEN; // disable + DMA2CTL &= ~DMAIFG; // clear IRQ flag +#ifdef LCD_DMA + LcdDmaBusy = 0; +#endif + //LED7_TOGGLE(); + // debug_uart_tx("DMA2 IRQ\n"); + break; + } +} + +/* writes the complete internal framebuffer to the LCD */ +void mw_lcd_update_screen(void) +{ +//#ifndef LCD_DMA + unsigned int i,j; +//#endif + +// debug_uart_tx("uscr1\n"); + + // invert the buffer + if (0) { + for (i=0; i<96; i++) { + for ( j = 0; j < 12; j++ ) { + lcd_buf[i].Data[j] = ~lcd_buf[i].Data[j]; + } + } + } + + LCD_CS_ASSERT(); + + /* send WRITE command */ + LCD_SPI_UCBxTXBUF = LCD_WRITE_CMD; + while (!(LCD_SPI_UCBxIFG & UCTXIFG)) + nop(); + +// debug_uart_tx("uscr2\n"); + +#ifdef LCD_DMA + LcdDmaBusy = 1; + + /* USCIB0 TXIFG is the DMA trigger + * DMACTL1 controls dma2 and [dma3] + */ + DMACTL1 = DMA2TSEL_19; + + DMA2SA = (unsigned int) lcd_buf; + DMA2DA = (unsigned int) &LCD_SPI_UCBxTXBUF; + + DMA2SZ = 96 * sizeof(tLcdLine); + + /* + * single transfer, increment source address, source byte and dest byte, + * level sensitive, enable interrupt, clear interrupt flag + */ + DMA2CTL = DMADT_0 + DMASRCINCR_3 + DMASBDB + DMALEVEL + DMAIE; + + /* start the transfer */ + DMA2CTL |= DMAEN; + +// debug_uart_tx("uscr3\n"); + + // LED7_OFF(); + while (LcdDmaBusy) + nop(); + +// debug_uart_tx("uscr4\n"); +#else + for (i=0; i<96; i++) { + for ( j = 0; j < sizeof(tLcdLine); j++ ) { + LCD_SPI_UCBxTXBUF = ((unsigned char *)(&lcd_buf[i]))[j]; + while (!(LCD_SPI_UCBxIFG & UCTXIFG)) + nop(); + } + } +#endif + + /* send final trailer byte */ + LCD_SPI_UCBxTXBUF = 0x00; + while (!(LCD_SPI_UCBxIFG & UCTXIFG)) + nop(); + +// debug_uart_tx("uscr5\n"); + /* wait for shift to complete ( ~3 us ) */ + while (LCD_SPI_UCBxSTAT & 0x01) + nop(); + +// debug_uart_tx("uscr6\n"); + LCD_CS_DEASSERT(); + + mw_lcd_static_mode(); +} + +void mw_lcd_draw_pixel(const uint8_t x, const uint8_t y, const uint8_t color) +{ + switch (color) { + case 1: + lcd_buf[y].Data[x/8] |= 1 << (x % 8); + break; + case 0: + lcd_buf[y].Data[x/8] &= ~(1 << (x % 8)); + break; + case 2: + lcd_buf[y].Data[x/8] ^= 1 << (x % 8); + break; + } +} + diff --git a/metawatch/mw_lcd.h b/metawatch/mw_lcd.h new file mode 100644 index 0000000..0113c81 --- /dev/null +++ b/metawatch/mw_lcd.h @@ -0,0 +1,31 @@ +#ifndef _MW_LCD_H +#define _MW_LCD_H + +typedef struct +{ + unsigned char Row; /* row number for LCD command */ + unsigned char Data[12]; /* 12*8 = 96bit */ + unsigned char Dummy; /* 0x00 dummy byte to latch data into LCD */ +} tLcdLine; + +extern tLcdLine lcd_buf[]; + +void memfill(void *target, unsigned char val, unsigned int count); + +void mw_lcd_init(void); +void mw_lcd_clear(void); +void mw_lcd_clear_fb(void); +void mw_lcd_update_screen(void); + +#if 0 +#define LCD_BLACK 0 +#define LCD_WHITE 1 +#else +#define LCD_BLACK 1 +#define LCD_WHITE 0 +#endif +#define LCD_XOR 2 +void mw_lcd_draw_pixel(const uint8_t x, const uint8_t y, const uint8_t color); + +#endif + diff --git a/metawatch/mw_main.c b/metawatch/mw_main.c new file mode 100644 index 0000000..07f8ba5 --- /dev/null +++ b/metawatch/mw_main.c @@ -0,0 +1,738 @@ +#include +#include +#include +#include + +#include "F5xx_F6xx_Core_Lib/HAL_PMM.h" +#include "F5xx_F6xx_Core_Lib/HAL_UCS.h" + +#include "mw_main.h" + +#include "mw_uart.h" +#include "mw_lcd.h" +#include "mw_bt.h" +#include "mw_adc.h" +#include "mw_bt.h" +#include "mw_acc.h" +#include "bt_hci.h" +#include "bt_l2cap.h" + +#include "oswald_main.h" +#include "oswald_hal.h" + +#include "bluetooth_init_cc256x.h" + +uint16_t _event_src = 0; + +#define HARDWARE_REVISION_ADDRESS (0x1a07) + +uint8_t GetMsp430HardwareRevision(void) +{ + uint8_t *pDeviceType = (uint8_t *)(uint8_t *)HARDWARE_REVISION_ADDRESS; + + return pDeviceType[0]+'1'; +} + +uint8_t DetermineErrata(void) +{ + uint8_t Revision = GetMsp430HardwareRevision(); + + switch (Revision) { + case 'F': + case 'G': + case 'H': + return 0; + break; + default: + return 1; + break; + } +} + +static void set16mhz(void) +{ + UCSCTL0 = 0x00; // Set lowest possible DCOx, MODx + UCSCTL1 = DCORSEL_5; // Select suitable range + UCSCTL2 = 488 + FLLD_1; // Set DCO Multiplier + UCSCTL4 = SELA__XT1CLK | SELS__DCOCLKDIV | SELM__DCOCLKDIV ; + + // Worst-case settling time for the DCO when the DCO range bits have been + // changed is n x 32 x 32 x f_FLL_reference. See UCS chapter in 5xx UG + // for optimization. + // 32 x 32 x / f_FLL_reference (32,768 Hz) = .03125 = t_DCO_settle + // t_DCO_settle / (1 / 18 MHz) = 562500 = counts_DCO_settle + + // __delay_cycles(562500); + int i; + for (i=0;i<10;i++){ + __delay_cycles(56250); + } +} + +static unsigned char PMM15Check(void) +{ + // First check if SVSL/SVML is configured for fast wake-up + if ((!(SVSMLCTL & SVSLE)) || ((SVSMLCTL & SVSLE) && (SVSMLCTL & SVSLFP)) || + (!(SVSMLCTL & SVMLE)) || ((SVSMLCTL & SVMLE) && (SVSMLCTL & SVMLFP))) + { + // Next Check SVSH/SVMH settings to see if settings are affected by PMM15 + if ((SVSMHCTL & SVSHE) && (!(SVSMHCTL & SVSHFP))) + { + if ( (!(SVSMHCTL & SVSHMD)) || + ((SVSMHCTL & SVSHMD) && (SVSMHCTL & SVSMHACE)) ) + return 1; // SVSH affected configurations + } + + if ((SVSMHCTL & SVMHE) && (!(SVSMHCTL & SVMHFP)) && (SVSMHCTL & SVSMHACE)) + return 1; // SVMH affected configurations + } + + return 0; // SVS/M settings not affected by PMM15 +} + +#define configCPU_CLOCK_HZ ((unsigned long) 16777216) /* 512*32768 */ +#define configTICK_RATE_HZ ((unsigned int)1024) +#define ACLK_MULTIPLIER ((unsigned int)512) + +static void setup_clocks(void) +{ + unsigned long i; + + SetVCore(PMMCOREV_2); + + /* use external oscillator */ + P7SEL |= BIT0 + BIT1; + +#if 1 + if ((UCSCTL6 & XT1DRIVE_3) != XT1DRIVE_3) { + UCSCTL6_L |= XT1DRIVE1_L + XT1DRIVE0_L; + } + i = 50000; + while ((SFRIFG1 & OFIFG) && i--) { + UCSCTL7 &= ~(DCOFFG + XT1LFOFFG + XT1HFOFFG + XT2OFFG); + SFRIFG1 &= ~OFIFG; + } + UCSCTL6 = (UCSCTL6 & ~(XT1DRIVE_3)) |(XT1DRIVE_0); + + set16mhz(); + + UCSCTL8 |= SMCLKREQEN; +#else + // Startup LFXT1 32 kHz crystal + while (LFXT_Start_Timeout(XT1DRIVE_0, 50000) == UCS_STATUS_ERROR) + nop(); + + // select the sources for the FLL reference and ACLK + SELECT_ACLK(SELA__XT1CLK); + SELECT_FLLREF(SELREF__XT1CLK); + + // 512 * 32768 = 16777216 / 1024 + Init_FLL_Settle(configCPU_CLOCK_HZ/configTICK_RATE_HZ, ACLK_MULTIPLIER); + + // Disable FLL loop control +// __bis_SR_register(SCG0); +#endif + // setup for quick wake up from interrupt and + // minimal power consumption in sleep mode + DISABLE_SVSL(); // SVS Low side is turned off + DISABLE_SVSL_RESET(); + + DISABLE_SVML(); // Monitor low side is turned off + DISABLE_SVML_INTERRUPT(); + + DISABLE_SVMH(); // Monitor high side is turned off + DISABLE_SVMH_INTERRUPT(); + + ENABLE_SVSH(); // SVS High side is turned on + ENABLE_SVSH_RESET(); // Enable POR on SVS Event + + SVSH_ENABLED_IN_LPM_FULL_PERF(); // SVS high side Full perf mode, + // stays on in LPM3,enhanced protect + SVSL_ENABLED_IN_LPM_FAST_WAKE(); + + // Wait until high side, low side settled + while ((PMMIFG & SVSMLDLYIFG) == 0 && (PMMIFG & SVSMHDLYIFG) == 0) + nop(); + CLEAR_PMM_IFGS(); + + while (PMM15Check()); + + // Errata PMM17 + if (DetermineErrata()) { + *(unsigned int*)(0x0110) = 0x9602; + *(unsigned int*)(0x0112) |= 0x0800; + } + + /* enable oscillator fault NMI IRQ */ +// SFRIE1 = OFIE; +} + +#if 0 +#pragma vector=PWR_PORT_VECTOR +__interrupt void PWR_ISR (void) +{ + /* clear all possible sources */ + PWR_PORT_IFG &= ~(BAT_CHARGE_STAT1 | BAT_CHARGE_STAT2 | BAT_CHARGE_PWR_BIT); + _event_src |= POWER_SRC_EVENT; + LPM3_EXIT(); + nop(); +} +#endif + +static void mw_init_vibrate_pwm(void) +{ +#ifdef MW_DIGITAL_V2 + // Start with P7.3 as an output + P7OUT &= ~BIT3; // Low when a digital output + P7SEL &= ~BIT3; // P7 option select = false + P7DIR |= BIT3; // P7 outputs + + TA1CTL = 0; + + // No expansion divide + TA1EX0 = 0; + + // do a PWM with 64 total steps. This gives a count up of 32 and + // a count down of 32 + TA1CCR0 = 31; + + // Compare channel 2 is used as output + TA1CCTL2 = OUTMOD_6; // PWM output mode: 6 - toggle/set + TA1CCR2 = 10; // 10 is a 2/3 duty cycle +#endif +} + + +static void setup_pins(void) +{ + CONFIG_SRAM_PINS(); + CONFIGURE_BUTTON_PINS(); +#ifdef MW_DEVBOARD_V2 + CONFIG_LED_PINS(); // debug LEDs on devboard +#endif + DISABLE_LCD_LED(); // frontlight + CONFIG_DEBUG_PINS(); + CONFIG_ACCELEROMETER_PINS(); + //DISABLE_ACCELEROMETER_POWER(); // starts from config 5 and later + ENABLE_ACCELEROMETER_POWER(); // starts from config 5 and later + + HARDWARE_CFG_SENSE_INIT(); + + APPLE_CONFIG(); + APPLE_POWER_DISABLE(); + + CONFIG_BT_PINS(); +// BT_CLK_REQ_CONFIG_AS_OUTPUT_LOW(); +// BT_IO1_CONFIG_AS_OUTPUT_LOW(); +// BT_IO2_CONFIG_AS_OUTPUT_LOW(); + BT_CLK_REQ_CONFIG_AS_INPUT(); + BT_IO1_CONFIG_AS_INPUT(); + BT_IO2_CONFIG_AS_INPUT(); + mw_disable_bt(); + + LIGHT_SENSE_INIT(); + LIGHT_SENSOR_SHUTDOWN(); + + BATTERY_SENSE_INIT(); + BATTERY_SENSE_DISABLE(); + BAT_CHARGE_DIR &= ~(BAT_CHARGE_STAT1 | BAT_CHARGE_STAT2 | BAT_CHARGE_PWR_BIT); + BAT_CHARGE_OUT |= BAT_CHARGE_PWR_BIT | BAT_CHARGE_STAT1 | BAT_CHARGE_STAT2; // pull-up + BAT_CHARGE_REN |= BAT_CHARGE_PWR_BIT; // enable resistors + // BAT_CHARGE_IE |= BAT_CHARGE_PWR_BIT; + BAT_CHARGE_OUT |= BAT_CHARGE_ENABLE_PIN; // !CE, negative logic + BAT_CHARGE_DIR |= BAT_CHARGE_ENABLE_PIN; + + /* disable reset function, enable NMI, do not enable NMI IRQ */ + /* to avoid accidential reset on charger clip connect */ +#ifndef MW_DEVBOARD_V2 // but only on real watch + SFRRPCR &= ~SYSRSTRE; + SFRRPCR |= SYSNMI; +#endif + /* allow debug UART */ +/* + P10SEL &= ~(BIT6 | BIT7); + P10DIR |= BIT6 | BIT7; + P10OUT &= ~(BIT6 | BIT7); +*/ +#ifndef MW_DEVBOARD_V2 + ENABLE_MUX_OUTPUT_CONTROL(); +#ifdef MW_DEBUG_UART + MUX_OUTPUT_SELECTS_SERIAL(); +#else + MUX_OUTPUT_OFF(); +#endif +#endif +} + +#pragma vector=WDT_VECTOR +__interrupt void WDT_ISR (void) +{ + /* eventually we will do something here, not for now */ + _event_src |= WATCHDOG_EVENT; + nop(); +} + +static void setup_wdt(void) +{ +#if 1 + WDTCTL = WDTPW + WDTHOLD; // disable watchdog +#else + WDTCTL = WDT_ADLY_1000; // 1 second timeout + SFRIE1 |= WDTIE; // Enable WDT interrupt +#endif +} + +#if 1 +#pragma vector=UNMI_VECTOR +__interrupt void NMI_ISR (void) +{ +#if defined MW_DEVBOARD_V2 + LED7_TOGGLE(); + debug_uart_tx_char('n'); +#endif + while ((SFRIFG1 & OFIFG)) { + UCSCTL7 &= ~(DCOFFG + XT1LFOFFG + XT1HFOFFG + XT2OFFG); + SFRIFG1 &= ~OFIFG; + } +} +#endif + +#pragma vector=RTC_VECTOR +__interrupt void RTC_ISR (void) +{ + switch (RTCIV) { + case RTCIV_NONE: + debug_uart_tx("RTC none IRQ\n"); + break; + case RTCIV_RTCRDYIFG: + case RTCIV_RTCTEVIFG: + case RTCIV_RTCAIFG: + case RTCIV_RT0PSIFG: + debug_uart_tx("RTC misc IRQ\n"); + break; + case RTCIV_RT1PSIFG: + RTCPS1CTL &= ~RT1PSIFG; + _event_src |= RTC_1HZ_EVENT; + // LPM3_EXIT; + LPM3_EXIT_ISR(); +#if defined MW_DEVBOARD_V2 + LED7_TOGGLE(); +#endif + break; + default: + break; + }; +} + +void setup_rtc(void) +{ + // stop it + RTCCTL01 = RTCHOLD; + + // calibration + RTCCTL2 = 0x00 & 0x3f; + RTCCTL2 |= RTCCALS; + + // Set the counter for RTC mode + RTCCTL01 |= RTCMODE; + + // set 128 Hz rate for prescale 0 interrupt + RTCPS0CTL |= RT0IP_7; + + // enable 1 pulse per second interrupt using prescale 1 + RTCPS1CTL |= RT1IP_6 | RT1PSIE; + + // 1 Hz calibration output + RTCCTL23 |= RTCCALF_3; + + // setting the peripheral selection bit makes the other I/O control a don't care + // P2.4 = 1 Hz RTC calibration output + // Direction needs to be set as output + RTC_1HZ_PORT_SEL |= RTC_1HZ_BIT; + RTC_1HZ_PORT_DIR |= RTC_1HZ_BIT; + + RTCYEAR = (unsigned int) 2013; + RTCMON = (unsigned int) 1; + RTCDAY = (unsigned int) 1; + RTCDOW = (unsigned int) 2; + RTCHOUR = (unsigned int) 01; + RTCMIN = (unsigned int) 0; + RTCSEC = (unsigned int) 0; + + // Enable the RTC + RTCCTL01 &= ~RTCHOLD; + nop(); +} + +#if defined MW_DEVBOARD_V2 || MW_DEBUG_UART +static void dbg_out_rtc(void) +{ + char clk_str[16]; + snprintf(clk_str, 16, "%02d:%02d.%02d %d\n", RTCHOUR, RTCMIN, RTCSEC, RTCDOW); + debug_uart_tx(clk_str); +} +#endif + +static void handle_button_event(void) +{ + unsigned char _button_state = 0; +#if 0 + char clk_str[16]; + snprintf(clk_str, 16, "0x%02x\n", _button_state); + debug_uart_tx(clk_str); +#endif + while (_button_state != (BUTTON_PORT_IN & ALL_BUTTONS)) { + __delay_cycles(562500); + _button_state = (BUTTON_PORT_IN & ALL_BUTTONS); + __delay_cycles(562500); + } + // BUTTON_PORT_IE |= INT_EDGE_SEL_BUTTONS; + + if (_button_state & SW_A) { + debug_uart_tx("switch A\n"); + oswald_handle_button_press(BUTTON_A); + } + if (_button_state & SW_B) { + debug_uart_tx("switch B\n"); + oswald_handle_button_press(BUTTON_B); + } + if (_button_state & SW_C) { + debug_uart_tx("switch C\n"); + oswald_handle_button_press(BUTTON_C); + } + if (_button_state & SW_D) { + debug_uart_tx("switch D\n"); + oswald_handle_button_press(BUTTON_D); + } + if (_button_state & SW_E) { + debug_uart_tx("switch E\n"); + oswald_handle_button_press(BUTTON_E); + } + if (_button_state & SW_F) { + debug_uart_tx("switch F\n"); + oswald_handle_button_press(BUTTON_F); + } +} + +void check_pwr_state(void) +{ + if (BAT_CHARGE_IN & BAT_CHARGE_PWR_BIT) { + BAT_CHARGE_OUT |= BAT_CHARGE_ENABLE_PIN; + BAT_CHARGE_REN &= ~(BAT_CHARGE_STAT1 | BAT_CHARGE_STAT2); // disable pull-up + } else { + BAT_CHARGE_OUT &= ~BAT_CHARGE_ENABLE_PIN; + BAT_CHARGE_REN |= BAT_CHARGE_STAT1 | BAT_CHARGE_STAT2; // enable pull-up + } +} + +static void handle_bt_uart_rx_event(void) +{ + const unsigned char *rx; + unsigned char len, *rp, p; + + rx = mw_bt_get_rx_buf(&rp, &len); + + p = 0; + while (p < len) { + p += bt_feed_packet_data(rx[(*rp+p)%BT_RX_MAX_SIZE]); + } + // all consumed + *rp = (*rp + len) % BT_RX_MAX_SIZE; +} + +#if defined MW_DEVBOARD_V2 || MW_DEBUG_UART +static void handle_uart_rx_event(void) +{ + char c; +#ifndef CC256x_TRANSP + char tstr[255]; + + if (debug_uart_rx_char(&c)) { + debug_uart_tx_char(c); + if (c == 'a') { + debug_uart_tx("\nenabling ACC\n"); + mw_acc_enable(); + } else if (c == 'A') { + debug_uart_tx("\ndisabling ACC\n"); + mw_acc_disable(); + } else if (c == 'r') { + int16_t x,y,z; + debug_uart_tx("\nread ACC: "); + mw_acc_read(&x, &y, &z); + snprintf(tstr, 64, "x:%d y:%d z:%d\n", x,y,z); + debug_uart_tx(tstr); + } else if (c =='R') { + int16_t al; + al = mw_get_amblight_adc_val(); + snprintf(tstr, 64, "light: %d\n", al); + debug_uart_tx(tstr); + } else if (c == 'b') { + debug_uart_tx("\nenabling BT\n"); + mw_enable_bt(); + } else if (c == 'B') { + debug_uart_tx("\ndisabling BT\n"); + mw_disable_bt(); + } else if (c == 'c') { + debug_uart_tx("\nCharger status: "); + snprintf(tstr, 16, "0x%04x 0x%04x ", BAT_CHARGE_IN, (BAT_CHARGE_IN & BAT_CHARGE_PWR_BIT)); + debug_uart_tx(tstr); + if (BAT_CHARGE_IN & BAT_CHARGE_PWR_BIT) + debug_uart_tx("no ext pwr, "); + else + debug_uart_tx("ext pwr connected, "); + switch (BAT_CHARGE_IN & (BAT_CHARGE_STAT1 | BAT_CHARGE_STAT2)) { + case BAT_CHARGE_STAT1: + debug_uart_tx("charge done\n"); + break; + case BAT_CHARGE_STAT2: + debug_uart_tx("fast charge\n"); + break; + case (BAT_CHARGE_STAT1 | BAT_CHARGE_STAT2): + debug_uart_tx("suspend, sleep or fault\n"); + break; + default: + debug_uart_tx("precharge\n"); + break; + } + if (BAT_CHARGE_IN & BAT_CHARGE_ENABLE_PIN) + debug_uart_tx(" !charge\n"); + else + debug_uart_tx(" charge\n"); + } else if (c == 'd') { + debug_uart_tx("charging disabled\n"); + BAT_CHARGE_OUT |= BAT_CHARGE_ENABLE_PIN; + } else if (c == 'e') { + debug_uart_tx("charging enabled\n"); + BAT_CHARGE_OUT &= ~BAT_CHARGE_ENABLE_PIN; + } else if (c == 'l') { + debug_uart_tx("backlight LED on\n"); + hal_lcd_set_backlight(TRUE); + } else if (c == 'L') { + debug_uart_tx("backlight LED off\n"); + hal_lcd_set_backlight(FALSE); + } else if (c == 'u') { + mw_lcd_update_screen(); + } else if (c == '+') { + nop(); + } else if (c == '-') { + nop(); + } else if (c == 'H') { + uint8_t dclass[3]; + dclass[0] = BT_MW_DEVICE_CLASS & 0xff; + dclass[1] = (BT_MW_DEVICE_CLASS & 0xff00) >> 8; + dclass[2] = (BT_MW_DEVICE_CLASS & 0xff0000) >> 16; + + debug_uart_tx("HCI reset\n"); + bt_hci_cmd(HCI_HC_BB_OGF, HCI_RESET_OCF, 0, NULL); + bt_hci_cmd(HCI_HC_BB_OGF, HCI_W_COD_OCF, 3, dclass); + } else if (c == 'i') { + debug_uart_tx("Information:\n"); + debug_uart_tx("Oswald "); + debug_uart_tx(MW_MAIN_VERSION); + debug_uart_tx("\n"); + debug_uart_tx("Build #"); + debug_uart_tx(BUILDNO); + debug_uart_tx("\n"); + debug_uart_tx("BT V "); + debug_uart_tx(cc256x_version); + debug_uart_tx("\n"); + debug_uart_tx("MCU Rev "); + debug_uart_tx_char(GetMsp430HardwareRevision()); + debug_uart_tx("\n"); + } else if (c == 'S') { + debug_uart_tx("Scan enable\n"); + tstr[0] = HCI_BB_SCAN_INQUIRY | HCI_BB_SCAN_PAGE; + bt_hci_cmd(HCI_HC_BB_OGF, HCI_W_SCAN_EN_OCF, 1, (uint8_t *)tstr); + } else if (c == 'h') { + RTCHOUR++; + if (RTCHOUR > 23) + RTCHOUR = 0; + } else if (c == 'm') { + RTCMIN++; + if (RTCMIN > 59) + RTCMIN = 0; + } else if (c == 'N') { + debug_uart_tx("Set name\n"); + tstr[0] = 'O'; + tstr[1] = 's'; + tstr[2] = 'w'; + tstr[3] = 'a'; + tstr[4] = 'l'; + tstr[5] = 'd'; + tstr[6] = 0x00; + bt_hci_cmd(HCI_HC_BB_OGF, HCI_W_LOCAL_NAME_OCF, 0x07, (uint8_t *)tstr); + } else if (c == 'R') { + bt_hci_cmd(HCI_INFO_PARAM_OGF, HCI_R_BD_ADDR_OCF, 0, NULL); + } + } +#endif +} +#endif + +void start_timer(int cycles) +{ + TA0EX0 = TAIDEX_0; + TA0CTL = TASSEL_1 | TACLR | MC__STOP; // SMCLK, clear TAR + TA0CCTL0 = CCIE; // CCR0 interrupt enabled + TA0CCR0 = cycles; + TA0CTL |= MC_1; // Start Timer_A in continuous mode +} + +void stop_timer(void) +{ + TA0CCTL0 &= ~CCIE; // CCR0 interrupt enabled + TA0CTL = MC__STOP; // Start Timer_A in continuous mode +} + +// Timer A0 interrupt service routine +#pragma vector=TIMER0_A0_VECTOR +__interrupt void TIMER0_A0_ISR (void) +{ + TA0CTL &= ~(TAIFG); +#if defined xMW_DEVBOARD_V2 + LED6_TOGGLE(); +#endif + _event_src |= TIMER_500MS_EVENT | TIMER_100MS_EVENT; + // LPM3_EXIT; + LPM3_EXIT_ISR(); +} + +uint8_t handle_event(void) +{ +#if defined MW_DEVBOARD_V2 || MW_DEBUG_UART + char tstr[64]; +#endif + if (_event_src == 0) + return 1; + + while (_event_src != 0) { + if (_event_src & WATCHDOG_EVENT) { + _event_src &= ~WATCHDOG_EVENT; + debug_uart_tx_char('w'); + } else if (_event_src & RTC_1HZ_EVENT) { + _event_src &= ~RTC_1HZ_EVENT; + check_pwr_state(); + oswald_one_second_tick(); +#if defined MW_DEVBOARD_V2 || MW_DEBUG_UART + dbg_out_rtc(); +#endif + } else if (_event_src & BT_UART_RCV_EVENT) { + _event_src &= ~BT_UART_RCV_EVENT; + handle_bt_uart_rx_event(); + } else if (_event_src & BT_UART_WAKEUP_EVENT) { + _event_src &= ~BT_UART_WAKEUP_EVENT; + bt_hci_ehcill_wake(); + } else if (_event_src & DBG_UART_RCV_EVENT) { + _event_src &= ~DBG_UART_RCV_EVENT; +#if defined MW_DEVBOARD_V2 || MW_DEBUG_UART + handle_uart_rx_event(); +#endif + } else if (_event_src & BUTTON_EVENT) { + _event_src &= ~BUTTON_EVENT; + handle_button_event(); + } else if (_event_src & TIMER_500MS_EVENT) { + _event_src &= ~TIMER_500MS_EVENT; + oswald_halfsecond_tick(); + } else if (_event_src & TIMER_100MS_EVENT) { + _event_src &= ~TIMER_100MS_EVENT; + oswald_centisecond_tick(); + } else if (_event_src & ACCEL_EVENT) { + _event_src &= ~ACCEL_EVENT; + mw_acc_handle_irq(); + } else { +#if defined MW_DEVBOARD_V2 || MW_DEBUG_UART + snprintf(tstr, 64, "unhandled event in 0x%04x\n", _event_src); + debug_uart_tx(tstr); +#endif + } + } + return 0; +} + +#pragma vector=BUTTON_PORT_VECTOR +__interrupt void BUTTON_ISR (void) +{ + // LPM3_EXIT; + LPM3_EXIT_ISR(); + BUTTON_PORT_IFG &= ~ALL_BUTTONS; + // BUTTON_PORT_IE &= ~INT_EDGE_SEL_BUTTONS; + _event_src |= BUTTON_EVENT; + //_button_state = (BUTTON_PORT_IN & ALL_BUTTONS); +} + +#pragma vector=PORT1_VECTOR +__interrupt void PORT1_GPIO_ISR (void) +{ + if (P1IFG & BT_IO_CTS) { + //LPM3_EXIT; + LPM3_EXIT_ISR(); + P1IE &= ~BT_IO_CTS; + P1IFG &= ~BT_IO_CTS; + debug_uart_tx("BT CTS irq\n"); + _event_src |= BT_UART_WAKEUP_EVENT; + // bt_hci_ehcill_wake(); + } else if (P1IFG & ACCELEROMETER_INT_PIN) { + //LPM3_EXIT; + LPM3_EXIT_ISR(); + P1IFG &= ~ACCELEROMETER_INT_PIN; + // debug_uart_tx("ACC irq\n"); + _event_src |= ACCEL_EVENT; + } +} + + +#if 0 +#pragma vector=NOVECTOR +__interrupt void UNEXP_ISR (void) +{ + debug_uart_tx("unexpected IRQ occured\n"); +} +#endif + + +int main(void) +{ + setup_wdt(); + setup_pins(); + setup_clocks(); + setup_rtc(); + + /* enable interrupts, we will need them! */ + __enable_interrupt(); + +#if defined MW_DEVBOARD_V2 || MW_DEBUG_UART + init_debug_uart(); + debug_uart_tx("\nOswald on MetaWatch\n"); +#endif + + mw_lcd_init(); + mw_lcd_clear(); + mw_lcd_update_screen(); + + mw_init_adc(); + mw_init_vibrate_pwm(); + + oswald_set_time(RTCHOUR, RTCMIN, RTCSEC, TRUE); + oswald_set_date(RTCDAY, RTCMON, RTCYEAR, TRUE); + oswald_init(); + + while (1) { + /* handle pending events */ + handle_event(); + + /* enter LPM3 sleep mode waiting for interrupt */ + /* errata PMM11 + PMM12 - divide MCLK before going to sleep */ + if (DetermineErrata()) { + MCLK_DIV(2); + nop(); + } + LPM3; + nop(); + if (DetermineErrata()) { + __delay_cycles(100); + MCLK_DIV(1); + } + }; + +return 0; +} diff --git a/metawatch/mw_main.h b/metawatch/mw_main.h new file mode 100644 index 0000000..8d02f7d --- /dev/null +++ b/metawatch/mw_main.h @@ -0,0 +1,40 @@ +#ifndef _GCCFWTEST_LCD_H +#define _GCCFWTEST_LCD_H + +#define MW_MAIN_VERSION "MW v0.4" + +#if defined MW_DEVBOARD_V2 +#include "hal_devboard_v2_defs.h" +#elif defined MW_DIGITAL_V2 +#include "hal_digital_v2_defs.h" +#else +#error "Define a watch type!" +#endif +#include "hal_io_macros.h" + +#define LPM3_EXIT_ISR() { _BIC_SR_IRQ(SCG1+OSCOFF+CPUOFF); nop(); } + +#define WATCHDOG_EVENT 1 << 0 +#define RTC_1HZ_EVENT 1 << 1 +#define DBG_UART_RCV_EVENT 1 << 2 +#define BUTTON_EVENT 1 << 3 +#define TIMER_500MS_EVENT 1 << 4 +#define TIMER_100MS_EVENT 1 << 5 +#define POWER_SRC_EVENT 1 << 6 +#define BT_UART_RCV_EVENT 1 << 7 +#define BT_UART_WAKEUP_EVENT 1 << 8 +#define ACCEL_EVENT 1 << 9 + +extern unsigned int _event_src; + +//#define TIMER_500MS_CYCLES 32768 + +#define TIMER_500MS_CYCLES 16384 +#define TIMER_100MS_CYCLES 327 + +void start_timer(int cycles); +void stop_timer(void); + +uint8_t handle_event(void); + +#endif diff --git a/metawatch/mw_uart.c b/metawatch/mw_uart.c new file mode 100644 index 0000000..a85ce8c --- /dev/null +++ b/metawatch/mw_uart.c @@ -0,0 +1,121 @@ +#include +#include +#include +#include + +#include "mw_main.h" + +#include "mw_uart.h" + +static char UART_RX_CHAR = 0; + +#if defined MW_DEVBOARD_V2 || MW_DEBUG_UART + +void debug_uart_tx_char(char c); + +#pragma vector=USCI_A3_VECTOR +__interrupt void UCA_ISR (void) +{ + switch (UCA3IV) { + case 2: // RXIFG + /* clear IRQ flag */ + UCA3IFG &= ~UCRXIFG; + UART_RX_CHAR = UCA3RXBUF; + _event_src |= DBG_UART_RCV_EVENT; + /* wake up to handle the received char */ + // LPM3_EXIT; + LPM3_EXIT_ISR(); + break; + case 4: // TXIFG + break; + default: + break; + } +} + +void init_debug_uart(void) +{ + /* assert reset */ + UCA3CTL1 = UCSWRST; + + /* reset default SMCLK = 1.048MHz */ + UCA3CTL1 |= UCSSEL__SMCLK; + /* CLK baud BRx BRSx BRFx */ + /* 1,048,576 115200 9 1 0 */ + /* 16,000,000 115200 138 7 0 */ + + UCA3BR0 = 138; + UCA3MCTL = UCBRS_7 | UCBRF_0; + + /* set P10.4 & P10.5 to UCA function */ + P10SEL |= BIT4; + P10SEL |= BIT5; + + UCA3STAT = 0; + + /* deassert reset */ + UCA3CTL1 &= ~UCSWRST; + + /* enable receive interrupt */ + UCA3IE = UCRXIE; + /* clear interrup flags */ + UCA3IFG = 0; +} + +void debug_uart_tx_char(const char c) +{ + while (UCA3STAT & UCBUSY) + nop(); + UCA3TXBUF = c; + while ((UCA3IFG & UCTXIFG) == 0 ) + nop(); +} + +void debug_uart_tx(const char *buf) +{ + unsigned char i = 0; + + while (buf[i] != 0) { + debug_uart_tx_char(buf[i]); + if (buf[i++] == '\n') + debug_uart_tx_char('\r'); + } + while (UCA3STAT & UCBUSY) + nop(); +} + +void debug_dump_hex(const uint16_t len, const void *buf) +{ + int i; + char tstr[8]; + + for (i=0; i +#include +#include +#include + +#include "mw_main.h" + +#include "mw_lcd.h" +#include "mw_adc.h" +#include "mw_bt.h" +#include "bt_hci.h" +#include "bt_l2cap.h" +#include "bluetooth_init_cc256x.h" +#include "mw_acc.h" + +#include "oswald.h" +#include "oswald_hal.h" + +#include "calendar.h" + + +const char *hal_get_version_string(void) +{ + return MW_MAIN_VERSION; +} + +const char *hal_get_buildno_string(void) +{ + return BUILDNO; +} + +const char *hal_get_radio_version_string(void) +{ + return cc256x_version; +} + +void hal_lcd_set_pixel(uint8_t x, uint8_t y, uint8_t color) +{ + if (x > 95) + x = 95; + if (y > 95) + y = 95; + mw_lcd_draw_pixel(x, y, color ? LCD_BLACK : LCD_WHITE); +} + +void hal_lcd_clear_display(void) +{ + mw_lcd_clear_fb(); +} + +void hal_lcd_update_display(void) +{ + mw_lcd_update_screen(); +} + +void hal_lcd_set_backlight(boolean state) +{ + if (state) { + ENABLE_LCD_LED(); + } else { + DISABLE_LCD_LED(); + } +} + +boolean hal_lcd_get_backlight(void) +{ + return (LCD_LED_POUT & LCD_LED_PIN) ? TRUE : FALSE; +} + +void hal_enable_centisecond_timer(void) +{ + start_timer(TIMER_100MS_CYCLES); +} + +void hal_disable_centisecond_timer(void) +{ + stop_timer(); +} + +void hal_enable_halfsecond_timer(void) +{ + start_timer(TIMER_500MS_CYCLES); +} + +void hal_disable_halfsecond_timer(void) +{ + stop_timer(); +} + +void hal_get_rtc(clock_state *rtc) +{ + /* Update clock state from RTC */ + rtc->hour = RTCHOUR; + rtc->minute = RTCMIN; + rtc->second = RTCSEC; + rtc->day = RTCDAY; + rtc->month = RTCMON; + rtc->year = RTCYEAR; + rtc->wday = RTCDOW; +} + +void hal_set_rtc(clock_state *rtc, boolean set_sec) +{ + /* Update clock state from RTC */ + RTCHOUR = rtc->hour; + RTCMIN = rtc->minute; + if (set_sec) + RTCSEC = rtc->second; + RTCDAY = rtc->day; + RTCMON = rtc->month; + RTCYEAR = rtc->year; + rtc->wday = getWochentag(rtc->day, rtc->month, rtc->year); + RTCDOW = rtc->wday; +} + +void hal_get_power_state(power_state *pwr) +{ + unsigned int val; + + pwr->source = (BAT_CHARGE_IN & BAT_CHARGE_PWR_BIT) ? POWER_SOURCE_BATTERY : POWER_SOURCE_EXTERNAL; + + /* unless the charger is enabled we do not get a reasonable state */ + if (!(BAT_CHARGE_IN & BAT_CHARGE_ENABLE_PIN)) { + switch (BAT_CHARGE_IN & (BAT_CHARGE_STAT1 | BAT_CHARGE_STAT2)) { + case BAT_CHARGE_STAT1: + pwr->charge_state = POWER_CHARGER_DONE; + break; + case BAT_CHARGE_STAT2: + pwr->charge_state = POWER_CHARGER_CHARGING; + break; + case (BAT_CHARGE_STAT1 | BAT_CHARGE_STAT2): + pwr->charge_state = POWER_CHARGER_UNK; + break; + default: + pwr->charge_state = POWER_CHARGER_PRECHARGE; + break; + } + } else { + pwr->charge_state = POWER_CHARGER_UNK; + } + + if ((pwr->source == POWER_SOURCE_BATTERY) && (RTCSEC != 0)) { + /* the ADC and activating the measuring shunts is + * power expensive so only do this every minute */ + return; + }; + + /* get new values and so some averaging to avoid jumps */ + val = mw_get_battery_adc_val(); + pwr->percent = mw_get_battery_percentage_from_val(val); + pwr->level = val; +} + +void hal_vibration_set_state(boolean state) +{ +#ifdef MW_DIGITAL_V2 + if (state) { + TA1CTL |= TASSEL__ACLK | MC__UPDOWN | ID_0; + P7SEL |= BIT3; + } else { + TA1CTL = 0; + P7SEL &= ~BIT3; + } +#endif +} + +boolean hal_vibration_get_state(void) +{ +#ifdef MW_DIGITAL_V2 + return (P7SEL & BIT3) ? TRUE : FALSE; +#else + return FALSE; +#endif +} + +#define BLUETOOTH_DEVICE_NAME "Oswald on MetaWatch" +static boolean bt_is_visible = FALSE; + + +bluetooth_state hal_bluetooth_set_state(bluetooth_state state) +{ + uint8_t buf[32]; + + if (state == BLUETOOTH_OFF && mw_bt_is_enabled() == 1) { + mw_disable_bt(); + bt_is_visible = FALSE; + return BLUETOOTH_OFF; + } else if (state == BLUETOOTH_ON && mw_bt_is_enabled() == 0) { + mw_enable_bt(); + // set our name + memset(buf, 0, 32); + strncpy((char *)buf, BLUETOOTH_DEVICE_NAME, strlen(BLUETOOTH_DEVICE_NAME)); + bt_hci_cmd(HCI_HC_BB_OGF, HCI_W_LOCAL_NAME_OCF, strlen(BLUETOOTH_DEVICE_NAME)+1, buf); + // read our local address + bt_hci_cmd(HCI_INFO_PARAM_OGF, HCI_R_BD_ADDR_OCF, 0, NULL); + // enable page scan + buf[0] = HCI_BB_SCAN_PAGE; + bt_hci_cmd(HCI_HC_BB_OGF, HCI_W_SCAN_EN_OCF, 1, buf); + bt_is_visible = FALSE; + return BLUETOOTH_ON; + } else + return BLUETOOTH_ILL; +} + +bluetooth_state hal_bluetooth_get_state(void) +{ + if (mw_bt_is_enabled() == 1) { + if (bt_l2cap_get_connected(0x40)) + return BLUETOOTH_CONNECTED; + else + return BLUETOOTH_ON; + } else + return BLUETOOTH_OFF; +} + +uint8_t *hal_bluetooth_get_local_bdaddr(void) +{ + return bt_hci_get_local_bdaddr(); +} + +void hal_bluetooth_set_visible(boolean visible) +{ + uint8_t buf[2]; + + if (mw_bt_is_enabled() == 0) { + bt_is_visible = FALSE; + return; + } + + if (visible) { + // enable page and inquiry scan + buf[0] = HCI_BB_SCAN_INQUIRY | HCI_BB_SCAN_PAGE; + bt_hci_cmd(HCI_HC_BB_OGF, HCI_W_SCAN_EN_OCF, 1, buf); + bt_is_visible = TRUE; + } else { + // enable page scan only + buf[0] = HCI_BB_SCAN_PAGE; + bt_hci_cmd(HCI_HC_BB_OGF, HCI_W_SCAN_EN_OCF, 1, buf); + bt_is_visible = FALSE; + } +} + +boolean hal_bluetooth_get_visible(void) +{ + return bt_is_visible; +} + +void hal_bluetooth_send_data(const void *mdat, uint16_t mlen) +{ + bt_l2cap_send_channel(0x40, mdat, mlen); +} + +/* + * Control the accelerometer + */ +void hal_accelerometer_enable(void) +{ + mw_acc_enable(); +} + +void hal_accelerometer_disable(void) +{ + mw_acc_disable(); +} + +uint16_t hal_amblight_get_val(void) +{ + return mw_get_amblight_adc_val(); +} + diff --git a/metawatch/sharp_mem_lcd.c b/metawatch/sharp_mem_lcd.c new file mode 100644 index 0000000..df5b3ed --- /dev/null +++ b/metawatch/sharp_mem_lcd.c @@ -0,0 +1,113 @@ +// taken and adapted from +// Programming Sharp’s Memory LCDs +// by Ken Green + +// LCD commands - Note: the bits are reversed per the memory LCD data +// sheets because of the order the bits are shifted out in the SPI +// port. +#define MLCD_WR 0x80 //MLCD write line command +#define MLCD_CM 0x20 //MLCD clear memory command +#define MLCD_NO 0x00 //MLCD NOP command (used to switch VCOM) + +//LCD resolution +#define MLCD_XRES 96 //pixels per horizontal line +#define MLCD_YRES 96 //pixels per vertical line +#define MLCD_BYTES_LINE MLCD_XRES / 8 //number of bytes in a line +#define MLCD_BUF_SIZE MLCD_YRES * MLCD_BYTES_LINE + +//defines the VCOM bit in the command word that goes to the LCD +#define VCOM_HI 0x40 +#define VCOM_LO 0x00 + +static char *frmbufter; //current address of buffer to be displayed +static char locbuf[MLCD_BYTES_LINE + 3]; // local line buffer +static char linenum; // current line number being transmitted + +//there are 3 stages in transmitting a buffer: +//stage 0: first line (has command in it) +//stage 1: 2nd through last line (no command) +//stage 2: null byte trailer +static int stage = 0; + +//current state of vcom. This should alternate +//between VCOM _ HI and VCOM _ LO on a 1-30 second +//period. +extern char vcom; + +//////////////////////////////////////////////////////////////// +// +// This routine transmits the contents of the pixel memory in +// a frame buffer to the memory LCD. It uses DMA to transfer +// each individual line. The address of the frame buffer to +// transfer is in the global variable show _ frm. +// +// +// NOTE: this routine also acts as the interrupt handler for SPI interrupts. +// +// +// INPUTS: +// The SPI and DMA units must have been previously initialized +// show _ frm: +// pointer to the buffer to be displayed +// +//////////////////////////////////////////////////////////////// +void show _ frame(char *show _ frm) { +int i; +unsigned long sts; + + switch(stage) { + case 0: + // stage 0: sending the first line. The command is + // included in this line + set_scs(HIGH); //set SCS high + frmbufptr = show_frm; //init pointer to frame buffer + linebuf = locbuf; //init pointer to line buffer + linenum = 1; //init line address + + //first line of data is preceeded by a write command + *linebuf++ = MLCD _ WR | vcom; //command (note: no need to swap) + *linebuf++ = swap(linenum++); //line number (address) + + for (i=0; i MLCD_YRES) + stage = 2; //all lines sent, go to next stage + break; + case 2: + // All lines sent, send a fi nal null byte trailer. The DMA + //transfer of the last line is fi nished and the channel + //disabled. All that is left is to write a trailing null + //byte. It’s not worth using DMA to transfer 1 byte, so + //it’s done by directing writing to the SPI port. + //Write the last (null) byte + Write_to_SPI(0); + //Since there is no interrupt on transmit buffer empty, loop + //here until the byte is sent, then drop SCS. + i = 0; + while (SPI_BSY); //wait until done + set_scs(LOW); + stage = 0; //go back to stage 0 - sending out first line + } +} + diff --git a/metawatch/sintab.py b/metawatch/sintab.py new file mode 100644 index 0000000..5e693b3 --- /dev/null +++ b/metawatch/sintab.py @@ -0,0 +1,9 @@ +import sys +import math + +sys.stdout.write ("int16_t sintab[]={ ") + +for i in range (0, 360): + sys.stdout.write ("%4.0f," % (math.sin(((2*3.14159265358979323846)/360)*i)*100)) + +sys.stdout.write ("};\n") diff --git a/ui/Makefile.am b/ui/Makefile.am new file mode 100644 index 0000000..ac6e296 --- /dev/null +++ b/ui/Makefile.am @@ -0,0 +1,23 @@ +ACLOCAL_AMFLAGS = -I m4 + +bin_PROGRAMS = .buildno oswald-gui + +oswald_gui_SOURCES = oswald-ui.c oswald_main.c \ + oswald_watch_faces.c oswald_strings.c oswald_screens.c \ + embedvm.c oswald_graphics.c calendar.c oswald_fonts.c + +# BUILDNO = \"$(shell cat .buildno)\" +BUILDNO = \"$(shell date +%y%m%d)-\#$(shell cat .buildno)\" + +oswald_gui_CFLAGS = -DBUILDNO=$(BUILDNO) -g $(GTK_CFLAGS) + +oswald_gui_LDADD = $(GTK_LIBS) + +EXTRA_DIST = config.rpath m4/ChangeLog \ + AUTHORS \ + COPYING \ + README.txt + +.buildno: $(oswald_gui_OBJECTS) + @if ! test -f .buildno; then echo 0 > .buildno; fi + @echo $$(($$(cat .buildno) + 1)) > .buildno diff --git a/ui/autogen.sh b/ui/autogen.sh new file mode 100755 index 0000000..d53cc4c --- /dev/null +++ b/ui/autogen.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +version=1.11 +set -x +aclocal-$version +autoconf +libtoolize +automake-$version --add-missing --foreign diff --git a/ui/bitmaps/Bluetooth_icon.xbm b/ui/bitmaps/Bluetooth_icon.xbm new file mode 100644 index 0000000..ba0e1b8 --- /dev/null +++ b/ui/bitmaps/Bluetooth_icon.xbm @@ -0,0 +1,10 @@ +#define Bluetooth_icon_width 24 +#define Bluetooth_icon_height 24 +static unsigned char Bluetooth_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x78, 0x00, 0x00, 0xd8, 0x00, 0x80, 0x98, 0x01, 0x80, 0x19, 0x03, + 0x00, 0x9b, 0x01, 0x00, 0xde, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x3c, 0x00, 0x00, 0x7e, 0x00, 0x00, 0xdb, 0x00, 0x80, 0x99, 0x01, + 0x80, 0x18, 0x03, 0x00, 0x98, 0x01, 0x00, 0xd8, 0x00, 0x00, 0x78, 0x00, + 0x00, 0x38, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; diff --git a/ui/bitmaps/Exit_icon.xbm b/ui/bitmaps/Exit_icon.xbm new file mode 100644 index 0000000..02d1abb --- /dev/null +++ b/ui/bitmaps/Exit_icon.xbm @@ -0,0 +1,10 @@ +#define Exit_icon_width 24 +#define Exit_icon_height 24 +static unsigned char Exit_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x03, 0xf0, 0xff, 0x03, + 0x30, 0x0c, 0x03, 0x30, 0x0c, 0x03, 0x30, 0x0c, 0x03, 0x30, 0x0c, 0x01, + 0x30, 0x0c, 0x02, 0x30, 0x0c, 0x03, 0x30, 0x8c, 0x03, 0x30, 0xcc, 0x1f, + 0x30, 0xcc, 0x1f, 0x30, 0x8c, 0x03, 0x30, 0x0c, 0x03, 0x30, 0x06, 0x02, + 0x30, 0x03, 0x01, 0xb0, 0x01, 0x03, 0xf0, 0x00, 0x03, 0x70, 0x00, 0x03, + 0xf0, 0xff, 0x03, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; diff --git a/ui/bitmaps/Message_icon.xbm b/ui/bitmaps/Message_icon.xbm new file mode 100644 index 0000000..3eb7bd5 --- /dev/null +++ b/ui/bitmaps/Message_icon.xbm @@ -0,0 +1,10 @@ +#define Message_icon_width 24 +#define Message_icon_height 24 +static unsigned char Message_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x3f, + 0xfc, 0xff, 0x3f, 0x3c, 0x00, 0x3c, 0x6c, 0x00, 0x36, 0xcc, 0x00, 0x33, + 0x8c, 0x81, 0x31, 0x0c, 0xc3, 0x30, 0x0c, 0x66, 0x30, 0x0c, 0x3c, 0x30, + 0x0c, 0x18, 0x30, 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, + 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0xfc, 0xff, 0x3f, 0xfc, 0xff, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; diff --git a/ui/bitmaps/acc_icon.xbm b/ui/bitmaps/acc_icon.xbm new file mode 100644 index 0000000..b8c4bb8 --- /dev/null +++ b/ui/bitmaps/acc_icon.xbm @@ -0,0 +1,10 @@ +#define acc_icon_width 24 +#define acc_icon_height 24 +static unsigned char acc_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x70, 0x00, 0x00, + 0xa8, 0xe0, 0x00, 0x20, 0x40, 0x00, 0x20, 0xe0, 0x00, 0x20, 0x0e, 0x00, + 0x20, 0x0c, 0x00, 0x20, 0x0a, 0x00, 0x20, 0x01, 0x00, 0xa0, 0x40, 0x00, + 0x60, 0x80, 0x14, 0xf8, 0xff, 0x09, 0x30, 0x80, 0x14, 0x28, 0x40, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; diff --git a/ui/bitmaps/alarm_icon.xbm b/ui/bitmaps/alarm_icon.xbm new file mode 100644 index 0000000..24fbdab --- /dev/null +++ b/ui/bitmaps/alarm_icon.xbm @@ -0,0 +1,10 @@ +#define alarm_icon_width 24 +#define alarm_icon_height 24 +static unsigned char alarm_icon_bits[] = { + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x38, 0x1e, 0xff, 0x78, 0xce, 0xff, 0x73, + 0xe6, 0x00, 0x67, 0x70, 0x18, 0x0e, 0x38, 0x18, 0x1c, 0x18, 0x18, 0x18, + 0x0c, 0x18, 0x30, 0x0c, 0x18, 0x30, 0x0c, 0x18, 0x30, 0x0c, 0xf8, 0x31, + 0x0c, 0xf8, 0x31, 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, + 0x18, 0x00, 0x18, 0x38, 0x00, 0x1c, 0x70, 0x00, 0x0e, 0xe0, 0x00, 0x07, + 0xc0, 0xff, 0x03, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; diff --git a/ui/bitmaps/battery0_icon.xbm b/ui/bitmaps/battery0_icon.xbm new file mode 100644 index 0000000..b23ee6f --- /dev/null +++ b/ui/bitmaps/battery0_icon.xbm @@ -0,0 +1,7 @@ +#define battery0_icon_width 15 +#define battery0_icon_height 20 +static unsigned char battery0_icon_bits[] = { + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x3e, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, + 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, + 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x3e, + 0x00, 0x00, 0x00, 0x00, }; diff --git a/ui/bitmaps/battery100_icon.xbm b/ui/bitmaps/battery100_icon.xbm new file mode 100644 index 0000000..1fef144 --- /dev/null +++ b/ui/bitmaps/battery100_icon.xbm @@ -0,0 +1,7 @@ +#define battery100_icon_width 15 +#define battery100_icon_height 20 +static unsigned char battery100_icon_bits[] = { + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, + 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, + 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, + 0x00, 0x00, 0x00, 0x00, }; diff --git a/ui/bitmaps/battery25_icon.xbm b/ui/bitmaps/battery25_icon.xbm new file mode 100644 index 0000000..e3e46e4 --- /dev/null +++ b/ui/bitmaps/battery25_icon.xbm @@ -0,0 +1,7 @@ +#define battery25_icon_width 15 +#define battery25_icon_height 20 +static unsigned char battery25_icon_bits[] = { + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x3e, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, + 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, + 0x00, 0x22, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, + 0x00, 0x00, 0x00, 0x00, }; diff --git a/ui/bitmaps/battery50_icon.xbm b/ui/bitmaps/battery50_icon.xbm new file mode 100644 index 0000000..141252d --- /dev/null +++ b/ui/bitmaps/battery50_icon.xbm @@ -0,0 +1,7 @@ +#define battery50_icon_width 15 +#define battery50_icon_height 20 +static unsigned char battery50_icon_bits[] = { + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x3e, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, + 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, + 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, + 0x00, 0x00, 0x00, 0x00, }; diff --git a/ui/bitmaps/battery75_icon.xbm b/ui/bitmaps/battery75_icon.xbm new file mode 100644 index 0000000..2323dcc --- /dev/null +++ b/ui/bitmaps/battery75_icon.xbm @@ -0,0 +1,7 @@ +#define battery75_icon_width 15 +#define battery75_icon_height 20 +static unsigned char battery75_icon_bits[] = { + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x3e, 0x00, 0x22, 0x00, 0x22, 0x00, 0x3e, + 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, + 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, + 0x00, 0x00, 0x00, 0x00, }; diff --git a/ui/bitmaps/bluetooth_con_icon.xbm b/ui/bitmaps/bluetooth_con_icon.xbm new file mode 100644 index 0000000..468f55e --- /dev/null +++ b/ui/bitmaps/bluetooth_con_icon.xbm @@ -0,0 +1,7 @@ +#define bluetooth_con_icon_width 15 +#define bluetooth_con_icon_height 20 +static unsigned char bluetooth_con_icon_bits[] = { + 0x6c, 0x00, 0xce, 0x00, 0xaa, 0x00, 0xc6, 0x00, 0xaa, 0x00, 0xce, 0x00, + 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, }; diff --git a/ui/bitmaps/bluetooth_icon.xbm b/ui/bitmaps/bluetooth_icon.xbm new file mode 100644 index 0000000..74cf698 --- /dev/null +++ b/ui/bitmaps/bluetooth_icon.xbm @@ -0,0 +1,7 @@ +#define bluetooth_icon_width 15 +#define bluetooth_icon_height 20 +static unsigned char bluetooth_icon_bits[] = { + 0x10, 0x00, 0x30, 0x00, 0x54, 0x00, 0x38, 0x00, 0x54, 0x00, 0x30, 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, }; diff --git a/ui/bitmaps/charger_icon.xbm b/ui/bitmaps/charger_icon.xbm new file mode 100644 index 0000000..c328fae --- /dev/null +++ b/ui/bitmaps/charger_icon.xbm @@ -0,0 +1,7 @@ +#define charger_icon_width 15 +#define charger_icon_height 20 +static unsigned char charger_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x7c, 0x00, + 0x7c, 0x00, 0x38, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, }; diff --git a/ui/bitmaps/checked_icon.xbm b/ui/bitmaps/checked_icon.xbm new file mode 100644 index 0000000..ddb4610 --- /dev/null +++ b/ui/bitmaps/checked_icon.xbm @@ -0,0 +1,4 @@ +#define checked_icon_width 7 +#define checked_icon_height 7 +static unsigned char checked_icon_bits[] = { + 0x7f, 0x41, 0x5d, 0x5d, 0x5d, 0x41, 0x7f, }; diff --git a/ui/bitmaps/downbutton_icon.xbm b/ui/bitmaps/downbutton_icon.xbm new file mode 100644 index 0000000..cd7ed6d --- /dev/null +++ b/ui/bitmaps/downbutton_icon.xbm @@ -0,0 +1,7 @@ +#define downbutton_icon_width 15 +#define downbutton_icon_height 20 +static unsigned char downbutton_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, + 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x80, 0x7f, 0x00, 0x3f, + 0x00, 0x1e, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, }; diff --git a/ui/bitmaps/enterbutton_icon.xbm b/ui/bitmaps/enterbutton_icon.xbm new file mode 100644 index 0000000..a78da70 --- /dev/null +++ b/ui/bitmaps/enterbutton_icon.xbm @@ -0,0 +1,7 @@ +#define enterbutton_icon_width 15 +#define enterbutton_icon_height 20 +static unsigned char enterbutton_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x64, 0x00, 0x66, 0x00, 0x67, 0x80, 0x7f, 0x80, 0x7f, 0x00, 0x07, + 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, }; diff --git a/ui/bitmaps/exit_icon.xbm b/ui/bitmaps/exit_icon.xbm new file mode 100644 index 0000000..18e6c46 --- /dev/null +++ b/ui/bitmaps/exit_icon.xbm @@ -0,0 +1,10 @@ +#define exit_icon_width 24 +#define exit_icon_height 24 +static unsigned char exit_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x03, 0xf0, 0xff, 0x03, + 0x30, 0x0c, 0x03, 0x30, 0x0c, 0x03, 0x30, 0x0c, 0x03, 0x30, 0x0c, 0x01, + 0x30, 0x0c, 0x02, 0x30, 0x0c, 0x03, 0x30, 0x8c, 0x03, 0x30, 0xcc, 0x1f, + 0x30, 0xcc, 0x1f, 0x30, 0x8c, 0x03, 0x30, 0x0c, 0x03, 0x30, 0x06, 0x02, + 0x30, 0x03, 0x01, 0xb0, 0x01, 0x03, 0xf0, 0x00, 0x03, 0x70, 0x00, 0x03, + 0xf0, 0xff, 0x03, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; diff --git a/ui/bitmaps/info_icon.xbm b/ui/bitmaps/info_icon.xbm new file mode 100644 index 0000000..9b2c1c2 --- /dev/null +++ b/ui/bitmaps/info_icon.xbm @@ -0,0 +1,10 @@ +#define info_icon_width 24 +#define info_icon_height 24 +static unsigned char info_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xc0, 0xff, 0x03, + 0xe0, 0x00, 0x07, 0x70, 0x1c, 0x0e, 0x38, 0x1c, 0x1c, 0x18, 0x1c, 0x18, + 0x0c, 0x00, 0x30, 0x0c, 0x1c, 0x30, 0x0c, 0x1c, 0x30, 0x0c, 0x1c, 0x30, + 0x0c, 0x1c, 0x30, 0x0c, 0x1c, 0x30, 0x0c, 0x1c, 0x30, 0x0c, 0x1c, 0x30, + 0x18, 0x1c, 0x18, 0x38, 0x1c, 0x1c, 0x70, 0x00, 0x0e, 0xe0, 0x00, 0x07, + 0xc0, 0xff, 0x03, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; diff --git a/ui/bitmaps/lapsebutton_icon.xbm b/ui/bitmaps/lapsebutton_icon.xbm new file mode 100644 index 0000000..82ae88a --- /dev/null +++ b/ui/bitmaps/lapsebutton_icon.xbm @@ -0,0 +1,7 @@ +#define lapsebutton_icon_width 15 +#define lapsebutton_icon_height 20 +static unsigned char lapsebutton_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, + 0x00, 0x63, 0x00, 0x67, 0xc0, 0x6f, 0xc0, 0x6f, 0x00, 0x67, 0x00, 0x63, + 0x00, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, }; diff --git a/ui/bitmaps/leftbutton_icon.xbm b/ui/bitmaps/leftbutton_icon.xbm new file mode 100644 index 0000000..5853d90 --- /dev/null +++ b/ui/bitmaps/leftbutton_icon.xbm @@ -0,0 +1,7 @@ +#define leftbutton_icon_width 15 +#define leftbutton_icon_height 20 +static unsigned char leftbutton_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x00, 0x06, 0x00, 0x07, 0x80, 0x7f, 0x80, 0x7f, 0x00, 0x07, + 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, }; diff --git a/ui/bitmaps/main_menu_icon.xbm b/ui/bitmaps/main_menu_icon.xbm new file mode 100644 index 0000000..f106a24 --- /dev/null +++ b/ui/bitmaps/main_menu_icon.xbm @@ -0,0 +1,10 @@ +#define main_menu_icon_width 24 +#define main_menu_icon_height 24 +static unsigned char main_menu_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x1f, 0xfc, 0xff, 0x3f, + 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, + 0xcc, 0xdd, 0x31, 0xcc, 0xdd, 0x31, 0xcc, 0xdd, 0x31, 0x0c, 0x00, 0x30, + 0xcc, 0xdd, 0x31, 0xcc, 0xdd, 0x31, 0xcc, 0xdd, 0x31, 0x0c, 0x00, 0x30, + 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0xfc, 0xff, 0x3f, + 0xf8, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; diff --git a/ui/bitmaps/message_icon.xbm b/ui/bitmaps/message_icon.xbm new file mode 100644 index 0000000..5bff5fb --- /dev/null +++ b/ui/bitmaps/message_icon.xbm @@ -0,0 +1,10 @@ +#define message_icon_width 24 +#define message_icon_height 24 +static unsigned char message_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfe, 0xff, 0x7f, 0xfe, 0xff, 0x7f, 0x0e, 0x00, 0x70, + 0x1e, 0x00, 0x78, 0x36, 0x00, 0x6c, 0x66, 0x00, 0x66, 0xc6, 0x00, 0x63, + 0x86, 0x81, 0x61, 0x06, 0xc3, 0x60, 0x06, 0x66, 0x60, 0x06, 0x3c, 0x60, + 0x06, 0x18, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0xfe, 0xff, 0x7f, 0xfe, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; diff --git a/ui/bitmaps/resetbutton_icon.xbm b/ui/bitmaps/resetbutton_icon.xbm new file mode 100644 index 0000000..6576efc --- /dev/null +++ b/ui/bitmaps/resetbutton_icon.xbm @@ -0,0 +1,7 @@ +#define resetbutton_icon_width 15 +#define resetbutton_icon_height 20 +static unsigned char resetbutton_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xce, 0x00, 0xcc, 0x00, 0xc8, 0x00, 0xc0, 0x00, 0xc0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, }; diff --git a/ui/bitmaps/rightbutton_icon.xbm b/ui/bitmaps/rightbutton_icon.xbm new file mode 100644 index 0000000..48f9ac5 --- /dev/null +++ b/ui/bitmaps/rightbutton_icon.xbm @@ -0,0 +1,7 @@ +#define rightbutton_icon_width 15 +#define rightbutton_icon_height 20 +static unsigned char rightbutton_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x00, 0x18, 0x00, 0x38, 0x80, 0x7f, 0x80, 0x7f, 0x00, 0x38, + 0x00, 0x18, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, }; diff --git a/ui/bitmaps/startstopbutton_icon.xbm b/ui/bitmaps/startstopbutton_icon.xbm new file mode 100644 index 0000000..160799b --- /dev/null +++ b/ui/bitmaps/startstopbutton_icon.xbm @@ -0,0 +1,7 @@ +#define startstopbutton_icon_width 15 +#define startstopbutton_icon_height 20 +static unsigned char startstopbutton_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, + 0x00, 0x1b, 0x00, 0x3b, 0x00, 0x7b, 0x00, 0x7b, 0x00, 0x3b, 0x00, 0x1b, + 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, }; diff --git a/ui/bitmaps/stopwatch.xbm b/ui/bitmaps/stopwatch.xbm new file mode 100644 index 0000000..ce022fb --- /dev/null +++ b/ui/bitmaps/stopwatch.xbm @@ -0,0 +1,10 @@ +#define stopwatch_width 24 +#define stopwatch_height 24 +static unsigned char stopwatch_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, + 0x00, 0x7e, 0x10, 0x80, 0x81, 0x39, 0x40, 0x18, 0x1e, 0x20, 0x18, 0x0c, + 0x10, 0x18, 0x08, 0x08, 0x18, 0x10, 0x08, 0x18, 0x10, 0x04, 0x18, 0x20, + 0x04, 0x18, 0x20, 0x04, 0x18, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, + 0x04, 0x00, 0x20, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0x10, 0x00, 0x08, + 0x20, 0x00, 0x04, 0x40, 0x00, 0x02, 0x80, 0x81, 0x01, 0x00, 0x7e, 0x00, + }; diff --git a/ui/bitmaps/stopwatch_icon.xbm b/ui/bitmaps/stopwatch_icon.xbm new file mode 100644 index 0000000..e3aa9cf --- /dev/null +++ b/ui/bitmaps/stopwatch_icon.xbm @@ -0,0 +1,10 @@ +#define stopwatch_icon_width 24 +#define stopwatch_icon_height 24 +static unsigned char stopwatch_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xff, 0x0c, + 0xc0, 0xff, 0x1f, 0xe0, 0x00, 0x1f, 0x70, 0x18, 0x0e, 0x38, 0x18, 0x1c, + 0x18, 0x18, 0x18, 0x0c, 0x18, 0x30, 0x0c, 0x18, 0x30, 0x0c, 0x18, 0x30, + 0x0c, 0x18, 0x30, 0x0c, 0x18, 0x30, 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, + 0x0c, 0x00, 0x30, 0x18, 0x00, 0x18, 0x38, 0x00, 0x1c, 0x70, 0x00, 0x0e, + 0xe0, 0x00, 0x07, 0xc0, 0xff, 0x03, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + }; diff --git a/ui/bitmaps/timesetup_icon.xbm b/ui/bitmaps/timesetup_icon.xbm new file mode 100644 index 0000000..5e8699d --- /dev/null +++ b/ui/bitmaps/timesetup_icon.xbm @@ -0,0 +1,10 @@ +#define timesetup_icon_width 24 +#define timesetup_icon_height 24 +static unsigned char timesetup_icon_bits[] = { + 0x00, 0xff, 0x00, 0xc0, 0xff, 0x03, 0xe0, 0x00, 0x07, 0x70, 0x18, 0x0e, + 0x38, 0x18, 0x1c, 0x18, 0x18, 0x18, 0x0c, 0x18, 0x30, 0x0c, 0x18, 0x30, + 0x0c, 0x18, 0x30, 0x0c, 0xf8, 0x31, 0x0c, 0xf8, 0x31, 0x0c, 0x00, 0x30, + 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0x18, 0x00, 0x18, 0x38, 0x00, 0x1c, + 0x70, 0x00, 0x0e, 0xe0, 0x00, 0x07, 0xc0, 0xff, 0x03, 0x00, 0xff, 0x00, + 0xfe, 0x00, 0x00, 0xff, 0xff, 0x3f, 0xff, 0xff, 0x3f, 0xfe, 0x00, 0x00, + }; diff --git a/ui/bitmaps/unchecked_icon.xbm b/ui/bitmaps/unchecked_icon.xbm new file mode 100644 index 0000000..f750c04 --- /dev/null +++ b/ui/bitmaps/unchecked_icon.xbm @@ -0,0 +1,4 @@ +#define unchecked_icon_width 7 +#define unchecked_icon_height 7 +static unsigned char unchecked_icon_bits[] = { + 0x7f, 0x41, 0x41, 0x41, 0x41, 0x41, 0x7f, }; diff --git a/ui/bitmaps/upbutton_icon.xbm b/ui/bitmaps/upbutton_icon.xbm new file mode 100644 index 0000000..6e16dd4 --- /dev/null +++ b/ui/bitmaps/upbutton_icon.xbm @@ -0,0 +1,7 @@ +#define upbutton_icon_width 15 +#define upbutton_icon_height 20 +static unsigned char upbutton_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, + 0x00, 0x1e, 0x00, 0x3f, 0x80, 0x7f, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, + 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, }; diff --git a/ui/bitmaps/watch_icon.xbm b/ui/bitmaps/watch_icon.xbm new file mode 100644 index 0000000..ecd95d1 --- /dev/null +++ b/ui/bitmaps/watch_icon.xbm @@ -0,0 +1,10 @@ +#define watch_icon_width 24 +#define watch_icon_height 24 +static unsigned char watch_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xff, 0x00, 0xc0, 0xff, 0x03, 0xe0, 0x00, 0x07, 0x70, 0x18, 0x0e, + 0x38, 0x18, 0x1c, 0x18, 0x18, 0x18, 0x0c, 0x18, 0x30, 0x0c, 0x18, 0x30, + 0x0c, 0x18, 0x30, 0x0c, 0xf8, 0x31, 0x0c, 0xf8, 0x31, 0x0c, 0x00, 0x30, + 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0x18, 0x00, 0x18, 0x38, 0x00, 0x1c, + 0x70, 0x00, 0x0e, 0xe0, 0x00, 0x07, 0xc0, 0xff, 0x03, 0x00, 0xff, 0x00, + }; diff --git a/ui/calendar.c b/ui/calendar.c new file mode 100644 index 0000000..feca174 --- /dev/null +++ b/ui/calendar.c @@ -0,0 +1,209 @@ +#include "oswald.h" + +#include "calendar.h" + +unsigned char is_leap(const unsigned int year) +{ + /* the rule is, everything that can be devided by 4 is leap. + * Exception: the year can be devided by 100, then it is not, + * except it canbe devided by 400, then it is again. + */ + + if ((year % 400) == 0) + return 1; + else if ((year % 100) == 0) + return 0; + else if ((year % 4) == 0) + return 1; + + return 0; +} + +unsigned short days_of_month(const unsigned int uMonat, const unsigned int uJahr) +{ + // invalid,January,Febuary,March,April,May,June,July,August,September,October,November,December + int arrTageImMonat[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; + + if (uMonat == 2) { + // Febuary: distinguish leap + if (is_leap(uJahr)) + return 29; + else + return 28; + } + + if ((uMonat >= 1) && (uMonat <= 12)) + return arrTageImMonat[uMonat]; + else { + return 0; + } +} + +short getAnzahlTageImJahr(const unsigned int uJahr) +{ + return (is_leap(uJahr)) ? 366 : 365; +} + +short getWochentag(const unsigned int uTag, const unsigned int uMonat, const unsigned int uJahr) +{ + // ungült Jan Feb Mrz Apr Mai Jun Jul Aug Sep Okt Nov Dez + unsigned char arrMonatsOffset[13] = { 0, 0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5}; + short nErgebnis = 0; + + // Monat / Tag - Plausi prüfen: + if ((uTag > 31) || (uMonat > 12) || (uMonat <= 0) + || (uTag <= 0) || (uJahr <= 0)) { + return -1; + } + + unsigned char cbTagesziffer = (uTag % 7); + unsigned char cbMonatsziffer = arrMonatsOffset[uMonat]; + unsigned char cbJahresziffer = ((uJahr % 100) + ((uJahr % 100) / 4)) % 7; + unsigned char cbJahrhundertziffer = (3 - ((uJahr / 100) % 4)) * 2; + + // Schaltjahreskorrektur: + if ((uMonat <= 2) && (is_leap(uJahr))) + cbTagesziffer = cbTagesziffer + 6; + + nErgebnis = (cbTagesziffer + cbMonatsziffer + cbJahresziffer + cbJahrhundertziffer) % 7; + + // Ergebnis: + // 0 = Sonntag + // 1 = Montag + // 2 = Dienstag + // 3 = Mittwoch + // 4 = Donnerstag + // 5 = Freitag + // 6 = Samstag + return nErgebnis; +} + +short getTagDesJahres(const unsigned int uTag, const unsigned int uMonat, const unsigned int uJahr) +{ + // Der wievielte Tag des Jahres ist dieser Tag + if ((uMonat == 0) || (uMonat > 12)) { + return -1; + } + + unsigned int uLokalTag = uTag; + unsigned int uLokalMonat = uMonat; + + while (uLokalMonat > 1) { + uLokalMonat--; + uLokalTag += days_of_month(uLokalMonat, uJahr); + } + + return uLokalTag; +} + +short getKalenderwoche(short uTag, short uMonat, short uJahr) +{ + // Berechnung erfolgt analog DIN 1355, welche besagt: + // Der erste Donnerstag im neuen Jahr liegt immer in der KW 1. + // "Woche" ist dabei definiert als [Mo, ..., So]. + short nTagDesJahres = getTagDesJahres(uTag, uMonat, uJahr); + + // Berechnen des Wochentags des 1. Januar: + short nWochentag1Jan = getWochentag(1, 1, uJahr); + + // Sonderfälle Freitag und Samstag + if (nWochentag1Jan >= 5) + nWochentag1Jan = nWochentag1Jan - 7; + + // Sonderfälle "Jahresanfang mit KW - Nummer aus dem Vorjahr" + if ( (nTagDesJahres + nWochentag1Jan) <= 1) { + return getKalenderwoche(31, 12, uJahr - 1); + } + + short nKalenderWoche = ((nTagDesJahres + nWochentag1Jan + 5) / 7); + + // 53 Kalenderwochen hat grundsätzlich nur ein Jahr, + // welches mit einem Donnerstag anfängt ! + // In Schaltjahren ist es auch mit einem Mittwoch möglich, z.B. 1992 + // Andernfalls ist diese KW schon die KW1 des Folgejahres. + if (nKalenderWoche == 53) { + boolean bIstSchaltjahr = is_leap(uJahr); + + if ((nWochentag1Jan == 4) // Donnerstag + || (nWochentag1Jan == -3) // auch Donnerstag + || ((nWochentag1Jan == 3) && bIstSchaltjahr) + || ((nWochentag1Jan == -4) && bIstSchaltjahr)) { + ; // Das ist korrekt und erlaubt + } else + nKalenderWoche = 1; // Korrektur des Wertes + } + + return nKalenderWoche; +} + +void getOsterdatum(const unsigned int uJahr, unsigned int *uTag, unsigned int *uMonat) +{ + // Berechnet für ein beliebiges Jahr das Osterdatum. + + // Quelle des Gauss - Algorithmus: Stefan Gerth, + // "Die Gauß'sche Osterregel", Nürnberg, Februar 2003. + // http://krapfen.org/content/paper/Schule/Facharbeit/Berechnung_des_Osterfestes.pdf + + unsigned int a = uJahr % 19; + unsigned int b = uJahr % 4; + unsigned int c = uJahr % 7; + + int k = uJahr / 100; + int q = k / 4; + int p = ((8 * k) + 13) / 25; + unsigned int Egz = (38 - (k - q) + p) % 30; // Die Jahrhundertepakte + unsigned int M = (53 - Egz) % 30; + unsigned int N = (4 + k - q) % 7; + + unsigned int d = ((19 * a) + M) % 30; + unsigned int e = ((2 * b) + (4 * c) + (6 * d) + N) % 7; + + // Ausrechnen des Ostertermins: + if ((22 + d + e) <= 31) { + *uTag = 22 + d + e; + *uMonat = 3; + } else { + *uTag = d + e - 9; + *uMonat = 4; + + // Zwei Ausnahmen berücksichtigen: + if (*uTag == 26) + *uTag = 19; + else if ((*uTag == 25) && (d == 28) && (a > 10)) + *uTag = 18; + } + + // Offsets für andere Feiertage: + + // Schwerdonnerstag / Weiberfastnacht -52 + // Rosenmontag -48 + // Fastnachtsdienstag -47 + // Aschermittwoch -46 + // Gründonnerstag -3 + // Karfreitag -2 + // Ostersonntag 0 + // Ostermontag +1 + // Christi Himmelfahrt +39 + // Pfingstsonntag +49 + // Pfingstmontag +50 + // Fronleichnam +60 + + // Mariä Himmelfahrt ist stets am 15. August (Danke an Michael Plugge!) +} + +void getViertenAdvent(const unsigned int uJahr, unsigned int *uTag, unsigned int *uMonat) +{ + // Berechnet für ein beliebiges Jahr das Datum des 4. Advents-Sonntags. + // Der 4. Adventssonntag ist stets der Sonntag vor dem 1. Weihnachtsfeiertag, + // muß also stets in der Periode [18. - 24.12.] liegen: + + *uMonat = 12; // Das steht jedes Jahr fest :-) + + short nWoTag = getWochentag(24, 12, uJahr); // Wochentag des 24.12. ermitteln + + *uTag = 24 - nWoTag; + + // Offsets: Der Buß- und Bettag liegt stets 32 Tage vor dem 4. Advent +} + + diff --git a/ui/calendar.h b/ui/calendar.h new file mode 100644 index 0000000..636085f --- /dev/null +++ b/ui/calendar.h @@ -0,0 +1,21 @@ +#ifndef _CALENDAR_H +#define _CALENDAR_H + +unsigned char is_leap(const unsigned int year); + +unsigned short days_of_month(const unsigned int uMonat, const unsigned int uJahr); + +short getAnzahlTageImJahr(const unsigned int uJahr); + +short getWochentag(const unsigned int uTag, const unsigned int uMonat, const unsigned int uJahr); + +short getTagDesJahres(const unsigned int uTag, const unsigned int uMonat, const unsigned int uJahr); + +short getKalenderwoche(short uTag, short uMonat, short uJahr); + +void getOsterdatum(const unsigned int uJahr, unsigned int *uTag, unsigned int *uMonat); + +void getViertenAdvent(const unsigned int uJahr, unsigned int *uTag, unsigned int *uMonat); + +#endif + diff --git a/ui/configure.in b/ui/configure.in new file mode 100644 index 0000000..7aa5ef3 --- /dev/null +++ b/ui/configure.in @@ -0,0 +1,17 @@ +AC_CONFIG_MACRO_DIR([m4]) +# AC_CONFIG_HEADER(config.h) + +AC_INIT(Makefile.am) +AM_INIT_AUTOMAKE(oswald-gui, 0.01) + +AC_PROG_CPP +AC_PROG_INSTALL +AC_PROG_LIBTOOL + +AM_MAINTAINER_MODE + +PKG_CHECK_MODULES(GTK, gtk+-2.0) +AC_SUBST(GTK_LIBS) +AC_SUBST(GTK_CFLAGS) + +AC_OUTPUT([ Makefile ]) \ No newline at end of file diff --git a/ui/embedvm.c b/ui/embedvm.c new file mode 100644 index 0000000..88ec457 --- /dev/null +++ b/ui/embedvm.c @@ -0,0 +1,311 @@ +/* + * EmbedVM - Embedded Virtual Machine for uC Applications + * + * Copyright (C) 2011 Clifford Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#include "embedvm.h" + +static inline int16_t signext(uint16_t val, uint16_t mask) +{ + val = val & mask; + if ((val & ~(mask >> 1)) != 0) + val |= ~mask; + return val; +} + +extern void embedvm_exec(struct embedvm_s *vm) +{ + uint8_t opcode = vm->mem_read(vm->ip, false, vm->user_ctx); + uint16_t addr = 0; + int16_t a = 0, b = 0; + int8_t sfa = 0; + + switch (opcode) + { + case 0x00 ... 0x3f: + sfa = signext(opcode, 0x3f); + embedvm_push(vm, embedvm_local_read(vm, sfa)); + vm->ip++; + break; + case 0x40 ... 0x7f: + sfa = signext(opcode, 0x3f); + embedvm_local_write(vm, sfa, embedvm_pop(vm)); + vm->ip++; + break; + case 0x80+0 ... 0x80+11: + case 0xa8+0 ... 0xa8+5: + b = embedvm_pop(vm); + case 0x80+12 ... 0x80+14: + a = embedvm_pop(vm); + switch (opcode) + { + case 0x80 + 0: embedvm_push(vm, a + b); break; + case 0x80 + 1: embedvm_push(vm, a - b); break; + case 0x80 + 2: embedvm_push(vm, a * b); break; + case 0x80 + 3: embedvm_push(vm, a / b); break; + case 0x80 + 4: embedvm_push(vm, a % b); break; + case 0x80 + 5: embedvm_push(vm, a << b); break; + case 0x80 + 6: embedvm_push(vm, a >> b); break; + case 0x80 + 7: embedvm_push(vm, a & b); break; + case 0x80 + 8: embedvm_push(vm, a | b); break; + case 0x80 + 9: embedvm_push(vm, a ^ b); break; + case 0x80 + 10: embedvm_push(vm, a && b); break; + case 0x80 + 11: embedvm_push(vm, a || b); break; + case 0x80 + 12: embedvm_push(vm, ~a); break; + case 0x80 + 13: embedvm_push(vm, -a); break; + case 0x80 + 14: embedvm_push(vm, !a); break; + case 0xa8 + 0: embedvm_push(vm, a < b); break; + case 0xa8 + 1: embedvm_push(vm, a <= b); break; + case 0xa8 + 2: embedvm_push(vm, a == b); break; + case 0xa8 + 3: embedvm_push(vm, a != b); break; + case 0xa8 + 4: embedvm_push(vm, a >= b); break; + case 0xa8 + 5: embedvm_push(vm, a > b); break; + + } + vm->ip++; + break; + case 0x90 ... 0x97: + a = signext(opcode, 0x07); + if ((a & 0x04) != 0) + a |= ~0x07; + embedvm_push(vm, a); + vm->ip++; + break; + case 0x98: + a = vm->mem_read(vm->ip+1, false, vm->user_ctx) & 0x00ff; + embedvm_push(vm, a); + vm->ip += 2; + break; + case 0x99: + a = vm->mem_read(vm->ip+1, false, vm->user_ctx) & 0x00ff; + embedvm_push(vm, signext(a, 0x00ff)); + vm->ip += 2; + break; + case 0x9a: + a = vm->mem_read(vm->ip+1, true, vm->user_ctx); + embedvm_push(vm, a); + vm->ip += 3; + break; + case 0x9b: + a = embedvm_pop(vm); + if (0) { + case 0x9c: + a = 0; + } + vm->sp = vm->sfp; + vm->ip = embedvm_pop(vm); + vm->sfp = embedvm_pop(vm); + if ((vm->sfp & 1) != 0) + vm->sfp &= ~1; + else + embedvm_push(vm, a); + break; + case 0x9d: + embedvm_pop(vm); + vm->ip++; + break; + case 0x9e: + addr = embedvm_pop(vm); + if (vm->mem_read(vm->ip+1, false, vm->user_ctx) == 0x9d) { + embedvm_push(vm, vm->sfp | 1); + embedvm_push(vm, vm->ip + 2); + } else { + embedvm_push(vm, vm->sfp); + embedvm_push(vm, vm->ip + 1); + } + vm->sfp = vm->sp; + vm->ip = addr; + break; + case 0x9f: + vm->ip = embedvm_pop(vm); + break; + case 0xa0 ... 0xa0+7: + if ((opcode & 1) == 0) { + addr = vm->ip + signext(vm->mem_read(vm->ip+1, false, vm->user_ctx), 0x00ff); + vm->ip += 2; + } else { + addr = vm->ip + vm->mem_read(vm->ip+1, true, vm->user_ctx); + vm->ip += 3; + } + switch (opcode) + { + case 0xa0: + case 0xa1: + vm->ip = addr; + break; + case 0xa2: + case 0xa3: + if (vm->mem_read(vm->ip, false, vm->user_ctx) == 0x9d) { + embedvm_push(vm, vm->sfp | 1); + embedvm_push(vm, vm->ip + 1); + } else { + embedvm_push(vm, vm->sfp); + embedvm_push(vm, vm->ip); + } + vm->sfp = vm->sp; + vm->ip = addr; + break; + case 0xa4: + case 0xa5: + if (embedvm_pop(vm)) + vm->ip = addr; + break; + case 0xa6: + case 0xa7: + if (!embedvm_pop(vm)) + vm->ip = addr; + break; + } + break; + case 0xae: + embedvm_push(vm, vm->sp); + vm->ip++; + break; + case 0xaf: + embedvm_push(vm, vm->sfp); + vm->ip++; + break; + case 0xb0 ... 0xb0+15: + { + uint8_t argc = embedvm_pop(vm); + int16_t argv[argc]; + for (sfa=0; sfacall_user(opcode - 0xb0, argc, argv, vm->user_ctx); + embedvm_push(vm, a); + } + vm->ip++; + break; + case 0xc0 ... 0xef: + if ((opcode & 0x07) == 5) { + /* this is a "bury" instruction */ + uint8_t depth = (opcode >> 3) & 0x07; + int16_t stack[depth+1]; + for (sfa = 0; sfa <= depth; sfa++) + stack[sfa] = embedvm_pop(vm); + embedvm_push(vm, stack[0]); + for (sfa = depth; sfa > 0; sfa--) + embedvm_push(vm, stack[sfa]); + embedvm_push(vm, stack[0]); + vm->ip++; + break; + } + if ((opcode & 0x07) == 6) { + /* this is a "dig" instruction */ + uint8_t depth = (opcode >> 3) & 0x07; + int16_t stack[depth+2]; + for (sfa = 0; sfa < depth+2; sfa++) + stack[sfa] = embedvm_pop(vm); + for (sfa = depth+1; sfa > 0; sfa--) + embedvm_push(vm, stack[sfa-1]); + embedvm_push(vm, stack[depth+1]); + vm->ip++; + break; + } + sfa = ((opcode >> 3) & 0x07) == 4 || ((opcode >> 3) & 0x07) == 5 ? 1 : 0; + switch (opcode & 0x07) + { + case 0: + addr = vm->mem_read(vm->ip+1, false, vm->user_ctx) & 0x00ff; + vm->ip += 2; + break; + case 1: + addr = vm->mem_read(vm->ip+1, true, vm->user_ctx); + vm->ip += 3; + break; + case 2: + addr = embedvm_pop(vm); + vm->ip++; + break; + case 3: + addr = (embedvm_pop(vm) << sfa) + (vm->mem_read(vm->ip+1, false, vm->user_ctx) & 0x00ff); + vm->ip += 2; + break; + case 4: + addr = (embedvm_pop(vm) << sfa) + vm->mem_read(vm->ip+1, true, vm->user_ctx); + vm->ip += 3; + break; + } + switch ((opcode >> 3) & 0x07) + { + case 0: + embedvm_push(vm, vm->mem_read(addr, false, vm->user_ctx) & 0x00ff); + break; + case 1: + vm->mem_write(addr, embedvm_pop(vm), false, vm->user_ctx); + break; + case 2: + embedvm_push(vm, signext(vm->mem_read(addr, false, vm->user_ctx), 0x00ff)); + break; + case 3: + vm->mem_write(addr, embedvm_pop(vm), false, vm->user_ctx); + break; + case 4: + embedvm_push(vm, vm->mem_read(addr, true, vm->user_ctx)); + break; + case 5: + vm->mem_write(addr, embedvm_pop(vm), true, vm->user_ctx); + break; + } + break; + case 0xf0 ... 0xf7: + for (sfa = 0; sfa <= (opcode & 0x07); sfa++) + embedvm_push(vm, 0); + vm->ip++; + break; + case 0xf8 ... 0xff: + a = embedvm_pop(vm); + vm->sp += 2 + 2*(opcode & 0x07); + embedvm_push(vm, a); + vm->ip++; + break; + } +} + +void embedvm_interrupt(struct embedvm_s *vm, uint16_t addr) +{ + embedvm_push(vm, vm->sfp | 1); + embedvm_push(vm, vm->ip); + vm->sfp = vm->sp; + vm->ip = addr; +} + +int16_t embedvm_pop(struct embedvm_s *vm) +{ + int16_t value = vm->mem_read(vm->sp, true, vm->user_ctx); + vm->sp += 2; + return value; +} + +void embedvm_push(struct embedvm_s *vm, int16_t value) +{ + vm->sp -= 2; + vm->mem_write(vm->sp, value, true, vm->user_ctx); +} + +int16_t embedvm_local_read(struct embedvm_s *vm, int8_t sfa) +{ + uint16_t addr = vm->sfp - 2*sfa + (sfa < 0 ? +2 : -2); + return vm->mem_read(addr, true, vm->user_ctx); +} + +void embedvm_local_write(struct embedvm_s *vm, int8_t sfa, int16_t value) +{ + uint16_t addr = vm->sfp - 2*sfa + (sfa < 0 ? +2 : -2); + vm->mem_write(addr, value, true, vm->user_ctx); +} + diff --git a/ui/embedvm.h b/ui/embedvm.h new file mode 100644 index 0000000..1381b24 --- /dev/null +++ b/ui/embedvm.h @@ -0,0 +1,53 @@ +/* + * EmbedVM - Embedded Virtual Machine for uC Applications + * + * Copyright (C) 2011 Clifford Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#ifndef EMBEDVM_H +#define EMBEDVM_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct embedvm_s +{ + uint16_t ip, sp, sfp; + void *user_ctx; + + int16_t (*mem_read)(uint16_t addr, bool is16bit, void *ctx); + void (*mem_write)(uint16_t addr, int16_t value, bool is16bit, void *ctx); + int16_t (*call_user)(uint8_t funcid, uint8_t argc, int16_t *argv, void *ctx); +}; + +extern void embedvm_exec(struct embedvm_s *vm); +extern void embedvm_interrupt(struct embedvm_s *vm, uint16_t addr); + +int16_t embedvm_pop(struct embedvm_s *vm); +void embedvm_push(struct embedvm_s *vm, int16_t value); + +int16_t embedvm_local_read(struct embedvm_s *vm, int8_t sfa); +void embedvm_local_write(struct embedvm_s *vm, int8_t sfa, int16_t value); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/ui/fonts/DroidSans-Bold.ttf b/ui/fonts/DroidSans-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d065b64eb1863f83c2c982264f9442f2313a44a9 GIT binary patch literal 194488 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 z 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 literal 0 HcmV?d00001 diff --git a/ui/fonts/DroidSans8x11.bdf b/ui/fonts/DroidSans8x11.bdf new file mode 100644 index 0000000..d0deeb3 --- /dev/null +++ b/ui/fonts/DroidSans8x11.bdf @@ -0,0 +1,2927 @@ +STARTFONT 2.1 +COMMENT Font converted from OTF to BDF. +FONT -FreeType-Droid Sans-Medium-R-Normal--8-60-96-96-P-44-ISO10646-1 +SIZE 6 96 96 +FONTBOUNDINGBOX 8 10 -1 -2 +STARTPROPERTIES 19 +POINT_SIZE 60 +PIXEL_SIZE 8 +RESOLUTION_X 96 +RESOLUTION_Y 96 +FONT_ASCENT 7 +FONT_DESCENT 1 +AVERAGE_WIDTH 44 +SPACING "P" +FOUNDRY "FreeType" +FAMILY_NAME "Droid Sans" +CHARSET_REGISTRY "ISO10646" +CHARSET_ENCODING "1" +WEIGHT_NAME "Medium" +SLANT "R" +SETWIDTH_NAME "Normal" +COPYRIGHT "Digitized data copyright © 2007, Google Corporation." +_TTF_PSNAME "DroidSans" +_OTF_FONTFILE "DroidSans.ttf" +_GBDFED_INFO "Edited with gbdfed 1.6." +ENDPROPERTIES +CHARS 256 +STARTCHAR char0 +ENCODING 0 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char1 +ENCODING 1 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char2 +ENCODING 2 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char3 +ENCODING 3 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char4 +ENCODING 4 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char5 +ENCODING 5 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char6 +ENCODING 6 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char7 +ENCODING 7 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char8 +ENCODING 8 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char9 +ENCODING 9 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char10 +ENCODING 10 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char11 +ENCODING 11 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char12 +ENCODING 12 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char13 +ENCODING 13 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char14 +ENCODING 14 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char15 +ENCODING 15 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char16 +ENCODING 16 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char17 +ENCODING 17 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char18 +ENCODING 18 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char19 +ENCODING 19 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char20 +ENCODING 20 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char21 +ENCODING 21 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char22 +ENCODING 22 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char23 +ENCODING 23 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char24 +ENCODING 24 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char25 +ENCODING 25 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char26 +ENCODING 26 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char27 +ENCODING 27 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char28 +ENCODING 28 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char29 +ENCODING 29 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char30 +ENCODING 30 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char31 +ENCODING 31 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char32 +ENCODING 32 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char33 +ENCODING 33 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 1 6 0 0 +BITMAP +80 +80 +80 +80 +00 +80 +ENDCHAR +STARTCHAR char34 +ENCODING 34 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 2 2 1 4 +BITMAP +C0 +C0 +ENDCHAR +STARTCHAR char35 +ENCODING 35 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +30 +30 +F8 +F8 +60 +60 +ENDCHAR +STARTCHAR char36 +ENCODING 36 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 8 0 -1 +BITMAP +40 +E0 +C0 +C0 +60 +60 +E0 +40 +ENDCHAR +STARTCHAR char37 +ENCODING 37 +SWIDTH 78 0 +DWIDTH 7 0 +BBX 6 6 0 0 +BITMAP +C8 +D0 +DC +EC +2C +4C +ENDCHAR +STARTCHAR char38 +ENCODING 38 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 6 6 0 0 +BITMAP +F0 +90 +60 +A4 +98 +F8 +ENDCHAR +STARTCHAR char39 +ENCODING 39 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 1 2 1 4 +BITMAP +80 +80 +ENDCHAR +STARTCHAR char40 +ENCODING 40 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 2 7 0 -1 +BITMAP +40 +80 +80 +80 +80 +80 +40 +ENDCHAR +STARTCHAR char41 +ENCODING 41 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 2 7 -1 -1 +BITMAP +80 +40 +40 +40 +40 +40 +80 +ENDCHAR +STARTCHAR char42 +ENCODING 42 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 4 0 2 +BITMAP +40 +E0 +40 +A0 +ENDCHAR +STARTCHAR char43 +ENCODING 43 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 4 1 1 +BITMAP +40 +40 +E0 +40 +ENDCHAR +STARTCHAR char44 +ENCODING 44 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 1 2 0 -1 +BITMAP +80 +80 +ENDCHAR +STARTCHAR char45 +ENCODING 45 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 2 1 0 1 +BITMAP +C0 +ENDCHAR +STARTCHAR char46 +ENCODING 46 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 1 1 0 0 +BITMAP +80 +ENDCHAR +STARTCHAR char47 +ENCODING 47 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 3 6 0 0 +BITMAP +20 +20 +40 +40 +80 +80 +ENDCHAR +STARTCHAR char48 +ENCODING 48 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +40 +A0 +A0 +A0 +A0 +40 +ENDCHAR +STARTCHAR char49 +ENCODING 49 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 2 6 0 0 +BITMAP +40 +C0 +40 +40 +40 +40 +ENDCHAR +STARTCHAR char50 +ENCODING 50 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +E0 +20 +20 +40 +40 +E0 +ENDCHAR +STARTCHAR char51 +ENCODING 51 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +E0 +20 +40 +20 +20 +E0 +ENDCHAR +STARTCHAR char52 +ENCODING 52 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +20 +60 +60 +A0 +F0 +20 +ENDCHAR +STARTCHAR char53 +ENCODING 53 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +E0 +80 +E0 +20 +20 +C0 +ENDCHAR +STARTCHAR char54 +ENCODING 54 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +60 +80 +E0 +A0 +A0 +60 +ENDCHAR +STARTCHAR char55 +ENCODING 55 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +E0 +20 +20 +40 +40 +40 +ENDCHAR +STARTCHAR char56 +ENCODING 56 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +E0 +A0 +A0 +40 +A0 +E0 +ENDCHAR +STARTCHAR char57 +ENCODING 57 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +C0 +A0 +A0 +E0 +20 +C0 +ENDCHAR +STARTCHAR char58 +ENCODING 58 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 1 4 0 0 +BITMAP +80 +00 +00 +80 +ENDCHAR +STARTCHAR char59 +ENCODING 59 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 1 5 0 -1 +BITMAP +80 +00 +00 +80 +80 +ENDCHAR +STARTCHAR char60 +ENCODING 60 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 4 0 1 +BITMAP +20 +40 +C0 +20 +ENDCHAR +STARTCHAR char61 +ENCODING 61 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 3 0 1 +BITMAP +E0 +00 +E0 +ENDCHAR +STARTCHAR char62 +ENCODING 62 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 4 0 1 +BITMAP +80 +40 +60 +80 +ENDCHAR +STARTCHAR char63 +ENCODING 63 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +E0 +20 +20 +40 +00 +40 +ENDCHAR +STARTCHAR char64 +ENCODING 64 +SWIDTH 78 0 +DWIDTH 7 0 +BBX 6 7 0 -1 +BITMAP +78 +84 +B4 +B4 +BC +80 +78 +ENDCHAR +STARTCHAR char65 +ENCODING 65 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 6 0 0 +BITMAP +20 +50 +50 +70 +88 +88 +ENDCHAR +STARTCHAR char66 +ENCODING 66 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +F0 +90 +F0 +90 +90 +F0 +ENDCHAR +STARTCHAR char67 +ENCODING 67 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +70 +80 +80 +80 +80 +70 +ENDCHAR +STARTCHAR char68 +ENCODING 68 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +E0 +90 +90 +90 +90 +E0 +ENDCHAR +STARTCHAR char69 +ENCODING 69 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +E0 +80 +E0 +80 +80 +E0 +ENDCHAR +STARTCHAR char70 +ENCODING 70 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +E0 +80 +E0 +80 +80 +80 +ENDCHAR +STARTCHAR char71 +ENCODING 71 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 6 0 0 +BITMAP +78 +80 +80 +98 +88 +78 +ENDCHAR +STARTCHAR char72 +ENCODING 72 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 6 0 0 +BITMAP +88 +88 +F8 +88 +88 +88 +ENDCHAR +STARTCHAR char73 +ENCODING 73 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 1 6 1 0 +BITMAP +80 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR char74 +ENCODING 74 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 2 8 -1 -2 +BITMAP +40 +40 +40 +40 +40 +40 +40 +80 +ENDCHAR +STARTCHAR char75 +ENCODING 75 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +90 +A0 +C0 +A0 +A0 +90 +ENDCHAR +STARTCHAR char76 +ENCODING 76 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +80 +80 +80 +80 +80 +F0 +ENDCHAR +STARTCHAR char77 +ENCODING 77 +SWIDTH 1000 0 +DWIDTH 8 0 +BBX 7 6 0 0 +BITMAP +82 +C6 +C6 +AA +AA +92 +ENDCHAR +STARTCHAR char78 +ENCODING 78 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 6 0 0 +BITMAP +88 +C8 +A8 +A8 +98 +88 +ENDCHAR +STARTCHAR char79 +ENCODING 79 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 6 0 0 +BITMAP +70 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char80 +ENCODING 80 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +F0 +90 +90 +E0 +80 +80 +ENDCHAR +STARTCHAR char81 +ENCODING 81 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 7 0 -1 +BITMAP +70 +88 +88 +88 +88 +70 +10 +ENDCHAR +STARTCHAR char82 +ENCODING 82 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +F0 +90 +90 +E0 +A0 +90 +ENDCHAR +STARTCHAR char83 +ENCODING 83 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +E0 +80 +C0 +20 +20 +E0 +ENDCHAR +STARTCHAR char84 +ENCODING 84 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +E0 +40 +40 +40 +40 +40 +ENDCHAR +STARTCHAR char85 +ENCODING 85 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 6 0 0 +BITMAP +88 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char86 +ENCODING 86 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 6 0 0 +BITMAP +88 +88 +50 +50 +50 +20 +ENDCHAR +STARTCHAR char87 +ENCODING 87 +SWIDTH 1000 0 +DWIDTH 8 0 +BBX 7 6 0 0 +BITMAP +92 +AA +AA +AA +4C +44 +ENDCHAR +STARTCHAR char88 +ENCODING 88 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +90 +60 +60 +60 +A0 +90 +ENDCHAR +STARTCHAR char89 +ENCODING 89 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 5 6 -1 0 +BITMAP +88 +50 +50 +20 +20 +20 +ENDCHAR +STARTCHAR char90 +ENCODING 90 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +F0 +20 +20 +40 +40 +F0 +ENDCHAR +STARTCHAR char91 +ENCODING 91 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 2 7 1 -1 +BITMAP +C0 +80 +80 +80 +80 +80 +C0 +ENDCHAR +STARTCHAR char92 +ENCODING 92 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 3 6 0 0 +BITMAP +80 +80 +40 +40 +20 +20 +ENDCHAR +STARTCHAR char93 +ENCODING 93 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 2 7 -1 -1 +BITMAP +C0 +40 +40 +40 +40 +40 +C0 +ENDCHAR +STARTCHAR char94 +ENCODING 94 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 4 4 0 2 +BITMAP +20 +60 +90 +90 +ENDCHAR +STARTCHAR char95 +ENCODING 95 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 3 1 0 -2 +BITMAP +E0 +ENDCHAR +STARTCHAR char96 +ENCODING 96 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 2 2 2 5 +BITMAP +80 +40 +ENDCHAR +STARTCHAR char97 +ENCODING 97 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 4 0 0 +BITMAP +E0 +20 +E0 +E0 +ENDCHAR +STARTCHAR char98 +ENCODING 98 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +80 +80 +E0 +90 +90 +E0 +ENDCHAR +STARTCHAR char99 +ENCODING 99 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 4 0 0 +BITMAP +60 +80 +80 +60 +ENDCHAR +STARTCHAR char100 +ENCODING 100 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +10 +10 +70 +90 +90 +70 +ENDCHAR +STARTCHAR char101 +ENCODING 101 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 4 0 0 +BITMAP +E0 +E0 +80 +E0 +ENDCHAR +STARTCHAR char102 +ENCODING 102 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 2 6 0 0 +BITMAP +C0 +80 +C0 +80 +80 +80 +ENDCHAR +STARTCHAR char103 +ENCODING 103 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 4 6 0 -2 +BITMAP +F0 +A0 +E0 +70 +90 +F0 +ENDCHAR +STARTCHAR char104 +ENCODING 104 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +80 +80 +F0 +90 +90 +90 +ENDCHAR +STARTCHAR char105 +ENCODING 105 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 1 6 0 0 +BITMAP +80 +00 +80 +80 +80 +80 +ENDCHAR +STARTCHAR char106 +ENCODING 106 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 2 8 -1 -2 +BITMAP +40 +00 +40 +40 +40 +40 +40 +C0 +ENDCHAR +STARTCHAR char107 +ENCODING 107 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +80 +80 +A0 +C0 +C0 +A0 +ENDCHAR +STARTCHAR char108 +ENCODING 108 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 1 6 0 0 +BITMAP +80 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR char109 +ENCODING 109 +SWIDTH 89 0 +DWIDTH 8 0 +BBX 7 4 0 0 +BITMAP +EE +92 +92 +92 +ENDCHAR +STARTCHAR char110 +ENCODING 110 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 4 0 0 +BITMAP +F0 +90 +90 +90 +ENDCHAR +STARTCHAR char111 +ENCODING 111 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 4 0 0 +BITMAP +60 +90 +90 +60 +ENDCHAR +STARTCHAR char112 +ENCODING 112 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 -2 +BITMAP +E0 +90 +90 +E0 +80 +80 +ENDCHAR +STARTCHAR char113 +ENCODING 113 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 -2 +BITMAP +70 +90 +90 +70 +10 +10 +ENDCHAR +STARTCHAR char114 +ENCODING 114 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 2 4 0 0 +BITMAP +C0 +80 +80 +80 +ENDCHAR +STARTCHAR char115 +ENCODING 115 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 4 0 0 +BITMAP +E0 +C0 +20 +E0 +ENDCHAR +STARTCHAR char116 +ENCODING 116 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 2 5 0 0 +BITMAP +80 +C0 +80 +80 +C0 +ENDCHAR +STARTCHAR char117 +ENCODING 117 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 4 0 0 +BITMAP +90 +90 +90 +F0 +ENDCHAR +STARTCHAR char118 +ENCODING 118 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 4 0 0 +BITMAP +A0 +A0 +A0 +40 +ENDCHAR +STARTCHAR char119 +ENCODING 119 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 4 0 0 +BITMAP +A8 +A8 +D0 +50 +ENDCHAR +STARTCHAR char120 +ENCODING 120 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 4 0 0 +BITMAP +A0 +40 +40 +A0 +ENDCHAR +STARTCHAR char121 +ENCODING 121 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 -2 +BITMAP +A0 +A0 +A0 +40 +40 +80 +ENDCHAR +STARTCHAR char122 +ENCODING 122 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 4 0 0 +BITMAP +E0 +40 +40 +E0 +ENDCHAR +STARTCHAR char123 +ENCODING 123 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 2 7 0 -1 +BITMAP +40 +40 +40 +80 +40 +40 +40 +ENDCHAR +STARTCHAR char124 +ENCODING 124 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 1 8 1 -2 +BITMAP +80 +80 +80 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR char125 +ENCODING 125 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 2 7 1 -1 +BITMAP +80 +80 +80 +40 +80 +80 +80 +ENDCHAR +STARTCHAR char126 +ENCODING 126 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 2 0 1 +BITMAP +80 +60 +ENDCHAR +STARTCHAR char127 +ENCODING 127 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char128 +ENCODING 128 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char129 +ENCODING 129 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char130 +ENCODING 130 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char131 +ENCODING 131 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char132 +ENCODING 132 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char133 +ENCODING 133 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char134 +ENCODING 134 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char135 +ENCODING 135 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char136 +ENCODING 136 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char137 +ENCODING 137 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char138 +ENCODING 138 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char139 +ENCODING 139 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char140 +ENCODING 140 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char141 +ENCODING 141 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char142 +ENCODING 142 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char143 +ENCODING 143 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char144 +ENCODING 144 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char145 +ENCODING 145 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char146 +ENCODING 146 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char147 +ENCODING 147 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char148 +ENCODING 148 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char149 +ENCODING 149 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char150 +ENCODING 150 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char151 +ENCODING 151 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char152 +ENCODING 152 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char153 +ENCODING 153 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char154 +ENCODING 154 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char155 +ENCODING 155 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char156 +ENCODING 156 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char157 +ENCODING 157 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char158 +ENCODING 158 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char159 +ENCODING 159 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char160 +ENCODING 160 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char161 +ENCODING 161 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 1 6 0 -2 +BITMAP +80 +00 +80 +80 +80 +80 +ENDCHAR +STARTCHAR char162 +ENCODING 162 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 2 6 1 0 +BITMAP +40 +C0 +80 +80 +C0 +40 +ENDCHAR +STARTCHAR char163 +ENCODING 163 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +60 +40 +40 +E0 +40 +E0 +ENDCHAR +STARTCHAR char164 +ENCODING 164 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 3 0 1 +BITMAP +E0 +A0 +E0 +ENDCHAR +STARTCHAR char165 +ENCODING 165 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 5 6 -1 0 +BITMAP +88 +50 +60 +70 +70 +20 +ENDCHAR +STARTCHAR char166 +ENCODING 166 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 1 8 1 -2 +BITMAP +80 +80 +80 +00 +00 +80 +80 +80 +ENDCHAR +STARTCHAR char167 +ENCODING 167 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +E0 +C0 +A0 +E0 +20 +E0 +ENDCHAR +STARTCHAR char168 +ENCODING 168 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 3 1 1 5 +BITMAP +A0 +ENDCHAR +STARTCHAR char169 +ENCODING 169 +SWIDTH 78 0 +DWIDTH 7 0 +BBX 6 6 0 0 +BITMAP +78 +B4 +A4 +B4 +84 +78 +ENDCHAR +STARTCHAR char170 +ENCODING 170 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 3 3 0 3 +BITMAP +E0 +E0 +E0 +ENDCHAR +STARTCHAR char171 +ENCODING 171 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 4 4 0 0 +BITMAP +50 +A0 +A0 +50 +ENDCHAR +STARTCHAR char172 +ENCODING 172 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 2 0 1 +BITMAP +E0 +20 +ENDCHAR +STARTCHAR char173 +ENCODING 173 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 2 1 0 1 +BITMAP +C0 +ENDCHAR +STARTCHAR char174 +ENCODING 174 +SWIDTH 78 0 +DWIDTH 7 0 +BBX 6 6 0 0 +BITMAP +78 +BC +B4 +B4 +84 +78 +ENDCHAR +STARTCHAR char175 +ENCODING 175 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 4 1 0 6 +BITMAP +F0 +ENDCHAR +STARTCHAR char176 +ENCODING 176 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 3 3 0 3 +BITMAP +E0 +A0 +E0 +ENDCHAR +STARTCHAR char177 +ENCODING 177 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 5 1 0 +BITMAP +40 +40 +E0 +40 +E0 +ENDCHAR +STARTCHAR char178 +ENCODING 178 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 4 0 2 +BITMAP +E0 +20 +40 +C0 +ENDCHAR +STARTCHAR char179 +ENCODING 179 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 4 0 2 +BITMAP +E0 +20 +20 +E0 +ENDCHAR +STARTCHAR char180 +ENCODING 180 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 2 2 2 5 +BITMAP +40 +80 +ENDCHAR +STARTCHAR char181 +ENCODING 181 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 -2 +BITMAP +90 +90 +90 +F0 +80 +80 +ENDCHAR +STARTCHAR char182 +ENCODING 182 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 -1 +BITMAP +F0 +D0 +D0 +D0 +30 +30 +ENDCHAR +STARTCHAR char183 +ENCODING 183 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 1 1 0 2 +BITMAP +80 +ENDCHAR +STARTCHAR char184 +ENCODING 184 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 1 2 1 -2 +BITMAP +80 +80 +ENDCHAR +STARTCHAR char185 +ENCODING 185 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 2 4 0 2 +BITMAP +C0 +40 +40 +40 +ENDCHAR +STARTCHAR char186 +ENCODING 186 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 3 3 0 3 +BITMAP +E0 +A0 +E0 +ENDCHAR +STARTCHAR char187 +ENCODING 187 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 4 4 0 0 +BITMAP +A0 +50 +50 +A0 +ENDCHAR +STARTCHAR char188 +ENCODING 188 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 6 6 0 0 +BITMAP +D0 +50 +6C +74 +4C +44 +ENDCHAR +STARTCHAR char189 +ENCODING 189 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 6 6 0 0 +BITMAP +D0 +50 +7C +64 +48 +58 +ENDCHAR +STARTCHAR char190 +ENCODING 190 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 6 6 0 0 +BITMAP +E8 +28 +3C +F4 +2C +24 +ENDCHAR +STARTCHAR char191 +ENCODING 191 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 -2 +BITMAP +40 +00 +40 +80 +80 +E0 +ENDCHAR +STARTCHAR char192 +ENCODING 192 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +40 +20 +00 +20 +50 +50 +70 +88 +88 +ENDCHAR +STARTCHAR char193 +ENCODING 193 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +10 +20 +00 +20 +50 +50 +70 +88 +88 +ENDCHAR +STARTCHAR char194 +ENCODING 194 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +20 +50 +00 +20 +50 +50 +70 +88 +88 +ENDCHAR +STARTCHAR char195 +ENCODING 195 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +60 +10 +00 +20 +50 +50 +70 +88 +88 +ENDCHAR +STARTCHAR char196 +ENCODING 196 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 8 0 0 +BITMAP +50 +00 +20 +50 +50 +70 +88 +88 +ENDCHAR +STARTCHAR char197 +ENCODING 197 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 7 0 0 +BITMAP +30 +30 +50 +50 +70 +88 +88 +ENDCHAR +STARTCHAR char198 +ENCODING 198 +SWIDTH 78 0 +DWIDTH 7 0 +BBX 6 6 0 0 +BITMAP +3C +30 +5C +50 +F0 +9C +ENDCHAR +STARTCHAR char199 +ENCODING 199 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 8 0 -2 +BITMAP +70 +80 +80 +80 +80 +70 +10 +10 +ENDCHAR +STARTCHAR char200 +ENCODING 200 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 9 0 0 +BITMAP +40 +20 +00 +E0 +80 +E0 +80 +80 +E0 +ENDCHAR +STARTCHAR char201 +ENCODING 201 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 9 0 0 +BITMAP +20 +40 +00 +E0 +80 +E0 +80 +80 +E0 +ENDCHAR +STARTCHAR char202 +ENCODING 202 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 9 0 0 +BITMAP +40 +A0 +00 +E0 +80 +E0 +80 +80 +E0 +ENDCHAR +STARTCHAR char203 +ENCODING 203 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 8 0 0 +BITMAP +A0 +00 +E0 +80 +E0 +80 +80 +E0 +ENDCHAR +STARTCHAR char204 +ENCODING 204 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 2 9 0 0 +BITMAP +80 +40 +00 +40 +40 +40 +40 +40 +40 +ENDCHAR +STARTCHAR char205 +ENCODING 205 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 2 9 1 0 +BITMAP +40 +80 +00 +80 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR char206 +ENCODING 206 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 9 0 0 +BITMAP +40 +A0 +00 +40 +40 +40 +40 +40 +40 +ENDCHAR +STARTCHAR char207 +ENCODING 207 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 8 0 0 +BITMAP +A0 +00 +40 +40 +40 +40 +40 +40 +ENDCHAR +STARTCHAR char208 +ENCODING 208 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 5 6 -1 0 +BITMAP +70 +48 +E8 +48 +48 +70 +ENDCHAR +STARTCHAR char209 +ENCODING 209 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +60 +10 +00 +88 +C8 +A8 +A8 +98 +88 +ENDCHAR +STARTCHAR char210 +ENCODING 210 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +40 +20 +00 +70 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char211 +ENCODING 211 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +10 +20 +00 +70 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char212 +ENCODING 212 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +20 +50 +00 +70 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char213 +ENCODING 213 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +60 +10 +00 +70 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char214 +ENCODING 214 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 8 0 0 +BITMAP +50 +00 +70 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char215 +ENCODING 215 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 3 1 1 +BITMAP +A0 +40 +A0 +ENDCHAR +STARTCHAR char216 +ENCODING 216 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 6 0 0 +BITMAP +70 +98 +A8 +A8 +C8 +70 +ENDCHAR +STARTCHAR char217 +ENCODING 217 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +40 +20 +00 +88 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char218 +ENCODING 218 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +10 +20 +00 +88 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char219 +ENCODING 219 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +20 +50 +00 +88 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char220 +ENCODING 220 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 8 0 0 +BITMAP +50 +00 +88 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char221 +ENCODING 221 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 5 9 -1 0 +BITMAP +10 +20 +00 +88 +50 +50 +20 +20 +20 +ENDCHAR +STARTCHAR char222 +ENCODING 222 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +80 +E0 +90 +90 +E0 +80 +ENDCHAR +STARTCHAR char223 +ENCODING 223 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +F0 +90 +A0 +A0 +90 +B0 +ENDCHAR +STARTCHAR char224 +ENCODING 224 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 7 0 0 +BITMAP +40 +20 +00 +E0 +20 +E0 +E0 +ENDCHAR +STARTCHAR char225 +ENCODING 225 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 7 0 0 +BITMAP +20 +40 +00 +E0 +20 +E0 +E0 +ENDCHAR +STARTCHAR char226 +ENCODING 226 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 7 0 0 +BITMAP +40 +A0 +00 +E0 +20 +E0 +E0 +ENDCHAR +STARTCHAR char227 +ENCODING 227 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 7 0 0 +BITMAP +C0 +20 +00 +E0 +20 +E0 +E0 +ENDCHAR +STARTCHAR char228 +ENCODING 228 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +A0 +00 +E0 +20 +E0 +E0 +ENDCHAR +STARTCHAR char229 +ENCODING 229 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 7 0 0 +BITMAP +60 +60 +00 +E0 +20 +E0 +E0 +ENDCHAR +STARTCHAR char230 +ENCODING 230 +SWIDTH 78 0 +DWIDTH 7 0 +BBX 6 4 0 0 +BITMAP +EC +1C +F0 +EC +ENDCHAR +STARTCHAR char231 +ENCODING 231 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 -2 +BITMAP +60 +80 +80 +60 +20 +20 +ENDCHAR +STARTCHAR char232 +ENCODING 232 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 7 0 0 +BITMAP +40 +20 +00 +E0 +E0 +80 +E0 +ENDCHAR +STARTCHAR char233 +ENCODING 233 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 7 0 0 +BITMAP +20 +40 +00 +E0 +E0 +80 +E0 +ENDCHAR +STARTCHAR char234 +ENCODING 234 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 7 0 0 +BITMAP +40 +A0 +00 +E0 +E0 +80 +E0 +ENDCHAR +STARTCHAR char235 +ENCODING 235 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +A0 +00 +E0 +E0 +80 +E0 +ENDCHAR +STARTCHAR char236 +ENCODING 236 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 2 7 -1 0 +BITMAP +80 +40 +00 +40 +40 +40 +40 +ENDCHAR +STARTCHAR char237 +ENCODING 237 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 2 7 0 0 +BITMAP +40 +80 +00 +80 +80 +80 +80 +ENDCHAR +STARTCHAR char238 +ENCODING 238 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 3 7 -1 0 +BITMAP +40 +A0 +00 +40 +40 +40 +40 +ENDCHAR +STARTCHAR char239 +ENCODING 239 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 3 6 -1 0 +BITMAP +A0 +00 +40 +40 +40 +40 +ENDCHAR +STARTCHAR char240 +ENCODING 240 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +50 +60 +70 +90 +90 +60 +ENDCHAR +STARTCHAR char241 +ENCODING 241 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +60 +10 +00 +F0 +90 +90 +90 +ENDCHAR +STARTCHAR char242 +ENCODING 242 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +40 +20 +00 +60 +90 +90 +60 +ENDCHAR +STARTCHAR char243 +ENCODING 243 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +10 +20 +00 +60 +90 +90 +60 +ENDCHAR +STARTCHAR char244 +ENCODING 244 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +20 +50 +00 +60 +90 +90 +60 +ENDCHAR +STARTCHAR char245 +ENCODING 245 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +60 +10 +00 +60 +90 +90 +60 +ENDCHAR +STARTCHAR char246 +ENCODING 246 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +50 +00 +60 +90 +90 +60 +ENDCHAR +STARTCHAR char247 +ENCODING 247 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 5 1 0 +BITMAP +40 +00 +E0 +00 +40 +ENDCHAR +STARTCHAR char248 +ENCODING 248 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 4 0 0 +BITMAP +60 +B0 +D0 +60 +ENDCHAR +STARTCHAR char249 +ENCODING 249 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +40 +20 +00 +90 +90 +90 +F0 +ENDCHAR +STARTCHAR char250 +ENCODING 250 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +10 +20 +00 +90 +90 +90 +F0 +ENDCHAR +STARTCHAR char251 +ENCODING 251 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +20 +50 +00 +90 +90 +90 +F0 +ENDCHAR +STARTCHAR char252 +ENCODING 252 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +50 +00 +90 +90 +90 +F0 +ENDCHAR +STARTCHAR char253 +ENCODING 253 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 9 0 -2 +BITMAP +20 +40 +00 +A0 +A0 +A0 +40 +40 +80 +ENDCHAR +STARTCHAR char254 +ENCODING 254 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 8 0 -2 +BITMAP +80 +80 +E0 +90 +90 +E0 +80 +80 +ENDCHAR +STARTCHAR char255 +ENCODING 255 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 8 0 -2 +BITMAP +A0 +00 +A0 +A0 +A0 +40 +40 +80 +ENDCHAR +ENDFONT diff --git a/ui/fonts/DroidSans8x11.h b/ui/fonts/DroidSans8x11.h new file mode 100644 index 0000000..7edc451 --- /dev/null +++ b/ui/fonts/DroidSans8x11.h @@ -0,0 +1,261 @@ +/* -FreeType-Droid Sans-Medium-R-Normal--8-60-96-96-P-44-ISO10646-1 */ +#define FONT_WIDTH_Droid_SansMedium_8x11 8 +#define FONT_HEIGHT_Droid_SansMedium_8x11 11 +const uint8_t FONT_DATA_Droid_SansMedium_8x11[256][12] = { +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x00,0x02,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x0c,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x18,0x18,0x3e,0x3e,0x0c,0x0c,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x04,0x0e,0x06,0x06,0x0c,0x0c,0x0e,0x04,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x26,0x16,0x76,0x6e,0x68,0x64,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x1e,0x12,0x0c,0x4a,0x32,0x3e,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x04,0x02,0x02,0x02,0x02,0x02,0x04,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x02,0x01,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x04,0x0e,0x04,0x0a,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x08,0x08,0x1c,0x08,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x08,0x08,0x04,0x04,0x02,0x02,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x04,0x0a,0x0a,0x0a,0x0a,0x04,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x04,0x06,0x04,0x04,0x04,0x04,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x08,0x08,0x04,0x04,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x08,0x04,0x08,0x08,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x08,0x0c,0x0c,0x0a,0x1e,0x08,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x02,0x0e,0x08,0x08,0x06,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0c,0x02,0x0e,0x0a,0x0a,0x0c,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x08,0x08,0x04,0x04,0x04,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x0a,0x0a,0x04,0x0a,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x06,0x0a,0x0a,0x0e,0x08,0x06,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x02,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x02,0x02,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x08,0x04,0x06,0x08,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x0e,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x02,0x04,0x0c,0x02,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x08,0x08,0x04,0x00,0x04,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x3c,0x42,0x5a,0x5a,0x7a,0x02,0x3c,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x08,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1e,0x12,0x1e,0x12,0x12,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1c,0x02,0x02,0x02,0x02,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x0e,0x12,0x12,0x12,0x12,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x02,0x0e,0x02,0x02,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x02,0x0e,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x3c,0x02,0x02,0x32,0x22,0x3c,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x22,0x22,0x3e,0x22,0x22,0x22,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,}, +{/*w*/5,0x00,0x00,0x00,0x12,0x0a,0x06,0x0a,0x0a,0x12,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x1e,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x82,0xc6,0xc6,0xaa,0xaa,0x92,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x22,0x26,0x2a,0x2a,0x32,0x22,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x1c,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1e,0x12,0x12,0x0e,0x02,0x02,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x1c,0x22,0x22,0x22,0x22,0x1c,0x10,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1e,0x12,0x12,0x0e,0x0a,0x12,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x02,0x06,0x08,0x08,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x04,0x04,0x04,0x04,0x04,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x22,0x22,0x14,0x14,0x14,0x08,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x92,0xaa,0xaa,0xaa,0x64,0x44,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x12,0x0c,0x0c,0x0c,0x0a,0x12,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x11,0x0a,0x0a,0x04,0x04,0x04,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1e,0x08,0x08,0x04,0x04,0x1e,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x0c,0x04,0x04,0x04,0x04,0x04,0x0c,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x02,0x02,0x04,0x04,0x08,0x08,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x03,0x02,0x02,0x02,0x02,0x02,0x03,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x08,0x0c,0x12,0x12,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,}, +{/*w*/5,0x00,0x00,0x08,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0e,0x08,0x0e,0x0e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x02,0x02,0x0e,0x12,0x12,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0c,0x02,0x02,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x10,0x10,0x1c,0x12,0x12,0x1c,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0e,0x0e,0x02,0x0e,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x06,0x02,0x06,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x1e,0x0a,0x0e,0x1c,0x12,0x1e,}, +{/*w*/5,0x00,0x00,0x00,0x02,0x02,0x1e,0x12,0x12,0x12,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x02,0x00,0x02,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0x03,}, +{/*w*/4,0x00,0x00,0x00,0x02,0x02,0x0a,0x06,0x06,0x0a,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x00,0x00,0xee,0x92,0x92,0x92,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x1e,0x12,0x12,0x12,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x0e,0x12,0x12,0x0e,0x02,0x02,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x1c,0x12,0x12,0x1c,0x10,0x10,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x06,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0e,0x06,0x08,0x0e,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x02,0x06,0x02,0x02,0x06,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x12,0x12,0x12,0x1e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0a,0x0a,0x0a,0x04,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x2a,0x2a,0x16,0x14,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0a,0x04,0x04,0x0a,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0a,0x0a,0x0a,0x04,0x04,0x02,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0e,0x04,0x04,0x0e,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x04,0x04,0x04,0x02,0x04,0x04,0x04,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,}, +{/*w*/3,0x00,0x00,0x00,0x04,0x04,0x04,0x08,0x04,0x04,0x04,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x0c,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x02,0x02,0x02,}, +{/*w*/4,0x00,0x00,0x00,0x08,0x0c,0x04,0x04,0x0c,0x08,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0c,0x04,0x04,0x0e,0x04,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0e,0x0a,0x0e,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x11,0x0a,0x06,0x0e,0x0e,0x04,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x04,0x04,0x04,0x00,0x00,0x04,0x04,0x04,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x06,0x0a,0x0e,0x08,0x0e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x3c,0x5a,0x4a,0x5a,0x42,0x3c,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x0e,0x0e,0x0e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x14,0x0a,0x0a,0x14,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x08,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x3c,0x7a,0x5a,0x5a,0x42,0x3c,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x0e,0x0a,0x0e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x08,0x08,0x1c,0x08,0x1c,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x08,0x04,0x06,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x08,0x08,0x0e,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x12,0x12,0x12,0x1e,0x02,0x02,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x1e,0x16,0x16,0x16,0x18,0x18,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,}, +{/*w*/4,0x00,0x00,0x00,0x06,0x04,0x04,0x04,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x0e,0x0a,0x0e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0a,0x14,0x14,0x0a,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x16,0x14,0x6c,0x5c,0x64,0x44,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x16,0x14,0x7c,0x4c,0x24,0x34,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x2e,0x28,0x78,0x5e,0x68,0x48,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x02,0x02,0x0e,}, +{/*w*/6,0x04,0x08,0x00,0x08,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,}, +{/*w*/6,0x10,0x08,0x00,0x08,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,}, +{/*w*/6,0x08,0x14,0x00,0x08,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,}, +{/*w*/6,0x0c,0x10,0x00,0x08,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,}, +{/*w*/6,0x00,0x14,0x00,0x08,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x18,0x18,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x78,0x18,0x74,0x14,0x1e,0x72,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1c,0x02,0x02,0x02,0x02,0x1c,0x10,0x10,}, +{/*w*/4,0x04,0x08,0x00,0x0e,0x02,0x0e,0x02,0x02,0x0e,0x00,0x00,}, +{/*w*/4,0x08,0x04,0x00,0x0e,0x02,0x0e,0x02,0x02,0x0e,0x00,0x00,}, +{/*w*/4,0x04,0x0a,0x00,0x0e,0x02,0x0e,0x02,0x02,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x0a,0x00,0x0e,0x02,0x0e,0x02,0x02,0x0e,0x00,0x00,}, +{/*w*/4,0x02,0x04,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,}, +{/*w*/4,0x08,0x04,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,}, +{/*w*/4,0x04,0x0a,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,}, +{/*w*/4,0x00,0x0a,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x0e,0x12,0x17,0x12,0x12,0x0e,0x00,0x00,}, +{/*w*/6,0x0c,0x10,0x00,0x22,0x26,0x2a,0x2a,0x32,0x22,0x00,0x00,}, +{/*w*/6,0x04,0x08,0x00,0x1c,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/6,0x10,0x08,0x00,0x1c,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/6,0x08,0x14,0x00,0x1c,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/6,0x0c,0x10,0x00,0x1c,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/6,0x00,0x14,0x00,0x1c,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x14,0x08,0x14,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x1c,0x32,0x2a,0x2a,0x26,0x1c,0x00,0x00,}, +{/*w*/6,0x04,0x08,0x00,0x22,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/6,0x10,0x08,0x00,0x22,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/6,0x08,0x14,0x00,0x22,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/6,0x00,0x14,0x00,0x22,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/4,0x08,0x04,0x00,0x11,0x0a,0x0a,0x04,0x04,0x04,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x02,0x0e,0x12,0x12,0x0e,0x02,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1e,0x12,0x0a,0x0a,0x12,0x1a,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x04,0x08,0x00,0x0e,0x08,0x0e,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x08,0x04,0x00,0x0e,0x08,0x0e,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x04,0x0a,0x00,0x0e,0x08,0x0e,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x06,0x08,0x00,0x0e,0x08,0x0e,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0a,0x00,0x0e,0x08,0x0e,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x0c,0x0c,0x00,0x0e,0x08,0x0e,0x0e,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x6e,0x70,0x1e,0x6e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0c,0x02,0x02,0x0c,0x08,0x08,}, +{/*w*/4,0x00,0x00,0x04,0x08,0x00,0x0e,0x0e,0x02,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x08,0x04,0x00,0x0e,0x0e,0x02,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x04,0x0a,0x00,0x0e,0x0e,0x02,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0a,0x00,0x0e,0x0e,0x02,0x0e,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x01,0x02,0x00,0x02,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x04,0x02,0x00,0x02,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x02,0x05,0x00,0x02,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x05,0x00,0x02,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x14,0x0c,0x1c,0x12,0x12,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x0c,0x10,0x00,0x1e,0x12,0x12,0x12,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x04,0x08,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x10,0x08,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x08,0x14,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x0c,0x10,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x14,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x08,0x00,0x1c,0x00,0x08,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x0c,0x1a,0x16,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x04,0x08,0x00,0x12,0x12,0x12,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x10,0x08,0x00,0x12,0x12,0x12,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x08,0x14,0x00,0x12,0x12,0x12,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x14,0x00,0x12,0x12,0x12,0x1e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x08,0x04,0x00,0x0a,0x0a,0x0a,0x04,0x04,0x02,}, +{/*w*/5,0x00,0x00,0x00,0x02,0x02,0x0e,0x12,0x12,0x0e,0x02,0x02,}, +{/*w*/4,0x00,0x00,0x00,0x0a,0x00,0x0a,0x0a,0x0a,0x04,0x04,0x02,}, +}; diff --git a/ui/fonts/DroidSans8x12.bdf b/ui/fonts/DroidSans8x12.bdf new file mode 100644 index 0000000..d74bee4 --- /dev/null +++ b/ui/fonts/DroidSans8x12.bdf @@ -0,0 +1,3090 @@ +STARTFONT 2.1 +COMMENT Font converted from OTF to BDF. +FONT -FreeType-Droid_Sans-Medium-R-Normal--9-70-96-96-P-49-ISO10646-1 +SIZE 7 96 96 +FONTBOUNDINGBOX 8 12 -1 -2 +STARTPROPERTIES 19 +POINT_SIZE 70 +PIXEL_SIZE 9 +RESOLUTION_X 96 +RESOLUTION_Y 96 +FONT_ASCENT 8 +FONT_DESCENT 2 +AVERAGE_WIDTH 49 +SPACING "P" +FOUNDRY "FreeType" +FAMILY_NAME "Droid_Sans" +CHARSET_REGISTRY "ISO10646" +CHARSET_ENCODING "1" +WEIGHT_NAME "Medium" +SLANT "R" +SETWIDTH_NAME "Normal" +COPYRIGHT "Digitized data copyright © 2007, Google Corporation." +_TTF_PSNAME "DroidSans" +_OTF_FONTFILE "DroidSans.ttf" +_GBDFED_INFO "Edited with gbdfed 1.6." +ENDPROPERTIES +CHARS 256 +STARTCHAR char0 +ENCODING 0 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 1 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 2 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 3 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 4 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 5 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 6 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 7 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 8 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 9 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 10 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 11 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 12 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 13 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 14 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 15 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 16 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 17 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 18 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 19 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 20 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 21 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 22 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 23 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 24 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 25 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 26 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 27 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 28 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 29 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 30 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 31 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char32 +ENCODING 32 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char33 +ENCODING 33 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 1 7 0 0 +BITMAP +80 +80 +80 +80 +80 +00 +80 +ENDCHAR +STARTCHAR char34 +ENCODING 34 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 3 2 0 5 +BITMAP +A0 +A0 +ENDCHAR +STARTCHAR char35 +ENCODING 35 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +28 +28 +FC +48 +FC +50 +50 +ENDCHAR +STARTCHAR char36 +ENCODING 36 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 9 0 -1 +BITMAP +20 +70 +A0 +A0 +60 +50 +50 +E0 +40 +ENDCHAR +STARTCHAR char37 +ENCODING 37 +SWIDTH 857 0 +DWIDTH 8 0 +BBX 7 7 0 0 +BITMAP +E4 +A8 +A8 +FE +2A +2A +4E +ENDCHAR +STARTCHAR char38 +ENCODING 38 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +F0 +90 +A0 +40 +A4 +98 +78 +ENDCHAR +STARTCHAR char39 +ENCODING 39 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 1 2 0 5 +BITMAP +80 +80 +ENDCHAR +STARTCHAR char40 +ENCODING 40 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 2 8 0 -1 +BITMAP +40 +80 +80 +80 +80 +80 +80 +40 +ENDCHAR +STARTCHAR char41 +ENCODING 41 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 2 8 0 -1 +BITMAP +80 +40 +40 +40 +40 +40 +40 +80 +ENDCHAR +STARTCHAR char42 +ENCODING 42 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 5 4 0 3 +BITMAP +20 +F8 +20 +50 +ENDCHAR +STARTCHAR char43 +ENCODING 43 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 4 0 2 +BITMAP +20 +20 +F0 +20 +ENDCHAR +STARTCHAR char44 +ENCODING 44 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 1 2 0 -1 +BITMAP +80 +80 +ENDCHAR +STARTCHAR char45 +ENCODING 45 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 2 1 0 2 +BITMAP +C0 +ENDCHAR +STARTCHAR char46 +ENCODING 46 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 1 1 0 0 +BITMAP +80 +ENDCHAR +STARTCHAR char47 +ENCODING 47 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 3 7 0 0 +BITMAP +20 +20 +40 +40 +40 +80 +80 +ENDCHAR +STARTCHAR char48 +ENCODING 48 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +60 +90 +90 +90 +90 +90 +60 +ENDCHAR +STARTCHAR char49 +ENCODING 49 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 3 7 0 0 +BITMAP +60 +A0 +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR char50 +ENCODING 50 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +E0 +10 +10 +20 +20 +40 +F0 +ENDCHAR +STARTCHAR char51 +ENCODING 51 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +F0 +10 +10 +60 +10 +10 +E0 +ENDCHAR +STARTCHAR char52 +ENCODING 52 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +10 +30 +50 +90 +F8 +10 +10 +ENDCHAR +STARTCHAR char53 +ENCODING 53 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +F0 +80 +80 +E0 +10 +10 +E0 +ENDCHAR +STARTCHAR char54 +ENCODING 54 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +70 +80 +80 +F0 +90 +90 +60 +ENDCHAR +STARTCHAR char55 +ENCODING 55 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +F0 +10 +20 +20 +20 +40 +40 +ENDCHAR +STARTCHAR char56 +ENCODING 56 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +F0 +90 +90 +60 +90 +90 +60 +ENDCHAR +STARTCHAR char57 +ENCODING 57 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +60 +90 +90 +F0 +10 +10 +E0 +ENDCHAR +STARTCHAR char58 +ENCODING 58 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 1 5 0 0 +BITMAP +80 +00 +00 +00 +80 +ENDCHAR +STARTCHAR char59 +ENCODING 59 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 1 6 0 -1 +BITMAP +80 +00 +00 +00 +80 +80 +ENDCHAR +STARTCHAR char60 +ENCODING 60 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 5 0 1 +BITMAP +10 +60 +80 +60 +10 +ENDCHAR +STARTCHAR char61 +ENCODING 61 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 3 0 2 +BITMAP +F0 +00 +F0 +ENDCHAR +STARTCHAR char62 +ENCODING 62 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 5 0 1 +BITMAP +80 +60 +10 +60 +80 +ENDCHAR +STARTCHAR char63 +ENCODING 63 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 3 7 0 0 +BITMAP +E0 +20 +20 +40 +40 +00 +40 +ENDCHAR +STARTCHAR char64 +ENCODING 64 +SWIDTH 857 0 +DWIDTH 8 0 +BBX 7 8 0 -1 +BITMAP +3C +42 +9A +AA +AA +B4 +80 +78 +ENDCHAR +STARTCHAR char65 +ENCODING 65 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 5 7 0 0 +BITMAP +20 +50 +50 +50 +70 +88 +88 +ENDCHAR +STARTCHAR char66 +ENCODING 66 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +F0 +90 +90 +E0 +90 +90 +E0 +ENDCHAR +STARTCHAR char67 +ENCODING 67 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +70 +80 +80 +80 +80 +80 +70 +ENDCHAR +STARTCHAR char68 +ENCODING 68 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 5 7 0 0 +BITMAP +F0 +88 +88 +88 +88 +98 +F0 +ENDCHAR +STARTCHAR char69 +ENCODING 69 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +F0 +80 +80 +F0 +80 +80 +F0 +ENDCHAR +STARTCHAR char70 +ENCODING 70 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +F0 +80 +80 +F0 +80 +80 +80 +ENDCHAR +STARTCHAR char71 +ENCODING 71 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 5 7 0 0 +BITMAP +78 +80 +80 +98 +88 +88 +78 +ENDCHAR +STARTCHAR char72 +ENCODING 72 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 5 7 0 0 +BITMAP +88 +88 +88 +F8 +88 +88 +88 +ENDCHAR +STARTCHAR char73 +ENCODING 73 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 2 7 0 0 +BITMAP +C0 +40 +40 +40 +40 +40 +C0 +ENDCHAR +STARTCHAR char74 +ENCODING 74 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 3 9 -1 -2 +BITMAP +20 +20 +20 +20 +20 +20 +20 +20 +C0 +ENDCHAR +STARTCHAR char75 +ENCODING 75 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +88 +90 +A0 +E0 +A0 +90 +88 +ENDCHAR +STARTCHAR char76 +ENCODING 76 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 7 0 0 +BITMAP +80 +80 +80 +80 +80 +80 +F0 +ENDCHAR +STARTCHAR char77 +ENCODING 77 +SWIDTH 857 0 +DWIDTH 8 0 +BBX 7 7 0 0 +BITMAP +C2 +C6 +C6 +AA +AA +AA +92 +ENDCHAR +STARTCHAR char78 +ENCODING 78 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 5 7 0 0 +BITMAP +88 +C8 +C8 +A8 +98 +98 +88 +ENDCHAR +STARTCHAR char79 +ENCODING 79 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 6 7 0 0 +BITMAP +78 +84 +84 +84 +84 +84 +78 +ENDCHAR +STARTCHAR char80 +ENCODING 80 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +F0 +90 +90 +E0 +80 +80 +80 +ENDCHAR +STARTCHAR char81 +ENCODING 81 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 6 9 0 -2 +BITMAP +78 +84 +84 +84 +84 +84 +78 +08 +08 +ENDCHAR +STARTCHAR char82 +ENCODING 82 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +F0 +90 +90 +E0 +A0 +90 +90 +ENDCHAR +STARTCHAR char83 +ENCODING 83 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +70 +80 +80 +60 +10 +10 +E0 +ENDCHAR +STARTCHAR char84 +ENCODING 84 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 5 7 -1 0 +BITMAP +F8 +20 +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR char85 +ENCODING 85 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 5 7 0 0 +BITMAP +88 +88 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char86 +ENCODING 86 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 5 7 0 0 +BITMAP +88 +88 +88 +50 +50 +50 +20 +ENDCHAR +STARTCHAR char87 +ENCODING 87 +SWIDTH 857 0 +DWIDTH 8 0 +BBX 7 7 0 0 +BITMAP +92 +B2 +AA +AA +AA +44 +44 +ENDCHAR +STARTCHAR char88 +ENCODING 88 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 5 7 0 0 +BITMAP +88 +50 +50 +20 +50 +50 +88 +ENDCHAR +STARTCHAR char89 +ENCODING 89 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 5 7 0 0 +BITMAP +88 +90 +50 +20 +20 +20 +20 +ENDCHAR +STARTCHAR char90 +ENCODING 90 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +F0 +10 +20 +40 +40 +80 +F0 +ENDCHAR +STARTCHAR char91 +ENCODING 91 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 2 8 0 -1 +BITMAP +C0 +80 +80 +80 +80 +80 +80 +C0 +ENDCHAR +STARTCHAR char92 +ENCODING 92 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 3 7 0 0 +BITMAP +80 +80 +40 +40 +40 +20 +20 +ENDCHAR +STARTCHAR char93 +ENCODING 93 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 2 8 0 -1 +BITMAP +C0 +40 +40 +40 +40 +40 +40 +C0 +ENDCHAR +STARTCHAR char94 +ENCODING 94 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 4 0 3 +BITMAP +20 +50 +50 +88 +ENDCHAR +STARTCHAR char95 +ENCODING 95 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 1 0 -2 +BITMAP +F0 +ENDCHAR +STARTCHAR char96 +ENCODING 96 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 2 2 2 6 +BITMAP +80 +40 +ENDCHAR +STARTCHAR char97 +ENCODING 97 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 5 0 0 +BITMAP +F0 +10 +F0 +90 +F0 +ENDCHAR +STARTCHAR char98 +ENCODING 98 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +80 +80 +E0 +90 +90 +90 +E0 +ENDCHAR +STARTCHAR char99 +ENCODING 99 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 3 5 0 0 +BITMAP +60 +80 +80 +80 +60 +ENDCHAR +STARTCHAR char100 +ENCODING 100 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +10 +10 +70 +90 +90 +90 +70 +ENDCHAR +STARTCHAR char101 +ENCODING 101 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 5 0 0 +BITMAP +60 +90 +F0 +80 +70 +ENDCHAR +STARTCHAR char102 +ENCODING 102 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 3 7 0 0 +BITMAP +60 +40 +E0 +40 +40 +40 +40 +ENDCHAR +STARTCHAR char103 +ENCODING 103 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 -2 +BITMAP +F0 +A0 +E0 +40 +70 +90 +F0 +ENDCHAR +STARTCHAR char104 +ENCODING 104 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +80 +80 +F0 +90 +90 +90 +90 +ENDCHAR +STARTCHAR char105 +ENCODING 105 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 1 7 0 0 +BITMAP +80 +00 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR char106 +ENCODING 106 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 2 9 -1 -2 +BITMAP +40 +00 +40 +40 +40 +40 +40 +40 +C0 +ENDCHAR +STARTCHAR char107 +ENCODING 107 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +80 +80 +90 +A0 +C0 +A0 +90 +ENDCHAR +STARTCHAR char108 +ENCODING 108 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 1 7 0 0 +BITMAP +80 +80 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR char109 +ENCODING 109 +SWIDTH 857 0 +DWIDTH 8 0 +BBX 7 5 0 0 +BITMAP +EE +92 +92 +92 +92 +ENDCHAR +STARTCHAR char110 +ENCODING 110 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 5 0 0 +BITMAP +F0 +90 +90 +90 +90 +ENDCHAR +STARTCHAR char111 +ENCODING 111 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 5 0 0 +BITMAP +60 +90 +90 +90 +60 +ENDCHAR +STARTCHAR char112 +ENCODING 112 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 -2 +BITMAP +E0 +90 +90 +90 +E0 +80 +80 +ENDCHAR +STARTCHAR char113 +ENCODING 113 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 -2 +BITMAP +70 +90 +90 +90 +70 +10 +10 +ENDCHAR +STARTCHAR char114 +ENCODING 114 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 3 5 0 0 +BITMAP +E0 +80 +80 +80 +80 +ENDCHAR +STARTCHAR char115 +ENCODING 115 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 3 5 0 0 +BITMAP +E0 +80 +40 +20 +E0 +ENDCHAR +STARTCHAR char116 +ENCODING 116 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +40 +E0 +40 +40 +40 +60 +ENDCHAR +STARTCHAR char117 +ENCODING 117 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 5 0 0 +BITMAP +90 +90 +90 +90 +F0 +ENDCHAR +STARTCHAR char118 +ENCODING 118 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 5 0 0 +BITMAP +90 +90 +60 +60 +60 +ENDCHAR +STARTCHAR char119 +ENCODING 119 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 5 5 0 0 +BITMAP +A8 +A8 +A8 +D0 +50 +ENDCHAR +STARTCHAR char120 +ENCODING 120 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 5 0 0 +BITMAP +90 +60 +40 +60 +90 +ENDCHAR +STARTCHAR char121 +ENCODING 121 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 -2 +BITMAP +90 +90 +60 +60 +60 +40 +C0 +ENDCHAR +STARTCHAR char122 +ENCODING 122 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 3 5 0 0 +BITMAP +E0 +20 +40 +80 +E0 +ENDCHAR +STARTCHAR char123 +ENCODING 123 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 3 8 0 -1 +BITMAP +60 +40 +40 +80 +40 +40 +40 +60 +ENDCHAR +STARTCHAR char124 +ENCODING 124 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 1 9 2 -2 +BITMAP +80 +80 +80 +80 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR char125 +ENCODING 125 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 3 8 0 -1 +BITMAP +C0 +40 +40 +40 +20 +40 +40 +C0 +ENDCHAR +STARTCHAR char126 +ENCODING 126 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 2 0 3 +BITMAP +C0 +30 +ENDCHAR +STARTCHAR char0 +ENCODING 127 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 128 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 129 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 130 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 131 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 132 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 133 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 134 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 135 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 136 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 137 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 138 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 139 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 140 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 141 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 142 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 143 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 144 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 145 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 146 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 147 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 148 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 149 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 150 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 151 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 152 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 153 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 154 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 155 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 156 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 157 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 158 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 159 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char160 +ENCODING 160 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char161 +ENCODING 161 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 1 7 0 -2 +BITMAP +80 +00 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR char162 +ENCODING 162 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +20 +70 +80 +80 +80 +70 +20 +ENDCHAR +STARTCHAR char163 +ENCODING 163 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +70 +40 +40 +E0 +40 +40 +F0 +ENDCHAR +STARTCHAR char164 +ENCODING 164 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 4 0 1 +BITMAP +F0 +90 +90 +F0 +ENDCHAR +STARTCHAR char165 +ENCODING 165 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +88 +50 +50 +70 +20 +70 +20 +ENDCHAR +STARTCHAR char166 +ENCODING 166 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 1 9 2 -2 +BITMAP +80 +80 +80 +00 +00 +00 +80 +80 +80 +ENDCHAR +STARTCHAR char167 +ENCODING 167 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 3 7 0 0 +BITMAP +E0 +80 +E0 +A0 +60 +20 +E0 +ENDCHAR +STARTCHAR char168 +ENCODING 168 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 3 1 1 6 +BITMAP +A0 +ENDCHAR +STARTCHAR char169 +ENCODING 169 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 6 7 0 0 +BITMAP +78 +84 +B4 +A4 +B4 +84 +78 +ENDCHAR +STARTCHAR char170 +ENCODING 170 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 3 3 0 4 +BITMAP +E0 +E0 +E0 +ENDCHAR +STARTCHAR char171 +ENCODING 171 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 3 0 1 +BITMAP +50 +A0 +50 +ENDCHAR +STARTCHAR char172 +ENCODING 172 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 2 0 2 +BITMAP +F0 +10 +ENDCHAR +STARTCHAR char173 +ENCODING 173 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 2 1 0 2 +BITMAP +C0 +ENDCHAR +STARTCHAR char174 +ENCODING 174 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 6 7 0 0 +BITMAP +78 +84 +BC +B4 +B4 +84 +78 +ENDCHAR +STARTCHAR char175 +ENCODING 175 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 1 0 6 +BITMAP +F8 +ENDCHAR +STARTCHAR char176 +ENCODING 176 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 3 3 0 4 +BITMAP +E0 +A0 +E0 +ENDCHAR +STARTCHAR char177 +ENCODING 177 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +20 +20 +F0 +20 +00 +F0 +ENDCHAR +STARTCHAR char178 +ENCODING 178 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 3 4 0 3 +BITMAP +E0 +20 +40 +E0 +ENDCHAR +STARTCHAR char179 +ENCODING 179 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 3 4 0 3 +BITMAP +E0 +20 +20 +E0 +ENDCHAR +STARTCHAR char180 +ENCODING 180 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 2 2 2 6 +BITMAP +40 +80 +ENDCHAR +STARTCHAR char181 +ENCODING 181 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 -2 +BITMAP +90 +90 +90 +90 +F0 +80 +80 +ENDCHAR +STARTCHAR char182 +ENCODING 182 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 5 8 0 -1 +BITMAP +78 +E8 +E8 +E8 +28 +28 +28 +28 +ENDCHAR +STARTCHAR char183 +ENCODING 183 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 1 1 0 3 +BITMAP +80 +ENDCHAR +STARTCHAR char184 +ENCODING 184 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 1 3 1 -2 +BITMAP +80 +80 +80 +ENDCHAR +STARTCHAR char185 +ENCODING 185 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 2 4 0 3 +BITMAP +C0 +40 +40 +40 +ENDCHAR +STARTCHAR char186 +ENCODING 186 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 3 3 0 4 +BITMAP +E0 +A0 +E0 +ENDCHAR +STARTCHAR char187 +ENCODING 187 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 3 0 1 +BITMAP +A0 +50 +A0 +ENDCHAR +STARTCHAR char188 +ENCODING 188 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 6 7 0 0 +BITMAP +C8 +50 +50 +6C +54 +5C +84 +ENDCHAR +STARTCHAR char189 +ENCODING 189 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 6 7 0 0 +BITMAP +C8 +50 +50 +7C +44 +48 +9C +ENDCHAR +STARTCHAR char190 +ENCODING 190 +SWIDTH 857 0 +DWIDTH 8 0 +BBX 7 7 0 0 +BITMAP +E4 +28 +28 +F6 +2A +2E +42 +ENDCHAR +STARTCHAR char191 +ENCODING 191 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 3 7 0 -2 +BITMAP +40 +00 +40 +40 +80 +80 +E0 +ENDCHAR +STARTCHAR char192 +ENCODING 192 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 5 10 0 0 +BITMAP +40 +20 +00 +20 +50 +50 +50 +70 +88 +88 +ENDCHAR +STARTCHAR char193 +ENCODING 193 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 5 10 0 0 +BITMAP +10 +20 +00 +20 +50 +50 +50 +70 +88 +88 +ENDCHAR +STARTCHAR char194 +ENCODING 194 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 5 10 0 0 +BITMAP +20 +50 +00 +20 +50 +50 +50 +70 +88 +88 +ENDCHAR +STARTCHAR char195 +ENCODING 195 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 5 10 0 0 +BITMAP +68 +58 +00 +20 +50 +50 +50 +70 +88 +88 +ENDCHAR +STARTCHAR char196 +ENCODING 196 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +50 +00 +20 +50 +50 +50 +70 +88 +88 +ENDCHAR +STARTCHAR char197 +ENCODING 197 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +70 +50 +70 +50 +50 +50 +70 +88 +88 +ENDCHAR +STARTCHAR char198 +ENCODING 198 +SWIDTH 857 0 +DWIDTH 8 0 +BBX 7 7 0 0 +BITMAP +3E +30 +50 +5E +70 +90 +9E +ENDCHAR +STARTCHAR char199 +ENCODING 199 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 9 0 -2 +BITMAP +70 +80 +80 +80 +80 +80 +70 +10 +10 +ENDCHAR +STARTCHAR char200 +ENCODING 200 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 10 0 0 +BITMAP +40 +20 +00 +F0 +80 +80 +F0 +80 +80 +F0 +ENDCHAR +STARTCHAR char201 +ENCODING 201 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 10 0 0 +BITMAP +10 +20 +00 +F0 +80 +80 +F0 +80 +80 +F0 +ENDCHAR +STARTCHAR char202 +ENCODING 202 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 10 0 0 +BITMAP +20 +50 +00 +F0 +80 +80 +F0 +80 +80 +F0 +ENDCHAR +STARTCHAR char203 +ENCODING 203 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 9 0 0 +BITMAP +50 +00 +F0 +80 +80 +F0 +80 +80 +F0 +ENDCHAR +STARTCHAR char204 +ENCODING 204 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 2 10 0 0 +BITMAP +80 +40 +00 +C0 +40 +40 +40 +40 +40 +C0 +ENDCHAR +STARTCHAR char205 +ENCODING 205 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 3 10 0 0 +BITMAP +20 +40 +00 +C0 +40 +40 +40 +40 +40 +C0 +ENDCHAR +STARTCHAR char206 +ENCODING 206 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 3 10 0 0 +BITMAP +40 +A0 +00 +C0 +40 +40 +40 +40 +40 +C0 +ENDCHAR +STARTCHAR char207 +ENCODING 207 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 3 9 0 0 +BITMAP +A0 +00 +C0 +40 +40 +40 +40 +40 +C0 +ENDCHAR +STARTCHAR char208 +ENCODING 208 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 7 -1 0 +BITMAP +78 +44 +44 +E4 +44 +4C +78 +ENDCHAR +STARTCHAR char209 +ENCODING 209 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 5 10 0 0 +BITMAP +68 +58 +00 +88 +C8 +C8 +A8 +98 +98 +88 +ENDCHAR +STARTCHAR char210 +ENCODING 210 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 6 10 0 0 +BITMAP +20 +10 +00 +78 +84 +84 +84 +84 +84 +78 +ENDCHAR +STARTCHAR char211 +ENCODING 211 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 6 10 0 0 +BITMAP +08 +10 +00 +78 +84 +84 +84 +84 +84 +78 +ENDCHAR +STARTCHAR char212 +ENCODING 212 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 6 10 0 0 +BITMAP +10 +28 +00 +78 +84 +84 +84 +84 +84 +78 +ENDCHAR +STARTCHAR char213 +ENCODING 213 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 6 10 0 0 +BITMAP +68 +58 +00 +78 +84 +84 +84 +84 +84 +78 +ENDCHAR +STARTCHAR char214 +ENCODING 214 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 6 9 0 0 +BITMAP +28 +00 +78 +84 +84 +84 +84 +84 +78 +ENDCHAR +STARTCHAR char215 +ENCODING 215 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 3 3 1 2 +BITMAP +A0 +40 +A0 +ENDCHAR +STARTCHAR char216 +ENCODING 216 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 6 7 0 0 +BITMAP +78 +8C +94 +94 +A4 +C4 +78 +ENDCHAR +STARTCHAR char217 +ENCODING 217 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 5 10 0 0 +BITMAP +40 +20 +00 +88 +88 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char218 +ENCODING 218 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 5 10 0 0 +BITMAP +10 +20 +00 +88 +88 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char219 +ENCODING 219 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 5 10 0 0 +BITMAP +20 +50 +00 +88 +88 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char220 +ENCODING 220 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +50 +00 +88 +88 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char221 +ENCODING 221 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 5 10 0 0 +BITMAP +10 +20 +00 +88 +90 +50 +20 +20 +20 +20 +ENDCHAR +STARTCHAR char222 +ENCODING 222 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +80 +E0 +90 +90 +E0 +80 +80 +ENDCHAR +STARTCHAR char223 +ENCODING 223 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +F0 +90 +A0 +A0 +90 +90 +B0 +ENDCHAR +STARTCHAR char224 +ENCODING 224 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 8 0 0 +BITMAP +40 +20 +00 +F0 +10 +F0 +90 +F0 +ENDCHAR +STARTCHAR char225 +ENCODING 225 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 8 0 0 +BITMAP +10 +20 +00 +F0 +10 +F0 +90 +F0 +ENDCHAR +STARTCHAR char226 +ENCODING 226 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 8 0 0 +BITMAP +20 +50 +00 +F0 +10 +F0 +90 +F0 +ENDCHAR +STARTCHAR char227 +ENCODING 227 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 8 0 0 +BITMAP +D0 +B0 +00 +F0 +10 +F0 +90 +F0 +ENDCHAR +STARTCHAR char228 +ENCODING 228 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +50 +00 +F0 +10 +F0 +90 +F0 +ENDCHAR +STARTCHAR char229 +ENCODING 229 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 9 0 0 +BITMAP +70 +50 +70 +00 +F0 +10 +F0 +90 +F0 +ENDCHAR +STARTCHAR char230 +ENCODING 230 +SWIDTH 857 0 +DWIDTH 8 0 +BBX 7 5 0 0 +BITMAP +EC +12 +FE +90 +EE +ENDCHAR +STARTCHAR char231 +ENCODING 231 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 3 7 0 -2 +BITMAP +60 +80 +80 +80 +60 +20 +20 +ENDCHAR +STARTCHAR char232 +ENCODING 232 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 8 0 0 +BITMAP +40 +20 +00 +60 +90 +F0 +80 +70 +ENDCHAR +STARTCHAR char233 +ENCODING 233 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 8 0 0 +BITMAP +10 +20 +00 +60 +90 +F0 +80 +70 +ENDCHAR +STARTCHAR char234 +ENCODING 234 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 8 0 0 +BITMAP +20 +50 +00 +60 +90 +F0 +80 +70 +ENDCHAR +STARTCHAR char235 +ENCODING 235 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +50 +00 +60 +90 +F0 +80 +70 +ENDCHAR +STARTCHAR char236 +ENCODING 236 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 2 8 -1 0 +BITMAP +80 +40 +00 +40 +40 +40 +40 +40 +ENDCHAR +STARTCHAR char237 +ENCODING 237 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 2 8 0 0 +BITMAP +40 +80 +00 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR char238 +ENCODING 238 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 3 8 -1 0 +BITMAP +40 +A0 +00 +40 +40 +40 +40 +40 +ENDCHAR +STARTCHAR char239 +ENCODING 239 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 3 7 -1 0 +BITMAP +A0 +00 +40 +40 +40 +40 +40 +ENDCHAR +STARTCHAR char240 +ENCODING 240 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +50 +60 +10 +70 +90 +90 +60 +ENDCHAR +STARTCHAR char241 +ENCODING 241 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 8 0 0 +BITMAP +D0 +B0 +00 +F0 +90 +90 +90 +90 +ENDCHAR +STARTCHAR char242 +ENCODING 242 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 8 0 0 +BITMAP +40 +20 +00 +60 +90 +90 +90 +60 +ENDCHAR +STARTCHAR char243 +ENCODING 243 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 8 0 0 +BITMAP +10 +20 +00 +60 +90 +90 +90 +60 +ENDCHAR +STARTCHAR char244 +ENCODING 244 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 8 0 0 +BITMAP +20 +50 +00 +60 +90 +90 +90 +60 +ENDCHAR +STARTCHAR char245 +ENCODING 245 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 8 0 0 +BITMAP +D0 +B0 +00 +60 +90 +90 +90 +60 +ENDCHAR +STARTCHAR char246 +ENCODING 246 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +50 +00 +60 +90 +90 +90 +60 +ENDCHAR +STARTCHAR char247 +ENCODING 247 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 5 0 1 +BITMAP +20 +00 +F8 +00 +20 +ENDCHAR +STARTCHAR char248 +ENCODING 248 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 5 0 0 +BITMAP +70 +B0 +B0 +D0 +E0 +ENDCHAR +STARTCHAR char249 +ENCODING 249 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 8 0 0 +BITMAP +40 +20 +00 +90 +90 +90 +90 +F0 +ENDCHAR +STARTCHAR char250 +ENCODING 250 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 8 0 0 +BITMAP +10 +20 +00 +90 +90 +90 +90 +F0 +ENDCHAR +STARTCHAR char251 +ENCODING 251 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 8 0 0 +BITMAP +20 +50 +00 +90 +90 +90 +90 +F0 +ENDCHAR +STARTCHAR char252 +ENCODING 252 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +50 +00 +90 +90 +90 +90 +F0 +ENDCHAR +STARTCHAR char253 +ENCODING 253 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 10 0 -2 +BITMAP +10 +20 +00 +90 +90 +60 +60 +60 +40 +C0 +ENDCHAR +STARTCHAR char254 +ENCODING 254 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 9 0 -2 +BITMAP +80 +80 +E0 +90 +90 +90 +E0 +80 +80 +ENDCHAR +STARTCHAR char255 +ENCODING 255 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 9 0 -2 +BITMAP +50 +00 +90 +90 +60 +60 +60 +40 +C0 +ENDCHAR +ENDFONT diff --git a/ui/fonts/DroidSans8x12.h b/ui/fonts/DroidSans8x12.h new file mode 100644 index 0000000..32ee8cb --- /dev/null +++ b/ui/fonts/DroidSans8x12.h @@ -0,0 +1,261 @@ +/* -FreeType-Droid_Sans-Medium-R-Normal--9-70-96-96-P-49-ISO10646-1 */ +#define FONT_WIDTH_Droid_SansMedium_8x12 8 +#define FONT_HEIGHT_Droid_SansMedium_8x12 12 +const uint8_t FONT_DATA_Droid_SansMedium_8x12[256][13] = { +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x00,0x02,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0a,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x28,0x28,0x7e,0x24,0x7e,0x14,0x14,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x08,0x1c,0x0a,0x0a,0x0c,0x14,0x14,0x0e,0x04,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x4e,0x2a,0x2a,0xfe,0xa8,0xa8,0xe4,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x1e,0x12,0x0a,0x04,0x4a,0x32,0x3c,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x04,0x02,0x02,0x02,0x02,0x02,0x02,0x04,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x02,0x04,0x04,0x04,0x04,0x04,0x04,0x02,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x08,0x3e,0x08,0x14,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x08,0x08,0x1e,0x08,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x08,0x08,0x04,0x04,0x04,0x02,0x02,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x0c,0x12,0x12,0x12,0x12,0x12,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x0c,0x0a,0x08,0x08,0x08,0x08,0x08,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x0e,0x10,0x10,0x08,0x08,0x04,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1e,0x10,0x10,0x0c,0x10,0x10,0x0e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x10,0x18,0x14,0x12,0x3e,0x10,0x10,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1e,0x02,0x02,0x0e,0x10,0x10,0x0e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1c,0x02,0x02,0x1e,0x12,0x12,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1e,0x10,0x08,0x08,0x08,0x04,0x04,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1e,0x12,0x12,0x0c,0x12,0x12,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x0c,0x12,0x12,0x1e,0x10,0x10,0x0e,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x02,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x10,0x0c,0x02,0x0c,0x10,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x02,0x0c,0x10,0x0c,0x02,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x08,0x08,0x04,0x04,0x00,0x04,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x78,0x84,0xb2,0xaa,0xaa,0x5a,0x02,0x3c,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x08,0x14,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1e,0x12,0x12,0x0e,0x12,0x12,0x0e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1c,0x02,0x02,0x02,0x02,0x02,0x1c,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x1e,0x22,0x22,0x22,0x22,0x32,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1e,0x02,0x02,0x1e,0x02,0x02,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1e,0x02,0x02,0x1e,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x3c,0x02,0x02,0x32,0x22,0x22,0x3c,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x06,0x04,0x04,0x04,0x04,0x04,0x06,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x03,}, +{/*w*/5,0x00,0x00,0x00,0x22,0x12,0x0a,0x0e,0x0a,0x12,0x22,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x1e,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x86,0xc6,0xc6,0xaa,0xaa,0xaa,0x92,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x22,0x26,0x26,0x2a,0x32,0x32,0x22,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x3c,0x42,0x42,0x42,0x42,0x42,0x3c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1e,0x12,0x12,0x0e,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x3c,0x42,0x42,0x42,0x42,0x42,0x3c,0x20,0x20,}, +{/*w*/5,0x00,0x00,0x00,0x1e,0x12,0x12,0x0e,0x0a,0x12,0x12,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1c,0x02,0x02,0x0c,0x10,0x10,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x1f,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x22,0x22,0x22,0x14,0x14,0x14,0x08,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x92,0x9a,0xaa,0xaa,0xaa,0x44,0x44,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x22,0x14,0x14,0x08,0x14,0x14,0x22,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x22,0x12,0x14,0x08,0x08,0x08,0x08,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1e,0x10,0x08,0x04,0x04,0x02,0x1e,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x06,0x02,0x02,0x02,0x02,0x02,0x02,0x06,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x02,0x02,0x04,0x04,0x04,0x08,0x08,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x06,0x04,0x04,0x04,0x04,0x04,0x04,0x06,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x08,0x14,0x14,0x22,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,}, +{/*w*/5,0x00,0x00,0x08,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x1e,0x10,0x1e,0x12,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x02,0x02,0x0e,0x12,0x12,0x12,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0c,0x02,0x02,0x02,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x10,0x10,0x1c,0x12,0x12,0x12,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x0c,0x12,0x1e,0x02,0x1c,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0c,0x04,0x0e,0x04,0x04,0x04,0x04,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x1e,0x0a,0x0e,0x04,0x1c,0x12,0x1e,}, +{/*w*/5,0x00,0x00,0x00,0x02,0x02,0x1e,0x12,0x12,0x12,0x12,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x03,}, +{/*w*/5,0x00,0x00,0x00,0x02,0x02,0x12,0x0a,0x06,0x0a,0x12,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x00,0x00,0xee,0x92,0x92,0x92,0x92,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x1e,0x12,0x12,0x12,0x12,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x0c,0x12,0x12,0x12,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x0e,0x12,0x12,0x12,0x0e,0x02,0x02,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x1c,0x12,0x12,0x12,0x1c,0x10,0x10,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0e,0x02,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0e,0x02,0x04,0x08,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x04,0x0e,0x04,0x04,0x04,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x12,0x12,0x12,0x12,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x12,0x12,0x0c,0x0c,0x0c,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x2a,0x2a,0x2a,0x16,0x14,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x12,0x0c,0x04,0x0c,0x12,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x12,0x12,0x0c,0x0c,0x0c,0x04,0x06,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0e,0x08,0x04,0x02,0x0e,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x0c,0x04,0x04,0x02,0x04,0x04,0x04,0x0c,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,}, +{/*w*/3,0x00,0x00,0x00,0x06,0x04,0x04,0x04,0x08,0x04,0x04,0x06,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x06,0x18,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x02,0x02,0x02,0x02,}, +{/*w*/5,0x00,0x00,0x00,0x08,0x1c,0x02,0x02,0x02,0x1c,0x08,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1c,0x04,0x04,0x0e,0x04,0x04,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x1e,0x12,0x12,0x1e,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x22,0x14,0x14,0x1c,0x08,0x1c,0x08,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x08,0x08,0x08,0x00,0x00,0x00,0x08,0x08,0x08,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x02,0x0e,0x0a,0x0c,0x08,0x0e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x3c,0x42,0x5a,0x4a,0x5a,0x42,0x3c,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x0e,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x0a,0x14,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x10,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x3c,0x42,0x7a,0x5a,0x5a,0x42,0x3c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x0a,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x08,0x08,0x1e,0x08,0x00,0x1e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x08,0x04,0x0e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x08,0x08,0x0e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x12,0x12,0x12,0x12,0x1e,0x02,0x02,}, +{/*w*/6,0x00,0x00,0x00,0x3c,0x2e,0x2e,0x2e,0x28,0x28,0x28,0x28,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,}, +{/*w*/4,0x00,0x00,0x00,0x06,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x0a,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x14,0x0a,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x26,0x14,0x14,0x6c,0x54,0x74,0x42,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x26,0x14,0x14,0x7c,0x44,0x24,0x72,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x4e,0x28,0x28,0xde,0xa8,0xe8,0x84,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x04,0x02,0x02,0x0e,}, +{/*w*/6,0x04,0x08,0x00,0x08,0x14,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,}, +{/*w*/6,0x10,0x08,0x00,0x08,0x14,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,}, +{/*w*/6,0x08,0x14,0x00,0x08,0x14,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,}, +{/*w*/6,0x2c,0x34,0x00,0x08,0x14,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,}, +{/*w*/6,0x00,0x14,0x00,0x08,0x14,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,}, +{/*w*/6,0x00,0x1c,0x14,0x1c,0x14,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0xf8,0x18,0x14,0xf4,0x1c,0x12,0xf2,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1c,0x02,0x02,0x02,0x02,0x02,0x1c,0x10,0x10,}, +{/*w*/5,0x04,0x08,0x00,0x1e,0x02,0x02,0x1e,0x02,0x02,0x1e,0x00,0x00,}, +{/*w*/5,0x10,0x08,0x00,0x1e,0x02,0x02,0x1e,0x02,0x02,0x1e,0x00,0x00,}, +{/*w*/5,0x08,0x14,0x00,0x1e,0x02,0x02,0x1e,0x02,0x02,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x14,0x00,0x1e,0x02,0x02,0x1e,0x02,0x02,0x1e,0x00,0x00,}, +{/*w*/4,0x02,0x04,0x00,0x06,0x04,0x04,0x04,0x04,0x04,0x06,0x00,0x00,}, +{/*w*/4,0x08,0x04,0x00,0x06,0x04,0x04,0x04,0x04,0x04,0x06,0x00,0x00,}, +{/*w*/4,0x04,0x0a,0x00,0x06,0x04,0x04,0x04,0x04,0x04,0x06,0x00,0x00,}, +{/*w*/4,0x00,0x0a,0x00,0x06,0x04,0x04,0x04,0x04,0x04,0x06,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x1e,0x22,0x22,0x27,0x22,0x32,0x1e,0x00,0x00,}, +{/*w*/6,0x2c,0x34,0x00,0x22,0x26,0x26,0x2a,0x32,0x32,0x22,0x00,0x00,}, +{/*w*/7,0x08,0x10,0x00,0x3c,0x42,0x42,0x42,0x42,0x42,0x3c,0x00,0x00,}, +{/*w*/7,0x20,0x10,0x00,0x3c,0x42,0x42,0x42,0x42,0x42,0x3c,0x00,0x00,}, +{/*w*/7,0x10,0x28,0x00,0x3c,0x42,0x42,0x42,0x42,0x42,0x3c,0x00,0x00,}, +{/*w*/7,0x2c,0x34,0x00,0x3c,0x42,0x42,0x42,0x42,0x42,0x3c,0x00,0x00,}, +{/*w*/7,0x00,0x28,0x00,0x3c,0x42,0x42,0x42,0x42,0x42,0x3c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x14,0x08,0x14,0x00,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x3c,0x62,0x52,0x52,0x4a,0x46,0x3c,0x00,0x00,}, +{/*w*/6,0x04,0x08,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/6,0x10,0x08,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/6,0x08,0x14,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/6,0x00,0x14,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/6,0x10,0x08,0x00,0x22,0x12,0x14,0x08,0x08,0x08,0x08,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x02,0x0e,0x12,0x12,0x0e,0x02,0x02,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1e,0x12,0x0a,0x0a,0x12,0x12,0x1a,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x04,0x08,0x00,0x1e,0x10,0x1e,0x12,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x10,0x08,0x00,0x1e,0x10,0x1e,0x12,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x08,0x14,0x00,0x1e,0x10,0x1e,0x12,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x16,0x1a,0x00,0x1e,0x10,0x1e,0x12,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x14,0x00,0x1e,0x10,0x1e,0x12,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x1c,0x14,0x1c,0x00,0x1e,0x10,0x1e,0x12,0x1e,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x00,0x00,0x6e,0x90,0xfe,0x12,0xee,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0c,0x02,0x02,0x02,0x0c,0x08,0x08,}, +{/*w*/5,0x00,0x00,0x04,0x08,0x00,0x0c,0x12,0x1e,0x02,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x10,0x08,0x00,0x0c,0x12,0x1e,0x02,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x08,0x14,0x00,0x0c,0x12,0x1e,0x02,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x14,0x00,0x0c,0x12,0x1e,0x02,0x1c,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x01,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x04,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x02,0x05,0x00,0x02,0x02,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x05,0x00,0x02,0x02,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x14,0x0c,0x10,0x1c,0x12,0x12,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x16,0x1a,0x00,0x1e,0x12,0x12,0x12,0x12,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x04,0x08,0x00,0x0c,0x12,0x12,0x12,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x10,0x08,0x00,0x0c,0x12,0x12,0x12,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x08,0x14,0x00,0x0c,0x12,0x12,0x12,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x16,0x1a,0x00,0x0c,0x12,0x12,0x12,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x14,0x00,0x0c,0x12,0x12,0x12,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x08,0x00,0x3e,0x00,0x08,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x1c,0x1a,0x1a,0x16,0x0e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x04,0x08,0x00,0x12,0x12,0x12,0x12,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x10,0x08,0x00,0x12,0x12,0x12,0x12,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x08,0x14,0x00,0x12,0x12,0x12,0x12,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x14,0x00,0x12,0x12,0x12,0x12,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x10,0x08,0x00,0x12,0x12,0x0c,0x0c,0x0c,0x04,0x06,}, +{/*w*/5,0x00,0x00,0x00,0x02,0x02,0x0e,0x12,0x12,0x12,0x0e,0x02,0x02,}, +{/*w*/5,0x00,0x00,0x00,0x14,0x00,0x12,0x12,0x0c,0x0c,0x0c,0x04,0x06,}, +}; diff --git a/ui/fonts/DroidSansBold8x12.bdf b/ui/fonts/DroidSansBold8x12.bdf new file mode 100644 index 0000000..d32ecdf --- /dev/null +++ b/ui/fonts/DroidSansBold8x12.bdf @@ -0,0 +1,3090 @@ +STARTFONT 2.1 +COMMENT Font converted from OTF to BDF. +FONT -FreeType-Droid_Sans-Bold-R-Normal--9-70-96-96-P-49-ISO10646-1 +SIZE 7 96 96 +FONTBOUNDINGBOX 8 12 -1 -2 +STARTPROPERTIES 19 +POINT_SIZE 70 +PIXEL_SIZE 9 +RESOLUTION_X 96 +RESOLUTION_Y 96 +FONT_ASCENT 8 +FONT_DESCENT 2 +AVERAGE_WIDTH 49 +SPACING "P" +FOUNDRY "FreeType" +FAMILY_NAME "Droid_Sans" +CHARSET_REGISTRY "ISO10646" +CHARSET_ENCODING "1" +WEIGHT_NAME "Bold" +SLANT "R" +SETWIDTH_NAME "Normal" +COPYRIGHT "Digitized data copyright © 2007, Google Corporation." +_TTF_PSNAME "DroidSans" +_OTF_FONTFILE "DroidSans.ttf" +_GBDFED_INFO "Edited with gbdfed 1.6." +ENDPROPERTIES +CHARS 256 +STARTCHAR char0 +ENCODING 0 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 1 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 2 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 3 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 4 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 5 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 6 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 7 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 8 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 9 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 10 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 11 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 12 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 13 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 14 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 15 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 16 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 17 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 18 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 19 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 20 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 21 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 22 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 23 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 24 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 25 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 26 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 27 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 28 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 29 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 30 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 31 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char32 +ENCODING 32 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char33 +ENCODING 33 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 2 7 0 0 +BITMAP +C0 +C0 +C0 +C0 +C0 +00 +C0 +ENDCHAR +STARTCHAR char34 +ENCODING 34 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 2 0 5 +BITMAP +F0 +F0 +ENDCHAR +STARTCHAR char35 +ENCODING 35 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 7 7 0 0 +BITMAP +3C +3C +FE +6C +FE +78 +78 +ENDCHAR +STARTCHAR char36 +ENCODING 36 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 9 0 -1 +BITMAP +30 +78 +F0 +F0 +70 +78 +78 +F0 +60 +ENDCHAR +STARTCHAR char37 +ENCODING 37 +SWIDTH 857 0 +DWIDTH 8 0 +BBX 8 7 0 0 +BITMAP +F6 +FC +FC +FF +3F +3F +6F +ENDCHAR +STARTCHAR char38 +ENCODING 38 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 7 7 0 0 +BITMAP +F8 +D8 +F0 +60 +F6 +DC +7C +ENDCHAR +STARTCHAR char39 +ENCODING 39 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 2 2 0 5 +BITMAP +C0 +C0 +ENDCHAR +STARTCHAR char40 +ENCODING 40 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 3 8 0 -1 +BITMAP +60 +C0 +C0 +C0 +C0 +C0 +C0 +60 +ENDCHAR +STARTCHAR char41 +ENCODING 41 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 3 8 0 -1 +BITMAP +C0 +60 +60 +60 +60 +60 +60 +C0 +ENDCHAR +STARTCHAR char42 +ENCODING 42 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 4 0 3 +BITMAP +30 +FC +30 +78 +ENDCHAR +STARTCHAR char43 +ENCODING 43 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 4 0 2 +BITMAP +30 +30 +F8 +30 +ENDCHAR +STARTCHAR char44 +ENCODING 44 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 2 2 0 -1 +BITMAP +C0 +C0 +ENDCHAR +STARTCHAR char45 +ENCODING 45 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 3 1 0 2 +BITMAP +E0 +ENDCHAR +STARTCHAR char46 +ENCODING 46 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 2 1 0 0 +BITMAP +C0 +ENDCHAR +STARTCHAR char47 +ENCODING 47 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 4 7 0 0 +BITMAP +30 +30 +60 +60 +60 +C0 +C0 +ENDCHAR +STARTCHAR char48 +ENCODING 48 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +70 +D8 +D8 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR char49 +ENCODING 49 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +70 +F0 +30 +30 +30 +30 +30 +ENDCHAR +STARTCHAR char50 +ENCODING 50 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +F0 +18 +18 +30 +30 +60 +F8 +ENDCHAR +STARTCHAR char51 +ENCODING 51 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +F8 +18 +18 +70 +18 +18 +F0 +ENDCHAR +STARTCHAR char52 +ENCODING 52 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 6 7 0 0 +BITMAP +18 +38 +78 +D8 +FC +18 +18 +ENDCHAR +STARTCHAR char53 +ENCODING 53 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +F8 +C0 +C0 +F0 +18 +18 +F0 +ENDCHAR +STARTCHAR char54 +ENCODING 54 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +78 +C0 +C0 +F8 +D8 +D8 +70 +ENDCHAR +STARTCHAR char55 +ENCODING 55 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +F8 +18 +30 +30 +30 +60 +60 +ENDCHAR +STARTCHAR char56 +ENCODING 56 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +F8 +D8 +D8 +70 +D8 +D8 +70 +ENDCHAR +STARTCHAR char57 +ENCODING 57 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +70 +D8 +D8 +F8 +18 +18 +F0 +ENDCHAR +STARTCHAR char58 +ENCODING 58 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 2 5 0 0 +BITMAP +C0 +00 +00 +00 +C0 +ENDCHAR +STARTCHAR char59 +ENCODING 59 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 2 6 0 -1 +BITMAP +C0 +00 +00 +00 +C0 +C0 +ENDCHAR +STARTCHAR char60 +ENCODING 60 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 5 0 1 +BITMAP +18 +70 +C0 +70 +18 +ENDCHAR +STARTCHAR char61 +ENCODING 61 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 3 0 2 +BITMAP +F8 +00 +F8 +ENDCHAR +STARTCHAR char62 +ENCODING 62 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 5 0 1 +BITMAP +C0 +70 +18 +70 +C0 +ENDCHAR +STARTCHAR char63 +ENCODING 63 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 7 0 0 +BITMAP +F0 +30 +30 +60 +60 +00 +60 +ENDCHAR +STARTCHAR char64 +ENCODING 64 +SWIDTH 857 0 +DWIDTH 8 0 +BBX 8 8 0 -1 +BITMAP +3E +63 +DF +FF +FF +FE +C0 +7C +ENDCHAR +STARTCHAR char65 +ENCODING 65 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +30 +78 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char66 +ENCODING 66 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +F8 +D8 +D8 +F0 +D8 +D8 +F0 +ENDCHAR +STARTCHAR char67 +ENCODING 67 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +78 +C0 +C0 +C0 +C0 +C0 +78 +ENDCHAR +STARTCHAR char68 +ENCODING 68 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +F8 +CC +CC +CC +CC +DC +F8 +ENDCHAR +STARTCHAR char69 +ENCODING 69 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +F8 +C0 +C0 +F8 +C0 +C0 +F8 +ENDCHAR +STARTCHAR char70 +ENCODING 70 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +F8 +C0 +C0 +F8 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char71 +ENCODING 71 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +7C +C0 +C0 +DC +CC +CC +7C +ENDCHAR +STARTCHAR char72 +ENCODING 72 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +CC +CC +CC +FC +CC +CC +CC +ENDCHAR +STARTCHAR char73 +ENCODING 73 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 3 7 0 0 +BITMAP +E0 +60 +60 +60 +60 +60 +E0 +ENDCHAR +STARTCHAR char74 +ENCODING 74 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 4 9 -1 -2 +BITMAP +30 +30 +30 +30 +30 +30 +30 +30 +E0 +ENDCHAR +STARTCHAR char75 +ENCODING 75 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 6 7 0 0 +BITMAP +CC +D8 +F0 +F0 +F0 +D8 +CC +ENDCHAR +STARTCHAR char76 +ENCODING 76 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 5 7 0 0 +BITMAP +C0 +C0 +C0 +C0 +C0 +C0 +F8 +ENDCHAR +STARTCHAR char77 +ENCODING 77 +SWIDTH 857 0 +DWIDTH 8 0 +BBX 8 7 0 0 +BITMAP +E3 +E7 +E7 +FF +FF +FF +DB +ENDCHAR +STARTCHAR char78 +ENCODING 78 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +CC +EC +EC +FC +DC +DC +CC +ENDCHAR +STARTCHAR char79 +ENCODING 79 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 7 7 0 0 +BITMAP +7C +C6 +C6 +C6 +C6 +C6 +7C +ENDCHAR +STARTCHAR char80 +ENCODING 80 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +F8 +D8 +D8 +F0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char81 +ENCODING 81 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 7 9 0 -2 +BITMAP +7C +C6 +C6 +C6 +C6 +C6 +7C +0C +0C +ENDCHAR +STARTCHAR char82 +ENCODING 82 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +F8 +D8 +D8 +F0 +F0 +D8 +D8 +ENDCHAR +STARTCHAR char83 +ENCODING 83 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +78 +C0 +C0 +70 +18 +18 +F0 +ENDCHAR +STARTCHAR char84 +ENCODING 84 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 6 7 -1 0 +BITMAP +FC +30 +30 +30 +30 +30 +30 +ENDCHAR +STARTCHAR char85 +ENCODING 85 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +CC +CC +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char86 +ENCODING 86 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +CC +CC +CC +78 +78 +78 +30 +ENDCHAR +STARTCHAR char87 +ENCODING 87 +SWIDTH 857 0 +DWIDTH 8 0 +BBX 8 7 0 0 +BITMAP +DB +FB +FF +FF +FF +66 +66 +ENDCHAR +STARTCHAR char88 +ENCODING 88 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +CC +78 +78 +30 +78 +78 +CC +ENDCHAR +STARTCHAR char89 +ENCODING 89 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +CC +D8 +78 +30 +30 +30 +30 +ENDCHAR +STARTCHAR char90 +ENCODING 90 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +F8 +18 +30 +60 +60 +C0 +F8 +ENDCHAR +STARTCHAR char91 +ENCODING 91 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 3 8 0 -1 +BITMAP +E0 +C0 +C0 +C0 +C0 +C0 +C0 +E0 +ENDCHAR +STARTCHAR char92 +ENCODING 92 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 4 7 0 0 +BITMAP +C0 +C0 +60 +60 +60 +30 +30 +ENDCHAR +STARTCHAR char93 +ENCODING 93 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 3 8 0 -1 +BITMAP +E0 +60 +60 +60 +60 +60 +60 +E0 +ENDCHAR +STARTCHAR char94 +ENCODING 94 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 6 4 0 3 +BITMAP +30 +78 +78 +CC +ENDCHAR +STARTCHAR char95 +ENCODING 95 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 5 1 0 -2 +BITMAP +F8 +ENDCHAR +STARTCHAR char96 +ENCODING 96 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 3 2 2 6 +BITMAP +C0 +60 +ENDCHAR +STARTCHAR char97 +ENCODING 97 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 5 0 0 +BITMAP +F8 +18 +F8 +D8 +F8 +ENDCHAR +STARTCHAR char98 +ENCODING 98 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +C0 +C0 +F0 +D8 +D8 +D8 +F0 +ENDCHAR +STARTCHAR char99 +ENCODING 99 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 5 0 0 +BITMAP +70 +C0 +C0 +C0 +70 +ENDCHAR +STARTCHAR char100 +ENCODING 100 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +18 +18 +78 +D8 +D8 +D8 +78 +ENDCHAR +STARTCHAR char101 +ENCODING 101 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 5 0 0 +BITMAP +70 +D8 +F8 +C0 +78 +ENDCHAR +STARTCHAR char102 +ENCODING 102 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 7 0 0 +BITMAP +70 +60 +F0 +60 +60 +60 +60 +ENDCHAR +STARTCHAR char103 +ENCODING 103 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 -2 +BITMAP +F8 +F0 +F0 +60 +78 +D8 +F8 +ENDCHAR +STARTCHAR char104 +ENCODING 104 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +C0 +C0 +F8 +D8 +D8 +D8 +D8 +ENDCHAR +STARTCHAR char105 +ENCODING 105 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 2 7 0 0 +BITMAP +C0 +00 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char106 +ENCODING 106 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 3 9 -1 -2 +BITMAP +60 +00 +60 +60 +60 +60 +60 +60 +E0 +ENDCHAR +STARTCHAR char107 +ENCODING 107 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +C0 +C0 +D8 +F0 +E0 +F0 +D8 +ENDCHAR +STARTCHAR char108 +ENCODING 108 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 2 7 0 0 +BITMAP +C0 +C0 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char109 +ENCODING 109 +SWIDTH 857 0 +DWIDTH 8 0 +BBX 8 5 0 0 +BITMAP +FF +DB +DB +DB +DB +ENDCHAR +STARTCHAR char110 +ENCODING 110 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 5 0 0 +BITMAP +F8 +D8 +D8 +D8 +D8 +ENDCHAR +STARTCHAR char111 +ENCODING 111 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 5 0 0 +BITMAP +70 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR char112 +ENCODING 112 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 -2 +BITMAP +F0 +D8 +D8 +D8 +F0 +C0 +C0 +ENDCHAR +STARTCHAR char113 +ENCODING 113 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 -2 +BITMAP +78 +D8 +D8 +D8 +78 +18 +18 +ENDCHAR +STARTCHAR char114 +ENCODING 114 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 5 0 0 +BITMAP +F0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char115 +ENCODING 115 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 5 0 0 +BITMAP +F0 +C0 +60 +30 +F0 +ENDCHAR +STARTCHAR char116 +ENCODING 116 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +60 +F0 +60 +60 +60 +70 +ENDCHAR +STARTCHAR char117 +ENCODING 117 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 5 0 0 +BITMAP +D8 +D8 +D8 +D8 +F8 +ENDCHAR +STARTCHAR char118 +ENCODING 118 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 5 0 0 +BITMAP +D8 +D8 +70 +70 +70 +ENDCHAR +STARTCHAR char119 +ENCODING 119 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 5 0 0 +BITMAP +FC +FC +FC +F8 +78 +ENDCHAR +STARTCHAR char120 +ENCODING 120 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 5 0 0 +BITMAP +D8 +70 +60 +70 +D8 +ENDCHAR +STARTCHAR char121 +ENCODING 121 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 -2 +BITMAP +D8 +D8 +70 +70 +70 +60 +E0 +ENDCHAR +STARTCHAR char122 +ENCODING 122 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 5 0 0 +BITMAP +F0 +30 +60 +C0 +F0 +ENDCHAR +STARTCHAR char123 +ENCODING 123 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 4 8 0 -1 +BITMAP +70 +60 +60 +C0 +60 +60 +60 +70 +ENDCHAR +STARTCHAR char124 +ENCODING 124 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 2 9 2 -2 +BITMAP +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char125 +ENCODING 125 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 4 8 0 -1 +BITMAP +E0 +60 +60 +60 +30 +60 +60 +E0 +ENDCHAR +STARTCHAR char126 +ENCODING 126 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 2 0 3 +BITMAP +E0 +38 +ENDCHAR +STARTCHAR char0 +ENCODING 127 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 128 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 129 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 130 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 131 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 132 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 133 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 134 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 135 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 136 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 137 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 138 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 139 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 140 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 141 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 142 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 143 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 144 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 145 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 146 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 147 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 148 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 149 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 150 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 151 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 152 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 153 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 154 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 155 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 156 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 157 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 158 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 159 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char160 +ENCODING 160 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char161 +ENCODING 161 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 2 7 0 -2 +BITMAP +C0 +00 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char162 +ENCODING 162 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +30 +78 +C0 +C0 +C0 +78 +30 +ENDCHAR +STARTCHAR char163 +ENCODING 163 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +78 +60 +60 +F0 +60 +60 +F8 +ENDCHAR +STARTCHAR char164 +ENCODING 164 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 4 0 1 +BITMAP +F8 +D8 +D8 +F8 +ENDCHAR +STARTCHAR char165 +ENCODING 165 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 6 7 0 0 +BITMAP +CC +78 +78 +78 +30 +78 +30 +ENDCHAR +STARTCHAR char166 +ENCODING 166 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 2 9 2 -2 +BITMAP +C0 +C0 +C0 +00 +00 +00 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char167 +ENCODING 167 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 7 0 0 +BITMAP +F0 +C0 +F0 +F0 +70 +30 +F0 +ENDCHAR +STARTCHAR char168 +ENCODING 168 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 1 1 6 +BITMAP +F0 +ENDCHAR +STARTCHAR char169 +ENCODING 169 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 7 7 0 0 +BITMAP +7C +C6 +FE +F6 +FE +C6 +7C +ENDCHAR +STARTCHAR char170 +ENCODING 170 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 3 0 4 +BITMAP +F0 +F0 +F0 +ENDCHAR +STARTCHAR char171 +ENCODING 171 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 3 0 1 +BITMAP +78 +F0 +78 +ENDCHAR +STARTCHAR char172 +ENCODING 172 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 2 0 2 +BITMAP +F8 +18 +ENDCHAR +STARTCHAR char173 +ENCODING 173 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 3 1 0 2 +BITMAP +E0 +ENDCHAR +STARTCHAR char174 +ENCODING 174 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 7 7 0 0 +BITMAP +7C +C6 +FE +FE +FE +C6 +7C +ENDCHAR +STARTCHAR char175 +ENCODING 175 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 6 1 0 6 +BITMAP +FC +ENDCHAR +STARTCHAR char176 +ENCODING 176 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 3 0 4 +BITMAP +F0 +F0 +F0 +ENDCHAR +STARTCHAR char177 +ENCODING 177 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +30 +30 +F8 +30 +00 +F8 +ENDCHAR +STARTCHAR char178 +ENCODING 178 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 4 0 3 +BITMAP +F0 +30 +60 +F0 +ENDCHAR +STARTCHAR char179 +ENCODING 179 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 4 0 3 +BITMAP +F0 +30 +30 +F0 +ENDCHAR +STARTCHAR char180 +ENCODING 180 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 3 2 2 6 +BITMAP +60 +C0 +ENDCHAR +STARTCHAR char181 +ENCODING 181 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 -2 +BITMAP +D8 +D8 +D8 +D8 +F8 +C0 +C0 +ENDCHAR +STARTCHAR char182 +ENCODING 182 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +7C +FC +FC +FC +3C +3C +3C +3C +ENDCHAR +STARTCHAR char183 +ENCODING 183 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 2 1 0 3 +BITMAP +C0 +ENDCHAR +STARTCHAR char184 +ENCODING 184 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 2 3 1 -2 +BITMAP +C0 +C0 +C0 +ENDCHAR +STARTCHAR char185 +ENCODING 185 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 3 4 0 3 +BITMAP +E0 +60 +60 +60 +ENDCHAR +STARTCHAR char186 +ENCODING 186 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 3 0 4 +BITMAP +F0 +F0 +F0 +ENDCHAR +STARTCHAR char187 +ENCODING 187 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 3 0 1 +BITMAP +F0 +78 +F0 +ENDCHAR +STARTCHAR char188 +ENCODING 188 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 7 7 0 0 +BITMAP +EC +78 +78 +7E +7E +7E +C6 +ENDCHAR +STARTCHAR char189 +ENCODING 189 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 7 7 0 0 +BITMAP +EC +78 +78 +7E +66 +6C +DE +ENDCHAR +STARTCHAR char190 +ENCODING 190 +SWIDTH 857 0 +DWIDTH 8 0 +BBX 8 7 0 0 +BITMAP +F6 +3C +3C +FF +3F +3F +63 +ENDCHAR +STARTCHAR char191 +ENCODING 191 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 7 0 -2 +BITMAP +60 +00 +60 +60 +C0 +C0 +F0 +ENDCHAR +STARTCHAR char192 +ENCODING 192 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 10 0 0 +BITMAP +60 +30 +00 +30 +78 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char193 +ENCODING 193 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 10 0 0 +BITMAP +18 +30 +00 +30 +78 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char194 +ENCODING 194 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 10 0 0 +BITMAP +30 +78 +00 +30 +78 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char195 +ENCODING 195 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 10 0 0 +BITMAP +7C +7C +00 +30 +78 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char196 +ENCODING 196 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +78 +00 +30 +78 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char197 +ENCODING 197 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +78 +78 +78 +78 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char198 +ENCODING 198 +SWIDTH 857 0 +DWIDTH 8 0 +BBX 8 7 0 0 +BITMAP +3F +38 +78 +7F +78 +D8 +DF +ENDCHAR +STARTCHAR char199 +ENCODING 199 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 9 0 -2 +BITMAP +78 +C0 +C0 +C0 +C0 +C0 +78 +18 +18 +ENDCHAR +STARTCHAR char200 +ENCODING 200 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 10 0 0 +BITMAP +60 +30 +00 +F8 +C0 +C0 +F8 +C0 +C0 +F8 +ENDCHAR +STARTCHAR char201 +ENCODING 201 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 10 0 0 +BITMAP +18 +30 +00 +F8 +C0 +C0 +F8 +C0 +C0 +F8 +ENDCHAR +STARTCHAR char202 +ENCODING 202 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 10 0 0 +BITMAP +30 +78 +00 +F8 +C0 +C0 +F8 +C0 +C0 +F8 +ENDCHAR +STARTCHAR char203 +ENCODING 203 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 9 0 0 +BITMAP +78 +00 +F8 +C0 +C0 +F8 +C0 +C0 +F8 +ENDCHAR +STARTCHAR char204 +ENCODING 204 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 3 10 0 0 +BITMAP +C0 +60 +00 +E0 +60 +60 +60 +60 +60 +E0 +ENDCHAR +STARTCHAR char205 +ENCODING 205 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 10 0 0 +BITMAP +30 +60 +00 +E0 +60 +60 +60 +60 +60 +E0 +ENDCHAR +STARTCHAR char206 +ENCODING 206 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 10 0 0 +BITMAP +60 +F0 +00 +E0 +60 +60 +60 +60 +60 +E0 +ENDCHAR +STARTCHAR char207 +ENCODING 207 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 9 0 0 +BITMAP +F0 +00 +E0 +60 +60 +60 +60 +60 +E0 +ENDCHAR +STARTCHAR char208 +ENCODING 208 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 7 7 -1 0 +BITMAP +7C +66 +66 +F6 +66 +6E +7C +ENDCHAR +STARTCHAR char209 +ENCODING 209 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 10 0 0 +BITMAP +7C +7C +00 +CC +EC +EC +FC +DC +DC +CC +ENDCHAR +STARTCHAR char210 +ENCODING 210 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 7 10 0 0 +BITMAP +30 +18 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +ENDCHAR +STARTCHAR char211 +ENCODING 211 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 7 10 0 0 +BITMAP +0C +18 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +ENDCHAR +STARTCHAR char212 +ENCODING 212 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 7 10 0 0 +BITMAP +18 +3C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +ENDCHAR +STARTCHAR char213 +ENCODING 213 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 7 10 0 0 +BITMAP +7C +7C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +ENDCHAR +STARTCHAR char214 +ENCODING 214 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 7 9 0 0 +BITMAP +3C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +ENDCHAR +STARTCHAR char215 +ENCODING 215 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 3 1 2 +BITMAP +F0 +60 +F0 +ENDCHAR +STARTCHAR char216 +ENCODING 216 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 7 7 0 0 +BITMAP +7C +CE +DE +DE +F6 +E6 +7C +ENDCHAR +STARTCHAR char217 +ENCODING 217 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 10 0 0 +BITMAP +60 +30 +00 +CC +CC +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char218 +ENCODING 218 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 10 0 0 +BITMAP +18 +30 +00 +CC +CC +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char219 +ENCODING 219 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 10 0 0 +BITMAP +30 +78 +00 +CC +CC +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char220 +ENCODING 220 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +78 +00 +CC +CC +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char221 +ENCODING 221 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 10 0 0 +BITMAP +18 +30 +00 +CC +D8 +78 +30 +30 +30 +30 +ENDCHAR +STARTCHAR char222 +ENCODING 222 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +C0 +F0 +D8 +D8 +F0 +C0 +C0 +ENDCHAR +STARTCHAR char223 +ENCODING 223 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +F8 +D8 +F0 +F0 +D8 +D8 +F8 +ENDCHAR +STARTCHAR char224 +ENCODING 224 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +60 +30 +00 +F8 +18 +F8 +D8 +F8 +ENDCHAR +STARTCHAR char225 +ENCODING 225 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +18 +30 +00 +F8 +18 +F8 +D8 +F8 +ENDCHAR +STARTCHAR char226 +ENCODING 226 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +30 +78 +00 +F8 +18 +F8 +D8 +F8 +ENDCHAR +STARTCHAR char227 +ENCODING 227 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +F8 +F8 +00 +F8 +18 +F8 +D8 +F8 +ENDCHAR +STARTCHAR char228 +ENCODING 228 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +78 +00 +F8 +18 +F8 +D8 +F8 +ENDCHAR +STARTCHAR char229 +ENCODING 229 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 9 0 0 +BITMAP +78 +78 +78 +00 +F8 +18 +F8 +D8 +F8 +ENDCHAR +STARTCHAR char230 +ENCODING 230 +SWIDTH 857 0 +DWIDTH 8 0 +BBX 8 5 0 0 +BITMAP +FE +1B +FF +D8 +FF +ENDCHAR +STARTCHAR char231 +ENCODING 231 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 7 0 -2 +BITMAP +70 +C0 +C0 +C0 +70 +30 +30 +ENDCHAR +STARTCHAR char232 +ENCODING 232 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +60 +30 +00 +70 +D8 +F8 +C0 +78 +ENDCHAR +STARTCHAR char233 +ENCODING 233 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +18 +30 +00 +70 +D8 +F8 +C0 +78 +ENDCHAR +STARTCHAR char234 +ENCODING 234 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +30 +78 +00 +70 +D8 +F8 +C0 +78 +ENDCHAR +STARTCHAR char235 +ENCODING 235 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +78 +00 +70 +D8 +F8 +C0 +78 +ENDCHAR +STARTCHAR char236 +ENCODING 236 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 3 8 -1 0 +BITMAP +C0 +60 +00 +60 +60 +60 +60 +60 +ENDCHAR +STARTCHAR char237 +ENCODING 237 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 3 8 0 0 +BITMAP +60 +C0 +00 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char238 +ENCODING 238 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 4 8 -1 0 +BITMAP +60 +F0 +00 +60 +60 +60 +60 +60 +ENDCHAR +STARTCHAR char239 +ENCODING 239 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 4 7 -1 0 +BITMAP +F0 +00 +60 +60 +60 +60 +60 +ENDCHAR +STARTCHAR char240 +ENCODING 240 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +78 +70 +18 +78 +D8 +D8 +70 +ENDCHAR +STARTCHAR char241 +ENCODING 241 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +F8 +F8 +00 +F8 +D8 +D8 +D8 +D8 +ENDCHAR +STARTCHAR char242 +ENCODING 242 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +60 +30 +00 +70 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR char243 +ENCODING 243 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +18 +30 +00 +70 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR char244 +ENCODING 244 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +30 +78 +00 +70 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR char245 +ENCODING 245 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +F8 +F8 +00 +70 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR char246 +ENCODING 246 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +78 +00 +70 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR char247 +ENCODING 247 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 6 5 0 1 +BITMAP +30 +00 +FC +00 +30 +ENDCHAR +STARTCHAR char248 +ENCODING 248 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 5 0 0 +BITMAP +78 +F8 +F8 +F8 +F0 +ENDCHAR +STARTCHAR char249 +ENCODING 249 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +60 +30 +00 +D8 +D8 +D8 +D8 +F8 +ENDCHAR +STARTCHAR char250 +ENCODING 250 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +18 +30 +00 +D8 +D8 +D8 +D8 +F8 +ENDCHAR +STARTCHAR char251 +ENCODING 251 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +30 +78 +00 +D8 +D8 +D8 +D8 +F8 +ENDCHAR +STARTCHAR char252 +ENCODING 252 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +78 +00 +D8 +D8 +D8 +D8 +F8 +ENDCHAR +STARTCHAR char253 +ENCODING 253 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 10 0 -2 +BITMAP +18 +30 +00 +D8 +D8 +70 +70 +70 +60 +E0 +ENDCHAR +STARTCHAR char254 +ENCODING 254 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 9 0 -2 +BITMAP +C0 +C0 +F0 +D8 +D8 +D8 +F0 +C0 +C0 +ENDCHAR +STARTCHAR char255 +ENCODING 255 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 9 0 -2 +BITMAP +78 +00 +D8 +D8 +70 +70 +70 +60 +E0 +ENDCHAR +ENDFONT diff --git a/ui/fonts/DroidSansBold8x12.h b/ui/fonts/DroidSansBold8x12.h new file mode 100644 index 0000000..1586362 --- /dev/null +++ b/ui/fonts/DroidSansBold8x12.h @@ -0,0 +1,261 @@ +/* -FreeType-Droid_Sans-Bold-R-Normal--9-70-96-96-P-49-ISO10646-1 */ +#define FONT_WIDTH_Droid_SansBold_8x12 8 +#define FONT_HEIGHT_Droid_SansBold_8x12 12 +const uint8_t FONT_DATA_Droid_SansBold_8x12[256][13] = { +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x00,0x06,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x1e,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x78,0x78,0xfe,0x6c,0xfe,0x3c,0x3c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x18,0x3c,0x1e,0x1e,0x1c,0x3c,0x3c,0x1e,0x0c,0x00,}, +{/*w*/8,0x00,0x00,0x00,0xde,0x7e,0x7e,0xfe,0xf9,0xf9,0xed,0x01,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x3e,0x36,0x1e,0x0c,0xde,0x76,0x7c,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x0c,0x06,0x06,0x06,0x06,0x06,0x06,0x0c,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x06,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x06,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x18,0x7e,0x18,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x18,0x18,0x3e,0x18,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x18,0x18,0x0c,0x0c,0x0c,0x06,0x06,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1c,0x36,0x36,0x36,0x36,0x36,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1c,0x1e,0x18,0x18,0x18,0x18,0x18,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1e,0x30,0x30,0x18,0x18,0x0c,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3e,0x30,0x30,0x1c,0x30,0x30,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x30,0x38,0x3c,0x36,0x7e,0x30,0x30,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3e,0x06,0x06,0x1e,0x30,0x30,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3c,0x06,0x06,0x3e,0x36,0x36,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3e,0x30,0x18,0x18,0x18,0x0c,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3e,0x36,0x36,0x1c,0x36,0x36,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1c,0x36,0x36,0x3e,0x30,0x30,0x1e,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x06,0x06,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x30,0x1c,0x06,0x1c,0x30,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x3e,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x06,0x1c,0x30,0x1c,0x06,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x1e,0x18,0x18,0x0c,0x0c,0x00,0x0c,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0xf8,0x8c,0xf7,0xff,0xff,0xff,0x06,0x7c,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x18,0x3c,0x3c,0x3c,0x3c,0x66,0x66,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3e,0x36,0x36,0x1e,0x36,0x36,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3c,0x06,0x06,0x06,0x06,0x06,0x3c,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x3e,0x66,0x66,0x66,0x66,0x76,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3e,0x06,0x06,0x3e,0x06,0x06,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3e,0x06,0x06,0x3e,0x06,0x06,0x06,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x7c,0x06,0x06,0x76,0x66,0x66,0x7c,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x66,0x66,0x66,0x7e,0x66,0x66,0x66,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x0c,0x0c,0x0c,0x0c,0x0c,0x0e,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x07,}, +{/*w*/5,0x00,0x00,0x00,0x66,0x36,0x1e,0x1e,0x1e,0x36,0x66,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x3e,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x8e,0xcf,0xcf,0xff,0xff,0xff,0xb7,0x01,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x66,0x6e,0x6e,0x7e,0x76,0x76,0x66,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3e,0x36,0x36,0x1e,0x06,0x06,0x06,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x60,0x60,}, +{/*w*/5,0x00,0x00,0x00,0x3e,0x36,0x36,0x1e,0x1e,0x36,0x36,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3c,0x06,0x06,0x1c,0x30,0x30,0x1e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x3f,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3c,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x66,0x66,0x66,0x3c,0x3c,0x3c,0x18,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0xb6,0xbf,0xff,0xff,0xff,0xcd,0xcc,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x66,0x3c,0x3c,0x18,0x3c,0x3c,0x66,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x66,0x36,0x3c,0x18,0x18,0x18,0x18,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3e,0x30,0x18,0x0c,0x0c,0x06,0x3e,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x0e,0x06,0x06,0x06,0x06,0x06,0x06,0x0e,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x06,0x06,0x0c,0x0c,0x0c,0x18,0x18,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x0e,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0e,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x18,0x3c,0x3c,0x66,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,}, +{/*w*/5,0x00,0x00,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x3e,0x30,0x3e,0x36,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x06,0x06,0x1e,0x36,0x36,0x36,0x1e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x1c,0x06,0x06,0x06,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x30,0x30,0x3c,0x36,0x36,0x36,0x3c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x1c,0x36,0x3e,0x06,0x3c,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x1c,0x0c,0x1e,0x0c,0x0c,0x0c,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x3e,0x1e,0x1e,0x0c,0x3c,0x36,0x3e,}, +{/*w*/5,0x00,0x00,0x00,0x06,0x06,0x3e,0x36,0x36,0x36,0x36,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x06,0x00,0x06,0x06,0x06,0x06,0x06,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x06,0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x07,}, +{/*w*/5,0x00,0x00,0x00,0x06,0x06,0x36,0x1e,0x0e,0x1e,0x36,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x00,0x00,0xfe,0xb7,0xb7,0xb7,0xb7,0x01,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x3e,0x36,0x36,0x36,0x36,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x1c,0x36,0x36,0x36,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x1e,0x36,0x36,0x36,0x1e,0x06,0x06,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x3c,0x36,0x36,0x36,0x3c,0x30,0x30,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x1e,0x06,0x06,0x06,0x06,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x1e,0x06,0x0c,0x18,0x1e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x0c,0x1e,0x0c,0x0c,0x0c,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x36,0x36,0x36,0x36,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x36,0x36,0x1c,0x1c,0x1c,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x7e,0x7e,0x7e,0x3e,0x3c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x36,0x1c,0x0c,0x1c,0x36,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x36,0x36,0x1c,0x1c,0x1c,0x0c,0x0e,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x1e,0x18,0x0c,0x06,0x1e,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x1c,0x0c,0x0c,0x06,0x0c,0x0c,0x0c,0x1c,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,}, +{/*w*/3,0x00,0x00,0x00,0x0e,0x0c,0x0c,0x0c,0x18,0x0c,0x0c,0x0e,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x0e,0x38,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x06,0x06,0x06,0x06,}, +{/*w*/5,0x00,0x00,0x00,0x18,0x3c,0x06,0x06,0x06,0x3c,0x18,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3c,0x0c,0x0c,0x1e,0x0c,0x0c,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x3e,0x36,0x36,0x3e,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x66,0x3c,0x3c,0x3c,0x18,0x3c,0x18,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x18,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x18,}, +{/*w*/4,0x00,0x00,0x00,0x1e,0x06,0x1e,0x1e,0x1c,0x18,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x7c,0xc6,0xfe,0xde,0xfe,0xc6,0x7c,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x1e,0x1e,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x1e,0x3c,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x30,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x7c,0xc6,0xfe,0xfe,0xfe,0xc6,0x7c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x1e,0x1e,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x18,0x18,0x3e,0x18,0x00,0x3e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x1e,0x18,0x0c,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x1e,0x18,0x18,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x30,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x36,0x36,0x36,0x36,0x3e,0x06,0x06,}, +{/*w*/6,0x00,0x00,0x00,0x7c,0x7e,0x7e,0x7e,0x78,0x78,0x78,0x78,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x0c,0x0c,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x0c,0x0c,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x1e,0x1e,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x3c,0x1e,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x6e,0x3c,0x3c,0xfc,0xfc,0xfc,0xc6,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x6e,0x3c,0x3c,0xfc,0xcc,0x6c,0xf6,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0xde,0x78,0x78,0xfe,0xf9,0xf9,0x8d,0x01,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x0c,0x06,0x06,0x1e,}, +{/*w*/6,0x0c,0x18,0x00,0x18,0x3c,0x3c,0x3c,0x3c,0x66,0x66,0x00,0x00,}, +{/*w*/6,0x30,0x18,0x00,0x18,0x3c,0x3c,0x3c,0x3c,0x66,0x66,0x00,0x00,}, +{/*w*/6,0x18,0x3c,0x00,0x18,0x3c,0x3c,0x3c,0x3c,0x66,0x66,0x00,0x00,}, +{/*w*/6,0x7c,0x7c,0x00,0x18,0x3c,0x3c,0x3c,0x3c,0x66,0x66,0x00,0x00,}, +{/*w*/6,0x00,0x3c,0x00,0x18,0x3c,0x3c,0x3c,0x3c,0x66,0x66,0x00,0x00,}, +{/*w*/6,0x00,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x66,0x66,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0xf8,0x39,0x3c,0xfc,0x3d,0x36,0xf6,0x01,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3c,0x06,0x06,0x06,0x06,0x06,0x3c,0x30,0x30,}, +{/*w*/5,0x0c,0x18,0x00,0x3e,0x06,0x06,0x3e,0x06,0x06,0x3e,0x00,0x00,}, +{/*w*/5,0x30,0x18,0x00,0x3e,0x06,0x06,0x3e,0x06,0x06,0x3e,0x00,0x00,}, +{/*w*/5,0x18,0x3c,0x00,0x3e,0x06,0x06,0x3e,0x06,0x06,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x3c,0x00,0x3e,0x06,0x06,0x3e,0x06,0x06,0x3e,0x00,0x00,}, +{/*w*/4,0x06,0x0c,0x00,0x0e,0x0c,0x0c,0x0c,0x0c,0x0c,0x0e,0x00,0x00,}, +{/*w*/4,0x18,0x0c,0x00,0x0e,0x0c,0x0c,0x0c,0x0c,0x0c,0x0e,0x00,0x00,}, +{/*w*/4,0x0c,0x1e,0x00,0x0e,0x0c,0x0c,0x0c,0x0c,0x0c,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x1e,0x00,0x0e,0x0c,0x0c,0x0c,0x0c,0x0c,0x0e,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x3e,0x66,0x66,0x6f,0x66,0x76,0x3e,0x00,0x00,}, +{/*w*/6,0x7c,0x7c,0x00,0x66,0x6e,0x6e,0x7e,0x76,0x76,0x66,0x00,0x00,}, +{/*w*/7,0x18,0x30,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,}, +{/*w*/7,0x60,0x30,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,}, +{/*w*/7,0x30,0x78,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,}, +{/*w*/7,0x7c,0x7c,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,}, +{/*w*/7,0x00,0x78,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x3c,0x18,0x3c,0x00,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x7c,0xe6,0xf6,0xf6,0xde,0xce,0x7c,0x00,0x00,}, +{/*w*/6,0x0c,0x18,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3c,0x00,0x00,}, +{/*w*/6,0x30,0x18,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3c,0x00,0x00,}, +{/*w*/6,0x18,0x3c,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3c,0x00,0x00,}, +{/*w*/6,0x00,0x3c,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3c,0x00,0x00,}, +{/*w*/6,0x30,0x18,0x00,0x66,0x36,0x3c,0x18,0x18,0x18,0x18,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x06,0x1e,0x36,0x36,0x1e,0x06,0x06,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3e,0x36,0x1e,0x1e,0x36,0x36,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x0c,0x18,0x00,0x3e,0x30,0x3e,0x36,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x30,0x18,0x00,0x3e,0x30,0x3e,0x36,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x18,0x3c,0x00,0x3e,0x30,0x3e,0x36,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x3e,0x3e,0x00,0x3e,0x30,0x3e,0x36,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3c,0x00,0x3e,0x30,0x3e,0x36,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x3c,0x3c,0x3c,0x00,0x3e,0x30,0x3e,0x36,0x3e,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x00,0x00,0xfe,0xb0,0xff,0x37,0xfe,0x01,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x1c,0x06,0x06,0x06,0x1c,0x18,0x18,}, +{/*w*/5,0x00,0x00,0x0c,0x18,0x00,0x1c,0x36,0x3e,0x06,0x3c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x30,0x18,0x00,0x1c,0x36,0x3e,0x06,0x3c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x18,0x3c,0x00,0x1c,0x36,0x3e,0x06,0x3c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3c,0x00,0x1c,0x36,0x3e,0x06,0x3c,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x03,0x06,0x00,0x06,0x06,0x06,0x06,0x06,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x0c,0x06,0x00,0x06,0x06,0x06,0x06,0x06,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x06,0x0f,0x00,0x06,0x06,0x06,0x06,0x06,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x0f,0x00,0x06,0x06,0x06,0x06,0x06,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3c,0x1c,0x30,0x3c,0x36,0x36,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x3e,0x3e,0x00,0x3e,0x36,0x36,0x36,0x36,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x0c,0x18,0x00,0x1c,0x36,0x36,0x36,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x30,0x18,0x00,0x1c,0x36,0x36,0x36,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x18,0x3c,0x00,0x1c,0x36,0x36,0x36,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x3e,0x3e,0x00,0x1c,0x36,0x36,0x36,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3c,0x00,0x1c,0x36,0x36,0x36,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x18,0x00,0x7e,0x00,0x18,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x3c,0x3e,0x3e,0x3e,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x0c,0x18,0x00,0x36,0x36,0x36,0x36,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x30,0x18,0x00,0x36,0x36,0x36,0x36,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x18,0x3c,0x00,0x36,0x36,0x36,0x36,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3c,0x00,0x36,0x36,0x36,0x36,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x30,0x18,0x00,0x36,0x36,0x1c,0x1c,0x1c,0x0c,0x0e,}, +{/*w*/5,0x00,0x00,0x00,0x06,0x06,0x1e,0x36,0x36,0x36,0x1e,0x06,0x06,}, +{/*w*/5,0x00,0x00,0x00,0x3c,0x00,0x36,0x36,0x1c,0x1c,0x1c,0x0c,0x0e,}, +}; diff --git a/ui/fonts/DroidSansBold9x11.bdf b/ui/fonts/DroidSansBold9x11.bdf new file mode 100644 index 0000000..e3675b0 --- /dev/null +++ b/ui/fonts/DroidSansBold9x11.bdf @@ -0,0 +1,2927 @@ +STARTFONT 2.1 +COMMENT Font converted from OTF to BDF. +FONT -FreeType-Droid Sans-Bold-R-Normal--8-60-96-96-P-44-ISO10646-1 +SIZE 6 96 96 +FONTBOUNDINGBOX 8 11 -1 -2 +STARTPROPERTIES 19 +POINT_SIZE 60 +PIXEL_SIZE 8 +RESOLUTION_X 96 +RESOLUTION_Y 96 +FONT_ASCENT 7 +FONT_DESCENT 1 +AVERAGE_WIDTH 44 +SPACING "P" +FOUNDRY "FreeType" +FAMILY_NAME "Droid Sans" +CHARSET_REGISTRY "ISO10646" +CHARSET_ENCODING "1" +WEIGHT_NAME "Bold" +SLANT "R" +SETWIDTH_NAME "Normal" +COPYRIGHT "Digitized data copyright © 2007, Google Corporation." +_TTF_PSNAME "DroidSans" +_OTF_FONTFILE "DroidSans.ttf" +_GBDFED_INFO "Edited with gbdfed 1.6." +ENDPROPERTIES +CHARS 256 +STARTCHAR char0 +ENCODING 0 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char1 +ENCODING 1 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char2 +ENCODING 2 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char3 +ENCODING 3 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char4 +ENCODING 4 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char5 +ENCODING 5 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char6 +ENCODING 6 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char7 +ENCODING 7 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char8 +ENCODING 8 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char9 +ENCODING 9 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char10 +ENCODING 10 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char11 +ENCODING 11 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char12 +ENCODING 12 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char13 +ENCODING 13 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char14 +ENCODING 14 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char15 +ENCODING 15 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char16 +ENCODING 16 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char17 +ENCODING 17 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char18 +ENCODING 18 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char19 +ENCODING 19 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char20 +ENCODING 20 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char21 +ENCODING 21 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char22 +ENCODING 22 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char23 +ENCODING 23 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char24 +ENCODING 24 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char25 +ENCODING 25 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char26 +ENCODING 26 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char27 +ENCODING 27 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char28 +ENCODING 28 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char29 +ENCODING 29 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char30 +ENCODING 30 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char31 +ENCODING 31 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char32 +ENCODING 32 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char33 +ENCODING 33 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 2 6 0 0 +BITMAP +C0 +C0 +C0 +C0 +00 +C0 +ENDCHAR +STARTCHAR char34 +ENCODING 34 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 3 2 1 4 +BITMAP +E0 +E0 +ENDCHAR +STARTCHAR char35 +ENCODING 35 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 6 6 0 0 +BITMAP +38 +38 +FC +FC +70 +70 +ENDCHAR +STARTCHAR char36 +ENCODING 36 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 8 0 -1 +BITMAP +60 +F0 +E0 +E0 +70 +70 +F0 +60 +ENDCHAR +STARTCHAR char37 +ENCODING 37 +SWIDTH 875 0 +DWIDTH 7 0 +BBX 7 6 0 0 +BITMAP +EC +F8 +FE +FE +3E +6E +ENDCHAR +STARTCHAR char38 +ENCODING 38 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 7 6 0 0 +BITMAP +F8 +D8 +70 +F6 +DC +FC +ENDCHAR +STARTCHAR char39 +ENCODING 39 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 2 2 1 4 +BITMAP +C0 +C0 +ENDCHAR +STARTCHAR char40 +ENCODING 40 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 3 7 0 -1 +BITMAP +60 +C0 +C0 +C0 +C0 +C0 +60 +ENDCHAR +STARTCHAR char41 +ENCODING 41 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 3 7 -1 -1 +BITMAP +C0 +60 +60 +60 +60 +60 +C0 +ENDCHAR +STARTCHAR char42 +ENCODING 42 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 4 0 2 +BITMAP +60 +F0 +60 +F0 +ENDCHAR +STARTCHAR char43 +ENCODING 43 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 4 1 1 +BITMAP +60 +60 +F0 +60 +ENDCHAR +STARTCHAR char44 +ENCODING 44 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 2 2 0 -1 +BITMAP +C0 +C0 +ENDCHAR +STARTCHAR char45 +ENCODING 45 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 3 1 0 1 +BITMAP +E0 +ENDCHAR +STARTCHAR char46 +ENCODING 46 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 2 1 0 0 +BITMAP +C0 +ENDCHAR +STARTCHAR char47 +ENCODING 47 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 4 6 0 0 +BITMAP +30 +30 +60 +60 +C0 +C0 +ENDCHAR +STARTCHAR char48 +ENCODING 48 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +60 +F0 +F0 +F0 +F0 +60 +ENDCHAR +STARTCHAR char49 +ENCODING 49 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +60 +E0 +60 +60 +60 +60 +ENDCHAR +STARTCHAR char50 +ENCODING 50 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +F0 +30 +30 +60 +60 +F0 +ENDCHAR +STARTCHAR char51 +ENCODING 51 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +F0 +30 +60 +30 +30 +F0 +ENDCHAR +STARTCHAR char52 +ENCODING 52 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 5 6 0 0 +BITMAP +30 +70 +70 +F0 +F8 +30 +ENDCHAR +STARTCHAR char53 +ENCODING 53 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +F0 +C0 +F0 +30 +30 +E0 +ENDCHAR +STARTCHAR char54 +ENCODING 54 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +70 +C0 +F0 +F0 +F0 +70 +ENDCHAR +STARTCHAR char55 +ENCODING 55 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +F0 +30 +30 +60 +60 +60 +ENDCHAR +STARTCHAR char56 +ENCODING 56 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +F0 +F0 +F0 +60 +F0 +F0 +ENDCHAR +STARTCHAR char57 +ENCODING 57 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +E0 +F0 +F0 +F0 +30 +E0 +ENDCHAR +STARTCHAR char58 +ENCODING 58 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 2 4 0 0 +BITMAP +C0 +00 +00 +C0 +ENDCHAR +STARTCHAR char59 +ENCODING 59 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 2 5 0 -1 +BITMAP +C0 +00 +00 +C0 +C0 +ENDCHAR +STARTCHAR char60 +ENCODING 60 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 4 0 1 +BITMAP +30 +60 +E0 +30 +ENDCHAR +STARTCHAR char61 +ENCODING 61 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 3 0 1 +BITMAP +F0 +00 +F0 +ENDCHAR +STARTCHAR char62 +ENCODING 62 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 4 0 1 +BITMAP +C0 +60 +70 +C0 +ENDCHAR +STARTCHAR char63 +ENCODING 63 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +F0 +30 +30 +60 +00 +60 +ENDCHAR +STARTCHAR char64 +ENCODING 64 +SWIDTH 875 0 +DWIDTH 7 0 +BBX 7 7 0 -1 +BITMAP +7C +C6 +FE +FE +FE +C0 +7C +ENDCHAR +STARTCHAR char65 +ENCODING 65 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 6 0 0 +BITMAP +30 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char66 +ENCODING 66 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +F8 +D8 +F8 +D8 +D8 +F8 +ENDCHAR +STARTCHAR char67 +ENCODING 67 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +78 +C0 +C0 +C0 +C0 +78 +ENDCHAR +STARTCHAR char68 +ENCODING 68 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +F0 +D8 +D8 +D8 +D8 +F0 +ENDCHAR +STARTCHAR char69 +ENCODING 69 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +F0 +C0 +F0 +C0 +C0 +F0 +ENDCHAR +STARTCHAR char70 +ENCODING 70 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +F0 +C0 +F0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char71 +ENCODING 71 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 6 0 0 +BITMAP +7C +C0 +C0 +DC +CC +7C +ENDCHAR +STARTCHAR char72 +ENCODING 72 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 6 0 0 +BITMAP +CC +CC +FC +CC +CC +CC +ENDCHAR +STARTCHAR char73 +ENCODING 73 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 2 6 1 0 +BITMAP +C0 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char74 +ENCODING 74 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 3 8 -1 -2 +BITMAP +60 +60 +60 +60 +60 +60 +60 +C0 +ENDCHAR +STARTCHAR char75 +ENCODING 75 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +D8 +F0 +E0 +F0 +F0 +D8 +ENDCHAR +STARTCHAR char76 +ENCODING 76 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 5 6 0 0 +BITMAP +C0 +C0 +C0 +C0 +C0 +F8 +ENDCHAR +STARTCHAR char77 +ENCODING 77 +SWIDTH 1000 0 +DWIDTH 8 0 +BBX 8 6 0 0 +BITMAP +C3 +E7 +E7 +FF +FF +DB +ENDCHAR +STARTCHAR char78 +ENCODING 78 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 6 0 0 +BITMAP +CC +EC +FC +FC +DC +CC +ENDCHAR +STARTCHAR char79 +ENCODING 79 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 6 0 0 +BITMAP +78 +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char80 +ENCODING 80 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +F8 +D8 +D8 +F0 +C0 +C0 +ENDCHAR +STARTCHAR char81 +ENCODING 81 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 7 0 -1 +BITMAP +78 +CC +CC +CC +CC +78 +18 +ENDCHAR +STARTCHAR char82 +ENCODING 82 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +F8 +D8 +D8 +F0 +F0 +D8 +ENDCHAR +STARTCHAR char83 +ENCODING 83 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +F0 +C0 +E0 +30 +30 +F0 +ENDCHAR +STARTCHAR char84 +ENCODING 84 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +F0 +60 +60 +60 +60 +60 +ENDCHAR +STARTCHAR char85 +ENCODING 85 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 6 0 0 +BITMAP +CC +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char86 +ENCODING 86 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 6 0 0 +BITMAP +CC +CC +78 +78 +78 +30 +ENDCHAR +STARTCHAR char87 +ENCODING 87 +SWIDTH 1000 0 +DWIDTH 8 0 +BBX 8 6 0 0 +BITMAP +DB +FF +FF +FF +6E +66 +ENDCHAR +STARTCHAR char88 +ENCODING 88 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +D8 +70 +70 +70 +F0 +D8 +ENDCHAR +STARTCHAR char89 +ENCODING 89 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 6 6 -1 0 +BITMAP +CC +78 +78 +30 +30 +30 +ENDCHAR +STARTCHAR char90 +ENCODING 90 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +F8 +30 +30 +60 +60 +F8 +ENDCHAR +STARTCHAR char91 +ENCODING 91 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 3 7 1 -1 +BITMAP +E0 +C0 +C0 +C0 +C0 +C0 +E0 +ENDCHAR +STARTCHAR char92 +ENCODING 92 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 4 6 0 0 +BITMAP +C0 +C0 +60 +60 +30 +30 +ENDCHAR +STARTCHAR char93 +ENCODING 93 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 3 7 -1 -1 +BITMAP +E0 +60 +60 +60 +60 +60 +E0 +ENDCHAR +STARTCHAR char94 +ENCODING 94 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 5 4 0 2 +BITMAP +30 +70 +D8 +D8 +ENDCHAR +STARTCHAR char95 +ENCODING 95 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 4 1 0 -2 +BITMAP +F0 +ENDCHAR +STARTCHAR char96 +ENCODING 96 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 3 2 2 5 +BITMAP +C0 +60 +ENDCHAR +STARTCHAR char97 +ENCODING 97 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 4 0 0 +BITMAP +F0 +30 +F0 +F0 +ENDCHAR +STARTCHAR char98 +ENCODING 98 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +C0 +C0 +F0 +D8 +D8 +F0 +ENDCHAR +STARTCHAR char99 +ENCODING 99 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 4 0 0 +BITMAP +70 +C0 +C0 +70 +ENDCHAR +STARTCHAR char100 +ENCODING 100 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +18 +18 +78 +D8 +D8 +78 +ENDCHAR +STARTCHAR char101 +ENCODING 101 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 4 0 0 +BITMAP +F0 +F0 +C0 +F0 +ENDCHAR +STARTCHAR char102 +ENCODING 102 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 3 6 0 0 +BITMAP +E0 +C0 +E0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char103 +ENCODING 103 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 5 6 0 -2 +BITMAP +F8 +F0 +F0 +78 +D8 +F8 +ENDCHAR +STARTCHAR char104 +ENCODING 104 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +C0 +C0 +F8 +D8 +D8 +D8 +ENDCHAR +STARTCHAR char105 +ENCODING 105 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 2 6 0 0 +BITMAP +C0 +00 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char106 +ENCODING 106 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 3 8 -1 -2 +BITMAP +60 +00 +60 +60 +60 +60 +60 +E0 +ENDCHAR +STARTCHAR char107 +ENCODING 107 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +C0 +C0 +F0 +E0 +E0 +F0 +ENDCHAR +STARTCHAR char108 +ENCODING 108 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 2 6 0 0 +BITMAP +C0 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char109 +ENCODING 109 +SWIDTH 1000 0 +DWIDTH 8 0 +BBX 8 4 0 0 +BITMAP +FF +DB +DB +DB +ENDCHAR +STARTCHAR char110 +ENCODING 110 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 4 0 0 +BITMAP +F8 +D8 +D8 +D8 +ENDCHAR +STARTCHAR char111 +ENCODING 111 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 4 0 0 +BITMAP +70 +D8 +D8 +70 +ENDCHAR +STARTCHAR char112 +ENCODING 112 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 -2 +BITMAP +F0 +D8 +D8 +F0 +C0 +C0 +ENDCHAR +STARTCHAR char113 +ENCODING 113 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 -2 +BITMAP +78 +D8 +D8 +78 +18 +18 +ENDCHAR +STARTCHAR char114 +ENCODING 114 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 3 4 0 0 +BITMAP +E0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char115 +ENCODING 115 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 4 0 0 +BITMAP +F0 +E0 +30 +F0 +ENDCHAR +STARTCHAR char116 +ENCODING 116 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 3 5 0 0 +BITMAP +C0 +E0 +C0 +C0 +E0 +ENDCHAR +STARTCHAR char117 +ENCODING 117 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 4 0 0 +BITMAP +D8 +D8 +D8 +F8 +ENDCHAR +STARTCHAR char118 +ENCODING 118 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 4 0 0 +BITMAP +F0 +F0 +F0 +60 +ENDCHAR +STARTCHAR char119 +ENCODING 119 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 4 0 0 +BITMAP +FC +FC +F8 +78 +ENDCHAR +STARTCHAR char120 +ENCODING 120 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 4 0 0 +BITMAP +F0 +60 +60 +F0 +ENDCHAR +STARTCHAR char121 +ENCODING 121 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 -2 +BITMAP +F0 +F0 +F0 +60 +60 +C0 +ENDCHAR +STARTCHAR char122 +ENCODING 122 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 4 0 0 +BITMAP +F0 +60 +60 +F0 +ENDCHAR +STARTCHAR char123 +ENCODING 123 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 3 7 0 -1 +BITMAP +60 +60 +60 +C0 +60 +60 +60 +ENDCHAR +STARTCHAR char124 +ENCODING 124 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 2 8 1 -2 +BITMAP +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char125 +ENCODING 125 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 3 7 1 -1 +BITMAP +C0 +C0 +C0 +60 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char126 +ENCODING 126 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 2 0 1 +BITMAP +C0 +70 +ENDCHAR +STARTCHAR char127 +ENCODING 127 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char128 +ENCODING 128 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char129 +ENCODING 129 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char130 +ENCODING 130 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char131 +ENCODING 131 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char132 +ENCODING 132 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char133 +ENCODING 133 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char134 +ENCODING 134 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char135 +ENCODING 135 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char136 +ENCODING 136 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char137 +ENCODING 137 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char138 +ENCODING 138 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char139 +ENCODING 139 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char140 +ENCODING 140 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char141 +ENCODING 141 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char142 +ENCODING 142 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char143 +ENCODING 143 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char144 +ENCODING 144 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char145 +ENCODING 145 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char146 +ENCODING 146 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char147 +ENCODING 147 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char148 +ENCODING 148 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char149 +ENCODING 149 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char150 +ENCODING 150 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char151 +ENCODING 151 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char152 +ENCODING 152 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char153 +ENCODING 153 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char154 +ENCODING 154 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char155 +ENCODING 155 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char156 +ENCODING 156 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char157 +ENCODING 157 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char158 +ENCODING 158 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char159 +ENCODING 159 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char160 +ENCODING 160 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char161 +ENCODING 161 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 2 6 0 -2 +BITMAP +C0 +00 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char162 +ENCODING 162 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 3 6 1 0 +BITMAP +60 +E0 +C0 +C0 +E0 +60 +ENDCHAR +STARTCHAR char163 +ENCODING 163 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +70 +60 +60 +F0 +60 +F0 +ENDCHAR +STARTCHAR char164 +ENCODING 164 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 3 0 1 +BITMAP +F0 +F0 +F0 +ENDCHAR +STARTCHAR char165 +ENCODING 165 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 6 6 -1 0 +BITMAP +CC +78 +70 +78 +78 +30 +ENDCHAR +STARTCHAR char166 +ENCODING 166 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 2 8 1 -2 +BITMAP +C0 +C0 +C0 +00 +00 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char167 +ENCODING 167 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +F0 +E0 +F0 +F0 +30 +F0 +ENDCHAR +STARTCHAR char168 +ENCODING 168 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 4 1 1 5 +BITMAP +F0 +ENDCHAR +STARTCHAR char169 +ENCODING 169 +SWIDTH 875 0 +DWIDTH 7 0 +BBX 7 6 0 0 +BITMAP +7C +FE +F6 +FE +C6 +7C +ENDCHAR +STARTCHAR char170 +ENCODING 170 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 4 3 0 3 +BITMAP +F0 +F0 +F0 +ENDCHAR +STARTCHAR char171 +ENCODING 171 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 5 4 0 0 +BITMAP +78 +F0 +F0 +78 +ENDCHAR +STARTCHAR char172 +ENCODING 172 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 2 0 1 +BITMAP +F0 +30 +ENDCHAR +STARTCHAR char173 +ENCODING 173 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 3 1 0 1 +BITMAP +E0 +ENDCHAR +STARTCHAR char174 +ENCODING 174 +SWIDTH 875 0 +DWIDTH 7 0 +BBX 7 6 0 0 +BITMAP +7C +FE +FE +FE +C6 +7C +ENDCHAR +STARTCHAR char175 +ENCODING 175 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 5 1 0 6 +BITMAP +F8 +ENDCHAR +STARTCHAR char176 +ENCODING 176 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 4 3 0 3 +BITMAP +F0 +F0 +F0 +ENDCHAR +STARTCHAR char177 +ENCODING 177 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 5 1 0 +BITMAP +60 +60 +F0 +60 +F0 +ENDCHAR +STARTCHAR char178 +ENCODING 178 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 4 0 2 +BITMAP +F0 +30 +60 +E0 +ENDCHAR +STARTCHAR char179 +ENCODING 179 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 4 0 2 +BITMAP +F0 +30 +30 +F0 +ENDCHAR +STARTCHAR char180 +ENCODING 180 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 3 2 2 5 +BITMAP +60 +C0 +ENDCHAR +STARTCHAR char181 +ENCODING 181 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 -2 +BITMAP +D8 +D8 +D8 +F8 +C0 +C0 +ENDCHAR +STARTCHAR char182 +ENCODING 182 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 -1 +BITMAP +F8 +F8 +F8 +F8 +38 +38 +ENDCHAR +STARTCHAR char183 +ENCODING 183 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 2 1 0 2 +BITMAP +C0 +ENDCHAR +STARTCHAR char184 +ENCODING 184 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 2 2 1 -2 +BITMAP +C0 +C0 +ENDCHAR +STARTCHAR char185 +ENCODING 185 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 3 4 0 2 +BITMAP +E0 +60 +60 +60 +ENDCHAR +STARTCHAR char186 +ENCODING 186 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 4 3 0 3 +BITMAP +F0 +F0 +F0 +ENDCHAR +STARTCHAR char187 +ENCODING 187 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 5 4 0 0 +BITMAP +F0 +78 +78 +F0 +ENDCHAR +STARTCHAR char188 +ENCODING 188 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 7 6 0 0 +BITMAP +F8 +78 +7E +7E +6E +66 +ENDCHAR +STARTCHAR char189 +ENCODING 189 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 7 6 0 0 +BITMAP +F8 +78 +7E +76 +6C +7C +ENDCHAR +STARTCHAR char190 +ENCODING 190 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 7 6 0 0 +BITMAP +FC +3C +3E +FE +3E +36 +ENDCHAR +STARTCHAR char191 +ENCODING 191 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 -2 +BITMAP +60 +00 +60 +C0 +C0 +F0 +ENDCHAR +STARTCHAR char192 +ENCODING 192 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +60 +30 +00 +30 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char193 +ENCODING 193 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +18 +30 +00 +30 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char194 +ENCODING 194 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +30 +78 +00 +30 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char195 +ENCODING 195 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +70 +18 +00 +30 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char196 +ENCODING 196 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 8 0 0 +BITMAP +78 +00 +30 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char197 +ENCODING 197 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +38 +38 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char198 +ENCODING 198 +SWIDTH 875 0 +DWIDTH 7 0 +BBX 7 6 0 0 +BITMAP +3E +38 +7E +78 +F8 +DE +ENDCHAR +STARTCHAR char199 +ENCODING 199 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 8 0 -2 +BITMAP +78 +C0 +C0 +C0 +C0 +78 +18 +18 +ENDCHAR +STARTCHAR char200 +ENCODING 200 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 9 0 0 +BITMAP +60 +30 +00 +F0 +C0 +F0 +C0 +C0 +F0 +ENDCHAR +STARTCHAR char201 +ENCODING 201 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 9 0 0 +BITMAP +30 +60 +00 +F0 +C0 +F0 +C0 +C0 +F0 +ENDCHAR +STARTCHAR char202 +ENCODING 202 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 9 0 0 +BITMAP +60 +F0 +00 +F0 +C0 +F0 +C0 +C0 +F0 +ENDCHAR +STARTCHAR char203 +ENCODING 203 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 8 0 0 +BITMAP +F0 +00 +F0 +C0 +F0 +C0 +C0 +F0 +ENDCHAR +STARTCHAR char204 +ENCODING 204 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 3 9 0 0 +BITMAP +C0 +60 +00 +60 +60 +60 +60 +60 +60 +ENDCHAR +STARTCHAR char205 +ENCODING 205 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 3 9 1 0 +BITMAP +60 +C0 +00 +C0 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char206 +ENCODING 206 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 9 0 0 +BITMAP +60 +F0 +00 +60 +60 +60 +60 +60 +60 +ENDCHAR +STARTCHAR char207 +ENCODING 207 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 8 0 0 +BITMAP +F0 +00 +60 +60 +60 +60 +60 +60 +ENDCHAR +STARTCHAR char208 +ENCODING 208 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 6 6 -1 0 +BITMAP +78 +6C +FC +6C +6C +78 +ENDCHAR +STARTCHAR char209 +ENCODING 209 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +70 +18 +00 +CC +EC +FC +FC +DC +CC +ENDCHAR +STARTCHAR char210 +ENCODING 210 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +60 +30 +00 +78 +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char211 +ENCODING 211 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +18 +30 +00 +78 +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char212 +ENCODING 212 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +30 +78 +00 +78 +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char213 +ENCODING 213 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +70 +18 +00 +78 +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char214 +ENCODING 214 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 8 0 0 +BITMAP +78 +00 +78 +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char215 +ENCODING 215 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 3 1 1 +BITMAP +F0 +60 +F0 +ENDCHAR +STARTCHAR char216 +ENCODING 216 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 6 0 0 +BITMAP +78 +DC +FC +FC +EC +78 +ENDCHAR +STARTCHAR char217 +ENCODING 217 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +60 +30 +00 +CC +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char218 +ENCODING 218 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +18 +30 +00 +CC +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char219 +ENCODING 219 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +30 +78 +00 +CC +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char220 +ENCODING 220 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 8 0 0 +BITMAP +78 +00 +CC +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char221 +ENCODING 221 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 6 9 -1 0 +BITMAP +18 +30 +00 +CC +78 +78 +30 +30 +30 +ENDCHAR +STARTCHAR char222 +ENCODING 222 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +C0 +F0 +D8 +D8 +F0 +C0 +ENDCHAR +STARTCHAR char223 +ENCODING 223 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +F8 +D8 +F0 +F0 +D8 +F8 +ENDCHAR +STARTCHAR char224 +ENCODING 224 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 7 0 0 +BITMAP +60 +30 +00 +F0 +30 +F0 +F0 +ENDCHAR +STARTCHAR char225 +ENCODING 225 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 7 0 0 +BITMAP +30 +60 +00 +F0 +30 +F0 +F0 +ENDCHAR +STARTCHAR char226 +ENCODING 226 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 7 0 0 +BITMAP +60 +F0 +00 +F0 +30 +F0 +F0 +ENDCHAR +STARTCHAR char227 +ENCODING 227 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 7 0 0 +BITMAP +E0 +30 +00 +F0 +30 +F0 +F0 +ENDCHAR +STARTCHAR char228 +ENCODING 228 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +F0 +00 +F0 +30 +F0 +F0 +ENDCHAR +STARTCHAR char229 +ENCODING 229 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 7 0 0 +BITMAP +70 +70 +00 +F0 +30 +F0 +F0 +ENDCHAR +STARTCHAR char230 +ENCODING 230 +SWIDTH 875 0 +DWIDTH 7 0 +BBX 7 4 0 0 +BITMAP +FE +1E +F8 +FE +ENDCHAR +STARTCHAR char231 +ENCODING 231 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 -2 +BITMAP +70 +C0 +C0 +70 +30 +30 +ENDCHAR +STARTCHAR char232 +ENCODING 232 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 7 0 0 +BITMAP +60 +30 +00 +F0 +F0 +C0 +F0 +ENDCHAR +STARTCHAR char233 +ENCODING 233 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 7 0 0 +BITMAP +30 +60 +00 +F0 +F0 +C0 +F0 +ENDCHAR +STARTCHAR char234 +ENCODING 234 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 7 0 0 +BITMAP +60 +F0 +00 +F0 +F0 +C0 +F0 +ENDCHAR +STARTCHAR char235 +ENCODING 235 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +F0 +00 +F0 +F0 +C0 +F0 +ENDCHAR +STARTCHAR char236 +ENCODING 236 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 3 7 -1 0 +BITMAP +C0 +60 +00 +60 +60 +60 +60 +ENDCHAR +STARTCHAR char237 +ENCODING 237 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 3 7 0 0 +BITMAP +60 +C0 +00 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char238 +ENCODING 238 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 4 7 -1 0 +BITMAP +60 +F0 +00 +60 +60 +60 +60 +ENDCHAR +STARTCHAR char239 +ENCODING 239 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 4 6 -1 0 +BITMAP +F0 +00 +60 +60 +60 +60 +ENDCHAR +STARTCHAR char240 +ENCODING 240 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +78 +70 +78 +D8 +D8 +70 +ENDCHAR +STARTCHAR char241 +ENCODING 241 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +70 +18 +00 +F8 +D8 +D8 +D8 +ENDCHAR +STARTCHAR char242 +ENCODING 242 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +60 +30 +00 +70 +D8 +D8 +70 +ENDCHAR +STARTCHAR char243 +ENCODING 243 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +18 +30 +00 +70 +D8 +D8 +70 +ENDCHAR +STARTCHAR char244 +ENCODING 244 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +30 +78 +00 +70 +D8 +D8 +70 +ENDCHAR +STARTCHAR char245 +ENCODING 245 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +70 +18 +00 +70 +D8 +D8 +70 +ENDCHAR +STARTCHAR char246 +ENCODING 246 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +78 +00 +70 +D8 +D8 +70 +ENDCHAR +STARTCHAR char247 +ENCODING 247 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 5 1 0 +BITMAP +60 +00 +F0 +00 +60 +ENDCHAR +STARTCHAR char248 +ENCODING 248 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 4 0 0 +BITMAP +70 +F8 +F8 +70 +ENDCHAR +STARTCHAR char249 +ENCODING 249 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +60 +30 +00 +D8 +D8 +D8 +F8 +ENDCHAR +STARTCHAR char250 +ENCODING 250 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +18 +30 +00 +D8 +D8 +D8 +F8 +ENDCHAR +STARTCHAR char251 +ENCODING 251 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +30 +78 +00 +D8 +D8 +D8 +F8 +ENDCHAR +STARTCHAR char252 +ENCODING 252 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +78 +00 +D8 +D8 +D8 +F8 +ENDCHAR +STARTCHAR char253 +ENCODING 253 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 9 0 -2 +BITMAP +30 +60 +00 +F0 +F0 +F0 +60 +60 +C0 +ENDCHAR +STARTCHAR char254 +ENCODING 254 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 8 0 -2 +BITMAP +C0 +C0 +F0 +D8 +D8 +F0 +C0 +C0 +ENDCHAR +STARTCHAR char255 +ENCODING 255 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 8 0 -2 +BITMAP +F0 +00 +F0 +F0 +F0 +60 +60 +C0 +ENDCHAR +ENDFONT diff --git a/ui/fonts/DroidSansBold9x11.h b/ui/fonts/DroidSansBold9x11.h new file mode 100644 index 0000000..056eb22 --- /dev/null +++ b/ui/fonts/DroidSansBold9x11.h @@ -0,0 +1,261 @@ +/* -FreeType-Droid Sans-Bold-R-Normal--8-60-96-96-P-44-ISO10646-1 */ +#define FONT_WIDTH_Droid SansBold_9x11 9 +#define FONT_HEIGHT_Droid SansBold_9x11 11 +const uint8_t FONT_DATA_Droid SansBold_9x11[256][23] = { +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x7e,0x00,0x7e,0x00,0x1c,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x0c,0x00,0x1e,0x00,0x0e,0x00,0x0e,0x00,0x1c,0x00,0x1c,0x00,0x1e,0x00,0x0c,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x6e,0x00,0x3e,0x00,0xfe,0x00,0xfe,0x00,0xf8,0x00,0xec,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x36,0x00,0x1c,0x00,0xde,0x00,0x76,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x0c,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x03,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x1e,0x00,0x0c,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x3c,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x0c,0x00,0x0c,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0e,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x18,0x00,0x0c,0x00,0x0c,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x0c,0x00,0x18,0x00,0x18,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x1c,0x00,0x1e,0x00,0x3e,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x18,0x00,0x18,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x06,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x18,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x18,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x0c,0x00,0x0e,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x0c,0x00,0x1c,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x18,0x00,0x0c,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0xc6,0x00,0xfe,0x00,0xfe,0x00,0xfe,0x00,0x06,0x00,0x7c,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x3c,0x00,0x3c,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x36,0x00,0x3e,0x00,0x36,0x00,0x36,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x06,0x00,0x06,0x00,0x76,0x00,0x66,0x00,0x7c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x66,0x00,0x7e,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x03,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x1e,0x00,0x0e,0x00,0x1e,0x00,0x1e,0x00,0x36,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x00,0x00,0x00,0x86,0x01,0xce,0x01,0xce,0x01,0xfe,0x01,0xfe,0x01,0xb6,0x01,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x6e,0x00,0x7e,0x00,0x7e,0x00,0x76,0x00,0x66,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x36,0x00,0x36,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x30,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x36,0x00,0x36,0x00,0x1e,0x00,0x1e,0x00,0x36,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x0e,0x00,0x18,0x00,0x18,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x3c,0x00,0x3c,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x00,0x00,0x00,0xb6,0x01,0xfe,0x01,0xfe,0x01,0xfe,0x01,0xec,0x00,0xcc,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x1c,0x00,0x1c,0x00,0x1c,0x00,0x1e,0x00,0x36,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x18,0x00,0x18,0x00,0x0c,0x00,0x0c,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x1c,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x0c,0x00,0x0c,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x07,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x36,0x00,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x18,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,0x36,0x00,0x36,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x06,0x00,0x06,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x3c,0x00,0x36,0x00,0x36,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x06,0x00,0x0e,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x1e,0x00,0x1e,0x00,0x3c,0x00,0x36,0x00,0x3e,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x3e,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x07,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,0x0e,0x00,0x0e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x01,0xb6,0x01,0xb6,0x01,0xb6,0x01,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x36,0x00,0x36,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x36,0x00,0x36,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x36,0x00,0x36,0x00,0x3c,0x00,0x30,0x00,0x30,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x0e,0x00,0x18,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x0e,0x00,0x06,0x00,0x06,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x7e,0x00,0x3e,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x0c,0x00,0x0c,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x0c,0x00,0x06,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x0c,0x00,0x0c,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x06,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x18,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0c,0x00,0x0c,0x00,0x1c,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x0c,0x00,0x0c,0x00,0x1e,0x00,0x0c,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0x1e,0x00,0x0e,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x0e,0x00,0x1e,0x00,0x1e,0x00,0x18,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0xfe,0x00,0xde,0x00,0xfe,0x00,0xc6,0x00,0x7c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x1e,0x00,0x1e,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0xfe,0x00,0xfe,0x00,0xfe,0x00,0xc6,0x00,0x7c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x3c,0x00,0x18,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x0c,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x18,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x30,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x3e,0x00,0x06,0x00,0x06,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x3e,0x00,0x3e,0x00,0x3e,0x00,0x38,0x00,0x38,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x3c,0x00,0x3c,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x3c,0x00,0xfc,0x00,0xfc,0x00,0xec,0x00,0xcc,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x3c,0x00,0xfc,0x00,0xdc,0x00,0x6c,0x00,0x7c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x78,0x00,0xf8,0x00,0xfe,0x00,0xf8,0x00,0xd8,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x0c,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,}, +{/*w*/6,0x0c,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x3c,0x00,0x3c,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x30,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x3c,0x00,0x3c,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x18,0x00,0x3c,0x00,0x00,0x00,0x18,0x00,0x3c,0x00,0x3c,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x1c,0x00,0x30,0x00,0x00,0x00,0x18,0x00,0x3c,0x00,0x3c,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x3c,0x00,0x00,0x00,0x18,0x00,0x3c,0x00,0x3c,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x3c,0x00,0x3c,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x38,0x00,0xfc,0x00,0x3c,0x00,0x3e,0x00,0xf6,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x3c,0x00,0x30,0x00,0x30,0x00,}, +{/*w*/4,0x0c,0x00,0x18,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x18,0x00,0x0c,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x0c,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x06,0x00,0x0c,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x18,0x00,0x0c,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x0c,0x00,0x1e,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x1e,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x36,0x00,0x3f,0x00,0x36,0x00,0x36,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x1c,0x00,0x30,0x00,0x00,0x00,0x66,0x00,0x6e,0x00,0x7e,0x00,0x7e,0x00,0x76,0x00,0x66,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x0c,0x00,0x18,0x00,0x00,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x30,0x00,0x18,0x00,0x00,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x18,0x00,0x3c,0x00,0x00,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x1c,0x00,0x30,0x00,0x00,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x3c,0x00,0x00,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x18,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x76,0x00,0x7e,0x00,0x7e,0x00,0x6e,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x0c,0x00,0x18,0x00,0x00,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x30,0x00,0x18,0x00,0x00,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x18,0x00,0x3c,0x00,0x00,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x3c,0x00,0x00,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x18,0x00,0x0c,0x00,0x00,0x00,0x33,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x1e,0x00,0x36,0x00,0x36,0x00,0x1e,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x36,0x00,0x1e,0x00,0x1e,0x00,0x36,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x0c,0x00,0x18,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x18,0x00,0x0c,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x0c,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x0e,0x00,0x18,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x1c,0x00,0x1c,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0xf0,0x00,0x3e,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x06,0x00,0x06,0x00,0x1c,0x00,0x18,0x00,0x18,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x0c,0x00,0x18,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x18,0x00,0x0c,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x0c,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x03,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x0c,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x06,0x00,0x0f,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x1c,0x00,0x3c,0x00,0x36,0x00,0x36,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x1c,0x00,0x30,0x00,0x00,0x00,0x3e,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x0c,0x00,0x18,0x00,0x00,0x00,0x1c,0x00,0x36,0x00,0x36,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x30,0x00,0x18,0x00,0x00,0x00,0x1c,0x00,0x36,0x00,0x36,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x18,0x00,0x3c,0x00,0x00,0x00,0x1c,0x00,0x36,0x00,0x36,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x1c,0x00,0x30,0x00,0x00,0x00,0x1c,0x00,0x36,0x00,0x36,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x1c,0x00,0x36,0x00,0x36,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x3e,0x00,0x3e,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x0c,0x00,0x18,0x00,0x00,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x30,0x00,0x18,0x00,0x00,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x18,0x00,0x3c,0x00,0x00,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x18,0x00,0x0c,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x0c,0x00,0x06,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,0x36,0x00,0x36,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x0c,0x00,0x06,0x00,}, +}; diff --git a/ui/fonts/README.txt b/ui/fonts/README.txt new file mode 100644 index 0000000..1dc5dc2 --- /dev/null +++ b/ui/fonts/README.txt @@ -0,0 +1,17 @@ +The fonts contained here are partially taken from third parties and +partially "home made". The fonts were edited and converted to C style header +files using "gbdfed" by Mark Leisher which was extended +with the C style header export functions by Nicole Faerber. + +lcd + Font made specifically for Oswald, old style 7-segment LCD look, + monospaced, especially useful for watch display + +fixed + Converted from the public domain "fixed" fonts from the X11 graphics + server dustribution + +DroidSans + Converted from the Android Sans TrueType font, licensed under + the Apache 2.0 license, font originally created by by Steve Matteson + of Ascender Corporation diff --git a/ui/fonts/fixed5x7.bdf b/ui/fonts/fixed5x7.bdf new file mode 100644 index 0000000..1ccbc02 --- /dev/null +++ b/ui/fonts/fixed5x7.bdf @@ -0,0 +1,3618 @@ +STARTFONT 2.1 +COMMENT Font grabbed from the X server. +FONT -Misc-Fixed-Medium-R-Normal--7-70-75-75-C-50-ISO8859-9 +SIZE 7 75 75 +FONTBOUNDINGBOX 5 7 0 -1 +STARTPROPERTIES 25 +FONTNAME_REGISTRY "" +FOUNDRY "Misc" +FAMILY_NAME "Fixed" +WEIGHT_NAME "Medium" +SLANT "R" +SETWIDTH_NAME "Normal" +ADD_STYLE_NAME "" +PIXEL_SIZE 7 +POINT_SIZE 70 +RESOLUTION_X 75 +RESOLUTION_Y 75 +SPACING "C" +AVERAGE_WIDTH 50 +CHARSET_REGISTRY "ISO8859" +CHARSET_ENCODING "9" +DESTINATION 1 +COPYRIGHT "Public domain font. Share and enjoy." +CAP_HEIGHT 6 +X_HEIGHT 4 +WEIGHT 10 +RESOLUTION 103 +QUAD_WIDTH 5 +FONT_ASCENT 6 +FONT_DESCENT 1 +_GBDFED_INFO "Edited with gbdfed 1.6." +ENDPROPERTIES +CHARS 256 +STARTCHAR char0 +ENCODING 0 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +A8 +00 +88 +00 +A8 +00 +ENDCHAR +STARTCHAR char1 +ENCODING 1 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +70 +F8 +70 +20 +00 +ENDCHAR +STARTCHAR char2 +ENCODING 2 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A8 +50 +A8 +50 +A8 +50 +A8 +ENDCHAR +STARTCHAR char3 +ENCODING 3 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +E0 +A0 +70 +20 +20 +00 +ENDCHAR +STARTCHAR char4 +ENCODING 4 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +80 +F8 +A0 +30 +20 +00 +ENDCHAR +STARTCHAR char5 +ENCODING 5 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +80 +E0 +50 +60 +50 +00 +ENDCHAR +STARTCHAR char6 +ENCODING 6 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +80 +F0 +20 +30 +20 +00 +ENDCHAR +STARTCHAR char7 +ENCODING 7 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char8 +ENCODING 8 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +F8 +20 +20 +F8 +00 +ENDCHAR +STARTCHAR char9 +ENCODING 9 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +C0 +A0 +A0 +A0 +20 +38 +00 +ENDCHAR +STARTCHAR char10 +ENCODING 10 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +A0 +78 +50 +10 +10 +00 +ENDCHAR +STARTCHAR char11 +ENCODING 11 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +E0 +00 +00 +00 +ENDCHAR +STARTCHAR char12 +ENCODING 12 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +E0 +20 +20 +20 +ENDCHAR +STARTCHAR char13 +ENCODING 13 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +38 +20 +20 +20 +ENDCHAR +STARTCHAR char14 +ENCODING 14 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +38 +00 +00 +00 +ENDCHAR +STARTCHAR char15 +ENCODING 15 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +F8 +20 +20 +20 +ENDCHAR +STARTCHAR char16 +ENCODING 16 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F8 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char17 +ENCODING 17 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +F8 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char18 +ENCODING 18 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +F8 +00 +00 +00 +ENDCHAR +STARTCHAR char19 +ENCODING 19 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +F8 +00 +ENDCHAR +STARTCHAR char20 +ENCODING 20 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +F8 +ENDCHAR +STARTCHAR char21 +ENCODING 21 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +38 +20 +20 +20 +ENDCHAR +STARTCHAR char22 +ENCODING 22 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +E0 +20 +20 +20 +ENDCHAR +STARTCHAR char23 +ENCODING 23 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +F8 +00 +00 +00 +ENDCHAR +STARTCHAR char24 +ENCODING 24 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +F8 +20 +20 +20 +ENDCHAR +STARTCHAR char25 +ENCODING 25 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR char26 +ENCODING 26 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +20 +40 +20 +10 +70 +00 +ENDCHAR +STARTCHAR char27 +ENCODING 27 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +10 +20 +40 +70 +00 +ENDCHAR +STARTCHAR char28 +ENCODING 28 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +50 +50 +50 +00 +ENDCHAR +STARTCHAR char29 +ENCODING 29 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +10 +F0 +20 +F0 +40 +00 +ENDCHAR +STARTCHAR char30 +ENCODING 30 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +30 +40 +E0 +40 +B0 +00 +ENDCHAR +STARTCHAR char31 +ENCODING 31 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +60 +00 +00 +00 +ENDCHAR +STARTCHAR char32 +ENCODING 32 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char33 +ENCODING 33 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +20 +00 +20 +00 +ENDCHAR +STARTCHAR char34 +ENCODING 34 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +50 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char35 +ENCODING 35 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +50 +F8 +50 +F8 +50 +00 +ENDCHAR +STARTCHAR char36 +ENCODING 36 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +70 +A0 +70 +28 +70 +00 +ENDCHAR +STARTCHAR char37 +ENCODING 37 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +90 +20 +40 +90 +10 +00 +ENDCHAR +STARTCHAR char38 +ENCODING 38 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +40 +A0 +40 +A0 +50 +00 +ENDCHAR +STARTCHAR char39 +ENCODING 39 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char40 +ENCODING 40 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +40 +40 +40 +20 +00 +ENDCHAR +STARTCHAR char41 +ENCODING 41 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +20 +20 +20 +40 +00 +ENDCHAR +STARTCHAR char42 +ENCODING 42 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +50 +20 +70 +20 +50 +00 +ENDCHAR +STARTCHAR char43 +ENCODING 43 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +20 +F8 +20 +20 +00 +ENDCHAR +STARTCHAR char44 +ENCODING 44 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +30 +20 +40 +ENDCHAR +STARTCHAR char45 +ENCODING 45 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +F0 +00 +00 +00 +ENDCHAR +STARTCHAR char46 +ENCODING 46 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +60 +60 +00 +ENDCHAR +STARTCHAR char47 +ENCODING 47 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +10 +20 +40 +80 +00 +00 +ENDCHAR +STARTCHAR char48 +ENCODING 48 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +50 +50 +50 +20 +00 +ENDCHAR +STARTCHAR char49 +ENCODING 49 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +60 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR char50 +ENCODING 50 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +10 +20 +40 +F0 +00 +ENDCHAR +STARTCHAR char51 +ENCODING 51 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +10 +60 +10 +90 +60 +00 +ENDCHAR +STARTCHAR char52 +ENCODING 52 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +60 +A0 +F0 +20 +20 +00 +ENDCHAR +STARTCHAR char53 +ENCODING 53 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +10 +90 +60 +00 +ENDCHAR +STARTCHAR char54 +ENCODING 54 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +80 +E0 +90 +90 +60 +00 +ENDCHAR +STARTCHAR char55 +ENCODING 55 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +10 +20 +20 +40 +40 +00 +ENDCHAR +STARTCHAR char56 +ENCODING 56 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR char57 +ENCODING 57 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +70 +10 +60 +00 +ENDCHAR +STARTCHAR char58 +ENCODING 58 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +60 +60 +00 +60 +60 +00 +ENDCHAR +STARTCHAR char59 +ENCODING 59 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +60 +60 +00 +60 +40 +80 +ENDCHAR +STARTCHAR char60 +ENCODING 60 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +10 +20 +40 +20 +10 +00 +ENDCHAR +STARTCHAR char61 +ENCODING 61 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +00 +F0 +00 +00 +ENDCHAR +STARTCHAR char62 +ENCODING 62 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +40 +20 +10 +20 +40 +00 +ENDCHAR +STARTCHAR char63 +ENCODING 63 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +10 +20 +00 +20 +00 +ENDCHAR +STARTCHAR char64 +ENCODING 64 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +B0 +B0 +80 +60 +00 +ENDCHAR +STARTCHAR char65 +ENCODING 65 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR char66 +ENCODING 66 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +E0 +90 +90 +E0 +00 +ENDCHAR +STARTCHAR char67 +ENCODING 67 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +80 +80 +90 +60 +00 +ENDCHAR +STARTCHAR char68 +ENCODING 68 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +90 +90 +90 +E0 +00 +ENDCHAR +STARTCHAR char69 +ENCODING 69 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR char70 +ENCODING 70 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +80 +80 +80 +00 +ENDCHAR +STARTCHAR char71 +ENCODING 71 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +80 +B0 +90 +70 +00 +ENDCHAR +STARTCHAR char72 +ENCODING 72 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +F0 +90 +90 +90 +00 +ENDCHAR +STARTCHAR char73 +ENCODING 73 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR char74 +ENCODING 74 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +10 +10 +10 +90 +60 +00 +ENDCHAR +STARTCHAR char75 +ENCODING 75 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +A0 +C0 +C0 +A0 +90 +00 +ENDCHAR +STARTCHAR char76 +ENCODING 76 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +80 +80 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR char77 +ENCODING 77 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +F0 +F0 +90 +90 +90 +00 +ENDCHAR +STARTCHAR char78 +ENCODING 78 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +D0 +D0 +B0 +B0 +90 +00 +ENDCHAR +STARTCHAR char79 +ENCODING 79 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR char80 +ENCODING 80 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +90 +E0 +80 +80 +00 +ENDCHAR +STARTCHAR char81 +ENCODING 81 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +90 +D0 +60 +10 +ENDCHAR +STARTCHAR char82 +ENCODING 82 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +90 +E0 +A0 +90 +00 +ENDCHAR +STARTCHAR char83 +ENCODING 83 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +40 +20 +90 +60 +00 +ENDCHAR +STARTCHAR char84 +ENCODING 84 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +20 +00 +ENDCHAR +STARTCHAR char85 +ENCODING 85 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR char86 +ENCODING 86 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +60 +60 +00 +ENDCHAR +STARTCHAR char87 +ENCODING 87 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +F0 +F0 +90 +00 +ENDCHAR +STARTCHAR char88 +ENCODING 88 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +60 +60 +90 +90 +00 +ENDCHAR +STARTCHAR char89 +ENCODING 89 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +50 +20 +20 +20 +00 +ENDCHAR +STARTCHAR char90 +ENCODING 90 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +10 +20 +40 +80 +F0 +00 +ENDCHAR +STARTCHAR char91 +ENCODING 91 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +40 +40 +40 +40 +70 +00 +ENDCHAR +STARTCHAR char92 +ENCODING 92 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +80 +40 +20 +10 +00 +00 +ENDCHAR +STARTCHAR char93 +ENCODING 93 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +10 +10 +10 +10 +70 +00 +ENDCHAR +STARTCHAR char94 +ENCODING 94 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char95 +ENCODING 95 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +F0 +00 +ENDCHAR +STARTCHAR char96 +ENCODING 96 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char97 +ENCODING 97 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR char98 +ENCODING 98 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +80 +E0 +90 +90 +E0 +00 +ENDCHAR +STARTCHAR char99 +ENCODING 99 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +80 +80 +60 +00 +ENDCHAR +STARTCHAR char100 +ENCODING 100 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +10 +70 +90 +90 +70 +00 +ENDCHAR +STARTCHAR char101 +ENCODING 101 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +B0 +C0 +60 +00 +ENDCHAR +STARTCHAR char102 +ENCODING 102 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +40 +E0 +40 +40 +00 +ENDCHAR +STARTCHAR char103 +ENCODING 103 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +90 +60 +80 +70 +ENDCHAR +STARTCHAR char104 +ENCODING 104 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +80 +E0 +90 +90 +90 +00 +ENDCHAR +STARTCHAR char105 +ENCODING 105 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +00 +60 +20 +20 +70 +00 +ENDCHAR +STARTCHAR char106 +ENCODING 106 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +10 +10 +10 +50 +20 +ENDCHAR +STARTCHAR char107 +ENCODING 107 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +80 +A0 +C0 +A0 +90 +00 +ENDCHAR +STARTCHAR char108 +ENCODING 108 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR char109 +ENCODING 109 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +A0 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR char110 +ENCODING 110 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +90 +90 +90 +00 +ENDCHAR +STARTCHAR char111 +ENCODING 111 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR char112 +ENCODING 112 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +90 +90 +E0 +80 +ENDCHAR +STARTCHAR char113 +ENCODING 113 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +90 +90 +70 +10 +ENDCHAR +STARTCHAR char114 +ENCODING 114 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +90 +80 +80 +00 +ENDCHAR +STARTCHAR char115 +ENCODING 115 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +C0 +30 +E0 +00 +ENDCHAR +STARTCHAR char116 +ENCODING 116 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +40 +E0 +40 +40 +30 +00 +ENDCHAR +STARTCHAR char117 +ENCODING 117 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +90 +90 +70 +00 +ENDCHAR +STARTCHAR char118 +ENCODING 118 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +50 +50 +20 +00 +ENDCHAR +STARTCHAR char119 +ENCODING 119 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +90 +F0 +F0 +00 +ENDCHAR +STARTCHAR char120 +ENCODING 120 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +60 +60 +90 +00 +ENDCHAR +STARTCHAR char121 +ENCODING 121 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +90 +50 +20 +40 +ENDCHAR +STARTCHAR char122 +ENCODING 122 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +20 +40 +F0 +00 +ENDCHAR +STARTCHAR char123 +ENCODING 123 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +20 +60 +20 +20 +10 +00 +ENDCHAR +STARTCHAR char124 +ENCODING 124 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +20 +20 +20 +00 +ENDCHAR +STARTCHAR char125 +ENCODING 125 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +30 +20 +20 +40 +00 +ENDCHAR +STARTCHAR char126 +ENCODING 126 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +A0 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 127 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 128 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 129 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 130 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 131 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 132 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 133 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 134 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 135 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 136 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 137 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 138 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 139 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 140 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 141 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 142 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 143 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 144 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 145 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 146 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 147 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 148 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 149 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 150 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 151 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 152 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 153 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 154 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 155 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 156 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 157 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 158 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 159 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char160 +ENCODING 160 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char161 +ENCODING 161 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +00 +20 +20 +20 +20 +00 +ENDCHAR +STARTCHAR char162 +ENCODING 162 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +70 +A0 +A0 +70 +20 +ENDCHAR +STARTCHAR char163 +ENCODING 163 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +30 +40 +E0 +40 +B0 +00 +ENDCHAR +STARTCHAR char164 +ENCODING 164 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +88 +70 +50 +70 +88 +00 +ENDCHAR +STARTCHAR char165 +ENCODING 165 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +20 +70 +20 +20 +00 +ENDCHAR +STARTCHAR char166 +ENCODING 166 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +20 +00 +20 +20 +00 +ENDCHAR +STARTCHAR char167 +ENCODING 167 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +40 +60 +50 +30 +10 +60 +ENDCHAR +STARTCHAR char168 +ENCODING 168 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char169 +ENCODING 169 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +88 +A8 +C8 +A8 +88 +70 +ENDCHAR +STARTCHAR char170 +ENCODING 170 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +A0 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char171 +ENCODING 171 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +48 +90 +48 +00 +00 +ENDCHAR +STARTCHAR char172 +ENCODING 172 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +F0 +10 +00 +00 +ENDCHAR +STARTCHAR char173 +ENCODING 173 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +70 +00 +00 +00 +ENDCHAR +STARTCHAR char174 +ENCODING 174 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +88 +E8 +C8 +C8 +88 +70 +ENDCHAR +STARTCHAR char175 +ENCODING 175 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char176 +ENCODING 176 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char177 +ENCODING 177 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +F8 +20 +20 +F8 +00 +ENDCHAR +STARTCHAR char178 +ENCODING 178 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +40 +60 +00 +00 +00 +ENDCHAR +STARTCHAR char179 +ENCODING 179 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +60 +20 +60 +00 +00 +00 +ENDCHAR +STARTCHAR char180 +ENCODING 180 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char181 +ENCODING 181 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +90 +90 +E0 +80 +ENDCHAR +STARTCHAR char182 +ENCODING 182 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +D0 +D0 +50 +50 +50 +00 +ENDCHAR +STARTCHAR char183 +ENCODING 183 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +60 +00 +00 +00 +ENDCHAR +STARTCHAR char184 +ENCODING 184 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +20 +40 +ENDCHAR +STARTCHAR char185 +ENCODING 185 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +60 +20 +70 +00 +00 +00 +ENDCHAR +STARTCHAR char186 +ENCODING 186 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +A0 +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char187 +ENCODING 187 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +48 +90 +00 +00 +ENDCHAR +STARTCHAR char188 +ENCODING 188 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +80 +80 +90 +30 +70 +10 +ENDCHAR +STARTCHAR char189 +ENCODING 189 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +80 +80 +B0 +10 +20 +30 +ENDCHAR +STARTCHAR char190 +ENCODING 190 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +C0 +C0 +40 +D0 +30 +70 +10 +ENDCHAR +STARTCHAR char191 +ENCODING 191 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +00 +20 +40 +50 +20 +00 +ENDCHAR +STARTCHAR char192 +ENCODING 192 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR char193 +ENCODING 193 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR char194 +ENCODING 194 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR char195 +ENCODING 195 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR char196 +ENCODING 196 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +60 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR char197 +ENCODING 197 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +60 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR char198 +ENCODING 198 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +A0 +B0 +E0 +A0 +B0 +00 +ENDCHAR +STARTCHAR char199 +ENCODING 199 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +80 +80 +90 +60 +40 +ENDCHAR +STARTCHAR char200 +ENCODING 200 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR char201 +ENCODING 201 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR char202 +ENCODING 202 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR char203 +ENCODING 203 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR char204 +ENCODING 204 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR char205 +ENCODING 205 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR char206 +ENCODING 206 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR char207 +ENCODING 207 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR char208 +ENCODING 208 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +80 +B0 +90 +70 +00 +ENDCHAR +STARTCHAR char209 +ENCODING 209 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +B0 +90 +D0 +B0 +B0 +90 +00 +ENDCHAR +STARTCHAR char210 +ENCODING 210 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR char211 +ENCODING 211 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR char212 +ENCODING 212 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR char213 +ENCODING 213 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR char214 +ENCODING 214 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +60 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR char215 +ENCODING 215 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +60 +60 +90 +00 +ENDCHAR +STARTCHAR char216 +ENCODING 216 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +B0 +B0 +D0 +D0 +E0 +00 +ENDCHAR +STARTCHAR char217 +ENCODING 217 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR char218 +ENCODING 218 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR char219 +ENCODING 219 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR char220 +ENCODING 220 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +00 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR char221 +ENCODING 221 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR char222 +ENCODING 222 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +40 +20 +90 +60 +40 +ENDCHAR +STARTCHAR char223 +ENCODING 223 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +A0 +90 +90 +A0 +00 +ENDCHAR +STARTCHAR char224 +ENCODING 224 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR char225 +ENCODING 225 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR char226 +ENCODING 226 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR char227 +ENCODING 227 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +A0 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR char228 +ENCODING 228 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR char229 +ENCODING 229 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +60 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR char230 +ENCODING 230 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +B0 +A0 +70 +00 +ENDCHAR +STARTCHAR char231 +ENCODING 231 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +30 +40 +40 +30 +20 +ENDCHAR +STARTCHAR char232 +ENCODING 232 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +60 +B0 +C0 +60 +00 +ENDCHAR +STARTCHAR char233 +ENCODING 233 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +60 +B0 +C0 +60 +00 +ENDCHAR +STARTCHAR char234 +ENCODING 234 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +A0 +60 +B0 +C0 +60 +00 +ENDCHAR +STARTCHAR char235 +ENCODING 235 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +00 +60 +B0 +C0 +60 +00 +ENDCHAR +STARTCHAR char236 +ENCODING 236 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +60 +20 +20 +70 +00 +ENDCHAR +STARTCHAR char237 +ENCODING 237 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +60 +20 +20 +70 +00 +ENDCHAR +STARTCHAR char238 +ENCODING 238 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +60 +20 +20 +70 +00 +ENDCHAR +STARTCHAR char239 +ENCODING 239 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +60 +20 +20 +70 +00 +ENDCHAR +STARTCHAR char240 +ENCODING 240 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +20 +70 +90 +60 +80 +70 +ENDCHAR +STARTCHAR char241 +ENCODING 241 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +A0 +E0 +90 +90 +90 +00 +ENDCHAR +STARTCHAR char242 +ENCODING 242 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR char243 +ENCODING 243 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR char244 +ENCODING 244 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +00 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR char245 +ENCODING 245 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +A0 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR char246 +ENCODING 246 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR char247 +ENCODING 247 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +60 +00 +F0 +00 +60 +00 +ENDCHAR +STARTCHAR char248 +ENCODING 248 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +B0 +D0 +E0 +00 +ENDCHAR +STARTCHAR char249 +ENCODING 249 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +90 +90 +90 +70 +00 +ENDCHAR +STARTCHAR char250 +ENCODING 250 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +90 +90 +90 +70 +00 +ENDCHAR +STARTCHAR char251 +ENCODING 251 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +00 +90 +90 +90 +70 +00 +ENDCHAR +STARTCHAR char252 +ENCODING 252 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +90 +90 +90 +70 +00 +ENDCHAR +STARTCHAR char253 +ENCODING 253 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +20 +20 +70 +00 +ENDCHAR +STARTCHAR char254 +ENCODING 254 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +C0 +30 +E0 +40 +ENDCHAR +STARTCHAR char255 +ENCODING 255 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +90 +90 +50 +20 +40 +ENDCHAR +ENDFONT diff --git a/ui/fonts/fixed5x7.h b/ui/fonts/fixed5x7.h new file mode 100644 index 0000000..7363dc0 --- /dev/null +++ b/ui/fonts/fixed5x7.h @@ -0,0 +1,261 @@ +/* -Misc-Fixed-Medium-R-Normal--7-70-75-75-C-50-ISO8859-9 */ +#define FONT_WIDTH_Fixed_5x7 5 +#define FONT_HEIGHT_Fixed_5x7 7 +const uint8_t FONT_DATA_Fixed_5x7[256][7] = { +{0x00,0x15,0x00,0x11,0x00,0x15,0x00,}, +{0x00,0x04,0x0e,0x1f,0x0e,0x04,0x00,}, +{0x15,0x0a,0x15,0x0a,0x15,0x0a,0x15,}, +{0x05,0x07,0x05,0x0e,0x04,0x04,0x00,}, +{0x07,0x01,0x1f,0x05,0x0c,0x04,0x00,}, +{0x06,0x01,0x07,0x0a,0x06,0x0a,0x00,}, +{0x01,0x01,0x0f,0x04,0x0c,0x04,0x00,}, +{0x04,0x0a,0x04,0x00,0x00,0x00,0x00,}, +{0x04,0x04,0x1f,0x04,0x04,0x1f,0x00,}, +{0x03,0x05,0x05,0x05,0x04,0x1c,0x00,}, +{0x05,0x05,0x1e,0x0a,0x08,0x08,0x00,}, +{0x04,0x04,0x04,0x07,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x07,0x04,0x04,0x04,}, +{0x00,0x00,0x00,0x1c,0x04,0x04,0x04,}, +{0x04,0x04,0x04,0x1c,0x00,0x00,0x00,}, +{0x04,0x04,0x04,0x1f,0x04,0x04,0x04,}, +{0x1f,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x1f,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x1f,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x1f,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x1f,}, +{0x04,0x04,0x04,0x1c,0x04,0x04,0x04,}, +{0x04,0x04,0x04,0x07,0x04,0x04,0x04,}, +{0x04,0x04,0x04,0x1f,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x1f,0x04,0x04,0x04,}, +{0x04,0x04,0x04,0x04,0x04,0x04,0x04,}, +{0x08,0x04,0x02,0x04,0x08,0x0e,0x00,}, +{0x02,0x04,0x08,0x04,0x02,0x0e,0x00,}, +{0x00,0x00,0x0e,0x0a,0x0a,0x0a,0x00,}, +{0x00,0x08,0x0f,0x04,0x0f,0x02,0x00,}, +{0x00,0x0c,0x02,0x07,0x02,0x0d,0x00,}, +{0x00,0x00,0x06,0x06,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x04,0x04,0x04,0x04,0x00,0x04,0x00,}, +{0x0a,0x0a,0x0a,0x00,0x00,0x00,0x00,}, +{0x00,0x0a,0x1f,0x0a,0x1f,0x0a,0x00,}, +{0x00,0x0e,0x05,0x0e,0x14,0x0e,0x00,}, +{0x01,0x09,0x04,0x02,0x09,0x08,0x00,}, +{0x00,0x02,0x05,0x02,0x05,0x0a,0x00,}, +{0x04,0x04,0x04,0x00,0x00,0x00,0x00,}, +{0x04,0x02,0x02,0x02,0x02,0x04,0x00,}, +{0x02,0x04,0x04,0x04,0x04,0x02,0x00,}, +{0x00,0x0a,0x04,0x0e,0x04,0x0a,0x00,}, +{0x00,0x04,0x04,0x1f,0x04,0x04,0x00,}, +{0x00,0x00,0x00,0x00,0x0c,0x04,0x02,}, +{0x00,0x00,0x00,0x0f,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x06,0x06,0x00,}, +{0x00,0x08,0x04,0x02,0x01,0x00,0x00,}, +{0x04,0x0a,0x0a,0x0a,0x0a,0x04,0x00,}, +{0x04,0x06,0x04,0x04,0x04,0x0e,0x00,}, +{0x06,0x09,0x08,0x04,0x02,0x0f,0x00,}, +{0x0f,0x08,0x06,0x08,0x09,0x06,0x00,}, +{0x04,0x06,0x05,0x0f,0x04,0x04,0x00,}, +{0x0f,0x01,0x07,0x08,0x09,0x06,0x00,}, +{0x06,0x01,0x07,0x09,0x09,0x06,0x00,}, +{0x0f,0x08,0x04,0x04,0x02,0x02,0x00,}, +{0x06,0x09,0x06,0x09,0x09,0x06,0x00,}, +{0x06,0x09,0x09,0x0e,0x08,0x06,0x00,}, +{0x00,0x06,0x06,0x00,0x06,0x06,0x00,}, +{0x00,0x06,0x06,0x00,0x06,0x02,0x01,}, +{0x00,0x08,0x04,0x02,0x04,0x08,0x00,}, +{0x00,0x00,0x0f,0x00,0x0f,0x00,0x00,}, +{0x00,0x02,0x04,0x08,0x04,0x02,0x00,}, +{0x04,0x0a,0x08,0x04,0x00,0x04,0x00,}, +{0x06,0x09,0x0d,0x0d,0x01,0x06,0x00,}, +{0x06,0x09,0x09,0x0f,0x09,0x09,0x00,}, +{0x07,0x09,0x07,0x09,0x09,0x07,0x00,}, +{0x06,0x09,0x01,0x01,0x09,0x06,0x00,}, +{0x07,0x09,0x09,0x09,0x09,0x07,0x00,}, +{0x0f,0x01,0x07,0x01,0x01,0x0f,0x00,}, +{0x0f,0x01,0x07,0x01,0x01,0x01,0x00,}, +{0x06,0x09,0x01,0x0d,0x09,0x0e,0x00,}, +{0x09,0x09,0x0f,0x09,0x09,0x09,0x00,}, +{0x0e,0x04,0x04,0x04,0x04,0x0e,0x00,}, +{0x08,0x08,0x08,0x08,0x09,0x06,0x00,}, +{0x09,0x05,0x03,0x03,0x05,0x09,0x00,}, +{0x01,0x01,0x01,0x01,0x01,0x0f,0x00,}, +{0x09,0x0f,0x0f,0x09,0x09,0x09,0x00,}, +{0x09,0x0b,0x0b,0x0d,0x0d,0x09,0x00,}, +{0x06,0x09,0x09,0x09,0x09,0x06,0x00,}, +{0x07,0x09,0x09,0x07,0x01,0x01,0x00,}, +{0x06,0x09,0x09,0x09,0x0b,0x06,0x08,}, +{0x07,0x09,0x09,0x07,0x05,0x09,0x00,}, +{0x06,0x09,0x02,0x04,0x09,0x06,0x00,}, +{0x0e,0x04,0x04,0x04,0x04,0x04,0x00,}, +{0x09,0x09,0x09,0x09,0x09,0x06,0x00,}, +{0x09,0x09,0x09,0x09,0x06,0x06,0x00,}, +{0x09,0x09,0x09,0x0f,0x0f,0x09,0x00,}, +{0x09,0x09,0x06,0x06,0x09,0x09,0x00,}, +{0x0a,0x0a,0x0a,0x04,0x04,0x04,0x00,}, +{0x0f,0x08,0x04,0x02,0x01,0x0f,0x00,}, +{0x0e,0x02,0x02,0x02,0x02,0x0e,0x00,}, +{0x00,0x01,0x02,0x04,0x08,0x00,0x00,}, +{0x0e,0x08,0x08,0x08,0x08,0x0e,0x00,}, +{0x04,0x0a,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x0f,0x00,}, +{0x02,0x04,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x0e,0x09,0x0d,0x0a,0x00,}, +{0x01,0x01,0x07,0x09,0x09,0x07,0x00,}, +{0x00,0x00,0x06,0x01,0x01,0x06,0x00,}, +{0x08,0x08,0x0e,0x09,0x09,0x0e,0x00,}, +{0x00,0x00,0x06,0x0d,0x03,0x06,0x00,}, +{0x04,0x0a,0x02,0x07,0x02,0x02,0x00,}, +{0x00,0x00,0x0e,0x09,0x06,0x01,0x0e,}, +{0x01,0x01,0x07,0x09,0x09,0x09,0x00,}, +{0x04,0x00,0x06,0x04,0x04,0x0e,0x00,}, +{0x08,0x00,0x08,0x08,0x08,0x0a,0x04,}, +{0x01,0x01,0x05,0x03,0x05,0x09,0x00,}, +{0x06,0x04,0x04,0x04,0x04,0x0e,0x00,}, +{0x00,0x00,0x05,0x0f,0x09,0x09,0x00,}, +{0x00,0x00,0x07,0x09,0x09,0x09,0x00,}, +{0x00,0x00,0x06,0x09,0x09,0x06,0x00,}, +{0x00,0x00,0x07,0x09,0x09,0x07,0x01,}, +{0x00,0x00,0x0e,0x09,0x09,0x0e,0x08,}, +{0x00,0x00,0x07,0x09,0x01,0x01,0x00,}, +{0x00,0x00,0x0e,0x03,0x0c,0x07,0x00,}, +{0x02,0x02,0x07,0x02,0x02,0x0c,0x00,}, +{0x00,0x00,0x09,0x09,0x09,0x0e,0x00,}, +{0x00,0x00,0x0a,0x0a,0x0a,0x04,0x00,}, +{0x00,0x00,0x09,0x09,0x0f,0x0f,0x00,}, +{0x00,0x00,0x09,0x06,0x06,0x09,0x00,}, +{0x00,0x00,0x09,0x09,0x0a,0x04,0x02,}, +{0x00,0x00,0x0f,0x04,0x02,0x0f,0x00,}, +{0x08,0x04,0x06,0x04,0x04,0x08,0x00,}, +{0x04,0x04,0x04,0x04,0x04,0x04,0x00,}, +{0x02,0x04,0x0c,0x04,0x04,0x02,0x00,}, +{0x0a,0x05,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x04,0x00,0x04,0x04,0x04,0x04,0x00,}, +{0x00,0x04,0x0e,0x05,0x05,0x0e,0x04,}, +{0x00,0x0c,0x02,0x07,0x02,0x0d,0x00,}, +{0x00,0x11,0x0e,0x0a,0x0e,0x11,0x00,}, +{0x0a,0x0a,0x04,0x0e,0x04,0x04,0x00,}, +{0x00,0x04,0x04,0x00,0x04,0x04,0x00,}, +{0x0c,0x02,0x06,0x0a,0x0c,0x08,0x06,}, +{0x0a,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x0e,0x11,0x15,0x13,0x15,0x11,0x0e,}, +{0x06,0x05,0x06,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x12,0x09,0x12,0x00,0x00,}, +{0x00,0x00,0x00,0x0f,0x08,0x00,0x00,}, +{0x00,0x00,0x00,0x0e,0x00,0x00,0x00,}, +{0x0e,0x11,0x17,0x13,0x13,0x11,0x0e,}, +{0x0f,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x04,0x0a,0x04,0x00,0x00,0x00,0x00,}, +{0x04,0x04,0x1f,0x04,0x04,0x1f,0x00,}, +{0x06,0x04,0x02,0x06,0x00,0x00,0x00,}, +{0x06,0x06,0x04,0x06,0x00,0x00,0x00,}, +{0x04,0x02,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x09,0x09,0x09,0x07,0x01,}, +{0x0e,0x0b,0x0b,0x0a,0x0a,0x0a,0x00,}, +{0x00,0x00,0x06,0x06,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x04,0x02,}, +{0x04,0x06,0x04,0x0e,0x00,0x00,0x00,}, +{0x02,0x05,0x02,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x09,0x12,0x09,0x00,0x00,}, +{0x01,0x01,0x01,0x09,0x0c,0x0e,0x08,}, +{0x01,0x01,0x01,0x0d,0x08,0x04,0x0c,}, +{0x03,0x03,0x02,0x0b,0x0c,0x0e,0x08,}, +{0x04,0x00,0x04,0x02,0x0a,0x04,0x00,}, +{0x06,0x09,0x09,0x0f,0x09,0x09,0x00,}, +{0x06,0x09,0x09,0x0f,0x09,0x09,0x00,}, +{0x06,0x09,0x09,0x0f,0x09,0x09,0x00,}, +{0x06,0x09,0x09,0x0f,0x09,0x09,0x00,}, +{0x09,0x06,0x09,0x0f,0x09,0x09,0x00,}, +{0x06,0x06,0x09,0x0f,0x09,0x09,0x00,}, +{0x0e,0x05,0x0d,0x07,0x05,0x0d,0x00,}, +{0x06,0x09,0x01,0x01,0x09,0x06,0x02,}, +{0x0f,0x01,0x07,0x01,0x01,0x0f,0x00,}, +{0x0f,0x01,0x07,0x01,0x01,0x0f,0x00,}, +{0x0f,0x01,0x07,0x01,0x01,0x0f,0x00,}, +{0x0f,0x01,0x07,0x01,0x01,0x0f,0x00,}, +{0x0e,0x04,0x04,0x04,0x04,0x0e,0x00,}, +{0x0e,0x04,0x04,0x04,0x04,0x0e,0x00,}, +{0x0e,0x04,0x04,0x04,0x04,0x0e,0x00,}, +{0x0e,0x04,0x04,0x04,0x04,0x0e,0x00,}, +{0x06,0x09,0x01,0x0d,0x09,0x0e,0x00,}, +{0x0d,0x09,0x0b,0x0d,0x0d,0x09,0x00,}, +{0x06,0x09,0x09,0x09,0x09,0x06,0x00,}, +{0x06,0x09,0x09,0x09,0x09,0x06,0x00,}, +{0x06,0x09,0x09,0x09,0x09,0x06,0x00,}, +{0x06,0x09,0x09,0x09,0x09,0x06,0x00,}, +{0x09,0x06,0x09,0x09,0x09,0x06,0x00,}, +{0x00,0x00,0x09,0x06,0x06,0x09,0x00,}, +{0x0e,0x0d,0x0d,0x0b,0x0b,0x07,0x00,}, +{0x09,0x09,0x09,0x09,0x09,0x06,0x00,}, +{0x09,0x09,0x09,0x09,0x09,0x06,0x00,}, +{0x09,0x09,0x09,0x09,0x09,0x06,0x00,}, +{0x09,0x00,0x09,0x09,0x09,0x06,0x00,}, +{0x0e,0x04,0x04,0x04,0x04,0x0e,0x00,}, +{0x06,0x09,0x02,0x04,0x09,0x06,0x02,}, +{0x06,0x09,0x05,0x09,0x09,0x05,0x00,}, +{0x02,0x04,0x0e,0x09,0x0d,0x0a,0x00,}, +{0x04,0x02,0x0e,0x09,0x0d,0x0a,0x00,}, +{0x04,0x0a,0x0e,0x09,0x0d,0x0a,0x00,}, +{0x0a,0x05,0x0e,0x09,0x0d,0x0a,0x00,}, +{0x0a,0x00,0x0e,0x09,0x0d,0x0a,0x00,}, +{0x06,0x06,0x0e,0x09,0x0d,0x0a,0x00,}, +{0x00,0x00,0x0e,0x0d,0x05,0x0e,0x00,}, +{0x00,0x00,0x0c,0x02,0x02,0x0c,0x04,}, +{0x02,0x04,0x06,0x0d,0x03,0x06,0x00,}, +{0x04,0x02,0x06,0x0d,0x03,0x06,0x00,}, +{0x02,0x05,0x06,0x0d,0x03,0x06,0x00,}, +{0x05,0x00,0x06,0x0d,0x03,0x06,0x00,}, +{0x02,0x04,0x06,0x04,0x04,0x0e,0x00,}, +{0x04,0x02,0x06,0x04,0x04,0x0e,0x00,}, +{0x04,0x0a,0x06,0x04,0x04,0x0e,0x00,}, +{0x0a,0x00,0x06,0x04,0x04,0x0e,0x00,}, +{0x0a,0x04,0x0e,0x09,0x06,0x01,0x0e,}, +{0x0a,0x05,0x07,0x09,0x09,0x09,0x00,}, +{0x02,0x04,0x06,0x09,0x09,0x06,0x00,}, +{0x04,0x02,0x06,0x09,0x09,0x06,0x00,}, +{0x06,0x00,0x06,0x09,0x09,0x06,0x00,}, +{0x0a,0x05,0x06,0x09,0x09,0x06,0x00,}, +{0x0a,0x00,0x06,0x09,0x09,0x06,0x00,}, +{0x00,0x06,0x00,0x0f,0x00,0x06,0x00,}, +{0x00,0x00,0x0e,0x0d,0x0b,0x07,0x00,}, +{0x02,0x04,0x09,0x09,0x09,0x0e,0x00,}, +{0x04,0x02,0x09,0x09,0x09,0x0e,0x00,}, +{0x06,0x00,0x09,0x09,0x09,0x0e,0x00,}, +{0x0a,0x00,0x09,0x09,0x09,0x0e,0x00,}, +{0x00,0x00,0x06,0x04,0x04,0x0e,0x00,}, +{0x00,0x00,0x0e,0x03,0x0c,0x07,0x02,}, +{0x0a,0x00,0x09,0x09,0x0a,0x04,0x02,}, +}; diff --git a/ui/fonts/fixed6x13.bdf b/ui/fonts/fixed6x13.bdf new file mode 100644 index 0000000..5c6b762 --- /dev/null +++ b/ui/fonts/fixed6x13.bdf @@ -0,0 +1,5153 @@ +STARTFONT 2.1 +COMMENT Font grabbed from the X server. +FONT -Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO8859-15 +SIZE 12 75 75 +FONTBOUNDINGBOX 6 13 0 -2 +STARTPROPERTIES 24 +FONTNAME_REGISTRY "" +FOUNDRY "Misc" +FAMILY_NAME "Fixed" +WEIGHT_NAME "Medium" +SLANT "R" +SETWIDTH_NAME "SemiCondensed" +ADD_STYLE_NAME "" +PIXEL_SIZE 13 +POINT_SIZE 120 +RESOLUTION_X 75 +RESOLUTION_Y 75 +SPACING "C" +AVERAGE_WIDTH 60 +CHARSET_REGISTRY "ISO8859" +CHARSET_ENCODING "15" +COPYRIGHT "Public domain font. Share and enjoy." +CAP_HEIGHT 9 +X_HEIGHT 6 +_GBDFED_INFO "Edited with gbdfed 1.6." +WEIGHT 10 +RESOLUTION 103 +QUAD_WIDTH 6 +FONT_ASCENT 11 +FONT_DESCENT 2 +ENDPROPERTIES +CHARS 256 +STARTCHAR char0 +ENCODING 0 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +A8 +00 +88 +00 +88 +00 +88 +00 +A8 +00 +00 +ENDCHAR +STARTCHAR char1 +ENCODING 1 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +20 +70 +F8 +70 +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char2 +ENCODING 2 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +A8 +54 +A8 +54 +A8 +54 +A8 +54 +A8 +54 +A8 +54 +A8 +ENDCHAR +STARTCHAR char3 +ENCODING 3 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +A0 +A0 +E0 +A0 +A0 +38 +10 +10 +10 +00 +00 +ENDCHAR +STARTCHAR char4 +ENCODING 4 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +E0 +80 +C0 +80 +B8 +20 +30 +20 +20 +00 +00 +ENDCHAR +STARTCHAR char5 +ENCODING 5 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +60 +80 +80 +60 +30 +28 +30 +28 +28 +00 +00 +ENDCHAR +STARTCHAR char6 +ENCODING 6 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +80 +80 +80 +E0 +38 +20 +30 +20 +20 +00 +00 +ENDCHAR +STARTCHAR char7 +ENCODING 7 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +30 +48 +48 +30 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char8 +ENCODING 8 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +20 +20 +F8 +20 +20 +00 +F8 +00 +00 +00 +ENDCHAR +STARTCHAR char9 +ENCODING 9 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +90 +D0 +B0 +90 +20 +20 +20 +20 +38 +00 +00 +ENDCHAR +STARTCHAR char10 +ENCODING 10 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +A0 +A0 +A0 +40 +40 +38 +10 +10 +10 +00 +00 +ENDCHAR +STARTCHAR char11 +ENCODING 11 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +20 +20 +20 +20 +20 +20 +E0 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char12 +ENCODING 12 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +E0 +20 +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR char13 +ENCODING 13 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +3C +20 +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR char14 +ENCODING 14 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +20 +20 +20 +20 +20 +20 +3C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char15 +ENCODING 15 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +20 +20 +20 +20 +20 +20 +FC +20 +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR char16 +ENCODING 16 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +FC +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char17 +ENCODING 17 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +FC +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char18 +ENCODING 18 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +FC +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char19 +ENCODING 19 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +FC +00 +00 +00 +ENDCHAR +STARTCHAR char20 +ENCODING 20 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +FC +ENDCHAR +STARTCHAR char21 +ENCODING 21 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +20 +20 +20 +20 +20 +20 +3C +20 +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR char22 +ENCODING 22 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +20 +20 +20 +20 +20 +20 +E0 +20 +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR char23 +ENCODING 23 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +20 +20 +20 +20 +20 +20 +FC +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char24 +ENCODING 24 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +FC +20 +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR char25 +ENCODING 25 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +20 +20 +20 +20 +20 +20 +20 +20 +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR char26 +ENCODING 26 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +18 +60 +80 +60 +18 +00 +F8 +00 +00 +00 +ENDCHAR +STARTCHAR char27 +ENCODING 27 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +C0 +30 +08 +30 +C0 +00 +F8 +00 +00 +00 +ENDCHAR +STARTCHAR char28 +ENCODING 28 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +F8 +50 +50 +50 +50 +50 +00 +00 +ENDCHAR +STARTCHAR char29 +ENCODING 29 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +08 +F8 +20 +F8 +80 +00 +00 +00 +ENDCHAR +STARTCHAR char30 +ENCODING 30 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +30 +48 +40 +40 +E0 +40 +40 +48 +B0 +00 +00 +ENDCHAR +STARTCHAR char31 +ENCODING 31 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +30 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char32 +ENCODING 32 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char33 +ENCODING 33 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +20 +20 +20 +20 +20 +20 +20 +00 +20 +00 +00 +ENDCHAR +STARTCHAR char34 +ENCODING 34 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +50 +50 +50 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char35 +ENCODING 35 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +50 +50 +F8 +50 +F8 +50 +50 +00 +00 +00 +ENDCHAR +STARTCHAR char36 +ENCODING 36 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +20 +78 +A0 +A0 +70 +28 +28 +F0 +20 +00 +00 +ENDCHAR +STARTCHAR char37 +ENCODING 37 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +48 +A8 +50 +10 +20 +40 +50 +A8 +90 +00 +00 +ENDCHAR +STARTCHAR char38 +ENCODING 38 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +40 +A0 +A0 +40 +A0 +98 +90 +68 +00 +00 +ENDCHAR +STARTCHAR char39 +ENCODING 39 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +20 +20 +20 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char40 +ENCODING 40 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +10 +20 +20 +40 +40 +40 +40 +40 +20 +20 +10 +00 +ENDCHAR +STARTCHAR char41 +ENCODING 41 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +40 +20 +20 +10 +10 +10 +10 +10 +20 +20 +40 +00 +ENDCHAR +STARTCHAR char42 +ENCODING 42 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +20 +A8 +70 +A8 +20 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char43 +ENCODING 43 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +20 +20 +F8 +20 +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char44 +ENCODING 44 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +30 +20 +40 +00 +ENDCHAR +STARTCHAR char45 +ENCODING 45 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +F8 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char46 +ENCODING 46 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +20 +70 +20 +00 +ENDCHAR +STARTCHAR char47 +ENCODING 47 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +08 +08 +10 +10 +20 +40 +40 +80 +80 +00 +00 +ENDCHAR +STARTCHAR char48 +ENCODING 48 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +20 +50 +88 +88 +88 +88 +88 +50 +20 +00 +00 +ENDCHAR +STARTCHAR char49 +ENCODING 49 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +20 +60 +A0 +20 +20 +20 +20 +20 +F8 +00 +00 +ENDCHAR +STARTCHAR char50 +ENCODING 50 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +70 +88 +88 +08 +10 +20 +40 +80 +F8 +00 +00 +ENDCHAR +STARTCHAR char51 +ENCODING 51 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +F8 +08 +10 +20 +70 +08 +08 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char52 +ENCODING 52 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +10 +10 +30 +50 +50 +90 +F8 +10 +10 +00 +00 +ENDCHAR +STARTCHAR char53 +ENCODING 53 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +F8 +80 +80 +B0 +C8 +08 +08 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char54 +ENCODING 54 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +70 +88 +80 +80 +F0 +88 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char55 +ENCODING 55 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +F8 +08 +10 +10 +20 +20 +40 +40 +40 +00 +00 +ENDCHAR +STARTCHAR char56 +ENCODING 56 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +70 +88 +88 +88 +70 +88 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char57 +ENCODING 57 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +70 +88 +88 +88 +78 +08 +08 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char58 +ENCODING 58 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +20 +70 +20 +00 +00 +20 +70 +20 +00 +ENDCHAR +STARTCHAR char59 +ENCODING 59 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +20 +70 +20 +00 +00 +30 +20 +40 +00 +ENDCHAR +STARTCHAR char60 +ENCODING 60 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +08 +10 +20 +40 +80 +40 +20 +10 +08 +00 +00 +ENDCHAR +STARTCHAR char61 +ENCODING 61 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +F8 +00 +00 +F8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char62 +ENCODING 62 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +80 +40 +20 +10 +08 +10 +20 +40 +80 +00 +00 +ENDCHAR +STARTCHAR char63 +ENCODING 63 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +70 +88 +88 +08 +10 +20 +20 +00 +20 +00 +00 +ENDCHAR +STARTCHAR char64 +ENCODING 64 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +70 +88 +88 +98 +A8 +A8 +B0 +80 +78 +00 +00 +ENDCHAR +STARTCHAR char65 +ENCODING 65 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +20 +50 +88 +88 +88 +F8 +88 +88 +88 +00 +00 +ENDCHAR +STARTCHAR char66 +ENCODING 66 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +F0 +48 +48 +48 +70 +48 +48 +48 +F0 +00 +00 +ENDCHAR +STARTCHAR char67 +ENCODING 67 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +70 +88 +80 +80 +80 +80 +80 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char68 +ENCODING 68 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +F0 +48 +48 +48 +48 +48 +48 +48 +F0 +00 +00 +ENDCHAR +STARTCHAR char69 +ENCODING 69 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +F8 +80 +80 +80 +F0 +80 +80 +80 +F8 +00 +00 +ENDCHAR +STARTCHAR char70 +ENCODING 70 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +F8 +80 +80 +80 +F0 +80 +80 +80 +80 +00 +00 +ENDCHAR +STARTCHAR char71 +ENCODING 71 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +70 +88 +80 +80 +80 +98 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char72 +ENCODING 72 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +88 +88 +88 +88 +F8 +88 +88 +88 +88 +00 +00 +ENDCHAR +STARTCHAR char73 +ENCODING 73 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +70 +20 +20 +20 +20 +20 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR char74 +ENCODING 74 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +38 +10 +10 +10 +10 +10 +10 +90 +60 +00 +00 +ENDCHAR +STARTCHAR char75 +ENCODING 75 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +88 +88 +90 +A0 +C0 +A0 +90 +88 +88 +00 +00 +ENDCHAR +STARTCHAR char76 +ENCODING 76 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +80 +80 +80 +80 +80 +80 +80 +80 +F8 +00 +00 +ENDCHAR +STARTCHAR char77 +ENCODING 77 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +88 +88 +D8 +A8 +A8 +88 +88 +88 +88 +00 +00 +ENDCHAR +STARTCHAR char78 +ENCODING 78 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +88 +C8 +C8 +A8 +A8 +98 +98 +88 +88 +00 +00 +ENDCHAR +STARTCHAR char79 +ENCODING 79 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +70 +88 +88 +88 +88 +88 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char80 +ENCODING 80 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +F0 +88 +88 +88 +F0 +80 +80 +80 +80 +00 +00 +ENDCHAR +STARTCHAR char81 +ENCODING 81 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +70 +88 +88 +88 +88 +88 +88 +A8 +70 +08 +00 +ENDCHAR +STARTCHAR char82 +ENCODING 82 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +F0 +88 +88 +88 +F0 +A0 +90 +88 +88 +00 +00 +ENDCHAR +STARTCHAR char83 +ENCODING 83 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +70 +88 +80 +80 +70 +08 +08 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char84 +ENCODING 84 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +F8 +20 +20 +20 +20 +20 +20 +20 +20 +00 +00 +ENDCHAR +STARTCHAR char85 +ENCODING 85 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +88 +88 +88 +88 +88 +88 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char86 +ENCODING 86 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +88 +88 +88 +88 +50 +50 +50 +20 +20 +00 +00 +ENDCHAR +STARTCHAR char87 +ENCODING 87 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +88 +88 +88 +88 +A8 +A8 +A8 +A8 +50 +00 +00 +ENDCHAR +STARTCHAR char88 +ENCODING 88 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +88 +88 +50 +50 +20 +50 +50 +88 +88 +00 +00 +ENDCHAR +STARTCHAR char89 +ENCODING 89 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +88 +88 +50 +50 +20 +20 +20 +20 +20 +00 +00 +ENDCHAR +STARTCHAR char90 +ENCODING 90 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +F8 +08 +10 +10 +20 +40 +40 +80 +F8 +00 +00 +ENDCHAR +STARTCHAR char91 +ENCODING 91 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +70 +40 +40 +40 +40 +40 +40 +40 +40 +40 +70 +00 +ENDCHAR +STARTCHAR char92 +ENCODING 92 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +80 +80 +40 +40 +20 +10 +10 +08 +08 +00 +00 +ENDCHAR +STARTCHAR char93 +ENCODING 93 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +70 +10 +10 +10 +10 +10 +10 +10 +10 +10 +70 +00 +ENDCHAR +STARTCHAR char94 +ENCODING 94 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +20 +50 +88 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char95 +ENCODING 95 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +F8 +00 +ENDCHAR +STARTCHAR char96 +ENCODING 96 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +20 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char97 +ENCODING 97 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +70 +08 +78 +88 +98 +68 +00 +00 +ENDCHAR +STARTCHAR char98 +ENCODING 98 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +80 +80 +80 +F0 +88 +88 +88 +88 +F0 +00 +00 +ENDCHAR +STARTCHAR char99 +ENCODING 99 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +70 +88 +80 +80 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char100 +ENCODING 100 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +08 +08 +08 +78 +88 +88 +88 +88 +78 +00 +00 +ENDCHAR +STARTCHAR char101 +ENCODING 101 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +70 +88 +F8 +80 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char102 +ENCODING 102 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +30 +48 +40 +40 +F0 +40 +40 +40 +40 +00 +00 +ENDCHAR +STARTCHAR char103 +ENCODING 103 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +70 +88 +88 +88 +78 +08 +88 +70 +ENDCHAR +STARTCHAR char104 +ENCODING 104 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +80 +80 +80 +B0 +C8 +88 +88 +88 +88 +00 +00 +ENDCHAR +STARTCHAR char105 +ENCODING 105 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +20 +00 +60 +20 +20 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR char106 +ENCODING 106 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +10 +00 +30 +10 +10 +10 +10 +90 +90 +60 +ENDCHAR +STARTCHAR char107 +ENCODING 107 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +80 +80 +80 +90 +A0 +C0 +A0 +90 +88 +00 +00 +ENDCHAR +STARTCHAR char108 +ENCODING 108 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +60 +20 +20 +20 +20 +20 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR char109 +ENCODING 109 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +D0 +A8 +A8 +A8 +A8 +88 +00 +00 +ENDCHAR +STARTCHAR char110 +ENCODING 110 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +B0 +C8 +88 +88 +88 +88 +00 +00 +ENDCHAR +STARTCHAR char111 +ENCODING 111 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +70 +88 +88 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char112 +ENCODING 112 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +F0 +88 +88 +88 +F0 +80 +80 +80 +ENDCHAR +STARTCHAR char113 +ENCODING 113 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +78 +88 +88 +88 +78 +08 +08 +08 +ENDCHAR +STARTCHAR char114 +ENCODING 114 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +B0 +C8 +80 +80 +80 +80 +00 +00 +ENDCHAR +STARTCHAR char115 +ENCODING 115 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +70 +88 +60 +10 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char116 +ENCODING 116 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +40 +40 +F0 +40 +40 +40 +48 +30 +00 +00 +ENDCHAR +STARTCHAR char117 +ENCODING 117 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +88 +88 +88 +88 +98 +68 +00 +00 +ENDCHAR +STARTCHAR char118 +ENCODING 118 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +88 +88 +88 +50 +50 +20 +00 +00 +ENDCHAR +STARTCHAR char119 +ENCODING 119 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +88 +88 +A8 +A8 +A8 +50 +00 +00 +ENDCHAR +STARTCHAR char120 +ENCODING 120 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +88 +50 +20 +20 +50 +88 +00 +00 +ENDCHAR +STARTCHAR char121 +ENCODING 121 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +88 +88 +88 +98 +68 +08 +88 +70 +ENDCHAR +STARTCHAR char122 +ENCODING 122 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +F8 +10 +20 +40 +80 +F8 +00 +00 +ENDCHAR +STARTCHAR char123 +ENCODING 123 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +18 +20 +20 +20 +20 +C0 +20 +20 +20 +20 +18 +00 +ENDCHAR +STARTCHAR char124 +ENCODING 124 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +20 +20 +20 +20 +20 +20 +20 +20 +20 +00 +00 +ENDCHAR +STARTCHAR char125 +ENCODING 125 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +C0 +20 +20 +20 +20 +18 +20 +20 +20 +20 +C0 +00 +ENDCHAR +STARTCHAR char126 +ENCODING 126 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +48 +A8 +90 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 127 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 128 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 129 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 130 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 131 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 132 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 133 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 134 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 135 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 136 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 137 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 138 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 139 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 140 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 141 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 142 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 143 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 144 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 145 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 146 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 147 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 148 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 149 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 150 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 151 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 152 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 153 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 154 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 155 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 156 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 157 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 158 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 159 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char160 +ENCODING 160 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char161 +ENCODING 161 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +20 +00 +20 +20 +20 +20 +20 +20 +20 +00 +00 +ENDCHAR +STARTCHAR char162 +ENCODING 162 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +20 +70 +A8 +A0 +A0 +A8 +70 +20 +00 +00 +00 +ENDCHAR +STARTCHAR char163 +ENCODING 163 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +30 +48 +40 +40 +E0 +40 +40 +48 +B0 +00 +00 +ENDCHAR +STARTCHAR char164 +ENCODING 164 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +38 +40 +40 +F0 +40 +F0 +40 +40 +38 +00 +00 +ENDCHAR +STARTCHAR char165 +ENCODING 165 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +88 +88 +50 +50 +F8 +20 +F8 +20 +20 +00 +00 +ENDCHAR +STARTCHAR char166 +ENCODING 166 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +48 +30 +00 +70 +88 +80 +70 +08 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char167 +ENCODING 167 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +30 +48 +40 +30 +48 +48 +30 +08 +48 +30 +00 +00 +ENDCHAR +STARTCHAR char168 +ENCODING 168 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +90 +60 +00 +70 +88 +60 +10 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char169 +ENCODING 169 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +70 +88 +A8 +D8 +C8 +D8 +A8 +88 +70 +00 +00 +00 +ENDCHAR +STARTCHAR char170 +ENCODING 170 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +70 +08 +78 +88 +78 +00 +F8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char171 +ENCODING 171 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +28 +50 +A0 +A0 +50 +28 +00 +00 +00 +ENDCHAR +STARTCHAR char172 +ENCODING 172 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +F8 +08 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char173 +ENCODING 173 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +70 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char174 +ENCODING 174 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +70 +88 +E8 +D8 +D8 +E8 +D8 +88 +70 +00 +00 +00 +ENDCHAR +STARTCHAR char175 +ENCODING 175 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +F8 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char176 +ENCODING 176 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +30 +48 +48 +30 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char177 +ENCODING 177 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +20 +20 +F8 +20 +20 +00 +F8 +00 +00 +00 +ENDCHAR +STARTCHAR char178 +ENCODING 178 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +40 +A0 +20 +40 +E0 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char179 +ENCODING 179 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +40 +A0 +40 +20 +C0 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char180 +ENCODING 180 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +48 +30 +00 +F8 +08 +10 +20 +40 +80 +F8 +00 +00 +ENDCHAR +STARTCHAR char181 +ENCODING 181 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +88 +88 +88 +88 +98 +E8 +80 +80 +ENDCHAR +STARTCHAR char182 +ENCODING 182 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +78 +E8 +E8 +E8 +E8 +68 +28 +28 +28 +00 +00 +ENDCHAR +STARTCHAR char183 +ENCODING 183 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +30 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char184 +ENCODING 184 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +48 +30 +00 +F8 +10 +20 +40 +80 +F8 +00 +00 +ENDCHAR +STARTCHAR char185 +ENCODING 185 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +40 +C0 +40 +40 +E0 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char186 +ENCODING 186 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +70 +88 +88 +88 +70 +00 +F8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char187 +ENCODING 187 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +A0 +50 +28 +28 +50 +A0 +00 +00 +00 +ENDCHAR +STARTCHAR char188 +ENCODING 188 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +78 +A0 +A0 +A0 +B0 +A0 +A0 +A0 +78 +00 +00 +ENDCHAR +STARTCHAR char189 +ENCODING 189 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +50 +A8 +B8 +A0 +A8 +50 +00 +00 +ENDCHAR +STARTCHAR char190 +ENCODING 190 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +50 +50 +00 +88 +50 +50 +20 +20 +20 +20 +00 +00 +ENDCHAR +STARTCHAR char191 +ENCODING 191 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +20 +00 +20 +20 +40 +80 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char192 +ENCODING 192 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +40 +20 +00 +20 +50 +88 +88 +F8 +88 +88 +00 +00 +ENDCHAR +STARTCHAR char193 +ENCODING 193 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +10 +20 +00 +20 +50 +88 +88 +F8 +88 +88 +00 +00 +ENDCHAR +STARTCHAR char194 +ENCODING 194 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +30 +48 +00 +20 +50 +88 +88 +F8 +88 +88 +00 +00 +ENDCHAR +STARTCHAR char195 +ENCODING 195 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +28 +50 +00 +20 +50 +88 +88 +F8 +88 +88 +00 +00 +ENDCHAR +STARTCHAR char196 +ENCODING 196 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +50 +50 +00 +20 +50 +88 +88 +F8 +88 +88 +00 +00 +ENDCHAR +STARTCHAR char197 +ENCODING 197 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +20 +50 +20 +20 +50 +88 +88 +F8 +88 +88 +00 +00 +ENDCHAR +STARTCHAR char198 +ENCODING 198 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +58 +A0 +A0 +A0 +B0 +E0 +A0 +A0 +B8 +00 +00 +ENDCHAR +STARTCHAR char199 +ENCODING 199 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +70 +88 +80 +80 +80 +80 +80 +88 +70 +20 +40 +ENDCHAR +STARTCHAR char200 +ENCODING 200 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +40 +20 +00 +F8 +80 +80 +F0 +80 +80 +F8 +00 +00 +ENDCHAR +STARTCHAR char201 +ENCODING 201 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +10 +20 +00 +F8 +80 +80 +F0 +80 +80 +F8 +00 +00 +ENDCHAR +STARTCHAR char202 +ENCODING 202 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +30 +48 +00 +F8 +80 +80 +F0 +80 +80 +F8 +00 +00 +ENDCHAR +STARTCHAR char203 +ENCODING 203 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +50 +50 +00 +F8 +80 +80 +F0 +80 +80 +F8 +00 +00 +ENDCHAR +STARTCHAR char204 +ENCODING 204 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +40 +20 +00 +70 +20 +20 +20 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR char205 +ENCODING 205 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +10 +20 +00 +70 +20 +20 +20 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR char206 +ENCODING 206 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +30 +48 +00 +70 +20 +20 +20 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR char207 +ENCODING 207 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +50 +50 +00 +70 +20 +20 +20 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR char208 +ENCODING 208 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +F0 +48 +48 +48 +E8 +48 +48 +48 +F0 +00 +00 +ENDCHAR +STARTCHAR char209 +ENCODING 209 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +28 +50 +00 +88 +88 +C8 +A8 +98 +88 +88 +00 +00 +ENDCHAR +STARTCHAR char210 +ENCODING 210 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +40 +20 +00 +70 +88 +88 +88 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char211 +ENCODING 211 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +10 +20 +00 +70 +88 +88 +88 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char212 +ENCODING 212 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +30 +48 +00 +70 +88 +88 +88 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char213 +ENCODING 213 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +28 +50 +00 +70 +88 +88 +88 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char214 +ENCODING 214 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +50 +50 +00 +70 +88 +88 +88 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char215 +ENCODING 215 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +88 +50 +20 +50 +88 +00 +00 +00 +ENDCHAR +STARTCHAR char216 +ENCODING 216 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +08 +70 +98 +98 +A8 +A8 +A8 +C8 +C8 +70 +80 +00 +ENDCHAR +STARTCHAR char217 +ENCODING 217 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +40 +20 +00 +88 +88 +88 +88 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char218 +ENCODING 218 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +10 +20 +00 +88 +88 +88 +88 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char219 +ENCODING 219 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +30 +48 +00 +88 +88 +88 +88 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char220 +ENCODING 220 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +50 +50 +00 +88 +88 +88 +88 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char221 +ENCODING 221 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +10 +20 +00 +88 +88 +50 +20 +20 +20 +20 +00 +00 +ENDCHAR +STARTCHAR char222 +ENCODING 222 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +80 +F0 +88 +88 +88 +F0 +80 +80 +80 +00 +00 +ENDCHAR +STARTCHAR char223 +ENCODING 223 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +60 +90 +90 +A0 +A0 +90 +88 +88 +B0 +00 +00 +ENDCHAR +STARTCHAR char224 +ENCODING 224 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +40 +20 +00 +70 +08 +78 +88 +98 +68 +00 +00 +ENDCHAR +STARTCHAR char225 +ENCODING 225 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +10 +20 +00 +70 +08 +78 +88 +98 +68 +00 +00 +ENDCHAR +STARTCHAR char226 +ENCODING 226 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +30 +48 +00 +70 +08 +78 +88 +98 +68 +00 +00 +ENDCHAR +STARTCHAR char227 +ENCODING 227 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +28 +50 +00 +70 +08 +78 +88 +98 +68 +00 +00 +ENDCHAR +STARTCHAR char228 +ENCODING 228 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +50 +50 +00 +70 +08 +78 +88 +98 +68 +00 +00 +ENDCHAR +STARTCHAR char229 +ENCODING 229 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +30 +48 +30 +00 +70 +08 +78 +88 +98 +68 +00 +00 +ENDCHAR +STARTCHAR char230 +ENCODING 230 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +70 +28 +70 +A0 +A8 +50 +00 +00 +ENDCHAR +STARTCHAR char231 +ENCODING 231 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +70 +88 +80 +80 +88 +70 +20 +40 +ENDCHAR +STARTCHAR char232 +ENCODING 232 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +40 +20 +00 +70 +88 +F8 +80 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char233 +ENCODING 233 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +10 +20 +00 +70 +88 +F8 +80 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char234 +ENCODING 234 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +30 +48 +00 +70 +88 +F8 +80 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char235 +ENCODING 235 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +50 +50 +00 +70 +88 +F8 +80 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char236 +ENCODING 236 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +40 +20 +00 +60 +20 +20 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR char237 +ENCODING 237 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +10 +20 +00 +60 +20 +20 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR char238 +ENCODING 238 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +30 +48 +00 +60 +20 +20 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR char239 +ENCODING 239 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +50 +50 +00 +60 +20 +20 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR char240 +ENCODING 240 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +50 +20 +60 +10 +70 +88 +88 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char241 +ENCODING 241 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +28 +50 +00 +B0 +C8 +88 +88 +88 +88 +00 +00 +ENDCHAR +STARTCHAR char242 +ENCODING 242 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +40 +20 +00 +70 +88 +88 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char243 +ENCODING 243 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +10 +20 +00 +70 +88 +88 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char244 +ENCODING 244 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +30 +48 +00 +70 +88 +88 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char245 +ENCODING 245 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +28 +50 +00 +70 +88 +88 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char246 +ENCODING 246 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +50 +50 +00 +70 +88 +88 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char247 +ENCODING 247 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +20 +20 +00 +F8 +00 +20 +20 +00 +00 +00 +ENDCHAR +STARTCHAR char248 +ENCODING 248 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +08 +70 +98 +A8 +A8 +C8 +70 +80 +00 +ENDCHAR +STARTCHAR char249 +ENCODING 249 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +40 +20 +00 +88 +88 +88 +88 +98 +68 +00 +00 +ENDCHAR +STARTCHAR char250 +ENCODING 250 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +10 +20 +00 +88 +88 +88 +88 +98 +68 +00 +00 +ENDCHAR +STARTCHAR char251 +ENCODING 251 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +30 +48 +00 +88 +88 +88 +88 +98 +68 +00 +00 +ENDCHAR +STARTCHAR char252 +ENCODING 252 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +50 +50 +00 +88 +88 +88 +88 +98 +68 +00 +00 +ENDCHAR +STARTCHAR char253 +ENCODING 253 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +10 +20 +00 +88 +88 +88 +98 +68 +08 +88 +70 +ENDCHAR +STARTCHAR char254 +ENCODING 254 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +80 +80 +B0 +C8 +88 +88 +C8 +B0 +80 +80 +ENDCHAR +STARTCHAR char255 +ENCODING 255 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +50 +50 +00 +88 +88 +88 +98 +68 +08 +88 +70 +ENDCHAR +ENDFONT diff --git a/ui/fonts/fixed6x13.h b/ui/fonts/fixed6x13.h new file mode 100644 index 0000000..a6333df --- /dev/null +++ b/ui/fonts/fixed6x13.h @@ -0,0 +1,261 @@ +/* -Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO8859-15 */ +#define FONT_WIDTH_FixedMedium_6x13 6 +#define FONT_HEIGHT_FixedMedium_6x13 13 +const uint8_t FONT_DATA_FixedMedium_6x13[256][13] = { +{0x00,0x00,0x15,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x15,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x04,0x0e,0x1f,0x0e,0x04,0x00,0x00,0x00,0x00,}, +{0x15,0x2a,0x15,0x2a,0x15,0x2a,0x15,0x2a,0x15,0x2a,0x15,0x2a,0x15,}, +{0x00,0x00,0x05,0x05,0x07,0x05,0x05,0x1c,0x08,0x08,0x08,0x00,0x00,}, +{0x00,0x00,0x07,0x01,0x03,0x01,0x1d,0x04,0x0c,0x04,0x04,0x00,0x00,}, +{0x00,0x00,0x06,0x01,0x01,0x06,0x0c,0x14,0x0c,0x14,0x14,0x00,0x00,}, +{0x00,0x00,0x01,0x01,0x01,0x07,0x1c,0x04,0x0c,0x04,0x04,0x00,0x00,}, +{0x00,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x04,0x04,0x1f,0x04,0x04,0x00,0x1f,0x00,0x00,0x00,}, +{0x00,0x00,0x09,0x0b,0x0d,0x09,0x04,0x04,0x04,0x04,0x1c,0x00,0x00,}, +{0x00,0x00,0x05,0x05,0x05,0x02,0x02,0x1c,0x08,0x08,0x08,0x00,0x00,}, +{0x04,0x04,0x04,0x04,0x04,0x04,0x07,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x04,0x04,0x04,0x04,0x04,0x04,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x04,0x04,0x04,0x04,0x04,0x04,}, +{0x04,0x04,0x04,0x04,0x04,0x04,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x04,0x04,0x04,0x04,0x04,0x04,0x3f,0x04,0x04,0x04,0x04,0x04,0x04,}, +{0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,}, +{0x04,0x04,0x04,0x04,0x04,0x04,0x3c,0x04,0x04,0x04,0x04,0x04,0x04,}, +{0x04,0x04,0x04,0x04,0x04,0x04,0x07,0x04,0x04,0x04,0x04,0x04,0x04,}, +{0x04,0x04,0x04,0x04,0x04,0x04,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x04,0x04,0x04,0x04,0x04,0x04,}, +{0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,}, +{0x00,0x00,0x00,0x18,0x06,0x01,0x06,0x18,0x00,0x1f,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x03,0x0c,0x10,0x0c,0x03,0x00,0x1f,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x1f,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x10,0x1f,0x04,0x1f,0x01,0x00,0x00,0x00,}, +{0x00,0x00,0x0c,0x12,0x02,0x02,0x07,0x02,0x02,0x12,0x0d,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x04,0x00,0x00,}, +{0x00,0x00,0x0a,0x0a,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x0a,0x0a,0x1f,0x0a,0x1f,0x0a,0x0a,0x00,0x00,0x00,}, +{0x00,0x00,0x04,0x1e,0x05,0x05,0x0e,0x14,0x14,0x0f,0x04,0x00,0x00,}, +{0x00,0x00,0x12,0x15,0x0a,0x08,0x04,0x02,0x0a,0x15,0x09,0x00,0x00,}, +{0x00,0x00,0x00,0x02,0x05,0x05,0x02,0x05,0x19,0x09,0x16,0x00,0x00,}, +{0x00,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x08,0x04,0x04,0x02,0x02,0x02,0x02,0x02,0x04,0x04,0x08,0x00,}, +{0x00,0x02,0x04,0x04,0x08,0x08,0x08,0x08,0x08,0x04,0x04,0x02,0x00,}, +{0x00,0x00,0x04,0x15,0x0e,0x15,0x04,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x04,0x04,0x1f,0x04,0x04,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x04,0x02,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x0e,0x04,0x00,}, +{0x00,0x00,0x10,0x10,0x08,0x08,0x04,0x02,0x02,0x01,0x01,0x00,0x00,}, +{0x00,0x00,0x04,0x0a,0x11,0x11,0x11,0x11,0x11,0x0a,0x04,0x00,0x00,}, +{0x00,0x00,0x04,0x06,0x05,0x04,0x04,0x04,0x04,0x04,0x1f,0x00,0x00,}, +{0x00,0x00,0x0e,0x11,0x11,0x10,0x08,0x04,0x02,0x01,0x1f,0x00,0x00,}, +{0x00,0x00,0x1f,0x10,0x08,0x04,0x0e,0x10,0x10,0x11,0x0e,0x00,0x00,}, +{0x00,0x00,0x08,0x08,0x0c,0x0a,0x0a,0x09,0x1f,0x08,0x08,0x00,0x00,}, +{0x00,0x00,0x1f,0x01,0x01,0x0d,0x13,0x10,0x10,0x11,0x0e,0x00,0x00,}, +{0x00,0x00,0x0e,0x11,0x01,0x01,0x0f,0x11,0x11,0x11,0x0e,0x00,0x00,}, +{0x00,0x00,0x1f,0x10,0x08,0x08,0x04,0x04,0x02,0x02,0x02,0x00,0x00,}, +{0x00,0x00,0x0e,0x11,0x11,0x11,0x0e,0x11,0x11,0x11,0x0e,0x00,0x00,}, +{0x00,0x00,0x0e,0x11,0x11,0x11,0x1e,0x10,0x10,0x11,0x0e,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x04,0x0e,0x04,0x00,0x00,0x04,0x0e,0x04,0x00,}, +{0x00,0x00,0x00,0x00,0x04,0x0e,0x04,0x00,0x00,0x0c,0x04,0x02,0x00,}, +{0x00,0x00,0x10,0x08,0x04,0x02,0x01,0x02,0x04,0x08,0x10,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x1f,0x00,0x00,0x1f,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x08,0x04,0x02,0x01,0x00,0x00,}, +{0x00,0x00,0x0e,0x11,0x11,0x10,0x08,0x04,0x04,0x00,0x04,0x00,0x00,}, +{0x00,0x00,0x0e,0x11,0x11,0x19,0x15,0x15,0x0d,0x01,0x1e,0x00,0x00,}, +{0x00,0x00,0x04,0x0a,0x11,0x11,0x11,0x1f,0x11,0x11,0x11,0x00,0x00,}, +{0x00,0x00,0x0f,0x12,0x12,0x12,0x0e,0x12,0x12,0x12,0x0f,0x00,0x00,}, +{0x00,0x00,0x0e,0x11,0x01,0x01,0x01,0x01,0x01,0x11,0x0e,0x00,0x00,}, +{0x00,0x00,0x0f,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x0f,0x00,0x00,}, +{0x00,0x00,0x1f,0x01,0x01,0x01,0x0f,0x01,0x01,0x01,0x1f,0x00,0x00,}, +{0x00,0x00,0x1f,0x01,0x01,0x01,0x0f,0x01,0x01,0x01,0x01,0x00,0x00,}, +{0x00,0x00,0x0e,0x11,0x01,0x01,0x01,0x19,0x11,0x11,0x0e,0x00,0x00,}, +{0x00,0x00,0x11,0x11,0x11,0x11,0x1f,0x11,0x11,0x11,0x11,0x00,0x00,}, +{0x00,0x00,0x0e,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x0e,0x00,0x00,}, +{0x00,0x00,0x1c,0x08,0x08,0x08,0x08,0x08,0x08,0x09,0x06,0x00,0x00,}, +{0x00,0x00,0x11,0x11,0x09,0x05,0x03,0x05,0x09,0x11,0x11,0x00,0x00,}, +{0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x1f,0x00,0x00,}, +{0x00,0x00,0x11,0x11,0x1b,0x15,0x15,0x11,0x11,0x11,0x11,0x00,0x00,}, +{0x00,0x00,0x11,0x13,0x13,0x15,0x15,0x19,0x19,0x11,0x11,0x00,0x00,}, +{0x00,0x00,0x0e,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x0e,0x00,0x00,}, +{0x00,0x00,0x0f,0x11,0x11,0x11,0x0f,0x01,0x01,0x01,0x01,0x00,0x00,}, +{0x00,0x00,0x0e,0x11,0x11,0x11,0x11,0x11,0x11,0x15,0x0e,0x10,0x00,}, +{0x00,0x00,0x0f,0x11,0x11,0x11,0x0f,0x05,0x09,0x11,0x11,0x00,0x00,}, +{0x00,0x00,0x0e,0x11,0x01,0x01,0x0e,0x10,0x10,0x11,0x0e,0x00,0x00,}, +{0x00,0x00,0x1f,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,}, +{0x00,0x00,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x0e,0x00,0x00,}, +{0x00,0x00,0x11,0x11,0x11,0x11,0x0a,0x0a,0x0a,0x04,0x04,0x00,0x00,}, +{0x00,0x00,0x11,0x11,0x11,0x11,0x15,0x15,0x15,0x15,0x0a,0x00,0x00,}, +{0x00,0x00,0x11,0x11,0x0a,0x0a,0x04,0x0a,0x0a,0x11,0x11,0x00,0x00,}, +{0x00,0x00,0x11,0x11,0x0a,0x0a,0x04,0x04,0x04,0x04,0x04,0x00,0x00,}, +{0x00,0x00,0x1f,0x10,0x08,0x08,0x04,0x02,0x02,0x01,0x1f,0x00,0x00,}, +{0x00,0x0e,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x0e,0x00,}, +{0x00,0x00,0x01,0x01,0x02,0x02,0x04,0x08,0x08,0x10,0x10,0x00,0x00,}, +{0x00,0x0e,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x0e,0x00,}, +{0x00,0x00,0x04,0x0a,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x00,}, +{0x00,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x0e,0x10,0x1e,0x11,0x19,0x16,0x00,0x00,}, +{0x00,0x00,0x01,0x01,0x01,0x0f,0x11,0x11,0x11,0x11,0x0f,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x0e,0x11,0x01,0x01,0x11,0x0e,0x00,0x00,}, +{0x00,0x00,0x10,0x10,0x10,0x1e,0x11,0x11,0x11,0x11,0x1e,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x0e,0x11,0x1f,0x01,0x11,0x0e,0x00,0x00,}, +{0x00,0x00,0x0c,0x12,0x02,0x02,0x0f,0x02,0x02,0x02,0x02,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x0e,0x11,0x11,0x11,0x1e,0x10,0x11,0x0e,}, +{0x00,0x00,0x01,0x01,0x01,0x0d,0x13,0x11,0x11,0x11,0x11,0x00,0x00,}, +{0x00,0x00,0x00,0x04,0x00,0x06,0x04,0x04,0x04,0x04,0x0e,0x00,0x00,}, +{0x00,0x00,0x00,0x08,0x00,0x0c,0x08,0x08,0x08,0x08,0x09,0x09,0x06,}, +{0x00,0x00,0x01,0x01,0x01,0x09,0x05,0x03,0x05,0x09,0x11,0x00,0x00,}, +{0x00,0x00,0x06,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x0e,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x0b,0x15,0x15,0x15,0x15,0x11,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x0d,0x13,0x11,0x11,0x11,0x11,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x0e,0x11,0x11,0x11,0x11,0x0e,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x0f,0x11,0x11,0x11,0x0f,0x01,0x01,0x01,}, +{0x00,0x00,0x00,0x00,0x00,0x1e,0x11,0x11,0x11,0x1e,0x10,0x10,0x10,}, +{0x00,0x00,0x00,0x00,0x00,0x0d,0x13,0x01,0x01,0x01,0x01,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x0e,0x11,0x06,0x08,0x11,0x0e,0x00,0x00,}, +{0x00,0x00,0x00,0x02,0x02,0x0f,0x02,0x02,0x02,0x12,0x0c,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x11,0x19,0x16,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x0a,0x0a,0x04,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x11,0x11,0x15,0x15,0x15,0x0a,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x11,0x0a,0x04,0x04,0x0a,0x11,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x19,0x16,0x10,0x11,0x0e,}, +{0x00,0x00,0x00,0x00,0x00,0x1f,0x08,0x04,0x02,0x01,0x1f,0x00,0x00,}, +{0x00,0x18,0x04,0x04,0x04,0x04,0x03,0x04,0x04,0x04,0x04,0x18,0x00,}, +{0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,}, +{0x00,0x03,0x04,0x04,0x04,0x04,0x18,0x04,0x04,0x04,0x04,0x03,0x00,}, +{0x00,0x00,0x12,0x15,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x04,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,}, +{0x00,0x00,0x04,0x0e,0x15,0x05,0x05,0x15,0x0e,0x04,0x00,0x00,0x00,}, +{0x00,0x00,0x0c,0x12,0x02,0x02,0x07,0x02,0x02,0x12,0x0d,0x00,0x00,}, +{0x00,0x00,0x1c,0x02,0x02,0x0f,0x02,0x0f,0x02,0x02,0x1c,0x00,0x00,}, +{0x00,0x00,0x11,0x11,0x0a,0x0a,0x1f,0x04,0x1f,0x04,0x04,0x00,0x00,}, +{0x00,0x12,0x0c,0x00,0x0e,0x11,0x01,0x0e,0x10,0x11,0x0e,0x00,0x00,}, +{0x00,0x0c,0x12,0x02,0x0c,0x12,0x12,0x0c,0x10,0x12,0x0c,0x00,0x00,}, +{0x00,0x00,0x09,0x06,0x00,0x0e,0x11,0x06,0x08,0x11,0x0e,0x00,0x00,}, +{0x00,0x0e,0x11,0x15,0x1b,0x13,0x1b,0x15,0x11,0x0e,0x00,0x00,0x00,}, +{0x00,0x00,0x0e,0x10,0x1e,0x11,0x1e,0x00,0x1f,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x14,0x0a,0x05,0x05,0x0a,0x14,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x10,0x10,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x0e,0x11,0x17,0x1b,0x1b,0x17,0x1b,0x11,0x0e,0x00,0x00,0x00,}, +{0x00,0x00,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x04,0x04,0x1f,0x04,0x04,0x00,0x1f,0x00,0x00,0x00,}, +{0x00,0x02,0x05,0x04,0x02,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x02,0x05,0x02,0x04,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x12,0x0c,0x00,0x1f,0x10,0x08,0x04,0x02,0x01,0x1f,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x11,0x19,0x17,0x01,0x01,}, +{0x00,0x00,0x1e,0x17,0x17,0x17,0x17,0x16,0x14,0x14,0x14,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x12,0x0c,0x00,0x1f,0x08,0x04,0x02,0x01,0x1f,0x00,0x00,}, +{0x00,0x02,0x03,0x02,0x02,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x0e,0x11,0x11,0x11,0x0e,0x00,0x1f,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x05,0x0a,0x14,0x14,0x0a,0x05,0x00,0x00,0x00,}, +{0x00,0x00,0x1e,0x05,0x05,0x05,0x0d,0x05,0x05,0x05,0x1e,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x0a,0x15,0x1d,0x05,0x15,0x0a,0x00,0x00,}, +{0x00,0x0a,0x0a,0x00,0x11,0x0a,0x0a,0x04,0x04,0x04,0x04,0x00,0x00,}, +{0x00,0x00,0x04,0x00,0x04,0x04,0x02,0x01,0x11,0x11,0x0e,0x00,0x00,}, +{0x00,0x02,0x04,0x00,0x04,0x0a,0x11,0x11,0x1f,0x11,0x11,0x00,0x00,}, +{0x00,0x08,0x04,0x00,0x04,0x0a,0x11,0x11,0x1f,0x11,0x11,0x00,0x00,}, +{0x00,0x0c,0x12,0x00,0x04,0x0a,0x11,0x11,0x1f,0x11,0x11,0x00,0x00,}, +{0x00,0x14,0x0a,0x00,0x04,0x0a,0x11,0x11,0x1f,0x11,0x11,0x00,0x00,}, +{0x00,0x0a,0x0a,0x00,0x04,0x0a,0x11,0x11,0x1f,0x11,0x11,0x00,0x00,}, +{0x00,0x04,0x0a,0x04,0x04,0x0a,0x11,0x11,0x1f,0x11,0x11,0x00,0x00,}, +{0x00,0x00,0x1a,0x05,0x05,0x05,0x0d,0x07,0x05,0x05,0x1d,0x00,0x00,}, +{0x00,0x00,0x0e,0x11,0x01,0x01,0x01,0x01,0x01,0x11,0x0e,0x04,0x02,}, +{0x00,0x02,0x04,0x00,0x1f,0x01,0x01,0x0f,0x01,0x01,0x1f,0x00,0x00,}, +{0x00,0x08,0x04,0x00,0x1f,0x01,0x01,0x0f,0x01,0x01,0x1f,0x00,0x00,}, +{0x00,0x0c,0x12,0x00,0x1f,0x01,0x01,0x0f,0x01,0x01,0x1f,0x00,0x00,}, +{0x00,0x0a,0x0a,0x00,0x1f,0x01,0x01,0x0f,0x01,0x01,0x1f,0x00,0x00,}, +{0x00,0x02,0x04,0x00,0x0e,0x04,0x04,0x04,0x04,0x04,0x0e,0x00,0x00,}, +{0x00,0x08,0x04,0x00,0x0e,0x04,0x04,0x04,0x04,0x04,0x0e,0x00,0x00,}, +{0x00,0x0c,0x12,0x00,0x0e,0x04,0x04,0x04,0x04,0x04,0x0e,0x00,0x00,}, +{0x00,0x0a,0x0a,0x00,0x0e,0x04,0x04,0x04,0x04,0x04,0x0e,0x00,0x00,}, +{0x00,0x00,0x0f,0x12,0x12,0x12,0x17,0x12,0x12,0x12,0x0f,0x00,0x00,}, +{0x00,0x14,0x0a,0x00,0x11,0x11,0x13,0x15,0x19,0x11,0x11,0x00,0x00,}, +{0x00,0x02,0x04,0x00,0x0e,0x11,0x11,0x11,0x11,0x11,0x0e,0x00,0x00,}, +{0x00,0x08,0x04,0x00,0x0e,0x11,0x11,0x11,0x11,0x11,0x0e,0x00,0x00,}, +{0x00,0x0c,0x12,0x00,0x0e,0x11,0x11,0x11,0x11,0x11,0x0e,0x00,0x00,}, +{0x00,0x14,0x0a,0x00,0x0e,0x11,0x11,0x11,0x11,0x11,0x0e,0x00,0x00,}, +{0x00,0x0a,0x0a,0x00,0x0e,0x11,0x11,0x11,0x11,0x11,0x0e,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x11,0x0a,0x04,0x0a,0x11,0x00,0x00,0x00,}, +{0x00,0x10,0x0e,0x19,0x19,0x15,0x15,0x15,0x13,0x13,0x0e,0x01,0x00,}, +{0x00,0x02,0x04,0x00,0x11,0x11,0x11,0x11,0x11,0x11,0x0e,0x00,0x00,}, +{0x00,0x08,0x04,0x00,0x11,0x11,0x11,0x11,0x11,0x11,0x0e,0x00,0x00,}, +{0x00,0x0c,0x12,0x00,0x11,0x11,0x11,0x11,0x11,0x11,0x0e,0x00,0x00,}, +{0x00,0x0a,0x0a,0x00,0x11,0x11,0x11,0x11,0x11,0x11,0x0e,0x00,0x00,}, +{0x00,0x08,0x04,0x00,0x11,0x11,0x0a,0x04,0x04,0x04,0x04,0x00,0x00,}, +{0x00,0x00,0x01,0x0f,0x11,0x11,0x11,0x0f,0x01,0x01,0x01,0x00,0x00,}, +{0x00,0x00,0x06,0x09,0x09,0x05,0x05,0x09,0x11,0x11,0x0d,0x00,0x00,}, +{0x00,0x00,0x02,0x04,0x00,0x0e,0x10,0x1e,0x11,0x19,0x16,0x00,0x00,}, +{0x00,0x00,0x08,0x04,0x00,0x0e,0x10,0x1e,0x11,0x19,0x16,0x00,0x00,}, +{0x00,0x00,0x0c,0x12,0x00,0x0e,0x10,0x1e,0x11,0x19,0x16,0x00,0x00,}, +{0x00,0x00,0x14,0x0a,0x00,0x0e,0x10,0x1e,0x11,0x19,0x16,0x00,0x00,}, +{0x00,0x00,0x0a,0x0a,0x00,0x0e,0x10,0x1e,0x11,0x19,0x16,0x00,0x00,}, +{0x00,0x0c,0x12,0x0c,0x00,0x0e,0x10,0x1e,0x11,0x19,0x16,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x0e,0x14,0x0e,0x05,0x15,0x0a,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x0e,0x11,0x01,0x01,0x11,0x0e,0x04,0x02,}, +{0x00,0x00,0x02,0x04,0x00,0x0e,0x11,0x1f,0x01,0x11,0x0e,0x00,0x00,}, +{0x00,0x00,0x08,0x04,0x00,0x0e,0x11,0x1f,0x01,0x11,0x0e,0x00,0x00,}, +{0x00,0x00,0x0c,0x12,0x00,0x0e,0x11,0x1f,0x01,0x11,0x0e,0x00,0x00,}, +{0x00,0x00,0x0a,0x0a,0x00,0x0e,0x11,0x1f,0x01,0x11,0x0e,0x00,0x00,}, +{0x00,0x00,0x02,0x04,0x00,0x06,0x04,0x04,0x04,0x04,0x0e,0x00,0x00,}, +{0x00,0x00,0x08,0x04,0x00,0x06,0x04,0x04,0x04,0x04,0x0e,0x00,0x00,}, +{0x00,0x00,0x0c,0x12,0x00,0x06,0x04,0x04,0x04,0x04,0x0e,0x00,0x00,}, +{0x00,0x00,0x0a,0x0a,0x00,0x06,0x04,0x04,0x04,0x04,0x0e,0x00,0x00,}, +{0x00,0x0a,0x04,0x06,0x08,0x0e,0x11,0x11,0x11,0x11,0x0e,0x00,0x00,}, +{0x00,0x00,0x14,0x0a,0x00,0x0d,0x13,0x11,0x11,0x11,0x11,0x00,0x00,}, +{0x00,0x00,0x02,0x04,0x00,0x0e,0x11,0x11,0x11,0x11,0x0e,0x00,0x00,}, +{0x00,0x00,0x08,0x04,0x00,0x0e,0x11,0x11,0x11,0x11,0x0e,0x00,0x00,}, +{0x00,0x00,0x0c,0x12,0x00,0x0e,0x11,0x11,0x11,0x11,0x0e,0x00,0x00,}, +{0x00,0x00,0x14,0x0a,0x00,0x0e,0x11,0x11,0x11,0x11,0x0e,0x00,0x00,}, +{0x00,0x00,0x0a,0x0a,0x00,0x0e,0x11,0x11,0x11,0x11,0x0e,0x00,0x00,}, +{0x00,0x00,0x00,0x04,0x04,0x00,0x1f,0x00,0x04,0x04,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x10,0x0e,0x19,0x15,0x15,0x13,0x0e,0x01,0x00,}, +{0x00,0x00,0x02,0x04,0x00,0x11,0x11,0x11,0x11,0x19,0x16,0x00,0x00,}, +{0x00,0x00,0x08,0x04,0x00,0x11,0x11,0x11,0x11,0x19,0x16,0x00,0x00,}, +{0x00,0x00,0x0c,0x12,0x00,0x11,0x11,0x11,0x11,0x19,0x16,0x00,0x00,}, +{0x00,0x00,0x0a,0x0a,0x00,0x11,0x11,0x11,0x11,0x19,0x16,0x00,0x00,}, +{0x00,0x00,0x08,0x04,0x00,0x11,0x11,0x11,0x19,0x16,0x10,0x11,0x0e,}, +{0x00,0x00,0x00,0x01,0x01,0x0d,0x13,0x11,0x11,0x13,0x0d,0x01,0x01,}, +{0x00,0x00,0x0a,0x0a,0x00,0x11,0x11,0x11,0x19,0x16,0x10,0x11,0x0e,}, +}; diff --git a/ui/fonts/fixed6x13b.bdf b/ui/fonts/fixed6x13b.bdf new file mode 100644 index 0000000..0480407 --- /dev/null +++ b/ui/fonts/fixed6x13b.bdf @@ -0,0 +1,5153 @@ +STARTFONT 2.1 +COMMENT Font grabbed from the X server. +FONT -Misc-Fixed-Bold-R-SemiCondensed--13-120-75-75-C-60-ISO8859-15 +SIZE 12 75 75 +FONTBOUNDINGBOX 6 13 0 -2 +STARTPROPERTIES 24 +FONTNAME_REGISTRY "" +FOUNDRY "Misc" +FAMILY_NAME "Fixed" +WEIGHT_NAME "Bold" +SLANT "R" +SETWIDTH_NAME "SemiCondensed" +ADD_STYLE_NAME "" +PIXEL_SIZE 13 +POINT_SIZE 120 +RESOLUTION_X 75 +RESOLUTION_Y 75 +SPACING "C" +AVERAGE_WIDTH 60 +CHARSET_REGISTRY "ISO8859" +CHARSET_ENCODING "15" +COPYRIGHT "Public domain font. Share and enjoy." +CAP_HEIGHT 9 +X_HEIGHT 6 +WEIGHT 10 +RESOLUTION 107 +QUAD_WIDTH 6 +FONT_ASCENT 11 +FONT_DESCENT 2 +_GBDFED_INFO "Edited with gbdfed 1.6." +ENDPROPERTIES +CHARS 256 +STARTCHAR char0 +ENCODING 0 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +A8 +A8 +00 +88 +88 +00 +88 +88 +00 +A8 +A8 +00 +ENDCHAR +STARTCHAR char1 +ENCODING 1 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +30 +78 +FC +78 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char2 +ENCODING 2 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +A8 +54 +A8 +54 +A8 +54 +A8 +54 +A8 +54 +A8 +54 +A8 +ENDCHAR +STARTCHAR char3 +ENCODING 3 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +D8 +D8 +F8 +D8 +D8 +3C +18 +18 +18 +18 +00 +00 +ENDCHAR +STARTCHAR char4 +ENCODING 4 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +F0 +C0 +E0 +C0 +C0 +3C +30 +38 +30 +30 +00 +00 +ENDCHAR +STARTCHAR char5 +ENCODING 5 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +78 +C8 +C0 +C8 +78 +78 +6C +78 +68 +6C +00 +00 +ENDCHAR +STARTCHAR char6 +ENCODING 6 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +C0 +C0 +C0 +C0 +F0 +3C +30 +38 +30 +30 +00 +00 +ENDCHAR +STARTCHAR char7 +ENCODING 7 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +78 +CC +CC +78 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char8 +ENCODING 8 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +30 +30 +FC +FC +30 +30 +00 +FC +FC +00 +00 +ENDCHAR +STARTCHAR char9 +ENCODING 9 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +D8 +F8 +F8 +D8 +D8 +30 +30 +30 +30 +3C +ENDCHAR +STARTCHAR char10 +ENCODING 10 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +D8 +D8 +D8 +70 +20 +3C +18 +18 +18 +18 +00 +00 +ENDCHAR +STARTCHAR char11 +ENCODING 11 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +30 +30 +30 +30 +30 +30 +F0 +F0 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char12 +ENCODING 12 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +F0 +F0 +30 +30 +30 +30 +30 +ENDCHAR +STARTCHAR char13 +ENCODING 13 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +3C +3C +30 +30 +30 +30 +30 +ENDCHAR +STARTCHAR char14 +ENCODING 14 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +30 +30 +30 +30 +30 +30 +3C +3C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char15 +ENCODING 15 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +30 +30 +30 +30 +30 +30 +FC +FC +30 +30 +30 +30 +30 +ENDCHAR +STARTCHAR char16 +ENCODING 16 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +FC +FC +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char17 +ENCODING 17 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +FC +FC +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char18 +ENCODING 18 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +FC +FC +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char19 +ENCODING 19 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +FC +FC +00 +00 +00 +ENDCHAR +STARTCHAR char20 +ENCODING 20 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +FC +FC +ENDCHAR +STARTCHAR char21 +ENCODING 21 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +30 +30 +30 +30 +30 +30 +3C +3C +30 +30 +30 +30 +30 +ENDCHAR +STARTCHAR char22 +ENCODING 22 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +30 +30 +30 +30 +30 +30 +F0 +F0 +30 +30 +30 +30 +30 +ENDCHAR +STARTCHAR char23 +ENCODING 23 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +30 +30 +30 +30 +30 +30 +FC +FC +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char24 +ENCODING 24 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +FC +FC +30 +30 +30 +30 +30 +ENDCHAR +STARTCHAR char25 +ENCODING 25 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +ENDCHAR +STARTCHAR char26 +ENCODING 26 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +1C +70 +C0 +70 +1C +00 +FC +00 +00 +00 +ENDCHAR +STARTCHAR char27 +ENCODING 27 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +E0 +38 +0C +38 +E0 +00 +FC +00 +00 +00 +ENDCHAR +STARTCHAR char28 +ENCODING 28 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +FC +CC +CC +CC +CC +CC +00 +00 +ENDCHAR +STARTCHAR char29 +ENCODING 29 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +0C +FC +30 +FC +C0 +00 +00 +00 +ENDCHAR +STARTCHAR char30 +ENCODING 30 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +38 +6C +60 +60 +F8 +60 +60 +64 +F8 +00 +00 +ENDCHAR +STARTCHAR char31 +ENCODING 31 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +30 +30 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char32 +ENCODING 32 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char33 +ENCODING 33 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +30 +30 +30 +30 +30 +30 +30 +00 +30 +00 +00 +ENDCHAR +STARTCHAR char34 +ENCODING 34 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +D8 +D8 +D8 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char35 +ENCODING 35 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +78 +78 +FC +78 +FC +78 +78 +00 +00 +00 +ENDCHAR +STARTCHAR char36 +ENCODING 36 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +30 +78 +F0 +78 +3C +78 +30 +00 +00 +00 +ENDCHAR +STARTCHAR char37 +ENCODING 37 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +6C +FC +78 +18 +30 +60 +78 +FC +D8 +00 +00 +ENDCHAR +STARTCHAR char38 +ENCODING 38 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +60 +F0 +F0 +60 +FC +D8 +7C +00 +00 +ENDCHAR +STARTCHAR char39 +ENCODING 39 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +30 +30 +30 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char40 +ENCODING 40 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +18 +30 +30 +60 +60 +60 +60 +60 +30 +30 +18 +00 +ENDCHAR +STARTCHAR char41 +ENCODING 41 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +60 +30 +30 +18 +18 +18 +18 +18 +30 +30 +60 +00 +ENDCHAR +STARTCHAR char42 +ENCODING 42 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +CC +78 +FC +78 +CC +00 +00 +00 +00 +ENDCHAR +STARTCHAR char43 +ENCODING 43 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +30 +30 +FC +30 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char44 +ENCODING 44 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +38 +30 +60 +00 +ENDCHAR +STARTCHAR char45 +ENCODING 45 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +FC +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char46 +ENCODING 46 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +30 +78 +30 +00 +ENDCHAR +STARTCHAR char47 +ENCODING 47 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +0C +0C +18 +18 +30 +60 +60 +C0 +C0 +00 +00 +ENDCHAR +STARTCHAR char48 +ENCODING 48 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +30 +78 +CC +CC +CC +CC +CC +78 +30 +00 +00 +ENDCHAR +STARTCHAR char49 +ENCODING 49 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +30 +70 +F0 +30 +30 +30 +30 +30 +FC +00 +00 +ENDCHAR +STARTCHAR char50 +ENCODING 50 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +78 +CC +CC +0C +18 +30 +60 +C0 +FC +00 +00 +ENDCHAR +STARTCHAR char51 +ENCODING 51 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +FC +0C +18 +30 +78 +0C +0C +CC +78 +00 +00 +ENDCHAR +STARTCHAR char52 +ENCODING 52 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +18 +18 +38 +78 +58 +D8 +FC +18 +18 +00 +00 +ENDCHAR +STARTCHAR char53 +ENCODING 53 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +FC +C0 +C0 +F8 +EC +0C +0C +CC +78 +00 +00 +ENDCHAR +STARTCHAR char54 +ENCODING 54 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +38 +60 +C0 +C0 +F8 +EC +CC +CC +78 +00 +00 +ENDCHAR +STARTCHAR char55 +ENCODING 55 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +FC +0C +18 +18 +30 +30 +60 +60 +60 +00 +00 +ENDCHAR +STARTCHAR char56 +ENCODING 56 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +78 +CC +CC +CC +78 +CC +CC +CC +78 +00 +00 +ENDCHAR +STARTCHAR char57 +ENCODING 57 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +78 +CC +CC +DC +7C +0C +0C +18 +70 +00 +00 +ENDCHAR +STARTCHAR char58 +ENCODING 58 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +30 +78 +30 +00 +00 +30 +78 +30 +00 +00 +ENDCHAR +STARTCHAR char59 +ENCODING 59 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +30 +78 +30 +00 +00 +38 +30 +60 +00 +ENDCHAR +STARTCHAR char60 +ENCODING 60 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +0C +18 +30 +60 +C0 +60 +30 +18 +0C +00 +00 +ENDCHAR +STARTCHAR char61 +ENCODING 61 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +FC +00 +00 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR char62 +ENCODING 62 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +C0 +60 +30 +18 +0C +18 +30 +60 +C0 +00 +00 +ENDCHAR +STARTCHAR char63 +ENCODING 63 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +78 +CC +CC +0C +18 +30 +30 +00 +30 +00 +00 +ENDCHAR +STARTCHAR char64 +ENCODING 64 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +78 +CC +CC +DC +FC +FC +F8 +C0 +7C +00 +00 +ENDCHAR +STARTCHAR char65 +ENCODING 65 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +30 +78 +CC +CC +CC +FC +CC +CC +CC +00 +00 +ENDCHAR +STARTCHAR char66 +ENCODING 66 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +F8 +6C +6C +6C +78 +6C +6C +6C +F8 +00 +00 +ENDCHAR +STARTCHAR char67 +ENCODING 67 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +78 +CC +C0 +C0 +C0 +C0 +C0 +CC +78 +00 +00 +ENDCHAR +STARTCHAR char68 +ENCODING 68 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +F8 +6C +6C +6C +6C +6C +6C +6C +F8 +00 +00 +ENDCHAR +STARTCHAR char69 +ENCODING 69 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +FC +C0 +C0 +C0 +F8 +C0 +C0 +C0 +FC +00 +00 +ENDCHAR +STARTCHAR char70 +ENCODING 70 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +FC +C0 +C0 +C0 +F8 +C0 +C0 +C0 +C0 +00 +00 +ENDCHAR +STARTCHAR char71 +ENCODING 71 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +78 +CC +C0 +C0 +C0 +DC +CC +CC +78 +00 +00 +ENDCHAR +STARTCHAR char72 +ENCODING 72 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +CC +CC +CC +CC +FC +CC +CC +CC +CC +00 +00 +ENDCHAR +STARTCHAR char73 +ENCODING 73 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +78 +30 +30 +30 +30 +30 +30 +30 +78 +00 +00 +ENDCHAR +STARTCHAR char74 +ENCODING 74 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +3C +0C +0C +0C +0C +0C +0C +CC +78 +00 +00 +ENDCHAR +STARTCHAR char75 +ENCODING 75 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +CC +CC +D8 +F0 +E0 +F0 +D8 +CC +CC +00 +00 +ENDCHAR +STARTCHAR char76 +ENCODING 76 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +FC +00 +00 +ENDCHAR +STARTCHAR char77 +ENCODING 77 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +CC +CC +FC +FC +FC +CC +CC +CC +CC +00 +00 +ENDCHAR +STARTCHAR char78 +ENCODING 78 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +CC +EC +EC +FC +FC +DC +DC +CC +CC +00 +00 +ENDCHAR +STARTCHAR char79 +ENCODING 79 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +78 +CC +CC +CC +CC +CC +CC +CC +78 +00 +00 +ENDCHAR +STARTCHAR char80 +ENCODING 80 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +F8 +CC +CC +CC +F8 +C0 +C0 +C0 +C0 +00 +00 +ENDCHAR +STARTCHAR char81 +ENCODING 81 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +78 +CC +CC +CC +CC +CC +CC +FC +78 +0C +00 +ENDCHAR +STARTCHAR char82 +ENCODING 82 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +F8 +CC +CC +CC +F8 +F0 +D8 +CC +CC +00 +00 +ENDCHAR +STARTCHAR char83 +ENCODING 83 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +78 +CC +C0 +C0 +78 +0C +0C +CC +78 +00 +00 +ENDCHAR +STARTCHAR char84 +ENCODING 84 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +FC +30 +30 +30 +30 +30 +30 +30 +30 +00 +00 +ENDCHAR +STARTCHAR char85 +ENCODING 85 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +CC +CC +CC +CC +CC +CC +CC +CC +78 +00 +00 +ENDCHAR +STARTCHAR char86 +ENCODING 86 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +CC +CC +CC +CC +78 +78 +78 +30 +30 +00 +00 +ENDCHAR +STARTCHAR char87 +ENCODING 87 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +CC +CC +CC +CC +FC +FC +FC +FC +CC +00 +00 +ENDCHAR +STARTCHAR char88 +ENCODING 88 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +CC +CC +78 +78 +30 +78 +78 +CC +CC +00 +00 +ENDCHAR +STARTCHAR char89 +ENCODING 89 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +CC +CC +78 +78 +30 +30 +30 +30 +30 +00 +00 +ENDCHAR +STARTCHAR char90 +ENCODING 90 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +FC +0C +18 +18 +30 +60 +60 +C0 +FC +00 +00 +ENDCHAR +STARTCHAR char91 +ENCODING 91 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +78 +60 +60 +60 +60 +60 +60 +60 +60 +60 +78 +00 +ENDCHAR +STARTCHAR char92 +ENCODING 92 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +C0 +C0 +60 +60 +30 +18 +18 +0C +0C +00 +00 +ENDCHAR +STARTCHAR char93 +ENCODING 93 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +78 +18 +18 +18 +18 +18 +18 +18 +18 +18 +78 +00 +ENDCHAR +STARTCHAR char94 +ENCODING 94 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +30 +78 +CC +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char95 +ENCODING 95 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +FC +00 +ENDCHAR +STARTCHAR char96 +ENCODING 96 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +60 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char97 +ENCODING 97 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +78 +0C +7C +CC +DC +6C +00 +00 +ENDCHAR +STARTCHAR char98 +ENCODING 98 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +C0 +C0 +C0 +D8 +EC +CC +CC +EC +D8 +00 +00 +ENDCHAR +STARTCHAR char99 +ENCODING 99 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +78 +CC +C0 +C0 +CC +78 +00 +00 +ENDCHAR +STARTCHAR char100 +ENCODING 100 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +0C +0C +0C +6C +DC +CC +CC +DC +6C +00 +00 +ENDCHAR +STARTCHAR char101 +ENCODING 101 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +78 +CC +FC +C0 +C0 +78 +00 +00 +ENDCHAR +STARTCHAR char102 +ENCODING 102 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +38 +6C +60 +60 +F8 +60 +60 +60 +60 +00 +00 +ENDCHAR +STARTCHAR char103 +ENCODING 103 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +7C +D8 +D8 +70 +C0 +78 +CC +78 +ENDCHAR +STARTCHAR char104 +ENCODING 104 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +C0 +C0 +C0 +D8 +EC +CC +CC +CC +CC +00 +00 +ENDCHAR +STARTCHAR char105 +ENCODING 105 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +30 +30 +00 +70 +30 +30 +30 +30 +78 +00 +00 +ENDCHAR +STARTCHAR char106 +ENCODING 106 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +18 +18 +00 +38 +18 +18 +18 +18 +D8 +D8 +70 +ENDCHAR +STARTCHAR char107 +ENCODING 107 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +C0 +C0 +C0 +D8 +F0 +E0 +F0 +D8 +CC +00 +00 +ENDCHAR +STARTCHAR char108 +ENCODING 108 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +70 +30 +30 +30 +30 +30 +30 +30 +78 +00 +00 +ENDCHAR +STARTCHAR char109 +ENCODING 109 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +F8 +FC +FC +FC +FC +CC +00 +00 +ENDCHAR +STARTCHAR char110 +ENCODING 110 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +D8 +EC +CC +CC +CC +CC +00 +00 +ENDCHAR +STARTCHAR char111 +ENCODING 111 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +78 +CC +CC +CC +CC +78 +00 +00 +ENDCHAR +STARTCHAR char112 +ENCODING 112 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +D8 +EC +CC +EC +D8 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char113 +ENCODING 113 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +6C +DC +CC +DC +6C +0C +0C +0C +ENDCHAR +STARTCHAR char114 +ENCODING 114 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +D8 +EC +C0 +C0 +C0 +C0 +00 +00 +ENDCHAR +STARTCHAR char115 +ENCODING 115 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +78 +CC +70 +18 +CC +78 +00 +00 +ENDCHAR +STARTCHAR char116 +ENCODING 116 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +60 +60 +F8 +60 +60 +60 +6C +38 +00 +00 +ENDCHAR +STARTCHAR char117 +ENCODING 117 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +CC +CC +CC +CC +DC +6C +00 +00 +ENDCHAR +STARTCHAR char118 +ENCODING 118 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +CC +CC +CC +78 +78 +30 +00 +00 +ENDCHAR +STARTCHAR char119 +ENCODING 119 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +CC +CC +FC +FC +FC +48 +00 +00 +ENDCHAR +STARTCHAR char120 +ENCODING 120 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +CC +78 +30 +30 +78 +CC +00 +00 +ENDCHAR +STARTCHAR char121 +ENCODING 121 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +CC +CC +CC +DC +6C +0C +CC +78 +ENDCHAR +STARTCHAR char122 +ENCODING 122 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +FC +18 +30 +60 +C0 +FC +00 +00 +ENDCHAR +STARTCHAR char123 +ENCODING 123 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +38 +60 +60 +60 +30 +E0 +30 +60 +60 +60 +38 +00 +ENDCHAR +STARTCHAR char124 +ENCODING 124 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +30 +30 +30 +30 +30 +30 +30 +30 +30 +00 +00 +ENDCHAR +STARTCHAR char125 +ENCODING 125 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +E0 +30 +30 +30 +60 +38 +60 +30 +30 +30 +E0 +00 +ENDCHAR +STARTCHAR char126 +ENCODING 126 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +68 +F8 +90 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 127 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 128 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 129 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 130 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 131 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 132 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 133 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 134 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 135 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 136 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 137 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 138 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 139 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 140 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 141 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 142 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 143 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 144 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 145 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 146 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 147 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 148 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 149 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 150 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 151 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 152 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 153 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 154 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 155 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 156 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 157 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 158 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 159 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char160 +ENCODING 160 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char161 +ENCODING 161 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +30 +30 +00 +30 +30 +30 +30 +30 +30 +30 +00 +00 +ENDCHAR +STARTCHAR char162 +ENCODING 162 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +10 +78 +D4 +D0 +D0 +D4 +78 +10 +00 +00 +00 +ENDCHAR +STARTCHAR char163 +ENCODING 163 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +38 +6C +60 +60 +F8 +60 +60 +64 +F8 +00 +00 +ENDCHAR +STARTCHAR char164 +ENCODING 164 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +38 +7C +60 +F0 +60 +F0 +60 +7C +38 +00 +00 +ENDCHAR +STARTCHAR char165 +ENCODING 165 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +CC +CC +78 +78 +FC +30 +FC +30 +30 +00 +00 +ENDCHAR +STARTCHAR char166 +ENCODING 166 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +6C +38 +00 +78 +CC +C0 +78 +0C +CC +78 +00 +00 +ENDCHAR +STARTCHAR char167 +ENCODING 167 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +78 +CC +C0 +78 +CC +CC +78 +0C +CC +78 +00 +00 +ENDCHAR +STARTCHAR char168 +ENCODING 168 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +6C +38 +00 +78 +CC +70 +18 +CC +78 +00 +00 +ENDCHAR +STARTCHAR char169 +ENCODING 169 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +78 +CC +B4 +EC +E4 +EC +B4 +CC +78 +00 +00 +ENDCHAR +STARTCHAR char170 +ENCODING 170 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +F8 +0C +FC +8C +FC +00 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR char171 +ENCODING 171 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +34 +68 +D0 +A0 +D0 +68 +34 +00 +00 +00 +ENDCHAR +STARTCHAR char172 +ENCODING 172 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +FC +FC +04 +04 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char173 +ENCODING 173 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +78 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char174 +ENCODING 174 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +78 +CC +BC +AC +BC +B4 +AC +CC +78 +00 +00 +ENDCHAR +STARTCHAR char175 +ENCODING 175 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +F8 +F8 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char176 +ENCODING 176 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +78 +CC +CC +78 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char177 +ENCODING 177 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +30 +30 +FC +FC +30 +30 +00 +FC +FC +00 +00 +ENDCHAR +STARTCHAR char178 +ENCODING 178 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +E0 +B0 +30 +60 +C0 +F0 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char179 +ENCODING 179 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +E0 +B0 +60 +30 +B0 +E0 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char180 +ENCODING 180 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +6C +38 +00 +FC +0C +18 +30 +60 +C0 +FC +00 +00 +ENDCHAR +STARTCHAR char181 +ENCODING 181 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +CC +CC +CC +CC +CC +FC +80 +80 +ENDCHAR +STARTCHAR char182 +ENCODING 182 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +7C +FC +F4 +F4 +F4 +74 +34 +34 +34 +00 +00 +ENDCHAR +STARTCHAR char183 +ENCODING 183 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +30 +30 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char184 +ENCODING 184 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +6C +38 +00 +FC +18 +30 +60 +C0 +FC +00 +00 +ENDCHAR +STARTCHAR char185 +ENCODING 185 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +60 +E0 +60 +60 +60 +F0 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char186 +ENCODING 186 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +70 +F8 +88 +F8 +70 +00 +F8 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char187 +ENCODING 187 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +B0 +58 +2C +14 +2C +58 +B0 +00 +00 +00 +ENDCHAR +STARTCHAR char188 +ENCODING 188 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +7C +D8 +D8 +D8 +DC +D8 +D8 +D8 +7C +00 +00 +ENDCHAR +STARTCHAR char189 +ENCODING 189 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +78 +D4 +D8 +D0 +D4 +78 +00 +00 +ENDCHAR +STARTCHAR char190 +ENCODING 190 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +CC +CC +00 +CC +CC +78 +78 +30 +30 +30 +00 +00 +ENDCHAR +STARTCHAR char191 +ENCODING 191 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +30 +30 +00 +30 +30 +60 +C0 +CC +CC +78 +00 +00 +ENDCHAR +STARTCHAR char192 +ENCODING 192 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +60 +30 +00 +30 +78 +CC +CC +FC +CC +CC +00 +00 +ENDCHAR +STARTCHAR char193 +ENCODING 193 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +18 +30 +00 +30 +78 +CC +CC +FC +CC +CC +00 +00 +ENDCHAR +STARTCHAR char194 +ENCODING 194 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +38 +6C +00 +30 +78 +CC +CC +FC +CC +CC +00 +00 +ENDCHAR +STARTCHAR char195 +ENCODING 195 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +34 +58 +00 +30 +78 +CC +CC +FC +CC +CC +00 +00 +ENDCHAR +STARTCHAR char196 +ENCODING 196 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +CC +CC +00 +30 +78 +CC +CC +FC +CC +CC +00 +00 +ENDCHAR +STARTCHAR char197 +ENCODING 197 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +30 +48 +78 +30 +78 +CC +CC +FC +CC +CC +00 +00 +ENDCHAR +STARTCHAR char198 +ENCODING 198 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +7C +B0 +B0 +B0 +B8 +F0 +F0 +B0 +BC +00 +00 +ENDCHAR +STARTCHAR char199 +ENCODING 199 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +78 +CC +C0 +C0 +C0 +C0 +C0 +CC +78 +30 +60 +ENDCHAR +STARTCHAR char200 +ENCODING 200 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +60 +30 +00 +FC +C0 +C0 +F8 +C0 +C0 +FC +00 +00 +ENDCHAR +STARTCHAR char201 +ENCODING 201 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +18 +30 +00 +FC +C0 +C0 +F8 +C0 +C0 +FC +00 +00 +ENDCHAR +STARTCHAR char202 +ENCODING 202 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +38 +6C +00 +FC +C0 +C0 +F8 +C0 +C0 +FC +00 +00 +ENDCHAR +STARTCHAR char203 +ENCODING 203 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +CC +CC +00 +FC +C0 +C0 +F8 +C0 +C0 +FC +00 +00 +ENDCHAR +STARTCHAR char204 +ENCODING 204 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +60 +30 +00 +78 +30 +30 +30 +30 +30 +78 +00 +00 +ENDCHAR +STARTCHAR char205 +ENCODING 205 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +18 +30 +00 +78 +30 +30 +30 +30 +30 +78 +00 +00 +ENDCHAR +STARTCHAR char206 +ENCODING 206 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +70 +D8 +00 +78 +30 +30 +30 +30 +30 +78 +00 +00 +ENDCHAR +STARTCHAR char207 +ENCODING 207 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +CC +CC +00 +78 +30 +30 +30 +30 +30 +78 +00 +00 +ENDCHAR +STARTCHAR char208 +ENCODING 208 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +F8 +6C +6C +6C +EC +6C +6C +6C +F8 +00 +00 +ENDCHAR +STARTCHAR char209 +ENCODING 209 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +34 +58 +00 +CC +EC +EC +FC +DC +DC +CC +00 +00 +ENDCHAR +STARTCHAR char210 +ENCODING 210 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +60 +30 +00 +78 +CC +CC +CC +CC +CC +78 +00 +00 +ENDCHAR +STARTCHAR char211 +ENCODING 211 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +18 +30 +00 +78 +CC +CC +CC +CC +CC +78 +00 +00 +ENDCHAR +STARTCHAR char212 +ENCODING 212 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +38 +6C +00 +78 +CC +CC +CC +CC +CC +78 +00 +00 +ENDCHAR +STARTCHAR char213 +ENCODING 213 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +34 +58 +00 +78 +CC +CC +CC +CC +CC +78 +00 +00 +ENDCHAR +STARTCHAR char214 +ENCODING 214 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +CC +CC +00 +78 +CC +CC +CC +CC +CC +78 +00 +00 +ENDCHAR +STARTCHAR char215 +ENCODING 215 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +CC +78 +30 +78 +CC +00 +00 +00 +ENDCHAR +STARTCHAR char216 +ENCODING 216 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +04 +78 +DC +DC +CC +EC +EC +78 +80 +00 +ENDCHAR +STARTCHAR char217 +ENCODING 217 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +60 +30 +00 +CC +CC +CC +CC +CC +CC +78 +00 +00 +ENDCHAR +STARTCHAR char218 +ENCODING 218 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +18 +30 +00 +CC +CC +CC +CC +CC +CC +78 +00 +00 +ENDCHAR +STARTCHAR char219 +ENCODING 219 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +38 +6C +00 +CC +CC +CC +CC +CC +CC +78 +00 +00 +ENDCHAR +STARTCHAR char220 +ENCODING 220 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +6C +6C +00 +CC +CC +CC +CC +CC +CC +78 +00 +00 +ENDCHAR +STARTCHAR char221 +ENCODING 221 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +18 +30 +00 +CC +48 +78 +30 +30 +30 +30 +00 +00 +ENDCHAR +STARTCHAR char222 +ENCODING 222 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +C0 +F8 +CC +CC +CC +F8 +C0 +C0 +C0 +00 +00 +ENDCHAR +STARTCHAR char223 +ENCODING 223 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +78 +CC +CC +F8 +CC +CC +CC +F8 +80 +00 +ENDCHAR +STARTCHAR char224 +ENCODING 224 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +60 +30 +00 +78 +0C +7C +CC +DC +6C +00 +00 +ENDCHAR +STARTCHAR char225 +ENCODING 225 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +18 +30 +00 +78 +0C +7C +CC +DC +6C +00 +00 +ENDCHAR +STARTCHAR char226 +ENCODING 226 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +38 +6C +00 +78 +0C +7C +CC +DC +6C +00 +00 +ENDCHAR +STARTCHAR char227 +ENCODING 227 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +34 +58 +00 +78 +0C +7C +CC +DC +6C +00 +00 +ENDCHAR +STARTCHAR char228 +ENCODING 228 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +6C +6C +00 +78 +0C +7C +CC +DC +6C +00 +00 +ENDCHAR +STARTCHAR char229 +ENCODING 229 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +38 +28 +38 +00 +78 +0C +7C +CC +DC +6C +00 +00 +ENDCHAR +STARTCHAR char230 +ENCODING 230 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +78 +34 +78 +B0 +B4 +68 +00 +00 +ENDCHAR +STARTCHAR char231 +ENCODING 231 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +00 +00 +78 +CC +C0 +C0 +CC +78 +30 +60 +ENDCHAR +STARTCHAR char232 +ENCODING 232 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +60 +30 +00 +78 +CC +FC +C0 +C0 +78 +00 +00 +ENDCHAR +STARTCHAR char233 +ENCODING 233 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +18 +30 +00 +78 +CC +FC +C0 +C0 +78 +00 +00 +ENDCHAR +STARTCHAR char234 +ENCODING 234 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +38 +6C +00 +78 +CC +FC +C0 +C0 +78 +00 +00 +ENDCHAR +STARTCHAR char235 +ENCODING 235 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +6C +6C +00 +78 +CC +FC +C0 +C0 +78 +00 +00 +ENDCHAR +STARTCHAR char236 +ENCODING 236 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +60 +30 +00 +70 +30 +30 +30 +30 +78 +00 +00 +ENDCHAR +STARTCHAR char237 +ENCODING 237 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +18 +30 +00 +70 +30 +30 +30 +30 +78 +00 +00 +ENDCHAR +STARTCHAR char238 +ENCODING 238 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +70 +D8 +00 +70 +30 +30 +30 +30 +78 +00 +00 +ENDCHAR +STARTCHAR char239 +ENCODING 239 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +D8 +D8 +00 +70 +30 +30 +30 +30 +78 +00 +00 +ENDCHAR +STARTCHAR char240 +ENCODING 240 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +D8 +70 +F0 +98 +78 +CC +CC +CC +CC +78 +00 +00 +ENDCHAR +STARTCHAR char241 +ENCODING 241 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +34 +58 +00 +D8 +EC +CC +CC +CC +CC +00 +00 +ENDCHAR +STARTCHAR char242 +ENCODING 242 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +60 +30 +00 +78 +CC +CC +CC +CC +78 +00 +00 +ENDCHAR +STARTCHAR char243 +ENCODING 243 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +18 +30 +00 +78 +CC +CC +CC +CC +78 +00 +00 +ENDCHAR +STARTCHAR char244 +ENCODING 244 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +38 +6C +00 +78 +CC +CC +CC +CC +78 +00 +00 +ENDCHAR +STARTCHAR char245 +ENCODING 245 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +34 +58 +00 +78 +CC +CC +CC +CC +78 +00 +00 +ENDCHAR +STARTCHAR char246 +ENCODING 246 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +CC +CC +00 +78 +CC +CC +CC +CC +78 +00 +00 +ENDCHAR +STARTCHAR char247 +ENCODING 247 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +30 +30 +00 +FC +00 +30 +30 +00 +00 +00 +ENDCHAR +STARTCHAR char248 +ENCODING 248 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +04 +78 +CC +DC +CC +EC +CC +78 +80 +00 +ENDCHAR +STARTCHAR char249 +ENCODING 249 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +60 +30 +00 +CC +CC +CC +CC +DC +6C +00 +00 +ENDCHAR +STARTCHAR char250 +ENCODING 250 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +18 +30 +00 +CC +CC +CC +CC +DC +6C +00 +00 +ENDCHAR +STARTCHAR char251 +ENCODING 251 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +38 +6C +00 +CC +CC +CC +CC +DC +6C +00 +00 +ENDCHAR +STARTCHAR char252 +ENCODING 252 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +CC +CC +00 +CC +CC +CC +CC +DC +6C +00 +00 +ENDCHAR +STARTCHAR char253 +ENCODING 253 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +18 +30 +00 +CC +CC +CC +DC +6C +0C +CC +78 +ENDCHAR +STARTCHAR char254 +ENCODING 254 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +00 +C0 +C0 +D8 +EC +CC +EC +D8 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char255 +ENCODING 255 +SWIDTH 480 0 +DWIDTH 6 0 +BBX 6 13 0 -2 +BITMAP +00 +00 +CC +CC +00 +CC +CC +CC +DC +6C +0C +CC +78 +ENDCHAR +ENDFONT diff --git a/ui/fonts/fixed6x13b.h b/ui/fonts/fixed6x13b.h new file mode 100644 index 0000000..36f9cb1 --- /dev/null +++ b/ui/fonts/fixed6x13b.h @@ -0,0 +1,261 @@ +/* -Misc-Fixed-Bold-R-SemiCondensed--13-120-75-75-C-60-ISO8859-15 */ +#define FONT_WIDTH_FixedBold_6x13 6 +#define FONT_HEIGHT_FixedBold_6x13 13 +const uint8_t FONT_DATA_FixedBold_6x13[256][13] = { +{0x00,0x15,0x15,0x00,0x11,0x11,0x00,0x11,0x11,0x00,0x15,0x15,0x00,}, +{0x00,0x00,0x00,0x00,0x0c,0x1e,0x3f,0x1e,0x0c,0x00,0x00,0x00,0x00,}, +{0x15,0x2a,0x15,0x2a,0x15,0x2a,0x15,0x2a,0x15,0x2a,0x15,0x2a,0x15,}, +{0x00,0x1b,0x1b,0x1f,0x1b,0x1b,0x3c,0x18,0x18,0x18,0x18,0x00,0x00,}, +{0x00,0x0f,0x03,0x07,0x03,0x03,0x3c,0x0c,0x1c,0x0c,0x0c,0x00,0x00,}, +{0x00,0x1e,0x13,0x03,0x13,0x1e,0x1e,0x36,0x1e,0x16,0x36,0x00,0x00,}, +{0x00,0x03,0x03,0x03,0x03,0x0f,0x3c,0x0c,0x1c,0x0c,0x0c,0x00,0x00,}, +{0x00,0x00,0x1e,0x33,0x33,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x0c,0x0c,0x3f,0x3f,0x0c,0x0c,0x00,0x3f,0x3f,0x00,0x00,}, +{0x00,0x00,0x00,0x1b,0x1f,0x1f,0x1b,0x1b,0x0c,0x0c,0x0c,0x0c,0x3c,}, +{0x00,0x1b,0x1b,0x1b,0x0e,0x04,0x3c,0x18,0x18,0x18,0x18,0x00,0x00,}, +{0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0f,0x0f,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x0f,0x0c,0x0c,0x0c,0x0c,0x0c,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x3c,0x0c,0x0c,0x0c,0x0c,0x0c,}, +{0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x3c,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x3f,0x3f,0x0c,0x0c,0x0c,0x0c,0x0c,}, +{0x3f,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x3f,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x3f,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x3f,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x3f,}, +{0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x3c,0x3c,0x0c,0x0c,0x0c,0x0c,0x0c,}, +{0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0f,0x0f,0x0c,0x0c,0x0c,0x0c,0x0c,}, +{0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x3f,0x3f,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x3f,0x0c,0x0c,0x0c,0x0c,0x0c,}, +{0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,}, +{0x00,0x00,0x00,0x38,0x0e,0x03,0x0e,0x38,0x00,0x3f,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x07,0x1c,0x30,0x1c,0x07,0x00,0x3f,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x3f,0x33,0x33,0x33,0x33,0x33,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x30,0x3f,0x0c,0x3f,0x03,0x00,0x00,0x00,}, +{0x00,0x00,0x1c,0x36,0x06,0x06,0x1f,0x06,0x06,0x26,0x1f,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x0c,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x00,0x0c,0x00,0x00,}, +{0x00,0x00,0x1b,0x1b,0x1b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x1e,0x1e,0x3f,0x1e,0x3f,0x1e,0x1e,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x0c,0x1e,0x0f,0x1e,0x3c,0x1e,0x0c,0x00,0x00,0x00,}, +{0x00,0x00,0x36,0x3f,0x1e,0x18,0x0c,0x06,0x1e,0x3f,0x1b,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x06,0x0f,0x0f,0x06,0x3f,0x1b,0x3e,0x00,0x00,}, +{0x00,0x00,0x0c,0x0c,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x18,0x0c,0x0c,0x06,0x06,0x06,0x06,0x06,0x0c,0x0c,0x18,0x00,}, +{0x00,0x06,0x0c,0x0c,0x18,0x18,0x18,0x18,0x18,0x0c,0x0c,0x06,0x00,}, +{0x00,0x00,0x00,0x00,0x33,0x1e,0x3f,0x1e,0x33,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x0c,0x0c,0x3f,0x0c,0x0c,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x0c,0x06,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x1e,0x0c,0x00,}, +{0x00,0x00,0x30,0x30,0x18,0x18,0x0c,0x06,0x06,0x03,0x03,0x00,0x00,}, +{0x00,0x00,0x0c,0x1e,0x33,0x33,0x33,0x33,0x33,0x1e,0x0c,0x00,0x00,}, +{0x00,0x00,0x0c,0x0e,0x0f,0x0c,0x0c,0x0c,0x0c,0x0c,0x3f,0x00,0x00,}, +{0x00,0x00,0x1e,0x33,0x33,0x30,0x18,0x0c,0x06,0x03,0x3f,0x00,0x00,}, +{0x00,0x00,0x3f,0x30,0x18,0x0c,0x1e,0x30,0x30,0x33,0x1e,0x00,0x00,}, +{0x00,0x00,0x18,0x18,0x1c,0x1e,0x1a,0x1b,0x3f,0x18,0x18,0x00,0x00,}, +{0x00,0x00,0x3f,0x03,0x03,0x1f,0x37,0x30,0x30,0x33,0x1e,0x00,0x00,}, +{0x00,0x00,0x1c,0x06,0x03,0x03,0x1f,0x37,0x33,0x33,0x1e,0x00,0x00,}, +{0x00,0x00,0x3f,0x30,0x18,0x18,0x0c,0x0c,0x06,0x06,0x06,0x00,0x00,}, +{0x00,0x00,0x1e,0x33,0x33,0x33,0x1e,0x33,0x33,0x33,0x1e,0x00,0x00,}, +{0x00,0x00,0x1e,0x33,0x33,0x3b,0x3e,0x30,0x30,0x18,0x0e,0x00,0x00,}, +{0x00,0x00,0x00,0x0c,0x1e,0x0c,0x00,0x00,0x0c,0x1e,0x0c,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x0c,0x1e,0x0c,0x00,0x00,0x1c,0x0c,0x06,0x00,}, +{0x00,0x00,0x30,0x18,0x0c,0x06,0x03,0x06,0x0c,0x18,0x30,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x3f,0x00,0x00,0x3f,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x03,0x06,0x0c,0x18,0x30,0x18,0x0c,0x06,0x03,0x00,0x00,}, +{0x00,0x00,0x1e,0x33,0x33,0x30,0x18,0x0c,0x0c,0x00,0x0c,0x00,0x00,}, +{0x00,0x00,0x1e,0x33,0x33,0x3b,0x3f,0x3f,0x1f,0x03,0x3e,0x00,0x00,}, +{0x00,0x00,0x0c,0x1e,0x33,0x33,0x33,0x3f,0x33,0x33,0x33,0x00,0x00,}, +{0x00,0x00,0x1f,0x36,0x36,0x36,0x1e,0x36,0x36,0x36,0x1f,0x00,0x00,}, +{0x00,0x00,0x1e,0x33,0x03,0x03,0x03,0x03,0x03,0x33,0x1e,0x00,0x00,}, +{0x00,0x00,0x1f,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x1f,0x00,0x00,}, +{0x00,0x00,0x3f,0x03,0x03,0x03,0x1f,0x03,0x03,0x03,0x3f,0x00,0x00,}, +{0x00,0x00,0x3f,0x03,0x03,0x03,0x1f,0x03,0x03,0x03,0x03,0x00,0x00,}, +{0x00,0x00,0x1e,0x33,0x03,0x03,0x03,0x3b,0x33,0x33,0x1e,0x00,0x00,}, +{0x00,0x00,0x33,0x33,0x33,0x33,0x3f,0x33,0x33,0x33,0x33,0x00,0x00,}, +{0x00,0x00,0x1e,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x1e,0x00,0x00,}, +{0x00,0x00,0x3c,0x30,0x30,0x30,0x30,0x30,0x30,0x33,0x1e,0x00,0x00,}, +{0x00,0x00,0x33,0x33,0x1b,0x0f,0x07,0x0f,0x1b,0x33,0x33,0x00,0x00,}, +{0x00,0x00,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x3f,0x00,0x00,}, +{0x00,0x00,0x33,0x33,0x3f,0x3f,0x3f,0x33,0x33,0x33,0x33,0x00,0x00,}, +{0x00,0x00,0x33,0x37,0x37,0x3f,0x3f,0x3b,0x3b,0x33,0x33,0x00,0x00,}, +{0x00,0x00,0x1e,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x1e,0x00,0x00,}, +{0x00,0x00,0x1f,0x33,0x33,0x33,0x1f,0x03,0x03,0x03,0x03,0x00,0x00,}, +{0x00,0x00,0x1e,0x33,0x33,0x33,0x33,0x33,0x33,0x3f,0x1e,0x30,0x00,}, +{0x00,0x00,0x1f,0x33,0x33,0x33,0x1f,0x0f,0x1b,0x33,0x33,0x00,0x00,}, +{0x00,0x00,0x1e,0x33,0x03,0x03,0x1e,0x30,0x30,0x33,0x1e,0x00,0x00,}, +{0x00,0x00,0x3f,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x00,0x00,}, +{0x00,0x00,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x1e,0x00,0x00,}, +{0x00,0x00,0x33,0x33,0x33,0x33,0x1e,0x1e,0x1e,0x0c,0x0c,0x00,0x00,}, +{0x00,0x00,0x33,0x33,0x33,0x33,0x3f,0x3f,0x3f,0x3f,0x33,0x00,0x00,}, +{0x00,0x00,0x33,0x33,0x1e,0x1e,0x0c,0x1e,0x1e,0x33,0x33,0x00,0x00,}, +{0x00,0x00,0x33,0x33,0x1e,0x1e,0x0c,0x0c,0x0c,0x0c,0x0c,0x00,0x00,}, +{0x00,0x00,0x3f,0x30,0x18,0x18,0x0c,0x06,0x06,0x03,0x3f,0x00,0x00,}, +{0x00,0x1e,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x1e,0x00,}, +{0x00,0x00,0x03,0x03,0x06,0x06,0x0c,0x18,0x18,0x30,0x30,0x00,0x00,}, +{0x00,0x1e,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1e,0x00,}, +{0x00,0x00,0x0c,0x1e,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x00,}, +{0x00,0x06,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x1e,0x30,0x3e,0x33,0x3b,0x36,0x00,0x00,}, +{0x00,0x00,0x03,0x03,0x03,0x1b,0x37,0x33,0x33,0x37,0x1b,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x1e,0x33,0x03,0x03,0x33,0x1e,0x00,0x00,}, +{0x00,0x00,0x30,0x30,0x30,0x36,0x3b,0x33,0x33,0x3b,0x36,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x1e,0x33,0x3f,0x03,0x03,0x1e,0x00,0x00,}, +{0x00,0x00,0x1c,0x36,0x06,0x06,0x1f,0x06,0x06,0x06,0x06,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x3e,0x1b,0x1b,0x0e,0x03,0x1e,0x33,0x1e,}, +{0x00,0x00,0x03,0x03,0x03,0x1b,0x37,0x33,0x33,0x33,0x33,0x00,0x00,}, +{0x00,0x00,0x0c,0x0c,0x00,0x0e,0x0c,0x0c,0x0c,0x0c,0x1e,0x00,0x00,}, +{0x00,0x00,0x18,0x18,0x00,0x1c,0x18,0x18,0x18,0x18,0x1b,0x1b,0x0e,}, +{0x00,0x00,0x03,0x03,0x03,0x1b,0x0f,0x07,0x0f,0x1b,0x33,0x00,0x00,}, +{0x00,0x00,0x0e,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x1e,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x1f,0x3f,0x3f,0x3f,0x3f,0x33,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x1b,0x37,0x33,0x33,0x33,0x33,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x1e,0x33,0x33,0x33,0x33,0x1e,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x1b,0x37,0x33,0x37,0x1b,0x03,0x03,0x03,}, +{0x00,0x00,0x00,0x00,0x00,0x36,0x3b,0x33,0x3b,0x36,0x30,0x30,0x30,}, +{0x00,0x00,0x00,0x00,0x00,0x1b,0x37,0x03,0x03,0x03,0x03,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x1e,0x33,0x0e,0x18,0x33,0x1e,0x00,0x00,}, +{0x00,0x00,0x00,0x06,0x06,0x1f,0x06,0x06,0x06,0x36,0x1c,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x33,0x33,0x33,0x33,0x3b,0x36,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x33,0x33,0x33,0x1e,0x1e,0x0c,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x33,0x33,0x3f,0x3f,0x3f,0x12,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x33,0x1e,0x0c,0x0c,0x1e,0x33,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x33,0x33,0x33,0x3b,0x36,0x30,0x33,0x1e,}, +{0x00,0x00,0x00,0x00,0x00,0x3f,0x18,0x0c,0x06,0x03,0x3f,0x00,0x00,}, +{0x00,0x1c,0x06,0x06,0x06,0x0c,0x07,0x0c,0x06,0x06,0x06,0x1c,0x00,}, +{0x00,0x00,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x00,0x00,}, +{0x00,0x07,0x0c,0x0c,0x0c,0x06,0x1c,0x06,0x0c,0x0c,0x0c,0x07,0x00,}, +{0x00,0x00,0x16,0x1f,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x0c,0x0c,0x00,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x00,0x00,}, +{0x00,0x00,0x08,0x1e,0x2b,0x0b,0x0b,0x2b,0x1e,0x08,0x00,0x00,0x00,}, +{0x00,0x00,0x1c,0x36,0x06,0x06,0x1f,0x06,0x06,0x26,0x1f,0x00,0x00,}, +{0x00,0x00,0x1c,0x3e,0x06,0x0f,0x06,0x0f,0x06,0x3e,0x1c,0x00,0x00,}, +{0x00,0x00,0x33,0x33,0x1e,0x1e,0x3f,0x0c,0x3f,0x0c,0x0c,0x00,0x00,}, +{0x00,0x36,0x1c,0x00,0x1e,0x33,0x03,0x1e,0x30,0x33,0x1e,0x00,0x00,}, +{0x00,0x1e,0x33,0x03,0x1e,0x33,0x33,0x1e,0x30,0x33,0x1e,0x00,0x00,}, +{0x00,0x00,0x36,0x1c,0x00,0x1e,0x33,0x0e,0x18,0x33,0x1e,0x00,0x00,}, +{0x00,0x00,0x1e,0x33,0x2d,0x37,0x27,0x37,0x2d,0x33,0x1e,0x00,0x00,}, +{0x00,0x00,0x1f,0x30,0x3f,0x31,0x3f,0x00,0x3f,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x2c,0x16,0x0b,0x05,0x0b,0x16,0x2c,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x3f,0x3f,0x20,0x20,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x1e,0x33,0x3d,0x35,0x3d,0x2d,0x35,0x33,0x1e,0x00,0x00,}, +{0x00,0x00,0x1f,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x1e,0x33,0x33,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x0c,0x0c,0x3f,0x3f,0x0c,0x0c,0x00,0x3f,0x3f,0x00,0x00,}, +{0x00,0x07,0x0d,0x0c,0x06,0x03,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x07,0x0d,0x06,0x0c,0x0d,0x07,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x36,0x1c,0x00,0x3f,0x30,0x18,0x0c,0x06,0x03,0x3f,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x33,0x33,0x33,0x33,0x33,0x3f,0x01,0x01,}, +{0x00,0x00,0x3e,0x3f,0x2f,0x2f,0x2f,0x2e,0x2c,0x2c,0x2c,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x0c,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x36,0x1c,0x00,0x3f,0x18,0x0c,0x06,0x03,0x3f,0x00,0x00,}, +{0x00,0x06,0x07,0x06,0x06,0x06,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x0e,0x1f,0x11,0x1f,0x0e,0x00,0x1f,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x0d,0x1a,0x34,0x28,0x34,0x1a,0x0d,0x00,0x00,0x00,}, +{0x00,0x00,0x3e,0x1b,0x1b,0x1b,0x3b,0x1b,0x1b,0x1b,0x3e,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x1e,0x2b,0x1b,0x0b,0x2b,0x1e,0x00,0x00,}, +{0x00,0x33,0x33,0x00,0x33,0x33,0x1e,0x1e,0x0c,0x0c,0x0c,0x00,0x00,}, +{0x00,0x0c,0x0c,0x00,0x0c,0x0c,0x06,0x03,0x33,0x33,0x1e,0x00,0x00,}, +{0x00,0x06,0x0c,0x00,0x0c,0x1e,0x33,0x33,0x3f,0x33,0x33,0x00,0x00,}, +{0x00,0x18,0x0c,0x00,0x0c,0x1e,0x33,0x33,0x3f,0x33,0x33,0x00,0x00,}, +{0x00,0x1c,0x36,0x00,0x0c,0x1e,0x33,0x33,0x3f,0x33,0x33,0x00,0x00,}, +{0x00,0x2c,0x1a,0x00,0x0c,0x1e,0x33,0x33,0x3f,0x33,0x33,0x00,0x00,}, +{0x00,0x33,0x33,0x00,0x0c,0x1e,0x33,0x33,0x3f,0x33,0x33,0x00,0x00,}, +{0x00,0x0c,0x12,0x1e,0x0c,0x1e,0x33,0x33,0x3f,0x33,0x33,0x00,0x00,}, +{0x00,0x00,0x3e,0x0d,0x0d,0x0d,0x1d,0x0f,0x0f,0x0d,0x3d,0x00,0x00,}, +{0x00,0x00,0x1e,0x33,0x03,0x03,0x03,0x03,0x03,0x33,0x1e,0x0c,0x06,}, +{0x00,0x06,0x0c,0x00,0x3f,0x03,0x03,0x1f,0x03,0x03,0x3f,0x00,0x00,}, +{0x00,0x18,0x0c,0x00,0x3f,0x03,0x03,0x1f,0x03,0x03,0x3f,0x00,0x00,}, +{0x00,0x1c,0x36,0x00,0x3f,0x03,0x03,0x1f,0x03,0x03,0x3f,0x00,0x00,}, +{0x00,0x33,0x33,0x00,0x3f,0x03,0x03,0x1f,0x03,0x03,0x3f,0x00,0x00,}, +{0x00,0x06,0x0c,0x00,0x1e,0x0c,0x0c,0x0c,0x0c,0x0c,0x1e,0x00,0x00,}, +{0x00,0x18,0x0c,0x00,0x1e,0x0c,0x0c,0x0c,0x0c,0x0c,0x1e,0x00,0x00,}, +{0x00,0x0e,0x1b,0x00,0x1e,0x0c,0x0c,0x0c,0x0c,0x0c,0x1e,0x00,0x00,}, +{0x00,0x33,0x33,0x00,0x1e,0x0c,0x0c,0x0c,0x0c,0x0c,0x1e,0x00,0x00,}, +{0x00,0x00,0x1f,0x36,0x36,0x36,0x37,0x36,0x36,0x36,0x1f,0x00,0x00,}, +{0x00,0x2c,0x1a,0x00,0x33,0x37,0x37,0x3f,0x3b,0x3b,0x33,0x00,0x00,}, +{0x00,0x06,0x0c,0x00,0x1e,0x33,0x33,0x33,0x33,0x33,0x1e,0x00,0x00,}, +{0x00,0x18,0x0c,0x00,0x1e,0x33,0x33,0x33,0x33,0x33,0x1e,0x00,0x00,}, +{0x00,0x1c,0x36,0x00,0x1e,0x33,0x33,0x33,0x33,0x33,0x1e,0x00,0x00,}, +{0x00,0x2c,0x1a,0x00,0x1e,0x33,0x33,0x33,0x33,0x33,0x1e,0x00,0x00,}, +{0x00,0x33,0x33,0x00,0x1e,0x33,0x33,0x33,0x33,0x33,0x1e,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x33,0x1e,0x0c,0x1e,0x33,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x20,0x1e,0x3b,0x3b,0x33,0x37,0x37,0x1e,0x01,0x00,}, +{0x00,0x06,0x0c,0x00,0x33,0x33,0x33,0x33,0x33,0x33,0x1e,0x00,0x00,}, +{0x00,0x18,0x0c,0x00,0x33,0x33,0x33,0x33,0x33,0x33,0x1e,0x00,0x00,}, +{0x00,0x1c,0x36,0x00,0x33,0x33,0x33,0x33,0x33,0x33,0x1e,0x00,0x00,}, +{0x00,0x36,0x36,0x00,0x33,0x33,0x33,0x33,0x33,0x33,0x1e,0x00,0x00,}, +{0x00,0x18,0x0c,0x00,0x33,0x12,0x1e,0x0c,0x0c,0x0c,0x0c,0x00,0x00,}, +{0x00,0x00,0x03,0x1f,0x33,0x33,0x33,0x1f,0x03,0x03,0x03,0x00,0x00,}, +{0x00,0x00,0x00,0x1e,0x33,0x33,0x1f,0x33,0x33,0x33,0x1f,0x01,0x00,}, +{0x00,0x00,0x06,0x0c,0x00,0x1e,0x30,0x3e,0x33,0x3b,0x36,0x00,0x00,}, +{0x00,0x00,0x18,0x0c,0x00,0x1e,0x30,0x3e,0x33,0x3b,0x36,0x00,0x00,}, +{0x00,0x00,0x1c,0x36,0x00,0x1e,0x30,0x3e,0x33,0x3b,0x36,0x00,0x00,}, +{0x00,0x00,0x2c,0x1a,0x00,0x1e,0x30,0x3e,0x33,0x3b,0x36,0x00,0x00,}, +{0x00,0x00,0x36,0x36,0x00,0x1e,0x30,0x3e,0x33,0x3b,0x36,0x00,0x00,}, +{0x00,0x1c,0x14,0x1c,0x00,0x1e,0x30,0x3e,0x33,0x3b,0x36,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x1e,0x2c,0x1e,0x0d,0x2d,0x16,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x1e,0x33,0x03,0x03,0x33,0x1e,0x0c,0x06,}, +{0x00,0x00,0x06,0x0c,0x00,0x1e,0x33,0x3f,0x03,0x03,0x1e,0x00,0x00,}, +{0x00,0x00,0x18,0x0c,0x00,0x1e,0x33,0x3f,0x03,0x03,0x1e,0x00,0x00,}, +{0x00,0x00,0x1c,0x36,0x00,0x1e,0x33,0x3f,0x03,0x03,0x1e,0x00,0x00,}, +{0x00,0x00,0x36,0x36,0x00,0x1e,0x33,0x3f,0x03,0x03,0x1e,0x00,0x00,}, +{0x00,0x00,0x06,0x0c,0x00,0x0e,0x0c,0x0c,0x0c,0x0c,0x1e,0x00,0x00,}, +{0x00,0x00,0x18,0x0c,0x00,0x0e,0x0c,0x0c,0x0c,0x0c,0x1e,0x00,0x00,}, +{0x00,0x00,0x0e,0x1b,0x00,0x0e,0x0c,0x0c,0x0c,0x0c,0x1e,0x00,0x00,}, +{0x00,0x00,0x1b,0x1b,0x00,0x0e,0x0c,0x0c,0x0c,0x0c,0x1e,0x00,0x00,}, +{0x00,0x1b,0x0e,0x0f,0x19,0x1e,0x33,0x33,0x33,0x33,0x1e,0x00,0x00,}, +{0x00,0x00,0x2c,0x1a,0x00,0x1b,0x37,0x33,0x33,0x33,0x33,0x00,0x00,}, +{0x00,0x00,0x06,0x0c,0x00,0x1e,0x33,0x33,0x33,0x33,0x1e,0x00,0x00,}, +{0x00,0x00,0x18,0x0c,0x00,0x1e,0x33,0x33,0x33,0x33,0x1e,0x00,0x00,}, +{0x00,0x00,0x1c,0x36,0x00,0x1e,0x33,0x33,0x33,0x33,0x1e,0x00,0x00,}, +{0x00,0x00,0x2c,0x1a,0x00,0x1e,0x33,0x33,0x33,0x33,0x1e,0x00,0x00,}, +{0x00,0x00,0x33,0x33,0x00,0x1e,0x33,0x33,0x33,0x33,0x1e,0x00,0x00,}, +{0x00,0x00,0x00,0x0c,0x0c,0x00,0x3f,0x00,0x0c,0x0c,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x20,0x1e,0x33,0x3b,0x33,0x37,0x33,0x1e,0x01,0x00,}, +{0x00,0x00,0x06,0x0c,0x00,0x33,0x33,0x33,0x33,0x3b,0x36,0x00,0x00,}, +{0x00,0x00,0x18,0x0c,0x00,0x33,0x33,0x33,0x33,0x3b,0x36,0x00,0x00,}, +{0x00,0x00,0x1c,0x36,0x00,0x33,0x33,0x33,0x33,0x3b,0x36,0x00,0x00,}, +{0x00,0x00,0x33,0x33,0x00,0x33,0x33,0x33,0x33,0x3b,0x36,0x00,0x00,}, +{0x00,0x00,0x18,0x0c,0x00,0x33,0x33,0x33,0x3b,0x36,0x30,0x33,0x1e,}, +{0x00,0x00,0x00,0x03,0x03,0x1b,0x37,0x33,0x37,0x1b,0x03,0x03,0x03,}, +{0x00,0x00,0x33,0x33,0x00,0x33,0x33,0x33,0x3b,0x36,0x30,0x33,0x1e,}, +}; diff --git a/ui/fonts/fixed6x9.bdf b/ui/fonts/fixed6x9.bdf new file mode 100644 index 0000000..8616baf --- /dev/null +++ b/ui/fonts/fixed6x9.bdf @@ -0,0 +1,4129 @@ +STARTFONT 2.1 +COMMENT Font grabbed from the X server. +FONT -Misc-Fixed-Medium-R-Normal--9-90-75-75-C-60-ISO8859-9 +SIZE 9 75 75 +FONTBOUNDINGBOX 6 9 0 -2 +STARTPROPERTIES 24 +FONTNAME_REGISTRY "" +FOUNDRY "Misc" +FAMILY_NAME "Fixed" +WEIGHT_NAME "Medium" +SLANT "R" +SETWIDTH_NAME "Normal" +ADD_STYLE_NAME "" +PIXEL_SIZE 9 +POINT_SIZE 90 +RESOLUTION_X 75 +RESOLUTION_Y 75 +SPACING "C" +AVERAGE_WIDTH 60 +CHARSET_REGISTRY "ISO8859" +CHARSET_ENCODING "9" +COPYRIGHT "Public domain font. Share and enjoy." +CAP_HEIGHT 6 +X_HEIGHT 4 +WEIGHT 10 +RESOLUTION 103 +QUAD_WIDTH 6 +FONT_ASCENT 7 +FONT_DESCENT 2 +_GBDFED_INFO "Edited with gbdfed 1.6." +ENDPROPERTIES +CHARS 256 +STARTCHAR char0 +ENCODING 0 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +28 +40 +08 +40 +08 +50 +00 +00 +ENDCHAR +STARTCHAR char1 +ENCODING 1 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +30 +78 +FC +78 +30 +00 +00 +ENDCHAR +STARTCHAR char2 +ENCODING 2 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +54 +A8 +54 +A8 +54 +A8 +54 +A8 +54 +ENDCHAR +STARTCHAR char3 +ENCODING 3 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +A0 +E0 +A0 +00 +38 +10 +10 +00 +ENDCHAR +STARTCHAR char4 +ENCODING 4 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +E0 +80 +C0 +80 +38 +20 +30 +20 +ENDCHAR +STARTCHAR char5 +ENCODING 5 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +60 +80 +60 +00 +30 +28 +30 +28 +ENDCHAR +STARTCHAR char6 +ENCODING 6 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +80 +80 +80 +C0 +38 +20 +30 +20 +ENDCHAR +STARTCHAR char7 +ENCODING 7 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +30 +48 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char8 +ENCODING 8 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +20 +20 +F8 +20 +20 +00 +F8 +00 +ENDCHAR +STARTCHAR char9 +ENCODING 9 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +90 +D0 +B0 +90 +20 +20 +20 +38 +ENDCHAR +STARTCHAR char10 +ENCODING 10 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +A0 +A0 +40 +40 +38 +10 +10 +10 +ENDCHAR +STARTCHAR char11 +ENCODING 11 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +10 +10 +10 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char12 +ENCODING 12 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +F0 +10 +10 +10 +10 +ENDCHAR +STARTCHAR char13 +ENCODING 13 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +1C +10 +10 +10 +10 +ENDCHAR +STARTCHAR char14 +ENCODING 14 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +10 +10 +10 +1C +00 +00 +00 +00 +ENDCHAR +STARTCHAR char15 +ENCODING 15 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +10 +10 +10 +FC +10 +10 +10 +10 +ENDCHAR +STARTCHAR char16 +ENCODING 16 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +FC +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char17 +ENCODING 17 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +FC +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char18 +ENCODING 18 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR char19 +ENCODING 19 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +FC +00 +00 +ENDCHAR +STARTCHAR char20 +ENCODING 20 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +FC +ENDCHAR +STARTCHAR char21 +ENCODING 21 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +10 +10 +10 +1C +10 +10 +10 +10 +ENDCHAR +STARTCHAR char22 +ENCODING 22 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +10 +10 +10 +F0 +10 +10 +10 +10 +ENDCHAR +STARTCHAR char23 +ENCODING 23 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +10 +10 +10 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR char24 +ENCODING 24 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +FC +10 +10 +10 +10 +ENDCHAR +STARTCHAR char25 +ENCODING 25 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +10 +10 +10 +10 +10 +10 +10 +10 +ENDCHAR +STARTCHAR char26 +ENCODING 26 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +18 +60 +80 +60 +98 +60 +18 +00 +ENDCHAR +STARTCHAR char27 +ENCODING 27 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +C0 +30 +08 +30 +C8 +30 +C0 +00 +ENDCHAR +STARTCHAR char28 +ENCODING 28 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +F8 +50 +50 +50 +00 +00 +ENDCHAR +STARTCHAR char29 +ENCODING 29 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +10 +F8 +20 +F8 +40 +00 +00 +ENDCHAR +STARTCHAR char30 +ENCODING 30 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +30 +48 +40 +F0 +40 +40 +F8 +00 +ENDCHAR +STARTCHAR char31 +ENCODING 31 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char32 +ENCODING 32 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char33 +ENCODING 33 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +20 +20 +20 +20 +00 +20 +00 +00 +ENDCHAR +STARTCHAR char34 +ENCODING 34 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +50 +50 +50 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char35 +ENCODING 35 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +50 +50 +F8 +50 +F8 +50 +50 +00 +ENDCHAR +STARTCHAR char36 +ENCODING 36 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +20 +70 +A8 +A0 +70 +28 +A8 +70 +20 +ENDCHAR +STARTCHAR char37 +ENCODING 37 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +40 +A8 +48 +10 +20 +48 +54 +08 +00 +ENDCHAR +STARTCHAR char38 +ENCODING 38 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +60 +90 +90 +60 +98 +90 +68 +00 +ENDCHAR +STARTCHAR char39 +ENCODING 39 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +20 +20 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char40 +ENCODING 40 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +10 +20 +20 +20 +20 +20 +10 +00 +ENDCHAR +STARTCHAR char41 +ENCODING 41 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +20 +10 +10 +10 +10 +10 +20 +00 +ENDCHAR +STARTCHAR char42 +ENCODING 42 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +88 +50 +F8 +50 +88 +00 +00 +ENDCHAR +STARTCHAR char43 +ENCODING 43 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +20 +20 +F8 +20 +20 +00 +00 +ENDCHAR +STARTCHAR char44 +ENCODING 44 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +30 +10 +10 +20 +ENDCHAR +STARTCHAR char45 +ENCODING 45 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +F8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char46 +ENCODING 46 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +30 +30 +00 +00 +ENDCHAR +STARTCHAR char47 +ENCODING 47 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +08 +08 +10 +20 +40 +40 +00 +00 +ENDCHAR +STARTCHAR char48 +ENCODING 48 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +30 +48 +48 +48 +48 +30 +00 +00 +ENDCHAR +STARTCHAR char49 +ENCODING 49 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +20 +60 +20 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR char50 +ENCODING 50 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +30 +48 +08 +10 +20 +78 +00 +00 +ENDCHAR +STARTCHAR char51 +ENCODING 51 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +78 +10 +30 +08 +08 +70 +00 +00 +ENDCHAR +STARTCHAR char52 +ENCODING 52 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +10 +30 +50 +90 +F8 +10 +00 +00 +ENDCHAR +STARTCHAR char53 +ENCODING 53 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +78 +40 +70 +08 +08 +70 +00 +00 +ENDCHAR +STARTCHAR char54 +ENCODING 54 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +30 +40 +70 +48 +48 +30 +00 +00 +ENDCHAR +STARTCHAR char55 +ENCODING 55 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +78 +08 +08 +10 +20 +20 +00 +00 +ENDCHAR +STARTCHAR char56 +ENCODING 56 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +30 +48 +30 +48 +48 +30 +00 +00 +ENDCHAR +STARTCHAR char57 +ENCODING 57 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +30 +48 +48 +38 +08 +30 +00 +00 +ENDCHAR +STARTCHAR char58 +ENCODING 58 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +30 +30 +00 +30 +30 +00 +00 +ENDCHAR +STARTCHAR char59 +ENCODING 59 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +30 +30 +00 +30 +10 +10 +20 +ENDCHAR +STARTCHAR char60 +ENCODING 60 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +18 +60 +80 +60 +18 +00 +00 +ENDCHAR +STARTCHAR char61 +ENCODING 61 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +F8 +00 +F8 +00 +00 +00 +ENDCHAR +STARTCHAR char62 +ENCODING 62 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +C0 +30 +08 +30 +C0 +00 +00 +ENDCHAR +STARTCHAR char63 +ENCODING 63 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +30 +48 +08 +30 +20 +00 +20 +00 +00 +ENDCHAR +STARTCHAR char64 +ENCODING 64 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +70 +90 +A8 +B0 +80 +70 +00 +00 +ENDCHAR +STARTCHAR char65 +ENCODING 65 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +20 +50 +88 +F8 +88 +88 +00 +00 +ENDCHAR +STARTCHAR char66 +ENCODING 66 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +F0 +88 +F0 +88 +88 +F0 +00 +00 +ENDCHAR +STARTCHAR char67 +ENCODING 67 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +30 +48 +40 +40 +48 +30 +00 +00 +ENDCHAR +STARTCHAR char68 +ENCODING 68 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +70 +48 +48 +48 +48 +70 +00 +00 +ENDCHAR +STARTCHAR char69 +ENCODING 69 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +78 +40 +70 +40 +40 +78 +00 +00 +ENDCHAR +STARTCHAR char70 +ENCODING 70 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +78 +40 +70 +40 +40 +40 +00 +00 +ENDCHAR +STARTCHAR char71 +ENCODING 71 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +30 +48 +40 +58 +48 +30 +00 +00 +ENDCHAR +STARTCHAR char72 +ENCODING 72 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +48 +48 +78 +48 +48 +48 +00 +00 +ENDCHAR +STARTCHAR char73 +ENCODING 73 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +70 +20 +20 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR char74 +ENCODING 74 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +38 +10 +10 +10 +90 +60 +00 +00 +ENDCHAR +STARTCHAR char75 +ENCODING 75 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +48 +50 +60 +50 +48 +48 +00 +00 +ENDCHAR +STARTCHAR char76 +ENCODING 76 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +40 +40 +40 +40 +40 +78 +00 +00 +ENDCHAR +STARTCHAR char77 +ENCODING 77 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +88 +D8 +A8 +A8 +88 +88 +00 +00 +ENDCHAR +STARTCHAR char78 +ENCODING 78 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +48 +68 +58 +48 +48 +48 +00 +00 +ENDCHAR +STARTCHAR char79 +ENCODING 79 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +70 +88 +88 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR char80 +ENCODING 80 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +70 +48 +48 +70 +40 +40 +00 +00 +ENDCHAR +STARTCHAR char81 +ENCODING 81 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +30 +48 +48 +68 +58 +30 +08 +00 +ENDCHAR +STARTCHAR char82 +ENCODING 82 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +70 +48 +48 +70 +48 +48 +00 +00 +ENDCHAR +STARTCHAR char83 +ENCODING 83 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +30 +48 +20 +10 +48 +30 +00 +00 +ENDCHAR +STARTCHAR char84 +ENCODING 84 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +F8 +20 +20 +20 +20 +20 +00 +00 +ENDCHAR +STARTCHAR char85 +ENCODING 85 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +48 +48 +48 +48 +48 +30 +00 +00 +ENDCHAR +STARTCHAR char86 +ENCODING 86 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +48 +48 +48 +78 +30 +30 +00 +00 +ENDCHAR +STARTCHAR char87 +ENCODING 87 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +88 +88 +A8 +A8 +D8 +88 +00 +00 +ENDCHAR +STARTCHAR char88 +ENCODING 88 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +88 +50 +20 +20 +50 +88 +00 +00 +ENDCHAR +STARTCHAR char89 +ENCODING 89 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +88 +88 +50 +20 +20 +20 +00 +00 +ENDCHAR +STARTCHAR char90 +ENCODING 90 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +78 +08 +10 +20 +40 +78 +00 +00 +ENDCHAR +STARTCHAR char91 +ENCODING 91 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +70 +40 +40 +40 +40 +70 +00 +00 +ENDCHAR +STARTCHAR char92 +ENCODING 92 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +40 +40 +20 +10 +08 +08 +00 +00 +ENDCHAR +STARTCHAR char93 +ENCODING 93 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +70 +10 +10 +10 +10 +70 +00 +00 +ENDCHAR +STARTCHAR char94 +ENCODING 94 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +20 +50 +88 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char95 +ENCODING 95 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +F8 +ENDCHAR +STARTCHAR char96 +ENCODING 96 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +20 +10 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char97 +ENCODING 97 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +38 +48 +48 +38 +00 +00 +ENDCHAR +STARTCHAR char98 +ENCODING 98 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +40 +40 +70 +48 +48 +70 +00 +00 +ENDCHAR +STARTCHAR char99 +ENCODING 99 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +38 +40 +40 +38 +00 +00 +ENDCHAR +STARTCHAR char100 +ENCODING 100 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +08 +08 +38 +48 +48 +38 +00 +00 +ENDCHAR +STARTCHAR char101 +ENCODING 101 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +30 +58 +60 +38 +00 +00 +ENDCHAR +STARTCHAR char102 +ENCODING 102 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +10 +28 +20 +70 +20 +20 +00 +00 +ENDCHAR +STARTCHAR char103 +ENCODING 103 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +30 +48 +48 +38 +08 +30 +ENDCHAR +STARTCHAR char104 +ENCODING 104 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +40 +40 +70 +48 +48 +48 +00 +00 +ENDCHAR +STARTCHAR char105 +ENCODING 105 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +20 +00 +60 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR char106 +ENCODING 106 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +10 +00 +30 +10 +10 +10 +50 +20 +ENDCHAR +STARTCHAR char107 +ENCODING 107 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +40 +40 +50 +60 +50 +48 +00 +00 +ENDCHAR +STARTCHAR char108 +ENCODING 108 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +60 +20 +20 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR char109 +ENCODING 109 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +D0 +A8 +A8 +88 +00 +00 +ENDCHAR +STARTCHAR char110 +ENCODING 110 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +70 +48 +48 +48 +00 +00 +ENDCHAR +STARTCHAR char111 +ENCODING 111 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +30 +48 +48 +30 +00 +00 +ENDCHAR +STARTCHAR char112 +ENCODING 112 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +70 +48 +48 +70 +40 +40 +ENDCHAR +STARTCHAR char113 +ENCODING 113 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +38 +48 +48 +38 +08 +08 +ENDCHAR +STARTCHAR char114 +ENCODING 114 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +50 +68 +40 +40 +00 +00 +ENDCHAR +STARTCHAR char115 +ENCODING 115 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +38 +60 +18 +70 +00 +00 +ENDCHAR +STARTCHAR char116 +ENCODING 116 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +20 +20 +70 +20 +28 +10 +00 +00 +ENDCHAR +STARTCHAR char117 +ENCODING 117 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +48 +48 +48 +38 +00 +00 +ENDCHAR +STARTCHAR char118 +ENCODING 118 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +48 +48 +30 +30 +00 +00 +ENDCHAR +STARTCHAR char119 +ENCODING 119 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +88 +A8 +A8 +50 +00 +00 +ENDCHAR +STARTCHAR char120 +ENCODING 120 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +48 +30 +30 +48 +00 +00 +ENDCHAR +STARTCHAR char121 +ENCODING 121 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +48 +48 +48 +38 +48 +30 +ENDCHAR +STARTCHAR char122 +ENCODING 122 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +78 +10 +20 +78 +00 +00 +ENDCHAR +STARTCHAR char123 +ENCODING 123 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +20 +20 +40 +20 +20 +10 +00 +00 +ENDCHAR +STARTCHAR char124 +ENCODING 124 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +20 +20 +20 +20 +20 +20 +20 +00 +ENDCHAR +STARTCHAR char125 +ENCODING 125 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +40 +20 +20 +10 +20 +20 +40 +00 +00 +ENDCHAR +STARTCHAR char126 +ENCODING 126 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +28 +50 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 127 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 128 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 129 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 130 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 131 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 132 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 133 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 134 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 135 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 136 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 137 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 138 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 139 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 140 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 141 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 142 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 143 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 144 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 145 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 146 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 147 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 148 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 149 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 150 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 151 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 152 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 153 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 154 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 155 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 156 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 157 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 158 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 159 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char160 +ENCODING 160 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char161 +ENCODING 161 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +20 +00 +20 +20 +20 +20 +00 +00 +ENDCHAR +STARTCHAR char162 +ENCODING 162 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +10 +38 +50 +50 +38 +10 +00 +ENDCHAR +STARTCHAR char163 +ENCODING 163 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +30 +48 +40 +F0 +40 +40 +F8 +00 +ENDCHAR +STARTCHAR char164 +ENCODING 164 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +A8 +50 +88 +50 +A8 +00 +00 +ENDCHAR +STARTCHAR char165 +ENCODING 165 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +88 +50 +F8 +20 +F8 +20 +00 +00 +ENDCHAR +STARTCHAR char166 +ENCODING 166 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +20 +20 +20 +00 +20 +20 +20 +00 +ENDCHAR +STARTCHAR char167 +ENCODING 167 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +38 +40 +30 +48 +30 +08 +70 +00 +ENDCHAR +STARTCHAR char168 +ENCODING 168 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +50 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char169 +ENCODING 169 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +78 +84 +94 +A4 +94 +84 +78 +00 +00 +ENDCHAR +STARTCHAR char170 +ENCODING 170 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +30 +50 +30 +00 +70 +00 +00 +00 +ENDCHAR +STARTCHAR char171 +ENCODING 171 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +28 +50 +A0 +50 +28 +00 +00 +ENDCHAR +STARTCHAR char172 +ENCODING 172 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +78 +08 +08 +00 +00 +ENDCHAR +STARTCHAR char173 +ENCODING 173 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char174 +ENCODING 174 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +78 +84 +B4 +A4 +A4 +84 +78 +00 +00 +ENDCHAR +STARTCHAR char175 +ENCODING 175 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +78 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char176 +ENCODING 176 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +30 +48 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char177 +ENCODING 177 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +20 +20 +F8 +20 +20 +00 +F8 +00 +ENDCHAR +STARTCHAR char178 +ENCODING 178 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +20 +50 +10 +20 +70 +00 +00 +00 +ENDCHAR +STARTCHAR char179 +ENCODING 179 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +60 +10 +20 +10 +60 +00 +00 +00 +ENDCHAR +STARTCHAR char180 +ENCODING 180 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +10 +20 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char181 +ENCODING 181 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +48 +48 +58 +68 +40 +00 +ENDCHAR +STARTCHAR char182 +ENCODING 182 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +78 +E8 +E8 +68 +28 +28 +00 +00 +ENDCHAR +STARTCHAR char183 +ENCODING 183 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char184 +ENCODING 184 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +10 +20 +ENDCHAR +STARTCHAR char185 +ENCODING 185 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +20 +60 +20 +20 +70 +00 +00 +00 +ENDCHAR +STARTCHAR char186 +ENCODING 186 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +20 +50 +20 +00 +70 +00 +00 +00 +ENDCHAR +STARTCHAR char187 +ENCODING 187 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +A0 +50 +28 +50 +A0 +00 +00 +ENDCHAR +STARTCHAR char188 +ENCODING 188 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +40 +C0 +40 +50 +70 +30 +78 +10 +00 +ENDCHAR +STARTCHAR char189 +ENCODING 189 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +40 +C0 +40 +50 +68 +08 +10 +38 +00 +ENDCHAR +STARTCHAR char190 +ENCODING 190 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +C0 +20 +40 +30 +F0 +30 +78 +10 +00 +ENDCHAR +STARTCHAR char191 +ENCODING 191 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +00 +10 +30 +40 +48 +30 +00 +00 +ENDCHAR +STARTCHAR char192 +ENCODING 192 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +40 +20 +20 +50 +70 +88 +88 +00 +00 +ENDCHAR +STARTCHAR char193 +ENCODING 193 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +20 +20 +50 +70 +88 +88 +00 +00 +ENDCHAR +STARTCHAR char194 +ENCODING 194 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +20 +50 +20 +50 +70 +88 +88 +00 +00 +ENDCHAR +STARTCHAR char195 +ENCODING 195 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +28 +50 +20 +50 +70 +88 +88 +00 +00 +ENDCHAR +STARTCHAR char196 +ENCODING 196 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +50 +00 +20 +50 +70 +88 +88 +00 +00 +ENDCHAR +STARTCHAR char197 +ENCODING 197 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +20 +50 +20 +50 +70 +88 +88 +00 +00 +ENDCHAR +STARTCHAR char198 +ENCODING 198 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +78 +A0 +F0 +A0 +A0 +B8 +00 +00 +ENDCHAR +STARTCHAR char199 +ENCODING 199 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +30 +48 +40 +40 +48 +30 +10 +20 +ENDCHAR +STARTCHAR char200 +ENCODING 200 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +20 +10 +78 +40 +70 +40 +78 +00 +00 +ENDCHAR +STARTCHAR char201 +ENCODING 201 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +20 +78 +40 +70 +40 +78 +00 +00 +ENDCHAR +STARTCHAR char202 +ENCODING 202 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +28 +78 +40 +70 +40 +78 +00 +00 +ENDCHAR +STARTCHAR char203 +ENCODING 203 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +28 +00 +78 +40 +70 +40 +78 +00 +00 +ENDCHAR +STARTCHAR char204 +ENCODING 204 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +40 +20 +70 +20 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR char205 +ENCODING 205 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +20 +70 +20 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR char206 +ENCODING 206 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +20 +50 +70 +20 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR char207 +ENCODING 207 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +50 +00 +70 +20 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR char208 +ENCODING 208 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +48 +30 +38 +40 +58 +48 +30 +00 +00 +ENDCHAR +STARTCHAR char209 +ENCODING 209 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +28 +50 +48 +68 +58 +48 +48 +00 +00 +ENDCHAR +STARTCHAR char210 +ENCODING 210 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +20 +10 +30 +48 +48 +48 +30 +00 +00 +ENDCHAR +STARTCHAR char211 +ENCODING 211 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +20 +30 +48 +48 +48 +30 +00 +00 +ENDCHAR +STARTCHAR char212 +ENCODING 212 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +28 +30 +48 +48 +48 +30 +00 +00 +ENDCHAR +STARTCHAR char213 +ENCODING 213 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +28 +50 +30 +48 +48 +48 +30 +00 +00 +ENDCHAR +STARTCHAR char214 +ENCODING 214 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +28 +00 +30 +48 +48 +48 +30 +00 +00 +ENDCHAR +STARTCHAR char215 +ENCODING 215 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +88 +50 +20 +50 +88 +00 +00 +ENDCHAR +STARTCHAR char216 +ENCODING 216 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +08 +38 +58 +58 +68 +68 +70 +40 +00 +ENDCHAR +STARTCHAR char217 +ENCODING 217 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +20 +10 +48 +48 +48 +48 +30 +00 +00 +ENDCHAR +STARTCHAR char218 +ENCODING 218 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +20 +48 +48 +48 +48 +30 +00 +00 +ENDCHAR +STARTCHAR char219 +ENCODING 219 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +28 +48 +48 +48 +48 +30 +00 +00 +ENDCHAR +STARTCHAR char220 +ENCODING 220 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +28 +00 +48 +48 +48 +48 +30 +00 +00 +ENDCHAR +STARTCHAR char221 +ENCODING 221 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +20 +00 +70 +20 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR char222 +ENCODING 222 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +30 +48 +20 +10 +48 +30 +10 +20 +ENDCHAR +STARTCHAR char223 +ENCODING 223 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +30 +48 +50 +50 +48 +50 +00 +00 +ENDCHAR +STARTCHAR char224 +ENCODING 224 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +20 +10 +00 +38 +48 +48 +38 +00 +00 +ENDCHAR +STARTCHAR char225 +ENCODING 225 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +20 +00 +38 +48 +48 +38 +00 +00 +ENDCHAR +STARTCHAR char226 +ENCODING 226 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +28 +00 +38 +48 +48 +38 +00 +00 +ENDCHAR +STARTCHAR char227 +ENCODING 227 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +28 +50 +00 +38 +48 +48 +38 +00 +00 +ENDCHAR +STARTCHAR char228 +ENCODING 228 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +28 +00 +38 +48 +48 +38 +00 +00 +ENDCHAR +STARTCHAR char229 +ENCODING 229 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +28 +10 +38 +48 +48 +38 +00 +00 +ENDCHAR +STARTCHAR char230 +ENCODING 230 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +70 +A8 +B0 +78 +00 +00 +ENDCHAR +STARTCHAR char231 +ENCODING 231 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +38 +40 +40 +38 +10 +20 +ENDCHAR +STARTCHAR char232 +ENCODING 232 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +20 +10 +00 +30 +58 +60 +38 +00 +00 +ENDCHAR +STARTCHAR char233 +ENCODING 233 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +20 +00 +30 +58 +60 +38 +00 +00 +ENDCHAR +STARTCHAR char234 +ENCODING 234 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +28 +00 +30 +58 +60 +38 +00 +00 +ENDCHAR +STARTCHAR char235 +ENCODING 235 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +28 +00 +30 +58 +60 +38 +00 +00 +ENDCHAR +STARTCHAR char236 +ENCODING 236 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +40 +20 +00 +60 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR char237 +ENCODING 237 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +20 +00 +60 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR char238 +ENCODING 238 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +20 +50 +00 +60 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR char239 +ENCODING 239 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +50 +00 +60 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR char240 +ENCODING 240 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +48 +30 +00 +30 +48 +48 +38 +08 +30 +ENDCHAR +STARTCHAR char241 +ENCODING 241 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +28 +50 +00 +70 +48 +48 +48 +00 +00 +ENDCHAR +STARTCHAR char242 +ENCODING 242 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +20 +10 +00 +30 +48 +48 +30 +00 +00 +ENDCHAR +STARTCHAR char243 +ENCODING 243 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +20 +00 +30 +48 +48 +30 +00 +00 +ENDCHAR +STARTCHAR char244 +ENCODING 244 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +28 +00 +30 +48 +48 +30 +00 +00 +ENDCHAR +STARTCHAR char245 +ENCODING 245 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +28 +50 +00 +30 +48 +48 +30 +00 +00 +ENDCHAR +STARTCHAR char246 +ENCODING 246 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +28 +00 +30 +48 +48 +30 +00 +00 +ENDCHAR +STARTCHAR char247 +ENCODING 247 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +20 +00 +F8 +00 +20 +00 +00 +ENDCHAR +STARTCHAR char248 +ENCODING 248 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +38 +58 +68 +70 +00 +00 +ENDCHAR +STARTCHAR char249 +ENCODING 249 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +20 +10 +00 +48 +48 +48 +38 +00 +00 +ENDCHAR +STARTCHAR char250 +ENCODING 250 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +20 +00 +48 +48 +48 +38 +00 +00 +ENDCHAR +STARTCHAR char251 +ENCODING 251 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +10 +28 +00 +48 +48 +48 +38 +00 +00 +ENDCHAR +STARTCHAR char252 +ENCODING 252 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +28 +00 +48 +48 +48 +38 +00 +00 +ENDCHAR +STARTCHAR char253 +ENCODING 253 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +60 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR char254 +ENCODING 254 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +00 +00 +38 +60 +18 +70 +10 +20 +ENDCHAR +STARTCHAR char255 +ENCODING 255 +SWIDTH 640 0 +DWIDTH 6 0 +BBX 6 9 0 -2 +BITMAP +00 +28 +00 +48 +48 +48 +38 +48 +30 +ENDCHAR +ENDFONT diff --git a/ui/fonts/fixed6x9.h b/ui/fonts/fixed6x9.h new file mode 100644 index 0000000..e959c6c --- /dev/null +++ b/ui/fonts/fixed6x9.h @@ -0,0 +1,261 @@ +/* -Misc-Fixed-Medium-R-Normal--9-90-75-75-C-60-ISO8859-9 */ +#define FONT_WIDTH_Fixed_6x9 6 +#define FONT_HEIGHT_Fixed_6x9 9 +const uint8_t FONT_DATA_Fixed_6x9[256][9] = { +{0x00,0x14,0x02,0x10,0x02,0x10,0x0a,0x00,0x00,}, +{0x00,0x00,0x0c,0x1e,0x3f,0x1e,0x0c,0x00,0x00,}, +{0x2a,0x15,0x2a,0x15,0x2a,0x15,0x2a,0x15,0x2a,}, +{0x00,0x05,0x07,0x05,0x00,0x1c,0x08,0x08,0x00,}, +{0x00,0x07,0x01,0x03,0x01,0x1c,0x04,0x0c,0x04,}, +{0x00,0x06,0x01,0x06,0x00,0x0c,0x14,0x0c,0x14,}, +{0x00,0x01,0x01,0x01,0x03,0x1c,0x04,0x0c,0x04,}, +{0x00,0x00,0x0c,0x12,0x0c,0x00,0x00,0x00,0x00,}, +{0x00,0x04,0x04,0x1f,0x04,0x04,0x00,0x1f,0x00,}, +{0x00,0x09,0x0b,0x0d,0x09,0x04,0x04,0x04,0x1c,}, +{0x00,0x05,0x05,0x02,0x02,0x1c,0x08,0x08,0x08,}, +{0x08,0x08,0x08,0x08,0x0f,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x0f,0x08,0x08,0x08,0x08,}, +{0x00,0x00,0x00,0x00,0x38,0x08,0x08,0x08,0x08,}, +{0x08,0x08,0x08,0x08,0x38,0x00,0x00,0x00,0x00,}, +{0x08,0x08,0x08,0x08,0x3f,0x08,0x08,0x08,0x08,}, +{0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x3f,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,}, +{0x08,0x08,0x08,0x08,0x38,0x08,0x08,0x08,0x08,}, +{0x08,0x08,0x08,0x08,0x0f,0x08,0x08,0x08,0x08,}, +{0x08,0x08,0x08,0x08,0x3f,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x3f,0x08,0x08,0x08,0x08,}, +{0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,}, +{0x00,0x18,0x06,0x01,0x06,0x19,0x06,0x18,0x00,}, +{0x00,0x03,0x0c,0x10,0x0c,0x13,0x0c,0x03,0x00,}, +{0x00,0x00,0x00,0x1f,0x0a,0x0a,0x0a,0x00,0x00,}, +{0x00,0x00,0x08,0x1f,0x04,0x1f,0x02,0x00,0x00,}, +{0x00,0x0c,0x12,0x02,0x0f,0x02,0x02,0x1f,0x00,}, +{0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x04,0x04,0x04,0x04,0x00,0x04,0x00,0x00,}, +{0x00,0x0a,0x0a,0x0a,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x0a,0x0a,0x1f,0x0a,0x1f,0x0a,0x0a,0x00,}, +{0x04,0x0e,0x15,0x05,0x0e,0x14,0x15,0x0e,0x04,}, +{0x02,0x15,0x12,0x08,0x04,0x12,0x2a,0x10,0x00,}, +{0x00,0x06,0x09,0x09,0x06,0x19,0x09,0x16,0x00,}, +{0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x08,0x04,0x04,0x04,0x04,0x04,0x08,0x00,}, +{0x00,0x04,0x08,0x08,0x08,0x08,0x08,0x04,0x00,}, +{0x00,0x00,0x11,0x0a,0x1f,0x0a,0x11,0x00,0x00,}, +{0x00,0x00,0x04,0x04,0x1f,0x04,0x04,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x0c,0x08,0x08,0x04,}, +{0x00,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x0c,0x0c,0x00,0x00,}, +{0x00,0x10,0x10,0x08,0x04,0x02,0x02,0x00,0x00,}, +{0x00,0x0c,0x12,0x12,0x12,0x12,0x0c,0x00,0x00,}, +{0x00,0x04,0x06,0x04,0x04,0x04,0x0e,0x00,0x00,}, +{0x00,0x0c,0x12,0x10,0x08,0x04,0x1e,0x00,0x00,}, +{0x00,0x1e,0x08,0x0c,0x10,0x10,0x0e,0x00,0x00,}, +{0x00,0x08,0x0c,0x0a,0x09,0x1f,0x08,0x00,0x00,}, +{0x00,0x1e,0x02,0x0e,0x10,0x10,0x0e,0x00,0x00,}, +{0x00,0x0c,0x02,0x0e,0x12,0x12,0x0c,0x00,0x00,}, +{0x00,0x1e,0x10,0x10,0x08,0x04,0x04,0x00,0x00,}, +{0x00,0x0c,0x12,0x0c,0x12,0x12,0x0c,0x00,0x00,}, +{0x00,0x0c,0x12,0x12,0x1c,0x10,0x0c,0x00,0x00,}, +{0x00,0x00,0x0c,0x0c,0x00,0x0c,0x0c,0x00,0x00,}, +{0x00,0x00,0x0c,0x0c,0x00,0x0c,0x08,0x08,0x04,}, +{0x00,0x00,0x18,0x06,0x01,0x06,0x18,0x00,0x00,}, +{0x00,0x00,0x00,0x1f,0x00,0x1f,0x00,0x00,0x00,}, +{0x00,0x00,0x03,0x0c,0x10,0x0c,0x03,0x00,0x00,}, +{0x0c,0x12,0x10,0x0c,0x04,0x00,0x04,0x00,0x00,}, +{0x00,0x0e,0x09,0x15,0x0d,0x01,0x0e,0x00,0x00,}, +{0x00,0x04,0x0a,0x11,0x1f,0x11,0x11,0x00,0x00,}, +{0x00,0x0f,0x11,0x0f,0x11,0x11,0x0f,0x00,0x00,}, +{0x00,0x0c,0x12,0x02,0x02,0x12,0x0c,0x00,0x00,}, +{0x00,0x0e,0x12,0x12,0x12,0x12,0x0e,0x00,0x00,}, +{0x00,0x1e,0x02,0x0e,0x02,0x02,0x1e,0x00,0x00,}, +{0x00,0x1e,0x02,0x0e,0x02,0x02,0x02,0x00,0x00,}, +{0x00,0x0c,0x12,0x02,0x1a,0x12,0x0c,0x00,0x00,}, +{0x00,0x12,0x12,0x1e,0x12,0x12,0x12,0x00,0x00,}, +{0x00,0x0e,0x04,0x04,0x04,0x04,0x0e,0x00,0x00,}, +{0x00,0x1c,0x08,0x08,0x08,0x09,0x06,0x00,0x00,}, +{0x00,0x12,0x0a,0x06,0x0a,0x12,0x12,0x00,0x00,}, +{0x00,0x02,0x02,0x02,0x02,0x02,0x1e,0x00,0x00,}, +{0x00,0x11,0x1b,0x15,0x15,0x11,0x11,0x00,0x00,}, +{0x00,0x12,0x16,0x1a,0x12,0x12,0x12,0x00,0x00,}, +{0x00,0x0e,0x11,0x11,0x11,0x11,0x0e,0x00,0x00,}, +{0x00,0x0e,0x12,0x12,0x0e,0x02,0x02,0x00,0x00,}, +{0x00,0x0c,0x12,0x12,0x16,0x1a,0x0c,0x10,0x00,}, +{0x00,0x0e,0x12,0x12,0x0e,0x12,0x12,0x00,0x00,}, +{0x00,0x0c,0x12,0x04,0x08,0x12,0x0c,0x00,0x00,}, +{0x00,0x1f,0x04,0x04,0x04,0x04,0x04,0x00,0x00,}, +{0x00,0x12,0x12,0x12,0x12,0x12,0x0c,0x00,0x00,}, +{0x00,0x12,0x12,0x12,0x1e,0x0c,0x0c,0x00,0x00,}, +{0x00,0x11,0x11,0x15,0x15,0x1b,0x11,0x00,0x00,}, +{0x00,0x11,0x0a,0x04,0x04,0x0a,0x11,0x00,0x00,}, +{0x00,0x11,0x11,0x0a,0x04,0x04,0x04,0x00,0x00,}, +{0x00,0x1e,0x10,0x08,0x04,0x02,0x1e,0x00,0x00,}, +{0x00,0x0e,0x02,0x02,0x02,0x02,0x0e,0x00,0x00,}, +{0x00,0x02,0x02,0x04,0x08,0x10,0x10,0x00,0x00,}, +{0x00,0x0e,0x08,0x08,0x08,0x08,0x0e,0x00,0x00,}, +{0x00,0x04,0x0a,0x11,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,}, +{0x00,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x1c,0x12,0x12,0x1c,0x00,0x00,}, +{0x00,0x02,0x02,0x0e,0x12,0x12,0x0e,0x00,0x00,}, +{0x00,0x00,0x00,0x1c,0x02,0x02,0x1c,0x00,0x00,}, +{0x00,0x10,0x10,0x1c,0x12,0x12,0x1c,0x00,0x00,}, +{0x00,0x00,0x00,0x0c,0x1a,0x06,0x1c,0x00,0x00,}, +{0x00,0x08,0x14,0x04,0x0e,0x04,0x04,0x00,0x00,}, +{0x00,0x00,0x00,0x0c,0x12,0x12,0x1c,0x10,0x0c,}, +{0x00,0x02,0x02,0x0e,0x12,0x12,0x12,0x00,0x00,}, +{0x00,0x04,0x00,0x06,0x04,0x04,0x0e,0x00,0x00,}, +{0x00,0x08,0x00,0x0c,0x08,0x08,0x08,0x0a,0x04,}, +{0x00,0x02,0x02,0x0a,0x06,0x0a,0x12,0x00,0x00,}, +{0x00,0x06,0x04,0x04,0x04,0x04,0x0e,0x00,0x00,}, +{0x00,0x00,0x00,0x0b,0x15,0x15,0x11,0x00,0x00,}, +{0x00,0x00,0x00,0x0e,0x12,0x12,0x12,0x00,0x00,}, +{0x00,0x00,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,}, +{0x00,0x00,0x00,0x0e,0x12,0x12,0x0e,0x02,0x02,}, +{0x00,0x00,0x00,0x1c,0x12,0x12,0x1c,0x10,0x10,}, +{0x00,0x00,0x00,0x0a,0x16,0x02,0x02,0x00,0x00,}, +{0x00,0x00,0x00,0x1c,0x06,0x18,0x0e,0x00,0x00,}, +{0x00,0x04,0x04,0x0e,0x04,0x14,0x08,0x00,0x00,}, +{0x00,0x00,0x00,0x12,0x12,0x12,0x1c,0x00,0x00,}, +{0x00,0x00,0x00,0x12,0x12,0x0c,0x0c,0x00,0x00,}, +{0x00,0x00,0x00,0x11,0x15,0x15,0x0a,0x00,0x00,}, +{0x00,0x00,0x00,0x12,0x0c,0x0c,0x12,0x00,0x00,}, +{0x00,0x00,0x00,0x12,0x12,0x12,0x1c,0x12,0x0c,}, +{0x00,0x00,0x00,0x1e,0x08,0x04,0x1e,0x00,0x00,}, +{0x08,0x04,0x04,0x02,0x04,0x04,0x08,0x00,0x00,}, +{0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,}, +{0x02,0x04,0x04,0x08,0x04,0x04,0x02,0x00,0x00,}, +{0x00,0x00,0x14,0x0a,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x04,0x00,0x04,0x04,0x04,0x04,0x00,0x00,}, +{0x00,0x00,0x08,0x1c,0x0a,0x0a,0x1c,0x08,0x00,}, +{0x00,0x0c,0x12,0x02,0x0f,0x02,0x02,0x1f,0x00,}, +{0x00,0x00,0x15,0x0a,0x11,0x0a,0x15,0x00,0x00,}, +{0x00,0x11,0x0a,0x1f,0x04,0x1f,0x04,0x00,0x00,}, +{0x00,0x04,0x04,0x04,0x00,0x04,0x04,0x04,0x00,}, +{0x00,0x1c,0x02,0x0c,0x12,0x0c,0x10,0x0e,0x00,}, +{0x00,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x1e,0x21,0x29,0x25,0x29,0x21,0x1e,0x00,0x00,}, +{0x00,0x0c,0x0a,0x0c,0x00,0x0e,0x00,0x00,0x00,}, +{0x00,0x00,0x14,0x0a,0x05,0x0a,0x14,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x1e,0x10,0x10,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,}, +{0x1e,0x21,0x2d,0x25,0x25,0x21,0x1e,0x00,0x00,}, +{0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x0c,0x12,0x0c,0x00,0x00,0x00,0x00,}, +{0x00,0x04,0x04,0x1f,0x04,0x04,0x00,0x1f,0x00,}, +{0x00,0x04,0x0a,0x08,0x04,0x0e,0x00,0x00,0x00,}, +{0x00,0x06,0x08,0x04,0x08,0x06,0x00,0x00,0x00,}, +{0x00,0x08,0x04,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x12,0x12,0x1a,0x16,0x02,0x00,}, +{0x00,0x1e,0x17,0x17,0x16,0x14,0x14,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x04,}, +{0x00,0x04,0x06,0x04,0x04,0x0e,0x00,0x00,0x00,}, +{0x00,0x04,0x0a,0x04,0x00,0x0e,0x00,0x00,0x00,}, +{0x00,0x00,0x05,0x0a,0x14,0x0a,0x05,0x00,0x00,}, +{0x02,0x03,0x02,0x0a,0x0e,0x0c,0x1e,0x08,0x00,}, +{0x02,0x03,0x02,0x0a,0x16,0x10,0x08,0x1c,0x00,}, +{0x03,0x04,0x02,0x0c,0x0f,0x0c,0x1e,0x08,0x00,}, +{0x08,0x00,0x08,0x0c,0x02,0x12,0x0c,0x00,0x00,}, +{0x02,0x04,0x04,0x0a,0x0e,0x11,0x11,0x00,0x00,}, +{0x08,0x04,0x04,0x0a,0x0e,0x11,0x11,0x00,0x00,}, +{0x04,0x0a,0x04,0x0a,0x0e,0x11,0x11,0x00,0x00,}, +{0x14,0x0a,0x04,0x0a,0x0e,0x11,0x11,0x00,0x00,}, +{0x0a,0x00,0x04,0x0a,0x0e,0x11,0x11,0x00,0x00,}, +{0x04,0x0a,0x04,0x0a,0x0e,0x11,0x11,0x00,0x00,}, +{0x00,0x1e,0x05,0x0f,0x05,0x05,0x1d,0x00,0x00,}, +{0x00,0x0c,0x12,0x02,0x02,0x12,0x0c,0x08,0x04,}, +{0x04,0x08,0x1e,0x02,0x0e,0x02,0x1e,0x00,0x00,}, +{0x08,0x04,0x1e,0x02,0x0e,0x02,0x1e,0x00,0x00,}, +{0x08,0x14,0x1e,0x02,0x0e,0x02,0x1e,0x00,0x00,}, +{0x14,0x00,0x1e,0x02,0x0e,0x02,0x1e,0x00,0x00,}, +{0x02,0x04,0x0e,0x04,0x04,0x04,0x0e,0x00,0x00,}, +{0x08,0x04,0x0e,0x04,0x04,0x04,0x0e,0x00,0x00,}, +{0x04,0x0a,0x0e,0x04,0x04,0x04,0x0e,0x00,0x00,}, +{0x0a,0x00,0x0e,0x04,0x04,0x04,0x0e,0x00,0x00,}, +{0x12,0x0c,0x1c,0x02,0x1a,0x12,0x0c,0x00,0x00,}, +{0x14,0x0a,0x12,0x16,0x1a,0x12,0x12,0x00,0x00,}, +{0x04,0x08,0x0c,0x12,0x12,0x12,0x0c,0x00,0x00,}, +{0x08,0x04,0x0c,0x12,0x12,0x12,0x0c,0x00,0x00,}, +{0x08,0x14,0x0c,0x12,0x12,0x12,0x0c,0x00,0x00,}, +{0x14,0x0a,0x0c,0x12,0x12,0x12,0x0c,0x00,0x00,}, +{0x14,0x00,0x0c,0x12,0x12,0x12,0x0c,0x00,0x00,}, +{0x00,0x00,0x11,0x0a,0x04,0x0a,0x11,0x00,0x00,}, +{0x10,0x1c,0x1a,0x1a,0x16,0x16,0x0e,0x02,0x00,}, +{0x04,0x08,0x12,0x12,0x12,0x12,0x0c,0x00,0x00,}, +{0x08,0x04,0x12,0x12,0x12,0x12,0x0c,0x00,0x00,}, +{0x08,0x14,0x12,0x12,0x12,0x12,0x0c,0x00,0x00,}, +{0x14,0x00,0x12,0x12,0x12,0x12,0x0c,0x00,0x00,}, +{0x04,0x00,0x0e,0x04,0x04,0x04,0x0e,0x00,0x00,}, +{0x00,0x0c,0x12,0x04,0x08,0x12,0x0c,0x08,0x04,}, +{0x00,0x0c,0x12,0x0a,0x0a,0x12,0x0a,0x00,0x00,}, +{0x04,0x08,0x00,0x1c,0x12,0x12,0x1c,0x00,0x00,}, +{0x08,0x04,0x00,0x1c,0x12,0x12,0x1c,0x00,0x00,}, +{0x08,0x14,0x00,0x1c,0x12,0x12,0x1c,0x00,0x00,}, +{0x14,0x0a,0x00,0x1c,0x12,0x12,0x1c,0x00,0x00,}, +{0x00,0x14,0x00,0x1c,0x12,0x12,0x1c,0x00,0x00,}, +{0x08,0x14,0x08,0x1c,0x12,0x12,0x1c,0x00,0x00,}, +{0x00,0x00,0x00,0x0e,0x15,0x0d,0x1e,0x00,0x00,}, +{0x00,0x00,0x00,0x1c,0x02,0x02,0x1c,0x08,0x04,}, +{0x04,0x08,0x00,0x0c,0x1a,0x06,0x1c,0x00,0x00,}, +{0x08,0x04,0x00,0x0c,0x1a,0x06,0x1c,0x00,0x00,}, +{0x08,0x14,0x00,0x0c,0x1a,0x06,0x1c,0x00,0x00,}, +{0x00,0x14,0x00,0x0c,0x1a,0x06,0x1c,0x00,0x00,}, +{0x02,0x04,0x00,0x06,0x04,0x04,0x0e,0x00,0x00,}, +{0x08,0x04,0x00,0x06,0x04,0x04,0x0e,0x00,0x00,}, +{0x04,0x0a,0x00,0x06,0x04,0x04,0x0e,0x00,0x00,}, +{0x00,0x0a,0x00,0x06,0x04,0x04,0x0e,0x00,0x00,}, +{0x12,0x0c,0x00,0x0c,0x12,0x12,0x1c,0x10,0x0c,}, +{0x14,0x0a,0x00,0x0e,0x12,0x12,0x12,0x00,0x00,}, +{0x04,0x08,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,}, +{0x08,0x04,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,}, +{0x08,0x14,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,}, +{0x14,0x0a,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,}, +{0x00,0x14,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,}, +{0x00,0x00,0x04,0x00,0x1f,0x00,0x04,0x00,0x00,}, +{0x00,0x00,0x00,0x1c,0x1a,0x16,0x0e,0x00,0x00,}, +{0x04,0x08,0x00,0x12,0x12,0x12,0x1c,0x00,0x00,}, +{0x08,0x04,0x00,0x12,0x12,0x12,0x1c,0x00,0x00,}, +{0x08,0x14,0x00,0x12,0x12,0x12,0x1c,0x00,0x00,}, +{0x00,0x14,0x00,0x12,0x12,0x12,0x1c,0x00,0x00,}, +{0x00,0x00,0x00,0x06,0x04,0x04,0x0e,0x00,0x00,}, +{0x00,0x00,0x00,0x1c,0x06,0x18,0x0e,0x08,0x04,}, +{0x00,0x14,0x00,0x12,0x12,0x12,0x1c,0x12,0x0c,}, +}; diff --git a/ui/fonts/lcd13x21.bdf b/ui/fonts/lcd13x21.bdf new file mode 100644 index 0000000..f0240c8 --- /dev/null +++ b/ui/fonts/lcd13x21.bdf @@ -0,0 +1,316 @@ +STARTFONT 2.1 +COMMENT Nicole Watch font +FONT -gbdfed-LCD-Medium-R-Normal--16-120-96-96-M-100-FontSpecific-0 +SIZE 13 96 96 +FONTBOUNDINGBOX 13 21 0 0 +STARTPROPERTIES 6 +PIXEL_SIZE 16 +SPACING "M" +FAMILY_NAME "LCD" +_GBDFED_INFO "Edited with gbdfed 1.6." +FONT_ASCENT 16 +FONT_DESCENT 0 +ENDPROPERTIES +CHARS 12 +STARTCHAR char0 +ENCODING 0 +SWIDTH 750 0 +DWIDTH 13 0 +BBX 12 21 0 0 +BITMAP +7FE0 +BFD0 +DFB0 +E070 +E070 +E070 +E070 +E070 +C030 +8010 +0000 +8010 +C030 +E070 +E070 +E070 +E070 +E070 +DFB0 +BFD0 +7FE0 +ENDCHAR +STARTCHAR char0 +ENCODING 1 +SWIDTH 750 0 +DWIDTH 13 0 +BBX 3 19 9 1 +BITMAP +20 +60 +E0 +E0 +E0 +E0 +E0 +60 +20 +00 +20 +60 +E0 +E0 +E0 +E0 +E0 +60 +20 +ENDCHAR +STARTCHAR char0 +ENCODING 2 +SWIDTH 750 0 +DWIDTH 13 0 +BBX 12 21 0 0 +BITMAP +7FE0 +3FD0 +1FB0 +0070 +0070 +0070 +0070 +0070 +0030 +1F90 +3FC0 +9F80 +C000 +E000 +E000 +E000 +E000 +E000 +DF80 +BFC0 +7FE0 +ENDCHAR +STARTCHAR char0 +ENCODING 3 +SWIDTH 750 0 +DWIDTH 13 0 +BBX 11 21 1 0 +BITMAP +FFC0 +7FA0 +3F60 +00E0 +00E0 +00E0 +00E0 +00E0 +0060 +3F20 +7F80 +3F20 +0060 +00E0 +00E0 +00E0 +00E0 +00E0 +3F60 +7FA0 +FFC0 +ENDCHAR +STARTCHAR char0 +ENCODING 4 +SWIDTH 750 0 +DWIDTH 13 0 +BBX 12 19 0 1 +BITMAP +8010 +C030 +E070 +E070 +E070 +E070 +E070 +C030 +9F90 +3FC0 +1F90 +0030 +0070 +0070 +0070 +0070 +0070 +0030 +0010 +ENDCHAR +STARTCHAR char0 +ENCODING 5 +SWIDTH 750 0 +DWIDTH 13 0 +BBX 12 21 0 0 +BITMAP +7FE0 +BFC0 +DF80 +E000 +E000 +E000 +E000 +E000 +C000 +9F80 +3FC0 +1F90 +0030 +0070 +0070 +0070 +0070 +0070 +1FB0 +3FD0 +7FE0 +ENDCHAR +STARTCHAR char0 +ENCODING 6 +SWIDTH 750 0 +DWIDTH 13 0 +BBX 12 21 0 0 +BITMAP +7FE0 +BFC0 +DF80 +E000 +E000 +E000 +E000 +E000 +C000 +9F80 +3FC0 +9F90 +C030 +E070 +E070 +E070 +E070 +E070 +DFB0 +BFD0 +7FE0 +ENDCHAR +STARTCHAR char0 +ENCODING 7 +SWIDTH 750 0 +DWIDTH 13 0 +BBX 11 20 1 1 +BITMAP +FFC0 +7FA0 +3F60 +00E0 +00E0 +00E0 +00E0 +00E0 +0060 +0020 +0000 +0020 +0060 +00E0 +00E0 +00E0 +00E0 +00E0 +0060 +0020 +ENDCHAR +STARTCHAR char0 +ENCODING 8 +SWIDTH 750 0 +DWIDTH 13 0 +BBX 12 21 0 0 +BITMAP +7FE0 +BFD0 +DFB0 +E070 +E070 +E070 +E070 +E070 +C030 +9F90 +3FC0 +9F90 +C030 +E070 +E070 +E070 +E070 +E070 +DFB0 +BFD0 +7FE0 +ENDCHAR +STARTCHAR char0 +ENCODING 9 +SWIDTH 750 0 +DWIDTH 13 0 +BBX 12 21 0 0 +BITMAP +7FE0 +BFD0 +DFB0 +E070 +E070 +E070 +E070 +E070 +C030 +9F90 +3FC0 +1F90 +0030 +0070 +0070 +0070 +0070 +0070 +1FB0 +3FD0 +7FE0 +ENDCHAR +STARTCHAR char0 +ENCODING 10 +SWIDTH 750 0 +DWIDTH 13 0 +BBX 4 11 4 5 +BITMAP +60 +F0 +60 +00 +00 +00 +00 +00 +60 +F0 +60 +ENDCHAR +STARTCHAR char11 +ENCODING 11 +SWIDTH 750 0 +DWIDTH 13 0 +BBX 13 1 0 0 +BITMAP +FFF8 +ENDCHAR +ENDFONT diff --git a/ui/fonts/lcd13x21.h b/ui/fonts/lcd13x21.h new file mode 100644 index 0000000..b89aac8 --- /dev/null +++ b/ui/fonts/lcd13x21.h @@ -0,0 +1,17 @@ +/* -gbdfed-LCD-Medium-R-Normal--16-120-96-96-M-100-FontSpecific-0 */ +#define FONT_WIDTH_LCDnone_13x21 13 +#define FONT_HEIGHT_LCDnone_13x21 21 +const uint8_t FONT_DATA_LCDnone_13x21[12][42] = { +{0xfe,0x07,0xfd,0x0b,0xfb,0x0d,0x07,0x0e,0x07,0x0e,0x07,0x0e,0x07,0x0e,0x07,0x0e,0x03,0x0c,0x01,0x08,0x00,0x00,0x01,0x08,0x03,0x0c,0x07,0x0e,0x07,0x0e,0x07,0x0e,0x07,0x0e,0x07,0x0e,0xfb,0x0d,0xfd,0x0b,0xfe,0x07,}, +{0x00,0x00,0x00,0x08,0x00,0x0c,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0c,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x0c,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0c,0x00,0x08,0x00,0x00,}, +{0xfe,0x07,0xfc,0x0b,0xf8,0x0d,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0c,0xf8,0x09,0xfc,0x03,0xf9,0x01,0x03,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0xfb,0x01,0xfd,0x03,0xfe,0x07,}, +{0xfe,0x07,0xfc,0x0b,0xf8,0x0d,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0c,0xf8,0x09,0xfc,0x03,0xf8,0x09,0x00,0x0c,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0e,0xf8,0x0d,0xfc,0x0b,0xfe,0x07,}, +{0x00,0x00,0x01,0x08,0x03,0x0c,0x07,0x0e,0x07,0x0e,0x07,0x0e,0x07,0x0e,0x07,0x0e,0x03,0x0c,0xf9,0x09,0xfc,0x03,0xf8,0x09,0x00,0x0c,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0c,0x00,0x08,0x00,0x00,}, +{0xfe,0x07,0xfd,0x03,0xfb,0x01,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x03,0x00,0xf9,0x01,0xfc,0x03,0xf8,0x09,0x00,0x0c,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0e,0xf8,0x0d,0xfc,0x0b,0xfe,0x07,}, +{0xfe,0x07,0xfd,0x03,0xfb,0x01,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x03,0x00,0xf9,0x01,0xfc,0x03,0xf9,0x09,0x03,0x0c,0x07,0x0e,0x07,0x0e,0x07,0x0e,0x07,0x0e,0x07,0x0e,0xfb,0x0d,0xfd,0x0b,0xfe,0x07,}, +{0xfe,0x07,0xfc,0x0b,0xf8,0x0d,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0c,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x0c,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0c,0x00,0x08,0x00,0x00,}, +{0xfe,0x07,0xfd,0x0b,0xfb,0x0d,0x07,0x0e,0x07,0x0e,0x07,0x0e,0x07,0x0e,0x07,0x0e,0x03,0x0c,0xf9,0x09,0xfc,0x03,0xf9,0x09,0x03,0x0c,0x07,0x0e,0x07,0x0e,0x07,0x0e,0x07,0x0e,0x07,0x0e,0xfb,0x0d,0xfd,0x0b,0xfe,0x07,}, +{0xfe,0x07,0xfd,0x0b,0xfb,0x0d,0x07,0x0e,0x07,0x0e,0x07,0x0e,0x07,0x0e,0x07,0x0e,0x03,0x0c,0xf9,0x09,0xfc,0x03,0xf8,0x09,0x00,0x0c,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0e,0x00,0x0e,0xf8,0x0d,0xfc,0x0b,0xfe,0x07,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xf0,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xf0,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x1f,}, +}; diff --git a/ui/fonts/lcd8x13.bdf b/ui/fonts/lcd8x13.bdf new file mode 100644 index 0000000..e19ecf4 --- /dev/null +++ b/ui/fonts/lcd8x13.bdf @@ -0,0 +1,229 @@ +STARTFONT 2.1 +FONT -gbdfed-LCD-Medium-R-Normal--13-120-96-96-M-100-FontSpecific-0 +SIZE 12 96 96 +FONTBOUNDINGBOX 8 13 0 0 +STARTPROPERTIES 6 +PIXEL_SIZE 13 +FONT_ASCENT 13 +FONT_DESCENT 0 +SPACING "M" +_GBDFED_INFO "Edited with gbdfed 1.6." +FAMILY_NAME "LCD" +ENDPROPERTIES +CHARS 12 +STARTCHAR char16 +ENCODING 0 +SWIDTH 500 0 +DWIDTH 8 0 +BBX 7 13 0 0 +BITMAP +7C +BA +C6 +C6 +C6 +82 +00 +82 +C6 +C6 +C6 +BA +7C +ENDCHAR +STARTCHAR char16 +ENCODING 1 +SWIDTH 500 0 +DWIDTH 8 0 +BBX 2 11 5 1 +BITMAP +40 +C0 +C0 +C0 +40 +00 +40 +C0 +C0 +C0 +40 +ENDCHAR +STARTCHAR char16 +ENCODING 2 +SWIDTH 500 0 +DWIDTH 8 0 +BBX 7 13 0 0 +BITMAP +7C +3A +06 +06 +06 +3A +7C +B8 +C0 +C0 +C0 +B8 +7C +ENDCHAR +STARTCHAR char16 +ENCODING 3 +SWIDTH 500 0 +DWIDTH 8 0 +BBX 6 13 1 0 +BITMAP +F8 +74 +0C +0C +0C +74 +F8 +74 +0C +0C +0C +74 +F8 +ENDCHAR +STARTCHAR char16 +ENCODING 4 +SWIDTH 500 0 +DWIDTH 8 0 +BBX 7 11 0 1 +BITMAP +82 +C6 +C6 +C6 +BA +7C +3A +06 +06 +06 +02 +ENDCHAR +STARTCHAR char16 +ENCODING 5 +SWIDTH 500 0 +DWIDTH 8 0 +BBX 7 13 0 0 +BITMAP +7C +B8 +C0 +C0 +C0 +B8 +7C +3A +06 +06 +06 +3A +7C +ENDCHAR +STARTCHAR char16 +ENCODING 6 +SWIDTH 500 0 +DWIDTH 8 0 +BBX 7 13 0 0 +BITMAP +7C +B8 +C0 +C0 +C0 +B8 +7C +BA +C6 +C6 +C6 +BA +7C +ENDCHAR +STARTCHAR char16 +ENCODING 7 +SWIDTH 500 0 +DWIDTH 8 0 +BBX 6 12 1 1 +BITMAP +F8 +74 +0C +0C +0C +04 +00 +04 +0C +0C +0C +04 +ENDCHAR +STARTCHAR char16 +ENCODING 8 +SWIDTH 500 0 +DWIDTH 8 0 +BBX 7 13 0 0 +BITMAP +7C +BA +C6 +C6 +C6 +BA +7C +BA +C6 +C6 +C6 +BA +7C +ENDCHAR +STARTCHAR char16 +ENCODING 9 +SWIDTH 500 0 +DWIDTH 8 0 +BBX 7 13 0 0 +BITMAP +7C +BA +C6 +C6 +C6 +BA +7C +3A +06 +06 +06 +3A +7C +ENDCHAR +STARTCHAR char16 +ENCODING 10 +SWIDTH 500 0 +DWIDTH 8 0 +BBX 2 5 3 4 +BITMAP +C0 +C0 +00 +C0 +C0 +ENDCHAR +STARTCHAR char16 +ENCODING 11 +SWIDTH 500 0 +DWIDTH 8 0 +BBX 8 1 0 0 +BITMAP +FF +ENDCHAR +ENDFONT diff --git a/ui/fonts/lcd8x13.h b/ui/fonts/lcd8x13.h new file mode 100644 index 0000000..efb6705 --- /dev/null +++ b/ui/fonts/lcd8x13.h @@ -0,0 +1,17 @@ +/* -gbdfed-LCD-Medium-R-Normal--13-120-96-96-M-100-FontSpecific-0 */ +#define FONT_WIDTH_LCDnone_8x13 8 +#define FONT_HEIGHT_LCDnone_8x13 13 +const uint8_t FONT_DATA_LCDnone_8x13[12][13] = { +{0x3e,0x5d,0x63,0x63,0x63,0x41,0x00,0x41,0x63,0x63,0x63,0x5d,0x3e,}, +{0x00,0x40,0x60,0x60,0x60,0x40,0x00,0x40,0x60,0x60,0x60,0x40,0x00,}, +{0x3e,0x5c,0x60,0x60,0x60,0x5c,0x3e,0x1d,0x03,0x03,0x03,0x1d,0x3e,}, +{0x3e,0x5c,0x60,0x60,0x60,0x5c,0x3e,0x5c,0x60,0x60,0x60,0x5c,0x3e,}, +{0x00,0x41,0x63,0x63,0x63,0x5d,0x3e,0x5c,0x60,0x60,0x60,0x40,0x00,}, +{0x3e,0x1d,0x03,0x03,0x03,0x1d,0x3e,0x5c,0x60,0x60,0x60,0x5c,0x3e,}, +{0x3e,0x1d,0x03,0x03,0x03,0x1d,0x3e,0x5d,0x63,0x63,0x63,0x5d,0x3e,}, +{0x3e,0x5c,0x60,0x60,0x60,0x40,0x00,0x40,0x60,0x60,0x60,0x40,0x00,}, +{0x3e,0x5d,0x63,0x63,0x63,0x5d,0x3e,0x5d,0x63,0x63,0x63,0x5d,0x3e,}, +{0x3e,0x5d,0x63,0x63,0x63,0x5d,0x3e,0x5c,0x60,0x60,0x60,0x5c,0x3e,}, +{0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00,}, +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,}, +}; diff --git a/ui/oswald-ui.c b/ui/oswald-ui.c new file mode 100644 index 0000000..74d5676 --- /dev/null +++ b/ui/oswald-ui.c @@ -0,0 +1,533 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +//#include "Fonts.h" // the MetaWatch fonts +#include "oswald.h" +#include "oswald_main.h" + +#include "oswald-ui.h" + +#define BITMAP_WIDTH 192 +#define BITMAP_HEIGHT 192 + +static oswald_ui *ui_g; + +void hal_lcd_set_pixel(gint x, gint y, uint8_t state) +{ + gint ix, iy; + + ix = x*2; + iy = y*2; + + // we double all pixel to get a bigger picture + gdk_draw_point(GDK_DRAWABLE(ui_g->pixmap), state ? ui_g->darea->style->black_gc : ui_g->darea->style->white_gc, ix, iy); + gdk_draw_point(GDK_DRAWABLE(ui_g->pixmap), state ? ui_g->darea->style->black_gc : ui_g->darea->style->white_gc, ix+1, iy); + gdk_draw_point(GDK_DRAWABLE(ui_g->pixmap), state ? ui_g->darea->style->black_gc : ui_g->darea->style->white_gc, ix, iy+1); + gdk_draw_point(GDK_DRAWABLE(ui_g->pixmap), state ? ui_g->darea->style->black_gc : ui_g->darea->style->white_gc, ix+1, iy+1); + +} + +/* updates the actual LCD so that drawing becomes visible */ +void hal_lcd_update_display(void) +{ + gtk_widget_queue_draw(ui_g->darea); +} + +void hal_lcd_clear_display(void) +{ + gdk_draw_rectangle (ui_g->pixmap, + ui_g->darea->style->white_gc, + TRUE, + 0, 0, + ui_g->darea->allocation.width, + ui_g->darea->allocation.height); + + gtk_widget_queue_draw(ui_g->darea); +} + +static bluetooth_state bt_state = BLUETOOTH_OFF; +static boolean bt_visible = FALSE; + +bluetooth_state hal_bluetooth_set_state(bluetooth_state state) +{ + bt_state = state; + if (bt_state == BLUETOOTH_OFF) + bt_visible = FALSE; + + return bt_state; +} + +bluetooth_state hal_bluetooth_get_state(void) +{ + return bt_state; +} + +uint8_t *hal_bluetooth_get_local_bdaddr(void) +{ + static uint8_t local_bdaddr[6] = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55}; + + return local_bdaddr; +} + +void hal_bluetooth_set_visible(boolean visible) +{ + bt_visible = visible; +} + +boolean hal_bluetooth_get_visible(void) +{ + return bt_visible; +} + +void hal_bluetooth_send_data(const void *mdat, uint16_t mlen) +{ + g_printerr("write comm %d\n", mlen); +} + +const char *hal_get_version_string(void) +{ + return "GTK v0.3"; +} + +const char *hal_get_buildno_string(void) +{ + return BUILDNO; +} + +const char *hal_get_radio_version_string(void) +{ + return "BlueZ"; +} + +void hal_accelerometer_enable(void) +{ + g_printerr("accel enable\n"); + gtk_widget_set_sensitive(ui_g->x_sc, TRUE); + gtk_widget_set_sensitive(ui_g->y_sc, TRUE); + gtk_widget_set_sensitive(ui_g->z_sc, TRUE); +} + +void hal_accelerometer_disable(void) +{ + g_printerr("accel disable\n"); + gtk_widget_set_sensitive(ui_g->x_sc, FALSE); + gtk_widget_set_sensitive(ui_g->y_sc, FALSE); + gtk_widget_set_sensitive(ui_g->z_sc, FALSE); +} + + +static gint +configure_event (GtkWidget *widget, GdkEventConfigure *event, gpointer user_data) +{ + oswald_ui *ui = (oswald_ui *)user_data; + + if (ui->pixmap) + gdk_pixmap_unref(ui->pixmap); + + ui->pixmap = gdk_pixmap_new(widget->window, + widget->allocation.width, + widget->allocation.height, + -1); + gdk_draw_rectangle (ui->pixmap, + widget->style->white_gc, + TRUE, + 0, 0, + widget->allocation.width, + widget->allocation.height); + + return TRUE; +} + +static gint +expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) +{ + oswald_ui *ui = (oswald_ui *)user_data; + + gdk_draw_pixmap(widget->window, + widget->style->fg_gc[GTK_WIDGET_STATE (widget)], + ui->pixmap, + event->area.x, event->area.y, + event->area.x, event->area.y, + event->area.width, event->area.height); + + return FALSE; +} + +void button_A_clicked (GtkButton *button, gpointer user_data) +{ + oswald_ui *ui = (oswald_ui *)user_data; + + // g_print("Button-A clicked\n"); + oswald_handle_button_press(BUTTON_A); +} + +void button_B_clicked (GtkButton *button, gpointer user_data) +{ + oswald_ui *ui = (oswald_ui *)user_data; + + // g_print("Button-B clicked\n"); + oswald_handle_button_press(BUTTON_B); +} + +void button_C_clicked (GtkButton *button, gpointer user_data) +{ + oswald_ui *ui = (oswald_ui *)user_data; + + // g_print("Button-C clicked\n"); + oswald_handle_button_press(BUTTON_C); +} + +void button_D_clicked (GtkButton *button, gpointer user_data) +{ + oswald_ui *ui = (oswald_ui *)user_data; + + // g_print("Button-D clicked\n"); + oswald_handle_button_press(BUTTON_D); +} + +void button_E_clicked (GtkButton *button, gpointer user_data) +{ + oswald_ui *ui = (oswald_ui *)user_data; + + // g_print("Button-E clicked\n"); + oswald_handle_button_press(BUTTON_E); +} + +void button_F_clicked (GtkButton *button, gpointer user_data) +{ + oswald_ui *ui = (oswald_ui *)user_data; + + // g_print("Button-F clicked\n"); + oswald_handle_button_press(BUTTON_F); +} + +gboolean button_F_pr (GtkWidget *widget, GdkEvent *event, gpointer user_data) +{ + oswald_ui *ui = (oswald_ui *)user_data; + static gint32 press_time; + + GdkEventButton *bev = (GdkEventButton *)event; + if (bev->type == GDK_BUTTON_PRESS) { + press_time = bev->time; + return FALSE; + }; + if (bev->type == GDK_BUTTON_RELEASE) { + if (bev->time > (press_time+1000)) { + g_print("Button-F long press\n"); + return TRUE; + }; + }; + + return FALSE; +} + +void ambientlight_value_changed (GtkRange *range, gpointer user_data) +{ + oswald_ui *ui = (oswald_ui *)user_data; + double val; + + val = gtk_range_get_value(range); + oswald_handle_ambientlight_event((uint8_t) val); +} + +void accelX_value_changed (GtkRange *range, gpointer user_data) +{ + oswald_ui *ui = (oswald_ui *)user_data; + double val; + + val = gtk_range_get_value(range); + ui->accel_x = (uint8_t)val; + oswald_handle_accel_event(ui->accel_x, ui->accel_y, ui->accel_z); +} + +void accelY_value_changed (GtkRange *range, gpointer user_data) +{ + oswald_ui *ui = (oswald_ui *)user_data; + double val; + + val = gtk_range_get_value(range); + ui->accel_y = (uint8_t)val; + oswald_handle_accel_event(ui->accel_x, ui->accel_y, ui->accel_z); +} + +void accelZ_value_changed (GtkRange *range, gpointer user_data) +{ + oswald_ui *ui = (oswald_ui *)user_data; + double val; + + val = gtk_range_get_value(range); + ui->accel_z = (uint8_t)val; + oswald_handle_accel_event(ui->accel_x, ui->accel_y, ui->accel_z); +} + +static void create_mainwin(oswald_ui *ui) +{ + GtkWidget *mvb, *hb, *vb, *btn, *sc, *l; + + ui->pixmap = NULL; + + ui->mainwin = gtk_window_new (GTK_WINDOW_TOPLEVEL); + // gtk_window_set_default_size (GTK_WINDOW (ui->mainwin), 440, 240); + g_signal_connect(G_OBJECT(ui->mainwin), "destroy", gtk_main_quit, NULL); + + mvb = gtk_vbox_new(FALSE, 5); + gtk_container_add(GTK_CONTAINER(ui->mainwin), mvb); + + hb = gtk_hbox_new(FALSE, 5); + gtk_box_pack_start (GTK_BOX(mvb), hb, FALSE, FALSE, 5); + + vb = gtk_vbox_new(FALSE, 5); + gtk_box_pack_start (GTK_BOX(hb), vb, FALSE, FALSE, 5); + + btn = gtk_button_new_with_label(" F "); + gtk_box_pack_start (GTK_BOX(vb), btn, FALSE, FALSE, 10); + g_signal_connect(G_OBJECT(btn), "clicked", G_CALLBACK(button_F_clicked), ui); + g_signal_connect(G_OBJECT(btn), "button-press-event", G_CALLBACK(button_F_pr), ui); + g_signal_connect(G_OBJECT(btn), "button-release-event", G_CALLBACK(button_F_pr), ui); + + btn = gtk_button_new_with_label(" E "); + gtk_box_pack_start (GTK_BOX(vb), btn, FALSE, FALSE, 10); + g_signal_connect(G_OBJECT(btn), "clicked", G_CALLBACK(button_E_clicked), ui); + + btn = gtk_button_new_with_label(" D "); + gtk_box_pack_start (GTK_BOX(vb), btn, FALSE, FALSE, 10); + g_signal_connect(G_OBJECT(btn), "clicked", G_CALLBACK(button_D_clicked), ui); + + ui->darea = gtk_drawing_area_new (); + gtk_box_pack_start (GTK_BOX(hb), GTK_WIDGET(ui->darea), FALSE, FALSE, 5); + gtk_drawing_area_size (GTK_DRAWING_AREA(ui->darea), BITMAP_WIDTH, BITMAP_HEIGHT); + + gtk_signal_connect (GTK_OBJECT (ui->darea), "expose_event", (GtkSignalFunc) expose_event, ui); + gtk_signal_connect (GTK_OBJECT (ui->darea), "configure_event", (GtkSignalFunc) configure_event, ui); + // gtk_signal_connect (GTK_OBJECT (drawing_area), "motion_notify_event", (GtkSignalFunc) motion_notify_event, ui); + // gtk_signal_connect (GTK_OBJECT (drawing_area), "button_press_event", (GtkSignalFunc) button_press_event, ui); + + gtk_widget_set_events (GTK_WIDGET(ui->darea), GDK_EXPOSURE_MASK + | GDK_LEAVE_NOTIFY_MASK + | GDK_BUTTON_PRESS_MASK + | GDK_POINTER_MOTION_MASK + | GDK_POINTER_MOTION_HINT_MASK); + + vb = gtk_vbox_new(FALSE, 5); + gtk_box_pack_start (GTK_BOX(hb), vb, FALSE, FALSE, 5); + + btn = gtk_button_new_with_label(" A "); + gtk_box_pack_start (GTK_BOX(vb), btn, FALSE, FALSE, 10); + g_signal_connect(G_OBJECT(btn), "clicked", G_CALLBACK(button_A_clicked), ui); + + btn = gtk_button_new_with_label(" B "); + gtk_box_pack_start (GTK_BOX(vb), btn, FALSE, FALSE, 10); + g_signal_connect(G_OBJECT(btn), "clicked", G_CALLBACK(button_B_clicked), ui); + + btn = gtk_button_new_with_label(" C "); + gtk_box_pack_start (GTK_BOX(vb), btn, FALSE, FALSE, 10); + g_signal_connect(G_OBJECT(btn), "clicked", G_CALLBACK(button_C_clicked), ui); + + // ambient light sensor + sc = gtk_vscale_new_with_range (0, 255, 1); + gtk_box_pack_start (GTK_BOX(hb), sc, FALSE, FALSE, 5); + g_signal_connect(G_OBJECT(sc), "value-changed", G_CALLBACK(ambientlight_value_changed), ui); + + hb = gtk_hbox_new(FALSE, 0); + gtk_box_pack_start (GTK_BOX(mvb), hb, FALSE, FALSE, 5); + + l = gtk_label_new("X:"); + gtk_box_pack_start (GTK_BOX(hb), l, FALSE, FALSE, 5); + sc = gtk_hscale_new_with_range (-128, 127, 1); + gtk_box_pack_start (GTK_BOX(hb), sc, TRUE, TRUE, 5); + g_signal_connect(G_OBJECT(sc), "value-changed", G_CALLBACK(accelX_value_changed), ui); + ui->x_sc = sc; + gtk_widget_set_sensitive(ui->x_sc, FALSE); + + l = gtk_label_new("Y:"); + gtk_box_pack_start (GTK_BOX(hb), l, FALSE, FALSE, 5); + sc = gtk_hscale_new_with_range (-128, 127, 1); + gtk_box_pack_start (GTK_BOX(hb), sc, TRUE, TRUE, 5); + g_signal_connect(G_OBJECT(sc), "value-changed", G_CALLBACK(accelY_value_changed), ui); + ui->y_sc = sc; + gtk_widget_set_sensitive(ui->y_sc, FALSE); + + l = gtk_label_new("Z:"); + gtk_box_pack_start (GTK_BOX(hb), l, FALSE, FALSE, 5); + sc = gtk_hscale_new_with_range (-128, 127, 1); + gtk_box_pack_start (GTK_BOX(hb), sc, TRUE, TRUE, 5); + g_signal_connect(G_OBJECT(sc), "value-changed", G_CALLBACK(accelZ_value_changed), ui); + ui->z_sc = sc; + gtk_widget_set_sensitive(ui->z_sc, FALSE); + + gtk_widget_show_all(ui->mainwin); +} + +static gboolean one_second_tmo_handler (gpointer userdata) +{ + oswald_ui *ui = (oswald_ui *)userdata; + + oswald_one_second_tick(); + + return TRUE; +} + +static gboolean app_idle_handler (gpointer user_data) +{ + g_print("i"); + if (OswaldState.pending_idle) { + // call Oswald's idle function + return TRUE; + }; + return FALSE; +} + +static gboolean centisecond_tmo_handler (gpointer userdata) +{ + oswald_ui *ui = (oswald_ui *)userdata; + + if (ui->centisecond_active) + oswald_centisecond_tick(); + else + return FALSE; + + return TRUE; +} + +void hal_enable_centisecond_timer(void) +{ + ui_g->centisecond_active = TRUE; + g_timeout_add(10, centisecond_tmo_handler, ui_g); +} + +void hal_disable_centisecond_timer(void) +{ + ui_g->centisecond_active = FALSE; +} + +static gboolean halfsecond_tmo_handler (gpointer userdata) +{ + oswald_ui *ui = (oswald_ui *)userdata; + + if (ui->halfsecond_active) + oswald_halfsecond_tick(); + else + return FALSE; + + return TRUE; +} + +void hal_enable_halfsecond_timer(void) +{ + ui_g->halfsecond_active = TRUE; + g_timeout_add(500, halfsecond_tmo_handler, ui_g); +} + +void hal_disable_halfsecond_timer(void) +{ + ui_g->halfsecond_active = FALSE; +} + +void hal_get_rtc(clock_state *rtc) +{ + time_t mt; + struct tm mtime; + + mt = time(NULL); + localtime_r(&mt, &mtime); + + rtc->hour = mtime.tm_hour; + rtc->minute = mtime.tm_min; + rtc->second = mtime.tm_sec; + rtc->day = mtime.tm_mday; + rtc->wday = mtime.tm_wday; + rtc->month = (mtime.tm_mon + 1); + rtc->year = (mtime.tm_year + 1900); + +} + +void hal_set_rtc(const clock_state *rtc, boolean set_set) +{ +} + +void hal_get_power_state(power_state *pwr) +{ + pwr->source = POWER_SOURCE_EXTERNAL; + pwr->charge_state = POWER_CHARGER_CHARGING; + pwr->percent = 50; + pwr->level = 3242; // mV +} + +static boolean BacklightState = FALSE; + +/* sets the backlight on/off, on=TRUE, off=FALSE */ +void hal_lcd_set_backlight(boolean state) +{ + g_print("turn LCD backlight %s\n", state ? "on" : "off"); + BacklightState = state; +} + +boolean hal_lcd_get_backlight(void) +{ + return BacklightState; +} + +static boolean VibrationState = FALSE; + +/* sets the vibration motor on/off, on=TRUE, off=FALSE */ +void hal_vibration_set_state(boolean state) +{ + g_print("turn vibration %s\n", state ? "on" : "off"); + VibrationState = state; +} + +boolean hal_vibration_get_state(void) +{ + return VibrationState; +} + +uint16_t hal_amblight_get_val(void) +{ + return 42; +} + + +int main(int argc , char ** argv) +{ + oswald_ui ui; + time_t mt; + struct tm mtime; + + ui_g = &ui; + + ui.accel_x = 0; + ui.accel_y = 0; + ui.accel_z = 0; + ui.halfsecond_active = FALSE; + ui.centisecond_active = FALSE; + + mt = time(NULL); + localtime_r(&mt, &mtime); + + gtk_init (&argc, &argv); + + create_mainwin(&ui); + gtk_widget_realize(ui.mainwin); + + oswald_set_time(mtime.tm_hour, mtime.tm_min, mtime.tm_sec, TRUE); + oswald_set_date(mtime.tm_mday, (mtime.tm_mon + 1), (mtime.tm_year + 1900), TRUE); + oswald_init(); + + g_timeout_add_seconds(1, one_second_tmo_handler, &ui); + // g_idle_add(app_idle_handler, &ui); + + gtk_main (); + return 0; +} + diff --git a/ui/oswald-ui.h b/ui/oswald-ui.h new file mode 100644 index 0000000..fdadd4b --- /dev/null +++ b/ui/oswald-ui.h @@ -0,0 +1,33 @@ +#ifndef _oswald_ui_h +#define _oswald_ui_h + +#include + +#include "oswald.h" + +typedef struct { + GtkWidget *mainwin; + GtkWidget *darea; + GdkPixmap *pixmap; + GtkWidget *x_sc; + GtkWidget *y_sc; + GtkWidget *z_sc; + uint8_t accel_x; + uint8_t accel_y; + uint8_t accel_z; + gboolean halfsecond_active; + gboolean centisecond_active; +} oswald_ui; + +void lcd_set_pixel(gint x, gint y, gboolean state); +void lcd_clear_display(void); +void lcd_update_display(void); + +void enable_centisecond_timer(void); +void disable_centisecond_timer(void); + +void enable_halfsecond_timer(void); +void disable_halfsecond_timer(void); + +#endif + diff --git a/ui/oswald.h b/ui/oswald.h new file mode 100644 index 0000000..dd61eed --- /dev/null +++ b/ui/oswald.h @@ -0,0 +1,139 @@ +#ifndef _OSWALD_H +#define _OSWALD_H +#include +#include +#include + +#define OSWALD_VERSION "v0.3" + +//#define DEBUG 1 +#ifdef DEBUG +#define dbg_out( args... ) fprintf(stderr, args) +#else +#define dbg_out( args... ) do {} while (0) +#endif + +typedef uint8_t boolean; +#ifdef TRUE +#undef TRUE +#endif +#define TRUE 1 +#ifdef FALSE +#undef FALSE +#endif +#define FALSE 0 +#ifndef NULL +#define NULL 0 +#endif + +typedef struct { + uint8_t hour; + uint8_t minute; + uint8_t second; + uint8_t day; + uint8_t wday; // day in week, 0=sunday, 1=monday,... + uint8_t month; + uint16_t year; + boolean clk24hr; + boolean day_first; +} clock_state; + +#define WDAY_SUNDAY (1 << 0) +#define WDAY_MONDAY (1 << 1) +#define WDAY_TUESDAY (1 << 2) +#define WDAY_WEDNESDAY (1 << 3) +#define WDAY_THURSDAY (1 << 4) +#define WDAY_FRIDAY (1 << 5) +#define WDAY_SATURDAY (1 << 6) +typedef struct { + uint8_t hour; + uint8_t minute; + uint8_t wday; // bitfield 0 to 6, 1=sunday, 2=monday, 4=tuesday... +} alarm_clk; + +typedef enum { + IDLE_SCREEN = 0, + MAIN_MENU_SCREEN, + ALARM_SETUP_SCREEN, + STOP_WATCH_SCREEN, + BLUETOOTH_SCREEN, + ACCEL_DISPLAY_SCREEN, + MESSAGES_SCREEN, + INFO_SCREEN, + LAST_SCREEN, // a marker for the last (not valid) screen) + MESSAGE_SCREEN, + MENU_TEST_SCREEN, + APPLICATION_SCREEN, + DATETIME_SETTING_SCREEN, + ALARM_SCREEN, + SCREENS_END, +} screen_number; + +typedef enum { + BUTTON_A = 0, + BUTTON_B, + BUTTON_C, + BUTTON_D, + BUTTON_E, + BUTTON_F, +} watch_button; + +#define EVENT_SCREEN_VISIBLE (1<<0) // screen just became visible +#define EVENT_SCREEN_DESTROY (1<<1) // screen is destroyed +#define EVENT_ONE_SEC_TIMER (1<<2) // one second timer for reguler clock +#define EVENT_HALF_SEC_TIMER (1<<3) // half second timer for blinking displays +#define EVENT_CS_TIMER (1<<4) // centisecond timer, e.g. for stop watch +#define EVENT_USER_BUTTONS (1<<5) // button presses +#define EVENT_ACCEL_UPDATE (1<<6) // accelerometer updates +#define EVENT_AMBIENTLIGHT_UPDATE (1<<7) // ambient light sensor updates +#define EVENT_POWER_CHANGE (1<<8) // power source status change +#define EVENT_COMMS (1<<9) // communication, like Bluetooth I/O +#define EVENT_POWER_STATE (1<<10) // power source changed or similar + +typedef enum { + EVENT_RET_UNHANDLED = 0, + EVENT_RET_HANDLED, + EVENT_RET_ERR +} event_ret_t; + +typedef struct { + uint16_t event_mask; // the event the screen wants to receive + event_ret_t (*event_func)(uint16_t event, void *data); // callback for events + void *user_data; +} watch_screen; + +typedef struct { + screen_number screen_id; + watch_screen *screen; // the current screen + boolean pending_idle; +} watch_state; + +typedef struct { + int8_t x; + int8_t y; + int8_t z; +} accel_data_t; + +#define POWER_SOURCE_BATTERY 0 +#define POWER_SOURCE_EXTERNAL 1 + +#define POWER_CHARGER_DONE 0 +#define POWER_CHARGER_PRECHARGE 1 +#define POWER_CHARGER_CHARGING 2 +#define POWER_CHARGER_UNK 3 + +typedef struct { + uint8_t source; + uint8_t charge_state; + uint8_t percent; + uint16_t level; +} power_state; + +typedef enum { + BLUETOOTH_OFF = 0, + BLUETOOTH_ON, + BLUETOOTH_CONNECTED, + BLUETOOTH_ILL +} bluetooth_state; + +#endif diff --git a/ui/oswald_fonts.c b/ui/oswald_fonts.c new file mode 100644 index 0000000..7f8419c --- /dev/null +++ b/ui/oswald_fonts.c @@ -0,0 +1,65 @@ +#include "oswald_fonts.h" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "fonts/lcd13x21.h" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "fonts/lcd8x13.h" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "fonts/fixed5x7.h" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "fonts/fixed6x9.h" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "fonts/DroidSans8x12.h" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "fonts/DroidSansBold8x12.h" + +const oswald_font oswald_fonts[LAST_FONT] = { + { + FONT_TYPE_MONOSPACE, + FONT_WIDTH_LCDnone_8x13, + FONT_HEIGHT_LCDnone_8x13, + (uint8_t *)FONT_DATA_LCDnone_8x13 + }, { + FONT_TYPE_MONOSPACE, + FONT_WIDTH_LCDnone_13x21, + FONT_HEIGHT_LCDnone_13x21, + (uint8_t *)FONT_DATA_LCDnone_13x21 + }, { + FONT_TYPE_MONOSPACE, + FONT_WIDTH_Fixed_5x7, + FONT_HEIGHT_Fixed_5x7, + (uint8_t *)FONT_DATA_Fixed_5x7 + }, { + FONT_TYPE_MONOSPACE, + FONT_WIDTH_Fixed_6x9, + FONT_HEIGHT_Fixed_6x9, + (uint8_t *)FONT_DATA_Fixed_6x9 + }, { + FONT_TYPE_PROPORTIONAL, + FONT_WIDTH_Droid_SansMedium_8x12, + FONT_HEIGHT_Droid_SansMedium_8x12, + (uint8_t *)FONT_DATA_Droid_SansMedium_8x12 + }, { + FONT_TYPE_PROPORTIONAL, + FONT_WIDTH_Droid_SansBold_8x12, + FONT_HEIGHT_Droid_SansBold_8x12, + (uint8_t *)FONT_DATA_Droid_SansBold_8x12 + }, +}; diff --git a/ui/oswald_fonts.h b/ui/oswald_fonts.h new file mode 100644 index 0000000..0a15a5e --- /dev/null +++ b/ui/oswald_fonts.h @@ -0,0 +1,30 @@ +#ifndef _FONTS_H +#define _FONTS_H + +#include "oswald.h" + +typedef enum { + FONT_TYPE_MONOSPACE = 0, + FONT_TYPE_PROPORTIONAL, +} oswald_font_type; + +typedef enum { + FONT_LCD8x13 = 0, + FONT_LCD13x21, + FONT_5x7, + FONT_6x9, + FONT_DROID8x12, + FONT_DROID8x12b, + LAST_FONT +} oswald_font_face; + +typedef struct { + oswald_font_type font_type; + uint8_t width; + uint8_t height; + uint8_t *data; +} oswald_font; + +extern const oswald_font oswald_fonts[]; + +#endif diff --git a/ui/oswald_graphics.c b/ui/oswald_graphics.c new file mode 100644 index 0000000..78e3659 --- /dev/null +++ b/ui/oswald_graphics.c @@ -0,0 +1,246 @@ +#include "oswald.h" +#include "oswald_strings.h" +#include "oswald_fonts.h" +#include "oswald_hal.h" + +#include "oswald_graphics.h" + + +#if 0 +void oswald_draw_pixel(const unsigned int xstart, const unsigned int ystart, uint8_t color) +{ + hal_lcd_set_pixel(xstart, ystart, TRUE); +} +#endif + +void oswald_draw_bitmap_opts(const unsigned int xstart, const unsigned int ystart, + const unsigned int xoff, const unsigned int yoff, + const unsigned int width, const unsigned int height, + const boolean invert, + const unsigned int bmp_width, const unsigned int bmp_height, + const void *bmp) +{ + unsigned int x, y; + uint8_t *cb; + + if (bmp == NULL) + return; + + //g_printerr("dbmp %d,%d off %d,%d\n", xstart, ystart, width, height); + cb = (uint8_t *)bmp; + //g_printerr("dat %02x %02x %02x\n", (uint8_t)cb[0], (uint8_t)cb[1], (uint8_t)cb[2]); + // we only draw set pixel, unset pixel remain as they are + for (y=yoff; y= 0) ? 1 : -1; + incy = (dy >= 0) ? 1 : -1; + + if (dx<0) + dx = -dx; + if (dy<0) + dy = -dy; + + if (dx>dy) { + pdx = incx; pdy = 0; + ddx=incx; ddy=incy; + es =dy; el =dx; + } else { + pdx=0; pdy=incy; + ddx=incx; ddy=incy; + es =dx; el =dy; + } + + x = xstart; + y = ystart; + err = el/2; + hal_lcd_set_pixel(x, y, TRUE); + + for (t = 0; t < el; ++t) { + err -= es; + if (err < 0) { + err += el; + x += ddx; + y += ddy; + } else { + x += pdx; + y += pdy; + } + hal_lcd_set_pixel(x, y, TRUE); + } +} + +void oswald_draw_line_ww(const uint8_t xstart, const uint8_t ystart, const uint8_t xend, const uint8_t yend, const uint8_t thickness) +{ + int16_t i, x, y, t, dx, dy, incx, incy, pdx, pdy, ddx, ddy, es, el, err; + + dx = xend - xstart; + dy = yend - ystart; + + incx = (dx >= 0) ? 1 : -1; + incy = (dy >= 0) ? 1 : -1; + + if (dx<0) + dx = -dx; + if (dy<0) + dy = -dy; + + if (dx>dy) { + pdx = incx; + pdy = 0; + ddx = incx; + ddy = incy; + es = dy; + el = dx; + } else { + pdx = 0; + pdy = incy; + ddx = incx; + ddy = incy; + es = dx; + el = dy; + } + + x = xstart; + y = ystart; + err = el/2; + hal_lcd_set_pixel(x, y, TRUE); + for (i=1; i 0 ? (8-(oswald_fonts[face].width % 8)) : 0, 0, ((oswald_fonts[face].width / 8) + ((oswald_fonts[face].width % 8) ? 1 : 0))*8, oswald_fonts[face].height, cdata); + + return cwidth; +} + +void oswald_write_string(const uint8_t x, const uint8_t y, const oswald_font_face face, const boolean invert, char *str) +{ + uint8_t lx, i, strl; + + strl = oswald_strlen(str); + if (strl == 0) + return; + + lx = x; + for (i=0; i len) + break; + } + + return (i+1); +} + +void oswald_write_number(const uint8_t x, const uint8_t y, const oswald_font_face face, const boolean invert, const int16_t number) +{ + uint8_t lx, i, strl; + char str[8]; + + itoa(number, str, 10); + strl = oswald_strlen(str); + if (strl == 0) + return; + + lx = x; + for (i=0; ievent_func != NULL) && + (OswaldState.screen->event_mask & EVENT_SCREEN_VISIBLE)) + OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL); + } +} + +void oswald_set_time(uint8_t hour, uint8_t minute, uint8_t second, boolean clk24hr) +{ + OswaldClk.hour = hour; + OswaldClk.minute = minute; + OswaldClk.second = second; + OswaldClk.clk24hr = clk24hr; +} + +void oswald_set_date(uint8_t day, uint8_t month, uint16_t year, boolean day_first) +{ + OswaldClk.day = day; + OswaldClk.month = month; + OswaldClk.year = year; + OswaldClk.day_first = day_first; +} + +static void update_clock_state (void) +{ + hal_get_rtc(&OswaldClk); + + /* check for pending alarm once per minute */ + if (OswaldClk.second == 0) { + if (OswaldClk.hour == OswaldAlarm.hour && + OswaldClk.minute == OswaldAlarm.minute && + ((1 << OswaldClk.wday) & OswaldAlarm.wday)) { + OswaldState.screen->event_func(EVENT_SCREEN_DESTROY, NULL); + OswaldState.screen_id = ALARM_SCREEN; + OswaldState.screen = &OswaldScreens[OswaldState.screen_id]; + OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL); + } + } +} + +void oswald_one_second_tick(void) +{ + /* update clock - should use RTC if available */ + update_clock_state(); + + hal_get_power_state(&OswaldPowerState); + if (backlight_safety_off) { + backlight_safety_off--; + if (!backlight_safety_off) + hal_lcd_set_backlight(FALSE); + } + + /* wake-up screen if interested in the one-second-event */ + if (OswaldState.screen->event_func != NULL && + (OswaldState.screen->event_mask & EVENT_ONE_SEC_TIMER)) + OswaldState.screen->event_func(EVENT_ONE_SEC_TIMER, NULL); +} + +void oswald_centisecond_tick(void) +{ + if (OswaldState.screen->event_func != NULL && + (OswaldState.screen->event_mask & EVENT_CS_TIMER)) + OswaldState.screen->event_func(EVENT_CS_TIMER, NULL); +} + +void oswald_halfsecond_tick(void) +{ + if (OswaldState.screen->event_func != NULL && + (OswaldState.screen->event_mask & EVENT_HALF_SEC_TIMER)) + OswaldState.screen->event_func(EVENT_HALF_SEC_TIMER, NULL); +} + +void oswald_handle_button_press(watch_button button) +{ + switch (button) { + case BUTTON_A: + case BUTTON_B: + case BUTTON_E: + case BUTTON_F: + if (OswaldState.screen->event_func != NULL && + (OswaldState.screen->event_mask & EVENT_USER_BUTTONS)) { + OswaldState.screen->event_func(EVENT_USER_BUTTONS, &button); + } + break; + case BUTTON_C: + if (OswaldState.screen->event_func != NULL && + (OswaldState.screen->event_mask & EVENT_USER_BUTTONS)) { + if (OswaldState.screen->event_func(EVENT_USER_BUTTONS, &button) == EVENT_RET_HANDLED) + break; + } + OswaldState.screen->event_func(EVENT_SCREEN_DESTROY, NULL); +#if 0 + // next screen + OswaldState.screen_id++; + if (OswaldState.screen_id >= LAST_SCREEN) { + OswaldState.screen_id = IDLE_SCREEN; + }; +#else + OswaldState.screen_id = IDLE_SCREEN; +#endif + OswaldState.screen = &OswaldScreens[OswaldState.screen_id]; + OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL); + break; + case BUTTON_D: + // backlight on/off + if (hal_lcd_get_backlight()) { + hal_lcd_set_backlight(FALSE); + backlight_safety_off = 0; + } else { + hal_lcd_set_backlight(TRUE); + backlight_safety_off = 2; + } + break; + default: + // should never get here + break; + }; +} + +void oswald_handle_accel_event(uint8_t x, uint8_t y, uint8_t z) +{ + accel_data_t accel_data; + + accel_data.x = x; + accel_data.y = y; + accel_data.z = z; + + if (OswaldState.screen->event_func != NULL && + (OswaldState.screen->event_mask & EVENT_ACCEL_UPDATE)) + OswaldState.screen->event_func(EVENT_ACCEL_UPDATE, &accel_data); +} + +void oswald_handle_ambientlight_event(uint8_t light_level) +{ + if (OswaldState.screen->event_func != NULL && + (OswaldState.screen->event_mask & EVENT_AMBIENTLIGHT_UPDATE)) + OswaldState.screen->event_func(EVENT_AMBIENTLIGHT_UPDATE, &light_level); +} + +void oswald_handle_comm_input(uint16_t mlen, const void *mdat) +{ + char *icmd = (char *) mdat; + + if (icmd[0] == '$') { + if (strncmp(icmd, "$GRT", 4) == 0) { // get current RTC + char rtime[16]; + snprintf(rtime, 16, "#RTC%02d%02d%02d\n", OswaldClk.hour, OswaldClk.minute, OswaldClk.second); + hal_bluetooth_send_data(rtime, strlen(rtime)); + } else if (strncmp(icmd, "$SRT", 4) == 0) { // set current RTC + char rtime[16]; + snprintf(rtime, 16, "#USP\n"); + hal_bluetooth_send_data(rtime, strlen(rtime)); + } else if (strncmp(icmd, "$MSG", 4) == 0) { // message on main screen + char *msg = (icmd+4); + mlen -= 4; + memset(MainMessage, 0, 148); + strncpy(MainMessage, msg, (mlen > 147) ? 147 : mlen); + } else if (strncmp(icmd, "$MCL", 4) == 0) { // clear message + memset(MainMessage, 0, 148); + } else if (strncmp(icmd, "$BAT", 4) == 0) { // clear message + char rtime[16]; + snprintf(rtime, 16, "#BAT%d,%d\n", OswaldPowerState.charge_state, OswaldPowerState.percent); + hal_bluetooth_send_data(rtime, strlen(rtime)); + } else if (strncmp(icmd, "$GAL", 4) == 0) { // get ambient light value + char rtime[16]; + snprintf(rtime, 16, "#GAL%d\n", hal_amblight_get_val()); + hal_bluetooth_send_data(rtime, strlen(rtime)); + } + } +} + +void oswald_init(void) +{ + OswaldScreens[IDLE_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_ONE_SEC_TIMER; + OswaldScreens[IDLE_SCREEN].event_func = idle_handle_events; + + OswaldScreens[MAIN_MENU_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_ONE_SEC_TIMER; + OswaldScreens[MAIN_MENU_SCREEN].event_func = main_menu_handle_events; + + OswaldScreens[ALARM_SETUP_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_HALF_SEC_TIMER; + OswaldScreens[ALARM_SETUP_SCREEN].event_func = alarm_setup_events; + + OswaldScreens[STOP_WATCH_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_CS_TIMER; + OswaldScreens[STOP_WATCH_SCREEN].event_func = stop_watch_handle_events; + + OswaldScreens[BLUETOOTH_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_HALF_SEC_TIMER; + OswaldScreens[BLUETOOTH_SCREEN].event_func = bluetooth_screen_events; + + OswaldScreens[ACCEL_DISPLAY_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_ACCEL_UPDATE; + OswaldScreens[ACCEL_DISPLAY_SCREEN].event_func = accel_handle_events; + + OswaldScreens[MESSAGES_SCREEN].event_mask = EVENT_USER_BUTTONS; + OswaldScreens[MESSAGES_SCREEN].event_func = messages_screen_handle_events; + + OswaldScreens[MESSAGE_SCREEN].event_mask = EVENT_USER_BUTTONS; + OswaldScreens[MESSAGE_SCREEN].event_func = message_screen_handle_events; + + OswaldScreens[INFO_SCREEN].event_mask = 0x00; // this one does not consume any events + OswaldScreens[INFO_SCREEN].event_func = info_screen_handle_events; + + OswaldScreens[DATETIME_SETTING_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_HALF_SEC_TIMER; + OswaldScreens[DATETIME_SETTING_SCREEN].event_func = datetime_setup_events; + + OswaldScreens[MENU_TEST_SCREEN].event_mask = EVENT_USER_BUTTONS; + OswaldScreens[MENU_TEST_SCREEN].event_func = test_menu_handle_events; + + OswaldScreens[ALARM_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_HALF_SEC_TIMER; + OswaldScreens[ALARM_SCREEN].event_func = alarm_handle_events; + + OswaldState.screen_id = IDLE_SCREEN; + OswaldState.screen = &OswaldScreens[OswaldState.screen_id]; + + if (OswaldState.screen->event_func != NULL) + OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL); + + OswaldAlarm.hour = 12; + OswaldAlarm.minute = 0; + OswaldAlarm.wday = 0x00; + +} + diff --git a/ui/oswald_main.h b/ui/oswald_main.h new file mode 100644 index 0000000..dc632c5 --- /dev/null +++ b/ui/oswald_main.h @@ -0,0 +1,29 @@ +#ifndef _OSWALD_MAIN_H +#define _OSWALD_MAIN_H + +#include "oswald.h" + +extern clock_state OswaldClk; +extern alarm_clk OswaldAlarm; +extern power_state OswaldPowerState; +extern watch_state OswaldState; +extern watch_screen OswaldScreens[]; +extern char MainMessage[]; + +/* gets triggered by OS timer function */ +void oswald_one_second_tick(); + +/* sets internal 'RTC' time */ +void oswald_set_time(uint8_t hour, uint8_t minute, uint8_t second, boolean clk24hr); +void oswald_set_date(uint8_t day, uint8_t month, uint16_t year, boolean day_first); + +void oswald_handle_button_press(watch_button button); +void oswald_handle_accel_event(uint8_t x, uint8_t y, uint8_t z); +void oswald_handle_ambientlight_event(uint8_t light_level); +void oswald_handle_idle_event(void); +void oswald_one_second_tick(void); +void oswald_halfsecond_tick(void); +void oswald_centisecond_tick(void); +void oswald_init(void); +void oswald_handle_comm_input(uint16_t mlen, const void *mdat); +#endif diff --git a/ui/oswald_screens.c b/ui/oswald_screens.c new file mode 100644 index 0000000..680b5ba --- /dev/null +++ b/ui/oswald_screens.c @@ -0,0 +1,1533 @@ +#include + +#include "oswald.h" +#include "oswald_main.h" +#include "oswald_watch_faces.h" +#include "oswald_graphics.h" +#include "oswald_hal.h" + +#include "oswald_screens.h" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/startstopbutton_icon.xbm" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/lapsebutton_icon.xbm" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/upbutton_icon.xbm" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/downbutton_icon.xbm" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/leftbutton_icon.xbm" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/rightbutton_icon.xbm" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/enterbutton_icon.xbm" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/checked_icon.xbm" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/unchecked_icon.xbm" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/main_menu_icon.xbm" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/timesetup_icon.xbm" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/stopwatch_icon.xbm" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/alarm_icon.xbm" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/Bluetooth_icon.xbm" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/info_icon.xbm" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/acc_icon.xbm" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/Message_icon.xbm" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/Exit_icon.xbm" + + +/* + * Common event handler part of the watch faces + */ +typedef struct { + void (*screendraw_func)(boolean show_seconds); + boolean show_seconds; + boolean analogue; +} idle_data_t; +static idle_data_t idle_screen = { + DrawLcdDigitalClock, + TRUE, + FALSE, +}; + +event_ret_t idle_handle_user_buttons(watch_button button) +{ + switch (button) { + case BUTTON_A: + if (idle_screen.show_seconds) + idle_screen.show_seconds = FALSE; + else + idle_screen.show_seconds = TRUE; + break; + case BUTTON_B: + if (idle_screen.analogue == TRUE) { + idle_screen.analogue = FALSE; + idle_screen.screendraw_func = DrawLcdDigitalClock; + } else { + idle_screen.analogue = TRUE; + idle_screen.screendraw_func = DrawLcdAnaClock; + }; + break; + case BUTTON_C: + OswaldState.screen_id = MAIN_MENU_SCREEN; + OswaldState.screen = &OswaldScreens[OswaldState.screen_id]; + OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL); + return EVENT_RET_HANDLED; + break; + case BUTTON_F: + OswaldState.screen_id = DATETIME_SETTING_SCREEN; + OswaldState.screen = &OswaldScreens[OswaldState.screen_id]; + OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL); + return EVENT_RET_HANDLED; + break; + default: + return EVENT_RET_UNHANDLED; + break; + }; + + idle_screen.screendraw_func(idle_screen.show_seconds); + + return EVENT_RET_HANDLED; +} + +event_ret_t idle_handle_events(uint16_t event, void *data) +{ + switch (event) { + case EVENT_ONE_SEC_TIMER: + case EVENT_SCREEN_VISIBLE: + idle_screen.screendraw_func(idle_screen.show_seconds); + return EVENT_RET_HANDLED; + break; + case EVENT_USER_BUTTONS: + dbg_out("button event %d\n", *(int *)data); + return idle_handle_user_buttons(*(watch_button *)data); + break; + default: + return EVENT_RET_UNHANDLED; + break; + }; + return EVENT_RET_UNHANDLED; +} + + +/* + * Main Menu Screen + */ +typedef struct { + int8_t pos; + uint8_t tmo; +} main_menu_data_t; +static main_menu_data_t main_menu_screen = { + ALARM_SETUP_SCREEN, + 0, +}; + +#define MAIN_MENU_GRID_PIXEL 84 +#define MAIN_MENU_GRID_X 3 +// GRID_Y is +1 since there is one empty row for title icon +#define MAIN_MENU_GRID_Y 3 +#define MAIN_MENU_GRID_SPACING 0 +#define MAIN_MENU_OFFSET_X 6 +#define MAIN_MENU_OFFSET_Y 8 + +void draw_main_menu_screen(main_menu_data_t *sdata) +{ + uint8_t pf = sdata->pos - 2; + + hal_lcd_clear_display(); + +// oswald_draw_bitmap(36, 0, main_menu_icon_width, main_menu_icon_height, main_menu_icon_bits); + + oswald_draw_bitmap(81, 6, rightbutton_icon_width, rightbutton_icon_height, rightbutton_icon_bits); + oswald_draw_bitmap(81, 38, leftbutton_icon_width, leftbutton_icon_height, leftbutton_icon_bits); + oswald_draw_bitmap(81, 70, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits); + + oswald_draw_bitmpa_invert_opt(MAIN_MENU_OFFSET_X+((0+1) * MAIN_MENU_GRID_SPACING) + (0 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)), + MAIN_MENU_OFFSET_Y+(0 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)), + alarm_icon_width, alarm_icon_height, alarm_icon_bits, (sdata->pos == ALARM_SETUP_SCREEN)); + oswald_draw_bitmpa_invert_opt(MAIN_MENU_OFFSET_X+((1+1) * MAIN_MENU_GRID_SPACING) + (1 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)), + MAIN_MENU_OFFSET_Y+(0 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)), + stopwatch_icon_width, stopwatch_icon_height, stopwatch_icon_bits, (sdata->pos == STOP_WATCH_SCREEN)); + oswald_draw_bitmpa_invert_opt(MAIN_MENU_OFFSET_X+((2+1) * MAIN_MENU_GRID_SPACING) + (2 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)), + MAIN_MENU_OFFSET_Y+(0 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)), + Bluetooth_icon_width, Bluetooth_icon_height, Bluetooth_icon_bits, (sdata->pos == BLUETOOTH_SCREEN)); + oswald_draw_bitmpa_invert_opt(MAIN_MENU_OFFSET_X+((0+1) * MAIN_MENU_GRID_SPACING) + (0 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)), + MAIN_MENU_OFFSET_Y+(1 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)), + acc_icon_width, acc_icon_height, acc_icon_bits, (sdata->pos == ACCEL_DISPLAY_SCREEN)); + oswald_draw_bitmpa_invert_opt(MAIN_MENU_OFFSET_X+((1+1) * MAIN_MENU_GRID_SPACING) + (1 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)), + MAIN_MENU_OFFSET_Y+(1 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)), + Message_icon_width, Message_icon_height, Message_icon_bits, (sdata->pos == MESSAGES_SCREEN)); + oswald_draw_bitmpa_invert_opt(MAIN_MENU_OFFSET_X+((2+1) * MAIN_MENU_GRID_SPACING) + (2 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)), + MAIN_MENU_OFFSET_Y+(1 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)), + info_icon_width, info_icon_height, info_icon_bits, (sdata->pos == INFO_SCREEN)); + oswald_draw_bitmpa_invert_opt(MAIN_MENU_OFFSET_X+((0+1) * MAIN_MENU_GRID_SPACING) + (0 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)), + MAIN_MENU_OFFSET_Y+(2 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)), + Exit_icon_width, Exit_icon_height, Exit_icon_bits, (sdata->pos == LAST_SCREEN)); + + // round the corners of the inverted icon a little + hal_lcd_set_pixel(MAIN_MENU_OFFSET_X+((pf%MAIN_MENU_GRID_X) * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)) % (MAIN_MENU_GRID_X*(MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)), + MAIN_MENU_OFFSET_Y+((pf/MAIN_MENU_GRID_X) * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)) % (MAIN_MENU_GRID_Y*(MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)), FALSE); + hal_lcd_set_pixel(MAIN_MENU_OFFSET_X+23+((pf%MAIN_MENU_GRID_X) * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)) % (MAIN_MENU_GRID_X*(MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)), + MAIN_MENU_OFFSET_Y+((pf/MAIN_MENU_GRID_X) * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)) % (MAIN_MENU_GRID_Y*(MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)), FALSE); + hal_lcd_set_pixel(MAIN_MENU_OFFSET_X+((pf%MAIN_MENU_GRID_X) * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)) % (MAIN_MENU_GRID_X*(MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)), + MAIN_MENU_OFFSET_Y+23+((pf/MAIN_MENU_GRID_X) * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)) % (MAIN_MENU_GRID_Y*(MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)), FALSE); + hal_lcd_set_pixel(MAIN_MENU_OFFSET_X+23+((pf%MAIN_MENU_GRID_X) * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)) % (MAIN_MENU_GRID_X*(MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)), + MAIN_MENU_OFFSET_Y+23+((pf/MAIN_MENU_GRID_X) * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)) % (MAIN_MENU_GRID_Y*(MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)), FALSE); + + + // finally a nice border + oswald_draw_line(3, 0, 95, 0); + oswald_draw_line(2, 1, 95, 1); + oswald_draw_line(1, 2, 95, 2); + + oswald_draw_line(0, 3, 0, 92); + oswald_draw_line(1, 3, 1, 93); + oswald_draw_line(2, 3, 2, 94); + + oswald_draw_line(1, 93, 95, 93); + oswald_draw_line(2, 94, 95, 94); + oswald_draw_line(3, 95, 95, 95); + + hal_lcd_update_display(); +} + +event_ret_t handle_main_menu_buttons(watch_button button, main_menu_data_t *sdata) +{ + switch (button) { + case BUTTON_A: + sdata->pos++; + if (sdata->pos > LAST_SCREEN) + sdata->pos = 2; + draw_main_menu_screen(&main_menu_screen); + return EVENT_RET_HANDLED; + break; + case BUTTON_B: + sdata->pos--; + if (sdata->pos < 2) + sdata->pos = LAST_SCREEN; + draw_main_menu_screen(&main_menu_screen); + return EVENT_RET_HANDLED; + break; + case BUTTON_C: + if (sdata->pos < LAST_SCREEN) { + OswaldState.screen_id = sdata->pos; + OswaldState.screen = &OswaldScreens[OswaldState.screen_id]; + OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL); + } else { + OswaldState.screen_id = IDLE_SCREEN; + OswaldState.screen = &OswaldScreens[OswaldState.screen_id]; + OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL); + } + return EVENT_RET_HANDLED; + break; + default: + break; + } + + return EVENT_RET_UNHANDLED; +} + +/* after MAIN_MENU_TIMEOUT seconds return to IDLE_SCREEN */ +#define MAIN_MENU_TIMEOUT 10 + +event_ret_t main_menu_handle_events(uint16_t event, void *data) +{ + switch (event) { + case EVENT_SCREEN_VISIBLE: + main_menu_screen.tmo = 0; + main_menu_screen.pos = 2; + draw_main_menu_screen(&main_menu_screen); + return EVENT_RET_HANDLED; + break; + case EVENT_USER_BUTTONS: + dbg_out("button event %d\n", *(int *)data); + main_menu_screen.tmo = 0; + return handle_main_menu_buttons(*(watch_button *)data, &main_menu_screen); + break; + case EVENT_ONE_SEC_TIMER: + main_menu_screen.tmo++; + if (main_menu_screen.tmo > MAIN_MENU_TIMEOUT) { + OswaldState.screen_id = IDLE_SCREEN; + OswaldState.screen = &OswaldScreens[OswaldState.screen_id]; + OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL); + } + return EVENT_RET_HANDLED; + default: + break; + }; + return EVENT_RET_UNHANDLED; +} + + +/* + * Accelerometer and sensor display screen + */ +typedef struct { + accel_data_t accdata; +} accelscreen_data_t; +static accelscreen_data_t accel_screen = { + { 0, 0, 0}, +}; + +void draw_accel_screen(accel_data_t *accel_data) +{ + uint8_t x,y; + + hal_lcd_clear_display(); + + oswald_draw_bitmap(36, 0, acc_icon_width, acc_icon_height, acc_icon_bits); + + oswald_draw_bitmap(81, 79, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits); + + oswald_write_string(1, 40, FONT_6x9, FALSE, "X:"); + oswald_write_number(15, 40, FONT_6x9, FALSE, accel_data->x); + oswald_write_string(1, 52, FONT_6x9, FALSE, "Y:"); + oswald_write_number(15, 52, FONT_6x9, FALSE, accel_data->y); + oswald_write_string(1, 64, FONT_6x9, FALSE, "Z:"); + oswald_write_number(15, 64, FONT_6x9, FALSE, accel_data->z); + + oswald_write_string(1, 85, FONT_6x9, FALSE, "Light:"); + oswald_write_number(50, 85, FONT_6x9, FALSE, 0); + + oswald_draw_line(40, 30, 92, 30); + oswald_draw_line(92, 30, 92, 82); + oswald_draw_line(40, 82, 92, 82); + oswald_draw_line(40, 82, 40, 30); + + x = 41+25+((accel_data->x * 50) / (254)); + y = 31+25-((accel_data->y * 50) / (254)); + oswald_draw_pixel(x, y, TRUE); + oswald_draw_pixel(x+1, y, TRUE); + oswald_draw_pixel(x-1, y, TRUE); + oswald_draw_pixel(x, y+1, TRUE); + oswald_draw_pixel(x, y-1, TRUE); + + hal_lcd_update_display(); +} + +event_ret_t accel_handle_events(uint16_t event, void *data) +{ + switch (event) { + case EVENT_SCREEN_VISIBLE: + draw_accel_screen(&accel_screen.accdata); + hal_accelerometer_enable(); + return EVENT_RET_HANDLED; + break; + case EVENT_SCREEN_DESTROY: + hal_accelerometer_disable(); + return EVENT_RET_HANDLED; + break; + case EVENT_ACCEL_UPDATE: { + accel_data_t *accel_data = (accel_data_t *)data; + accel_screen.accdata.x = accel_data->x; + accel_screen.accdata.y = accel_data->y; + accel_screen.accdata.z = accel_data->z; + draw_accel_screen(&accel_screen.accdata); + }; + return EVENT_RET_HANDLED; + break; + case EVENT_USER_BUTTONS: + dbg_out("button event %d\n", *(int *)data); + break; + default: + return EVENT_RET_UNHANDLED; + break; + }; + return EVENT_RET_UNHANDLED; +} + + +/* + * Date / time setup screen + */ +typedef struct { + uint8_t pos; + boolean set_mode; + boolean on; +} datetime_setup_data_t; +static datetime_setup_data_t dt_setup_screen = { + 0, + FALSE, + TRUE +}; + +void draw_datetime_setup_screen(datetime_setup_data_t *sdata) +{ + hal_lcd_clear_display(); + + oswald_draw_bitmap(36, 0, timesetup_icon_width, timesetup_icon_height, timesetup_icon_bits); + + oswald_draw_bitmap(81, 6, upbutton_icon_width, upbutton_icon_height, upbutton_icon_bits); + oswald_draw_bitmap(81, 38, downbutton_icon_width, downbutton_icon_height, downbutton_icon_bits); + oswald_draw_bitmap(81, 70, rightbutton_icon_width, rightbutton_icon_height, rightbutton_icon_bits); + + if ((sdata->pos == 0 && sdata->on) || sdata->pos != 0) { + oswald_write_character(2, 30, FONT_LCD13x21, FALSE, (OswaldClk.hour / 10)); + oswald_write_character(15, 30, FONT_LCD13x21, FALSE, (OswaldClk.hour % 10)); + } + oswald_write_character(25, 30, FONT_LCD13x21, FALSE, 10); + + if ((sdata->pos == 1 && sdata->on) || sdata->pos != 1) { + oswald_write_character(34, 30, FONT_LCD13x21, FALSE, (OswaldClk.minute / 10)); + oswald_write_character(47, 30, FONT_LCD13x21, FALSE, (OswaldClk.minute % 10)); + } + + if ((sdata->pos == 2 && sdata->on) || sdata->pos != 2) { + oswald_write_character(61, 38, FONT_LCD8x13, FALSE, (OswaldClk.second / 10)); + oswald_write_character(69, 38, FONT_LCD8x13, FALSE, (OswaldClk.second % 10)); + } + + + if ((sdata->pos == 3 && sdata->on) || sdata->pos != 3) { + oswald_write_number(2, 55, FONT_DROID8x12, FALSE, OswaldClk.day); + } + oswald_write_character(15, 55, FONT_DROID8x12, FALSE, '.'); + if ((sdata->pos == 4 && sdata->on) || sdata->pos != 4) { + oswald_write_number(21, 55, FONT_DROID8x12, FALSE, OswaldClk.month); + } + oswald_write_character(36, 55, FONT_DROID8x12, FALSE, '.'); + if ((sdata->pos == 5 && sdata->on) || sdata->pos != 5) { + oswald_write_number(43, 55, FONT_DROID8x12, FALSE, OswaldClk.year); + } + + if ((sdata->pos == 6 && sdata->on) || sdata->pos != 6) { + if (OswaldClk.clk24hr) { + oswald_draw_bitmap(2, 76, checked_icon_width, checked_icon_height, checked_icon_bits); + } else { + oswald_draw_bitmap(2, 76, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits); + } + } + oswald_write_string(15, 73, FONT_DROID8x12, FALSE, "24hr"); + + if ((sdata->pos == 7 && sdata->on) || sdata->pos != 7) { + if (OswaldClk.day_first) { + oswald_draw_bitmap(2, 86, checked_icon_width, checked_icon_height, checked_icon_bits); + } else { + oswald_draw_bitmap(2, 86, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits); + } + } + oswald_write_string(15, 83, FONT_DROID8x12, FALSE, "dd.mm. mm/dd"); + + hal_lcd_update_display(); +} + +void datetime_handle_updown(uint8_t pos, int8_t incr) +{ + switch (pos) { + case 0: // hour + if (OswaldClk.hour == 0 && incr == -1) { + OswaldClk.hour = 23; + break; + }; + OswaldClk.hour += incr; + if (OswaldClk.hour > 23) + OswaldClk.hour = 0; + break; + case 1: // minute + if (OswaldClk.minute == 0 && incr == -1) { + OswaldClk.minute = 59; + break; + }; + OswaldClk.minute += incr; + if (OswaldClk.minute > 59) + OswaldClk.minute = 0; + break; + case 2: // second + OswaldClk.second = 0; + break; + case 3: // day + if (OswaldClk.day == 1 && incr == -1) { + OswaldClk.day = 31; + break; + }; + OswaldClk.day += incr; + if (OswaldClk.day > 31) + OswaldClk.day = 1; + break; + case 4: // month + if (OswaldClk.month == 1 && incr == -1) { + OswaldClk.month = 12; + break; + }; + OswaldClk.month += incr; + if (OswaldClk.month > 12) + OswaldClk.month = 1; + break; + case 5: // year + OswaldClk.year += incr; + break; + case 6: // 24hr / 12hr + if (OswaldClk.clk24hr) + OswaldClk.clk24hr = FALSE; + else + OswaldClk.clk24hr = TRUE; + break; + case 7: // dd.mm. / mm/dd + if (OswaldClk.day_first) + OswaldClk.day_first = FALSE; + else + OswaldClk.day_first = TRUE; + break; + default: + break; + }; + if (pos == 2) + hal_set_rtc(&OswaldClk, TRUE); + else + hal_set_rtc(&OswaldClk, FALSE); +} + +event_ret_t handle_setup_datetime_buttons(watch_button button, datetime_setup_data_t *sdata) +{ + switch (button) { + case BUTTON_A: + datetime_handle_updown(sdata->pos, 1); + break; + case BUTTON_B: + datetime_handle_updown(sdata->pos, -1); + break; + case BUTTON_C: + sdata->pos++; + sdata->pos %= 8; + break; + case BUTTON_F: + OswaldState.screen->event_func(EVENT_SCREEN_DESTROY, NULL); + OswaldState.screen_id = IDLE_SCREEN; + OswaldState.screen = &OswaldScreens[OswaldState.screen_id]; + OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL); + return EVENT_RET_HANDLED; + break; + default: + return EVENT_RET_UNHANDLED; + break; + } + draw_datetime_setup_screen(sdata); + return EVENT_RET_HANDLED; +} + +event_ret_t datetime_setup_events(uint16_t event, void *data) +{ + switch (event) { + case EVENT_SCREEN_VISIBLE: + dt_setup_screen.pos = 0; + draw_datetime_setup_screen(&dt_setup_screen); + hal_enable_halfsecond_timer(); + return EVENT_RET_HANDLED; + break; + case EVENT_SCREEN_DESTROY: + hal_disable_halfsecond_timer(); + return EVENT_RET_HANDLED; + break; + case EVENT_USER_BUTTONS: + dbg_out("button event %d\n", *(int *)data); + return handle_setup_datetime_buttons(*(watch_button *)data, &dt_setup_screen); + break; + case EVENT_HALF_SEC_TIMER: + if (dt_setup_screen.on) + dt_setup_screen.on = FALSE; + else + dt_setup_screen.on = TRUE; + draw_datetime_setup_screen(&dt_setup_screen); + return EVENT_RET_HANDLED; + break; + default: + return EVENT_RET_UNHANDLED; + break; + }; + return EVENT_RET_UNHANDLED; +} + + +/* + * Alarm setup screen + */ +typedef struct { + uint8_t pos; + boolean set_mode; + boolean on; +} alarm_setup_data_t; +static alarm_setup_data_t alarm_setup_screen = { + 0, + FALSE, + TRUE +}; + +void draw_alarm_setup_screen(alarm_setup_data_t *sdata) +{ + hal_lcd_clear_display(); + + oswald_draw_bitmap(36, 0, alarm_icon_width, alarm_icon_height, alarm_icon_bits); + + if (sdata->set_mode) { + oswald_draw_bitmap(81, 6, upbutton_icon_width, upbutton_icon_height, upbutton_icon_bits); + oswald_draw_bitmap(81, 38, downbutton_icon_width, downbutton_icon_height, downbutton_icon_bits); + oswald_draw_bitmap(81, 70, rightbutton_icon_width, rightbutton_icon_height, rightbutton_icon_bits); + } else { + oswald_draw_bitmap(81, 70, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits); + } + + if ((sdata->pos == 0 && sdata->on) || sdata->pos != 0) { + oswald_write_character(18, 30, FONT_LCD13x21, FALSE, (OswaldAlarm.hour / 10)); + oswald_write_character(32, 30, FONT_LCD13x21, FALSE, (OswaldAlarm.hour % 10)); + } + oswald_write_character(42, 30, FONT_LCD13x21, FALSE, 10); + + if ((sdata->pos == 1 && sdata->on) || sdata->pos != 1) { + oswald_write_character(53, 30, FONT_LCD13x21, FALSE, (OswaldAlarm.minute / 10)); + oswald_write_character(67, 30, FONT_LCD13x21, FALSE, (OswaldAlarm.minute % 10)); + } + + oswald_write_character(3, 55, FONT_6x9, FALSE, 'S'); + oswald_write_character(15, 55, FONT_6x9, FALSE, 'M'); + oswald_write_character(27, 55, FONT_6x9, FALSE, 'T'); + oswald_write_character(39, 55, FONT_6x9, FALSE, 'W'); + oswald_write_character(51, 55, FONT_6x9, FALSE, 'T'); + oswald_write_character(63, 55, FONT_6x9, FALSE, 'F'); + oswald_write_character(75, 55, FONT_6x9, FALSE, 'S'); + + if ((sdata->pos == 2 && sdata->on) || sdata->pos != 2) { + // oswald_write_character(3, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_SUNDAY) ? 'x' : '_'); + if ((OswaldAlarm.wday & WDAY_SUNDAY)) + oswald_draw_bitmap(3, 66, checked_icon_width, checked_icon_height, checked_icon_bits); + else + oswald_draw_bitmap(3, 66, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits); + } + if ((sdata->pos == 3 && sdata->on) || sdata->pos != 3) { + // oswald_write_character(15, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_MONDAY) ? 'x' : '_'); + if ((OswaldAlarm.wday & WDAY_MONDAY)) + oswald_draw_bitmap(15, 66, checked_icon_width, checked_icon_height, checked_icon_bits); + else + oswald_draw_bitmap(15, 66, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits); + } + if ((sdata->pos == 4 && sdata->on) || sdata->pos != 4) { + // oswald_write_character(27, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_TUESDAY) ? 'x' : '_'); + if ((OswaldAlarm.wday & WDAY_TUESDAY)) + oswald_draw_bitmap(27, 66, checked_icon_width, checked_icon_height, checked_icon_bits); + else + oswald_draw_bitmap(27, 66, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits); + } + if ((sdata->pos == 5 && sdata->on) || sdata->pos != 5) { + // oswald_write_character(39, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_WEDNESDAY) ? 'x' : '_'); + if ((OswaldAlarm.wday & WDAY_WEDNESDAY)) + oswald_draw_bitmap(39, 66, checked_icon_width, checked_icon_height, checked_icon_bits); + else + oswald_draw_bitmap(39, 66, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits); + } + if ((sdata->pos == 6 && sdata->on) || sdata->pos != 6) { + // oswald_write_character(51, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_THURSDAY) ? 'x' : '_'); + if ((OswaldAlarm.wday & WDAY_THURSDAY)) + oswald_draw_bitmap(51, 66, checked_icon_width, checked_icon_height, checked_icon_bits); + else + oswald_draw_bitmap(51, 66, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits); + } + if ((sdata->pos == 7 && sdata->on) || sdata->pos != 7) { + // oswald_write_character(63, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_FRIDAY) ? 'x' : '_'); + if ((OswaldAlarm.wday & WDAY_FRIDAY)) + oswald_draw_bitmap(63, 66, checked_icon_width, checked_icon_height, checked_icon_bits); + else + oswald_draw_bitmap(63, 66, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits); + } + if ((sdata->pos == 8 && sdata->on) || sdata->pos != 8) { + // oswald_write_character(75, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_SATURDAY) ? 'x' : '_'); + if ((OswaldAlarm.wday & WDAY_SATURDAY)) + oswald_draw_bitmap(75, 66, checked_icon_width, checked_icon_height, checked_icon_bits); + else + oswald_draw_bitmap(75, 66, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits); + } + + hal_lcd_update_display(); +} + +void alarm_handle_updown(uint8_t pos, int8_t incr) +{ + switch (pos) { + case 0: // hour + if (OswaldAlarm.hour == 0 && incr == -1) { + OswaldAlarm.hour = 23; + break; + }; + OswaldAlarm.hour += incr; + if (OswaldAlarm.hour > 23) + OswaldAlarm.hour = 0; + break; + case 1: // minute + if (OswaldAlarm.minute == 0 && incr == -1) { + OswaldAlarm.minute = 59; + break; + }; + OswaldAlarm.minute += incr; + if (OswaldAlarm.minute > 59) + OswaldAlarm.minute = 0; + break; + case 2: // sunday + OswaldAlarm.wday ^= WDAY_SUNDAY; + break; + case 3: // monday + OswaldAlarm.wday ^= WDAY_MONDAY; + break; + case 4: // tuesday + OswaldAlarm.wday ^= WDAY_TUESDAY; + break; + case 5: // wednesday + OswaldAlarm.wday ^= WDAY_WEDNESDAY; + break; + case 6: // thursday + OswaldAlarm.wday ^= WDAY_THURSDAY; + break; + case 7: // friday + OswaldAlarm.wday ^= WDAY_FRIDAY; + break; + case 8: // saturday + OswaldAlarm.wday ^= WDAY_SATURDAY; + break; + default: + break; + }; +} + +event_ret_t handle_setup_alarm_buttons(watch_button button, alarm_setup_data_t *sdata) +{ + if (alarm_setup_screen.set_mode) { + switch (button) { + case BUTTON_A: + alarm_handle_updown(sdata->pos, 1); + break; + case BUTTON_B: + alarm_handle_updown(sdata->pos, -1); + break; + case BUTTON_C: + sdata->pos++; + sdata->pos %= 9; + break; + case BUTTON_F: + alarm_setup_screen.set_mode = FALSE; + break; + default: + return EVENT_RET_UNHANDLED; + break; + } + } else { + switch (button) { + case BUTTON_F: + alarm_setup_screen.set_mode = TRUE; + break; + default: + return EVENT_RET_UNHANDLED; + break; + } + } + draw_alarm_setup_screen(sdata); + + return EVENT_RET_HANDLED; +} + +event_ret_t alarm_setup_events(uint16_t event, void *data) +{ + switch (event) { + case EVENT_SCREEN_VISIBLE: + alarm_setup_screen.pos = 0; + alarm_setup_screen.on = TRUE; + alarm_setup_screen.set_mode = FALSE; + draw_alarm_setup_screen(&alarm_setup_screen); + hal_enable_halfsecond_timer(); + return EVENT_RET_HANDLED; + break; + case EVENT_SCREEN_DESTROY: + hal_disable_halfsecond_timer(); + return EVENT_RET_HANDLED; + break; + case EVENT_USER_BUTTONS: + dbg_out("button event %d\n", *(int *)data); + return handle_setup_alarm_buttons(*(watch_button *)data, &alarm_setup_screen); + break; + case EVENT_HALF_SEC_TIMER: + if (alarm_setup_screen.set_mode) { + if (alarm_setup_screen.on) + alarm_setup_screen.on = FALSE; + else + alarm_setup_screen.on = TRUE; + } else + alarm_setup_screen.on = TRUE; + draw_alarm_setup_screen(&alarm_setup_screen); + return EVENT_RET_HANDLED; + break; + default: + return EVENT_RET_UNHANDLED; + break; + }; + return EVENT_RET_UNHANDLED; +} + + +/* + * Test menu + */ +typedef struct { + uint8_t menu_pos; +} test_menu_t; +static test_menu_t test_menu = { 0 }; + +void draw_menu_test_screen(void) +{ + hal_lcd_clear_display(); +#if 0 + SetFont(MetaWatch16); + WriteLcdString(2, 2, "Menu"); + SetFont(MetaWatch7); + WriteLcdString(2, 20, "Item 1"); + WriteLcdString(2, 29, "Item 2"); + WriteLcdString(2, 38, "Item 3"); + WriteLcdString(2, 47, "Item 4"); + WriteLcdString(2, 56, "Item 5"); + + WriteLcdString(50, 20+(9*test_menu.menu_pos), "*"); +#endif + oswald_write_string(2, 2, FONT_DROID8x12, FALSE, "Menu"); + + oswald_write_string(2, 20, FONT_DROID8x12, FALSE, "Item 1"); + oswald_write_string(2, 29, FONT_DROID8x12, FALSE, "Item 2"); + oswald_write_string(2, 38, FONT_DROID8x12, FALSE, "Item 3"); + oswald_write_string(2, 47, FONT_DROID8x12, FALSE, "Item 4"); + oswald_write_string(2, 56, FONT_DROID8x12, FALSE, "Item 5"); + + oswald_write_character(50, 18+(9*test_menu.menu_pos), FONT_6x9, FALSE, 0x11); + + hal_lcd_update_display(); +} + +event_ret_t handle_menu_user_buttons(watch_button button) +{ + switch (button) { + case BUTTON_A: + test_menu.menu_pos--; + test_menu.menu_pos %= 5; + break; + case BUTTON_B: + test_menu.menu_pos++; + test_menu.menu_pos %= 5; + break; + default: + return EVENT_RET_UNHANDLED; + break; + } + draw_menu_test_screen(); + return EVENT_RET_HANDLED; +} + +event_ret_t test_menu_handle_events(uint16_t event, void *data) +{ + switch (event) { + case EVENT_USER_BUTTONS: + dbg_out("button event %d\n", *(int *)data); + return handle_menu_user_buttons(*(watch_button *)data); + break; + case EVENT_SCREEN_VISIBLE: + test_menu.menu_pos = 0; + draw_menu_test_screen(); + break; + default: + return EVENT_RET_UNHANDLED; + break; + }; + return EVENT_RET_HANDLED; +} + + +/* + * Stop Watch + */ +typedef struct { + uint8_t hr; + uint8_t min; + uint8_t sec; + uint8_t csec; + uint8_t lapse_hr; + uint8_t lapse_min; + uint8_t lapse_sec; + uint8_t lapse_csec; + boolean running; +} stopwatch_data_t; +static stopwatch_data_t stopwatch_screen = { 0, 0, 0, 0, 0, 0, 0, 0, FALSE }; + + +static void draw_stop_watch_screen(stopwatch_data_t *sdata) +{ + int gRow = 1; + int gColumn = 35; + + hal_lcd_clear_display(); + + oswald_draw_bitmap(36, 0, stopwatch_icon_width, stopwatch_icon_height, stopwatch_icon_bits); + + oswald_draw_bitmap(81, 6, startstopbutton_icon_width, startstopbutton_icon_height, startstopbutton_icon_bits); + oswald_draw_bitmap(81, 38, lapsebutton_icon_width, lapsebutton_icon_height, lapsebutton_icon_bits); + oswald_draw_bitmap(81, 70, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits); + + gRow += 3 + oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (sdata->hr % 10)); + gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (sdata->min / 10)); + gRow += 3 + oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (sdata->min % 10)); + gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (sdata->sec / 10)); + gRow += 3 + oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (sdata->sec % 10)); + gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, FALSE, (sdata->csec / 10)); + + gRow = 6; + gColumn = 61; + gRow += 13 + oswald_write_character(gRow, gColumn, FONT_LCD8x13, FALSE, (sdata->lapse_hr % 10)); + gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, FALSE, (sdata->lapse_min / 10)); + gRow += 13 + oswald_write_character(gRow, gColumn, FONT_LCD8x13, FALSE, (sdata->lapse_min % 10)); + gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, FALSE, (sdata->lapse_sec / 10)); + gRow += 3 + oswald_write_character(gRow, gColumn, FONT_LCD8x13, FALSE, (sdata->lapse_sec % 10)); + gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, FALSE, (sdata->lapse_csec / 10)); + gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, FALSE, (sdata->lapse_csec % 10)); + + hal_lcd_update_display(); +} + +event_ret_t handle_stop_watch_buttons(watch_button button) +{ + switch (button) { + case BUTTON_A: // start/stop + if (stopwatch_screen.running) { + hal_disable_centisecond_timer(); + stopwatch_screen.running = FALSE; + } else { + hal_enable_centisecond_timer(); + stopwatch_screen.running = TRUE; + } + return EVENT_RET_HANDLED; + break; + case BUTTON_B: // lapse + stopwatch_screen.lapse_hr = stopwatch_screen.hr; + stopwatch_screen.lapse_min = stopwatch_screen.min; + stopwatch_screen.lapse_sec = stopwatch_screen.sec; + stopwatch_screen.lapse_csec = stopwatch_screen.csec; + return EVENT_RET_HANDLED; + break; + case BUTTON_F: // reset + stopwatch_screen.hr = 0; + stopwatch_screen.min = 0; + stopwatch_screen.sec = 0; + stopwatch_screen.csec = 0; + stopwatch_screen.lapse_hr = 0; + stopwatch_screen.lapse_min = 0; + stopwatch_screen.lapse_sec = 0; + stopwatch_screen.lapse_csec = 0; + return EVENT_RET_HANDLED; + break; + default: + return EVENT_RET_UNHANDLED; + break; + } + return EVENT_RET_UNHANDLED; +} + +event_ret_t stop_watch_handle_events(uint16_t event, void *data) +{ + switch (event) { + case EVENT_USER_BUTTONS: + dbg_out("button event %d\n", *(int *)data); + draw_stop_watch_screen(&stopwatch_screen); + return handle_stop_watch_buttons(*(watch_button *)data); + break; + case EVENT_SCREEN_VISIBLE: + draw_stop_watch_screen(&stopwatch_screen); + return EVENT_RET_HANDLED; + break; + case EVENT_SCREEN_DESTROY: + hal_disable_centisecond_timer(); + stopwatch_screen.running = FALSE; + return EVENT_RET_HANDLED; + break; + case EVENT_CS_TIMER: + stopwatch_screen.csec++; + if (stopwatch_screen.csec > 99) { + stopwatch_screen.csec = 0; + stopwatch_screen.sec++; + }; + if (stopwatch_screen.sec > 59) { + stopwatch_screen.sec = 0; + stopwatch_screen.min++; + }; + if (stopwatch_screen.min > 59) { + stopwatch_screen.min = 0; + stopwatch_screen.hr++; + }; + if (stopwatch_screen.hr > 59) { + stopwatch_screen.hr = 0; + }; + if (stopwatch_screen.csec % 10 == 0) + draw_stop_watch_screen(&stopwatch_screen); + //update_stop_watch_screen(&stopwatch_screen); + return EVENT_RET_HANDLED; + break; + default: + return EVENT_RET_UNHANDLED; + break; + }; + return EVENT_RET_HANDLED; +} + + +/* + * Alarm screen, shown when alarm is fired + */ +void draw_alarm_screen(void) +{ + hal_lcd_clear_display(); + + oswald_draw_bitmap(36, 20, alarm_icon_width, alarm_icon_height, alarm_icon_bits); + + oswald_draw_bitmap(81, 70, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits); + + hal_lcd_update_display(); +} + +event_ret_t alarm_handle_events(uint16_t event, void *data) +{ + switch (event) { + case EVENT_SCREEN_VISIBLE: + draw_alarm_screen(); + hal_enable_halfsecond_timer(); + hal_vibration_set_state(TRUE); + return EVENT_RET_HANDLED; + break; + case EVENT_SCREEN_DESTROY: + hal_disable_halfsecond_timer(); + hal_lcd_set_backlight(FALSE); + hal_vibration_set_state(FALSE); + return EVENT_RET_HANDLED; + break; + case EVENT_USER_BUTTONS: + dbg_out("button event %d\n", *(int *)data); + return EVENT_RET_UNHANDLED; + break; + case EVENT_HALF_SEC_TIMER: + hal_lcd_set_backlight(!hal_lcd_get_backlight()); + hal_vibration_set_state(!hal_vibration_get_state()); + dbg_out("timer\n"); + return EVENT_RET_HANDLED; + break; + default: + return EVENT_RET_UNHANDLED; + break; + }; + return EVENT_RET_HANDLED; +} + + +/* + * Bluetooth setup screen + */ +typedef struct { + uint8_t pos; + boolean bt_en; + boolean set_mode; + boolean on; +} bluetooth_data_t; +static bluetooth_data_t bluetooth_screen = { + 0, + FALSE, + FALSE, + TRUE +}; + +void draw_bluetooth_screen(bluetooth_data_t *sdata) +{ + char bstr[20]; + uint8_t *bd_addr; + + hal_lcd_clear_display(); + + oswald_draw_bitmap(36, 0, Bluetooth_icon_width, Bluetooth_icon_height, Bluetooth_icon_bits); + + if (sdata->set_mode) { + oswald_draw_bitmap(81, 6, upbutton_icon_width, upbutton_icon_height, upbutton_icon_bits); + oswald_draw_bitmap(81, 38, downbutton_icon_width, downbutton_icon_height, downbutton_icon_bits); + oswald_draw_bitmap(81, 70, rightbutton_icon_width, rightbutton_icon_height, rightbutton_icon_bits); + } else { + oswald_draw_bitmap(81, 70, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits); + } + + oswald_write_string(1, 30, FONT_DROID8x12, FALSE, "Enable:"); + if ((sdata->pos == 0 && sdata->on) || sdata->pos != 0) { + if (bluetooth_screen.bt_en) + oswald_draw_bitmap(53, 33, checked_icon_width, checked_icon_height, checked_icon_bits); + else + oswald_draw_bitmap(53, 33, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits); + } + oswald_write_string(1, 40, FONT_DROID8x12, FALSE, "State:"); + switch (hal_bluetooth_get_state()) { + case BLUETOOTH_OFF: + oswald_write_string(53, 40, FONT_DROID8x12, FALSE, "off"); + break; + case BLUETOOTH_ON: + oswald_write_string(53, 40, FONT_DROID8x12, FALSE, "on"); + break; + case BLUETOOTH_CONNECTED: + oswald_write_string(53, 40, FONT_DROID8x12, FALSE, "conn."); + break; + default: + break; + }; + oswald_write_string(1, 50, FONT_DROID8x12, FALSE, "Visible:"); + if ((sdata->pos == 1 && sdata->on) || sdata->pos != 1) { + // oswald_write_character(53, 50, FONT_DROID8x12, hal_bluetooth_get_visible() ? 'x' : '_'); + if (hal_bluetooth_get_visible()) + oswald_draw_bitmap(53, 53, checked_icon_width, checked_icon_height, checked_icon_bits); + else + oswald_draw_bitmap(53, 53, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits); + } + + if (hal_bluetooth_get_state() >= BLUETOOTH_ON) { + bd_addr = hal_bluetooth_get_local_bdaddr(); + snprintf(bstr, 20, "%02x:%02x:%02x:%02x:%02x:%02x", bd_addr[5], bd_addr[4], bd_addr[3], bd_addr[2], bd_addr[1], bd_addr[0]); + oswald_write_string(2, 85, FONT_5x7, FALSE, bstr); + } else { + } + + hal_lcd_update_display(); +} + +void bluetooth_handle_updown(uint8_t pos, int8_t incr) +{ + switch (pos) { + case 0: + if (hal_bluetooth_get_state() >= BLUETOOTH_ON) { + hal_bluetooth_set_state(BLUETOOTH_OFF); + bluetooth_screen.bt_en = FALSE; + } else { + hal_bluetooth_set_state(BLUETOOTH_ON); + bluetooth_screen.bt_en = TRUE; + } + break; + case 1: + if (hal_bluetooth_get_state() >= BLUETOOTH_ON && !hal_bluetooth_get_visible()) { + hal_bluetooth_set_visible(TRUE); + } else { + hal_bluetooth_set_visible(FALSE); + } + break; + default: + break; + }; +} + +event_ret_t handle_bluetooth_buttons(watch_button button, bluetooth_data_t *sdata) +{ + if (bluetooth_screen.set_mode) { + switch (button) { + case BUTTON_A: + bluetooth_handle_updown(sdata->pos, 1); + break; + case BUTTON_B: + bluetooth_handle_updown(sdata->pos, -1); + break; + case BUTTON_C: + sdata->pos++; + sdata->pos %= 2; + break; + case BUTTON_F: + bluetooth_screen.set_mode = FALSE; + break; + default: + return EVENT_RET_UNHANDLED; + break; + } + } else { + switch (button) { + case BUTTON_F: + bluetooth_screen.set_mode = TRUE; + break; + default: + return EVENT_RET_UNHANDLED; + break; + } + } + + draw_bluetooth_screen(sdata); + + return EVENT_RET_HANDLED; +} + +event_ret_t bluetooth_screen_events(uint16_t event, void *data) +{ + switch (event) { + case EVENT_SCREEN_VISIBLE: + bluetooth_screen.pos = 0; + bluetooth_screen.bt_en = (hal_bluetooth_get_state() > 0); + draw_bluetooth_screen(&bluetooth_screen); + hal_enable_halfsecond_timer(); + break; + case EVENT_SCREEN_DESTROY: + hal_disable_halfsecond_timer(); + break; + case EVENT_USER_BUTTONS: + dbg_out("button event %d\n", *(int *)data); + return handle_bluetooth_buttons(*(watch_button *)data, &bluetooth_screen); + break; + case EVENT_HALF_SEC_TIMER: + if (bluetooth_screen.set_mode) { + if (bluetooth_screen.on) + bluetooth_screen.on = FALSE; + else + bluetooth_screen.on = TRUE; + } else + bluetooth_screen.on = TRUE; + draw_bluetooth_screen(&bluetooth_screen); + break; + default: + return EVENT_RET_UNHANDLED; + break; + }; + return EVENT_RET_HANDLED; +} + + +/* + * Info Screen + */ +void draw_info_screen(void) +{ + hal_lcd_clear_display(); + + oswald_draw_bitmap(36, 0, info_icon_width, info_icon_height, info_icon_bits); + + oswald_draw_bitmap(81, 70, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits); + + oswald_write_string(2, 29, FONT_DROID8x12, FALSE, "Oswald"); + oswald_write_string(35, 29, FONT_DROID8x12, FALSE, OSWALD_VERSION); + oswald_write_string(2, 41, FONT_DROID8x12, FALSE, "HAL"); + oswald_write_string(35, 41, FONT_DROID8x12, FALSE, (char *)hal_get_version_string()); + oswald_write_string(2, 53, FONT_DROID8x12, FALSE, "Build"); + oswald_write_string(35, 53, FONT_DROID8x12, FALSE, (char *)hal_get_buildno_string()); + oswald_write_string(2, 65, FONT_DROID8x12, FALSE, "Radio"); + oswald_write_string(35, 65, FONT_DROID8x12, FALSE, (char *)hal_get_radio_version_string()); + + hal_lcd_update_display(); +} + +event_ret_t info_screen_handle_events(uint16_t event, void *data) +{ + switch (event) { + case EVENT_SCREEN_VISIBLE: + draw_info_screen(); + return EVENT_RET_HANDLED; + break; + case EVENT_USER_BUTTONS: + dbg_out("button event %d\n", *(int *)data); + break; + default: + return EVENT_RET_UNHANDLED; + break; + }; + return EVENT_RET_UNHANDLED; +} + + +/* + * Messages Screens + */ +typedef struct { + int8_t pos; // marker position + int8_t offset; // offset in msg list +} messages_data_t; +static messages_data_t messages_screen = { + 0, + 0, +}; + +typedef struct { + uint8_t day; + uint8_t month; + uint8_t year; // without century, add +1900 + uint8_t hour; + uint8_t minute; +} msg_timedate_t; + +#define MSG_TYPE_READ 0 +#define MSG_TYPE_NEW 1 +#define MSG_TYPE_END 127 + +typedef struct { + uint8_t type; + msg_timedate_t td; + char *msg; +} message_t; + +uint8_t Msgs = 15; +message_t Msg[] = { + { MSG_TYPE_READ, {9,5,113,0,38}, "Testmessage with more text than fits into the menu." }, + { MSG_TYPE_NEW, {9,5,113,0,39}, "Sitting in the train waiting to arrive." }, + { MSG_TYPE_READ, {9,5,113,0,40}, "People in the train are annoying!" }, + { MSG_TYPE_READ, {9,5,113,0,40}, "Auch auf Deutsch geht das hier und Text können lang sein." }, + { MSG_TYPE_NEW, {8,5,113,0,40}, "Und hier noch eine neue Nachricht, die nun wirklich lang ist, laenger als die anderen." }, + { MSG_TYPE_READ, {9,5,113,0,38}, "Testmessage with more text than fits into the menu." }, + { MSG_TYPE_NEW, {9,5,113,0,39}, "Sitting in the train waiting to arrive." }, + { MSG_TYPE_READ, {9,5,113,0,40}, "People in the train are annoying!" }, + { MSG_TYPE_READ, {9,5,113,0,40}, "Auch auf Deutsch geht das hier und Text können lang sein." }, + { MSG_TYPE_NEW, {8,5,113,0,40}, "Und hier noch eine neue Nachricht, die nun wirklich lang ist, laenger als die anderen." }, + { MSG_TYPE_READ, {9,5,113,0,38}, "Testmessage with more text than fits into the menu." }, + { MSG_TYPE_NEW, {9,5,113,0,39}, "Sitting in the train waiting to arrive." }, + { MSG_TYPE_READ, {9,5,113,0,40}, "People in the train are annoying!" }, + { MSG_TYPE_READ, {9,5,113,0,40}, "Auch auf Deutsch geht das hier und Text können lang sein." }, + { MSG_TYPE_NEW, {8,5,113,0,40}, "Und hier noch eine neue Nachricht, die nun wirklich lang ist, laenger als die anderen." }, + { MSG_TYPE_END, {0,0,0,0,0}, "Exit" }, +}; + +void draw_message_screen(messages_data_t *sdata) +{ + char dstr[32]; + uint8_t strpos, msglen; + uint8_t line; + + hal_lcd_clear_display(); + +#if 0 + oswald_draw_bitmap(81, 6, upbutton_icon_width, upbutton_icon_height, upbutton_icon_bits); + oswald_draw_bitmap(81, 38, downbutton_icon_width, downbutton_icon_height, downbutton_icon_bits); +#endif + oswald_draw_bitmap(81, 70, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits); + + Msg[sdata->offset + sdata->pos].type = MSG_TYPE_READ; + snprintf(dstr, 19, "#%02d/%02d", sdata->pos + sdata->offset + 1, Msgs); + oswald_write_string(30, 0, FONT_5x7, FALSE, dstr); + oswald_draw_line(0,7,95,7); + + + // here goes the text + msglen = strlen(Msg[sdata->pos+sdata->offset].msg); + strpos=0; + line=0; + while ((strpos < msglen) && (line < 6)) { + strpos += oswald_write_string_length(4, 9+(line*12), 84, FONT_DROID8x12, FALSE, &Msg[sdata->pos+sdata->offset].msg[strpos]); + line++; + } + + + oswald_draw_line(0,87,95,87); + + if (Msg[sdata->offset + sdata->pos].type != MSG_TYPE_END) { + snprintf(dstr, 19, "%c %02d.%02d.%04d,%02d:%02d", (Msg[sdata->pos+sdata->offset].type == MSG_TYPE_NEW) ? '*':' ', Msg[sdata->pos+sdata->offset].td.day, Msg[sdata->pos+sdata->offset].td.month, Msg[sdata->pos+sdata->offset].td.year+1900, Msg[sdata->pos+sdata->offset].td.hour, Msg[sdata->pos+sdata->offset].td.minute); + oswald_write_string(2, 89, FONT_5x7, FALSE, dstr); + } + + hal_lcd_update_display(); +} + +event_ret_t handle_message_screen_buttons(watch_button button, messages_data_t *sdata) +{ + switch (button) { + case BUTTON_A: + break; + case BUTTON_B: + return EVENT_RET_HANDLED; + break; + case BUTTON_C: + // OswaldState.screen->event_func(EVENT_SCREEN_DESTROY, NULL); + OswaldState.screen_id = MESSAGES_SCREEN; + OswaldState.screen = &OswaldScreens[OswaldState.screen_id]; + OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL); + return EVENT_RET_HANDLED; + break; + default: + break; + } + + return EVENT_RET_UNHANDLED; +} + +event_ret_t message_screen_handle_events(uint16_t event, void *data) +{ + switch (event) { + case EVENT_SCREEN_VISIBLE: + draw_message_screen(&messages_screen); + return EVENT_RET_HANDLED; + break; + case EVENT_USER_BUTTONS: + dbg_out("button event %d\n", *(int *)data); + return handle_message_screen_buttons(*(watch_button *)data, &messages_screen); + break; + default: + break; + }; + return EVENT_RET_UNHANDLED; +} + +void draw_messages_screen(messages_data_t *sdata) +{ + char dstr[32]; + int i; + + hal_lcd_clear_display(); + + // oswald_draw_bitmap(36, 0, Message_icon_width, Message_icon_height, Message_icon_bits); + + oswald_draw_bitmap(81, 6, upbutton_icon_width, upbutton_icon_height, upbutton_icon_bits); + oswald_draw_bitmap(81, 38, downbutton_icon_width, downbutton_icon_height, downbutton_icon_bits); + oswald_draw_bitmap(81, 70, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits); + + if (Msg[sdata->offset + sdata->pos].type != MSG_TYPE_END) { + snprintf(dstr, 19, "#%02d/%02d", sdata->pos + sdata->offset + 1, Msgs); + oswald_write_string(30, 0, FONT_5x7, FALSE, dstr); + } + oswald_draw_line(0,7,95,7); + + for (i=0; i<6; i++) { + if (Msg[i+sdata->offset].type != MSG_TYPE_END) { + //oswald_write_string_length(4, 9+(i*12), 84, FONT_DROID8x12, (Msg[i+sdata->offset].type == MSG_TYPE_NEW), Msg[i+sdata->offset].msg); + if (Msg[i+sdata->offset].type == MSG_TYPE_NEW) + oswald_write_string_length(4, 9+(i*12), 84, FONT_DROID8x12b, (i+sdata->offset) == (sdata->offset + sdata->pos), Msg[i+sdata->offset].msg); + else + oswald_write_string_length(4, 9+(i*12), 84, FONT_DROID8x12, (i+sdata->offset) == (sdata->offset + sdata->pos), Msg[i+sdata->offset].msg); + } else { + oswald_draw_bitmap(0, 66, leftbutton_icon_width, leftbutton_icon_height, leftbutton_icon_bits); + } + } + + // marker selected msg + oswald_draw_line(1,9,1,81); + oswald_draw_line_ww(1,10+(sdata->pos*12),1,20+(sdata->pos*12),2); + + oswald_draw_line(0,87,95,87); + + if (Msg[sdata->offset + sdata->pos].type != MSG_TYPE_END) { + snprintf(dstr, 19, "%c %02d.%02d.%04d,%02d:%02d", (Msg[sdata->pos+sdata->offset].type == MSG_TYPE_NEW) ? '*':' ', Msg[sdata->pos+sdata->offset].td.day, Msg[sdata->pos+sdata->offset].td.month, Msg[sdata->pos+sdata->offset].td.year+1900, Msg[sdata->pos+sdata->offset].td.hour, Msg[sdata->pos+sdata->offset].td.minute); + oswald_write_string(2, 89, FONT_5x7, FALSE, dstr); + } + + hal_lcd_update_display(); +} + +event_ret_t handle_messages_screen_buttons(watch_button button, messages_data_t *sdata) +{ + switch (button) { + case BUTTON_A: + sdata->pos--; + if (sdata->pos < 0) { + if (sdata->offset > 0) { + sdata->pos = 0; + sdata->offset--; + if (sdata->offset < 0) + sdata->offset = 0; + } else { + sdata->pos = 5; + sdata->offset = (Msgs - 5); + if (sdata->offset < 0) + sdata->offset = 0; + } + } + draw_messages_screen(&messages_screen); + return EVENT_RET_HANDLED; + break; + case BUTTON_B: + sdata->pos++; + if (sdata->pos > 5) { + sdata->pos = 5; + sdata->offset++; + if ((sdata->offset + 5) > Msgs) { + sdata->offset = 0; + sdata->pos = 0; + } + } + draw_messages_screen(&messages_screen); + return EVENT_RET_HANDLED; + break; + case BUTTON_C: + if (Msg[sdata->offset + sdata->pos].type == MSG_TYPE_END) + return EVENT_RET_UNHANDLED; + else + // OswaldState.screen->event_func(EVENT_SCREEN_DESTROY, NULL); + OswaldState.screen_id = MESSAGE_SCREEN; + OswaldState.screen = &OswaldScreens[OswaldState.screen_id]; + OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL); + return EVENT_RET_HANDLED; + break; + default: + break; + } + + return EVENT_RET_UNHANDLED; +} + +event_ret_t messages_screen_handle_events(uint16_t event, void *data) +{ + switch (event) { + case EVENT_SCREEN_VISIBLE: +// messages_screen.pos = 0; +// messages_screen.offset = 0; + draw_messages_screen(&messages_screen); + return EVENT_RET_HANDLED; + break; + case EVENT_USER_BUTTONS: + dbg_out("button event %d\n", *(int *)data); + return handle_messages_screen_buttons(*(watch_button *)data, &messages_screen); + break; + default: + break; + }; + return EVENT_RET_UNHANDLED; +} + diff --git a/ui/oswald_screens.h b/ui/oswald_screens.h new file mode 100644 index 0000000..213b1d5 --- /dev/null +++ b/ui/oswald_screens.h @@ -0,0 +1,28 @@ +#ifndef _OSWALD_SCREENS_H +#define _OSWALD_SCREENS_H + + +event_ret_t main_menu_handle_events(uint16_t event, void *data); + +event_ret_t idle_handle_events(uint16_t event, void *data); + +event_ret_t accel_handle_events(uint16_t event, void *data); + +event_ret_t datetime_setup_events(uint16_t event, void *data); + +event_ret_t alarm_setup_events(uint16_t event, void *data); + +event_ret_t test_menu_handle_events(uint16_t event, void *data); + +event_ret_t stop_watch_handle_events(uint16_t event, void *data); + +event_ret_t alarm_handle_events(uint16_t event, void *data); + +event_ret_t bluetooth_screen_events(uint16_t event, void *data); + +event_ret_t info_screen_handle_events(uint16_t event, void *data); + +event_ret_t messages_screen_handle_events(uint16_t event, void *data); +event_ret_t message_screen_handle_events(uint16_t event, void *data); + +#endif diff --git a/ui/oswald_strings.c b/ui/oswald_strings.c new file mode 100644 index 0000000..44bbeb6 --- /dev/null +++ b/ui/oswald_strings.c @@ -0,0 +1,48 @@ +#include "oswald.h" + +#include "oswald_strings.h" + +uint16_t oswald_strlen(char *string) +{ + int i=0; + + if (string == NULL) + return 0; + + while (string[i] != 0) i++; + + return i; +} + +char *itoa(int16_t value, char* result, int base) +{ + char *ptr = result, *ptr1 = result, tmp_char; + int16_t tmp_value; + + if (result == NULL) + return NULL; + + // check that the base if valid + if (base < 2 || base > 36) { + *result = '\0'; + return result; + } + + do { + tmp_value = value; + value /= base; + *ptr++ = "zyxwvutsrqponmlkjihgfedcba9876543210123456789abcdefghijklmnopqrstuvwxyz" [35 + (tmp_value - value * base)]; + } while ( value ); + + // Apply negative sign + if (tmp_value < 0) + *ptr++ = '-'; + *ptr-- = '\0'; + while (ptr1 < ptr) { + tmp_char = *ptr; + *ptr--= *ptr1; + *ptr1++ = tmp_char; + } + return result; +} + diff --git a/ui/oswald_strings.h b/ui/oswald_strings.h new file mode 100644 index 0000000..845773e --- /dev/null +++ b/ui/oswald_strings.h @@ -0,0 +1,8 @@ +#ifndef _OSWALD_STRINGS_H +#define _OSWALD_STRINGS_H + +uint16_t oswald_strlen(char *string); +char* itoa(int16_t value, char* result, int base); + +#endif + diff --git a/ui/oswald_watch_faces.c b/ui/oswald_watch_faces.c new file mode 100644 index 0000000..b955c74 --- /dev/null +++ b/ui/oswald_watch_faces.c @@ -0,0 +1,298 @@ +#include +#include + +#include "oswald.h" +#include "oswald_main.h" +#include "oswald_hal.h" +#include "oswald_graphics.h" + +#include "oswald_watch_faces.h" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/battery0_icon.xbm" +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/battery25_icon.xbm" +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/battery50_icon.xbm" +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/battery75_icon.xbm" +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/battery100_icon.xbm" +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/charger_icon.xbm" +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/bluetooth_icon.xbm" +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/bluetooth_con_icon.xbm" + + +/* sine table, per degree, factor 100 */ +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +int16_t sintab[]={ + 0, 2, 3, 5, 7, 9, 10, 12, 14, 16, + 17, 19, 21, 22, 24, 26, 28, 29, 31, 33, + 34, 36, 37, 39, 41, 42, 44, 45, 47, 48, + 50, 52, 53, 54, 56, 57, 59, 60, 62, 63, + 64, 66, 67, 68, 69, 71, 72, 73, 74, 75, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 87, 88, 89, 90, 91, 91, 92, 93, 93, + 94, 95, 95, 96, 96, 97, 97, 97, 98, 98, + 98, 99, 99, 99, 99, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 99, 99, 99, 99, + 98, 98, 98, 97, 97, 97, 96, 96, 95, 95, + 94, 93, 93, 92, 91, 91, 90, 89, 88, 87, + 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, + 77, 75, 74, 73, 72, 71, 69, 68, 67, 66, + 64, 63, 62, 60, 59, 57, 56, 54, 53, 52, + 50, 48, 47, 45, 44, 42, 41, 39, 37, 36, + 34, 33, 31, 29, 28, 26, 24, 22, 21, 19, + 17, 16, 14, 12, 10, 9, 7, 5, 3, 2, + 0, -2, -3, -5, -7, -9, -10, -12, -14, -16, + -17, -19, -21, -22, -24, -26, -28, -29, -31, -33, + -34, -36, -37, -39, -41, -42, -44, -45, -47, -48, + -50, -52, -53, -54, -56, -57, -59, -60, -62, -63, + -64, -66, -67, -68, -69, -71, -72, -73, -74, -75, + -77, -78, -79, -80, -81, -82, -83, -84, -85, -86, + -87, -87, -88, -89, -90, -91, -91, -92, -93, -93, + -94, -95, -95, -96, -96, -97, -97, -97, -98, -98, + -98, -99, -99, -99, -99,-100,-100,-100,-100,-100, + -100,-100,-100,-100,-100,-100, -99, -99, -99, -99, + -98, -98, -98, -97, -97, -97, -96, -96, -95, -95, + -94, -93, -93, -92, -91, -91, -90, -89, -88, -87, + -87, -86, -85, -84, -83, -82, -81, -80, -79, -78, + -77, -75, -74, -73, -72, -71, -69, -68, -67, -66, + -64, -63, -62, -60, -59, -57, -56, -54, -53, -52, + -50, -48, -47, -45, -44, -42, -41, -39, -37, -36, + -34, -33, -31, -29, -28, -26, -24, -22, -21, -19, + -17, -16, -14, -12, -10, -9, -7, -5, -3, -2 +}; + +int16_t f_sin(int16_t v) +{ + v %= 360; + return sintab[v]; +} + +int16_t f_cos(int16_t v) +{ + v += 90; + v %= 360; + return sintab[v]; +} + +void draw_status_icons(void) +{ + static uint8_t ci = 0; + + if (OswaldPowerState.source) { + oswald_draw_bitmap(81, 0, charger_icon_width, charger_icon_height, charger_icon_bits); + + if (OswaldPowerState.charge_state != POWER_CHARGER_DONE) { + if (ci==0) oswald_draw_bitmap(81, 0, battery0_icon_width, battery0_icon_height, battery0_icon_bits); + else if (ci==1) oswald_draw_bitmap(81, 0, battery25_icon_width, battery25_icon_height, battery25_icon_bits); + else if (ci==2) oswald_draw_bitmap(81, 0, battery50_icon_width, battery50_icon_height, battery50_icon_bits); + else if (ci==3) oswald_draw_bitmap(81, 0, battery75_icon_width, battery75_icon_height, battery75_icon_bits); + else if (ci==4) oswald_draw_bitmap(81, 0, battery100_icon_width, battery100_icon_height, battery100_icon_bits); + ci++; + ci %= 5; + } else { + oswald_draw_bitmap(81, 0, battery100_icon_width, battery100_icon_height, battery100_icon_bits); + } + } else { + if (OswaldPowerState.percent > 75) + oswald_draw_bitmap(81, 0, battery100_icon_width, battery100_icon_height, battery100_icon_bits); + else if (OswaldPowerState.percent > 50) + oswald_draw_bitmap(81, 0, battery75_icon_width, battery75_icon_height, battery75_icon_bits); + else if (OswaldPowerState.percent > 25) + oswald_draw_bitmap(81, 0, battery50_icon_width, battery50_icon_height, battery50_icon_bits); + else if (OswaldPowerState.percent > 5) + oswald_draw_bitmap(81, 0, battery25_icon_width, battery25_icon_height, battery25_icon_bits); + else + oswald_draw_bitmap(81, 0, battery0_icon_width, battery0_icon_height, battery0_icon_bits); + } + + if (hal_bluetooth_get_state() == BLUETOOTH_ON) + oswald_draw_bitmap(81, 0, bluetooth_icon_width, bluetooth_icon_height, bluetooth_icon_bits); + else if (hal_bluetooth_get_state() == BLUETOOTH_CONNECTED) + oswald_draw_bitmap(81, 0, bluetooth_con_icon_width, bluetooth_con_icon_height, bluetooth_con_icon_bits); +} + +void DrawLcdAnaClock(boolean show_seconds) +{ + int16_t i, x, y, x2, y2; + int16_t tmp; + int8_t hour, minute, seconds; + char tstr[16]; + + hour = OswaldClk.hour; + minute = OswaldClk.minute; + seconds = OswaldClk.second; + + hour -= 3; + if (hour < 0) + hour += 12; + // mf = (1. / 59.) * (double)minute; + minute -= 15; + if (minute < 0) + minute += 60; + seconds -= 15; + if (seconds < 0) + seconds += 60; + + hal_lcd_clear_display(); + + snprintf(tstr, 16, "%2d", OswaldClk.day); + oswald_write_string(70, 43, FONT_6x9, FALSE, tstr); + + // Marker + // plot(R*cos(360° * i/N), R*sin(360° * i/N)) + for (i=0; i<12; i++) { + x = 47 + ((43 * f_cos((360 / 12) * i)) / 100); + y = 47 + ((43 * f_sin((360 / 12) * i)) / 100); + x2 = 47 + ((47 * f_cos((360 / 12) * i)) / 100); + y2 = 47 + ((47 * f_sin((360 / 12) * i)) / 100); + oswald_draw_line_ww(x, y, x2, y2, 2); + // g_printerr("br %d,%d %d,%d\n", x,y,x2,y2); + }; + + // Hour + tmp = 47 + (30 * f_cos(((360 / 12) * hour) + ((OswaldClk.minute * 360) /12 / 60)) / 100); + x = tmp; + tmp = 47 + (30 * f_sin(((360 / 12) * hour) + ((OswaldClk.minute * 360) /12 / 60)) / 100); + y = tmp; + oswald_draw_line_ww(47, 47, x, y, 2); + + // Minute + tmp = 47 + ((40 * f_cos((360 / 60) * minute)) / 100); + x = tmp; + tmp = 47 + ((40 * f_sin((360 / 60) * minute)) / 100); + y = tmp; + oswald_draw_line_ww(47, 47, x, y, 2); + + if (show_seconds) { + // Seconds + tmp = 47 + ((40 * f_cos((360 / 60) * seconds)) / 100); + x = tmp; + tmp = 47 + ((40 * f_sin((360 / 60) * seconds)) / 100); + y = tmp; + oswald_draw_line(47, 47, x, y); + }; + + draw_status_icons(); + + hal_lcd_update_display(); +} + +static const char *daynames[7] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }; + +void DrawLcdDigitalClock(boolean show_seconds) +{ + int gRow = 1; + int gColumn = 1; + char tstr[16]; + int i; + +#if 0 + snprintf(tstr, 16, "%d%% (%dmV)", OswaldPowerState.percent, OswaldPowerState.level); + WriteLcdString(2, 48, tstr); + WriteLcdString(2, 64, OswaldPowerState.source ? "ext" : "bat"); + + /* this makes only sense when the charger is active */ + if (OswaldPowerState.source) { + switch (OswaldPowerState.charge_state) { + case POWER_CHARGER_DONE: + WriteLcdString(2, 80, "charge done"); + break; + case POWER_CHARGER_PRECHARGE: + WriteLcdString(2, 80, "precharging"); + break; + case POWER_CHARGER_CHARGING: + WriteLcdString(2, 80, "charging"); + break; + case POWER_CHARGER_UNK: + WriteLcdString(2, 80, "charge unkn."); + break; + default: + break; + }; + }; +#endif + hal_lcd_clear_display(); + + if (OswaldClk.clk24hr) { + gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (OswaldClk.hour / 10)); + gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (OswaldClk.hour % 10)); + } else { + unsigned char val = OswaldClk.hour; + if (val > 12) { + val -= 12; + oswald_write_string(59, 0, FONT_6x9, FALSE, "PM"); + } else { + oswald_write_string(59, 0, FONT_6x9, FALSE, "AM"); + } + gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (val / 10)); + gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (val % 10)); + } + if (OswaldClk.second % 2) + oswald_write_character(gRow-4, gColumn, FONT_LCD13x21, FALSE, 10); + gRow += 5; + gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (OswaldClk.minute / 10)); + gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (OswaldClk.minute % 10)); + + if (show_seconds) { + oswald_write_character(59, 9, FONT_LCD8x13, FALSE, (OswaldClk.second / 10)); + oswald_write_character(67, 9, FONT_LCD8x13, FALSE, (OswaldClk.second % 10)); + } + + if (OswaldClk.day_first) + snprintf(tstr, 16, "%s %d.%d.%d", daynames[OswaldClk.wday], OswaldClk.day, OswaldClk.month, OswaldClk.year); + else + snprintf(tstr, 16, "%s %d/%d %d", daynames[OswaldClk.wday], OswaldClk.month, OswaldClk.day, OswaldClk.year); + oswald_write_string(0, 25, FONT_DROID8x12, FALSE, tstr); + + gRow = 0; + gColumn = 45; + for (i=0; i 90) { + gRow = 0; + gColumn += 9; + } + // OK, screen ends, leave the loop, no matter what + if (gColumn > 86) + i = 255; + } + + draw_status_icons(); + + hal_lcd_update_display(); +} + diff --git a/ui/oswald_watch_faces.h b/ui/oswald_watch_faces.h new file mode 100644 index 0000000..9918a7b --- /dev/null +++ b/ui/oswald_watch_faces.h @@ -0,0 +1,8 @@ +#ifndef _OSWALD_WATCH_FACES_H +#define _OSWALD_WATCH_FACES_H + +void DrawLcdAnaClock(boolean show_seconds); +void DrawLcdDigitalClock(boolean show_seconds); + +#endif +