--- /dev/null
+/*******************************************************************************
+ *
+ * HAL_FLASH.c
+ * 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
+ *
+ ******************************************************************************/
+
+#include "msp430.h"
+#include "HAL_FLASH.h"
+
+void Flash_SegmentErase(unsigned int *Flash_ptr)
+{
+ FCTL3 = FWKEY; // Clear Lock bit
+ FCTL1 = FWKEY + ERASE; // Set Erase bit
+ *Flash_ptr = 0; // Dummy write to erase Flash seg
+ while (FCTL3 & BUSY); // test busy
+ FCTL1 = FWKEY; // Clear WRT bit
+ FCTL3 = FWKEY + LOCK; // Set LOCK bit
+}
+
+unsigned char Flash_EraseCheck(unsigned int *Flash_ptr, unsigned int len)
+{
+ unsigned int i;
+
+ for (i = 0; i < len; i++) { // was erasing successfull?
+ if (*(Flash_ptr + i) != 0xFF) {
+ return FLASH_STATUS_ERROR;
+ }
+ }
+
+ return FLASH_STATUS_OK;
+}
+
+void FlashWrite_8(unsigned char *Data_ptr, unsigned char *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 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
+}
--- /dev/null
+/*******************************************************************************
+ *
+ * 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 */
--- /dev/null
+/* ****************************************************************************
+ *
+ * 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 */
--- /dev/null
+/*******************************************************************************
+ *
+ * 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__ */
--- /dev/null
+/*******************************************************************************
+ *
+ * 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 */
--- /dev/null
+/*******************************************************************************
+ *
+ * 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;
+}
--- /dev/null
+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
--- /dev/null
+/*******************************************************************************
+ *
+ * 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 */
--- /dev/null
+/*******************************************************************************
+ *
+ * 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
+}
--- /dev/null
+/*******************************************************************************
+ *
+ * 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 */
--- /dev/null
+/*******************************************************************************
+ *
+ * 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
+ }
+
+}
--- /dev/null
+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
--- /dev/null
+/*******************************************************************************
+ *
+ * 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 */
#APPCONFIG = -DDIGITAL -DMW_DEVBOARD_V2 -DCC256x_TRANSP
APPCONFIG = -DDIGITAL -DMW_DIGITAL_V2
-BTCC256x_SCRIPT = bluetooth_init_cc2560_2.44.c
-#BTCC256x_SCRIPT = bluetooth_init_cc2564_2.8.c
+#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
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)
+ 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) \
state = HCI_PACKET_START;
// disable BT UART?
// mabye UCA1CTL1 = UCSWRST ?
+
pdata = EHCILL_GO_TO_SLEEP_ACK;
mw_bt_uart_tx(&pdata, 0x01);
- BT_IO_POUT |= BT_IO_RTS; // pull RTS -> stop data
+ // pull RTS -> stop data
+ BT_IO_POUT |= BT_IO_RTS;
+
+ // enable IRQ on CTS
P1IFG &= ~BT_IO_CTS;
P1IE |= BT_IO_CTS;
if (state == EHCILL_SLEEPING) {
uint8_t ehcill_p = EHCILL_WAKE_UP_IND;
- debug_uart_tx("HCILL wakeup\n");
+ debug_uart_tx("wakeup HCILL\n");
state = HCI_PACKET_START;
mw_bt_uart_tx(&ehcill_p, 1);
__delay_cycles(300000);
void bt_hci_ehcill_wake(void)
{
- uint8_t ehcill_p = EHCILL_WAKE_UP_ACK;
+ 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
// 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
// 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
nop();
break;
case ACCELEROMETER_STPIFG:
+ nop();
break;
case ACCELEROMETER_RXIFG:
if (LengthCount > 0) {
void mw_acc_i2c_write(uint8_t RegisterAddress, uint8_t *pData, uint8_t Length)
{
+ int tmo;
+
if (Length == 0 || pData == 0)
return;
ACCELEROMETER_IE |= UCTXIE;
ACCELEROMETER_TXBUF = RegisterAddress;
- while (AccelerometerBusy)
- nop();
+ 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();
* received. If this is interrupted an extra byte may be read.
* however, it will be discarded during the next read
*/
- if ( LengthCount == 1 ) {
+ 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;
}
char tstr[16];
#endif
+ // it takes at least 20ms to power up
ENABLE_ACCELEROMETER_POWER();
+ __delay_cycles(320000);
mw_acc_init_i2c();
ACCELEROMETER_INT_DISABLE();
mw_acc_disable_i2c();
- DISABLE_ACCELEROMETER_POWER();
+ /// DISABLE_ACCELEROMETER_POWER();
AccelState = ACCEL_STATE_DISABLED;
}
}
return (unsigned char)BattVal;
}
-unsigned int mw_get_amblight_adc_val(void)
+uint16_t mw_get_amblight_adc_val(void)
{
LIGHT_SENSE_ENABLE();
void mw_init_adc(void);
unsigned int mw_get_battery_adc_val(void);
uint8_t mw_get_battery_percentage_from_val(unsigned int BatVal);
-unsigned int mw_get_amblight_adc_val(void);
+uint16_t mw_get_amblight_adc_val(void);
#endif
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 (*len > (BT_RX_MAX_SIZE-(BT_RX_MAX_SIZE/10)))
+ // 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;
}
{
switch (UCA1IV) {
case 2: // RXIFG
+ /* clear IRQ flag */
+ //UCA1IFG &= ~UCRXIFG;
/* wake up to handle the received char */
- LPM3_EXIT;
+ if (UCA1STAT & UCRXERR) {
+ debug_uart_tx("BT UART RXERR: ");
+ if (UCA1STAT & UCOE)
+ debug_uart_tx("overrun\n");
+ if (UCA1STAT & UCPE)
+ debug_uart_tx("parity err\n");
+ if (UCA1STAT & UCFE)
+ debug_uart_tx("frm-err\n");
+ }
bt_rx_buf[bt_rx_buf_wpos++] = UCA1RXBUF;
- /* clear IRQ flag */
- UCA1IFG &= ~UCRXIFG;
bt_rx_buf_wpos %= BT_RX_MAX_SIZE;
+ LPM3_EXIT;
_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:
break;
};
UCA1STAT = 0;
- UCA1CTL0 = UCMODE_0; // UART mode
- UCA1CTL0 &= ~UC7BIT; // 8bit char
+ // UCA1CTL0 = UCMODE_0; // UART mode
+ // UCA1CTL0 &= ~UC7BIT; // 8bit char
+ //UCA1CTL0 |= UCRXEIE;
UCA1CTL1 &= ~UCSWRST;
/* clear interrup flags */
- UCA1IFG = 0;
UCA1IE = UCRXIE;
+ UCA1IFG = 0;
}
#if 0 // Does never finish, presumably trigger does not trigger, unknown :(
pos = 0;
// debug_uart_tx("BT tx: ");
while (pos < len) {
- while ((BT_IO_PIN & BT_IO_CTS)) // wait for CTS to go low
+ // wait for CTS to go low
+ while ((BT_IO_PIN & BT_IO_CTS))
+ nop();
+
+ // do not start a transfer if UART is busy, e.g. rx-ing
+ while (UCA1STAT & UCBUSY)
nop();
UCA1TXBUF = *(unsigned char *) (buf+pos);
}
while (UCA1STAT & UCBUSY)
nop();
- // debug_uart_tx("\n");
}
#endif
mw_init_bt_uart(BT_UART_BD115200);
+ bt_rx_buf_wpos = 0;
+ bt_rx_buf_rpos = 0;
+
/* release BT reset pin */
BT_ENABLE();
load_cc256x_init_script();
debug_uart_tx("init uploaded\n");
}
+
P1IE &= ~BT_IO_CTS;
P1IES &= ~BT_IO_CTS;
+
bt_hci_init();
init_l2cap();
+
mw_bt_enabled = 1;
}
void 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);
#include <stdio.h>
#include <string.h>
+#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 "oswald_main.h"
#include "oswald_hal.h"
-#include "bluetooth_init_cc256x.h"
uint16_t _event_src = 0;
+#define HARDWARE_REVISION_ADDRESS (0x1a07)
+
+unsigned char GetMsp430HardwareRevision(void)
+{
+ unsigned char *pDeviceType = (unsigned char *)(unsigned char *)HARDWARE_REVISION_ADDRESS;
+
+ return pDeviceType[0]+'1';
+}
+
+uint8_t DetermineErrata(void)
+{
+ unsigned char Revision = GetMsp430HardwareRevision();
+
+ switch (Revision) {
+ case 'F':
+ case 'H':
+ return 0;
+ break;
+ default:
+ return 1;
+ break;
+ }
+}
static void set16mhz(void)
{
{
unsigned long i;
+ SetVCore(PMMCOREV_2);
+
/* use external oscillator */
P7SEL |= BIT0 + BIT1;
if ((UCSCTL6 & XT1DRIVE_3) != XT1DRIVE_3) {
UCSCTL8 |= SMCLKREQEN;
+ // 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
+
+ // Wait until high side, low side settled
+ while ((PMMIFG & SVSMLDLYIFG) == 0 && (PMMIFG & SVSMHDLYIFG) == 0)
+ nop();
+ CLEAR_PMM_IFGS();
+
+ // Errata PMM17
+ if (DetermineErrata()) {
+ *(unsigned int*)(0x0110) = 0x9602;
+ *(unsigned int*)(0x0112) |= 0x0800;
+ }
+
/* enable oscillator fault NMI IRQ */
// SFRIE1 = OFIE;
}
DISABLE_LCD_LED(); // frontlight
CONFIG_DEBUG_PINS();
CONFIG_ACCELEROMETER_PINS();
- DISABLE_ACCELEROMETER_POWER(); // starts from config 5 and later
+ //DISABLE_ACCELEROMETER_POWER(); // starts from config 5 and later
+ ENABLE_ACCELEROMETER_POWER(); // starts from config 5 and later
HARDWARE_CFG_SENSE_INIT();
{
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;
+ nop();
+#if defined MW_DEVBOARD_V2
+ LED7_TOGGLE();
+#endif
break;
default:
break;
char clk_str[16];
snprintf(clk_str, 16, "%02d:%02d.%02d %d\n", RTCHOUR, RTCMIN, RTCSEC, RTCDOW);
debug_uart_tx(clk_str);
- // bt_l2cap_send_channel(0x40, clk_str, strlen(clk_str));
}
#endif
nop();
} else if (c == '-') {
nop();
- } else if (c == 't') {
- int i;
- debug_uart_tx("cc256x ini content:\n");
- for (i=0; i<16; i++) {
- snprintf(tstr, 16, "0x%04x 0x%02x\n", i, cc256x_init_script[i]);
- debug_uart_tx(tstr);
- }
} else if (c == 'H') {
uint8_t dclass[3];
dclass[0] = BT_MW_DEVICE_CLASS & 0xff;
void start_timer(int cycles)
{
TA0EX0 = TAIDEX_0;
- TA0CTL = TASSEL_1 | TACLR | MC__STOP; // SMCLK, clear TAR
- TA0CCTL0 = CCIE; // CCR0 interrupt enabled
+ 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
+ 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
+ TA0CCTL0 &= ~CCIE; // CCR0 interrupt enabled
+ TA0CTL = MC__STOP; // Start Timer_A in continuous mode
}
// Timer A0 interrupt service routine
oswald_one_second_tick();
#if defined MW_DEVBOARD_V2
dbg_out_rtc();
- LED7_TOGGLE();
#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
#pragma vector=BUTTON_PORT_VECTOR
__interrupt void BUTTON_ISR (void)
{
+ LPM3_EXIT;
BUTTON_PORT_IFG &= ~ALL_BUTTONS;
// BUTTON_PORT_IE &= ~INT_EDGE_SEL_BUTTONS;
_event_src |= BUTTON_EVENT;
//_button_state = (BUTTON_PORT_IN & ALL_BUTTONS);
- LPM3_EXIT;
}
#pragma vector=PORT1_VECTOR
__interrupt void PORT1_GPIO_ISR (void)
{
if (P1IFG & BT_IO_CTS) {
+ LPM3_EXIT;
+ P1IE &= ~BT_IO_CTS;
P1IFG &= ~BT_IO_CTS;
-
debug_uart_tx("BT CTS irq\n");
- bt_hci_ehcill_wake();
-
+ _event_src |= BT_UART_WAKEUP_EVENT;
+ // bt_hci_ehcill_wake();
+ } else if (P1IFG & ACCELEROMETER_INT_PIN) {
LPM3_EXIT;
- };
- if (P1IFG & ACCELEROMETER_INT_PIN) {
P1IFG &= ~ACCELEROMETER_INT_PIN;
// debug_uart_tx("ACC irq\n");
_event_src |= ACCEL_EVENT;
- LPM3_EXIT;
}
}
int main(void)
{
- int idle = 0;
-
setup_wdt();
setup_pins();
setup_clocks();
setup_rtc();
/* enable interrupts, we will need them! */
- __eint();
+ __enable_interrupt();
#if defined MW_DEVBOARD_V2
init_debug_uart();
mw_init_adc();
mw_init_vibrate_pwm();
-#if 0
- 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;
-#endif
-
oswald_set_time(RTCHOUR, RTCMIN, RTCSEC, TRUE);
oswald_set_date(RTCDAY, RTCMON, RTCYEAR, TRUE);
oswald_init();
while (1) {
/* handle pending events */
- if (handle_event())
- idle++;
- else
- idle = 0;
+ handle_event();
/* enter LPM3 sleep mode waiting for interrupt */
- if (idle > 100) {
- idle = 0;
- // debug_uart_tx("z");
- LPM3;
+ /* 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);
}
};
#define TIMER_100MS_EVENT 1 << 5
#define POWER_SRC_EVENT 1 << 6
#define BT_UART_RCV_EVENT 1 << 7
-#define ACCEL_EVENT 1 << 8
+#define BT_UART_WAKEUP_EVENT 1 << 8
+#define ACCEL_EVENT 1 << 9
extern unsigned int _event_src;
#pragma vector=USCI_A3_VECTOR
__interrupt void UCA_ISR (void)
{
- /* clear IRQ flag */
- UCA3IFG &= ~UCRXIFG;
- UART_RX_CHAR = UCA3RXBUF;
- _event_src |= DBG_UART_RCV_EVENT;
- /* wake up to handle the received char */
- LPM3_EXIT;
+ 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;
+ break;
+ case 4: // TXIFG
+ break;
+ default:
+ break;
+ }
}
void init_debug_uart(void)
/* 16,000,000 115200 138 7 0 */
UCA3BR0 = 138;
- UCA3MCTL = UCBRS_7 + UCBRF_0;
+ UCA3MCTL = UCBRS_7 | UCBRF_0;
/* set P10.4 & P10.5 to UCA function */
P10SEL |= BIT4;
void debug_uart_tx_char(const char c)
{
+ while (UCA3STAT & UCBUSY)
+ nop();
UCA3TXBUF = c;
while ((UCA3IFG & UCTXIFG) == 0 )
nop();
rtc->day = RTCDAY;
rtc->month = RTCMON;
rtc->year = RTCYEAR;
+ rtc->wday = RTCDOW;
}
void hal_set_rtc(clock_state *rtc, boolean set_sec)
mw_acc_disable();
}
+uint16_t hal_amblight_get_val(void)
+{
+ return mw_get_amblight_adc_val();
+}
#define Bluetooth_icon_width 24
#define Bluetooth_icon_height 24
static unsigned char Bluetooth_icon_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x6c, 0x00,
- 0x10, 0xcc, 0x00, 0x30, 0x8c, 0x01, 0x60, 0x0c, 0x03, 0xc0, 0x0c, 0x06,
- 0x80, 0x0d, 0x03, 0x00, 0x8f, 0x01, 0x00, 0xce, 0x00, 0x00, 0x7c, 0x00,
- 0x00, 0x3c, 0x00, 0x00, 0x6e, 0x00, 0x00, 0xcf, 0x00, 0x80, 0x8d, 0x01,
- 0xc0, 0x0c, 0x03, 0x60, 0x0c, 0x06, 0x30, 0x0c, 0x03, 0x10, 0x8c, 0x01,
- 0x00, 0xcc, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x1c, 0x00,
+ 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,
};
--- /dev/null
+#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,
+ };
--- /dev/null
+#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,
+ };
--- /dev/null
+#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,
+ };
#define alarm_icon_width 24
#define alarm_icon_height 24
static unsigned char alarm_icon_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 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,
};
--- /dev/null
+#define checked_icon_width 7
+#define checked_icon_height 7
+static unsigned char checked_icon_bits[] = {
+ 0x7f, 0x41, 0x5d, 0x5d, 0x5d, 0x41, 0x7f, };
--- /dev/null
+#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, };
--- /dev/null
+#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,
+ };
--- /dev/null
+#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,
+ };
--- /dev/null
+#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, };
--- /dev/null
+#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,
+ };
--- /dev/null
+#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,
+ };
--- /dev/null
+#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, };
#define stopwatch_icon_width 24
#define stopwatch_icon_height 24
static unsigned char stopwatch_icon_bits[] = {
- 0x00, 0x18, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x18,
- 0x00, 0xff, 0x3c, 0xc0, 0xff, 0x3f, 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, 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,
};
--- /dev/null
+#define unchecked_icon_width 7
+#define unchecked_icon_height 7
+static unsigned char unchecked_icon_bits[] = {
+ 0x7f, 0x41, 0x41, 0x41, 0x41, 0x41, 0x7f, };
--- /dev/null
+/* -FreeType-Droid Sans-Medium-R-Normal--8-60-96-96-P-44-ISO10646-1 */
+#define FONT_WIDTH_Droid SansMedium_13x14 13
+#define FONT_HEIGHT_Droid SansMedium_13x14 14
+const uint8_t FONT_DATA_Droid SansMedium_13x14[256][29] = {
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,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,0x00,0x00,0xc0,0x00,0xc0,0x00,0xf0,0x01,0xf0,0x01,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x70,0x00,0x30,0x00,0x30,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x20,0x00,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x01,0xb0,0x00,0xb0,0x03,0x70,0x03,0x40,0x03,0x20,0x03,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x90,0x00,0x60,0x00,0x50,0x02,0x90,0x01,0xf0,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,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,0x20,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x20,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x08,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x70,0x00,0x20,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00,0xe0,0x00,0x40,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,0x10,0x00,0x10,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,0x30,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,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x20,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x30,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x20,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x20,0x00,0x40,0x00,0x40,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x60,0x00,0x60,0x00,0x50,0x00,0xf0,0x00,0x40,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x40,0x00,0x40,0x00,0x30,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x10,0x00,0x70,0x00,0x50,0x00,0x50,0x00,0x60,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x50,0x00,0x50,0x00,0x20,0x00,0x50,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x50,0x00,0x50,0x00,0x70,0x00,0x40,0x00,0x30,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x20,0x00,0x30,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x20,0x00,0x60,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,0x10,0x02,0xd0,0x02,0xd0,0x02,0xd0,0x03,0x10,0x00,0xe0,0x01,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0xa0,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x90,0x00,0xf0,0x00,0x90,0x00,0x90,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x10,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,0x10,0x00,0x10,0x00,0x90,0x01,0x10,0x01,0xe0,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x10,0x01,0xf0,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x08,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x50,0x00,0x30,0x00,0x50,0x00,0x50,0x00,0x90,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x04,0x30,0x06,0x30,0x06,0x50,0x05,0x50,0x05,0x90,0x04,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x30,0x01,0x50,0x01,0x50,0x01,0x90,0x01,0x10,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x90,0x00,0x90,0x00,0x70,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x80,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x90,0x00,0x90,0x00,0x70,0x00,0x50,0x00,0x90,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x10,0x00,0x30,0x00,0x40,0x00,0x40,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x10,0x01,0xa0,0x00,0xa0,0x00,0xa0,0x00,0x40,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x04,0x50,0x05,0x50,0x05,0x50,0x05,0x20,0x03,0x20,0x02,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x50,0x00,0x90,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x00,0x50,0x00,0x50,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x20,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x60,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x20,0x00,0x20,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x18,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x60,0x00,0x90,0x00,0x90,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,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x80,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,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x70,0x00,0x90,0x00,0x90,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x10,0x00,0x10,0x00,0x60,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0xe0,0x00,0x90,0x00,0x90,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x10,0x00,0x30,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x50,0x00,0x70,0x00,0xe0,0x00,0x90,0x00,0xf0,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0xf0,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x18,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x50,0x00,0x30,0x00,0x30,0x00,0x50,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x07,0x90,0x04,0x90,0x04,0x90,0x04,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x90,0x00,0x90,0x00,0x60,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x90,0x00,0x90,0x00,0x70,0x00,0x10,0x00,0x10,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x90,0x00,0x90,0x00,0xe0,0x00,0x80,0x00,0x80,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x30,0x00,0x40,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x30,0x00,0x10,0x00,0x10,0x00,0x30,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x01,0x50,0x01,0xb0,0x00,0xa0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x20,0x00,0x20,0x00,0x50,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x20,0x00,0x20,0x00,0x10,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x20,0x00,0x20,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x10,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x40,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x60,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x60,0x00,0x20,0x00,0x20,0x00,0x60,0x00,0x40,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x20,0x00,0x20,0x00,0x70,0x00,0x20,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x50,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x00,0x50,0x00,0x30,0x00,0x70,0x00,0x70,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x30,0x00,0x50,0x00,0x70,0x00,0x40,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,0xd0,0x02,0x50,0x02,0xd0,0x02,0x10,0x02,0xe0,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x50,0x00,0x50,0x00,0xa0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x40,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,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,0xd0,0x03,0xd0,0x02,0xd0,0x02,0x10,0x02,0xe0,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,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,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x50,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00,0xe0,0x00,0x40,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x20,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x40,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x40,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,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0xf0,0x00,0x10,0x00,0x10,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0xb0,0x00,0xb0,0x00,0xb0,0x00,0xc0,0x00,0xc0,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x50,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0xa0,0x00,0xa0,0x00,0x50,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xb0,0x00,0xa0,0x00,0x60,0x03,0xe0,0x02,0x20,0x03,0x20,0x02,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xb0,0x00,0xa0,0x00,0xe0,0x03,0x60,0x02,0x20,0x01,0xa0,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x01,0x40,0x01,0xc0,0x03,0xf0,0x02,0x40,0x03,0x40,0x02,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x10,0x00,0x10,0x00,0x70,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0xa0,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0xa0,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0xa0,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x80,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0xa0,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0xa0,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xc0,0x00,0xa0,0x00,0xa0,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x03,0xc0,0x00,0xa0,0x03,0xa0,0x00,0xf0,0x00,0x90,0x03,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0xe0,0x00,0x80,0x00,0x80,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x10,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x10,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x50,0x00,0x00,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x10,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x10,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x50,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x90,0x00,0xb8,0x00,0x90,0x00,0x90,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x80,0x00,0x00,0x00,0x10,0x01,0x30,0x01,0x50,0x01,0x50,0x01,0x90,0x01,0x10,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0x00,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x80,0x00,0x00,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x40,0x00,0xa0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x90,0x01,0x50,0x01,0x50,0x01,0x30,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0x00,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x88,0x00,0x50,0x00,0x50,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x70,0x00,0x90,0x00,0x90,0x00,0x70,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x90,0x00,0x50,0x00,0x50,0x00,0x90,0x00,0xd0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x50,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x40,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x03,0x80,0x03,0xf0,0x00,0x70,0x03,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x10,0x00,0x10,0x00,0x60,0x00,0x40,0x00,0x40,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x50,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x60,0x00,0xe0,0x00,0x90,0x00,0x90,0x00,0x60,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x80,0x00,0x00,0x00,0xf0,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x60,0x00,0x90,0x00,0x90,0x00,0x60,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0x60,0x00,0x90,0x00,0x90,0x00,0x60,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0x00,0x00,0x60,0x00,0x90,0x00,0x90,0x00,0x60,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x80,0x00,0x00,0x00,0x60,0x00,0x90,0x00,0x90,0x00,0x60,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,0x60,0x00,0x90,0x00,0x90,0x00,0x60,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xd0,0x00,0xb0,0x00,0x60,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0x00,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x20,0x00,0x20,0x00,0x10,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x70,0x00,0x90,0x00,0x90,0x00,0x70,0x00,0x10,0x00,0x10,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x20,0x00,0x20,0x00,0x10,0x00,},
+};
--- /dev/null
+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
--- /dev/null
+/* -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,},
+};
--- /dev/null
+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
--- /dev/null
+/* -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,},
+};
--- /dev/null
+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
--- /dev/null
+/* -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,},
+};
return VibrationState;
}
+uint16_t hal_amblight_get_val(void)
+{
+ return 42;
+}
+
int main(int argc , char ** argv)
{
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,
#if defined(__GNUC__) && (__MSP430X__ > 0)
__attribute__((__far__))
#endif
-#include "fonts/DroidSans-Bold11x14.h"
+#include "fonts/DroidSansBold8x12.h"
const oswald_font oswald_fonts[LAST_FONT] = {
{
(uint8_t *)FONT_DATA_Droid_SansMedium_8x12
}, {
FONT_TYPE_PROPORTIONAL,
- FONT_WIDTH_Droid_SansBold_11x14,
- FONT_HEIGHT_Droid_SansBold_11x14,
- (uint8_t *)FONT_DATA_Droid_SansBold_11x14
+ FONT_WIDTH_Droid_SansBold_8x12,
+ FONT_HEIGHT_Droid_SansBold_8x12,
+ (uint8_t *)FONT_DATA_Droid_SansBold_8x12
},
};
FONT_5x7,
FONT_6x9,
FONT_DROID8x12,
- FONT_DROID11x14b,
+ FONT_DROID8x12b,
LAST_FONT
} oswald_font_face;
#include "oswald_graphics.h"
-void oswald_draw_pixel(const unsigned int xstart, const unsigned int ystart)
+#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 unsigned int bmp_width, const unsigned int bmp_height, const void *bmp)
+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;
cb = (uint8_t *)(bmp + (y * ((bmp_width / 8) + ((bmp_width % 8) ? 1 : 0))) + (x / 8));
// g_printerr("dat %02x %02x %02x\n", (uint8_t)cb[0], (uint8_t)cb[1], (uint8_t)cb[2]);
if (*cb & (1 << (x % 8))) {
- hal_lcd_set_pixel((xstart + x) - xoff, (ystart + y) - yoff, TRUE);
+ if (!invert)
+ hal_lcd_set_pixel((xstart + x) - xoff, (ystart + y) - yoff, TRUE);
// g_printerr("X");
- } /*else {
- g_printerr(".");
- }*/
+ } else {
+ if (invert)
+ hal_lcd_set_pixel((xstart + x) - xoff, (ystart + y) - yoff, TRUE);
+ // g_printerr(".");
+ }
}
//g_printerr("\n");
}
}
-#if 0
-/*inline*/ void oswald_draw_bitmap(const unsigned int xstart, const unsigned int ystart, const unsigned int width, const unsigned int height, const void *bmp)
-{
- unsigned int x, y;
- uint8_t *cb;
-
- // we only draw set pixel, unset pixel remain as they are
- for (y=0; y<height; y++) {
- for (x=0; x<width; x++) {
- cb = (uint8_t *)(bmp + (y * ((width / 8) + ((width % 8) ? 1 : 0))) + (x / 8));
- if (*cb & (1 << (x % 8)))
- hal_lcd_set_pixel((xstart + x), (ystart + y), TRUE);
- }
- }
-}
-#else
-void oswald_draw_bitmap(const unsigned int xstart, const unsigned int ystart, const unsigned int width, const unsigned int height, const void *bmp)
-{
- // seems we are triggering a MSPGCC compiler bug here...
- // if we do not do this trick then bmp becomes 0x00 when passed a livel higher!
- volatile unsigned int num;
-
- num = (unsigned int) bmp;
-
- oswald_draw_bitmap_opts(xstart, ystart, 0, 0, width, height, width, height, bmp);
-}
-
-void oswald_draw_bitmap_size(const unsigned int xstart, const unsigned int ystart, const unsigned int width, const unsigned int height, const unsigned int bmp_width, const unsigned int bmp_height, const void *bmp)
-{
- // seems we are triggering a MSPGCC compiler bug here...
- // if we do not do this trick then bmp becomes 0x00 when passed a livel higher!
- volatile unsigned int num;
-
- num = (unsigned int) bmp;
-
- oswald_draw_bitmap_opts(xstart, ystart, 0, 0, width, height, bmp_width, bmp_height, bmp);
-}
-#endif
-
void oswald_draw_line(const uint8_t xstart, const uint8_t ystart, const uint8_t xend, const uint8_t yend)
{
int x, y, t, dx, dy, incx, incy, pdx, pdy, ddx, ddy, es, el, err;
}
hal_lcd_set_pixel(x, y, TRUE);
}
- // hal_lcd_update_display();
}
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)
hal_lcd_set_pixel(x, y+i, TRUE);
}
}
- // hal_lcd_update_display();
}
-uint8_t oswald_write_character(const uint8_t x, const uint8_t y, const oswald_font_face face, const uint8_t Character)
+uint8_t oswald_write_character(const uint8_t x, const uint8_t y, const oswald_font_face face, const boolean invert, const uint8_t Character)
{
-#if 0
- u8t CharacterHeight = GetCharacterHeight();
- u8t CharacterWidth = GetCharacterWidth(Character);
- u16t bitmap[MAX_FONT_ROWS];
- register lx, ly;
-
- GetCharacterBitmap(Character, bitmap);
-
- // printf("cw=%d ch=%d\n", CharacterWidth, CharacterHeight);
- for (ly=0; ly<CharacterHeight; ly++) {
- for (lx=0; lx<CharacterWidth; lx++) {
- if (bitmap[ly] & (1<<lx)) {
- hal_lcd_set_pixel(lx+x, ly+y, TRUE);
- // printf(".");
- } /*else {
- hal_lcd_set_pixel(lx+x, ly+y, FALSE);
- // printf(" ");
- }*/
- }
- // printf("\n");
- }
-
- return CharacterWidth + GetFontSpacing();
-#else
uint8_t *cdata = oswald_fonts[face].data;
uint8_t cwidth;
int csize;
- if (Character == 32) // space / blank
- return oswald_fonts[face].width / 2;
+// if (Character == 32) { // space, blank no need to draw one ;)
+// return oswald_fonts[face].width / 2;
+// }
csize = ((oswald_fonts[face].width / 8) + ((oswald_fonts[face].width % 8) ? 1 : 0)) * oswald_fonts[face].height;
if (oswald_fonts[face].font_type == FONT_TYPE_PROPORTIONAL)
- csize += 1;
+ csize += 1; // at least 1px spacing
//csize += (oswald_fonts[face].height / 8) + ((oswald_fonts[face].height % 8) ? 1 : 0);
// oswald_draw_bitmap(x, y, oswald_fonts[face].height, oswald_fonts[face].height, cdata);
if (oswald_fonts[face].font_type == FONT_TYPE_MONOSPACE) {
cwidth = oswald_fonts[face].width;
- oswald_draw_bitmap(x, y, ((oswald_fonts[face].width / 8) + ((oswald_fonts[face].width % 8) ? 1 : 0))*8, oswald_fonts[face].height, (uint8_t *)cdata);
- }
- if (oswald_fonts[face].font_type == FONT_TYPE_PROPORTIONAL) {
+ //oswald_draw_bitmap(x, y, ((oswald_fonts[face].width / 8) + ((oswald_fonts[face].width % 8) ? 1 : 0)) * 8, oswald_fonts[face].height, (uint8_t *)cdata);
+ oswald_draw_bitmap_opts(x,y,0,0,((oswald_fonts[face].width / 8) + ((oswald_fonts[face].width % 8) ? 1 : 0)) * 8,oswald_fonts[face].height,invert,((oswald_fonts[face].width / 8) + ((oswald_fonts[face].width % 8) ? 1 : 0)) * 8,oswald_fonts[face].height,(uint8_t *)cdata);
+ } else if (oswald_fonts[face].font_type == FONT_TYPE_PROPORTIONAL) {
cwidth = cdata[0];
cdata++;
- oswald_draw_bitmap_size(x, y, cwidth+1, oswald_fonts[face].height, ((oswald_fonts[face].width / 8) + ((oswald_fonts[face].width % 8) ? 1 : 0))*8, oswald_fonts[face].height, (uint8_t *)cdata);
+ // oswald_draw_bitmap_size(x, y, (cwidth+1), oswald_fonts[face].height, ((oswald_fonts[face].width / 8) + ((oswald_fonts[face].width % 8) ? 1 : 0))*8, oswald_fonts[face].height, (uint8_t *)cdata);
+ oswald_draw_bitmap_opts(x,y,0,0,(cwidth+1),oswald_fonts[face].height,invert,((oswald_fonts[face].width / 8) + ((oswald_fonts[face].width % 8) ? 1 : 0))*8,oswald_fonts[face].height,(uint8_t *)cdata);
+ } else {
+ cwidth = 0;
}
// oswald_draw_bitmap_offset(x, y, (oswald_fonts[face].width % 8) > 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;
-#endif
}
-void oswald_write_string(const uint8_t x, const uint8_t y, const oswald_font_face face, char *str)
+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;
lx = x;
for (i=0; i<strl; i++) {
- lx += oswald_write_character(lx, y, face, str[i]);
+ lx += oswald_write_character(lx, y, face, invert, str[i]);
}
}
+uint8_t oswald_write_string_length(const uint8_t x, const uint8_t y, const uint8_t len, const oswald_font_face face, const boolean invert, char *str)
+{
+ uint8_t lx, i, strl;
+
+ strl = oswald_strlen(str);
+ if (strl == 0)
+ return;
-void oswald_write_number(const uint8_t x, const uint8_t y, const oswald_font_face face, const int16_t number)
+ lx = x;
+ for (i=0; i<strl; i++) {
+ lx += oswald_write_character(lx, y, face, invert, str[i]);
+ if (lx > 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];
lx = x;
for (i=0; i<strl; i++) {
- lx += oswald_write_character(lx, y, face, str[i]);
+ lx += oswald_write_character(lx, y, face, invert, str[i]);
}
}
-
#include "oswald_fonts.h"
#include "oswald_graphics.h"
-// #include "Fonts.h"
-void oswald_draw_pixel(const unsigned int xstart, const unsigned int ystart);
+#define COLOR_WHITE 0
+//#define COLOR_BLACK 1
+#define COLOR_XOR 2
+#define COLOR_INV 3
-void oswald_draw_bitmap(const unsigned int xstart, const unsigned int ystart, const unsigned int width, const unsigned int height, const void *bmp);
+
+#define oswald_draw_pixel(xstart, ystart, color) \
+ hal_lcd_set_pixel(xstart, ystart, color)
+
+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);
+
+#define oswald_draw_bitmpa_invert_opt(x,y,w,h,d,i) \
+ oswald_draw_bitmap_opts(x,y,0,0,w,h,i,w,h,d)
+
+#define oswald_draw_bitmap(x,y,w,h,d) \
+ oswald_draw_bitmap_opts(x,y,0,0,w,h,FALSE,w,h,d)
+
+#define oswald_draw_bitmap_size(x, y, w, h, bw, bh, d) \
+ oswald_draw_bitmap_opts(x,y,0,0,w,h,FALSE,bw,bh,d)
void oswald_draw_line(const uint8_t xstart, const uint8_t ystart, const uint8_t xend, const uint8_t yend);
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);
-uint8_t oswald_write_character(const uint8_t x, const uint8_t y, const oswald_font_face face, const uint8_t Character);
+uint8_t oswald_write_character(const uint8_t x, const uint8_t y, const oswald_font_face face, const boolean invert, const uint8_t Character);
+
+void oswald_write_string(const uint8_t x, const uint8_t y, const oswald_font_face face, const boolean invert, char *str);
-void oswald_write_string(const uint8_t x, const uint8_t y, const oswald_font_face face, char *str);
+uint8_t oswald_write_string_length(const uint8_t x, const uint8_t y, const uint8_t len, const oswald_font_face face, const boolean invert, char *str);
-void oswald_write_number(const uint8_t x, const uint8_t y, const oswald_font_face face, const int16_t number);
+void oswald_write_number(const uint8_t x, const uint8_t y, const oswald_font_face face, const boolean invert, const int16_t number);
#endif
void hal_accelerometer_enable(void);
void hal_accelerometer_disable(void);
-#endif
+uint16_t hal_amblight_get_val(void);
+#endif
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;
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;
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));
}
}
}
OswaldScreens[IDLE_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_ONE_SEC_TIMER;
OswaldScreens[IDLE_SCREEN].event_func = idle_handle_events;
- OswaldScreens[ACCEL_DISPLAY_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_ACCEL_UPDATE;
- OswaldScreens[ACCEL_DISPLAY_SCREEN].event_func = accel_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[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[MENU_TEST_SCREEN].event_mask = EVENT_USER_BUTTONS;
- OswaldScreens[MENU_TEST_SCREEN].event_func = test_menu_handle_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[ALARM_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_HALF_SEC_TIMER;
- OswaldScreens[ALARM_SCREEN].event_func = alarm_handle_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];
OswaldAlarm.minute = 0;
OswaldAlarm.wday = 0x00;
- // strcpy(MainMessage, "So koennte dann eine Nachricht aussehen. Samt Text mit Unterlaengen. Und dies ist dann die letzte Zeile und mehr Text als paßt.");
}
#if defined(__GNUC__) && (__MSP430X__ > 0)
__attribute__((__far__))
#endif
-#include "bitmaps/timesetup_icon.xbm"
+#include "bitmaps/startstopbutton_icon.xbm"
#if defined(__GNUC__) && (__MSP430X__ > 0)
__attribute__((__far__))
#endif
-#include "bitmaps/stopwatch_icon.xbm"
+#include "bitmaps/lapsebutton_icon.xbm"
#if defined(__GNUC__) && (__MSP430X__ > 0)
__attribute__((__far__))
#endif
-#include "bitmaps/alarm_icon.xbm"
+#include "bitmaps/upbutton_icon.xbm"
#if defined(__GNUC__) && (__MSP430X__ > 0)
__attribute__((__far__))
#endif
-#include "bitmaps/startstopbutton_icon.xbm"
+#include "bitmaps/downbutton_icon.xbm"
#if defined(__GNUC__) && (__MSP430X__ > 0)
__attribute__((__far__))
#endif
-#include "bitmaps/lapsebutton_icon.xbm"
+#include "bitmaps/leftbutton_icon.xbm"
#if defined(__GNUC__) && (__MSP430X__ > 0)
__attribute__((__far__))
#endif
-#include "bitmaps/upbutton_icon.xbm"
+#include "bitmaps/rightbutton_icon.xbm"
#if defined(__GNUC__) && (__MSP430X__ > 0)
__attribute__((__far__))
#endif
-#include "bitmaps/downbutton_icon.xbm"
+#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/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"
/*
};
break;
case BUTTON_C:
- return EVENT_RET_UNHANDLED;
+ 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;
}
+/*
+ * 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 3
+#define MAIN_MENU_OFFSET_Y 10
+
+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);
+
+ 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
*/
oswald_draw_bitmap(36, 0, acc_icon_width, acc_icon_height, acc_icon_bits);
- oswald_write_string(1, 40, FONT_6x9, "X:");
- oswald_write_number(15, 40, FONT_6x9, accel_data->x);
- oswald_write_string(1, 52, FONT_6x9, "Y:");
- oswald_write_number(15, 52, FONT_6x9, accel_data->y);
- oswald_write_string(1, 64, FONT_6x9, "Z:");
- oswald_write_number(15, 64, FONT_6x9, accel_data->z);
+ 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, "Light:");
- oswald_write_number(50, 85, FONT_6x9, 0);
+ 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);
x = 41+25+((accel_data->x * 50) / (254));
y = 31+25-((accel_data->y * 50) / (254));
- oswald_draw_pixel(x, y);
- oswald_draw_pixel(x+1, y);
- oswald_draw_pixel(x-1, y);
- oswald_draw_pixel(x, y+1);
- oswald_draw_pixel(x, y-1);
+ 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();
}
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, (OswaldClk.hour / 10));
- oswald_write_character(15, 30, FONT_LCD13x21, (OswaldClk.hour % 10));
+ 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, 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, (OswaldClk.minute / 10));
- oswald_write_character(47, 30, FONT_LCD13x21, (OswaldClk.minute % 10));
+ 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, (OswaldClk.second / 10));
- oswald_write_character(69, 38, FONT_LCD8x13, (OswaldClk.second % 10));
+ 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, OswaldClk.day);
+ oswald_write_number(2, 55, FONT_DROID8x12, FALSE, OswaldClk.day);
}
- oswald_write_character(15, 55, FONT_DROID8x12, '.');
+ oswald_write_character(15, 55, FONT_DROID8x12, FALSE, '.');
if ((sdata->pos == 4 && sdata->on) || sdata->pos != 4) {
- oswald_write_number(21, 55, FONT_DROID8x12, OswaldClk.month);
+ oswald_write_number(21, 55, FONT_DROID8x12, FALSE, OswaldClk.month);
}
- oswald_write_character(36, 55, FONT_DROID8x12, '.');
+ oswald_write_character(36, 55, FONT_DROID8x12, FALSE, '.');
if ((sdata->pos == 5 && sdata->on) || sdata->pos != 5) {
- oswald_write_number(43, 55, FONT_DROID8x12, OswaldClk.year);
+ oswald_write_number(43, 55, FONT_DROID8x12, FALSE, OswaldClk.year);
}
if ((sdata->pos == 6 && sdata->on) || sdata->pos != 6) {
if (OswaldClk.clk24hr) {
- oswald_write_character(2, 76, FONT_6x9, 'x');
+ oswald_draw_bitmap(2, 76, checked_icon_width, checked_icon_height, checked_icon_bits);
} else {
- oswald_write_character(2, 76, FONT_6x9, '_');
+ oswald_draw_bitmap(2, 76, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits);
}
}
- oswald_write_string(15, 73, FONT_DROID8x12, "24hr");
+ oswald_write_string(15, 73, FONT_DROID8x12, FALSE, "24hr");
if ((sdata->pos == 7 && sdata->on) || sdata->pos != 7) {
if (OswaldClk.day_first) {
- oswald_write_character(2, 86, FONT_6x9, 'x');
+ oswald_draw_bitmap(2, 86, checked_icon_width, checked_icon_height, checked_icon_bits);
} else {
- oswald_write_character(2, 86, FONT_6x9, '_');
+ oswald_draw_bitmap(2, 86, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits);
}
}
- oswald_write_string(15, 83, FONT_DROID8x12, "dd.mm. mm/dd");
+ oswald_write_string(15, 83, FONT_DROID8x12, FALSE, "dd.mm. mm/dd");
hal_lcd_update_display();
}
oswald_draw_bitmap(36, 0, alarm_icon_width, alarm_icon_height, alarm_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);
+ 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, (OswaldAlarm.hour / 10));
- oswald_write_character(32, 30, FONT_LCD13x21, (OswaldAlarm.hour % 10));
+ 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, 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, (OswaldAlarm.minute / 10));
- oswald_write_character(67, 30, FONT_LCD13x21, (OswaldAlarm.minute % 10));
+ 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, 'S');
- oswald_write_character(15, 55, FONT_6x9, 'M');
- oswald_write_character(27, 55, FONT_6x9, 'T');
- oswald_write_character(39, 55, FONT_6x9, 'W');
- oswald_write_character(51, 55, FONT_6x9, 'T');
- oswald_write_character(63, 55, FONT_6x9, 'F');
- oswald_write_character(75, 55, FONT_6x9, 'S');
-
- if ((sdata->pos == 2 && sdata->on) || sdata->pos != 2)
- oswald_write_character(3, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_SUNDAY) ? 'x' : '_');
- if ((sdata->pos == 3 && sdata->on) || sdata->pos != 3)
- oswald_write_character(15, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_MONDAY) ? 'x' : '_');
- if ((sdata->pos == 4 && sdata->on) || sdata->pos != 4)
- oswald_write_character(27, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_TUESDAY) ? 'x' : '_');
- if ((sdata->pos == 5 && sdata->on) || sdata->pos != 5)
- oswald_write_character(39, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_WEDNESDAY) ? 'x' : '_');
- if ((sdata->pos == 6 && sdata->on) || sdata->pos != 6)
- oswald_write_character(51, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_THURSDAY) ? 'x' : '_');
- if ((sdata->pos == 7 && sdata->on) || sdata->pos != 7)
- oswald_write_character(63, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_FRIDAY) ? 'x' : '_');
- if ((sdata->pos == 8 && sdata->on) || sdata->pos != 8)
- oswald_write_character(75, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_SATURDAY) ? 'x' : '_');
+ 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();
}
WriteLcdString(50, 20+(9*test_menu.menu_pos), "*");
#endif
- oswald_write_string(2, 2, FONT_DROID11x14b, "Menu");
+ oswald_write_string(2, 2, FONT_DROID8x12, FALSE, "Menu");
- oswald_write_string(2, 20, FONT_DROID8x12, "Item 1");
- oswald_write_string(2, 29, FONT_DROID8x12, "Item 2");
- oswald_write_string(2, 38, FONT_DROID8x12, "Item 3");
- oswald_write_string(2, 47, FONT_DROID8x12, "Item 4");
- oswald_write_string(2, 56, FONT_DROID8x12, "Item 5");
+ 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, 0x11);
+ oswald_write_character(50, 18+(9*test_menu.menu_pos), FONT_6x9, FALSE, 0x11);
hal_lcd_update_display();
}
} stopwatch_data_t;
static stopwatch_data_t stopwatch_screen = { 0, 0, 0, 0, 0, 0, 0, 0, FALSE };
-#if 0
-static void update_stop_watch_screen(stopwatch_data_t *sdata)
-{
- //char tstr[16];
-#if 0
- SetFont(MetaWatchMonospaced10);
-
- snprintf(tstr, 16, "%02d:%02d:%02d.%1d", sdata->hr, sdata->min, sdata->sec, sdata->csec / 10);
- WriteLcdString(5, 40, tstr);
- snprintf(tstr, 16, "%02d:%02d:%02d.%02d", sdata->lapse_hr, sdata->lapse_min, sdata->lapse_sec, sdata->lapse_csec);
- WriteLcdString(5, 60, tstr);
-#endif
-#if 0
- snprintf(tstr, 16, "%02d:%02d:%02d.%1d", sdata->hr, sdata->min, sdata->sec, sdata->csec / 10);
- oswald_write_string(5, 40, FONT_6x9, tstr);
-
- snprintf(tstr, 16, "%02d:%02d:%02d.%02d", sdata->lapse_hr, sdata->lapse_min, sdata->lapse_sec, sdata->lapse_csec);
- oswald_write_string(5, 60, FONT_6x9, tstr);
-#endif
-
- hal_lcd_update_display();
-}
-#endif
static void draw_stop_watch_screen(stopwatch_data_t *sdata)
{
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);
-#if 0
- update_stop_watch_screen(sdata);
-#else
- gRow += 3 + oswald_write_character(gRow, gColumn, FONT_LCD13x21, (sdata->hr % 10));
- gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (sdata->min / 10));
- gRow += 3 + oswald_write_character(gRow, gColumn, FONT_LCD13x21, (sdata->min % 10));
- gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (sdata->sec / 10));
- gRow += 3 + oswald_write_character(gRow, gColumn, FONT_LCD13x21, (sdata->sec % 10));
- gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, (sdata->csec / 10));
+ 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 = 62;
- gRow += 13 + oswald_write_character(gRow, gColumn, FONT_LCD8x13, (sdata->lapse_hr % 10));
- gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, (sdata->lapse_min / 10));
- gRow += 13 + oswald_write_character(gRow, gColumn, FONT_LCD8x13, (sdata->lapse_min % 10));
- gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, (sdata->lapse_sec / 10));
- gRow += 3 + oswald_write_character(gRow, gColumn, FONT_LCD8x13, (sdata->lapse_sec % 10));
- gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, (sdata->lapse_csec / 10));
- gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, (sdata->lapse_csec % 10));
+ 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();
-#endif
}
event_ret_t handle_stop_watch_buttons(watch_button button)
switch (event) {
case EVENT_USER_BUTTONS:
dbg_out("button event %d\n", *(int *)data);
- return handle_stop_watch_buttons(*(watch_button *)data);
- //update_stop_watch_screen(&stopwatch_screen);
draw_stop_watch_screen(&stopwatch_screen);
+ return handle_stop_watch_buttons(*(watch_button *)data);
break;
case EVENT_SCREEN_VISIBLE:
- hal_lcd_clear_display();
draw_stop_watch_screen(&stopwatch_screen);
return EVENT_RET_HANDLED;
break;
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();
}
oswald_draw_bitmap(36, 0, Bluetooth_icon_width, Bluetooth_icon_height, Bluetooth_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);
+ 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, "Enable:");
+ oswald_write_string(1, 30, FONT_DROID8x12, FALSE, "Enable:");
if ((sdata->pos == 0 && sdata->on) || sdata->pos != 0) {
- oswald_write_character(53, 30, FONT_DROID8x12, bluetooth_screen.bt_en ? 'x' : '_');
+ 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, "State:");
+ oswald_write_string(1, 40, FONT_DROID8x12, FALSE, "State:");
switch (hal_bluetooth_get_state()) {
case BLUETOOTH_OFF:
- oswald_write_string(53, 40, FONT_DROID8x12, "off");
+ oswald_write_string(53, 40, FONT_DROID8x12, FALSE, "off");
break;
case BLUETOOTH_ON:
- oswald_write_string(53, 40, FONT_DROID8x12, "on");
+ oswald_write_string(53, 40, FONT_DROID8x12, FALSE, "on");
break;
case BLUETOOTH_CONNECTED:
- oswald_write_string(53, 40, FONT_DROID8x12, "conn.");
+ oswald_write_string(53, 40, FONT_DROID8x12, FALSE, "conn.");
break;
default:
break;
};
- oswald_write_string(1, 50, FONT_DROID8x12, "Visible:");
+ 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' : '_');
+ // 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, bstr);
+ oswald_write_string(2, 85, FONT_5x7, FALSE, bstr);
} else {
}
hal_bluetooth_set_visible(FALSE);
}
break;
- case 2:
- break;
- case 3:
- break;
- case 4:
- break;
- case 5:
- break;
- case 6:
- break;
- case 7:
- break;
- case 8:
- break;
default:
break;
};
/*
* Info Screen
*/
-void draw_info_screen(accel_data_t *accel_data)
+void draw_info_screen(void)
{
hal_lcd_clear_display();
oswald_draw_bitmap(36, 0, info_icon_width, info_icon_height, info_icon_bits);
- oswald_write_string(2, 29, FONT_DROID8x12, "Oswald");
- oswald_write_string(35, 29, FONT_DROID8x12, OSWALD_VERSION);
- oswald_write_string(2, 41, FONT_DROID8x12, "HAL");
- oswald_write_string(35, 41, FONT_DROID8x12, (char *)hal_get_version_string());
- oswald_write_string(2, 53, FONT_DROID8x12, "Build");
- oswald_write_string(35, 53, FONT_DROID8x12, (char *)hal_get_buildno_string());
- oswald_write_string(2, 65, FONT_DROID8x12, "Radio");
- oswald_write_string(35, 65, FONT_DROID8x12, (char *)hal_get_radio_version_string());
+ 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();
}
{
switch (event) {
case EVENT_SCREEN_VISIBLE:
- draw_info_screen(&accel_screen.accdata);
+ draw_info_screen();
return EVENT_RET_HANDLED;
break;
case EVENT_USER_BUTTONS:
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;
+}
+
#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 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
hal_lcd_clear_display();
snprintf(tstr, 16, "%2d", OswaldClk.day);
-#if 0
- SetFont(MetaWatch16);
- WriteLcdString(70, 40, tstr);
-#else
- oswald_write_string(70, 43, FONT_6x9, tstr);
-#endif
+ oswald_write_string(70, 43, FONT_6x9, FALSE, tstr);
// Marker
// plot(R*cos(360° * i/N), R*sin(360° * i/N))
char tstr[16];
int i;
-#if 0
- SetFont(MetaWatchTime);
-
- hal_lcd_clear_display();
- //gRow += WriteLcdCharacter(ui, gRow, gColumn, TIME_CHARACTER_SPACE_INDEX);
- if (OswaldClk.clk24hr) {
- gRow += WriteLcdCharacter(gRow, gColumn, (OswaldClk.hour / 10));
- gRow += WriteLcdCharacter(gRow, gColumn, (OswaldClk.hour % 10));
- } else {
- unsigned char val = OswaldClk.hour;
- if (val > 12)
- val -= 12;
- gRow += WriteLcdCharacter(gRow, gColumn, (val / 10));
- gRow += WriteLcdCharacter(gRow, gColumn, (val % 10));
- }
- gRow += WriteLcdCharacter(gRow, gColumn, TIME_CHARACTER_COLON_INDEX);
- gRow += WriteLcdCharacter(gRow, gColumn, (OswaldClk.minute / 10));
- gRow += WriteLcdCharacter(gRow, gColumn, (OswaldClk.minute % 10));
-
- gRow += 3;
- if (show_seconds) {
- SetFont(MetaWatch16);
- snprintf(tstr, 16, "%02d", OswaldClk.second);
- WriteLcdString(gRow, 9, tstr);
- };
-
- SetFont(MetaWatch7);
-
- if (!OswaldClk.clk24hr) {
- if (OswaldClk.hour > 12) {
- WriteLcdString(gRow, 3, "PM");
- } else {
- WriteLcdString(gRow, 3, "AM");
- }
- }
-
- SetFont(MetaWatch16);
-
- if (OswaldClk.day_first)
- snprintf(tstr, 16, "%d.%d.%d", OswaldClk.day, OswaldClk.month, OswaldClk.year);
- else
- snprintf(tstr, 16, "%d/%d %d", OswaldClk.month, OswaldClk.day, OswaldClk.year);
- WriteLcdString(3, 25, tstr);
-
- draw_status_icons();
-
- gRow = 0;
- gColumn = 45;
- SetFont(MetaWatch5);
- for (i=0; i<strlen(MainMessage); i++) {
- gRow += WriteLcdCharacter(gRow, gColumn, MainMessage[i]);
- if (gRow > 90) {
- gRow = 0;
- gColumn += 7;
- }
- if (gColumn > 95)
- i = 255;
- }
#if 0
snprintf(tstr, 16, "%d%% (%dmV)", OswaldPowerState.percent, OswaldPowerState.level);
WriteLcdString(2, 48, tstr);
};
};
#endif
-#else
hal_lcd_clear_display();
if (OswaldClk.clk24hr) {
- gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (OswaldClk.hour / 10));
- gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (OswaldClk.hour % 10));
+ 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)
+ if (val > 12) {
val -= 12;
- gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (val / 10));
- gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (val % 10));
+ 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, 10);
+ oswald_write_character(gRow-4, gColumn, FONT_LCD13x21, FALSE, 10);
gRow += 5;
- gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (OswaldClk.minute / 10));
- gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (OswaldClk.minute % 10));
-#endif
+ 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, (OswaldClk.second / 10));
- oswald_write_character(67, 9, FONT_LCD8x13, (OswaldClk.second % 10));
+ 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_6x9, tstr);
+ oswald_write_string(0, 25, FONT_DROID8x12, FALSE, tstr);
gRow = 0;
gColumn = 45;
for (i=0; i<strlen(MainMessage); i++) {
if (gRow == 0 && MainMessage[i] == ' ')
continue;
- gRow += oswald_write_character(gRow, gColumn, FONT_DROID8x12, MainMessage[i]);
+ gRow += oswald_write_character(gRow, gColumn, FONT_DROID8x12, FALSE, MainMessage[i]);
if (gRow > 90) {
gRow = 0;
gColumn += 9;